Commit Graph

1536 Commits

Author SHA1 Message Date
Ian Dowse
04d114aa99 Use the usb_callout_* API instead of timeout()/untimeout() in order
to avoid a race condition that can cause the ukbd timeout routine
to run after the keyboard has detached.

Reported and tested by:	wpaul
2005-03-30 08:32:41 +00:00
Ian Dowse
61c43c6d8d Don't defer the boot-time exploration of high-speed USB busses.
This ensures that we explore EHCI busses before their companion
controllers' busses, so that ports connected to full/low speed
devices will be properly routed to the companion controllers by the
time the OHCI/UHCI exploration occurs.
2005-03-27 15:31:23 +00:00
Maxim Sobolev
e33b116b78 Comment out rue_miibus_statchg() function. Using trial-and-error approach I
found it guilty in putting the card into unusable state after UP->DOWN->UP
media status change.

Looks like some of register writes in this functions mess up PHY interface.

No visible regressions has been found after commenting this code out -
the card properly handles forceful local mode changes and auto-detects changes
made remotely (tested with Auto, 10HD, 10FD, 100HD, 100FD).

Sponsored by:	PBXpress Inc.
MFC after:	3 days
2005-03-25 20:19:18 +00:00
Maxim Sobolev
ddbcc78273 Add /* _FOO_H_ */ after the final #endif to make danfe happy. 2005-03-25 13:22:58 +00:00
Maxim Sobolev
8eadbd831e Fix identation. 2005-03-25 12:55:06 +00:00
Maxim Sobolev
f1cc4b713e Add missed KUE_UNLOCK(). This is NOOP yet, but may be handy later on. 2005-03-25 12:53:26 +00:00
Maxim Sobolev
5135f8e687 Fix breakage in the previous commit caused by the last-minute change. 2005-03-25 12:50:57 +00:00
Maxim Sobolev
87fcbb8fe0 Protect against multiple inclusions. 2005-03-25 12:49:26 +00:00
Maxim Sobolev
d521dc21e7 Move Rx/Tx lists management routines into central location. 2005-03-25 12:42:30 +00:00
Maxim Sobolev
710fa1d820 GC unused fields. 2005-03-25 10:39:23 +00:00
Maxim Sobolev
9245facb49 GC unused field. 2005-03-25 09:48:24 +00:00
Ian Dowse
5e1f111310 Fix an incorrect NULL argument to usbd_set_interface() associated
with the ALT_IFACE_1 quirk.

PR:		usb/79190
Submitted by:	Hans Petter Selasky <hselasky@c2i.net>
2005-03-25 01:47:01 +00:00
Ian Dowse
e2b66de827 Use usbd_get_string() instead of calling usbd_get_string_desc()
with the wrong language parameter when retrieving the device serial
number. This invalid request caused some devices not to work at
all.

PR:		usb/79190
Submitted by:	Hans Petter Selasky <hselasky@c2i.net>
2005-03-25 01:44:38 +00:00
Maxim Sobolev
8a9cf808e6 Move xxx_newbuf() function, which was the same in all drivers into central
location.
2005-03-25 00:44:21 +00:00
Ian Dowse
70a18c2253 Use M_NOWAIT when allocating from a callout routine.
PR:	kern/73295
2005-03-25 00:38:46 +00:00
Maxim Sobolev
4562351ad0 Zaurus expecrs CRC to be in little-endian order, so that convert it into LE
on BE arches.

Obtained from:	OpenBSD
2005-03-22 16:35:15 +00:00
Maxim Sobolev
6bcf003260 Add USB Communication Device Class Ethernet driver. Originally written for
FreeBSD based on aue(4) it was picked by OpenBSD, then from OpenBSD ported
to NetBSD and finally NetBSD version merged with original one goes into
FreeBSD.

Obtained from:  http://www.gank.org/freebsd/cdce/
                NetBSD
                OpenBSD
