root / hw / xilinx_axidma.h @ 0dad6c35
History | View | Annotate | Download (1 kB)
1 |
/* AXI DMA connection. Used until qdev provides a generic way. */
|
---|---|
2 |
typedef void (*DMAPushFn)(void *opaque, |
3 |
unsigned char *buf, size_t len, uint32_t *app); |
4 |
|
5 |
struct XilinxDMAConnection {
|
6 |
void *dma;
|
7 |
void *client;
|
8 |
|
9 |
DMAPushFn to_dma; |
10 |
DMAPushFn to_client; |
11 |
}; |
12 |
|
13 |
static inline void xlx_dma_connect_client(struct XilinxDMAConnection *dmach, |
14 |
void *c, DMAPushFn f)
|
15 |
{ |
16 |
dmach->client = c; |
17 |
dmach->to_client = f; |
18 |
} |
19 |
|
20 |
static inline void xlx_dma_connect_dma(struct XilinxDMAConnection *dmach, |
21 |
void *d, DMAPushFn f)
|
22 |
{ |
23 |
dmach->dma = d; |
24 |
dmach->to_dma = f; |
25 |
} |
26 |
|
27 |
static inline |
28 |
void xlx_dma_push_to_dma(struct XilinxDMAConnection *dmach, |
29 |
uint8_t *buf, size_t len, uint32_t *app) |
30 |
{ |
31 |
dmach->to_dma(dmach->dma, buf, len, app); |
32 |
} |
33 |
static inline |
34 |
void xlx_dma_push_to_client(struct XilinxDMAConnection *dmach, |
35 |
uint8_t *buf, size_t len, uint32_t *app) |
36 |
{ |
37 |
dmach->to_client(dmach->client, buf, len, app); |
38 |
} |
39 |
|