mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 20:07:46 +09:00
drm/bridge: synopsys: dw-hdmi: Fix hdr mode abnormal color
1.Add support rgb bt2020 color space output. 2.Set AVI YQ to limited range. Signed-off-by: Algea Cao <algea.cao@rock-chips.com> Change-Id: I0a7d1ecbf2ab002328c8e6bcb115753e17e4bbb9
This commit is contained in:
@@ -2000,6 +2000,10 @@ static void hdmi_config_AVI(struct dw_hdmi *hdmi,
|
||||
{
|
||||
struct hdmi_avi_infoframe frame;
|
||||
u8 val;
|
||||
bool is_hdmi2;
|
||||
const struct drm_display_info *info = &connector->display_info;
|
||||
|
||||
is_hdmi2 = info->hdmi.scdc.supported || (info->color_formats & DRM_COLOR_FORMAT_YCRCB420);
|
||||
|
||||
/* Initialise info frame from DRM mode */
|
||||
drm_hdmi_avi_infoframe_from_display_mode(&frame, connector, mode);
|
||||
@@ -2062,10 +2066,22 @@ static void hdmi_config_AVI(struct dw_hdmi *hdmi,
|
||||
HDMI_EXTENDED_COLORIMETRY_XV_YCC_601;
|
||||
break;
|
||||
}
|
||||
frame.ycc_quantization_range = HDMI_YCC_QUANTIZATION_RANGE_LIMITED;
|
||||
} else {
|
||||
frame.colorimetry = HDMI_COLORIMETRY_NONE;
|
||||
frame.extended_colorimetry =
|
||||
HDMI_EXTENDED_COLORIMETRY_XV_YCC_601;
|
||||
if (hdmi->hdmi_data.enc_out_encoding == V4L2_YCBCR_ENC_BT2020) {
|
||||
frame.colorimetry = HDMI_COLORIMETRY_EXTENDED;
|
||||
frame.extended_colorimetry =
|
||||
HDMI_EXTENDED_COLORIMETRY_BT2020;
|
||||
} else {
|
||||
frame.colorimetry = HDMI_COLORIMETRY_NONE;
|
||||
frame.extended_colorimetry =
|
||||
HDMI_EXTENDED_COLORIMETRY_XV_YCC_601;
|
||||
}
|
||||
|
||||
if (is_hdmi2 && frame.quantization_range == HDMI_QUANTIZATION_RANGE_FULL)
|
||||
frame.ycc_quantization_range = HDMI_YCC_QUANTIZATION_RANGE_FULL;
|
||||
else
|
||||
frame.ycc_quantization_range = HDMI_YCC_QUANTIZATION_RANGE_LIMITED;
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user