drm/bridge: synopsys: dw-hdmi: fix kernel logo flash when output YCbCr422 mode

On rockchip platform, hdmi input format is YCbCr444 when output mode
is YCbCr422. Then the value of HDMI_TX_INVID0 on YCbCr422 is same as
the value of YCbCr444, both is 0x09/0x0b. This make enc_out_bus_format
stroed in struct hdmi_data is wrong, which is MEDIA_BUS_FMT_YUV8_1X24
or MEDIA_BUS_FMT_YUV10_1X30.

When android set enc_out_bus_format to YCbCr422, dw_hdmi_setup will be
called and logo will flash.

This patch use colorspace restored in HDMI_FC_AVICONF0 to distinguish them.

Change-Id: I6b913951b58fb47628617c11d6059bc1be4e370a
Signed-off-by: Zheng Yang <zhengyang@rock-chips.com>
This commit is contained in:
Zheng Yang
2018-02-10 17:20:06 +08:00
committed by Tao Huang
parent 7ef4b6eef9
commit 28566d7a06

View File

@@ -2859,12 +2859,16 @@ static void dw_hdmi_attach_properties(struct dw_hdmi *hdmi)
case 0x09:
if (colorspace == HDMI_COLORSPACE_YUV420)
color = MEDIA_BUS_FMT_UYYVYY8_0_5X24;
else if (colorspace == HDMI_COLORSPACE_YUV422)
color = MEDIA_BUS_FMT_UYVY8_1X16;
else
color = MEDIA_BUS_FMT_YUV8_1X24;
break;
case 0x0b:
if (colorspace == HDMI_COLORSPACE_YUV420)
color = MEDIA_BUS_FMT_UYYVYY10_0_5X30;
else if (colorspace == HDMI_COLORSPACE_YUV422)
color = MEDIA_BUS_FMT_UYVY10_1X20;
else
color = MEDIA_BUS_FMT_YUV10_1X30;
break;