diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2941-drm-amdgpu-sort-probed-modes-before-adding-common-mo.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2941-drm-amdgpu-sort-probed-modes-before-adding-common-mo.patch | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2941-drm-amdgpu-sort-probed-modes-before-adding-common-mo.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2941-drm-amdgpu-sort-probed-modes-before-adding-common-mo.patch new file mode 100644 index 00000000..4d055379 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2941-drm-amdgpu-sort-probed-modes-before-adding-common-mo.patch @@ -0,0 +1,56 @@ +From 05d2fc19fb418579547802a11dd50116f690d8fc Mon Sep 17 00:00:00 2001 +From: Yogesh Mohan Marimuthu <yogesh.mohanmarimuthu@amd.com> +Date: Fri, 17 May 2019 15:46:58 +0530 +Subject: [PATCH 2941/4256] drm/amdgpu: sort probed modes before adding common + modes + +[Why] +There are monitors which can have more than one preferred mode +set. There are chances in these monitors that if common modes are +added in function amdgpu_dm_connector_add_common_modes(), these +common modes can be calculated with different preferred mode than +the one used in function decide_crtc_timing_for_drm_display_mode(). +The preferred mode can be different because after common modes +are added, the mode list is sorted and this changes the order of +preferred modes in the list. The first mode in the list with +preferred flag set is selected as preferred mode. Due to this the +preferred mode selected varies. +If same preferred mode is not selected in common mode calculation +and crtc timing, then during mode set instead of setting preferred +timing, common mode timing will be applied which can cause "out of +range" message in the monitor with monitor blanking out. + +[How] +Sort the modes before adding common modes. The same sorting function +is called during common mode addition and deciding crtc timing. + +Signed-off-by: Yogesh Mohan Marimuthu <yogesh.mohanmarimuthu@amd.com> +Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 9 +++++++++ + 1 file changed, 9 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 d335b17689e4..32bad607712b 100644 +--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c ++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +@@ -4910,6 +4910,15 @@ static void amdgpu_dm_connector_ddc_get_modes(struct drm_connector *connector, + amdgpu_dm_connector->num_modes = + drm_add_edid_modes(connector, edid); + ++ /* sorting the probed modes before calling function ++ * amdgpu_dm_get_native_mode() since EDID can have ++ * more than one preferred mode. The modes that are ++ * later in the probed mode list could be of higher ++ * and preferred resolution. For example, 3840x2160 ++ * resolution in base EDID preferred timing and 4096x2160 ++ * preferred resolution in DID extension block later. ++ */ ++ drm_mode_sort(&connector->probed_modes); + amdgpu_dm_get_native_mode(connector); + } else { + amdgpu_dm_connector->num_modes = 0; +-- +2.17.1 + |