Skip to content

Commit 90b593c

Browse files
committed
drm/msm/adreno: Switch to chip-id for identifying GPU
Since the revision becomes an opaque identifier with future GPUs, move away from treating different ranges of bits as having a given meaning. This means that we need to explicitly list different patch revisions in the device table. Signed-off-by: Rob Clark <robdclark@chromium.org> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Patchwork: https://patchwork.freedesktop.org/patch/549782/
1 parent b42ab85 commit 90b593c

File tree

7 files changed

+115
-105
lines changed

7 files changed

+115
-105
lines changed

drivers/gpu/drm/msm/adreno/a4xx_gpu.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ static void a4xx_enable_hwcg(struct msm_gpu *gpu)
145145
gpu_write(gpu, REG_A4XX_RBBM_CLOCK_DELAY_HLSQ, 0x00220000);
146146
/* Early A430's have a timing issue with SP/TP power collapse;
147147
disabling HW clock gating prevents it. */
148-
if (adreno_is_a430(adreno_gpu) && adreno_gpu->rev.patchid < 2)
148+
if (adreno_is_a430(adreno_gpu) && adreno_patchid(adreno_gpu) < 2)
149149
gpu_write(gpu, REG_A4XX_RBBM_CLOCK_CTL, 0);
150150
else
151151
gpu_write(gpu, REG_A4XX_RBBM_CLOCK_CTL, 0xAAAAAAAA);

drivers/gpu/drm/msm/adreno/a5xx_gpu.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1770,7 +1770,7 @@ struct msm_gpu *a5xx_gpu_init(struct drm_device *dev)
17701770

17711771
nr_rings = 4;
17721772

1773-
if (adreno_cmp_rev(ADRENO_REV(5, 1, 0, ANY_ID), config->rev))
1773+
if (config->info->revn == 510)
17741774
nr_rings = 1;
17751775

17761776
ret = adreno_gpu_init(dev, pdev, adreno_gpu, &funcs, nr_rings);

drivers/gpu/drm/msm/adreno/a5xx_power.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ static void a540_lm_setup(struct msm_gpu *gpu)
179179

180180
/* The battery current limiter isn't enabled for A540 */
181181
config = AGC_LM_CONFIG_BCL_DISABLED;
182-
config |= adreno_gpu->rev.patchid << AGC_LM_CONFIG_GPU_VERSION_SHIFT;
182+
config |= adreno_patchid(adreno_gpu) << AGC_LM_CONFIG_GPU_VERSION_SHIFT;
183183

184184
/* For now disable GPMU side throttling */
185185
config |= AGC_LM_CONFIG_THROTTLE_DISABLE;

drivers/gpu/drm/msm/adreno/a6xx_gmu.c

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -790,10 +790,16 @@ static int a6xx_gmu_fw_start(struct a6xx_gmu *gmu, unsigned int state)
790790
gmu_write(gmu, REG_A6XX_GMU_AHB_FENCE_RANGE_0,
791791
(1 << 31) | (0xa << 18) | (0xa0));
792792

793-
chipid = adreno_gpu->rev.core << 24;
794-
chipid |= adreno_gpu->rev.major << 16;
795-
chipid |= adreno_gpu->rev.minor << 12;
796-
chipid |= adreno_gpu->rev.patchid << 8;
793+
/*
794+
* Note that the GMU has a slightly different layout for
795+
* chip_id, for whatever reason, so a bit of massaging
796+
* is needed. The upper 16b are the same, but minor and
797+
* patchid are packed in four bits each with the lower
798+
* 8b unused:
799+
*/
800+
chipid = adreno_gpu->chip_id & 0xffff0000;
801+
chipid |= (adreno_gpu->chip_id << 4) & 0xf000; /* minor */
802+
chipid |= (adreno_gpu->chip_id << 8) & 0x0f00; /* patchid */
797803

798804
gmu_write(gmu, REG_A6XX_GMU_HFI_SFR_ADDR, chipid);
799805

0 commit comments

Comments
 (0)