diff mbox series

[v9,1/6] interconnect: icc-clk: Allow user to specify master/slave ids

Message ID 20240418092305.2337429-2-quic_varada@quicinc.com (mailing list archive)
State Superseded
Headers show
Series Add interconnect driver for IPQ9574 SoC | expand

Commit Message

Varadarajan Narayanan April 18, 2024, 9:23 a.m. UTC
Presently, icc-clk driver autogenerates the master and slave ids.
However, devices with multiple nodes on the interconnect could
have other constraints and may not match with the auto generated
node ids. Hence, allow the driver to provide the preferred master
and slave ids.

Also, update clk-cbf-8996 accordingly.

Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com>
---
v9: squash cbf-msm8996 change into this
v8: Per review feedback, set master/slave ids explicitly. Dont autogenerate 
    https://lore.kernel.org/linux-arm-msm/f1b0d280-6986-4055-a611-2caceb15867d@linaro.org/
---
 drivers/clk/qcom/clk-cbf-8996.c  | 7 ++++++-
 drivers/interconnect/icc-clk.c   | 6 +++---
 include/linux/interconnect-clk.h | 2 ++
 3 files changed, 11 insertions(+), 4 deletions(-)

Comments

Konrad Dybcio April 22, 2024, 11 p.m. UTC | #1
On 4/18/24 11:23, Varadarajan Narayanan wrote:
> Presently, icc-clk driver autogenerates the master and slave ids.
> However, devices with multiple nodes on the interconnect could
> have other constraints and may not match with the auto generated
> node ids. Hence, allow the driver to provide the preferred master
> and slave ids.
> 
> Also, update clk-cbf-8996 accordingly.
> 
> Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com>
> ---
> v9: squash cbf-msm8996 change into this
> v8: Per review feedback, set master/slave ids explicitly. Dont autogenerate
>      https://lore.kernel.org/linux-arm-msm/f1b0d280-6986-4055-a611-2caceb15867d@linaro.org/
> ---
>   drivers/clk/qcom/clk-cbf-8996.c  | 7 ++++++-
>   drivers/interconnect/icc-clk.c   | 6 +++---
>   include/linux/interconnect-clk.h | 2 ++

How is this going to be merged? :/

icc-next? clk-next?

Konrad
Varadarajan Narayanan April 25, 2024, 10:28 a.m. UTC | #2
On Tue, Apr 23, 2024 at 01:00:48AM +0200, Konrad Dybcio wrote:
>
>
> On 4/18/24 11:23, Varadarajan Narayanan wrote:
> > Presently, icc-clk driver autogenerates the master and slave ids.
> > However, devices with multiple nodes on the interconnect could
> > have other constraints and may not match with the auto generated
> > node ids. Hence, allow the driver to provide the preferred master
> > and slave ids.
> >
> > Also, update clk-cbf-8996 accordingly.
> >
> > Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com>
> > ---
> > v9: squash cbf-msm8996 change into this
> > v8: Per review feedback, set master/slave ids explicitly. Dont autogenerate
> >      https://lore.kernel.org/linux-arm-msm/f1b0d280-6986-4055-a611-2caceb15867d@linaro.org/
> > ---
> >   drivers/clk/qcom/clk-cbf-8996.c  | 7 ++++++-
> >   drivers/interconnect/icc-clk.c   | 6 +++---
> >   include/linux/interconnect-clk.h | 2 ++
>
> How is this going to be merged? :/
>
> icc-next? clk-next?

Bjorn,

Can you help answer this.

