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