On Thu, Jul 23, 2020 at 04:09:38PM +0300, Georgi Djakov wrote: > Implement a function to parse the arguments of the "interconnects" DT > property and populate the interconnect path tags if this information > is available. > > Signed-off-by: Georgi Djakov <georgi.djakov@xxxxxxxxxx> > --- > drivers/interconnect/qcom/icc-rpmh.c | 27 +++++++++++++++++++++++++++ > drivers/interconnect/qcom/icc-rpmh.h | 1 + > 2 files changed, 28 insertions(+) > > diff --git a/drivers/interconnect/qcom/icc-rpmh.c b/drivers/interconnect/qcom/icc-rpmh.c > index 3ac5182c9ab2..44144fabec32 100644 > --- a/drivers/interconnect/qcom/icc-rpmh.c > +++ b/drivers/interconnect/qcom/icc-rpmh.c > @@ -6,6 +6,8 @@ > #include <linux/interconnect.h> > #include <linux/interconnect-provider.h> > #include <linux/module.h> > +#include <linux/of.h> > +#include <linux/slab.h> > > #include "bcm-voter.h" > #include "icc-rpmh.h" > @@ -92,6 +94,31 @@ int qcom_icc_set(struct icc_node *src, struct icc_node *dst) > } > EXPORT_SYMBOL_GPL(qcom_icc_set); > > +struct icc_node_data *qcom_icc_xlate_extended(struct of_phandle_args *spec, void *data) > +{ > + struct icc_node_data *ndata; > + struct icc_node *node; > + > + if (!spec) > + return ERR_PTR(-EINVAL); > + > + node = of_icc_xlate_onecell(spec, data); > + if (IS_ERR(node)) > + return ERR_CAST(node); > + > + ndata = kzalloc(sizeof(*ndata), GFP_KERNEL); > + if (!ndata) > + return ERR_PTR(-ENOMEM); > + > + ndata->node = node; > + > + if (spec->args_count == 2) > + ndata->tag = spec->args[1]; Would a higher number of arguments (currently) be an error? Is so, should it be reported?