summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorBjorn Andersson <andersson@kernel.org>2023-01-18 23:59:54 +0100
committerBjorn Andersson <andersson@kernel.org>2023-01-18 23:59:54 +0100
commit62ebb045f029b252d0f7d16ae61a735bd9e88636 (patch)
tree7762d3d9b8bbf59e301e40035d61d68807b77700 /drivers
parentdt-bindings: soc: qcom: smd-rpm: Exclude MSM8936 from glink-channels (diff)
parentPM: AVS: qcom-cpr: Fix an error handling path in cpr_probe() (diff)
downloadlinux-62ebb045f029b252d0f7d16ae61a735bd9e88636.tar.xz
linux-62ebb045f029b252d0f7d16ae61a735bd9e88636.zip
Merge tag 'qcom-driver-fixes-for-6.2' into drivers-for-6.3
Qualcomm driver fixes for v6.2 Updated error handling in the async packer router driver made an optional property required, fix this. Also improve error handling in the probe function of the CPR driver.
Diffstat (limited to 'drivers')
-rw-r--r--drivers/soc/qcom/apr.c3
-rw-r--r--drivers/soc/qcom/cpr.c6
2 files changed, 7 insertions, 2 deletions
diff --git a/drivers/soc/qcom/apr.c b/drivers/soc/qcom/apr.c
index cd44f17dad3d..d51abb462ae5 100644
--- a/drivers/soc/qcom/apr.c
+++ b/drivers/soc/qcom/apr.c
@@ -461,9 +461,10 @@ static int apr_add_device(struct device *dev, struct device_node *np,
goto out;
}
+ /* Protection domain is optional, it does not exist on older platforms */
ret = of_property_read_string_index(np, "qcom,protection-domain",
1, &adev->service_path);
- if (ret < 0) {
+ if (ret < 0 && ret != -EINVAL) {
dev_err(dev, "Failed to read second value of qcom,protection-domain\n");
goto out;
}
diff --git a/drivers/soc/qcom/cpr.c b/drivers/soc/qcom/cpr.c
index e9b854ed1bdf..144ea68e0920 100644
--- a/drivers/soc/qcom/cpr.c
+++ b/drivers/soc/qcom/cpr.c
@@ -1708,12 +1708,16 @@ static int cpr_probe(struct platform_device *pdev)
ret = of_genpd_add_provider_simple(dev->of_node, &drv->pd);
if (ret)
- return ret;
+ goto err_remove_genpd;
platform_set_drvdata(pdev, drv);
cpr_debugfs_init(drv);
return 0;
+
+err_remove_genpd:
+ pm_genpd_remove(&drv->pd);
+ return ret;
}
static int cpr_remove(struct platform_device *pdev)