linux-stable/sound/soc
Mark Brown c5782bb546
ASoC: meson: tdm fixes
Merge series from Jerome Brunet <jbrunet@baylibre.com>:

This patchset fixes 2 problems on TDM which both find a solution
by properly implementing the .trigger() callback for the TDM backend.

ATM, enabling the TDM formatters is done by the .prepare() callback
because handling the formatter is slow due to necessary calls to CCF.

The first problem affects the TDMIN. Because .prepare() is called on DPCM
backend first, the formatter are started before the FIFOs and this may
cause a random channel shifts if the TDMIN use multiple lanes with more
than 2 slots per lanes. Using trigger() allows to set the FE/BE order,
solving the problem.

There has already been an attempt to fix this 3y ago [1] and reverted [2]
It triggered a 'sleep in irq' error on the period IRQ. The solution is
to just use the bottom half of threaded IRQ. This is patch #1. Patch #2
and #3 remain mostly the same as 3y ago.

For TDMOUT, the problem is on pause. ATM pause only stops the FIFO and
the TDMOUT just starves. When it does, it will actually repeat the last
sample continuously. Depending on the platform, if there is no high-pass
filter on the analog path, this may translate to a constant position of
the speaker membrane. There is no audible glitch but it may damage the
speaker coil.

Properly stopping the TDMOUT in pause solves the problem. There is
behaviour change associated with that fix. Clocks used to be continuous
on pause because of the problem above. They will now be gated on pause by
default, as they should. The last change introduce the proper support for
continuous clocks, if needed.

[1]: https://lore.kernel.org/linux-amlogic/20211020114217.133153-1-jbrunet@baylibre.com
[2]: https://lore.kernel.org/linux-amlogic/20220421155725.2589089-1-narmstrong@baylibre.com
2024-04-30 23:36:23 +09:00
..
adi
amd ASoC: acp: Support microphone from device Acer 315-24p 2024-04-09 16:40:47 +01:00
apple
atmel ASoC: atmel: use devm_snd_soc_register_card() 2024-01-22 00:06:03 +00:00
au1x
bcm
cirrus ASoC: cirrus: edb93xx: Drop legacy include 2023-12-01 16:59:22 +00:00
codecs ASoC: cs35l56: fix usages of device_get_named_child_node() 2024-04-29 23:48:56 +09:00
dwc
fsl Linux 6.8 2024-03-13 18:22:15 +00:00
generic ASoC: audio-graph-card2: fix index check on graph_parse_node_multi_nm() 2024-01-12 14:13:53 +00:00
google
hisilicon ASoC: hisilicon: Drop GPIO include 2023-12-18 14:03:29 +00:00
img
intel ASoC: Intel: avs: Set name of control as in topology 2024-04-19 09:42:03 +09:00
jz4740
kirkwood
loongson
mediatek ASoC: Fixes for v6.8 2024-01-16 17:37:17 +01:00
meson ASoC: meson: tdm fixes 2024-04-30 23:36:23 +09:00
mxs
pxa ASoC: Updates for v6.9 2024-03-11 16:18:47 +01:00
qcom Linux 6.8 2024-03-13 18:22:15 +00:00
rockchip ASoC: rockchip: i2s-tdm: Fix inaccurate sampling rates 2024-03-12 16:03:03 +00:00
samsung ASoC: samsung: odroid: don't need DUMMY Platform 2023-12-19 13:23:43 +00:00
sh Linux 6.8 2024-03-13 18:22:15 +00:00
sof ASoC: SOF: Core: Handle error returned by sof_select_ipc_and_paths 2024-04-17 23:01:01 +09:00
spear
sprd ASoC: sprd: Simplify memory allocation in sprd_platform_compr_dma_config() 2023-12-19 14:02:50 +00:00
starfive
sti ASoC: sti-uniperf: Use default pcm_config instead 2023-11-13 01:26:07 +00:00
stm
sunxi ASoC: sunxi: sun4i-spdif: Add support for Allwinner H616 2024-01-29 16:55:18 +00:00
tegra ASoC: tegra: Fix DSPK 16-bit playback 2024-04-08 13:38:46 +01:00
ti ASoC: ti: davinci-mcasp: Fix race condition during probe 2024-04-19 09:42:04 +09:00
uniphier
ux500
xilinx
xtensa
Kconfig
Makefile
soc-ac97.c
soc-acpi.c
soc-card.c ASoC: soc-card: Fix missing locking in snd_soc_card_get_kcontrol() 2024-02-23 13:40:06 +00:00
soc-component.c
soc-compress.c ASoC: soc-compress: Fix and add DPCM locking 2024-03-18 14:41:51 +00:00
soc-core.c ASoC: soc-core.c: Skip dummy codec when adding platforms 2024-03-12 16:35:04 +00:00
soc-dai.c
soc-dapm.c ASoC: trace: add event to snd_soc_dapm trace events 2024-03-06 14:03:27 +00:00
soc-devres.c
soc-generic-dmaengine-pcm.c
soc-jack.c
soc-link.c
soc-ops.c ASoC: ops: Fix wraparound for mask in snd_soc_get_volsw 2024-03-28 22:01:43 +00:00
soc-pcm.c ASoC: Updates for v6.8 2024-01-08 08:18:02 +01:00
soc-topology-test.c ASoC: topology: Replace fake root_device with kunit_device in tests 2023-12-18 13:28:08 -07:00
soc-topology.c
soc-utils-test.c
soc-utils.c