[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <gxqjfabcqafqjzzwc3seadfuldqfxlfappsotjbhkbirvorcyd@mahdpv6klwn5>
Date: Thu, 27 Feb 2025 18:16:43 +0200
From: Dmitry Baryshkov <dmitry.baryshkov@...aro.org>
To: Raviteja Laggyshetty <quic_rlaggysh@...cinc.com>
Cc: Georgi Djakov <djakov@...nel.org>, Rob Herring <robh@...nel.org>,
Krzysztof Kozlowski <krzk+dt@...nel.org>, Conor Dooley <conor+dt@...nel.org>,
Bjorn Andersson <andersson@...nel.org>, Konrad Dybcio <konradybcio@...nel.org>,
Odelu Kukatla <quic_okukatla@...cinc.com>, Jeff Johnson <jeff.johnson@....qualcomm.com>,
Mike Tipton <mdtipton@...cinc.com>, Jagadeesh Kona <quic_jkona@...cinc.com>,
Sibi Sankar <quic_sibis@...cinc.com>, linux-arm-msm@...r.kernel.org, linux-pm@...r.kernel.org,
devicetree@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH V9 4/7] interconnect: qcom: icc-rpmh: Add dynamic icc
node id support
On Thu, Feb 27, 2025 at 03:52:10PM +0000, Raviteja Laggyshetty wrote:
> To facilitate dynamic node ID support, the driver now uses
> node pointers for links instead of static node IDs.
> Additionally, the default node ID is set to -1 to prompt
> the ICC framework for dynamic node ID allocation.
>
> Signed-off-by: Raviteja Laggyshetty <quic_rlaggysh@...cinc.com>
> ---
> drivers/interconnect/qcom/icc-rpmh.c | 16 ++++++++++++++--
> drivers/interconnect/qcom/icc-rpmh.h | 3 ++-
> 2 files changed, 16 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/interconnect/qcom/icc-rpmh.c b/drivers/interconnect/qcom/icc-rpmh.c
> index f2d63745be54..2e654917f535 100644
> --- a/drivers/interconnect/qcom/icc-rpmh.c
> +++ b/drivers/interconnect/qcom/icc-rpmh.c
> @@ -285,13 +285,25 @@ int qcom_icc_rpmh_probe(struct platform_device *pdev)
> ret = PTR_ERR(node);
> goto err_remove_nodes;
> }
> + qn->id = node->id;
>
> node->name = qn->name;
> node->data = qn;
> icc_node_add(node, provider);
>
> - for (j = 0; j < qn->num_links; j++)
> - icc_link_create(node, qn->links[j]);
> + for (j = 0; j < qn->num_links; j++) {
> + struct qcom_icc_node *qn_link_node = qn->link_nodes[j];
> + struct icc_node *link_node;
> +
> + if (qn_link_node) {
> + link_node = icc_node_create(qn_link_node->id);
> + qn_link_node->id = link_node->id;
> + icc_link_create(node, qn_link_node->id);
I really don't like the idea of reading the ->id back. I think in the
last cycle I have already asked to add an API to link two nodes instead
of linking a node and an ID. Is there an issue with such an API?
> + } else {
> + /* backward compatibility for target using static IDs */
> + icc_link_create(node, qn->links[j]);
> + }
> + }
>
> data->nodes[i] = node;
> }
> diff --git a/drivers/interconnect/qcom/icc-rpmh.h b/drivers/interconnect/qcom/icc-rpmh.h
> index 82344c734091..cf4aa69c707c 100644
> --- a/drivers/interconnect/qcom/icc-rpmh.h
> +++ b/drivers/interconnect/qcom/icc-rpmh.h
> @@ -95,7 +95,8 @@ struct qcom_icc_qosbox {
> struct qcom_icc_node {
> const char *name;
> u16 links[MAX_LINKS];
> - u16 id;
> + struct qcom_icc_node *link_nodes[MAX_LINKS];
> + int id;
> u16 num_links;
> u16 channels;
> u16 buswidth;
> --
> 2.43.0
>
--
With best wishes
Dmitry
Powered by blists - more mailing lists