ASoC: cs42l42: Handle system suspend
authorRichard Fitzgerald <rf@opensource.cirrus.com>
Fri, 21 Jan 2022 12:04:12 +0000 (12:04 +0000)
committerMark Brown <broonie@kernel.org>
Mon, 24 Jan 2022 13:31:35 +0000 (13:31 +0000)
commitf8593e88540052b3feaf1fb36f2c1c0484c9dc14
tree5c4309ed1f7ddb6e43576c5b126b69e9899fc360
parent5982b5a8ec7ddb076e774bdd0b17d74681ab0943
ASoC: cs42l42: Handle system suspend

Add system suspend functions to handle clean power-down on suspend and
restoring registers on resume.

The jack state could change during suspend. Plug->unplug and unplug->plug
are straightforward because this looks no different from any other plug
state change - there will be a plugged or unplugged interrupt pending.
The jack could be unplugged and a different type of jack plugged, and on
resume the plug state would not have changed. Setting plug_state back to
TS_TRANS (transitioning) will make the next plug interrupt after resume
run a type detection.

During system suspend any jack plug/unplug and button events will not be
reported or generate a system wakeup. If the plug state or headset type
has changed it will be reported after resume.

Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20220121120412.672284-4-rf@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/cs42l42.c
sound/soc/codecs/cs42l42.h