mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-16 18:08:20 +00:00
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>
This commit is contained in:
parent
b3d57c5582
commit
f45b94ffc5
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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,
|
||||
|
Loading…
x
Reference in New Issue
Block a user