October 2017
Intermediate to advanced
586 pages
14h 8m
English
If you remember the first step of this section, when one requests a DMA channel, the return value is an instance of the struct dma_chan structure. If one looks at its definition in include/linux/dmaengine.h, one will notice that it contains a struct dma_device *device field, which represents the DMA device (the controller actually) that supplied the channel. The kernel driver of this controller is responsible (this is a rule imposed by the kernel API for DMA controller drivers) for exposing a set of functions to prepare DMA transactions, where each of them correspond to a DMA transaction type (enumerated in step 1). Depending on the transaction type, one has no choice but to choose the dedicated function. ...