summaryrefslogtreecommitdiffstats
path: root/drivers/soc
diff options
context:
space:
mode:
authorBjorn Andersson <andersson@kernel.org>2023-01-18 16:59:54 -0600
committerBjorn Andersson <andersson@kernel.org>2023-01-18 16:59:54 -0600
commit62ebb045f029b252d0f7d16ae61a735bd9e88636 (patch)
tree7762d3d9b8bbf59e301e40035d61d68807b77700 /drivers/soc
parentc525e181fda7f18b694dffb0f22686a4cb407cee (diff)
parent6049aae52392539e505bfb8ccbcff3c26f1d2f0b (diff)
downloadlinux-stable-62ebb045f029b252d0f7d16ae61a735bd9e88636.tar.gz
linux-stable-62ebb045f029b252d0f7d16ae61a735bd9e88636.tar.bz2
linux-stable-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/soc')
-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)