diff options
author | Bibby Hsieh <bibby.hsieh@mediatek.com> | 2016-07-27 22:22:54 -0400 |
---|---|---|
committer | Philipp Zabel <p.zabel@pengutronix.de> | 2016-08-11 04:52:22 -0400 |
commit | 2f3f4dda747c0619594d13996e65598ab675c60c (patch) | |
tree | 7eeecac304f67c6007d8c3f2da969c8183ff66dc /drivers/gpu/drm/mediatek/mtk_drm_crtc.c | |
parent | e0a5d33702451329b7da70a15fad3b919e441401 (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.c | 7 |
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 | ||
414 | static const struct drm_crtc_funcs mtk_crtc_funcs = { | 417 | static 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 | ||
423 | static const struct drm_crtc_helper_funcs mtk_crtc_helper_funcs = { | 427 | static 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 | ||