Commit Graph

37 Commits

Author SHA1 Message Date
jdolecek
f5599abc0a fix typo 2001-09-23 19:59:19 +00:00
thorpej
47920741b0 Implement bus_space_mmap(). 2001-09-04 02:37:08 +00:00
thorpej
babefc5331 Add BUS_DMA_READ and BUS_DMA_WRITE flags, that hint the back-end
at dmamap load time that the mapping will be used for a unidirectional
transfer of the specified direction.
2001-07-19 15:32:10 +00:00
lukem
b8f8cf0235 remove some lint, including ansifying some inlines 2001-04-30 01:17:30 +00:00
thorpej
5de93d4755 Move _i386_memio_unmap() into bus_machdep.c; the ACPI code wants it. 2001-04-25 03:31:23 +00:00
fvdl
7d1452855c Fix bus_space_write_multi_* in the memory case; the asm constraints
were wrong.
2001-04-10 12:59:32 +00:00
thorpej
2c4c690f14 Add the BUS_DMA_STREAMING flag. 2001-03-07 22:42:16 +00:00
briggs
3f1e17a340 Define bus_space_*_stream_N functions as their non-stream counterparts. 2000-07-31 22:43:46 +00:00
simonb
889c658b5b Change the kernel mmap interface so that the offset to map is an
"off_t" and the return value is a "paddr_t" to allow mappings
at offsets past 2^31 bytes.  Somewhat inspired by FreeBSD, which
only changed the offset to a "vm_offset_t".

