* Qualcomm MSM IOMMU v1 Required properties: - compatible : one of: - "qcom,msm-smmu-v1" - reg : offset and length of the register set for the device. Optional offset and length for clock register for additional clock that needs to be turned on for access to this IOMMU. - reg-names: "iommu_base", "clk_base" (optional) - label: name of this IOMMU instance. Optional properties: - qcom,iommu-secure-id : Secure identifier for the IOMMU block - qcom,secure-context : boolean indicating that a context is secure and programmed by the secure environment. - qcom,vdd-supply: Regulator needed to access IOMMU - qcom,alt-vdd-supply : Alternative regulator needed to access IOMMU configuration registers. - interrupts : should contain the performance monitor overflow interrupt number. - qcom,iommu-enable-halt : Enable halt of the IOMMU before programming certain 19 registers - qcom,iommu-pmu-ngroups: Number of Performance Monitor Unit (PMU) groups. - qcom,iommu-pmu-ncounters: Number of PMU counters per group. - qcom,iommu-pmu-event-classes: List of event classes supported. - Bus scaling properties: See msm_bus.txt - List of sub nodes, one for each of the translation context banks supported. Each sub node has the following required properties: - compatible : "qcom,msm-smmu-v1-ctx" - reg : offset and length of the register set for the context bank. - interrupts : should contain the context bank interrupt. If this is a secure context bank, this should be a list of 2 3-tuples where the first is the non-secure interrupt, and the second is the secure interrupt. - qcom,iommu-ctx-sids : List of stream identifiers associated with this translation context. - label : Name of the context bank - vdd-supply : vdd-supply: phandle to GDSC regulator controlling this IOMMU. Optional properties: - qcom,needs-alt-core-clk : boolean to enable the secondary core clock for access to the IOMMU configuration registers - qcom,iommu-bfb-regs : An array of unsigned 32-bit integers corresponding to BFB register addresses that need to be configured for performance tuning purposes. If this property is present, the qcom,iommu-bfb-data must also be present. Register addresses are specified as an offset from the base of the IOMMU hardware block. This property may be omitted if no BFB register configuration needs to be done for a particular IOMMU hardware instance. The registers specified by this property shall fall within the IOMMU implementation-defined register region. - qcom,iommu-bfb-data : An array of unsigned 32-bit integers representing the values to be programmed into the corresponding registers given by the qcom,iommu-bfb-regs property. If this property is present, the qcom,iommu-bfb-regs property shall also be present, and the lengths of both properties shall be the same. Example: qcom,iommu@fda64000 { compatible = "qcom,msm-smmu-v1"; reg = <0xfda64000 0x10000>; reg-names = "iommu_base"; vdd-supply = <&gdsc_iommu>; qcom,iommu-bfb-regs = <0x204c 0x2050>; qcom,iommu-bfb-data = <0xffff 0xffce>; label = "iommu_0"; qcom,iommu-pmu-ngroups = <1>; qcom,iommu-pmu-ncounters = <8>; qcom,iommu-pmu-event-classes = <0x00, 0x01>; qcom,iommu-ctx@fda6c000 { compatible = "qcom,msm-smmu-v1-ctx"; reg = <0xfda6c000 0x1000>; interrupts = <0 70 0>; qcom,iommu-ctx-sids = <0 2>; label = "ctx_0"; }; qcom,iommu-ctx@fda6d000 { compatible = "qcom,msm-smmu-v1-ctx"; reg = <0xfda6d000 0x1000>; interrupts = <0 71 0>; qcom,iommu-ctx-sids = <1>; label = "ctx_1"; }; };