void dac0800_startdma(unsigned char *buf, unsigned int size) { /* Clear DMA interrupt */ disable_dma(DAC0800_DMA_CHAN); /* Do DMA write to i/o operation */ set_dma_mode(DAC0800_DMA_CHAN, DMA_MODE_WRITE); set_dma_device_addr(DAC0800_DMA_CHAN, DAC0800_DMA_DESTADDR); set_dma_addr(DAC0800_DMA_CHAN, (unsigned int) buf); set_dma_count(DAC0800_DMA_CHAN, size); /* Fire it off! */ enable_dma(DAC0800_DMA_CHAN); }
/* * Configure and start DMA engine. */ void __inline__ m5249audio_dmarun(void) { #if DEBUG printk("m5249audio_dmarun(): dma=%x count=%d\n", m5249audio_dmastart, m5249audio_dmacount); #endif set_dma_mode(M5249AUDIO_DMA, DMA_MODE_WRITE|DMA_MODE_LONG_BIT); set_dma_device_addr(M5249AUDIO_DMA, (MCF_MBAR2+MCFA_PDOR3)); set_dma_addr(M5249AUDIO_DMA, (int)&m5249audio_buf[m5249audio_dmastart]); set_dma_count(M5249AUDIO_DMA, m5249audio_dmacount); m5249audio_dmaing = 1; m5249audio_txbusy = 1; enable_dma(M5249AUDIO_DMA); }