linux-yocto/sound/soc/fsl
Arun Raghavan 199af064ba ASoC: fsl_sai: Force a software reset when starting in consumer mode
commit dc78f7e591 upstream.

On an imx8mm platform with an external clock provider, when running the
receiver (arecord) and triggering an xrun with xrun_injection, we see a
channel swap/offset. This happens sometimes when running only the
receiver, but occurs reliably if a transmitter (aplay) is also
concurrently running.

It seems that the SAI loses track of frame sync during the trigger stop
-> trigger start cycle that occurs during an xrun. Doing just a FIFO
reset in this case does not suffice, and only a software reset seems to
get it back on track.

This looks like the same h/w bug that is already handled for the
producer case, so we now do the reset unconditionally on config disable.

Signed-off-by: Arun Raghavan <arun@asymptotic.io>
Reported-by: Pieterjan Camerlynck <p.camerlynck@televic.com>
Fixes: 3e3f8bd569 ("ASoC: fsl_sai: fix no frame clk in master mode")
Cc: stable@vger.kernel.org
Reviewed-by: Fabio Estevam <festevam@gmail.com>
Link: https://patch.msgid.link/20250626130858.163825-1-arun@arunraghavan.net
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2025-07-17 18:37:09 +02:00
..
efika-audio-fabric.c
eukrea-tlv320.c
fsl_asrc_common.h
fsl_asrc_dma.c ASoC: fsl_asrc_dma: get codec or cpu dai from backend 2025-05-02 07:59:26 +02:00
fsl_asrc.c ASoC: fsl_asrc: use internal measured ratio for non-ideal ratio mode 2025-07-17 18:37:01 +02:00
fsl_asrc.h
fsl_aud2htx.c ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
fsl_aud2htx.h
fsl_audmix.c ASoC: fsl_audmix: register card device depends on 'dais' property 2025-04-20 10:15:15 +02:00
fsl_audmix.h
fsl_dma.c ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
fsl_dma.h
fsl_easrc.c ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
fsl_easrc.h
fsl_esai.c ASoC: fsl_esai: change dev_warn to dev_dbg in irq handler 2024-10-11 12:06:49 +01:00
fsl_esai.h
fsl_micfil.c ASoC: fsl_micfil: Enable default case in micfil_set_quality() 2025-02-27 04:30:22 -08:00
fsl_micfil.h ASoC: fsl_micfil: Expand the range of FIFO watermark mask 2024-07-29 13:36:13 +01:00
fsl_mqs.c ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
fsl_qmc_audio.c ASoC: fsl: fsl_qmc_audio: Reset audio data pointers on TRIGGER_START event 2025-04-25 10:47:49 +02:00
fsl_rpmsg.c ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
fsl_rpmsg.h
fsl_sai.c ASoC: fsl_sai: Force a software reset when starting in consumer mode 2025-07-17 18:37:09 +02:00
fsl_sai.h ASoC: fsl_sai: Enable 'FIFO continue on error' FCONT bit 2024-09-30 23:30:32 +01:00
fsl_spdif.c ASoC: fsl_spdif: change IFACE_PCM to IFACE_MIXER 2024-12-19 18:13:18 +01:00
fsl_spdif.h
fsl_ssi_dbg.c
fsl_ssi.c ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
fsl_ssi.h
fsl_utils.c
fsl_utils.h
fsl_xcvr.c ASoC: fsl_xcvr: change IFACE_PCM to IFACE_MIXER 2024-12-19 18:13:17 +01:00
fsl_xcvr.h ASoC: fsl_xcvr: Add support for i.MX95 platform 2024-06-03 17:04:40 +01:00
fsl-asoc-card.c ASoC: fsl-asoc-card: Add missing handling of {hp,mic}-dt-gpios 2024-12-05 14:01:40 +01:00
imx-audio-rpmsg.c
imx-audmix.c ASoC: fsl: Rename stream name of SAI DAI driver 2025-03-07 18:25:30 +01:00
imx-audmux.c ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
imx-audmux.h
imx-card.c ASoC: imx-card: Adjust over allocation of memory in imx_card_parse_of() 2025-05-29 11:03:09 +02:00
imx-es8328.c ASoC: fsl: Remove unused of_gpio.h 2024-06-10 12:48:37 +01:00
imx-hdmi.c
imx-pcm-dma.c ASoC: fsl: add missing MODULE_DESCRIPTION() macro 2024-06-03 15:59:20 +01:00
imx-pcm-fiq.c ASoC: fsl: imx-pcm-fiq: add missing MODULE_DESCRIPTION() macro 2024-06-17 13:08:28 +01:00
imx-pcm-rpmsg.c ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
imx-pcm-rpmsg.h
imx-pcm.h
imx-rpmsg.c ASoC: fsl: Remove unused of_gpio.h 2024-06-10 12:48:37 +01:00
imx-sgtl5000.c ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
imx-ssi.h
Kconfig firmware: arm_scmi: Fix i.MX build dependency 2024-12-27 14:01:57 +01:00
lpc3xxx-i2s.c ASoC: fsl: lpc3xxx: Make some symbols static 2024-08-02 14:05:32 +01:00
lpc3xxx-i2s.h ASoC: fsl: lpc3xxx-i2s: Include bitfield.h for FIELD_PREP 2024-07-01 20:07:28 +01:00
lpc3xxx-pcm.c ASoC: fsl: lpc3xxx: Make some symbols static 2024-08-02 14:05:32 +01:00
Makefile ASoC: fsl-asoc-card: merge spdif support from imx-spdif.c 2024-07-08 16:09:38 +01:00
mpc5200_dma.c
mpc5200_dma.h
mpc5200_psc_ac97.c ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
mpc5200_psc_i2s.c ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
p1022_ds.c ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
p1022_rdk.c ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
pcm030-audio-fabric.c ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00