linux/sound/soc
Alexey Klimov 107a5c853e
ASoC: codecs: wcd937x: relax the AUX PDM watchdog
On a system with wcd937x, rxmacro and Qualcomm audio DSP, which is pretty
common set of devices on Qualcomm platforms, and due to the order of how
DAPM widgets are powered on (they are sorted), there is a small time window
when wcd937x chip is online and expects the flow of incoming data but
rxmacro is not yet online. When wcd937x is programmed to receive data
via AUX port then its AUX PDM watchdog is enabled in
wcd937x_codec_enable_aux_pa(). If due to some reasons the rxmacro and
soundwire machinery are delayed to start streaming data, then there is
a chance for this AUX PDM watchdog to reset the wcd937x codec. Such event
is not logged as a message and only wcd937x IRQ counter is increased
however there could be a lot of other reasons for that IRQ.
There is a similar opportunity for such delay during DAPM widgets power
down sequence.

If wcd937x codec reset happens on the start of the playback, then there
will be no sound and if such reset happens at the end of a playback then
it may generate additional clicks and pops noises.

On qrb4210 RB2 board without any debugging bits the wcd937x resets are
sometimes observed at the end of a playback though not always.
With some debugging messages or with some tracing enabled the AUX PDM
watchdog resets the wcd937x codec at the start of a playback and there
is no sound output at all.

In this patch:
 - TIMEOUT_SEL bit in PDM_WD_CTL2 register is set to increase the watchdog
reset delay to 100ms which eliminates the AUX PDM watchdog IRQs on
qrb4210 RB2 board completely and decreases the number of unwanted clicks
noises;

 - HOLD_OFF bit postpones triggering such watchdog IRQ till wcd937x codec
reset which usually happens at the end of a playback. This allows to
actually output some sound in case of debugging.

Cc: Adam Skladowski <a39.skl@gmail.com>
Cc: Mohammad Rafi Shaik <quic_mohs@quicinc.com>
Cc: Prasad Kumpatla <quic_pkumpatl@quicinc.com>
Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Signed-off-by: Alexey Klimov <alexey.klimov@linaro.org>
Link: https://patch.msgid.link/20241022033132.787416-3-alexey.klimov@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
2024-10-29 14:11:00 +00:00
..
adi ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
amd ASoC: amd: yc: Fix non-functional mic on ASUS E1404FA 2024-10-17 12:11:31 +01:00
apple ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
atmel ASoC: atmel: mchp-pdmc: Skip ALSA restoration if substream runtime is uninitialized 2024-09-24 13:34:28 +02:00
au1x ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
bcm ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
cirrus soc: convert ep93xx to devicetree 2024-09-26 12:00:25 -07:00
codecs ASoC: codecs: wcd937x: relax the AUX PDM watchdog 2024-10-29 14:11:00 +00:00
dwc ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
fsl ASoC: fsl_micfil: Add sample rate constraint 2024-10-22 17:36:30 +01:00
generic ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
google ASoC: google: fix module autoloading 2024-08-26 15:52:07 +01:00
hisilicon
img ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
intel ASoC: Intel: sst: Fix used of uninitialized ctx to log an error 2024-10-28 16:44:52 +00:00
jz4740 ASoC: jz4740: Use *-y instead of *-objs in Makefile 2024-05-08 11:39:21 +09:00
kirkwood ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
loongson ASoC: loongson: Fix component check failed on FDT systems 2024-10-10 12:14:59 +01:00
mediatek ASoC: Updates for v6.12 2024-09-14 09:09:59 +02:00
meson Merge branch 'for-linus' into for-next 2024-09-14 10:16:12 +02:00
mxs ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
pxa ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
qcom ASoC: qcom: sc7280: Fix missing Soundwire runtime stream alloc 2024-10-22 21:00:38 +01:00
rockchip ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
samsung ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
sdw_utils ASoC: sdw_utils/intel: move soundwire endpoint parsing helper functions 2024-09-13 15:11:32 +01:00
sh ASoC: rsnd: Fix probe failure on HiHope boards due to endpoint parsing 2024-10-11 12:06:49 +01:00
sof ASoC: SOF: Intel: hda: Always clean up link DMA during stop 2024-10-17 12:11:20 +01:00
spear ASoC: spear: Use *-y instead of *-objs in Makefile 2024-05-08 11:39:31 +09:00
sprd ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
starfive ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
sti ASoC: sti: add missing probe entry for player and reader 2024-07-29 13:36:56 +01:00
stm ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
sunxi ASoC: Updates for v6.12 2024-09-14 09:09:59 +02:00
tegra ASoC: Updates for v6.12 2024-09-14 09:09:59 +02:00
ti ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
uniphier ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
ux500 ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
xilinx ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
xtensa ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
Kconfig ASoC: intel/sdw-utils: move soundwire machine driver soc ops 2024-08-01 12:43:57 +01:00
Makefile ASoC: intel/sdw-utils: move soundwire machine driver soc ops 2024-08-01 12:43:57 +01:00
soc-ac97.c ASoC: soc-ac97: Fix the incorrect description 2024-09-10 12:40:24 +01:00
soc-acpi.c
soc-card-test.c ASoC: Drop snd_soc_*_get_kcontrol_locked() 2024-08-09 14:24:55 +02:00
soc-card.c ASoC: Drop snd_soc_*_get_kcontrol_locked() 2024-08-09 14:24:55 +02:00
soc-component.c ASoC: Drop snd_soc_*_get_kcontrol_locked() 2024-08-09 14:24:55 +02:00
soc-compress.c ASoC: soc-compress: Fix and add DPCM locking 2024-03-18 14:41:51 +00:00
soc-core.c ASoC: Use of_property_read_bool() 2024-08-01 12:51:45 +01:00
soc-dai.c ASoC: remove snd_soc_dai_link_set_capabilities() 2024-08-22 13:36:46 +01:00
soc-dapm.c ASoC: dapm: fix bounds checker error in dapm_widget_list_create 2024-10-28 23:30:33 +00:00
soc-devres.c
soc-generic-dmaengine-pcm.c ALSA: dmaengine: Synchronize dma channel after drop() 2024-06-11 17:13:31 +01:00
soc-jack.c ASoC: soc-jack: Get rid of legacy GPIO support 2024-03-26 17:13:45 +00:00
soc-link.c
soc-ops.c ASoC: ops: Simplify with cleanup.h 2024-07-08 12:50:02 +01:00
soc-pcm.c ASoC: soc-pcm: makes snd_soc_dpcm_can_be_xxx() local function 2024-08-28 13:02:20 +01:00
soc-topology-test.c ASoC: topology-test: Convert comma to semicolon 2024-09-05 16:07:06 +01:00
soc-topology.c ASoC: topology: Fix incorrect addressing assignments 2024-09-19 13:01:26 +02:00
soc-utils-test.c
soc-utils.c ASoC: soc-utils: allow sample rate up to 768kHz for the dummy dai 2024-06-28 13:39:29 +01:00