Lines Matching refs:dma

96     size_t align, struct bwdsp_dma *dma)
100 dma->dma_size = size;
101 error = bus_dmamem_alloc(sc->sc_dmat, dma->dma_size, align, 0,
102 dma->dma_segs, 1, &dma->dma_nsegs, BUS_DMA_WAITOK);
106 error = bus_dmamem_map(sc->sc_dmat, dma->dma_segs, dma->dma_nsegs,
107 dma->dma_size, &dma->dma_addr, BUS_DMA_WAITOK | BWDSP_MAP_FLAGS);
111 error = bus_dmamap_create(sc->sc_dmat, dma->dma_size, dma->dma_nsegs,
112 dma->dma_size, 0, BUS_DMA_WAITOK, &dma->dma_map);
116 error = bus_dmamap_load(sc->sc_dmat, dma->dma_map, dma->dma_addr,
117 dma->dma_size, NULL, BUS_DMA_WAITOK);
124 bus_dmamap_destroy(sc->sc_dmat, dma->dma_map);
126 bus_dmamem_unmap(sc->sc_dmat, dma->dma_addr, dma->dma_size);
128 bus_dmamem_free(sc->sc_dmat, dma->dma_segs, dma->dma_nsegs);
134 bwdsp_freedma(struct bwdsp_softc *sc, struct bwdsp_dma *dma)
136 bus_dmamap_unload(sc->sc_dmat, dma->dma_map);
137 bus_dmamap_destroy(sc->sc_dmat, dma->dma_map);
138 bus_dmamem_unmap(sc->sc_dmat, dma->dma_addr, dma->dma_size);
139 bus_dmamem_free(sc->sc_dmat, dma->dma_segs, dma->dma_nsegs);
189 struct bwdsp_dma *dma;
192 dma = kmem_alloc(sizeof(*dma), KM_SLEEP);
194 error = bwdsp_allocdma(sc, size, DSP_DMA_ALIGN, dma);
196 kmem_free(dma, sizeof(*dma));
202 LIST_INSERT_HEAD(&sc->sc_dmalist, dma, dma_list);
204 return dma->dma_addr;
211 struct bwdsp_dma *dma;
213 LIST_FOREACH(dma, &sc->sc_dmalist, dma_list)
214 if (dma->dma_addr == addr) {
215 bwdsp_freedma(sc, dma);
216 LIST_REMOVE(dma, dma_list);
217 kmem_free(dma, sizeof(*dma));
280 struct bwdsp_dma *dma;
288 LIST_FOREACH(dma, &sc->sc_dmalist, dma_list)
289 if (dma->dma_addr == start) {
290 pstart = dma->dma_map->dm_segs[0].ds_addr;