diff --git a/drivers/iommu/arm/arm-smmu/qcom_iommu.c b/drivers/iommu/arm/arm-smmu/qcom_iommu.c index 09f2ee6be988..71251aecc292 100644 --- a/drivers/iommu/arm/arm-smmu/qcom_iommu.c +++ b/drivers/iommu/arm/arm-smmu/qcom_iommu.c @@ -836,20 +836,22 @@ static int qcom_iommu_device_probe(struct platform_device *pdev) platform_set_drvdata(pdev, qcom_iommu); - pm_runtime_enable(dev); + ret = devm_pm_runtime_enable(dev); + if (ret) + return ret; /* register context bank devices, which are child nodes: */ ret = devm_of_platform_populate(dev); if (ret) { dev_err(dev, "Failed to populate iommu contexts\n"); - goto err_pm_disable; + return ret; } ret = iommu_device_sysfs_add(&qcom_iommu->iommu, dev, NULL, dev_name(dev)); if (ret) { dev_err(dev, "Failed to register iommu in sysfs\n"); - goto err_pm_disable; + return ret; } ret = iommu_device_register(&qcom_iommu->iommu, &qcom_iommu_ops, dev); @@ -868,8 +870,6 @@ static int qcom_iommu_device_probe(struct platform_device *pdev) err_sysfs_remove: iommu_device_sysfs_remove(&qcom_iommu->iommu); -err_pm_disable: - pm_runtime_disable(dev); return ret; }