Statistics
| Branch: | Revision:

root / hw / etraxfs_dma.h @ 43cf8ae6

History | View | Annotate | Download (773 Bytes)

1 73a511de Lars Persson
struct dma_context_metadata {
2 73a511de Lars Persson
        /* data descriptor md */
3 73a511de Lars Persson
        uint16_t metadata;
4 73a511de Lars Persson
};
5 73a511de Lars Persson
6 1ba13a5d edgar_igl
struct etraxfs_dma_client
7 1ba13a5d edgar_igl
{
8 1ba13a5d edgar_igl
        /* DMA controller. */
9 1ba13a5d edgar_igl
        int channel;
10 1ba13a5d edgar_igl
        void *ctrl;
11 1ba13a5d edgar_igl
12 1ba13a5d edgar_igl
        /* client.  */
13 73a511de Lars Persson
        struct {
14 73a511de Lars Persson
                int (*push)(void *opaque, unsigned char *buf,
15 73a511de Lars Persson
                            int len, bool eop);
16 1ba13a5d edgar_igl
                void (*pull)(void *opaque);
17 73a511de Lars Persson
                void (*metadata_push)(void *opaque,
18 73a511de Lars Persson
                                      const struct dma_context_metadata *md);
19 1ba13a5d edgar_igl
                void *opaque;
20 1ba13a5d edgar_igl
        } client;
21 1ba13a5d edgar_igl
};
22 1ba13a5d edgar_igl
23 c227f099 Anthony Liguori
void *etraxfs_dmac_init(target_phys_addr_t base, int nr_channels);
24 1ba13a5d edgar_igl
void etraxfs_dmac_connect(void *opaque, int channel, qemu_irq *line,
25 1ba13a5d edgar_igl
                          int input);
26 1ba13a5d edgar_igl
void etraxfs_dmac_connect_client(void *opaque, int c, 
27 1ba13a5d edgar_igl
                                 struct etraxfs_dma_client *cl);
28 1ba13a5d edgar_igl
int etraxfs_dmac_input(struct etraxfs_dma_client *client, 
29 1ba13a5d edgar_igl
                       void *buf, int len, int eop);