On 10/9/2026 5:28 AM, Alexey Minnekhanov wrote:
> On 06.10.2026 16:13, Arpit Saini wrote:
>> pm_clk_suspend()/resume() only call clk_disable()/clk_enable() for the
>> AHB ("iface") clock, never clk_unprepare(), so prepare_count never
>> reaches 0. The clock (and its source) stays reported as enabled
>> through s2idle suspend even though the display stack is fully
>> suspended:
>>
>> disp_cc_mdss_ahb_clk [19200000] ->
>> disp_cc_mdss_ahb_clk_src [19200000] ->
>> bi_tcxo [19200000] -> xo-board [76800000]
>> disp_cc_mdss_ahb_clk_src [19200000] ->
>> bi_tcxo [19200000] -> xo-board [76800000]
>>
>> Calling clk_prepare_enable()/clk_disable_unprepare() directly from the
>> PHY's runtime_suspend/runtime_resume is not safe either, since it can
>> deadlock against the PHY's own PLL clocks taking the global CCF
>> prepare_lock during clk_prepare()/clk_unprepare().
>>
>> Fix this by moving clk_prepare()/clk_unprepare() out of the runtime PM
>> path. clk_enable()/clk_disable() (spinlock only) stay in
>> runtime_suspend/runtime_resume. clk_prepare()/clk_unprepare() move to
>> suspend_late/resume_early, avoiding the prepare_lock collision and
>> actually dropping prepare_count to 0. DPM_FLAG_NO_DIRECT_COMPLETE
>> ensures these hooks always run on sleep.
>>
>> Fixes: 0b3ccb76b95b ("drm/msm/dsi: Fix 14nm DSI PHY PLL Lock issue")
>> Signed-off-by: Arpit Saini <[email protected]>
>> ---
>> drivers/gpu/drm/msm/dsi/phy/dsi_phy.c | 132
>> +++++++++++++++++++++++++++++++---
>> drivers/gpu/drm/msm/dsi/phy/dsi_phy.h | 4 ++
>> 2 files changed, 127 insertions(+), 9 deletions(-)
>>
>
> Hi,
>
> is this supposed to fix the message: "mdss_ahb_clk status stuck at 'on'"
> during suspending?
>
> --
> Regards,
> Alexey Minnekhanov
Hi Alexey,
Yes it will fix the
mdss_ahb_clk status stuck at 'on' during suspend.
Thanks,
Arpit