ASoC: codecs: wcd938x: fix volatile register range
authorSrinivas Kandagatla <srinivas.kandagatla@linaro.org>
Tue, 16 Nov 2021 11:46:21 +0000 (11:46 +0000)
committerMark Brown <broonie@kernel.org>
Tue, 16 Nov 2021 14:29:51 +0000 (14:29 +0000)
commitea157c2ba821dab789a544cd9fbe44dc07036ff8
treef6d5bd48ded1a09e43f8266dbb980394c27d1e3d
parent7e567b5ae06315ef2d70666b149962e2bb4b97af
ASoC: codecs: wcd938x: fix volatile register range

Interrupt Clear registers WCD938X_INTR_CLEAR_0 -  WCD938X_INTR_CLEAR_2
are not marked as volatile. This has resulted in a missing interrupt bug
while performing runtime pm. regcache_sync() during runtime pm resume path
will write to Interrupt clear registers with previous values which basically
clears the pending interrupt and actual interrupt handler never sees this
interrupt.

This issue is more visible with headset plug-in plug-out case compared to
headset button.

Fix this by adding the Interrupt clear registers to volatile range

Fixes: 8d78602aa87a ("ASoC: codecs: wcd938x: add basic driver")
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Link: https://lore.kernel.org/r/20211116114623.11891-2-srinivas.kandagatla@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/wcd938x.c