[v2] usb: add NO_LPM quirk for Realforce 87U Keyboard

Message ID 20221027090342.38928-1-ndumazet@google.com
State New
Headers
Series [v2] usb: add NO_LPM quirk for Realforce 87U Keyboard |

Commit Message

Nicolas Dumazet Oct. 27, 2022, 9:03 a.m. UTC
  Before adding this quirk, this (mechanical keyboard) device would not be
recognized, logging:

  new full-speed USB device number 56 using xhci_hcd
  unable to read config index 0 descriptor/start: -32
  chopping to 0 config(s)

It would take dozens of plugging/unpuggling cycles for the keyboard to
be recognized. Keyboard seems to simply work after applying this quirk.

This issue had been reported by users in two places already ([1], [2])
but nobody tried upstreaming a patch yet. After testing I believe their
suggested fix (DELAY_INIT + NO_LPM + DEVICE_QUALIFIER) was probably a
little overkill. I assume this particular combination was tested because
it had been previously suggested in [3], but only NO_LPM seems
sufficient for this device.

[1]: https://qiita.com/float168/items/fed43d540c8e2201b543
[2]: https://blog.kostic.dev/posts/making-the-realforce-87ub-work-with-usb30-on-Ubuntu/
[3]: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1678477

---
Changes in v2:
  - add the entry to the right location (sorting entries by
    vendor/device id).

Cc: stable@vger.kernel.org
Signed-off-by: Nicolas Dumazet <ndumazet@google.com>
---
 drivers/usb/core/quirks.c | 3 +++
 1 file changed, 3 insertions(+)
  

Comments

Greg KH Nov. 9, 2022, 11:29 a.m. UTC | #1
On Thu, Oct 27, 2022 at 11:03:42AM +0200, Nicolas Dumazet wrote:
> Before adding this quirk, this (mechanical keyboard) device would not be
> recognized, logging:
> 
>   new full-speed USB device number 56 using xhci_hcd
>   unable to read config index 0 descriptor/start: -32
>   chopping to 0 config(s)
> 
> It would take dozens of plugging/unpuggling cycles for the keyboard to
> be recognized. Keyboard seems to simply work after applying this quirk.
> 
> This issue had been reported by users in two places already ([1], [2])
> but nobody tried upstreaming a patch yet. After testing I believe their
> suggested fix (DELAY_INIT + NO_LPM + DEVICE_QUALIFIER) was probably a
> little overkill. I assume this particular combination was tested because
> it had been previously suggested in [3], but only NO_LPM seems
> sufficient for this device.
> 
> [1]: https://qiita.com/float168/items/fed43d540c8e2201b543
> [2]: https://blog.kostic.dev/posts/making-the-realforce-87ub-work-with-usb30-on-Ubuntu/
> [3]: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1678477
> 
> ---
> Changes in v2:
>   - add the entry to the right location (sorting entries by
>     vendor/device id).
> 
> Cc: stable@vger.kernel.org
> Signed-off-by: Nicolas Dumazet <ndumazet@google.com>
> ---

By putting your s-o-b below the --- line, tools will drop it, how did
you test this?

Put the v2 stuff below the --- line, don't add a new one.  See the
thousands of examples on the list for how to do this correctly (as well
as the kernel documentation.)

Can you fix this up and resend a v3 please?

thanks,

greg k-h
  
Nicolas Dumazet Nov. 9, 2022, 12:31 p.m. UTC | #2
On Wed, Nov 9, 2022 at 12:29 PM Greg Kroah-Hartman
<gregkh@linuxfoundation.org> wrote:
>
> On Thu, Oct 27, 2022 at 11:03:42AM +0200, Nicolas Dumazet wrote:
> > Before adding this quirk, this (mechanical keyboard) device would not be
> > recognized, logging:
> >
> >   new full-speed USB device number 56 using xhci_hcd
> >   unable to read config index 0 descriptor/start: -32
> >   chopping to 0 config(s)
> >
> > It would take dozens of plugging/unpuggling cycles for the keyboard to
> > be recognized. Keyboard seems to simply work after applying this quirk.
> >
> > This issue had been reported by users in two places already ([1], [2])
> > but nobody tried upstreaming a patch yet. After testing I believe their
> > suggested fix (DELAY_INIT + NO_LPM + DEVICE_QUALIFIER) was probably a
> > little overkill. I assume this particular combination was tested because
> > it had been previously suggested in [3], but only NO_LPM seems
> > sufficient for this device.
> >
> > [1]: https://qiita.com/float168/items/fed43d540c8e2201b543
> > [2]: https://blog.kostic.dev/posts/making-the-realforce-87ub-work-with-usb30-on-Ubuntu/
> > [3]: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1678477
> >
> > ---
> > Changes in v2:
> >   - add the entry to the right location (sorting entries by
> >     vendor/device id).
> >
> > Cc: stable@vger.kernel.org
> > Signed-off-by: Nicolas Dumazet <ndumazet@google.com>
> > ---
>
> By putting your s-o-b below the --- line, tools will drop it, how did
> you test this?
>
> Put the v2 stuff below the --- line, don't add a new one.  See the
> thousands of examples on the list for how to do this correctly (as well
> as the kernel documentation.)
>
> Can you fix this up and resend a v3 please?

Duh -- apologies for this rookie mistake. v3 sent your way.

>
> thanks,
>
> greg k-h
  

Patch

diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c
index 0722d2131305..079e183cf3bf 100644
--- a/drivers/usb/core/quirks.c
+++ b/drivers/usb/core/quirks.c
@@ -362,6 +362,9 @@  static const struct usb_device_id usb_quirk_list[] = {
 	{ USB_DEVICE(0x0781, 0x5583), .driver_info = USB_QUIRK_NO_LPM },
 	{ USB_DEVICE(0x0781, 0x5591), .driver_info = USB_QUIRK_NO_LPM },
 
+	/* Realforce 87U Keyboard */
+	{ USB_DEVICE(0x0853, 0x011b), .driver_info = USB_QUIRK_NO_LPM },
+
 	/* M-Systems Flash Disk Pioneers */
 	{ USB_DEVICE(0x08ec, 0x1000), .driver_info = USB_QUIRK_RESET_RESUME },