public inbox for stable@vger.kernel.org
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: patches@lists.linux.dev, stable@vger.kernel.org
Cc: Lianqin Hu <hulianqin@vivo.com>,
	Cryolitia PukNgae <cryolitia@uniontech.com>,
	Takashi Iwai <tiwai@suse.de>, Sasha Levin <sashal@kernel.org>,
	pav@iki.fi, jussi@sonarnerd.net, roy.vegard.ovesen@gmail.com
Subject: [PATCH AUTOSEL 6.18] ALSA: usb-audio: Add delay quirk for MOONDROP Moonriver2 Ti
Date: Mon,  2 Feb 2026 16:46:00 -0500	[thread overview]
Message-ID: <20260202214643.212290-5-sashal@kernel.org> (raw)
In-Reply-To: <20260202214643.212290-1-sashal@kernel.org>

From: Lianqin Hu <hulianqin@vivo.com>

[ Upstream commit 49985bc466b51af88d534485631c8cd8c9c65f43 ]

Audio control requests that sets sampling frequency sometimes fail on
this card. Adding delay between control messages eliminates that problem.

usb 1-1: New USB device found, idVendor=2fc6, idProduct=f06b
usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-1: Product: MOONDROP Moonriver2 Ti
usb 1-1: Manufacturer: MOONDROP
usb 1-1: SerialNumber: MOONDROP Moonriver2 Ti

Signed-off-by: Lianqin Hu <hulianqin@vivo.com>
Reviewed-by: Cryolitia PukNgae <cryolitia@uniontech.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Link: https://patch.msgid.link/TYUPR06MB6217911EFC7E9224935FA507D28DA@TYUPR06MB6217.apcprd06.prod.outlook.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---

LLM Generated explanations, may be completely bogus:

## Comprehensive Analysis

### 1. COMMIT MESSAGE ANALYSIS

**Subject:** "ALSA: usb-audio: Add delay quirk for MOONDROP Moonriver2
Ti"

**Key indicators:**
- The commit describes a real hardware issue: "Audio control requests
  that sets sampling frequency sometimes fail on this card"
- The fix is adding a workaround: "Adding delay between control messages
  eliminates that problem"
- The commit has proper sign-offs and review tags (Reviewed-by, Signed-
  off-by from maintainer Takashi Iwai)
- Device identification is clearly provided (idVendor=2fc6,
  idProduct=f06b)

**Missing tags:** As expected for commits needing manual review, there's
no `Cc: stable@vger.kernel.org` or `Fixes:` tag. This is NOT a negative
signal - it's why this commit needs review.

### 2. CODE CHANGE ANALYSIS

The diff shows a simple two-line addition to `sound/usb/quirks.c`:

```c
DEVICE_FLG(0x2fc6, 0xf06b, /* MOONDROP Moonriver2 Ti */
           QUIRK_FLAG_CTL_MSG_DELAY),
```

This adds a USB device ID (vendor 0x2fc6, product 0xf06b) to a quirk
flags table with the `QUIRK_FLAG_CTL_MSG_DELAY` flag.

**Technical mechanism:**
- The USB audio device (MOONDROP Moonriver2 Ti DAC/amp) has buggy
  firmware that cannot handle rapid control messages
- Without the delay, sampling frequency setting fails intermittently
- The `QUIRK_FLAG_CTL_MSG_DELAY` flag tells the USB audio driver to add
  delays between control messages for this specific device
- This is a well-established workaround pattern - other devices in the
  same file use the same quirk (e.g., Luxman D-10X, iBasso DC07 Pro)

### 3. CLASSIFICATION

**This is a HARDWARE QUIRK addition** - one of the explicitly allowed
exception categories for stable backports.

- **NOT a new feature:** The quirk mechanism already exists; this just
  adds a device to the list
- **Fixes a real bug:** Audio device fails to work properly without the
  quirk
- **Zero code logic changes:** Just a table entry addition

### 4. SCOPE AND RISK ASSESSMENT

**Scope:**
- 2 lines added
- 1 file changed (quirks.c)
- No logic changes, no new code paths