2005-03-22 14:52:40 +00:00
Maxim Sobolev
c159c9d8bb Add the following products in preparation for addition of CDCE driver:
- G.Mate, Inc's YP3X00 PDA;

 - Prolific's PL2501 Host-Host interface;

 - Numver of Sharp's Zaurus PDAs.
2005-03-21 08:43:54 +00:00
Ian Dowse
20289f7920 Root hubs don't have transaction translators, so skip printing the
message about them if the hub depth is zero.
2005-03-20 23:45:00 +00:00
Ian Dowse
0b07d58eb3 Don't display the redundant `ehci_pci_attach: companion usbX'
messages unless EHCI debugging is enabled.

Suggested by:	scottl
2005-03-20 23:42:54 +00:00
Ian Dowse
a3a574f503 Remove trailing whitespace as per NetBSD's revision 1.91. Also
update the TODO comments to more closely match current reality.
2005-03-20 22:22:18 +00:00
Ian Dowse
4c11f583a3 Now that all architectures allow hooks to be inserted before
configure_final(), assert that "cold" is true in usb_cold_explore()
when there are busses to explore. When USB is kldloaded after boot,
usb_cold_explore() will still get invoked but the list of busses
to explore in that case should always be empty.
2005-03-19 19:27:38 +00:00
Ian Dowse
a3d327674a It was possible to have two threads concurrently aborting the same
transfer, which lead to panics or page faults. For example if a
transfer timed out, another thread could come along and attempt to
abort the same transfer while the timeout task was sleeping in
the *_abort_xfer() function.

Add an "aborting" flag to the private transfer state in each host
controller driver and use this to ensure that the abort is only
executed once. Also prioritise normal abort requests over timeouts
so that the callback is always given a status of USB_CANCELLED even
if the timeout-initiated abort began first.

The crashes caused by this bug were mainly reported in connection
with lpd printing to a USB printer.

PR:	usb/78208, usb/78986
2005-03-19 19:08:46 +00:00
Bernd Walter
65a5e4be3d initialize pp->p_sc so it can be referenced later.
dynamicaly allocate the per port array.
allow up to 32 serials per USB device.
ask the device for correct pipe sizes.
2005-03-17 22:47:18 +00:00
Ian Dowse
a7b66eb1ae Defer boot-time exploration of USB busses until all devices in the
system have been attached, but no later. This ensures that we do
not explore ohci or uhci busses before the companion echi controller
has been initialised, so it should fix the problem of multi-speed
USB devices getting attached as USB 1 devices first and then
re-attached as USB 2.

Some further changes are needed on architectures that do not currently
allow hooks to be inserted before configure_final() - alpha, ia64,
powerpc and sparc64. On these architectures the exploration will
now be delayed until the usb kthread runs.
2005-03-17 19:41:19 +00:00
Ian Dowse
7515d96b78 Add support for the ethernet port in the JVC MP-PRX1 port replicator. 2005-03-14 01:49:00 +00:00
Ian Dowse
bc7744545d Set the split transaction interrupt C-mask correctly. This is the
final piece needed to make split transaction interrupt pipes work,
which I thought I had already committed.
2005-03-14 01:03:50 +00:00
Ian Dowse
f4b4a6b096 The EHCI qTD token has a number of error status bits that are not
cleared if the host controller retries the transfer and is successful,
but we were interpreting these bits as indicating a fatal error.
Ignore these error bits, and instead use the HALTED bit to determine
if the transfer failed. Also update the USBD_STALLED detection to
ignore these bits.

Obtained from: OpenBSD
2005-03-13 23:48:17 +00:00
Ian Dowse
76d8aa3efe Fix the arrangement of periodic QH tree to give the correct interval
between passes over a QH. Previously the accesses to a QH were
bunched together in time, so the interval was often much longer
than intended. This now appears to match the diagrams in the EHCI
spec, so remove the XXX comment.
2005-03-13 04:07:40 +00:00
Ian Dowse
2f9b6e1f34 Fix the silly bug that prevented most EHCI interrupt transfers from
ever working correctly: the code was linking the QHs together but
then immediately overwriting the "next" pointers. Oops. Also
initialise qh_endphub, since the EHCI spec says that we should
always set the pipe multiplier field to something sensible.

