aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/0665-drm-amd-display-Roll-core_gamma-into-dc_gamma.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/0665-drm-amd-display-Roll-core_gamma-into-dc_gamma.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.14.71/0665-drm-amd-display-Roll-core_gamma-into-dc_gamma.patch153
1 files changed, 153 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/0665-drm-amd-display-Roll-core_gamma-into-dc_gamma.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/0665-drm-amd-display-Roll-core_gamma-into-dc_gamma.patch
new file mode 100644
index 00000000..1974746f
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/0665-drm-amd-display-Roll-core_gamma-into-dc_gamma.patch
@@ -0,0 +1,153 @@
+From dfdf56ac7ef8f808982000e2159f7eccf72db3b1 Mon Sep 17 00:00:00 2001
+From: Harry Wentland <harry.wentland@amd.com>
+Date: Mon, 24 Jul 2017 15:30:17 -0400
+Subject: [PATCH 0665/4131] drm/amd/display: Roll core_gamma into dc_gamma
+
+Signed-off-by: Harry Wentland <harry.wentland@amd.com>
+Acked-by: Harry Wentland <Harry.Wentland@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/display/dc/core/dc.c | 6 ++----
+ drivers/gpu/drm/amd/display/dc/core/dc_surface.c | 22 +++++++++-------------
+ drivers/gpu/drm/amd/display/dc/dc.h | 6 +++---
+ drivers/gpu/drm/amd/display/dc/dc_hw_types.h | 7 +++++++
+ drivers/gpu/drm/amd/display/dc/inc/core_types.h | 11 -----------
+ 5 files changed, 21 insertions(+), 31 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c
+index 30374ff..d3873ac 100644
+--- a/drivers/gpu/drm/amd/display/dc/core/dc.c
++++ b/drivers/gpu/drm/amd/display/dc/core/dc.c
+@@ -1500,12 +1500,10 @@ void dc_update_surfaces_and_stream(struct dc *dc,
+ if (srf_updates[i].gamma &&
+ srf_updates[i].gamma != surface->gamma_correction) {
+ if (surface->gamma_correction != NULL)
+- dc_gamma_release(&surface->
+- gamma_correction);
++ dc_gamma_release(&surface->gamma_correction);
+
+ dc_gamma_retain(srf_updates[i].gamma);
+- surface->gamma_correction =
+- srf_updates[i].gamma;
++ surface->gamma_correction = srf_updates[i].gamma;
+ }
+
+ if (srf_updates[i].in_transfer_func &&
+diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_surface.c b/drivers/gpu/drm/amd/display/dc/core/dc_surface.c
+index a8b9515..eded6b7 100644
+--- a/drivers/gpu/drm/amd/display/dc/core/dc_surface.c
++++ b/drivers/gpu/drm/amd/display/dc/core/dc_surface.c
+@@ -137,37 +137,33 @@ void dc_surface_release(struct dc_surface *surface)
+ }
+ }
+
+-void dc_gamma_retain(const struct dc_gamma *dc_gamma)
++void dc_gamma_retain(struct dc_gamma *gamma)
+ {
+- struct core_gamma *gamma = DC_GAMMA_TO_CORE(dc_gamma);
+-
+ ASSERT(gamma->ref_count > 0);
+ ++gamma->ref_count;
+ }
+
+-void dc_gamma_release(const struct dc_gamma **dc_gamma)
++void dc_gamma_release(struct dc_gamma **gamma)
+ {
+- struct core_gamma *gamma = DC_GAMMA_TO_CORE(*dc_gamma);
+-
+- ASSERT(gamma->ref_count > 0);
+- --gamma->ref_count;
++ ASSERT((*gamma)->ref_count > 0);
++ --(*gamma)->ref_count;
+
+- if (gamma->ref_count == 0)
+- dm_free(gamma);
++ if ((*gamma)->ref_count == 0)
++ dm_free((*gamma));
+
+- *dc_gamma = NULL;
++ *gamma = NULL;
+ }
+
+ struct dc_gamma *dc_create_gamma()
+ {
+- struct core_gamma *gamma = dm_alloc(sizeof(*gamma));
++ struct dc_gamma *gamma = dm_alloc(sizeof(*gamma));
+
+ if (gamma == NULL)
+ goto alloc_fail;
+
+ ++gamma->ref_count;
+
+- return &gamma->public;
++ return gamma;
+
+ alloc_fail:
+ return NULL;
+diff --git a/drivers/gpu/drm/amd/display/dc/dc.h b/drivers/gpu/drm/amd/display/dc/dc.h
+index 77bd546..5523bb6 100644
+--- a/drivers/gpu/drm/amd/display/dc/dc.h
++++ b/drivers/gpu/drm/amd/display/dc/dc.h
+@@ -326,7 +326,7 @@ struct dc_surface {
+ struct dc_plane_dcc_param dcc;
+ struct dc_hdr_static_metadata hdr_static_ctx;
+
+- const struct dc_gamma *gamma_correction;
++ struct dc_gamma *gamma_correction;
+ struct dc_transfer_func *in_transfer_func;
+
+ enum dc_color_space color_space;
+@@ -394,8 +394,8 @@ const struct dc_surface_status *dc_surface_get_status(
+ void dc_surface_retain(struct dc_surface *dc_surface);
+ void dc_surface_release(struct dc_surface *dc_surface);
+
+-void dc_gamma_retain(const struct dc_gamma *dc_gamma);
+-void dc_gamma_release(const struct dc_gamma **dc_gamma);
++void dc_gamma_retain(struct dc_gamma *dc_gamma);
++void dc_gamma_release(struct dc_gamma **dc_gamma);
+ struct dc_gamma *dc_create_gamma(void);
+
+ void dc_transfer_func_retain(struct dc_transfer_func *dc_tf);
+diff --git a/drivers/gpu/drm/amd/display/dc/dc_hw_types.h b/drivers/gpu/drm/amd/display/dc/dc_hw_types.h
+index 05f030e..4c5e797 100644
+--- a/drivers/gpu/drm/amd/display/dc/dc_hw_types.h
++++ b/drivers/gpu/drm/amd/display/dc/dc_hw_types.h
+@@ -415,6 +415,13 @@ struct dc_gamma {
+ uint16_t red[INPUT_LUT_ENTRIES];
+ uint16_t green[INPUT_LUT_ENTRIES];
+ uint16_t blue[INPUT_LUT_ENTRIES];
++
++ /* private to DC core */
++ struct dc_context *ctx;
++
++ /* private to dc_surface.c */
++ int ref_count;
++
+ };
+
+ /* Used by both ipp amd opp functions*/
+diff --git a/drivers/gpu/drm/amd/display/dc/inc/core_types.h b/drivers/gpu/drm/amd/display/dc/inc/core_types.h
+index 43e9ada..5a47d4c 100644
+--- a/drivers/gpu/drm/amd/display/dc/inc/core_types.h
++++ b/drivers/gpu/drm/amd/display/dc/inc/core_types.h
+@@ -40,17 +40,6 @@ struct core_stream;
+
+ #define MAX_CLOCK_SOURCES 7
+
+-#define DC_GAMMA_TO_CORE(dc_gamma) \
+- container_of(dc_gamma, struct core_gamma, public)
+-
+-struct core_gamma {
+- struct dc_gamma public;
+- struct dc_context *ctx;
+-
+- /* private to dc_surface.c */
+- int ref_count;
+-};
+-
+ void enable_surface_flip_reporting(struct dc_surface *dc_surface,
+ uint32_t controller_id);
+
+--
+2.7.4
+