linux/sound/drivers
Chancel Liu 86778b7b9f ALSA: aloop: Introduce a function to get if access is interleaved mode
[ Upstream commit cdac6e1f71 ]

There's a use case that playback stream of a loopback cable works on
RW_INTERLEAVED mode while capture stream works on MMAP_INTERLEAVED mode:

aplay -Dhw:Loopback,0,0 S32_48K_2ch.wav;
arecord -Dplughw:Loopback,1,0 -fS32_LE -r16000 -c2 cap.wav;

The plug plugin handles only slave PCM support MMAP mode. Not only plug
plugin but also other plugins like direct plugins(dmix/dsnoop/dshare)
work on MMAP access mode. In this case capture stream is the slave
PCM works on MMAP_INTERLEAVED mode. However loopback_check_format()
rejects this access setting and return:

arecord: pcm_read:2240: read error: Input/output error

To fix it a function called is_access_interleaved() is introduced to
get if access is interleaved mode. If both access of capture stream and
playback stream is interleaved mode loopback_check_format() will allow
this kind of access setting.

Fixes: 462494565c ("ALSA: aloop: Add support for the non-interleaved access mode")
Signed-off-by: Chancel Liu <chancel.liu@nxp.com>
Link: https://lore.kernel.org/r/20240111025219.2678764-1-chancel.liu@nxp.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2024-01-25 15:45:26 -08:00
..
mpu401 ALSA: mpu401: Allocate resources with device-managed APIs 2021-07-19 16:17:30 +02:00
opl3 ALSA: drivers: opl3: Fix incorrect use of vp->state 2021-12-13 10:36:17 +01:00
opl4 ALSA: opl4: More constification 2020-01-05 16:15:08 +01:00
pcsp ALSA: pcsp: Make hrtimer forwarding more robust 2021-09-28 10:58:08 +02:00
vx ALSA: vx: Drop superfluous GFP setup 2022-08-24 08:00:26 +02:00
aloop.c ALSA: aloop: Introduce a function to get if access is interleaved mode 2024-01-25 15:45:26 -08:00
dummy.c ALSA: dummy: Convert to generic PCM copy ops 2023-08-18 12:18:17 +02:00
Kconfig ALSA: Make SND_PCMTEST depend on DEBUG_FS 2023-08-18 09:10:22 +02:00
Makefile ALSA: Implement the new Virtual PCM Test Driver 2023-06-07 13:08:53 +02:00
mtpav.c ALSA: mtpav: Don't call card private_free at probe error path 2022-04-12 17:58:43 +02:00
mts64.c ALSA: mts64: Convert to platform remove callback returning void 2023-03-20 13:07:02 +00:00
pcmtest.c ALSA: pcmtest: stop timer before buffer is released 2023-12-07 08:33:06 +01:00
portman2x4.c ASoC: Updates for v6.4 2023-04-24 15:15:31 +02:00
serial-generic.c ASoC: Updates for v6.6 2023-08-28 16:13:03 +02:00
serial-u16550.c ALSA: serial-u16550: Allocate resources with device-managed APIs 2021-07-19 16:17:30 +02:00
virmidi.c ALSA: virmidi: Remove duplicated code 2022-01-06 16:08:18 +01:00