blob: b3f1aefbc58cfa8cbe1b445d0bbf1c150b37229e [file] [log] [blame]
* 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,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";
};
};