Message ID | 20200926125146.12859-5-kholk11@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Add support for Adreno 508/509/512 | expand |
On Sat, Sep 26, 2020 at 02:51:43PM +0200, kholk11@gmail.com wrote: > From: AngeloGioacchino Del Regno <kholk11@gmail.com> > > Resetting the VBIF before power collapse is done to avoid getting > bogus FIFO entries during the suspend sequence or subsequent resume, > but this is doable only on Adreno 510 and Adreno 530, as the other > units will tendentially lock up. > Especially on Adreno 508, the GPU will show lockups and very bad > slownesses after processing the first frame. > > Avoiding to execute the RBBM SW Reset before suspend will stop the > lockup issue from happening on at least Adreno 508/509/512. Reviewed-by: Jordan Crouse <jcrouse@codeaurora.org> > Signed-off-by: AngeloGioacchino Del Regno <kholk11@gmail.com> > --- > drivers/gpu/drm/msm/adreno/a5xx_gpu.c | 8 +++++--- > 1 file changed, 5 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/msm/adreno/a5xx_gpu.c b/drivers/gpu/drm/msm/adreno/a5xx_gpu.c > index 9bcbf6cd5a28..00df5de3c8e3 100644 > --- a/drivers/gpu/drm/msm/adreno/a5xx_gpu.c > +++ b/drivers/gpu/drm/msm/adreno/a5xx_gpu.c > @@ -1306,10 +1306,12 @@ static int a5xx_pm_suspend(struct msm_gpu *gpu) > > /* > * Reset the VBIF before power collapse to avoid issue with FIFO > - * entries > + * entries on Adreno A510 and A530 (the others will tend to lock up) > */ > - gpu_write(gpu, REG_A5XX_RBBM_BLOCK_SW_RESET_CMD, 0x003C0000); > - gpu_write(gpu, REG_A5XX_RBBM_BLOCK_SW_RESET_CMD, 0x00000000); > + if (adreno_is_a510(adreno_gpu) || adreno_is_a530(adreno_gpu)) { > + gpu_write(gpu, REG_A5XX_RBBM_BLOCK_SW_RESET_CMD, 0x003C0000); > + gpu_write(gpu, REG_A5XX_RBBM_BLOCK_SW_RESET_CMD, 0x00000000); > + } > > return msm_gpu_pm_suspend(gpu); > } > -- > 2.28.0 >
diff --git a/drivers/gpu/drm/msm/adreno/a5xx_gpu.c b/drivers/gpu/drm/msm/adreno/a5xx_gpu.c index 9bcbf6cd5a28..00df5de3c8e3 100644 --- a/drivers/gpu/drm/msm/adreno/a5xx_gpu.c +++ b/drivers/gpu/drm/msm/adreno/a5xx_gpu.c @@ -1306,10 +1306,12 @@ static int a5xx_pm_suspend(struct msm_gpu *gpu) /* * Reset the VBIF before power collapse to avoid issue with FIFO - * entries + * entries on Adreno A510 and A530 (the others will tend to lock up) */ - gpu_write(gpu, REG_A5XX_RBBM_BLOCK_SW_RESET_CMD, 0x003C0000); - gpu_write(gpu, REG_A5XX_RBBM_BLOCK_SW_RESET_CMD, 0x00000000); + if (adreno_is_a510(adreno_gpu) || adreno_is_a530(adreno_gpu)) { + gpu_write(gpu, REG_A5XX_RBBM_BLOCK_SW_RESET_CMD, 0x003C0000); + gpu_write(gpu, REG_A5XX_RBBM_BLOCK_SW_RESET_CMD, 0x00000000); + } return msm_gpu_pm_suspend(gpu); }