Re: [PATCH 2/7] interconnect: qcom: Add MSM8976 interconnect provider driver

2024-06-10 Thread Krzysztof Kozlowski
On 09/06/2024 20:20, Adam Skladowski wrote:
> Add driver for interconnect busses found in MSM8976 based platforms.
> The topology consists of four NoCs that are partially controlled
> by a RPM processor.
> 
> Signed-off-by: Adam Skladowski 

> +
> +static const struct qcom_icc_desc msm8976_snoc_mm = {
> + .type = QCOM_ICC_NOC,
> + .nodes = msm8976_snoc_mm_nodes,
> + .num_nodes = ARRAY_SIZE(msm8976_snoc_mm_nodes),
> + .bus_clk_desc = &bus_2_clk,
> + .regmap_cfg = &msm8976_snoc_regmap_config,
> + .qos_offset = 0x7000,
> + .ab_coeff = 154,
> +};
> +
> +static const struct of_device_id msm8976_noc_of_match[] = {
> + { .compatible = "qcom,msm8976-bimc", .data = &msm8976_bimc },
> + { .compatible = "qcom,msm8976-pcnoc", .data = &msm8976_pcnoc },
> + { .compatible = "qcom,msm8976-snoc", .data = &msm8976_snoc },
> + { .compatible = "qcom,msm8976-snoc-mm", .data = &msm8976_snoc_mm },

Please run scripts/checkpatch.pl and fix reported warnings. Then please
run `scripts/checkpatch.pl --strict` and (probably) fix more warnings.
Some warnings can be ignored, especially from --strict run, but the code
here looks like it needs a fix. Feel free to get in touch if the warning
is not clear.

undocumented compatible



Best regards,
Krzysztof




[PATCH 2/7] interconnect: qcom: Add MSM8976 interconnect provider driver

2024-06-09 Thread Adam Skladowski
Add driver for interconnect busses found in MSM8976 based platforms.
The topology consists of four NoCs that are partially controlled
by a RPM processor.

Signed-off-by: Adam Skladowski 
---
 drivers/interconnect/qcom/Kconfig   |9 +
 drivers/interconnect/qcom/Makefile  |2 +
 drivers/interconnect/qcom/msm8976.c | 1443 +++
 3 files changed, 1454 insertions(+)
 create mode 100644 drivers/interconnect/qcom/msm8976.c

diff --git a/drivers/interconnect/qcom/Kconfig 
b/drivers/interconnect/qcom/Kconfig
index 1446a839184e..a0e9c09954ed 100644
--- a/drivers/interconnect/qcom/Kconfig
+++ b/drivers/interconnect/qcom/Kconfig
@@ -44,6 +44,15 @@ config INTERCONNECT_QCOM_MSM8974
 This is a driver for the Qualcomm Network-on-Chip on msm8974-based
 platforms.
 
+config INTERCONNECT_QCOM_MSM8976
+   tristate "Qualcomm MSM8976 interconnect driver"
+   depends on INTERCONNECT_QCOM
+   depends on QCOM_SMD_RPM
+   select INTERCONNECT_QCOM_SMD_RPM
+   help
+This is a driver for the Qualcomm Network-on-Chip on msm8976-based
+platforms.
+
 config INTERCONNECT_QCOM_MSM8996
tristate "Qualcomm MSM8996 interconnect driver"
depends on INTERCONNECT_QCOM
diff --git a/drivers/interconnect/qcom/Makefile 
b/drivers/interconnect/qcom/Makefile
index 2ea3113d0a4d..21ce45438258 100644
--- a/drivers/interconnect/qcom/Makefile
+++ b/drivers/interconnect/qcom/Makefile
@@ -8,6 +8,7 @@ qnoc-msm8909-objs   := msm8909.o
 qnoc-msm8916-objs  := msm8916.o
 qnoc-msm8939-objs  := msm8939.o
 qnoc-msm8974-objs  := msm8974.o
+qnoc-msm8976-objs  := msm8976.o
 qnoc-msm8996-objs  := msm8996.o
 icc-osm-l3-objs:= osm-l3.o
 qnoc-qcm2290-objs  := qcm2290.o
@@ -42,6 +43,7 @@ obj-$(CONFIG_INTERCONNECT_QCOM_MSM8909) += qnoc-msm8909.o
 obj-$(CONFIG_INTERCONNECT_QCOM_MSM8916) += qnoc-msm8916.o
 obj-$(CONFIG_INTERCONNECT_QCOM_MSM8939) += qnoc-msm8939.o
 obj-$(CONFIG_INTERCONNECT_QCOM_MSM8974) += qnoc-msm8974.o
+obj-$(CONFIG_INTERCONNECT_QCOM_MSM8976) += qnoc-msm8976.o
 obj-$(CONFIG_INTERCONNECT_QCOM_MSM8996) += qnoc-msm8996.o
 obj-$(CONFIG_INTERCONNECT_QCOM_OSM_L3) += icc-osm-l3.o
 obj-$(CONFIG_INTERCONNECT_QCOM_QCM2290) += qnoc-qcm2290.o
diff --git a/drivers/interconnect/qcom/msm8976.c 
b/drivers/interconnect/qcom/msm8976.c
new file mode 100644
index ..b6cefdf0fecb
--- /dev/null
+++ b/drivers/interconnect/qcom/msm8976.c
@@ -0,0 +1,1443 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Based on data from msm8976-bus.dtsi in Qualcomm's msm-3.10 release:
+ *   Copyright (c) 2014-2016, The Linux Foundation. All rights reserved.
+ */
+
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+
+#include 
+
+#include "icc-rpm.h"
+
+static const char * const snoc_intf_clocks[] = {
+   "ipa", /* mas_ipa */
+};
+
+enum {
+   QNOC_MASTER_AMPSS_M0 = 1,
+   QNOC_MNOC_BIMC_MAS,
+   QNOC_SNOC_BIMC_MAS,
+   QNOC_MASTER_TCU_0,
+   QNOC_MASTER_USB_HS2,
+   QNOC_MASTER_BLSP_1,
+   QNOC_MASTER_USB_HS,
+   QNOC_MASTER_BLSP_2,
+   QNOC_MASTER_CRYPTO_CORE0,
+   QNOC_MASTER_SDCC_1,
+   QNOC_MASTER_SDCC_2,
+   QNOC_MASTER_SDCC_3,
+   QNOC_SNOC_PNOC_MAS,
+   QNOC_MASTER_LPASS_AHB,
+   QNOC_MASTER_SPDM,
+   QNOC_MASTER_DEHR,
+   QNOC_MASTER_XM_USB_HS1,
+   QNOC_MASTER_QDSS_BAM,
+   QNOC_BIMC_SNOC_MAS,
+   QNOC_MASTER_JPEG,
+   QNOC_MASTER_GRAPHICS_3D,
+   QNOC_MASTER_MDP_PORT0,
+   QNOC_MASTER_MDP_PORT1,
+   QNOC_PNOC_SNOC_MAS,
+   QNOC_MASTER_VIDEO_P0,
+   QNOC_MASTER_VIDEO_P1,
+   QNOC_MASTER_VFE0,
+   QNOC_MASTER_VFE1,
+   QNOC_MASTER_CPP,
+   QNOC_MASTER_QDSS_ETR,
+   QNOC_MASTER_LPASS_PROC,
+   QNOC_MASTER_IPA,
+   QNOC_PNOC_M_0,
+   QNOC_PNOC_M_1,
+   QNOC_PNOC_INT_0,
+   QNOC_PNOC_INT_1,
+   QNOC_PNOC_INT_2,
+   QNOC_PNOC_SLV_1,
+   QNOC_PNOC_SLV_2,
+   QNOC_PNOC_SLV_3,
+   QNOC_PNOC_SLV_4,
+   QNOC_PNOC_SLV_8,
+   QNOC_PNOC_SLV_9,
+   QNOC_SNOC_MM_INT_0,
+   QNOC_SNOC_QDSS_INT,
+   QNOC_SNOC_INT_0,
+   QNOC_SNOC_INT_1,
+   QNOC_SNOC_INT_2,
+   QNOC_SLAVE_EBI_CH0,
+   QNOC_BIMC_SNOC_SLV,
+   QNOC_SLAVE_TCSR,
+   QNOC_SLAVE_TLMM,
+   QNOC_SLAVE_CRYPTO_0_CFG,
+   QNOC_SLAVE_MESSAGE_RAM,
+   QNOC_SLAVE_PDM,
+   QNOC_SLAVE_PRNG,
+   QNOC_SLAVE_PMIC_ARB,
+   QNOC_SLAVE_SNOC_CFG,
+   QNOC_SLAVE_DCC_CFG,
+   QNOC_SLAVE_CAMERA_CFG,
+   QNOC_SLAVE_DISPLAY_CFG,
+   QNOC_SLAVE_VENUS_CFG,
+   QNOC_SLAVE_SDCC_1,
+   QNOC_SLAVE_BLSP_1,
+   QNOC_SLAVE_USB_HS,
+   QNOC_SLAVE_SDCC_3,
+   QNOC_SLAVE_SDCC_2,
+   QNOC_SLAVE_GRAPHICS_3D_CFG,
+   QNOC_SLAVE_USB_HS2,
+   QNOC_SLAVE_BLSP_2,
+   QNOC_PNOC_SNOC_SLV,
+   QNOC_SLAVE_APP