From a8b73f42519e5c714917727cb7300585fa697a0a Mon Sep 17 00:00:00 2001 From: Huicong Xu Date: Wed, 24 Jan 2018 15:24:30 +0800 Subject: [PATCH] drm/bridge/synopsys: initialize hdmi variable when bootup with hdmi plugin if bootup with hdmi plugin initialize mtmdsclock to modify voicelessness and set bridge_is_on true to modify green screen when reboot from recovery Change-Id: I0ed9f956d62ab4087cb42a54dafba6a0fc9e5a7e Signed-off-by: Huicong Xu --- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c index 7c3e89c2b231..c82783def68c 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -2442,6 +2442,7 @@ dw_hdmi_connector_atomic_flush(struct drm_connector *connector, connector); struct drm_display_mode *mode = NULL; void *data = hdmi->plat_data->phy_data; + struct hdmi_vmode *vmode = &hdmi->hdmi_data.video_mode; unsigned int in_bus_format = hdmi->hdmi_data.enc_in_bus_format; unsigned int out_bus_format = hdmi->hdmi_data.enc_out_bus_format; @@ -2455,7 +2456,7 @@ dw_hdmi_connector_atomic_flush(struct drm_connector *connector, * If HDMI is enabled in uboot, it's need to record * drm_display_mode and set phy status to enabled. */ - if (!hdmi->hdmi_data.video_mode.mpixelclock) { + if (!vmode->mpixelclock) { if (hdmi->plat_data->get_enc_in_encoding) hdmi->hdmi_data.enc_in_encoding = hdmi->plat_data->get_enc_in_encoding(data); @@ -2471,9 +2472,13 @@ dw_hdmi_connector_atomic_flush(struct drm_connector *connector, mode = &conn_state->crtc->mode; memcpy(&hdmi->previous_mode, mode, sizeof(hdmi->previous_mode)); - hdmi->hdmi_data.video_mode.mpixelclock = mode->clock; - hdmi->hdmi_data.video_mode.previous_pixelclock = mode->clock; - hdmi->hdmi_data.video_mode.previous_tmdsclock = mode->clock; + vmode->mpixelclock = mode->crtc_clock * 1000; + vmode->previous_pixelclock = mode->clock; + vmode->previous_tmdsclock = mode->clock; + vmode->mtmdsclock = hdmi_get_tmdsclock(hdmi, + vmode->mpixelclock); + if (hdmi_bus_fmt_is_yuv420(hdmi->hdmi_data.enc_out_bus_format)) + vmode->mtmdsclock /= 2; if (in_bus_format != hdmi->hdmi_data.enc_in_bus_format || out_bus_format != hdmi->hdmi_data.enc_out_bus_format) hdmi->hdmi_data.update = true;