]> git.baikalelectronics.ru Git - kernel.git/commit
ASoC: codecs: wcd938x: fix volatile register range
authorSrinivas Kandagatla <srinivas.kandagatla@linaro.org>
Tue, 16 Nov 2021 11:46:21 +0000 (11:46 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 1 Dec 2021 08:04:46 +0000 (09:04 +0100)
commit4db4a25e3594b0ff1f2efd79a1a105f01dc71b79
treeb51e46f2e74390cd7d540ab9ac74fba06b5f36d4
parent01d8238f80fc2f9c4786ae49f02318c3bf3e4dea
ASoC: codecs: wcd938x: fix volatile register range

[ Upstream commit c2874a2e9123f52c9f71f06dff3b9b043690769e ]

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: eadbc505bb1e ("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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
sound/soc/codecs/wcd938x.c