drm/bridge/synopsys: restore bus_width as 8 when disable hdmi encoder

to modify bus width error sometime plug out hdmi and switch cvbs output

Change-Id: Iaa7914fbccc99991fbfbc5495ba647f97997c8ba
Signed-off-by: Huicong Xu <xhc@rock-chips.com>
This commit is contained in:
Huicong Xu
2018-01-30 16:01:56 +08:00
committed by Algea Cao
parent 4e961b2be6
commit b0c245000a

View File

@@ -121,6 +121,7 @@ struct rockchip_hdmi {
unsigned int colordepth;
unsigned int hdmi_quant_range;
unsigned int phy_bus_width;
enum drm_hdmi_output_type hdmi_output;
};
@@ -421,6 +422,14 @@ dw_hdmi_rockchip_mode_valid(struct drm_connector *connector, void *data,
static void dw_hdmi_rockchip_encoder_disable(struct drm_encoder *encoder)
{
struct rockchip_hdmi *hdmi = to_rockchip_hdmi(encoder);
/*
* when plug out hdmi it will be switch cvbs and then phy bus width
* must be set as 8
*/
if (hdmi->phy)
phy_set_bus_width(hdmi->phy, 8);
}
static void dw_hdmi_rockchip_encoder_enable(struct drm_encoder *encoder)
@@ -434,6 +443,9 @@ static void dw_hdmi_rockchip_encoder_enable(struct drm_encoder *encoder)
if (WARN_ON(!crtc || !crtc->state))
return;
if (hdmi->phy)
phy_set_bus_width(hdmi->phy, hdmi->phy_bus_width);
clk_set_rate(hdmi->phyref_clk,
crtc->state->adjusted_mode.crtc_clock * 1000);
@@ -624,6 +636,7 @@ dw_hdmi_rockchip_encoder_atomic_check(struct drm_encoder *encoder,
bus_width = colordepth;
}
hdmi->phy_bus_width = bus_width;
if (hdmi->phy)
phy_set_bus_width(hdmi->phy, bus_width);