drm/bridge: analogix_dp: Add loader protect for psr function

Change-Id: Iffb651d3dbb11797b82ed2679e990b8c9610b200
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
This commit is contained in:
Wyon Bi
2020-07-09 16:05:27 +08:00
committed by Tao Huang
parent 55c7a54911
commit 5beeda4a26
2 changed files with 23 additions and 2 deletions

View File

@@ -1154,13 +1154,30 @@ analogix_dp_best_encoder(struct drm_connector *connector)
static int analogix_dp_loader_protect(struct drm_connector *connector, bool on)
{
struct analogix_dp_device *dp = to_dp(connector);
int ret;
if (dp->plat_data->panel)
drm_panel_loader_protect(dp->plat_data->panel, on);
if (on)
if (on) {
pm_runtime_get_sync(dp->dev);
else
ret = analogix_dp_detect_sink_psr(dp);
if (ret)
return ret;
/* Check whether panel supports fast training */
ret = analogix_dp_fast_link_train_detection(dp);
if (ret)
dp->psr_enable = false;
if (dp->psr_enable) {
ret = analogix_dp_enable_sink_psr(dp);
if (ret)
return ret;
}
} else {
pm_runtime_put(dp->dev);
}
return 0;
}

View File

@@ -299,7 +299,11 @@ static int rockchip_dp_drm_encoder_loader_protect(struct drm_encoder *encoder,
}
clk_prepare_enable(dp->pclk);
rockchip_drm_psr_inhibit_put(&dp->encoder);
} else {
rockchip_drm_psr_inhibit_get(&dp->encoder);
clk_disable_unprepare(dp->pclk);
if (dp->vccio_supply)