ASoC: wm8962: Add an event handler for TEMP_HP and TEMP_SPK
authorXiaolei Wang <xiaolei.wang@windriver.com>
Mon, 10 Oct 2022 09:20:14 +0000 (17:20 +0800)
committerMark Brown <broonie@kernel.org>
Thu, 13 Oct 2022 12:01:33 +0000 (13:01 +0100)
commitee1aa2ae3eaa96e70229fa61deee87ef4528ffdf
tree82c0fb897e4f13634577e022a6d39242647e45a0
parentf2635d45a750182c6d5de15e2d6b059e0c302d7e
ASoC: wm8962: Add an event handler for TEMP_HP and TEMP_SPK

In wm8962 driver, the WM8962_ADDITIONAL_CONTROL_4 is used as a volatile
register, but this register mixes a bunch of volatile status bits and a
bunch of non-volatile control bits. The dapm widgets TEMP_HP and
TEMP_SPK leverages the control bits in this register. After the wm8962
probe, the regmap will bet set to cache only mode, then a read error
like below would be triggered when trying to read the initial power
state of the dapm widgets TEMP_HP and TEMP_SPK.
  wm8962 0-001a: ASoC: error at soc_component_read_no_lock
  on wm8962.0-001a: -16

In order to fix this issue, we add event handler to actually power
up/down these widgets. With this change, we also need to explicitly
power off these widgets in the wm8962 probe since they are enabled
by default.

Signed-off-by: Xiaolei Wang <xiaolei.wang@windriver.com>
Tested-by: Adam Ford <aford173@gmail.com>
Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20221010092014.2229246-1-xiaolei.wang@windriver.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/wm8962.c