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

Commit 434b87cb authored by Rajesh Kemisetti's avatar Rajesh Kemisetti Committed by Lynus Vaz
Browse files

msm: kgsl: Check GPMU presence before accessing power counters



Some targets do not have GPMU block in GPU and register read
or write into those registers is not valid.

To prevent this, check GPMU presence and then proceed.

Change-Id: I0992125af8cda4b8235aedb64f6ef8868ae95f20
Signed-off-by: default avatarRajesh Kemisetti <rajeshk@codeaurora.org>
parent 55a453a0
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -638,6 +638,9 @@ static void _perfcounter_enable_vbif_pwr(struct adreno_device *adreno_dev,
static void _power_counter_enable_alwayson(struct adreno_device *adreno_dev,
				struct adreno_perfcounters *counters)
{
	if (!ADRENO_FEATURE(adreno_dev, ADRENO_GPMU))
		return;

	kgsl_regwrite(KGSL_DEVICE(adreno_dev),
		A5XX_GPMU_ALWAYS_ON_COUNTER_RESET, 1);
	counters->groups[KGSL_PERFCOUNTER_GROUP_ALWAYSON_PWR].regs[0].value = 0;
@@ -674,6 +677,9 @@ static void _power_counter_enable_default(struct adreno_device *adreno_dev,
	struct kgsl_device *device = KGSL_DEVICE(adreno_dev);
	struct adreno_perfcount_register *reg;

	if (!ADRENO_FEATURE(adreno_dev, ADRENO_GPMU))
		return;

	reg = &counters->groups[group].regs[counter];
	kgsl_regwrite(device, reg->select, countable);
	kgsl_regwrite(device, A5XX_GPMU_POWER_COUNTER_ENABLE, 1);
@@ -927,6 +933,9 @@ static uint64_t _perfcounter_read_pwrcntr(struct adreno_device *adreno_dev,
	struct adreno_perfcount_register *reg;
	unsigned int lo = 0, hi = 0;

	if (!ADRENO_FEATURE(adreno_dev, ADRENO_GPMU))
		return 0;

	reg = &group->regs[counter];

	kgsl_regread(device, reg->offset, &lo);