Hi, On 2018-01-30 21:28, Thierry Escande wrote: > From: zain wang <wzz at rock-chips.com> > > The bridge does not need to be powered in analogix_dp_bind(), so > remove the calls to pm_runtime_get()/phy_power_on()/analogix_dp_init_dp() > as well as their power-off counterparts. > > Cc: St?phane Marchesin <marcheu at chromium.org> > Signed-off-by: zain wang <wzz at rock-chips.com> > Signed-off-by: Caesar Wang <wxt at rock-chips.com> > [the patch originally just removed the power_on portion, seanpaul removed > the power off code as well as improved the commit message] > Signed-off-by: Sean Paul <seanpaul at chromium.org> > Signed-off-by: Thierry Escande <thierry.escande at collabora.com> > --- > drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 10 ---------- > 1 file changed, 10 deletions(-) > > diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c > index cb5e18d6ba04..1477ea9ba85d 100644 > --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c > +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c > @@ -1382,11 +1382,6 @@ analogix_dp_bind(struct device *dev, struct drm_device *drm_dev, > > pm_runtime_enable(dev); > > - pm_runtime_get_sync(dev); > - phy_power_on(dp->phy); > - > - analogix_dp_init_dp(dp); > - > ret = devm_request_threaded_irq(&pdev->dev, dp->irq, > analogix_dp_hardirq, > analogix_dp_irq_thread, > @@ -1414,15 +1409,10 @@ analogix_dp_bind(struct device *dev, struct drm_device *drm_dev, > goto err_disable_pm_runtime; > } > > - phy_power_off(dp->phy); > - pm_runtime_put(dev); > - > return dp; > > err_disable_pm_runtime: > > - phy_power_off(dp->phy); > - pm_runtime_put(dev); > pm_runtime_disable(dev); > > return ERR_PTR(ret); Once this change is applied, there is also no need to keep dp->clock prepared & enabled between bind/unbind. analogix_dp_set_bridge() and analogix_dp_bridge_disable() properly manage dp->clock on their own. Best regards -- Marek Szyprowski, PhD Samsung R&D Institute Poland