summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Dooks <ben@simtec.co.uk>2009-10-01 22:44:20 (GMT)
committerLinus Torvalds <torvalds@linux-foundation.org>2009-10-01 23:11:15 (GMT)
commit5a2c4fe04dca1ee801d20fa07f347a9d6b7ec521 (patch)
tree8b70d3f7d4a47a8724cc31ab2c5849db6b5a8a2b
parent68c5ed592fdae16982ffe36aef89faba70a32cfc (diff)
downloadlinux-5a2c4fe04dca1ee801d20fa07f347a9d6b7ec521.tar.xz
s3cmci: make SDIO IRQ hardware IRQ support build-time configurable
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>
-rw-r--r--drivers/mmc/host/Kconfig7
-rw-r--r--drivers/mmc/host/s3cmci.c9
2 files changed, 14 insertions, 2 deletions
diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
index cf6a654..432ae83 100644
--- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig
@@ -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
diff --git a/drivers/mmc/host/s3cmci.c b/drivers/mmc/host/s3cmci.c
index 0af9722..4b627ca 100644
--- a/drivers/mmc/host/s3cmci.c
+++ b/drivers/mmc/host/s3cmci.c
@@ -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;