diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2015-06-24 08:25:22 +0300 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2015-07-13 03:10:54 +0300 |
commit | 2db4928bb559f8b43ca75879548111dc13a7de31 (patch) | |
tree | 8ce6264c97956c84ad19c43786729b04ae2ffd2d /arch/powerpc/include/asm/device.h | |
parent | de369538436ae0caf784c69187ad0e53152b7ddf (diff) | |
download | linux-2db4928bb559f8b43ca75879548111dc13a7de31.tar.xz |
powerpc/iommu: Remove dma_data union
To support "hybrid" DMA ops in a subsequent patch, we will need both
a direct DMA offset and an iommu pointer. Those are currently exclusive
(a union), so change them to be separate fields.
While there, also type iommu_table_base properly and make exist only
on CONFIG_PPC64 since it's not referenced on 32-bit at all.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'arch/powerpc/include/asm/device.h')
-rw-r--r-- | arch/powerpc/include/asm/device.h | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/arch/powerpc/include/asm/device.h b/arch/powerpc/include/asm/device.h index e9bdda88f1fb..406c2b1ff82d 100644 --- a/arch/powerpc/include/asm/device.h +++ b/arch/powerpc/include/asm/device.h @@ -10,6 +10,7 @@ struct dma_map_ops; struct device_node; #ifdef CONFIG_PPC64 struct pci_dn; +struct iommu_table; #endif /* @@ -23,13 +24,15 @@ struct dev_archdata { struct dma_map_ops *dma_ops; /* - * When an iommu is in use, dma_data is used as a ptr to the base of the - * iommu_table. Otherwise, it is a simple numerical offset. + * These two used to be a union. However, with the hybrid ops we need + * both so here we store both a DMA offset for direct mappings and + * an iommu_table for remapped DMA. */ - union { - dma_addr_t dma_offset; - void *iommu_table_base; - } dma_data; + dma_addr_t dma_offset; + +#ifdef CONFIG_PPC64 + struct iommu_table *iommu_table_base; +#endif #ifdef CONFIG_IOMMU_API void *iommu_domain; |