Quoting Kuogee Hsieh (2021-06-02 09:43:05) > Normal DP suspend operation contains two steps, display off followed > by dp suspend, to complete system wide suspending cycle if display is > up at that time. In this case, DP phy will be powered off at display > off. However there is an exception case that depending on the timing > of dongle plug in during system wide suspending, sometimes display off > procedure may be skipped and dp suspend was called directly. In this > case, dp phy is stay at powered on (phy->power_count = 1) so that at > next resume dp driver crash at main link clock enable due to phy is > not physically powered on. This patch will call dp_ctrl_off_link_stream() > to tear down main link and power off phy at dp_pm_suspend() if main link > had been brought up. > > Changes in V2: > -- stashed changes into dp_ctrl.c > -- add is_phy_on to monitor phy state > > Changes in V3: > -- delete is_phy_on > -- call dp_ctrl_off_link_stream() from dp_pm_suspend() > > Changes in V4: > -- delete changes made at dp_power.c > -- move main link status checking to dp_pm_suspend > > Fixes: 0114f31a2903 ("drm/msm/dp: handle irq_hpd with sink_count = 0 correctly) > Signed-off-by: Kuogee Hsieh <khsieh@xxxxxxxxxxxxxx> > --- Ok, this seems to work and is nice and small Tested-by: Stephen Boyd <swboyd@xxxxxxxxxxxx> Reviewed-by: Stephen Boyd <swboyd@xxxxxxxxxxxx>