drm/bridge: analogix_dp: Fix aux not work before modeset

Change-Id: I8b00df83d5c3a17b0c73dba66d06a20c55575209
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
This commit is contained in:
Wyon Bi
2020-07-10 11:15:35 +08:00
committed by Tao Huang
parent 53a9ebd3b3
commit c49c170321

View File

@@ -288,10 +288,12 @@ void analogix_dp_set_analog_power_down(struct analogix_dp_device *dp,
mask = AUX_PD;
reg = analogix_dp_read(dp, phy_pd_addr);
if (enable)
if (enable) {
reg &= ~(DP_INC_BG | DP_EXP_BG);
reg |= mask;
else
} else {
reg &= ~mask;
}
analogix_dp_write(dp, phy_pd_addr, reg);
break;
case CH0_BLOCK:
@@ -516,6 +518,7 @@ void analogix_dp_init_aux(struct analogix_dp_device *dp)
analogix_dp_write(dp, ANALOGIX_DP_AUX_CH_DEFER_CTL, reg);
/* Enable AUX channel module */
analogix_dp_enable_sw_function(dp);
reg = analogix_dp_read(dp, ANALOGIX_DP_FUNC_EN_2);
reg &= ~AUX_FUNC_EN_N;
analogix_dp_write(dp, ANALOGIX_DP_FUNC_EN_2, reg);
@@ -1134,6 +1137,10 @@ ssize_t analogix_dp_transfer(struct analogix_dp_device *dp,
if (WARN_ON(msg->size > 16))
return -E2BIG;
reg = analogix_dp_read(dp, ANALOGIX_DP_FUNC_EN_2);
if (reg & AUX_FUNC_EN_N)
analogix_dp_init_aux(dp);
/* Clear AUX CH data buffer */
reg = BUF_CLR;
analogix_dp_write(dp, ANALOGIX_DP_BUFFER_DATA_CTL, reg);