Re: [PATCH] ASoC: cs35l41: Restore register state after system sleep
From: Rhodes, David
Date: Thu Jul 23 2026 - 13:47:42 EST
On 7/21/26 3:08 PM, Nícolas F. R. A. Prado wrote:
Also, since on my system the DSP is not used, the early return in the
runtime suspend/resume `if (!cs35l41->dsp.preloaded || !cs35l41-
dsp.cs_dsp.running)` means that the runtime suspend/resume callbacksare no-ops on my system.
The Steam Deck LCD should be using the DSP firmware. Valve distributed this initially but it was added to linux-firmware early last year.
See 'cirrus/cs35l41-dsp1-spk-prot-vlv1776.bin'.
Nonetheless, I tried simply marking the regcache dirty and syncing it
upon system resume, mimicking the runtime suspend/resume, as follows:
Given that my patch that fully reinitializes the hardware works, while
this doesn't, I'm inclined to believe that the chip loses power during
S4 indeed, at which point just restoring the register state is no
longer enough. But perhaps you could shed more light into this since
you're much more familiar with this hardware than I am.
Thanks,
Nícolas
Thank you for looking into this. I agree with your conclusion that the chip is fully losing power. With that in mind, your implementation makes sense.
Given the above comments about disabling the DSP on your system, I have to ask: Are you working on a 'standard' Steam Deck, or have you made other changes to the power management that aren't present on a typical device? Has this always been an issue affecting the Steam Deck LCD?
The Steam Deck is the primary use for this ASoC driver. Valve is regularly updating the kernel in their OS releases, so I don't want to make any changes that affect the out-of-box behavior. Of course if you are in touch with Valve and submitting this on their behalf, no worries and I'd love to see an Ack from someone on their side.
Thanks,
David