From 6ac8145c0ad76e3929aa20d81410ef33bbcaf691 Mon Sep 17 00:00:00 2001 From: Mike Tipton Date: Tue, 9 Feb 2021 13:38:06 -0800 Subject: [PATCH] interconnect: qcom: lahaina: Configure QoS during probe Configure QoS settings during probe for all nodes instead of for each node individually upon first client request. Change-Id: I80a1b95080b22392948428f341d1f5bab82acfd9 Signed-off-by: Mike Tipton --- drivers/interconnect/qcom/lahaina.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/drivers/interconnect/qcom/lahaina.c b/drivers/interconnect/qcom/lahaina.c index 715cd7c8294f..4f4847dfd65b 100644 --- a/drivers/interconnect/qcom/lahaina.c +++ b/drivers/interconnect/qcom/lahaina.c @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-only /* - * Copyright (c) 2019-2020, The Linux Foundation. All rights reserved. + * Copyright (c) 2019-2021, The Linux Foundation. All rights reserved. * */ @@ -2742,6 +2742,12 @@ 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; @@ -2756,6 +2762,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); @@ -2771,6 +2782,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); @@ -2789,6 +2802,7 @@ err: icc_node_destroy(node->id); } + clk_bulk_disable_unprepare(qp->num_clks, qp->clks); clk_bulk_put_all(qp->num_clks, qp->clks); icc_provider_del(provider);