msm_iommu_v1.txt 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. * Qualcomm MSM IOMMU v1
  2. Required properties:
  3. - compatible : one of:
  4. - "qcom,msm-smmu-v1"
  5. - reg : offset and length of the register set for the device. Optional
  6. offset and length for clock register for additional clock that
  7. needs to be turned on for access to this IOMMU.
  8. - reg-names: "iommu_base", "clk_base" (optional)
  9. - label: name of this IOMMU instance.
  10. Optional properties:
  11. - qcom,iommu-secure-id : Secure identifier for the IOMMU block
  12. - qcom,secure-context : boolean indicating that a context is secure and
  13. programmed by the secure environment.
  14. - qcom,vdd-supply: Regulator needed to access IOMMU
  15. - qcom,alt-vdd-supply : Alternative regulator needed to access IOMMU
  16. configuration registers.
  17. - interrupts : should contain the performance monitor overflow interrupt number.
  18. - qcom,iommu-enable-halt : Enable halt of the IOMMU before programming certain 19
  19. registers
  20. - qcom,iommu-pmu-ngroups: Number of Performance Monitor Unit (PMU) groups.
  21. - qcom,iommu-pmu-ncounters: Number of PMU counters per group.
  22. - qcom,iommu-pmu-event-classes: List of event classes supported.
  23. - Bus scaling properties: See msm_bus.txt
  24. - List of sub nodes, one for each of the translation context banks supported.
  25. Each sub node has the following required properties:
  26. - compatible : "qcom,msm-smmu-v1-ctx"
  27. - reg : offset and length of the register set for the context bank.
  28. - interrupts : should contain the context bank interrupt. If this is
  29. a secure context bank, this should be a list of 2 3-tuples where
  30. the first is the non-secure interrupt, and the second is the
  31. secure interrupt.
  32. - qcom,iommu-ctx-sids : List of stream identifiers associated with this
  33. translation context.
  34. - label : Name of the context bank
  35. - vdd-supply : vdd-supply: phandle to GDSC regulator controlling this IOMMU.
  36. Optional properties:
  37. - qcom,needs-alt-core-clk : boolean to enable the secondary core clock for
  38. access to the IOMMU configuration registers
  39. - qcom,iommu-bfb-regs : An array of unsigned 32-bit integers corresponding to
  40. BFB register addresses that need to be configured for performance tuning
  41. purposes. If this property is present, the qcom,iommu-bfb-data must also be
  42. present. Register addresses are specified as an offset from the base of the
  43. IOMMU hardware block. This property may be omitted if no BFB register
  44. configuration needs to be done for a particular IOMMU hardware instance. The
  45. registers specified by this property shall fall within the IOMMU
  46. implementation-defined register region.
  47. - qcom,iommu-bfb-data : An array of unsigned 32-bit integers representing the
  48. values to be programmed into the corresponding registers given by the
  49. qcom,iommu-bfb-regs property. If this property is present, the
  50. qcom,iommu-bfb-regs property shall also be present, and the lengths of both
  51. properties shall be the same.
  52. - qcom,iommu-lpae-bfb-regs : See description for qcom,iommu-bfb-regs. This is
  53. the same property except this is for IOMMU with LPAE support.
  54. - qcom,iommu-lpae-bfb-data : See description for qcom,iommu-bfb-data. This is
  55. the same property except this is for IOMMU with LPAE support.
  56. Example:
  57. qcom,iommu@fda64000 {
  58. compatible = "qcom,msm-smmu-v1";
  59. reg = <0xfda64000 0x10000>;
  60. reg-names = "iommu_base";
  61. vdd-supply = <&gdsc_iommu>;
  62. qcom,iommu-bfb-regs = <0x204c 0x2050>;
  63. qcom,iommu-bfb-data = <0xffff 0xffce>;
  64. label = "iommu_0";
  65. qcom,iommu-pmu-ngroups = <1>;
  66. qcom,iommu-pmu-ncounters = <8>;
  67. qcom,iommu-pmu-event-classes = <0x00,
  68. 0x01>;
  69. qcom,iommu-ctx@fda6c000 {
  70. compatible = "qcom,msm-smmu-v1-ctx";
  71. reg = <0xfda6c000 0x1000>;
  72. interrupts = <0 70 0>;
  73. qcom,iommu-ctx-sids = <0 2>;
  74. label = "ctx_0";
  75. };
  76. qcom,iommu-ctx@fda6d000 {
  77. compatible = "qcom,msm-smmu-v1-ctx";
  78. reg = <0xfda6d000 0x1000>;
  79. interrupts = <0 71 0>;
  80. qcom,iommu-ctx-sids = <1>;
  81. label = "ctx_1";
  82. };
  83. };