Commit dc8276b7 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab
Browse files

staging: media: tegra-vde: use pm_runtime_resume_and_get()



Commit dd8088d5 ("PM: runtime: Add pm_runtime_resume_and_get to deal with usage counter")
added pm_runtime_resume_and_get() in order to automatically handle
dev->power.usage_count decrement on errors.

Use the new API, in order to cleanup the error check logic.

Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent e21e1e94
Loading
Loading
Loading
Loading
+18 −3
Original line number Diff line number Diff line
@@ -775,9 +775,9 @@ static int tegra_vde_ioctl_decode_h264(struct tegra_vde *vde,
	if (ret)
		goto release_dpb_frames;

	ret = pm_runtime_get_sync(dev);
	ret = pm_runtime_resume_and_get(dev);
	if (ret < 0)
		goto put_runtime_pm;
		goto unlock;

	/*
	 * We rely on the VDE registers reset value, otherwise VDE
@@ -843,6 +843,8 @@ static int tegra_vde_ioctl_decode_h264(struct tegra_vde *vde,
put_runtime_pm:
	pm_runtime_mark_last_busy(dev);
	pm_runtime_put_autosuspend(dev);

unlock:
	mutex_unlock(&vde->lock);

release_dpb_frames:
@@ -1069,11 +1071,19 @@ static int tegra_vde_probe(struct platform_device *pdev)
	 * power-cycle it in order to put hardware into a predictable lower
	 * power state.
	 */
	pm_runtime_get_sync(dev);
	if (pm_runtime_resume_and_get(dev) < 0)
		goto err_pm_runtime;

	pm_runtime_put(dev);

	return 0;

err_pm_runtime:
	misc_deregister(&vde->miscdev);

	pm_runtime_dont_use_autosuspend(dev);
	pm_runtime_disable(dev);

err_deinit_iommu:
	tegra_vde_iommu_deinit(vde);

@@ -1089,7 +1099,12 @@ static int tegra_vde_remove(struct platform_device *pdev)
	struct tegra_vde *vde = platform_get_drvdata(pdev);
	struct device *dev = &pdev->dev;

	/*
	 * As it increments RPM usage_count even on errors, we don't need to
	 * check the returned code here.
	 */
	pm_runtime_get_sync(dev);

	pm_runtime_dont_use_autosuspend(dev);
	pm_runtime_disable(dev);