Lines Matching refs:dma
445 struct auixp_dma *dma; in auixp_malloc() local
451 dma = kmem_alloc(sizeof(*dma), KM_SLEEP); in auixp_malloc()
454 error = auixp_allocmem(sc, size, 16, dma); in auixp_malloc()
456 kmem_free(dma, sizeof(*dma)); in auixp_malloc()
461 SLIST_INSERT_HEAD(&sc->sc_dma_list, dma, dma_chain); in auixp_malloc()
464 "in %d segs\n", KERNADDR(dma), (uint32_t) DMAADDR(dma), dma->size, in auixp_malloc()
465 dma->nsegs) in auixp_malloc()
468 return KERNADDR(dma); in auixp_malloc()
481 struct auixp_dma *dma; in auixp_free() local
485 SLIST_FOREACH(dma, &sc->sc_dma_list, dma_chain) { in auixp_free()
486 if (KERNADDR(dma) == addr) { in auixp_free()
487 SLIST_REMOVE(&sc->sc_dma_list, dma, auixp_dma, in auixp_free()
489 auixp_freemem(sc, dma); in auixp_free()
490 kmem_free(dma, sizeof(*dma)); in auixp_free()
619 struct auixp_dma *dma; in auixp_allocate_dma_chain() local
624 dma = kmem_zalloc(sizeof(struct auixp_dma), KM_SLEEP); in auixp_allocate_dma_chain()
628 16, dma); in auixp_allocate_dma_chain()
631 kmem_free(dma, sizeof(*dma)); in auixp_allocate_dma_chain()
636 dma->intr = NULL; in auixp_allocate_dma_chain()
637 dma->intrarg = NULL; in auixp_allocate_dma_chain()
639 *dmap = dma; in auixp_allocate_dma_chain()
646 auixp_program_dma_chain(struct auixp_softc *sc, struct auixp_dma *dma) in auixp_program_dma_chain() argument
656 value = DMAADDR(dma); in auixp_program_dma_chain()
660 bus_space_write_4(iot, ioh, dma->linkptr, 0); in auixp_program_dma_chain()
663 auixp_disable_dma(sc, dma); in auixp_program_dma_chain()
664 auixp_enable_dma(sc, dma); in auixp_program_dma_chain()
667 bus_space_write_4(iot, ioh, dma->linkptr, value); in auixp_program_dma_chain()
673 auixp_dma_update(struct auixp_softc *sc, struct auixp_dma *dma) in auixp_dma_update() argument
677 if (!dma) in auixp_dma_update()
679 if (!dma->intr) in auixp_dma_update()
683 (*dma->intr)(dma->intrarg); in auixp_dma_update()
780 struct auixp_dma *dma; in auixp_halt_output() local
784 dma = sc->sc_output_dma; in auixp_halt_output()
785 auixp_disable_dma(sc, dma); in auixp_halt_output()
787 dma->running = 0; in auixp_halt_output()
855 struct auixp_dma *dma; in auixp_halt_input() local
859 dma = sc->sc_input_dma; in auixp_halt_input()
860 auixp_disable_dma(sc, dma); in auixp_halt_input()
862 dma->running = 0; in auixp_halt_input()
947 size_t align, struct auixp_dma *dma) in auixp_allocmem() argument
952 dma->size = size; in auixp_allocmem()
955 error = bus_dmamem_alloc(sc->sc_dmat, dma->size, align, 0, in auixp_allocmem()
956 dma->segs, sizeof(dma->segs) / sizeof(dma->segs[0]), &dma->nsegs, in auixp_allocmem()
965 error = bus_dmamem_map(sc->sc_dmat, dma->segs, dma->nsegs, dma->size, in auixp_allocmem()
966 &dma->addr, BUS_DMA_WAITOK | BUS_DMA_COHERENT); in auixp_allocmem()
971 error = bus_dmamap_create(sc->sc_dmat, dma->size, 1, dma->size, 0, in auixp_allocmem()
972 BUS_DMA_WAITOK, &dma->map); in auixp_allocmem()
980 error = bus_dmamap_load(sc->sc_dmat, dma->map, dma->addr, dma->size, NULL, in auixp_allocmem()
988 bus_dmamap_destroy(sc->sc_dmat, dma->map); in auixp_allocmem()
990 bus_dmamem_unmap(sc->sc_dmat, dma->addr, dma->size); in auixp_allocmem()
992 bus_dmamem_free(sc->sc_dmat, dma->segs, dma->nsegs); in auixp_allocmem()
1562 auixp_disable_dma(struct auixp_softc *sc, struct auixp_dma *dma) in auixp_disable_dma() argument
1572 if (value & dma->dma_enable_bit) { in auixp_disable_dma()
1573 value &= ~dma->dma_enable_bit; in auixp_disable_dma()
1580 auixp_enable_dma(struct auixp_softc *sc, struct auixp_dma *dma) in auixp_enable_dma() argument
1590 if (!(value & dma->dma_enable_bit)) { in auixp_enable_dma()
1591 value |= dma->dma_enable_bit; in auixp_enable_dma()