Message ID | f2d079d46cee22f09f6eb7e6f874a9eaa786ec2a.1600754909.git.saiprakash.ranjan@codeaurora.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | System Cache support for GPU and required SMMU support | expand |
On 2020-09-22 07:18, Sai Prakash Ranjan wrote: > Use table and of_match_node() to match qcom implementation > instead of multiple of_device_compatible() calls for each > QCOM SMMU implementation. > > Signed-off-by: Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org> > --- > drivers/iommu/arm/arm-smmu/arm-smmu-impl.c | 12 ++++++++---- > 1 file changed, 8 insertions(+), 4 deletions(-) > > diff --git a/drivers/iommu/arm/arm-smmu/arm-smmu-impl.c b/drivers/iommu/arm/arm-smmu/arm-smmu-impl.c > index d199b4bff15d..ce78295cfa78 100644 > --- a/drivers/iommu/arm/arm-smmu/arm-smmu-impl.c > +++ b/drivers/iommu/arm/arm-smmu/arm-smmu-impl.c > @@ -9,6 +9,13 @@ > > #include "arm-smmu.h" > > +static const struct of_device_id __maybe_unused qcom_smmu_impl_of_match[] = { > + { .compatible = "qcom,sc7180-smmu-500" }, > + { .compatible = "qcom,sdm845-smmu-500" }, > + { .compatible = "qcom,sm8150-smmu-500" }, > + { .compatible = "qcom,sm8250-smmu-500" }, > + { } > +}; Can you push the table itself into arm-smmu-qcom? That way you'll be free to add new SoCs willy-nilly without any possibility of conflicting with anything else. Bonus points if you can fold in the Adreno variant and keep everything together ;) Robin. > static int arm_smmu_gr0_ns(int offset) > { > @@ -217,10 +224,7 @@ struct arm_smmu_device *arm_smmu_impl_init(struct arm_smmu_device *smmu) > if (of_device_is_compatible(np, "nvidia,tegra194-smmu")) > return nvidia_smmu_impl_init(smmu); > > - if (of_device_is_compatible(np, "qcom,sdm845-smmu-500") || > - of_device_is_compatible(np, "qcom,sc7180-smmu-500") || > - of_device_is_compatible(np, "qcom,sm8150-smmu-500") || > - of_device_is_compatible(np, "qcom,sm8250-smmu-500")) > + if (of_match_node(qcom_smmu_impl_of_match, np)) > return qcom_smmu_impl_init(smmu); > > if (of_device_is_compatible(smmu->dev->of_node, "qcom,adreno-smmu")) >
On 2020-09-23 20:54, Robin Murphy wrote: > On 2020-09-22 07:18, Sai Prakash Ranjan wrote: >> Use table and of_match_node() to match qcom implementation >> instead of multiple of_device_compatible() calls for each >> QCOM SMMU implementation. >> >> Signed-off-by: Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org> >> --- >> drivers/iommu/arm/arm-smmu/arm-smmu-impl.c | 12 ++++++++---- >> 1 file changed, 8 insertions(+), 4 deletions(-) >> >> diff --git a/drivers/iommu/arm/arm-smmu/arm-smmu-impl.c >> b/drivers/iommu/arm/arm-smmu/arm-smmu-impl.c >> index d199b4bff15d..ce78295cfa78 100644 >> --- a/drivers/iommu/arm/arm-smmu/arm-smmu-impl.c >> +++ b/drivers/iommu/arm/arm-smmu/arm-smmu-impl.c >> @@ -9,6 +9,13 @@ >> #include "arm-smmu.h" >> +static const struct of_device_id __maybe_unused >> qcom_smmu_impl_of_match[] = { >> + { .compatible = "qcom,sc7180-smmu-500" }, >> + { .compatible = "qcom,sdm845-smmu-500" }, >> + { .compatible = "qcom,sm8150-smmu-500" }, >> + { .compatible = "qcom,sm8250-smmu-500" }, >> + { } >> +}; > > Can you push the table itself into arm-smmu-qcom? That way you'll be > free to add new SoCs willy-nilly without any possibility of > conflicting with anything else. > > Bonus points if you can fold in the Adreno variant and keep everything > together ;) > Sure I can get bonus points :) Thanks, Sai
diff --git a/drivers/iommu/arm/arm-smmu/arm-smmu-impl.c b/drivers/iommu/arm/arm-smmu/arm-smmu-impl.c index d199b4bff15d..ce78295cfa78 100644 --- a/drivers/iommu/arm/arm-smmu/arm-smmu-impl.c +++ b/drivers/iommu/arm/arm-smmu/arm-smmu-impl.c @@ -9,6 +9,13 @@ #include "arm-smmu.h" +static const struct of_device_id __maybe_unused qcom_smmu_impl_of_match[] = { + { .compatible = "qcom,sc7180-smmu-500" }, + { .compatible = "qcom,sdm845-smmu-500" }, + { .compatible = "qcom,sm8150-smmu-500" }, + { .compatible = "qcom,sm8250-smmu-500" }, + { } +}; static int arm_smmu_gr0_ns(int offset) { @@ -217,10 +224,7 @@ struct arm_smmu_device *arm_smmu_impl_init(struct arm_smmu_device *smmu) if (of_device_is_compatible(np, "nvidia,tegra194-smmu")) return nvidia_smmu_impl_init(smmu); - if (of_device_is_compatible(np, "qcom,sdm845-smmu-500") || - of_device_is_compatible(np, "qcom,sc7180-smmu-500") || - of_device_is_compatible(np, "qcom,sm8150-smmu-500") || - of_device_is_compatible(np, "qcom,sm8250-smmu-500")) + if (of_match_node(qcom_smmu_impl_of_match, np)) return qcom_smmu_impl_init(smmu); if (of_device_is_compatible(smmu->dev->of_node, "qcom,adreno-smmu"))
Use table and of_match_node() to match qcom implementation instead of multiple of_device_compatible() calls for each QCOM SMMU implementation. Signed-off-by: Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org> --- drivers/iommu/arm/arm-smmu/arm-smmu-impl.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-)