This appears to make basic split transactions work, so enable split
transactions for control, bulk and interrupt pipes (split isochronous
transfers are not yet implemented). It should now be possible to
use USB1 devices even when they are connected through a USB2 hub.
2005-03-08 02:47:18 +00:00
Maxim Sobolev
21a69c81c0 Merge from NetBSD.
o usb_subr.c, add delta 1.119:

  Move usb_get_string() and make it public.

o usbdi.c, bring on par with 1.106, this includes:

  - Make an iterator abstraction for looping through all descriptors.

  - Whine about not being able to figure out default language if we are debugging.

  - Move usb_get_string() and make it public.

o usbdi.h, bring on par with 1.64, this includes:

  - Make an iterator abstraction for looping through all descriptors.

  - Move usb_get_string() and make it public.

o usbdi_util.c, bring on par with 1.42, this includes:

  - Add usbd_get_protocol().

  - Use NULL instead of 0.

  - Fix (mostly harmless) typo.

  - Move utility routine from uirda.c to usbdi_util.c.

o usbdi_util.h, bring on par with 1.31, this includes:

  - Add usbd_get_protocol().

  - Move utility routine from uirda.c to usbdi_util.c.

MFC after:	3 days
2005-03-01 08:01:22 +00:00
Warner Losh
2ece8174c1 Use BUS_PROBE_DEFAULT in preference to 0. Also for vx, return
BUS_PROBE_LOW_PRIORITY in stead of ifdef for devices that xl and vx
both support so that xl will snarf them on up.
2005-03-01 07:50:12 +00:00
Maxim Sobolev
d524bc1aa1 Sync with 1.9 from NetBSD, this includes:
o Add Ethernet descriptor.

o Use attribute packed for on-the-wire data structures.

MFC after:	3 days
2005-03-01 06:35:04 +00:00
Ian Dowse
e0a4f554be Abort any active transfers when the device detaches. This fixes a
few situations where we used to crash, but by no means all of them.
2005-02-14 02:17:53 +00:00
Ian Dowse
d83604e89a Add a new function usbd_abort_default_pipe() that aborts any transfers
on the default pipe. This is helpful in device detach routines to
stop any active control transfers.
2005-02-14 01:51:51 +00:00
Ian Dowse
a66e65f5a9 When attached to a high-speed device, report a more appropriate
base transfer speed to CAM. The actual value used (40MB/s) is fairly
arbitrary, but assumes the same 33% overhead as was implied by the
1MB/s figure we used for USB1 devices.
2005-02-13 21:38:34 +00:00
David E. O'Brien
61d087cf53 Fix problem with some logitec usb wireless mice.
Submitted by:	Markus <mw@kpnqwest.ch>
Tested by:	Randy Bush <randy@psg.com>
2005-02-06 12:41:00 +00:00
Shunsuke Akiyama
4b6cd0347a Use a taskqueue to handle port status changes.
Calling ucom layer directly from interrupt context make a panic.

MFC after:	1 week
2005-01-31 13:58:10 +00:00
Shunsuke Akiyama
7db2e52424 - Add support for new chips, PL-2303X and PL-2303HX.
- Update comment about datasheet.
- Fix minor typo in sysctl variable description.

