mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 11:50:43 +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:
@@ -115,6 +115,7 @@ struct rockchip_hdmi {
|
||||
|
||||
unsigned int colordepth;
|
||||
unsigned int hdmi_quant_range;
|
||||
unsigned int phy_bus_width;
|
||||
enum drm_hdmi_output_type hdmi_output;
|
||||
};
|
||||
|
||||
@@ -411,6 +412,14 @@ static const struct drm_encoder_funcs dw_hdmi_rockchip_encoder_funcs = {
|
||||
|
||||
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)
|
||||
@@ -424,6 +433,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->vpll_clk,
|
||||
crtc->state->adjusted_mode.crtc_clock * 1000);
|
||||
|
||||
@@ -614,6 +626,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