From 169639262a95e72d440d178031d10113aba859ed Mon Sep 17 00:00:00 2001 From: Odelu Kukatla Date: Wed, 10 Feb 2021 13:04:04 +0530 Subject: [PATCH] interconnect: qcom: shima: Configure QoS during probe Configure QoS settings during probe for all nodes instead of for each node individually upon first client request. Change-Id: I10fd747460165352188c075e999c62b13e1122c2 Signed-off-by: Odelu Kukatla --- drivers/interconnect/qcom/shima.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/drivers/interconnect/qcom/shima.c b/drivers/interconnect/qcom/shima.c index 8ef681330ffc..ad6c4bb014ce 100644 --- a/drivers/interconnect/qcom/shima.c +++ b/drivers/interconnect/qcom/shima.c @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-only /* - * Copyright (c) 2020, The Linux Foundation. All rights reserved. + * Copyright (c) 2020-2021, The Linux Foundation. All rights reserved. * */ @@ -2548,6 +2548,13 @@ static int qnoc_probe(struct platform_device *pdev) if (qp->num_clks < 0) return qp->num_clks; + ret = clk_bulk_prepare_enable(qp->num_clks, qp->clks); + + if (ret) { + dev_err(&pdev->dev, "failed to enable clocks\n"); + return ret; + } + for (i = 0; i < num_nodes; i++) { size_t j; @@ -2562,6 +2569,11 @@ static int qnoc_probe(struct platform_device *pdev) goto err; } + if (qnodes[i]->qosbox) { + qnodes[i]->noc_ops->set_qos(qnodes[i]); + qnodes[i]->qosbox->initialized = true; + } + node->name = qnodes[i]->name; node->data = qnodes[i]; icc_node_add(node, provider); @@ -2577,6 +2589,8 @@ static int qnoc_probe(struct platform_device *pdev) } data->num_nodes = num_nodes; + clk_bulk_disable_unprepare(qp->num_clks, qp->clks); + for (i = 0; i < qp->num_bcms; i++) qcom_icc_bcm_init(qp->bcms[i], &pdev->dev);