/* Allows changing the DMA callback function or data. This may be needed if the driver shares a single DMA channel for multiple dma triggers.  */
int omap_set_dma_callback(int lch, void(*callback)(int lch, u16 ch_status, void *data), void *data)
/* Allows changing the DMA callback function or data. This may be needed if the driver shares a single DMA channel for multiple dma triggers.  */
int omap_set_dma_callback(int lch, void(*callback)(int lch, u16 ch_status, void *data), void *data)
{
	unsigned long flags;
	if (lch < 0)
		return -ENODEV;
	spin_lock_irqsave(&dma_chan_lock, flags);
	if (dma_chan[lch].dev_id == -1) {
		printk(KERN_ERR "DMA callback for not set for free channel\n");
		spin_unlock_irqrestore(&dma_chan_lock, flags);
		return -EINVAL;
	}
	dma_chan[lch].callback = callback;
	dma_chan[lch].data = data;
	spin_unlock_irqrestore(&dma_chan_lock, flags);
	return 0;
}