Skip to content

Commit eec51ab

Browse files
committed
arm64: dts: qcom: sc8280xp: Add GPU related nodes
Add Adreno SMMU, GPU clock controller, GMU and GPU nodes for the SC8280XP. Tested-by: Steev Klimaszewski <steev@kali.org> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org> Tested-by: Johan Hovold <johan+linaro@kernel.org> Signed-off-by: Bjorn Andersson <quic_bjorande@quicinc.com> Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org> Signed-off-by: Bjorn Andersson <andersson@kernel.org> Link: https://lore.kernel.org/r/20230614142204.2675653-2-quic_bjorande@quicinc.com
1 parent ecbfba6 commit eec51ab

2 files changed

Lines changed: 183 additions & 0 deletions

File tree

arch/arm64/boot/dts/qcom/sa8540p.dtsi

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,14 @@
167167
};
168168
};
169169

170+
&gpucc {
171+
status = "disabled";
172+
};
173+
174+
&gpu_smmu {
175+
status = "disabled";
176+
};
177+
170178
&pcie2a {
171179
compatible = "qcom,pcie-sa8540p";
172180

arch/arm64/boot/dts/qcom/sc8280xp.dtsi

Lines changed: 175 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
#include <dt-bindings/clock/qcom,dispcc-sc8280xp.h>
88
#include <dt-bindings/clock/qcom,gcc-sc8280xp.h>
9+
#include <dt-bindings/clock/qcom,gpucc-sc8280xp.h>
910
#include <dt-bindings/clock/qcom,rpmh.h>
1011
#include <dt-bindings/clock/qcom,sc8280xp-lpasscc.h>
1112
#include <dt-bindings/interconnect/qcom,osm-l3.h>
@@ -2332,6 +2333,180 @@
23322333
reg = <0x0 0x01fc0000 0x0 0x30000>;
23332334
};
23342335

