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.

