diff options
author | Arnd Bergmann <arnd@arndb.de> | 2014-12-05 17:45:38 +0100 |
---|---|---|
committer | Arnd Bergmann <arnd@arndb.de> | 2014-12-05 17:45:38 +0100 |
commit | fd522d279235b8bcafc39c1040895fe2d938d1e7 (patch) | |
tree | e6f54fe900945b7c1939757a59aeabc510605a27 /include/linux/iommu.h | |
parent | 5d01410fe4d92081f349b013a2e7a95429e4f2c9 (diff) | |
parent | a42a7a1fb5f1f9004b023594609dc22da02fc08b (diff) | |
download | blackbird-op-linux-fd522d279235b8bcafc39c1040895fe2d938d1e7.tar.gz blackbird-op-linux-fd522d279235b8bcafc39c1040895fe2d938d1e7.zip |
Merge tag 'of-iommu-configure' of git://git.kernel.org/pub/scm/linux/kernel/git/will/linux into next/iommu-config
Pull "Automatic DMA configuration for OF-based IOMMU masters" from Will Deacon:
This series adds automatic IOMMU and DMA-mapping configuration for
OF-based DMA masters described using the generic IOMMU devicetree
bindings. Although there is plenty of future work around splitting up
iommu_ops, adding default IOMMU domains and sorting out automatic IOMMU
group creation for the platform_bus, this is already useful enough for
people to port over their IOMMU drivers and start using the new probing
infrastructure (indeed, Marek has patches queued for the Exynos IOMMU).
* tag 'of-iommu-configure' of git://git.kernel.org/pub/scm/linux/kernel/git/will/linux:
iommu: store DT-probed IOMMU data privately
arm: dma-mapping: plumb our iommu mapping ops into arch_setup_dma_ops
arm: call iommu_init before of_platform_populate
dma-mapping: detect and configure IOMMU in of_dma_configure
iommu: fix initialization without 'add_device' callback
iommu: provide helper function to configure an IOMMU for an of master
iommu: add new iommu_ops callback for adding an OF device
dma-mapping: replace set_arch_dma_coherent_ops with arch_setup_dma_ops
iommu: provide early initialisation hook for IOMMU drivers
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'include/linux/iommu.h')
-rw-r--r-- | include/linux/iommu.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/include/linux/iommu.h b/include/linux/iommu.h index e6a7c9ff72f2..415c7613d02c 100644 --- a/include/linux/iommu.h +++ b/include/linux/iommu.h @@ -21,6 +21,7 @@ #include <linux/errno.h> #include <linux/err.h> +#include <linux/of.h> #include <linux/types.h> #include <trace/events/iommu.h> @@ -102,7 +103,9 @@ enum iommu_attr { * @remove_device: remove device from iommu grouping * @domain_get_attr: Query domain attributes * @domain_set_attr: Change domain attributes + * @of_xlate: add OF master IDs to iommu grouping * @pgsize_bitmap: bitmap of supported page sizes + * @priv: per-instance data private to the iommu driver */ struct iommu_ops { bool (*capable)(enum iommu_cap); @@ -132,7 +135,12 @@ struct iommu_ops { /* Get the numer of window per domain */ u32 (*domain_get_windows)(struct iommu_domain *domain); +#ifdef CONFIG_OF_IOMMU + int (*of_xlate)(struct device *dev, struct of_phandle_args *args); +#endif + unsigned long pgsize_bitmap; + void *priv; }; #define IOMMU_GROUP_NOTIFY_ADD_DEVICE 1 /* Device added */ |