Revert "powerpc/fsl_pci: simplify fsl_pci_dma_set_mask"
authorScott Wood <oss@buserror.net>
Mon, 24 Dec 2018 02:09:39 +0000 (20:09 -0600)
committerScott Wood <oss@buserror.net>
Mon, 24 Dec 2018 02:11:20 +0000 (20:11 -0600)
This reverts commit c6e5485e0cb509292a14e880e1944143f99758c7
due to failures such as:

e1000e 2000:01:00.0: Tx DMA map failed

Signed-off-by: Scott Wood <oss@buserror.net>
arch/powerpc/sysdev/fsl_pci.c

index f82d274fc91dcfe958e9cecbab060fd49e59ac9c..918be816b0977c5feba2a9ef79b57111de1901c3 100644 (file)
@@ -135,7 +135,7 @@ static int fsl_pci_dma_set_mask(struct device *dev, u64 dma_mask)
         * mapping that allows addressing any RAM address from across PCI.
         */
        if (dev_is_pci(dev) && dma_mask >= pci64_dma_offset * 2 - 1) {
-               dev->bus_dma_mask = 0;
+               set_dma_ops(dev, &dma_nommu_ops);
                set_dma_offset(dev, pci64_dma_offset);
        }
 
@@ -395,6 +395,10 @@ static void setup_pci_atmu(struct pci_controller *hose)
                                out_be32(&pci->piw[win_idx].piwar,  piwar);
                        }
 
+                       /*
+                        * install our own dma_set_mask handler to fixup dma_ops
+                        * and dma_offset
+                        */
                        ppc_md.dma_set_mask = fsl_pci_dma_set_mask;
 
                        pr_info("%pOF: Setup 64-bit PCI DMA window\n", hose->dn);