diff options
author | Becky Bruce <becky.bruce@freescale.com> | 2008-09-12 06:34:46 -0400 |
---|---|---|
committer | Kumar Gala <galak@kernel.crashing.org> | 2008-09-24 17:26:45 -0400 |
commit | 4fc665b88a79a45bae8bbf3a05563c27c7337c3d (patch) | |
tree | ca668c2fab7c3a4d62b92174f4a5fcae2625cdd1 /arch/powerpc/include/asm/machdep.h | |
parent | 8fae0353247530d2124b2419052fa6120462fa99 (diff) |
powerpc: Merge 32 and 64-bit dma code
We essentially adopt the 64-bit dma code, with some changes to support
32-bit systems, including HIGHMEM. dma functions on 32-bit are now
invoked via accessor functions which call the correct op for a device based
on archdata dma_ops. If there is no archdata dma_ops, this defaults
to dma_direct_ops.
In addition, the dma_map/unmap_page functions are added to dma_ops
because we can't just fall back on map/unmap_single when HIGHMEM is
enabled. In the case of dma_direct_*, we stop using map/unmap_single
and just use the page version - this saves a lot of ugly
ifdeffing. We leave map/unmap_single in the dma_ops definition,
though, because they are needed by the iommu code, which does not
implement map/unmap_page. Ideally, going forward, we will completely
eliminate map/unmap_single and just have map/unmap_page, if it's
workable for 64-bit.
Signed-off-by: Becky Bruce <becky.bruce@freescale.com>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/include/asm/machdep.h')
-rw-r--r-- | arch/powerpc/include/asm/machdep.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/powerpc/include/asm/machdep.h b/arch/powerpc/include/asm/machdep.h index 893aafd87fde..2740c44ff717 100644 --- a/arch/powerpc/include/asm/machdep.h +++ b/arch/powerpc/include/asm/machdep.h | |||
@@ -88,8 +88,6 @@ struct machdep_calls { | |||
88 | unsigned long (*tce_get)(struct iommu_table *tbl, | 88 | unsigned long (*tce_get)(struct iommu_table *tbl, |
89 | long index); | 89 | long index); |
90 | void (*tce_flush)(struct iommu_table *tbl); | 90 | void (*tce_flush)(struct iommu_table *tbl); |
91 | void (*pci_dma_dev_setup)(struct pci_dev *dev); | ||
92 | void (*pci_dma_bus_setup)(struct pci_bus *bus); | ||
93 | 91 | ||
94 | void __iomem * (*ioremap)(phys_addr_t addr, unsigned long size, | 92 | void __iomem * (*ioremap)(phys_addr_t addr, unsigned long size, |
95 | unsigned long flags); | 93 | unsigned long flags); |
@@ -101,6 +99,9 @@ struct machdep_calls { | |||
101 | #endif | 99 | #endif |
102 | #endif /* CONFIG_PPC64 */ | 100 | #endif /* CONFIG_PPC64 */ |
103 | 101 | ||
102 | void (*pci_dma_dev_setup)(struct pci_dev *dev); | ||
103 | void (*pci_dma_bus_setup)(struct pci_bus *bus); | ||
104 | |||
104 | int (*probe)(void); | 105 | int (*probe)(void); |
105 | void (*setup_arch)(void); /* Optional, may be NULL */ | 106 | void (*setup_arch)(void); /* Optional, may be NULL */ |
106 | void (*init_early)(void); | 107 | void (*init_early)(void); |