Commit b08d26da authored by Dmitry Baryshkov's avatar Dmitry Baryshkov Committed by Rob Clark

drm/msm/a7xx: actually use a7xx state registers

Make a6xx_get_registers() use a7xx registers instead of a6xx ones if the
detected Adreno is from the A7xx family.

Fixes: e997ae5f ("drm/msm/a6xx: Mostly implement A7xx gpu_state")
Signed-off-by: default avatarDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Patchwork: https://patchwork.freedesktop.org/patch/562233/Signed-off-by: default avatarRob Clark <robdclark@chromium.org>
parent 69c5bcfa
...@@ -882,12 +882,13 @@ static void a6xx_snapshot_gmu_hfi_history(struct msm_gpu *gpu, ...@@ -882,12 +882,13 @@ static void a6xx_snapshot_gmu_hfi_history(struct msm_gpu *gpu,
} }
} }
#define A6XX_REGLIST_SIZE 1
#define A6XX_GBIF_REGLIST_SIZE 1 #define A6XX_GBIF_REGLIST_SIZE 1
static void a6xx_get_registers(struct msm_gpu *gpu, static void a6xx_get_registers(struct msm_gpu *gpu,
struct a6xx_gpu_state *a6xx_state, struct a6xx_gpu_state *a6xx_state,
struct a6xx_crashdumper *dumper) struct a6xx_crashdumper *dumper)
{ {
int i, count = ARRAY_SIZE(a6xx_ahb_reglist) + int i, count = A6XX_REGLIST_SIZE +
ARRAY_SIZE(a6xx_reglist) + ARRAY_SIZE(a6xx_reglist) +
ARRAY_SIZE(a6xx_hlsq_reglist) + A6XX_GBIF_REGLIST_SIZE; ARRAY_SIZE(a6xx_hlsq_reglist) + A6XX_GBIF_REGLIST_SIZE;
int index = 0; int index = 0;
...@@ -901,12 +902,20 @@ static void a6xx_get_registers(struct msm_gpu *gpu, ...@@ -901,12 +902,20 @@ static void a6xx_get_registers(struct msm_gpu *gpu,
a6xx_state->nr_registers = count; a6xx_state->nr_registers = count;
for (i = 0; i < ARRAY_SIZE(a6xx_ahb_reglist); i++) if (adreno_is_a7xx(adreno_gpu))
a6xx_get_ahb_gpu_registers(gpu, a6xx_get_ahb_gpu_registers(gpu,
a6xx_state, &a6xx_ahb_reglist[i], a6xx_state, &a7xx_ahb_reglist,
&a6xx_state->registers[index++]);
else
a6xx_get_ahb_gpu_registers(gpu,
a6xx_state, &a6xx_ahb_reglist,
&a6xx_state->registers[index++]); &a6xx_state->registers[index++]);
if (a6xx_has_gbif(adreno_gpu)) if (adreno_is_a7xx(adreno_gpu))
a6xx_get_ahb_gpu_registers(gpu,
a6xx_state, &a7xx_gbif_reglist,
&a6xx_state->registers[index++]);
else if (a6xx_has_gbif(adreno_gpu))
a6xx_get_ahb_gpu_registers(gpu, a6xx_get_ahb_gpu_registers(gpu,
a6xx_state, &a6xx_gbif_reglist, a6xx_state, &a6xx_gbif_reglist,
&a6xx_state->registers[index++]); &a6xx_state->registers[index++]);
......
...@@ -328,9 +328,8 @@ static const u32 a6xx_gbif_registers[] = { ...@@ -328,9 +328,8 @@ static const u32 a6xx_gbif_registers[] = {
0x3C00, 0X3C0B, 0X3C40, 0X3C47, 0X3CC0, 0X3CD1, 0xE3A, 0xE3A, 0x3C00, 0X3C0B, 0X3C40, 0X3C47, 0X3CC0, 0X3CD1, 0xE3A, 0xE3A,
}; };
static const struct a6xx_registers a6xx_ahb_reglist[] = { static const struct a6xx_registers a6xx_ahb_reglist =
REGS(a6xx_ahb_registers, 0, 0), REGS(a6xx_ahb_registers, 0, 0);
};
static const struct a6xx_registers a6xx_vbif_reglist = static const struct a6xx_registers a6xx_vbif_reglist =
REGS(a6xx_vbif_registers, 0, 0); REGS(a6xx_vbif_registers, 0, 0);
...@@ -353,9 +352,8 @@ static const u32 a7xx_gbif_registers[] = { ...@@ -353,9 +352,8 @@ static const u32 a7xx_gbif_registers[] = {
0x3cc0, 0x3cd1, 0x3cc0, 0x3cd1,
}; };
static const struct a6xx_registers a7xx_ahb_reglist[] = { static const struct a6xx_registers a7xx_ahb_reglist=
REGS(a7xx_ahb_registers, 0, 0), REGS(a7xx_ahb_registers, 0, 0);
};
static const struct a6xx_registers a7xx_gbif_reglist = static const struct a6xx_registers a7xx_gbif_reglist =
REGS(a7xx_gbif_registers, 0, 0); REGS(a7xx_gbif_registers, 0, 0);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment