linux/sound/usb
Lushih Hsieh 21a9ab5b90 ALSA: usb-audio: Add native DSD quirks for PureAudio DAC series
The PureAudio APA DAC and Lotus DAC5 series are USB Audio
2.0 Class devices that support native Direct Stream Digital (DSD)
playback via specific vendor protocols.

Without these quirks, the devices may only function in standard
PCM mode, or fail to correctly report their DSD format capabilities
to the ALSA framework, preventing native DSD playback under Linux.

This commit adds new quirk entries for the mentioned DAC models
based on their respective Vendor/Product IDs (VID:PID), for example:
0x16d0:0x0ab1 (APA DAC), 0x16d0:0xeca1 (DAC5 series), etc.

The quirk ensures correct DSD format handling by setting the required
SNDRV_PCM_FMTBIT_DSD_U32_BE format bit and defining the DSD-specific
Audio Class 2.0 (AC2.0) endpoint configurations. This allows the ALSA
DSD API to correctly address the device for high-bitrate DSD streams,
bypassing the need for DoP (DSD over PCM).

Test on APA DAC and Lotus DAC5 SE under Arch Linux.

Tested-by: Lushih Hsieh <bruce@mail.kh.edu.tw>
Signed-off-by: Lushih Hsieh <bruce@mail.kh.edu.tw>
Link: https://patch.msgid.link/20251114052053.54989-1-bruce@mail.kh.edu.tw
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2025-11-14 14:19:47 +01:00
..
6fire ALSA: 6fire: Clean ups with guard() 2025-08-12 08:36:16 +02:00
bcd2000 ALSA: bcd2000: Use guard() for mutex locks 2025-09-01 13:54:06 +02:00
caiaq ALSA: caiaq: Use guard() for spin locks 2025-09-01 13:54:06 +02:00
hiface ALSA: hiface: Use guard() for spin locks 2025-09-01 13:54:06 +02:00
line6 ALSA: line6: Use guard() for spin locks 2025-09-10 13:20:01 +02:00
misc ALSA: ua101: Use guard() for spin locks 2025-09-01 13:54:05 +02:00
qcom Merge branch 'for-linus' into for-next 2025-09-28 08:34:58 +02:00
usx2y ALSA: usx2y: Use guard() for mutex locks 2025-09-01 13:54:05 +02:00
Kconfig ALSA: usb-audio: Add infrastructure for TASCAM US-144MKII 2025-08-15 17:53:47 +02:00
Makefile ALSA: usb-audio: qcom: Introduce QC USB SND offloading support 2025-04-11 13:02:32 +02:00
card.c ALSA: usb-audio: Fix NULL pointer deference in try_to_register_card 2025-10-15 10:17:09 +02:00
card.h ALSA: usb-audio: Allow for rediscovery of connected USB SND devices 2025-04-11 13:02:31 +02:00
clock.c ALSA: usb-audio: Fix out of bounds reads when finding clock sources 2024-11-25 15:48:22 +01:00
clock.h ALSA: usb-audio: Constify audioformat pointer references 2020-11-23 15:15:36 +01:00
endpoint.c ALSA: usb-audio: Fix potential overflow of PCM transfer buffer 2025-11-10 10:48:45 +01:00
endpoint.h ALSA: usb-audio: Remove unused function declaration 2023-08-01 16:56:57 +02:00
fcp.c ALSA: usb: fpc: replace kmalloc_array followed by copy_from_user with memdup_array_user 2025-10-07 14:14:32 +02:00
fcp.h ALSA: FCP: Add Focusrite Control Protocol driver 2025-01-18 12:00:38 +01:00
format.c ALSA: usb-audio: Allow Focusrite devices to use low samplerates 2025-09-01 13:14:52 +02:00
format.h
helper.c ALSA: usb-audio: Export USB SND APIs for modules 2025-04-11 13:02:30 +02:00
helper.h ALSA: usb-audio: Support multiple control interfaces 2024-08-12 16:17:46 +02:00
implicit.c ALSA: usb-audio: Add implicit feedback quirk for RODE AI-1 2025-06-02 16:50:04 +02:00
implicit.h ALSA: usb-audio: Add new quirk FIXED_RATE for JBL Quantum810 Wireless 2022-12-22 09:13:54 +01:00
media.c ALSA: usb-audio: Replace manual mutex/spinlock with guard() 2025-08-12 08:36:17 +02:00
media.h media: sound/usb: Use Media Controller API to share media resources 2019-04-22 11:21:06 -04:00
midi.c Merge branch 'for-linus' into for-next 2025-09-28 08:34:58 +02:00
midi.h ALSA: usb-audio: Manage number of rawmidis globally 2023-05-23 12:11:00 +02:00
midi2.c ALSA: usb-audio: Replace manual mutex/spinlock with guard() 2025-08-12 08:36:17 +02:00
midi2.h ALSA: usb-audio: USB MIDI 2.0 UMP support 2023-05-23 12:11:02 +02:00
mixer.c ALSA: usb-audio: Fix NULL pointer dereference in snd_usb_mixer_controls_badd 2025-11-11 17:57:44 +01:00
mixer.h ALSA: usb-audio: Add input value sanity checks for standard types 2024-08-06 18:27:08 +02:00
mixer_maps.c ALSA: usb-audio: Rename ALSA kcontrol PCM and PCM1 for the KTMicro sound card 2025-06-13 10:18:10 +02:00
mixer_quirks.c ALSA: usb-audio: add quirk QUIRK_FLAG_MIXER_CAPTURE_MIN_MUTE 2025-09-04 15:37:30 +02:00
mixer_quirks.h ALSA: usb-audio: Drop CONFIG_PM ifdefs 2021-12-06 10:19:40 +01:00
mixer_s1810c.c ALSA: usb-audio: don't log messages meant for 1810c when initializing 1824c 2025-10-27 09:59:18 +01:00
mixer_s1810c.h ALSA: usb-audio: Add support for Presonus Studio 1810c 2020-02-15 09:46:16 +01:00
mixer_scarlett.c ALSA: usb-audio: Copy string more safely 2025-07-11 09:53:36 +02:00
mixer_scarlett.h
mixer_scarlett2.c ALSA: scarlett2: Add Vocaster speaker/headphone mute controls 2025-09-06 20:02:52 +02:00
mixer_scarlett2.h ALSA: scarlett2: Rename scarlett_gen2 to scarlett2 2023-10-27 11:22:59 +02:00
mixer_us16x08.c ALSA: usb-audio: Replace manual mutex/spinlock with guard() 2025-08-12 08:36:17 +02:00
mixer_us16x08.h ALSA: usb: Constify snd_kcontrol_new items 2020-01-03 09:24:34 +01:00
pcm.c ALSA: usb-audio: Use guard() for spin locks 2025-09-10 13:20:01 +02:00
pcm.h ALSA: usb-audio: Export USB SND APIs for modules 2025-04-11 13:02:30 +02:00
power.c ALSA: usb-audio: Support multiple control interfaces 2024-08-12 16:17:46 +02:00
power.h ALSA: usb-audio: Support multiple control interfaces 2024-08-12 16:17:46 +02:00
proc.c ALSA: usb-audio: Replace manual mutex/spinlock with guard() 2025-08-12 08:36:17 +02:00
proc.h
quirks-table.h ALSA: usb-audio: Add Pioneer DJ DJM-V10 support 2025-04-22 15:00:48 +02:00
quirks.c ALSA: usb-audio: Add native DSD quirks for PureAudio DAC series 2025-11-14 14:19:47 +01:00
quirks.h ALSA: usb-audio: improve module param quirk_flags 2025-09-28 08:35:29 +02:00
stream.c ALSA: usb-audio: Fix size validation in convert_chmap_v3() 2025-08-18 12:36:33 +02:00
stream.h
usbaudio.h ALSA: usb-audio: add two-way convert between name and bit for QUIRK_FLAG_* 2025-09-28 08:35:29 +02:00
validate.c ALSA: usb-audio: Add validation of UAC2/UAC3 effect units 2025-08-21 17:18:21 +02:00