linux/sound/soc/ti
Sen Wang 9db327083f
ASoC: ti: davinci-mcasp: Add asynchronous mode support
McASP has dedicated clock & frame sync registers for both transmit
and receive. Currently McASP driver only supports synchronous behavior and
couples both TX & RX settings.

Add logic that enables asynchronous mode via ti,async-mode property. In
async mode, playback & record can be done simultaneously with different
audio configurations (tdm slots, tdm width, audio bit depth).

Note the ability to have different tx/rx DSP formats (i2s, dsp_a, etc.),
while possible in hardware, remains to be a gap as it require changes
to the corresponding machine driver interface.

Existing IIS (sync mode) and DIT mode logic remains mostly unchanged.
Exceptions are IIS mode logic that previously assumed sync mode, which has
now been made aware of the distinction. And shared logic across all modes
also now checks for McASP tx/rx-specific driver attributes. Those
attributes have been populated according to the original extent, ensuring
no divergence in functionality.

Constraints no longer applicable for async mode are skipped.
Clock selection options have also been added to include rx/tx-only clk_ids,
exposing independent configuration via the machine driver as well.

Note that asynchronous mode is not applicable for McASP in DIT mode,
which is a transmitter-only mode to interface w/ self-clocking formats.

Signed-off-by: Sen Wang <sen@ti.com>
Acked-by: Peter Ujfalusi <peter.ujfalusi@gmail.com>
Tested-by: Paresh Bhagat <p-bhagat@ti.com>
Link: https://patch.msgid.link/20260203003703.2334443-5-sen@ti.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2026-02-04 18:21:52 +00:00
..
Kconfig ASoC: ti: Standardize ASoC menu 2025-06-24 01:01:08 +01:00
Makefile ASoC: ti: Use *-y instead of *-objs in Makefile 2024-05-08 11:39:35 +09:00
ams-delta.c ASoC: ti: ams-delta: convert to snd_soc_dapm_xxx() 2025-11-17 00:18:40 +00:00
davinci-evm.c ASoC: davinci-evm: Fix reference leak in davinci_evm_probe 2026-01-08 17:31:15 +00:00
davinci-i2s.c ASoC: ti: davinci-i2s: remove unnecessary NULL check before clk_disable_unprepare() 2025-03-16 23:33:36 +00:00
davinci-i2s.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
davinci-mcasp.c ASoC: ti: davinci-mcasp: Add asynchronous mode support 2026-02-04 18:21:52 +00:00
davinci-mcasp.h ASoC: ti: davinci-mcasp: Add asynchronous mode support 2026-02-04 18:21:52 +00:00
edma-pcm.c ASoC: ti: edma-pcm: Fix for legacy dma_slave_map based channel lookup 2019-08-30 12:22:46 +01:00
edma-pcm.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
j721e-evm.c ASoC: ti: j721e-evm: convert to snd_soc_dapm_xxx() 2025-11-17 00:18:42 +00:00
n810.c ASoC: ti: n810: convert to snd_soc_dapm_xxx() 2025-11-17 00:18:43 +00:00
omap-abe-twl6040.c ASoC: ti: omap-abe-twl6040: convert to snd_soc_dapm_xxx() 2025-11-17 00:18:44 +00:00
omap-dmic.c ASoC: Explicitly include correct DT includes 2023-10-09 13:13:56 +01:00
omap-dmic.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
omap-hdmi.c ASoC: ti: omap-hdmi: Re-add dai_link->platform to fix card init 2025-06-02 12:27:43 +01:00
omap-mcbsp-priv.h ASoC: ti: omap-mcbsp: duplicate sysfs error 2022-07-07 17:16:21 +01:00
omap-mcbsp-st.c ASoC: ti: convert not to use asoc_xxx() 2023-09-25 14:16:16 +02:00
omap-mcbsp.c ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
omap-mcbsp.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 336 2019-06-05 17:37:07 +02:00
omap-mcpdm.c ASoC: Explicitly include correct DT includes 2023-10-09 13:13:56 +01:00
omap-mcpdm.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 336 2019-06-05 17:37:07 +02:00
omap-twl4030.c ASoC: ti: omap-twl4030: convert to snd_soc_dapm_xxx() 2025-11-17 00:18:45 +00:00
omap3pandora.c ASoC: ti: omap3pandora: convert to snd_soc_dapm_xxx() 2025-11-17 00:18:46 +00:00
osk5912.c ASoC: ti: osk5912: use inclusive language for SND_SOC_DAIFMT_CBx_CFx 2025-03-03 12:57:12 +00:00
rx51.c ASoC: ti: rx51: convert to snd_soc_dapm_xxx() 2025-11-17 00:18:47 +00:00
sdma-pcm.c ASoC: omap: Replace HTTP links with HTTPS ones 2020-07-23 19:52:24 +01:00
sdma-pcm.h ASoC: omap: Replace HTTP links with HTTPS ones 2020-07-23 19:52:24 +01:00
udma-pcm.c ASoC: ti: Replace HTTP links with HTTPS ones 2020-07-23 19:52:21 +01:00
udma-pcm.h ASoC: ti: Replace HTTP links with HTTPS ones 2020-07-23 19:52:21 +01:00