答复: 答复: [PATCH] ALSA: usb-audio: Add iface reset and delay quirk for JKY Technology Q2A
From: 胡连勤
Date: Fri Jul 24 2026 - 08:15:02 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
>
> It doesn't matter at all whether the PID is the same as one of Apple
> products.
Yes, Agreed, PID cannot represent the manufacturer.
> 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?
Yes, we haven't encountered it yet.
>
> >
> > >
> > > >
> > > > 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().
OK,I'll make some changes and add:
Suggested by: Rong Zhang <i@xxxxxxxx>
Thanks
Lianqin