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 |