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.dja...@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 <si...@codeaurora.org>
Reviewed-by: Sibi Sankar <si...@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);



--
Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc, is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project

Reply via email to