예제 #1
0
파일: dma.c 프로젝트: HackLinux/jz4725
void dma_stop(int ch)
{
	int i;
#define DMA_DISABLE_POLL	0x10000
	if (!__dmac_channel_enabled(ch))
		return;
	for (i=0;i<DMA_DISABLE_POLL;i++)
		if (__dmac_channel_transmit_end_detected(ch))
			break;
	__dmac_disable_channel(ch);
	if (dma_irq[ch])
		__dmac_channel_disable_irq(ch);
}
예제 #2
0
static irqreturn_t jz_mmc_dma_tx_callback(int irq, void *devid)
{
	int chan = txdmachan;

	disable_dma(chan);
	if (__dmac_channel_address_error_detected(chan)) {
		printk(KERN_DEBUG "%s: DMAC address error.\n",
		       __FUNCTION__);
		__dmac_channel_clear_address_error(chan);
	}
	if (__dmac_channel_transmit_end_detected(chan)) {
		__dmac_channel_clear_transmit_end(chan);
	}
	return IRQ_HANDLED;
}
예제 #3
0
파일: dma.c 프로젝트: 173210/ds2sdk
int dma_wait_finish(int ch)
{
    while (!__dmac_channel_transmit_end_detected(ch));
    return 0;
}