diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2012-04-18 14:59:28 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2012-04-18 14:59:28 +0200 |
commit | 2da0777f66b08fea0767fdd7d4b20d7db17ab0d4 (patch) | |
tree | 27144cee56b9cc4b2460a7e1561a5fd23a262292 /rtemsbsd/src/rtems-bsd-bus-dma.c | |
parent | Hide most error number definitions (diff) | |
download | rtems-libbsd-2da0777f66b08fea0767fdd7d4b20d7db17ab0d4.tar.bz2 |
Add BUS_DMA(9) support for mbufs
Diffstat (limited to 'rtemsbsd/src/rtems-bsd-bus-dma.c')
-rw-r--r-- | rtemsbsd/src/rtems-bsd-bus-dma.c | 37 |
1 files changed, 5 insertions, 32 deletions
diff --git a/rtemsbsd/src/rtems-bsd-bus-dma.c b/rtemsbsd/src/rtems-bsd-bus-dma.c index eae8053a..e697124e 100644 --- a/rtemsbsd/src/rtems-bsd-bus-dma.c +++ b/rtemsbsd/src/rtems-bsd-bus-dma.c @@ -5,11 +5,11 @@ * * @brief TODO. * - * File origin from FreeBSD 'sys/powerpc/powerpc/busdma_machdep.c'. + * File origin from FreeBSD "sys/powerpc/powerpc/busdma_machdep.c". */ /*- - * Copyright (c) 2009, 2010 embedded brains GmbH. All rights reserved. + * Copyright (c) 2009-2012 embedded brains GmbH. All rights reserved. * * embedded brains GmbH * Obere Lagerstr. 30 @@ -46,45 +46,18 @@ #include <freebsd/machine/rtems-bsd-config.h> #include <freebsd/machine/rtems-bsd-cache.h> +#include <freebsd/machine/rtems-bsd-bus-dma.h> + #include <rtems/malloc.h> -#include <freebsd/sys/param.h> -#include <freebsd/sys/types.h> -#include <freebsd/sys/lock.h> -#include <freebsd/sys/mutex.h> -#include <freebsd/sys/systm.h> #include <freebsd/sys/malloc.h> #include <freebsd/machine/atomic.h> -#include <freebsd/machine/bus.h> #ifdef CPU_DATA_CACHE_ALIGNMENT #define CLSZ ((uintptr_t) CPU_DATA_CACHE_ALIGNMENT) #define CLMASK (CLSZ - (uintptr_t) 1) #endif -struct bus_dma_tag { - bus_dma_tag_t parent; - bus_size_t alignment; - bus_size_t boundary; - bus_addr_t lowaddr; - bus_addr_t highaddr; - bus_dma_filter_t *filter; - void *filterarg; - bus_size_t maxsize; - int nsegments; - bus_size_t maxsegsz; - int flags; - int ref_count; - int map_count; - bus_dma_lock_t *lockfunc; - void *lockfuncarg; -}; - -struct bus_dmamap { - void *buffer_begin; - bus_size_t buffer_size; -}; - /* * Convenience function for manipulating driver locks from busdma (during * busdma_swi, for example). Drivers that don't provide their own locks @@ -297,7 +270,7 @@ bus_dmamem_free(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map) * the starting segment on entrance, and the ending segment on exit. * first indicates if this is the first invocation of this function. */ -static int +int bus_dmamap_load_buffer(bus_dma_tag_t dmat, bus_dma_segment_t segs[], void *buf, bus_size_t buflen, struct thread *td, int flags, vm_offset_t *lastaddrp, int *segp, int first) |