msm: IOMMU: Add IOMMU support for 8910
Add device tree bindings for IOMMUv1 and change IOMMU
driver to handle a different IOMMU memory map.
Change-Id: Ieb8fbb158237652f65a601e515327922f5e7bf5b
Signed-off-by: Olav Haugan <ohaugan@codeaurora.org>
diff --git a/arch/arm/mach-msm/include/mach/iommu.h b/arch/arm/mach-msm/include/mach/iommu.h
index ea3fb64..975b12c 100644
--- a/arch/arm/mach-msm/include/mach/iommu.h
+++ b/arch/arm/mach-msm/include/mach/iommu.h
@@ -83,6 +83,7 @@
/**
* struct msm_iommu_drvdata - A single IOMMU hardware instance
* @base: IOMMU config port base address (VA)
+ * @glb_base: IOMMU config port base address for global register space (VA)
* @ncb The number of contexts on this IOMMU
* @irq: Interrupt number
* @clk: The bus clock for this IOMMU hardware instance
@@ -99,6 +100,7 @@
*/
struct msm_iommu_drvdata {
void __iomem *base;
+ void __iomem *glb_base;
int ncb;
int ttbr_split;
struct clk *clk;
@@ -123,8 +125,8 @@
* attached to them
* @attached_domain Domain currently attached to this context (if any)
* @name Human-readable name of this context device
- * @sids List of Stream IDs mapped to this context (v2 only)
- * @nsid Number of Stream IDs mapped to this context (v2 only)
+ * @sids List of Stream IDs mapped to this context
+ * @nsid Number of Stream IDs mapped to this context
*
* A msm_iommu_ctx_drvdata holds the driver data for a single context bank
* within each IOMMU hardware instance
@@ -231,6 +233,12 @@
of_node_put(node);
return 0;
}
+
+ node = of_find_compatible_node(NULL, NULL, "qcom,msm-smmu-v1");
+ if (node) {
+ of_node_put(node);
+ return 1;
+ }
#endif
if (cpu_is_msm8960() &&
SOCINFO_VERSION_MAJOR(socinfo_get_version()) < 2)