drm/etnaviv: avoid runtime PM usage in etnaviv_gpu_bind
authorLucas Stach <l.stach@pengutronix.de>
Wed, 7 Jun 2023 13:02:20 +0000 (15:02 +0200)
committerLucas Stach <l.stach@pengutronix.de>
Mon, 17 Jul 2023 09:32:21 +0000 (11:32 +0200)
Nothing in this callpath actually touches the GPU, so there is no reason
to get it out of suspend state here. Only if runtime PM isn't enabled at
all we must make sure to enable the clocks, so the GPU init routine can
access the GPU later on.

This also removes the need to guard against the state where the driver
isn't fully initialized yet in the runtime PM resume handler.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Christian Gmeiner <cgmeiner@igalia.com>
drivers/gpu/drm/etnaviv/etnaviv_gpu.c

index 73ce95df4cc0b85af490c1f9275a9550766bea0d..d3187ca9e1a318f640a857e59623f04e2d7f587e 100644 (file)
@@ -1743,13 +1743,11 @@ static int etnaviv_gpu_bind(struct device *dev, struct device *master,
        if (ret)
                goto out_workqueue;
 
-       if (IS_ENABLED(CONFIG_PM))
-               ret = pm_runtime_get_sync(gpu->dev);
-       else
+       if (!IS_ENABLED(CONFIG_PM)) {
                ret = etnaviv_gpu_clk_enable(gpu);
-       if (ret < 0)
-               goto out_sched;
-
+               if (ret < 0)
+                       goto out_sched;
+       }
 
        gpu->drm = drm;
        gpu->fence_context = dma_fence_context_alloc(1);
@@ -1761,9 +1759,6 @@ static int etnaviv_gpu_bind(struct device *dev, struct device *master,
 
        priv->gpu[priv->num_gpus++] = gpu;
 
-       pm_runtime_mark_last_busy(gpu->dev);
-       pm_runtime_put_autosuspend(gpu->dev);
-
        return 0;
 
 out_sched:
@@ -1944,7 +1939,7 @@ static int etnaviv_gpu_rpm_resume(struct device *dev)
                return ret;
 
        /* Re-initialise the basic hardware state */
-       if (gpu->drm && gpu->initialized) {
+       if (gpu->initialized) {
                ret = etnaviv_gpu_hw_resume(gpu);
                if (ret) {
                        etnaviv_gpu_clk_disable(gpu);