s3cmci: make SDIO IRQ hardware IRQ support build-time configurable
authorBen Dooks <ben@simtec.co.uk>
Thu, 1 Oct 2009 22:44:20 +0000 (15:44 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 1 Oct 2009 23:11:15 +0000 (16:11 -0700)
We have found a couple of boards where the SDIO IRQ hardware support has
failed to work properly, and thus we should make it configurable whether
or not to be included in the driver.

Signed-off-by: Ben Dooks <ben@simtec.co.uk>
Cc: <linux-mmc@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/mmc/host/Kconfig
drivers/mmc/host/s3cmci.c

index cf6a6545240b7e3f63aabef9cd79209447ee0d84..432ae8358c86953a39b9584dce1ebdc085fd30f7 100644 (file)
@@ -276,6 +276,13 @@ config MMC_S3C
 
          If unsure, say N.
 
+config MMC_S3C_HW_SDIO_IRQ
+       bool "Hardware support for SDIO IRQ"
+       depends on MMC_S3C
+       help
+         Enable the hardware support for SDIO interrupts instead of using
+        the generic polling code.
+
 choice
        prompt "Samsung S3C SD/MMC transfer code"
        depends on MMC_S3C
index 0af972275d45acd47d6646c1b0e1677ae1248929..4b627ca16cca6be9af2d18f5723f22a36291a317 100644 (file)
@@ -1715,7 +1715,11 @@ static int __devinit s3cmci_probe(struct platform_device *pdev)
 
        mmc->ops        = &s3cmci_ops;
        mmc->ocr_avail  = MMC_VDD_32_33 | MMC_VDD_33_34;
+#ifdef CONFIG_MMC_S3C_HW_SDIO_IRQ
        mmc->caps       = MMC_CAP_4_BIT_DATA | MMC_CAP_SDIO_IRQ;
+#else
+       mmc->caps       = MMC_CAP_4_BIT_DATA;
+#endif
        mmc->f_min      = host->clk_rate / (host->clk_div * 256);
        mmc->f_max      = host->clk_rate / host->clk_div;
 
@@ -1750,8 +1754,9 @@ static int __devinit s3cmci_probe(struct platform_device *pdev)
        s3cmci_debugfs_attach(host);
 
        platform_set_drvdata(pdev, mmc);
-       dev_info(&pdev->dev, "%s - using %s\n", mmc_hostname(mmc),
-                s3cmci_host_usedma(host) ? "dma" : "pio");
+       dev_info(&pdev->dev, "%s - using %s, %s SDIO IRQ\n", mmc_hostname(mmc),
+                s3cmci_host_usedma(host) ? "dma" : "pio",
+                mmc->caps & MMC_CAP_SDIO_IRQ ? "hw" : "sw");
 
        return 0;