From d9aae10c87c7b87edc12af99b2087092b6c777cb Mon Sep 17 00:00:00 2001 From: Vivek Aknurwar Date: Thu, 9 Sep 2021 18:44:25 -0700 Subject: [PATCH] interconnect: qcom: icc-rpmh: Add skip-qos node property Add skip-qos node property to skip qos settings which happens on each provider probe. Early in presil this property is useful to skip qos settings as not all needed clocks are voted/set on and device ends up unclocked access. This property will help to deliver interconnect earlier without qos settings which can be enabled when things are ready before bring up. Change-Id: I9619f651f40f49ec03d9ea0dc7c45b3b13ffae6c Signed-off-by: Vivek Aknurwar Signed-off-by: Mike Tipton --- drivers/interconnect/qcom/icc-rpmh.c | 14 +++++++++----- drivers/interconnect/qcom/icc-rpmh.h | 1 + 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/drivers/interconnect/qcom/icc-rpmh.c b/drivers/interconnect/qcom/icc-rpmh.c index 0b4e6124c709..2f1d1ccf64e3 100644 --- a/drivers/interconnect/qcom/icc-rpmh.c +++ b/drivers/interconnect/qcom/icc-rpmh.c @@ -330,6 +330,7 @@ int qcom_icc_rpmh_probe(struct platform_device *pdev) return -ENOMEM; qp->stub = of_property_read_bool(pdev->dev.of_node, "qcom,stub"); + qp->skip_qos = of_property_read_bool(pdev->dev.of_node, "qcom,skip-qos"); provider = &qp->provider; provider->dev = dev; @@ -376,9 +377,11 @@ int qcom_icc_rpmh_probe(struct platform_device *pdev) for (i = 0; i < qp->num_bcms; i++) qcom_icc_bcm_init(qp->bcms[i], dev); - ret = enable_qos_deps(qp); - if (ret) - return ret; + if (!qp->skip_qos) { + ret = enable_qos_deps(qp); + if (ret) + return ret; + } for (i = 0; i < num_nodes; i++) { qn = qnodes[i]; @@ -393,7 +396,7 @@ int qcom_icc_rpmh_probe(struct platform_device *pdev) goto err; } - if (qn->qosbox) + if (qn->qosbox && !qp->skip_qos) qn->noc_ops->set_qos(qn); node->name = qn->name; @@ -406,7 +409,8 @@ int qcom_icc_rpmh_probe(struct platform_device *pdev) data->nodes[i] = node; } - disable_qos_deps(qp); + if (!qp->skip_qos) + disable_qos_deps(qp); data->num_nodes = num_nodes; platform_set_drvdata(pdev, qp); diff --git a/drivers/interconnect/qcom/icc-rpmh.h b/drivers/interconnect/qcom/icc-rpmh.h index b75609a55e9a..a5cb4485d0de 100644 --- a/drivers/interconnect/qcom/icc-rpmh.h +++ b/drivers/interconnect/qcom/icc-rpmh.h @@ -33,6 +33,7 @@ struct qcom_icc_provider { struct bcm_voter **voters; size_t num_voters; bool stub; + bool skip_qos; }; /**