diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4277-drm-amdgpu-Add-DC-feature-mask-to-disable-fractional.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4277-drm-amdgpu-Add-DC-feature-mask-to-disable-fractional.patch | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4277-drm-amdgpu-Add-DC-feature-mask-to-disable-fractional.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4277-drm-amdgpu-Add-DC-feature-mask-to-disable-fractional.patch new file mode 100644 index 00000000..b4d6c74c --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4277-drm-amdgpu-Add-DC-feature-mask-to-disable-fractional.patch @@ -0,0 +1,79 @@ +From e6636a3d42b3291d037aa242bbe59cd040ea5caf Mon Sep 17 00:00:00 2001 +From: Leo Li <sunpeng.li@amd.com> +Date: Mon, 21 Oct 2019 14:58:47 -0400 +Subject: [PATCH 4277/4736] drm/amdgpu: Add DC feature mask to disable + fractional pwm +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +[Why] + +Some LED panel drivers might not like fractional PWM. In such cases, +backlight flickering may be observed. + +[How] + +Add a DC feature mask to disable fractional PWM, and associate it with +the preexisting dc_config flag. + +The flag is only plumbed through the dmcu firmware, so plumb it through +the driver path as well. + +To disable, add the following to the linux cmdline: +amdgpu.dcfeaturemask=0x4 + +Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=204957 +Signed-off-by: Leo Li <sunpeng.li@amd.com> +Reviewed-by: Anthony Koo <anthony.koo@amd.com> +Tested-by: Lukáš Krejčí <lskrejci@gmail.com> +--- + drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 3 +++ + drivers/gpu/drm/amd/display/dc/dce/dce_abm.c | 4 ++++ + drivers/gpu/drm/amd/include/amd_shared.h | 1 + + 3 files changed, 8 insertions(+) + +diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +index ff89ca40f82c..5a20ce0541c6 100755 +--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c ++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +@@ -725,6 +725,9 @@ static int amdgpu_dm_init(struct amdgpu_device *adev) + if (amdgpu_dc_feature_mask & DC_MULTI_MON_PP_MCLK_SWITCH_MASK) + init_data.flags.multi_mon_pp_mclk_switch = true; + ++ if (amdgpu_dc_feature_mask & DC_DISABLE_FRACTIONAL_PWM_MASK) ++ init_data.flags.disable_fractional_pwm = true; ++ + init_data.flags.power_down_display_on_boot = true; + + #ifdef CONFIG_DRM_AMD_DC_DCN2_0 +diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_abm.c b/drivers/gpu/drm/amd/display/dc/dce/dce_abm.c +index 4a22b50bd38a..2946998fe6a4 100644 +--- a/drivers/gpu/drm/amd/display/dc/dce/dce_abm.c ++++ b/drivers/gpu/drm/amd/display/dc/dce/dce_abm.c +@@ -402,6 +402,10 @@ static bool dce_abm_init_backlight(struct abm *abm) + /* Enable the backlight output */ + REG_UPDATE(BL_PWM_CNTL, BL_PWM_EN, 1); + ++ /* Disable fractional pwm if configured */ ++ REG_UPDATE(BL_PWM_CNTL, BL_PWM_FRACTIONAL_EN, ++ abm->ctx->dc->config.disable_fractional_pwm ? 0 : 1); ++ + /* Unlock group 2 backlight registers */ + REG_UPDATE(BL_PWM_GRP1_REG_LOCK, + BL_PWM_GRP1_REG_LOCK, 0); +diff --git a/drivers/gpu/drm/amd/include/amd_shared.h b/drivers/gpu/drm/amd/include/amd_shared.h +index 8340ec0ab792..dc7eb28f0296 100644 +--- a/drivers/gpu/drm/amd/include/amd_shared.h ++++ b/drivers/gpu/drm/amd/include/amd_shared.h +@@ -143,6 +143,7 @@ enum PP_FEATURE_MASK { + enum DC_FEATURE_MASK { + DC_FBC_MASK = 0x1, + DC_MULTI_MON_PP_MCLK_SWITCH_MASK = 0x2, ++ DC_DISABLE_FRACTIONAL_PWM_MASK = 0x4, + DC_PSR_MASK = 0x8, + }; + +-- +2.17.1 + |