diff options
author | Michael Ellerman <michael@ellerman.id.au> | 2008-01-21 16:42:42 +1100 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2008-01-25 22:52:54 +1100 |
commit | 450d87eaeb4d43bd9e1f9523a6a3bfeb48209fea (patch) | |
tree | b0bae624c3d097e8708e5e1e3a4632b4139bb37b /arch/powerpc | |
parent | 110f95c9f082709c5a28a64c00bae819916e8578 (diff) | |
download | linux-450d87eaeb4d43bd9e1f9523a6a3bfeb48209fea.tar.bz2 |
[POWERPC] Add celleb_dma_dev_setup()
Celleb always uses dma_direct_ops, and sets dma_direct_offset, so it
too should set dma_data to dma_direct_offset.
Currently there's no pci_dma_dev_setup() routine for Celleb so add one.
Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc')
-rw-r--r-- | arch/powerpc/platforms/celleb/iommu.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/arch/powerpc/platforms/celleb/iommu.c b/arch/powerpc/platforms/celleb/iommu.c index 41e1e6f8e059..843a66f422bb 100644 --- a/arch/powerpc/platforms/celleb/iommu.c +++ b/arch/powerpc/platforms/celleb/iommu.c @@ -72,6 +72,17 @@ static void __init celleb_init_direct_mapping(void) dma_direct_offset = dma_base; } +static void celleb_dma_dev_setup(struct device *dev) +{ + dev->archdata.dma_ops = get_pci_dma_ops(); + dev->archdata.dma_data = (void *)dma_direct_offset; +} + +static void celleb_pci_dma_dev_setup(struct pci_dev *pdev) +{ + celleb_dma_dev_setup(&pdev->dev); +} + static int celleb_of_bus_notify(struct notifier_block *nb, unsigned long action, void *data) { @@ -81,7 +92,7 @@ static int celleb_of_bus_notify(struct notifier_block *nb, if (action != BUS_NOTIFY_ADD_DEVICE) return 0; - dev->archdata.dma_ops = get_pci_dma_ops(); + celleb_dma_dev_setup(dev); return 0; } @@ -94,6 +105,7 @@ static int __init celleb_init_iommu(void) { celleb_init_direct_mapping(); set_pci_dma_ops(&dma_direct_ops); + ppc_md.pci_dma_dev_setup = celleb_pci_dma_dev_setup; bus_register_notifier(&of_platform_bus_type, &celleb_of_bus_notifier); return 0; |