summaryrefslogtreecommitdiffstats
path: root/sys/dev/usb/usb_quirks.c
diff options
context:
space:
mode:
authorn_hibma <n_hibma@FreeBSD.org>2001-07-05 10:12:59 +0000
committern_hibma <n_hibma@FreeBSD.org>2001-07-05 10:12:59 +0000
commit60099359c243e7eea92b1b5c026a423abd00b595 (patch)
tree0df10f0e8ccd9a71f18fdbed27992d4e568b0bdb /sys/dev/usb/usb_quirks.c
parent50549aff55be61754ae5f0d122d4a46e81618888 (diff)
downloadFreeBSD-src-60099359c243e7eea92b1b5c026a423abd00b595.zip
FreeBSD-src-60099359c243e7eea92b1b5c026a423abd00b595.tar.gz
Pull in the most recent version of usb_quirks.h and propagate the necessary
changes to the various files. Also, pull in most of the current usb_subr.c file.
Diffstat (limited to 'sys/dev/usb/usb_quirks.c')
-rw-r--r--sys/dev/usb/usb_quirks.c38
1 files changed, 27 insertions, 11 deletions
diff --git a/sys/dev/usb/usb_quirks.c b/sys/dev/usb/usb_quirks.c
index e965a36..b89e264 100644
--- a/sys/dev/usb/usb_quirks.c
+++ b/sys/dev/usb/usb_quirks.c
@@ -1,4 +1,4 @@
-/* $NetBSD: usb_quirks.c,v 1.30 2000/10/24 03:59:16 explorer Exp $ */
+/* $NetBSD: usb_quirks.c,v 1.38 2001/04/15 10:26:36 augustss Exp $ */
/* $FreeBSD$ */
/*
@@ -50,21 +50,23 @@
extern int usbdebug;
#endif
-Static struct usbd_quirk_entry {
+#define ANY 0xffff
+
+Static const struct usbd_quirk_entry {
u_int16_t idVendor;
u_int16_t idProduct;
u_int16_t bcdDevice;
struct usbd_quirks quirks;
} usb_quirks[] = {
{ USB_VENDOR_KYE, USB_PRODUCT_KYE_NICHE, 0x100, { UQ_NO_SET_PROTO}},
- { USB_VENDOR_INSIDEOUT,USB_PRODUCT_INSIDEOUT_EDGEPORT4,
+ { USB_VENDOR_INSIDEOUT, USB_PRODUCT_INSIDEOUT_EDGEPORT4,
0x094, { UQ_SWAP_UNICODE}},
{ USB_VENDOR_BTC, USB_PRODUCT_BTC_BTC7932, 0x100, { UQ_NO_STRINGS }},
{ USB_VENDOR_ADS, USB_PRODUCT_ADS_UBS10BT, 0x002, { UQ_NO_STRINGS }},
{ USB_VENDOR_PERACOM, USB_PRODUCT_PERACOM_SERIAL1, 0x101, { UQ_NO_STRINGS }},
{ USB_VENDOR_WACOM, USB_PRODUCT_WACOM_CT0405U, 0x101, { UQ_NO_STRINGS }},
{ USB_VENDOR_DALLAS, USB_PRODUCT_DALLAS_J6502, 0x0a2, { UQ_BAD_ADC }},
- { USB_VENDOR_DALLAS, USB_PRODUCT_DALLAS_J6502, 0x0a2, { UQ_NO_XU }},
+ { USB_VENDOR_DALLAS, USB_PRODUCT_DALLAS_J6502, 0x0a2, { UQ_AU_NO_XU }},
{ USB_VENDOR_ALTEC, USB_PRODUCT_ALTEC_ADA70, 0x103, { UQ_BAD_ADC }},
{ USB_VENDOR_ALTEC, USB_PRODUCT_ALTEC_ASC495, 0x000, { UQ_BAD_AUDIO }},
{ USB_VENDOR_QTRONIX, USB_PRODUCT_QTRONIX_980N, 0x110, { UQ_SPUR_BUT_UP }},
@@ -73,22 +75,36 @@ Static struct usbd_quirk_entry {
{ USB_VENDOR_MCT, USB_PRODUCT_MCT_USB232, 0x102, { UQ_BUS_POWERED }},
{ USB_VENDOR_METRICOM, USB_PRODUCT_METRICOM_RICOCHET_GS,
0x100, { UQ_ASSUME_CM_OVER_DATA | UQ_NO_STRINGS }},
+ { USB_VENDOR_TI, USB_PRODUCT_TI_UTUSB41, 0x110, { UQ_POWER_CLAIM }},
{ USB_VENDOR_ACERP, USB_PRODUCT_ACERP_ACERSCAN_320U,
- 0x000, { UQ_NO_STRINGS }},
+ 0x000, { UQ_NO_STRINGS }},
+ { USB_VENDOR_TELEX, USB_PRODUCT_TELEX_MIC1, 0x009, { UQ_AU_NO_FRAC }},
+ { USB_VENDOR_SILICONPORTALS, USB_PRODUCT_SILICONPORTALS_YAPPHONE,
+ 0x100, { UQ_AU_INP_ASYNC }},
+ /* XXX These should have a revision number, but I don't know what they are. */
+ { USB_VENDOR_HP, USB_PRODUCT_HP_895C, ANY, { UQ_BROKEN_BIDIR }},
+ { USB_VENDOR_HP, USB_PRODUCT_HP_880C, ANY, { UQ_BROKEN_BIDIR }},
+ { USB_VENDOR_HP, USB_PRODUCT_HP_815C, ANY, { UQ_BROKEN_BIDIR }},
+ { USB_VENDOR_HP, USB_PRODUCT_HP_810C, ANY, { UQ_BROKEN_BIDIR }},
+ { USB_VENDOR_HP, USB_PRODUCT_HP_830C, ANY, { UQ_BROKEN_BIDIR }},
+
{ 0, 0, 0, { 0 } }
};
-struct usbd_quirks usbd_no_quirk = { 0 };
+const struct usbd_quirks usbd_no_quirk = { 0 };
-struct usbd_quirks *
+const struct usbd_quirks *
usbd_find_quirk(usb_device_descriptor_t *d)
{
- struct usbd_quirk_entry *t;
+ const struct usbd_quirk_entry *t;
+ u_int16_t vendor = UGETW(d->idVendor);
+ u_int16_t product = UGETW(d->idProduct);
+ u_int16_t revision = UGETW(d->bcdDevice);
for (t = usb_quirks; t->idVendor != 0; t++) {
- if (t->idVendor == UGETW(d->idVendor) &&
- t->idProduct == UGETW(d->idProduct) &&
- t->bcdDevice == UGETW(d->bcdDevice))
+ if (t->idVendor == vendor &&
+ t->idProduct == product &&
+ (t->bcdDevice == ANY || t->bcdDevice == revision))
break;
}
#ifdef USB_DEBUG
OpenPOWER on IntegriCloud