mirror of https://gitee.com/openkylin/linux.git
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>
This commit is contained in:
parent
2df3b71b27
commit
56e71efe44
|
@ -1299,13 +1299,18 @@ static int __devinit sdhci_probe_slot(struct pci_dev *pdev, int slot)
|
||||||
host->flags |= SDHCI_USE_DMA;
|
host->flags |= SDHCI_USE_DMA;
|
||||||
} else if (chip->quirks & SDHCI_QUIRK_FORCE_DMA)
|
} else if (chip->quirks & SDHCI_QUIRK_FORCE_DMA)
|
||||||
host->flags |= SDHCI_USE_DMA;
|
host->flags |= SDHCI_USE_DMA;
|
||||||
else if ((pdev->class & 0x0000FF) != PCI_SDHCI_IFDMA)
|
|
||||||
DBG("Controller doesn't have DMA interface\n");
|
|
||||||
else if (!(caps & SDHCI_CAN_DO_DMA))
|
else if (!(caps & SDHCI_CAN_DO_DMA))
|
||||||
DBG("Controller doesn't have DMA capability\n");
|
DBG("Controller doesn't have DMA capability\n");
|
||||||
else
|
else
|
||||||
host->flags |= SDHCI_USE_DMA;
|
host->flags |= SDHCI_USE_DMA;
|
||||||
|
|
||||||
|
if (((pdev->class & 0x0000FF) != PCI_SDHCI_IFDMA) &&
|
||||||
|
(host->flags & SDHCI_USE_DMA)) {
|
||||||
|
printk(KERN_WARNING "%s: Will use DMA "
|
||||||
|
"mode even though HW doesn't fully "
|
||||||
|
"claim to support it.\n", host->slot_descr);
|
||||||
|
}
|
||||||
|
|
||||||
if (host->flags & SDHCI_USE_DMA) {
|
if (host->flags & SDHCI_USE_DMA) {
|
||||||
if (pci_set_dma_mask(pdev, DMA_32BIT_MASK)) {
|
if (pci_set_dma_mask(pdev, DMA_32BIT_MASK)) {
|
||||||
printk(KERN_WARNING "%s: No suitable DMA available. "
|
printk(KERN_WARNING "%s: No suitable DMA available. "
|
||||||
|
|
Loading…
Reference in New Issue