Commit Graph

1468 Commits

Author SHA1 Message Date
iedowse
eb14087c44 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
iedowse
0638348255 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
iedowse
00f0fc2985 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
iedowse
1aa8c25508 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
iedowse
cc1d054d9c 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
ticso
691cfe03b0 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
iedowse
c9756266e6 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
iedowse
ab4fe62469 Add support for the ethernet port in the JVC MP-PRX1 port replicator. 2005-03-14 01:49:00 +00:00
iedowse
58c85262cd 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
iedowse
ebf9e3f896 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
iedowse
83b23d92b1 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
iedowse
b7e105e8d5 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
sobomax
44978948ef 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
imp
ca5e477ca2 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
sobomax
6320d710d9 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
iedowse
142aa8a840 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
iedowse
0f68b77a1a 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
iedowse
4f2d08a331 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
obrien
bb6fb45e0f 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
akiyama
f9a616f908 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
akiyama
5aa1777f1d - 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
imp
e394c4c99a 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
akiyama
bfbb212401 Fix USB serial device stalled after tcflush() was called.
PR:		kern/65769
MFC after:	3 days
2005-01-19 15:18:00 +00:00
imp
63ced9b235 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
747264f265 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
imp
4b319958e7 Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
imp
e4f5af10c5 add copyright notice to something I wrote that didn't have one 2005-01-06 01:36:28 +00:00
keramida
9ad4cdef3b 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
b625b904ff Fix comment. One of the two "Step 4" shuold be a "step 5" 2005-01-05 01:04:35 +00:00
julian
4bf9384dba 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
f19a6b0905 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
imp
702123653d 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
imp
6c6ac1163b 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
imp
0a39eafc47 Finish merging usb vendors from NetBSD. 2004-12-31 18:37:49 +00:00
julian
7d4c614c90 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
imp
9f520936d6 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
obrien
2287d5020d 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
ad31868542 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
jb
08d2181db1 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
imp
5acf0361de Remove duplicate CHPRODUCTS entry.
Use tab religiously in the vendor section.
2004-12-27 06:58:05 +00:00
imp
8aa567b09d 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
imp
be8bad5c95 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
phk
8deec74094 Include fcntl.h
check O_NONBLOCK instead of IO_NDELAY
Don't include vnode.h.
2004-12-22 17:35:52 +00:00
phk
1273b3575c Include fcntl.h
check O_NONBLOCK instead of IO_NDELAY
don't include vnode.h
2004-12-22 17:34:53 +00:00
phk
52fb0f35d0 Include fcntl.h
Check O_NONBLOCK instead of IO_NDELAY
Don't include vnode.h
2004-12-22 17:34:25 +00:00
phk
9fa6e5be50 Don't include vnode.h.
Check O_NONBLOCK instead of IO_NDELAY
2004-12-22 17:31:44 +00:00
julian
df11d2eb83 Oops, this one isn't ready
back it out until fixed
2004-12-20 21:17:22 +00:00
julian
bb3e4ff4e1 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
13d101e836 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
dbd1bd5be7 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