summaryrefslogtreecommitdiff
path: root/sys/dev/xdma
Commit message (Collapse)AuthorAgeFilesLines
* Add driver for ARM PrimeCell PL330 DMA engine.Ruslan Bukin2018-04-132-0/+778
| | | | | | | | Sponsored by: DARPA, AFRL Differential Revision: https://reviews.freebsd.org/D10201 Notes: svn path=/head/; revision=332469
* Don't include sys/bus_dma.h directly, use machine/bus.h instead.Ruslan Bukin2018-04-133-3/+4
| | | | | | | Sponsored by: DARPA, AFRL Notes: svn path=/head/; revision=332468
* Tune xDMA interface slightly:Ruslan Bukin2018-04-1210-384/+1445
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o Move descriptors allocation to DMA engine driver o Add generic xdma_request() routine o Add less-generic scatter-gather application based on xdma interface Typical operation flow in peripheral device driver is: 1. Get xDMA controller sc->xdma_tx = xdma_ofw_get(sc->dev, "tx"); 2. Allocate virtual channel sc->xchan_tx = xdma_channel_alloc(sc->xdma_tx, caps); 3. Setup transfer status callback xdma_setup_intr(sc->xchan_tx, my_tx_intr, sc, &sc->ih_tx); 4. Request a transfer(s) ret = xdma_request(sc->xchan_tx, &req); 5. Free the channel xdma_channel_free(sc->xdma_tx); 6. Free the controller xdma_put(sc->xdma_tx); Sponsored by: DARPA, AFRL Differential Revision: https://reviews.freebsd.org/D14971 Notes: svn path=/head/; revision=332435
* Clean up MD pollution of bus_dma.h:Jason A. Harmening2017-07-011-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | --Remove special-case handling of sparc64 bus_dmamap* functions. Replace with a more generic mechanism that allows MD busdma implementations to generate inline mapping functions by defining WANT_INLINE_DMAMAP in <machine/bus_dma.h>. This is currently useful for sparc64, x86, and arm64, which all implement non-load dmamap operations as simple wrappers around map objects which may be bus- or device-specific. --Remove NULL-checked bus_dmamap macros. Implement the equivalent NULL checks in the inlined x86 implementation. For non-x86 platforms, these checks are a minor pessimization as those platforms do not currently allow NULL maps. NULL maps were originally allowed on arm64, which appears to have been the motivation behind adding arm[64]-specific barriers to bus_dma.h, but that support was removed in r299463. --Simplify the internal interface used by the bus_dmamap_load* variants and move it to bus_dma_internal.h --Fix some drivers that directly include sys/bus_dma.h despite the recommendations of bus_dma(9) Reviewed by: kib (previous revision), marius Differential Revision: https://reviews.freebsd.org/D10729 Notes: svn path=/head/; revision=320528
* Add parenthesis.Ruslan Bukin2016-12-301-3/+3
| | | | | | | | Noticed by: hps Sponsored by: DARPA, AFRL Notes: svn path=/head/; revision=310828
* o Fix unlocking.Ruslan Bukin2016-12-302-4/+5
| | | | | | | | | o Fix types for ds_addr/ds_len. Sponsored by: DARPA, AFRL Notes: svn path=/head/; revision=310824
* Add xDMA -- the DMA abstraction layer, initial verison.Ruslan Bukin2016-12-204-0/+1332
xDMA is a DMA framework designed to abstract the interaction between device drivers and DMA engines. Project wiki: https://wiki.freebsd.org/xdma Sponsored by: DARPA, AFRL Differential Revision: https://reviews.freebsd.org/D8807 Notes: svn path=/head/; revision=310330