Home | History | Annotate | Download | only in dev

Lines Matching refs:dma

88     size_t align, struct bwdsp_dma *dma)
92 dma->dma_size = size;
93 error = bus_dmamem_alloc(sc->sc_dmat, dma->dma_size, align, 0,
94 dma->dma_segs, 1, &dma->dma_nsegs, BUS_DMA_WAITOK);
98 error = bus_dmamem_map(sc->sc_dmat, dma->dma_segs, dma->dma_nsegs,
99 dma->dma_size, &dma->dma_addr, BUS_DMA_WAITOK | BWDSP_MAP_FLAGS);
103 error = bus_dmamap_create(sc->sc_dmat, dma->dma_size, dma->dma_nsegs,
104 dma->dma_size, 0, BUS_DMA_WAITOK, &dma->dma_map);
108 error = bus_dmamap_load(sc->sc_dmat, dma->dma_map, dma->dma_addr,
109 dma->dma_size, NULL, BUS_DMA_WAITOK);
116 bus_dmamap_destroy(sc->sc_dmat, dma->dma_map);
118 bus_dmamem_unmap(sc->sc_dmat, dma->dma_addr, dma->dma_size);
120 bus_dmamem_free(sc->sc_dmat, dma->dma_segs, dma->dma_nsegs);
126 bwdsp_freedma(struct bwdsp_softc *sc, struct bwdsp_dma *dma)
128 bus_dmamap_unload(sc->sc_dmat, dma->dma_map);
129 bus_dmamap_destroy(sc->sc_dmat, dma->dma_map);
130 bus_dmamem_unmap(sc->sc_dmat, dma->dma_addr, dma->dma_size);
131 bus_dmamem_free(sc->sc_dmat, dma->dma_segs, dma->dma_nsegs);
181 struct bwdsp_dma *dma;
184 dma = kmem_alloc(sizeof(*dma), KM_SLEEP);
186 error = bwdsp_allocdma(sc, size, DSP_DMA_ALIGN, dma);
188 kmem_free(dma, sizeof(*dma));
189 device_printf(sc->sc_dev, "couldn't allocate DMA memory (%d)\n",
194 LIST_INSERT_HEAD(&sc->sc_dmalist, dma, dma_list);
196 return dma->dma_addr;
203 struct bwdsp_dma *dma;
205 LIST_FOREACH(dma, &sc->sc_dmalist, dma_list)
206 if (dma->dma_addr == addr) {
207 bwdsp_freedma(sc, dma);
208 LIST_REMOVE(dma, dma_list);
209 kmem_free(dma, sizeof(*dma));
268 struct bwdsp_dma *dma;
276 LIST_FOREACH(dma, &sc->sc_dmalist, dma_list)
277 if (dma->dma_addr == start) {
278 pstart = dma->dma_map->dm_segs[0].ds_addr;
292 /* Start DMA transfer */
303 /* Stop DMA transfer */