mirror of
https://github.com/openwrt/openwrt.git
synced 2025-02-22 18:02:46 +00:00
Add initial support for new target with the initial patch for ethernet support using pending upstream patches for PCS UNIPHY, PPE and EDMA. Only initramfs currently working as support for new SPI/NAND implementation, USB, CPUFreq and other devices is still unfinished and needs to be evaluated. Link: https://github.com/openwrt/openwrt/pull/17725 Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
86 lines
3.0 KiB
Diff
86 lines
3.0 KiB
Diff
From f45b94ffc5f1204b35b5c695ed265b1385951616 Mon Sep 17 00:00:00 2001
|
|
From: Varadarajan Narayanan <quic_varada@quicinc.com>
|
|
Date: Tue, 30 Apr 2024 12:12:09 +0530
|
|
Subject: [PATCH] interconnect: icc-clk: Specify master/slave ids
|
|
|
|
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, modify the driver to use the master/slave ids provided by
|
|
the caller instead of auto generating.
|
|
|
|
Also, update clk-cbf-8996 accordingly.
|
|
|
|
Acked-by: Georgi Djakov <djakov@kernel.org>
|
|
Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com>
|
|
Link: https://lore.kernel.org/r/20240430064214.2030013-2-quic_varada@quicinc.com
|
|
Signed-off-by: Bjorn Andersson <andersson@kernel.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(-)
|
|
|
|
diff --git a/drivers/clk/qcom/clk-cbf-8996.c b/drivers/clk/qcom/clk-cbf-8996.c
|
|
index 76bf523431b8..f5fd1ff9c6c9 100644
|
|
--- a/drivers/clk/qcom/clk-cbf-8996.c
|
|
+++ b/drivers/clk/qcom/clk-cbf-8996.c
|
|
@@ -226,7 +226,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,
|
|
--
|
|
2.45.2
|
|
|