On Sat, 7 Oct 2023 at 01:55, Kuogee Hsieh <quic_khsieh@xxxxxxxxxxx> wrote: > > Currently DP driver is executed independent of PM runtime framework. > This leads msm eDP panel can not being detected by edp_panel driver > during generic_edp_panel_probe() due to AUX DPCD read failed at > edp panel driver. Incorporate PM runtime framework into DP driver so > that host controller's power and clocks are enable/disable through > PM runtime mechanism. Once PM runtime framework is incorporated into > DP driver, waking up device from power up path is not necessary. Hence > remove it. > > After incorporating pm_runtime framework into eDP/DP driver, > dp_pm_suspend() to handle power off both DP phy and controller during > suspend and dp_pm_resume() to handle power on both DP phy and controller > during resume are not necessary. Therefore both dp_pm_suspend() and > dp_pm_resume() are dropped and replace with dp_pm_runtime_suspend() and > dp_pm_runtime_resume() respectively. > > Changes in v7: > -- add comments to dp_pm_runtime_resume() > -- add comments to dp_bridge_hpd_enable() > -- delete dp->hpd_state = ST_DISCONNECTED from dp_bridge_hpd_notify() > > Changes in v6: > -- delete dp_power_client_deinit(dp->power); > -- remove if (!dp->dp_display.is_edp) condition checkout at plug_handle() > -- remove if (!dp->dp_display.is_edp) condition checkout at unplug_handle() > -- add IRQF_NO_AUTOEN to devm_request_irq() > -- add enable_irq() and disable_irq() to pm_runtime_resume()/suspend() > -- del dp->hpd_state = ST_DISCONNECTED from dp_bridge_hpd_disable() > > Changes in v5: > -- remove pm_runtime_put_autosuspend feature, use pm_runtime_put_sync() > -- squash add pm_runtime_force_suspend()/resume() patch into this patch > > Changes in v4: > -- reworded commit text to explain why pm_framework is required for > edp panel > -- reworded commit text to explain autosuspend is choiced > -- delete EV_POWER_PM_GET and PM_EV_POWER_PUT from changes #3 > -- delete dp_display_pm_get() and dp_display_pm_Put() from changes #3 > -- return value from pm_runtime_resume_and_get() directly > -- check return value of devm_pm_runtime_enable() > -- delete pm_runtime_xxx from dp_display_remove() > -- drop dp_display_host_init() from EV_HPD_INIT_SETUP > -- drop both dp_pm_prepare() and dp_pm_compete() from this change > -- delete ST_SUSPENDED state > -- rewording commit text to add more details regrading the purpose > of this change > > Changes in v3: > -- incorporate removing pm_runtime_xx() from dp_pwer.c to this patch > -- use pm_runtime_resume_and_get() instead of pm_runtime_get() > -- error checking pm_runtime_resume_and_get() return value > -- add EV_POWER_PM_GET and PM_EV_POWER_PUT to handle HPD_GPIO case > -- replace dp_pm_suspend() with pm_runtime_force_suspend() > -- replace dp_pm_resume() with pm_runtime_force_resume() > > Signed-off-by: Kuogee Hsieh <quic_khsieh@xxxxxxxxxxx> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx> > --- > drivers/gpu/drm/msm/dp/dp_aux.c | 5 + > drivers/gpu/drm/msm/dp/dp_display.c | 177 ++++++++++++++---------------------- > drivers/gpu/drm/msm/dp/dp_power.c | 16 ---- > drivers/gpu/drm/msm/dp/dp_power.h | 11 --- > 4 files changed, 72 insertions(+), 137 deletions(-) -- With best wishes Dmitry