**Risk:** **EXTREMELY LOW**
- The change only affects the specific USB device (0x2fc6:0xf06b)
- Users without this device are completely unaffected
- The quirk mechanism is mature and well-tested
- Similar quirk entries exist for many other devices (visible in the
  context)
- If the quirk were somehow wrong, it would only affect this one device
  model

### 5. USER IMPACT

**Who is affected:**
- Users of the MOONDROP Moonriver2 Ti USB DAC/amp
- This is a commercially available audio device that users connect to
  Linux systems

**Severity without fix:**
- Audio control requests fail intermittently
- Device may not work properly at certain sample rates
- This is a functional bug preventing normal use of hardware

**Impact of fix:**
- Device works correctly
- No negative impact on any other hardware

### 6. STABILITY INDICATORS

- **Reviewed-by:** Cryolitia PukNgae from Uniontech (likely a testing/QA
  role)
- **Signed-off-by:** Takashi Iwai (ALSA maintainer at SUSE) - trusted
  maintainer acceptance
- The pattern follows identical entries in the same file
- The quirk flag used (`QUIRK_FLAG_CTL_MSG_DELAY`) is well-established

### 7. DEPENDENCY CHECK

**Dependencies:** None
- The `QUIRK_FLAG_CTL_MSG_DELAY` flag already exists in stable kernels
- The `DEVICE_FLG` macro already exists
- The quirk handling code already exists
- This is a pure data addition to an existing table

**Applies cleanly:** The change is a simple table entry insertion that
should apply cleanly to any stable tree that has the USB audio quirks
infrastructure.

### Summary

This commit is a **textbook example** of what SHOULD be backported to
stable:

1. **Obviously correct:** Simple device ID + existing quirk flag
2. **Fixes a real bug:** Hardware doesn't work properly without it
3. **Small and contained:** 2 lines, no logic changes
4. **No new features:** Uses existing infrastructure
5. **No new APIs:** Just a table entry
6. **Falls under explicit exception:** Hardware quirk addition

The fix enables a commercial USB audio device to work correctly on
Linux. The risk is essentially zero since the change only affects this
specific device model, and the benefit is direct hardware enablement for
users who own this device.

**YES**

 sound/usb/quirks.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c
index 94a8fdc9c6d3c..8a646891ebb44 100644
--- a/sound/usb/quirks.c
+++ b/sound/usb/quirks.c
@@ -2390,6 +2390,8 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = {
 		   QUIRK_FLAG_CTL_MSG_DELAY_1M),
 	DEVICE_FLG(0x2d99, 0x0026, /* HECATE G2 GAMING HEADSET */
 		   QUIRK_FLAG_MIXER_PLAYBACK_MIN_MUTE),
