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

	/* client.  */
	struct
	{
		int (*push)(void *opaque, unsigned char *buf, int len);
		void (*pull)(void *opaque);
		void *opaque;
	} client;
};

void *etraxfs_dmac_init(CPUState *env, 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);
void etraxfs_dmac_run(void *opaque);
int etraxfs_dmac_input(struct etraxfs_dma_client *client, 
		       void *buf, int len, int eop);
