aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/mediatek/mtk_drm_crtc.c
diff options
context:
space:
mode:
authorBibby Hsieh <bibby.hsieh@mediatek.com>2016-07-27 22:22:54 -0400
committerPhilipp Zabel <p.zabel@pengutronix.de>2016-08-11 04:52:22 -0400
commit2f3f4dda747c0619594d13996e65598ab675c60c (patch)
tree7eeecac304f67c6007d8c3f2da969c8183ff66dc /drivers/gpu/drm/mediatek/mtk_drm_crtc.c
parente0a5d33702451329b7da70a15fad3b919e441401 (diff)
drm/mediatek: Add gamma correction.
Add gamma set function to correct brightness values. It applies arbitrary mapping curve to compensate the incorrect transfer function of the panel. Signed-off-by: Bibby Hsieh <bibby.hsieh@mediatek.com> Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Diffstat (limited to 'drivers/gpu/drm/mediatek/mtk_drm_crtc.c')
-rw-r--r--drivers/gpu/drm/mediatek/mtk_drm_crtc.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c
index 24aa3bad1e76..e3ac2802e024 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c
+++ b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c
@@ -409,6 +409,9 @@ static void mtk_drm_crtc_atomic_flush(struct drm_crtc *crtc,
409 } 409 }
410 if (pending_planes) 410 if (pending_planes)
411 mtk_crtc->pending_planes = true; 411 mtk_crtc->pending_planes = true;
412 if (crtc->state->color_mgmt_changed)
413 for (i = 0; i < mtk_crtc->ddp_comp_nr; i++)
414 mtk_ddp_gamma_set(mtk_crtc->ddp_comp[i], crtc->state);
412} 415}
413 416
414static const struct drm_crtc_funcs mtk_crtc_funcs = { 417static const struct drm_crtc_funcs mtk_crtc_funcs = {
@@ -418,6 +421,7 @@ static const struct drm_crtc_funcs mtk_crtc_funcs = {
418 .reset = mtk_drm_crtc_reset, 421 .reset = mtk_drm_crtc_reset,
419 .atomic_duplicate_state = mtk_drm_crtc_duplicate_state, 422 .atomic_duplicate_state = mtk_drm_crtc_duplicate_state,
420 .atomic_destroy_state = mtk_drm_crtc_destroy_state, 423 .atomic_destroy_state = mtk_drm_crtc_destroy_state,
424 .gamma_set = drm_atomic_helper_legacy_gamma_set,
421}; 425};
422 426
423static const struct drm_crtc_helper_funcs mtk_crtc_helper_funcs = { 427static const struct drm_crtc_helper_funcs mtk_crtc_helper_funcs = {
@@ -568,7 +572,8 @@ int mtk_drm_crtc_create(struct drm_device *drm_dev,
568 &mtk_crtc->planes[1].base, pipe); 572 &mtk_crtc->planes[1].base, pipe);
569 if (ret < 0) 573 if (ret < 0)
570 goto unprepare; 574 goto unprepare;
571 575 drm_mode_crtc_set_gamma_size(&mtk_crtc->base, MTK_LUT_SIZE);
576 drm_crtc_enable_color_mgmt(&mtk_crtc->base, 0, false, MTK_LUT_SIZE);
572 priv->crtc[pipe] = &mtk_crtc->base; 577 priv->crtc[pipe] = &mtk_crtc->base;
573 priv->num_pipes++; 578 priv->num_pipes++;
574 579