Submitted by:	Michal Mertl <mime@traveller.cz>
MFC after:	1 week
2005-01-25 14:38:21 +00:00
Warner Losh
bec6d0ea5a Although USBVERBOSE was an option in the config system, usb_subr.c failed
to recognize that.  Include opt_usb.h to pick it up, rather than usb_port.h.
2005-01-20 05:03:28 +00:00
Shunsuke Akiyama
1f41d5d83a Fix USB serial device stalled after tcflush() was called.
PR:		kern/65769
MFC after:	3 days
2005-01-19 15:18:00 +00:00
Warner Losh
ad3142eda4 MFp4:
sc_child isn't used on FreeBSD, so ifdef it out in a way that is
NetBSD mergeable.
2005-01-11 07:34:13 +00:00
Julian Elischer
4f93332f16 fix a "little-endian-big-endian confusion that luckily:
1/ doesn't matter on most of our architectures
2/ will never happen unless we start queueing multiple trasactions
to a single endpoint at one time (which we do not allow yet).
If anyone has a big_endian machine with EHCI they might check this
if they are having problems with EHCI but it's unlikely even there..

Submitted by:	Hans Petter Selasky <hselasky@c2i.net>
MFC after:	3 days
2005-01-09 23:49:45 +00:00
Warner Losh
098ca2bda9 Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
Warner Losh
a8c5ecf70f add copyright notice to something I wrote that didn't have one 2005-01-06 01:36:28 +00:00
Giorgos Keramidas
285d9e0fa7 Fix KASSERT inversion that was introduced in 1.150, resulting in instant
panic curlen != 0, which is perfectly normal.

Approved by:	mux
2005-01-05 20:10:05 +00:00
Julian Elischer
4eefd67bb0 Fix comment. One of the two "Step 4" shuold be a "step 5" 2005-01-05 01:04:35 +00:00
Julian Elischer
a8ef988f65 Remove comment that doesn't seem to be true and add comments describing
what is going on, to replace it. Slight formatting changes
Code here is alredy different to NetBSD.
MFC after:	1 week
2005-01-03 08:52:26 +00:00
Julian Elischer
2410443379 A much simpler way to work out if the required transfer can be done in 2
scatter gather segments.

MFC after:	1 week
2005-01-03 08:09:05 +00:00
Warner Losh
24ea6505cb First pass at shortening names. Likely more can be done. Generally
prefer ethernet and serial to \1 adapter.
2004-12-31 19:10:33 +00:00
Warner Losh
edfffcdb9a Eliminate the redundant/verbose portion of the company names.
Generally omit semiconductor, electronics, inc, corp, pny, ltd and the
like.

This saves almost 3k for the usb module.
2004-12-31 18:59:38 +00:00
Warner Losh
61522a4654 Finish merging usb vendors from NetBSD. 2004-12-31 18:37:49 +00:00
Julian Elischer
3331831fd8 Don't call ugen_destroy_devnodes(). it is called from ugen_set_config()
which is the very next line.

Submitted by:	stefanf
MFC after: 3 days
2004-12-29 21:36:43 +00:00
Warner Losh
7fcb3efbe0 Move WINBOND 4 port hub to its proper location in the file. It belongs
in a section of its own, not arbitrarily grouped in the hawking section
just because hawking sells it...
2004-12-29 06:21:41 +00:00
David E. O'Brien
51799eec6c Add the Winbond made Hawking UH104 4-port hub.
Add a note where to find the offical USB assigned numbers.
2004-12-29 02:09:19 +00:00
Julian Elischer
2f37e02978 Rewrite ehci_abort_xfer() to use the method hinted at in the EHCI spec.
to remove a transaction from the async schedule. The previous method didn't
work well and led to the hardware writing to free'd buffers etc, as
it didn't always know that the transaction had been aborted.

Written after consultation with David Brownell who wrote the Linux
EHCI driver.

As part of this give the sqh structure a "previous" pointer.

MFC after:	1 week
2004-12-29 01:21:18 +00:00
John Birrell
4f2a7ca189 Pass an explicit pointer to the bus structure in the 'usb' device ivar
rather than a softc pointer (with the bus structure at the start).

