[RFC] usb_scan_device() only considers first interface

Heinrich Schuchardt xypron.glpk at gmx.de
Mon Apr 5 01:04:07 CEST 2021


Hello Marek,

I have a USB HID device with two interfaces:

2: Human Interface,  USB Revision 1.0
  - WCH.CN 7
             Serial To HID 12345678
  - Class: (from Interface) Human Interface
  - PacketSize: 8  Configurations: 1
  - Vendor: 0x1a86  Product 0xe026 Version 55.0
    Configuration: 1
    - Interfaces: 2 Bus Powered Remote Wakeup 100mA
      Interface: 0
      - Alternate Setting 0, Endpoints: 2
      - Class Human Interface, Subclass: None
      - Endpoint 2 In Interrupt MaxPacket 8 Interval 1ms
      - Endpoint 2 Out Interrupt MaxPacket 8 Interval 1ms
      Interface: 1
      - Alternate Setting 0, Endpoints: 1
      - Class Human Interface, Subclass: Boot Keyboard
      - Endpoint 1 In Interrupt MaxPacket 8 Interval 1ms

Linux correctly detects the HID keyboard and receives key strokes.

U-Boot's usb_scan_device() does not detect that this is a boot keyboard
because it only tries to match interface 0 and not interface 1.
Shouldn't it iterate over all interfaces to find a matching driver?

Further work in common/usb_kbd.c will be needed to actually use interface 1.

Best regards

Heinrich


More information about the U-Boot mailing list