time we tell CAM to rescan the bus. Together with the previous patch
this should avoid the problem where the devices would wedge because they
got spoken to over two different pipes.
Tested by: Tomas Pluskal <plusik@pohoda.cz>
attachment after boot in some cases where the device gets confused if
spoken to over two different pipes simultaneously (resulting in TIMEOUT
errors on requesting INQUIRY data).
This solution is far from perfect, as after umass_attach has returned
the USB stack fetches the string descriptors in order for creating the
event that is sent to userland. It just makes the chances of collisions
less likely.
Tested by: Tomas Pluskal <plusik@pohoda.cz>
revision 1.153
date: 2002/02/11 11:40:33; author: augustss; state: Exp; lines: +67 -26
Switch to the same abort mechanism as in [eo]hci; it should be more
robust.
revision 1.151
date: 2002/01/27 23:00:34; author: augustss; state: Exp; lines: +3 -3
Use M_WAITOK instead of M_NOWAIT when allocating extra descriptors.
Spotted by OpenBSD.
date: 2000/12/29 01:47:49; author: augustss;
Supply our own report descriptor (from Nick Hibma) for the Wacom Graphire.
The descriptor it reports is broken.
XXX Not tested, because I don't have the device.
date: 2001/08/15 00:06:49; author: augustss; state: Exp; lines: +3 -1
If there was a vendor+product locator match return a higher match value.
Rationale, if you have a device (e.g., a mouse) with a more specific
driver but want to recognize it with the more generic driver you can
do that by supplying vendor and product locators for the generic one.
revision 1.101
date: 2001/02/20 15:20:32; author: minoura;
Re-initialize some registers after resuming from suspend.
Some APM BIOSes do not restore them.
Reviewd by augustss.
revision 1.97
date: 2000/12/31 14:29:54; author: augustss; state: Exp; lines: +17 -3
Make the controller survive suspend/resume. Thanks to Steve Woodford
<steve@mctavish.co.uk> for testing.
revision 1.95
date: 2000/12/13 03:09:06; author: augustss; state: Exp; lines: +19 -3
Make the ohci driver not hang suspend/resume. It still doesn't resume
correctly. From itohy@netbsd.org (ITOH Yasufumi) PR kern/11714.
revision 1.58
date: 2001/11/20 23:53:26; author: augustss; state: Exp; lines: +61 -33
Create a special kernel thread to run the usb short lived tasks (instead
of using the device discovery threads).
revision 1.65
date: 2002/01/03 22:20:45; author: augustss; state: Exp; lines: +9 -2
Add a DIAGNOSTIC check. From FreeBSD.
(Just wrap these changes, that we already had, with a #ifdef DIAGNOSTIC).
revision 1.62
date: 2002/01/02 20:55:58; author: augustss; state: Exp; lines: +11 -10
Some more usb_proc_ptr changes.
Also some minor stylistic changes.
revision 1.63
date: 2002/01/02 20:58:12; author: augustss; state: Exp; lines: +4 -4
Fix typo in last commit.
revision 1.64
date: 2002/01/02 22:44:44; author: augustss; state: Exp; lines: +7 -4
Add a comment.
The usb_proc_ptr changes were introduced in 1.62 and backed out in 1.64.
revision 1.61
date: 2001/12/31 15:55:51; author: augustss; state: Exp; lines: +3 -5
Delay bus enumeration a little in case the controller is a companion
controller. This way the main controller can gain ownership of the port
before enumeration starts.
date: 2001/11/20 23:53:26; author: augustss; state: Exp; lines: +61 -33
Create a special kernel thread to run the usb short lived tasks (instead
of using the device discovery threads).
The change to usb_port.h is a little hack whilst I address an issue
with NetBSD.
revision 1.68
date: 2001/12/24 21:36:16; author: augustss; state: Exp; lines: +2 -1
Add some more DIAGNOSTIC tests.
Make usb_match_device() match on USB_PRODUCT_ANY.
if_cuereg.h (1.5), if_kue.c (1.11), if_kuereg.h (1.5)
date: 2000/03/02 12:37:51; author: augustss;
Use ratecheck() to limit error messages on disconnect.
Break out some common functionality.
date: 2000/03/02 12:37:51; author: augustss;
Use ratecheck() to limit error messages on disconnect.
Break out some common functionality.
We don't have ratecheck() in our kernel yet, so I've hardcoded
usb_ratecheck() to return true always.
usbdi.c (1.86), usbdivar.h (1.66)
[Some partial, because most of this was merged in a while ago]
date: 2001/11/20 13:48:03; author: augustss;
Keep track of device speed for USB 2.0.
revision 1.106
date: 2001/11/09 15:01:57; author: augustss; state: Exp; lines: +73 -57
Fix a bug in xfer abort processing when the HC executes ahead of what
the driver aborts.
Don't block RHSC interrupts.
revision 1.103
date: 2001/09/11 07:00:19; author: augustss; state: Exp; lines: +4 -1
Don't go top mode OPERATIONAL (before reset) on startup even
if BIOS claims to have initialized the controller.
most cases NULL is passed, but in some cases such as network driver locks
(which use the MTX_NETWORK_LOCK macro) and UMA zone locks, a name is used.
Tested on: i386, alpha, sparc64
date: 2001/08/15 00:04:59; author: augustss;
Add a little infrastructure so that individual drivers can easily check
if thee was a vendor+product locator match.
revision 1.50
date: 2001/04/12 01:18:24; author: thorpej; state: Exp; lines: +6 -2
Only if __HAVE_GENERIC_SOFT_INTERRUPTS is then splusb == splsoftnet
(because we register the interrupt with IPL_SOFTNET). However, if
we're using a callout, then splusb == splsoftclock (because the
callouts happen from the softclock interrupt).
Note that splsoftnet blocks softclock interrupts, but this is
meant to better describe what's going on.
date: 2001/01/21 19:00:06; author: augustss;
Change the operation of the USB event thread. Before it only
performed USB device discovery, now it can also perform (short)
tasks for device drivers that need a process context, but don't
have one. This is not pretty, but better than using busy-wait
in an interrupt context.
revision 1.138
date: 2001/10/02 17:59:38; author: pooka; state: Exp; lines: +6 -6
move DIAGNOSTIC-printf up one block to make it reachable
noted by Christophe Kalt in private email
(1.39), usbdi.c (1.79), usbdi.h (1.47), usbdivar.h (1.62)
date: 2001/01/21 02:39:52; author: augustss;
Add code to use soft interrupt to handle USB interrupt processing.
Don't enable the code since it doesn't work with the kludgy Ethernet
drivers.
general cleanup of the API. The entire API now consists of two functions
similar to the pre-KSE API. The suser() function takes a thread pointer
as its only argument. The td_ucred member of this thread must be valid
so the only valid thread pointers are curthread and a few kernel threads
such as thread0. The suser_cred() function takes a pointer to a struct
ucred as its first argument and an integer flag as its second argument.
The flag is currently only used for the PRISON_ROOT flag.
Discussed on: smp@
revision 1.58
date: 2000/06/24 04:12:53; author: thorpej; state: Exp; lines: +5 -2
Kill SPLUSBCHECK -- it's not portable, and quite annoying on some
platforms which otherwise function just fine.
revision 1.127
date: 2000/11/22 05:50:59; author: soren; state: Exp; lines: +5 -5
In uhci_intr(), only warn about power state confusion if the
interrupt was actually for us.
date: 2000/08/08 19:51:46; author: tv; state: Exp; lines: +24 -13
%b -> bitmask_snprintf()
Because this code is shared, add a macro for bitmask_snprintf()
that should expand to the equivalent snprintf() on non-NetBSD
systems. This is only used in ?HCI_DEBUG cases anyway.
revision 1.81
date: 2000/10/24 15:01:26; author: augustss; lines: +36 -10
Add a hack to try and figure out if the TI UTUSB41 hub is bus
powered despite claiming to be self powered (it's important to
know so that the power budget can be met).
Part of this got merged in a previous commit, but not all.
revision 1.72
date: 2000/04/14 14:13:56; author: augustss; state: Exp; lines: +34 -27
Make attach of ugen work as it should so product&vendor locators
can be used.
usb.c 1.40:
revision 1.40
date: 2000/03/14 23:13:12; author: augustss; state: Exp; lines: +4 -1
Make sure the USB event thread discovers all devices first time
it call usb_discover(). It should now be possible to have the
root NFS mounted over a USB Ethernet Adapter.