aboutsummaryrefslogtreecommitdiffstats
path: root/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0264-drm-amd-display-Switch-to-DRM-helpers-in-s3.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0264-drm-amd-display-Switch-to-DRM-helpers-in-s3.patch')
-rw-r--r--meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0264-drm-amd-display-Switch-to-DRM-helpers-in-s3.patch304
1 files changed, 0 insertions, 304 deletions
diff --git a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0264-drm-amd-display-Switch-to-DRM-helpers-in-s3.patch b/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0264-drm-amd-display-Switch-to-DRM-helpers-in-s3.patch
deleted file mode 100644
index 8bb3cabf..00000000
--- a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0264-drm-amd-display-Switch-to-DRM-helpers-in-s3.patch
+++ /dev/null
@@ -1,304 +0,0 @@
-From f1a3ab42a07fd5a7fc99beca4d43505feb81bf45 Mon Sep 17 00:00:00 2001
-From: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com>
-Date: Thu, 20 Apr 2017 15:59:25 -0400
-Subject: [PATCH 0264/4131] drm/amd/display: Switch to DRM helpers in s3.
-
-Signed-off-by: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com>
-Acked-by: Harry Wentland <Harry.Wentland@amd.com>
-Reviewed-by: Tony Cheng <Tony.Cheng@amd.com>
-Reviewed-by: Jordan Lazare <Jordan.Lazare@amd.com>
-Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
----
- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 157 ++--------------------
- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h | 5 +
- drivers/gpu/drm/amd/display/dc/core/dc.c | 8 +-
- drivers/gpu/drm/amd/display/dc/dc.h | 3 +-
- drivers/gpu/drm/amd/display/dc/inc/core_dc.h | 4 -
- 5 files changed, 21 insertions(+), 156 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 4cae515..54d8d2c 100644
---- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
-+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
-@@ -451,28 +451,17 @@ static int dm_suspend(void *handle)
- struct amdgpu_device *adev = handle;
- struct amdgpu_display_manager *dm = &adev->dm;
- int ret = 0;
-- struct drm_crtc *crtc;
-
- s3_handle_mst(adev->ddev, true);
-
-- /* flash all pending vblank events and turn interrupt off
-- * before disabling CRTCs. They will be enabled back in
-- * dm_display_resume
-- */
-- drm_modeset_lock_all(adev->ddev);
-- list_for_each_entry(crtc, &adev->ddev->mode_config.crtc_list, head) {
-- struct amdgpu_crtc *acrtc = to_amdgpu_crtc(crtc);
-- if (acrtc->stream)
-- drm_crtc_vblank_off(crtc);
-- }
-- drm_modeset_unlock_all(adev->ddev);
--
- amdgpu_dm_irq_suspend(adev);
-
-+ adev->dm.cached_state = drm_atomic_helper_suspend(adev->ddev);
-+
- dc_set_power_state(
- dm->dc,
-- DC_ACPI_CM_POWER_STATE_D3,
-- DC_VIDEO_POWER_SUSPEND);
-+ DC_ACPI_CM_POWER_STATE_D3
-+ );
-
- return ret;
- }
-@@ -504,120 +493,6 @@ struct amdgpu_connector *amdgpu_dm_find_first_crct_matching_connector(
- return NULL;
- }
-
--static int dm_display_resume(struct drm_device *ddev)
--{
-- int ret = 0;
-- struct drm_connector *connector;
--
-- struct drm_atomic_state *state = drm_atomic_state_alloc(ddev);
-- struct drm_plane *plane;
-- struct drm_crtc *crtc;
-- struct amdgpu_connector *aconnector;
-- struct drm_connector_state *conn_state;
--
-- if (!state)
-- return ENOMEM;
--
-- state->acquire_ctx = ddev->mode_config.acquire_ctx;
--
-- /* Construct an atomic state to restore previous display setting */
--
-- /*
-- * Attach connectors to drm_atomic_state
-- * Should be done in the first place in order to make connectors
-- * available in state during crtc state processing. It is used for
-- * making decision if crtc should be disabled in case sink got
-- * disconnected.
-- *
-- * Connectors state crtc with NULL dc_sink should be cleared, because it
-- * will fail validation during commit
-- */
-- list_for_each_entry(connector, &ddev->mode_config.connector_list, head) {
-- aconnector = to_amdgpu_connector(connector);
-- conn_state = drm_atomic_get_connector_state(state, connector);
--
-- ret = PTR_ERR_OR_ZERO(conn_state);
-- if (ret)
-- goto err;
-- }
--
-- /* Attach crtcs to drm_atomic_state*/
-- list_for_each_entry(crtc, &ddev->mode_config.crtc_list, head) {
-- struct drm_crtc_state *crtc_state =
-- drm_atomic_get_crtc_state(state, crtc);
--
-- ret = PTR_ERR_OR_ZERO(crtc_state);
-- if (ret)
-- goto err;
--
-- /* force a restore */
-- crtc_state->mode_changed = true;
-- }
--
--
-- /* Attach planes to drm_atomic_state */
-- list_for_each_entry(plane, &ddev->mode_config.plane_list, head) {
--
-- struct drm_crtc *crtc;
-- struct drm_gem_object *obj;
-- struct drm_framebuffer *fb;
-- struct amdgpu_framebuffer *afb;
-- struct amdgpu_bo *rbo;
-- int r;
-- struct drm_plane_state *plane_state = drm_atomic_get_plane_state(state, plane);
--
-- ret = PTR_ERR_OR_ZERO(plane_state);
-- if (ret)
-- goto err;
--
-- crtc = plane_state->crtc;
-- fb = plane_state->fb;
--
-- if (!crtc || !crtc->state || !crtc->state->active)
-- continue;
--
-- if (!fb) {
-- DRM_DEBUG_KMS("No FB bound\n");
-- return 0;
-- }
--
-- /*
-- * Pin back the front buffers, cursor buffer was already pinned
-- * back in amdgpu_resume_kms
-- */
--
-- afb = to_amdgpu_framebuffer(fb);
--
-- obj = afb->obj;
-- rbo = gem_to_amdgpu_bo(obj);
-- r = amdgpu_bo_reserve(rbo, false);
-- if (unlikely(r != 0))
-- return r;
--
-- r = amdgpu_bo_pin(rbo, AMDGPU_GEM_DOMAIN_VRAM, NULL);
--
-- amdgpu_bo_unreserve(rbo);
--
-- if (unlikely(r != 0)) {
-- DRM_ERROR("Failed to pin framebuffer\n");
-- return r;
-- }
--
-- }
--
--
-- /* Call commit internally with the state we just constructed */
-- ret = drm_atomic_commit(state);
-- if (!ret)
-- return 0;
--
--err:
-- DRM_ERROR("Restoring old state failed with %i\n", ret);
-- drm_atomic_state_put(state);
--
-- return ret;
--}
--
- static int dm_resume(void *handle)
- {
- struct amdgpu_device *adev = handle;
-@@ -626,8 +501,8 @@ static int dm_resume(void *handle)
- /* power on hardware */
- dc_set_power_state(
- dm->dc,
-- DC_ACPI_CM_POWER_STATE_D0,
-- DC_VIDEO_POWER_ON);
-+ DC_ACPI_CM_POWER_STATE_D0
-+ );
-
- return 0;
- }
-@@ -638,8 +513,10 @@ int amdgpu_dm_display_resume(struct amdgpu_device *adev )
- struct amdgpu_display_manager *dm = &adev->dm;
- struct amdgpu_connector *aconnector;
- struct drm_connector *connector;
-- int ret = 0;
- struct drm_crtc *crtc;
-+ struct drm_crtc_state *crtc_state;
-+ int ret = 0;
-+ int i;
-
- /* program HPD filter */
- dc_resume(dm->dc);
-@@ -653,14 +530,6 @@ int amdgpu_dm_display_resume(struct amdgpu_device *adev )
- */
- amdgpu_dm_irq_resume_early(adev);
-
-- drm_modeset_lock_all(ddev);
-- list_for_each_entry(crtc, &ddev->mode_config.crtc_list, head) {
-- struct amdgpu_crtc *acrtc = to_amdgpu_crtc(crtc);
-- if (acrtc->stream)
-- drm_crtc_vblank_on(crtc);
-- }
-- drm_modeset_unlock_all(ddev);
--
- /* Do detection*/
- list_for_each_entry(connector,
- &ddev->mode_config.connector_list, head) {
-@@ -678,9 +547,11 @@ int amdgpu_dm_display_resume(struct amdgpu_device *adev )
- amdgpu_dm_update_connector_after_detect(aconnector);
- }
-
-- drm_modeset_lock_all(ddev);
-- ret = dm_display_resume(ddev);
-- drm_modeset_unlock_all(ddev);
-+ /* Force mode set in atomic comit */
-+ for_each_crtc_in_state(adev->dm.cached_state, crtc, crtc_state, i)
-+ crtc_state->active_changed = true;
-+
-+ ret = drm_atomic_helper_resume(ddev, adev->dm.cached_state);
-
- amdgpu_dm_irq_resume(adev);
-
-diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h
-index d6ebba0..ee69179 100644
---- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h
-+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h
-@@ -128,6 +128,11 @@ struct amdgpu_display_manager {
- struct work_struct mst_hotplug_work;
-
- struct mod_freesync *freesync_module;
-+
-+ /**
-+ * Caches device atomic state for suspend/resume
-+ */
-+ struct drm_atomic_state *cached_state;
- };
-
- /* basic init/fini API */
-diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c
-index a39b998..edcb731 100644
---- a/drivers/gpu/drm/amd/display/dc/core/dc.c
-+++ b/drivers/gpu/drm/amd/display/dc/core/dc.c
-@@ -1589,21 +1589,15 @@ void dc_interrupt_ack(struct dc *dc, enum dc_irq_source src)
-
- void dc_set_power_state(
- struct dc *dc,
-- enum dc_acpi_cm_power_state power_state,
-- enum dc_video_power_state video_power_state)
-+ enum dc_acpi_cm_power_state power_state)
- {
- struct core_dc *core_dc = DC_TO_CORE(dc);
-
-- core_dc->previous_power_state = core_dc->current_power_state;
-- core_dc->current_power_state = video_power_state;
--
- switch (power_state) {
- case DC_ACPI_CM_POWER_STATE_D0:
- core_dc->hwss.init_hw(core_dc);
- break;
- default:
-- /* NULL means "reset/release all DC streams" */
-- dc_commit_streams(dc, NULL, 0);
-
- core_dc->hwss.power_down(core_dc);
-
-diff --git a/drivers/gpu/drm/amd/display/dc/dc.h b/drivers/gpu/drm/amd/display/dc/dc.h
-index 69ae94b..e2c2a0b 100644
---- a/drivers/gpu/drm/amd/display/dc/dc.h
-+++ b/drivers/gpu/drm/amd/display/dc/dc.h
-@@ -705,8 +705,7 @@ enum dc_irq_source dc_get_hpd_irq_source_at_index(
-
- void dc_set_power_state(
- struct dc *dc,
-- enum dc_acpi_cm_power_state power_state,
-- enum dc_video_power_state video_power_state);
-+ enum dc_acpi_cm_power_state power_state);
- void dc_resume(const struct dc *dc);
-
- /*******************************************************************************
-diff --git a/drivers/gpu/drm/amd/display/dc/inc/core_dc.h b/drivers/gpu/drm/amd/display/dc/inc/core_dc.h
-index 7a6444d..8d87f49 100644
---- a/drivers/gpu/drm/amd/display/dc/inc/core_dc.h
-+++ b/drivers/gpu/drm/amd/display/dc/inc/core_dc.h
-@@ -26,10 +26,6 @@ struct core_dc {
- struct validate_context *scratch_val_ctx;
- struct resource_pool *res_pool;
-
-- /*Power State*/
-- enum dc_video_power_state previous_power_state;
-- enum dc_video_power_state current_power_state;
--
- /* Display Engine Clock levels */
- struct dm_pp_clock_levels sclk_lvls;
-
---
-2.7.4
-