From 624d14d9f04a0b116a4e59be3967743d5c604aa7 Mon Sep 17 00:00:00 2001 From: Deepak Kumar Date: Fri, 11 Sep 2020 16:13:53 +0530 Subject: [PATCH] msm: kgsl: Pass chipid in correct format to gmufw for A660 variant GMU firmware to differentiate between A660 and A660 GPU variant expects target version in bit 28-31. In device tree, target version is specified in upper nibble of patch to align with usermode driver expectation. This change correctly formats the chipid before passing it to GMU firmware to avoid boot-up issues. Change-Id: I2d2ab742afedca849f87c7ba44c8184afe8a6737 Signed-off-by: Deepak Kumar --- drivers/gpu/msm/adreno_a6xx_gmu.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/msm/adreno_a6xx_gmu.c b/drivers/gpu/msm/adreno_a6xx_gmu.c index e2f8c0015c8e..21a34d2e8e54 100644 --- a/drivers/gpu/msm/adreno_a6xx_gmu.c +++ b/drivers/gpu/msm/adreno_a6xx_gmu.c @@ -1377,7 +1377,23 @@ void a6xx_gmu_register_config(struct adreno_device *adreno_dev) * Bit 11-8: patch version */ chipid = chipid | (ADRENO_CHIPID_MINOR(adreno_dev->chipid) << 12) - | (ADRENO_CHIPID_PATCH(adreno_dev->chipid) << 8); + | ((ADRENO_CHIPID_PATCH(adreno_dev->chipid) & 0xf) << 8); + + /* + * For A660 GPU variant, GMU firmware expects chipid as per below + * format to differentiate between A660 and A660 variant. In device + * tree, target version is specified as high nibble of patch to align + * with usermode driver expectation. Format the chipid according to + * firmware requirement. + * + * Bit 11-8: patch version + * Bit 15-12: minor version + * Bit 23-16: major version + * Bit 27-24: core version + * Bit 31-28: target version + */ + if (adreno_is_a660_shima(adreno_dev)) + chipid |= ((ADRENO_CHIPID_PATCH(adreno_dev->chipid) >> 4) << 28); gmu_core_regwrite(device, A6XX_GMU_HFI_SFR_ADDR, chipid);