* [PATCH v3 00/10] Add Network Subsystem (NSS) clock controller support for IPQ5424 SoC
@ 2025-07-10 12:28 Luo Jie
2025-07-10 12:28 ` [PATCH v3 01/10] dt-bindings: interconnect: Add Qualcomm IPQ5424 NSSNOC IDs Luo Jie
` (9 more replies)
0 siblings, 10 replies; 27+ messages in thread
From: Luo Jie @ 2025-07-10 12:28 UTC (permalink / raw)
To: Georgi Djakov, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bjorn Andersson, Michael Turquette, Stephen Boyd, Anusha Rao,
Konrad Dybcio, Philipp Zabel, Richard Cochran, Catalin Marinas,
Will Deacon
Cc: linux-arm-msm, linux-pm, devicetree, linux-kernel, linux-clk,
netdev, linux-arm-kernel, quic_kkumarcs, quic_linchen,
quic_leiwei, quic_pavir, quic_suruchia, Luo Jie,
Krzysztof Kozlowski, Konrad Dybcio
The NSS clock controller on the IPQ5424 SoC provides clocks and resets
to the networking related hardware blocks such as the Packet Processing
Engine (PPE) and UNIPHY (PCS). Its parent clocks are sourced from the
GCC, CMN PLL, and UNIPHY blocks.
Additionally, register the gpll0_out_aux GCC clock, which serves as one
of the parent clocks for some of the NSS clocks.
The NSS NoC clocks are also enabled to use the icc-clk framework, enabling
the creation of interconnect paths for the network subsystem’s connections
with these NoCs.
The NSS clock controller receives its input clocks from the CMN PLL outputs.
The related patch series which adds support for IPQ5424 SoC in the CMN PLL
driver is listed below.
https://lore.kernel.org/all/20250610-qcom_ipq5424_cmnpll-v3-0-ceada8165645@quicinc.com/
To: Georgi Djakov <djakov@kernel.org>
To: Rob Herring <robh@kernel.org>
To: Krzysztof Kozlowski <krzk+dt@kernel.org>
To: Conor Dooley <conor+dt@kernel.org>
To: Bjorn Andersson <andersson@kernel.org>
To: Michael Turquette <mturquette@baylibre.com>
To: Stephen Boyd <sboyd@kernel.org>
To: Anusha Rao <quic_anusha@quicinc.com>
To: Konrad Dybcio <konradybcio@kernel.org>
To: Philipp Zabel <p.zabel@pengutronix.de>
To: Richard Cochran <richardcochran@gmail.com>
To: Catalin Marinas <catalin.marinas@arm.com>
To: Will Deacon <will@kernel.org>
Cc: linux-arm-msm@vger.kernel.org
Cc: linux-pm@vger.kernel.org
Cc: devicetree@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: linux-clk@vger.kernel.org
Cc: netdev@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Cc: quic_kkumarcs@quicinc.com
Cc: quic_linchen@quicinc.com
Cc: quic_leiwei@quicinc.com
Cc: quic_pavir@quicinc.com
Cc: quic_suruchia@quicinc.com
Signed-off-by: Luo Jie <quic_luoj@quicinc.com>
---
Changes in v3:
- Remove frequency suffix from clock names for PPE and NSS clocks in
IPQ9574 DT binding and DTS.
- Update IPQ5424 DT bindings and DTS to as per new PPE and NSS clock names.
- Expand the register region of IPQ5424 NSSCC to utilize the entire 0x100_000
address range, ensuring inclusion of the wrapper region.
- Collect the reviewed-by tags.
- Link to v2: https://lore.kernel.org/r/20250627-qcom_ipq5424_nsscc-v2-0-8d392f65102a@quicinc.com
Changes in v2:
- Add new, separate clock names "nss" and "ppe" in dtbindings to support
the IPQ5424 SoC.
- Wrap the commit message body at 75 columns.
- Fix the indentation issue in the `IPQ_NSSCC_5424` Kconfig entry.
- Enhance the commit message for the defconfig patch to clarify the requirement
for enabling `IPQ_NSSCC_5424`.
- Link to v1: https://lore.kernel.org/r/20250617-qcom_ipq5424_nsscc-v1-0-4dc2d6b3cdfc@quicinc.com
---
Luo Jie (10):
dt-bindings: interconnect: Add Qualcomm IPQ5424 NSSNOC IDs
clk: qcom: ipq5424: Enable NSS NoC clocks to use icc-clk
dt-bindings: clock: gcc-ipq5424: Add definition for GPLL0_OUT_AUX
clock: qcom: gcc-ipq5424: Add gpll0_out_aux clock
dt-bindings: clock: ipq9574: Rename NSS CC source clocks to drop rate
arm64: dts: qcom: ipq9574: Rename NSSCC source clock names to drop rate
dt-bindings: clock: qcom: Add NSS clock controller for IPQ5424 SoC
clk: qcom: Add NSS clock controller driver for IPQ5424
arm64: dts: qcom: ipq5424: Add NSS clock controller node
arm64: defconfig: Build NSS clock controller driver for IPQ5424
.../bindings/clock/qcom,ipq9574-nsscc.yaml | 26 +-
arch/arm64/boot/dts/qcom/ipq5424.dtsi | 30 +
arch/arm64/boot/dts/qcom/ipq9574.dtsi | 4 +-
arch/arm64/configs/defconfig | 1 +
drivers/clk/qcom/Kconfig | 11 +
drivers/clk/qcom/Makefile | 1 +
drivers/clk/qcom/gcc-ipq5424.c | 21 +-
drivers/clk/qcom/nsscc-ipq5424.c | 1340 ++++++++++++++++++++
include/dt-bindings/clock/qcom,ipq5424-gcc.h | 3 +-
include/dt-bindings/clock/qcom,ipq5424-nsscc.h | 65 +
include/dt-bindings/interconnect/qcom,ipq5424.h | 19 +
include/dt-bindings/reset/qcom,ipq5424-nsscc.h | 46 +
12 files changed, 1553 insertions(+), 14 deletions(-)
---
base-commit: b27cc623e01be9de1580eaa913508b237a7a9673
change-id: 20250709-qcom_ipq5424_nsscc-389d30977b1b
prerequisite-change-id: 20250610-qcom_ipq5424_cmnpll-22b232bb18fd:v3
prerequisite-patch-id: dc3949e10baf58f8c28d24bb3ffd347a78a1a2ee
prerequisite-patch-id: da645619780de3186a3cccf25beedd4fefab36df
prerequisite-patch-id: c7fbe69bfd80fc41c3f76104e36535ee547583db
prerequisite-patch-id: 541f835fb279f83e6eb2405c531bd7da9aacf4bd
Best regards,
--
Luo Jie <quic_luoj@quicinc.com>
^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH v3 01/10] dt-bindings: interconnect: Add Qualcomm IPQ5424 NSSNOC IDs
2025-07-10 12:28 [PATCH v3 00/10] Add Network Subsystem (NSS) clock controller support for IPQ5424 SoC Luo Jie
@ 2025-07-10 12:28 ` Luo Jie
2025-07-18 13:41 ` Georgi Djakov
2025-07-10 12:28 ` [PATCH v3 02/10] clk: qcom: ipq5424: Enable NSS NoC clocks to use icc-clk Luo Jie
` (8 subsequent siblings)
9 siblings, 1 reply; 27+ messages in thread
From: Luo Jie @ 2025-07-10 12:28 UTC (permalink / raw)
To: Georgi Djakov, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bjorn Andersson, Michael Turquette, Stephen Boyd, Anusha Rao,
Konrad Dybcio, Philipp Zabel, Richard Cochran, Catalin Marinas,
Will Deacon
Cc: linux-arm-msm, linux-pm, devicetree, linux-kernel, linux-clk,
netdev, linux-arm-kernel, quic_kkumarcs, quic_linchen,
quic_leiwei, quic_pavir, quic_suruchia, Luo Jie,
Krzysztof Kozlowski
Add the NSSNOC master/slave ids for Qualcomm IPQ5424 network subsystem
(NSS) hardware blocks. These will be used by the gcc-ipq5424 driver
that provides the interconnect services by using the icc-clk framework.
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Luo Jie <quic_luoj@quicinc.com>
---
include/dt-bindings/interconnect/qcom,ipq5424.h | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/include/dt-bindings/interconnect/qcom,ipq5424.h b/include/dt-bindings/interconnect/qcom,ipq5424.h
index a770356112ee..66cd9a9ece03 100644
--- a/include/dt-bindings/interconnect/qcom,ipq5424.h
+++ b/include/dt-bindings/interconnect/qcom,ipq5424.h
@@ -20,5 +20,11 @@
#define SLAVE_CNOC_PCIE3 15
#define MASTER_CNOC_USB 16
#define SLAVE_CNOC_USB 17
+#define MASTER_NSSNOC_NSSCC 18
+#define SLAVE_NSSNOC_NSSCC 19
+#define MASTER_NSSNOC_SNOC_0 20
+#define SLAVE_NSSNOC_SNOC_0 21
+#define MASTER_NSSNOC_SNOC_1 22
+#define SLAVE_NSSNOC_SNOC_1 23
#endif /* INTERCONNECT_QCOM_IPQ5424_H */
--
2.34.1
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v3 02/10] clk: qcom: ipq5424: Enable NSS NoC clocks to use icc-clk
2025-07-10 12:28 [PATCH v3 00/10] Add Network Subsystem (NSS) clock controller support for IPQ5424 SoC Luo Jie
2025-07-10 12:28 ` [PATCH v3 01/10] dt-bindings: interconnect: Add Qualcomm IPQ5424 NSSNOC IDs Luo Jie
@ 2025-07-10 12:28 ` Luo Jie
2025-07-17 20:40 ` Konrad Dybcio
2025-07-10 12:28 ` [PATCH v3 03/10] dt-bindings: clock: gcc-ipq5424: Add definition for GPLL0_OUT_AUX Luo Jie
` (7 subsequent siblings)
9 siblings, 1 reply; 27+ messages in thread
From: Luo Jie @ 2025-07-10 12:28 UTC (permalink / raw)
To: Georgi Djakov, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bjorn Andersson, Michael Turquette, Stephen Boyd, Anusha Rao,
Konrad Dybcio, Philipp Zabel, Richard Cochran, Catalin Marinas,
Will Deacon
Cc: linux-arm-msm, linux-pm, devicetree, linux-kernel, linux-clk,
netdev, linux-arm-kernel, quic_kkumarcs, quic_linchen,
quic_leiwei, quic_pavir, quic_suruchia, Luo Jie
Add NSS NoC clocks using the icc-clk framework to create interconnect
paths. The network subsystem (NSS) can be connected to these NoCs.
Also update to use the expected icc_first_node_id for registering the
icc clocks.
Signed-off-by: Luo Jie <quic_luoj@quicinc.com>
---
drivers/clk/qcom/gcc-ipq5424.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/clk/qcom/gcc-ipq5424.c b/drivers/clk/qcom/gcc-ipq5424.c
index 3d42f3d85c7a..3a01cb277cac 100644
--- a/drivers/clk/qcom/gcc-ipq5424.c
+++ b/drivers/clk/qcom/gcc-ipq5424.c
@@ -1,7 +1,7 @@
// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (c) 2018,2020 The Linux Foundation. All rights reserved.
- * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2024-2025 Qualcomm Innovation Center, Inc. All rights reserved.
*/
#include <linux/clk-provider.h>
@@ -3250,6 +3250,9 @@ static const struct qcom_icc_hws_data icc_ipq5424_hws[] = {
{ MASTER_ANOC_PCIE3, SLAVE_ANOC_PCIE3, GCC_ANOC_PCIE3_2LANE_M_CLK },
{ MASTER_CNOC_PCIE3, SLAVE_CNOC_PCIE3, GCC_CNOC_PCIE3_2LANE_S_CLK },
{ MASTER_CNOC_USB, SLAVE_CNOC_USB, GCC_CNOC_USB_CLK },
+ { MASTER_NSSNOC_NSSCC, SLAVE_NSSNOC_NSSCC, GCC_NSSNOC_NSSCC_CLK },
+ { MASTER_NSSNOC_SNOC_0, SLAVE_NSSNOC_SNOC_0, GCC_NSSNOC_SNOC_CLK },
+ { MASTER_NSSNOC_SNOC_1, SLAVE_NSSNOC_SNOC_1, GCC_NSSNOC_SNOC_1_CLK },
};
static const struct of_device_id gcc_ipq5424_match_table[] = {
@@ -3284,6 +3287,7 @@ static const struct qcom_cc_desc gcc_ipq5424_desc = {
.num_clk_hws = ARRAY_SIZE(gcc_ipq5424_hws),
.icc_hws = icc_ipq5424_hws,
.num_icc_hws = ARRAY_SIZE(icc_ipq5424_hws),
+ .icc_first_node_id = IPQ_APPS_ID,
};
static int gcc_ipq5424_probe(struct platform_device *pdev)
--
2.34.1
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v3 03/10] dt-bindings: clock: gcc-ipq5424: Add definition for GPLL0_OUT_AUX
2025-07-10 12:28 [PATCH v3 00/10] Add Network Subsystem (NSS) clock controller support for IPQ5424 SoC Luo Jie
2025-07-10 12:28 ` [PATCH v3 01/10] dt-bindings: interconnect: Add Qualcomm IPQ5424 NSSNOC IDs Luo Jie
2025-07-10 12:28 ` [PATCH v3 02/10] clk: qcom: ipq5424: Enable NSS NoC clocks to use icc-clk Luo Jie
@ 2025-07-10 12:28 ` Luo Jie
2025-07-10 12:28 ` [PATCH v3 04/10] clock: qcom: gcc-ipq5424: Add gpll0_out_aux clock Luo Jie
` (6 subsequent siblings)
9 siblings, 0 replies; 27+ messages in thread
From: Luo Jie @ 2025-07-10 12:28 UTC (permalink / raw)
To: Georgi Djakov, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bjorn Andersson, Michael Turquette, Stephen Boyd, Anusha Rao,
Konrad Dybcio, Philipp Zabel, Richard Cochran, Catalin Marinas,
Will Deacon
Cc: linux-arm-msm, linux-pm, devicetree, linux-kernel, linux-clk,
netdev, linux-arm-kernel, quic_kkumarcs, quic_linchen,
quic_leiwei, quic_pavir, quic_suruchia, Luo Jie
The GCC clock GPLL0_OUT_AUX is one of source clocks for IPQ5424 NSS clock
controller.
Signed-off-by: Luo Jie <quic_luoj@quicinc.com>
---
include/dt-bindings/clock/qcom,ipq5424-gcc.h | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/include/dt-bindings/clock/qcom,ipq5424-gcc.h b/include/dt-bindings/clock/qcom,ipq5424-gcc.h
index c15ad16923bd..ab23c6844a06 100644
--- a/include/dt-bindings/clock/qcom,ipq5424-gcc.h
+++ b/include/dt-bindings/clock/qcom,ipq5424-gcc.h
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
/*
* Copyright (c) 2018,2020 The Linux Foundation. All rights reserved.
- * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2024-2025 Qualcomm Innovation Center, Inc. All rights reserved.
*/
#ifndef _DT_BINDINGS_CLOCK_IPQ_GCC_IPQ5424_H
@@ -152,5 +152,6 @@
#define GCC_PCIE3_RCHNG_CLK 143
#define GCC_IM_SLEEP_CLK 144
#define GCC_XO_CLK 145
+#define GPLL0_OUT_AUX 146
#endif
--
2.34.1
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v3 04/10] clock: qcom: gcc-ipq5424: Add gpll0_out_aux clock
2025-07-10 12:28 [PATCH v3 00/10] Add Network Subsystem (NSS) clock controller support for IPQ5424 SoC Luo Jie
` (2 preceding siblings ...)
2025-07-10 12:28 ` [PATCH v3 03/10] dt-bindings: clock: gcc-ipq5424: Add definition for GPLL0_OUT_AUX Luo Jie
@ 2025-07-10 12:28 ` Luo Jie
2025-07-17 20:41 ` Konrad Dybcio
2025-07-10 12:28 ` [PATCH v3 05/10] dt-bindings: clock: ipq9574: Rename NSS CC source clocks to drop rate Luo Jie
` (5 subsequent siblings)
9 siblings, 1 reply; 27+ messages in thread
From: Luo Jie @ 2025-07-10 12:28 UTC (permalink / raw)
To: Georgi Djakov, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bjorn Andersson, Michael Turquette, Stephen Boyd, Anusha Rao,
Konrad Dybcio, Philipp Zabel, Richard Cochran, Catalin Marinas,
Will Deacon
Cc: linux-arm-msm, linux-pm, devicetree, linux-kernel, linux-clk,
netdev, linux-arm-kernel, quic_kkumarcs, quic_linchen,
quic_leiwei, quic_pavir, quic_suruchia, Luo Jie
The clock gpll0_out_aux acts as the parent clock for some of the NSS
(Network Subsystem) clocks.
Signed-off-by: Luo Jie <quic_luoj@quicinc.com>
---
drivers/clk/qcom/gcc-ipq5424.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/drivers/clk/qcom/gcc-ipq5424.c b/drivers/clk/qcom/gcc-ipq5424.c
index 3a01cb277cac..370e2e775044 100644
--- a/drivers/clk/qcom/gcc-ipq5424.c
+++ b/drivers/clk/qcom/gcc-ipq5424.c
@@ -79,6 +79,20 @@ static struct clk_fixed_factor gpll0_div2 = {
},
};
+static struct clk_alpha_pll_postdiv gpll0_out_aux = {
+ .offset = 0x20000,
+ .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
+ .width = 4,
+ .clkr.hw.init = &(const struct clk_init_data) {
+ .name = "gpll0_out_aux",
+ .parent_hws = (const struct clk_hw *[]) {
+ &gpll0.clkr.hw
+ },
+ .num_parents = 1,
+ .ops = &clk_alpha_pll_postdiv_ro_ops,
+ },
+};
+
static struct clk_alpha_pll gpll2 = {
.offset = 0x21000,
.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_NSS_HUAYRA],
@@ -2934,6 +2948,7 @@ static struct clk_regmap *gcc_ipq5424_clocks[] = {
[GPLL2] = &gpll2.clkr,
[GPLL2_OUT_MAIN] = &gpll2_out_main.clkr,
[GPLL4] = &gpll4.clkr,
+ [GPLL0_OUT_AUX] = &gpll0_out_aux.clkr,
};
static const struct qcom_reset_map gcc_ipq5424_resets[] = {
--
2.34.1
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v3 05/10] dt-bindings: clock: ipq9574: Rename NSS CC source clocks to drop rate
2025-07-10 12:28 [PATCH v3 00/10] Add Network Subsystem (NSS) clock controller support for IPQ5424 SoC Luo Jie
` (3 preceding siblings ...)
2025-07-10 12:28 ` [PATCH v3 04/10] clock: qcom: gcc-ipq5424: Add gpll0_out_aux clock Luo Jie
@ 2025-07-10 12:28 ` Luo Jie
2025-07-10 22:54 ` Rob Herring
2025-07-10 12:28 ` [PATCH v3 06/10] arm64: dts: qcom: ipq9574: Rename NSSCC source clock names " Luo Jie
` (4 subsequent siblings)
9 siblings, 1 reply; 27+ messages in thread
From: Luo Jie @ 2025-07-10 12:28 UTC (permalink / raw)
To: Georgi Djakov, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bjorn Andersson, Michael Turquette, Stephen Boyd, Anusha Rao,
Konrad Dybcio, Philipp Zabel, Richard Cochran, Catalin Marinas,
Will Deacon
Cc: linux-arm-msm, linux-pm, devicetree, linux-kernel, linux-clk,
netdev, linux-arm-kernel, quic_kkumarcs, quic_linchen,
quic_leiwei, quic_pavir, quic_suruchia, Luo Jie
Drop the clock rate suffix from the NSS Clock Controller clock names for
PPE and NSS clocks. A generic name allows for easier extension of support
to additional SoCs that utilize same hardware design.
Signed-off-by: Luo Jie <quic_luoj@quicinc.com>
---
.../devicetree/bindings/clock/qcom,ipq9574-nsscc.yaml | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/Documentation/devicetree/bindings/clock/qcom,ipq9574-nsscc.yaml b/Documentation/devicetree/bindings/clock/qcom,ipq9574-nsscc.yaml
index 17252b6ea3be..b9ca69172adc 100644
--- a/Documentation/devicetree/bindings/clock/qcom,ipq9574-nsscc.yaml
+++ b/Documentation/devicetree/bindings/clock/qcom,ipq9574-nsscc.yaml
@@ -25,8 +25,8 @@ properties:
clocks:
items:
- description: Board XO source
- - description: CMN_PLL NSS 1200MHz (Bias PLL cc) clock source
- - description: CMN_PLL PPE 353MHz (Bias PLL ubi nc) clock source
+ - description: CMN_PLL NSS (Bias PLL cc) clock source
+ - description: CMN_PLL PPE (Bias PLL ubi nc) clock source
- description: GCC GPLL0 OUT AUX clock source
- description: Uniphy0 NSS Rx clock source
- description: Uniphy0 NSS Tx clock source
@@ -42,8 +42,8 @@ properties:
clock-names:
items:
- const: xo
- - const: nss_1200
- - const: ppe_353
+ - const: nss
+ - const: ppe
- const: gpll0_out
- const: uniphy0_rx
- const: uniphy0_tx
@@ -82,8 +82,8 @@ examples:
<&uniphy 5>,
<&gcc GCC_NSSCC_CLK>;
clock-names = "xo",
- "nss_1200",
- "ppe_353",
+ "nss",
+ "ppe",
"gpll0_out",
"uniphy0_rx",
"uniphy0_tx",
--
2.34.1
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v3 06/10] arm64: dts: qcom: ipq9574: Rename NSSCC source clock names to drop rate
2025-07-10 12:28 [PATCH v3 00/10] Add Network Subsystem (NSS) clock controller support for IPQ5424 SoC Luo Jie
` (4 preceding siblings ...)
2025-07-10 12:28 ` [PATCH v3 05/10] dt-bindings: clock: ipq9574: Rename NSS CC source clocks to drop rate Luo Jie
@ 2025-07-10 12:28 ` Luo Jie
2025-07-10 12:28 ` [PATCH v3 07/10] dt-bindings: clock: qcom: Add NSS clock controller for IPQ5424 SoC Luo Jie
` (3 subsequent siblings)
9 siblings, 0 replies; 27+ messages in thread
From: Luo Jie @ 2025-07-10 12:28 UTC (permalink / raw)
To: Georgi Djakov, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bjorn Andersson, Michael Turquette, Stephen Boyd, Anusha Rao,
Konrad Dybcio, Philipp Zabel, Richard Cochran, Catalin Marinas,
Will Deacon
Cc: linux-arm-msm, linux-pm, devicetree, linux-kernel, linux-clk,
netdev, linux-arm-kernel, quic_kkumarcs, quic_linchen,
quic_leiwei, quic_pavir, quic_suruchia, Luo Jie
Drop the clock rate suffix from the NSS Clock Controller source clock
names for PPE and NSS clocks. A generic name allows for easier extension
of support to additional SoCs that utilize same hardware design.
Signed-off-by: Luo Jie <quic_luoj@quicinc.com>
---
arch/arm64/boot/dts/qcom/ipq9574.dtsi | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/ipq9574.dtsi b/arch/arm64/boot/dts/qcom/ipq9574.dtsi
index 815b5f9540b8..a2c6a5e0599c 100644
--- a/arch/arm64/boot/dts/qcom/ipq9574.dtsi
+++ b/arch/arm64/boot/dts/qcom/ipq9574.dtsi
@@ -1261,8 +1261,8 @@ nsscc: clock-controller@39b00000 {
<0>,
<&gcc GCC_NSSCC_CLK>;
clock-names = "xo",
- "nss_1200",
- "ppe_353",
+ "nss",
+ "ppe",
"gpll0_out",
"uniphy0_rx",
"uniphy0_tx",
--
2.34.1
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v3 07/10] dt-bindings: clock: qcom: Add NSS clock controller for IPQ5424 SoC
2025-07-10 12:28 [PATCH v3 00/10] Add Network Subsystem (NSS) clock controller support for IPQ5424 SoC Luo Jie
` (5 preceding siblings ...)
2025-07-10 12:28 ` [PATCH v3 06/10] arm64: dts: qcom: ipq9574: Rename NSSCC source clock names " Luo Jie
@ 2025-07-10 12:28 ` Luo Jie
2025-07-10 22:55 ` Rob Herring
2025-07-10 12:28 ` [PATCH v3 08/10] clk: qcom: Add NSS clock controller driver for IPQ5424 Luo Jie
` (2 subsequent siblings)
9 siblings, 1 reply; 27+ messages in thread
From: Luo Jie @ 2025-07-10 12:28 UTC (permalink / raw)
To: Georgi Djakov, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bjorn Andersson, Michael Turquette, Stephen Boyd, Anusha Rao,
Konrad Dybcio, Philipp Zabel, Richard Cochran, Catalin Marinas,
Will Deacon
Cc: linux-arm-msm, linux-pm, devicetree, linux-kernel, linux-clk,
netdev, linux-arm-kernel, quic_kkumarcs, quic_linchen,
quic_leiwei, quic_pavir, quic_suruchia, Luo Jie
NSS clock controller provides the clocks and resets to the networking
blocks such as PPE (Packet Process Engine) and UNIPHY (PCS) on IPQ5424
devices.
Add the compatible "qcom,ipq5424-nsscc" support based on the current
IPQ9574 NSS clock controller DT binding file. ICC clocks are always
provided by the NSS clock controller of IPQ9574 and IPQ5424, so add
interconnect-cells as required DT property.
Also add master/slave ids for IPQ5424 networking interfaces, which is
used by nss-ipq5424 driver for providing interconnect services using
icc-clk framework.
Signed-off-by: Luo Jie <quic_luoj@quicinc.com>
---
.../bindings/clock/qcom,ipq9574-nsscc.yaml | 14 +++--
include/dt-bindings/clock/qcom,ipq5424-nsscc.h | 65 ++++++++++++++++++++++
include/dt-bindings/interconnect/qcom,ipq5424.h | 13 +++++
include/dt-bindings/reset/qcom,ipq5424-nsscc.h | 46 +++++++++++++++
4 files changed, 134 insertions(+), 4 deletions(-)
diff --git a/Documentation/devicetree/bindings/clock/qcom,ipq9574-nsscc.yaml b/Documentation/devicetree/bindings/clock/qcom,ipq9574-nsscc.yaml
index b9ca69172adc..86ee9ffb2eda 100644
--- a/Documentation/devicetree/bindings/clock/qcom,ipq9574-nsscc.yaml
+++ b/Documentation/devicetree/bindings/clock/qcom,ipq9574-nsscc.yaml
@@ -4,7 +4,7 @@
$id: http://devicetree.org/schemas/clock/qcom,ipq9574-nsscc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
-title: Qualcomm Networking Sub System Clock & Reset Controller on IPQ9574
+title: Qualcomm Networking Sub System Clock & Reset Controller on IPQ9574 and IPQ5424
maintainers:
- Bjorn Andersson <andersson@kernel.org>
@@ -12,15 +12,19 @@ maintainers:
description: |
Qualcomm networking sub system clock control module provides the clocks,
- resets on IPQ9574
+ resets on IPQ9574 and IPQ5424
- See also::
+ See also:
+ include/dt-bindings/clock/qcom,ipq5424-nsscc.h
include/dt-bindings/clock/qcom,ipq9574-nsscc.h
+ include/dt-bindings/reset/qcom,ipq5424-nsscc.h
include/dt-bindings/reset/qcom,ipq9574-nsscc.h
properties:
compatible:
- const: qcom,ipq9574-nsscc
+ enum:
+ - qcom,ipq5424-nsscc
+ - qcom,ipq9574-nsscc
clocks:
items:
@@ -57,6 +61,7 @@ required:
- compatible
- clocks
- clock-names
+ - '#interconnect-cells'
allOf:
- $ref: qcom,gcc.yaml#
@@ -94,5 +99,6 @@ examples:
"bus";
#clock-cells = <1>;
#reset-cells = <1>;
+ #interconnect-cells = <1>;
};
...
diff --git a/include/dt-bindings/clock/qcom,ipq5424-nsscc.h b/include/dt-bindings/clock/qcom,ipq5424-nsscc.h
new file mode 100644
index 000000000000..59ce056ead93
--- /dev/null
+++ b/include/dt-bindings/clock/qcom,ipq5424-nsscc.h
@@ -0,0 +1,65 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Copyright (c) 2025, Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+#ifndef _DT_BINDINGS_CLOCK_QCOM_IPQ5424_NSSCC_H
+#define _DT_BINDINGS_CLOCK_QCOM_IPQ5424_NSSCC_H
+
+/* NSS_CC clocks */
+#define NSS_CC_CE_APB_CLK 0
+#define NSS_CC_CE_AXI_CLK 1
+#define NSS_CC_CE_CLK_SRC 2
+#define NSS_CC_CFG_CLK_SRC 3
+#define NSS_CC_DEBUG_CLK 4
+#define NSS_CC_EIP_BFDCD_CLK_SRC 5
+#define NSS_CC_EIP_CLK 6
+#define NSS_CC_NSS_CSR_CLK 7
+#define NSS_CC_NSSNOC_CE_APB_CLK 8
+#define NSS_CC_NSSNOC_CE_AXI_CLK 9
+#define NSS_CC_NSSNOC_EIP_CLK 10
+#define NSS_CC_NSSNOC_NSS_CSR_CLK 11
+#define NSS_CC_NSSNOC_PPE_CFG_CLK 12
+#define NSS_CC_NSSNOC_PPE_CLK 13
+#define NSS_CC_PORT1_MAC_CLK 14
+#define NSS_CC_PORT1_RX_CLK 15
+#define NSS_CC_PORT1_RX_CLK_SRC 16
+#define NSS_CC_PORT1_RX_DIV_CLK_SRC 17
+#define NSS_CC_PORT1_TX_CLK 18
+#define NSS_CC_PORT1_TX_CLK_SRC 19
+#define NSS_CC_PORT1_TX_DIV_CLK_SRC 20
+#define NSS_CC_PORT2_MAC_CLK 21
+#define NSS_CC_PORT2_RX_CLK 22
+#define NSS_CC_PORT2_RX_CLK_SRC 23
+#define NSS_CC_PORT2_RX_DIV_CLK_SRC 24
+#define NSS_CC_PORT2_TX_CLK 25
+#define NSS_CC_PORT2_TX_CLK_SRC 26
+#define NSS_CC_PORT2_TX_DIV_CLK_SRC 27
+#define NSS_CC_PORT3_MAC_CLK 28
+#define NSS_CC_PORT3_RX_CLK 29
+#define NSS_CC_PORT3_RX_CLK_SRC 30
+#define NSS_CC_PORT3_RX_DIV_CLK_SRC 31
+#define NSS_CC_PORT3_TX_CLK 32
+#define NSS_CC_PORT3_TX_CLK_SRC 33
+#define NSS_CC_PORT3_TX_DIV_CLK_SRC 34
+#define NSS_CC_PPE_CLK_SRC 35
+#define NSS_CC_PPE_EDMA_CFG_CLK 36
+#define NSS_CC_PPE_EDMA_CLK 37
+#define NSS_CC_PPE_SWITCH_BTQ_CLK 38
+#define NSS_CC_PPE_SWITCH_CFG_CLK 39
+#define NSS_CC_PPE_SWITCH_CLK 40
+#define NSS_CC_PPE_SWITCH_IPE_CLK 41
+#define NSS_CC_UNIPHY_PORT1_RX_CLK 42
+#define NSS_CC_UNIPHY_PORT1_TX_CLK 43
+#define NSS_CC_UNIPHY_PORT2_RX_CLK 44
+#define NSS_CC_UNIPHY_PORT2_TX_CLK 45
+#define NSS_CC_UNIPHY_PORT3_RX_CLK 46
+#define NSS_CC_UNIPHY_PORT3_TX_CLK 47
+#define NSS_CC_XGMAC0_PTP_REF_CLK 48
+#define NSS_CC_XGMAC0_PTP_REF_DIV_CLK_SRC 49
+#define NSS_CC_XGMAC1_PTP_REF_CLK 50
+#define NSS_CC_XGMAC1_PTP_REF_DIV_CLK_SRC 51
+#define NSS_CC_XGMAC2_PTP_REF_CLK 52
+#define NSS_CC_XGMAC2_PTP_REF_DIV_CLK_SRC 53
+
+#endif
diff --git a/include/dt-bindings/interconnect/qcom,ipq5424.h b/include/dt-bindings/interconnect/qcom,ipq5424.h
index 66cd9a9ece03..a78604beff99 100644
--- a/include/dt-bindings/interconnect/qcom,ipq5424.h
+++ b/include/dt-bindings/interconnect/qcom,ipq5424.h
@@ -27,4 +27,17 @@
#define MASTER_NSSNOC_SNOC_1 22
#define SLAVE_NSSNOC_SNOC_1 23
+#define MASTER_NSSNOC_PPE 0
+#define SLAVE_NSSNOC_PPE 1
+#define MASTER_NSSNOC_PPE_CFG 2
+#define SLAVE_NSSNOC_PPE_CFG 3
+#define MASTER_NSSNOC_NSS_CSR 4
+#define SLAVE_NSSNOC_NSS_CSR 5
+#define MASTER_NSSNOC_CE_AXI 6
+#define SLAVE_NSSNOC_CE_AXI 7
+#define MASTER_NSSNOC_CE_APB 8
+#define SLAVE_NSSNOC_CE_APB 9
+#define MASTER_NSSNOC_EIP 10
+#define SLAVE_NSSNOC_EIP 11
+
#endif /* INTERCONNECT_QCOM_IPQ5424_H */
diff --git a/include/dt-bindings/reset/qcom,ipq5424-nsscc.h b/include/dt-bindings/reset/qcom,ipq5424-nsscc.h
new file mode 100644
index 000000000000..f2f7eaa28b21
--- /dev/null
+++ b/include/dt-bindings/reset/qcom,ipq5424-nsscc.h
@@ -0,0 +1,46 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Copyright (c) 2025, Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+#ifndef _DT_BINDINGS_RESET_QCOM_IPQ5424_NSSCC_H
+#define _DT_BINDINGS_RESET_QCOM_IPQ5424_NSSCC_H
+
+#define NSS_CC_CE_APB_CLK_ARES 0
+#define NSS_CC_CE_AXI_CLK_ARES 1
+#define NSS_CC_DEBUG_CLK_ARES 2
+#define NSS_CC_EIP_CLK_ARES 3
+#define NSS_CC_NSS_CSR_CLK_ARES 4
+#define NSS_CC_NSSNOC_CE_APB_CLK_ARES 5
+#define NSS_CC_NSSNOC_CE_AXI_CLK_ARES 6
+#define NSS_CC_NSSNOC_EIP_CLK_ARES 7
+#define NSS_CC_NSSNOC_NSS_CSR_CLK_ARES 8
+#define NSS_CC_NSSNOC_PPE_CLK_ARES 9
+#define NSS_CC_NSSNOC_PPE_CFG_CLK_ARES 10
+#define NSS_CC_PORT1_MAC_CLK_ARES 11
+#define NSS_CC_PORT1_RX_CLK_ARES 12
+#define NSS_CC_PORT1_TX_CLK_ARES 13
+#define NSS_CC_PORT2_MAC_CLK_ARES 14
+#define NSS_CC_PORT2_RX_CLK_ARES 15
+#define NSS_CC_PORT2_TX_CLK_ARES 16
+#define NSS_CC_PORT3_MAC_CLK_ARES 17
+#define NSS_CC_PORT3_RX_CLK_ARES 18
+#define NSS_CC_PORT3_TX_CLK_ARES 19
+#define NSS_CC_PPE_BCR 20
+#define NSS_CC_PPE_EDMA_CLK_ARES 21
+#define NSS_CC_PPE_EDMA_CFG_CLK_ARES 22
+#define NSS_CC_PPE_SWITCH_BTQ_CLK_ARES 23
+#define NSS_CC_PPE_SWITCH_CLK_ARES 24
+#define NSS_CC_PPE_SWITCH_CFG_CLK_ARES 25
+#define NSS_CC_PPE_SWITCH_IPE_CLK_ARES 26
+#define NSS_CC_UNIPHY_PORT1_RX_CLK_ARES 27
+#define NSS_CC_UNIPHY_PORT1_TX_CLK_ARES 28
+#define NSS_CC_UNIPHY_PORT2_RX_CLK_ARES 29
+#define NSS_CC_UNIPHY_PORT2_TX_CLK_ARES 30
+#define NSS_CC_UNIPHY_PORT3_RX_CLK_ARES 31
+#define NSS_CC_UNIPHY_PORT3_TX_CLK_ARES 32
+#define NSS_CC_XGMAC0_PTP_REF_CLK_ARES 33
+#define NSS_CC_XGMAC1_PTP_REF_CLK_ARES 34
+#define NSS_CC_XGMAC2_PTP_REF_CLK_ARES 35
+
+#endif
--
2.34.1
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v3 08/10] clk: qcom: Add NSS clock controller driver for IPQ5424
2025-07-10 12:28 [PATCH v3 00/10] Add Network Subsystem (NSS) clock controller support for IPQ5424 SoC Luo Jie
` (6 preceding siblings ...)
2025-07-10 12:28 ` [PATCH v3 07/10] dt-bindings: clock: qcom: Add NSS clock controller for IPQ5424 SoC Luo Jie
@ 2025-07-10 12:28 ` Luo Jie
2025-07-10 12:28 ` [PATCH v3 09/10] arm64: dts: qcom: ipq5424: Add NSS clock controller node Luo Jie
2025-07-10 12:28 ` [PATCH v3 10/10] arm64: defconfig: Build NSS clock controller driver for IPQ5424 Luo Jie
9 siblings, 0 replies; 27+ messages in thread
From: Luo Jie @ 2025-07-10 12:28 UTC (permalink / raw)
To: Georgi Djakov, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bjorn Andersson, Michael Turquette, Stephen Boyd, Anusha Rao,
Konrad Dybcio, Philipp Zabel, Richard Cochran, Catalin Marinas,
Will Deacon
Cc: linux-arm-msm, linux-pm, devicetree, linux-kernel, linux-clk,
netdev, linux-arm-kernel, quic_kkumarcs, quic_linchen,
quic_leiwei, quic_pavir, quic_suruchia, Luo Jie, Konrad Dybcio
NSS (Network Subsystem) clock controller provides the clocks and resets
to the networking hardware blocks of the IPQ5424 SoC.
The icc-clk framework is used to enable NoC related clocks to create
paths so that the networking blocks can connect to these NoCs.
Acked-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Signed-off-by: Luo Jie <quic_luoj@quicinc.com>
---
drivers/clk/qcom/Kconfig | 11 +
drivers/clk/qcom/Makefile | 1 +
drivers/clk/qcom/nsscc-ipq5424.c | 1340 ++++++++++++++++++++++++++++++++++++++
3 files changed, 1352 insertions(+)
diff --git a/drivers/clk/qcom/Kconfig b/drivers/clk/qcom/Kconfig
index 36d6e6e1e7f0..87802580a101 100644
--- a/drivers/clk/qcom/Kconfig
+++ b/drivers/clk/qcom/Kconfig
@@ -281,6 +281,17 @@ config IPQ_GCC_9574
i2c, USB, SD/eMMC, etc. Select this for the root clock
of ipq9574.
+config IPQ_NSSCC_5424
+ tristate "IPQ5424 NSS Clock Controller"
+ depends on ARM64 || COMPILE_TEST
+ depends on IPQ_GCC_5424
+ help
+ Support for NSS clock controller on ipq5424 devices.
+ NSSCC receives the clock sources from GCC, CMN PLL and UNIPHY (PCS).
+ It in turn supplies the clocks and resets to the networking hardware.
+ Say Y or M if you want to enable networking function on the
+ IPQ5424 devices.
+
config IPQ_NSSCC_9574
tristate "IPQ9574 NSS Clock Controller"
depends on ARM64 || COMPILE_TEST
diff --git a/drivers/clk/qcom/Makefile b/drivers/clk/qcom/Makefile
index ab59434338bb..548cf7d1fbea 100644
--- a/drivers/clk/qcom/Makefile
+++ b/drivers/clk/qcom/Makefile
@@ -39,6 +39,7 @@ obj-$(CONFIG_IPQ_GCC_6018) += gcc-ipq6018.o
obj-$(CONFIG_IPQ_GCC_806X) += gcc-ipq806x.o
obj-$(CONFIG_IPQ_GCC_8074) += gcc-ipq8074.o
obj-$(CONFIG_IPQ_GCC_9574) += gcc-ipq9574.o
+obj-$(CONFIG_IPQ_NSSCC_5424) += nsscc-ipq5424.o
obj-$(CONFIG_IPQ_NSSCC_9574) += nsscc-ipq9574.o
obj-$(CONFIG_IPQ_LCC_806X) += lcc-ipq806x.o
obj-$(CONFIG_IPQ_NSSCC_QCA8K) += nsscc-qca8k.o
diff --git a/drivers/clk/qcom/nsscc-ipq5424.c b/drivers/clk/qcom/nsscc-ipq5424.c
new file mode 100644
index 000000000000..d9de56621702
--- /dev/null
+++ b/drivers/clk/qcom/nsscc-ipq5424.c
@@ -0,0 +1,1340 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (c) 2025, Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+#include <linux/clk.h>
+#include <linux/clk-provider.h>
+#include <linux/err.h>
+#include <linux/interconnect-provider.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/of_device.h>
+#include <linux/platform_device.h>
+#include <linux/pm_clock.h>
+#include <linux/pm_runtime.h>
+#include <linux/regmap.h>
+
+#include <dt-bindings/clock/qcom,ipq5424-nsscc.h>
+#include <dt-bindings/interconnect/qcom,ipq5424.h>
+#include <dt-bindings/reset/qcom,ipq5424-nsscc.h>
+
+#include "clk-branch.h"
+#include "clk-rcg.h"
+#include "clk-regmap.h"
+#include "clk-regmap-divider.h"
+#include "common.h"
+#include "reset.h"
+
+/* Need to match the order of clocks in DT binding */
+enum {
+ DT_CMN_PLL_XO_CLK,
+ DT_CMN_PLL_NSS_300M_CLK,
+ DT_CMN_PLL_NSS_375M_CLK,
+ DT_GCC_GPLL0_OUT_AUX,
+ DT_UNIPHY0_NSS_RX_CLK,
+ DT_UNIPHY0_NSS_TX_CLK,
+ DT_UNIPHY1_NSS_RX_CLK,
+ DT_UNIPHY1_NSS_TX_CLK,
+ DT_UNIPHY2_NSS_RX_CLK,
+ DT_UNIPHY2_NSS_TX_CLK,
+};
+
+enum {
+ P_CMN_PLL_XO_CLK,
+ P_CMN_PLL_NSS_300M_CLK,
+ P_CMN_PLL_NSS_375M_CLK,
+ P_GCC_GPLL0_OUT_AUX,
+ P_UNIPHY0_NSS_RX_CLK,
+ P_UNIPHY0_NSS_TX_CLK,
+ P_UNIPHY1_NSS_RX_CLK,
+ P_UNIPHY1_NSS_TX_CLK,
+ P_UNIPHY2_NSS_RX_CLK,
+ P_UNIPHY2_NSS_TX_CLK,
+};
+
+static const struct parent_map nss_cc_parent_map_0[] = {
+ { P_CMN_PLL_XO_CLK, 0 },
+ { P_GCC_GPLL0_OUT_AUX, 2 },
+ { P_CMN_PLL_NSS_300M_CLK, 5 },
+ { P_CMN_PLL_NSS_375M_CLK, 6 },
+};
+
+static const struct clk_parent_data nss_cc_parent_data_0[] = {
+ { .index = DT_CMN_PLL_XO_CLK },
+ { .index = DT_GCC_GPLL0_OUT_AUX },
+ { .index = DT_CMN_PLL_NSS_300M_CLK },
+ { .index = DT_CMN_PLL_NSS_375M_CLK },
+};
+
+static const struct parent_map nss_cc_parent_map_1[] = {
+ { P_CMN_PLL_XO_CLK, 0 },
+ { P_GCC_GPLL0_OUT_AUX, 2 },
+ { P_UNIPHY0_NSS_RX_CLK, 3 },
+ { P_UNIPHY0_NSS_TX_CLK, 4 },
+ { P_CMN_PLL_NSS_300M_CLK, 5 },
+ { P_CMN_PLL_NSS_375M_CLK, 6 },
+};
+
+static const struct clk_parent_data nss_cc_parent_data_1[] = {
+ { .index = DT_CMN_PLL_XO_CLK },
+ { .index = DT_GCC_GPLL0_OUT_AUX },
+ { .index = DT_UNIPHY0_NSS_RX_CLK },
+ { .index = DT_UNIPHY0_NSS_TX_CLK },
+ { .index = DT_CMN_PLL_NSS_300M_CLK },
+ { .index = DT_CMN_PLL_NSS_375M_CLK },
+};
+
+static const struct parent_map nss_cc_parent_map_2[] = {
+ { P_CMN_PLL_XO_CLK, 0 },
+ { P_GCC_GPLL0_OUT_AUX, 2 },
+ { P_UNIPHY1_NSS_RX_CLK, 3 },
+ { P_UNIPHY1_NSS_TX_CLK, 4 },
+ { P_CMN_PLL_NSS_300M_CLK, 5 },
+ { P_CMN_PLL_NSS_375M_CLK, 6 },
+};
+
+static const struct clk_parent_data nss_cc_parent_data_2[] = {
+ { .index = DT_CMN_PLL_XO_CLK },
+ { .index = DT_GCC_GPLL0_OUT_AUX },
+ { .index = DT_UNIPHY1_NSS_RX_CLK },
+ { .index = DT_UNIPHY1_NSS_TX_CLK },
+ { .index = DT_CMN_PLL_NSS_300M_CLK },
+ { .index = DT_CMN_PLL_NSS_375M_CLK },
+};
+
+static const struct parent_map nss_cc_parent_map_3[] = {
+ { P_CMN_PLL_XO_CLK, 0 },
+ { P_GCC_GPLL0_OUT_AUX, 2 },
+ { P_UNIPHY2_NSS_RX_CLK, 3 },
+ { P_UNIPHY2_NSS_TX_CLK, 4 },
+ { P_CMN_PLL_NSS_300M_CLK, 5 },
+ { P_CMN_PLL_NSS_375M_CLK, 6 },
+};
+
+static const struct clk_parent_data nss_cc_parent_data_3[] = {
+ { .index = DT_CMN_PLL_XO_CLK },
+ { .index = DT_GCC_GPLL0_OUT_AUX },
+ { .index = DT_UNIPHY2_NSS_RX_CLK },
+ { .index = DT_UNIPHY2_NSS_TX_CLK },
+ { .index = DT_CMN_PLL_NSS_300M_CLK },
+ { .index = DT_CMN_PLL_NSS_375M_CLK },
+};
+
+static const struct freq_tbl ftbl_nss_cc_ce_clk_src[] = {
+ F(24000000, P_CMN_PLL_XO_CLK, 1, 0, 0),
+ F(375000000, P_CMN_PLL_NSS_375M_CLK, 1, 0, 0),
+ { }
+};
+
+static struct clk_rcg2 nss_cc_ce_clk_src = {
+ .cmd_rcgr = 0x5e0,
+ .mnd_width = 0,
+ .hid_width = 5,
+ .parent_map = nss_cc_parent_map_0,
+ .freq_tbl = ftbl_nss_cc_ce_clk_src,
+ .clkr.hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_ce_clk_src",
+ .parent_data = nss_cc_parent_data_0,
+ .num_parents = ARRAY_SIZE(nss_cc_parent_data_0),
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_rcg2_ops,
+ },
+};
+
+static const struct freq_tbl ftbl_nss_cc_cfg_clk_src[] = {
+ F(100000000, P_GCC_GPLL0_OUT_AUX, 8, 0, 0),
+ { }
+};
+
+static struct clk_rcg2 nss_cc_cfg_clk_src = {
+ .cmd_rcgr = 0x6a8,
+ .mnd_width = 0,
+ .hid_width = 5,
+ .parent_map = nss_cc_parent_map_0,
+ .freq_tbl = ftbl_nss_cc_cfg_clk_src,
+ .clkr.hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_cfg_clk_src",
+ .parent_data = nss_cc_parent_data_0,
+ .num_parents = ARRAY_SIZE(nss_cc_parent_data_0),
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_rcg2_ops,
+ },
+};
+
+static const struct freq_tbl ftbl_nss_cc_eip_bfdcd_clk_src[] = {
+ F(300000000, P_CMN_PLL_NSS_300M_CLK, 1, 0, 0),
+ F(375000000, P_CMN_PLL_NSS_375M_CLK, 1, 0, 0),
+ { }
+};
+
+static struct clk_rcg2 nss_cc_eip_bfdcd_clk_src = {
+ .cmd_rcgr = 0x644,
+ .mnd_width = 0,
+ .hid_width = 5,
+ .parent_map = nss_cc_parent_map_0,
+ .freq_tbl = ftbl_nss_cc_eip_bfdcd_clk_src,
+ .clkr.hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_eip_bfdcd_clk_src",
+ .parent_data = nss_cc_parent_data_0,
+ .num_parents = ARRAY_SIZE(nss_cc_parent_data_0),
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_rcg2_ops,
+ },
+};
+
+static const struct freq_conf ftbl_nss_cc_port1_rx_clk_src_25[] = {
+ C(P_UNIPHY0_NSS_RX_CLK, 12.5, 0, 0),
+ C(P_UNIPHY0_NSS_RX_CLK, 5, 0, 0),
+};
+
+static const struct freq_conf ftbl_nss_cc_port1_rx_clk_src_125[] = {
+ C(P_UNIPHY0_NSS_RX_CLK, 2.5, 0, 0),
+ C(P_UNIPHY0_NSS_RX_CLK, 1, 0, 0),
+};
+
+static const struct freq_multi_tbl ftbl_nss_cc_port1_rx_clk_src[] = {
+ FMS(24000000, P_CMN_PLL_XO_CLK, 1, 0, 0),
+ FM(25000000, ftbl_nss_cc_port1_rx_clk_src_25),
+ FMS(78125000, P_UNIPHY0_NSS_RX_CLK, 4, 0, 0),
+ FM(125000000, ftbl_nss_cc_port1_rx_clk_src_125),
+ FMS(156250000, P_UNIPHY0_NSS_RX_CLK, 2, 0, 0),
+ FMS(312500000, P_UNIPHY0_NSS_RX_CLK, 1, 0, 0),
+ { }
+};
+
+static struct clk_rcg2 nss_cc_port1_rx_clk_src = {
+ .cmd_rcgr = 0x4b4,
+ .mnd_width = 0,
+ .hid_width = 5,
+ .parent_map = nss_cc_parent_map_1,
+ .freq_multi_tbl = ftbl_nss_cc_port1_rx_clk_src,
+ .clkr.hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_port1_rx_clk_src",
+ .parent_data = nss_cc_parent_data_1,
+ .num_parents = ARRAY_SIZE(nss_cc_parent_data_1),
+ .ops = &clk_rcg2_fm_ops,
+ },
+};
+
+static const struct freq_conf ftbl_nss_cc_port1_tx_clk_src_25[] = {
+ C(P_UNIPHY0_NSS_TX_CLK, 12.5, 0, 0),
+ C(P_UNIPHY0_NSS_TX_CLK, 5, 0, 0),
+};
+
+static const struct freq_conf ftbl_nss_cc_port1_tx_clk_src_125[] = {
+ C(P_UNIPHY0_NSS_TX_CLK, 2.5, 0, 0),
+ C(P_UNIPHY0_NSS_TX_CLK, 1, 0, 0),
+};
+
+static const struct freq_multi_tbl ftbl_nss_cc_port1_tx_clk_src[] = {
+ FMS(24000000, P_CMN_PLL_XO_CLK, 1, 0, 0),
+ FM(25000000, ftbl_nss_cc_port1_tx_clk_src_25),
+ FMS(78125000, P_UNIPHY0_NSS_TX_CLK, 4, 0, 0),
+ FM(125000000, ftbl_nss_cc_port1_tx_clk_src_125),
+ FMS(156250000, P_UNIPHY0_NSS_TX_CLK, 2, 0, 0),
+ FMS(312500000, P_UNIPHY0_NSS_TX_CLK, 1, 0, 0),
+ { }
+};
+
+static struct clk_rcg2 nss_cc_port1_tx_clk_src = {
+ .cmd_rcgr = 0x4c0,
+ .mnd_width = 0,
+ .hid_width = 5,
+ .parent_map = nss_cc_parent_map_1,
+ .freq_multi_tbl = ftbl_nss_cc_port1_tx_clk_src,
+ .clkr.hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_port1_tx_clk_src",
+ .parent_data = nss_cc_parent_data_1,
+ .num_parents = ARRAY_SIZE(nss_cc_parent_data_1),
+ .ops = &clk_rcg2_fm_ops,
+ },
+};
+
+static const struct freq_conf ftbl_nss_cc_port2_rx_clk_src_25[] = {
+ C(P_UNIPHY1_NSS_RX_CLK, 12.5, 0, 0),
+ C(P_UNIPHY1_NSS_RX_CLK, 5, 0, 0),
+};
+
+static const struct freq_conf ftbl_nss_cc_port2_rx_clk_src_125[] = {
+ C(P_UNIPHY1_NSS_RX_CLK, 2.5, 0, 0),
+ C(P_UNIPHY1_NSS_RX_CLK, 1, 0, 0),
+};
+
+static const struct freq_multi_tbl ftbl_nss_cc_port2_rx_clk_src[] = {
+ FMS(24000000, P_CMN_PLL_XO_CLK, 1, 0, 0),
+ FM(25000000, ftbl_nss_cc_port2_rx_clk_src_25),
+ FMS(78125000, P_UNIPHY1_NSS_RX_CLK, 4, 0, 0),
+ FM(125000000, ftbl_nss_cc_port2_rx_clk_src_125),
+ FMS(156250000, P_UNIPHY1_NSS_RX_CLK, 2, 0, 0),
+ FMS(312500000, P_UNIPHY1_NSS_RX_CLK, 1, 0, 0),
+ { }
+};
+
+static struct clk_rcg2 nss_cc_port2_rx_clk_src = {
+ .cmd_rcgr = 0x4cc,
+ .mnd_width = 0,
+ .hid_width = 5,
+ .parent_map = nss_cc_parent_map_2,
+ .freq_multi_tbl = ftbl_nss_cc_port2_rx_clk_src,
+ .clkr.hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_port2_rx_clk_src",
+ .parent_data = nss_cc_parent_data_2,
+ .num_parents = ARRAY_SIZE(nss_cc_parent_data_2),
+ .ops = &clk_rcg2_fm_ops,
+ },
+};
+
+static const struct freq_conf ftbl_nss_cc_port2_tx_clk_src_25[] = {
+ C(P_UNIPHY1_NSS_TX_CLK, 12.5, 0, 0),
+ C(P_UNIPHY1_NSS_TX_CLK, 5, 0, 0),
+};
+
+static const struct freq_conf ftbl_nss_cc_port2_tx_clk_src_125[] = {
+ C(P_UNIPHY1_NSS_TX_CLK, 2.5, 0, 0),
+ C(P_UNIPHY1_NSS_TX_CLK, 1, 0, 0),
+};
+
+static const struct freq_multi_tbl ftbl_nss_cc_port2_tx_clk_src[] = {
+ FMS(24000000, P_CMN_PLL_XO_CLK, 1, 0, 0),
+ FM(25000000, ftbl_nss_cc_port2_tx_clk_src_25),
+ FMS(78125000, P_UNIPHY1_NSS_TX_CLK, 4, 0, 0),
+ FM(125000000, ftbl_nss_cc_port2_tx_clk_src_125),
+ FMS(156250000, P_UNIPHY1_NSS_TX_CLK, 2, 0, 0),
+ FMS(312500000, P_UNIPHY1_NSS_TX_CLK, 1, 0, 0),
+ { }
+};
+
+static struct clk_rcg2 nss_cc_port2_tx_clk_src = {
+ .cmd_rcgr = 0x4d8,
+ .mnd_width = 0,
+ .hid_width = 5,
+ .parent_map = nss_cc_parent_map_2,
+ .freq_multi_tbl = ftbl_nss_cc_port2_tx_clk_src,
+ .clkr.hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_port2_tx_clk_src",
+ .parent_data = nss_cc_parent_data_2,
+ .num_parents = ARRAY_SIZE(nss_cc_parent_data_2),
+ .ops = &clk_rcg2_fm_ops,
+ },
+};
+
+static const struct freq_conf ftbl_nss_cc_port3_rx_clk_src_25[] = {
+ C(P_UNIPHY2_NSS_RX_CLK, 12.5, 0, 0),
+ C(P_UNIPHY2_NSS_RX_CLK, 5, 0, 0),
+};
+
+static const struct freq_conf ftbl_nss_cc_port3_rx_clk_src_125[] = {
+ C(P_UNIPHY2_NSS_RX_CLK, 2.5, 0, 0),
+ C(P_UNIPHY2_NSS_RX_CLK, 1, 0, 0),
+};
+
+static const struct freq_multi_tbl ftbl_nss_cc_port3_rx_clk_src[] = {
+ FMS(24000000, P_CMN_PLL_XO_CLK, 1, 0, 0),
+ FM(25000000, ftbl_nss_cc_port3_rx_clk_src_25),
+ FMS(78125000, P_UNIPHY2_NSS_RX_CLK, 4, 0, 0),
+ FM(125000000, ftbl_nss_cc_port3_rx_clk_src_125),
+ FMS(156250000, P_UNIPHY2_NSS_RX_CLK, 2, 0, 0),
+ FMS(312500000, P_UNIPHY2_NSS_RX_CLK, 1, 0, 0),
+ { }
+};
+
+static struct clk_rcg2 nss_cc_port3_rx_clk_src = {
+ .cmd_rcgr = 0x4e4,
+ .mnd_width = 0,
+ .hid_width = 5,
+ .parent_map = nss_cc_parent_map_3,
+ .freq_multi_tbl = ftbl_nss_cc_port3_rx_clk_src,
+ .clkr.hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_port3_rx_clk_src",
+ .parent_data = nss_cc_parent_data_3,
+ .num_parents = ARRAY_SIZE(nss_cc_parent_data_3),
+ .ops = &clk_rcg2_fm_ops,
+ },
+};
+
+static const struct freq_conf ftbl_nss_cc_port3_tx_clk_src_25[] = {
+ C(P_UNIPHY2_NSS_TX_CLK, 12.5, 0, 0),
+ C(P_UNIPHY2_NSS_TX_CLK, 5, 0, 0),
+};
+
+static const struct freq_conf ftbl_nss_cc_port3_tx_clk_src_125[] = {
+ C(P_UNIPHY2_NSS_TX_CLK, 2.5, 0, 0),
+ C(P_UNIPHY2_NSS_TX_CLK, 1, 0, 0),
+};
+
+static const struct freq_multi_tbl ftbl_nss_cc_port3_tx_clk_src[] = {
+ FMS(24000000, P_CMN_PLL_XO_CLK, 1, 0, 0),
+ FM(25000000, ftbl_nss_cc_port3_tx_clk_src_25),
+ FMS(78125000, P_UNIPHY2_NSS_TX_CLK, 4, 0, 0),
+ FM(125000000, ftbl_nss_cc_port3_tx_clk_src_125),
+ FMS(156250000, P_UNIPHY2_NSS_TX_CLK, 2, 0, 0),
+ FMS(312500000, P_UNIPHY2_NSS_TX_CLK, 1, 0, 0),
+ { }
+};
+
+static struct clk_rcg2 nss_cc_port3_tx_clk_src = {
+ .cmd_rcgr = 0x4f0,
+ .mnd_width = 0,
+ .hid_width = 5,
+ .parent_map = nss_cc_parent_map_3,
+ .freq_multi_tbl = ftbl_nss_cc_port3_tx_clk_src,
+ .clkr.hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_port3_tx_clk_src",
+ .parent_data = nss_cc_parent_data_3,
+ .num_parents = ARRAY_SIZE(nss_cc_parent_data_3),
+ .ops = &clk_rcg2_fm_ops,
+ },
+};
+
+static struct clk_rcg2 nss_cc_ppe_clk_src = {
+ .cmd_rcgr = 0x3ec,
+ .mnd_width = 0,
+ .hid_width = 5,
+ .parent_map = nss_cc_parent_map_0,
+ .freq_tbl = ftbl_nss_cc_ce_clk_src,
+ .clkr.hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_ppe_clk_src",
+ .parent_data = nss_cc_parent_data_0,
+ .num_parents = ARRAY_SIZE(nss_cc_parent_data_0),
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_rcg2_ops,
+ },
+};
+
+static struct clk_regmap_div nss_cc_port1_rx_div_clk_src = {
+ .reg = 0x4bc,
+ .shift = 0,
+ .width = 9,
+ .clkr.hw.init = &(const struct clk_init_data) {
+ .name = "nss_cc_port1_rx_div_clk_src",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_port1_rx_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_regmap_div_ops,
+ },
+};
+
+static struct clk_regmap_div nss_cc_port1_tx_div_clk_src = {
+ .reg = 0x4c8,
+ .shift = 0,
+ .width = 9,
+ .clkr.hw.init = &(const struct clk_init_data) {
+ .name = "nss_cc_port1_tx_div_clk_src",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_port1_tx_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_regmap_div_ops,
+ },
+};
+
+static struct clk_regmap_div nss_cc_port2_rx_div_clk_src = {
+ .reg = 0x4d4,
+ .shift = 0,
+ .width = 9,
+ .clkr.hw.init = &(const struct clk_init_data) {
+ .name = "nss_cc_port2_rx_div_clk_src",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_port2_rx_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_regmap_div_ops,
+ },
+};
+
+static struct clk_regmap_div nss_cc_port2_tx_div_clk_src = {
+ .reg = 0x4e0,
+ .shift = 0,
+ .width = 9,
+ .clkr.hw.init = &(const struct clk_init_data) {
+ .name = "nss_cc_port2_tx_div_clk_src",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_port2_tx_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_regmap_div_ops,
+ },
+};
+
+static struct clk_regmap_div nss_cc_port3_rx_div_clk_src = {
+ .reg = 0x4ec,
+ .shift = 0,
+ .width = 9,
+ .clkr.hw.init = &(const struct clk_init_data) {
+ .name = "nss_cc_port3_rx_div_clk_src",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_port3_rx_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_regmap_div_ops,
+ },
+};
+
+static struct clk_regmap_div nss_cc_port3_tx_div_clk_src = {
+ .reg = 0x4f8,
+ .shift = 0,
+ .width = 9,
+ .clkr.hw.init = &(const struct clk_init_data) {
+ .name = "nss_cc_port3_tx_div_clk_src",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_port3_tx_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_regmap_div_ops,
+ },
+};
+
+static struct clk_regmap_div nss_cc_xgmac0_ptp_ref_div_clk_src = {
+ .reg = 0x3f4,
+ .shift = 0,
+ .width = 4,
+ .clkr.hw.init = &(const struct clk_init_data) {
+ .name = "nss_cc_xgmac0_ptp_ref_div_clk_src",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_ppe_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_regmap_div_ro_ops,
+ },
+};
+
+static struct clk_regmap_div nss_cc_xgmac1_ptp_ref_div_clk_src = {
+ .reg = 0x3f8,
+ .shift = 0,
+ .width = 4,
+ .clkr.hw.init = &(const struct clk_init_data) {
+ .name = "nss_cc_xgmac1_ptp_ref_div_clk_src",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_ppe_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_regmap_div_ro_ops,
+ },
+};
+
+static struct clk_regmap_div nss_cc_xgmac2_ptp_ref_div_clk_src = {
+ .reg = 0x3fc,
+ .shift = 0,
+ .width = 4,
+ .clkr.hw.init = &(const struct clk_init_data) {
+ .name = "nss_cc_xgmac2_ptp_ref_div_clk_src",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_ppe_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_regmap_div_ro_ops,
+ },
+};
+
+static struct clk_branch nss_cc_ce_apb_clk = {
+ .halt_reg = 0x5e8,
+ .halt_check = BRANCH_HALT,
+ .clkr = {
+ .enable_reg = 0x5e8,
+ .enable_mask = BIT(0),
+ .hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_ce_apb_clk",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_ce_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch nss_cc_ce_axi_clk = {
+ .halt_reg = 0x5ec,
+ .halt_check = BRANCH_HALT,
+ .clkr = {
+ .enable_reg = 0x5ec,
+ .enable_mask = BIT(0),
+ .hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_ce_axi_clk",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_ce_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch nss_cc_debug_clk = {
+ .halt_reg = 0x70c,
+ .halt_check = BRANCH_HALT,
+ .clkr = {
+ .enable_reg = 0x70c,
+ .enable_mask = BIT(0),
+ .hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_debug_clk",
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch nss_cc_eip_clk = {
+ .halt_reg = 0x658,
+ .halt_check = BRANCH_HALT,
+ .clkr = {
+ .enable_reg = 0x658,
+ .enable_mask = BIT(0),
+ .hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_eip_clk",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_eip_bfdcd_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch nss_cc_nss_csr_clk = {
+ .halt_reg = 0x6b0,
+ .halt_check = BRANCH_HALT,
+ .clkr = {
+ .enable_reg = 0x6b0,
+ .enable_mask = BIT(0),
+ .hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_nss_csr_clk",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_cfg_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch nss_cc_nssnoc_ce_apb_clk = {
+ .halt_reg = 0x5f4,
+ .halt_check = BRANCH_HALT,
+ .clkr = {
+ .enable_reg = 0x5f4,
+ .enable_mask = BIT(0),
+ .hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_nssnoc_ce_apb_clk",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_ce_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch nss_cc_nssnoc_ce_axi_clk = {
+ .halt_reg = 0x5f8,
+ .halt_check = BRANCH_HALT,
+ .clkr = {
+ .enable_reg = 0x5f8,
+ .enable_mask = BIT(0),
+ .hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_nssnoc_ce_axi_clk",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_ce_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch nss_cc_nssnoc_eip_clk = {
+ .halt_reg = 0x660,
+ .halt_check = BRANCH_HALT,
+ .clkr = {
+ .enable_reg = 0x660,
+ .enable_mask = BIT(0),
+ .hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_nssnoc_eip_clk",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_eip_bfdcd_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch nss_cc_nssnoc_nss_csr_clk = {
+ .halt_reg = 0x6b4,
+ .halt_check = BRANCH_HALT,
+ .clkr = {
+ .enable_reg = 0x6b4,
+ .enable_mask = BIT(0),
+ .hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_nssnoc_nss_csr_clk",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_cfg_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch nss_cc_nssnoc_ppe_cfg_clk = {
+ .halt_reg = 0x444,
+ .halt_check = BRANCH_HALT,
+ .clkr = {
+ .enable_reg = 0x444,
+ .enable_mask = BIT(0),
+ .hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_nssnoc_ppe_cfg_clk",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_ppe_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch nss_cc_nssnoc_ppe_clk = {
+ .halt_reg = 0x440,
+ .halt_check = BRANCH_HALT,
+ .clkr = {
+ .enable_reg = 0x440,
+ .enable_mask = BIT(0),
+ .hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_nssnoc_ppe_clk",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_ppe_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch nss_cc_port1_mac_clk = {
+ .halt_reg = 0x428,
+ .halt_check = BRANCH_HALT,
+ .clkr = {
+ .enable_reg = 0x428,
+ .enable_mask = BIT(0),
+ .hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_port1_mac_clk",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_ppe_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch nss_cc_port1_rx_clk = {
+ .halt_reg = 0x4fc,
+ .halt_check = BRANCH_HALT,
+ .clkr = {
+ .enable_reg = 0x4fc,
+ .enable_mask = BIT(0),
+ .hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_port1_rx_clk",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_port1_rx_div_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch nss_cc_port1_tx_clk = {
+ .halt_reg = 0x504,
+ .halt_check = BRANCH_HALT,
+ .clkr = {
+ .enable_reg = 0x504,
+ .enable_mask = BIT(0),
+ .hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_port1_tx_clk",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_port1_tx_div_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch nss_cc_port2_mac_clk = {
+ .halt_reg = 0x430,
+ .halt_check = BRANCH_HALT,
+ .clkr = {
+ .enable_reg = 0x430,
+ .enable_mask = BIT(0),
+ .hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_port2_mac_clk",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_ppe_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch nss_cc_port2_rx_clk = {
+ .halt_reg = 0x50c,
+ .halt_check = BRANCH_HALT,
+ .clkr = {
+ .enable_reg = 0x50c,
+ .enable_mask = BIT(0),
+ .hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_port2_rx_clk",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_port2_rx_div_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch nss_cc_port2_tx_clk = {
+ .halt_reg = 0x514,
+ .halt_check = BRANCH_HALT,
+ .clkr = {
+ .enable_reg = 0x514,
+ .enable_mask = BIT(0),
+ .hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_port2_tx_clk",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_port2_tx_div_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch nss_cc_port3_mac_clk = {
+ .halt_reg = 0x438,
+ .halt_check = BRANCH_HALT,
+ .clkr = {
+ .enable_reg = 0x438,
+ .enable_mask = BIT(0),
+ .hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_port3_mac_clk",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_ppe_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch nss_cc_port3_rx_clk = {
+ .halt_reg = 0x51c,
+ .halt_check = BRANCH_HALT,
+ .clkr = {
+ .enable_reg = 0x51c,
+ .enable_mask = BIT(0),
+ .hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_port3_rx_clk",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_port3_rx_div_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch nss_cc_port3_tx_clk = {
+ .halt_reg = 0x524,
+ .halt_check = BRANCH_HALT,
+ .clkr = {
+ .enable_reg = 0x524,
+ .enable_mask = BIT(0),
+ .hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_port3_tx_clk",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_port3_tx_div_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch nss_cc_ppe_edma_cfg_clk = {
+ .halt_reg = 0x424,
+ .halt_check = BRANCH_HALT,
+ .clkr = {
+ .enable_reg = 0x424,
+ .enable_mask = BIT(0),
+ .hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_ppe_edma_cfg_clk",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_ppe_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch nss_cc_ppe_edma_clk = {
+ .halt_reg = 0x41c,
+ .halt_check = BRANCH_HALT,
+ .clkr = {
+ .enable_reg = 0x41c,
+ .enable_mask = BIT(0),
+ .hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_ppe_edma_clk",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_ppe_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch nss_cc_ppe_switch_btq_clk = {
+ .halt_reg = 0x408,
+ .halt_check = BRANCH_HALT,
+ .clkr = {
+ .enable_reg = 0x408,
+ .enable_mask = BIT(0),
+ .hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_ppe_switch_btq_clk",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_ppe_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch nss_cc_ppe_switch_cfg_clk = {
+ .halt_reg = 0x418,
+ .halt_check = BRANCH_HALT,
+ .clkr = {
+ .enable_reg = 0x418,
+ .enable_mask = BIT(0),
+ .hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_ppe_switch_cfg_clk",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_ppe_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch nss_cc_ppe_switch_clk = {
+ .halt_reg = 0x410,
+ .halt_check = BRANCH_HALT,
+ .clkr = {
+ .enable_reg = 0x410,
+ .enable_mask = BIT(0),
+ .hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_ppe_switch_clk",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_ppe_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch nss_cc_ppe_switch_ipe_clk = {
+ .halt_reg = 0x400,
+ .halt_check = BRANCH_HALT,
+ .clkr = {
+ .enable_reg = 0x400,
+ .enable_mask = BIT(0),
+ .hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_ppe_switch_ipe_clk",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_ppe_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch nss_cc_uniphy_port1_rx_clk = {
+ .halt_reg = 0x57c,
+ .halt_check = BRANCH_HALT,
+ .clkr = {
+ .enable_reg = 0x57c,
+ .enable_mask = BIT(0),
+ .hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_uniphy_port1_rx_clk",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_port1_rx_div_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch nss_cc_uniphy_port1_tx_clk = {
+ .halt_reg = 0x580,
+ .halt_check = BRANCH_HALT,
+ .clkr = {
+ .enable_reg = 0x580,
+ .enable_mask = BIT(0),
+ .hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_uniphy_port1_tx_clk",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_port1_tx_div_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch nss_cc_uniphy_port2_rx_clk = {
+ .halt_reg = 0x584,
+ .halt_check = BRANCH_HALT,
+ .clkr = {
+ .enable_reg = 0x584,
+ .enable_mask = BIT(0),
+ .hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_uniphy_port2_rx_clk",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_port2_rx_div_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch nss_cc_uniphy_port2_tx_clk = {
+ .halt_reg = 0x588,
+ .halt_check = BRANCH_HALT,
+ .clkr = {
+ .enable_reg = 0x588,
+ .enable_mask = BIT(0),
+ .hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_uniphy_port2_tx_clk",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_port2_tx_div_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch nss_cc_uniphy_port3_rx_clk = {
+ .halt_reg = 0x58c,
+ .halt_check = BRANCH_HALT,
+ .clkr = {
+ .enable_reg = 0x58c,
+ .enable_mask = BIT(0),
+ .hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_uniphy_port3_rx_clk",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_port3_rx_div_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch nss_cc_uniphy_port3_tx_clk = {
+ .halt_reg = 0x590,
+ .halt_check = BRANCH_HALT,
+ .clkr = {
+ .enable_reg = 0x590,
+ .enable_mask = BIT(0),
+ .hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_uniphy_port3_tx_clk",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_port3_tx_div_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch nss_cc_xgmac0_ptp_ref_clk = {
+ .halt_reg = 0x448,
+ .halt_check = BRANCH_HALT,
+ .clkr = {
+ .enable_reg = 0x448,
+ .enable_mask = BIT(0),
+ .hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_xgmac0_ptp_ref_clk",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_xgmac0_ptp_ref_div_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch nss_cc_xgmac1_ptp_ref_clk = {
+ .halt_reg = 0x44c,
+ .halt_check = BRANCH_HALT,
+ .clkr = {
+ .enable_reg = 0x44c,
+ .enable_mask = BIT(0),
+ .hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_xgmac1_ptp_ref_clk",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_xgmac1_ptp_ref_div_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch nss_cc_xgmac2_ptp_ref_clk = {
+ .halt_reg = 0x450,
+ .halt_check = BRANCH_HALT,
+ .clkr = {
+ .enable_reg = 0x450,
+ .enable_mask = BIT(0),
+ .hw.init = &(const struct clk_init_data){
+ .name = "nss_cc_xgmac2_ptp_ref_clk",
+ .parent_hws = (const struct clk_hw*[]){
+ &nss_cc_xgmac2_ptp_ref_div_clk_src.clkr.hw,
+ },
+ .num_parents = 1,
+ .flags = CLK_SET_RATE_PARENT,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_regmap *nss_cc_ipq5424_clocks[] = {
+ [NSS_CC_CE_APB_CLK] = &nss_cc_ce_apb_clk.clkr,
+ [NSS_CC_CE_AXI_CLK] = &nss_cc_ce_axi_clk.clkr,
+ [NSS_CC_CE_CLK_SRC] = &nss_cc_ce_clk_src.clkr,
+ [NSS_CC_CFG_CLK_SRC] = &nss_cc_cfg_clk_src.clkr,
+ [NSS_CC_DEBUG_CLK] = &nss_cc_debug_clk.clkr,
+ [NSS_CC_EIP_BFDCD_CLK_SRC] = &nss_cc_eip_bfdcd_clk_src.clkr,
+ [NSS_CC_EIP_CLK] = &nss_cc_eip_clk.clkr,
+ [NSS_CC_NSS_CSR_CLK] = &nss_cc_nss_csr_clk.clkr,
+ [NSS_CC_NSSNOC_CE_APB_CLK] = &nss_cc_nssnoc_ce_apb_clk.clkr,
+ [NSS_CC_NSSNOC_CE_AXI_CLK] = &nss_cc_nssnoc_ce_axi_clk.clkr,
+ [NSS_CC_NSSNOC_EIP_CLK] = &nss_cc_nssnoc_eip_clk.clkr,
+ [NSS_CC_NSSNOC_NSS_CSR_CLK] = &nss_cc_nssnoc_nss_csr_clk.clkr,
+ [NSS_CC_NSSNOC_PPE_CFG_CLK] = &nss_cc_nssnoc_ppe_cfg_clk.clkr,
+ [NSS_CC_NSSNOC_PPE_CLK] = &nss_cc_nssnoc_ppe_clk.clkr,
+ [NSS_CC_PORT1_MAC_CLK] = &nss_cc_port1_mac_clk.clkr,
+ [NSS_CC_PORT1_RX_CLK] = &nss_cc_port1_rx_clk.clkr,
+ [NSS_CC_PORT1_RX_CLK_SRC] = &nss_cc_port1_rx_clk_src.clkr,
+ [NSS_CC_PORT1_RX_DIV_CLK_SRC] = &nss_cc_port1_rx_div_clk_src.clkr,
+ [NSS_CC_PORT1_TX_CLK] = &nss_cc_port1_tx_clk.clkr,
+ [NSS_CC_PORT1_TX_CLK_SRC] = &nss_cc_port1_tx_clk_src.clkr,
+ [NSS_CC_PORT1_TX_DIV_CLK_SRC] = &nss_cc_port1_tx_div_clk_src.clkr,
+ [NSS_CC_PORT2_MAC_CLK] = &nss_cc_port2_mac_clk.clkr,
+ [NSS_CC_PORT2_RX_CLK] = &nss_cc_port2_rx_clk.clkr,
+ [NSS_CC_PORT2_RX_CLK_SRC] = &nss_cc_port2_rx_clk_src.clkr,
+ [NSS_CC_PORT2_RX_DIV_CLK_SRC] = &nss_cc_port2_rx_div_clk_src.clkr,
+ [NSS_CC_PORT2_TX_CLK] = &nss_cc_port2_tx_clk.clkr,
+ [NSS_CC_PORT2_TX_CLK_SRC] = &nss_cc_port2_tx_clk_src.clkr,
+ [NSS_CC_PORT2_TX_DIV_CLK_SRC] = &nss_cc_port2_tx_div_clk_src.clkr,
+ [NSS_CC_PORT3_MAC_CLK] = &nss_cc_port3_mac_clk.clkr,
+ [NSS_CC_PORT3_RX_CLK] = &nss_cc_port3_rx_clk.clkr,
+ [NSS_CC_PORT3_RX_CLK_SRC] = &nss_cc_port3_rx_clk_src.clkr,
+ [NSS_CC_PORT3_RX_DIV_CLK_SRC] = &nss_cc_port3_rx_div_clk_src.clkr,
+ [NSS_CC_PORT3_TX_CLK] = &nss_cc_port3_tx_clk.clkr,
+ [NSS_CC_PORT3_TX_CLK_SRC] = &nss_cc_port3_tx_clk_src.clkr,
+ [NSS_CC_PORT3_TX_DIV_CLK_SRC] = &nss_cc_port3_tx_div_clk_src.clkr,
+ [NSS_CC_PPE_CLK_SRC] = &nss_cc_ppe_clk_src.clkr,
+ [NSS_CC_PPE_EDMA_CFG_CLK] = &nss_cc_ppe_edma_cfg_clk.clkr,
+ [NSS_CC_PPE_EDMA_CLK] = &nss_cc_ppe_edma_clk.clkr,
+ [NSS_CC_PPE_SWITCH_BTQ_CLK] = &nss_cc_ppe_switch_btq_clk.clkr,
+ [NSS_CC_PPE_SWITCH_CFG_CLK] = &nss_cc_ppe_switch_cfg_clk.clkr,
+ [NSS_CC_PPE_SWITCH_CLK] = &nss_cc_ppe_switch_clk.clkr,
+ [NSS_CC_PPE_SWITCH_IPE_CLK] = &nss_cc_ppe_switch_ipe_clk.clkr,
+ [NSS_CC_UNIPHY_PORT1_RX_CLK] = &nss_cc_uniphy_port1_rx_clk.clkr,
+ [NSS_CC_UNIPHY_PORT1_TX_CLK] = &nss_cc_uniphy_port1_tx_clk.clkr,
+ [NSS_CC_UNIPHY_PORT2_RX_CLK] = &nss_cc_uniphy_port2_rx_clk.clkr,
+ [NSS_CC_UNIPHY_PORT2_TX_CLK] = &nss_cc_uniphy_port2_tx_clk.clkr,
+ [NSS_CC_UNIPHY_PORT3_RX_CLK] = &nss_cc_uniphy_port3_rx_clk.clkr,
+ [NSS_CC_UNIPHY_PORT3_TX_CLK] = &nss_cc_uniphy_port3_tx_clk.clkr,
+ [NSS_CC_XGMAC0_PTP_REF_CLK] = &nss_cc_xgmac0_ptp_ref_clk.clkr,
+ [NSS_CC_XGMAC0_PTP_REF_DIV_CLK_SRC] = &nss_cc_xgmac0_ptp_ref_div_clk_src.clkr,
+ [NSS_CC_XGMAC1_PTP_REF_CLK] = &nss_cc_xgmac1_ptp_ref_clk.clkr,
+ [NSS_CC_XGMAC1_PTP_REF_DIV_CLK_SRC] = &nss_cc_xgmac1_ptp_ref_div_clk_src.clkr,
+ [NSS_CC_XGMAC2_PTP_REF_CLK] = &nss_cc_xgmac2_ptp_ref_clk.clkr,
+ [NSS_CC_XGMAC2_PTP_REF_DIV_CLK_SRC] = &nss_cc_xgmac2_ptp_ref_div_clk_src.clkr,
+};
+
+static const struct qcom_reset_map nss_cc_ipq5424_resets[] = {
+ [NSS_CC_CE_APB_CLK_ARES] = { 0x5e8, 2 },
+ [NSS_CC_CE_AXI_CLK_ARES] = { 0x5ec, 2 },
+ [NSS_CC_DEBUG_CLK_ARES] = { 0x70c, 2 },
+ [NSS_CC_EIP_CLK_ARES] = { 0x658, 2 },
+ [NSS_CC_NSS_CSR_CLK_ARES] = { 0x6b0, 2 },
+ [NSS_CC_NSSNOC_CE_APB_CLK_ARES] = { 0x5f4, 2 },
+ [NSS_CC_NSSNOC_CE_AXI_CLK_ARES] = { 0x5f8, 2 },
+ [NSS_CC_NSSNOC_EIP_CLK_ARES] = { 0x660, 2 },
+ [NSS_CC_NSSNOC_NSS_CSR_CLK_ARES] = { 0x6b4, 2 },
+ [NSS_CC_NSSNOC_PPE_CLK_ARES] = { 0x440, 2 },
+ [NSS_CC_NSSNOC_PPE_CFG_CLK_ARES] = { 0x444, 2 },
+ [NSS_CC_PORT1_MAC_CLK_ARES] = { 0x428, 2 },
+ [NSS_CC_PORT1_RX_CLK_ARES] = { 0x4fc, 2 },
+ [NSS_CC_PORT1_TX_CLK_ARES] = { 0x504, 2 },
+ [NSS_CC_PORT2_MAC_CLK_ARES] = { 0x430, 2 },
+ [NSS_CC_PORT2_RX_CLK_ARES] = { 0x50c, 2 },
+ [NSS_CC_PORT2_TX_CLK_ARES] = { 0x514, 2 },
+ [NSS_CC_PORT3_MAC_CLK_ARES] = { 0x438, 2 },
+ [NSS_CC_PORT3_RX_CLK_ARES] = { 0x51c, 2 },
+ [NSS_CC_PORT3_TX_CLK_ARES] = { 0x524, 2 },
+ [NSS_CC_PPE_BCR] = { 0x3e8 },
+ [NSS_CC_PPE_EDMA_CLK_ARES] = { 0x41c, 2 },
+ [NSS_CC_PPE_EDMA_CFG_CLK_ARES] = { 0x424, 2 },
+ [NSS_CC_PPE_SWITCH_BTQ_CLK_ARES] = { 0x408, 2 },
+ [NSS_CC_PPE_SWITCH_CLK_ARES] = { 0x410, 2 },
+ [NSS_CC_PPE_SWITCH_CFG_CLK_ARES] = { 0x418, 2 },
+ [NSS_CC_PPE_SWITCH_IPE_CLK_ARES] = { 0x400, 2 },
+ [NSS_CC_UNIPHY_PORT1_RX_CLK_ARES] = { 0x57c, 2 },
+ [NSS_CC_UNIPHY_PORT1_TX_CLK_ARES] = { 0x580, 2 },
+ [NSS_CC_UNIPHY_PORT2_RX_CLK_ARES] = { 0x584, 2 },
+ [NSS_CC_UNIPHY_PORT2_TX_CLK_ARES] = { 0x588, 2 },
+ [NSS_CC_UNIPHY_PORT3_RX_CLK_ARES] = { 0x58c, 2 },
+ [NSS_CC_UNIPHY_PORT3_TX_CLK_ARES] = { 0x590, 2 },
+ [NSS_CC_XGMAC0_PTP_REF_CLK_ARES] = { 0x448, 2 },
+ [NSS_CC_XGMAC1_PTP_REF_CLK_ARES] = { 0x44c, 2 },
+ [NSS_CC_XGMAC2_PTP_REF_CLK_ARES] = { 0x450, 2 },
+};
+
+static const struct regmap_config nss_cc_ipq5424_regmap_config = {
+ .reg_bits = 32,
+ .reg_stride = 4,
+ .val_bits = 32,
+ .max_register = 0x800,
+ .fast_io = true,
+};
+
+static const struct qcom_icc_hws_data icc_ipq5424_nss_hws[] = {
+ { MASTER_NSSNOC_PPE, SLAVE_NSSNOC_PPE, NSS_CC_NSSNOC_PPE_CLK },
+ { MASTER_NSSNOC_PPE_CFG, SLAVE_NSSNOC_PPE_CFG, NSS_CC_NSSNOC_PPE_CFG_CLK },
+ { MASTER_NSSNOC_NSS_CSR, SLAVE_NSSNOC_NSS_CSR, NSS_CC_NSSNOC_NSS_CSR_CLK },
+ { MASTER_NSSNOC_CE_AXI, SLAVE_NSSNOC_CE_AXI, NSS_CC_NSSNOC_CE_AXI_CLK},
+ { MASTER_NSSNOC_CE_APB, SLAVE_NSSNOC_CE_APB, NSS_CC_NSSNOC_CE_APB_CLK},
+ { MASTER_NSSNOC_EIP, SLAVE_NSSNOC_EIP, NSS_CC_NSSNOC_EIP_CLK},
+};
+
+#define IPQ_NSSCC_ID (5424 * 2) /* some unique value */
+
+static const struct qcom_cc_desc nss_cc_ipq5424_desc = {
+ .config = &nss_cc_ipq5424_regmap_config,
+ .clks = nss_cc_ipq5424_clocks,
+ .num_clks = ARRAY_SIZE(nss_cc_ipq5424_clocks),
+ .resets = nss_cc_ipq5424_resets,
+ .num_resets = ARRAY_SIZE(nss_cc_ipq5424_resets),
+ .icc_hws = icc_ipq5424_nss_hws,
+ .num_icc_hws = ARRAY_SIZE(icc_ipq5424_nss_hws),
+ .icc_first_node_id = IPQ_NSSCC_ID,
+};
+
+static const struct dev_pm_ops nss_cc_ipq5424_pm_ops = {
+ SET_RUNTIME_PM_OPS(pm_clk_suspend, pm_clk_resume, NULL)
+};
+
+static const struct of_device_id nss_cc_ipq5424_match_table[] = {
+ { .compatible = "qcom,ipq5424-nsscc" },
+ { }
+};
+MODULE_DEVICE_TABLE(of, nss_cc_ipq5424_match_table);
+
+static int nss_cc_ipq5424_probe(struct platform_device *pdev)
+{
+ int ret;
+
+ ret = devm_pm_runtime_enable(&pdev->dev);
+ if (ret)
+ return dev_err_probe(&pdev->dev, ret, "Fail to enable runtime PM\n");
+
+ ret = devm_pm_clk_create(&pdev->dev);
+ if (ret)
+ return dev_err_probe(&pdev->dev, ret, "Fail to create PM clock\n");
+
+ ret = pm_clk_add(&pdev->dev, "bus");
+ if (ret)
+ return dev_err_probe(&pdev->dev, ret, "Fail to add bus clock\n");
+
+ ret = pm_runtime_resume_and_get(&pdev->dev);
+ if (ret)
+ return dev_err_probe(&pdev->dev, ret, "Fail to resume\n");
+
+ ret = qcom_cc_probe(pdev, &nss_cc_ipq5424_desc);
+ pm_runtime_put(&pdev->dev);
+
+ return ret;
+}
+
+static struct platform_driver nss_cc_ipq5424_driver = {
+ .probe = nss_cc_ipq5424_probe,
+ .driver = {
+ .name = "qcom,ipq5424-nsscc",
+ .of_match_table = nss_cc_ipq5424_match_table,
+ .pm = &nss_cc_ipq5424_pm_ops,
+ .sync_state = icc_sync_state,
+ },
+};
+module_platform_driver(nss_cc_ipq5424_driver);
+
+MODULE_DESCRIPTION("Qualcomm Technologies, Inc. NSSCC IPQ5424 Driver");
+MODULE_LICENSE("GPL");
--
2.34.1
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v3 09/10] arm64: dts: qcom: ipq5424: Add NSS clock controller node
2025-07-10 12:28 [PATCH v3 00/10] Add Network Subsystem (NSS) clock controller support for IPQ5424 SoC Luo Jie
` (7 preceding siblings ...)
2025-07-10 12:28 ` [PATCH v3 08/10] clk: qcom: Add NSS clock controller driver for IPQ5424 Luo Jie
@ 2025-07-10 12:28 ` Luo Jie
2025-07-10 12:28 ` [PATCH v3 10/10] arm64: defconfig: Build NSS clock controller driver for IPQ5424 Luo Jie
9 siblings, 0 replies; 27+ messages in thread
From: Luo Jie @ 2025-07-10 12:28 UTC (permalink / raw)
To: Georgi Djakov, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bjorn Andersson, Michael Turquette, Stephen Boyd, Anusha Rao,
Konrad Dybcio, Philipp Zabel, Richard Cochran, Catalin Marinas,
Will Deacon
Cc: linux-arm-msm, linux-pm, devicetree, linux-kernel, linux-clk,
netdev, linux-arm-kernel, quic_kkumarcs, quic_linchen,
quic_leiwei, quic_pavir, quic_suruchia, Luo Jie, Konrad Dybcio
NSS clock controller provides the clocks and resets to the networking
hardware blocks on the IPQ5424, such as PPE (Packet Process Engine) and
UNIPHY (PCS) blocks.
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Signed-off-by: Luo Jie <quic_luoj@quicinc.com>
---
arch/arm64/boot/dts/qcom/ipq5424.dtsi | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/ipq5424.dtsi b/arch/arm64/boot/dts/qcom/ipq5424.dtsi
index 2eea8a078595..270bad11c2ec 100644
--- a/arch/arm64/boot/dts/qcom/ipq5424.dtsi
+++ b/arch/arm64/boot/dts/qcom/ipq5424.dtsi
@@ -730,6 +730,36 @@ frame@f42d000 {
};
};
+ clock-controller@39b00000 {
+ compatible = "qcom,ipq5424-nsscc";
+ reg = <0 0x39b00000 0 0x100000>;
+ clocks = <&cmn_pll IPQ5424_XO_24MHZ_CLK>,
+ <&cmn_pll IPQ5424_NSS_300MHZ_CLK>,
+ <&cmn_pll IPQ5424_PPE_375MHZ_CLK>,
+ <&gcc GPLL0_OUT_AUX>,
+ <0>,
+ <0>,
+ <0>,
+ <0>,
+ <0>,
+ <0>,
+ <&gcc GCC_NSSCC_CLK>;
+ clock-names = "xo",
+ "nss",
+ "ppe",
+ "gpll0_out",
+ "uniphy0_rx",
+ "uniphy0_tx",
+ "uniphy1_rx",
+ "uniphy1_tx",
+ "uniphy2_rx",
+ "uniphy2_tx",
+ "bus";
+ #clock-cells = <1>;
+ #reset-cells = <1>;
+ #interconnect-cells = <1>;
+ };
+
pcie3: pcie@40000000 {
compatible = "qcom,pcie-ipq5424", "qcom,pcie-ipq9574";
reg = <0x0 0x40000000 0x0 0xf1c>,
--
2.34.1
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v3 10/10] arm64: defconfig: Build NSS clock controller driver for IPQ5424
2025-07-10 12:28 [PATCH v3 00/10] Add Network Subsystem (NSS) clock controller support for IPQ5424 SoC Luo Jie
` (8 preceding siblings ...)
2025-07-10 12:28 ` [PATCH v3 09/10] arm64: dts: qcom: ipq5424: Add NSS clock controller node Luo Jie
@ 2025-07-10 12:28 ` Luo Jie
9 siblings, 0 replies; 27+ messages in thread
From: Luo Jie @ 2025-07-10 12:28 UTC (permalink / raw)
To: Georgi Djakov, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bjorn Andersson, Michael Turquette, Stephen Boyd, Anusha Rao,
Konrad Dybcio, Philipp Zabel, Richard Cochran, Catalin Marinas,
Will Deacon
Cc: linux-arm-msm, linux-pm, devicetree, linux-kernel, linux-clk,
netdev, linux-arm-kernel, quic_kkumarcs, quic_linchen,
quic_leiwei, quic_pavir, quic_suruchia, Luo Jie,
Krzysztof Kozlowski
NSS clock controller is needed for supplying clocks and resets to the
networking blocks for the Ethernet functions on the IPQ5424 platforms.
All boards based on the IPQ5424 SoC will require this driver to be enabled.
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Luo Jie <quic_luoj@quicinc.com>
---
arch/arm64/configs/defconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig
index f56a4ce84db8..b37addde371d 100644
--- a/arch/arm64/configs/defconfig
+++ b/arch/arm64/configs/defconfig
@@ -1372,6 +1372,7 @@ CONFIG_IPQ_GCC_5424=y
CONFIG_IPQ_GCC_6018=y
CONFIG_IPQ_GCC_8074=y
CONFIG_IPQ_GCC_9574=y
+CONFIG_IPQ_NSSCC_5424=m
CONFIG_IPQ_NSSCC_9574=m
CONFIG_MSM_GCC_8916=y
CONFIG_MSM_MMCC_8994=m
--
2.34.1
^ permalink raw reply related [flat|nested] 27+ messages in thread
* Re: [PATCH v3 05/10] dt-bindings: clock: ipq9574: Rename NSS CC source clocks to drop rate
2025-07-10 12:28 ` [PATCH v3 05/10] dt-bindings: clock: ipq9574: Rename NSS CC source clocks to drop rate Luo Jie
@ 2025-07-10 22:54 ` Rob Herring
2025-07-11 12:15 ` Konrad Dybcio
0 siblings, 1 reply; 27+ messages in thread
From: Rob Herring @ 2025-07-10 22:54 UTC (permalink / raw)
To: Luo Jie
Cc: Georgi Djakov, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson,
Michael Turquette, Stephen Boyd, Anusha Rao, Konrad Dybcio,
Philipp Zabel, Richard Cochran, Catalin Marinas, Will Deacon,
linux-arm-msm, linux-pm, devicetree, linux-kernel, linux-clk,
netdev, linux-arm-kernel, quic_kkumarcs, quic_linchen,
quic_leiwei, quic_pavir, quic_suruchia
On Thu, Jul 10, 2025 at 08:28:13PM +0800, Luo Jie wrote:
> Drop the clock rate suffix from the NSS Clock Controller clock names for
> PPE and NSS clocks. A generic name allows for easier extension of support
> to additional SoCs that utilize same hardware design.
This is an ABI change. You must state that here and provide a reason the
change is okay (assuming it is). Otherwise, you are stuck with the name
even if not optimal.
>
> Signed-off-by: Luo Jie <quic_luoj@quicinc.com>
> ---
> .../devicetree/bindings/clock/qcom,ipq9574-nsscc.yaml | 12 ++++++------
> 1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/clock/qcom,ipq9574-nsscc.yaml b/Documentation/devicetree/bindings/clock/qcom,ipq9574-nsscc.yaml
> index 17252b6ea3be..b9ca69172adc 100644
> --- a/Documentation/devicetree/bindings/clock/qcom,ipq9574-nsscc.yaml
> +++ b/Documentation/devicetree/bindings/clock/qcom,ipq9574-nsscc.yaml
> @@ -25,8 +25,8 @@ properties:
> clocks:
> items:
> - description: Board XO source
> - - description: CMN_PLL NSS 1200MHz (Bias PLL cc) clock source
> - - description: CMN_PLL PPE 353MHz (Bias PLL ubi nc) clock source
> + - description: CMN_PLL NSS (Bias PLL cc) clock source
> + - description: CMN_PLL PPE (Bias PLL ubi nc) clock source
> - description: GCC GPLL0 OUT AUX clock source
> - description: Uniphy0 NSS Rx clock source
> - description: Uniphy0 NSS Tx clock source
> @@ -42,8 +42,8 @@ properties:
> clock-names:
> items:
> - const: xo
> - - const: nss_1200
> - - const: ppe_353
> + - const: nss
> + - const: ppe
> - const: gpll0_out
> - const: uniphy0_rx
> - const: uniphy0_tx
> @@ -82,8 +82,8 @@ examples:
> <&uniphy 5>,
> <&gcc GCC_NSSCC_CLK>;
> clock-names = "xo",
> - "nss_1200",
> - "ppe_353",
> + "nss",
> + "ppe",
> "gpll0_out",
> "uniphy0_rx",
> "uniphy0_tx",
>
> --
> 2.34.1
>
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH v3 07/10] dt-bindings: clock: qcom: Add NSS clock controller for IPQ5424 SoC
2025-07-10 12:28 ` [PATCH v3 07/10] dt-bindings: clock: qcom: Add NSS clock controller for IPQ5424 SoC Luo Jie
@ 2025-07-10 22:55 ` Rob Herring
2025-07-11 12:16 ` Konrad Dybcio
0 siblings, 1 reply; 27+ messages in thread
From: Rob Herring @ 2025-07-10 22:55 UTC (permalink / raw)
To: Luo Jie
Cc: Georgi Djakov, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson,
Michael Turquette, Stephen Boyd, Anusha Rao, Konrad Dybcio,
Philipp Zabel, Richard Cochran, Catalin Marinas, Will Deacon,
linux-arm-msm, linux-pm, devicetree, linux-kernel, linux-clk,
netdev, linux-arm-kernel, quic_kkumarcs, quic_linchen,
quic_leiwei, quic_pavir, quic_suruchia
On Thu, Jul 10, 2025 at 08:28:15PM +0800, Luo Jie wrote:
> NSS clock controller provides the clocks and resets to the networking
> blocks such as PPE (Packet Process Engine) and UNIPHY (PCS) on IPQ5424
> devices.
>
> Add the compatible "qcom,ipq5424-nsscc" support based on the current
> IPQ9574 NSS clock controller DT binding file. ICC clocks are always
> provided by the NSS clock controller of IPQ9574 and IPQ5424, so add
> interconnect-cells as required DT property.
>
> Also add master/slave ids for IPQ5424 networking interfaces, which is
> used by nss-ipq5424 driver for providing interconnect services using
> icc-clk framework.
>
> Signed-off-by: Luo Jie <quic_luoj@quicinc.com>
> ---
> .../bindings/clock/qcom,ipq9574-nsscc.yaml | 14 +++--
> include/dt-bindings/clock/qcom,ipq5424-nsscc.h | 65 ++++++++++++++++++++++
> include/dt-bindings/interconnect/qcom,ipq5424.h | 13 +++++
> include/dt-bindings/reset/qcom,ipq5424-nsscc.h | 46 +++++++++++++++
> 4 files changed, 134 insertions(+), 4 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/clock/qcom,ipq9574-nsscc.yaml b/Documentation/devicetree/bindings/clock/qcom,ipq9574-nsscc.yaml
> index b9ca69172adc..86ee9ffb2eda 100644
> --- a/Documentation/devicetree/bindings/clock/qcom,ipq9574-nsscc.yaml
> +++ b/Documentation/devicetree/bindings/clock/qcom,ipq9574-nsscc.yaml
> @@ -4,7 +4,7 @@
> $id: http://devicetree.org/schemas/clock/qcom,ipq9574-nsscc.yaml#
> $schema: http://devicetree.org/meta-schemas/core.yaml#
>
> -title: Qualcomm Networking Sub System Clock & Reset Controller on IPQ9574
> +title: Qualcomm Networking Sub System Clock & Reset Controller on IPQ9574 and IPQ5424
>
> maintainers:
> - Bjorn Andersson <andersson@kernel.org>
> @@ -12,15 +12,19 @@ maintainers:
>
> description: |
> Qualcomm networking sub system clock control module provides the clocks,
> - resets on IPQ9574
> + resets on IPQ9574 and IPQ5424
>
> - See also::
> + See also:
> + include/dt-bindings/clock/qcom,ipq5424-nsscc.h
> include/dt-bindings/clock/qcom,ipq9574-nsscc.h
> + include/dt-bindings/reset/qcom,ipq5424-nsscc.h
> include/dt-bindings/reset/qcom,ipq9574-nsscc.h
>
> properties:
> compatible:
> - const: qcom,ipq9574-nsscc
> + enum:
> + - qcom,ipq5424-nsscc
> + - qcom,ipq9574-nsscc
>
> clocks:
> items:
> @@ -57,6 +61,7 @@ required:
> - compatible
> - clocks
> - clock-names
> + - '#interconnect-cells'
You just made this required for everyone. Again, that's an ABI change.
>
> allOf:
> - $ref: qcom,gcc.yaml#
> @@ -94,5 +99,6 @@ examples:
> "bus";
> #clock-cells = <1>;
> #reset-cells = <1>;
> + #interconnect-cells = <1>;
> };
> ...
> diff --git a/include/dt-bindings/clock/qcom,ipq5424-nsscc.h b/include/dt-bindings/clock/qcom,ipq5424-nsscc.h
> new file mode 100644
> index 000000000000..59ce056ead93
> --- /dev/null
> +++ b/include/dt-bindings/clock/qcom,ipq5424-nsscc.h
> @@ -0,0 +1,65 @@
> +/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
> +/*
> + * Copyright (c) 2025, Qualcomm Innovation Center, Inc. All rights reserved.
> + */
> +
> +#ifndef _DT_BINDINGS_CLOCK_QCOM_IPQ5424_NSSCC_H
> +#define _DT_BINDINGS_CLOCK_QCOM_IPQ5424_NSSCC_H
> +
> +/* NSS_CC clocks */
> +#define NSS_CC_CE_APB_CLK 0
> +#define NSS_CC_CE_AXI_CLK 1
> +#define NSS_CC_CE_CLK_SRC 2
> +#define NSS_CC_CFG_CLK_SRC 3
> +#define NSS_CC_DEBUG_CLK 4
> +#define NSS_CC_EIP_BFDCD_CLK_SRC 5
> +#define NSS_CC_EIP_CLK 6
> +#define NSS_CC_NSS_CSR_CLK 7
> +#define NSS_CC_NSSNOC_CE_APB_CLK 8
> +#define NSS_CC_NSSNOC_CE_AXI_CLK 9
> +#define NSS_CC_NSSNOC_EIP_CLK 10
> +#define NSS_CC_NSSNOC_NSS_CSR_CLK 11
> +#define NSS_CC_NSSNOC_PPE_CFG_CLK 12
> +#define NSS_CC_NSSNOC_PPE_CLK 13
> +#define NSS_CC_PORT1_MAC_CLK 14
> +#define NSS_CC_PORT1_RX_CLK 15
> +#define NSS_CC_PORT1_RX_CLK_SRC 16
> +#define NSS_CC_PORT1_RX_DIV_CLK_SRC 17
> +#define NSS_CC_PORT1_TX_CLK 18
> +#define NSS_CC_PORT1_TX_CLK_SRC 19
> +#define NSS_CC_PORT1_TX_DIV_CLK_SRC 20
> +#define NSS_CC_PORT2_MAC_CLK 21
> +#define NSS_CC_PORT2_RX_CLK 22
> +#define NSS_CC_PORT2_RX_CLK_SRC 23
> +#define NSS_CC_PORT2_RX_DIV_CLK_SRC 24
> +#define NSS_CC_PORT2_TX_CLK 25
> +#define NSS_CC_PORT2_TX_CLK_SRC 26
> +#define NSS_CC_PORT2_TX_DIV_CLK_SRC 27
> +#define NSS_CC_PORT3_MAC_CLK 28
> +#define NSS_CC_PORT3_RX_CLK 29
> +#define NSS_CC_PORT3_RX_CLK_SRC 30
> +#define NSS_CC_PORT3_RX_DIV_CLK_SRC 31
> +#define NSS_CC_PORT3_TX_CLK 32
> +#define NSS_CC_PORT3_TX_CLK_SRC 33
> +#define NSS_CC_PORT3_TX_DIV_CLK_SRC 34
> +#define NSS_CC_PPE_CLK_SRC 35
> +#define NSS_CC_PPE_EDMA_CFG_CLK 36
> +#define NSS_CC_PPE_EDMA_CLK 37
> +#define NSS_CC_PPE_SWITCH_BTQ_CLK 38
> +#define NSS_CC_PPE_SWITCH_CFG_CLK 39
> +#define NSS_CC_PPE_SWITCH_CLK 40
> +#define NSS_CC_PPE_SWITCH_IPE_CLK 41
> +#define NSS_CC_UNIPHY_PORT1_RX_CLK 42
> +#define NSS_CC_UNIPHY_PORT1_TX_CLK 43
> +#define NSS_CC_UNIPHY_PORT2_RX_CLK 44
> +#define NSS_CC_UNIPHY_PORT2_TX_CLK 45
> +#define NSS_CC_UNIPHY_PORT3_RX_CLK 46
> +#define NSS_CC_UNIPHY_PORT3_TX_CLK 47
> +#define NSS_CC_XGMAC0_PTP_REF_CLK 48
> +#define NSS_CC_XGMAC0_PTP_REF_DIV_CLK_SRC 49
> +#define NSS_CC_XGMAC1_PTP_REF_CLK 50
> +#define NSS_CC_XGMAC1_PTP_REF_DIV_CLK_SRC 51
> +#define NSS_CC_XGMAC2_PTP_REF_CLK 52
> +#define NSS_CC_XGMAC2_PTP_REF_DIV_CLK_SRC 53
> +
> +#endif
> diff --git a/include/dt-bindings/interconnect/qcom,ipq5424.h b/include/dt-bindings/interconnect/qcom,ipq5424.h
> index 66cd9a9ece03..a78604beff99 100644
> --- a/include/dt-bindings/interconnect/qcom,ipq5424.h
> +++ b/include/dt-bindings/interconnect/qcom,ipq5424.h
> @@ -27,4 +27,17 @@
> #define MASTER_NSSNOC_SNOC_1 22
> #define SLAVE_NSSNOC_SNOC_1 23
>
> +#define MASTER_NSSNOC_PPE 0
> +#define SLAVE_NSSNOC_PPE 1
> +#define MASTER_NSSNOC_PPE_CFG 2
> +#define SLAVE_NSSNOC_PPE_CFG 3
> +#define MASTER_NSSNOC_NSS_CSR 4
> +#define SLAVE_NSSNOC_NSS_CSR 5
> +#define MASTER_NSSNOC_CE_AXI 6
> +#define SLAVE_NSSNOC_CE_AXI 7
> +#define MASTER_NSSNOC_CE_APB 8
> +#define SLAVE_NSSNOC_CE_APB 9
> +#define MASTER_NSSNOC_EIP 10
> +#define SLAVE_NSSNOC_EIP 11
> +
> #endif /* INTERCONNECT_QCOM_IPQ5424_H */
> diff --git a/include/dt-bindings/reset/qcom,ipq5424-nsscc.h b/include/dt-bindings/reset/qcom,ipq5424-nsscc.h
> new file mode 100644
> index 000000000000..f2f7eaa28b21
> --- /dev/null
> +++ b/include/dt-bindings/reset/qcom,ipq5424-nsscc.h
> @@ -0,0 +1,46 @@
> +/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
> +/*
> + * Copyright (c) 2025, Qualcomm Innovation Center, Inc. All rights reserved.
> + */
> +
> +#ifndef _DT_BINDINGS_RESET_QCOM_IPQ5424_NSSCC_H
> +#define _DT_BINDINGS_RESET_QCOM_IPQ5424_NSSCC_H
> +
> +#define NSS_CC_CE_APB_CLK_ARES 0
> +#define NSS_CC_CE_AXI_CLK_ARES 1
> +#define NSS_CC_DEBUG_CLK_ARES 2
> +#define NSS_CC_EIP_CLK_ARES 3
> +#define NSS_CC_NSS_CSR_CLK_ARES 4
> +#define NSS_CC_NSSNOC_CE_APB_CLK_ARES 5
> +#define NSS_CC_NSSNOC_CE_AXI_CLK_ARES 6
> +#define NSS_CC_NSSNOC_EIP_CLK_ARES 7
> +#define NSS_CC_NSSNOC_NSS_CSR_CLK_ARES 8
> +#define NSS_CC_NSSNOC_PPE_CLK_ARES 9
> +#define NSS_CC_NSSNOC_PPE_CFG_CLK_ARES 10
> +#define NSS_CC_PORT1_MAC_CLK_ARES 11
> +#define NSS_CC_PORT1_RX_CLK_ARES 12
> +#define NSS_CC_PORT1_TX_CLK_ARES 13
> +#define NSS_CC_PORT2_MAC_CLK_ARES 14
> +#define NSS_CC_PORT2_RX_CLK_ARES 15
> +#define NSS_CC_PORT2_TX_CLK_ARES 16
> +#define NSS_CC_PORT3_MAC_CLK_ARES 17
> +#define NSS_CC_PORT3_RX_CLK_ARES 18
> +#define NSS_CC_PORT3_TX_CLK_ARES 19
> +#define NSS_CC_PPE_BCR 20
> +#define NSS_CC_PPE_EDMA_CLK_ARES 21
> +#define NSS_CC_PPE_EDMA_CFG_CLK_ARES 22
> +#define NSS_CC_PPE_SWITCH_BTQ_CLK_ARES 23
> +#define NSS_CC_PPE_SWITCH_CLK_ARES 24
> +#define NSS_CC_PPE_SWITCH_CFG_CLK_ARES 25
> +#define NSS_CC_PPE_SWITCH_IPE_CLK_ARES 26
> +#define NSS_CC_UNIPHY_PORT1_RX_CLK_ARES 27
> +#define NSS_CC_UNIPHY_PORT1_TX_CLK_ARES 28
> +#define NSS_CC_UNIPHY_PORT2_RX_CLK_ARES 29
> +#define NSS_CC_UNIPHY_PORT2_TX_CLK_ARES 30
> +#define NSS_CC_UNIPHY_PORT3_RX_CLK_ARES 31
> +#define NSS_CC_UNIPHY_PORT3_TX_CLK_ARES 32
> +#define NSS_CC_XGMAC0_PTP_REF_CLK_ARES 33
> +#define NSS_CC_XGMAC1_PTP_REF_CLK_ARES 34
> +#define NSS_CC_XGMAC2_PTP_REF_CLK_ARES 35
> +
> +#endif
>
> --
> 2.34.1
>
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH v3 05/10] dt-bindings: clock: ipq9574: Rename NSS CC source clocks to drop rate
2025-07-10 22:54 ` Rob Herring
@ 2025-07-11 12:15 ` Konrad Dybcio
2025-07-18 9:12 ` Luo Jie
0 siblings, 1 reply; 27+ messages in thread
From: Konrad Dybcio @ 2025-07-11 12:15 UTC (permalink / raw)
To: Rob Herring, Luo Jie
Cc: Georgi Djakov, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson,
Michael Turquette, Stephen Boyd, Anusha Rao, Konrad Dybcio,
Philipp Zabel, Richard Cochran, Catalin Marinas, Will Deacon,
linux-arm-msm, linux-pm, devicetree, linux-kernel, linux-clk,
netdev, linux-arm-kernel, quic_kkumarcs, quic_linchen,
quic_leiwei, quic_pavir, quic_suruchia
On 7/11/25 12:54 AM, Rob Herring wrote:
> On Thu, Jul 10, 2025 at 08:28:13PM +0800, Luo Jie wrote:
>> Drop the clock rate suffix from the NSS Clock Controller clock names for
>> PPE and NSS clocks. A generic name allows for easier extension of support
>> to additional SoCs that utilize same hardware design.
>
> This is an ABI change. You must state that here and provide a reason the
> change is okay (assuming it is). Otherwise, you are stuck with the name
> even if not optimal.
The reason here seems to be simplifying the YAML.. which is not a good
reason really..
I would instead suggest keeping the clocks list as-is for ipq9574 (this
existing case), whereas improving it for any new additions
Konrad
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH v3 07/10] dt-bindings: clock: qcom: Add NSS clock controller for IPQ5424 SoC
2025-07-10 22:55 ` Rob Herring
@ 2025-07-11 12:16 ` Konrad Dybcio
2025-07-18 9:05 ` Luo Jie
0 siblings, 1 reply; 27+ messages in thread
From: Konrad Dybcio @ 2025-07-11 12:16 UTC (permalink / raw)
To: Rob Herring, Luo Jie
Cc: Georgi Djakov, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson,
Michael Turquette, Stephen Boyd, Anusha Rao, Konrad Dybcio,
Philipp Zabel, Richard Cochran, Catalin Marinas, Will Deacon,
linux-arm-msm, linux-pm, devicetree, linux-kernel, linux-clk,
netdev, linux-arm-kernel, quic_kkumarcs, quic_linchen,
quic_leiwei, quic_pavir, quic_suruchia
On 7/11/25 12:55 AM, Rob Herring wrote:
> On Thu, Jul 10, 2025 at 08:28:15PM +0800, Luo Jie wrote:
>> NSS clock controller provides the clocks and resets to the networking
>> blocks such as PPE (Packet Process Engine) and UNIPHY (PCS) on IPQ5424
>> devices.
>>
>> Add the compatible "qcom,ipq5424-nsscc" support based on the current
>> IPQ9574 NSS clock controller DT binding file. ICC clocks are always
>> provided by the NSS clock controller of IPQ9574 and IPQ5424, so add
>> interconnect-cells as required DT property.
>>
>> Also add master/slave ids for IPQ5424 networking interfaces, which is
>> used by nss-ipq5424 driver for providing interconnect services using
>> icc-clk framework.
>>
>> Signed-off-by: Luo Jie <quic_luoj@quicinc.com>
>> ---
[...]
>> clocks:
>> items:
>> @@ -57,6 +61,7 @@ required:
>> - compatible
>> - clocks
>> - clock-names
>> + - '#interconnect-cells'
>
> You just made this required for everyone. Again, that's an ABI change.
In this case it's actually valid, but should be a separate fixup change
Konrad
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH v3 02/10] clk: qcom: ipq5424: Enable NSS NoC clocks to use icc-clk
2025-07-10 12:28 ` [PATCH v3 02/10] clk: qcom: ipq5424: Enable NSS NoC clocks to use icc-clk Luo Jie
@ 2025-07-17 20:40 ` Konrad Dybcio
2025-07-18 9:21 ` Luo Jie
0 siblings, 1 reply; 27+ messages in thread
From: Konrad Dybcio @ 2025-07-17 20:40 UTC (permalink / raw)
To: Luo Jie, Georgi Djakov, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Bjorn Andersson, Michael Turquette, Stephen Boyd,
Anusha Rao, Konrad Dybcio, Philipp Zabel, Richard Cochran,
Catalin Marinas, Will Deacon
Cc: linux-arm-msm, linux-pm, devicetree, linux-kernel, linux-clk,
netdev, linux-arm-kernel, quic_kkumarcs, quic_linchen,
quic_leiwei, quic_pavir, quic_suruchia
On 7/10/25 2:28 PM, Luo Jie wrote:
> Add NSS NoC clocks using the icc-clk framework to create interconnect
> paths. The network subsystem (NSS) can be connected to these NoCs.
Are there any other similar clocks that we should expect to pop up
in the future? We should most definitely have a single commit that
takes care of everything that'll be used going forward.
grep "\[.*NOC.*CLK\]" drivers/clk/qcom/gcc-ipq5424.c | wc -l
returns a number of them that aren't described as icc clocks, most
notably the GCC_CNOC_USB_CLK is consumed as a regular clock.
>
> Also update to use the expected icc_first_node_id for registering the
> icc clocks.
This is a separate fix
>
> Signed-off-by: Luo Jie <quic_luoj@quicinc.com>
> ---
> drivers/clk/qcom/gcc-ipq5424.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/clk/qcom/gcc-ipq5424.c b/drivers/clk/qcom/gcc-ipq5424.c
> index 3d42f3d85c7a..3a01cb277cac 100644
> --- a/drivers/clk/qcom/gcc-ipq5424.c
> +++ b/drivers/clk/qcom/gcc-ipq5424.c
> @@ -1,7 +1,7 @@
> // SPDX-License-Identifier: GPL-2.0
> /*
> * Copyright (c) 2018,2020 The Linux Foundation. All rights reserved.
> - * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved.
> + * Copyright (c) 2024-2025 Qualcomm Innovation Center, Inc. All rights reserved.
Please follow the latest recommendations for the copyright notices
Konrad
> */
>
> #include <linux/clk-provider.h>
> @@ -3250,6 +3250,9 @@ static const struct qcom_icc_hws_data icc_ipq5424_hws[] = {
> { MASTER_ANOC_PCIE3, SLAVE_ANOC_PCIE3, GCC_ANOC_PCIE3_2LANE_M_CLK },
> { MASTER_CNOC_PCIE3, SLAVE_CNOC_PCIE3, GCC_CNOC_PCIE3_2LANE_S_CLK },
> { MASTER_CNOC_USB, SLAVE_CNOC_USB, GCC_CNOC_USB_CLK },
> + { MASTER_NSSNOC_NSSCC, SLAVE_NSSNOC_NSSCC, GCC_NSSNOC_NSSCC_CLK },
> + { MASTER_NSSNOC_SNOC_0, SLAVE_NSSNOC_SNOC_0, GCC_NSSNOC_SNOC_CLK },
> + { MASTER_NSSNOC_SNOC_1, SLAVE_NSSNOC_SNOC_1, GCC_NSSNOC_SNOC_1_CLK },
> };
>
> static const struct of_device_id gcc_ipq5424_match_table[] = {
> @@ -3284,6 +3287,7 @@ static const struct qcom_cc_desc gcc_ipq5424_desc = {
> .num_clk_hws = ARRAY_SIZE(gcc_ipq5424_hws),
> .icc_hws = icc_ipq5424_hws,
> .num_icc_hws = ARRAY_SIZE(icc_ipq5424_hws),
> + .icc_first_node_id = IPQ_APPS_ID,
> };
>
> static int gcc_ipq5424_probe(struct platform_device *pdev)
>
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH v3 04/10] clock: qcom: gcc-ipq5424: Add gpll0_out_aux clock
2025-07-10 12:28 ` [PATCH v3 04/10] clock: qcom: gcc-ipq5424: Add gpll0_out_aux clock Luo Jie
@ 2025-07-17 20:41 ` Konrad Dybcio
2025-07-18 9:12 ` Luo Jie
0 siblings, 1 reply; 27+ messages in thread
From: Konrad Dybcio @ 2025-07-17 20:41 UTC (permalink / raw)
To: Luo Jie, Georgi Djakov, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Bjorn Andersson, Michael Turquette, Stephen Boyd,
Anusha Rao, Konrad Dybcio, Philipp Zabel, Richard Cochran,
Catalin Marinas, Will Deacon
Cc: linux-arm-msm, linux-pm, devicetree, linux-kernel, linux-clk,
netdev, linux-arm-kernel, quic_kkumarcs, quic_linchen,
quic_leiwei, quic_pavir, quic_suruchia
On 7/10/25 2:28 PM, Luo Jie wrote:
> The clock gpll0_out_aux acts as the parent clock for some of the NSS
> (Network Subsystem) clocks.
>
> Signed-off-by: Luo Jie <quic_luoj@quicinc.com>
> ---
nit: subject: "clock:" -> "clk:" to match the other commits to this
subsystem
Konrad
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH v3 07/10] dt-bindings: clock: qcom: Add NSS clock controller for IPQ5424 SoC
2025-07-11 12:16 ` Konrad Dybcio
@ 2025-07-18 9:05 ` Luo Jie
0 siblings, 0 replies; 27+ messages in thread
From: Luo Jie @ 2025-07-18 9:05 UTC (permalink / raw)
To: Konrad Dybcio, Rob Herring
Cc: Georgi Djakov, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson,
Michael Turquette, Stephen Boyd, Anusha Rao, Konrad Dybcio,
Philipp Zabel, Richard Cochran, Catalin Marinas, Will Deacon,
linux-arm-msm, linux-pm, devicetree, linux-kernel, linux-clk,
netdev, linux-arm-kernel, quic_kkumarcs, quic_linchen,
quic_leiwei, quic_pavir, quic_suruchia
On 7/11/2025 8:16 PM, Konrad Dybcio wrote:
> On 7/11/25 12:55 AM, Rob Herring wrote:
>> On Thu, Jul 10, 2025 at 08:28:15PM +0800, Luo Jie wrote:
>>> NSS clock controller provides the clocks and resets to the networking
>>> blocks such as PPE (Packet Process Engine) and UNIPHY (PCS) on IPQ5424
>>> devices.
>>>
>>> Add the compatible "qcom,ipq5424-nsscc" support based on the current
>>> IPQ9574 NSS clock controller DT binding file. ICC clocks are always
>>> provided by the NSS clock controller of IPQ9574 and IPQ5424, so add
>>> interconnect-cells as required DT property.
>>>
>>> Also add master/slave ids for IPQ5424 networking interfaces, which is
>>> used by nss-ipq5424 driver for providing interconnect services using
>>> icc-clk framework.
>>>
>>> Signed-off-by: Luo Jie <quic_luoj@quicinc.com>
>>> ---
>
> [...]
>
>>> clocks:
>>> items:
>>> @@ -57,6 +61,7 @@ required:
>>> - compatible
>>> - clocks
>>> - clock-names
>>> + - '#interconnect-cells'
>>
>> You just made this required for everyone. Again, that's an ABI change.
>
> In this case it's actually valid, but should be a separate fixup change
>
> Konrad
Making #interconnect-cells a required property does introduce an ABI
change in the device tree bindings. However, this change is necessary
to ensure proper functionality and integration with the interconnect
framework, which increasingly relies on this property for accurate
configuration and resource management.
Yes, this is a fixup change. Since the current NSS clock controller DTS
node for IPQ9574 already includes '#interconnect-cells', I will separate
this modification into a standalone fixup patch.
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH v3 05/10] dt-bindings: clock: ipq9574: Rename NSS CC source clocks to drop rate
2025-07-11 12:15 ` Konrad Dybcio
@ 2025-07-18 9:12 ` Luo Jie
2025-07-18 9:28 ` Konrad Dybcio
0 siblings, 1 reply; 27+ messages in thread
From: Luo Jie @ 2025-07-18 9:12 UTC (permalink / raw)
To: Konrad Dybcio, Rob Herring
Cc: Georgi Djakov, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson,
Michael Turquette, Stephen Boyd, Anusha Rao, Konrad Dybcio,
Philipp Zabel, Richard Cochran, Catalin Marinas, Will Deacon,
linux-arm-msm, linux-pm, devicetree, linux-kernel, linux-clk,
netdev, linux-arm-kernel, quic_kkumarcs, quic_linchen,
quic_leiwei, quic_pavir, quic_suruchia
On 7/11/2025 8:15 PM, Konrad Dybcio wrote:
> On 7/11/25 12:54 AM, Rob Herring wrote:
>> On Thu, Jul 10, 2025 at 08:28:13PM +0800, Luo Jie wrote:
>>> Drop the clock rate suffix from the NSS Clock Controller clock names for
>>> PPE and NSS clocks. A generic name allows for easier extension of support
>>> to additional SoCs that utilize same hardware design.
>>
>> This is an ABI change. You must state that here and provide a reason the
>> change is okay (assuming it is). Otherwise, you are stuck with the name
>> even if not optimal.
>
> The reason here seems to be simplifying the YAML.. which is not a good
> reason really..
>
> I would instead suggest keeping the clocks list as-is for ipq9574 (this
> existing case), whereas improving it for any new additions
>
> Konrad
Thanks Rob and Konrad for the comments.
"nss_1200" and "nss" refer to the same clock pin on different SoC.
As per Krzystof's previous comment on V2, including the frequency
as a suffix in the clock name is not required, since only the
frequencies vary across different IPQ SoCs, while the source clock
pins for 'PPE' and 'NSS' clocks are the same. Hence this ABI change
was deemed necessary.
By removing the frequency suffix, the device tree bindings becomes
more flexible and easier to extend for supporting new hardware
variants in the future.
Impact due to this ABI change: The NSS clock controller node is only
enabled for the IPQ9574 DTS. In this patch series, the corresponding
DTS changes for IPQ9574 are also included to align with this ABI
change.
Please let me know if further clarification or adjustments are needed.
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH v3 04/10] clock: qcom: gcc-ipq5424: Add gpll0_out_aux clock
2025-07-17 20:41 ` Konrad Dybcio
@ 2025-07-18 9:12 ` Luo Jie
0 siblings, 0 replies; 27+ messages in thread
From: Luo Jie @ 2025-07-18 9:12 UTC (permalink / raw)
To: Konrad Dybcio, Georgi Djakov, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Bjorn Andersson, Michael Turquette, Stephen Boyd,
Anusha Rao, Konrad Dybcio, Philipp Zabel, Richard Cochran,
Catalin Marinas, Will Deacon
Cc: linux-arm-msm, linux-pm, devicetree, linux-kernel, linux-clk,
netdev, linux-arm-kernel, quic_kkumarcs, quic_linchen,
quic_leiwei, quic_pavir, quic_suruchia
On 7/18/2025 4:41 AM, Konrad Dybcio wrote:
> On 7/10/25 2:28 PM, Luo Jie wrote:
>> The clock gpll0_out_aux acts as the parent clock for some of the NSS
>> (Network Subsystem) clocks.
>>
>> Signed-off-by: Luo Jie <quic_luoj@quicinc.com>
>> ---
>
> nit: subject: "clock:" -> "clk:" to match the other commits to this
> subsystem
>
> Konrad
OK, I’ll update the subject to use "clk:" for consistency in the next
version.
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH v3 02/10] clk: qcom: ipq5424: Enable NSS NoC clocks to use icc-clk
2025-07-17 20:40 ` Konrad Dybcio
@ 2025-07-18 9:21 ` Luo Jie
0 siblings, 0 replies; 27+ messages in thread
From: Luo Jie @ 2025-07-18 9:21 UTC (permalink / raw)
To: Konrad Dybcio, Georgi Djakov, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Bjorn Andersson, Michael Turquette, Stephen Boyd,
Anusha Rao, Konrad Dybcio, Philipp Zabel, Richard Cochran,
Catalin Marinas, Will Deacon
Cc: linux-arm-msm, linux-pm, devicetree, linux-kernel, linux-clk,
netdev, linux-arm-kernel, quic_kkumarcs, quic_linchen,
quic_leiwei, quic_pavir, quic_suruchia
On 7/18/2025 4:40 AM, Konrad Dybcio wrote:
> On 7/10/25 2:28 PM, Luo Jie wrote:
>> Add NSS NoC clocks using the icc-clk framework to create interconnect
>> paths. The network subsystem (NSS) can be connected to these NoCs.
>
> Are there any other similar clocks that we should expect to pop up
> in the future? We should most definitely have a single commit that
> takes care of everything that'll be used going forward.
>
> grep "\[.*NOC.*CLK\]" drivers/clk/qcom/gcc-ipq5424.c | wc -l
>
> returns a number of them that aren't described as icc clocks, most
> notably the GCC_CNOC_USB_CLK is consumed as a regular clock.
Thank you for the suggestion. I will update the patch to enable the
necessary additional NOC clocks and register them as ICC clocks, all
within a single commit.
>
>>
>> Also update to use the expected icc_first_node_id for registering the
>> icc clocks.
>
> This is a separate fix
OK, I’ll split this out into a separate patch/fix in the next version.
>
>>
>> Signed-off-by: Luo Jie <quic_luoj@quicinc.com>
>> ---
>> drivers/clk/qcom/gcc-ipq5424.c | 6 +++++-
>> 1 file changed, 5 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/clk/qcom/gcc-ipq5424.c b/drivers/clk/qcom/gcc-ipq5424.c
>> index 3d42f3d85c7a..3a01cb277cac 100644
>> --- a/drivers/clk/qcom/gcc-ipq5424.c
>> +++ b/drivers/clk/qcom/gcc-ipq5424.c
>> @@ -1,7 +1,7 @@
>> // SPDX-License-Identifier: GPL-2.0
>> /*
>> * Copyright (c) 2018,2020 The Linux Foundation. All rights reserved.
>> - * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved.
>> + * Copyright (c) 2024-2025 Qualcomm Innovation Center, Inc. All rights reserved.
>
> Please follow the latest recommendations for the copyright notices
OK, I will update in the next version, thanks for pointing out.
>
> Konrad
>
>> */
>>
>> #include <linux/clk-provider.h>
>> @@ -3250,6 +3250,9 @@ static const struct qcom_icc_hws_data icc_ipq5424_hws[] = {
>> { MASTER_ANOC_PCIE3, SLAVE_ANOC_PCIE3, GCC_ANOC_PCIE3_2LANE_M_CLK },
>> { MASTER_CNOC_PCIE3, SLAVE_CNOC_PCIE3, GCC_CNOC_PCIE3_2LANE_S_CLK },
>> { MASTER_CNOC_USB, SLAVE_CNOC_USB, GCC_CNOC_USB_CLK },
>> + { MASTER_NSSNOC_NSSCC, SLAVE_NSSNOC_NSSCC, GCC_NSSNOC_NSSCC_CLK },
>> + { MASTER_NSSNOC_SNOC_0, SLAVE_NSSNOC_SNOC_0, GCC_NSSNOC_SNOC_CLK },
>> + { MASTER_NSSNOC_SNOC_1, SLAVE_NSSNOC_SNOC_1, GCC_NSSNOC_SNOC_1_CLK },
>> };
>>
>> static const struct of_device_id gcc_ipq5424_match_table[] = {
>> @@ -3284,6 +3287,7 @@ static const struct qcom_cc_desc gcc_ipq5424_desc = {
>> .num_clk_hws = ARRAY_SIZE(gcc_ipq5424_hws),
>> .icc_hws = icc_ipq5424_hws,
>> .num_icc_hws = ARRAY_SIZE(icc_ipq5424_hws),
>> + .icc_first_node_id = IPQ_APPS_ID,
>> };
>>
>> static int gcc_ipq5424_probe(struct platform_device *pdev)
>>
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH v3 05/10] dt-bindings: clock: ipq9574: Rename NSS CC source clocks to drop rate
2025-07-18 9:12 ` Luo Jie
@ 2025-07-18 9:28 ` Konrad Dybcio
2025-07-18 15:51 ` Luo Jie
0 siblings, 1 reply; 27+ messages in thread
From: Konrad Dybcio @ 2025-07-18 9:28 UTC (permalink / raw)
To: Luo Jie, Rob Herring
Cc: Georgi Djakov, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson,
Michael Turquette, Stephen Boyd, Anusha Rao, Konrad Dybcio,
Philipp Zabel, Richard Cochran, Catalin Marinas, Will Deacon,
linux-arm-msm, linux-pm, devicetree, linux-kernel, linux-clk,
netdev, linux-arm-kernel, quic_kkumarcs, quic_linchen,
quic_leiwei, quic_pavir, quic_suruchia
On 7/18/25 11:12 AM, Luo Jie wrote:
>
>
> On 7/11/2025 8:15 PM, Konrad Dybcio wrote:
>> On 7/11/25 12:54 AM, Rob Herring wrote:
>>> On Thu, Jul 10, 2025 at 08:28:13PM +0800, Luo Jie wrote:
>>>> Drop the clock rate suffix from the NSS Clock Controller clock names for
>>>> PPE and NSS clocks. A generic name allows for easier extension of support
>>>> to additional SoCs that utilize same hardware design.
>>>
>>> This is an ABI change. You must state that here and provide a reason the
>>> change is okay (assuming it is). Otherwise, you are stuck with the name
>>> even if not optimal.
>>
>> The reason here seems to be simplifying the YAML.. which is not a good
>> reason really..
>>
>> I would instead suggest keeping the clocks list as-is for ipq9574 (this
>> existing case), whereas improving it for any new additions
>>
>> Konrad
>
> Thanks Rob and Konrad for the comments.
>
> "nss_1200" and "nss" refer to the same clock pin on different SoC.
> As per Krzystof's previous comment on V2, including the frequency
> as a suffix in the clock name is not required, since only the
> frequencies vary across different IPQ SoCs, while the source clock
> pins for 'PPE' and 'NSS' clocks are the same. Hence this ABI change
> was deemed necessary.
>
> By removing the frequency suffix, the device tree bindings becomes
> more flexible and easier to extend for supporting new hardware
> variants in the future.
>
> Impact due to this ABI change: The NSS clock controller node is only
> enabled for the IPQ9574 DTS. In this patch series, the corresponding
> DTS changes for IPQ9574 are also included to align with this ABI
> change.
The point of an ABI is to keep exposing the same interface without
any change requirements, i.e. if a customer ships the DT from
torvalds/master in firmware and is not willing to update it, they
can no longer update the kernel without a workaround.
> Please let me know if further clarification or adjustments are needed.
What we're asking for is that you don't alter the name on the
existing platform, but use a no-suffix version for the ones you
introduce going forward
i.e. (pseudo-YAML)
if:
properties:
compatible:
- const: qcom,ipq9574-nsscc
then:
properties:
clock-names:
items:
- clockname_1200
else:
properties:
clock-names:
items:
- clockname # no suffix
Konrad
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH v3 01/10] dt-bindings: interconnect: Add Qualcomm IPQ5424 NSSNOC IDs
2025-07-10 12:28 ` [PATCH v3 01/10] dt-bindings: interconnect: Add Qualcomm IPQ5424 NSSNOC IDs Luo Jie
@ 2025-07-18 13:41 ` Georgi Djakov
0 siblings, 0 replies; 27+ messages in thread
From: Georgi Djakov @ 2025-07-18 13:41 UTC (permalink / raw)
To: Luo Jie, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bjorn Andersson, Michael Turquette, Stephen Boyd, Anusha Rao,
Konrad Dybcio, Philipp Zabel, Richard Cochran, Catalin Marinas,
Will Deacon
Cc: linux-arm-msm, linux-pm, devicetree, linux-kernel, linux-clk,
netdev, linux-arm-kernel, quic_kkumarcs, quic_linchen,
quic_leiwei, quic_pavir, quic_suruchia, Krzysztof Kozlowski
On 7/10/25 3:28 PM, Luo Jie wrote:
> Add the NSSNOC master/slave ids for Qualcomm IPQ5424 network subsystem
> (NSS) hardware blocks. These will be used by the gcc-ipq5424 driver
> that provides the interconnect services by using the icc-clk framework.
>
> Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> Signed-off-by: Luo Jie <quic_luoj@quicinc.com>
Acked-by: Georgi Djakov <djakov@kernel.org>
> ---
> include/dt-bindings/interconnect/qcom,ipq5424.h | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/include/dt-bindings/interconnect/qcom,ipq5424.h b/include/dt-bindings/interconnect/qcom,ipq5424.h
> index a770356112ee..66cd9a9ece03 100644
> --- a/include/dt-bindings/interconnect/qcom,ipq5424.h
> +++ b/include/dt-bindings/interconnect/qcom,ipq5424.h
> @@ -20,5 +20,11 @@
> #define SLAVE_CNOC_PCIE3 15
> #define MASTER_CNOC_USB 16
> #define SLAVE_CNOC_USB 17
> +#define MASTER_NSSNOC_NSSCC 18
> +#define SLAVE_NSSNOC_NSSCC 19
> +#define MASTER_NSSNOC_SNOC_0 20
> +#define SLAVE_NSSNOC_SNOC_0 21
> +#define MASTER_NSSNOC_SNOC_1 22
> +#define SLAVE_NSSNOC_SNOC_1 23
>
> #endif /* INTERCONNECT_QCOM_IPQ5424_H */
>
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH v3 05/10] dt-bindings: clock: ipq9574: Rename NSS CC source clocks to drop rate
2025-07-18 9:28 ` Konrad Dybcio
@ 2025-07-18 15:51 ` Luo Jie
2025-07-29 13:53 ` Konrad Dybcio
0 siblings, 1 reply; 27+ messages in thread
From: Luo Jie @ 2025-07-18 15:51 UTC (permalink / raw)
To: Konrad Dybcio, Rob Herring
Cc: Georgi Djakov, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson,
Michael Turquette, Stephen Boyd, Anusha Rao, Konrad Dybcio,
Philipp Zabel, Richard Cochran, Catalin Marinas, Will Deacon,
linux-arm-msm, linux-pm, devicetree, linux-kernel, linux-clk,
netdev, linux-arm-kernel, quic_kkumarcs, quic_linchen,
quic_leiwei, quic_pavir, quic_suruchia
On 7/18/2025 5:28 PM, Konrad Dybcio wrote:
> On 7/18/25 11:12 AM, Luo Jie wrote:
>>
>>
>> On 7/11/2025 8:15 PM, Konrad Dybcio wrote:
>>> On 7/11/25 12:54 AM, Rob Herring wrote:
>>>> On Thu, Jul 10, 2025 at 08:28:13PM +0800, Luo Jie wrote:
>>>>> Drop the clock rate suffix from the NSS Clock Controller clock names for
>>>>> PPE and NSS clocks. A generic name allows for easier extension of support
>>>>> to additional SoCs that utilize same hardware design.
>>>>
>>>> This is an ABI change. You must state that here and provide a reason the
>>>> change is okay (assuming it is). Otherwise, you are stuck with the name
>>>> even if not optimal.
>>>
>>> The reason here seems to be simplifying the YAML.. which is not a good
>>> reason really..
>>>
>>> I would instead suggest keeping the clocks list as-is for ipq9574 (this
>>> existing case), whereas improving it for any new additions
>>>
>>> Konrad
>>
>> Thanks Rob and Konrad for the comments.
>>
>> "nss_1200" and "nss" refer to the same clock pin on different SoC.
>> As per Krzystof's previous comment on V2, including the frequency
>> as a suffix in the clock name is not required, since only the
>> frequencies vary across different IPQ SoCs, while the source clock
>> pins for 'PPE' and 'NSS' clocks are the same. Hence this ABI change
>> was deemed necessary.
>>
>> By removing the frequency suffix, the device tree bindings becomes
>> more flexible and easier to extend for supporting new hardware
>> variants in the future.
>>
>> Impact due to this ABI change: The NSS clock controller node is only
>> enabled for the IPQ9574 DTS. In this patch series, the corresponding
>> DTS changes for IPQ9574 are also included to align with this ABI
>> change.
>
> The point of an ABI is to keep exposing the same interface without
> any change requirements, i.e. if a customer ships the DT from
> torvalds/master in firmware and is not willing to update it, they
> can no longer update the kernel without a workaround.
>
>> Please let me know if further clarification or adjustments are needed.
>
> What we're asking for is that you don't alter the name on the
> existing platform, but use a no-suffix version for the ones you
> introduce going forward
>
> i.e. (pseudo-YAML)
>
> if:
> properties:
> compatible:
> - const: qcom,ipq9574-nsscc
> then:
> properties:
> clock-names:
> items:
> - clockname_1200
> else:
> properties:
> clock-names:
> items:
> - clockname # no suffix
>
> Konrad
We had adopted this proposal in version 2 previously, but as noted in
the discussion linked below, Krzysztof had suggested to avoid using the
clock rate in the clock names when defining the constraints for them.
However I do agree that we should keep the interface for IPQ9574
unchanged and instead use a generic clock name to support the newer
SoCs.
https://lore.kernel.org/all/20250701-optimistic-esoteric-swallow-d93fc6@krzk-bin/
Request Krzysztof to provide his comments as well, on whether we can
follow your suggested approach to avoid breaking ABI for IPQ9574.
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH v3 05/10] dt-bindings: clock: ipq9574: Rename NSS CC source clocks to drop rate
2025-07-18 15:51 ` Luo Jie
@ 2025-07-29 13:53 ` Konrad Dybcio
2025-07-29 13:57 ` Krzysztof Kozlowski
0 siblings, 1 reply; 27+ messages in thread
From: Konrad Dybcio @ 2025-07-29 13:53 UTC (permalink / raw)
To: Luo Jie, Rob Herring, Krzysztof Kozlowski
Cc: Georgi Djakov, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson,
Michael Turquette, Stephen Boyd, Anusha Rao, Konrad Dybcio,
Philipp Zabel, Richard Cochran, Catalin Marinas, Will Deacon,
linux-arm-msm, linux-pm, devicetree, linux-kernel, linux-clk,
netdev, linux-arm-kernel, quic_kkumarcs, quic_linchen,
quic_leiwei, quic_pavir, quic_suruchia
On 7/18/25 5:51 PM, Luo Jie wrote:
>
>
> On 7/18/2025 5:28 PM, Konrad Dybcio wrote:
>> On 7/18/25 11:12 AM, Luo Jie wrote:
>>>
>>>
>>> On 7/11/2025 8:15 PM, Konrad Dybcio wrote:
>>>> On 7/11/25 12:54 AM, Rob Herring wrote:
>>>>> On Thu, Jul 10, 2025 at 08:28:13PM +0800, Luo Jie wrote:
>>>>>> Drop the clock rate suffix from the NSS Clock Controller clock names for
>>>>>> PPE and NSS clocks. A generic name allows for easier extension of support
>>>>>> to additional SoCs that utilize same hardware design.
>>>>>
>>>>> This is an ABI change. You must state that here and provide a reason the
>>>>> change is okay (assuming it is). Otherwise, you are stuck with the name
>>>>> even if not optimal.
>>>>
>>>> The reason here seems to be simplifying the YAML.. which is not a good
>>>> reason really..
>>>>
>>>> I would instead suggest keeping the clocks list as-is for ipq9574 (this
>>>> existing case), whereas improving it for any new additions
>>>>
>>>> Konrad
>>>
>>> Thanks Rob and Konrad for the comments.
>>>
>>> "nss_1200" and "nss" refer to the same clock pin on different SoC.
>>> As per Krzystof's previous comment on V2, including the frequency
>>> as a suffix in the clock name is not required, since only the
>>> frequencies vary across different IPQ SoCs, while the source clock
>>> pins for 'PPE' and 'NSS' clocks are the same. Hence this ABI change
>>> was deemed necessary.
>>>
>>> By removing the frequency suffix, the device tree bindings becomes
>>> more flexible and easier to extend for supporting new hardware
>>> variants in the future.
>>>
>>> Impact due to this ABI change: The NSS clock controller node is only
>>> enabled for the IPQ9574 DTS. In this patch series, the corresponding
>>> DTS changes for IPQ9574 are also included to align with this ABI
>>> change.
>>
>> The point of an ABI is to keep exposing the same interface without
>> any change requirements, i.e. if a customer ships the DT from
>> torvalds/master in firmware and is not willing to update it, they
>> can no longer update the kernel without a workaround.
>>
>>> Please let me know if further clarification or adjustments are needed.
>>
>> What we're asking for is that you don't alter the name on the
>> existing platform, but use a no-suffix version for the ones you
>> introduce going forward
>>
>> i.e. (pseudo-YAML)
>>
>> if:
>> properties:
>> compatible:
>> - const: qcom,ipq9574-nsscc
>> then:
>> properties:
>> clock-names:
>> items:
>> - clockname_1200
>> else:
>> properties:
>> clock-names:
>> items:
>> - clockname # no suffix
>>
>> Konrad
>
> We had adopted this proposal in version 2 previously, but as noted in
> the discussion linked below, Krzysztof had suggested to avoid using the
> clock rate in the clock names when defining the constraints for them.
> However I do agree that we should keep the interface for IPQ9574
> unchanged and instead use a generic clock name to support the newer
> SoCs.
>
> https://lore.kernel.org/all/20250701-optimistic-esoteric-swallow-d93fc6@krzk-bin/
>
> Request Krzysztof to provide his comments as well, on whether we can
> follow your suggested approach to avoid breaking ABI for IPQ9574.
Krzysztof, should the bindings be improved-through-breaking, or should
there simply be a new YAML with un-suffixed entries, where new platforms
would be added down the line?
Konrad
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH v3 05/10] dt-bindings: clock: ipq9574: Rename NSS CC source clocks to drop rate
2025-07-29 13:53 ` Konrad Dybcio
@ 2025-07-29 13:57 ` Krzysztof Kozlowski
2025-07-30 11:50 ` Luo Jie
0 siblings, 1 reply; 27+ messages in thread
From: Krzysztof Kozlowski @ 2025-07-29 13:57 UTC (permalink / raw)
To: Konrad Dybcio, Luo Jie, Rob Herring, Krzysztof Kozlowski
Cc: Georgi Djakov, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson,
Michael Turquette, Stephen Boyd, Anusha Rao, Konrad Dybcio,
Philipp Zabel, Richard Cochran, Catalin Marinas, Will Deacon,
linux-arm-msm, linux-pm, devicetree, linux-kernel, linux-clk,
netdev, linux-arm-kernel, quic_kkumarcs, quic_linchen,
quic_leiwei, quic_pavir, quic_suruchia
On 29/07/2025 15:53, Konrad Dybcio wrote:
>>
>> We had adopted this proposal in version 2 previously, but as noted in
>> the discussion linked below, Krzysztof had suggested to avoid using the
>> clock rate in the clock names when defining the constraints for them.
>> However I do agree that we should keep the interface for IPQ9574
>> unchanged and instead use a generic clock name to support the newer
>> SoCs.
>>
>> https://lore.kernel.org/all/20250701-optimistic-esoteric-swallow-d93fc6@krzk-bin/
>>
>> Request Krzysztof to provide his comments as well, on whether we can
>> follow your suggested approach to avoid breaking ABI for IPQ9574.
>
> Krzysztof, should the bindings be improved-through-breaking, or should
Unfortunately not, you should not change them for such reason.
> there simply be a new YAML with un-suffixed entries, where new platforms
> would be added down the line?
Either new binding file or here with allOf:if:then differences per
variant. Depends on readability.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH v3 05/10] dt-bindings: clock: ipq9574: Rename NSS CC source clocks to drop rate
2025-07-29 13:57 ` Krzysztof Kozlowski
@ 2025-07-30 11:50 ` Luo Jie
0 siblings, 0 replies; 27+ messages in thread
From: Luo Jie @ 2025-07-30 11:50 UTC (permalink / raw)
To: Krzysztof Kozlowski, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski
Cc: Georgi Djakov, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson,
Michael Turquette, Stephen Boyd, Anusha Rao, Konrad Dybcio,
Philipp Zabel, Richard Cochran, Catalin Marinas, Will Deacon,
linux-arm-msm, linux-pm, devicetree, linux-kernel, linux-clk,
netdev, linux-arm-kernel, quic_kkumarcs, quic_linchen,
quic_leiwei, quic_pavir, quic_suruchia
On 7/29/2025 9:57 PM, Krzysztof Kozlowski wrote:
> On 29/07/2025 15:53, Konrad Dybcio wrote:
>>>
>>> We had adopted this proposal in version 2 previously, but as noted in
>>> the discussion linked below, Krzysztof had suggested to avoid using the
>>> clock rate in the clock names when defining the constraints for them.
>>> However I do agree that we should keep the interface for IPQ9574
>>> unchanged and instead use a generic clock name to support the newer
>>> SoCs.
>>>
>>> https://lore.kernel.org/all/20250701-optimistic-esoteric-swallow-d93fc6@krzk-bin/
>>>
>>> Request Krzysztof to provide his comments as well, on whether we can
>>> follow your suggested approach to avoid breaking ABI for IPQ9574.
>>
>> Krzysztof, should the bindings be improved-through-breaking, or should
>
>
> Unfortunately not, you should not change them for such reason.
>
>> there simply be a new YAML with un-suffixed entries, where new platforms
>> would be added down the line?
>
>
> Either new binding file or here with allOf:if:then differences per
> variant. Depends on readability.
>
OK. Thank you for the clarification.
>
> Best regards,
> Krzysztof
^ permalink raw reply [flat|nested] 27+ messages in thread
end of thread, other threads:[~2025-07-30 11:51 UTC | newest]
Thread overview: 27+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-10 12:28 [PATCH v3 00/10] Add Network Subsystem (NSS) clock controller support for IPQ5424 SoC Luo Jie
2025-07-10 12:28 ` [PATCH v3 01/10] dt-bindings: interconnect: Add Qualcomm IPQ5424 NSSNOC IDs Luo Jie
2025-07-18 13:41 ` Georgi Djakov
2025-07-10 12:28 ` [PATCH v3 02/10] clk: qcom: ipq5424: Enable NSS NoC clocks to use icc-clk Luo Jie
2025-07-17 20:40 ` Konrad Dybcio
2025-07-18 9:21 ` Luo Jie
2025-07-10 12:28 ` [PATCH v3 03/10] dt-bindings: clock: gcc-ipq5424: Add definition for GPLL0_OUT_AUX Luo Jie
2025-07-10 12:28 ` [PATCH v3 04/10] clock: qcom: gcc-ipq5424: Add gpll0_out_aux clock Luo Jie
2025-07-17 20:41 ` Konrad Dybcio
2025-07-18 9:12 ` Luo Jie
2025-07-10 12:28 ` [PATCH v3 05/10] dt-bindings: clock: ipq9574: Rename NSS CC source clocks to drop rate Luo Jie
2025-07-10 22:54 ` Rob Herring
2025-07-11 12:15 ` Konrad Dybcio
2025-07-18 9:12 ` Luo Jie
2025-07-18 9:28 ` Konrad Dybcio
2025-07-18 15:51 ` Luo Jie
2025-07-29 13:53 ` Konrad Dybcio
2025-07-29 13:57 ` Krzysztof Kozlowski
2025-07-30 11:50 ` Luo Jie
2025-07-10 12:28 ` [PATCH v3 06/10] arm64: dts: qcom: ipq9574: Rename NSSCC source clock names " Luo Jie
2025-07-10 12:28 ` [PATCH v3 07/10] dt-bindings: clock: qcom: Add NSS clock controller for IPQ5424 SoC Luo Jie
2025-07-10 22:55 ` Rob Herring
2025-07-11 12:16 ` Konrad Dybcio
2025-07-18 9:05 ` Luo Jie
2025-07-10 12:28 ` [PATCH v3 08/10] clk: qcom: Add NSS clock controller driver for IPQ5424 Luo Jie
2025-07-10 12:28 ` [PATCH v3 09/10] arm64: dts: qcom: ipq5424: Add NSS clock controller node Luo Jie
2025-07-10 12:28 ` [PATCH v3 10/10] arm64: defconfig: Build NSS clock controller driver for IPQ5424 Luo Jie
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).