On 4/5/21 1:04 AM, Heinrich Schuchardt wrote:
Hello Marek,

Hi,

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?

It likely should, but I doubt anyone had such hardware when the keyboard driver was originally implemented.

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

Patches welcome.

Reply via email to