]> git.hungrycats.org Git - linux/commitdiff
drm/msm/a6xx: Fix A621 GPUCC register list for state capture
authorJie Zhang <jie.zhang@oss.qualcomm.com>
Thu, 4 Jun 2026 20:08:20 +0000 (01:38 +0530)
committerRob Clark <robin.clark@oss.qualcomm.com>
Thu, 16 Jul 2026 20:37:22 +0000 (13:37 -0700)
A621 uses an incorrect GPUCC register list during state capture.

The existing list matches A623/A663. Rename it accordingly and add a
dedicated A621 GPUCC register list.

Fixes: 11cdb81b3c1b ("drm/msm/a6xx: Fix gpucc register block for A621")
Signed-off-by: Jie Zhang <jie.zhang@oss.qualcomm.com>
Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Patchwork: https://patchwork.freedesktop.org/patch/730659/
Message-ID: <20260605-assorted-fixes-june-v1-4-2caa04f7287c@oss.qualcomm.com>
Signed-off-by: Rob Clark <robin.clark@oss.qualcomm.com>
drivers/gpu/drm/msm/adreno/a6xx_gpu_state.c
drivers/gpu/drm/msm/adreno/a6xx_gpu_state.h

index 2a62a22077f92be5464039aa323beb05978c7215..3ea8ff8c7404493bf8d6c020866a32e715b7ffaa 100644 (file)
@@ -1244,11 +1244,12 @@ static void a6xx_get_gmu_registers(struct msm_gpu *gpu,
        _a6xx_get_gmu_registers(gpu, a6xx_state, &a6xx_gmu_reglist[1],
                &a6xx_state->gmu_registers[1], true);
 
-       if (adreno_is_a621(adreno_gpu) ||
-           adreno_is_a623(adreno_gpu) ||
-           adreno_is_a663(adreno_gpu))
+       if (adreno_is_a621(adreno_gpu))
                _a6xx_get_gmu_registers(gpu, a6xx_state, &a621_gpucc_reg,
                        &a6xx_state->gmu_registers[2], false);
+       else if (adreno_is_a623(adreno_gpu) || adreno_is_a663(adreno_gpu))
+               _a6xx_get_gmu_registers(gpu, a6xx_state, &a623_gpucc_reg,
+                       &a6xx_state->gmu_registers[2], false);
        else
                _a6xx_get_gmu_registers(gpu, a6xx_state, &a6xx_gpucc_reg,
                        &a6xx_state->gmu_registers[2], false);
index b49d8427b59e6dc7eefe2582c643eee4eb1f297f..0a13a65f89ac8d4d0be26d365cd7a06e5bda311f 100644 (file)
@@ -377,6 +377,17 @@ static const u32 a6xx_gmu_gpucc_registers[] = {
 };
 
 static const u32 a621_gmu_gpucc_registers[] = {
+       /* GPU CC */
+       0x24000, 0x2400e, 0x24400, 0x2440e, 0x24800, 0x24805, 0x24c00, 0x24cff,
+       0x25800, 0x25804, 0x25c00, 0x25c04, 0x26000, 0x26004, 0x26400, 0x26405,
+       0x26414, 0x2641d, 0x2642a, 0x26430, 0x26432, 0x26432, 0x26441, 0x26455,
+       0x26466, 0x26468, 0x26478, 0x2647a, 0x26489, 0x2648a, 0x2649c, 0x2649e,
+       0x264a0, 0x264a3, 0x264b3, 0x264b5, 0x264c5, 0x264c7, 0x264d6, 0x264d8,
+       0x264e8, 0x264e9, 0x264f9, 0x264fc, 0x2650b, 0x2650c, 0x2651c, 0x2651e,
+       0x26540, 0x26570, 0x26600, 0x26616, 0x26620, 0x2662d,
+};
+
+static const u32 a623_gmu_gpucc_registers[] = {
        /* GPU CC */
        0x24000, 0x2400e, 0x24400, 0x2440e, 0x25800, 0x25804, 0x25c00, 0x25c04,
        0x26000, 0x26004, 0x26400, 0x26405, 0x26414, 0x2641d, 0x2642a, 0x26430,
@@ -402,6 +413,7 @@ static const struct a6xx_registers a6xx_gmu_reglist[] = {
 
 static const struct a6xx_registers a6xx_gpucc_reg = REGS(a6xx_gmu_gpucc_registers, 0, 0);
 static const struct a6xx_registers a621_gpucc_reg = REGS(a621_gmu_gpucc_registers, 0, 0);
+static const struct a6xx_registers a623_gpucc_reg = REGS(a623_gmu_gpucc_registers, 0, 0);
 
 static u32 a6xx_get_cp_roq_size(struct msm_gpu *gpu);
 static u32 a7xx_get_cp_roq_size(struct msm_gpu *gpu);