This is a non-functional change. It just helps when reading the code to
know that the ehci, ohci and uhci drivers share the bus structure, not the
entire softc.
2004-12-28 22:17:10 +00:00
Warner Losh
b2e1ce3c5f Remove duplicate CHPRODUCTS entry.
Use tab religiously in the vendor section.
2004-12-27 06:58:05 +00:00
Warner Losh
255bc0be62 More minor diff reduction against netbsd:
ADVANCELOGIC->AVANCELOGIC (nothing in the tree uses it, so safe to do)
sort HAGIWARA vendor entry
sort ACTIONTAR vendor entry
Minor change to SYSTEMTALKS vendor entry.
2004-12-26 07:48:46 +00:00
Warner Losh
37705f86ba Minor merges from NetBSD (up through 1.388):
Add $NetBSD$ in a comment at the top
Update copyright dates
Update header comment
Add some of the entries not present in FreeBSD's usbdevs file
Harmonize some descriptions with NetBSD where NetBSD's were shorter

More work needs to happen here, as there's many conflicting vendor
names.  There's also more harmonization that can happen before that
problem is tackled.

This was inspired by recent discussions, but none of the patches
posted were consulted to produce this commit.  Other, similar ones
will follow.
2004-12-26 07:14:55 +00:00
Poul-Henning Kamp
4114357bf9 Include fcntl.h
check O_NONBLOCK instead of IO_NDELAY
Don't include vnode.h.
2004-12-22 17:35:52 +00:00
Poul-Henning Kamp
0b6db26c6c Include fcntl.h
check O_NONBLOCK instead of IO_NDELAY
don't include vnode.h
2004-12-22 17:34:53 +00:00
Poul-Henning Kamp
e22b0e7682 Include fcntl.h
Check O_NONBLOCK instead of IO_NDELAY
Don't include vnode.h
2004-12-22 17:34:25 +00:00
Poul-Henning Kamp
7df050f9a8 Don't include vnode.h.
Check O_NONBLOCK instead of IO_NDELAY
2004-12-22 17:31:44 +00:00
Julian Elischer
efba049184 Oops, this one isn't ready
back it out until fixed
2004-12-20 21:17:22 +00:00
Julian Elischer
f1e27f62c1 Add a bunch of USB definitions from NetBSD.
This is part of an ongoing cycle of commits on all the BSDs to
merge the USB vendor and device defintions..

A merge from OpenBSD is still pending.

Submitted by:	barry bouwsma (freebsd-misuser@NOSPAM.dyndns.dk)
Obtained from:	NetBSD
MFC after: 1 week
2004-12-20 20:41:55 +00:00
Julian Elischer
b3ea468624 Merge in a bunch of USB device and manufacturer definitions..
Submitted by:	barry bouwsma (freebsd-misuser@NOSPAM.dyndns.dk)
Obtained from:	Dragonfly
MFC after:	3 days
2004-12-20 20:10:57 +00:00
Julian Elischer
53d4f8518a Slight change to formatting so that 'ctags' doesn't
give up on teh file half way through.. Might have been my
mistake earlier anyhow. No actual code change

MFC after:	5 days
2004-12-18 01:20:18 +00:00
Poul-Henning Kamp
a884a1b0f2 Make LINT compile.
When leaving functions for ddb use don't make them static: it makes
gcc think they are unused.

Shouldn't this be in #ifdef DDB anyway ?
2004-12-14 07:46:28 +00:00
Julian Elischer
b96aca53dc A bunch more whitespace and formatting diff reductions for NetBSD.
Obtained from:	NetBSD
MFC after:	1 week
2004-12-14 04:47:24 +00:00
Julian Elischer
47f9e7b6ce Don't abandon ship just because the number of companions doesn't seem correct.
Obtained from:	NetBSD
MFC after:	1 week
2004-12-14 04:05:10 +00:00
Julian Elischer
80ee93cb22 Slightly reorganise part of the ohci_softintr() function
to better keep track of the total amoutn transferred during a
transfer. Seems similar to some code in the NetBSD version.
I notice they have incorporated matches from him so I don't know which
direction it went.

