From 8aefc79607c9149bb304e5a2f9add5371233de74 Mon Sep 17 00:00:00 2001
From: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date: Mon, 29 May 2023 11:29:10 +0300
Subject: [PATCH 08/12] icc: qcom: allow skipping qnodes

For the sake of backwards-compatibility of NoC devices, allow skipping
some of the qnode indices in the driver.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
---
 kernel/drivers/interconnect/core.c         | 5 +++++
 kernel/drivers/interconnect/qcom/icc-rpm.c | 3 +++
 2 files changed, 8 insertions(+)

diff --git a/kernel/drivers/interconnect/core.c b/kernel/drivers/interconnect/core.c
index 808f6e7a8048..cf3fba451272 100644
--- a/kernel/drivers/interconnect/core.c
+++ b/kernel/drivers/interconnect/core.c
@@ -339,6 +339,11 @@ struct icc_node *of_icc_xlate_onecell(struct of_phandle_args *spec,
 		return ERR_PTR(-EINVAL);
 	}
 
+	if (!icc_data->nodes[idx]) {
+		pr_err("%s: non-defined index %u\n", __func__, idx);
+		return ERR_PTR(-EINVAL);
+	}
+
 	return icc_data->nodes[idx];
 }
 EXPORT_SYMBOL_GPL(of_icc_xlate_onecell);
diff --git a/kernel/drivers/interconnect/qcom/icc-rpm.c b/kernel/drivers/interconnect/qcom/icc-rpm.c
index c211b82af3f5..b211d135fa4d 100644
--- a/kernel/drivers/interconnect/qcom/icc-rpm.c
+++ b/kernel/drivers/interconnect/qcom/icc-rpm.c
@@ -411,6 +411,9 @@ int qnoc_probe(struct platform_device *pdev)
 	for (i = 0; i < num_nodes; i++) {
 		size_t j;
 
+		if (!qnodes[i])
+			continue;
+
 		node = icc_node_create(qnodes[i]->id);
 		if (IS_ERR(node)) {
 			ret = PTR_ERR(node);
-- 
2.39.2

