Re: 答复: [PATCH] ALSA: usb-audio: Add iface reset and delay quirk for JKY Technology Q2A
From: Rong Zhang
Date: Fri Jul 24 2026 - 08:14:15 EST
Hi Lianqin,
On Fri, 2026-07-24 at 11:41 +0000, 胡连勤 wrote:
> 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
It doesn't matter at all whether the PID is the same as one of Apple
products.
Between two different manufacturers there is only a VID conflict, but no
PID conflict. It is a PID conflict *only if* two different products from
*JKY Technology* share the same PID, but you haven't seen another JKY
Technology product with the same PID, right?
>
> >
> > >
> > > 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.
Alignment should match the open parenthesis. See PARENTHESIS_ALIGNMENT in
scripts/checkpatch.pl. It's not a strict requirement but it makes the
code more readable. See also the indentation of VENDOR_STRING_FLG().
Thanks,
Rong
>
> > Thanks,
> > Rong
> >
> > >
> > > /* Device matches */
> > > DEVICE_FLG(0x001f, 0x0b21, /* AB13X USB Audio */
> > > --
> > > 2.39.0
>
> Thanks
> Lianqin