dma_xfer function

Updated: April 19, 2023

The dma_xfer function initiates a DMA transmit, receive, or exchange transaction. The prototype for this function is:

int dma_xfer( void *hdl,
              uint32_t device,
              spi_dma_paddr_t *paddr,
              int len );

The arguments are:

hdl
The handle of the low-level module that the init function returned.
device
The device ID.
paddr
A pointer to the DMA buffer address, which is defined as:
typedef struct {
    uint64_t    rpaddr;
    uint64_t    wpaddr;
} spi_dma_paddr_t;
  

The rpaddr and wpaddr are physical addresses.

len
The length, in bytes, of the data for this DMA transaction.

This function must return the number of bytes that have been successfully transferred by DMA, or -1 if an error occurred. It's the responsibility of the application to manage the DMA buffer.