From a433c6370df503b4e95f9ed0d5e8fc21e46d5395 Mon Sep 17 00:00:00 2001 From: Sandy Huang Date: Wed, 2 Jun 2021 17:37:33 +0800 Subject: [PATCH] drm/rockchip: vop2: fix csc config error when at hdr mode Signed-off-by: Sandy Huang Change-Id: Ide5b9deb13882a561765a2e2be660e3463d1764f --- drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c index 48655e5e0319..0a2006d84a9f 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c @@ -1784,10 +1784,26 @@ static void vop2_setup_csc_mode(struct vop2_video_port *vp, /* hdr2sdr and sdr2hdr will do csc itself */ if (vpstate->hdr2sdr_en) { - /* This is hdr2sdr enabled plane */ + /* + * This is hdr2sdr enabled plane + * If it's RGB layer do hdr2sdr, we need to do r2y before send to hdr2sdr, + * because hdr2sdr only support yuv input. + */ + if (!is_input_yuv) { + vpstate->r2y_en = 1; + vpstate->csc_mode = vop2_convert_csc_mode(output_csc); + } return; } else if (!vpstate->hdr_in && vp->sdr2hdr_en) { - /* This is sdr2hdr enabled plane */ + /* + * This is sdr2hdr enabled plane + * If it's YUV layer do sdr2hdr, we need to do y2r before send to sdr2hdr, + * because sdr2hdr only support rgb input. + */ + if (is_input_yuv) { + vpstate->y2r_en = 1; + vpstate->csc_mode = vop2_convert_csc_mode(input_csc); + } return; }