]> git.baikalelectronics.ru Git - kernel.git/commit
ASoC: rt5677: Disable irq at suspend
authorBen Zhang <benzh@chromium.org>
Wed, 6 Nov 2019 01:13:32 +0000 (17:13 -0800)
committerMark Brown <broonie@kernel.org>
Mon, 11 Nov 2019 13:02:04 +0000 (13:02 +0000)
commitbd3854e60f0c0f1abd71877664ae8740a93597e9
tree91c30d7a81f0b2db0e53ae26fff35fad348d6f60
parent9b9f76ecf8f6423a3bc1c9a6d6c4562ea9301ca5
ASoC: rt5677: Disable irq at suspend

The irq is disabled at suspend to avoid running the threaded irq
handler after the codec has been powered off. At resume, codec irq is
re-enabled and the interrupt status register is checked to see if
headphone has been pluggnd/unplugged while the device is suspended.

There is still a chance that the headphone gets enabled or disabled
after the codec is suspended. disable_irq syncs the threaded irq
handler, but soc-jack's threaded irq handler schedules a delayed
work to poll gpios (for debounce). This is still OK. The codec won't
be powered back on again because all audio paths have been suspended,
and there are no force enabled supply widgets (MICBIAS1 is disabled).
The gpio status read after codec power off could be wrong, so the
gpio values are checked again after resume.

Signed-off-by: Ben Zhang <benzh@chromium.org>
Signed-off-by: Curtis Malainey <cujomalainey@chromium.org>
Link: https://lore.kernel.org/r/20191106011335.223061-8-cujomalainey@chromium.org
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/rt5677.c
sound/soc/codecs/rt5677.h