| From c3e73ae2808a2e338d63dac92d96bca632a046e6 Mon Sep 17 00:00:00 2001 |
| From: Yongqiang Niu <yongqiang.niu@mediatek.com> |
| Date: Fri, 13 Dec 2019 15:28:51 +0800 |
| Subject: [PATCH] drm/mediatek: Add gamma property according to hardware |
| capability |
| |
| commit 4cebc1de506fa753301266a5a23bb21bca52ad3a upstream. |
| |
| If there is no gamma function in the crtc |
| display path, don't add gamma property |
| for crtc |
| |
| Fixes: 2f3f4dda747c ("drm/mediatek: Add gamma correction.") |
| Signed-off-by: Yongqiang Niu <yongqiang.niu@mediatek.com> |
| Signed-off-by: Hsin-Yi Wang <hsinyi@chromium.org> |
| Signed-off-by: CK Hu <ck.hu@mediatek.com> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c |
| index b64f943af809..86f055805b88 100644 |
| --- a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c |
| +++ b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c |
| @@ -535,6 +535,7 @@ int mtk_drm_crtc_create(struct drm_device *drm_dev, |
| int pipe = priv->num_pipes; |
| int ret; |
| int i; |
| + uint gamma_lut_size = 0; |
| |
| if (!path) |
| return 0; |
| @@ -585,6 +586,9 @@ int mtk_drm_crtc_create(struct drm_device *drm_dev, |
| } |
| |
| mtk_crtc->ddp_comp[i] = comp; |
| + |
| + if (comp->funcs && comp->funcs->gamma_set) |
| + gamma_lut_size = MTK_LUT_SIZE; |
| } |
| |
| mtk_crtc->layer_nr = mtk_ddp_comp_layer_nr(mtk_crtc->ddp_comp[0]); |
| @@ -607,8 +611,10 @@ int mtk_drm_crtc_create(struct drm_device *drm_dev, |
| NULL, pipe); |
| if (ret < 0) |
| return ret; |
| - drm_mode_crtc_set_gamma_size(&mtk_crtc->base, MTK_LUT_SIZE); |
| - drm_crtc_enable_color_mgmt(&mtk_crtc->base, 0, false, MTK_LUT_SIZE); |
| + |
| + if (gamma_lut_size) |
| + drm_mode_crtc_set_gamma_size(&mtk_crtc->base, gamma_lut_size); |
| + drm_crtc_enable_color_mgmt(&mtk_crtc->base, 0, false, gamma_lut_size); |
| priv->num_pipes++; |
| |
| return 0; |
| -- |
| 2.7.4 |
| |