Submitted by:	damien.bergamini@free.fr
Obtained from:	patches to make the ueagle driver work
MFC after:	1 week
2004-12-14 03:59:24 +00:00
Julian Elischer
6e6281a3dc Small formatting change..
Move a declaration to the same place as in NetBSD.

Obtained from:	NetBSD
MFC after:	1 week
2004-12-14 03:54:08 +00:00
Julian Elischer
1cc7d59e34 Might as well get the right $NetBSD$ string while we are at it.
MFC after:	1 week
2004-12-13 08:12:06 +00:00
Julian Elischer
cd015c5e87 Diff reduction to NetBSD.
Now only things that are different between us and NetBSD show up.
Means that these files are more of NetBSD style in some places but
since thay are NetBSD files, um, that's ok.

Obtained from:	NetBSD
MFC after: 1 week
2004-12-13 08:08:57 +00:00
Julian Elischer
18b5fd62f9 MFNetBSD
Whitespace diff reduction, formatting fixes and one actual
arithmetic error that NetBSD have fixed.

Obtained from:	NetBSD
MFC after: 1 week
2004-12-13 07:45:02 +00:00
Warner Losh
1239b0391a We don't need vnode.h, but do need uio.h in these files. vnode.h
shouldn't be included in drivers, generally, so remove them.

OK'd by: phk
2004-12-13 07:09:54 +00:00
Warner Losh
a9557e2194 Add sys/uio.h explicitly, and move sys/vnode.h include to be more
alphabetical.

# vnode.h should not be included here, but it is required for proper decoding
# of the flags args.  This may change in the future...
2004-12-13 07:08:22 +00:00
Warner Losh
317ccb1fc3 sys/vnode.h is inappropriate for a driver. Use sys/uio.h instead. 2004-12-13 06:26:23 +00:00
Warner Losh
da5c87ba08 Crank down the lame-o-matic a notch by moving the = inside the /* */ rather
than outside to fix the build.
2004-12-13 05:41:33 +00:00
Julian Elischer
d0a9f61fea Try make code for teh M$ Intellimouse less obtrusive
when not using such a device.
2004-12-13 02:20:48 +00:00
Julian Elischer
22c2b56594 Don't export the 'dt' field as that would break the exisiting ABI.
keep the code but comment it out so that if the ABI changes we
can see easily what should be done.

Submitted by:	iedowse
2004-12-13 01:23:49 +00:00
Julian Elischer
0e7470486d Revert addition of Lide scanner entry..
It's a duplicate of an already exisiting entry. (with another name).
2004-12-13 00:25:03 +00:00
Julian Elischer
a09345e6cd Add support for Cannon LIDE 20 scanner
PR:	kern/74301
Submitted by:	Vlad Manilici <vman@tmok.com>
MFC after:	1 week
2004-12-12 08:35:21 +00:00
Julian Elischer
c29b0a0f7e Add support for USB Microsoft Intellimouse
PR:		kern/70607
Submitted by:	Matt Wright <matt@consultmatt.co.uk>
MFC after:	1 week
2004-12-12 05:34:20 +00:00
Julian Elischer
060cd8af25 Changes to cache endpoint descriptors for all the interfaces. this information
is not always available if we change interfaces.

