linux-xiaomi-lavender: add patch to fix framebuffer on X11 (MR 1142)
Signed-off-by: Danct12 <danct12@disroot.org> [ci:skip-build]
This commit is contained in:
parent
9f6c41c832
commit
7282dcdcbb
2 changed files with 123 additions and 2 deletions
|
@ -0,0 +1,118 @@
|
|||
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
|
||||
|
|
@ -2,11 +2,12 @@
|
|||
# Kernel config based on: arch/arm64/configs/lavender-perf_defconfig
|
||||
# Original defconfig was: arch/arm64/configs/sdm660-perf_defconfig
|
||||
# Contributor: Alexey Min <alexey.min@gmail.com>
|
||||
# Contributor: Danct12 <danct12@disroot.org>
|
||||
# Maintainer: Alexey Min <alexey.min@gmail.com>
|
||||
|
||||
pkgname=linux-xiaomi-lavender
|
||||
pkgver=4.4.156
|
||||
pkgrel=0
|
||||
pkgrel=1
|
||||
pkgdesc="Xiaomi Redmi Note 7 kernel fork"
|
||||
arch="aarch64"
|
||||
_carch="arm64"
|
||||
|
@ -35,6 +36,7 @@ source="
|
|||
0003-Add-config-option-to-fix-bootloader-cmdline-args.patch
|
||||
0004-Reduce-battery-spam-in-dmesg.patch
|
||||
0005-Adds-and-sets-BGRA-as-default.patch
|
||||
0006-mdss-panel-to-fb-var.patch
|
||||
"
|
||||
|
||||
builddir="$srcdir/$_repository-$_commit"
|
||||
|
@ -64,4 +66,5 @@ sha512sums="797586ac2757c9b27a5f8fc1c1ff460d959b32de322ff00509d1b3b060dbcc909a15
|
|||
a8713d22404a5e2c0d2add3deb4cb033e972bd1983e10f1557d4de640c1329af50be2bfd92dc3cf76df711a6b4a422b920da76c2d6c4435e3624c85f7d07ae52 0002-Fix-TRACE_INCLUDE_PATH-paths.patch
|
||||
9ce867c4254b537ef5d2485780c26b72da8a3a8767ba71557f3b48d6c550e0e14c8c3e575b31bf65d2878f08a8a4926e48a1c2f1be534bf80a7a57f58313b0fd 0003-Add-config-option-to-fix-bootloader-cmdline-args.patch
|
||||
066ac4b77388fd2001df227db216da9f435e06d29ce1be59d8a8923613f3390e154cb5b6cb7785614a3a4b12c01d9f1b84dfd09b884dede3fa6d0e5b1ddb9045 0004-Reduce-battery-spam-in-dmesg.patch
|
||||
f2a97a9500b6155a11f2341a8fd4b083ceb25a17d656c7975e34b9f3d8bacb495ae687f823db5fd07ddee27b2d95021f193bfadb5274185334255cda12bc85ce 0005-Adds-and-sets-BGRA-as-default.patch"
|
||||
f2a97a9500b6155a11f2341a8fd4b083ceb25a17d656c7975e34b9f3d8bacb495ae687f823db5fd07ddee27b2d95021f193bfadb5274185334255cda12bc85ce 0005-Adds-and-sets-BGRA-as-default.patch
|
||||
d5b868c64b8ebddcf74cb3aa478f30f0897af1e14e4fc42d977921104a6c568cc0bf36fc8a3b0f538cd3ca2ebf59244fdf23186a903259e5acc14d1c4ef4ccc3 0006-mdss-panel-to-fb-var.patch"
|
||||
|
|
Loading…
Reference in a new issue