+	DEVICE_FLG(0x2fc6, 0xf06b, /* MOONDROP Moonriver2 Ti */
+		   QUIRK_FLAG_CTL_MSG_DELAY),
 	DEVICE_FLG(0x2fc6, 0xf0b7, /* iBasso DC07 Pro */
 		   QUIRK_FLAG_CTL_MSG_DELAY_1M),
 	DEVICE_FLG(0x30be, 0x0101, /* Schiit Hel */
-- 
2.51.0


  parent reply	other threads:[~2026-02-02 21:46 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-02 21:45 [PATCH AUTOSEL 6.18-6.12] ALSA: hda/realtek - fixed speaker no sound Sasha Levin
2026-02-02 21:45 ` [PATCH AUTOSEL 6.18-5.10] ALSA: hda/realtek: Fix headset mic for TongFang X6AR55xU Sasha Levin
2026-02-02 21:45 ` [PATCH AUTOSEL 6.18] io_uring/rw: free potentially allocated iovec on cache put failure Sasha Levin
2026-02-02 21:45 ` [PATCH AUTOSEL 6.18-6.12] ALSA: hda/realtek: ALC269 fixup for Lenovo Yoga Book 9i 13IRU8 audio Sasha Levin
2026-02-02 21:46 ` Sasha Levin [this message]
2026-02-02 21:46 ` [PATCH AUTOSEL 6.18-6.1] ASoC: amd: yc: Add ASUS ExpertBook PM1503CDA to quirks list Sasha Levin
2026-02-02 21:46 ` [PATCH AUTOSEL 6.18-5.10] gpio: sprd: Change sprd_gpio lock to raw_spin_lock Sasha Levin
2026-02-02 21:46 ` [PATCH AUTOSEL 6.18-6.6] spi: hisi-kunpeng: Fixed the wrong debugfs node name in hisi_spi debugfs initialization Sasha Levin
2026-02-02 21:46 ` [PATCH AUTOSEL 6.18-6.1] ASoC: cs35l45: Corrects ASP_TX5 DAPM widget channel Sasha Levin
2026-02-02 21:46 ` [PATCH AUTOSEL 6.18-5.10] scsi: target: iscsi: Fix use-after-free in iscsit_dec_conn_usage_count() Sasha Levin
2026-02-02 21:46 ` [PATCH AUTOSEL 6.18-6.1] ALSA: hda/realtek: Add quirk for Inspur S14-G1 Sasha Levin
2026-02-02 21:46 ` [PATCH AUTOSEL 6.18] btrfs: fix Wmaybe-uninitialized warning in replay_one_buffer() Sasha Levin
2026-02-02 21:46 ` [PATCH AUTOSEL 6.18-5.10] scsi: target: iscsi: Fix use-after-free in iscsit_dec_session_usage_count() Sasha Levin
2026-02-02 21:46 ` [PATCH AUTOSEL 6.18] Revert "drm/amd/display: pause the workload setting in dm" Sasha Levin
2026-02-02 21:46 ` [PATCH AUTOSEL 6.18] btrfs: sync read disk super and set block size Sasha Levin
2026-02-02 21:46 ` [PATCH AUTOSEL 6.18-5.10] wifi: mac80211: don't increment crypto_tx_tailroom_needed_cnt twice Sasha Levin
2026-02-02 21:46 ` [PATCH AUTOSEL 6.18] spi: intel-pci: Add support for Nova Lake SPI serial flash Sasha Levin
2026-02-02 21:46 ` [PATCH AUTOSEL 6.18-6.12] btrfs: reject new transactions if the fs is fully read-only Sasha Levin
2026-02-02 21:46 ` [PATCH AUTOSEL 6.18] riscv: Use 64-bit variable for output in __get_user_asm Sasha Levin
2026-02-02 21:46 ` [PATCH AUTOSEL 6.18-6.6] regmap: maple: free entry on mas_store_gfp() failure Sasha Levin
2026-02-02 21:46 ` [PATCH AUTOSEL 6.18-6.6] wifi: mac80211: correctly check if CSA is active Sasha Levin
2026-02-02 21:46 ` [PATCH AUTOSEL 6.18-5.10] romfs: check sb_set_blocksize() return value Sasha Levin
2026-02-02 21:46 ` [PATCH AUTOSEL 6.18-5.10] wifi: cfg80211: Fix bitrate calculation overflow for HE rates Sasha Levin
2026-02-02 21:46 ` [PATCH AUTOSEL 6.18] tracing: Avoid possible signed 64-bit truncation Sasha Levin
  -- strict thread matches above, loose matches on Subject: below --
2026-01-28 22:32 [PATCH AUTOSEL 6.18-5.10] ALSA: hda/realtek: Fix headset mic for TongFang X6AR55xU Sasha Levin
2026-01-28 22:33 ` [PATCH AUTOSEL 6.18] ALSA: usb-audio: Add delay quirk for MOONDROP Moonriver2 Ti Sasha Levin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260202214643.212290-5-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=cryolitia@uniontech.com \
    --cc=hulianqin@vivo.com \
    --cc=jussi@sonarnerd.net \
    --cc=patches@lists.linux.dev \
    --cc=pav@iki.fi \
    --cc=roy.vegard.ovesen@gmail.com \
    --cc=stable@vger.kernel.org \
    --cc=tiwai@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox