Bug#248855: Useful clues for non-working USB keyboard on SunBlade 150 / sparc64
Here's a corrected patch for alternative 2: s/usb/hid/ :-(
I also found some references that actually support patch 1:
- bInterfaceClass is defined in
http://www.usb.org/developers/defined_class
- bInterfaceSubClass and bInterfaceProtocol are defined in
http://www.usb.org/developers/devclass_docs/HID1_11.pdf
(see pages 18 and 19, i.e. page numbers 8 and 9)
--- usb-kbd.c 2004-11-09 14:59:30.000000000 +0100
+++ usb-kbd_alt2.c 2004-12-07 23:13:23.000000000 +0100
@@ -144,7 +144,8 @@
k->present = TRUE;
keyboards = k;
}
- if (((p = strstr(buf, "usbhid")) != NULL) &&
+ if ((((p = strstr(buf, "Driver=usbhid")) != NULL) ||
+ ((p = strstr(buf, "Driver=hid")) != NULL)) &&
((p = strstr(buf, "Cls=03")) != NULL) && // Human Interface Device
((p = strstr(buf, "Sub=01")) != NULL) && // Boot Interface Subclass
((p = strstr(buf, "Prot=01")) != NULL)) { // Keyboard
@@ -152,7 +153,8 @@
// attached. Unfortunately AFAICT there's no info
// on the keyboard itself. For now let's assume
// we can use the Vendor & ProdID of the HID itself.
- di_debug ("Found usbhid kbd: 0x%hx:0x%hx\n", vendorid, productid);
+ // 'Driver=usb' was observed on a SunBlade 150 (sparc64)
+ di_debug ("Found usbhid/hid kbd: 0x%hx:0x%hx\n", vendorid, productid);
k = usb_new_entry (keyboards);
data = xmalloc(sizeof(usb_data));
k->data = (usb_data *) data;
Reply to: