interconnect: qcom: Fix DT backwards compatibility for QoS
authorOdelu Kukatla <quic_okukatla@quicinc.com>
Thu, 4 Jul 2024 12:55:15 +0000 (18:25 +0530)
committerGeorgi Djakov <djakov@kernel.org>
Thu, 4 Jul 2024 19:43:59 +0000 (22:43 +0300)
Add qos_clks_required flag to skip QoS configuration if clocks property
is not populated in devicetree for providers which require clocks to be
enabled for accessing registers. This is to keep the QoS configuration
backwards compatible with devices that have older DTB.

Reported-by: Bjorn Andersson <andersson@kernel.org>
Closes: https://lore.kernel.org/all/ciji6nlxn752ina4tmh6kwvek52nxpnguomqek6plwvwgvoqef@yrtexkpmn5br/
Signed-off-by: Odelu Kukatla <quic_okukatla@quicinc.com>
Tested-by: Bjorn Andersson <andersson@kernel.org>
Fixes: fbd908bb8bc0 ("interconnect: qcom: sc7280: enable QoS configuration")
Link: https://lore.kernel.org/r/20240704125515.22194-1-quic_okukatla@quicinc.com
Signed-off-by: Georgi Djakov <djakov@kernel.org>
drivers/interconnect/qcom/icc-rpmh.c
drivers/interconnect/qcom/icc-rpmh.h
drivers/interconnect/qcom/sc7280.c

index ceea9522df833e9cddd20c01b7329e7a58b1b5ac..b8f49cfca6e00dbbfb678cf055dbce9acf8a8cb5 100644 (file)
@@ -311,7 +311,7 @@ int qcom_icc_rpmh_probe(struct platform_device *pdev)
                }
 
                qp->num_clks = devm_clk_bulk_get_all(qp->dev, &qp->clks);
-               if (qp->num_clks < 0) {
+               if (qp->num_clks < 0 || (!qp->num_clks && desc->qos_clks_required)) {
                        dev_info(dev, "Skipping QoS, failed to get clk: %d\n", qp->num_clks);
                        goto skip_qos_config;
                }
index 9a5142c704861c544fda16b2ef892d33dcf11102..14db89850fb3d957390d5f0e237390374cc69ed5 100644 (file)
@@ -153,6 +153,7 @@ struct qcom_icc_desc {
        size_t num_nodes;
        struct qcom_icc_bcm * const *bcms;
        size_t num_bcms;
+       bool qos_clks_required;
 };
 
 int qcom_icc_aggregate(struct icc_node *node, u32 tag, u32 avg_bw,
index 759c609a20bfba9ec069e6d00b4f59a03d4e990a..167971f8e8bec3f6bab7f9c70450b208c7fa778b 100644 (file)
@@ -1691,6 +1691,7 @@ static const struct qcom_icc_desc sc7280_aggre1_noc = {
        .num_nodes = ARRAY_SIZE(aggre1_noc_nodes),
        .bcms = aggre1_noc_bcms,
        .num_bcms = ARRAY_SIZE(aggre1_noc_bcms),
+       .qos_clks_required = true,
 };
 
 static struct qcom_icc_bcm * const aggre2_noc_bcms[] = {
@@ -1722,6 +1723,7 @@ static const struct qcom_icc_desc sc7280_aggre2_noc = {
        .num_nodes = ARRAY_SIZE(aggre2_noc_nodes),
        .bcms = aggre2_noc_bcms,
        .num_bcms = ARRAY_SIZE(aggre2_noc_bcms),
+       .qos_clks_required = true,
 };
 
 static struct qcom_icc_bcm * const clk_virt_bcms[] = {