答复: [PATCH] ALSA: usb-audio: Add iface reset and delay quirk for JKY Technology Q2A

From: 胡连勤

Date: Fri Jul 24 2026 - 07:55:05 EST


Hi Rong:

>
> On Fri, 2026-07-24 at 08:29 +0000, 胡连勤 wrote:
> > Setting up the interface when suspended/resuming fails on this card.
> > Adding a reset and delay quirk will eliminate this problem.
> >
> > Note: This device misuses the Apple VID (0x05ac) & PID (0x110b).
>
> The device's VID conflicts with Apple's, but there is no PID conflict,
> right?
The VID & PID are the same as those of Apple's official digital headphones.
This is the VID & PID information of digital headphones purchased from Apple:

[20946.829805] usb 1-1: New USB device found, idVendor=05ac, idProduct=110b, bcdDevice=26.81
[20946.829811] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[20946.829813] usb 1-1: Product: EarPods
[20946.829815] usb 1-1: Manufacturer: Apple, Inc.
[20946.829816] usb 1-1: SerialNumber: JCRF0XQQH1
[20946.830111] usb 1-1: usb_probe_device

>
> If a manufacturer uses other's VID, it's a VID conflict. The device
> falls into this category.
>
> If the manufacturer uses the same PID among different products, it's a
> PID conflict. I don't think it's the case of the device, unless JKY
> Technology reuses PID 0x110b for products other than Q2A.

The device's VID & PID information are exactly the same as Apple's official information.
Misusing Apple digital headphones' VID and PID information

>
> >
> > usb 1-1: New USB device found, idVendor=05ac, idProduct=110b
> > usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
> > usb 1-1: Product: Q2A
> > usb 1-1: Manufacturer: JKY Technology
> > usb 1-1: SerialNumber: 330270D2251225
> >
> > Signed-off-by: Lianqin Hu <hulianqin@xxxxxxxx>
> > ---
> > sound/usb/quirks.c | 2 ++
> > 1 file changed, 2 insertions(+)
> >
> > diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c
> > index 0de7c9d94259..ad2ce384e32d 100644
> > --- a/sound/usb/quirks.c
> > +++ b/sound/usb/quirks.c
> > @@ -2200,6 +2200,8 @@ struct usb_audio_quirk_flags_table {
> >
> > static const struct usb_audio_quirk_flags_table quirk_flags_table[] = {
> > /* Device and string descriptor matches */
> > + DEVICE_STRING_FLG(0x05ac, 0x110b, "JKY Technology", "Q2A", /* JKY Technology Q2A */
>
> Hence, I don't think it's necessary to match "Q2A" here.
>
> Meanwhile, in any case, the comment should describe the VID/PID conflict
> instead of repeating the string descriptor(s) being matched, and the
> strings should break into another line.

OK, The comments should include information about any conflicting vid and pid information.

>
> See how commit b13031ca112a ("ALSA: usb-audio: Deconflict VID between
> Focusrite Novation & MV-SILICON") describe the conflict and arrange
> lines.
>
> > + QUIRK_FLAG_FORCE_IFACE_RESET | QUIRK_FLAG_IFACE_DELAY),
>
> Bad indent.
After careful inspection, the indentation in quirk.c appears to be consistent with previous indentation practices.

DEVICE_FLG(0x413c, 0xa506, /* Dell AE515 sound bar */
QUIRK_FLAG_GET_SAMPLE_RATE),
DEVICE_FLG(0x534d, 0x0021, /* MacroSilicon MS2100/MS2106 */
QUIRK_FLAG_ALIGN_TRANSFER),
DEVICE_FLG(0x534d, 0x2109, /* MacroSilicon MS2109 */
QUIRK_FLAG_ALIGN_TRANSFER),
DEVICE_FLG(0x84ef, 0x0082, /* Hotone Audio Pulze Mini */
QUIRK_FLAG_MIXER_PLAYBACK_LINEAR_VOL | QUIRK_FLAG_MIXER_CAPTURE_LINEAR_VOL),

>
> This is the first DEVICE_STRING_FLG() item, so please don't set a bad
> example. I would prefer:
>
> DEVICE_STRING_FLG(0x05ac, 0x110b, /* VID conflicts with Apple */
> "JKY Technology", NULL /* Q2A */,
> QUIRK_FLAG_FORCE_IFACE_RESET | QUIRK_FLAG_IFACE_DELAY),
>
OK,This way of writing is better, but the indentation is slightly different from that of the predecessors.
I personally hope to keep it consistent with the predecessors.

> Thanks,
> Rong
>
> >
> > /* Device matches */
> > DEVICE_FLG(0x001f, 0x0b21, /* AB13X USB Audio */
> > --
> > 2.39.0

Thanks
Lianqin