aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Ellerman <michael@ellerman.id.au>2008-01-21 00:42:42 -0500
committerPaul Mackerras <paulus@samba.org>2008-01-25 06:52:54 -0500
commit450d87eaeb4d43bd9e1f9523a6a3bfeb48209fea (patch)
treeb0bae624c3d097e8708e5e1e3a4632b4139bb37b
parent110f95c9f082709c5a28a64c00bae819916e8578 (diff)
[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>
-rw-r--r--arch/powerpc/platforms/celleb/iommu.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/arch/powerpc/platforms/celleb/iommu.c b/arch/powerpc/platforms/celleb/iommu.c
index 41e1e6f8e05..843a66f422b 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)
72 dma_direct_offset = dma_base; 72 dma_direct_offset = dma_base;
73} 73}
74 74
75static void celleb_dma_dev_setup(struct device *dev)
76{
77 dev->archdata.dma_ops = get_pci_dma_ops();
78 dev->archdata.dma_data = (void *)dma_direct_offset;
79}
80
81static void celleb_pci_dma_dev_setup(struct pci_dev *pdev)
82{
83 celleb_dma_dev_setup(&pdev->dev);
84}
85
75static int celleb_of_bus_notify(struct notifier_block *nb, 86static int celleb_of_bus_notify(struct notifier_block *nb,
76 unsigned long action, void *data) 87 unsigned long action, void *data)
77{ 88{
@@ -81,7 +92,7 @@ static int celleb_of_bus_notify(struct notifier_block *nb,
81 if (action != BUS_NOTIFY_ADD_DEVICE) 92 if (action != BUS_NOTIFY_ADD_DEVICE)
82 return 0; 93 return 0;
83 94
84 dev->archdata.dma_ops = get_pci_dma_ops(); 95 celleb_dma_dev_setup(dev);
85 96
86 return 0; 97 return 0;
87} 98}
@@ -94,6 +105,7 @@ static int __init celleb_init_iommu(void)
94{ 105{
95 celleb_init_direct_mapping(); 106 celleb_init_direct_mapping();
96 set_pci_dma_ops(&dma_direct_ops); 107 set_pci_dma_ops(&dma_direct_ops);
108 ppc_md.pci_dma_dev_setup = celleb_pci_dma_dev_setup;
97 bus_register_notifier(&of_platform_bus_type, &celleb_of_bus_notifier); 109 bus_register_notifier(&of_platform_bus_type, &celleb_of_bus_notifier);
98 110
99 return 0; 111 return 0;