Message ID | 20200723130942.28491-3-georgi.djakov@linaro.org (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
Series | interconnect: Introduce xlate_extended() | expand |
Hey Georgi, Thanks for the patch! On 7/23/20 6:39 PM, 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@linaro.org> > --- > 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); > + you could probably skip ^^ check Tested-by: Sibi Sankar <sibis@codeaurora.org> Reviewed-by: Sibi Sankar <sibis@codeaurora.org> > + 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]; > + > + return ndata; > +} > +EXPORT_SYMBOL_GPL(qcom_icc_xlate_extended); > + > /** > * qcom_icc_bcm_init - populates bcm aux data and connect qnodes > * @bcm: bcm to be initialized > diff --git a/drivers/interconnect/qcom/icc-rpmh.h b/drivers/interconnect/qcom/icc-rpmh.h > index 903d25e61984..1dac39bc255d 100644 > --- a/drivers/interconnect/qcom/icc-rpmh.h > +++ b/drivers/interconnect/qcom/icc-rpmh.h > @@ -143,6 +143,7 @@ struct qcom_icc_desc { > int qcom_icc_aggregate(struct icc_node *node, u32 tag, u32 avg_bw, > u32 peak_bw, u32 *agg_avg, u32 *agg_peak); > int qcom_icc_set(struct icc_node *src, struct icc_node *dst); > +struct icc_node_data *qcom_icc_xlate_extended(struct of_phandle_args *spec, void *data); > int qcom_icc_bcm_init(struct qcom_icc_bcm *bcm, struct device *dev); > void qcom_icc_pre_aggregate(struct icc_node *node); > > > >
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@linaro.org> > --- > 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?
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]; + + return ndata; +} +EXPORT_SYMBOL_GPL(qcom_icc_xlate_extended); + /** * qcom_icc_bcm_init - populates bcm aux data and connect qnodes * @bcm: bcm to be initialized diff --git a/drivers/interconnect/qcom/icc-rpmh.h b/drivers/interconnect/qcom/icc-rpmh.h index 903d25e61984..1dac39bc255d 100644 --- a/drivers/interconnect/qcom/icc-rpmh.h +++ b/drivers/interconnect/qcom/icc-rpmh.h @@ -143,6 +143,7 @@ struct qcom_icc_desc { int qcom_icc_aggregate(struct icc_node *node, u32 tag, u32 avg_bw, u32 peak_bw, u32 *agg_avg, u32 *agg_peak); int qcom_icc_set(struct icc_node *src, struct icc_node *dst); +struct icc_node_data *qcom_icc_xlate_extended(struct of_phandle_args *spec, void *data); int qcom_icc_bcm_init(struct qcom_icc_bcm *bcm, struct device *dev); void qcom_icc_pre_aggregate(struct icc_node *node);
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@linaro.org> --- drivers/interconnect/qcom/icc-rpmh.c | 27 +++++++++++++++++++++++++++ drivers/interconnect/qcom/icc-rpmh.h | 1 + 2 files changed, 28 insertions(+)