fb7f99efe2
Unmaintained is a name which on multiple occasions have seen lead to confusion with people having the impression that unmaintained is for all unmaintained devices, which is not how we're really using it. Many devices in testing do not actually have a maintainer, yet there has been no push to move these out of there and into unmaintained. I think this is a result of that unmaintained was introduced not to keep unmaintained ports but rather a place to store ports that have a better replacement but where the inferior one still holds some sort of value, such as for debugging purposes. These ports also are not necessarily entirely unmaintained and see more fixes than many ports in testing. While one approach to solving this problem could be to simply moving all unmaintained ports to unmaintained, I think this comes with some problems: It would require an initial effort to figure out which ports are indeed unmaintained and which just don't have a maintained noted in the package, and given how many ports there are in testing this would be a big endeavour. It would also require continuous work on moving ports into unmaintained as the maintainers go silent if we are to keep testing and unmaintained's state consistent with reality. Additionally, just because a port doesn't have a maintainer on paper doens't mean that there aren't people who aren't willing to fix it up if there are issues that arise. As such, I think the way to go is renaming unmaintained to better reflect the original intent. Thanks to Luca Weiss for suggesting "archive", and to Arnav Singh for suggesting that "archived" would match the other category names better.
118 lines
4.5 KiB
Diff
118 lines
4.5 KiB
Diff
From fe5131b250c373d152b7e73895f17846d1f1e6bd Mon Sep 17 00:00:00 2001
|
|
From: Ion Agorria <ion@agorria.com>
|
|
Date: Thu, 24 Jan 2019 18:52:58 +0100
|
|
Subject: [PATCH] mdss: update fb mode at mdss_panelinfo_to_fb_var to fix Xorg
|
|
|
|
When mdss_panelinfo_to_fb_var is called at
|
|
screen unblank it updates the values in fb_info->var,
|
|
meanwhile the fb_info->mode and modelist remain with old
|
|
values set at registering the fb causing mismatch when
|
|
Xorg attempts to set mode.
|
|
---
|
|
drivers/video/fbdev/msm/mdss_fb.c | 25 ++++++++++++++++------
|
|
drivers/video/fbdev/msm/mdss_fb.h | 3 +--
|
|
drivers/video/fbdev/msm/mdss_mdp_overlay.c | 2 +-
|
|
3 files changed, 20 insertions(+), 10 deletions(-)
|
|
|
|
diff --git a/drivers/video/fbdev/msm/mdss_fb.c b/drivers/video/fbdev/msm/mdss_fb.c
|
|
index 3e632076639d..2d2b37bffa5d 100644
|
|
--- a/drivers/video/fbdev/msm/mdss_fb.c
|
|
+++ b/drivers/video/fbdev/msm/mdss_fb.c
|
|
@@ -2339,7 +2339,7 @@ static void mdss_panel_validate_debugfs_info(struct msm_fb_data_type *mfd)
|
|
if (is_panel_split(mfd) && pdata->next)
|
|
mdss_fb_validate_split(pdata->panel_info.xres,
|
|
pdata->next->panel_info.xres, mfd);
|
|
- mdss_panelinfo_to_fb_var(panel_info, var);
|
|
+ mdss_panelinfo_to_fb_var(mfd);
|
|
if (mdss_fb_send_panel_event(mfd, MDSS_EVENT_CHECK_PARAMS,
|
|
panel_info))
|
|
pr_err("Failed to send panel event CHECK_PARAMS\n");
|
|
@@ -2452,7 +2452,7 @@ static int mdss_fb_blank_unblank(struct msm_fb_data_type *mfd)
|
|
* programmed in the controller.
|
|
* Update this info in the upstream structs.
|
|
*/
|
|
- mdss_panelinfo_to_fb_var(panel_info, var);
|
|
+ mdss_panelinfo_to_fb_var(mfd);
|
|
|
|
/* Start the work thread to signal idle time */
|
|
if (mfd->idle_time)
|
|
@@ -3196,7 +3196,7 @@ static int mdss_fb_register(struct msm_fb_data_type *mfd)
|
|
return ret;
|
|
}
|
|
|
|
- mdss_panelinfo_to_fb_var(panel_info, var);
|
|
+ mdss_panelinfo_to_fb_var(mfd);
|
|
|
|
fix->type = panel_info->is_3d_panel;
|
|
if (mfd->mdp.fb_stride)
|
|
@@ -3900,7 +3900,7 @@ static void mdss_fb_update_resolution(struct msm_fb_data_type *mfd,
|
|
}
|
|
var->xres_virtual = var->xres;
|
|
var->yres_virtual = pinfo->yres * mfd->fb_page;
|
|
- mdss_panelinfo_to_fb_var(pinfo, var);
|
|
+ mdss_panelinfo_to_fb_var(mfd);
|
|
}
|
|
|
|
int mdss_fb_atomic_commit(struct fb_info *info,
|
|
@@ -4149,9 +4149,14 @@ static void mdss_fb_var_to_panelinfo(struct fb_var_screeninfo *var,
|
|
pinfo->lcdc.v_polarity = 1;
|
|
}
|
|
|
|
-void mdss_panelinfo_to_fb_var(struct mdss_panel_info *pinfo,
|
|
- struct fb_var_screeninfo *var)
|
|
+void mdss_panelinfo_to_fb_var(struct msm_fb_data_type *mfd)
|
|
{
|
|
+ if (!mfd)
|
|
+ return -EINVAL;
|
|
+
|
|
+ struct mdss_panel_info *pinfo = mfd->panel_info;
|
|
+ struct fb_info *fbi = mfd->fbi;
|
|
+ struct fb_var_screeninfo *var = &fbi->var;
|
|
u32 frame_rate;
|
|
|
|
var->xres = mdss_fb_get_panel_xres(pinfo);
|
|
@@ -4185,7 +4190,13 @@ void mdss_panelinfo_to_fb_var(struct mdss_panel_info *pinfo,
|
|
if (pinfo->physical_height)
|
|
var->height = pinfo->physical_height;
|
|
|
|
- pr_debug("ScreenInfo: res=%dx%d [%d, %d] [%d, %d]\n",
|
|
+ //Hack to update current fbi->mode according to fbi->var when var is updated from panel info
|
|
+ if (fbi->mode) {
|
|
+ printk("Updating mdss fb mode from fb var\n");
|
|
+ fb_var_to_videomode(fbi->mode, var);
|
|
+ }
|
|
+
|
|
+ printk("ScreenInfo: res=%dx%d [%d, %d] [%d, %d]\n",
|
|
var->xres, var->yres, var->left_margin,
|
|
var->right_margin, var->upper_margin,
|
|
var->lower_margin);
|
|
diff --git a/drivers/video/fbdev/msm/mdss_fb.h b/drivers/video/fbdev/msm/mdss_fb.h
|
|
index c6e8d37d7bc8..bbd17e1c72e2 100644
|
|
--- a/drivers/video/fbdev/msm/mdss_fb.h
|
|
+++ b/drivers/video/fbdev/msm/mdss_fb.h
|
|
@@ -484,8 +484,7 @@ int mdss_fb_async_position_update(struct fb_info *info,
|
|
|
|
u32 mdss_fb_get_mode_switch(struct msm_fb_data_type *mfd);
|
|
void mdss_fb_report_panel_dead(struct msm_fb_data_type *mfd);
|
|
-void mdss_panelinfo_to_fb_var(struct mdss_panel_info *pinfo,
|
|
- struct fb_var_screeninfo *var);
|
|
+void mdss_panelinfo_to_fb_var(struct msm_fb_data_type *mfd);
|
|
void mdss_fb_calc_fps(struct msm_fb_data_type *mfd);
|
|
void mdss_fb_idle_pc(struct msm_fb_data_type *mfd);
|
|
#endif /* MDSS_FB_H */
|
|
diff --git a/drivers/video/fbdev/msm/mdss_mdp_overlay.c b/drivers/video/fbdev/msm/mdss_mdp_overlay.c
|
|
index 81218319d58b..cee8a8e5e449 100644
|
|
--- a/drivers/video/fbdev/msm/mdss_mdp_overlay.c
|
|
+++ b/drivers/video/fbdev/msm/mdss_mdp_overlay.c
|
|
@@ -3534,7 +3534,7 @@ int mdss_mdp_dfps_update_params(struct msm_fb_data_type *mfd,
|
|
* data, so any further call to get the screen
|
|
* info has the updated timings.
|
|
*/
|
|
- mdss_panelinfo_to_fb_var(&pdata->panel_info, var);
|
|
+ mdss_panelinfo_to_fb_var(mfd);
|
|
|
|
MDSS_XLOG(dfps);
|
|
mutex_unlock(&mdp5_data->dfps_lock);
|
|
--
|
|
2.25.1
|
|
|