summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/msm/adreno-gpulist.h2
-rw-r--r--drivers/gpu/msm/adreno_a5xx.c62
2 files changed, 34 insertions, 30 deletions
diff --git a/drivers/gpu/msm/adreno-gpulist.h b/drivers/gpu/msm/adreno-gpulist.h
index 78832b8a9712..65beccc5d7fe 100644
--- a/drivers/gpu/msm/adreno-gpulist.h
+++ b/drivers/gpu/msm/adreno-gpulist.h
@@ -254,7 +254,7 @@ static const struct adreno_gpu_core adreno_gpulist[] = {
.gmem_size = SZ_1M,
.num_protected_regs = 0x20,
.busy_mask = 0xFFFFFFFE,
- .gpmufw_name = "a540v1_gpmu.fw2",
+ .gpmufw_name = "a540_gpmu.fw2",
.gpmu_major = 3,
.gpmu_minor = 0,
.gpmu_tsens = 0x000C000D,
diff --git a/drivers/gpu/msm/adreno_a5xx.c b/drivers/gpu/msm/adreno_a5xx.c
index 410662612246..283ba6e447cb 100644
--- a/drivers/gpu/msm/adreno_a5xx.c
+++ b/drivers/gpu/msm/adreno_a5xx.c
@@ -1834,42 +1834,45 @@ static void a540_lm_init(struct adreno_device *adreno_dev)
{
struct kgsl_device *device = KGSL_DEVICE(adreno_dev);
uint32_t agc_lm_config =
- AGC_LM_CONFIG_ENABLE_GPMU_ADAPTIVE | AGC_THROTTLE_SEL_DCS;
+ ((ADRENO_CHIPID_PATCH(adreno_dev->chipid) | 0x3)
+ << AGC_GPU_VERSION_SHIFT);
unsigned int r, i;
- if (!lm_on(adreno_dev))
- return;
-
- agc_lm_config |= ((ADRENO_CHIPID_PATCH(adreno_dev->chipid) | 0x3)
- << AGC_GPU_VERSION_SHIFT);
+ if (lm_on(adreno_dev)) {
+ agc_lm_config |=
+ AGC_LM_CONFIG_ENABLE_GPMU_ADAPTIVE |
+ AGC_THROTTLE_SEL_DCS;
- kgsl_regread(device, A5XX_GPMU_TEMP_SENSOR_CONFIG, &r);
- if (r & GPMU_BCL_ENABLED)
- agc_lm_config |= AGC_BCL_ENABLED;
+ kgsl_regread(device, A5XX_GPMU_TEMP_SENSOR_CONFIG, &r);
+ if (r & GPMU_BCL_ENABLED)
+ agc_lm_config |= AGC_BCL_ENABLED;
- if (r & GPMU_LLM_ENABLED)
- agc_lm_config |= AGC_LLM_ENABLED;
+ if (r & GPMU_LLM_ENABLED)
+ agc_lm_config |= AGC_LLM_ENABLED;
- if ((r & GPMU_ISENSE_STATUS) == GPMU_ISENSE_END_POINT_CAL_ERR) {
- KGSL_CORE_ERR("GPMU: ISENSE end point calibration failure\n");
- agc_lm_config |= AGC_LM_CONFIG_ENABLE_ERROR;
- goto start_agc;
- }
+ if ((r & GPMU_ISENSE_STATUS) == GPMU_ISENSE_END_POINT_CAL_ERR) {
+ KGSL_CORE_ERR(
+ "GPMU: ISENSE end point calibration failure\n");
+ agc_lm_config |= AGC_LM_CONFIG_ENABLE_ERROR;
+ goto start_agc;
+ }
- if (!isense_enable(adreno_dev)) {
- agc_lm_config |= AGC_LM_CONFIG_ENABLE_ERROR;
- goto start_agc;
- }
+ if (!isense_enable(adreno_dev)) {
+ agc_lm_config |= AGC_LM_CONFIG_ENABLE_ERROR;
+ goto start_agc;
+ }
- for (i = 0; i < AMP_CALIBRATION_RETRY_CNT; i++)
- if (isense_cot(adreno_dev))
- cpu_relax();
- else
- break;
+ for (i = 0; i < AMP_CALIBRATION_RETRY_CNT; i++) {
+ if (isense_cot(adreno_dev))
+ cpu_relax();
+ else
+ break;
+ }
- if (i == AMP_CALIBRATION_RETRY_CNT) {
- KGSL_CORE_ERR("GPMU: ISENSE cold trimming failure\n");
- agc_lm_config |= AGC_LM_CONFIG_ENABLE_ERROR;
+ if (i == AMP_CALIBRATION_RETRY_CNT) {
+ KGSL_CORE_ERR("GPMU: ISENSE cold trimming failure\n");
+ agc_lm_config |= AGC_LM_CONFIG_ENABLE_ERROR;
+ }
}
start_agc:
@@ -1891,7 +1894,8 @@ start_agc:
kgsl_regwrite(device, A5XX_GPMU_GPMU_PWR_THRESHOLD,
PWR_THRESHOLD_VALID | lm_limit(adreno_dev));
- wake_llm(adreno_dev);
+ if (lm_on(adreno_dev))
+ wake_llm(adreno_dev);
}