From 4cebb9a409cde398bf66db36b3cb305a7f5cb0c5 Mon Sep 17 00:00:00 2001 From: Zheng Yang Date: Wed, 1 Mar 2017 16:05:37 +0800 Subject: [PATCH] drm/rockchip: dw_hdmi: support ROCKCHIP_OUT_MODE_YUV420 VOP output mode and bus_format must be ROCKCHIP_OUT_MODE_YUV420 and MEDIA_BUS_FMT_YUV8_1X24 when display mode has a YCbCr420 flag. Change-Id: Ib2d51c119f5a8f1b8a9285c47ab228b22a293d56 Signed-off-by: Zheng Yang --- drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c index 1148286e8891..16878d376c6d 100644 --- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c @@ -354,8 +354,15 @@ dw_hdmi_rockchip_encoder_atomic_check(struct drm_encoder *encoder, struct drm_connector_state *conn_state) { struct rockchip_crtc_state *s = to_rockchip_crtc_state(crtc_state); + struct drm_display_info *info = &conn_state->connector->display_info; - s->output_mode = ROCKCHIP_OUT_MODE_AAAA; + if (drm_mode_is_420(info, &crtc_state->mode)) { + s->output_mode = ROCKCHIP_OUT_MODE_YUV420; + s->bus_format = MEDIA_BUS_FMT_YUV8_1X24; + } else { + s->output_mode = ROCKCHIP_OUT_MODE_AAAA; + s->bus_format = MEDIA_BUS_FMT_RGB888_1X24; + } s->output_type = DRM_MODE_CONNECTOR_HDMIA; return 0;