mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 03:15:31 +09:00
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:
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user