diff options
| author | Oleg Perelet <operelet@codeaurora.org> | 2016-03-02 14:33:58 -0800 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-25 16:02:57 -0700 |
| commit | ffed8c4da397255a8d46b7ba756243cd62391b08 (patch) | |
| tree | 18b4fdee67c33580b907d2dac9ec05b0c89720b1 | |
| parent | 78c34e6ea3215ba4cf4f012e582a2cc5bd60212c (diff) | |
msm: kgsl: change ISENSE calibration handshake order
Force ISENSE calibration to stop before starting new calibration.
CRs-Fixed: 973565
Change-Id: I86dcbaa7feaecd630a027c5aca41d62a5855efda
Signed-off-by: Oleg Perelet <operelet@codeaurora.org>
| -rw-r--r-- | drivers/gpu/msm/a5xx_reg.h | 1 | ||||
| -rw-r--r-- | drivers/gpu/msm/adreno_a5xx.c | 12 | ||||
| -rw-r--r-- | drivers/gpu/msm/adreno_a5xx.h | 3 |
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) |
