Commit Graph

27 Commits

Author SHA1 Message Date
bouyer
efe8b350b3 Add appropriate bus_dmamap_sync() calls to uhci(4), ohci(4) and ehci(4),
as proposed on tech-kern@.
While all DMA memory used in the USB framework is mapped BUS_DMAMAP_COHERENT
(including data memory, which is memcpy'd from/to USB-private buffers),
the CPU can reorder loads or stores from/to main memory, causing the
controller to have an incoherent view of the DMA descriptors lists for a
short time. bus_dmamap_sync() should contain memory barriers that prevents
the CPU from reordering load/store. Note that BUS_DMAMAP_COHERENT is
still required for the DMA descriptor lists - these can't work properly
with software cache coherency.
This fixes "host controller process error/host controller halted" errors
I'm occasionally seeing with a umodem device on uhci on x86.
Thanks to Michael Lorenz for testing it on his O2, and Izumi Tsutsui on
his Cobalt Qube 2700.
2008-06-28 17:42:53 +00:00
drochner
26a4d5b843 fix argument to usb_setup_reserve() (called from USB host adapter drivers)
to be device_t consistently, from Quentin Garnier
2008-05-21 17:19:44 +00:00
martin
ce099b4099 Remove clause 3 and 4 from TNF licenses 2008-04-28 20:22:51 +00:00
christos
53524e44ef Kill caddr_t; there will be some MI fallout, but it will be fixed shortly. 2007-03-04 05:59:00 +00:00
christos
95e1ffb156 merge ktrace-lwp. 2005-12-11 12:16:03 +00:00
fvdl
735ac78567 Use 256k, not 256M (I thought I had fixed that, since it was discussed
a while ago, but apparently I did forget it). Thanks to Juan for reminding
me.
2004-12-21 19:49:56 +00:00
fvdl
a3cea30b50 Implement an USB memory reserve. Allocate some memory per host controller
in the wanted bus_dma space. If an allocation fails during operation
(i.e. when hotplugging an umass device), fall back to using the reserve.

The amount can be configured as USB_MEM_RESERVE. The default value is
256k.

Ideally, there would be a way to steal pages in the desired area from
UVM, but that's far more complicated, and this is not intrusive, plus
it works.
2004-12-21 16:41:24 +00:00
wiz
1ffa7b76c4 DMA, not dma nor Dma. 2003-05-03 18:10:37 +00:00
augustss
86650920c9 Get rid of trailing white space. 2002-07-11 21:14:24 +00:00
augustss
9660362aab Another fix in the FreeBSD part. 2002-05-28 17:45:17 +00:00
augustss
0a15c2acd4 Change DMAADDR macro slightly. 2002-05-28 12:42:38 +00:00
augustss
4bc0b333ea Update dma memory access API a little. 2002-05-19 06:24:30 +00:00
mrg
261538ecac remove include of <vm/vm.h> 2000-06-28 16:39:25 +00:00
augustss
ed9486e158 Bring the coding style into the 80s, i.e., get rid of __P and use
ANSI prototypes and declarations.
2000-06-01 14:28:57 +00:00
augustss
30c20f930f Change my email address. 2000-04-27 15:26:44 +00:00
nathanw
a7f01b4816 Fix DMAADDR():
Return the mapped address of the block, not the kernel address.
A uhci device now finds devices on my pc164.
2000-03-12 23:10:29 +00:00
augustss
3386c68b46 Cosmetic changes and some small improvements. From FreeBSD and Nick Hibma. 1999-11-18 23:32:25 +00:00
augustss
cefd751ca7 Remove FreeBSD tags that got in there by accident.
Add #include <sys/time.h> to usb.h.
1999-10-13 18:52:54 +00:00
augustss
03a522d3c1 Merge in a large batch of changes from Nick Hibma <hibma@skylink.it> so
the USB stack compiles on FreeBSD again.
1999-10-13 08:10:55 +00:00
augustss
ff6a476e6c Rearrange the code a little so we can decide if we are in process
or interrupt context in a reliable way.  Mainly used for DIAGNOSTIC.
1999-09-13 19:18:17 +00:00
augustss
2aadcb5f47 Change the internal API to allow DMA buffers to be pre-allocated by
the device driver instead of happening automagically in the HC driver.
This affects both the HC-USBD interface as well as the USBD-device
interface.
This change will allow DMA buffers to be reused e.g. in isochronous
traffic.

Add isochronous support to the UHCI driver (not for OHCI yet).
1999-09-09 12:26:43 +00:00
augustss
f747201099 Move more of the transfer completion processing to HC independent code.
Fix some problems with transfer abort & timeout.
1999-08-22 20:12:39 +00:00
augustss
3016e1ebe0 Make some small changes to make it compile on OpenBSD. 1999-08-17 16:06:20 +00:00
augustss
9b3e9f45bf A minor fix for FreeBSD. 1999-01-09 12:16:54 +00:00
augustss
e0c228ae9c Merge changes to make the USB stack work with FreeBSD. The original
diffs from Nick Hibma <n_hibma@freebsd.org>, but with substantial
changes from me.
XXX Not tested on FreeBSD yet.
1998-12-26 12:53:00 +00:00
augustss
ca707fcdf2 Make the copyright header conform to the NetBSD template. 1998-11-25 22:32:04 +00:00
augustss
b916de0f86 Add special memory allocation routines that supports allocation
DMA-able memory in small chunks (USB uses a lot of 8 byte chunks).
Using the bus_dma functions directly is inefficient.
1998-07-24 21:09:07 +00:00