diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2568-drm-amd-display-add-hardware_planes_only-to-list-of-.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2568-drm-amd-display-add-hardware_planes_only-to-list-of-.patch | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2568-drm-amd-display-add-hardware_planes_only-to-list-of-.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2568-drm-amd-display-add-hardware_planes_only-to-list-of-.patch new file mode 100644 index 00000000..7119f90d --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2568-drm-amd-display-add-hardware_planes_only-to-list-of-.patch @@ -0,0 +1,96 @@ +From ec5414ee5b6780aea7ed9a0ebbb5a9e792767eed Mon Sep 17 00:00:00 2001 +From: Shirish S <shirish.s@amd.com> +Date: Wed, 27 Sep 2017 15:15:38 +0530 +Subject: [PATCH 2568/4131] drm/amd/display: add hardware_planes_only to list + of affected planes + +For SoC's having software designed cursor plane, +should be treated differently than hardware cursor planes. + +The DRM core initializes cursor plane by default with +legacy_cursor_update set. + +Hence legacy_cursor_update can be use effectively +to handle software cursor planes' update and atomicity +functionalities. + +This patch uses this variable to decide in the atomic_check +to whether add a requested plane to the list of affected planes or +not, hence fixing the issue of co-existence of MPO, i.e, +setting of available hardware planes like underlay and +updation of cursor planes as well. + +Without this patch when underlay is set from user space, +only blank screen with backlight is visible. + +Signed-off-by: Shirish S <shirish.s@amd.com> +Reviewed-by: Harry Wentland <Harry.Wentland@amd.com> +--- + drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 30 ++++++++++++++++++----- + 1 file changed, 24 insertions(+), 6 deletions(-) + +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 534f6a7..1939bf10 100644 +--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c ++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +@@ -4207,6 +4207,8 @@ static int amdgpu_dm_atomic_commit(struct drm_device *dev, + if (drm_atomic_crtc_needs_modeset(new_state) && old_acrtc_state->stream) + manage_dm_interrupts(adev, acrtc, false); + } ++ /* Add check here for SoC's that support hardware cursor plane, to ++ * unset legacy_cursor_update */ + + return drm_atomic_helper_commit(dev, state, nonblock); + +@@ -4901,7 +4903,7 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev, + struct drm_connector *connector; + struct drm_connector_state *conn_state; + struct drm_crtc *crtc; +- struct drm_crtc_state *crtc_state; ++ struct drm_crtc_state *old_crtc_state, *crtc_state; + + /* + * This bool will be set for true for any modeset/reset +@@ -4910,18 +4912,34 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev, + bool lock_and_validation_needed = false; + + ret = drm_atomic_helper_check_modeset(dev, state); +- + if (ret) { + DRM_ERROR("Atomic state validation failed with error :%d !\n", ret); + return ret; + } + + /* +- * Hack: Commit needs planes right now, specifically for gamma +- * TODO rework commit to check CRTC for gamma change ++ * legacy_cursor_update should be made false for SoC's having ++ * a dedicated hardware plane for cursor in amdgpu_dm_atomic_commit(), ++ * otherwise for software cursor plane, ++ * we should not add it to list of affected planes. + */ +- for_each_crtc_in_state(state, crtc, crtc_state, i) { +- if (crtc_state->color_mgmt_changed) { ++ if (state->legacy_cursor_update) { ++ for_each_crtc_in_state(state, crtc, crtc_state, i) { ++ if (crtc_state->color_mgmt_changed) { ++ ret = drm_atomic_add_affected_planes(state, crtc); ++ if (ret) ++ goto fail; ++ } ++ } ++ } else { ++ for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, crtc_state, i) { ++ if (!crtc_state->enable) ++ continue; ++ ++ ret = drm_atomic_add_affected_connectors(state, crtc); ++ if (ret) ++ return ret; ++ + ret = drm_atomic_add_affected_planes(state, crtc); + if (ret) + goto fail; +-- +2.7.4 + |