Re: [PATCH 4/5] soc: qcom: geni-se: Allow any combination of icc paths

From: Dmitry Baryshkov
Date: Mon Jul 03 2023 - 10:31:46 EST


On 03/07/2023 16:31, Konrad Dybcio wrote:
Not all SoCs provide all the usual paths. By the looks of it, at least
SM8150 and SM8250 don't have one that would resemble "qup-core".

Check for the error that icc_get throws and assign a NULL value to each
path that can't be found to effectively allow any combination of icc paths
(which, like previously, includes no icc paths). The ICC APIs gracefully
handle a NULL path by exiting early.

Signed-off-by: Konrad Dybcio <konrad.dybcio@xxxxxxxxxx>
---
drivers/soc/qcom/qcom-geni-se.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/drivers/soc/qcom/qcom-geni-se.c b/drivers/soc/qcom/qcom-geni-se.c
index ba788762835f..a5e2e8925c8e 100644
--- a/drivers/soc/qcom/qcom-geni-se.c
+++ b/drivers/soc/qcom/qcom-geni-se.c
@@ -813,8 +813,13 @@ int geni_icc_get(struct geni_se *se, const char *icc_ddr)
continue;
se->icc_paths[i].path = devm_of_icc_get(se->dev, icc_names[i]);

Would it make sense to add (devm_)of_icc_get_optional instead? I think we already have several usecases for such API call

For this patch:

Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx>

- if (IS_ERR(se->icc_paths[i].path))
- goto err;
+ if (IS_ERR(se->icc_paths[i].path)) {
+ /* Not all SoCs implement all the paths */
+ if (PTR_ERR(se->icc_paths[i].path) == -ENODATA)
+ se->icc_paths[i].path = NULL;
+ else
+ goto err;
+ }
}
return 0;


--
With best wishes
Dmitry