Commit Graph

56 Commits

Author SHA1 Message Date
macallan
4507b45ca8 do as phone suggested - remove sparc_bus_map_large() again and use a flag
instead ( BUS_SPACE_MAP_LARGE )
2009-05-26 03:30:24 +00:00
macallan
718aa97afd Add sparc_bus_map_large() to map large bus ranges like framebuffers and
apertures outside the IODEV range. ZX for example needs 8MB for the framebuffer
alone while the IODEV range provides only 16MB.
2009-04-16 16:55:00 +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
mrg
4410329b87 add a pair of new bus_dma(9) functions:
int _bus_dmatag_subregion(bus_dma_tag_t tag,
				  bus_addr_t min_addr,
				  bus_addr_t max_addr,
				  bus_dma_tag_t *newtag,
				  int flags)
	void _bus_dmatag_destroy(bus_dma_tag_t tag)

that allow a (normally broken/limited) device to restrict the bus address
range it can talk to.  this is used by bce(4) to limit DMA addresses to
1GB range, the maximum the chip can address.

all this is from Yorick Hardy <yhardy@uj.ac.za> with input from several
people on tech-kern.

XXX: bus_dma(9) needs an update still.
2007-02-21 20:41:23 +00:00
uwe
8ea3cb44c6 De-__P. 2006-03-04 03:39:02 +00:00
uwe
6e4f5eb548 s/u_intN_t/uintN_t/ 2006-03-04 02:56:21 +00:00
perry
fbae48b901 Change "inline" back to "__inline" in .h files -- C99 is still too
new, and some apps compile things in C89 mode. C89 keywords stay.

As per core@.
2006-02-16 20:17:12 +00:00
perry
50a256a3a0 __asm__ -> __asm
__const__ -> const
__inline__ -> inline
__volatile__ -> volatile
2005-12-24 23:23:59 +00:00
perry
5f1c88d70d Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete. 2005-12-24 20:06:46 +00:00
christos
95e1ffb156 merge ktrace-lwp. 2005-12-11 12:16:03 +00:00
matt
a6db24a485 Add a dm_maxsegsz public member to bus_dmamap_t. This allows a user of the API
to select the maximum segment size for each bus_dmamap_load (up to the maxsegsz
supplied to bus_dmamap_create).  dm_maxsegsz is reset to the value supplied to
bus_dmamap_create when the dmamap is unloaded.
2005-03-09 19:04:43 +00:00
martin
ddde12b011 Add bus_space_region_stream* functions (verbatim copy from sparc64).
Fixes PR port-sparc/28302. OK'd by pk.
2004-11-15 10:18:58 +00:00
pk
889aa9f444 Introduce bus_space_tag_alloc() for the common parts of bus tag allocation. 2004-06-30 21:16:38 +00:00
pk
a24d586ab2 Rename bus_translate_address_generic => bus_space_translate_address_generic()
and move prototype to <machine/bus.h>.
2004-06-28 10:14:13 +00:00
pk
66a4653f8a Always use `full bus space'. In order to implement this more efficiently,
require that all bus tags have pointers to bus_space_read/write functions,
i.e. no run-time hunting for the first "upstream" implementation.
Since this changes the way bus tags should be constructed it makes sense
to do the same thing for the rest of the bus space methods.
So, now bus space tags are generally constructed by copying the parent's bus
tag and then overriding the methods that the bus driver needs to handle,
instead of starting with an empty bus tag and fiiling in only the fields needed.
2004-06-27 18:24:46 +00:00
pk
fdd5b03782 Use __insn_barrier() in all bus_space read/write operations. 2003-11-16 11:09:07 +00:00
fvdl
7dd7f8baa2 Handle 64bit DMA addresses on PCI for platforms that can (currently only
enabled on amd64). Add a dmat64 field to various PCI attach structures,
and pass it down where needed. Implement a simple new function called
pci_dma64_available(pa) to test if 64bit DMA addresses may be used.
This returns 1 iff _PCI_HAVE_DMA64 is defined in <machine/pci_machdep.h>,
and there is more than 4G of memory.
2003-06-15 23:08:53 +00:00
kent
cd7d9faeaf Introduce BUS_DMA_NOCACHE, and bus_dmamem_map() of i386 supports it. 2003-01-28 01:07:51 +00:00
martin
87a073002c Make the *_stream_* methods always use the *_real accessors.
Define __BUS_SPACE_HAS_STREAM_METHODS.
2003-01-03 13:23:39 +00:00
mrg
7bd617d237 part one of bus_space(9) fixes to enable bus spaces to override the
bus_space_{read,write}_[1248]() functions, which will allow 16-bit
PCMCIA support to work without additional hacks in MI drivers.
this option is not enabled yet.
2003-01-03 11:57:45 +00:00
pk
725a6aebf7 Remove the `flags' argument from bus_intr_establish(). 2002-12-10 13:44:47 +00:00
pk
5446e96bac bus_intr_establish() now takes an optional `fast trap' handler argument.
BUS_INTR_ESTABLISH_FASTTRAP and BUS_INTR_ESTABLISH_SOFTINTR are no longer used.
2002-12-10 12:16:25 +00:00
thorpej
a9f285b0ac Put a bus's ranges in the bus space tag, and make sparc_bus_map()
perform the translation and recursion if t->ranges != NULL.  Make
sbus, cpuunit, and bootbus inherit the parent's map/mmap routines,
and delete the now-unused mapping functions.  Update all places where
bus space tags are statically allocated.
2002-08-25 17:54:57 +00:00
uwe
440409e641 Delint a bit. 2002-05-07 06:45:22 +00:00
uwe
8107633e20 bus space methods should be "static __inline__", not "extern __inline__".
Otherwise an unoptimized kernel cannot be linked.  Reviewed by pk.
2002-05-07 00:37:47 +00:00
pk
ebe575d3ca BUS_ADDR(): avoid signed conversions. 2002-04-23 07:17:29 +00:00
eeh
0cb6a3a2a5 Add bus_space_vaddr(). 2002-03-21 00:30:41 +00:00
pk
221d0f52da `bus_type_t' is gone. Retain bus_space_map2() for MD drivers that need
to map registers to a fixed virtual address.
2002-03-11 16:06:42 +00:00
soren
6a76b36417 Use regular read/writes for stream variant calls. 2001-12-15 12:39:55 +00:00
eeh
766a9b8c9c Change bus_space_mmap() signature to the official one. 2001-09-24 23:49:31 +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
thorpej
2c4c690f14 Add the BUS_DMA_STREAMING flag. 2001-03-07 22:42:16 +00:00
pk
406e0f779f Add a `device class' interrupt level argument (from machine/intr.h)
to bus_interrupt_establish().

It's currently only used in sparc64/dev/psycho.c to assign a CPU interrupt
level to devices in PCI slots.
2000-07-09 20:57:41 +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
pk
0790f00e68 Maintain the DVMA map extent subregion boundaries in the bus_dma map
structure.
2000-06-24 22:47:45 +00:00
pk
5c1633af0d Fix pastos in bus_space_read_region_*() functions. 2000-06-21 13:41:23 +00:00
pk
1273031c4d Simplify the bus_dma(9) implementation:
- the `alignment' and `boundary' arguments in bus_dmamem_alloc() only
  serve as hints on how to break up a DMA transaction into chunks
  when necessary; it is not necessary on sparc DVMA hardware.

