diff -urN src/sys/dev/usb.orig/uhid.c src/sys/dev/usb/uhid.c --- src/sys/dev/usb.orig/uhid.c Sun Jan 30 02:00:10 2005 +++ src/sys/dev/usb/uhid.c Sun May 22 10:35:28 2005 @@ -91,6 +91,9 @@ /* Report descriptor for broken Wacom Graphire */ #include +/* For hid blacklist quirk */ +#include + #ifdef USB_DEBUG #define DPRINTF(x) if (uhiddebug) logprintf x #define DPRINTFN(n,x) if (uhiddebug>(n)) logprintf x @@ -190,6 +193,8 @@ return (UMATCH_NONE); id = usbd_get_interface_descriptor(uaa->iface); if (id == NULL || id->bInterfaceClass != UICLASS_HID) + return (UMATCH_NONE); + if (usbd_get_quirks(uaa->device)->uq_flags & UQ_HID_IGNORE) return (UMATCH_NONE); #if 0 if (uaa->matchlvl) diff -urN src/sys/dev/usb.orig/usb_quirks.c src/sys/dev/usb/usb_quirks.c --- src/sys/dev/usb.orig/usb_quirks.c Sun Jan 30 02:00:10 2005 +++ src/sys/dev/usb/usb_quirks.c Sun May 22 10:31:55 2005 @@ -101,6 +101,15 @@ ANY, { UQ_ASSUME_CM_OVER_DATA }}, { USB_VENDOR_SUNTAC, USB_PRODUCT_SUNTAC_AS64LX, 0x100, { UQ_ASSUME_CM_OVER_DATA }}, + /* Devices which should be ignored by uhid */ + { USB_VENDOR_APC, USB_PRODUCT_APC_UPS, + ANY, { UQ_HID_IGNORE }}, + { USB_VENDOR_DELORME, USB_PRODUCT_DELORME_EARTHMATE, + ANY, { UQ_HID_IGNORE }}, + { USB_VENDOR_MGE, USB_PRODUCT_MGE_UPS1, + ANY, { UQ_HID_IGNORE }}, + { USB_VENDOR_MGE, USB_PRODUCT_MGE_UPS2, + ANY, { UQ_HID_IGNORE }}, { 0, 0, 0, { 0 } } }; diff -urN src/sys/dev/usb.orig/usb_quirks.h src/sys/dev/usb/usb_quirks.h --- src/sys/dev/usb.orig/usb_quirks.h Sun Jan 30 02:00:10 2005 +++ src/sys/dev/usb/usb_quirks.h Sun May 22 10:37:18 2005 @@ -54,6 +54,7 @@ #define UQ_AU_INP_ASYNC 0x0800 /* input is async despite claim of adaptive */ #define UQ_ASSUME_CM_OVER_DATA 0x1000 /* modem device breaks on cm over data */ #define UQ_BROKEN_BIDIR 0x2000 /* printer has broken bidir mode */ +#define UQ_HID_IGNORE 0x4000 /* device should be ignored by hid class */ }; extern const struct usbd_quirks usbd_no_quirk; diff -urN src/sys/dev/usb.orig/usbdevs src/sys/dev/usb/usbdevs --- src/sys/dev/usb.orig/usbdevs Wed May 18 21:45:23 2005 +++ src/sys/dev/usb/usbdevs Sun May 22 10:42:35 2005 @@ -90,6 +90,7 @@ vendor DIAMOND2 0x045a Diamond (Supra) vendor MICROSOFT 0x045e Microsoft vendor PRIMAX 0x0461 Primax Electronics +vendor MGE 0x0463 MGE UPS Systems vendor AMP 0x0464 AMP vendor CHERRY 0x046a Cherry Mikroschalter vendor MEGATRENDS 0x046b American Megatrends @@ -470,7 +471,7 @@ product ALTEC ASC495 0xff05 ASC495 Speakers /* American Power Conversion products */ -product APC UPSPRO500 0x0002 Back-UPS Pro 500 +product APC UPS 0x0002 Uninterruptible Power Supply /* Anchor products */ product ANCHOR EZUSB 0x2131 EZUSB @@ -962,6 +963,10 @@ /* Metricom products */ product METRICOM RICOCHET_GS 0x0001 Ricochet GS + +/* MGE UPS Systems */ +product MGE UPS1 0x0001 MGE UPS SYSTEMS PROTECTIONCENTER 1 +product MGE UPS2 0xffff MGE UPS SYSTEMS PROTECTIONCENTER 2 /* Microsoft products */ product MICROSOFT SIDEPREC 0x0008 SideWinder Precision Pro