Statistics
| Branch: | Revision:

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
}