Add atomic state property handling for CSC colorop's COLOR_ENCODING
and COLOR_RANGE properties in both set and get paths.

Also add state printing support to display the current color encoding
and range settings when dumping atomic state.

Co-developed by Claude Sonnet 4.5.

Signed-off-by: Harry Wentland <[email protected]>
---
 drivers/gpu/drm/drm_atomic.c      | 6 ++++++
 drivers/gpu/drm/drm_atomic_uapi.c | 8 ++++++++
 2 files changed, 14 insertions(+)

diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
index 04925166df98..2a7963c9676d 100644
--- a/drivers/gpu/drm/drm_atomic.c
+++ b/drivers/gpu/drm/drm_atomic.c
@@ -844,6 +844,12 @@ static void drm_atomic_colorop_print_state(struct 
drm_printer *p,
                           
drm_get_colorop_lut3d_interpolation_name(colorop->lut3d_interpolation));
                drm_printf(p, "\tdata blob id=%d\n", state->data ? 
state->data->base.id : 0);
                break;
+       case DRM_COLOROP_CSC:
+               drm_printf(p, "\tcolor-encoding=%s\n",
+                       drm_get_color_encoding_name(state->color_encoding));
+               drm_printf(p, "\tcolor-range=%s\n",
+                       drm_get_color_range_name(state->color_range));
+               break;
        default:
                break;
        }
diff --git a/drivers/gpu/drm/drm_atomic_uapi.c 
b/drivers/gpu/drm/drm_atomic_uapi.c
index 87de41fb4459..b760d753573c 100644
--- a/drivers/gpu/drm/drm_atomic_uapi.c
+++ b/drivers/gpu/drm/drm_atomic_uapi.c
@@ -754,6 +754,10 @@ static int drm_atomic_colorop_set_property(struct 
drm_colorop *colorop,
                state->multiplier = val;
        } else if (property == colorop->lut3d_interpolation_property) {
                colorop->lut3d_interpolation = val;
+       } else if (property == colorop->color_encoding_property) {
+               state->color_encoding = val;
+       } else if (property == colorop->color_range_property) {
+               state->color_range = val;
        } else if (property == colorop->data_property) {
                return drm_atomic_color_set_data_property(colorop, state,
                                                          property, val);
@@ -787,6 +791,10 @@ drm_atomic_colorop_get_property(struct drm_colorop 
*colorop,
                *val = colorop->size;
        else if (property == colorop->lut3d_interpolation_property)
                *val = colorop->lut3d_interpolation;
+       else if (property == colorop->color_encoding_property)
+               *val = state->color_encoding;
+       else if (property == colorop->color_range_property)
+               *val = state->color_range;
        else if (property == colorop->data_property)
                *val = (state->data) ? state->data->base.id : 0;
        else
-- 
2.53.0

Reply via email to