[PATCH AUTOSEL 6.19] ALSA: usb-audio: Add iface reset and delay quirk for SPACETOUCH USB Audio
From: Sasha Levin
Date: Tue Mar 17 2026 - 07:34:55 EST
From: Lianqin Hu <hulianqin@xxxxxxxx>
[ Upstream commit 5182e5ec4355dd690307f5d5c28cbfc5b2c06a97 ]
Setting up the interface when suspended/resumeing fail on this card.
Adding a reset and delay quirk will eliminate this problem.
usb 1-1: New USB device found, idVendor=0666, idProduct=0880
usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-1: Product: USB Audio
usb 1-1: Manufacturer: SPACETOUCH
usb 1-1: SerialNumber: 000000000
Signed-off-by: Lianqin Hu <hulianqin@xxxxxxxx>
Signed-off-by: Takashi Iwai <tiwai@xxxxxxx>
Link: https://patch.msgid.link/TYUPR06MB6217ACC80B70BE25D87456B0D247A@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>
---
LLM Generated explanations, may be completely bogus:
## Analysis
### Commit Summary
This commit adds a USB audio quirk entry for the SPACETOUCH USB Audio
device (vendor `0x0666`, product `0x0880`), applying
`QUIRK_FLAG_FORCE_IFACE_RESET` and `QUIRK_FLAG_IFACE_DELAY` flags. The
commit message states this fixes suspend/resume failures on this device.
### Code Change Analysis
The change is a **two-line addition** inserting a `DEVICE_FLG()` entry
into the sorted `quirk_flags_table[]` array. It uses existing quirk
flags (`QUIRK_FLAG_FORCE_IFACE_RESET | QUIRK_FLAG_IFACE_DELAY`) that are
already used by many other devices in the same table (e.g., TEAC UD-701,
Esoteric D-05X, etc.).
### Classification: Hardware Quirk
This is a textbook **hardware quirk addition** — one of the explicitly
listed exception categories that ARE appropriate for stable backporting
despite being "additions." The quirk:
- Uses an existing driver and existing quirk infrastructure
- Only targets a specific USB device by vendor/product ID
- Applies well-understood flags already used by other devices
- Fixes a real user-facing problem (suspend/resume failure)
### Bug Being Fixed
The commit fixes a **suspend/resume failure** on the SPACETOUCH USB
Audio device. Without the interface reset and delay quirk, the USB audio
interface fails to set up properly when resuming from suspend. This is a
real hardware issue that affects users of this specific device.
### Risk Assessment
- **Scope**: Minimal — only affects this specific USB device
(0x0666:0x0880)
- **Risk of regression**: Near zero — the flags only apply to this one
device, and the same flags work correctly on many other devices
- **Dependencies**: None — the quirk infrastructure and flags already
exist in all stable trees
- **Lines changed**: 2 lines added, no lines removed or modified
### Stable Kernel Rules Check
1. **Obviously correct and tested**: Yes — simple table entry, same
pattern as dozens of others, signed off by the ALSA maintainer
(Takashi Iwai)
2. **Fixes a real bug**: Yes — suspend/resume failure
3. **Important issue**: Yes — device unusable after suspend/resume cycle
4. **Small and contained**: Yes — 2-line addition to a quirk table
5. **No new features**: Correct — uses existing quirk mechanism
6. **Applies cleanly**: Should apply cleanly to any tree containing the
quirk flags table
### Verification
- Reviewed the diff: confirmed it's a simple 2-line `DEVICE_FLG()`
addition, inserted in sorted vendor ID order
- Confirmed `QUIRK_FLAG_FORCE_IFACE_RESET` and `QUIRK_FLAG_IFACE_DELAY`
are used by multiple existing entries in the same table (visible in
the diff context)
- Commit is signed off by Takashi Iwai (ALSA subsystem maintainer),
indicating proper review
- The commit message includes USB device identification strings showing
the exact hardware affected
This is a zero-risk, high-benefit hardware quirk that fixes
suspend/resume for a specific USB audio device. It meets all stable
kernel criteria.
**YES**
sound/usb/quirks.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c
index a89ea2233180a..ce6f479353b22 100644
--- a/sound/usb/quirks.c
+++ b/sound/usb/quirks.c
@@ -2239,6 +2239,8 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = {
QUIRK_FLAG_IFACE_DELAY | QUIRK_FLAG_FORCE_IFACE_RESET),
DEVICE_FLG(0x0661, 0x0883, /* iBasso DC04 Ultra */
QUIRK_FLAG_DSD_RAW),
+ DEVICE_FLG(0x0666, 0x0880, /* SPACETOUCH USB Audio */
+ QUIRK_FLAG_FORCE_IFACE_RESET | 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) */
--
2.51.0