arm64: dts: qcom: msm8953: Add GPU
authorVladimir Lypak <vladimir.lypak@gmail.com>
Thu, 25 Jan 2024 21:56:26 +0000 (22:56 +0100)
committerBjorn Andersson <andersson@kernel.org>
Tue, 6 Feb 2024 22:06:06 +0000 (16:06 -0600)
Add the GPU node for the Adreno 506 found on this family of SoCs. The
clock speeds are a bit different per SoC variant, SDM450 maxes out at
600MHz while MSM8953 (= SDM625) goes up to 650MHz and SDM632 goes up to
725MHz.

To achieve this, create a new sdm450.dtsi to hold the 600MHz OPP and
use the new dtsi for sdm450-motorola-ali.

Signed-off-by: Vladimir Lypak <vladimir.lypak@gmail.com>
Co-developed-by: Luca Weiss <luca@z3ntu.xyz>
Signed-off-by: Luca Weiss <luca@z3ntu.xyz>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20240125-msm8953-gpu-v1-2-f6493a5951f3@z3ntu.xyz
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
arch/arm64/boot/dts/qcom/msm8953.dtsi
arch/arm64/boot/dts/qcom/sdm450-motorola-ali.dts
arch/arm64/boot/dts/qcom/sdm450.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/qcom/sdm632.dtsi

index 52cb83317f3f5c38a1d9e8a63576bafe98c20947..f1011bb641c619c2331fcca2b920151241ead05b 100644 (file)
                        };
                };
 
+               gpu: gpu@1c00000 {
+                       compatible = "qcom,adreno-506.0", "qcom,adreno";
+                       reg = <0x01c00000 0x40000>;
+                       reg-names = "kgsl_3d0_reg_memory";
+                       interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
+
+                       clocks = <&gcc GCC_OXILI_GFX3D_CLK>,
+                                <&gcc GCC_OXILI_AHB_CLK>,
+                                <&gcc GCC_BIMC_GFX_CLK>,
+                                <&gcc GCC_BIMC_GPU_CLK>,
+                                <&gcc GCC_OXILI_TIMER_CLK>,
+                                <&gcc GCC_OXILI_AON_CLK>;
+                       clock-names = "core",
+                                     "iface",
+                                     "mem_iface",
+                                     "alt_mem_iface",
+                                     "rbbmtimer",
+                                     "alwayson";
+                       power-domains = <&gcc OXILI_GX_GDSC>;
+
+                       iommus = <&gpu_iommu 0>;
+                       operating-points-v2 = <&gpu_opp_table>;
+
+                       #cooling-cells = <2>;
+
+                       status = "disabled";
+
+                       zap-shader {
+                               memory-region = <&zap_shader_region>;
+                       };
+
+                       gpu_opp_table: opp-table {
+                               compatible = "operating-points-v2";
+
+                               opp-19200000 {
+                                       opp-hz = /bits/ 64 <19200000>;
+                                       opp-supported-hw = <0xff>;
+                                       required-opps = <&rpmpd_opp_min_svs>;
+                               };
+
+                               opp-133300000 {
+                                       opp-hz = /bits/ 64 <133300000>;
+                                       opp-supported-hw = <0xff>;
+                                       required-opps = <&rpmpd_opp_min_svs>;
+                               };
+
+                               opp-216000000 {
+                                       opp-hz = /bits/ 64 <216000000>;
+                                       opp-supported-hw = <0xff>;
+                                       required-opps = <&rpmpd_opp_low_svs>;
+                               };
+
+                               opp-320000000 {
+                                       opp-hz = /bits/ 64 <320000000>;
+                                       opp-supported-hw = <0xff>;
+                                       required-opps = <&rpmpd_opp_svs>;
+                               };
+
+                               opp-400000000 {
+                                       opp-hz = /bits/ 64 <400000000>;
+                                       opp-supported-hw = <0xff>;
+                                       required-opps = <&rpmpd_opp_svs_plus>;
+                               };
+
+                               opp-510000000 {
+                                       opp-hz = /bits/ 64 <510000000>;
+                                       opp-supported-hw = <0xff>;
+                                       required-opps = <&rpmpd_opp_nom>;
+                               };
+
+                               opp-560000000 {
+                                       opp-hz = /bits/ 64 <560000000>;
+                                       opp-supported-hw = <0xff>;
+                                       required-opps = <&rpmpd_opp_nom_plus>;
+                               };
+
+                               /*
+                                * This opp is only available on msm8953 and
+                                * sdm632, the max for sdm450 is 600MHz.
+                                */
+                               opp-650000000 {
+                                       opp-hz = /bits/ 64 <650000000>;
+                                       opp-supported-hw = <0xff>;
+                                       required-opps = <&rpmpd_opp_turbo>;
+                               };
+                       };
+               };
+
                gpu_iommu: iommu@1c48000 {
                        compatible = "qcom,msm8953-iommu", "qcom,msm-iommu-v2";
                        ranges = <0 0x01c48000 0x8000>;
                                };
                        };
                };
+
+               gpu-thermal {
+                       polling-delay-passive = <250>;
+                       polling-delay = <1000>;
+                       thermal-sensors = <&tsens0 15>;
+
+                       trips {
+                               gpu_alert: trip-point0 {
+                                       temperature = <70000>;
+                                       hysteresis = <2000>;
+                                       type = "passive";
+                               };
+
+                               gpu_crit: crit {
+                                       temperature = <90000>;
+                                       hysteresis = <2000>;
+                                       type = "critical";
+                               };
+                       };
+
+                       cooling-maps {
+                               map0 {
+                                       trip = <&gpu_alert>;
+                                       cooling-device = <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                               };
+                       };
+               };
        };
 
        timer {
index 362be5719dd25c2bcba63a7ef18bae2aa95f720b..e27f3c5d5bba9a620156e2ae3137310c72920f11 100644 (file)
@@ -4,7 +4,7 @@
  */
 /dts-v1/;
 
-#include "msm8953.dtsi"
+#include "sdm450.dtsi"
 #include "pm8953.dtsi"
 #include "pmi8950.dtsi"
 
diff --git a/arch/arm64/boot/dts/qcom/sdm450.dtsi b/arch/arm64/boot/dts/qcom/sdm450.dtsi
new file mode 100644 (file)
index 0000000..b222aeb
--- /dev/null
@@ -0,0 +1,14 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/* Copyright (c) 2023, Luca Weiss <luca@z3ntu.xyz> */
+
+#include "msm8953.dtsi"
+
+&gpu_opp_table {
+       /delete-node/ opp-650000000;
+
+       opp-600000000 {
+               opp-hz = /bits/ 64 <600000000>;
+               opp-supported-hw = <0xff>;
+               required-opps = <&rpmpd_opp_turbo>;
+       };
+};
index 645b9f6a801f44a407e84674249fe8cdc01ec4b8..95b025ea260bdbc48e15496dda34cdd5a7f0a448 100644 (file)
        compatible = "qcom,kryo250";
        capacity-dmips-mhz = <1980>;
 };
+
+&gpu_opp_table {
+       opp-725000000 {
+               opp-hz = /bits/ 64 <725000000>;
+               opp-supported-hw = <0xff>;
+               required-opps = <&rpmpd_opp_turbo>;
+       };
+};