diff options
| author | Linux Build Service Account <lnxbuild@localhost> | 2017-01-30 07:05:31 -0800 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2017-01-30 07:05:30 -0800 |
| commit | d9f73b621eedcb036539a80f9039d7dd204751c7 (patch) | |
| tree | d213090095ed355a66265cb91acbb58e80e1bcc5 /drivers/gpu | |
| parent | 7b317a25ea6178785e398b93bfb8dde009045702 (diff) | |
| parent | 832c38f7301917a3d8cf3636495e357a13de7175 (diff) | |
Merge "msm: kgsl: Check GPMU presence before accessing power counters"
Diffstat (limited to 'drivers/gpu')
| -rw-r--r-- | drivers/gpu/msm/adreno_perfcounter.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/gpu/msm/adreno_perfcounter.c b/drivers/gpu/msm/adreno_perfcounter.c index f5f99c3ebb4a..5fecdcfb6364 100644 --- a/drivers/gpu/msm/adreno_perfcounter.c +++ b/drivers/gpu/msm/adreno_perfcounter.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2002,2007-2016, The Linux Foundation. All rights reserved. +/* Copyright (c) 2002,2007-2017, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and @@ -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); |
