Signed-off-by: Harry Wentland <harry.wentl...@amd.com>
---
 drivers/gpu/drm/drm_atomic.c | 25 ++++++++++++++++++++++++-
 include/drm/drm_colorop.h    |  5 +++++
 2 files changed, 29 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
index b400e32c9d39..3645c36d63b3 100644
--- a/drivers/gpu/drm/drm_atomic.c
+++ b/drivers/gpu/drm/drm_atomic.c
@@ -783,6 +783,19 @@ static int drm_atomic_plane_check(const struct 
drm_plane_state *old_plane_state,
        return 0;
 }
 
+
+
+static void drm_atomic_colorop_print_state(struct drm_printer *p,
+               const struct drm_colorop_state *state)
+{
+       struct drm_colorop *colorop = state->colorop;
+
+       drm_printf(p, "colorop[%u]:\n", colorop->base.id);
+       drm_printf(p, "\ttype=%s\n", drm_get_colorop_type_name(colorop->type));
+       drm_printf(p, "\tbypass=%u\n", state->bypass);
+       drm_printf(p, "\tcurve_1d_type=%s\n", 
drm_get_colorop_curve_1d_type_name(state->curve_1d_type));
+}
+
 static void drm_atomic_plane_print_state(struct drm_printer *p,
                const struct drm_plane_state *state)
 {
@@ -804,7 +817,8 @@ static void drm_atomic_plane_print_state(struct drm_printer 
*p,
        drm_printf(p, "\tcolor-range=%s\n",
                   drm_get_color_range_name(state->color_range));
        drm_printf(p, "\tcolor_mgmt_changed=%d\n", state->color_mgmt_changed);
-
+       drm_printf(p, "\tcolor-pipeline=%d\n",
+                  state->color_pipeline ? state->color_pipeline->base.id : 0);
        if (plane->funcs->atomic_print_state)
                plane->funcs->atomic_print_state(p, state);
 }
@@ -1840,6 +1854,7 @@ static void __drm_state_dump(struct drm_device *dev, 
struct drm_printer *p,
                             bool take_locks)
 {
        struct drm_mode_config *config = &dev->mode_config;
+       struct drm_colorop *colorop;
        struct drm_plane *plane;
        struct drm_crtc *crtc;
        struct drm_connector *connector;
@@ -1849,6 +1864,14 @@ static void __drm_state_dump(struct drm_device *dev, 
struct drm_printer *p,
        if (!drm_drv_uses_atomic_modeset(dev))
                return;
 
+       list_for_each_entry(colorop, &config->colorop_list, head) {
+               if (take_locks)
+                       drm_modeset_lock(&colorop->plane->mutex, NULL);
+               drm_atomic_colorop_print_state(p, colorop->state);
+               if (take_locks)
+                       drm_modeset_unlock(&colorop->plane->mutex);
+       }
+
        list_for_each_entry(plane, &config->plane_list, head) {
                if (take_locks)
                        drm_modeset_lock(&plane->mutex, NULL);
diff --git a/include/drm/drm_colorop.h b/include/drm/drm_colorop.h
index 8060988b5892..fc9a28d138b8 100644
--- a/include/drm/drm_colorop.h
+++ b/include/drm/drm_colorop.h
@@ -231,6 +231,11 @@ static inline unsigned int drm_colorop_index(const struct 
drm_colorop *colorop)
 #define drm_for_each_colorop(colorop, dev) \
        list_for_each_entry(colorop, &(dev)->mode_config.colorop_list, head)
 
+const char *drm_get_color_pipeline_name(struct drm_colorop *colorop);
+
+const char *drm_get_colorop_type_name(enum drm_colorop_type type);
+const char *drm_get_colorop_curve_1d_type_name(enum drm_colorop_curve_1d_type 
type);
+
 void drm_colorop_set_next_property(struct drm_colorop *colorop, struct 
drm_colorop *next);
 
 
-- 
2.44.0

Reply via email to