* [PATCH v8 1/4] arm64: dts: qcom: lemans: Add gpu and gmu nodes
2025-11-05 17:11 [PATCH v8 0/4] DRM/MSM: Support for Adreno 663 GPU Akhil P Oommen
@ 2025-11-05 17:11 ` Akhil P Oommen
2025-11-05 17:11 ` [PATCH v8 2/4] arm64: dts: qcom: lemans: Add GPU cooling Akhil P Oommen
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Akhil P Oommen @ 2025-11-05 17:11 UTC (permalink / raw)
To: Sean Paul, Konrad Dybcio, Marijn Suijten, David Airlie,
Simona Vetter, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bjorn Andersson, Connor Abbott, Srinivas Kandagatla, Rob Clark,
Dmitry Baryshkov
Cc: Gaurav Kohli, linux-arm-msm, dri-devel, freedreno, linux-kernel,
devicetree, Puranam V G Tejaswi, Konrad Dybcio, Akhil P Oommen
From: Puranam V G Tejaswi <quic_pvgtejas@quicinc.com>
Add gpu and gmu nodes for Lemans chipset. Also, add the speedbin
qfprom node and wire it up with GPU node.
Signed-off-by: Puranam V G Tejaswi <quic_pvgtejas@quicinc.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
---
arch/arm64/boot/dts/qcom/lemans.dtsi | 119 +++++++++++++++++++++++++++++++++++
1 file changed, 119 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/lemans.dtsi b/arch/arm64/boot/dts/qcom/lemans.dtsi
index 0b154d57ba24e69a9d900f06bbb22baa2781cc3f..883f9e0ab45c98b9e128f3fa141d625431d89831 100644
--- a/arch/arm64/boot/dts/qcom/lemans.dtsi
+++ b/arch/arm64/boot/dts/qcom/lemans.dtsi
@@ -1098,6 +1098,18 @@ ipcc: mailbox@408000 {
#mbox-cells = <2>;
};
+ qfprom: efuse@784000 {
+ compatible = "qcom,sa8775p-qfprom", "qcom,qfprom";
+ reg = <0x0 0x00784000 0x0 0x3000>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ gpu_speed_bin: gpu_speed_bin@240c {
+ reg = <0x240c 0x1>;
+ bits = <0 8>;
+ };
+ };
+
gpi_dma2: dma-controller@800000 {
compatible = "qcom,sa8775p-gpi-dma", "qcom,sm6350-gpi-dma";
reg = <0x0 0x00800000 0x0 0x60000>;
@@ -4135,6 +4147,113 @@ tcsr: syscon@1fc0000 {
reg = <0x0 0x1fc0000 0x0 0x30000>;
};
+ gpu: gpu@3d00000 {
+ compatible = "qcom,adreno-663.0", "qcom,adreno";
+ reg = <0x0 0x03d00000 0x0 0x40000>,
+ <0x0 0x03d9e000 0x0 0x1000>,
+ <0x0 0x03d61000 0x0 0x800>;
+ reg-names = "kgsl_3d0_reg_memory",
+ "cx_mem",
+ "cx_dbgc";
+ interrupts = <GIC_SPI 300 IRQ_TYPE_LEVEL_HIGH>;
+ iommus = <&adreno_smmu 0 0xc00>,
+ <&adreno_smmu 1 0xc00>;
+ operating-points-v2 = <&gpu_opp_table>;
+ qcom,gmu = <&gmu>;
+ interconnects = <&gem_noc MASTER_GFX3D QCOM_ICC_TAG_ALWAYS
+ &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+ interconnect-names = "gfx-mem";
+ #cooling-cells = <2>;
+
+ nvmem-cells = <&gpu_speed_bin>;
+ nvmem-cell-names = "speed_bin";
+
+ status = "disabled";
+
+ gpu_zap_shader: zap-shader {
+ memory-region = <&pil_gpu_mem>;
+ };
+
+ gpu_opp_table: opp-table {
+ compatible = "operating-points-v2";
+
+ opp-405000000 {
+ opp-hz = /bits/ 64 <405000000>;
+ opp-level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
+ opp-peak-kBps = <5285156>;
+ opp-supported-hw = <0x3>;
+ };
+
+ opp-530000000 {
+ opp-hz = /bits/ 64 <530000000>;
+ opp-level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
+ opp-peak-kBps = <12484375>;
+ opp-supported-hw = <0x2>;
+ };
+
+ opp-676000000 {
+ opp-hz = /bits/ 64 <676000000>;
+ opp-level = <RPMH_REGULATOR_LEVEL_NOM>;
+ opp-peak-kBps = <8171875>;
+ opp-supported-hw = <0x1>;
+ };
+
+ opp-778000000 {
+ opp-hz = /bits/ 64 <778000000>;
+ opp-level = <RPMH_REGULATOR_LEVEL_TURBO>;
+ opp-peak-kBps = <10687500>;
+ opp-supported-hw = <0x1>;
+ };
+
+ opp-800000000 {
+ opp-hz = /bits/ 64 <800000000>;
+ opp-level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
+ opp-peak-kBps = <12484375>;
+ opp-supported-hw = <0x1>;
+ };
+ };
+ };
+
+ gmu: gmu@3d6a000 {
+ compatible = "qcom,adreno-gmu-663.0", "qcom,adreno-gmu";
+ reg = <0x0 0x03d6a000 0x0 0x34000>,
+ <0x0 0x03de0000 0x0 0x10000>,
+ <0x0 0x0b290000 0x0 0x10000>;
+ reg-names = "gmu", "rscc", "gmu_pdc";
+ interrupts = <GIC_SPI 304 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 305 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "hfi", "gmu";
+ clocks = <&gpucc GPU_CC_CX_GMU_CLK>,
+ <&gpucc GPU_CC_CXO_CLK>,
+ <&gcc GCC_DDRSS_GPU_AXI_CLK>,
+ <&gcc GCC_GPU_MEMNOC_GFX_CLK>,
+ <&gpucc GPU_CC_AHB_CLK>,
+ <&gpucc GPU_CC_HUB_CX_INT_CLK>,
+ <&gpucc GPU_CC_HLOS1_VOTE_GPU_SMMU_CLK>;
+ clock-names = "gmu",
+ "cxo",
+ "axi",
+ "memnoc",
+ "ahb",
+ "hub",
+ "smmu_vote";
+ power-domains = <&gpucc GPU_CC_CX_GDSC>,
+ <&gpucc GPU_CC_GX_GDSC>;
+ power-domain-names = "cx",
+ "gx";
+ iommus = <&adreno_smmu 5 0xc00>;
+ operating-points-v2 = <&gmu_opp_table>;
+
+ gmu_opp_table: opp-table {
+ compatible = "operating-points-v2";
+
+ opp-500000000 {
+ opp-hz = /bits/ 64 <500000000>;
+ opp-level = <RPMH_REGULATOR_LEVEL_SVS>;
+ };
+ };
+ };
+
gpucc: clock-controller@3d90000 {
compatible = "qcom,sa8775p-gpucc";
reg = <0x0 0x03d90000 0x0 0xa000>;
--
2.51.0
^ permalink raw reply related [flat|nested] 5+ messages in thread* [PATCH v8 2/4] arm64: dts: qcom: lemans: Add GPU cooling
2025-11-05 17:11 [PATCH v8 0/4] DRM/MSM: Support for Adreno 663 GPU Akhil P Oommen
2025-11-05 17:11 ` [PATCH v8 1/4] arm64: dts: qcom: lemans: Add gpu and gmu nodes Akhil P Oommen
@ 2025-11-05 17:11 ` Akhil P Oommen
2025-11-05 17:11 ` [PATCH v8 3/4] arm64: dts: qcom: lemans-evk: Enable Adreno 663 GPU Akhil P Oommen
2025-11-05 17:11 ` [PATCH v8 4/4] arm64: dts: qcom: qcs9100-ride: " Akhil P Oommen
3 siblings, 0 replies; 5+ messages in thread
From: Akhil P Oommen @ 2025-11-05 17:11 UTC (permalink / raw)
To: Sean Paul, Konrad Dybcio, Marijn Suijten, David Airlie,
Simona Vetter, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bjorn Andersson, Connor Abbott, Srinivas Kandagatla, Rob Clark,
Dmitry Baryshkov
Cc: Gaurav Kohli, linux-arm-msm, dri-devel, freedreno, linux-kernel,
devicetree, Akhil P Oommen, Konrad Dybcio
From: Gaurav Kohli <quic_gkohli@quicinc.com>
Unlike the CPU, the GPU does not throttle its speed automatically when it
reaches high temperatures.
Set up GPU cooling by throttling the GPU speed
when reaching 105°C.
Signed-off-by: Gaurav Kohli <quic_gkohli@quicinc.com>
Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
---
arch/arm64/boot/dts/qcom/lemans.dtsi | 55 ++++++++++++++++++++++++++++++++----
1 file changed, 49 insertions(+), 6 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/lemans.dtsi b/arch/arm64/boot/dts/qcom/lemans.dtsi
index 883f9e0ab45c98b9e128f3fa141d625431d89831..14d9f31e7086dd337c658cdb3989a4fd1c83092b 100644
--- a/arch/arm64/boot/dts/qcom/lemans.dtsi
+++ b/arch/arm64/boot/dts/qcom/lemans.dtsi
@@ -21,6 +21,7 @@
#include <dt-bindings/power/qcom-rpmpd.h>
#include <dt-bindings/soc/qcom,gpr.h>
#include <dt-bindings/soc/qcom,rpmh-rsc.h>
+#include <dt-bindings/thermal/thermal.h>
/ {
interrupt-parent = <&intc>;
@@ -7514,8 +7515,15 @@ gpuss-0-thermal {
thermal-sensors = <&tsens0 5>;
+ cooling-maps {
+ map0 {
+ trip = <&gpuss0_alert0>;
+ cooling-device = <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+
trips {
- trip-point0 {
+ gpuss0_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <5000>;
type = "passive";
@@ -7534,8 +7542,15 @@ gpuss-1-thermal {
thermal-sensors = <&tsens0 6>;
+ cooling-maps {
+ map0 {
+ trip = <&gpuss1_alert0>;
+ cooling-device = <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+
trips {
- trip-point0 {
+ gpuss1_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <5000>;
type = "passive";
@@ -7554,8 +7569,15 @@ gpuss-2-thermal {
thermal-sensors = <&tsens0 7>;
+ cooling-maps {
+ map0 {
+ trip = <&gpuss2_alert0>;
+ cooling-device = <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+
trips {
- trip-point0 {
+ gpuss2_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <5000>;
type = "passive";
@@ -7744,8 +7766,15 @@ gpuss-3-thermal {
thermal-sensors = <&tsens1 5>;
+ cooling-maps {
+ map0 {
+ trip = <&gpuss3_alert0>;
+ cooling-device = <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+
trips {
- trip-point0 {
+ gpuss3_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <5000>;
type = "passive";
@@ -7764,8 +7793,15 @@ gpuss-4-thermal {
thermal-sensors = <&tsens1 6>;
+ cooling-maps {
+ map0 {
+ trip = <&gpuss4_alert0>;
+ cooling-device = <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+
trips {
- trip-point0 {
+ gpuss4_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <5000>;
type = "passive";
@@ -7784,8 +7820,15 @@ gpuss-5-thermal {
thermal-sensors = <&tsens1 7>;
+ cooling-maps {
+ map0 {
+ trip = <&gpuss5_alert0>;
+ cooling-device = <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+
trips {
- trip-point0 {
+ gpuss5_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <5000>;
type = "passive";
--
2.51.0
^ permalink raw reply related [flat|nested] 5+ messages in thread* [PATCH v8 3/4] arm64: dts: qcom: lemans-evk: Enable Adreno 663 GPU
2025-11-05 17:11 [PATCH v8 0/4] DRM/MSM: Support for Adreno 663 GPU Akhil P Oommen
2025-11-05 17:11 ` [PATCH v8 1/4] arm64: dts: qcom: lemans: Add gpu and gmu nodes Akhil P Oommen
2025-11-05 17:11 ` [PATCH v8 2/4] arm64: dts: qcom: lemans: Add GPU cooling Akhil P Oommen
@ 2025-11-05 17:11 ` Akhil P Oommen
2025-11-05 17:11 ` [PATCH v8 4/4] arm64: dts: qcom: qcs9100-ride: " Akhil P Oommen
3 siblings, 0 replies; 5+ messages in thread
From: Akhil P Oommen @ 2025-11-05 17:11 UTC (permalink / raw)
To: Sean Paul, Konrad Dybcio, Marijn Suijten, David Airlie,
Simona Vetter, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bjorn Andersson, Connor Abbott, Srinivas Kandagatla, Rob Clark,
Dmitry Baryshkov
Cc: Gaurav Kohli, linux-arm-msm, dri-devel, freedreno, linux-kernel,
devicetree, Dmitry Baryshkov, Akhil P Oommen
Enable GPU for lemans-evk platform and provide path for zap
shader.
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
---
arch/arm64/boot/dts/qcom/lemans-evk.dts | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/lemans-evk.dts b/arch/arm64/boot/dts/qcom/lemans-evk.dts
index b40fa203e4a2f080f501140fd1c68b72d797fd00..28bf152f5fa8e8d7779904986da1a5c2f06a5909 100644
--- a/arch/arm64/boot/dts/qcom/lemans-evk.dts
+++ b/arch/arm64/boot/dts/qcom/lemans-evk.dts
@@ -454,6 +454,14 @@ &gpi_dma2 {
status = "okay";
};
+&gpu {
+ status = "okay";
+};
+
+&gpu_zap_shader {
+ firmware-name = "qcom/sa8775p/a663_zap.mbn";
+};
+
&i2c18 {
status = "okay";
--
2.51.0
^ permalink raw reply related [flat|nested] 5+ messages in thread* [PATCH v8 4/4] arm64: dts: qcom: qcs9100-ride: Enable Adreno 663 GPU
2025-11-05 17:11 [PATCH v8 0/4] DRM/MSM: Support for Adreno 663 GPU Akhil P Oommen
` (2 preceding siblings ...)
2025-11-05 17:11 ` [PATCH v8 3/4] arm64: dts: qcom: lemans-evk: Enable Adreno 663 GPU Akhil P Oommen
@ 2025-11-05 17:11 ` Akhil P Oommen
3 siblings, 0 replies; 5+ messages in thread
From: Akhil P Oommen @ 2025-11-05 17:11 UTC (permalink / raw)
To: Sean Paul, Konrad Dybcio, Marijn Suijten, David Airlie,
Simona Vetter, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bjorn Andersson, Connor Abbott, Srinivas Kandagatla, Rob Clark,
Dmitry Baryshkov
Cc: Gaurav Kohli, linux-arm-msm, dri-devel, freedreno, linux-kernel,
devicetree, Dmitry Baryshkov, Akhil P Oommen
Enable GPU on both qcs9100-ride platforms and provide the path
for zap shader.
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
---
arch/arm64/boot/dts/qcom/lemans-ride-common.dtsi | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/lemans-ride-common.dtsi b/arch/arm64/boot/dts/qcom/lemans-ride-common.dtsi
index c69aa2f41ce29f9f841cc6e6651a8efc38690e19..8fb7d1fc6d563288288d24eb5d8288e7748f2c16 100644
--- a/arch/arm64/boot/dts/qcom/lemans-ride-common.dtsi
+++ b/arch/arm64/boot/dts/qcom/lemans-ride-common.dtsi
@@ -436,6 +436,14 @@ vreg_l8e: ldo8 {
};
};
+&gpu {
+ status = "okay";
+};
+
+&gpu_zap_shader {
+ firmware-name = "qcom/sa8775p/a663_zap.mbn";
+};
+
&i2c11 {
clock-frequency = <400000>;
status = "okay";
--
2.51.0
^ permalink raw reply related [flat|nested] 5+ messages in thread