aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mmc/host
diff options
context:
space:
mode:
authorFeng Tang <feng.tang@intel.com>2007-09-29 02:15:05 -0400
committerPierre Ossman <drzeus@drzeus.cx>2007-10-03 12:40:26 -0400
commit56e71efe44eb06ae1761f43cca70a5f3cc54c0fb (patch)
tree3455f99c4e7ae908f044246a4c46abe9f52b07e1 /drivers/mmc/host
parent2df3b71b2746469b5b344cf7da5facecd4110cc9 (diff)
sdhci: remove DMA capability check from controller's PCI Class reg
Many host controllers don't fully follow the PCI spec to claim whether they support DMA in PCI class register. Leave the driver to judge it from the Capability register, quirks and module parameter Signed-off-by: Feng Tang <feng.tang@intel.com> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
Diffstat (limited to 'drivers/mmc/host')
-rw-r--r--drivers/mmc/host/sdhci.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 317578d68538..866528c4ac10 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -1299,13 +1299,18 @@ static int __devinit sdhci_probe_slot(struct pci_dev *pdev, int slot)
1299 host->flags |= SDHCI_USE_DMA; 1299 host->flags |= SDHCI_USE_DMA;
1300 } else if (chip->quirks & SDHCI_QUIRK_FORCE_DMA) 1300 } else if (chip->quirks & SDHCI_QUIRK_FORCE_DMA)
1301 host->flags |= SDHCI_USE_DMA; 1301 host->flags |= SDHCI_USE_DMA;
1302 else if ((pdev->class & 0x0000FF) != PCI_SDHCI_IFDMA)
1303 DBG("Controller doesn't have DMA interface\n");
1304 else if (!(caps & SDHCI_CAN_DO_DMA)) 1302 else if (!(caps & SDHCI_CAN_DO_DMA))
1305 DBG("Controller doesn't have DMA capability\n"); 1303 DBG("Controller doesn't have DMA capability\n");
1306 else 1304 else
1307 host->flags |= SDHCI_USE_DMA; 1305 host->flags |= SDHCI_USE_DMA;
1308 1306
1307 if (((pdev->class & 0x0000FF) != PCI_SDHCI_IFDMA) &&
1308 (host->flags & SDHCI_USE_DMA)) {
1309 printk(KERN_WARNING "%s: Will use DMA "
1310 "mode even though HW doesn't fully "
1311 "claim to support it.\n", host->slot_descr);
1312 }
1313
1309 if (host->flags & SDHCI_USE_DMA) { 1314 if (host->flags & SDHCI_USE_DMA) {
1310 if (pci_set_dma_mask(pdev, DMA_32BIT_MASK)) { 1315 if (pci_set_dma_mask(pdev, DMA_32BIT_MASK)) {
1311 printk(KERN_WARNING "%s: No suitable DMA available. " 1316 printk(KERN_WARNING "%s: No suitable DMA available. "