aboutsummaryrefslogtreecommitdiff
path: root/drivers/iommu/msm_iommu_sec.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/iommu/msm_iommu_sec.c')
-rw-r--r--drivers/iommu/msm_iommu_sec.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/drivers/iommu/msm_iommu_sec.c b/drivers/iommu/msm_iommu_sec.c
index 3cb903cad5b..5076ea88e85 100644
--- a/drivers/iommu/msm_iommu_sec.c
+++ b/drivers/iommu/msm_iommu_sec.c
@@ -26,6 +26,7 @@
#include <linux/of.h>
#include <linux/of_device.h>
#include <linux/kmemleak.h>
+#include <soc/qcom/scm.h>
#include <asm/sizes.h>
@@ -33,7 +34,6 @@
#include <mach/iommu_hw-v1.h>
#include <mach/msm_iommu_priv.h>
#include <mach/iommu.h>
-#include <mach/scm.h>
#include <mach/memory.h>
/* bitmap of the page sizes currently supported */
@@ -61,6 +61,12 @@
static struct iommu_access_ops *iommu_access_ops;
+static const struct of_device_id msm_smmu_list[] = {
+ { .compatible = "qcom,msm-smmu-v1", },
+ { .compatible = "qcom,msm-smmu-v2", },
+ { }
+};
+
struct msm_scm_paddr_list {
unsigned int list;
unsigned int list_size;
@@ -296,8 +302,9 @@ static int msm_iommu_sec_ptbl_init(void)
int ret, ptbl_ret = 0;
int version;
- for_each_compatible_node(np, NULL, "qcom,msm-smmu-v1")
- if (of_find_property(np, "qcom,iommu-secure-id", NULL))
+ for_each_matching_node(np, msm_smmu_list)
+ if (of_find_property(np, "qcom,iommu-secure-id", NULL) &&
+ of_device_is_available(np))
break;
if (!np)