Commit 3fcd70c9 authored by Tomi Valkeinen's avatar Tomi Valkeinen

drm/omap: use degamma property for gamma table

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 thus
we will have:

degamma -> ctm -> out

and the legacy ioctl will continue working as before.
Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
Reviewed-by: default avatarPekka Paalanen <pekka.paalanen@collabora.com>
Reviewed-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20201103080310.164453-3-tomi.valkeinen@ti.com
parent 1b897743
...@@ -575,8 +575,8 @@ static int omap_crtc_atomic_check(struct drm_crtc *crtc, ...@@ -575,8 +575,8 @@ static int omap_crtc_atomic_check(struct drm_crtc *crtc,
crtc); crtc);
struct drm_plane_state *pri_state; struct drm_plane_state *pri_state;
if (crtc_state->color_mgmt_changed && crtc_state->gamma_lut) { if (crtc_state->color_mgmt_changed && crtc_state->degamma_lut) {
unsigned int length = crtc_state->gamma_lut->length / unsigned int length = crtc_state->degamma_lut->length /
sizeof(struct drm_color_lut); sizeof(struct drm_color_lut);
if (length < 2) if (length < 2)
...@@ -617,10 +617,10 @@ static void omap_crtc_atomic_flush(struct drm_crtc *crtc, ...@@ -617,10 +617,10 @@ static void omap_crtc_atomic_flush(struct drm_crtc *crtc,
struct drm_color_lut *lut = NULL; struct drm_color_lut *lut = NULL;
unsigned int length = 0; unsigned int length = 0;
if (crtc->state->gamma_lut) { if (crtc->state->degamma_lut) {
lut = (struct drm_color_lut *) lut = (struct drm_color_lut *)
crtc->state->gamma_lut->data; crtc->state->degamma_lut->data;
length = crtc->state->gamma_lut->length / length = crtc->state->degamma_lut->length /
sizeof(*lut); sizeof(*lut);
} }
priv->dispc_ops->mgr_set_gamma(priv->dispc, omap_crtc->channel, priv->dispc_ops->mgr_set_gamma(priv->dispc, omap_crtc->channel,
...@@ -841,7 +841,7 @@ struct drm_crtc *omap_crtc_init(struct drm_device *dev, ...@@ -841,7 +841,7 @@ struct drm_crtc *omap_crtc_init(struct drm_device *dev,
if (priv->dispc_ops->mgr_gamma_size(priv->dispc, channel)) { if (priv->dispc_ops->mgr_gamma_size(priv->dispc, channel)) {
unsigned int gamma_lut_size = 256; 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); drm_mode_crtc_set_gamma_size(crtc, gamma_lut_size);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment