The GPU 'CONFIG' registers used to work around hardware issues are
cleared on reset so need to be programmed every time the GPU is reset.
However panfrost_device_reset() failed to do this.
To avoid this in future instead move the call to
panfrost_gpu_init_quirks() to panfrost_gpu_power_on() so that the
regsiters are always programmed just before the cores are powered.
Fixes: f3ba91228e8e ("drm/panfrost: Add initial panfrost driver")
Signed-off-by: Steven Price <[email protected]>
---
drivers/gpu/drm/panfrost/panfrost_gpu.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/panfrost/panfrost_gpu.c b/drivers/gpu/drm/panfrost/panfrost_gpu.c
index e0f190e43813..6d17d3cbd1df 100644
--- a/drivers/gpu/drm/panfrost/panfrost_gpu.c
+++ b/drivers/gpu/drm/panfrost/panfrost_gpu.c
@@ -305,6 +305,8 @@ void panfrost_gpu_power_on(struct panfrost_device *pfdev)
int ret;
u32 val;
+ panfrost_gpu_init_quirks(pfdev);
+
/* Just turn on everything for now */
gpu_write(pfdev, L2_PWRON_LO, pfdev->features.l2_present);
ret = readl_relaxed_poll_timeout(pfdev->iomem + L2_READY_LO,
@@ -356,7 +358,6 @@ int panfrost_gpu_init(struct panfrost_device *pfdev)
return err;
}
- panfrost_gpu_init_quirks(pfdev);
panfrost_gpu_power_on(pfdev);
return 0;
--
2.20.1
Reviewed-by: Alyssa Rosenzweig <[email protected]>
> diff --git a/drivers/gpu/drm/panfrost/panfrost_gpu.c b/drivers/gpu/drm/panfrost/panfrost_gpu.c
> index e0f190e43813..6d17d3cbd1df 100644
> --- a/drivers/gpu/drm/panfrost/panfrost_gpu.c
> +++ b/drivers/gpu/drm/panfrost/panfrost_gpu.c
> @@ -305,6 +305,8 @@ void panfrost_gpu_power_on(struct panfrost_device *pfdev)
> int ret;
> u32 val;
>
> + panfrost_gpu_init_quirks(pfdev);
> +
> /* Just turn on everything for now */
> gpu_write(pfdev, L2_PWRON_LO, pfdev->features.l2_present);
> ret = readl_relaxed_poll_timeout(pfdev->iomem + L2_READY_LO,
> @@ -356,7 +358,6 @@ int panfrost_gpu_init(struct panfrost_device *pfdev)
> return err;
> }
>
> - panfrost_gpu_init_quirks(pfdev);
> panfrost_gpu_power_on(pfdev);
>
> return 0;
> --
> 2.20.1
>
On 09/09/2020 13:29, Steven Price wrote:
> The GPU 'CONFIG' registers used to work around hardware issues are
> cleared on reset so need to be programmed every time the GPU is reset.
> However panfrost_device_reset() failed to do this.
>
> To avoid this in future instead move the call to
> panfrost_gpu_init_quirks() to panfrost_gpu_power_on() so that the
> regsiters are always programmed just before the cores are powered.
>
> Fixes: f3ba91228e8e ("drm/panfrost: Add initial panfrost driver")
> Signed-off-by: Steven Price <[email protected]>
Applied to drm-misc-next
Steve