Message ID | 20230703-topic-8250_qup_icc-v1-4-fea39aa07525@linaro.org |
---|---|
State | New |
Headers | show |
Series | Add interconnects to QUPs on SM8250 | expand |
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@linaro.org> > --- > 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@linaro.org> > - 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; >
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]); - 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;
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@linaro.org> --- drivers/soc/qcom/qcom-geni-se.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)