Submitted by:	jamie at bishopston dot net  (jamie jones)
MFC after:	1 week
2004-12-12 02:27:30 +00:00
Christian Brueffer
61af118148 URL of the data sheet has changed.
Obtained from:	OpenBSD
2004-12-09 13:27:44 +00:00
Scott Mitchell
d49a36b1d5 Diff-reduction before merging if_axe to RELENG_4.
Approved by:	imp (mentor)
MFC after:	1 week
2004-12-08 22:02:58 +00:00
Ian Dowse
01a95e0acf Add support for the TwinMOS Memory Disk IV.
PR:		kern/73766
Submitted by:	Valentin Nechayev
MFC after:	1 week
2004-11-28 21:49:30 +00:00
Ian Dowse
104f472f30 Add the device ID for the 3Com 3CRSHEW696 wireless adapter.
PR:		kern/73286
Submitted by:	Daan Vreeken
2004-11-28 21:40:36 +00:00
Ian Dowse
3589f4d21c Add support for the Trumpion/Comotron C3310 MP3 player. 2004-11-28 21:36:39 +00:00
Ian Dowse
f6b587096b Fix just the worst of the timeout race conditions that the previous
backed out commits were trying to address: when cancelling the timeout
callout, also cancel the abort_task event, since it is possible that
the timeout has already fired and set up an abort_task.
2004-11-16 00:48:27 +00:00
Ian Dowse
b044e17063 Put back usb_uncallout_drain(), as it is now also used by umass.c. 2004-11-12 03:24:12 +00:00
Ian Dowse
85b8134e51 Back out my recent changes for timeout races, as there have been
reports of problems. The bug is probably that there are cases where
`xfer->timeout && !sc->sc_bus.use_polling' is not a suitable test
for an active timeout callout, so an explicit flag will be necessary.
Apologies for the breakage.
2004-11-12 02:57:35 +00:00
Ian Dowse
a5158af81f Keep a handle on the startup rescan timer and cancel the timer if
the device goes away.
2004-11-10 00:48:22 +00:00
Ian Dowse
0ce606de7c Attempt to fix a number of race conditions in the handling of
transfer timeouts that typically cause a transfer to be completed
twice, resulting in panics and page faults:

 o A transfer completion interrupt could arrive while an abort_task
   event was set up, so the transfer would be aborted after it had
   completed. This is very easy to reproduce. Fix this by setting
   the transfer status to USBD_TIMEOUT before scheduling the
   abort_task so that the transfer completion code will ignore it.

 o The transfer completion code could execute concurrently with the
   timeout callout, leaving the callout blocked (e.g. waiting for
   Giant) while the transfer completion code runs. In this case,
   callout_stop() does not prevent the callout from running, so
   again the timeout code would run after the transfer was complete.
   Handle this case by checking the return value from callout_stop(),
   and ignoring the transfer if the callout could not be removed.

 o Finally, protect against a timeout callout occurring while a
   transfer is being aborted by another process. Here we arrange
   for the timeout processing to ignore the transfer, and use
   callout_drain() to ensure that the callout has really gone before
   completing the transfer.

This was tested by repeatedly performing USB transfers with a timeout
set to approximately the same as the normal transfer completion
time. In the PR below, apparently this occurred by accident with a
particular printer and the default timeout.

PR:		kern/71491
2004-11-09 20:51:32 +00:00
Ian Dowse
8e1cbbc611 When a port cannot be set up, report the error code in the `disabling
port X' message.
2004-11-09 19:46:57 +00:00
Ian Dowse
b483f84d55 The ehci_dump() function shouldn't be declared static, as it is
just a convenience function to be called from debuggers that gets
compiled in when EHCI_DEBUG is defined. Move its declaration to
make this more obvious.
2004-11-03 15:12:18 +00:00
Ian Dowse
f79bef6097 Merge recent USB2/EHCI related changes from NetBSD:
o Reduce the interrupt delay to 2 microframes.
 o Follow the spec more closely when updating the overlay qTD in the QH.
 o No need to generate an interrupt at the data part of a control
   transfer, it's generated by the status transfer.
 o Make sure to update the data toggle on short transfers.
 o Turn the printf about needing toggle update into a DPRINTF.
 o Keep track of what high speed port (if any) a device belongs to
   so we can set the transaction translator fields for the transfer.
 o Verbosely refuse to open low/full speed pipes that depend on
   unimplemented split transaction support.
 o Fix various typos in comments.

Obtained from:	NetBSD
2004-11-03 01:52:50 +00:00
Ian Dowse
cf181f3b71 Save and restore state across suspend/resume events.
Submitted by:	David Gwynne <dlg@openbsd.org>
Obtained from:	OpenBSD (+ extra patches supplied by David)
2004-10-30 15:13:09 +00:00