omapdrm supports gamma via GAMMA_LUT property. However, the HW we have
is:

gamma -> ctm -> out

instead of what the model DRM framework uses:

ctm -> gamma -> out

As the following patches add CTM support for omapdrm, lets first fix the
gamma.

This patch changes the property from GAMMA_LUT to DEGAMMA_LUT, and uses
drm_atomic_helper_legacy_degamma_set for gamma_set helper. Thus we will
have:

degamma -> ctm -> out

and the legacy ioctl will continue working as before.

Signed-off-by: Tomi Valkeinen <tomi.valkei...@ti.com>
Reviewed-by: Pekka Paalanen <pekka.paala...@collabora.com>
---
 drivers/gpu/drm/omapdrm/omap_crtc.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/omapdrm/omap_crtc.c 
b/drivers/gpu/drm/omapdrm/omap_crtc.c
index d7442aa55f89..d40220b2f312 100644
--- a/drivers/gpu/drm/omapdrm/omap_crtc.c
+++ b/drivers/gpu/drm/omapdrm/omap_crtc.c
@@ -575,8 +575,8 @@ static int omap_crtc_atomic_check(struct drm_crtc *crtc,
                                                                          crtc);
        struct drm_plane_state *pri_state;
 
-       if (crtc_state->color_mgmt_changed && crtc_state->gamma_lut) {
-               unsigned int length = crtc_state->gamma_lut->length /
+       if (crtc_state->color_mgmt_changed && crtc_state->degamma_lut) {
+               unsigned int length = crtc_state->degamma_lut->length /
                        sizeof(struct drm_color_lut);
 
                if (length < 2)
@@ -617,10 +617,10 @@ static void omap_crtc_atomic_flush(struct drm_crtc *crtc,
                struct drm_color_lut *lut = NULL;
                unsigned int length = 0;
 
-               if (crtc->state->gamma_lut) {
+               if (crtc->state->degamma_lut) {
                        lut = (struct drm_color_lut *)
-                               crtc->state->gamma_lut->data;
-                       length = crtc->state->gamma_lut->length /
+                               crtc->state->degamma_lut->data;
+                       length = crtc->state->degamma_lut->length /
                                sizeof(*lut);
                }
                priv->dispc_ops->mgr_set_gamma(priv->dispc, omap_crtc->channel,
@@ -741,7 +741,7 @@ static const struct drm_crtc_funcs omap_crtc_funcs = {
        .set_config = drm_atomic_helper_set_config,
        .destroy = omap_crtc_destroy,
        .page_flip = drm_atomic_helper_page_flip,
-       .gamma_set = drm_atomic_helper_legacy_gamma_set,
+       .gamma_set = drm_atomic_helper_legacy_degamma_set,
        .atomic_duplicate_state = omap_crtc_duplicate_state,
        .atomic_destroy_state = drm_atomic_helper_crtc_destroy_state,
        .atomic_set_property = omap_crtc_atomic_set_property,
@@ -842,7 +842,7 @@ struct drm_crtc *omap_crtc_init(struct drm_device *dev,
        if (priv->dispc_ops->mgr_gamma_size(priv->dispc, channel)) {
                unsigned int gamma_lut_size = 256;
 
-               drm_crtc_enable_color_mgmt(crtc, 0, false, gamma_lut_size);
+               drm_crtc_enable_color_mgmt(crtc, gamma_lut_size, false, 0);
                drm_mode_crtc_set_gamma_size(crtc, gamma_lut_size);
        }
 
-- 
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to