From: Jussi Laako jussi@sonarnerd.net
[ Upstream commit da3a7efff64ec0d63af4499eea3a46a2e13b5797 ]
Maintenance patch for native DSD support.
Add set of missing device and vendor quirks; TEAC, Esoteric, Luxman and Musical Fidelity.
Signed-off-by: Jussi Laako jussi@sonarnerd.net Signed-off-by: Takashi Iwai tiwai@suse.de Link: https://patch.msgid.link/20251211152224.1780782-1-jussi@sonarnerd.net Signed-off-by: Sasha Levin sashal@kernel.org ---
LLM Generated explanations, may be completely bogus:
## Commit Analysis: ALSA: usb-audio: Update for native DSD support quirks
### 1. COMMIT MESSAGE ANALYSIS
- **Subject:** "ALSA: usb-audio: Update for native DSD support quirks" - **Description:** "Maintenance patch" adding "missing device and vendor quirks" for TEAC, Esoteric, Luxman, and Musical Fidelity audio devices - No crash/bug keywords, but no Cc: stable or Fixes: tag is expected for commits under review - Proper sign-offs from author and maintainer (Takashi Iwai, the ALSA maintainer)
### 2. CODE CHANGE ANALYSIS
The changes are purely **data table additions** to `sound/usb/quirks.c`:
**Device-specific entries (3):** 1. `0x0644:0x807d` - TEAC UD-507 (DSD DAC + timing quirks) 2. `0x0644:0x806c` - Esoteric XD (DSD DAC + timing quirks) 3. `0x3255:0x0000` - Luxman D-10X (DSD DAC + timing quirk)
**Vendor-wide entry (1):** 4. `0x2772` - Musical Fidelity devices (DSD_RAW quirk)
**Quirk flags used:** - `QUIRK_FLAG_ITF_USB_DSD_DAC` - Device supports native DSD playback - `QUIRK_FLAG_CTL_MSG_DELAY` / `QUIRK_FLAG_IFACE_DELAY` - Timing workarounds for device communication issues - `QUIRK_FLAG_DSD_RAW` - Raw DSD mode support
### 3. CLASSIFICATION
This is a **device ID and quirk addition** - explicitly listed as an allowed exception in stable kernel rules:
"NEW DEVICE IDs (Very Common): Adding PCI IDs, USB IDs, ACPI IDs, etc.
to existing drivers"
"QUIRKS and WORKAROUNDS: Hardware-specific quirks for broken/buggy
devices"
The entries follow the exact same pattern as dozens of existing entries in the file.
### 4. SCOPE AND RISK ASSESSMENT
- **Lines changed:** ~8 lines added (4 entries) - **Files changed:** 1 file - **Complexity:** Trivial - pure data table additions - **Risk:** Extremely low - Only affects devices matching specific USB vendor:product IDs - No code logic changes whatsoever - Cannot affect any other devices - Uses pre-existing, well-tested quirk infrastructure
### 5. USER IMPACT
**Benefit:** Owners of these specific high-end audio DACs get: - Working native DSD playback - Proper device communication (timing quirks prevent USB control message issues)
**Without fix:** These DACs may experience: - DSD format not working - Audio glitches or communication failures due to missing timing delays
**Scope:** Narrow (specific device owners only), but critical for those users.
### 6. STABILITY INDICATORS
- Signed off by Takashi Iwai (ALSA maintainer) - trusted subsystem expert - Follows identical pattern to existing entries - Zero new code paths introduced
### 7. DEPENDENCY CHECK
- No dependencies on other commits - All quirk flags (`ITF_USB_DSD_DAC`, `CTL_MSG_DELAY`, `IFACE_DELAY`, `DSD_RAW`) already exist in stable kernels - The quirk_flags_table infrastructure has existed for many kernel versions
### DECISION RATIONALE
**This is a textbook stable backport candidate under the device ID/quirk exception:**
1. **Meets stable criteria for exceptions:** Pure USB device ID and quirk additions to existing driver infrastructure 2. **Obviously correct:** Follows exact pattern of adjacent entries in the file 3. **Fixes real issue:** Enables hardware that users own to function properly 4. **Small and contained:** 8 lines of data-only changes in 1 file 5. **No new features:** DSD support already exists; this just identifies which devices can use it 6. **Zero regression risk:** Only activates for specific USB IDs; cannot affect other devices
The timing quirks (`CTL_MSG_DELAY`, `IFACE_DELAY`) are particularly important as they fix actual device communication issues, not just feature enablement.
**YES**
sound/usb/quirks.c | 10 ++++++++++ 1 file changed, 10 insertions(+)
diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c index 61bd61ffb1b2..94a8fdc9c6d3 100644 --- a/sound/usb/quirks.c +++ b/sound/usb/quirks.c @@ -2230,6 +2230,12 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = { DEVICE_FLG(0x0644, 0x806b, /* TEAC UD-701 */ QUIRK_FLAG_ITF_USB_DSD_DAC | QUIRK_FLAG_CTL_MSG_DELAY | QUIRK_FLAG_IFACE_DELAY), + DEVICE_FLG(0x0644, 0x807d, /* TEAC UD-507 */ + QUIRK_FLAG_ITF_USB_DSD_DAC | QUIRK_FLAG_CTL_MSG_DELAY | + QUIRK_FLAG_IFACE_DELAY), + DEVICE_FLG(0x0644, 0x806c, /* Esoteric XD */ + QUIRK_FLAG_ITF_USB_DSD_DAC | QUIRK_FLAG_CTL_MSG_DELAY | + QUIRK_FLAG_IFACE_DELAY), DEVICE_FLG(0x06f8, 0xb000, /* Hercules DJ Console (Windows Edition) */ QUIRK_FLAG_IGNORE_CTL_ERROR), DEVICE_FLG(0x06f8, 0xd002, /* Hercules DJ Console (Macintosh Edition) */ @@ -2388,6 +2394,8 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = { QUIRK_FLAG_CTL_MSG_DELAY_1M), DEVICE_FLG(0x30be, 0x0101, /* Schiit Hel */ QUIRK_FLAG_IGNORE_CTL_ERROR), + DEVICE_FLG(0x3255, 0x0000, /* Luxman D-10X */ + QUIRK_FLAG_ITF_USB_DSD_DAC | QUIRK_FLAG_CTL_MSG_DELAY), DEVICE_FLG(0x339b, 0x3a07, /* Synaptics HONOR USB-C HEADSET */ QUIRK_FLAG_MIXER_PLAYBACK_MIN_MUTE), DEVICE_FLG(0x413c, 0xa506, /* Dell AE515 sound bar */ @@ -2431,6 +2439,8 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = { QUIRK_FLAG_DSD_RAW), VENDOR_FLG(0x2622, /* IAG Limited devices */ QUIRK_FLAG_DSD_RAW), + VENDOR_FLG(0x2772, /* Musical Fidelity devices */ + QUIRK_FLAG_DSD_RAW), VENDOR_FLG(0x278b, /* Rotel? */ QUIRK_FLAG_DSD_RAW), VENDOR_FLG(0x292b, /* Gustard/Ess based devices */