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