1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
5 $id: "http://devicetree.org/schemas/display/msm/gpu.yaml#"
6 $schema: "http://devicetree.org/meta-schemas/core.yaml#"
8 title: Devicetree bindings for the Adreno or Snapdragon GPUs
11 - Rob Clark <robdclark@gmail.com>
17 The driver is parsing the compat string for Adreno to
18 figure out the gpu-id and patch level.
20 - pattern: '^qcom,adreno-[3-6][0-9][0-9]\.[0-9]$'
23 The driver is parsing the compat string for Imageon to
24 figure out the gpu-id and patch level.
26 - pattern: '^amd,imageon-200\.[0-1]$'
40 - const: kgsl_3d0_reg_memory
64 $ref: /schemas/types.yaml#/definitions/phandle-array
68 phandles to one or more reserved on-chip SRAM regions.
69 phandle to the On Chip Memory (OCMEM) that's present on some a3xx and
70 a4xx Snapdragon SoCs. See
71 Documentation/devicetree/bindings/sram/qcom,ocmem.yaml
73 operating-points-v2: true
83 For a5xx and a6xx devices this node contains a memory-region that
84 points to reserved memory to store the zap shader that can be used to
85 help bring the GPU out of secure mode.
88 $ref: /schemas/types.yaml#/definitions/phandle
92 Default name of the firmware to load to the remote processor.
101 description: efuse registers
105 $ref: /schemas/types.yaml#/definitions/phandle
107 For GMU attached devices a phandle to the GMU device that will
108 control the power for the GPU.
116 additionalProperties: false
123 pattern: '^qcom,adreno-[3-5][0-9][0-9]\.[0-9]$'
135 description: GPU Core clock
137 description: GPU Interface clock
139 description: GPU Memory clock
141 description: GPU Memory Interface clock
142 - const: alt_mem_iface
143 description: GPU Alternative Memory Interface clock
145 description: GPU 3D engine clock
147 description: GPU RBBM Timer for Adreno 5xx series
158 pattern: '^qcom,adreno-6[0-9][0-9]\.[0-9]$'
160 then: # Since Adreno 6xx series clocks should be defined in GMU
170 #include <dt-bindings/clock/qcom,mmcc-msm8974.h>
171 #include <dt-bindings/clock/qcom,rpmcc.h>
172 #include <dt-bindings/interrupt-controller/irq.h>
173 #include <dt-bindings/interrupt-controller/arm-gic.h>
176 compatible = "qcom,adreno-330.2", "qcom,adreno";
178 reg = <0xfdb00000 0x10000>;
179 reg-names = "kgsl_3d0_reg_memory";
181 clock-names = "core", "iface", "mem_iface";
182 clocks = <&mmcc OXILI_GFX3D_CLK>,
183 <&mmcc OXILICX_AHB_CLK>,
184 <&mmcc OXILICX_AXI_CLK>;
186 interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
187 interrupt-names = "kgsl_3d0_irq";
190 power-domains = <&mmcc OXILICX_GDSC>;
191 operating-points-v2 = <&gpu_opp_table>;
192 iommus = <&gpu_iommu 0>;
193 #cooling-cells = <2>;
197 compatible = "qcom,msm8974-ocmem";
199 reg = <0xfdd00000 0x2000>,
200 <0xfec00000 0x180000>;
201 reg-names = "ctrl", "mem";
203 clocks = <&rpmcc RPM_SMD_OCMEMGX_CLK>,
204 <&mmcc OCMEMCX_OCMEMNOC_CLK>;
205 clock-names = "core", "iface";
207 #address-cells = <1>;
209 ranges = <0 0xfec00000 0x100000>;
211 gpu_sram: gpu-sram@0 {
212 reg = <0x0 0x100000>;
217 // Example a6xx (with GMU):
219 #include <dt-bindings/clock/qcom,gpucc-sdm845.h>
220 #include <dt-bindings/clock/qcom,gcc-sdm845.h>
221 #include <dt-bindings/power/qcom-rpmpd.h>
222 #include <dt-bindings/interrupt-controller/irq.h>
223 #include <dt-bindings/interrupt-controller/arm-gic.h>
224 #include <dt-bindings/interconnect/qcom,sdm845.h>
227 #address-cells = <2>;
230 zap_shader_region: gpu@8f200000 {
231 compatible = "shared-dma-pool";
232 reg = <0x0 0x90b00000 0x0 0xa00000>;
238 compatible = "qcom,adreno-630.2", "qcom,adreno";
240 reg = <0x5000000 0x40000>, <0x509e000 0x10>;
241 reg-names = "kgsl_3d0_reg_memory", "cx_mem";
243 #cooling-cells = <2>;
245 interrupts = <GIC_SPI 300 IRQ_TYPE_LEVEL_HIGH>;
247 iommus = <&adreno_smmu 0>;
249 operating-points-v2 = <&gpu_opp_table>;
251 interconnects = <&rsc_hlos MASTER_GFX3D &rsc_hlos SLAVE_EBI1>;
252 interconnect-names = "gfx-mem";
256 gpu_opp_table: opp-table {
257 compatible = "operating-points-v2";
260 opp-hz = /bits/ 64 <430000000>;
261 opp-level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
262 opp-peak-kBps = <5412000>;
266 opp-hz = /bits/ 64 <355000000>;
267 opp-level = <RPMH_REGULATOR_LEVEL_SVS>;
268 opp-peak-kBps = <3072000>;
272 opp-hz = /bits/ 64 <267000000>;
273 opp-level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
274 opp-peak-kBps = <3072000>;
278 opp-hz = /bits/ 64 <180000000>;
279 opp-level = <RPMH_REGULATOR_LEVEL_MIN_SVS>;
280 opp-peak-kBps = <1804000>;
285 memory-region = <&zap_shader_region>;
286 firmware-name = "qcom/LENOVO/81JL/qcdxkmsuc850.mbn";