On 7/3/23 17:18, Mukunda,Vijendar wrote:
On 03/07/23 20:15, Pierre-Louis Bossart wrote:
On 7/3/23 16:46, Mukunda,Vijendar wrote:
On 03/07/23 19:50, Pierre-Louis Bossart wrote:
On 7/3/23 15:31, Mukunda,Vijendar wrote:
On 03/07/23 18:30, Shuming [范書銘] wrote:
>>>> During ClockStop Mode0, peripheral interrupts are disabled. >>> I can see that the interrupts are disabled in >>> rt5682_dev_system_suspend(), which is NOT a mode where the clock stop >>> is used... I don't think this commit message is correct. >>> >>> The IMPL_DEF interrupt which is used for jack detection is not >>> disabled at all during any clock stop mode, and it shouldn't >>> otherwise that would break the jack detection. >> You are right. The commit message is wrong and not clear. >> The situation is that the manager driver uses the clock stop mode0 to do > system suspension. > > No it does not. The clock stop is ONLY used for pm_runtime, never for system > suspend. We cannot go to system suspend with the link in clock-stop mode, > that will create lots of issues, that's why we perform a full pm_runtime resume > in the .prepare stage. OK, I got your point. Thanks. However, this issue reported by AMD. The AMD platform validated system level pm and runtime pm ops with the different modes.
Hi Vijendar, Do you have any comments?
On AMD platforms, we are supporting two power modes.
- Bus reset mode
- Clock Stop Mode
In Bus reset mode, bus will re-enumerate the peripheral devices whereas in ClockStop Mode, applying ClockStop Mode0 in both pm ops (runtime pm ops and system level pm ops).
Currently, SDCA interrupts are disabled on peripheral side, when system level suspend is invoked. For ClockStop mode SDW manager is not receiving any jack alert when SoundWire manager device is in D3 state.
That was precisely the point of clock stop mode: a peripheral can restart the system even when it's in lower-power mode.
If there's no means to let a peripheral restart, the only benefit is maybe to skip the enumeration time. That's not what the spec intended....
As per our understanding, you are pointing to ClockStopMode1. ClockStopMode1 requires re-enumeration as peripherals move to unattached state. We have cross-checked ClockStopMode0 description in spec. It doesn't specify about peripheral device state as Unattached. We are referring here "ClockStopMode0" only.
No I was describing the difference between the 'Bus reset mode' and the 'clock stop mode' on the manager side.
There's also nothing in the spec preventing the manager from doing a reset at any time, including after exiting the clock mode0 stop.
Partly I agree. As per our understanding, If any of the peripherals lost's sync, and re-enumeration is required. If continuous parity errors/bus clash conditions are reported over the link, Sdw Manager bus reset sequence should be invoked. This is a different scenario. Both the scenarios are asynchronous. Going with Spec definition for ClockStopMode0, as it's Imp defined for SoundWire Manager, want to stick to Clockstop when D3 call is invoked and restore the clock when D0 call is invoked for our platforms.
The problem is that 'D3' can be used for two separate scenarios - S0/D3: that's pm_runtime suspend - Sx/D4: that's system suspend It's very unclear what the benefit of clock stop mode would be for the latter case.