summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/msm/a5xx_reg.h1
-rw-r--r--drivers/gpu/msm/adreno_a5xx.c12
-rw-r--r--drivers/gpu/msm/adreno_a5xx.h3
3 files changed, 13 insertions, 3 deletions
diff --git a/drivers/gpu/msm/a5xx_reg.h b/drivers/gpu/msm/a5xx_reg.h
index 45aabeb3c4a2..da5412c309ad 100644
--- a/drivers/gpu/msm/a5xx_reg.h
+++ b/drivers/gpu/msm/a5xx_reg.h
@@ -907,5 +907,6 @@
#define A5XX_GPU_CS_AMP_CALIBRATION_STATUS1_4 0xC421
#define A5XX_GPU_CS_ENABLE_REG 0xC520
#define A5XX_GPU_CS_AMP_CALIBRATION_CONTROL1 0xC557
+#define A5XX_GPU_CS_AMP_CALIBRATION_DONE 0xC565
#endif /* _A5XX_REG_H */
diff --git a/drivers/gpu/msm/adreno_a5xx.c b/drivers/gpu/msm/adreno_a5xx.c
index 283ba6e447cb..9d37c86aee0f 100644
--- a/drivers/gpu/msm/adreno_a5xx.c
+++ b/drivers/gpu/msm/adreno_a5xx.c
@@ -1665,9 +1665,12 @@ static int isense_cot(struct adreno_device *adreno_dev)
unsigned int r, ret;
struct kgsl_device *device = KGSL_DEVICE(adreno_dev);
-
- kgsl_regwrite(device, A5XX_GPU_CS_AMP_CALIBRATION_CONTROL1,
- AMP_SW_TRIM_START);
+ kgsl_regrmw(device, A5XX_GPU_CS_AMP_CALIBRATION_DONE,
+ SW_OPAMP_CAL_DONE, 0);
+ kgsl_regrmw(device, A5XX_GPU_CS_AMP_CALIBRATION_CONTROL1,
+ AMP_SW_TRIM_START, 0);
+ kgsl_regrmw(device, A5XX_GPU_CS_AMP_CALIBRATION_CONTROL1,
+ AMP_SW_TRIM_START, AMP_SW_TRIM_START);
for (ret = 0; ret < AMP_CALIBRATION_TIMEOUT; ret++) {
kgsl_regread(device, A5XX_GPU_CS_SENSOR_GENERAL_STATUS, &r);
@@ -1694,6 +1697,9 @@ static int isense_cot(struct adreno_device *adreno_dev)
if (r & AMP_CALIBRATION_ERR)
return -EIO;
+ kgsl_regrmw(device, A5XX_GPU_CS_AMP_CALIBRATION_DONE,
+ SW_OPAMP_CAL_DONE, 1);
+
return 0;
}
diff --git a/drivers/gpu/msm/adreno_a5xx.h b/drivers/gpu/msm/adreno_a5xx.h
index 9425eddb517f..6c1b8d141671 100644
--- a/drivers/gpu/msm/adreno_a5xx.h
+++ b/drivers/gpu/msm/adreno_a5xx.h
@@ -123,6 +123,9 @@ void a5xx_hwcg_set(struct adreno_device *adreno_dev, bool on);
#define AMP_OFFSET_CHECK_MAX_ERR BIT(2)
#define AMP_OFFSET_CHECK_MIN_ERR BIT(1)
+/* A5XX_GPU_CS_AMP_CALIBRATION_DONE */
+#define SW_OPAMP_CAL_DONE BIT(0)
+
#define AMP_CALIBRATION_ERR (AMP_OFFSET_CHECK_MIN_ERR | \
AMP_OFFSET_CHECK_MAX_ERR | AMP_OUT_OF_RANGE_ERR)