diff options
author | n_hibma <n_hibma@FreeBSD.org> | 2001-07-05 10:12:59 +0000 |
---|---|---|
committer | n_hibma <n_hibma@FreeBSD.org> | 2001-07-05 10:12:59 +0000 |
commit | 60099359c243e7eea92b1b5c026a423abd00b595 (patch) | |
tree | 0df10f0e8ccd9a71f18fdbed27992d4e568b0bdb /sys/dev/usb/usb_quirks.c | |
parent | 50549aff55be61754ae5f0d122d4a46e81618888 (diff) | |
download | FreeBSD-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.c | 38 |
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 |