adreno-gmu.txt 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. Qualcomm Technologies, Inc. GPU Graphics Management Unit (GMU)
  2. Required properties:
  3. - compatible :
  4. - "qcom,gpu-gmu"
  5. - reg: Specifies the PDC register base address and size.
  6. - reg-names: Resource names used for the physical address
  7. and length of PDC registers.
  8. - interrupts: Interrupt mapping for GMU and HFI IRQs.
  9. - interrupt-names: String property to describe the name of each interrupt.
  10. Bus Scaling Data:
  11. qcom,msm-bus,name: String property to describe the name of bus client.
  12. qcom,msm-bus,num-cases: This is the the number of Bus Scaling use cases defined in the vectors property.
  13. qcom,msm-bus,num-paths: This represents the number of paths in each Bus Scaling Usecase.
  14. qcom,msm-bus,vectors-KBps: A series of 4 cell properties, format of which is:
  15. <src dst ab ib>, <src dst ab ib>, // For Bus Scaling Usecase 1
  16. <src dst ab ib>, <src dst ab ib>, // For Bus Scaling Usecase 2
  17. <.. .. .. ..>, <.. .. .. ..>; // For Bus Scaling Usecase n
  18. This property is a series of all vectors for all Bus Scaling Usecases.
  19. Each set of vectors for each usecase describes bandwidth votes for a combination
  20. of src/dst ports. The driver will set the desired use case based on the selected
  21. power level and the desired bandwidth vote will be registered for the port pairs.
  22. GMU GDSC/regulators:
  23. - regulator-names: List of regulator name strings
  24. - vddcx-supply: Phandle for vddcx regulator device node.
  25. - vdd-supply: Phandle for vdd regulator device node.
  26. - clock: List of clocks to be used for GMU register access and DCVS. See
  27. Documentation/devicetree/bindings/clock/clock-bindings.txt
  28. for information about the format. For each clock specified
  29. here, there must be a corresponding entry in clock-names
  30. (see below).
  31. - clock-names: List of clock names corresponding to the clocks specified in
  32. the "clocks" property (above). See
  33. Documentation/devicetree/bindings/clock/clock-bindings.txt
  34. for more info. Currently GMU required these clock names:
  35. "gmu_clk", "ahb_clk", "cxo_clk", "axi_clk", "memnoc_clk",
  36. "rbcpr_clk"
  37. - qcom,gmu-pwrlevels: device node defines a set of GMU power levels. It has
  38. following required properties:
  39. - compatible : "qcom,gmu-pwrlevels"
  40. - qcom,gmu-pwrlevel: a single power level. Each power level has
  41. below properties:
  42. - reg: index of the powerlevel (0 = highest perf)
  43. - qcom, gmu-freq: GMU frequency for the power level in Hz.
  44. - List of sub nodes, one for each of the translation context banks needed
  45. for GMU to access system memory in different operating mode. Currently
  46. supported names are:
  47. - gmu_user: used for GMU 'user' mode address space.
  48. - gmu_kernel: used for GMU 'kernel' mode address space.
  49. Each sub node has the following required properties:
  50. - compatible : "qcom,smmu-gmu-user-cb" or "qcom,smmu-gmu-kernel-cb"
  51. - iommus : Specifies the SID's used by this context bank, this
  52. needs to be <kgsl_smmu SID> pair, kgsl_smmu is the string
  53. parsed by iommu driver to match this context bank with the
  54. kgsl_smmu device defined in iommu device tree. On targets
  55. where the msm iommu driver is used rather than the arm smmu
  56. driver, this property may be absent.
  57. Example:
  58. gmu: qcom,gmu {
  59. label = "kgsl-gmu";
  60. compatible = "qcom,gpu-gmu";
  61. reg = <0xb200000 0x300000>;
  62. reg-names = "kgsl_gmu_pdc_reg";
  63. interrupts = <0 301 0>, <0 302 0>;
  64. interrupt-names = "kgsl_gmu_irq", "kgsl_hfi_irq";
  65. qcom,msm-bus,name = "cnoc";
  66. qcom,msm-bus,num-cases = <2>;
  67. qcom,msm-bus,num-paths = <1>;
  68. qcom,msm-bus,vectors-KBps =
  69. <26 10036 0 0>, // CNOC off
  70. <26 10036 0 100>; // CNOC on
  71. regulator-name = "vddcx", "vdd";
  72. vddcx-supply = <&gpu_cx_gdsc>;
  73. vdd-supply = <&gpu_gx_gdsc>;
  74. clocks = <&clock_gpugcc clk_gcc_gmu_clk>,
  75. <&clock_gcc GCC_GPU_CFG_AHB_CLK>,
  76. <&clock_gpucc GPU_CC_CXO_CLK>,
  77. <&clock_gcc GCC_DDRSS_GPU_AXI_CLK>,
  78. <&clock_gcc GCC_GPU_MEMNOC_GFX_CLK>,
  79. <&clock_gpucc GPU_CC_RBCPR_CLK>;
  80. clock-names = "gmu_clk", "ahb_clk", "cxo_clk",
  81. "axi_clk", "memnoc_clk", "rbcpr_clk";
  82. qcom,gmu-pwrlevels {
  83. compatible = "qcom,gmu-pwrlevels";
  84. qcom,gpu-pwrlevel@0 {
  85. reg = <0>;
  86. qcom,gmu-freq = <500000000>;
  87. };
  88. qcom,gpu-pwrlevel@1 {
  89. reg = <1>;
  90. qcom,gmu-freq = <200000000>;
  91. };
  92. qcom,gpu-pwrlevel@2 {
  93. reg = <2>;
  94. qcom,gmu-freq = <0>;
  95. };
  96. };
  97. gmu_user: gmu_user {
  98. compatible = "qcom,smmu-gmu-user-cb";
  99. iommus = <&kgsl_smmu 4>;
  100. };
  101. gmu_kernel: gmu_kernel {
  102. compatible = "qcom,smmu-gmu-kernel-cb";
  103. iommus = <&kgsl_smmu 5>;
  104. };
  105. };