diff options
| author | Jordan Crouse <jcrouse@codeaurora.org> | 2014-03-10 14:49:04 -0600 |
|---|---|---|
| committer | Jordan Crouse <jcrouse@codeaurora.org> | 2014-03-13 08:42:47 -0600 |
| commit | f6febdbf53bc89a82956c74723a06eb0d735aa07 (patch) | |
| tree | cd6b41b0d886ae7870d2f9ab45e5aa3e777bce15 | |
| parent | 8784b2854acdde208c4bf47876f43cf7073304cb (diff) | |
msm: kgsl: Reduce the delay time for A4XX HLSQ reset in snapshot
The HLSQ reset routine during snapshot read only needs a few cycles
to complete - an AHB register read should do the trick.
Change-Id: Ic0dedbadbdc4dd529a04fd6c363a7eb5f9548eba
Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
| -rw-r--r-- | drivers/gpu/msm/adreno_a4xx_snapshot.c | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/drivers/gpu/msm/adreno_a4xx_snapshot.c b/drivers/gpu/msm/adreno_a4xx_snapshot.c index 0b05b9f3751..b7f68771517 100644 --- a/drivers/gpu/msm/adreno_a4xx_snapshot.c +++ b/drivers/gpu/msm/adreno_a4xx_snapshot.c @@ -305,26 +305,20 @@ static void *a4xx_snapshot_debugbus(struct kgsl_device *device, static void a4xx_reset_hlsq(struct kgsl_device *device) { - unsigned long waittime; - unsigned int val; + unsigned int val, dummy = 0; /* reset cp */ kgsl_regwrite(device, A4XX_RBBM_BLOCK_SW_RESET_CMD, 1 << 20); - waittime = jiffies + 100; - while (time_before(jiffies, waittime)) - ; + kgsl_regread(device, A4XX_RBBM_BLOCK_SW_RESET_CMD, &dummy); /* reset hlsq */ kgsl_regwrite(device, A4XX_RBBM_BLOCK_SW_RESET_CMD, 1 << 25); - waittime = jiffies + 100; - while (time_before(jiffies, waittime)) - ; + kgsl_regread(device, A4XX_RBBM_BLOCK_SW_RESET_CMD, &dummy); /* clear reset bits */ kgsl_regwrite(device, A4XX_RBBM_BLOCK_SW_RESET_CMD, 0); - waittime = jiffies + 100; - while (time_before(jiffies, waittime)) - ; + kgsl_regread(device, A4XX_RBBM_BLOCK_SW_RESET_CMD, &dummy); + /* set HLSQ_TIMEOUT_THRESHOLD.cycle_timeout_limit_sp to 26 */ kgsl_regread(device, A4XX_HLSQ_TIMEOUT_THRESHOLD, &val); |