Includes updates for the i386, pc532 and sh3 mmmmap from Jason Thorpe.
2000-06-26 04:55:19 +00:00
drochner
13c9f8d398 implement bus_space_vaddr() 2000-04-17 17:24:48 +00:00
drochner
aa1de89bdf explicitely #include <sys/systm.h> #if BUS_SPACE_DEBUG to get a printf()
prototype
2000-03-15 16:44:48 +00:00
kristerw
ce56ba78b7 Make the inline asm conform to what gcc thinks they should look like (per
discussions in http://gcc.gnu.org/ml/gcc-patches/1998-11/msg00004.html)

Approved by fvdl.
2000-03-13 21:10:24 +00:00
drochner
8eb798e603 define a "BUS_SPACE_MAP_PREFETCHABLE" flag which basically means that
device accesses are idempotent (but should not be cached by the CPU)
2000-01-25 22:13:17 +00:00
cgd
7c02d93c04 nuke current definitions provided by __BUS_SPACE_COMPAT_OLDDEFS.
I'll do what I can to make new ones soon.  8-)
1999-06-18 04:49:24 +00:00
drochner
76fa1751fe Add a macro to check for sufficient pointer alignment in bus.h context,
"BUS_SPACE_ALIGNED_POINTER()".
Equal to the param.h "ALIGNED_POINTER()" normally, but obeys additional
requirements of the bus_space_xxx_n() macros. (BUS_SPACE_DEBUG)
1999-03-23 21:29:03 +00:00
thorpej
10557b15d7 Add a private bounce threshold to the DMA map, initialized in a bus-dependent
fashion.
1998-10-03 21:24:00 +00:00
cgd
5fa7eee1ff don't define __BUS_SPACE_COMPAT_OLDDEFS by default. As stated in
bus_space(9), if drivers want it (they shouldn't; easy to convert) they
can define it right before including bus.h.  There's been a release since
the interfaces were (slightly) changed, and no code in the source tree
uses the old interfaces as far as I can tell.
1998-08-30 23:40:14 +00:00
thorpej
330d142f16 vm_offset_t -> {vaddr_t,paddr_t}, vm_size_t -> vsize_t 1998-08-13 21:36:02 +00:00
thorpej
f8e69a4627 Don't enable BUS_SPACE_DEBUG automatically if DEBUG is defined. 1998-06-09 22:53:57 +00:00
thorpej
528bbb95ed Add debugging support to the bus_space macros. If BUS_SPACE_DEBUG (or DEBUG)
is defined, the bus_space macros will check to ensure that the bus address
and the target buffer (if applicable) are aligned properly for the size
of the type being used.  If they are not, a message will be displayed on
the console.

While strict alignment is not strictly necessary on the x86, ensuring
proper alignment can aid performance, and help make drivers more portable
to architectures (like the Alpha and StrongARM) which _do_ require strict
alignment.
1998-06-07 03:32:32 +00:00
thorpej
f018f866d7 Add a `bounce threshold' to the i386 DMA tag. 1998-06-03 06:33:02 +00:00
thorpej
ff701f8abb Garbage-collect the DMA tag's "_cookie" member; it's not used for anything. 1998-04-26 22:37:20 +00:00
thorpej
8abe76d2f0 Add offset and length parameters to bus_dmamap_sync(), used for specifiying
partial syncs of a DMA mapping.
1998-02-04 05:12:46 +00:00
thorpej
99cc8482d1 Change the last argument of bus_dmamap_sync() from bus_dmasync_op_t to int,
and allow more than one synchronization operation to be specified in
a single call.  Dissallow mixing of PRE and POST operations.
1998-02-04 01:57:27 +00:00
thorpej
a7c5c1ef3c Add dm_mapsize to bus_dmamap_t and rename BUS_DMAMEM_NOSYNC to
BUS_DMA_COHERENT.
1998-02-04 00:32:55 +00:00
fvdl
d786742d91 Provide workaround (by Charles Hannum) for error in register allocation that
could occur in bus_space_write_multi*
1997-10-01 08:25:15 +00:00
cgd
efecf08fef Sync with bus_space(9):
* make map and alloc take 'flags' rather than 'cacheable,' for
  more flexibility.
* rename BUS_BARRIER_* to BUS_SPACE_BARRIER_*, for consistency.
* rename bus_space_copy_* to bus_space_copy_region_* and make their
  defns match the updated spec.
Backward compatibility is provided by defining __BUS_SPACE_COMPAT_OLDDEFS,
which is currently defined by default.
1997-08-15 00:45:16 +00:00
perry
03c3f2c28f fix spelling error, pr-3974 from Dave Huang 1997-08-12 23:53:54 +00:00
cgd
9989c90b52 rename i386 bus_space_{map,unmap,subregion,alloc,free} implementation
functions (which only work on memory and i/o space) to i386_memio_*,
and make bus_space_* in bus.h be #defines which invoke them.  This makes
life easier for people who need to define the all of the bus_space functions
so that they work on spaces other than memory and I/O space.  Also, add
an _i386_memio_map function which is like i386_memio_map but doesn't do
the extent map checking or allocation.  _i386_memio_map and i386_memio_*
are for use only by machine-dependent code.
1997-07-10 02:36:44 +00:00
thorpej
7a15aef7ea Pull thorpej-bus-dma branch into mainline. 1997-06-06 23:24:31 +00:00
thorpej
3883cff7fb Oops, bus_space_set_{multi,region}_N() is supposed to have an `offset'
argument.  Add one to the `prototype' in the comment which preceeds
`not implemented' :-)
1996-12-02 05:35:13 +00:00
thorpej
e463f9241e Two things pointed out by Chris Demetriou <cgd@cs.cmu.edu>:
- The boundary argument to bus_space_alloc() should be a bus_size_t, not
  a bus_addr_t.
- The buffer arguments in the "multiple write" methods should have
  const qualifiers.

And one from me:
- Make bus_space_barrier() eat up the arguments passed to it so that
  the compiler doesn't needlessly whine.
1996-11-10 03:19:25 +00:00
thorpej
16c4c5af26 New bus.h implementation/interface:
- No more distinction between i/o-mapped and memory-mapped
	  devices.  It's all "bus space" now, and space tags
	  differentiate the space with finer grain than the
	  bus chipset tag.
	- Add memory barrier methods.
	- Implement space alloc/free methods.
	- Implement region read/write methods (like memcpy to/from
	  bus space).
This interface provides a better abstraction for dealing with
machine-independent chipset drivers.
1996-10-21 22:24:37 +00:00
thorpej
8c2f15c6fc New implementation of bus_io_{,un}map() for the i386. Details:
- A fixed extent map (statically allocated descriptor storage) is
	  created in init386(), just before the call to consinit().  The
	  fixed descriptor storage has enough room for 8 region entires,
	  which is plenty for early initialization, but doesn't chew up
	  that much memory.

	  This extent map (ioport_ex) manages the i386 i/o port
	  space (0x0 - 0xffff).

	- Just before the call to configure() in cpu_startup(), a
	  flag is set which notifies the bus_io functions that it is
	  safe to use malloc() to allocate descriptor storage, in the
	  event that more than 8 regions are needed.

	- bus_io_map() attempts to allocate the specified region from
	  ioport_ex.  If the allocation succeeds, the io handle is
	  filled in.  If the allocation fails, it is implied that
	  something else is already using that io space, and an
	  error condition is returned.

	- bus_io_unmap() frees a region previously allocated from
	  ioport_ex in bus_io_map().  If the free fails, a warning
	  is printed on the conole.

These changes implement "port accounting".  This is required for
proper autoconfiguration on the i386 port, and makes dealing with,
among other things, PCMCIA io mappings _much_ easier.
1996-06-23 19:59:06 +00:00
christos
1044435088 Avoid unused variable warnings, by using the first argument to the bus
functions.
1996-05-03 19:22:18 +00:00
thorpej
84c7027789 Add bus_io_{read,write}_multi_{1,2,4,8}() to the <machine/bus.h>
interface, and implement them (except for the 8-byte versions) on
the i386.
1996-04-05 23:59:37 +00:00
cgd
6826c7bf48 bus memory and I/O space access functions/macros, to be used by
machine-independent code for more sane access to bus resources.
New functions will be added to this set, in the future, as appropriate,
but this is a good starting set.  Defines:
	bus_{io,mem}_{map,unmap}
	bus_{io,mem}_{read,write}_{1,2,4,8}
functions, and several types to go with them.
1996-03-08 20:11:23 +00:00