2
0
mirror of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git synced 2025-09-04 20:19:47 +08:00
linux/sound/soc/fsl
Arun Raghavan dc78f7e591
ASoC: fsl_sai: Force a software reset when starting in consumer mode
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>
2025-06-29 22:10:26 +01:00
..
efika-audio-fabric.c ASoC: Explicitly include correct DT includes 2023-10-09 13:13:56 +01:00
eukrea-tlv320.c ASoC: fsl: use devm_snd_soc_register_card() 2024-01-22 00:06:02 +00:00
fsl_asrc_common.h ASoC: fsl_asrc_m2m: Add memory to memory function 2024-12-13 08:57:09 +00:00
fsl_asrc_dma.c ASoC: fsl_asrc_dma: get codec or cpu dai from backend 2025-04-06 23:18:18 +01:00
fsl_asrc_m2m.c ASoC: fsl_asrc_m2m: return error value in asrc_m2m_device_run() 2025-01-20 13:50:31 +00:00
fsl_asrc.c ASoC: fsl_asrc: use internal measured ratio for non-ideal ratio mode 2025-06-29 22:10:24 +01:00
fsl_asrc.h ASoC: fsl_asrc: define functions for memory to memory usage 2024-12-13 08:57:07 +00:00
fsl_aud2htx.c ASoC: fsl: Convert to RUNTIME_PM_OPS() and co 2025-03-17 10:14:39 +00:00
fsl_aud2htx.h ASoC: fsl_aud2htx: Add aud2htx module driver 2020-11-05 17:06:16 +00:00
fsl_audmix.c ASoC: fsl_audmix: register card device depends on 'dais' property 2025-03-03 13:48:38 +00:00
fsl_audmix.h ASoC: fsl_audmix: Add spin lock to protect tdms 2019-11-11 13:01:37 +00:00
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: fsl_easrc: register m2m platform device 2024-12-13 08:57:11 +00:00
fsl_easrc.h ASoC: fsl_easrc: define functions for memory to memory usage 2024-12-13 08:57:08 +00:00
fsl_esai.c ASoC: fsl: Convert to RUNTIME_PM_OPS() and co 2025-03-17 10:14:39 +00:00
fsl_esai.h
fsl_micfil.c ASoC: fsl: Convert to RUNTIME_PM_OPS() and co 2025-03-17 10:14:39 +00:00
fsl_micfil.h ASoC: fsl_micfil: Add decimation filter bypass mode support 2025-02-11 13:36:18 +00:00
fsl_mqs.c ASoC: fsl_mqs: Add i.MX943 platform support 2025-01-13 13:12:57 +00:00
fsl_qmc_audio.c ASoC: fsl: fsl_qmc_audio: Reset audio data pointers on TRIGGER_START event 2025-04-10 12:24:33 +01:00
fsl_rpmsg.c ASoC: fsl_rpmsg: Allocate a smaller buffer size for capture stream 2025-05-02 05:38:54 +09:00
fsl_rpmsg.h ASoC: fsl_rpmsg: Allocate a smaller buffer size for capture stream 2025-05-02 05:38:54 +09:00
fsl_sai.c ASoC: fsl_sai: Force a software reset when starting in consumer mode 2025-06-29 22:10:26 +01:00
fsl_sai.h ASoC: fsl_sai: separate set_tdm_slot() for tx and rx 2025-04-06 23:23:29 +01:00
fsl_spdif.c ASoC: fsl_spdif: change IFACE_PCM to IFACE_MIXER 2024-12-11 18:45:27 +00:00
fsl_spdif.h ASoC: fsl_spdif: Add support for 22.05 kHz sample rate 2023-07-19 18:47:18 +01:00
fsl_ssi_dbg.c ASoC: fsl: fsl_ssi_dbg: remove spurious kernel-doc comment start 2020-07-03 16:09:24 +01:00
fsl_ssi.c ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
fsl_ssi.h ASoC: fsl: no need to check return value of debugfs_create functions 2019-06-14 16:37:48 +01:00
fsl_utils.c ASoC: fsl_utils: Add function to constrain rates 2024-12-09 13:11:09 +00:00
fsl_utils.h ASoC: fsl_utils: Add function to constrain rates 2024-12-09 13:11:09 +00:00
fsl_xcvr.c ASoC: fsl_xcvr: update platform driver name 2025-05-16 13:18:16 +02:00
fsl_xcvr.h ASoC: fsl_xcvr: Use regmap for PHY and PLL registers 2024-12-02 00:30:19 +00:00
fsl-asoc-card.c ASoC: fsl: use inclusive language for SND_SOC_DAIFMT_CBx_CFx 2025-03-03 12:57:18 +00:00
imx-audio-rpmsg.c ASoC: fsl: Let imx-audio-rpmsg register platform device for card 2024-03-25 00:32:50 +00:00
imx-audmix.c ASoC: fsl: Rename stream name of SAI DAI driver 2025-02-24 18:35:53 +00:00
imx-audmux.c ASoC: Use of_property_present() for non-boolean properties 2025-01-09 18:50:14 +00:00
imx-audmux.h
imx-card.c ASoC: fsl: don't set link->platform if not needed 2025-04-25 13:19:59 +01:00
imx-es8328.c ASoC: fsl: Remove unused of_gpio.h 2024-06-10 12:48:37 +01:00
imx-hdmi.c ASoC: fsl: Use snd_soc_substream_to_rtd() for accessing private_data 2024-05-06 23:59:51 +09:00
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: Switch to use hrtimer_setup() 2025-02-18 11:19:07 +01:00
imx-pcm-rpmsg.c treewide, timers: Rename from_timer() to timer_container_of() 2025-06-08 09:07:37 +02:00
imx-pcm-rpmsg.h ASoC: imx-pcm-rpmsg: Fix warning of incorrect type in assignment 2021-05-10 13:05:38 +01:00
imx-pcm.h ASoC: fsl: Remove unused inline function imx_pcm_dma_params_init_data() 2022-09-23 13:56:25 +01:00
imx-rpmsg.c ASoC: Use of_property_present() for non-boolean properties 2025-01-09 18:50:14 +00:00
imx-sgtl5000.c ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
imx-ssi.h dmaengine: imx: Move header to include/dma/ 2022-04-19 12:06:18 +01:00
Kconfig ASoC: fsl_asrc_m2m: select CONFIG_DMA_SHARED_BUFFER 2025-01-22 14:09:26 +00: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_asrc_m2m: Add memory to memory function 2024-12-13 08:57:09 +00:00
mpc5200_dma.c ASoC: fsl: mpc5200_dma.c: Fix warning of Function parameter or member not described 2023-10-10 12:39:37 +01:00
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