blob: 37cb6f091161880c90d9c7f3076d294aecf4bba0 [file] [log] [blame]
Edgar E. Iglesias93f1e402011-03-14 11:13:55 +01001/* AXI DMA connection. Used until qdev provides a generic way. */
2typedef void (*DMAPushFn)(void *opaque,
3 unsigned char *buf, size_t len, uint32_t *app);
4
5struct XilinxDMAConnection {
6 void *dma;
7 void *client;
8
9 DMAPushFn to_dma;
10 DMAPushFn to_client;
11};
12
13static 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
20static 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
27static inline
28void 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}
33static inline
34void 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