| /* AXI DMA connection. Used until qdev provides a generic way. */ |
| typedef void (*DMAPushFn)(void *opaque, |
| unsigned char *buf, size_t len, uint32_t *app); |
| |
| struct XilinxDMAConnection { |
| void *dma; |
| void *client; |
| |
| DMAPushFn to_dma; |
| DMAPushFn to_client; |
| }; |
| |
| static inline void xlx_dma_connect_client(struct XilinxDMAConnection *dmach, |
| void *c, DMAPushFn f) |
| { |
| dmach->client = c; |
| dmach->to_client = f; |
| } |
| |
| static inline void xlx_dma_connect_dma(struct XilinxDMAConnection *dmach, |
| void *d, DMAPushFn f) |
| { |
| dmach->dma = d; |
| dmach->to_dma = f; |
| } |
| |
| static inline |
| void xlx_dma_push_to_dma(struct XilinxDMAConnection *dmach, |
| uint8_t *buf, size_t len, uint32_t *app) |
| { |
| dmach->to_dma(dmach->dma, buf, len, app); |
| } |
| static inline |
| void xlx_dma_push_to_client(struct XilinxDMAConnection *dmach, |
| uint8_t *buf, size_t len, uint32_t *app) |
| { |
| dmach->to_client(dmach->client, buf, len, app); |
| } |
| |