Linked list descriptors

One feature of FDMA transfers is that a list of transfers can be passed to the FDMA engine, and they will be performed sequentially without any further CPU involvement. To do this a number of transfer descriptors need to be defined and initialized as normal, and then they are chained together into a linked list using the dma_params_link() inline function:

void dma_params_link(struct stm_dma_params *parent,
                     struct stm_dma_params *child);

This causes the two transfer descriptors to be linked, so that child will be executed after parent.

Transfer descriptor parameters which affect the complete transfer, such as callbacks should be set on the first element of the list. The setting for any subsequent elements will be ignored. Similarly when executing the transfer, it is the first element of the list which is passed to dma_xfer_list().