- exclusively use the VM page size (i.e. PAGE_SIZE et.al.) when computing
  resource allocations.

- remember the size of DVMA resource allocations in the private `_ds_sgsize'
  field in a dma segment descriptor.
2000-05-23 11:39:57 +00:00
pk
2d12c9e33b The bus_dma(9) implementation now allocates DVMA addresses in
bus_dmamap_load_*() routines only. Note that DMA memory buffers
allocated with bus_dmamem_alloc() _must_ be loaded by bus_dmamap_load_raw().
2000-05-09 22:39:35 +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
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
drochner
cc66380116 fix address incrementing in the read_region_N, write_region_N,
set_region_N and copy_region_N methods
1999-01-29 16:30:51 +00:00
pk
2e89e9144b Turn a bunch of bus_space_*() macros into in-line functions mostly to avoid
variable aliasing.
1998-11-26 23:50:52 +00:00
pk
bc98f448b8 Turn the passed tag into "used" arguments. 1998-11-22 21:52:24 +00:00
pk
b8a1caac4a Convert to [pv]addr_t & [pv]size_t. 1998-08-21 14:12:18 +00:00
pk
862c0bafcc Define a BUS_DMA flag for devices that have a 24-bit address space.
Update _bus_dma* prototypes.
1998-07-30 22:20:31 +00:00
pk
286472fe4d * Pass the bus tag instead of just the cookie to all bus space methods.
* In the bus tag structure, keep a reference to the parent bus.
* Express all bus space methods as inline functions in stead of macros
  and use the parent bus tag reference to find the nearest "upstream"
  bus that implements the method.
1998-04-07 20:07:23 +00:00
pk
11928be0ff `sparc_bus_mmap()' declaration moved to machdep.c 1998-03-29 22:00:33 +00:00
pk
2a65520c69 bus_space_probe() prototype. 1998-03-28 19:45:29 +00:00
pk
9e69994eaa Add interrupt establish' and device mmap' methods and macros to
match to the bus tag structure.
1998-03-21 19:31:27 +00:00