aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0553-drm-amd-display-Create-dm_crtc_state-stubs.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0553-drm-amd-display-Create-dm_crtc_state-stubs.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0553-drm-amd-display-Create-dm_crtc_state-stubs.patch132
1 files changed, 132 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0553-drm-amd-display-Create-dm_crtc_state-stubs.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0553-drm-amd-display-Create-dm_crtc_state-stubs.patch
new file mode 100644
index 00000000..77c7a6e2
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0553-drm-amd-display-Create-dm_crtc_state-stubs.patch
@@ -0,0 +1,132 @@
+From 67278a2f946afa91de077344b24095ccfa034606 Mon Sep 17 00:00:00 2001
+From: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com>
+Date: Tue, 27 Jun 2017 17:24:00 -0400
+Subject: [PATCH 0553/4131] drm/amd/display: Create dm_crtc_state stubs.
+
+These stubs are initial only since we need to flatten
+DC objects (steran at least) to implement deep copy.
+
+Signed-off-by: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com>
+Reviewed-by: Harry Wentland <Harry.Wentland@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ .../drm/amd/display/amdgpu_dm/amdgpu_dm_types.c | 74 +++++++++++++++++++++-
+ .../drm/amd/display/amdgpu_dm/amdgpu_dm_types.h | 10 +++
+ 2 files changed, 81 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c
+index 6cbbf77..abbf575 100644
+--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c
++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c
+@@ -1018,16 +1018,84 @@ static int amdgpu_atomic_helper_page_flip(struct drm_crtc *crtc,
+ return ret;
+ }
+
++static void dm_crtc_destroy_state(struct drm_crtc *crtc,
++ struct drm_crtc_state *state)
++{
++ struct dm_crtc_state *cur = to_dm_crtc_state(state);
++
++ if (cur->dc_stream) {
++ /* TODO Destroy dc_stream objects are stream object is flattened */
++ dm_free(cur->dc_stream);
++ } else
++ WARN_ON(1);
++
++ __drm_atomic_helper_crtc_destroy_state(state);
++
++
++ kfree(state);
++}
++
++static void dm_crtc_reset_state(struct drm_crtc *crtc)
++{
++ struct dm_crtc_state *state;
++
++ if (crtc->state)
++ dm_crtc_destroy_state(crtc, crtc->state);
++
++ state = kzalloc(sizeof(*state), GFP_KERNEL);
++ if (WARN_ON(!state))
++ return;
++
++
++ crtc->state = &state->base;
++ crtc->state->crtc = crtc;
++
++ state->dc_stream = dm_alloc(sizeof(*state->dc_stream));
++ WARN_ON(!state->dc_stream);
++}
++
++static struct drm_crtc_state *
++dm_crtc_duplicate_state(struct drm_crtc *crtc)
++{
++ struct dm_crtc_state *state, *cur;
++ struct dc_stream *dc_stream;
++
++ if (WARN_ON(!crtc->state))
++ return NULL;
++
++ cur = to_dm_crtc_state(crtc->state);
++ if (WARN_ON(!cur->dc_stream))
++ return NULL;
++
++ dc_stream = dm_alloc(sizeof(*dc_stream));
++ if (WARN_ON(!dc_stream))
++ return NULL;
++
++ state = dm_alloc(sizeof(*state));
++ if (WARN_ON(!state)) {
++ dm_free(dc_stream);
++ return NULL;
++ }
++
++ __drm_atomic_helper_crtc_duplicate_state(crtc, &state->base);
++
++ state->dc_stream = dc_stream;
++
++ /* TODO Duplicate dc_stream after objects are stream object is flattened */
++
++ return &state->base;
++}
++
+ /* Implemented only the options currently availible for the driver */
+ static const struct drm_crtc_funcs amdgpu_dm_crtc_funcs = {
+- .reset = drm_atomic_helper_crtc_reset,
++ .reset = dm_crtc_reset_state,
+ .destroy = amdgpu_dm_crtc_destroy,
+ .gamma_set = drm_atomic_helper_legacy_gamma_set,
+ .set_config = drm_atomic_helper_set_config,
+ .set_property = drm_atomic_helper_crtc_set_property,
+ .page_flip = amdgpu_atomic_helper_page_flip,
+- .atomic_duplicate_state = drm_atomic_helper_crtc_duplicate_state,
+- .atomic_destroy_state = drm_atomic_helper_crtc_destroy_state,
++ .atomic_duplicate_state = dm_crtc_duplicate_state,
++ .atomic_destroy_state = dm_crtc_destroy_state,
+ };
+
+ static enum drm_connector_status
+diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.h b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.h
+index 6411dd1..1091725 100644
+--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.h
++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.h
+@@ -32,6 +32,16 @@ struct amdgpu_framebuffer;
+ struct amdgpu_display_manager;
+ struct dc_validation_set;
+ struct dc_surface;
++/* TODO rename to dc_stream_state */
++struct dc_stream;
++
++
++struct dm_crtc_state {
++ struct drm_crtc_state base;
++ struct dc_stream *dc_stream;
++};
++
++#define to_dm_crtc_state(x) container_of(x, struct dm_crtc_state, base)
+
+ struct dm_plane_state {
+ struct drm_plane_state base;
+--
+2.7.4
+