aboutsummaryrefslogtreecommitdiffstats
path: root/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0313-drm-amd-display-update-plane-functionalities.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0313-drm-amd-display-update-plane-functionalities.patch')
-rw-r--r--meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0313-drm-amd-display-update-plane-functionalities.patch248
1 files changed, 0 insertions, 248 deletions
diff --git a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0313-drm-amd-display-update-plane-functionalities.patch b/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0313-drm-amd-display-update-plane-functionalities.patch
deleted file mode 100644
index dceba875..00000000
--- a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0313-drm-amd-display-update-plane-functionalities.patch
+++ /dev/null
@@ -1,248 +0,0 @@
-From 82545407ddfcc2b06e508fe16d061fb11498a7bb Mon Sep 17 00:00:00 2001
-From: Shirish S <shirish.s@amd.com>
-Date: Thu, 23 Mar 2017 14:54:40 +0530
-Subject: [PATCH 0313/4131] drm/amd/display: update plane functionalities
-
-This patch introduces amdgpu_drm_plane_state
-structure, which subclasses drm_plane_state and
-holds data suitable for configuring hardware.
-
-It switches reset(), atomic_duplicate_state()
-& atomic_destroy_state() functions to new internal
-implementation, earlier they were pointing to
-drm core functions.
-
-TESTS(On Chromium OS on Stoney Only)
-* Builds without compilation errors.
-* 'plane_test' passes for XR24 format
- based Overlay plane.
-* Chromium OS ui comes up.
-
-Signed-off-by: Shirish S <shirish.s@amd.com>
-Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-Signed-off-by: Kalyan Alle <kalyan.alle@amd.com>
----
- drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h | 13 +++++
- .../drm/amd/display/amdgpu_dm/amdgpu_dm_types.c | 55 ++++++++++++++++++++--
- drivers/gpu/drm/drm_atomic.c | 3 +-
- drivers/gpu/drm/drm_atomic_helper.c | 55 ++++++++++++++++++++++
- include/drm/drm_atomic.h | 3 ++
- include/drm/drm_atomic_helper.h | 3 ++
- 6 files changed, 126 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
-index 1b89a18..3bfebab 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
-@@ -57,6 +57,7 @@ struct amdgpu_hpd;
- #define to_amdgpu_connector(x) container_of(x, struct amdgpu_connector, base)
- #define to_amdgpu_encoder(x) container_of(x, struct amdgpu_encoder, base)
- #define to_amdgpu_framebuffer(x) container_of(x, struct amdgpu_framebuffer, base)
-+#define to_amdgpu_plane(x) container_of(x, struct amdgpu_plane, base)
-
- #define AMDGPU_MAX_HPD_PINS 6
- #define AMDGPU_MAX_CRTCS 6
-@@ -443,6 +444,18 @@ struct amdgpu_crtc {
- struct drm_pending_vblank_event *event;
- };
-
-+struct amdgpu_drm_plane_state {
-+ struct drm_plane_state base;
-+ unsigned int h_ratio;
-+ unsigned int v_ratio;
-+};
-+
-+static inline struct amdgpu_drm_plane_state *
-+to_amdgpu_plane_state(struct drm_plane_state *state)
-+{
-+ return container_of(state, struct amdgpu_drm_plane_state, base);
-+}
-+
- struct amdgpu_plane {
- struct drm_plane base;
- enum drm_plane_type plane_type;
-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 e8de976..1b23081 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
-@@ -1608,12 +1608,57 @@ const struct drm_encoder_helper_funcs amdgpu_dm_encoder_helper_funcs = {
- .atomic_check = dm_encoder_helper_atomic_check
- };
-
-+static void dm_drm_plane_reset(struct drm_plane *plane)
-+{
-+ struct amdgpu_drm_plane_state *amdgpu_state;
-+
-+ if (plane->state) {
-+ amdgpu_state = to_amdgpu_plane_state(plane->state);
-+ if (amdgpu_state->base.fb)
-+ drm_framebuffer_unreference(amdgpu_state->base.fb);
-+ kfree(amdgpu_state);
-+ plane->state = NULL;
-+ }
-+
-+ amdgpu_state = kzalloc(sizeof(*amdgpu_state), GFP_KERNEL);
-+ if (amdgpu_state) {
-+ plane->state = &amdgpu_state->base;
-+ plane->state->plane = plane;
-+ }
-+}
-+
-+static struct drm_plane_state *
-+dm_drm_plane_duplicate_state(struct drm_plane *plane)
-+{
-+ struct amdgpu_drm_plane_state *amdgpu_state;
-+ struct amdgpu_drm_plane_state *copy;
-+
-+ amdgpu_state = to_amdgpu_plane_state(plane->state);
-+ copy = kzalloc(sizeof(*amdgpu_state), GFP_KERNEL);
-+ if (!copy)
-+ return NULL;
-+
-+ __drm_atomic_helper_plane_duplicate_state(plane, &copy->base);
-+ return &copy->base;
-+}
-+
-+static void dm_drm_plane_destroy_state(struct drm_plane *plane,
-+ struct drm_plane_state *old_state)
-+{
-+ struct amdgpu_drm_plane_state *old_amdgpu_state =
-+ to_amdgpu_plane_state(old_state);
-+ __drm_atomic_helper_plane_destroy_state(old_state);
-+ kfree(old_amdgpu_state);
-+}
-+
- static const struct drm_plane_funcs dm_plane_funcs = {
-- .update_plane = drm_atomic_helper_update_plane,
-- .disable_plane = drm_atomic_helper_disable_plane,
-- .reset = drm_atomic_helper_plane_reset,
-- .atomic_duplicate_state = drm_atomic_helper_plane_duplicate_state,
-- .atomic_destroy_state = drm_atomic_helper_plane_destroy_state
-+ .update_plane = drm_atomic_helper_update_plane,
-+ .disable_plane = drm_atomic_helper_disable_plane,
-+ .destroy = drm_plane_cleanup,
-+ .set_property = drm_atomic_helper_plane_set_property,
-+ .reset = dm_drm_plane_reset,
-+ .atomic_duplicate_state = dm_drm_plane_duplicate_state,
-+ .atomic_destroy_state = dm_drm_plane_destroy_state,
- };
-
- static int dm_plane_helper_prepare_fb(
-diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
-index 69aeec3..a96047b 100644
---- a/drivers/gpu/drm/drm_atomic.c
-+++ b/drivers/gpu/drm/drm_atomic.c
-@@ -721,7 +721,7 @@ EXPORT_SYMBOL(drm_atomic_get_plane_state);
- * RETURNS:
- * Zero on success, error code on failure
- */
--static int drm_atomic_plane_set_property(struct drm_plane *plane,
-+int drm_atomic_plane_set_property(struct drm_plane *plane,
- struct drm_plane_state *state, struct drm_property *property,
- uint64_t val)
- {
-@@ -778,6 +778,7 @@ static int drm_atomic_plane_set_property(struct drm_plane *plane,
-
- return 0;
- }
-+EXPORT_SYMBOL(drm_atomic_plane_set_property);
-
- /**
- * drm_atomic_plane_get_property - get property value from plane state
-diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
-index decb9f8f..db5af8e 100644
---- a/drivers/gpu/drm/drm_atomic_helper.c
-+++ b/drivers/gpu/drm/drm_atomic_helper.c
-@@ -2367,6 +2367,61 @@ int drm_atomic_helper_swap_state(struct drm_atomic_state *state,
- EXPORT_SYMBOL(drm_atomic_helper_swap_state);
-
- /**
-+ * drm_atomic_helper_plane_set_property - helper for plane properties
-+ * @plane: DRM plane
-+ * @property: DRM property
-+ * @val: value of property
-+ *
-+ * Provides a default plane set_property handler using the atomic driver
-+ * interface.
-+ *
-+ * RETURNS:
-+ * Zero on success, error code on failure
-+ */
-+int
-+drm_atomic_helper_plane_set_property(struct drm_plane *plane,
-+ struct drm_property *property,
-+ uint64_t val)
-+{
-+ struct drm_atomic_state *state;
-+ struct drm_plane_state *plane_state;
-+ int ret = 0;
-+
-+ state = drm_atomic_state_alloc(plane->dev);
-+ if (!state)
-+ return -ENOMEM;
-+
-+ /* ->set_property is always called with all locks held. */
-+ state->acquire_ctx = plane->dev->mode_config.acquire_ctx;
-+retry:
-+ plane_state = drm_atomic_get_plane_state(state, plane);
-+ if (IS_ERR(plane_state)) {
-+ ret = PTR_ERR(plane_state);
-+ goto fail;
-+ }
-+
-+ ret = drm_atomic_plane_set_property(plane, plane_state,
-+ property, val);
-+ if (ret)
-+ goto fail;
-+
-+ ret = drm_atomic_commit(state);
-+fail:
-+ if (ret == -EDEADLK)
-+ goto backoff;
-+
-+ drm_atomic_state_put(state);
-+ return ret;
-+
-+backoff:
-+ drm_atomic_state_clear(state);
-+ drm_atomic_legacy_backoff(state);
-+
-+ goto retry;
-+}
-+EXPORT_SYMBOL(drm_atomic_helper_plane_set_property);
-+
-+/**
- * drm_atomic_helper_update_plane - Helper for primary plane update using atomic
- * @plane: plane object to update
- * @crtc: owning CRTC of owning plane
-diff --git a/include/drm/drm_atomic.h b/include/drm/drm_atomic.h
-index 7c0f63c..f5ce777 100644
---- a/include/drm/drm_atomic.h
-+++ b/include/drm/drm_atomic.h
-@@ -315,6 +315,9 @@ int drm_atomic_crtc_set_property(struct drm_crtc *crtc,
- struct drm_plane_state * __must_check
- drm_atomic_get_plane_state(struct drm_atomic_state *state,
- struct drm_plane *plane);
-+int drm_atomic_plane_set_property(struct drm_plane *plane,
-+ struct drm_plane_state *state, struct drm_property *property,
-+ uint64_t val);
- struct drm_connector_state * __must_check
- drm_atomic_get_connector_state(struct drm_atomic_state *state,
- struct drm_connector *connector);
-diff --git a/include/drm/drm_atomic_helper.h b/include/drm/drm_atomic_helper.h
-index f3743d9..a02abab 100644
---- a/include/drm/drm_atomic_helper.h
-+++ b/include/drm/drm_atomic_helper.h
-@@ -127,6 +127,9 @@ int drm_atomic_helper_resume(struct drm_device *dev,
- int drm_atomic_helper_crtc_set_property(struct drm_crtc *crtc,
- struct drm_property *property,
- uint64_t val);
-+int drm_atomic_helper_plane_set_property(struct drm_plane *plane,
-+ struct drm_property *property,
-+ uint64_t val);
- int drm_atomic_helper_connector_set_property(struct drm_connector *connector,
- struct drm_property *property,
- uint64_t val);
---
-2.7.4
-