a6d9a40e81
- Sync ohci, uhci and usbdi modules with NetBSD in order to obtain the following improvements: o New USBD_NO_TSLEEP flag can be used in place of UQ_NO_TSLEEP quirk. This allows drivers to specify busy waiting only for certain transfers (namely control transfers for reading/writing registers and stuff). o New USBD_FORCE_SHORT_XFER flag can be used to deal with devices like the ADMtek Pegasus that sense the end of bulk OUT transfers in a special way (if a transfer is exactly a multiple of 64 bytes in size, you need to send an extra empty packet to terminate the transfer). o usbd_open_pipe_intr() now accepts an interval argument which can be used to change the rate at which the interrupt callback routine is invoked. Specifying USBD_DEFAULT_INTERVAL uses the value specified in the device's config data, but drivers can override it if needed. - Change if_aue to use USBD_FORCE_SHORT_XFER for packet transmissions. - Change if_aue, if_kue and if_cue to use USBD_NO_TSLEEP for all control transfers. We no longer force the non-tsleep hack for bulk transfers since these are done asynchronously anyway. - Removed quirk entry fiddling from if_aue and if_kue since we don't need it anymore now that we have the USBD_NO_TSLEEP flag. - Tweak ulpt, uhid, ums and ukbd drivers to use the new arg to usbd_open_pipe_intr(). - Add a flag to the softc struct in the ethernet drivers to indicate when a device has been detached, and use this flag to perform tests to prevent the drivers from trying to do control transfers if this is the case. This is necessary because calling if_detach() with INET6 enabled will eventually result in a call to the driver's ioctl() routine to delete the multicast groups on the interface, which will result in attempts to perform control transfers. (It's possible this also happens even without INET6 support enabled.) This is pointless since we know that if the detach method has been called, the hardware has been unplugged. - Changed watchdog timeout routines to just call the driver init routines to initialize the device states without trying to close and re-open the pipes. This is partly because we don't want to frob things at interrupt context, but also because this doesn't seem to work right and I don't want to panic the system just because a USB device may have stopped responding. - Fix aue_rxeof() to be a little smarter about detecting when a double transfer is needed. Unfortunately, the design of the chip makes it hard to get this exactly right. Hopefully, this will go away once either Nick or Lennart finds the bug in the uhci driver that makes this ugly hack necessary. - Also sync usbdevs with NetBSD.
426 lines
14 KiB
Plaintext
426 lines
14 KiB
Plaintext
$FreeBSD$
|
|
|
|
/*
|
|
* Copyright (c) 1998 The NetBSD Foundation, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* This code is derived from software contributed to The NetBSD Foundation
|
|
* by Lennart Augustsson (augustss@carlstedt.se) at
|
|
* Carlstedt Research & Technology.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
* documentation and/or other materials provided with the distribution.
|
|
* 3. All advertising materials mentioning features or use of this software
|
|
* must display the following acknowledgement:
|
|
* This product includes software developed by the NetBSD
|
|
* Foundation, Inc. and its contributors.
|
|
* 4. Neither the name of The NetBSD Foundation nor the names of its
|
|
* contributors may be used to endorse or promote products derived
|
|
* from this software without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
|
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
|
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
|
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
* POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
|
|
/*
|
|
* List of known USB vendors
|
|
*/
|
|
|
|
vendor AOX 0x03e8 Aox Inc.
|
|
vendor HP 0x03f0 Hewlett Packard
|
|
vendor NEC 0x0409 NEC
|
|
vendor KODAK 0x040a Eastman Kodak Corp.
|
|
vendor MELCO 0x0411 Melco Inc.
|
|
vendor CATC 0x0423 Computer Access Technology Corp.
|
|
vendor GRAVIS 0x0428 Advanced Gravis Computer Tech. Ltd.
|
|
vendor SUN 0x0430 Sun Microsystems
|
|
vendor LEXMARK 0x043d Lexmark International Inc.
|
|
vendor NANAO 0x0440 NANAO Corp.
|
|
vendor THRUST 0x044f Thrustmaster
|
|
vendor TI 0x0451 Texas Instruments
|
|
vendor KYE 0x0458 KYE Systems Corp.
|
|
vendor MICROSOFT 0x045e Microsoft
|
|
vendor PRIMAX 0x0461 Primax Electronics
|
|
vendor CHERRY 0x046a Cherry Mikroschalter GmbH
|
|
vendor LOGITECH 0x046d Logitech Inc.
|
|
vendor BTC 0x046e Behavior Tech. Computer
|
|
vendor PHILIPS 0x0471 Philips
|
|
vendor CONNECTIX 0x0478 Connectix Corp.
|
|
vendor LUCENT 0x047e Lucent
|
|
vendor STMICRO 0x0483 STMicroelectronics
|
|
vendor ACER 0x04a5 Acer Peripheral Inc.
|
|
vendor CANON 0x04a9 Canon Inc.
|
|
vendor CYPRESS 0x04b4 Cypress Semiconductor
|
|
vendor EPSON 0x04b8 Seiko Epson Corp.
|
|
vendor 3COMUSR 0x04c1 U.S. Robotics
|
|
vendor KONICA 0x04c8 Konica Corp.
|
|
vendor ALTEC 0x04d2 Altec Lansing
|
|
vendor SHUTTLE 0x04e6 Shuttle Technology
|
|
vendor CHICONY 0x04f2 Chicony Electronics Co., Ltd.
|
|
vendor BROTHER 0x04f9 Brother Industries Corp.
|
|
vendor DALLAS 0x04fa Dallas Semiconductor
|
|
vendor 3COM 0x0506 3Com Corp.
|
|
vendor BELKIN 0x050d Belkin Components
|
|
vendor KAWATSU 0x050f Kawatsu Semiconductor, Inc.
|
|
vendor APC 0x051d American Power Conversion
|
|
vendor NETCHIP 0x0525 NetChip Technology
|
|
vendor AKS 0x0529 Fast Security AG
|
|
vendor UNIACCESS 0x0540 Universal Access
|
|
vendor ANCHOR 0x0547 Anchor Chips Inc.
|
|
vendor VISION 0x0553 VLSI Vision Ltd.
|
|
vendor ATEN 0x0557 ATEN International Corp. Ltd.
|
|
vendor MUSTEK 0x055f Mustek Systems Inc.
|
|
vendor TELEX 0x0562 Telex Communications Inc.
|
|
vendor PERACOM 0x0565 Peracom Networks Inc.
|
|
vendor WACOM 0x056a WACOM Corp. Ltd.
|
|
vendor ETEK 0x056c e-TEK Labs
|
|
vendor EIZO 0x056d EIZO
|
|
vendor ELECOM 0x056e Elecom Corp. Ltd.
|
|
vendor ROCKFIRE 0x0583 Rockfire
|
|
vendor IOMEGA 0x059b Iomega Corp.
|
|
vendor OMNIVISION 0x05a9 OmniVision
|
|
vendor INSYSTEM 0x05ab In-System Design
|
|
vendor APPLE 0x05ac Apple Computer
|
|
vendor QTRONIX 0x05c7 Qtronix Corp
|
|
vendor ELSA 0x05cc ELSA Gmbh
|
|
vendor EIZONANAO 0x05e7 EIZO Nanao
|
|
vendor KLSI 0x05e9 Kawasaki LSI
|
|
vendor PIENGINEERING 0x05f3 P.I. Engineering
|
|
vendor CHIC 0x05fe Chic Technology
|
|
vendor SOLIDYEAR 0x060b Solid Year
|
|
vendor MACALLY 0x0618 Macally
|
|
vendor LINKSYS 0x066b Linksys Inc.
|
|
vendor MULTITECH 0x06e0 MultiTech
|
|
vendor ADS 0x06e1 ADS Technologies
|
|
vendor SIRIUS 0x06ea Sirius Technologies
|
|
vendor SMC 0x0707 Standard Microsystems Corp
|
|
vendor MIDIMAN 0x0763 Midiman
|
|
vendor SANDISK 0x0781 SanDisk Corp
|
|
vendor ADMTEK 0x07a6 ADMtek Inc.
|
|
vendor COREGA 0x07aa Corega
|
|
vendor SIIG 0x07cc SIIG
|
|
vendor ZOOM 0x0803 Zoom Telephonics Inc.
|
|
vendor HANDSPRING 0x082d Handspring Inc.
|
|
vendor DIAMOND 0x0841 Diamond
|
|
vendor NETGEAR 0x0846 BayNETGEAR Inc.
|
|
vendor ACTIVEWIRE 0x0854 ActiveWire Inc.
|
|
vendor BILLIONTON 0x08dd Billionton Systems Inc.
|
|
vendor MOTOROLA 0x1063 Motorola
|
|
vendor PLX 0x10b5 PLX
|
|
vendor INSIDEOUT 0x1608 Inside Out Networks
|
|
vendor ENTREGA 0x1645 Entrega
|
|
vendor DLINK 0x2001 D-Link Corp
|
|
vendor INTEL 0x8086 Intel
|
|
|
|
/*
|
|
* List of known products. Grouped by vendor.
|
|
*/
|
|
|
|
/* 3Com products */
|
|
product 3COM HOMECONN 0x009d HomeConnect USB Camera
|
|
product 3COM 3C19250 0x03E8 3C19250 Ethernet adapter
|
|
product 3COM USR56K 0x3021 U.S.Robotics 56000 Voice Faxmodem Pro
|
|
|
|
product 3COMUSR USR56K 0x3021 U.S.Robotics 56000 Voice Faxmodem Pro
|
|
|
|
/* Acer products */
|
|
product ACER ACERSCAN_C310U 0x12a6 Acerscan C310U
|
|
|
|
/* ActiveWire Inc. products */
|
|
product ACTIVEWIRE IOBOARD 0x0100 I/O Board
|
|
product ACTIVEWIRE IOBOARD_FW1 0x0101 I/O Board, rev. 1 firmware
|
|
|
|
/* ADMtek products */
|
|
product ADMTEK PEGASUS 0x0986 AN986 USB Ethernet adapter
|
|
|
|
/* ADS products */
|
|
product ADS UBS10BT 0x0008 UBS-10BT Ethernet adapter
|
|
|
|
/* Agiler products */
|
|
product ELECOM MOUSE29UO 0x0002 mouse 29UO
|
|
|
|
/* AKS products */
|
|
product AKS USBHASP 0x0001 USB-HASP 0.06
|
|
|
|
/* Altec Lansing products */
|
|
product ALTEC ASC495 0xff05 ASC495 Speakers
|
|
|
|
/* American Power Conversion products */
|
|
product APC UPSPRO500 0x0002 Back-UPS Pro 500
|
|
|
|
/* Anchor products */
|
|
product ANCHOR EZUSB 0x2131 EZUSB
|
|
|
|
/* AOX Inc. products */
|
|
product AOX USB101 0x0008 USB ethernet controller engine
|
|
|
|
/* ATen products */
|
|
product ATEN UC1284 0x2001 Parallel printer adapter
|
|
product ATEN UC10T 0x2002 10Mbps ethernet adapter
|
|
|
|
/* Belkin products */
|
|
/*product BELKIN F5U111 0x???? F5U111 Ethernet adapter*/
|
|
|
|
/* Billionton products */
|
|
product BILLIONTON USB100 0x0986 USB100N 10/100 FastEthernet Adapter
|
|
|
|
/* Brother Industries products */
|
|
product BROTHER HL1050 0x0002 HL-1050 laser printer
|
|
|
|
/* Behavior Technology Computer products */
|
|
product BTC BTC7932 0x6782 Keyboard with mouse port
|
|
|
|
/* Canon Inc. products */
|
|
product CANON S10 0x3041 PowerShot S10
|
|
|
|
/* CATC products */
|
|
product CATC NETMATE 0x000a Netmate ethernet adapter
|
|
product CATC NETMATE2 0x000c Netmate2 ethernet adapter
|
|
product CATC CHIEF 0x000d USB Chief Bus & Protocol Analyzer
|
|
product CATC ANDROMEDA 0x1237 Andromeda hub
|
|
|
|
/* Cherry products */
|
|
product CHERRY MY3000KBD 0x0001 My3000 keyboard
|
|
product CHERRY MY3000HUB 0x0003 My3000 hub
|
|
|
|
/* Chic Technology products */
|
|
product CHIC MOUSE1 0x0001 mouse
|
|
|
|
/* Chicony products */
|
|
product CHICONY KB8933 0x0001 KB-8933 keyboard
|
|
|
|
/* Connectix products */
|
|
product CONNECTIX QUICKCAM 0x0001 QuickCam
|
|
|
|
/* Corega products */
|
|
product COREGA ETHER_USB_T 0x0001 Ether USB-T
|
|
|
|
/* Cypress Semiconductor products */
|
|
product CYPRESS MOUSE 0x0001 mouse
|
|
product CYPRESS THERMO 0x0002 thermometer
|
|
|
|
/* D-Link products */
|
|
/*product DLINK DSBS25 0x0100 DSB-S25 serial adapter*/
|
|
product DLINK DSB650C 0x4000 10Mbps ethernet adapter
|
|
product DLINK DSB650TX 0x4002 10/100 ethernet adapter
|
|
product DLINK DSB650TX_PNA 0x4003 1/10/100 ethernet adapter
|
|
|
|
/* Dallas Semiconductor products */
|
|
product DALLAS J6502 0x4201 J-6502 speakers
|
|
|
|
/* Diamond products */
|
|
product DIAMOND RIO500USB 0x0001 Rio 500 USB
|
|
|
|
/* EIZO products */
|
|
product EIZO HUB 0x0000 hub
|
|
product EIZO MONITOR 0x0001 monitor
|
|
|
|
/* Elsa products */
|
|
product ELSA MODEM1 0x2265 ELSA Modem Board
|
|
|
|
/* Entrega products */
|
|
product ENTREGA 1S 0x0001 1S serial connector
|
|
product ENTREGA 2S 0x0002 2S serial connector
|
|
product ENTREGA 1S25 0x0003 1S25 serial connector
|
|
product ENTREGA 4S 0x0004 4S serial connector
|
|
product ENTREGA E45 0x0005 E45 Ethernet adapter
|
|
product ENTREGA CENTRONICS 0x0006 Centronics connector
|
|
product ENTREGA 1S9 0x0093 1S9 serial connector
|
|
product ENTREGA EZUSB 0x8000 EZ-USB
|
|
/*product ENTREGA SERIAL 0x8001 DB25 Serial connector*/
|
|
/*product ENTREGA SERIAL_DB9 0x8093 DB9 Serial connector*/
|
|
|
|
/* e-TEK Labs products */
|
|
product ETEK 1COM 0x8007 Serial port
|
|
|
|
/* Epson products */
|
|
product EPSON PRINTER2 0x0002 ISD USB Smart Cable for Mac
|
|
product EPSON PRINTER3 0x0003 ISD USB Smart Cable
|
|
|
|
/* Gravis products */
|
|
product GRAVIS GAMEPADPRO 0x4001 GamePad Pro
|
|
|
|
/* Handspring Inc. */
|
|
product HANDSPRING VISOR 0x0100 Handspring Visor
|
|
|
|
/* HP products */
|
|
product HP 4100C 0x0101 Scanjet 4100C
|
|
product HP S20 0x0102 Photosmart S20
|
|
product HP 5200 0x0401 Scanjet 5200
|
|
product HP 6300C 0x0601 Scanjet 6300C
|
|
product HP 970CSE 0x1004 Deskjet 970Cse
|
|
product HP P1100 0x3102 Photosmart P1100
|
|
|
|
/* Inside Out Networks products */
|
|
product INSIDEOUT EDGEPORT4 0x0001 EdgePort/4 serial ports
|
|
|
|
/* In-System products */
|
|
product INSYSTEM F5U002 0x0002 Parallel printer adapter
|
|
product INSYSTEM ISD110 0x0200 IDE adapter
|
|
|
|
/* Intel products */
|
|
product INTEL TESTBOARD 0x9890 82930 test board
|
|
|
|
/* Iomega products */
|
|
product IOMEGA ZIP100 0x0001 Zip 100
|
|
|
|
/* Kawatsu products */
|
|
product KAWATSU MH4000P 0x0003 MiniHub 4000P
|
|
|
|
/* Kodak products */
|
|
product KODAK DC260 0x0110 Digital Science DC260
|
|
product KODAK DC265 0x0111 Digital Science DC265
|
|
product KODAK DC290 0x0111 Digital Science DC290
|
|
product KODAK DC240 0x0120 Digital Science DC240
|
|
product KODAK DC280 0x0130 Digital Science DC280
|
|
|
|
/* Konica Corp. Products */
|
|
product KONICA CAMERA 0x0720 Digital Color Camera
|
|
|
|
/* KYE products */
|
|
product KYE NICHE 0x0001 Niche mouse
|
|
product KYE FLIGHT2000 0x1004 Flight 2000 joystick
|
|
|
|
/* Lexmark products */
|
|
product LEXMARK S2450 0x0009 Optra S 2450
|
|
|
|
/* Linksys products */
|
|
product LINKSYS USB100TX 0x2203 USB100TX Ethernet
|
|
|
|
/* Logitech products */
|
|
product LOGITECH M2452 0x0203 M2452 keyboard
|
|
product LOGITECH M4848 0x0301 M4848 mouse
|
|
product LOGITECH QUICKCAM 0x0801 QuickCam
|
|
product LOGITECH QUICKCAMPRO 0x0810 QuickCam Pro
|
|
product LOGITECH N48 0xc001 N48 mouse
|
|
product LOGITECH MBA47 0xc002 M-BA47 mouse
|
|
|
|
/* Lucent products */
|
|
product LUCENT EVALKIT 0x1001 USS-720 evaluation kit
|
|
|
|
/* Macally products */
|
|
product MACALLY MOUSE1 0x0101 mouse
|
|
|
|
/* Melco Inc products */
|
|
product MELCO LUATX 0x0001 LU-ATX Ethernet
|
|
|
|
/* Microsoft products */
|
|
product MICROSOFT INTELLIMOUSE 0x0009 IntelliMouse
|
|
product MICROSOFT NATURALKBD 0x000b Natural Keyboard Elite
|
|
product MICROSOFT DDS80 0x0014 Digital Sound System 80
|
|
product MICROSOFT SIDEWINDER 0x001a Sidewinder Precision Racing Wheel
|
|
|
|
/* Midiman products */
|
|
product MIDIMAN MIDISPORT2X2 0x1001 Midisport 2x2
|
|
|
|
/* Motorola products */
|
|
product MOTOROLA MC141555 0x1555 MC141555 hub controller
|
|
|
|
/* MultiTech products */
|
|
product MULTITECH ATLAS 0xf101 MT5634ZBA-USB modem
|
|
|
|
/* Mustek products */
|
|
product MUSTEK MDC800 0xa800 MDC-800 digital camera
|
|
|
|
/* NEC products */
|
|
product NEC HUB 0x55aa hub
|
|
product NEC HUB_B 0x55ab hub
|
|
|
|
/* NetChip Technology Products */
|
|
product NETCHIP TURBOCONNECT 0x1080 Turbo-Connect
|
|
|
|
/* Netgear products */
|
|
product NETGEAR EA101 0x1001 Ethernet adapter
|
|
|
|
/* OmniVision Technologies Inc. products */
|
|
product OMNIVISION OV511 0x0511 OV511 Camera
|
|
|
|
/* Peracom products */
|
|
product PERACOM SERIAL1 0x0001 Serial Converter
|
|
product PERACOM ENET 0x0002 Ethernet adapter
|
|
product PERACOM ENET2 0x0005 Ethernet adapter
|
|
|
|
/* Philips products */
|
|
product PHILIPS DSS350 0x0101 DSS 350 Digital Speaker System
|
|
product PHILIPS DSS 0x0104 DSS XXX Digital Speaker System
|
|
product PHILIPS HUB 0x0201 hub
|
|
product PHILIPS DSS150 0x0471 DSS XXX Digital Speaker System
|
|
|
|
/* P.I. Engineering products */
|
|
product PIENGINEERING PS2USB 0x020b PS2 to Mac USB Adapter
|
|
|
|
/* PLX products */
|
|
product PLX TESTBOARD 0x9060 test board
|
|
|
|
/* Primax products */
|
|
product PRIMAX COMFORT 0x4d01 Comfort
|
|
product PRIMAX MOUSEINABOX 0x4d02 Mouse-in-a-Box
|
|
|
|
/* Rockfire products */
|
|
product ROCKFIRE GAMEPAD 0x2033 gamepad 203USB
|
|
|
|
/* Qtronix products */
|
|
product QTRONIX 980N 0x2011 Scorpion-980N keyboard
|
|
|
|
/* SanDisk products */
|
|
product SANDISK IMAGEMATE 0x0001 USB ImageMate
|
|
|
|
/* Shuttle Technology products */
|
|
product SHUTTLE EUSB 0x0001 E-USB Bridge
|
|
|
|
/* SIIG products */
|
|
product SIIG DIGIFILMREADER 0x0004 DigiFilm-Combo Reader
|
|
|
|
/* Sirius Technologies products */
|
|
product SIRIUS ROADSTER 0x0001 NetComm Roadster II 56 USB
|
|
|
|
/* SMC products */
|
|
product SMC 2102USB 0x0100 10Mbps ethernet adapter
|
|
product SMC 2202USB 0x0200 10/100 ethernet adapter
|
|
|
|
/* SOLID YEAR products */
|
|
product SOLIDYEAR KEYBOARD 0x2101 Solid Year USB keyboard
|
|
|
|
/* STMicroelectronics products */
|
|
product STMICRO COMMUNICATOR 0x7554 USB Communicator
|
|
|
|
/* Sun Microsystems products */
|
|
product SUN KEYBOARD 0x0005 Type 6 USB
|
|
/* XXX The above is a North American PC style keyboard possibly */
|
|
|
|
/* Telex Communications products */
|
|
product TELEX MIC1 0x0001 Enhanced USB Microphone
|
|
|
|
/* Texas Intel products */
|
|
product TI UTUSB41 0x1446 UT-USB41 hub
|
|
|
|
/* Thrustmaster products */
|
|
product THRUST FUSION_PAD 0xa0a3 Fusion Digital Gamepad
|
|
|
|
/* Universal Access products */
|
|
product UNIACCESS PANACHE 0x0101 Panache Surf USB ISDN Adapter
|
|
|
|
/* Vision products */
|
|
product VISION VC6452V002 0x0002 VC6452V002 Camera
|
|
|
|
/* Wacom products */
|
|
product WACOM CT0405U 0x0000 CT-0405-U Tablet
|
|
|
|
/* Zoom Telephonics Inc. products */
|
|
product ZOOM 2986L 0x9700 2986L Fax modem
|