etraxfs_dma.h (846B)
1#ifndef HW_ETRAXFS_DMA_H 2#define HW_ETRAXFS_DMA_H 3 4#include "exec/hwaddr.h" 5 6struct dma_context_metadata { 7 /* data descriptor md */ 8 uint16_t metadata; 9}; 10 11struct etraxfs_dma_client 12{ 13 /* DMA controller. */ 14 int channel; 15 void *ctrl; 16 17 /* client. */ 18 struct { 19 int (*push)(void *opaque, unsigned char *buf, 20 int len, bool eop); 21 void (*pull)(void *opaque); 22 void (*metadata_push)(void *opaque, 23 const struct dma_context_metadata *md); 24 void *opaque; 25 } client; 26}; 27 28void *etraxfs_dmac_init(hwaddr base, int nr_channels); 29void etraxfs_dmac_connect(void *opaque, int channel, qemu_irq *line, 30 int input); 31void etraxfs_dmac_connect_client(void *opaque, int c, 32 struct etraxfs_dma_client *cl); 33int etraxfs_dmac_input(struct etraxfs_dma_client *client, 34 void *buf, int len, int eop); 35 36#endif