Thanks
Varada
Georgi Djakov April 25, 2024, 4:21 p.m. UTC | #3
On 25.04.24 13:28, Varadarajan Narayanan wrote:
> On Tue, Apr 23, 2024 at 01:00:48AM +0200, Konrad Dybcio wrote:
>>
>>
>> On 4/18/24 11:23, Varadarajan Narayanan wrote:
>>> Presently, icc-clk driver autogenerates the master and slave ids.
>>> However, devices with multiple nodes on the interconnect could
>>> have other constraints and may not match with the auto generated
>>> node ids. Hence, allow the driver to provide the preferred master
>>> and slave ids.
>>>
>>> Also, update clk-cbf-8996 accordingly.
>>>
>>> Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com>
>>> ---
>>> v9: squash cbf-msm8996 change into this
>>> v8: Per review feedback, set master/slave ids explicitly. Dont autogenerate
>>>       https://lore.kernel.org/linux-arm-msm/f1b0d280-6986-4055-a611-2caceb15867d@linaro.org/
>>> ---
>>>    drivers/clk/qcom/clk-cbf-8996.c  | 7 ++++++-
>>>    drivers/interconnect/icc-clk.c   | 6 +++---
>>>    include/linux/interconnect-clk.h | 2 ++
>>
>> How is this going to be merged? :/
>>
>> icc-next? clk-next?
> 

Merging all patches via Bjorn's clk-qcom tree seems to be the best option, if he agrees of course.

Thanks,
Georgi

> Bjorn,
> 
> Can you help answer this.
> 
> Thanks
> Varada
diff mbox series

Patch

diff --git a/drivers/clk/qcom/clk-cbf-8996.c b/drivers/clk/qcom/clk-cbf-8996.c
index fe24b4abeab4..a077d4403967 100644
--- a/drivers/clk/qcom/clk-cbf-8996.c
+++ b/drivers/clk/qcom/clk-cbf-8996.c
@@ -237,7 +237,12 @@  static int qcom_msm8996_cbf_icc_register(struct platform_device *pdev, struct cl
 	struct device *dev = &pdev->dev;
 	struct clk *clk = devm_clk_hw_get_clk(dev, cbf_hw, "cbf");
 	const struct icc_clk_data data[] = {
-		{ .clk = clk, .name = "cbf", },
+		{
+			.clk = clk,
+			.name = "cbf",
+			.master_id = MASTER_CBF_M4M,
+			.slave_id = SLAVE_CBF_M4M,
+		},
 	};
 	struct icc_provider *provider;
 
diff --git a/drivers/interconnect/icc-clk.c b/drivers/interconnect/icc-clk.c
index d787f2ea36d9..2be193fd7d8f 100644
--- a/drivers/interconnect/icc-clk.c
+++ b/drivers/interconnect/icc-clk.c
@@ -108,7 +108,7 @@  struct icc_provider *icc_clk_register(struct device *dev,
 	for (i = 0, j = 0; i < num_clocks; i++) {
 		qp->clocks[i].clk = data[i].clk;
 
-		node = icc_node_create(first_id + j);
+		node = icc_node_create(first_id + data[i].master_id);
 		if (IS_ERR(node)) {
 			ret = PTR_ERR(node);
 			goto err;
@@ -118,10 +118,10 @@  struct icc_provider *icc_clk_register(struct device *dev,
 		node->data = &qp->clocks[i];
 		icc_node_add(node, provider);
 		/* link to the next node, slave */
-		icc_link_create(node, first_id + j + 1);
+		icc_link_create(node, first_id + data[i].slave_id);
 		onecell->nodes[j++] = node;
 
-		node = icc_node_create(first_id + j);
+		node = icc_node_create(first_id + data[i].slave_id);
 		if (IS_ERR(node)) {
 			ret = PTR_ERR(node);
 			goto err;
diff --git a/include/linux/interconnect-clk.h b/include/linux/interconnect-clk.h
index 0cd80112bea5..170898faaacb 100644
--- a/include/linux/interconnect-clk.h
+++ b/include/linux/interconnect-clk.h
@@ -11,6 +11,8 @@  struct device;
 struct icc_clk_data {
 	struct clk *clk;
 	const char *name;
+	unsigned int master_id;
+	unsigned int slave_id;
 };
 
 struct icc_provider *icc_clk_register(struct device *dev,