mcbsp[id].io_base + OMAP_MCBSP_REG_DRR1);
mcbsp[id].io_base + OMAP_MCBSP_REG_DRR1, 0, 0);
int omap_mcbsp_recv_buffer(unsigned int id, dma_addr_t buffer, unsigned int length){	int dma_rx_ch;	if (omap_mcbsp_check(id) < 0)		return -EINVAL;	if (omap_request_dma(mcbsp[id].dma_rx_sync, "McBSP RX", omap_mcbsp_rx_dma_callback,			     &mcbsp[id],			     &dma_rx_ch)) {		printk("Unable to request DMA channel for McBSP%d RX. Trying IRQ based RX\n", id+1);		return -EAGAIN;	}	mcbsp[id].dma_rx_lch = dma_rx_ch;	DBG("RX DMA on channel %d\n", dma_rx_ch);	init_completion(&(mcbsp[id].rx_dma_completion));	omap_set_dma_transfer_params(mcbsp[id].dma_rx_lch,				     OMAP_DMA_DATA_TYPE_S16,				     length >> 1, 1,				     OMAP_DMA_SYNC_ELEMENT);	omap_set_dma_src_params(mcbsp[id].dma_rx_lch,				OMAP_DMA_PORT_TIPB,				OMAP_DMA_AMODE_CONSTANT,				mcbsp[id].io_base + OMAP_MCBSP_REG_DRR1);	omap_set_dma_dest_params(mcbsp[id].dma_rx_lch,				 OMAP_DMA_PORT_EMIFF,				 OMAP_DMA_AMODE_POST_INC,				 buffer);	omap_start_dma(mcbsp[id].dma_rx_lch);	wait_for_completion(&(mcbsp[id].rx_dma_completion));	return 0;}