struct dma_context_metadata {
	/* data descriptor md */
	uint16_t metadata;
};

struct etraxfs_dma_client
{
	/* DMA controller. */
	int channel;
	void *ctrl;

	/* client.  */
	struct {
		int (*push)(void *opaque, unsigned char *buf,
		            int len, bool eop);
		void (*pull)(void *opaque);
		void (*metadata_push)(void *opaque,
		                      const struct dma_context_metadata *md);
		void *opaque;
	} client;
};

void *etraxfs_dmac_init(target_phys_addr_t base, int nr_channels);
void etraxfs_dmac_connect(void *opaque, int channel, qemu_irq *line,
			  int input);
void etraxfs_dmac_connect_client(void *opaque, int c, 
				 struct etraxfs_dma_client *cl);
int etraxfs_dmac_input(struct etraxfs_dma_client *client, 
		       void *buf, int len, int eop);
