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>
Showing
- arch/powerpc/include/asm/dma-mapping.h 61 additions, 126 deletionsarch/powerpc/include/asm/dma-mapping.h
- arch/powerpc/include/asm/machdep.h 3 additions, 2 deletionsarch/powerpc/include/asm/machdep.h
- arch/powerpc/include/asm/pci.h 8 additions, 6 deletionsarch/powerpc/include/asm/pci.h
- arch/powerpc/kernel/Makefile 2 additions, 2 deletionsarch/powerpc/kernel/Makefile
- arch/powerpc/kernel/dma.c 46 additions, 23 deletionsarch/powerpc/kernel/dma.c
- arch/powerpc/kernel/pci-common.c 48 additions, 0 deletionsarch/powerpc/kernel/pci-common.c
- arch/powerpc/kernel/pci_32.c 7 additions, 0 deletionsarch/powerpc/kernel/pci_32.c
- arch/powerpc/kernel/pci_64.c 0 additions, 46 deletionsarch/powerpc/kernel/pci_64.c
Loading
Please register or sign in to comment