drm/tegra: Enable runtime PM during probe
[linux-2.6-microblaze.git] / drivers / gpu / drm / tegra / vic.c
index 5da989a..73c356f 100644 (file)
@@ -141,13 +141,9 @@ static int vic_init(struct host1x_client *client)
                goto free_channel;
        }
 
-       pm_runtime_enable(client->dev);
-       pm_runtime_use_autosuspend(client->dev);
-       pm_runtime_set_autosuspend_delay(client->dev, 500);
-
        err = tegra_drm_register_client(tegra, drm);
        if (err < 0)
-               goto disable_rpm;
+               goto free_syncpt;
 
        /*
         * Inherit the DMA parameters (such as maximum segment size) from the
@@ -157,10 +153,7 @@ static int vic_init(struct host1x_client *client)
 
        return 0;
 
-disable_rpm:
-       pm_runtime_dont_use_autosuspend(client->dev);
-       pm_runtime_force_suspend(client->dev);
-
+free_syncpt:
        host1x_syncpt_put(client->syncpts[0]);
 free_channel:
        host1x_channel_put(vic->channel);
@@ -527,6 +520,10 @@ static int vic_probe(struct platform_device *pdev)
                goto exit_falcon;
        }
 
+       pm_runtime_enable(dev);
+       pm_runtime_use_autosuspend(dev);
+       pm_runtime_set_autosuspend_delay(dev, 500);
+
        return 0;
 
 exit_falcon:
@@ -539,8 +536,8 @@ static void vic_remove(struct platform_device *pdev)
 {
        struct vic *vic = platform_get_drvdata(pdev);
 
+       pm_runtime_disable(&pdev->dev);
        host1x_client_unregister(&vic->client.base);
-
        falcon_exit(&vic->falcon);
 }