Changeset View
Changeset View
Standalone View
Standalone View
sys/powerpc/powerpc/busdma_machdep.c
Show First 20 Lines • Show All 835 Lines • ▼ Show 20 Lines | _bus_dmamap_load_buffer(bus_dma_tag_t dmat, | ||||
/* | /* | ||||
* Did we fit? | * Did we fit? | ||||
*/ | */ | ||||
return (buflen != 0 ? EFBIG : 0); /* XXX better return value here? */ | return (buflen != 0 ? EFBIG : 0); /* XXX better return value here? */ | ||||
} | } | ||||
void | void | ||||
__bus_dmamap_waitok(bus_dma_tag_t dmat, bus_dmamap_t map, | _bus_dmamap_waitok(bus_dma_tag_t dmat, bus_dmamap_t map, | ||||
struct memdesc *mem, bus_dmamap_callback_t *callback, | struct memdesc *mem, bus_dmamap_callback_t *callback, | ||||
void *callback_arg) | void *callback_arg) | ||||
{ | { | ||||
if (dmat->flags & BUS_DMA_COULD_BOUNCE) { | if (dmat->flags & BUS_DMA_COULD_BOUNCE) { | ||||
map->dmat = dmat; | map->dmat = dmat; | ||||
map->mem = *mem; | map->mem = *mem; | ||||
map->callback = callback; | map->callback = callback; | ||||
Show All 21 Lines | _bus_dmamap_complete(bus_dma_tag_t dmat, bus_dmamap_t map, | ||||
return (segs); | return (segs); | ||||
} | } | ||||
/* | /* | ||||
* Release the mapping held by map. | * Release the mapping held by map. | ||||
*/ | */ | ||||
void | void | ||||
_bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map) | bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map) | ||||
{ | { | ||||
struct bounce_page *bpage; | struct bounce_page *bpage; | ||||
if (dmat->iommu) { | if (dmat->iommu) { | ||||
IOMMU_UNMAP(dmat->iommu, map->segments, map->nsegs, dmat->iommu_cookie); | IOMMU_UNMAP(dmat->iommu, map->segments, map->nsegs, dmat->iommu_cookie); | ||||
map->nsegs = 0; | map->nsegs = 0; | ||||
} | } | ||||
while ((bpage = STAILQ_FIRST(&map->bpages)) != NULL) { | while ((bpage = STAILQ_FIRST(&map->bpages)) != NULL) { | ||||
STAILQ_REMOVE_HEAD(&map->bpages, links); | STAILQ_REMOVE_HEAD(&map->bpages, links); | ||||
free_bounce_page(dmat, bpage); | free_bounce_page(dmat, bpage); | ||||
} | } | ||||
} | } | ||||
void | void | ||||
_bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map, bus_dmasync_op_t op) | bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map, bus_dmasync_op_t op) | ||||
{ | { | ||||
struct bounce_page *bpage; | struct bounce_page *bpage; | ||||
vm_offset_t datavaddr, tempvaddr; | vm_offset_t datavaddr, tempvaddr; | ||||
if ((bpage = STAILQ_FIRST(&map->bpages)) != NULL) { | if ((bpage = STAILQ_FIRST(&map->bpages)) != NULL) { | ||||
/* | /* | ||||
* Handle data bouncing. We might also | * Handle data bouncing. We might also | ||||
▲ Show 20 Lines • Show All 314 Lines • Show Last 20 Lines |