2336+
gpu: gpu@3d00000 {
2337+
compatible = "qcom,adreno-690.0", "qcom,adreno";
2338+
2339+
reg = <0 0x03d00000 0 0x40000>,
2340+
<0 0x03d9e000 0 0x1000>,
2341+
<0 0x03d61000 0 0x800>;
2342+
reg-names = "kgsl_3d0_reg_memory",
2343+
"cx_mem",
2344+
"cx_dbgc";
2345+
interrupts = <GIC_SPI 300 IRQ_TYPE_LEVEL_HIGH>;
2346+
iommus = <&gpu_smmu 0 0xc00>, <&gpu_smmu 1 0xc00>;
2347+
operating-points-v2 = <&gpu_opp_table>;
2348+
2349+
qcom,gmu = <&gmu>;
2350+
interconnects = <&gem_noc MASTER_GFX3D 0 &mc_virt SLAVE_EBI1 0>;
2351+
interconnect-names = "gfx-mem";
2352+
#cooling-cells = <2>;
2353+
2354+
status = "disabled";
2355+
2356+
gpu_opp_table: opp-table {
2357+
compatible = "operating-points-v2";
2358+
2359+
opp-270000000 {
2360+
opp-hz = /bits/ 64 <270000000>;
2361+
opp-level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
2362+
opp-peak-kBps = <451000>;
2363+
};
2364+
2365+
opp-410000000 {
2366+
opp-hz = /bits/ 64 <410000000>;
2367+
opp-level = <RPMH_REGULATOR_LEVEL_SVS>;
2368+
opp-peak-kBps = <1555000>;
2369+
};
2370+
2371+
opp-500000000 {
2372+
opp-hz = /bits/ 64 <500000000>;
2373+
opp-level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
2374+
opp-peak-kBps = <1555000>;
2375+
};
2376+
2377+
opp-547000000 {
2378+
opp-hz = /bits/ 64 <547000000>;
2379+
opp-level = <RPMH_REGULATOR_LEVEL_SVS_L2>;
2380+
opp-peak-kBps = <1555000>;
2381+
};
2382+
2383+
opp-606000000 {
2384+
opp-hz = /bits/ 64 <606000000>;
2385+
opp-level = <RPMH_REGULATOR_LEVEL_NOM>;
2386+
opp-peak-kBps = <2736000>;
2387+
};
2388+
2389+
opp-640000000 {
2390+
opp-hz = /bits/ 64 <640000000>;
2391+
opp-level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
2392+
opp-peak-kBps = <2736000>;
2393+
};
2394+
2395+
opp-655000000 {
2396+
opp-hz = /bits/ 64 <655000000>;
2397+
opp-level = <RPMH_REGULATOR_LEVEL_TURBO>;
2398+
opp-peak-kBps = <2736000>;
2399+
};
2400+
2401+
opp-690000000 {
2402+
opp-hz = /bits/ 64 <690000000>;
2403+
opp-level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
2404+
opp-peak-kBps = <2736000>;
2405+
};
2406+
};
2407+
};
2408+
2409+
gmu: gmu@3d6a000 {
2410+
compatible = "qcom,adreno-gmu-690.0", "qcom,adreno-gmu";
2411+
reg = <0 0x03d6a000 0 0x34000>,
2412+
<0 0x03de0000 0 0x10000>,
2413+
<0 0x0b290000 0 0x10000>;
2414+
reg-names = "gmu", "rscc", "gmu_pdc";
2415+
interrupts = <GIC_SPI 304 IRQ_TYPE_LEVEL_HIGH>,
2416+
<GIC_SPI 305 IRQ_TYPE_LEVEL_HIGH>;
2417+
interrupt-names = "hfi", "gmu";
2418+
clocks = <&gpucc GPU_CC_CX_GMU_CLK>,
2419+
<&gpucc GPU_CC_CXO_CLK>,
2420+
<&gcc GCC_DDRSS_GPU_AXI_CLK>,
2421+
<&gcc GCC_GPU_MEMNOC_GFX_CLK>,
2422+
<&gpucc GPU_CC_AHB_CLK>,
2423+
<&gpucc GPU_CC_HUB_CX_INT_CLK>,
2424+
<&gpucc GPU_CC_HLOS1_VOTE_GPU_SMMU_CLK>;
2425+
clock-names = "gmu",
2426+
"cxo",
2427+
"axi",
2428+
"memnoc",
2429+
"ahb",
2430+
"hub",
2431+
"smmu_vote";
2432+
power-domains = <&gpucc GPU_CC_CX_GDSC>,
2433+
<&gpucc GPU_CC_GX_GDSC>;
2434+
power-domain-names = "cx",
2435+
"gx";
2436+
iommus = <&gpu_smmu 5 0xc00>;
2437+
operating-points-v2 = <&gmu_opp_table>;
2438+
2439+
gmu_opp_table: opp-table {
2440+
compatible = "operating-points-v2";
2441+
2442+
opp-200000000 {
2443+
opp-hz = /bits/ 64 <200000000>;
2444+
opp-level = <RPMH_REGULATOR_LEVEL_MIN_SVS>;
2445+
};
2446+
2447+
opp-500000000 {
2448+
opp-hz = /bits/ 64 <500000000>;
2449+
opp-level = <RPMH_REGULATOR_LEVEL_SVS>;
2450+
};
2451+
};
2452+
};
2453+
2454+
gpucc: clock-controller@3d90000 {
2455+
compatible = "qcom,sc8280xp-gpucc";
2456+
reg = <0 0x03d90000 0 0x9000>;
2457+
clocks = <&rpmhcc RPMH_CXO_CLK>,
2458+
<&gcc GCC_GPU_GPLL0_CLK_SRC>,
2459+
<&gcc GCC_GPU_GPLL0_DIV_CLK_SRC>;
2460+
clock-names = "bi_tcxo",
2461+
"gcc_gpu_gpll0_clk_src",
2462+
"gcc_gpu_gpll0_div_clk_src";
2463+
2464+
power-domains = <&rpmhpd SC8280XP_GFX>;
2465+
#clock-cells = <1>;
2466+
#reset-cells = <1>;
2467+
#power-domain-cells = <1>;
2468+
};
2469+
2470+
gpu_smmu: iommu@3da0000 {
2471+
compatible = "qcom,sc8280xp-smmu-500", "qcom,adreno-smmu",
2472+
"qcom,smmu-500", "arm,mmu-500";
2473+
reg = <0 0x03da0000 0 0x20000>;
2474+
#iommu-cells = <2>;
2475+
#global-interrupts = <2>;
2476+
interrupts = <GIC_SPI 672 IRQ_TYPE_LEVEL_HIGH>,
2477+
<GIC_SPI 673 IRQ_TYPE_LEVEL_HIGH>,
2478+
<GIC_SPI 678 IRQ_TYPE_LEVEL_HIGH>,
2479+
<GIC_SPI 679 IRQ_TYPE_LEVEL_HIGH>,
2480+
<GIC_SPI 680 IRQ_TYPE_LEVEL_HIGH>,
2481+
<GIC_SPI 681 IRQ_TYPE_LEVEL_HIGH>,
2482+
<GIC_SPI 682 IRQ_TYPE_LEVEL_HIGH>,
2483+
<GIC_SPI 683 IRQ_TYPE_LEVEL_HIGH>,
2484+
<GIC_SPI 684 IRQ_TYPE_LEVEL_HIGH>,
2485+
<GIC_SPI 685 IRQ_TYPE_LEVEL_HIGH>,
2486+
<GIC_SPI 686 IRQ_TYPE_LEVEL_HIGH>,
2487+
<GIC_SPI 687 IRQ_TYPE_LEVEL_HIGH>,
2488+
<GIC_SPI 688 IRQ_TYPE_LEVEL_HIGH>,
2489+
<GIC_SPI 689 IRQ_TYPE_LEVEL_HIGH>;
2490+
2491+
clocks = <&gcc GCC_GPU_MEMNOC_GFX_CLK>,
2492+
<&gcc GCC_GPU_SNOC_DVM_GFX_CLK>,
2493+
<&gpucc GPU_CC_AHB_CLK>,
2494+
<&gpucc GPU_CC_HLOS1_VOTE_GPU_SMMU_CLK>,
2495+
<&gpucc GPU_CC_CX_GMU_CLK>,
2496+
<&gpucc GPU_CC_HUB_CX_INT_CLK>,
2497+
<&gpucc GPU_CC_HUB_AON_CLK>;
2498+
clock-names = "gcc_gpu_memnoc_gfx_clk",
2499+
"gcc_gpu_snoc_dvm_gfx_clk",
2500+
"gpu_cc_ahb_clk",
2501+
"gpu_cc_hlos1_vote_gpu_smmu_clk",
2502+
"gpu_cc_cx_gmu_clk",
2503+
"gpu_cc_hub_cx_int_clk",
2504+
"gpu_cc_hub_aon_clk";
2505+
2506+
power-domains = <&gpucc GPU_CC_CX_GDSC>;
2507+
dma-coherent;
2508+
};
2509+
23352510
usb_0_hsphy: phy@88e5000 {
23362511
compatible = "qcom,sc8280xp-usb-hs-phy",
23372512
"qcom,usb-snps-hs-5nm-phy";

0 commit comments

Comments
 (0)