* [PATCH 0/5] drm/msm: Support for GPU in Nord
@ 2026-10-08 21:06 Akhil P Oommen
2026-10-08 21:06 ` [PATCH 1/5] drm/msm/a6xx: Add Adreno 753 support Akhil P Oommen
` (4 more replies)
0 siblings, 5 replies; 9+ messages in thread
From: Akhil P Oommen @ 2026-10-08 21:06 UTC (permalink / raw)
To: Rob Clark, Sean Paul, Konrad Dybcio, Dmitry Baryshkov,
Abhinav Kumar, Jessica Zhang, Marijn Suijten, David Airlie,
Simona Vetter, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bjorn Andersson, Abel Vesa
Cc: linux-arm-msm, dri-devel, freedreno, linux-kernel, devicetree,
Akhil P Oommen, Shivam Rawat, Aastha Pandey
Nord is the first Snapdragon chipset with 2 integrated GPUs. It has
an Adreno 753 GPU which is very similar to the existing A750 (SM8650
chipset) and an Adreno A735 which is similar to the Adreno X1-45 GPU.
This series adds support for the A753 GPU. A735 support will come later
in a separate series.
The driver and dt-bindings patches are for Rob Clark and the devicetree
bits are for Bjorn to pick up.
Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
---
Aastha Pandey (1):
arm64: dts: qcom: nord: Add GPU cooling
Shivam Rawat (4):
drm/msm/a6xx: Add Adreno 753 support
dt-bindings: display/msm: Document Adreno 753 GPU/GMU
arm64: dts: qcom: nord: Add Adreno 753 GPU and GMU nodes
arm64: dts: qcom: nord-rrd: Enable Adreno 753 GPU
.../devicetree/bindings/display/msm/gmu.yaml | 33 +++
.../devicetree/bindings/display/msm/gpu.yaml | 1 +
arch/arm64/boot/dts/qcom/nord-embedded.dtsi | 293 +++++++++++++++++++++
arch/arm64/boot/dts/qcom/nord-rrd.dts | 8 +
arch/arm64/boot/dts/qcom/nord.dtsi | 80 +++---
drivers/gpu/drm/msm/adreno/a6xx_catalog.c | 35 +++
drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 6 +-
drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 5 +-
drivers/gpu/drm/msm/adreno/adreno_gpu.h | 5 +
9 files changed, 423 insertions(+), 43 deletions(-)
---
base-commit: cf4a8255a424f691f95dfa378e88336f33aa8ae4
change-id: 20261008-nord-gpu1-7e71a91ae653
prerequisite-message-id: 20260924084805.1021758-1-shengchao.guo@oss.qualcomm.com
prerequisite-patch-id: 62d07f5574a5d15ac0097efcea4a70dc96331cb3
Best regards,
--
Akhil P Oommen <akhilpo@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 1/5] drm/msm/a6xx: Add Adreno 753 support
2026-10-08 21:06 [PATCH 0/5] drm/msm: Support for GPU in Nord Akhil P Oommen
@ 2026-10-08 21:06 ` Akhil P Oommen
2026-10-08 21:06 ` [PATCH 2/5] dt-bindings: display/msm: Document Adreno 753 GPU/GMU Akhil P Oommen
` (3 subsequent siblings)
4 siblings, 0 replies; 9+ messages in thread
From: Akhil P Oommen @ 2026-10-08 21:06 UTC (permalink / raw)
To: Rob Clark, Sean Paul, Konrad Dybcio, Dmitry Baryshkov,
Abhinav Kumar, Jessica Zhang, Marijn Suijten, David Airlie,
Simona Vetter, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bjorn Andersson, Abel Vesa
Cc: linux-arm-msm, dri-devel, freedreno, linux-kernel, devicetree,
Akhil P Oommen, Shivam Rawat
From: Shivam Rawat <shivrawa@qti.qualcomm.com>
Adreno 753 is the primary GPU in the Qualcomm Nord SoC and belongs to
the A7xx Gen3 family. It is derived from A750 and shares the same
IP-level configuration: protected registers, pwrup/IFPC register lists,
GBIF CX registers, gmu_cgc_mode, 3MB GMEM, bus BCMs and preemption
record size. The differences visible to the KMD are the chip id
(0x43051701), the GMU chip id (0x70d0000) and the gen71300 SQE and GMU
firmware.
The Nord primary GPU is the same as A750 but has a different chip id,
so it needs its own catalog entry. Add a new catalog entry for this
GPU and an adreno_is_a753() helper. HW clock gating is not working at
the moment, so it is kept disabled for now.
Signed-off-by: Shivam Rawat <shivrawa@qti.qualcomm.com>
Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
---
drivers/gpu/drm/msm/adreno/a6xx_catalog.c | 35 +++++++++++++++++++++++++++++++
drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 6 ++++--
drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 5 ++++-
drivers/gpu/drm/msm/adreno/adreno_gpu.h | 5 +++++
4 files changed, 48 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/msm/adreno/a6xx_catalog.c b/drivers/gpu/drm/msm/adreno/a6xx_catalog.c
index 7319f3ed6968..dd198a6e50b2 100644
--- a/drivers/gpu/drm/msm/adreno/a6xx_catalog.c
+++ b/drivers/gpu/drm/msm/adreno/a6xx_catalog.c
@@ -1648,6 +1648,41 @@ static const struct adreno_info a7xx_gpus[] = {
},
},
.preempt_record_size = 3572 * SZ_1K,
+ }, {
+ .chip_ids = ADRENO_CHIP_IDS(0x43051701), /* "C523v2" */
+ .family = ADRENO_7XX_GEN3,
+ .fw = {
+ [ADRENO_FW_SQE] = "gen71300_sqe.fw",
+ [ADRENO_FW_GMU] = "gen71300_gmu.bin",
+ },
+ .gmem = 3 * SZ_1M,
+ .inactive_period = DRM_MSM_INACTIVE_PERIOD,
+ .quirks = ADRENO_QUIRK_HAS_CACHED_COHERENT |
+ ADRENO_QUIRK_HAS_HW_APRIV |
+ ADRENO_QUIRK_PREEMPTION |
+ ADRENO_QUIRK_IFPC,
+ .funcs = &a7xx_gpu_funcs,
+ .a6xx = &(const struct a6xx_info) {
+ .protect = &a730_protect,
+ .pwrup_reglist = &a7xx_pwrup_reglist,
+ .dyn_pwrup_reglist = &a7xx_dyn_pwrup_reglist,
+ .ifpc_reglist = &a750_ifpc_reglist,
+ .gbif_cx = a640_gbif,
+ .gmu_chipid = 0x70d0000,
+ .gmu_cgc_mode = 0x00020202,
+ .bcms = (const struct a6xx_bcm[]) {
+ { .name = "SH0", .buswidth = 16 },
+ { .name = "MC0", .buswidth = 4 },
+ {
+ .name = "ACV",
+ .fixed = true,
+ .perfmode = BIT(2),
+ .perfmode_bw = 10687500,
+ },
+ { /* sentinel */ },
+ },
+ },
+ .preempt_record_size = 3572 * SZ_1K,
}, {
.chip_ids = ADRENO_CHIP_IDS(0x43030c00),
.family = ADRENO_7XX_GEN2,
diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c
index 662f09bec9d5..982c66df7815 100644
--- a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c
+++ b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c
@@ -1045,7 +1045,7 @@ static int a6xx_gmu_fw_start(struct a6xx_gmu *gmu, unsigned int state)
for (int i = 0; (gbif_cx && gbif_cx[i].offset); i++)
gpu_write(gpu, gbif_cx[i].offset, gbif_cx[i].value);
- if (adreno_is_a8xx(adreno_gpu)) {
+ if (adreno_is_a8xx(adreno_gpu) || adreno_is_a753(adreno_gpu)) {
gpu_write(gpu, REG_A6XX_GBIF_CX_CONFIG, 0x20023000);
gmu_write(gmu, REG_A6XX_GMU_MRC_GBIF_QOS_CTRL, 0x33);
} else if (adreno_is_a722(adreno_gpu))
@@ -1221,7 +1221,9 @@ static int a6xx_gmu_secure_init(struct a6xx_gpu *a6xx_gpu)
if (test_bit(GMU_STATUS_SECURE_INIT, &gmu->status))
return 0;
- if (adreno_is_a750(adreno_gpu) || adreno_is_a8xx(adreno_gpu)) {
+ if (adreno_is_a750(adreno_gpu) ||
+ adreno_is_a753(adreno_gpu) ||
+ adreno_is_a8xx(adreno_gpu)) {
/*
* Assume that if qcom scm isn't available, that whatever
* replacement allows writing the fuse register ourselves.
diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c
index 92e8c8abb86d..a34f5f4e8bf8 100644
--- a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c
+++ b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c
@@ -651,6 +651,9 @@ static void a6xx_set_hwcg(struct msm_gpu *gpu, bool state)
if (!(adreno_gpu->info->a6xx->hwcg || adreno_is_a7xx(adreno_gpu)))
return;
+ if (adreno_is_a753(adreno_gpu))
+ state = false;
+
if (adreno_is_a630(adreno_gpu))
clock_cntl_on = 0x8aa8aa02;
else if (adreno_is_a610(adreno_gpu) || adreno_is_a612(adreno_gpu))
@@ -1421,7 +1424,7 @@ static int hw_init(struct msm_gpu *gpu)
BIT(6) | BIT(5) | BIT(3) | BIT(2) | BIT(1));
}
- if (adreno_is_a750(adreno_gpu)) {
+ if (adreno_is_a750(adreno_gpu) || adreno_is_a753(adreno_gpu)) {
/* Disable ubwc merged UFC request feature */
gpu_rmw(gpu, REG_A6XX_RB_CMP_DBG_ECO_CNTL, BIT(19), BIT(19));
diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.h b/drivers/gpu/drm/msm/adreno/adreno_gpu.h
index 6d6e4c7cf919..016a7a7a2ff7 100644
--- a/drivers/gpu/drm/msm/adreno/adreno_gpu.h
+++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.h
@@ -557,6 +557,11 @@ static inline int adreno_is_a750(struct adreno_gpu *gpu)
return gpu->info->chip_ids[0] == 0x43051401;
}
+static inline int adreno_is_a753(struct adreno_gpu *gpu)
+{
+ return gpu->info->chip_ids[0] == 0x43051701;
+}
+
static inline int adreno_is_x185(struct adreno_gpu *gpu)
{
return gpu->info->chip_ids[0] == 0x43050c01;
--
2.55.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/5] dt-bindings: display/msm: Document Adreno 753 GPU/GMU
2026-10-08 21:06 [PATCH 0/5] drm/msm: Support for GPU in Nord Akhil P Oommen
2026-10-08 21:06 ` [PATCH 1/5] drm/msm/a6xx: Add Adreno 753 support Akhil P Oommen
@ 2026-10-08 21:06 ` Akhil P Oommen
2026-10-09 10:46 ` Krzysztof Kozlowski
2026-10-08 21:06 ` [PATCH 3/5] arm64: dts: qcom: nord: Add Adreno 753 GPU and GMU nodes Akhil P Oommen
` (2 subsequent siblings)
4 siblings, 1 reply; 9+ messages in thread
From: Akhil P Oommen @ 2026-10-08 21:06 UTC (permalink / raw)
To: Rob Clark, Sean Paul, Konrad Dybcio, Dmitry Baryshkov,
Abhinav Kumar, Jessica Zhang, Marijn Suijten, David Airlie,
Simona Vetter, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bjorn Andersson, Abel Vesa
Cc: linux-arm-msm, dri-devel, freedreno, linux-kernel, devicetree,
Akhil P Oommen, Shivam Rawat
From: Shivam Rawat <shivrawa@qti.qualcomm.com>
Adreno 753 is the primary GPU in the Qualcomm Nord SoC and belongs to the
A7xx Gen3 family. It is very similar to A750 and has the same register
layout.
Document the qcom,adreno-43051701 GPU compatible and add a separate
constraint block for the qcom,adreno-gmu-753.1 GMU describing its
registers and clocks.
Signed-off-by: Shivam Rawat <shivrawa@qti.qualcomm.com>
Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
---
.../devicetree/bindings/display/msm/gmu.yaml | 33 ++++++++++++++++++++++
.../devicetree/bindings/display/msm/gpu.yaml | 1 +
2 files changed, 34 insertions(+)
diff --git a/Documentation/devicetree/bindings/display/msm/gmu.yaml b/Documentation/devicetree/bindings/display/msm/gmu.yaml
index bc97d0706861..8103973908d9 100644
--- a/Documentation/devicetree/bindings/display/msm/gmu.yaml
+++ b/Documentation/devicetree/bindings/display/msm/gmu.yaml
@@ -305,6 +305,39 @@ allOf:
required:
- qcom,qmp
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: qcom,adreno-gmu-753.1
+ then:
+ properties:
+ reg:
+ items:
+ - description: Core GMU registers
+ - description: Resource controller registers
+ - description: GMU PDC registers
+ reg-names:
+ items:
+ - const: gmu
+ - const: rscc
+ - const: gmu_pdc
+ clocks:
+ items:
+ - description: GPU AHB clock
+ - description: GMU clock
+ - description: GPU CX clock
+ - description: GPU AXI clock
+ - description: GPU MEMNOC clock
+ - description: GMU HUB clock
+ clock-names:
+ items:
+ - const: ahb
+ - const: gmu
+ - const: cxo
+ - const: axi
+ - const: memnoc
+ - const: hub
- if:
properties:
compatible:
diff --git a/Documentation/devicetree/bindings/display/msm/gpu.yaml b/Documentation/devicetree/bindings/display/msm/gpu.yaml
index df21e3acee4a..12555530af5d 100644
--- a/Documentation/devicetree/bindings/display/msm/gpu.yaml
+++ b/Documentation/devicetree/bindings/display/msm/gpu.yaml
@@ -453,6 +453,7 @@ allOf:
- qcom,adreno-43050a01
- qcom,adreno-43050c01
- qcom,adreno-43051401
+ - qcom,adreno-43051701
- qcom,adreno-44010000
- qcom,adreno-44050001
- qcom,adreno-44050a01
--
2.55.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 3/5] arm64: dts: qcom: nord: Add Adreno 753 GPU and GMU nodes
2026-10-08 21:06 [PATCH 0/5] drm/msm: Support for GPU in Nord Akhil P Oommen
2026-10-08 21:06 ` [PATCH 1/5] drm/msm/a6xx: Add Adreno 753 support Akhil P Oommen
2026-10-08 21:06 ` [PATCH 2/5] dt-bindings: display/msm: Document Adreno 753 GPU/GMU Akhil P Oommen
@ 2026-10-08 21:06 ` Akhil P Oommen
2026-10-09 18:48 ` Abel Vesa
2026-10-08 21:06 ` [PATCH 4/5] arm64: dts: qcom: nord: Add GPU cooling Akhil P Oommen
2026-10-08 21:06 ` [PATCH 5/5] arm64: dts: qcom: nord-rrd: Enable Adreno 753 GPU Akhil P Oommen
4 siblings, 1 reply; 9+ messages in thread
From: Akhil P Oommen @ 2026-10-08 21:06 UTC (permalink / raw)
To: Rob Clark, Sean Paul, Konrad Dybcio, Dmitry Baryshkov,
Abhinav Kumar, Jessica Zhang, Marijn Suijten, David Airlie,
Simona Vetter, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bjorn Andersson, Abel Vesa
Cc: linux-arm-msm, dri-devel, freedreno, linux-kernel, devicetree,
Akhil P Oommen, Shivam Rawat
From: Shivam Rawat <shivrawa@qti.qualcomm.com>
Nord SoC integrates an Adreno 753 GPU as its primary GPU, belonging to
the A7xx Gen3 family, along with its Graphics Management Unit (GMU).
Add the GPU and GMU nodes together with their OPP tables. The GPU sits
behind adreno_smmu_0 and uses the gen71300 zap shader, while the GMU is
clocked and powered from GPUCC.
Unlike previous Adreno SoCs, where the GMU AXI clock comes from the
single global clock controller, Nord splits its GCC into four blocks
(GCC, SE_GCC, NE_GCC and NW_GCC). The GPU's AXI clock,
NW_GCC_HSCNOC_GPU_AXI_CLK, is provided by NW_GCC, so the GMU node
references nwgcc directly.
Signed-off-by: Shivam Rawat <shivrawa@qti.qualcomm.com>
Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
---
arch/arm64/boot/dts/qcom/nord-embedded.dtsi | 116 ++++++++++++++++++++++++++++
1 file changed, 116 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/nord-embedded.dtsi b/arch/arm64/boot/dts/qcom/nord-embedded.dtsi
index 1ab7d9bc3cfe..4379092b7bf8 100644
--- a/arch/arm64/boot/dts/qcom/nord-embedded.dtsi
+++ b/arch/arm64/boot/dts/qcom/nord-embedded.dtsi
@@ -776,6 +776,122 @@ hscnoc: interconnect@2000000 {
qcom,bcm-voters = <&apps_bcm_voter>;
};
+ gpu_0: gpu@3d00000 {
+ compatible = "qcom,adreno-43051701", "qcom,adreno";
+ reg = <0x0 0x03d00000 0x0 0x40000>,
+ <0x0 0x03d9e000 0x0 0x2000>,
+ <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 0 0x0>,
+ <&adreno_smmu_0 1 0x0>;
+
+ operating-points-v2 = <&gpu_opp_table_0>;
+
+ qcom,gmu = <&gmu_0>;
+ #cooling-cells = <2>;
+
+ interconnects = <&hscnoc MASTER_GFX3D QCOM_ICC_TAG_ALWAYS
+ &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+ interconnect-names = "gfx-mem";
+
+ status = "disabled";
+
+ gpu_0_zap_shader: zap-shader {
+ memory-region = <&gpu_microcode_mem>;
+ };
+
+ gpu_opp_table_0: opp-table {
+ compatible = "operating-points-v2-adreno",
+ "operating-points-v2";
+
+ opp-468000000 {
+ opp-hz = /bits/ 64 <468000000>;
+ opp-level = <RPMH_REGULATOR_LEVEL_SVS>;
+ opp-peak-kBps = <781250>;
+ };
+
+ opp-625000000 {
+ opp-hz = /bits/ 64 <625000000>;
+ opp-level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
+ opp-peak-kBps = <6075000>;
+ };
+
+ opp-735000000 {
+ opp-hz = /bits/ 64 <735000000>;
+ opp-level = <RPMH_REGULATOR_LEVEL_NOM>;
+ opp-peak-kBps = <8175000>;
+ };
+
+ opp-854000000 {
+ opp-hz = /bits/ 64 <854000000>;
+ opp-level = <RPMH_REGULATOR_LEVEL_TURBO>;
+ opp-peak-kBps = <10687500>;
+ };
+
+ opp-1000000000 {
+ opp-hz = /bits/ 64 <1000000000>;
+ opp-level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
+ opp-peak-kBps = <12450000>;
+ };
+ };
+ };
+
+ gmu_0: gmu@3d6a000 {
+ compatible = "qcom,adreno-gmu-753.1", "qcom,adreno-gmu";
+ reg = <0x0 0x03d6a000 0x0 0x35000>,
+ <0x0 0x03d50000 0x0 0x10000>,
+ <0x0 0x0b2a0000 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_AHB_CLK>,
+ <&gpucc GPU_CC_CX_GMU_CLK>,
+ <&gpucc GPU_CC_CXO_CLK>,
+ <&nwgcc NW_GCC_HSCNOC_GPU_AXI_CLK>,
+ <&gpucc GPU_CC_MEMNOC_GFX_CLK>,
+ <&gpucc GPU_CC_HUB_CX_INT_CLK>;
+ clock-names = "ahb",
+ "gmu",
+ "cxo",
+ "axi",
+ "memnoc",
+ "hub";
+
+ power-domains = <&gpucc GPU_CC_CX_GDSC>,
+ <&gpucc GPU_CC_GX_GDSC>;
+ power-domain-names = "cx",
+ "gx";
+
+ iommus = <&adreno_smmu_0 5 0x0>;
+
+ operating-points-v2 = <&gmu_opp_table_0>;
+
+ gmu_opp_table_0: opp-table {
+ compatible = "operating-points-v2";
+
+ opp-416666000 {
+ opp-hz = /bits/ 64 <416666000>;
+ opp-level = <RPMH_REGULATOR_LEVEL_SVS>;
+ };
+
+ opp-625000000 {
+ opp-hz = /bits/ 64 <625000000>;
+ opp-level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
+ };
+ };
+ };
+
gpucc: clock-controller@3d90000 {
compatible = "qcom,nord-gpucc";
reg = <0x0 0x03d90000 0x0 0x9800>;
--
2.55.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 4/5] arm64: dts: qcom: nord: Add GPU cooling
2026-10-08 21:06 [PATCH 0/5] drm/msm: Support for GPU in Nord Akhil P Oommen
` (2 preceding siblings ...)
2026-10-08 21:06 ` [PATCH 3/5] arm64: dts: qcom: nord: Add Adreno 753 GPU and GMU nodes Akhil P Oommen
@ 2026-10-08 21:06 ` Akhil P Oommen
2026-10-08 21:15 ` sashiko-bot
2026-10-08 21:06 ` [PATCH 5/5] arm64: dts: qcom: nord-rrd: Enable Adreno 753 GPU Akhil P Oommen
4 siblings, 1 reply; 9+ messages in thread
From: Akhil P Oommen @ 2026-10-08 21:06 UTC (permalink / raw)
To: Rob Clark, Sean Paul, Konrad Dybcio, Dmitry Baryshkov,
Abhinav Kumar, Jessica Zhang, Marijn Suijten, David Airlie,
Simona Vetter, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bjorn Andersson, Abel Vesa
Cc: linux-arm-msm, dri-devel, freedreno, linux-kernel, devicetree,
Akhil P Oommen, Aastha Pandey
From: Aastha Pandey <aastha.pandey@oss.qualcomm.com>
Unlike the CPU, the GPU does not throttle its speed automatically when
it reaches high temperatures.
Set up GPU cooling on Nord by throttling the Adreno 753 GPU when it
reaches 105°C. Label the GPU thermal zones and their passive trip
points, map them to the GPU as a cooling device, and add a passive
polling delay so the thermal framework can monitor the zones while
throttling.
Signed-off-by: Aastha Pandey <aastha.pandey@oss.qualcomm.com>
Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
---
arch/arm64/boot/dts/qcom/nord-embedded.dtsi | 177 ++++++++++++++++++++++++++++
arch/arm64/boot/dts/qcom/nord.dtsi | 80 ++++++-------
2 files changed, 217 insertions(+), 40 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/nord-embedded.dtsi b/arch/arm64/boot/dts/qcom/nord-embedded.dtsi
index 4379092b7bf8..23370007c974 100644
--- a/arch/arm64/boot/dts/qcom/nord-embedded.dtsi
+++ b/arch/arm64/boot/dts/qcom/nord-embedded.dtsi
@@ -17,6 +17,7 @@
#include <dt-bindings/interconnect/qcom,nord-rpmh.h>
#include <dt-bindings/power/qcom,rpmhpd.h>
#include <dt-bindings/soc/qcom,rpmh-rsc.h>
+#include <dt-bindings/thermal/thermal.h>
#include "nord.dtsi"
@@ -2042,3 +2043,179 @@ opp-403000000 {
};
};
};
+
+&gpu_0_0_0_thermal {
+ polling-delay-passive = <10>;
+
+ cooling-maps {
+ map0 {
+ trip = <&gpu_0_0_0_alert0>;
+ cooling-device = <&gpu_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+};
+
+&gpu_0_0_1_thermal {
+ polling-delay-passive = <10>;
+
+ cooling-maps {
+ map0 {
+ trip = <&gpu_0_0_1_alert0>;
+ cooling-device = <&gpu_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+};
+
+&gpu_0_1_0_thermal {
+ polling-delay-passive = <10>;
+
+ cooling-maps {
+ map0 {
+ trip = <&gpu_0_1_0_alert0>;
+ cooling-device = <&gpu_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+};
+
+&gpu_0_1_1_thermal {
+ polling-delay-passive = <10>;
+
+ cooling-maps {
+ map0 {
+ trip = <&gpu_0_1_1_alert0>;
+ cooling-device = <&gpu_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+};
+
+&gpuss_0_1_0_thermal {
+ polling-delay-passive = <10>;
+
+ cooling-maps {
+ map0 {
+ trip = <&gpuss_0_1_0_alert0>;
+ cooling-device = <&gpu_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+};
+
+&gpuss_0_1_1_thermal {
+ polling-delay-passive = <10>;
+
+ cooling-maps {
+ map0 {
+ trip = <&gpuss_0_1_1_alert0>;
+ cooling-device = <&gpu_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+};
+
+&gpuss_0_1_thermal {
+ polling-delay-passive = <10>;
+
+ cooling-maps {
+ map0 {
+ trip = <&gpuss_0_1_alert0>;
+ cooling-device = <&gpu_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+};
+
+&gpuss_0_thermal {
+ polling-delay-passive = <10>;
+
+ cooling-maps {
+ map0 {
+ trip = <&gpuss0_alert0>;
+ cooling-device = <&gpu_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+};
+
+&gpuss_1_0_1_thermal {
+ polling-delay-passive = <10>;
+
+ cooling-maps {
+ map0 {
+ trip = <&gpuss_1_0_1_alert0>;
+ cooling-device = <&gpu_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+};
+
+&gpuss_1_1_0_thermal {
+ polling-delay-passive = <10>;
+
+ cooling-maps {
+ map0 {
+ trip = <&gpuss_1_1_0_alert0>;
+ cooling-device = <&gpu_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+};
+
+&gpuss_1_1_1_thermal {
+ polling-delay-passive = <10>;
+
+ cooling-maps {
+ map0 {
+ trip = <&gpuss_1_1_1_alert0>;
+ cooling-device = <&gpu_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+};
+
+&gpuss_1_thermal {
+ polling-delay-passive = <10>;
+
+ cooling-maps {
+ map0 {
+ trip = <&gpuss1_alert0>;
+ cooling-device = <&gpu_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+};
+
+&gpuss_2_0_1_thermal {
+ polling-delay-passive = <10>;
+
+ cooling-maps {
+ map0 {
+ trip = <&gpuss_2_0_1_alert0>;
+ cooling-device = <&gpu_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+};
+
+&gpuss_2_1_0_thermal {
+ polling-delay-passive = <10>;
+
+ cooling-maps {
+ map0 {
+ trip = <&gpuss_2_1_0_alert0>;
+ cooling-device = <&gpu_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+};
+
+&gpuss_2_1_1_thermal {
+ polling-delay-passive = <10>;
+
+ cooling-maps {
+ map0 {
+ trip = <&gpuss_2_1_1_alert0>;
+ cooling-device = <&gpu_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+};
+
+&gpuss_2_thermal {
+ polling-delay-passive = <10>;
+
+ cooling-maps {
+ map0 {
+ trip = <&gpuss2_alert0>;
+ cooling-device = <&gpu_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/nord.dtsi b/arch/arm64/boot/dts/qcom/nord.dtsi
index 147d8e595a3a..b032d1d2ad9b 100644
--- a/arch/arm64/boot/dts/qcom/nord.dtsi
+++ b/arch/arm64/boot/dts/qcom/nord.dtsi
@@ -4101,13 +4101,13 @@ trip-point1 {
};
};
- gpuss-0-thermal {
+ gpuss_0_thermal: gpuss-0-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens6 1>;
trips {
- trip-point0 {
+ gpuss0_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4121,13 +4121,13 @@ trip-point1 {
};
};
- gpuss-1-thermal {
+ gpuss_1_thermal: gpuss-1-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens6 2>;
trips {
- trip-point0 {
+ gpuss1_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4141,13 +4141,13 @@ trip-point1 {
};
};
- gpuss-2-thermal {
+ gpuss_2_thermal: gpuss-2-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens6 3>;
trips {
- trip-point0 {
+ gpuss2_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4161,13 +4161,13 @@ trip-point1 {
};
};
- gpu-0-0-0-thermal {
+ gpu_0_0_0_thermal: gpu-0-0-0-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens6 4>;
trips {
- trip-point0 {
+ gpu_0_0_0_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4181,13 +4181,13 @@ trip-point1 {
};
};
- gpuss-1-0-thermal {
+ gpuss_1_0_thermal: gpuss-1-0-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens6 5>;
trips {
- trip-point0 {
+ gpuss_1_0_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4201,13 +4201,13 @@ trip-point1 {
};
};
- gpuss-1-1-thermal {
+ gpuss_1_1_thermal: gpuss-1-1-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens6 6>;
trips {
- trip-point0 {
+ gpuss_1_1_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4321,13 +4321,13 @@ trip-point1 {
};
};
- gpuss-0-1-1-thermal {
+ gpuss_0_1_1_thermal: gpuss-0-1-1-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens6 12>;
trips {
- trip-point0 {
+ gpuss_0_1_1_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4341,13 +4341,13 @@ trip-point1 {
};
};
- gpuss-1-1-1-thermal {
+ gpuss_1_1_1_thermal: gpuss-1-1-1-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens6 13>;
trips {
- trip-point0 {
+ gpuss_1_1_1_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4361,13 +4361,13 @@ trip-point1 {
};
};
- gpuss-2-1-1-thermal {
+ gpuss_2_1_1_thermal: gpuss-2-1-1-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens6 14>;
trips {
- trip-point0 {
+ gpuss_2_1_1_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4381,13 +4381,13 @@ trip-point1 {
};
};
- gpu-0-1-1-thermal {
+ gpu_0_1_1_thermal: gpu-0-1-1-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens6 15>;
trips {
- trip-point0 {
+ gpu_0_1_1_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4421,13 +4421,13 @@ trip-point1 {
};
};
- gpuss-0-1-0-thermal {
+ gpuss_0_1_0_thermal: gpuss-0-1-0-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens7 1>;
trips {
- trip-point0 {
+ gpuss_0_1_0_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4441,13 +4441,13 @@ trip-point1 {
};
};
- gpuss-1-1-0-thermal {
+ gpuss_1_1_0_thermal: gpuss-1-1-0-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens7 2>;
trips {
- trip-point0 {
+ gpuss_1_1_0_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4461,13 +4461,13 @@ trip-point1 {
};
};
- gpuss-2-1-0-thermal {
+ gpuss_2_1_0_thermal: gpuss-2-1-0-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens7 3>;
trips {
- trip-point0 {
+ gpuss_2_1_0_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4481,13 +4481,13 @@ trip-point1 {
};
};
- gpu-0-1-0-thermal {
+ gpu_0_1_0_thermal: gpu-0-1-0-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens7 4>;
trips {
- trip-point0 {
+ gpu_0_1_0_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4501,13 +4501,13 @@ trip-point1 {
};
};
- gpuss-1-2-thermal {
+ gpuss_1_2_thermal: gpuss-1-2-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens7 5>;
trips {
- trip-point0 {
+ gpuss_1_2_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4521,13 +4521,13 @@ trip-point1 {
};
};
- gpu-1-0-thermal {
+ gpu_1_0_thermal: gpu-1-0-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens7 6>;
trips {
- trip-point0 {
+ gpu_1_0_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4641,13 +4641,13 @@ trip-point1 {
};
};
- gpuss-0-1-thermal {
+ gpuss_0_1_thermal: gpuss-0-1-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens7 12>;
trips {
- trip-point0 {
+ gpuss_0_1_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4661,13 +4661,13 @@ trip-point1 {
};
};
- gpuss-1-0-1-thermal {
+ gpuss_1_0_1_thermal: gpuss-1-0-1-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens7 13>;
trips {
- trip-point0 {
+ gpuss_1_0_1_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4681,13 +4681,13 @@ trip-point1 {
};
};
- gpuss-2-0-1-thermal {
+ gpuss_2_0_1_thermal: gpuss-2-0-1-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens7 14>;
trips {
- trip-point0 {
+ gpuss_2_0_1_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
@@ -4701,13 +4701,13 @@ trip-point1 {
};
};
- gpu-0-0-1-thermal {
+ gpu_0_0_1_thermal: gpu-0-0-1-thermal {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&tsens7 15>;
trips {
- trip-point0 {
+ gpu_0_0_1_alert0: trip-point0 {
temperature = <105000>;
hysteresis = <10000>;
type = "passive";
--
2.55.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 5/5] arm64: dts: qcom: nord-rrd: Enable Adreno 753 GPU
2026-10-08 21:06 [PATCH 0/5] drm/msm: Support for GPU in Nord Akhil P Oommen
` (3 preceding siblings ...)
2026-10-08 21:06 ` [PATCH 4/5] arm64: dts: qcom: nord: Add GPU cooling Akhil P Oommen
@ 2026-10-08 21:06 ` Akhil P Oommen
4 siblings, 0 replies; 9+ messages in thread
From: Akhil P Oommen @ 2026-10-08 21:06 UTC (permalink / raw)
To: Rob Clark, Sean Paul, Konrad Dybcio, Dmitry Baryshkov,
Abhinav Kumar, Jessica Zhang, Marijn Suijten, David Airlie,
Simona Vetter, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bjorn Andersson, Abel Vesa
Cc: linux-arm-msm, dri-devel, freedreno, linux-kernel, devicetree,
Akhil P Oommen, Shivam Rawat
From: Shivam Rawat <shivrawa@qti.qualcomm.com>
Enable the Adreno 753 GPU on the Nord RRD board and provide the
firmware path for its zap shader.
Signed-off-by: Shivam Rawat <shivrawa@qti.qualcomm.com>
Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
---
arch/arm64/boot/dts/qcom/nord-rrd.dts | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/nord-rrd.dts b/arch/arm64/boot/dts/qcom/nord-rrd.dts
index 3673003c8b21..8f215bd04fff 100644
--- a/arch/arm64/boot/dts/qcom/nord-rrd.dts
+++ b/arch/arm64/boot/dts/qcom/nord-rrd.dts
@@ -364,6 +364,14 @@ vreg_l3l_1p8: ldo3 {
};
};
+&gpu_0 {
+ status = "okay";
+};
+
+&gpu_0_zap_shader {
+ firmware-name = "qcom/nord/gen71300_zap.mbn";
+};
+
&i2c7 {
clock-frequency = <400000>;
--
2.55.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 4/5] arm64: dts: qcom: nord: Add GPU cooling
2026-10-08 21:06 ` [PATCH 4/5] arm64: dts: qcom: nord: Add GPU cooling Akhil P Oommen
@ 2026-10-08 21:15 ` sashiko-bot
0 siblings, 0 replies; 9+ messages in thread
From: sashiko-bot @ 2026-10-08 21:15 UTC (permalink / raw)
To: Akhil P Oommen; +Cc: conor+dt, dri-devel, robh, devicetree
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] dts: missing cooling-device mappings for 4 GPU thermal zones
--
commit be1fe5e4df785d4f2fc715cc8d3e734547b71199
Author: Aastha Pandey <aastha.pandey@oss.qualcomm.com>
arm64: dts: qcom: nord: Add GPU cooling
This commit sets up GPU cooling on Nord by throttling the Adreno 753 GPU
when it reaches 105C. It labels the GPU thermal zones and their passive trip
points, maps them to the GPU as a cooling device, and adds polling delays.
> diff --git a/arch/arm64/boot/dts/qcom/nord-embedded.dtsi b/arch/arm64/boot/dts/qcom/nord-embedded.dtsi
> index 4379092b7bf8d..23370007c9748 100644
> --- a/arch/arm64/boot/dts/qcom/nord-embedded.dtsi
> +++ b/arch/arm64/boot/dts/qcom/nord-embedded.dtsi
[ ... ]
> +&gpuss_2_thermal {
> + polling-delay-passive = <10>;
> +
> + cooling-maps {
> + map0 {
> + trip = <&gpuss2_alert0>;
> + cooling-device = <&gpu_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
> + };
> + };
> +};
[Severity: Medium]
Are the cooling device mappings for the gpuss_1_0_thermal, gpuss_1_1_thermal,
gpuss_1_2_thermal, and gpu_1_0_thermal zones intentionally omitted from this
list?
If a sustained GPU workload creates hotspots near these unmapped sensors,
localized heating will not trigger GPU throttling. This could allow the SoC
to reach unsafe temperature thresholds and trigger a hardware shutdown
before the adjacent mapped sensors become hot enough to intervene.
These zones and their trip points are explicitly labeled in the nord.dtsi
changes below, which suggests they should have cooling maps defined alongside
the other zones.
> diff --git a/arch/arm64/boot/dts/qcom/nord.dtsi b/arch/arm64/boot/dts/qcom/nord.dtsi
> index 147d8e595a3a3..b032d1d2ad9b6 100644
> --- a/arch/arm64/boot/dts/qcom/nord.dtsi
> +++ b/arch/arm64/boot/dts/qcom/nord.dtsi
[ ... ]
> - gpuss-1-0-thermal {
> + gpuss_1_0_thermal: gpuss-1-0-thermal {
> polling-delay-passive = <0>;
> polling-delay = <0>;
> thermal-sensors = <&tsens6 5>;
[ ... ]
> - gpuss-1-1-thermal {
> + gpuss_1_1_thermal: gpuss-1-1-thermal {
> polling-delay-passive = <0>;
> polling-delay = <0>;
> thermal-sensors = <&tsens6 6>;
[ ... ]
> - gpuss-1-2-thermal {
> + gpuss_1_2_thermal: gpuss-1-2-thermal {
> polling-delay-passive = <0>;
> polling-delay = <0>;
> thermal-sensors = <&tsens7 5>;
[ ... ]
> - gpu-1-0-thermal {
> + gpu_1_0_thermal: gpu-1-0-thermal {
> polling-delay-passive = <0>;
> polling-delay = <0>;
> thermal-sensors = <&tsens7 6>;
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261009-nord-gpu1-v1-0-a06a6c57bde7@oss.qualcomm.com?part=4
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/5] dt-bindings: display/msm: Document Adreno 753 GPU/GMU
2026-10-08 21:06 ` [PATCH 2/5] dt-bindings: display/msm: Document Adreno 753 GPU/GMU Akhil P Oommen
@ 2026-10-09 10:46 ` Krzysztof Kozlowski
0 siblings, 0 replies; 9+ messages in thread
From: Krzysztof Kozlowski @ 2026-10-09 10:46 UTC (permalink / raw)
To: Akhil P Oommen
Cc: Rob Clark, Sean Paul, Konrad Dybcio, Dmitry Baryshkov,
Abhinav Kumar, Jessica Zhang, Marijn Suijten, David Airlie,
Simona Vetter, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bjorn Andersson, Abel Vesa, linux-arm-msm, dri-devel, freedreno,
linux-kernel, devicetree, Shivam Rawat
On Fri, Oct 09, 2026 at 02:36:36AM +0530, Akhil P Oommen wrote:
> From: Shivam Rawat <shivrawa@qti.qualcomm.com>
>
> Adreno 753 is the primary GPU in the Qualcomm Nord SoC and belongs to the
> A7xx Gen3 family. It is very similar to A750 and has the same register
> layout.
>
> Document the qcom,adreno-43051701 GPU compatible and add a separate
> constraint block for the qcom,adreno-gmu-753.1 GMU describing its
> registers and clocks.
>
> Signed-off-by: Shivam Rawat <shivrawa@qti.qualcomm.com>
> Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
> ---
> .../devicetree/bindings/display/msm/gmu.yaml | 33 ++++++++++++++++++++++
> .../devicetree/bindings/display/msm/gpu.yaml | 1 +
> 2 files changed, 34 insertions(+)
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 3/5] arm64: dts: qcom: nord: Add Adreno 753 GPU and GMU nodes
2026-10-08 21:06 ` [PATCH 3/5] arm64: dts: qcom: nord: Add Adreno 753 GPU and GMU nodes Akhil P Oommen
@ 2026-10-09 18:48 ` Abel Vesa
0 siblings, 0 replies; 9+ messages in thread
From: Abel Vesa @ 2026-10-09 18:48 UTC (permalink / raw)
To: Akhil P Oommen
Cc: Rob Clark, Sean Paul, Konrad Dybcio, Dmitry Baryshkov,
Abhinav Kumar, Jessica Zhang, Marijn Suijten, David Airlie,
Simona Vetter, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bjorn Andersson, Abel Vesa, linux-arm-msm, dri-devel, freedreno,
linux-kernel, devicetree, Shivam Rawat
On 26-10-09 02:36:37, Akhil P Oommen wrote:
> From: Shivam Rawat <shivrawa@qti.qualcomm.com>
>
> Nord SoC integrates an Adreno 753 GPU as its primary GPU, belonging to
> the A7xx Gen3 family, along with its Graphics Management Unit (GMU).
>
> Add the GPU and GMU nodes together with their OPP tables. The GPU sits
> behind adreno_smmu_0 and uses the gen71300 zap shader, while the GMU is
> clocked and powered from GPUCC.
>
> Unlike previous Adreno SoCs, where the GMU AXI clock comes from the
> single global clock controller, Nord splits its GCC into four blocks
> (GCC, SE_GCC, NE_GCC and NW_GCC). The GPU's AXI clock,
> NW_GCC_HSCNOC_GPU_AXI_CLK, is provided by NW_GCC, so the GMU node
> references nwgcc directly.
>
> Signed-off-by: Shivam Rawat <shivrawa@qti.qualcomm.com>
> Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2026-10-09 18:48 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-08 21:06 [PATCH 0/5] drm/msm: Support for GPU in Nord Akhil P Oommen
2026-10-08 21:06 ` [PATCH 1/5] drm/msm/a6xx: Add Adreno 753 support Akhil P Oommen
2026-10-08 21:06 ` [PATCH 2/5] dt-bindings: display/msm: Document Adreno 753 GPU/GMU Akhil P Oommen
2026-10-09 10:46 ` Krzysztof Kozlowski
2026-10-08 21:06 ` [PATCH 3/5] arm64: dts: qcom: nord: Add Adreno 753 GPU and GMU nodes Akhil P Oommen
2026-10-09 18:48 ` Abel Vesa
2026-10-08 21:06 ` [PATCH 4/5] arm64: dts: qcom: nord: Add GPU cooling Akhil P Oommen
2026-10-08 21:15 ` sashiko-bot
2026-10-08 21:06 ` [PATCH 5/5] arm64: dts: qcom: nord-rrd: Enable Adreno 753 GPU Akhil P Oommen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox