diff options
author | Ben Dooks <ben@simtec.co.uk> | 2009-10-01 18:44:20 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-10-01 19:11:15 -0400 |
commit | 5a2c4fe04dca1ee801d20fa07f347a9d6b7ec521 (patch) | |
tree | 8b70d3f7d4a47a8724cc31ab2c5849db6b5a8a2b /drivers | |
parent | 68c5ed592fdae16982ffe36aef89faba70a32cfc (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')
-rw-r--r-- | drivers/mmc/host/Kconfig | 7 | ||||
-rw-r--r-- | drivers/mmc/host/s3cmci.c | 9 |
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 | ||
279 | config 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 | |||
279 | choice | 286 | choice |
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 | ||