powerpc/pci: add dma_set_mask to pci_controller_ops

Some systems only need to deal with DMA masks for PCI devices.
For these systems, we can avoid the need for a platform hook and
instead use a pci controller based hook.

Signed-off-by: Daniel Axtens <dja@axtens.net>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
Daniel Axtens 2015-04-28 15:12:06 +10:00 committed by Michael Ellerman
parent 92ae035326
commit 3405c2570f
2 changed files with 10 additions and 0 deletions

View File

@ -36,6 +36,8 @@ struct pci_controller_ops {
int nvec, int type);
void (*teardown_msi_irqs)(struct pci_dev *dev);
#endif
int (*dma_set_mask)(struct pci_dev *dev, u64 dma_mask);
};
/*

View File

@ -248,6 +248,14 @@ int dma_set_mask(struct device *dev, u64 dma_mask)
{
if (ppc_md.dma_set_mask)
return ppc_md.dma_set_mask(dev, dma_mask);
if (dev_is_pci(dev)) {
struct pci_dev *pdev = to_pci_dev(dev);
struct pci_controller *phb = pci_bus_to_host(pdev->bus);
if (phb->controller_ops.dma_set_mask)
return phb->controller_ops.dma_set_mask(pdev, dma_mask);
}
return __dma_set_mask(dev, dma_mask);
}
EXPORT_SYMBOL(dma_set_mask);