De-orbit bus_dmamem_alloc_size from here too.

Pointed out by:	des
Pointy hat to:	me
This commit is contained in:
scottl 2003-05-26 14:38:48 +00:00
parent b236dd249a
commit 9a6ea2ebe3

View File

@ -170,12 +170,8 @@ static int nexus_dmamap_load_uio(bus_dma_tag_t, bus_dma_tag_t, bus_dmamap_t,
struct uio *, bus_dmamap_callback2_t *, void *, int);
static void nexus_dmamap_unload(bus_dma_tag_t, bus_dma_tag_t, bus_dmamap_t);
static void nexus_dmamap_sync(bus_dma_tag_t, bus_dma_tag_t, bus_dmamap_t, int);
static int nexus_dmamem_alloc_size(bus_dma_tag_t, bus_dma_tag_t, void **, int,
bus_dmamap_t *, u_long size);
static int nexus_dmamem_alloc(bus_dma_tag_t, bus_dma_tag_t, void **, int,
bus_dmamap_t *);
static void nexus_dmamem_free_size(bus_dma_tag_t, bus_dma_tag_t, void *,
bus_dmamap_t, u_long size);
static void nexus_dmamem_free(bus_dma_tag_t, bus_dma_tag_t, void *,
bus_dmamap_t);
@ -228,9 +224,7 @@ bus_dma_tag_create(bus_dma_tag_t parent, bus_size_t alignment,
newtag->dt_dmamap_load_uio = NULL;
newtag->dt_dmamap_unload = NULL;
newtag->dt_dmamap_sync = NULL;
newtag->dt_dmamem_alloc_size = NULL;
newtag->dt_dmamem_alloc = NULL;
newtag->dt_dmamem_free_size = NULL;
newtag->dt_dmamem_free = NULL;
/* Take into account any restrictions imposed by our parent tag */
@ -615,15 +609,12 @@ sparc64_dmamem_free_map(bus_dma_tag_t dmat, bus_dmamap_t map)
* by bus-specific DMA memory allocation functions.
*/
static int
nexus_dmamem_alloc_size(bus_dma_tag_t pdmat, bus_dma_tag_t ddmat, void **vaddr,
int flags, bus_dmamap_t *mapp, bus_size_t size)
nexus_dmamem_alloc(bus_dma_tag_t pdmat, bus_dma_tag_t ddmat, void **vaddr,
int flags, bus_dmamap_t *mapp)
{
if (size > ddmat->dt_maxsize)
return (ENOMEM);
if ((size <= PAGE_SIZE)) {
*vaddr = malloc(size, M_DEVBUF,
if ((ddmat->dt_maxsize <= PAGE_SIZE)) {
*vaddr = malloc(ddmat->dt_maxsize, M_DEVBUF,
(flags & BUS_DMA_NOWAIT) ? M_NOWAIT : M_WAITOK);
} else {
/*
@ -632,7 +623,7 @@ nexus_dmamem_alloc_size(bus_dma_tag_t pdmat, bus_dma_tag_t ddmat, void **vaddr,
* allocations yet though.
*/
mtx_lock(&Giant);
*vaddr = contigmalloc(size, M_DEVBUF,
*vaddr = contigmalloc(ddmat->dt_maxsize, M_DEVBUF,
(flags & BUS_DMA_NOWAIT) ? M_NOWAIT : M_WAITOK,
0ul, ddmat->dt_lowaddr,
ddmat->dt_alignment ? ddmat->dt_alignment : 1UL,
@ -646,21 +637,13 @@ nexus_dmamem_alloc_size(bus_dma_tag_t pdmat, bus_dma_tag_t ddmat, void **vaddr,
return (0);
}
static int
nexus_dmamem_alloc(bus_dma_tag_t pdmat, bus_dma_tag_t ddmat, void **vaddr,
int flags, bus_dmamap_t *mapp)
{
return (sparc64_dmamem_alloc_size(pdmat, ddmat, vaddr, flags, mapp,
ddmat->dt_maxsize));
}
/*
* Common function for freeing DMA-safe memory. May be called by
* bus-specific DMA memory free functions.
*/
static void
nexus_dmamem_free_size(bus_dma_tag_t pdmat, bus_dma_tag_t ddmat, void *vaddr,
bus_dmamap_t map, bus_size_t size)
nexus_dmamem_free(bus_dma_tag_t pdmat, bus_dma_tag_t ddmat, void *vaddr,
bus_dmamap_t map)
{
sparc64_dmamem_free_map(ddmat, map);
@ -668,18 +651,11 @@ nexus_dmamem_free_size(bus_dma_tag_t pdmat, bus_dma_tag_t ddmat, void *vaddr,
free(vaddr, M_DEVBUF);
else {
mtx_lock(&Giant);
contigfree(vaddr, size, M_DEVBUF);
contigfree(vaddr, ddmat->dt_maxsize, M_DEVBUF);
mtx_unlock(&Giant);
}
}
static void
nexus_dmamem_free(bus_dma_tag_t pdmat, bus_dma_tag_t ddmat, void *vaddr,
bus_dmamap_t map)
{
sparc64_dmamem_free_size(pdmat, ddmat, vaddr, map, ddmat->dt_maxsize);
}
struct bus_dma_tag nexus_dmatag = {
NULL,
NULL,
@ -703,9 +679,7 @@ struct bus_dma_tag nexus_dmatag = {
nexus_dmamap_unload,
nexus_dmamap_sync,
nexus_dmamem_alloc_size,
nexus_dmamem_alloc,
nexus_dmamem_free_size,
nexus_dmamem_free,
};