diff options
Diffstat (limited to 'drivers/gpu/drm/tegra/gr2d.c')
| -rw-r--r-- | drivers/gpu/drm/tegra/gr2d.c | 19 | 
1 files changed, 9 insertions, 10 deletions
| diff --git a/drivers/gpu/drm/tegra/gr2d.c b/drivers/gpu/drm/tegra/gr2d.c index 50f77fddda54..a160d01f26e1 100644 --- a/drivers/gpu/drm/tegra/gr2d.c +++ b/drivers/gpu/drm/tegra/gr2d.c @@ -7,7 +7,8 @@  #include <linux/delay.h>  #include <linux/iommu.h>  #include <linux/module.h> -#include <linux/of_device.h> +#include <linux/of.h> +#include <linux/platform_device.h>  #include <linux/pm_runtime.h>  #include <linux/reset.h> @@ -70,22 +71,15 @@ static int gr2d_init(struct host1x_client *client)  		goto free;  	} -	pm_runtime_enable(client->dev); -	pm_runtime_use_autosuspend(client->dev); -	pm_runtime_set_autosuspend_delay(client->dev, 200); -  	err = tegra_drm_register_client(dev->dev_private, drm);  	if (err < 0) {  		dev_err(client->dev, "failed to register client: %d\n", err); -		goto disable_rpm; +		goto detach_iommu;  	}  	return 0; -disable_rpm: -	pm_runtime_dont_use_autosuspend(client->dev); -	pm_runtime_force_suspend(client->dev); - +detach_iommu:  	host1x_client_iommu_detach(client);  free:  	host1x_syncpt_put(client->syncpts[0]); @@ -299,6 +293,7 @@ static void gr2d_remove(struct platform_device *pdev)  {  	struct gr2d *gr2d = platform_get_drvdata(pdev); +	pm_runtime_disable(&pdev->dev);  	host1x_client_unregister(&gr2d->client.base);  } @@ -372,6 +367,10 @@ static int __maybe_unused gr2d_runtime_resume(struct device *dev)  		goto disable_clk;  	} +	pm_runtime_enable(dev); +	pm_runtime_use_autosuspend(dev); +	pm_runtime_set_autosuspend_delay(dev, 500); +  	return 0;  disable_clk: | 
