linux/sound/soc/meson
Christian Hewitt 6b59c53c8a
ASoC: meson: aiu: fifo-spdif: soft reset the S/PDIF datapath on start/stop
The I2S FIFO soft-resets its fast domain on start (AIU_RST_SOFT bit 0 +
AIU_I2S_SYNC read in aiu_fifo_i2s_trigger), mirroring the downstream
vendor driver's audio_out_i2s_enable(). The S/PDIF FIFO has no equivalent:
it only toggles the IEC958 DCU, so a stale datapath FIFO can be replayed,
producing the "machine gun noise" buffer underrun - on start when switching
outputs, and on stop when playback ends. The latter is audible on devices
with an always-on S/PDIF-fed DAC (e.g. the ES7144 on the WeTek Play2).

The vendor driver resets the IEC958 fast domain (AIU_RST_SOFT bit 2) on
both enable and disable (audio_hw_958_enable), and when reconfiguring
(audio_hw_958_reset clears AIU_958_DCU_FF_CTRL then resets). Do the same:
reset before enabling the DCU on start, and before disabling on stop.

Fixes: 6ae9ca9ce9 ("ASoC: meson: aiu: add i2s and spdif support")
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
Reviewed-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Link: https://patch.msgid.link/20260627131205.808800-1-christianshewitt@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2026-07-07 23:01:44 +01:00
..
aiu-acodec-ctrl.c ASoC: meson: aiu: Validate written enum values 2026-06-11 20:44:44 +01:00
aiu-codec-ctrl.c ASoC: meson: aiu: Validate written enum values 2026-06-11 20:44:44 +01:00
aiu-encoder-i2s.c ASoC: meson: aiu-encoder-i2s: fix bit clock polarity 2025-10-07 13:19:43 +01:00
aiu-encoder-spdif.c
aiu-fifo-i2s.c ASoC: meson: Constify static snd_pcm_hardware 2024-05-07 00:00:22 +09:00
aiu-fifo-spdif.c ASoC: meson: aiu: fifo-spdif: soft reset the S/PDIF datapath on start/stop 2026-07-07 23:01:44 +01:00
aiu-fifo.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
aiu-fifo.h ASoC: meson: Remove unused declartion in header file 2024-09-10 18:02:37 +01:00
aiu.c ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
aiu.h ASoC: meson: aiu: fix function pointer type mismatch 2024-02-14 00:43:30 +00:00
axg-card.c ASoC: meson: Use helper function for_each_child_of_node_scoped() 2025-06-08 23:30:49 +01:00
axg-fifo.c ASoC: meson: axg-fifo: fix irq scheduling issue with PREEMPT_RT 2024-08-08 20:34:55 +01:00
axg-fifo.h ASoC: meson: axg-fifo: use FIELD helpers 2024-02-27 18:43:22 +00:00
axg-frddr.c ASoC: meson: tdm: add sample rate support up to 768kHz 2024-06-28 13:39:33 +01:00
axg-pdm.c ASoC: meson: merge DAI call back functions into ops 2023-08-14 13:10:20 +01:00
axg-spdifin.c ASoC: meson: axg-spdifin: use max width for rate detection 2024-02-26 14:03:16 +00:00
axg-spdifout.c ASoC: meson: axg-spdifout: convert to snd_soc_dapm_xxx() 2025-11-17 00:17:55 +00:00
axg-tdm-formatter.c ASoC: meson: axg-tdm-formatter: Use guard() for mutex locks 2026-06-11 20:42:38 +01:00
axg-tdm-formatter.h
axg-tdm-interface.c ASoC: meson: axg-tdm-interface: convert to snd_soc_dapm_xxx() 2025-11-17 00:17:56 +00:00
axg-tdm.h ASoC: meson: axg-iface: set continuous rates 2024-09-30 01:10:55 +02:00
axg-tdmin.c ASoC: meson: use helper function 2023-01-31 11:05:03 +00:00
axg-tdmout.c ASoC: meson: use helper function 2023-01-31 11:05:03 +00:00
axg-toddr.c ASoC: meson: tdm: add sample rate support up to 768kHz 2024-06-28 13:39:33 +01:00
g12a-toacodec.c ASoC: meson: g12a-toacodec: convert to snd_soc_dapm_xxx() 2025-11-17 00:17:57 +00:00
g12a-tohdmitx.c ASoC: meson: g12a-tohdmitx: convert to snd_soc_dapm_xxx() 2025-11-17 00:17:58 +00:00
gx-card.c ASoC: meson: switch to use rtd->id from rtd->num 2024-11-01 14:48:11 +00:00
Kconfig ASoC: meson: Standardize ASoC menu 2025-06-24 01:01:23 +01:00
Makefile ASoC: meson: Use *-y instead of *-objs in Makefile 2024-05-08 11:39:24 +09:00
meson-card-utils.c ASoC: meson: Use helper function for_each_child_of_node_scoped() 2025-06-08 23:30:49 +01:00
meson-card.h ASoC: meson: Make meson_card_remove() return void 2023-10-23 13:29:46 +01:00
meson-codec-glue.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
meson-codec-glue.h
t9015.c ASoC: meson: t9015: convert to snd_soc_dapm_xxx() 2025-11-17 00:17:59 +00:00