[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: