From: Chaitanya Kumar Borah <chaitanya.kumar.bo...@intel.com>

Add infrastructure to set colorop. We iterate through all the color ops
in a selected COLOR PIPELINE and set them one by one.

Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.bo...@intel.com>
Signed-off-by: Uma Shankar <uma.shan...@intel.com>
---
 drivers/gpu/drm/i915/display/intel_color.c | 31 ++++++++++++++++++++++
 drivers/gpu/drm/i915/display/intel_color.h |  3 +++
 2 files changed, 34 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_color.c 
b/drivers/gpu/drm/i915/display/intel_color.c
index d6d5e56b4f2c..06268e89125e 100644
--- a/drivers/gpu/drm/i915/display/intel_color.c
+++ b/drivers/gpu/drm/i915/display/intel_color.c
@@ -3949,6 +3949,37 @@ struct intel_plane_colorop 
*intel_plane_colorop_create(enum intel_color_block id
        return colorop;
 }
 
+static void apply_colorop(const struct drm_plane_state *plane_state,
+                         struct drm_colorop *colorop,
+                         u32 *plane_color_ctl)
+{
+}
+
+void intel_program_pipeline(const struct drm_plane_state *plane_state, u32 
*plane_color_ctl)
+{
+       struct drm_colorop *colorop;
+
+       colorop = plane_state->color_pipeline;
+
+       while (colorop) {
+               struct drm_colorop_state *colorop_state;
+
+               if (!colorop)
+                       return;
+
+               /* TODO this is probably wrong */
+               colorop_state = colorop->state;
+
+               if (!colorop_state)
+                       return;
+
+               if (!colorop_state->bypass)
+                       apply_colorop(plane_state, colorop, plane_color_ctl);
+
+               colorop = colorop->next;
+       }
+}
+
 int intel_plane_tf_pipeline_init(struct drm_plane *plane, struct 
drm_prop_enum_list *list)
 {
        struct intel_plane *intel_plane = to_intel_plane(plane);
diff --git a/drivers/gpu/drm/i915/display/intel_color.h 
b/drivers/gpu/drm/i915/display/intel_color.h
index df0e1f6be067..bde880370ecc 100644
--- a/drivers/gpu/drm/i915/display/intel_color.h
+++ b/drivers/gpu/drm/i915/display/intel_color.h
@@ -13,6 +13,7 @@ struct intel_crtc;
 struct drm_i915_private;
 struct drm_property_blob;
 struct drm_plane;
+struct drm_plane_state;
 struct drm_prop_enum_list;
 enum intel_color_block;
 
@@ -40,5 +41,7 @@ struct intel_plane_colorop *intel_colorop_alloc(void);
 struct intel_plane_colorop *intel_plane_colorop_create(enum intel_color_block 
id);
 int intel_plane_tf_pipeline_init(struct drm_plane *plane, struct 
drm_prop_enum_list *list);
 int intel_plane_color_init(struct drm_plane *plane);
+void intel_program_pipeline(const struct drm_plane_state *plane_state,
+                           u32 *plane_color_ctl);
 
 #endif /* __INTEL_COLOR_H__ */
-- 
2.42.0

Reply via email to