From 28566d7a061ef01d5b7b6969c4dd7bd81db4fe5f Mon Sep 17 00:00:00 2001 From: Zheng Yang Date: Sat, 10 Feb 2018 17:20:06 +0800 Subject: [PATCH] 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 --- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c index a0e2ce12e95c..36ee7c659174 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -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;