adreno.txt 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. Qualcomm GPU
  2. Qualcomm Adreno GPU
  3. Required properties:
  4. - label: A string used as a descriptive name for the device.
  5. - compatible: Must be "qcom,kgsl-3d0" and "qcom,kgsl-3d"
  6. - reg: Specifies the register base address and size. The second interval
  7. specifies the shader memory base address and size.
  8. - reg-names: Resource names used for the physical address of device registers
  9. and shader memory. "kgsl_3d0_reg_memory" gives the physical address
  10. and length of device registers while "kgsl_3d0_shader_memory" gives
  11. physical address and length of device shader memory.
  12. - interrupts: Interrupt mapping for GPU IRQ.
  13. - interrupt-names: String property to describe the name of the interrupt.
  14. - qcom,id: An integer used as an identification number for the device.
  15. - qcom,clk-map: A bit map value for clocks controlled by kgsl.
  16. KGSL_CLK_SRC 0x00000001
  17. KGSL_CLK_CORE 0x00000002
  18. KGSL_CLK_IFACE 0x00000004
  19. KGSL_CLK_MEM 0x00000008
  20. KGSL_CLK_MEM_IFACE 0x00000010
  21. KGSL_CLK_AXI 0x00000020
  22. Bus Scaling Data:
  23. - qcom,msm-bus,name: String property to describe the name of the 3D graphics processor.
  24. - qcom,msm-bus,num-cases: This is the the number of Bus Scaling use cases defined in the vectors property.
  25. - qcom,msm-bus,active-only: A boolean flag indicating if it is active only.
  26. - qcom,msm-bus,num-paths: This represents the number of paths in each Bus Scaling Usecase.
  27. - qcom,msm-bus,vectors-KBps: A series of 4 cell properties, format of which is:
  28. <src dst ab ib>, <src dst ab ib>, // For Bus Scaling Usecase 1
  29. <src dst ab ib>, <src dst ab ib>, // For Bus Scaling Usecase 2
  30. <.. .. .. ..>, <.. .. .. ..>; // For Bus Scaling Usecase n
  31. This property is a series of all vectors for all Bus Scaling Usecases.
  32. Each set of vectors for each usecase describes bandwidth votes for a combination
  33. of src/dst ports. The driver will set the desired use case based on the selected
  34. power level and the desired bandwidth vote will be registered for the port pairs.
  35. Current values of src are:
  36. 0 = MSM_BUS_MASTER_GRAPHICS_3D
  37. 1 = MSM_BUS_MASTER_GRAPHICS_3D_PORT1
  38. 2 = MSM_BUS_MASTER_V_OCMEM_GFX3D
  39. Current values of dst are:
  40. 0 = MSM_BUS_SLAVE_EBI_CH0
  41. 1 = MSM_BUS_SLAVE_OCMEM
  42. ab: Represents aggregated bandwidth. This value is 0 for Graphics.
  43. ib: Represents instantaneous bandwidth. This value has a range <0 8000 MB/s>
  44. GDSC Oxili Regulators:
  45. - vddcx-supply: Phandle for vddcx regulator device node.
  46. - vdd-supply: Phandle for vdd regulator device node.
  47. IOMMU Data:
  48. - iommu: Phandle for the KGSL IOMMU device node
  49. GPU Power levels:
  50. - qcom,gpu-pwrlevels: Container for the GPU Power Levels (see
  51. adreno-pwrlevels.txt)
  52. DCVS Core info
  53. - qcom,dcvs-core-info Container for the DCVS core info (see
  54. dcvs-core-info.txt)
  55. Optional Properties:
  56. - qcom,initial-powerlevel: This value indicates which qcom,gpu-pwrlevel should be used at start time
  57. and when coming back out of resume
  58. - qcom,bus-control: Boolean. Enables an independent bus vote from the gpu frequency
  59. - qcom,idle-timeout: This property represents the time in milliseconds for idle timeout.
  60. - qcom,chipid: If it exists this property is used to replace
  61. the chip identification read from the GPU hardware.
  62. This is used to override faulty hardware readings.
  63. - qcom,strtstp-sleepwake: Boolean. Enables use of GPU SLUMBER instead of SLEEP for power savings
  64. - qcom,pm-qos-latency: Every time GPU wakes up from sleep, driver votes for
  65. acceptable maximum latency to the pm-qos driver. This
  66. voting demands that *CPU* can not go into a power save
  67. state *if* the latency to bring CPU back into normal
  68. state is more than this value.
  69. Value is in microseconds.
  70. The following properties are optional as collecting data via coresight might
  71. not be supported for every chipset. The documentation for coresight
  72. properties can be found in:
  73. Documentation/devicetree/bindings/coresight/coresight.txt
  74. - coresight-id Unique integer identifier for the bus.
  75. - coresight-name Unique descriptive name of the bus.
  76. - coresight-nr-inports Number of input ports on the bus.
  77. - coresight-outports List of output port numbers on the bus.
  78. - coresight-child-list List of phandles pointing to the children of this
  79. component.
  80. - coresight-child-ports List of input port numbers of the children.
  81. Example of A330 GPU in MSM8974:
  82. / {
  83. qcom,kgsl-3d0@fdb00000 {
  84. label = "kgsl-3d0";
  85. compatible = "qcom,kgsl-3d0", "qcom,kgsl-3d";
  86. reg = <0xfdb00000 0x10000
  87. 0xfdb20000 0x10000>;
  88. reg-names = "kgsl_3d0_reg_memory", "kgsl_3d0_shader_memory";
  89. interrupts = <0 33 0>;
  90. interrupt-names = "kgsl_3d0_irq";
  91. qcom,id = <0>;
  92. qcom,chipid = <0x03030000>;
  93. /* Power Settings */
  94. qcom,initial-pwrlevel = <1>;
  95. qcom,idle-timeout = <83>; //<HZ/12>
  96. qcom,clk-map = <0x00000016>; //KGSL_CLK_CORE | KGSL_CLK_IFACE | KGSL_CLK_MEM_IFACE
  97. /* Bus Scale Settings */
  98. qcom,msm-bus,name = "grp3d";
  99. qcom,msm-bus,num-cases = <6>;
  100. qcom,msm-bus,num-paths = <2>;
  101. qcom,msm-bus,vectors-KBps =
  102. <26 512 0 0>, <89 604 0 0>,
  103. <26 512 0 2200000>, <89 604 0 3000000>,
  104. <26 512 0 4000000>, <89 604 0 3000000>,
  105. <26 512 0 4000000>, <89 604 0 4500000>,
  106. <26 512 0 6400000>, <89 604 0 4500000>,
  107. <26 512 0 6400000>, <89 604 0 7600000>;
  108. /* GDSC oxili regulators */
  109. vddcx-supply = <&gdsc_oxili_cx>;
  110. vdd-supply = <&gdsc_oxili_gx>;
  111. /* IOMMU Data */
  112. iommu = <&kgsl>;
  113. qcom,gpu-pwrlevels {
  114. #address-cells = <1>;
  115. #size-cells = <0>;
  116. compatible = "qcom,gpu-pwrlevels";
  117. qcom,gpu-pwrlevel@0 {
  118. reg = <0>;
  119. qcom,gpu-freq = <5000000000>;
  120. qcom,bus-freq = <3>;
  121. qcom,io-fraction = <0>;
  122. };
  123. };
  124. qcom,dcvs-core-info {
  125. #address-cells = <1>;
  126. #size-cells = <0>;
  127. compatible = "qcom,dcvs-core-info";
  128. qcom,core-max-time-us = <100000>;
  129. qcom,algo-slack-time-us = <39000>;
  130. qcom,algo-disable-pc-threshold = <86000>;
  131. qcom,algo-ss-window-size = <1000000>;
  132. qcom,algo-ss-util-pct = <95>;
  133. qcom,algo-em-max-util-pct = <97>;
  134. qcom,algo-ss-no-corr-below-freq = <0>;
  135. qcom,dcvs-freq@0 {
  136. reg = <0>;
  137. qcom,freq = <0>;
  138. qcom,idle-energy = <0>;
  139. qcom,active-energy = <333932>;
  140. };
  141. qcom,dcvs-freq@1 {
  142. reg = <1>;
  143. qcom,freq = <0>;
  144. qcom,idle-energy = <0>;
  145. qcom,active-energy = <497532>;
  146. };
  147. qcom,dcvs-freq@2 {
  148. reg = <2>;
  149. qcom,freq = <0>;
  150. qcom,idle-energy = <0>;
  151. qcom,active-energy = <707610>;
  152. };
  153. qcom,dcvs-freq@3 {
  154. reg = <3>;
  155. qcom,freq = <0>;
  156. qcom,idle-energy = <0>;
  157. qcom,active-energy = <844545>;
  158. };
  159. };
  160. };
  161. };