* [PATCH v2 0/6] Support for Adreno 612 GPU - Respin
@ 2025-11-06 20:50 Akhil P Oommen
2025-11-06 20:50 ` [PATCH v2 1/6] drm/msm/a6xx: Add support for Adreno 612 Akhil P Oommen
` (7 more replies)
0 siblings, 8 replies; 23+ messages in thread
From: Akhil P Oommen @ 2025-11-06 20:50 UTC (permalink / raw)
To: Rob Clark, Sean Paul, Konrad Dybcio, Dmitry Baryshkov,
Abhinav Kumar, Marijn Suijten, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Jessica Zhang
Cc: Dan Carpenter, linux-arm-msm, dri-devel, freedreno, linux-kernel,
devicetree, Akhil P Oommen, Jie Zhang, Jie Zhang, Qingqing Zhou,
Konrad Dybcio
This is a respin of an old series [1] that aimed to add support for
Adreno 612 GPU found in SM6150/QCS615 chipsets. In this version, we
have consolidated the previously separate series for DT and driver
support, along with some significant rework.
Regarding A612 GPU, it falls under ADRENO_6XX_GEN1 family and is a cut
down version of A615 GPU. A612 has a new IP called Reduced Graphics
Management Unit or RGMU, a small state machine which helps to toggle
GX GDSC (connected to CX rail) to implement the IFPC feature. Unlike a
full-fledged GMU, the RGMU does not support features such as clock
control, resource voting via RPMh, HFI etc. Therefore, we require linux
clock driver support similar to gmu-wrapper implementations to control
gpu core clock and GX GDSC.
In this series, the description of RGMU hardware in devicetree is more
complete than in previous version. However, the RGMU core is not
initialized from the driver as there is currently no need for it. We do
perform a dummy load of RGMU firmware (now available in linux-firmware)
to ensure that enabling RGMU core in the future won't break backward
compatibility for users.
Due to significant changes compared to the old series, all R-b tags have
been dropped. Please review with fresh eyes.
Last 3 patches are for Bjorn and the rest are for Rob Clark for pick up.
[1] Driver: https://lore.kernel.org/lkml/20241213-a612-gpu-support-v3-1-0e9b25570a69@quicinc.com/
Devicetree: https://lore.kernel.org/lkml/fu4rayftf3i4arf6l6bzqyzsctomglhpiniljkeuj74ftvzlpo@vklca2giwjlw/
Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
---
Changes in v2:
- Rebased on next-20251105
- Fix hwcg configuration (Dan)
- Reuse a few gmu-wrapper routines (Konrad)
- Split out rgmu dt schema (Krzysztof/Dmitry)
- Fixes for GPU dt binding doc (Krzysztof)
- Removed VDD_CX from rgmu dt node. Will post a separate series to
address the gpucc changes (Konrad)
- Fix the reg range size for adreno smmu node and reorder the properties (Konrad)
- Link to v1: https://lore.kernel.org/r/20251017-qcs615-spin-2-v1-0-0baa44f80905@oss.qualcomm.com
---
Akhil P Oommen (1):
dt-bindings: display/msm: gpu: Document A612 GPU
Jie Zhang (4):
drm/msm/a6xx: Add support for Adreno 612
dt-bindings: display/msm/rgmu: Document A612 RGMU
arm64: dts: qcom: sm6150: Add gpu and rgmu nodes
arm64: dts: qcom: qcs615-ride: Enable Adreno 612 GPU
Qingqing Zhou (1):
arm64: dts: qcom: sm6150: add the GPU SMMU node
.../devicetree/bindings/display/msm/gpu.yaml | 32 ++++-
.../devicetree/bindings/display/msm/rgmu.yaml | 131 +++++++++++++++++++
MAINTAINERS | 1 +
arch/arm64/boot/dts/qcom/qcs615-ride.dts | 8 ++
arch/arm64/boot/dts/qcom/talos.dtsi | 138 +++++++++++++++++++++
drivers/gpu/drm/msm/adreno/a6xx_catalog.c | 16 +++
drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 23 +++-
drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 45 +++++--
drivers/gpu/drm/msm/adreno/a6xx_gpu_state.c | 3 +-
drivers/gpu/drm/msm/adreno/adreno_gpu.c | 1 +
drivers/gpu/drm/msm/adreno/adreno_gpu.h | 16 ++-
11 files changed, 398 insertions(+), 16 deletions(-)
---
base-commit: 185cd3dc1a12b97194a62eba9d217d280ef74135
change-id: 20251015-qcs615-spin-2-ed45b0deb998
Best regards,
--
Akhil P Oommen <akhilpo@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH v2 1/6] drm/msm/a6xx: Add support for Adreno 612
2025-11-06 20:50 [PATCH v2 0/6] Support for Adreno 612 GPU - Respin Akhil P Oommen
@ 2025-11-06 20:50 ` Akhil P Oommen
2025-11-07 8:58 ` Konrad Dybcio
2025-11-06 20:50 ` [PATCH v2 2/6] dt-bindings: display/msm: gpu: Document A612 GPU Akhil P Oommen
` (6 subsequent siblings)
7 siblings, 1 reply; 23+ messages in thread
From: Akhil P Oommen @ 2025-11-06 20:50 UTC (permalink / raw)
To: Rob Clark, Sean Paul, Konrad Dybcio, Dmitry Baryshkov,
Abhinav Kumar, Marijn Suijten, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Jessica Zhang
Cc: Dan Carpenter, linux-arm-msm, dri-devel, freedreno, linux-kernel,
devicetree, Akhil P Oommen, Jie Zhang
From: Jie Zhang <quic_jiezh@quicinc.com>
Add support for Adreno 612 GPU found in SM6150/QCS615 chipsets.
A612 falls under ADRENO_6XX_GEN1 family and is a cut down version
of A615 GPU.
A612 has a new IP called Reduced Graphics Management Unit or RGMU
which is a small state machine which helps to toggle GX GDSC
(connected to CX rail) to implement IFPC feature. It doesn't support
any other features of a full fledged GMU like clock control, resource
voting to rpmh etc. So we need linux clock driver support like other
gmu-wrapper implementations to control gpu core clock and gpu GX gdsc.
This patch skips RGMU core initialization and act more like a
gmu-wrapper case.
Signed-off-by: Jie Zhang <quic_jiezh@quicinc.com>
Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
---
drivers/gpu/drm/msm/adreno/a6xx_catalog.c | 16 ++++++++++
drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 23 ++++++++++++++-
drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 45 +++++++++++++++++++++++------
drivers/gpu/drm/msm/adreno/a6xx_gpu_state.c | 3 +-
drivers/gpu/drm/msm/adreno/adreno_gpu.c | 1 +
drivers/gpu/drm/msm/adreno/adreno_gpu.h | 16 ++++++++--
6 files changed, 90 insertions(+), 14 deletions(-)
diff --git a/drivers/gpu/drm/msm/adreno/a6xx_catalog.c b/drivers/gpu/drm/msm/adreno/a6xx_catalog.c
index 44df6410bce1..5db01fa2ed44 100644
--- a/drivers/gpu/drm/msm/adreno/a6xx_catalog.c
+++ b/drivers/gpu/drm/msm/adreno/a6xx_catalog.c
@@ -705,6 +705,22 @@ static const struct adreno_info a6xx_gpus[] = {
{ 157, 3 },
{ 127, 4 },
),
+ }, {
+ .chip_ids = ADRENO_CHIP_IDS(0x06010200),
+ .family = ADRENO_6XX_GEN1,
+ .fw = {
+ [ADRENO_FW_SQE] = "a630_sqe.fw",
+ [ADRENO_FW_GMU] = "a612_rgmu.bin",
+ },
+ .gmem = (SZ_128K + SZ_4K),
+ .inactive_period = DRM_MSM_INACTIVE_PERIOD,
+ .init = a6xx_gpu_init,
+ .a6xx = &(const struct a6xx_info) {
+ .hwcg = a612_hwcg,
+ .protect = &a630_protect,
+ .gmu_cgc_mode = 0x00000022,
+ .prim_fifo_threshold = 0x00080000,
+ },
}, {
.chip_ids = ADRENO_CHIP_IDS(0x06010500),
.family = ADRENO_6XX_GEN1,
diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c
index 4e6dc16e4a4c..d9ffe9e93ad9 100644
--- a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c
+++ b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c
@@ -350,12 +350,18 @@ static const struct a6xx_gmu_oob_bits a6xx_gmu_oob_bits[] = {
/* Trigger a OOB (out of band) request to the GMU */
int a6xx_gmu_set_oob(struct a6xx_gmu *gmu, enum a6xx_gmu_oob_state state)
{
+ struct a6xx_gpu *a6xx_gpu = container_of(gmu, struct a6xx_gpu, gmu);
+ struct adreno_gpu *adreno_gpu = &a6xx_gpu->base;
int ret;
u32 val;
int request, ack;
WARN_ON_ONCE(!mutex_is_locked(&gmu->lock));
+ /* Skip OOB calls since RGMU is not enabled */
+ if (adreno_has_rgmu(adreno_gpu))
+ return 0;
+
if (state >= ARRAY_SIZE(a6xx_gmu_oob_bits))
return -EINVAL;
@@ -395,10 +401,16 @@ int a6xx_gmu_set_oob(struct a6xx_gmu *gmu, enum a6xx_gmu_oob_state state)
/* Clear a pending OOB state in the GMU */
void a6xx_gmu_clear_oob(struct a6xx_gmu *gmu, enum a6xx_gmu_oob_state state)
{
+ struct a6xx_gpu *a6xx_gpu = container_of(gmu, struct a6xx_gpu, gmu);
+ struct adreno_gpu *adreno_gpu = &a6xx_gpu->base;
int bit;
WARN_ON_ONCE(!mutex_is_locked(&gmu->lock));
+ /* Skip OOB calls since RGMU is not enabled */
+ if (adreno_has_rgmu(adreno_gpu))
+ return;
+
if (state >= ARRAY_SIZE(a6xx_gmu_oob_bits))
return;
@@ -1900,7 +1912,8 @@ void a6xx_gmu_remove(struct a6xx_gpu *a6xx_gpu)
gmu->mmio = NULL;
gmu->rscc = NULL;
- if (!adreno_has_gmu_wrapper(adreno_gpu)) {
+ if (!adreno_has_gmu_wrapper(adreno_gpu) &&
+ !adreno_has_rgmu(adreno_gpu)) {
a6xx_gmu_memory_free(gmu);
free_irq(gmu->gmu_irq, gmu);
@@ -1942,6 +1955,13 @@ int a6xx_gmu_wrapper_init(struct a6xx_gpu *a6xx_gpu, struct device_node *node)
/* Mark legacy for manual SPTPRAC control */
gmu->legacy = true;
+ /* RGMU requires clocks */
+ ret = devm_clk_bulk_get_all(gmu->dev, &gmu->clocks);
+ if (ret < 0)
+ goto err_clk;
+
+ gmu->nr_clocks = ret;
+
/* Map the GMU registers */
gmu->mmio = a6xx_gmu_get_mmio(pdev, "gmu");
if (IS_ERR(gmu->mmio)) {
@@ -1981,6 +2001,7 @@ int a6xx_gmu_wrapper_init(struct a6xx_gpu *a6xx_gpu, struct device_node *node)
err_mmio:
iounmap(gmu->mmio);
+err_clk:
/* Drop reference taken in of_find_device_by_node */
put_device(gmu->dev);
diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c
index b8f8ae940b55..779c1da7c46d 100644
--- a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c
+++ b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c
@@ -612,15 +612,26 @@ static void a6xx_set_hwcg(struct msm_gpu *gpu, bool state)
if (adreno_is_a630(adreno_gpu))
clock_cntl_on = 0x8aa8aa02;
- else if (adreno_is_a610(adreno_gpu))
+ else if (adreno_is_a610(adreno_gpu) || adreno_is_a612(adreno_gpu))
clock_cntl_on = 0xaaa8aa82;
else if (adreno_is_a702(adreno_gpu))
clock_cntl_on = 0xaaaaaa82;
else
clock_cntl_on = 0x8aa8aa82;
- cgc_delay = adreno_is_a615_family(adreno_gpu) ? 0x111 : 0x10111;
- cgc_hyst = adreno_is_a615_family(adreno_gpu) ? 0x555 : 0x5555;
+ if (adreno_is_a612(adreno_gpu))
+ cgc_delay = 0x11;
+ else if (adreno_is_a615_family(adreno_gpu))
+ cgc_delay = 0x111;
+ else
+ cgc_delay = 0x10111;
+
+ if (adreno_is_a612(adreno_gpu))
+ cgc_hyst = 0x55;
+ else if (adreno_is_a615_family(adreno_gpu))
+ cgc_hyst = 0x555;
+ else
+ cgc_hyst = 0x5555;
gmu_write(&a6xx_gpu->gmu, REG_A6XX_GPU_GMU_AO_GMU_CGC_MODE_CNTL,
state ? adreno_gpu->info->a6xx->gmu_cgc_mode : 0);
@@ -714,6 +725,9 @@ static int a6xx_calc_ubwc_config(struct adreno_gpu *gpu)
cfg->ubwc_swizzle = 0x7;
}
+ if (adreno_is_a612(gpu))
+ cfg->highest_bank_bit = 14;
+
if (adreno_is_a618(gpu))
cfg->highest_bank_bit = 14;
@@ -1288,7 +1302,7 @@ static int hw_init(struct msm_gpu *gpu)
gpu_write(gpu, REG_A6XX_CP_LPAC_PROG_FIFO_SIZE, 0x00000020);
/* Setting the mem pool size */
- if (adreno_is_a610(adreno_gpu)) {
+ if (adreno_is_a610(adreno_gpu) || adreno_is_a612(adreno_gpu)) {
gpu_write(gpu, REG_A6XX_CP_MEM_POOL_SIZE, 48);
gpu_write(gpu, REG_A6XX_CP_MEM_POOL_DBG_ADDR, 47);
} else if (adreno_is_a702(adreno_gpu)) {
@@ -1321,7 +1335,8 @@ static int hw_init(struct msm_gpu *gpu)
a6xx_set_ubwc_config(gpu);
/* Enable fault detection */
- if (adreno_is_a730(adreno_gpu) ||
+ if (adreno_is_a612(adreno_gpu) ||
+ adreno_is_a730(adreno_gpu) ||
adreno_is_a740_family(adreno_gpu))
gpu_write(gpu, REG_A6XX_RBBM_INTERFACE_HANG_INT_CNTL, (1 << 30) | 0xcfffff);
else if (adreno_is_a690(adreno_gpu))
@@ -1576,7 +1591,7 @@ static void a6xx_recover(struct msm_gpu *gpu)
*/
gpu->active_submits = 0;
- if (adreno_has_gmu_wrapper(adreno_gpu)) {
+ if (adreno_has_gmu_wrapper(adreno_gpu) || adreno_has_rgmu(adreno_gpu)) {
/* Drain the outstanding traffic on memory buses */
a6xx_bus_clear_pending_transactions(adreno_gpu, true);
@@ -2229,6 +2244,12 @@ static int a6xx_pm_resume(struct msm_gpu *gpu)
if (ret)
goto err_bulk_clk;
+ ret = clk_bulk_prepare_enable(gmu->nr_clocks, gmu->clocks);
+ if (ret) {
+ clk_bulk_disable_unprepare(gpu->nr_clocks, gpu->grp_clks);
+ goto err_bulk_clk;
+ }
+
if (adreno_is_a619_holi(adreno_gpu))
a6xx_sptprac_enable(gmu);
@@ -2242,8 +2263,10 @@ static int a6xx_pm_resume(struct msm_gpu *gpu)
err_set_opp:
mutex_unlock(&a6xx_gpu->gmu.lock);
- if (!ret)
+ if (!ret) {
msm_devfreq_resume(gpu);
+ a6xx_llc_activate(a6xx_gpu);
+ }
return ret;
}
@@ -2284,6 +2307,8 @@ static int a6xx_pm_suspend(struct msm_gpu *gpu)
trace_msm_gpu_suspend(0);
+ a6xx_llc_deactivate(a6xx_gpu);
+
msm_devfreq_suspend(gpu);
mutex_lock(&a6xx_gpu->gmu.lock);
@@ -2295,6 +2320,7 @@ static int a6xx_pm_suspend(struct msm_gpu *gpu)
a6xx_sptprac_disable(gmu);
clk_bulk_disable_unprepare(gpu->nr_clocks, gpu->grp_clks);
+ clk_bulk_disable_unprepare(gmu->nr_clocks, gmu->clocks);
pm_runtime_put_sync(gmu->gxpd);
dev_pm_opp_set_opp(&gpu->pdev->dev, NULL);
@@ -2673,7 +2699,8 @@ struct msm_gpu *a6xx_gpu_init(struct drm_device *dev)
ret = adreno_gpu_init(dev, pdev, adreno_gpu, &funcs_a7xx, 4);
else if (is_a7xx)
ret = adreno_gpu_init(dev, pdev, adreno_gpu, &funcs_a7xx, 1);
- else if (adreno_has_gmu_wrapper(adreno_gpu))
+ else if (adreno_has_gmu_wrapper(adreno_gpu) ||
+ of_device_is_compatible(node, "qcom,adreno-rgmu"))
ret = adreno_gpu_init(dev, pdev, adreno_gpu, &funcs_gmuwrapper, 1);
else
ret = adreno_gpu_init(dev, pdev, adreno_gpu, &funcs, 1);
@@ -2689,7 +2716,7 @@ struct msm_gpu *a6xx_gpu_init(struct drm_device *dev)
if (adreno_is_a618(adreno_gpu) || adreno_is_7c3(adreno_gpu))
priv->gpu_clamp_to_idle = true;
- if (adreno_has_gmu_wrapper(adreno_gpu))
+ if (adreno_has_gmu_wrapper(adreno_gpu) || adreno_has_rgmu(adreno_gpu))
ret = a6xx_gmu_wrapper_init(a6xx_gpu, node);
else
ret = a6xx_gmu_init(a6xx_gpu, node);
diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gpu_state.c b/drivers/gpu/drm/msm/adreno/a6xx_gpu_state.c
index 4c7f3c642f6a..838150ff49ab 100644
--- a/drivers/gpu/drm/msm/adreno/a6xx_gpu_state.c
+++ b/drivers/gpu/drm/msm/adreno/a6xx_gpu_state.c
@@ -1596,7 +1596,8 @@ struct msm_gpu_state *a6xx_gpu_state_get(struct msm_gpu *gpu)
/* Get the generic state from the adreno core */
adreno_gpu_state_get(gpu, &a6xx_state->base);
- if (!adreno_has_gmu_wrapper(adreno_gpu)) {
+ if (!adreno_has_gmu_wrapper(adreno_gpu) &&
+ !adreno_has_rgmu(adreno_gpu)) {
a6xx_get_gmu_registers(gpu, a6xx_state);
a6xx_state->gmu_log = a6xx_snapshot_gmu_bo(a6xx_state, &a6xx_gpu->gmu.log);
diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.c b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
index 4b5a4edd0702..71400d8999c9 100644
--- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c
+++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
@@ -1189,6 +1189,7 @@ int adreno_gpu_init(struct drm_device *drm, struct platform_device *pdev,
/* Only handle the core clock when GMU is not in use (or is absent). */
if (adreno_has_gmu_wrapper(adreno_gpu) ||
+ adreno_has_rgmu(adreno_gpu) ||
adreno_gpu->info->family < ADRENO_6XX_GEN1) {
/*
* This can only be done before devm_pm_opp_of_add_table(), or
diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.h b/drivers/gpu/drm/msm/adreno/adreno_gpu.h
index 390fa6720d9b..25ee6b277fe2 100644
--- a/drivers/gpu/drm/msm/adreno/adreno_gpu.h
+++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.h
@@ -392,6 +392,16 @@ static inline int adreno_is_a610(const struct adreno_gpu *gpu)
return adreno_is_revn(gpu, 610);
}
+static inline int adreno_is_a612(const struct adreno_gpu *gpu)
+{
+ return gpu->info->chip_ids[0] == 0x06010200;
+}
+
+static inline bool adreno_has_rgmu(const struct adreno_gpu *gpu)
+{
+ return adreno_is_a612(gpu);
+}
+
static inline int adreno_is_a618(const struct adreno_gpu *gpu)
{
return adreno_is_revn(gpu, 618);
@@ -466,9 +476,9 @@ static inline int adreno_is_a610_family(const struct adreno_gpu *gpu)
{
if (WARN_ON_ONCE(!gpu->info))
return false;
-
- /* TODO: A612 */
- return adreno_is_a610(gpu) || adreno_is_a702(gpu);
+ return adreno_is_a610(gpu) ||
+ adreno_is_a612(gpu) ||
+ adreno_is_a702(gpu);
}
/* TODO: 615/616 */
--
2.51.0
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH v2 2/6] dt-bindings: display/msm: gpu: Document A612 GPU
2025-11-06 20:50 [PATCH v2 0/6] Support for Adreno 612 GPU - Respin Akhil P Oommen
2025-11-06 20:50 ` [PATCH v2 1/6] drm/msm/a6xx: Add support for Adreno 612 Akhil P Oommen
@ 2025-11-06 20:50 ` Akhil P Oommen
2025-11-10 7:48 ` Krzysztof Kozlowski
2025-11-06 20:50 ` [PATCH v2 3/6] dt-bindings: display/msm/rgmu: Document A612 RGMU Akhil P Oommen
` (5 subsequent siblings)
7 siblings, 1 reply; 23+ messages in thread
From: Akhil P Oommen @ 2025-11-06 20:50 UTC (permalink / raw)
To: Rob Clark, Sean Paul, Konrad Dybcio, Dmitry Baryshkov,
Abhinav Kumar, Marijn Suijten, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Jessica Zhang
Cc: Dan Carpenter, linux-arm-msm, dri-devel, freedreno, linux-kernel,
devicetree, Akhil P Oommen
A612 GPU has a new IP called RGMU (Reduced Graphics Management Unit)
which replaces GMU. But it doesn't do clock or voltage scaling. So we
need the gpu core clock in the GPU node along with the power domain to
do clock and voltage scaling from the kernel. Update the bindings to
describe this GPU.
Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
---
.../devicetree/bindings/display/msm/gpu.yaml | 32 ++++++++++++++++++++--
1 file changed, 30 insertions(+), 2 deletions(-)
diff --git a/Documentation/devicetree/bindings/display/msm/gpu.yaml b/Documentation/devicetree/bindings/display/msm/gpu.yaml
index 826aafdcc20b..a6bbc88e6a24 100644
--- a/Documentation/devicetree/bindings/display/msm/gpu.yaml
+++ b/Documentation/devicetree/bindings/display/msm/gpu.yaml
@@ -45,11 +45,11 @@ properties:
- const: amd,imageon
clocks:
- minItems: 2
+ minItems: 1
maxItems: 7
clock-names:
- minItems: 2
+ minItems: 1
maxItems: 7
reg:
@@ -387,6 +387,34 @@ allOf:
required:
- clocks
- clock-names
+
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: qcom,adreno-612.0
+ then:
+ properties:
+ clocks:
+ items:
+ - description: GPU Core clock
+
+ clock-names:
+ items:
+ - const: core
+
+ reg:
+ items:
+ - description: GPU Reg memory
+
+ reg-names:
+ items:
+ - const: kgsl_3d0_reg_memory
+
+ required:
+ - clocks
+ - clock-names
+
else:
if:
properties:
--
2.51.0
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH v2 3/6] dt-bindings: display/msm/rgmu: Document A612 RGMU
2025-11-06 20:50 [PATCH v2 0/6] Support for Adreno 612 GPU - Respin Akhil P Oommen
2025-11-06 20:50 ` [PATCH v2 1/6] drm/msm/a6xx: Add support for Adreno 612 Akhil P Oommen
2025-11-06 20:50 ` [PATCH v2 2/6] dt-bindings: display/msm: gpu: Document A612 GPU Akhil P Oommen
@ 2025-11-06 20:50 ` Akhil P Oommen
2025-11-10 7:51 ` Krzysztof Kozlowski
2025-11-06 20:50 ` [PATCH v2 4/6] arm64: dts: qcom: sm6150: add the GPU SMMU node Akhil P Oommen
` (4 subsequent siblings)
7 siblings, 1 reply; 23+ messages in thread
From: Akhil P Oommen @ 2025-11-06 20:50 UTC (permalink / raw)
To: Rob Clark, Sean Paul, Konrad Dybcio, Dmitry Baryshkov,
Abhinav Kumar, Marijn Suijten, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Jessica Zhang
Cc: Dan Carpenter, linux-arm-msm, dri-devel, freedreno, linux-kernel,
devicetree, Akhil P Oommen, Jie Zhang
From: Jie Zhang <jie.zhang@oss.qualcomm.com>
RGMU a.k.a Reduced Graphics Management Unit is a small state machine
with the sole purpose of providing IFPC (Inter Frame Power Collapse)
support. Compared to GMU, it doesn't manage GPU clock, voltage
scaling, bw voting or any other functionalities. All it does is detect
an idle GPU and toggle the GDSC switch. As it doesn't access DDR space,
it doesn't require iommu.
So far, only Adreno 612 GPU has an RGMU core. Document RGMU in the GMU's
schema.
Signed-off-by: Jie Zhang <jie.zhang@oss.qualcomm.com>
Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
---
.../devicetree/bindings/display/msm/rgmu.yaml | 131 +++++++++++++++++++++
MAINTAINERS | 1 +
2 files changed, 132 insertions(+)
diff --git a/Documentation/devicetree/bindings/display/msm/rgmu.yaml b/Documentation/devicetree/bindings/display/msm/rgmu.yaml
new file mode 100644
index 000000000000..7621556477d0
--- /dev/null
+++ b/Documentation/devicetree/bindings/display/msm/rgmu.yaml
@@ -0,0 +1,131 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
+%YAML 1.2
+---
+
+$id: http://devicetree.org/schemas/display/msm/rgmu.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: RGMU attached to certain Adreno GPUs
+
+maintainers:
+ - Rob Clark <robin.clark@oss.qualcomm.com>
+
+description: |
+ RGMU (Reduced Graphics Management Unit) IP is present in some GPUs that
+ belong to Adreno A6xx family. It is a small state machine that helps to
+ toggle the GX GDSC (connected to CX rail) to implement IFPC feature and save
+ power.
+
+properties:
+ compatible:
+ items:
+ - const: qcom,adreno-rgmu-612.0
+ - const: qcom,adreno-rgmu
+
+ reg:
+ items:
+ - description: Core RGMU registers
+
+ reg-names:
+ items:
+ - const: gmu
+
+ clocks:
+ items:
+ - description: GMU clock
+ - description: GPU CX clock
+ - description: GPU AXI clock
+ - description: GPU MEMNOC clock
+ - description: GPU SMMU vote clock
+
+ clock-names:
+ items:
+ - const: gmu
+ - const: cxo
+ - const: axi
+ - const: memnoc
+ - const: smmu_vote
+
+ power-domains:
+ items:
+ - description: CX GDSC power domain
+ - description: GX GDSC power domain
+
+ power-domain-names:
+ items:
+ - const: cx
+ - const: gx
+
+ interrupts:
+ items:
+ - description: GMU OOB interrupt
+ - description: GMU interrupt
+
+ interrupt-names:
+ items:
+ - const: oob
+ - const: gmu
+
+ operating-points-v2: true
+ opp-table:
+ type: object
+
+required:
+ - reg
+ - reg-names
+ - clocks
+ - clock-names
+ - power-domains
+ - power-domain-names
+ - interrupts
+ - interrupt-names
+ - operating-points-v2
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/clock/qcom,qcs615-gpucc.h>
+ #include <dt-bindings/clock/qcom,qcs615-gcc.h>
+ #include <dt-bindings/interrupt-controller/arm-gic.h>
+ #include <dt-bindings/power/qcom,rpmhpd.h>
+
+ rgmu: rgmu@506a000 {
+ compatible = "qcom,adreno-rgmu-612.0", "qcom,adreno-rgmu";
+
+ reg = <0x05000000 0x90000>;
+ reg-names = "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_HLOS1_VOTE_GPU_SMMU_CLK>;
+ clock-names = "gmu",
+ "cxo",
+ "axi",
+ "memnoc",
+ "smmu_vote";
+
+ power-domains = <&gpucc CX_GDSC>,
+ <&gpucc GX_GDSC>;
+ power-domain-names = "cx",
+ "gx";
+
+ interrupts = <GIC_SPI 304 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 305 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "oob",
+ "gmu";
+
+ operating-points-v2 = <&rgmu_opp_table>;
+
+ rgmu_opp_table: opp-table {
+ compatible = "operating-points-v2";
+
+ opp-200000000 {
+ opp-hz = /bits/ 64 <200000000>;
+ required-opps = <&rpmhpd_opp_low_svs>;
+ };
+ };
+ };
diff --git a/MAINTAINERS b/MAINTAINERS
index ea854fa44b20..c75911e70c82 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -7895,6 +7895,7 @@ S: Maintained
B: https://gitlab.freedesktop.org/drm/msm/-/issues
T: git https://gitlab.freedesktop.org/drm/msm.git
F: Documentation/devicetree/bindings/display/msm/gpu.yaml
+F: Documentation/devicetree/bindings/display/msm/rgmu.yaml
F: Documentation/devicetree/bindings/opp/opp-v2-qcom-adreno.yaml
F: drivers/gpu/drm/msm/adreno/
F: drivers/gpu/drm/msm/msm_gpu.*
--
2.51.0
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH v2 4/6] arm64: dts: qcom: sm6150: add the GPU SMMU node
2025-11-06 20:50 [PATCH v2 0/6] Support for Adreno 612 GPU - Respin Akhil P Oommen
` (2 preceding siblings ...)
2025-11-06 20:50 ` [PATCH v2 3/6] dt-bindings: display/msm/rgmu: Document A612 RGMU Akhil P Oommen
@ 2025-11-06 20:50 ` Akhil P Oommen
2025-11-06 20:50 ` [PATCH v2 5/6] arm64: dts: qcom: sm6150: Add gpu and rgmu nodes Akhil P Oommen
` (3 subsequent siblings)
7 siblings, 0 replies; 23+ messages in thread
From: Akhil P Oommen @ 2025-11-06 20:50 UTC (permalink / raw)
To: Rob Clark, Sean Paul, Konrad Dybcio, Dmitry Baryshkov,
Abhinav Kumar, Marijn Suijten, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Jessica Zhang
Cc: Dan Carpenter, linux-arm-msm, dri-devel, freedreno, linux-kernel,
devicetree, Akhil P Oommen, Qingqing Zhou, Jie Zhang
From: Qingqing Zhou <quic_qqzhou@quicinc.com>
Add the Adreno GPU SMMU node for QCS615 platform.
Signed-off-by: Qingqing Zhou <quic_qqzhou@quicinc.com>
Signed-off-by: Jie Zhang <jie.zhang@oss.qualcomm.com>
Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
---
arch/arm64/boot/dts/qcom/talos.dtsi | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/talos.dtsi b/arch/arm64/boot/dts/qcom/talos.dtsi
index d1dbfa3bd81c..efb753ba1747 100644
--- a/arch/arm64/boot/dts/qcom/talos.dtsi
+++ b/arch/arm64/boot/dts/qcom/talos.dtsi
@@ -1839,6 +1839,31 @@ gpucc: clock-controller@5090000 {
#power-domain-cells = <1>;
};
+ adreno_smmu: iommu@50a0000 {
+ compatible = "qcom,qcs615-smmu-500", "qcom,adreno-smmu",
+ "qcom,smmu-500", "arm,mmu-500";
+ reg = <0x0 0x50a0000 0x0 0x10000>;
+ #iommu-cells = <2>;
+ #global-interrupts = <1>;
+ interrupts = <GIC_SPI 585 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 590 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 591 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 592 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 593 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 594 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 595 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 596 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 597 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&gcc GCC_GPU_MEMNOC_GFX_CLK>,
+ <&gpucc GPU_CC_HLOS1_VOTE_GPU_SMMU_CLK>,
+ <&gcc GCC_GPU_SNOC_DVM_GFX_CLK>;
+ clock-names = "mem",
+ "hlos",
+ "iface";
+ power-domains = <&gpucc CX_GDSC>;
+ dma-coherent;
+ };
+
stm@6002000 {
compatible = "arm,coresight-stm", "arm,primecell";
reg = <0x0 0x06002000 0x0 0x1000>,
--
2.51.0
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH v2 5/6] arm64: dts: qcom: sm6150: Add gpu and rgmu nodes
2025-11-06 20:50 [PATCH v2 0/6] Support for Adreno 612 GPU - Respin Akhil P Oommen
` (3 preceding siblings ...)
2025-11-06 20:50 ` [PATCH v2 4/6] arm64: dts: qcom: sm6150: add the GPU SMMU node Akhil P Oommen
@ 2025-11-06 20:50 ` Akhil P Oommen
2025-11-07 9:01 ` Konrad Dybcio
2025-11-06 20:50 ` [PATCH v2 6/6] arm64: dts: qcom: qcs615-ride: Enable Adreno 612 GPU Akhil P Oommen
` (2 subsequent siblings)
7 siblings, 1 reply; 23+ messages in thread
From: Akhil P Oommen @ 2025-11-06 20:50 UTC (permalink / raw)
To: Rob Clark, Sean Paul, Konrad Dybcio, Dmitry Baryshkov,
Abhinav Kumar, Marijn Suijten, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Jessica Zhang
Cc: Dan Carpenter, linux-arm-msm, dri-devel, freedreno, linux-kernel,
devicetree, Akhil P Oommen, Jie Zhang
From: Jie Zhang <quic_jiezh@quicinc.com>
Add gpu and rgmu nodes for qcs615 chipset.
Signed-off-by: Jie Zhang <quic_jiezh@quicinc.com>
Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
---
arch/arm64/boot/dts/qcom/talos.dtsi | 113 ++++++++++++++++++++++++++++++++++++
1 file changed, 113 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/talos.dtsi b/arch/arm64/boot/dts/qcom/talos.dtsi
index efb753ba1747..500587ea9ae4 100644
--- a/arch/arm64/boot/dts/qcom/talos.dtsi
+++ b/arch/arm64/boot/dts/qcom/talos.dtsi
@@ -647,6 +647,11 @@ rproc_adsp_mem: rproc-adsp@95900000 {
reg = <0x0 0x95900000 0x0 0x1e00000>;
no-map;
};
+
+ pil_gpu_mem: pil-gpu@97715000 {
+ reg = <0x0 0x97715000 0x0 0x2000>;
+ no-map;
+ };
};
soc: soc@0 {
@@ -1826,6 +1831,114 @@ data-pins {
};
};
+ gpu: gpu@5000000 {
+ compatible = "qcom,adreno-612.0", "qcom,adreno";
+ reg = <0x0 0x05000000 0x0 0x90000>;
+ reg-names = "kgsl_3d0_reg_memory";
+
+ clocks = <&gpucc GPU_CC_GX_GFX3D_CLK>;
+ clock-names = "core";
+
+ interrupts = <GIC_SPI 300 IRQ_TYPE_LEVEL_HIGH>;
+
+ interconnects = <&gem_noc MASTER_GFX3D QCOM_ICC_TAG_ALWAYS
+ &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+ interconnect-names = "gfx-mem";
+
+ iommus = <&adreno_smmu 0x0 0x401>;
+
+ operating-points-v2 = <&gpu_opp_table>;
+ power-domains = <&gpucc GX_GDSC>;
+
+ qcom,gmu = <&rgmu>;
+
+ #cooling-cells = <2>;
+
+ status = "disabled";
+
+ gpu_zap_shader: zap-shader {
+ memory-region = <&pil_gpu_mem>;
+ };
+
+ gpu_opp_table: opp-table {
+ compatible = "operating-points-v2";
+
+ opp-845000000 {
+ opp-hz = /bits/ 64 <845000000>;
+ required-opps = <&rpmhpd_opp_turbo>;
+ opp-peak-kBps = <7050000>;
+ };
+
+ opp-745000000 {
+ opp-hz = /bits/ 64 <745000000>;
+ required-opps = <&rpmhpd_opp_nom_l1>;
+ opp-peak-kBps = <6075000>;
+ };
+
+ opp-650000000 {
+ opp-hz = /bits/ 64 <650000000>;
+ required-opps = <&rpmhpd_opp_nom>;
+ opp-peak-kBps = <5287500>;
+ };
+
+ opp-500000000 {
+ opp-hz = /bits/ 64 <500000000>;
+ required-opps = <&rpmhpd_opp_svs_l1>;
+ opp-peak-kBps = <3975000>;
+ };
+
+ opp-435000000 {
+ opp-hz = /bits/ 64 <435000000>;
+ required-opps = <&rpmhpd_opp_svs>;
+ opp-peak-kBps = <3000000>;
+ };
+
+ opp-290000000 {
+ opp-hz = /bits/ 64 <290000000>;
+ required-opps = <&rpmhpd_opp_low_svs>;
+ opp-peak-kBps = <1762500>;
+ };
+ };
+ };
+
+ rgmu: rgmu@506a000 {
+ compatible = "qcom,adreno-rgmu-612.0", "qcom,adreno-rgmu";
+ reg = <0x0 0x0506a000 0x0 0x34000>;
+ reg-names = "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_HLOS1_VOTE_GPU_SMMU_CLK>;
+ clock-names = "gmu",
+ "cxo",
+ "axi",
+ "memnoc",
+ "smmu_vote";
+
+ power-domains = <&gpucc CX_GDSC>,
+ <&gpucc GX_GDSC>;
+ power-domain-names = "cx",
+ "gx";
+
+ interrupts = <GIC_SPI 304 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 305 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "oob",
+ "gmu";
+
+ operating-points-v2 = <&rgmu_opp_table>;
+
+ rgmu_opp_table: opp-table {
+ compatible = "operating-points-v2";
+
+ opp-200000000 {
+ opp-hz = /bits/ 64 <200000000>;
+ required-opps = <&rpmhpd_opp_low_svs>;
+ };
+ };
+ };
+
gpucc: clock-controller@5090000 {
compatible = "qcom,qcs615-gpucc";
reg = <0 0x05090000 0 0x9000>;
--
2.51.0
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH v2 6/6] arm64: dts: qcom: qcs615-ride: Enable Adreno 612 GPU
2025-11-06 20:50 [PATCH v2 0/6] Support for Adreno 612 GPU - Respin Akhil P Oommen
` (4 preceding siblings ...)
2025-11-06 20:50 ` [PATCH v2 5/6] arm64: dts: qcom: sm6150: Add gpu and rgmu nodes Akhil P Oommen
@ 2025-11-06 20:50 ` Akhil P Oommen
2025-11-07 8:52 ` [PATCH v2 0/6] Support for Adreno 612 GPU - Respin Konrad Dybcio
2025-11-10 14:34 ` Rob Herring (Arm)
7 siblings, 0 replies; 23+ messages in thread
From: Akhil P Oommen @ 2025-11-06 20:50 UTC (permalink / raw)
To: Rob Clark, Sean Paul, Konrad Dybcio, Dmitry Baryshkov,
Abhinav Kumar, Marijn Suijten, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Jessica Zhang
Cc: Dan Carpenter, linux-arm-msm, dri-devel, freedreno, linux-kernel,
devicetree, Akhil P Oommen, Jie Zhang, Konrad Dybcio
From: Jie Zhang <quic_jiezh@quicinc.com>
Enable GPU for qcs615-ride platform and provide path for zap
shader.
Signed-off-by: Jie Zhang <quic_jiezh@quicinc.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
---
arch/arm64/boot/dts/qcom/qcs615-ride.dts | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/qcs615-ride.dts b/arch/arm64/boot/dts/qcom/qcs615-ride.dts
index be67eb173046..33e33aa54691 100644
--- a/arch/arm64/boot/dts/qcom/qcs615-ride.dts
+++ b/arch/arm64/boot/dts/qcom/qcs615-ride.dts
@@ -358,6 +358,14 @@ vreg_l17a: ldo17 {
};
};
+&gpu {
+ status = "okay";
+};
+
+&gpu_zap_shader {
+ firmware-name = "qcom/qcs615/a612_zap.mbn";
+};
+
&i2c2 {
clock-frequency = <400000>;
status = "okay";
--
2.51.0
^ permalink raw reply related [flat|nested] 23+ messages in thread
* Re: [PATCH v2 0/6] Support for Adreno 612 GPU - Respin
2025-11-06 20:50 [PATCH v2 0/6] Support for Adreno 612 GPU - Respin Akhil P Oommen
` (5 preceding siblings ...)
2025-11-06 20:50 ` [PATCH v2 6/6] arm64: dts: qcom: qcs615-ride: Enable Adreno 612 GPU Akhil P Oommen
@ 2025-11-07 8:52 ` Konrad Dybcio
2025-11-10 10:46 ` Akhil P Oommen
2025-11-10 14:34 ` Rob Herring (Arm)
7 siblings, 1 reply; 23+ messages in thread
From: Konrad Dybcio @ 2025-11-07 8:52 UTC (permalink / raw)
To: Akhil P Oommen, Rob Clark, Sean Paul, Konrad Dybcio,
Dmitry Baryshkov, Abhinav Kumar, Marijn Suijten, David Airlie,
Simona Vetter, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bjorn Andersson, Jessica Zhang
Cc: Dan Carpenter, linux-arm-msm, dri-devel, freedreno, linux-kernel,
devicetree, Jie Zhang, Jie Zhang, Qingqing Zhou
On 11/6/25 9:50 PM, Akhil P Oommen wrote:
> This is a respin of an old series [1] that aimed to add support for
> Adreno 612 GPU found in SM6150/QCS615 chipsets. In this version, we
> have consolidated the previously separate series for DT and driver
> support, along with some significant rework.
[...]
> Changes in v2:
> - Rebased on next-20251105
> - Fix hwcg configuration (Dan)
> - Reuse a few gmu-wrapper routines (Konrad)
> - Split out rgmu dt schema (Krzysztof/Dmitry)
> - Fixes for GPU dt binding doc (Krzysztof)
> - Removed VDD_CX from rgmu dt node. Will post a separate series to
> address the gpucc changes (Konrad)
> - Fix the reg range size for adreno smmu node and reorder the properties (Konrad)
The size stayed the same
Konrad
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v2 1/6] drm/msm/a6xx: Add support for Adreno 612
2025-11-06 20:50 ` [PATCH v2 1/6] drm/msm/a6xx: Add support for Adreno 612 Akhil P Oommen
@ 2025-11-07 8:58 ` Konrad Dybcio
2025-11-11 15:10 ` Akhil P Oommen
0 siblings, 1 reply; 23+ messages in thread
From: Konrad Dybcio @ 2025-11-07 8:58 UTC (permalink / raw)
To: Akhil P Oommen, Rob Clark, Sean Paul, Konrad Dybcio,
Dmitry Baryshkov, Abhinav Kumar, Marijn Suijten, David Airlie,
Simona Vetter, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bjorn Andersson, Jessica Zhang
Cc: Dan Carpenter, linux-arm-msm, dri-devel, freedreno, linux-kernel,
devicetree, Jie Zhang
On 11/6/25 9:50 PM, Akhil P Oommen wrote:
> From: Jie Zhang <quic_jiezh@quicinc.com>
>
> Add support for Adreno 612 GPU found in SM6150/QCS615 chipsets.
> A612 falls under ADRENO_6XX_GEN1 family and is a cut down version
> of A615 GPU.
>
> A612 has a new IP called Reduced Graphics Management Unit or RGMU
> which is a small state machine which helps to toggle GX GDSC
> (connected to CX rail) to implement IFPC feature. It doesn't support
> any other features of a full fledged GMU like clock control, resource
> voting to rpmh etc. So we need linux clock driver support like other
> gmu-wrapper implementations to control gpu core clock and gpu GX gdsc.
> This patch skips RGMU core initialization and act more like a
> gmu-wrapper case.
>
> Signed-off-by: Jie Zhang <quic_jiezh@quicinc.com>
> Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
> ---
[...]
> /* Enable fault detection */
> - if (adreno_is_a730(adreno_gpu) ||
> + if (adreno_is_a612(adreno_gpu) ||
> + adreno_is_a730(adreno_gpu) ||
> adreno_is_a740_family(adreno_gpu))
> gpu_write(gpu, REG_A6XX_RBBM_INTERFACE_HANG_INT_CNTL, (1 << 30) | 0xcfffff);
Downstream sets this to 0x3fffff, but IDK if having a timeout too
large is an issue
Konrad
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v2 5/6] arm64: dts: qcom: sm6150: Add gpu and rgmu nodes
2025-11-06 20:50 ` [PATCH v2 5/6] arm64: dts: qcom: sm6150: Add gpu and rgmu nodes Akhil P Oommen
@ 2025-11-07 9:01 ` Konrad Dybcio
2025-11-10 10:42 ` Akhil P Oommen
0 siblings, 1 reply; 23+ messages in thread
From: Konrad Dybcio @ 2025-11-07 9:01 UTC (permalink / raw)
To: Akhil P Oommen, Rob Clark, Sean Paul, Konrad Dybcio,
Dmitry Baryshkov, Abhinav Kumar, Marijn Suijten, David Airlie,
Simona Vetter, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bjorn Andersson, Jessica Zhang
Cc: Dan Carpenter, linux-arm-msm, dri-devel, freedreno, linux-kernel,
devicetree, Jie Zhang
On 11/6/25 9:50 PM, Akhil P Oommen wrote:
> From: Jie Zhang <quic_jiezh@quicinc.com>
>
> Add gpu and rgmu nodes for qcs615 chipset.
>
> Signed-off-by: Jie Zhang <quic_jiezh@quicinc.com>
> Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
> ---
[...]
> + rgmu: rgmu@506a000 {
> + compatible = "qcom,adreno-rgmu-612.0", "qcom,adreno-rgmu";
> + reg = <0x0 0x0506a000 0x0 0x34000>;
> + reg-names = "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_HLOS1_VOTE_GPU_SMMU_CLK>;
Is this last clock really necessary?
Konrad
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v2 2/6] dt-bindings: display/msm: gpu: Document A612 GPU
2025-11-06 20:50 ` [PATCH v2 2/6] dt-bindings: display/msm: gpu: Document A612 GPU Akhil P Oommen
@ 2025-11-10 7:48 ` Krzysztof Kozlowski
2025-11-14 11:58 ` Akhil P Oommen
0 siblings, 1 reply; 23+ messages in thread
From: Krzysztof Kozlowski @ 2025-11-10 7:48 UTC (permalink / raw)
To: Akhil P Oommen
Cc: Rob Clark, Sean Paul, Konrad Dybcio, Dmitry Baryshkov,
Abhinav Kumar, Marijn Suijten, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Jessica Zhang,
Dan Carpenter, linux-arm-msm, dri-devel, freedreno, linux-kernel,
devicetree
On Fri, Nov 07, 2025 at 02:20:07AM +0530, Akhil P Oommen wrote:
> A612 GPU has a new IP called RGMU (Reduced Graphics Management Unit)
> which replaces GMU. But it doesn't do clock or voltage scaling. So we
> need the gpu core clock in the GPU node along with the power domain to
> do clock and voltage scaling from the kernel. Update the bindings to
> describe this GPU.
>
> Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
> ---
> .../devicetree/bindings/display/msm/gpu.yaml | 32 ++++++++++++++++++++--
> 1 file changed, 30 insertions(+), 2 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/display/msm/gpu.yaml b/Documentation/devicetree/bindings/display/msm/gpu.yaml
> index 826aafdcc20b..a6bbc88e6a24 100644
> --- a/Documentation/devicetree/bindings/display/msm/gpu.yaml
> +++ b/Documentation/devicetree/bindings/display/msm/gpu.yaml
> @@ -45,11 +45,11 @@ properties:
> - const: amd,imageon
>
> clocks:
> - minItems: 2
> + minItems: 1
> maxItems: 7
>
> clock-names:
> - minItems: 2
> + minItems: 1
> maxItems: 7
>
> reg:
> @@ -387,6 +387,34 @@ allOf:
> required:
> - clocks
> - clock-names
> +
> + - if:
> + properties:
> + compatible:
> + contains:
> + const: qcom,adreno-612.0
> + then:
> + properties:
> + clocks:
> + items:
> + - description: GPU Core clock
> +
> + clock-names:
> + items:
> + - const: core
> +
> + reg:
> + items:
> + - description: GPU Reg memory
> +
> + reg-names:
> + items:
> + - const: kgsl_3d0_reg_memory
What happened with the second entry? Please describe the hardware
COMPLETELY (see writing bindings doc).
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v2 3/6] dt-bindings: display/msm/rgmu: Document A612 RGMU
2025-11-06 20:50 ` [PATCH v2 3/6] dt-bindings: display/msm/rgmu: Document A612 RGMU Akhil P Oommen
@ 2025-11-10 7:51 ` Krzysztof Kozlowski
2025-11-11 14:51 ` Akhil P Oommen
2025-11-14 12:00 ` Akhil P Oommen
0 siblings, 2 replies; 23+ messages in thread
From: Krzysztof Kozlowski @ 2025-11-10 7:51 UTC (permalink / raw)
To: Akhil P Oommen
Cc: Rob Clark, Sean Paul, Konrad Dybcio, Dmitry Baryshkov,
Abhinav Kumar, Marijn Suijten, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Jessica Zhang,
Dan Carpenter, linux-arm-msm, dri-devel, freedreno, linux-kernel,
devicetree, Jie Zhang
On Fri, Nov 07, 2025 at 02:20:08AM +0530, Akhil P Oommen wrote:
> From: Jie Zhang <jie.zhang@oss.qualcomm.com>
>
> RGMU a.k.a Reduced Graphics Management Unit is a small state machine
> with the sole purpose of providing IFPC (Inter Frame Power Collapse)
> support. Compared to GMU, it doesn't manage GPU clock, voltage
> scaling, bw voting or any other functionalities. All it does is detect
> an idle GPU and toggle the GDSC switch. As it doesn't access DDR space,
> it doesn't require iommu.
>
> So far, only Adreno 612 GPU has an RGMU core. Document RGMU in the GMU's
> schema.
>
> Signed-off-by: Jie Zhang <jie.zhang@oss.qualcomm.com>
> Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
> ---
> .../devicetree/bindings/display/msm/rgmu.yaml | 131 +++++++++++++++++++++
> MAINTAINERS | 1 +
> 2 files changed, 132 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/display/msm/rgmu.yaml b/Documentation/devicetree/bindings/display/msm/rgmu.yaml
> new file mode 100644
> index 000000000000..7621556477d0
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/display/msm/rgmu.yaml
Filename matching compatible, so qcom,adreno-rgmu.yaml
> @@ -0,0 +1,131 @@
> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
> +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
> +%YAML 1.2
> +---
> +
> +$id: http://devicetree.org/schemas/display/msm/rgmu.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: RGMU attached to certain Adreno GPUs
> +
> +maintainers:
> + - Rob Clark <robin.clark@oss.qualcomm.com>
> +
> +description: |
Do not need '|' unless you need to preserve formatting.
> + RGMU (Reduced Graphics Management Unit) IP is present in some GPUs that
> + belong to Adreno A6xx family. It is a small state machine that helps to
> + toggle the GX GDSC (connected to CX rail) to implement IFPC feature and save
> + power.
> +
> +properties:
> + compatible:
> + items:
> + - const: qcom,adreno-rgmu-612.0
> + - const: qcom,adreno-rgmu
> +
> + reg:
> + items:
> + - description: Core RGMU registers
> +
> + reg-names:
> + items:
> + - const: gmu
Drop reg-names, useless for one entry with same name as the block name.
> +
> + clocks:
> + items:
> + - description: GMU clock
> + - description: GPU CX clock
> + - description: GPU AXI clock
> + - description: GPU MEMNOC clock
> + - description: GPU SMMU vote clock
> +
> + clock-names:
> + items:
> + - const: gmu
> + - const: cxo
> + - const: axi
> + - const: memnoc
> + - const: smmu_vote
> +
> + power-domains:
> + items:
> + - description: CX GDSC power domain
> + - description: GX GDSC power domain
> +
> + power-domain-names:
> + items:
> + - const: cx
> + - const: gx
> +
> + interrupts:
> + items:
> + - description: GMU OOB interrupt
> + - description: GMU interrupt
> +
> + interrupt-names:
> + items:
> + - const: oob
> + - const: gmu
> +
> + operating-points-v2: true
> + opp-table:
> + type: object
> +
> +required:
compatible
> + - reg
> + - reg-names
> + - clocks
> + - clock-names
> + - power-domains
> + - power-domain-names
> + - interrupts
> + - interrupt-names
Keep the same order as in properties.
> + - operating-points-v2
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/clock/qcom,qcs615-gpucc.h>
> + #include <dt-bindings/clock/qcom,qcs615-gcc.h>
> + #include <dt-bindings/interrupt-controller/arm-gic.h>
> + #include <dt-bindings/power/qcom,rpmhpd.h>
> +
> + rgmu: rgmu@506a000 {
Drop label.
Node names should be generic. See also an explanation and list of
examples (not exhaustive) in DT specification:
https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation
If you cannot find a name matching your device, please check in kernel
sources for similar cases or you can grow the spec (via pull request to
DT spec repo).
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v2 5/6] arm64: dts: qcom: sm6150: Add gpu and rgmu nodes
2025-11-07 9:01 ` Konrad Dybcio
@ 2025-11-10 10:42 ` Akhil P Oommen
0 siblings, 0 replies; 23+ messages in thread
From: Akhil P Oommen @ 2025-11-10 10:42 UTC (permalink / raw)
To: Konrad Dybcio, Rob Clark, Sean Paul, Konrad Dybcio,
Dmitry Baryshkov, Abhinav Kumar, Marijn Suijten, David Airlie,
Simona Vetter, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bjorn Andersson, Jessica Zhang
Cc: Dan Carpenter, linux-arm-msm, dri-devel, freedreno, linux-kernel,
devicetree, Jie Zhang
On 11/7/2025 2:31 PM, Konrad Dybcio wrote:
> On 11/6/25 9:50 PM, Akhil P Oommen wrote:
>> From: Jie Zhang <quic_jiezh@quicinc.com>
>>
>> Add gpu and rgmu nodes for qcs615 chipset.
>>
>> Signed-off-by: Jie Zhang <quic_jiezh@quicinc.com>
>> Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
>> ---
>
> [...]
>
>> + rgmu: rgmu@506a000 {
>> + compatible = "qcom,adreno-rgmu-612.0", "qcom,adreno-rgmu";
>> + reg = <0x0 0x0506a000 0x0 0x34000>;
>> + reg-names = "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_HLOS1_VOTE_GPU_SMMU_CLK>;
>
> Is this last clock really necessary?
Downstream votes for this. So we are aligning with that.
-Akhil
>
> Konrad
>
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v2 0/6] Support for Adreno 612 GPU - Respin
2025-11-07 8:52 ` [PATCH v2 0/6] Support for Adreno 612 GPU - Respin Konrad Dybcio
@ 2025-11-10 10:46 ` Akhil P Oommen
0 siblings, 0 replies; 23+ messages in thread
From: Akhil P Oommen @ 2025-11-10 10:46 UTC (permalink / raw)
To: Konrad Dybcio, Rob Clark, Sean Paul, Konrad Dybcio,
Dmitry Baryshkov, Abhinav Kumar, Marijn Suijten, David Airlie,
Simona Vetter, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bjorn Andersson, Jessica Zhang
Cc: Dan Carpenter, linux-arm-msm, dri-devel, freedreno, linux-kernel,
devicetree, Jie Zhang, Jie Zhang, Qingqing Zhou
On 11/7/2025 2:22 PM, Konrad Dybcio wrote:
> On 11/6/25 9:50 PM, Akhil P Oommen wrote:
>> This is a respin of an old series [1] that aimed to add support for
>> Adreno 612 GPU found in SM6150/QCS615 chipsets. In this version, we
>> have consolidated the previously separate series for DT and driver
>> support, along with some significant rework.
>
> [...]
>
>> Changes in v2:
>> - Rebased on next-20251105
>> - Fix hwcg configuration (Dan)
>> - Reuse a few gmu-wrapper routines (Konrad)
>> - Split out rgmu dt schema (Krzysztof/Dmitry)
>> - Fixes for GPU dt binding doc (Krzysztof)
>> - Removed VDD_CX from rgmu dt node. Will post a separate series to
>> address the gpucc changes (Konrad)
>> - Fix the reg range size for adreno smmu node and reorder the properties (Konrad)
>
> The size stayed the same
Weird, I had a fixup commit which updated this. Seems like it was lost
somewhere along the way. :(
Will correct this. Thanks.
-Akhil.
>
> Konrad
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v2 0/6] Support for Adreno 612 GPU - Respin
2025-11-06 20:50 [PATCH v2 0/6] Support for Adreno 612 GPU - Respin Akhil P Oommen
` (6 preceding siblings ...)
2025-11-07 8:52 ` [PATCH v2 0/6] Support for Adreno 612 GPU - Respin Konrad Dybcio
@ 2025-11-10 14:34 ` Rob Herring (Arm)
7 siblings, 0 replies; 23+ messages in thread
From: Rob Herring (Arm) @ 2025-11-10 14:34 UTC (permalink / raw)
To: Akhil P Oommen
Cc: Konrad Dybcio, Jie Zhang, Rob Clark, Dmitry Baryshkov,
Maxime Ripard, Krzysztof Kozlowski, Conor Dooley, Jie Zhang,
dri-devel, Konrad Dybcio, Dan Carpenter, linux-kernel,
Simona Vetter, freedreno, Maarten Lankhorst, Qingqing Zhou,
Marijn Suijten, Thomas Zimmermann, Bjorn Andersson, Jessica Zhang,
linux-arm-msm, devicetree, David Airlie, Abhinav Kumar, Sean Paul
On Fri, 07 Nov 2025 02:20:05 +0530, Akhil P Oommen wrote:
> This is a respin of an old series [1] that aimed to add support for
> Adreno 612 GPU found in SM6150/QCS615 chipsets. In this version, we
> have consolidated the previously separate series for DT and driver
> support, along with some significant rework.
>
> Regarding A612 GPU, it falls under ADRENO_6XX_GEN1 family and is a cut
> down version of A615 GPU. A612 has a new IP called Reduced Graphics
> Management Unit or RGMU, a small state machine which helps to toggle
> GX GDSC (connected to CX rail) to implement the IFPC feature. Unlike a
> full-fledged GMU, the RGMU does not support features such as clock
> control, resource voting via RPMh, HFI etc. Therefore, we require linux
> clock driver support similar to gmu-wrapper implementations to control
> gpu core clock and GX GDSC.
>
> In this series, the description of RGMU hardware in devicetree is more
> complete than in previous version. However, the RGMU core is not
> initialized from the driver as there is currently no need for it. We do
> perform a dummy load of RGMU firmware (now available in linux-firmware)
> to ensure that enabling RGMU core in the future won't break backward
> compatibility for users.
>
> Due to significant changes compared to the old series, all R-b tags have
> been dropped. Please review with fresh eyes.
>
> Last 3 patches are for Bjorn and the rest are for Rob Clark for pick up.
>
> [1] Driver: https://lore.kernel.org/lkml/20241213-a612-gpu-support-v3-1-0e9b25570a69@quicinc.com/
> Devicetree: https://lore.kernel.org/lkml/fu4rayftf3i4arf6l6bzqyzsctomglhpiniljkeuj74ftvzlpo@vklca2giwjlw/
>
> Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
> ---
> Changes in v2:
> - Rebased on next-20251105
> - Fix hwcg configuration (Dan)
> - Reuse a few gmu-wrapper routines (Konrad)
> - Split out rgmu dt schema (Krzysztof/Dmitry)
> - Fixes for GPU dt binding doc (Krzysztof)
> - Removed VDD_CX from rgmu dt node. Will post a separate series to
> address the gpucc changes (Konrad)
> - Fix the reg range size for adreno smmu node and reorder the properties (Konrad)
> - Link to v1: https://lore.kernel.org/r/20251017-qcs615-spin-2-v1-0-0baa44f80905@oss.qualcomm.com
>
> ---
> Akhil P Oommen (1):
> dt-bindings: display/msm: gpu: Document A612 GPU
>
> Jie Zhang (4):
> drm/msm/a6xx: Add support for Adreno 612
> dt-bindings: display/msm/rgmu: Document A612 RGMU
> arm64: dts: qcom: sm6150: Add gpu and rgmu nodes
> arm64: dts: qcom: qcs615-ride: Enable Adreno 612 GPU
>
> Qingqing Zhou (1):
> arm64: dts: qcom: sm6150: add the GPU SMMU node
>
> .../devicetree/bindings/display/msm/gpu.yaml | 32 ++++-
> .../devicetree/bindings/display/msm/rgmu.yaml | 131 +++++++++++++++++++
> MAINTAINERS | 1 +
> arch/arm64/boot/dts/qcom/qcs615-ride.dts | 8 ++
> arch/arm64/boot/dts/qcom/talos.dtsi | 138 +++++++++++++++++++++
> drivers/gpu/drm/msm/adreno/a6xx_catalog.c | 16 +++
> drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 23 +++-
> drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 45 +++++--
> drivers/gpu/drm/msm/adreno/a6xx_gpu_state.c | 3 +-
> drivers/gpu/drm/msm/adreno/adreno_gpu.c | 1 +
> drivers/gpu/drm/msm/adreno/adreno_gpu.h | 16 ++-
> 11 files changed, 398 insertions(+), 16 deletions(-)
> ---
> base-commit: 185cd3dc1a12b97194a62eba9d217d280ef74135
> change-id: 20251015-qcs615-spin-2-ed45b0deb998
>
> Best regards,
> --
> Akhil P Oommen <akhilpo@oss.qualcomm.com>
>
>
>
My bot found new DTB warnings on the .dts files added or changed in this
series.
Some warnings may be from an existing SoC .dtsi. Or perhaps the warnings
are fixed by another series. Ultimately, it is up to the platform
maintainer whether these warnings are acceptable or not. No need to reply
unless the platform maintainer has comments.
If you already ran DT checks and didn't see these error(s), then
make sure dt-schema is up to date:
pip3 install dtschema --upgrade
This patch series was applied (using b4) to base:
Base: base-commit 185cd3dc1a12b97194a62eba9d217d280ef74135 not known, ignoring
Base: attempting to guess base-commit...
Base: tags/next-20251107 (best guess, 9/10 blobs matched)
Base: tags/next-20251107 (use --merge-base to override)
If this is not the correct base, please add 'base-commit' tag
(or use b4 which does this automatically)
New warnings running 'make CHECK_DTBS=y for arch/arm64/boot/dts/qcom/' for 20251107-qcs615-spin-2-v2-0-a2d7c4fbf6e6@oss.qualcomm.com:
arch/arm64/boot/dts/qcom/sm6115p-lenovo-j606f.dtb: gpu@5900000 (qcom,adreno-610.0): False schema does not allow ['core', 'iface', 'mem_iface', 'alt_mem_iface', 'gmu', 'xo']
from schema $id: http://devicetree.org/schemas/display/msm/gpu.yaml
arch/arm64/boot/dts/qcom/sm6115p-lenovo-j606f.dtb: gpu@5900000 (qcom,adreno-610.0): False schema does not allow [[89, 13], [89, 4], [2, 150], [2, 76], [89, 7], [89, 10]]
from schema $id: http://devicetree.org/schemas/display/msm/gpu.yaml
arch/arm64/boot/dts/qcom/qrb2210-rb1.dtb: gpu@5900000 (qcom,adreno-07000200): False schema does not allow ['core', 'iface', 'mem_iface', 'alt_mem_iface', 'gmu', 'xo']
from schema $id: http://devicetree.org/schemas/display/msm/gpu.yaml
arch/arm64/boot/dts/qcom/qrb2210-rb1.dtb: gpu@5900000 (qcom,adreno-07000200): False schema does not allow [[90, 8], [90, 0], [31, 19], [31, 87], [90, 3], [90, 6]]
from schema $id: http://devicetree.org/schemas/display/msm/gpu.yaml
arch/arm64/boot/dts/qcom/qrb4210-rb2.dtb: gpu@5900000 (qcom,adreno-610.0): False schema does not allow ['core', 'iface', 'mem_iface', 'alt_mem_iface', 'gmu', 'xo']
from schema $id: http://devicetree.org/schemas/display/msm/gpu.yaml
arch/arm64/boot/dts/qcom/qrb4210-rb2.dtb: gpu@5900000 (qcom,adreno-610.0): False schema does not allow [[111, 13], [111, 4], [48, 150], [48, 76], [111, 7], [111, 10]]
from schema $id: http://devicetree.org/schemas/display/msm/gpu.yaml
arch/arm64/boot/dts/qcom/sm6115-fxtec-pro1x.dtb: gpu@5900000 (qcom,adreno-610.0): False schema does not allow ['core', 'iface', 'mem_iface', 'alt_mem_iface', 'gmu', 'xo']
from schema $id: http://devicetree.org/schemas/display/msm/gpu.yaml
arch/arm64/boot/dts/qcom/sm6115-fxtec-pro1x.dtb: gpu@5900000 (qcom,adreno-610.0): False schema does not allow [[101, 13], [101, 4], [2, 150], [2, 76], [101, 7], [101, 10]]
from schema $id: http://devicetree.org/schemas/display/msm/gpu.yaml
arch/arm64/boot/dts/qcom/sm4250-oneplus-billie2.dtb: gpu@5900000 (qcom,adreno-610.0): False schema does not allow ['core', 'iface', 'mem_iface', 'alt_mem_iface', 'gmu', 'xo']
from schema $id: http://devicetree.org/schemas/display/msm/gpu.yaml
arch/arm64/boot/dts/qcom/sm4250-oneplus-billie2.dtb: gpu@5900000 (qcom,adreno-610.0): False schema does not allow [[87, 13], [87, 4], [44, 150], [44, 76], [87, 7], [87, 10]]
from schema $id: http://devicetree.org/schemas/display/msm/gpu.yaml
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v2 3/6] dt-bindings: display/msm/rgmu: Document A612 RGMU
2025-11-10 7:51 ` Krzysztof Kozlowski
@ 2025-11-11 14:51 ` Akhil P Oommen
2025-11-13 8:11 ` Krzysztof Kozlowski
2025-11-14 12:00 ` Akhil P Oommen
1 sibling, 1 reply; 23+ messages in thread
From: Akhil P Oommen @ 2025-11-11 14:51 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Rob Clark, Sean Paul, Konrad Dybcio, Dmitry Baryshkov,
Abhinav Kumar, Marijn Suijten, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Jessica Zhang,
Dan Carpenter, linux-arm-msm, dri-devel, freedreno, linux-kernel,
devicetree, Jie Zhang
On 11/10/2025 1:21 PM, Krzysztof Kozlowski wrote:
> On Fri, Nov 07, 2025 at 02:20:08AM +0530, Akhil P Oommen wrote:
>> From: Jie Zhang <jie.zhang@oss.qualcomm.com>
>>
>> RGMU a.k.a Reduced Graphics Management Unit is a small state machine
>> with the sole purpose of providing IFPC (Inter Frame Power Collapse)
>> support. Compared to GMU, it doesn't manage GPU clock, voltage
>> scaling, bw voting or any other functionalities. All it does is detect
>> an idle GPU and toggle the GDSC switch. As it doesn't access DDR space,
>> it doesn't require iommu.
>>
>> So far, only Adreno 612 GPU has an RGMU core. Document RGMU in the GMU's
>> schema.
>>
>> Signed-off-by: Jie Zhang <jie.zhang@oss.qualcomm.com>
>> Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
>> ---
>> .../devicetree/bindings/display/msm/rgmu.yaml | 131 +++++++++++++++++++++
>> MAINTAINERS | 1 +
>> 2 files changed, 132 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/display/msm/rgmu.yaml b/Documentation/devicetree/bindings/display/msm/rgmu.yaml
>> new file mode 100644
>> index 000000000000..7621556477d0
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/display/msm/rgmu.yaml
>
> Filename matching compatible, so qcom,adreno-rgmu.yaml
>
>
>> @@ -0,0 +1,131 @@
>> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
>> +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
>> +%YAML 1.2
>> +---
>> +
>> +$id: http://devicetree.org/schemas/display/msm/rgmu.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: RGMU attached to certain Adreno GPUs
>> +
>> +maintainers:
>> + - Rob Clark <robin.clark@oss.qualcomm.com>
>> +
>> +description: |
>
> Do not need '|' unless you need to preserve formatting.
>
>> + RGMU (Reduced Graphics Management Unit) IP is present in some GPUs that
>> + belong to Adreno A6xx family. It is a small state machine that helps to
>> + toggle the GX GDSC (connected to CX rail) to implement IFPC feature and save
>> + power.
>> +
>> +properties:
>> + compatible:
>> + items:
>> + - const: qcom,adreno-rgmu-612.0
>> + - const: qcom,adreno-rgmu
>> +
>> + reg:
>> + items:
>> + - description: Core RGMU registers
>> +
>> + reg-names:
>> + items:
>> + - const: gmu
>
> Drop reg-names, useless for one entry with same name as the block name.
>
>> +
>> + clocks:
>> + items:
>> + - description: GMU clock
>> + - description: GPU CX clock
>> + - description: GPU AXI clock
>> + - description: GPU MEMNOC clock
>> + - description: GPU SMMU vote clock
>> +
>> + clock-names:
>> + items:
>> + - const: gmu
>> + - const: cxo
>> + - const: axi
>> + - const: memnoc
>> + - const: smmu_vote
>> +
>> + power-domains:
>> + items:
>> + - description: CX GDSC power domain
>> + - description: GX GDSC power domain
>> +
>> + power-domain-names:
>> + items:
>> + - const: cx
>> + - const: gx
>> +
>> + interrupts:
>> + items:
>> + - description: GMU OOB interrupt
>> + - description: GMU interrupt
>> +
>> + interrupt-names:
>> + items:
>> + - const: oob
>> + - const: gmu
>> +
>> + operating-points-v2: true
>> + opp-table:
>> + type: object
>> +
>> +required:
>
> compatible
>
>> + - reg
>> + - reg-names
>> + - clocks
>> + - clock-names
>> + - power-domains
>> + - power-domain-names
>> + - interrupts
>> + - interrupt-names
>
> Keep the same order as in properties.
>
>> + - operating-points-v2
>> +
>> +additionalProperties: false
>> +
>> +examples:
>> + - |
>> + #include <dt-bindings/clock/qcom,qcs615-gpucc.h>
>> + #include <dt-bindings/clock/qcom,qcs615-gcc.h>
>> + #include <dt-bindings/interrupt-controller/arm-gic.h>
>> + #include <dt-bindings/power/qcom,rpmhpd.h>
>> +
>> + rgmu: rgmu@506a000 {
>
> Drop label.
>
> Node names should be generic. See also an explanation and list of
> examples (not exhaustive) in DT specification:
> https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation
> If you cannot find a name matching your device, please check in kernel
> sources for similar cases or you can grow the spec (via pull request to
> DT spec repo).
I guess we can use 'gmu' here as that name is already in use for other
chipsets?
Ack for all other suggestions. Will update the patch.
-Akhil
>
> Best regards,
> Krzysztof
>
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v2 1/6] drm/msm/a6xx: Add support for Adreno 612
2025-11-07 8:58 ` Konrad Dybcio
@ 2025-11-11 15:10 ` Akhil P Oommen
2025-11-12 9:59 ` Konrad Dybcio
0 siblings, 1 reply; 23+ messages in thread
From: Akhil P Oommen @ 2025-11-11 15:10 UTC (permalink / raw)
To: Konrad Dybcio
Cc: Rob Clark, Sean Paul, Konrad Dybcio, Dmitry Baryshkov,
Abhinav Kumar, Marijn Suijten, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Jessica Zhang,
Dan Carpenter, linux-arm-msm, dri-devel, freedreno, linux-kernel,
devicetree, Jie Zhang
On 11/7/2025 2:28 PM, Konrad Dybcio wrote:
> On 11/6/25 9:50 PM, Akhil P Oommen wrote:
>> From: Jie Zhang <quic_jiezh@quicinc.com>
>>
>> Add support for Adreno 612 GPU found in SM6150/QCS615 chipsets.
>> A612 falls under ADRENO_6XX_GEN1 family and is a cut down version
>> of A615 GPU.
>>
>> A612 has a new IP called Reduced Graphics Management Unit or RGMU
>> which is a small state machine which helps to toggle GX GDSC
>> (connected to CX rail) to implement IFPC feature. It doesn't support
>> any other features of a full fledged GMU like clock control, resource
>> voting to rpmh etc. So we need linux clock driver support like other
>> gmu-wrapper implementations to control gpu core clock and gpu GX gdsc.
>> This patch skips RGMU core initialization and act more like a
>> gmu-wrapper case.
>>
>> Signed-off-by: Jie Zhang <quic_jiezh@quicinc.com>
>> Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
>> ---
>
> [...]
>
>> /* Enable fault detection */
>> - if (adreno_is_a730(adreno_gpu) ||
>> + if (adreno_is_a612(adreno_gpu) ||
>> + adreno_is_a730(adreno_gpu) ||
>> adreno_is_a740_family(adreno_gpu))
>> gpu_write(gpu, REG_A6XX_RBBM_INTERFACE_HANG_INT_CNTL, (1 << 30) | 0xcfffff);
>
> Downstream sets this to 0x3fffff, but IDK if having a timeout too
> large is an issue
I reviewed this. It should be 0xcfffff. It looks like the latest tip of
kgsl has an incorrect value for a612 gpu.
-Akhil
>
> Konrad
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v2 1/6] drm/msm/a6xx: Add support for Adreno 612
2025-11-11 15:10 ` Akhil P Oommen
@ 2025-11-12 9:59 ` Konrad Dybcio
0 siblings, 0 replies; 23+ messages in thread
From: Konrad Dybcio @ 2025-11-12 9:59 UTC (permalink / raw)
To: Akhil P Oommen
Cc: Rob Clark, Sean Paul, Konrad Dybcio, Dmitry Baryshkov,
Abhinav Kumar, Marijn Suijten, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Jessica Zhang,
Dan Carpenter, linux-arm-msm, dri-devel, freedreno, linux-kernel,
devicetree, Jie Zhang
On 11/11/25 4:10 PM, Akhil P Oommen wrote:
> On 11/7/2025 2:28 PM, Konrad Dybcio wrote:
>> On 11/6/25 9:50 PM, Akhil P Oommen wrote:
>>> From: Jie Zhang <quic_jiezh@quicinc.com>
>>>
>>> Add support for Adreno 612 GPU found in SM6150/QCS615 chipsets.
>>> A612 falls under ADRENO_6XX_GEN1 family and is a cut down version
>>> of A615 GPU.
>>>
>>> A612 has a new IP called Reduced Graphics Management Unit or RGMU
>>> which is a small state machine which helps to toggle GX GDSC
>>> (connected to CX rail) to implement IFPC feature. It doesn't support
>>> any other features of a full fledged GMU like clock control, resource
>>> voting to rpmh etc. So we need linux clock driver support like other
>>> gmu-wrapper implementations to control gpu core clock and gpu GX gdsc.
>>> This patch skips RGMU core initialization and act more like a
>>> gmu-wrapper case.
>>>
>>> Signed-off-by: Jie Zhang <quic_jiezh@quicinc.com>
>>> Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
>>> ---
>>
>> [...]
>>
>>> /* Enable fault detection */
>>> - if (adreno_is_a730(adreno_gpu) ||
>>> + if (adreno_is_a612(adreno_gpu) ||
>>> + adreno_is_a730(adreno_gpu) ||
>>> adreno_is_a740_family(adreno_gpu))
>>> gpu_write(gpu, REG_A6XX_RBBM_INTERFACE_HANG_INT_CNTL, (1 << 30) | 0xcfffff);
>>
>> Downstream sets this to 0x3fffff, but IDK if having a timeout too
>> large is an issue
>
> I reviewed this. It should be 0xcfffff. It looks like the latest tip of
> kgsl has an incorrect value for a612 gpu.
Thanks for confirming. This patch looks good to me then!
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Konrad
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v2 3/6] dt-bindings: display/msm/rgmu: Document A612 RGMU
2025-11-11 14:51 ` Akhil P Oommen
@ 2025-11-13 8:11 ` Krzysztof Kozlowski
0 siblings, 0 replies; 23+ messages in thread
From: Krzysztof Kozlowski @ 2025-11-13 8:11 UTC (permalink / raw)
To: Akhil P Oommen
Cc: Rob Clark, Sean Paul, Konrad Dybcio, Dmitry Baryshkov,
Abhinav Kumar, Marijn Suijten, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Jessica Zhang,
Dan Carpenter, linux-arm-msm, dri-devel, freedreno, linux-kernel,
devicetree, Jie Zhang
On 11/11/2025 15:51, Akhil P Oommen wrote:
>>> + - |
>>> + #include <dt-bindings/clock/qcom,qcs615-gpucc.h>
>>> + #include <dt-bindings/clock/qcom,qcs615-gcc.h>
>>> + #include <dt-bindings/interrupt-controller/arm-gic.h>
>>> + #include <dt-bindings/power/qcom,rpmhpd.h>
>>> +
>>> + rgmu: rgmu@506a000 {
>>
>> Drop label.
>>
>> Node names should be generic. See also an explanation and list of
>> examples (not exhaustive) in DT specification:
>> https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation
>> If you cannot find a name matching your device, please check in kernel
>> sources for similar cases or you can grow the spec (via pull request to
>> DT spec repo).
>
> I guess we can use 'gmu' here as that name is already in use for other
> chipsets?
>
> Ack for all other suggestions. Will update the patch.
Yes, then let's just use existing gmu.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v2 2/6] dt-bindings: display/msm: gpu: Document A612 GPU
2025-11-10 7:48 ` Krzysztof Kozlowski
@ 2025-11-14 11:58 ` Akhil P Oommen
0 siblings, 0 replies; 23+ messages in thread
From: Akhil P Oommen @ 2025-11-14 11:58 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Rob Clark, Sean Paul, Konrad Dybcio, Dmitry Baryshkov,
Abhinav Kumar, Marijn Suijten, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Jessica Zhang,
Dan Carpenter, linux-arm-msm, dri-devel, freedreno, linux-kernel,
devicetree
On 11/10/2025 1:18 PM, Krzysztof Kozlowski wrote:
> On Fri, Nov 07, 2025 at 02:20:07AM +0530, Akhil P Oommen wrote:
>> A612 GPU has a new IP called RGMU (Reduced Graphics Management Unit)
>> which replaces GMU. But it doesn't do clock or voltage scaling. So we
>> need the gpu core clock in the GPU node along with the power domain to
>> do clock and voltage scaling from the kernel. Update the bindings to
>> describe this GPU.
>>
>> Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
>> ---
>> .../devicetree/bindings/display/msm/gpu.yaml | 32 ++++++++++++++++++++--
>> 1 file changed, 30 insertions(+), 2 deletions(-)
>>
>> diff --git a/Documentation/devicetree/bindings/display/msm/gpu.yaml b/Documentation/devicetree/bindings/display/msm/gpu.yaml
>> index 826aafdcc20b..a6bbc88e6a24 100644
>> --- a/Documentation/devicetree/bindings/display/msm/gpu.yaml
>> +++ b/Documentation/devicetree/bindings/display/msm/gpu.yaml
>> @@ -45,11 +45,11 @@ properties:
>> - const: amd,imageon
>>
>> clocks:
>> - minItems: 2
>> + minItems: 1
>> maxItems: 7
>>
>> clock-names:
>> - minItems: 2
>> + minItems: 1
>> maxItems: 7
>>
>> reg:
>> @@ -387,6 +387,34 @@ allOf:
>> required:
>> - clocks
>> - clock-names
>> +
>> + - if:
>> + properties:
>> + compatible:
>> + contains:
>> + const: qcom,adreno-612.0
>> + then:
>> + properties:
>> + clocks:
>> + items:
>> + - description: GPU Core clock
>> +
>> + clock-names:
>> + items:
>> + - const: core
>> +
>> + reg:
>> + items:
>> + - description: GPU Reg memory
>> +
>> + reg-names:
>> + items:
>> + - const: kgsl_3d0_reg_memory
>
> What happened with the second entry? Please describe the hardware
> COMPLETELY (see writing bindings doc).
We can describe cx_mem and cx_dbgc too here. Then it matches the common
schema described at the top of this file. In that case, do we need to
re-describe it here or we can just remove both reg and reg-names
properties here?
-Akhil.
>
> Best regards,
> Krzysztof
>
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v2 3/6] dt-bindings: display/msm/rgmu: Document A612 RGMU
2025-11-10 7:51 ` Krzysztof Kozlowski
2025-11-11 14:51 ` Akhil P Oommen
@ 2025-11-14 12:00 ` Akhil P Oommen
2025-11-14 12:08 ` Akhil P Oommen
1 sibling, 1 reply; 23+ messages in thread
From: Akhil P Oommen @ 2025-11-14 12:00 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Rob Clark, Sean Paul, Konrad Dybcio, Dmitry Baryshkov,
Abhinav Kumar, Marijn Suijten, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Jessica Zhang,
Dan Carpenter, linux-arm-msm, dri-devel, freedreno, linux-kernel,
devicetree, Jie Zhang
On 11/10/2025 1:21 PM, Krzysztof Kozlowski wrote:
> On Fri, Nov 07, 2025 at 02:20:08AM +0530, Akhil P Oommen wrote:
>> From: Jie Zhang <jie.zhang@oss.qualcomm.com>
>>
>> RGMU a.k.a Reduced Graphics Management Unit is a small state machine
>> with the sole purpose of providing IFPC (Inter Frame Power Collapse)
>> support. Compared to GMU, it doesn't manage GPU clock, voltage
>> scaling, bw voting or any other functionalities. All it does is detect
>> an idle GPU and toggle the GDSC switch. As it doesn't access DDR space,
>> it doesn't require iommu.
>>
>> So far, only Adreno 612 GPU has an RGMU core. Document RGMU in the GMU's
>> schema.
>>
>> Signed-off-by: Jie Zhang <jie.zhang@oss.qualcomm.com>
>> Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
>> ---
>> .../devicetree/bindings/display/msm/rgmu.yaml | 131 +++++++++++++++++++++
>> MAINTAINERS | 1 +
>> 2 files changed, 132 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/display/msm/rgmu.yaml b/Documentation/devicetree/bindings/display/msm/rgmu.yaml
>> new file mode 100644
>> index 000000000000..7621556477d0
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/display/msm/rgmu.yaml
>
> Filename matching compatible, so qcom,adreno-rgmu.yaml
>
>
>> @@ -0,0 +1,131 @@
>> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
>> +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
>> +%YAML 1.2
>> +---
>> +
>> +$id: http://devicetree.org/schemas/display/msm/rgmu.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: RGMU attached to certain Adreno GPUs
>> +
>> +maintainers:
>> + - Rob Clark <robin.clark@oss.qualcomm.com>
>> +
>> +description: |
>
> Do not need '|' unless you need to preserve formatting.
>
>> + RGMU (Reduced Graphics Management Unit) IP is present in some GPUs that
>> + belong to Adreno A6xx family. It is a small state machine that helps to
>> + toggle the GX GDSC (connected to CX rail) to implement IFPC feature and save
>> + power.
>> +
>> +properties:
>> + compatible:
>> + items:
>> + - const: qcom,adreno-rgmu-612.0
>> + - const: qcom,adreno-rgmu
>> +
>> + reg:
>> + items:
>> + - description: Core RGMU registers
>> +
>> + reg-names:
>> + items:
>> + - const: gmu
>
> Drop reg-names, useless for one entry with same name as the block name.
Just to confirm, drop only reg-names, but keep 'reg'?
-Akhil
>
>> +
>> + clocks:
>> + items:
>> + - description: GMU clock
>> + - description: GPU CX clock
>> + - description: GPU AXI clock
>> + - description: GPU MEMNOC clock
>> + - description: GPU SMMU vote clock
>> +
>> + clock-names:
>> + items:
>> + - const: gmu
>> + - const: cxo
>> + - const: axi
>> + - const: memnoc
>> + - const: smmu_vote
>> +
>> + power-domains:
>> + items:
>> + - description: CX GDSC power domain
>> + - description: GX GDSC power domain
>> +
>> + power-domain-names:
>> + items:
>> + - const: cx
>> + - const: gx
>> +
>> + interrupts:
>> + items:
>> + - description: GMU OOB interrupt
>> + - description: GMU interrupt
>> +
>> + interrupt-names:
>> + items:
>> + - const: oob
>> + - const: gmu
>> +
>> + operating-points-v2: true
>> + opp-table:
>> + type: object
>> +
>> +required:
>
> compatible
>
>> + - reg
>> + - reg-names
>> + - clocks
>> + - clock-names
>> + - power-domains
>> + - power-domain-names
>> + - interrupts
>> + - interrupt-names
>
> Keep the same order as in properties.
>
>> + - operating-points-v2
>> +
>> +additionalProperties: false
>> +
>> +examples:
>> + - |
>> + #include <dt-bindings/clock/qcom,qcs615-gpucc.h>
>> + #include <dt-bindings/clock/qcom,qcs615-gcc.h>
>> + #include <dt-bindings/interrupt-controller/arm-gic.h>
>> + #include <dt-bindings/power/qcom,rpmhpd.h>
>> +
>> + rgmu: rgmu@506a000 {
>
> Drop label.
>
> Node names should be generic. See also an explanation and list of
> examples (not exhaustive) in DT specification:
> https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation
> If you cannot find a name matching your device, please check in kernel
> sources for similar cases or you can grow the spec (via pull request to
> DT spec repo).
>
> Best regards,
> Krzysztof
>
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v2 3/6] dt-bindings: display/msm/rgmu: Document A612 RGMU
2025-11-14 12:00 ` Akhil P Oommen
@ 2025-11-14 12:08 ` Akhil P Oommen
2025-11-14 12:16 ` Krzysztof Kozlowski
0 siblings, 1 reply; 23+ messages in thread
From: Akhil P Oommen @ 2025-11-14 12:08 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Rob Clark, Sean Paul, Konrad Dybcio, Dmitry Baryshkov,
Abhinav Kumar, Marijn Suijten, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Jessica Zhang,
Dan Carpenter, linux-arm-msm, dri-devel, freedreno, linux-kernel,
devicetree, Jie Zhang
On 11/14/2025 5:30 PM, Akhil P Oommen wrote:
> On 11/10/2025 1:21 PM, Krzysztof Kozlowski wrote:
>> On Fri, Nov 07, 2025 at 02:20:08AM +0530, Akhil P Oommen wrote:
>>> From: Jie Zhang <jie.zhang@oss.qualcomm.com>
>>>
>>> RGMU a.k.a Reduced Graphics Management Unit is a small state machine
>>> with the sole purpose of providing IFPC (Inter Frame Power Collapse)
>>> support. Compared to GMU, it doesn't manage GPU clock, voltage
>>> scaling, bw voting or any other functionalities. All it does is detect
>>> an idle GPU and toggle the GDSC switch. As it doesn't access DDR space,
>>> it doesn't require iommu.
>>>
>>> So far, only Adreno 612 GPU has an RGMU core. Document RGMU in the GMU's
>>> schema.
>>>
>>> Signed-off-by: Jie Zhang <jie.zhang@oss.qualcomm.com>
>>> Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
>>> ---
>>> .../devicetree/bindings/display/msm/rgmu.yaml | 131 +++++++++++++++++++++
>>> MAINTAINERS | 1 +
>>> 2 files changed, 132 insertions(+)
>>>
>>> diff --git a/Documentation/devicetree/bindings/display/msm/rgmu.yaml b/Documentation/devicetree/bindings/display/msm/rgmu.yaml
>>> new file mode 100644
>>> index 000000000000..7621556477d0
>>> --- /dev/null
>>> +++ b/Documentation/devicetree/bindings/display/msm/rgmu.yaml
>>
>> Filename matching compatible, so qcom,adreno-rgmu.yaml
>>
>>
>>> @@ -0,0 +1,131 @@
>>> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
>>> +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
>>> +%YAML 1.2
>>> +---
>>> +
>>> +$id: http://devicetree.org/schemas/display/msm/rgmu.yaml#
>>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>>> +
>>> +title: RGMU attached to certain Adreno GPUs
>>> +
>>> +maintainers:
>>> + - Rob Clark <robin.clark@oss.qualcomm.com>
>>> +
>>> +description: |
>>
>> Do not need '|' unless you need to preserve formatting.
>>
>>> + RGMU (Reduced Graphics Management Unit) IP is present in some GPUs that
>>> + belong to Adreno A6xx family. It is a small state machine that helps to
>>> + toggle the GX GDSC (connected to CX rail) to implement IFPC feature and save
>>> + power.
>>> +
>>> +properties:
>>> + compatible:
>>> + items:
>>> + - const: qcom,adreno-rgmu-612.0
>>> + - const: qcom,adreno-rgmu
>>> +
>>> + reg:
>>> + items:
>>> + - description: Core RGMU registers
>>> +
>>> + reg-names:
>>> + items:
>>> + - const: gmu
>>
>> Drop reg-names, useless for one entry with same name as the block name.
>
> Just to confirm, drop only reg-names, but keep 'reg'?
Wait. We should keep 'reg'.
If we remove 'reg-names' here, we cannot use reg-names in DT too because
we are setting additionalProperties to False, right?
-Akhil.
>
> -Akhil
>
>>
>>> +
>>> + clocks:
>>> + items:
>>> + - description: GMU clock
>>> + - description: GPU CX clock
>>> + - description: GPU AXI clock
>>> + - description: GPU MEMNOC clock
>>> + - description: GPU SMMU vote clock
>>> +
>>> + clock-names:
>>> + items:
>>> + - const: gmu
>>> + - const: cxo
>>> + - const: axi
>>> + - const: memnoc
>>> + - const: smmu_vote
>>> +
>>> + power-domains:
>>> + items:
>>> + - description: CX GDSC power domain
>>> + - description: GX GDSC power domain
>>> +
>>> + power-domain-names:
>>> + items:
>>> + - const: cx
>>> + - const: gx
>>> +
>>> + interrupts:
>>> + items:
>>> + - description: GMU OOB interrupt
>>> + - description: GMU interrupt
>>> +
>>> + interrupt-names:
>>> + items:
>>> + - const: oob
>>> + - const: gmu
>>> +
>>> + operating-points-v2: true
>>> + opp-table:
>>> + type: object
>>> +
>>> +required:
>>
>> compatible
>>
>>> + - reg
>>> + - reg-names
>>> + - clocks
>>> + - clock-names
>>> + - power-domains
>>> + - power-domain-names
>>> + - interrupts
>>> + - interrupt-names
>>
>> Keep the same order as in properties.
>>
>>> + - operating-points-v2
>>> +
>>> +additionalProperties: false
>>> +
>>> +examples:
>>> + - |
>>> + #include <dt-bindings/clock/qcom,qcs615-gpucc.h>
>>> + #include <dt-bindings/clock/qcom,qcs615-gcc.h>
>>> + #include <dt-bindings/interrupt-controller/arm-gic.h>
>>> + #include <dt-bindings/power/qcom,rpmhpd.h>
>>> +
>>> + rgmu: rgmu@506a000 {
>>
>> Drop label.
>>
>> Node names should be generic. See also an explanation and list of
>> examples (not exhaustive) in DT specification:
>> https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation
>> If you cannot find a name matching your device, please check in kernel
>> sources for similar cases or you can grow the spec (via pull request to
>> DT spec repo).
>>
>> Best regards,
>> Krzysztof
>>
>
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v2 3/6] dt-bindings: display/msm/rgmu: Document A612 RGMU
2025-11-14 12:08 ` Akhil P Oommen
@ 2025-11-14 12:16 ` Krzysztof Kozlowski
0 siblings, 0 replies; 23+ messages in thread
From: Krzysztof Kozlowski @ 2025-11-14 12:16 UTC (permalink / raw)
To: Akhil P Oommen
Cc: Rob Clark, Sean Paul, Konrad Dybcio, Dmitry Baryshkov,
Abhinav Kumar, Marijn Suijten, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Jessica Zhang,
Dan Carpenter, linux-arm-msm, dri-devel, freedreno, linux-kernel,
devicetree, Jie Zhang
On 14/11/2025 13:08, Akhil P Oommen wrote:
> On 11/14/2025 5:30 PM, Akhil P Oommen wrote:
>> On 11/10/2025 1:21 PM, Krzysztof Kozlowski wrote:
>>> On Fri, Nov 07, 2025 at 02:20:08AM +0530, Akhil P Oommen wrote:
>>>> From: Jie Zhang <jie.zhang@oss.qualcomm.com>
>>>>
>>>> RGMU a.k.a Reduced Graphics Management Unit is a small state machine
>>>> with the sole purpose of providing IFPC (Inter Frame Power Collapse)
>>>> support. Compared to GMU, it doesn't manage GPU clock, voltage
>>>> scaling, bw voting or any other functionalities. All it does is detect
>>>> an idle GPU and toggle the GDSC switch. As it doesn't access DDR space,
>>>> it doesn't require iommu.
>>>>
>>>> So far, only Adreno 612 GPU has an RGMU core. Document RGMU in the GMU's
>>>> schema.
>>>>
>>>> Signed-off-by: Jie Zhang <jie.zhang@oss.qualcomm.com>
>>>> Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
>>>> ---
>>>> .../devicetree/bindings/display/msm/rgmu.yaml | 131 +++++++++++++++++++++
>>>> MAINTAINERS | 1 +
>>>> 2 files changed, 132 insertions(+)
>>>>
>>>> diff --git a/Documentation/devicetree/bindings/display/msm/rgmu.yaml b/Documentation/devicetree/bindings/display/msm/rgmu.yaml
>>>> new file mode 100644
>>>> index 000000000000..7621556477d0
>>>> --- /dev/null
>>>> +++ b/Documentation/devicetree/bindings/display/msm/rgmu.yaml
>>>
>>> Filename matching compatible, so qcom,adreno-rgmu.yaml
>>>
>>>
>>>> @@ -0,0 +1,131 @@
>>>> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
>>>> +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
>>>> +%YAML 1.2
>>>> +---
>>>> +
>>>> +$id: http://devicetree.org/schemas/display/msm/rgmu.yaml#
>>>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>>>> +
>>>> +title: RGMU attached to certain Adreno GPUs
>>>> +
>>>> +maintainers:
>>>> + - Rob Clark <robin.clark@oss.qualcomm.com>
>>>> +
>>>> +description: |
>>>
>>> Do not need '|' unless you need to preserve formatting.
>>>
>>>> + RGMU (Reduced Graphics Management Unit) IP is present in some GPUs that
>>>> + belong to Adreno A6xx family. It is a small state machine that helps to
>>>> + toggle the GX GDSC (connected to CX rail) to implement IFPC feature and save
>>>> + power.
>>>> +
>>>> +properties:
>>>> + compatible:
>>>> + items:
>>>> + - const: qcom,adreno-rgmu-612.0
>>>> + - const: qcom,adreno-rgmu
>>>> +
>>>> + reg:
>>>> + items:
>>>> + - description: Core RGMU registers
>>>> +
>>>> + reg-names:
>>>> + items:
>>>> + - const: gmu
>>>
>>> Drop reg-names, useless for one entry with same name as the block name.
>>
>> Just to confirm, drop only reg-names, but keep 'reg'?
>
> Wait. We should keep 'reg'.
>
> If we remove 'reg-names' here, we cannot use reg-names in DT too because
> we are setting additionalProperties to False, right?
Yes, I ask to drop reg-names from everywhere because they are pointless.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 23+ messages in thread
end of thread, other threads:[~2025-11-14 12:16 UTC | newest]
Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-06 20:50 [PATCH v2 0/6] Support for Adreno 612 GPU - Respin Akhil P Oommen
2025-11-06 20:50 ` [PATCH v2 1/6] drm/msm/a6xx: Add support for Adreno 612 Akhil P Oommen
2025-11-07 8:58 ` Konrad Dybcio
2025-11-11 15:10 ` Akhil P Oommen
2025-11-12 9:59 ` Konrad Dybcio
2025-11-06 20:50 ` [PATCH v2 2/6] dt-bindings: display/msm: gpu: Document A612 GPU Akhil P Oommen
2025-11-10 7:48 ` Krzysztof Kozlowski
2025-11-14 11:58 ` Akhil P Oommen
2025-11-06 20:50 ` [PATCH v2 3/6] dt-bindings: display/msm/rgmu: Document A612 RGMU Akhil P Oommen
2025-11-10 7:51 ` Krzysztof Kozlowski
2025-11-11 14:51 ` Akhil P Oommen
2025-11-13 8:11 ` Krzysztof Kozlowski
2025-11-14 12:00 ` Akhil P Oommen
2025-11-14 12:08 ` Akhil P Oommen
2025-11-14 12:16 ` Krzysztof Kozlowski
2025-11-06 20:50 ` [PATCH v2 4/6] arm64: dts: qcom: sm6150: add the GPU SMMU node Akhil P Oommen
2025-11-06 20:50 ` [PATCH v2 5/6] arm64: dts: qcom: sm6150: Add gpu and rgmu nodes Akhil P Oommen
2025-11-07 9:01 ` Konrad Dybcio
2025-11-10 10:42 ` Akhil P Oommen
2025-11-06 20:50 ` [PATCH v2 6/6] arm64: dts: qcom: qcs615-ride: Enable Adreno 612 GPU Akhil P Oommen
2025-11-07 8:52 ` [PATCH v2 0/6] Support for Adreno 612 GPU - Respin Konrad Dybcio
2025-11-10 10:46 ` Akhil P Oommen
2025-11-10 14:34 ` Rob Herring (Arm)
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).