Statistics
| Branch: | Revision:

root / hw / etraxfs_dma.h @ 9a6ee9fd

History | View | Annotate | Download (822 Bytes)

1 cb9c377f Paolo Bonzini
#ifndef HW_ETRAXFS_DMA_H
2 cb9c377f Paolo Bonzini
#define HW_ETRAXFS_DMA_H 1
3 cb9c377f Paolo Bonzini
4 73a511de Lars Persson
struct dma_context_metadata {
5 73a511de Lars Persson
        /* data descriptor md */
6 73a511de Lars Persson
        uint16_t metadata;
7 73a511de Lars Persson
};
8 73a511de Lars Persson
9 1ba13a5d edgar_igl
struct etraxfs_dma_client
10 1ba13a5d edgar_igl
{
11 1ba13a5d edgar_igl
        /* DMA controller. */
12 1ba13a5d edgar_igl
        int channel;
13 1ba13a5d edgar_igl
        void *ctrl;
14 1ba13a5d edgar_igl
15 1ba13a5d edgar_igl
        /* client.  */
16 73a511de Lars Persson
        struct {
17 73a511de Lars Persson
                int (*push)(void *opaque, unsigned char *buf,
18 73a511de Lars Persson
                            int len, bool eop);
19 1ba13a5d edgar_igl
                void (*pull)(void *opaque);
20 73a511de Lars Persson
                void (*metadata_push)(void *opaque,
21 73a511de Lars Persson
                                      const struct dma_context_metadata *md);
22 1ba13a5d edgar_igl
                void *opaque;
23 1ba13a5d edgar_igl
        } client;
24 1ba13a5d edgar_igl
};
25 1ba13a5d edgar_igl
26 a8170e5e Avi Kivity
void *etraxfs_dmac_init(hwaddr base, int nr_channels);
27 1ba13a5d edgar_igl
void etraxfs_dmac_connect(void *opaque, int channel, qemu_irq *line,
28 1ba13a5d edgar_igl
                          int input);
29 1ba13a5d edgar_igl
void etraxfs_dmac_connect_client(void *opaque, int c, 
30 1ba13a5d edgar_igl
                                 struct etraxfs_dma_client *cl);
31 1ba13a5d edgar_igl
int etraxfs_dmac_input(struct etraxfs_dma_client *client, 
32 1ba13a5d edgar_igl
                       void *buf, int len, int eop);
33 cb9c377f Paolo Bonzini
34 cb9c377f Paolo Bonzini
#endif