We can not support color management without DSPP blocks being provided
in the HW catalog. Do not enable color management for CRTCs if num_dspps
is 0.

Fixes: 4259ff7ae509 ("drm/msm/dpu: add support for pcc color block in dpu 
driver")
Reported-by: Yongqin Liu <[email protected]>
Signed-off-by: Dmitry Baryshkov <[email protected]>
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c 
b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
index 6e684a7b49a1..1edf2b6b0a26 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
@@ -1463,6 +1463,8 @@ static const struct drm_crtc_helper_funcs 
dpu_crtc_helper_funcs = {
 struct drm_crtc *dpu_crtc_init(struct drm_device *dev, struct drm_plane *plane,
                                struct drm_plane *cursor)
 {
+       struct msm_drm_private *priv = dev->dev_private;
+       struct dpu_kms *dpu_kms = to_dpu_kms(priv->kms);
        struct drm_crtc *crtc = NULL;
        struct dpu_crtc *dpu_crtc = NULL;
        int i, ret;
@@ -1494,7 +1496,8 @@ struct drm_crtc *dpu_crtc_init(struct drm_device *dev, 
struct drm_plane *plane,
 
        drm_crtc_helper_add(crtc, &dpu_crtc_helper_funcs);
 
-       drm_crtc_enable_color_mgmt(crtc, 0, true, 0);
+       if (dpu_kms->catalog->dspp_count)
+               drm_crtc_enable_color_mgmt(crtc, 0, true, 0);
 
        /* save user friendly CRTC name for later */
        snprintf(dpu_crtc->name, DPU_CRTC_NAME_SIZE, "crtc%u", crtc->base.id);
-- 
2.39.2

Reply via email to