xDMA is a DMA framework designed to abstract the interaction between device drivers and DMA engines.
Idea for the name: the first letter 'x' hides the real dma controller name (Ingenic PDMA, Allwinner EDMA, Freescale sDMA, etc)
Ideas for improvement:
- SoftDMA - when we have no real dma yet, but already want to use xDMA (WIP)
- Introduce capabilites, so xDMA knows what the transfer types supported by hardware DMA controller, how many data can be copied by single descriptor, etc.
- Callback provided with some information, e.g. how many data were actually copied and any errors occurred during transfer
- Scatter-Gathering transfer type (WIP)
- Non-FDT setup, i.e. real dma controller register itself to xDMA
- Might be useful to have xdma interrupt thread, so callbacks can be optionally provided not in the interrupt time, but after
- Requests enqueuing support ? not sure if we need that
List of hardware DMA controllers currently supported by xDMA:
- Ingenic PDMA
List of consumer devices:
- Ingenic AIC (Audio Interface Controller)