drm/rockchip: dw-dp: reset dp controller status

After disable dp controller, reset it status to avoid something
wrong if the status is abnormal.

Signed-off-by: Zhang Yubing <yubing.zhang@rock-chips.com>
Change-Id: I9de6ab056317a09b104ef604a6ef4ec20610fb65
This commit is contained in:
Zhang Yubing
2022-03-22 16:45:23 +08:00
parent a36ea1eeec
commit f14693316b

View File

@@ -2112,6 +2112,17 @@ static void dw_dp_bridge_atomic_enable(struct drm_bridge *bridge,
}
}
static void dw_dp_reset(struct dw_dp *dp)
{
regmap_update_bits(dp->regmap, DPTX_SOFT_RESET_CTRL, CONTROLLER_RESET,
FIELD_PREP(CONTROLLER_RESET, 1));
udelay(10);
regmap_update_bits(dp->regmap, DPTX_SOFT_RESET_CTRL, CONTROLLER_RESET,
FIELD_PREP(CONTROLLER_RESET, 0));
dw_dp_init(dp);
}
static void dw_dp_bridge_atomic_disable(struct drm_bridge *bridge,
struct drm_bridge_state *old_bridge_state)
{
@@ -2120,6 +2131,7 @@ static void dw_dp_bridge_atomic_disable(struct drm_bridge *bridge,
dw_dp_video_disable(dp);
dw_dp_link_disable(dp);
bitmap_zero(dp->sdp_reg_bank, SDP_REG_BANK_SIZE);
dw_dp_reset(dp);
}
static enum drm_connector_status dw_dp_detect_dpcd(struct dw_dp *dp)