diff options
| author | Oleg Perelet <operelet@codeaurora.org> | 2016-02-29 09:45:27 -0800 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-25 16:02:50 -0700 |
| commit | bcb441b2e2ab723fc0cede2aa8a6751677a32271 (patch) | |
| tree | 59df46ac6ad6a6bfdcdec07f97a026c67463fae2 /drivers/gpu | |
| parent | 5dda28c7bd1bb077ef36068950e7a3870ce35e7b (diff) | |
msm: kgsl: Invoke AGC handshake on A540
Invoke AGC handshake on A540 even when LM is disabled, pass
0 for LM and pass HW patchid.
CRs-Fixed: 973565
Change-Id: I62c32b55bf2e3a1ec498b1ec0a8bebf34ac803a9
Signed-off-by: Oleg Perelet <operelet@codeaurora.org>
Diffstat (limited to 'drivers/gpu')
| -rw-r--r-- | drivers/gpu/msm/adreno-gpulist.h | 2 | ||||
| -rw-r--r-- | drivers/gpu/msm/adreno_a5xx.c | 62 |
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); } |
