Skip to content

Commit e8dca30

Browse files
committed
drm/bridge: dw-hdmi: fix AVI frame colorimetry
CTA-861-F explicitly states that for RGB colorspace colorimetry should be set to "none". Fix that. Acked-by: Laurent Pinchart <[email protected]> Fixes: def23aa ("drm: bridge: dw-hdmi: Switch to V4L bus format and encodings") Signed-off-by: Jernej Skrabec <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
1 parent 1b79cfd commit e8dca30

File tree

1 file changed

+26
-20
lines changed

1 file changed

+26
-20
lines changed

drivers/gpu/drm/bridge/synopsys/dw-hdmi.c

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1624,28 +1624,34 @@ static void hdmi_config_AVI(struct dw_hdmi *hdmi, struct drm_display_mode *mode)
16241624
frame.colorspace = HDMI_COLORSPACE_RGB;
16251625

16261626
/* Set up colorimetry */
1627-
switch (hdmi->hdmi_data.enc_out_encoding) {
1628-
case V4L2_YCBCR_ENC_601:
1629-
if (hdmi->hdmi_data.enc_in_encoding == V4L2_YCBCR_ENC_XV601)
1630-
frame.colorimetry = HDMI_COLORIMETRY_EXTENDED;
1631-
else
1627+
if (!hdmi_bus_fmt_is_rgb(hdmi->hdmi_data.enc_out_bus_format)) {
1628+
switch (hdmi->hdmi_data.enc_out_encoding) {
1629+
case V4L2_YCBCR_ENC_601:
1630+
if (hdmi->hdmi_data.enc_in_encoding == V4L2_YCBCR_ENC_XV601)
1631+
frame.colorimetry = HDMI_COLORIMETRY_EXTENDED;
1632+
else
1633+
frame.colorimetry = HDMI_COLORIMETRY_ITU_601;
1634+
frame.extended_colorimetry =
1635+
HDMI_EXTENDED_COLORIMETRY_XV_YCC_601;
1636+
break;
1637+
case V4L2_YCBCR_ENC_709:
1638+
if (hdmi->hdmi_data.enc_in_encoding == V4L2_YCBCR_ENC_XV709)
1639+
frame.colorimetry = HDMI_COLORIMETRY_EXTENDED;
1640+
else
1641+
frame.colorimetry = HDMI_COLORIMETRY_ITU_709;
1642+
frame.extended_colorimetry =
1643+
HDMI_EXTENDED_COLORIMETRY_XV_YCC_709;
1644+
break;
1645+
default: /* Carries no data */
16321646
frame.colorimetry = HDMI_COLORIMETRY_ITU_601;
1647+
frame.extended_colorimetry =
1648+
HDMI_EXTENDED_COLORIMETRY_XV_YCC_601;
1649+
break;
1650+
}
1651+
} else {
1652+
frame.colorimetry = HDMI_COLORIMETRY_NONE;
16331653
frame.extended_colorimetry =
1634-
HDMI_EXTENDED_COLORIMETRY_XV_YCC_601;
1635-
break;
1636-
case V4L2_YCBCR_ENC_709:
1637-
if (hdmi->hdmi_data.enc_in_encoding == V4L2_YCBCR_ENC_XV709)
1638-
frame.colorimetry = HDMI_COLORIMETRY_EXTENDED;
1639-
else
1640-
frame.colorimetry = HDMI_COLORIMETRY_ITU_709;
1641-
frame.extended_colorimetry =
1642-
HDMI_EXTENDED_COLORIMETRY_XV_YCC_709;
1643-
break;
1644-
default: /* Carries no data */
1645-
frame.colorimetry = HDMI_COLORIMETRY_ITU_601;
1646-
frame.extended_colorimetry =
1647-
HDMI_EXTENDED_COLORIMETRY_XV_YCC_601;
1648-
break;
1654+
HDMI_EXTENDED_COLORIMETRY_XV_YCC_601;
16491655
}
16501656

16511657
frame.scan_mode = HDMI_SCAN_MODE_NONE;

0 commit comments

Comments
 (0)