PERFORCE change 166589 for review
Hans Petter Selasky
hselasky at FreeBSD.org
Sun Jul 26 15:50:46 UTC 2009
http://perforce.freebsd.org/chv.cgi?CH=166589
Change 166589 by hselasky at hselasky_laptop001 on 2009/07/26 15:49:45
USB CORE:
- fix false positive keyboard detection in a more general way.
- make sure driver_info field has a default value.
PR: usb/137129
Affected files ...
.. //depot/projects/usb/src/sys/dev/usb/input/ukbd.c#23 edit
.. //depot/projects/usb/src/sys/dev/usb/quirk/usb_quirk.c#6 edit
.. //depot/projects/usb/src/sys/dev/usb/usb_device.c#45 edit
Differences ...
==== //depot/projects/usb/src/sys/dev/usb/input/ukbd.c#23 (text+ko) ====
@@ -711,7 +711,15 @@
if (error)
return (ENXIO);
+ /*
+ * NOTE: we currently don't support USB mouse and USB keyboard
+ * on the same USB endpoint.
+ */
if (hid_is_collection(d_ptr, d_len,
+ HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_MOUSE))) {
+ /* most likely a mouse */
+ error = ENXIO;
+ } else if (hid_is_collection(d_ptr, d_len,
HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_KEYBOARD))) {
if (usb_test_quirk(uaa, UQ_KBD_IGNORE))
error = ENXIO;
==== //depot/projects/usb/src/sys/dev/usb/quirk/usb_quirk.c#6 (text+ko) ====
@@ -106,8 +106,6 @@
{USB_QUIRK_ENTRY(USB_VENDOR_HP, USB_PRODUCT_HP_830C, 0x0000, 0xFFFF, UQ_BROKEN_BIDIR, UQ_NONE)},
{USB_QUIRK_ENTRY(USB_VENDOR_HP, USB_PRODUCT_HP_1220C, 0x0000, 0xFFFF, UQ_BROKEN_BIDIR, UQ_NONE)},
{USB_QUIRK_ENTRY(USB_VENDOR_XEROX, USB_PRODUCT_XEROX_WCM15, 0x0000, 0xFFFF, UQ_BROKEN_BIDIR, UQ_NONE)},
- /* Devices which should be ignored by ukbd */
- {USB_QUIRK_ENTRY(USB_VENDOR_CYPRESS, USB_PRODUCT_CYPRESS_IKARILASER, 0x0000, 0xFFFF, UQ_KBD_IGNORE, UQ_NONE)},
/* Devices which should be ignored by uhid */
{USB_QUIRK_ENTRY(USB_VENDOR_APC, USB_PRODUCT_APC_UPS, 0x0000, 0xFFFF, UQ_HID_IGNORE, UQ_NONE)},
{USB_QUIRK_ENTRY(USB_VENDOR_BELKIN, USB_PRODUCT_BELKIN_F6C550AVR, 0x0000, 0xFFFF, UQ_HID_IGNORE, UQ_NONE)},
==== //depot/projects/usb/src/sys/dev/usb/usb_device.c#45 (text+ko) ====
@@ -1283,6 +1283,7 @@
uaa.info.bIfaceNum =
iface->idesc->bInterfaceNumber;
uaa.use_generic = 0;
+ uaa.driver_info = 0; /* reset driver_info */
DPRINTFN(2, "iclass=%u/%u/%u iindex=%u/%u\n",
uaa.info.bInterfaceClass,
@@ -1299,6 +1300,7 @@
/* try generic interface drivers last */
uaa.use_generic = 1;
+ uaa.driver_info = 0; /* reset driver_info */
if (usb_probe_and_attach_sub(udev, &uaa)) {
/* ignore */
More information about the p4-projects
mailing list