drm/panfrost: Ensure GPU quirks are always initialised
authorSteven Price <steven.price@arm.com>
Wed, 9 Sep 2020 12:29:57 +0000 (13:29 +0100)
committerSteven Price <steven.price@arm.com>
Thu, 10 Sep 2020 13:12:33 +0000 (14:12 +0100)
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 <steven.price@arm.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200909122957.51667-1-steven.price@arm.com
drivers/gpu/drm/panfrost/panfrost_gpu.c

index eea049c..c7c5da5 100644 (file)
@@ -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,
@@ -357,7 +359,6 @@ int panfrost_gpu_init(struct panfrost_device *pfdev)
                return err;
        }
 
-       panfrost_gpu_init_quirks(pfdev);
        panfrost_gpu_power_on(pfdev);
 
        return 0;