aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mmc/host
diff options
context:
space:
mode:
authorBen Dooks <ben@simtec.co.uk>2009-10-01 18:44:20 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2009-10-01 19:11:15 -0400
commit5a2c4fe04dca1ee801d20fa07f347a9d6b7ec521 (patch)
tree8b70d3f7d4a47a8724cc31ab2c5849db6b5a8a2b /drivers/mmc/host
parent68c5ed592fdae16982ffe36aef89faba70a32cfc (diff)
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>
Diffstat (limited to 'drivers/mmc/host')
-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 cf6a6545240b..432ae8358c86 100644
--- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig
@@ -276,6 +276,13 @@ config MMC_S3C
276 276
277 If unsure, say N. 277 If unsure, say N.
278 278
279config MMC_S3C_HW_SDIO_IRQ
280 bool "Hardware support for SDIO IRQ"
281 depends on MMC_S3C
282 help
283 Enable the hardware support for SDIO interrupts instead of using
284 the generic polling code.
285
279choice 286choice
280 prompt "Samsung S3C SD/MMC transfer code" 287 prompt "Samsung S3C SD/MMC transfer code"
281 depends on MMC_S3C 288 depends on MMC_S3C
diff --git a/drivers/mmc/host/s3cmci.c b/drivers/mmc/host/s3cmci.c
index 0af972275d45..4b627ca16cca 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)
1715 1715
1716 mmc->ops = &s3cmci_ops; 1716 mmc->ops = &s3cmci_ops;
1717 mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34; 1717 mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34;
1718#ifdef CONFIG_MMC_S3C_HW_SDIO_IRQ
1718 mmc->caps = MMC_CAP_4_BIT_DATA | MMC_CAP_SDIO_IRQ; 1719 mmc->caps = MMC_CAP_4_BIT_DATA | MMC_CAP_SDIO_IRQ;
1720#else
1721 mmc->caps = MMC_CAP_4_BIT_DATA;
1722#endif
1719 mmc->f_min = host->clk_rate / (host->clk_div * 256); 1723 mmc->f_min = host->clk_rate / (host->clk_div * 256);
1720 mmc->f_max = host->clk_rate / host->clk_div; 1724 mmc->f_max = host->clk_rate / host->clk_div;
1721 1725
@@ -1750,8 +1754,9 @@ static int __devinit s3cmci_probe(struct platform_device *pdev)
1750 s3cmci_debugfs_attach(host); 1754 s3cmci_debugfs_attach(host);
1751 1755
1752 platform_set_drvdata(pdev, mmc); 1756 platform_set_drvdata(pdev, mmc);
1753 dev_info(&pdev->dev, "%s - using %s\n", mmc_hostname(mmc), 1757 dev_info(&pdev->dev, "%s - using %s, %s SDIO IRQ\n", mmc_hostname(mmc),
1754 s3cmci_host_usedma(host) ? "dma" : "pio"); 1758 s3cmci_host_usedma(host) ? "dma" : "pio",
1759 mmc->caps & MMC_CAP_SDIO_IRQ ? "hw" : "sw");
1755 1760
1756 return 0; 1761 return 0;
1757 1762