diff options
Diffstat (limited to 'common/recipes-kernel/linux/files/0560-drm-amd-dal-use-new-state-in-atomic_check.patch')
-rw-r--r-- | common/recipes-kernel/linux/files/0560-drm-amd-dal-use-new-state-in-atomic_check.patch | 168 |
1 files changed, 0 insertions, 168 deletions
diff --git a/common/recipes-kernel/linux/files/0560-drm-amd-dal-use-new-state-in-atomic_check.patch b/common/recipes-kernel/linux/files/0560-drm-amd-dal-use-new-state-in-atomic_check.patch deleted file mode 100644 index 5b9f7dcc..00000000 --- a/common/recipes-kernel/linux/files/0560-drm-amd-dal-use-new-state-in-atomic_check.patch +++ /dev/null @@ -1,168 +0,0 @@ -From 02aa957e7c799e8d69b44a85e5fa50d2d73580cf Mon Sep 17 00:00:00 2001 -From: Mykola Lysenko <Mykola.Lysenko@amd.com> -Date: Wed, 2 Dec 2015 19:18:59 +0800 -Subject: [PATCH 0560/1110] drm/amd/dal: use new state in atomic_check - -Pass new state to fill_plane_attributes functions, so fb variable is available. -We should not segfault in case target is not created in atomic_check. -Removed unneeded cast - -Signed-off-by: Harry Wentland <harry.wentland@amd.com> -Acked-by: Harry Wentland <harry.wentland@amd.com> ---- - .../gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c | 61 ++++++++++++++-------- - 1 file changed, 39 insertions(+), 22 deletions(-) - -diff --git a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c -index 7990a48..4c460c0 100644 ---- a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c -+++ b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c -@@ -525,18 +525,20 @@ static void fill_gamma_from_crtc( - - static void fill_plane_attributes( - struct dc_surface *surface, -- const struct drm_crtc *crtc) -+ struct drm_plane_state *state) - { - const struct amdgpu_framebuffer *amdgpu_fb = -- to_amdgpu_framebuffer(crtc->primary->state->fb); -- fill_rects_from_plane_state(crtc->primary->state, surface); -+ to_amdgpu_framebuffer(state->fb); -+ const struct drm_crtc *crtc = state->crtc; -+ -+ fill_rects_from_plane_state(state, surface); - fill_plane_attributes_from_fb( - surface, - amdgpu_fb); - - /* In case of gamma set, update gamma value */ - if (crtc->mode.private_flags & -- AMDGPU_CRTC_MODE_PRIVATE_FLAGS_GAMMASET) { -+ AMDGPU_CRTC_MODE_PRIVATE_FLAGS_GAMMASET) { - fill_gamma_from_crtc(crtc, surface); - } - } -@@ -647,7 +649,7 @@ static void dm_dc_surface_commit( - dm_state); - - /* Surface programming */ -- fill_plane_attributes(dc_surface, crtc); -+ fill_plane_attributes(dc_surface, crtc->primary->state); - if (crtc->mode.private_flags & - AMDGPU_CRTC_MODE_PRIVATE_FLAGS_GAMMASET) { - /* reset trigger of gamma */ -@@ -2087,14 +2089,15 @@ int amdgpu_dm_atomic_commit( - * aconnector as needed - */ - handle_headless_hotplug(acrtc, new_state, &aconnector); -- if (!aconnector) { -+ -+ action = get_dm_commit_action(new_state); -+ -+ if (!aconnector && action != DM_COMMIT_ACTION_NOTHING) { - DRM_ERROR("Can't find connector for crtc %d\n", - acrtc->crtc_id); - break; - } - -- action = get_dm_commit_action(new_state); -- - switch (action) { - case DM_COMMIT_ACTION_DPMS_ON: - case DM_COMMIT_ACTION_SET: { -@@ -2318,7 +2321,11 @@ int amdgpu_dm_atomic_check(struct drm_device *dev, - struct drm_crtc_state *crtc_state; - struct drm_plane *plane; - struct drm_plane_state *plane_state; -- int i, j, ret, set_count, new_target_count; -+ int i; -+ int j; -+ int ret; -+ int set_count; -+ int new_target_count; - struct dc_validation_set set[MAX_TARGET_NUM] = {{ 0 }}; - struct dc_target *new_targets[MAX_TARGET_NUM] = { 0 }; - struct amdgpu_device *adev = dev->dev_private; -@@ -2334,11 +2341,6 @@ int amdgpu_dm_atomic_check(struct drm_device *dev, - - ret = -EINVAL; - -- if (state->num_connector > MAX_TARGET_NUM) { -- DRM_ERROR("Exceeded max targets number !\n"); -- return ret; -- } -- - /* copy existing configuration */ - new_target_count = 0; - set_count = 0; -@@ -2381,14 +2383,27 @@ int amdgpu_dm_atomic_check(struct drm_device *dev, - struct dc_target *new_target = NULL; - - if (!aconnector) { -- DRM_ERROR("Can't find connector for crtc %d\n", -- acrtc->crtc_id); -+ DRM_ERROR( -+ "%s: Can't find connector for crtc %d\n", -+ __func__, -+ acrtc->crtc_id); - goto connector_not_found; - } -+ - new_target = - create_target_for_sink( - aconnector, - &mode); -+ -+ if (!new_target) { -+ DRM_ERROR( -+ "%s: Can't create target for crtc %d\n", -+ __func__, -+ acrtc->crtc_id); -+ goto connector_not_found; -+ -+ } -+ - new_targets[new_target_count] = new_target; - - set_count = update_in_val_sets_target( -@@ -2420,12 +2435,13 @@ int amdgpu_dm_atomic_check(struct drm_device *dev, - for_each_plane_in_state(state, plane, plane_state, j) { - struct drm_plane_state *old_plane_state = plane->state; - struct drm_framebuffer *fb = plane_state->fb; -- struct amdgpu_crtc *acrtc = -- to_amdgpu_crtc(plane_state->crtc); -+ struct drm_crtc *crtc = plane_state->crtc; -+ struct amdgpu_crtc *acrtc = to_amdgpu_crtc(crtc); - - if (!fb || acrtc->target != set[i].target) - continue; -- if (!plane_state->crtc->state->planes_changed) -+ -+ if (!crtc->state->planes_changed) - continue; - - if (!page_flip_needed(plane_state, old_plane_state)) { -@@ -2433,7 +2449,9 @@ int amdgpu_dm_atomic_check(struct drm_device *dev, - dc_create_surface(dc); - - fill_plane_attributes( -- surface, plane_state->crtc); -+ surface, -+ plane_state); -+ - add_val_sets_surface( - set, - set_count, -@@ -2450,8 +2468,7 @@ int amdgpu_dm_atomic_check(struct drm_device *dev, - connector_not_found: - for (i = 0; i < set_count; i++) { - for (j = 0; j < set[i].surface_count; j++) { -- dc_surface_release( -- (struct dc_surface *)set[i].surfaces[j]); -+ dc_surface_release(set[i].surfaces[j]); - } - } - for (i = 0; i < new_target_count; i++) --- -2.7.4 - |