Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 624d14d9 authored by Deepak Kumar's avatar Deepak Kumar
Browse files

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: default avatarDeepak Kumar <dkumar@codeaurora.org>
parent 38b1718d
Loading
Loading
Loading
Loading
+17 −1
Original line number Diff line number Diff line
@@ -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);