Subject: [PATCH 6/8] mmc: omap_hsmmc: add DMA engine support

From: [email-masked] (Tony Lindgren)
Date: Wed, 18 Apr 2012 12:53:18 -0700

* Russell King - ARM Linux <[email-masked]> [120418 12:12]:
> On Wed, Apr 18, 2012 at 11:11:12AM -0700, Tony Lindgren wrote:
> > * Russell King <[email-masked]> [120418 03:15]:
> > > Add DMA engine support to the OMAP HSMMC driver.  This supplements the
> > > private DMA API implementation contained within this driver, and the
> > > driver can be switched at build time between using DMA engine and the
> > > private DMA API.
> > 
> > Glad to see this happening!
> > 
> > No luck here though, after a quick test I'm getting the following with MMC
> > not working:
> 
> Did you enable OMAP DMA engine support?

Heh that's it :) Yup it works now after adding:

CONFIG_DMADEVICES=y
CONFIG_DMA_OMAP=y

How about just continue on PIO if DMA reques fails:

--- a/drivers/mmc/host/omap_hsmmc.c
+++ b/drivers/mmc/host/omap_hsmmc.c
@@ -1921,16 +1921,12 @@ static int __devinit omap_hsmmc_probe(struct platform_device *pdev)
 	dma_cap_set(DMA_SLAVE, mask);
 
 	host->rx_chan = dma_request_channel(mask, omap_dma_filter_fn, &rx_req);
-	if (!host->rx_chan) {
-		dev_err(mmc_dev(host->mmc), "unable to obtain RX DMA engine channel %u\n", rx_req);
-		goto err_irq;
-	}
+	if (!host->rx_chan)
+		dev_info(mmc_dev(host->mmc), "unable to obtain RX DMA engine channel %u\n", rx_req);
 
 	host->tx_chan = dma_request_channel(mask, omap_dma_filter_fn, &tx_req);
-	if (!host->tx_chan) {
-		dev_err(mmc_dev(host->mmc), "unable to obtain TX DMA engine channel %u\n", tx_req);
-		goto err_irq;
-	}
+	if (!host->tx_chan)
+		dev_info(mmc_dev(host->mmc), "unable to obtain TX DMA engine channel %u\n", tx_req);
 
 	/* Request IRQ for MMC operations */
 	ret = request_irq(host->irq, omap_hsmmc_irq, 0,