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 80f0ef45db
commit 5f1c036a65

View File

@ -3024,12 +3024,16 @@ static void dw_hdmi_attatch_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;