From 7481ef209d146e0cf6e0f39d6c2e8d6d465583d8 Mon Sep 17 00:00:00 2001 From: Zhang Yubing Date: Tue, 4 Apr 2023 18:56:24 +0800 Subject: [PATCH] drm/rockchip: dw-dp: use vsc sdp only output yuv420 or hdr Signed-off-by: Zhang Yubing Change-Id: I841ae4d83814682f8d9c2843dde082ad8929c392 --- drivers/gpu/drm/rockchip/dw-dp.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/rockchip/dw-dp.c b/drivers/gpu/drm/rockchip/dw-dp.c index edef80f3e723..076b127b9fd2 100644 --- a/drivers/gpu/drm/rockchip/dw-dp.c +++ b/drivers/gpu/drm/rockchip/dw-dp.c @@ -2194,13 +2194,29 @@ static int dw_dp_video_set_pixel_mode(struct dw_dp *dp, u8 pixel_mode) return 0; } +static bool dw_dp_video_need_vsc_sdp(struct dw_dp *dp) +{ + struct dw_dp_link *link = &dp->link; + struct dw_dp_video *video = &dp->video; + + if (!link->vsc_sdp_extension_for_colorimetry_supported) + return false; + + if (video->color_format == DRM_COLOR_FORMAT_YCRCB420) + return true; + + if (dw_dp_is_hdr_eotf(dp->eotf_type)) + return true; + + return false; +} + static int dw_dp_video_set_msa(struct dw_dp *dp, u8 color_format, u8 bpc, u16 vstart, u16 hstart) { - struct dw_dp_link *link = &dp->link; u16 misc = 0; - if (link->vsc_sdp_extension_for_colorimetry_supported) + if (dw_dp_video_need_vsc_sdp(dp)) misc |= DP_MSA_MISC_COLOR_VSC_SDP; switch (color_format) { @@ -2417,7 +2433,7 @@ static int dw_dp_video_enable(struct dw_dp *dp) regmap_update_bits(dp->regmap, DPTX_VSAMPLE_CTRL, VIDEO_STREAM_ENABLE, FIELD_PREP(VIDEO_STREAM_ENABLE, 1)); - if (link->vsc_sdp_extension_for_colorimetry_supported) + if (dw_dp_video_need_vsc_sdp(dp)) dw_dp_send_vsc_sdp(dp); if (dw_dp_is_hdr_eotf(dp->eotf_type))