summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CORE/SERVICES/HIF/PCIe/if_pci.c85
1 files changed, 48 insertions, 37 deletions
diff --git a/CORE/SERVICES/HIF/PCIe/if_pci.c b/CORE/SERVICES/HIF/PCIe/if_pci.c
index 7e6e9896998b..41bd55c655fa 100644
--- a/CORE/SERVICES/HIF/PCIe/if_pci.c
+++ b/CORE/SERVICES/HIF/PCIe/if_pci.c
@@ -613,27 +613,32 @@ again:
ret = -EIO;
goto err_region;
}
-
+#ifdef CONFIG_ARM_LPAE
+ /* if CONFIG_ARM_LPAE is enabled, we have to set 64 bits mask
+ * for 32 bits device also. */
ret = pci_set_dma_mask(pdev, DMA_BIT_MASK(64));
- if (!ret) {
- ret = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64));
-
- if (ret) {
- printk(KERN_ERR "ath: Cannot enable 64-bit consistent DMA\n");
- goto err_dma;
- }
- } else {
- ret = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));
-
- if (!ret) {
- ret = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32));
- if (ret) {
- printk(KERN_ERR "ath: Cannot enable 32-bit consistent DMA\n");
- goto err_dma;
- }
- }
+ if (ret) {
+ printk(KERN_ERR "ath: Cannot enable 64-bit pci DMA\n");
+ goto err_dma;
}
-
+ ret = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64));
+ if (ret) {
+ printk(KERN_ERR "ath: Cannot enable 64-bit consistent DMA\n");
+ goto err_dma;
+ }
+#else
+ ret = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));
+ if (ret) {
+ printk(KERN_ERR "ath: Cannot enable 32-bit pci DMA\n");
+ goto err_dma;
+ }
+ ret = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32));
+ if (ret) {
+ printk(KERN_ERR "%s: Cannot enable 32-bit consistent DMA!\n",
+ __func__);
+ goto err_dma;
+ }
+#endif
/* Set bus master bit in PCI_COMMAND to enable DMA */
pci_set_master(pdev);
@@ -913,26 +918,32 @@ again:
goto err_region;
}
+#ifdef CONFIG_ARM_LPAE
+ /* if CONFIG_ARM_LPAE is enabled, we have to set 64 bits mask
+ * for 32 bits device also. */
ret = pci_set_dma_mask(pdev, DMA_BIT_MASK(64));
- if (!ret) {
- ret = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64));
-
- if (ret) {
- printk(KERN_ERR "%s: Cannot enable 64-bit consistent DMA!\n",
- __func__);
- goto err_dma;
- }
- } else {
- ret = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));
- if (!ret) {
- ret = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32));
- if (ret) {
- printk(KERN_ERR "%s: Cannot enable 32-bit consistent DMA!\n",
- __func__);
- goto err_dma;
- }
- }
+ if (ret) {
+ printk(KERN_ERR "ath: Cannot enable 64-bit pci DMA\n");
+ goto err_dma;
}
+ ret = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64));
+ if (ret) {
+ printk(KERN_ERR "ath: Cannot enable 64-bit consistent DMA\n");
+ goto err_dma;
+ }
+#else
+ ret = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));
+ if (ret) {
+ printk(KERN_ERR "ath: Cannot enable 32-bit pci DMA\n");
+ goto err_dma;
+ }
+ ret = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32));
+ if (ret) {
+ printk(KERN_ERR "%s: Cannot enable 32-bit consistent DMA!\n",
+ __func__);
+ goto err_dma;
+ }
+#endif
/* Set bus master bit in PCI_COMMAND to enable DMA */
pci_set_master(pdev);