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: Adreno or Snapdragon GPUs
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
65 $ref: /schemas/types.yaml#/definitions/phandle-array
71 phandles to one or more reserved on-chip SRAM regions.
72 phandle to the On Chip Memory (OCMEM) that's present on some a3xx and
73 a4xx Snapdragon SoCs. See
74 Documentation/devicetree/bindings/sram/qcom,ocmem.yaml
76 operating-points-v2: true
85 additionalProperties: false
87 For a5xx and a6xx devices this node contains a memory-region that
88 points to reserved memory to store the zap shader that can be used to
89 help bring the GPU out of secure mode.
96 Default name of the firmware to load to the remote processor.
105 description: efuse registers
109 $ref: /schemas/types.yaml#/definitions/phandle
111 For GMU attached devices a phandle to the GMU device that will
112 control the power for the GPU.
120 additionalProperties: false
127 pattern: '^qcom,adreno-[3-5][0-9][0-9]\.[0-9]$'
139 description: GPU Core clock
141 description: GPU Interface clock
143 description: GPU Memory clock
145 description: GPU Memory Interface clock
146 - const: alt_mem_iface
147 description: GPU Alternative Memory Interface clock
149 description: GPU 3D engine clock
151 description: GPU RBBM Timer for Adreno 5xx series
153 description: GPU RB Core Power Reduction clock
164 pattern: '^qcom,adreno-6[0-9][0-9]\.[0-9]$'
166 then: # Since Adreno 6xx series clocks should be defined in GMU
176 #include <dt-bindings/clock/qcom,mmcc-msm8974.h>
177 #include <dt-bindings/clock/qcom,rpmcc.h>
178 #include <dt-bindings/interrupt-controller/irq.h>
179 #include <dt-bindings/interrupt-controller/arm-gic.h>
182 compatible = "qcom,adreno-330.2", "qcom,adreno";
184 reg = <0xfdb00000 0x10000>;
185 reg-names = "kgsl_3d0_reg_memory";
187 clock-names = "core", "iface", "mem_iface";
188 clocks = <&mmcc OXILI_GFX3D_CLK>,
189 <&mmcc OXILICX_AHB_CLK>,
190 <&mmcc OXILICX_AXI_CLK>;
192 interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
193 interrupt-names = "kgsl_3d0_irq";
196 power-domains = <&mmcc OXILICX_GDSC>;
197 operating-points-v2 = <&gpu_opp_table>;
198 iommus = <&gpu_iommu 0>;
199 #cooling-cells = <2>;
203 compatible = "qcom,msm8974-ocmem";
205 reg = <0xfdd00000 0x2000>,
206 <0xfec00000 0x180000>;
207 reg-names = "ctrl", "mem";
209 clocks = <&rpmcc RPM_SMD_OCMEMGX_CLK>,
210 <&mmcc OCMEMCX_OCMEMNOC_CLK>;
211 clock-names = "core", "iface";
213 #address-cells = <1>;
215 ranges = <0 0xfec00000 0x100000>;
217 gpu_sram: gpu-sram@0 {
218 reg = <0x0 0x100000>;
223 // Example a6xx (with GMU):
225 #include <dt-bindings/clock/qcom,gpucc-sdm845.h>
226 #include <dt-bindings/clock/qcom,gcc-sdm845.h>
227 #include <dt-bindings/power/qcom-rpmpd.h>
228 #include <dt-bindings/interrupt-controller/irq.h>
229 #include <dt-bindings/interrupt-controller/arm-gic.h>
230 #include <dt-bindings/interconnect/qcom,sdm845.h>
233 #address-cells = <2>;
236 zap_shader_region: gpu@8f200000 {
237 compatible = "shared-dma-pool";
238 reg = <0x0 0x90b00000 0x0 0xa00000>;
244 compatible = "qcom,adreno-630.2", "qcom,adreno";
246 reg = <0x5000000 0x40000>, <0x509e000 0x10>;
247 reg-names = "kgsl_3d0_reg_memory", "cx_mem";
249 #cooling-cells = <2>;
251 interrupts = <GIC_SPI 300 IRQ_TYPE_LEVEL_HIGH>;
253 iommus = <&adreno_smmu 0>;
255 operating-points-v2 = <&gpu_opp_table>;
257 interconnects = <&rsc_hlos MASTER_GFX3D &rsc_hlos SLAVE_EBI1>;
258 interconnect-names = "gfx-mem";
262 gpu_opp_table: opp-table {
263 compatible = "operating-points-v2";
266 opp-hz = /bits/ 64 <430000000>;
267 opp-level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
268 opp-peak-kBps = <5412000>;
272 opp-hz = /bits/ 64 <355000000>;
273 opp-level = <RPMH_REGULATOR_LEVEL_SVS>;
274 opp-peak-kBps = <3072000>;
278 opp-hz = /bits/ 64 <267000000>;
279 opp-level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
280 opp-peak-kBps = <3072000>;
284 opp-hz = /bits/ 64 <180000000>;
285 opp-level = <RPMH_REGULATOR_LEVEL_MIN_SVS>;
286 opp-peak-kBps = <1804000>;
291 memory-region = <&zap_shader_region>;
292 firmware-name = "qcom/LENOVO/81JL/qcdxkmsuc850.mbn";