Merge remote-tracking branch 'remotes/vivier/tags/trivial-branch-for-6.2-pull-request...
[qemu.git] / include / hw / cris / etraxfs_dma.h
1 #ifndef HW_ETRAXFS_DMA_H
2 #define HW_ETRAXFS_DMA_H
3
4 #include "exec/hwaddr.h"
5
6 struct dma_context_metadata {
7 /* data descriptor md */
8 uint16_t metadata;
9 };
10
11 struct 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
28 void *etraxfs_dmac_init(hwaddr base, int nr_channels);
29 void etraxfs_dmac_connect(void *opaque, int channel, qemu_irq *line,
30 int input);
31 void etraxfs_dmac_connect_client(void *opaque, int c,
32 struct etraxfs_dma_client *cl);
33 int etraxfs_dmac_input(struct etraxfs_dma_client *client,
34 void *buf, int len, int eop);
35
36 #endif