There is a report of a single laptop which uses CS35L41 HDA having an issue with System Suspend. This particular laptop uses S3 (Deep) Sleep. The reported issue states that when the laptop resumes from a system suspend, audio no longer works.
The root cause of this issue is due to the CS35L41 being returned to us in an unexpected state after a suspend/resume cycle. When the driver resumes, it expects the parts to have been reset, which leads to issues with audio and firmware loading.
To prevent this issue, and the possibility of similar issues, patches 2-5 force the driver to reset during probe, system suspend, and system resume, which ensures that the part is always in the correct state. Patches 6-8 are improvements in the suspend and firmware loading code, which makes it easier to detect issues in the future, as well as simplifiying the suspend code.
Patch 1 is a fix for an incorrect configuration for the HP Zbook Fury 17, which is the laptop which had the original issue.
Stefan Binding (8): ALSA: hda: cs35l41: Use reset label to get GPIO for HP Zbook Fury 17 G9 ALSA: hda: cs35l41: Assert reset before system suspend ALSA: hda: cs35l41: Assert Reset prior to de-asserting in probe and system resume ALSA: hda: cs35l41: Run boot process during resume callbacks ALSA: hda: cs35l41: Force a software reset after hardware reset ALSA: hda: cs35l41: Do not unload firmware before reset in system suspend ALSA: hda: cs35l41: Check CSPL state after loading firmware ASoC: cs35l41: Detect CSPL errors when sending CSPL commands
include/sound/cs35l41.h | 3 + sound/pci/hda/cs35l41_hda.c | 170 +++++++++++++++++---------- sound/pci/hda/cs35l41_hda_property.c | 11 +- sound/soc/codecs/cs35l41-lib.c | 6 + 4 files changed, 124 insertions(+), 66 deletions(-)