// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (c) 2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2023, 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,ipq9574-nsscc.h>
#include <dt-bindings/interconnect/qcom,ipq9574.h>
#include <dt-bindings/reset/qcom,ipq9574-nsscc.h>
#include "clk-alpha-pll.h"
#include "clk-branch.h"
#include "clk-pll.h"
#include "clk-rcg.h"
#include "clk-regmap.h"
#include "clk-regmap-divider.h"
#include "clk-regmap-mux.h"
#include "common.h"
#include "reset.h"
/* Need to match the order of clocks in DT binding */
enum {
DT_XO,
DT_BIAS_PLL_CC_CLK,
DT_BIAS_PLL_UBI_NC_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_XO,
P_BIAS_PLL_CC_CLK,
P_BIAS_PLL_UBI_NC_CLK,
P_GCC_GPLL0_OUT_AUX,
P_UBI32_PLL_OUT_MAIN,
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 alpha_pll_config ubi32_pll_config = {
.l = 0x3e,
.alpha = 0x6666,
.config_ctl_val = 0x200d4aa8,
.config_ctl_hi_val = 0x3c,
.main_output_mask = BIT(0),
.aux_output_mask = BIT(1),
.pre_div_val = 0x0,
.pre_div_mask = BIT(12),
.post_div_val = 0x0,
.post_div_mask = GENMASK(9, 8),
.alpha_en_mask = BIT(24),
.test_ctl_val = 0x1c0000c0,
.test_ctl_hi_val = 0x4000,
};
static struct clk_alpha_pll ubi32_pll_main = {
.offset = 0x28000,
.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_NSS_HUAYRA],
.flags = SUPPORTS_DYNAMIC_UPDATE,
.clkr = {
.hw.init = &(const struct clk_init_data) {
.name = "ubi32_pll_main" ,
.parent_data = &(const struct clk_parent_data) {
.index = DT_XO,
},
.num_parents = 1,
.ops = &clk_alpha_pll_huayra_ops,
},
},
};
static struct clk_alpha_pll_postdiv ubi32_pll = {
.offset = 0x28000,
.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_NSS_HUAYRA],
.width = 2,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "ubi32_pll" ,
.parent_hws = (const struct clk_hw *[]) {
&ubi32_pll_main.clkr.hw
},
.num_parents = 1,
.ops = &clk_alpha_pll_postdiv_ro_ops,
.flags = CLK_SET_RATE_PARENT,
},
};
static const struct parent_map nss_cc_parent_map_0[] = {
{ P_XO, 0 },
{ P_BIAS_PLL_CC_CLK, 1 },
{ P_UNIPHY0_NSS_RX_CLK, 2 },
{ P_UNIPHY0_NSS_TX_CLK, 3 },
{ P_UNIPHY1_NSS_RX_CLK, 4 },
{ P_UNIPHY1_NSS_TX_CLK, 5 },
};
static const struct clk_parent_data nss_cc_parent_data_0[] = {
{ .index = DT_XO },
{ .index = DT_BIAS_PLL_CC_CLK },
{ .index = DT_UNIPHY0_NSS_RX_CLK },
{ .index = DT_UNIPHY0_NSS_TX_CLK },
{ .index = DT_UNIPHY1_NSS_RX_CLK },
{ .index = DT_UNIPHY1_NSS_TX_CLK },
};
static const struct parent_map nss_cc_parent_map_1[] = {
{ P_XO, 0 },
{ P_BIAS_PLL_UBI_NC_CLK, 1 },
{ P_GCC_GPLL0_OUT_AUX, 2 },
{ P_BIAS_PLL_CC_CLK, 6 },
};
static const struct clk_parent_data nss_cc_parent_data_1[] = {
{ .index = DT_XO },
{ .index = DT_BIAS_PLL_UBI_NC_CLK },
{ .index = DT_GCC_GPLL0_OUT_AUX },
{ .index = DT_BIAS_PLL_CC_CLK },
};
static const struct parent_map nss_cc_parent_map_2[] = {
{ P_XO, 0 },
{ P_UBI32_PLL_OUT_MAIN, 1 },
{ P_GCC_GPLL0_OUT_AUX, 2 },
};
static const struct clk_parent_data nss_cc_parent_data_2[] = {
{ .index = DT_XO },
{ .hw = &ubi32_pll.clkr.hw },
{ .index = DT_GCC_GPLL0_OUT_AUX },
};
static const struct parent_map nss_cc_parent_map_3[] = {
{ P_XO, 0 },
{ P_BIAS_PLL_CC_CLK, 1 },
{ P_GCC_GPLL0_OUT_AUX, 2 },
};
static const struct clk_parent_data nss_cc_parent_data_3[] = {
{ .index = DT_XO },
{ .index = DT_BIAS_PLL_CC_CLK },
{ .index = DT_GCC_GPLL0_OUT_AUX },
};
static const struct parent_map nss_cc_parent_map_4[] = {
{ P_XO, 0 },
{ P_BIAS_PLL_CC_CLK, 1 },
{ P_UNIPHY0_NSS_RX_CLK, 2 },
{ P_UNIPHY0_NSS_TX_CLK, 3 },
};
static const struct clk_parent_data nss_cc_parent_data_4[] = {
{ .index = DT_XO },
{ .index = DT_BIAS_PLL_CC_CLK },
{ .index = DT_UNIPHY0_NSS_RX_CLK },
{ .index = DT_UNIPHY0_NSS_TX_CLK },
};
static const struct parent_map nss_cc_parent_map_5[] = {
{ P_XO, 0 },
{ P_BIAS_PLL_CC_CLK, 1 },
{ P_UNIPHY2_NSS_RX_CLK, 2 },
{ P_UNIPHY2_NSS_TX_CLK, 3 },
};
static const struct clk_parent_data nss_cc_parent_data_5[] = {
{ .index = DT_XO },
{ .index = DT_BIAS_PLL_CC_CLK },
{ .index = DT_UNIPHY2_NSS_RX_CLK },
{ .index = DT_UNIPHY2_NSS_TX_CLK },
};
static const struct parent_map nss_cc_parent_map_6[] = {
{ P_XO, 0 },
{ P_GCC_GPLL0_OUT_AUX, 2 },
{ P_BIAS_PLL_CC_CLK, 6 },
};
static const struct clk_parent_data nss_cc_parent_data_6[] = {
{ .index = DT_XO },
{ .index = DT_GCC_GPLL0_OUT_AUX },
{ .index = DT_BIAS_PLL_CC_CLK },
};
static const struct parent_map nss_cc_parent_map_7[] = {
{ P_XO, 0 },
{ P_UBI32_PLL_OUT_MAIN, 1 },
{ P_GCC_GPLL0_OUT_AUX, 2 },
{ P_BIAS_PLL_CC_CLK, 6 },
};
static const struct clk_parent_data nss_cc_parent_data_7[] = {
{ .index = DT_XO },
{ .hw = &ubi32_pll.clkr.hw },
{ .index = DT_GCC_GPLL0_OUT_AUX },
{ .index = DT_BIAS_PLL_CC_CLK },
};
static const struct freq_tbl ftbl_nss_cc_ce_clk_src[] = {
F(24000000, P_XO, 1, 0, 0),
F(353000000, P_BIAS_PLL_UBI_NC_CLK, 1, 0, 0),
{ }
};
static struct clk_rcg2 nss_cc_ce_clk_src = {
.cmd_rcgr = 0x28404,
.mnd_width = 0,
.hid_width = 5,
.parent_map = nss_cc_parent_map_1,
.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_1,
.num_parents = ARRAY_SIZE(nss_cc_parent_data_1),
.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 = 0x28104,
.mnd_width = 0,
.hid_width = 5,
.parent_map = nss_cc_parent_map_3,
.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_3,
.num_parents = ARRAY_SIZE(nss_cc_parent_data_3),
.ops = &clk_rcg2_ops,
},
};
static const struct freq_tbl ftbl_nss_cc_clc_clk_src[] = {
F(533333333, P_GCC_GPLL0_OUT_AUX, 1.5, 0, 0),
{ }
};
static struct clk_rcg2 nss_cc_clc_clk_src = {
.cmd_rcgr = 0x28604,
.mnd_width = 0,
.hid_width = 5,
.parent_map = nss_cc_parent_map_6,
.freq_tbl = ftbl_nss_cc_clc_clk_src,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_clc_clk_src" ,
.parent_data = nss_cc_parent_data_6,
.num_parents = ARRAY_SIZE(nss_cc_parent_data_6),
.ops = &clk_rcg2_ops,
},
};
static const struct freq_tbl ftbl_nss_cc_crypto_clk_src[] = {
F(24000000, P_XO, 1, 0, 0),
F(300000000, P_BIAS_PLL_CC_CLK, 4, 0, 0),
F(600000000, P_BIAS_PLL_CC_CLK, 2, 0, 0),
{ }
};
static struct clk_rcg2 nss_cc_crypto_clk_src = {
.cmd_rcgr = 0x16008,
.mnd_width = 16,
.hid_width = 5,
.parent_map = nss_cc_parent_map_3,
.freq_tbl = ftbl_nss_cc_crypto_clk_src,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_crypto_clk_src" ,
.parent_data = nss_cc_parent_data_3,
.num_parents = ARRAY_SIZE(nss_cc_parent_data_3),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
};
static struct clk_rcg2 nss_cc_haq_clk_src = {
.cmd_rcgr = 0x28304,
.mnd_width = 0,
.hid_width = 5,
.parent_map = nss_cc_parent_map_1,
.freq_tbl = ftbl_nss_cc_ce_clk_src,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_haq_clk_src" ,
.parent_data = nss_cc_parent_data_1,
.num_parents = ARRAY_SIZE(nss_cc_parent_data_1),
.ops = &clk_rcg2_ops,
},
};
static struct clk_rcg2 nss_cc_imem_clk_src = {
.cmd_rcgr = 0xe008,
.mnd_width = 0,
.hid_width = 5,
.parent_map = nss_cc_parent_map_1,
.freq_tbl = ftbl_nss_cc_ce_clk_src,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_imem_clk_src" ,
.parent_data = nss_cc_parent_data_1,
.num_parents = ARRAY_SIZE(nss_cc_parent_data_1),
.ops = &clk_rcg2_ops,
},
};
static const struct freq_tbl ftbl_nss_cc_int_cfg_clk_src[] = {
F(200000000, P_GCC_GPLL0_OUT_AUX, 4, 0, 0),
{ }
};
static struct clk_rcg2 nss_cc_int_cfg_clk_src = {
.cmd_rcgr = 0x287b4,
.mnd_width = 0,
.hid_width = 5,
.parent_map = nss_cc_parent_map_3,
.freq_tbl = ftbl_nss_cc_int_cfg_clk_src,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_int_cfg_clk_src" ,
.parent_data = nss_cc_parent_data_3,
.num_parents = ARRAY_SIZE(nss_cc_parent_data_3),
.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_XO, 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(312500000, P_UNIPHY0_NSS_RX_CLK, 1, 0, 0),
{ }
};
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_XO, 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(312500000, P_UNIPHY0_NSS_TX_CLK, 1, 0, 0),
{ }
};
static const struct freq_conf ftbl_nss_cc_port5_rx_clk_src_25[] = {
C(P_UNIPHY1_NSS_RX_CLK, 12.5, 0, 0),
C(P_UNIPHY0_NSS_RX_CLK, 5, 0, 0),
};
static const struct freq_conf ftbl_nss_cc_port5_rx_clk_src_125[] = {
C(P_UNIPHY1_NSS_RX_CLK, 2.5, 0, 0),
C(P_UNIPHY0_NSS_RX_CLK, 1, 0, 0),
};
static const struct freq_conf ftbl_nss_cc_port5_rx_clk_src_312p5[] = {
C(P_UNIPHY1_NSS_RX_CLK, 1, 0, 0),
C(P_UNIPHY0_NSS_RX_CLK, 1, 0, 0),
};
static const struct freq_multi_tbl ftbl_nss_cc_port5_rx_clk_src[] = {
FMS(24000000, P_XO, 1, 0, 0),
FM(25000000, ftbl_nss_cc_port5_rx_clk_src_25),
FMS(78125000, P_UNIPHY1_NSS_RX_CLK, 4, 0, 0),
FM(125000000, ftbl_nss_cc_port5_rx_clk_src_125),
FMS(156250000, P_UNIPHY1_NSS_RX_CLK, 2, 0, 0),
FM(312500000, ftbl_nss_cc_port5_rx_clk_src_312p5),
{ }
};
static const struct freq_conf ftbl_nss_cc_port5_tx_clk_src_25[] = {
C(P_UNIPHY1_NSS_TX_CLK, 12.5, 0, 0),
C(P_UNIPHY0_NSS_TX_CLK, 5, 0, 0),
};
static const struct freq_conf ftbl_nss_cc_port5_tx_clk_src_125[] = {
C(P_UNIPHY1_NSS_TX_CLK, 2.5, 0, 0),
C(P_UNIPHY0_NSS_TX_CLK, 1, 0, 0),
};
static const struct freq_conf ftbl_nss_cc_port5_tx_clk_src_312p5[] = {
C(P_UNIPHY1_NSS_TX_CLK, 1, 0, 0),
C(P_UNIPHY0_NSS_TX_CLK, 1, 0, 0),
};
static const struct freq_multi_tbl ftbl_nss_cc_port5_tx_clk_src[] = {
FMS(24000000, P_XO, 1, 0, 0),
FM(25000000, ftbl_nss_cc_port5_tx_clk_src_25),
FMS(78125000, P_UNIPHY1_NSS_TX_CLK, 4, 0, 0),
FM(125000000, ftbl_nss_cc_port5_tx_clk_src_125),
FMS(156250000, P_UNIPHY1_NSS_TX_CLK, 2, 0, 0),
FM(312500000, ftbl_nss_cc_port5_tx_clk_src_312p5),
{ }
};
static const struct freq_conf ftbl_nss_cc_port6_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_port6_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_port6_rx_clk_src[] = {
FMS(24000000, P_XO, 1, 0, 0),
FM(25000000, ftbl_nss_cc_port6_rx_clk_src_25),
FMS(78125000, P_UNIPHY2_NSS_RX_CLK, 4, 0, 0),
FM(125000000, ftbl_nss_cc_port6_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 const struct freq_conf ftbl_nss_cc_port6_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_port6_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_port6_tx_clk_src[] = {
FMS(24000000, P_XO, 1, 0, 0),
FM(25000000, ftbl_nss_cc_port6_tx_clk_src_25),
FMS(78125000, P_UNIPHY2_NSS_TX_CLK, 4, 0, 0),
FM(125000000, ftbl_nss_cc_port6_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_port1_rx_clk_src = {
.cmd_rcgr = 0x28110,
.mnd_width = 0,
.hid_width = 5,
.parent_map = nss_cc_parent_map_4,
.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_4,
.num_parents = ARRAY_SIZE(nss_cc_parent_data_4),
.ops = &clk_rcg2_fm_ops,
},
};
static struct clk_rcg2 nss_cc_port1_tx_clk_src = {
.cmd_rcgr = 0x2811c,
.mnd_width = 0,
.hid_width = 5,
.parent_map = nss_cc_parent_map_4,
.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_4,
.num_parents = ARRAY_SIZE(nss_cc_parent_data_4),
.ops = &clk_rcg2_fm_ops,
},
};
static struct clk_rcg2 nss_cc_port2_rx_clk_src = {
.cmd_rcgr = 0x28128,
.mnd_width = 0,
.hid_width = 5,
.parent_map = nss_cc_parent_map_4,
.freq_multi_tbl = ftbl_nss_cc_port1_rx_clk_src,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port2_rx_clk_src" ,
.parent_data = nss_cc_parent_data_4,
.num_parents = ARRAY_SIZE(nss_cc_parent_data_4),
.ops = &clk_rcg2_fm_ops,
},
};
static struct clk_rcg2 nss_cc_port2_tx_clk_src = {
.cmd_rcgr = 0x28134,
.mnd_width = 0,
.hid_width = 5,
.parent_map = nss_cc_parent_map_4,
.freq_multi_tbl = ftbl_nss_cc_port1_tx_clk_src,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port2_tx_clk_src" ,
.parent_data = nss_cc_parent_data_4,
.num_parents = ARRAY_SIZE(nss_cc_parent_data_4),
.ops = &clk_rcg2_fm_ops,
},
};
static struct clk_rcg2 nss_cc_port3_rx_clk_src = {
.cmd_rcgr = 0x28140,
.mnd_width = 0,
.hid_width = 5,
.parent_map = nss_cc_parent_map_4,
.freq_multi_tbl = ftbl_nss_cc_port1_rx_clk_src,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port3_rx_clk_src" ,
.parent_data = nss_cc_parent_data_4,
.num_parents = ARRAY_SIZE(nss_cc_parent_data_4),
.ops = &clk_rcg2_fm_ops,
},
};
static struct clk_rcg2 nss_cc_port3_tx_clk_src = {
.cmd_rcgr = 0x2814c,
.mnd_width = 0,
.hid_width = 5,
.parent_map = nss_cc_parent_map_4,
.freq_multi_tbl = ftbl_nss_cc_port1_tx_clk_src,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port3_tx_clk_src" ,
.parent_data = nss_cc_parent_data_4,
.num_parents = ARRAY_SIZE(nss_cc_parent_data_4),
.ops = &clk_rcg2_fm_ops,
},
};
static struct clk_rcg2 nss_cc_port4_rx_clk_src = {
.cmd_rcgr = 0x28158,
.mnd_width = 0,
.hid_width = 5,
.parent_map = nss_cc_parent_map_4,
.freq_multi_tbl = ftbl_nss_cc_port1_rx_clk_src,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port4_rx_clk_src" ,
.parent_data = nss_cc_parent_data_4,
.num_parents = ARRAY_SIZE(nss_cc_parent_data_4),
.ops = &clk_rcg2_fm_ops,
},
};
static struct clk_rcg2 nss_cc_port4_tx_clk_src = {
.cmd_rcgr = 0x28164,
.mnd_width = 0,
.hid_width = 5,
.parent_map = nss_cc_parent_map_4,
.freq_multi_tbl = ftbl_nss_cc_port1_tx_clk_src,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port4_tx_clk_src" ,
.parent_data = nss_cc_parent_data_4,
.num_parents = ARRAY_SIZE(nss_cc_parent_data_4),
.ops = &clk_rcg2_fm_ops,
},
};
static struct clk_rcg2 nss_cc_port5_rx_clk_src = {
.cmd_rcgr = 0x28170,
.mnd_width = 0,
.hid_width = 5,
.parent_map = nss_cc_parent_map_0,
.freq_multi_tbl = ftbl_nss_cc_port5_rx_clk_src,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port5_rx_clk_src" ,
.parent_data = nss_cc_parent_data_0,
.num_parents = ARRAY_SIZE(nss_cc_parent_data_0),
.ops = &clk_rcg2_fm_ops,
},
};
static struct clk_rcg2 nss_cc_port5_tx_clk_src = {
.cmd_rcgr = 0x2817c,
.mnd_width = 0,
.hid_width = 5,
.parent_map = nss_cc_parent_map_0,
.freq_multi_tbl = ftbl_nss_cc_port5_tx_clk_src,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port5_tx_clk_src" ,
.parent_data = nss_cc_parent_data_0,
.num_parents = ARRAY_SIZE(nss_cc_parent_data_0),
.ops = &clk_rcg2_fm_ops,
},
};
static struct clk_rcg2 nss_cc_port6_rx_clk_src = {
.cmd_rcgr = 0x28188,
.mnd_width = 0,
.hid_width = 5,
.parent_map = nss_cc_parent_map_5,
.freq_multi_tbl = ftbl_nss_cc_port6_rx_clk_src,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port6_rx_clk_src" ,
.parent_data = nss_cc_parent_data_5,
.num_parents = ARRAY_SIZE(nss_cc_parent_data_5),
.ops = &clk_rcg2_fm_ops,
},
};
static struct clk_rcg2 nss_cc_port6_tx_clk_src = {
.cmd_rcgr = 0x28194,
.mnd_width = 0,
.hid_width = 5,
.parent_map = nss_cc_parent_map_5,
.freq_multi_tbl = ftbl_nss_cc_port6_tx_clk_src,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port6_tx_clk_src" ,
.parent_data = nss_cc_parent_data_5,
.num_parents = ARRAY_SIZE(nss_cc_parent_data_5),
.ops = &clk_rcg2_fm_ops,
},
};
static struct clk_rcg2 nss_cc_ppe_clk_src = {
.cmd_rcgr = 0x28204,
.mnd_width = 0,
.hid_width = 5,
.parent_map = nss_cc_parent_map_1,
.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_1,
.num_parents = ARRAY_SIZE(nss_cc_parent_data_1),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
};
static const struct freq_tbl ftbl_nss_cc_ubi0_clk_src[] = {
F(24000000, P_XO, 1, 0, 0),
F(187200000, P_UBI32_PLL_OUT_MAIN, 8, 0, 0),
F(748800000, P_UBI32_PLL_OUT_MAIN, 2, 0, 0),
F(1497600000, P_UBI32_PLL_OUT_MAIN, 1, 0, 0),
F(1689600000, P_UBI32_PLL_OUT_MAIN, 1, 0, 0),
{ }
};
static struct clk_rcg2 nss_cc_ubi0_clk_src = {
.cmd_rcgr = 0x28704,
.mnd_width = 0,
.hid_width = 5,
.parent_map = nss_cc_parent_map_2,
.freq_tbl = ftbl_nss_cc_ubi0_clk_src,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ubi0_clk_src" ,
.parent_data = nss_cc_parent_data_2,
.num_parents = ARRAY_SIZE(nss_cc_parent_data_2),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
};
static struct clk_rcg2 nss_cc_ubi1_clk_src = {
.cmd_rcgr = 0x2870c,
.mnd_width = 0,
.hid_width = 5,
.parent_map = nss_cc_parent_map_2,
.freq_tbl = ftbl_nss_cc_ubi0_clk_src,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ubi1_clk_src" ,
.parent_data = nss_cc_parent_data_2,
.num_parents = ARRAY_SIZE(nss_cc_parent_data_2),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
};
static struct clk_rcg2 nss_cc_ubi2_clk_src = {
.cmd_rcgr = 0x28714,
.mnd_width = 0,
.hid_width = 5,
.parent_map = nss_cc_parent_map_2,
.freq_tbl = ftbl_nss_cc_ubi0_clk_src,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ubi2_clk_src" ,
.parent_data = nss_cc_parent_data_2,
.num_parents = ARRAY_SIZE(nss_cc_parent_data_2),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
};
static struct clk_rcg2 nss_cc_ubi3_clk_src = {
.cmd_rcgr = 0x2871c,
.mnd_width = 0,
.hid_width = 5,
.parent_map = nss_cc_parent_map_2,
.freq_tbl = ftbl_nss_cc_ubi0_clk_src,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ubi3_clk_src" ,
.parent_data = nss_cc_parent_data_2,
.num_parents = ARRAY_SIZE(nss_cc_parent_data_2),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
};
static struct clk_rcg2 nss_cc_ubi_axi_clk_src = {
.cmd_rcgr = 0x28724,
.mnd_width = 0,
.hid_width = 5,
.parent_map = nss_cc_parent_map_7,
.freq_tbl = ftbl_nss_cc_clc_clk_src,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ubi_axi_clk_src" ,
.parent_data = nss_cc_parent_data_7,
.num_parents = ARRAY_SIZE(nss_cc_parent_data_7),
.ops = &clk_rcg2_ops,
},
};
static struct clk_rcg2 nss_cc_ubi_nc_axi_bfdcd_clk_src = {
.cmd_rcgr = 0x2872c,
.mnd_width = 0,
.hid_width = 5,
.parent_map = nss_cc_parent_map_1,
.freq_tbl = ftbl_nss_cc_ce_clk_src,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ubi_nc_axi_bfdcd_clk_src" ,
.parent_data = nss_cc_parent_data_1,
.num_parents = ARRAY_SIZE(nss_cc_parent_data_1),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
};
static struct clk_regmap_div nss_cc_port1_rx_div_clk_src = {
.reg = 0x28118,
.shift = 0,
.width = 9,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port1_rx_div_clk_src" ,
.parent_data = &(const struct clk_parent_data) {
.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 = 0x28124,
.shift = 0,
.width = 9,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port1_tx_div_clk_src" ,
.parent_data = &(const struct clk_parent_data) {
.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 = 0x28130,
.shift = 0,
.width = 9,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port2_rx_div_clk_src" ,
.parent_data = &(const struct clk_parent_data) {
.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 = 0x2813c,
.shift = 0,
.width = 9,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port2_tx_div_clk_src" ,
.parent_data = &(const struct clk_parent_data) {
.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 = 0x28148,
.shift = 0,
.width = 9,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port3_rx_div_clk_src" ,
.parent_data = &(const struct clk_parent_data) {
.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 = 0x28154,
.shift = 0,
.width = 9,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port3_tx_div_clk_src" ,
.parent_data = &(const struct clk_parent_data) {
.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_port4_rx_div_clk_src = {
.reg = 0x28160,
.shift = 0,
.width = 9,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port4_rx_div_clk_src" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_port4_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_port4_tx_div_clk_src = {
.reg = 0x2816c,
.shift = 0,
.width = 9,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port4_tx_div_clk_src" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_port4_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_port5_rx_div_clk_src = {
.reg = 0x28178,
.shift = 0,
.width = 9,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port5_rx_div_clk_src" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_port5_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_port5_tx_div_clk_src = {
.reg = 0x28184,
.shift = 0,
.width = 9,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port5_tx_div_clk_src" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_port5_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_port6_rx_div_clk_src = {
.reg = 0x28190,
.shift = 0,
.width = 9,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port6_rx_div_clk_src" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_port6_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_port6_tx_div_clk_src = {
.reg = 0x2819c,
.shift = 0,
.width = 9,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port6_tx_div_clk_src" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_port6_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_ubi0_div_clk_src = {
.reg = 0x287a4,
.shift = 0,
.width = 4,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ubi0_div_clk_src" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_ubi0_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_ubi1_div_clk_src = {
.reg = 0x287a8,
.shift = 0,
.width = 4,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ubi1_div_clk_src" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_ubi1_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_ubi2_div_clk_src = {
.reg = 0x287ac,
.shift = 0,
.width = 4,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ubi2_div_clk_src" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_ubi2_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_ubi3_div_clk_src = {
.reg = 0x287b0,
.shift = 0,
.width = 4,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ubi3_div_clk_src" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_ubi3_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_xgmac0_ptp_ref_div_clk_src = {
.reg = 0x28214,
.shift = 0,
.width = 4,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_xgmac0_ptp_ref_div_clk_src" ,
.parent_data = &(const struct clk_parent_data) {
.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 = 0x28218,
.shift = 0,
.width = 4,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_xgmac1_ptp_ref_div_clk_src" ,
.parent_data = &(const struct clk_parent_data) {
.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 = 0x2821c,
.shift = 0,
.width = 4,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_xgmac2_ptp_ref_div_clk_src" ,
.parent_data = &(const struct clk_parent_data) {
.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_xgmac3_ptp_ref_div_clk_src = {
.reg = 0x28220,
.shift = 0,
.width = 4,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_xgmac3_ptp_ref_div_clk_src" ,
.parent_data = &(const struct clk_parent_data) {
.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_xgmac4_ptp_ref_div_clk_src = {
.reg = 0x28224,
.shift = 0,
.width = 4,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_xgmac4_ptp_ref_div_clk_src" ,
.parent_data = &(const struct clk_parent_data) {
.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_xgmac5_ptp_ref_div_clk_src = {
.reg = 0x28228,
.shift = 0,
.width = 4,
.clkr.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_xgmac5_ptp_ref_div_clk_src" ,
.parent_data = &(const struct clk_parent_data) {
.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 = 0x2840c,
.clkr = {
.enable_reg = 0x2840c,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ce_apb_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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 = 0x28410,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28410,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ce_axi_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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_clc_axi_clk = {
.halt_reg = 0x2860c,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x2860c,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_clc_axi_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_clc_clk_src.clkr.hw,
},
.num_parents = 1,
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_branch2_ops,
},
},
};
static struct clk_branch nss_cc_crypto_clk = {
.halt_reg = 0x1601c,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x1601c,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_crypto_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_crypto_clk_src.clkr.hw,
},
.num_parents = 1,
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_branch2_ops,
},
},
};
static struct clk_branch nss_cc_crypto_ppe_clk = {
.halt_reg = 0x28240,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28240,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_crypto_ppe_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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_haq_ahb_clk = {
.halt_reg = 0x2830c,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x2830c,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_haq_ahb_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_haq_clk_src.clkr.hw,
},
.num_parents = 1,
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_branch2_ops,
},
},
};
static struct clk_branch nss_cc_haq_axi_clk = {
.halt_reg = 0x28310,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28310,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_haq_axi_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_haq_clk_src.clkr.hw,
},
.num_parents = 1,
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_branch2_ops,
},
},
};
static struct clk_branch nss_cc_imem_ahb_clk = {
.halt_reg = 0xe018,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0xe018,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_imem_ahb_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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_imem_qsb_clk = {
.halt_reg = 0xe010,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0xe010,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_imem_qsb_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_imem_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 = 0x281d0,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x281d0,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_nss_csr_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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 = 0x28414,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28414,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_nssnoc_ce_apb_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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 = 0x28418,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28418,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_nssnoc_ce_axi_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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_clc_axi_clk = {
.halt_reg = 0x28610,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28610,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_nssnoc_clc_axi_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_clc_clk_src.clkr.hw,
},
.num_parents = 1,
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_branch2_ops,
},
},
};
static struct clk_branch nss_cc_nssnoc_crypto_clk = {
.halt_reg = 0x16020,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x16020,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_nssnoc_crypto_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_crypto_clk_src.clkr.hw,
},
.num_parents = 1,
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_branch2_ops,
},
},
};
static struct clk_branch nss_cc_nssnoc_haq_ahb_clk = {
.halt_reg = 0x28314,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28314,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_nssnoc_haq_ahb_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_haq_clk_src.clkr.hw,
},
.num_parents = 1,
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_branch2_ops,
},
},
};
static struct clk_branch nss_cc_nssnoc_haq_axi_clk = {
.halt_reg = 0x28318,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28318,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_nssnoc_haq_axi_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_haq_clk_src.clkr.hw,
},
.num_parents = 1,
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_branch2_ops,
},
},
};
static struct clk_branch nss_cc_nssnoc_imem_ahb_clk = {
.halt_reg = 0xe01c,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0xe01c,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_nssnoc_imem_ahb_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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_imem_qsb_clk = {
.halt_reg = 0xe014,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0xe014,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_nssnoc_imem_qsb_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_imem_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 = 0x281d4,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x281d4,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_nssnoc_nss_csr_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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 = 0x28248,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28248,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_nssnoc_ppe_cfg_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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 = 0x28244,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28244,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_nssnoc_ppe_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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_ubi32_ahb0_clk = {
.halt_reg = 0x28788,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28788,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_nssnoc_ubi32_ahb0_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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_ubi32_axi0_clk = {
.halt_reg = 0x287a0,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x287a0,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_nssnoc_ubi32_axi0_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_ubi_axi_clk_src.clkr.hw,
},
.num_parents = 1,
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_branch2_ops,
},
},
};
static struct clk_branch nss_cc_nssnoc_ubi32_int0_ahb_clk = {
.halt_reg = 0x2878c,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x2878c,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_nssnoc_ubi32_int0_ahb_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_int_cfg_clk_src.clkr.hw,
},
.num_parents = 1,
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_branch2_ops,
},
},
};
static struct clk_branch nss_cc_nssnoc_ubi32_nc_axi0_1_clk = {
.halt_reg = 0x287bc,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x287bc,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_nssnoc_ubi32_nc_axi0_1_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_ubi_nc_axi_bfdcd_clk_src.clkr.hw,
},
.num_parents = 1,
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_branch2_ops,
},
},
};
static struct clk_branch nss_cc_nssnoc_ubi32_nc_axi0_clk = {
.halt_reg = 0x28764,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28764,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_nssnoc_ubi32_nc_axi0_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_ubi_nc_axi_bfdcd_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 = 0x2824c,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x2824c,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port1_mac_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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 = 0x281a0,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x281a0,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port1_rx_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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 = 0x281a4,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x281a4,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port1_tx_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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 = 0x28250,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28250,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port2_mac_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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 = 0x281a8,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x281a8,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port2_rx_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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 = 0x281ac,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x281ac,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port2_tx_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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 = 0x28254,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28254,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port3_mac_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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 = 0x281b0,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x281b0,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port3_rx_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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 = 0x281b4,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x281b4,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port3_tx_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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_port4_mac_clk = {
.halt_reg = 0x28258,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28258,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port4_mac_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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_port4_rx_clk = {
.halt_reg = 0x281b8,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x281b8,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port4_rx_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_port4_rx_div_clk_src.clkr.hw,
},
.num_parents = 1,
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_branch2_ops,
},
},
};
static struct clk_branch nss_cc_port4_tx_clk = {
.halt_reg = 0x281bc,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x281bc,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port4_tx_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_port4_tx_div_clk_src.clkr.hw,
},
.num_parents = 1,
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_branch2_ops,
},
},
};
static struct clk_branch nss_cc_port5_mac_clk = {
.halt_reg = 0x2825c,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x2825c,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port5_mac_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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_port5_rx_clk = {
.halt_reg = 0x281c0,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x281c0,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port5_rx_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_port5_rx_div_clk_src.clkr.hw,
},
.num_parents = 1,
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_branch2_ops,
},
},
};
static struct clk_branch nss_cc_port5_tx_clk = {
.halt_reg = 0x281c4,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x281c4,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port5_tx_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_port5_tx_div_clk_src.clkr.hw,
},
.num_parents = 1,
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_branch2_ops,
},
},
};
static struct clk_branch nss_cc_port6_mac_clk = {
.halt_reg = 0x28260,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28260,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port6_mac_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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_port6_rx_clk = {
.halt_reg = 0x281c8,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x281c8,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port6_rx_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_port6_rx_div_clk_src.clkr.hw,
},
.num_parents = 1,
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_branch2_ops,
},
},
};
static struct clk_branch nss_cc_port6_tx_clk = {
.halt_reg = 0x281cc,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x281cc,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_port6_tx_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_port6_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 = 0x2823c,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x2823c,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ppe_edma_cfg_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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 = 0x28238,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28238,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ppe_edma_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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 = 0x2827c,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x2827c,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ppe_switch_btq_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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 = 0x28234,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28234,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ppe_switch_cfg_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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 = 0x28230,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28230,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ppe_switch_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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 = 0x2822c,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x2822c,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ppe_switch_ipe_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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_ubi32_ahb0_clk = {
.halt_reg = 0x28768,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28768,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ubi32_ahb0_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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_ubi32_ahb1_clk = {
.halt_reg = 0x28770,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28770,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ubi32_ahb1_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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_ubi32_ahb2_clk = {
.halt_reg = 0x28778,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28778,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ubi32_ahb2_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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_ubi32_ahb3_clk = {
.halt_reg = 0x28780,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28780,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ubi32_ahb3_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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_ubi32_axi0_clk = {
.halt_reg = 0x28790,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28790,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ubi32_axi0_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_ubi_axi_clk_src.clkr.hw,
},
.num_parents = 1,
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_branch2_ops,
},
},
};
static struct clk_branch nss_cc_ubi32_axi1_clk = {
.halt_reg = 0x28794,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28794,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ubi32_axi1_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_ubi_axi_clk_src.clkr.hw,
},
.num_parents = 1,
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_branch2_ops,
},
},
};
static struct clk_branch nss_cc_ubi32_axi2_clk = {
.halt_reg = 0x28798,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28798,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ubi32_axi2_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_ubi_axi_clk_src.clkr.hw,
},
.num_parents = 1,
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_branch2_ops,
},
},
};
static struct clk_branch nss_cc_ubi32_axi3_clk = {
.halt_reg = 0x2879c,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x2879c,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ubi32_axi3_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_ubi_axi_clk_src.clkr.hw,
},
.num_parents = 1,
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_branch2_ops,
},
},
};
static struct clk_branch nss_cc_ubi32_core0_clk = {
.halt_reg = 0x28734,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28734,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ubi32_core0_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_ubi0_div_clk_src.clkr.hw,
},
.num_parents = 1,
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_branch2_ops,
},
},
};
static struct clk_branch nss_cc_ubi32_core1_clk = {
.halt_reg = 0x28738,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28738,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ubi32_core1_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_ubi1_div_clk_src.clkr.hw,
},
.num_parents = 1,
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_branch2_ops,
},
},
};
static struct clk_branch nss_cc_ubi32_core2_clk = {
.halt_reg = 0x2873c,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x2873c,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ubi32_core2_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_ubi2_div_clk_src.clkr.hw,
},
.num_parents = 1,
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_branch2_ops,
},
},
};
static struct clk_branch nss_cc_ubi32_core3_clk = {
.halt_reg = 0x28740,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28740,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ubi32_core3_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_ubi3_div_clk_src.clkr.hw,
},
.num_parents = 1,
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_branch2_ops,
},
},
};
static struct clk_branch nss_cc_ubi32_intr0_ahb_clk = {
.halt_reg = 0x2876c,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x2876c,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ubi32_intr0_ahb_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_int_cfg_clk_src.clkr.hw,
},
.num_parents = 1,
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_branch2_ops,
},
},
};
static struct clk_branch nss_cc_ubi32_intr1_ahb_clk = {
.halt_reg = 0x28774,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28774,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ubi32_intr1_ahb_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_int_cfg_clk_src.clkr.hw,
},
.num_parents = 1,
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_branch2_ops,
},
},
};
static struct clk_branch nss_cc_ubi32_intr2_ahb_clk = {
.halt_reg = 0x2877c,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x2877c,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ubi32_intr2_ahb_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_int_cfg_clk_src.clkr.hw,
},
.num_parents = 1,
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_branch2_ops,
},
},
};
static struct clk_branch nss_cc_ubi32_intr3_ahb_clk = {
.halt_reg = 0x28784,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28784,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ubi32_intr3_ahb_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_int_cfg_clk_src.clkr.hw,
},
.num_parents = 1,
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_branch2_ops,
},
},
};
static struct clk_branch nss_cc_ubi32_nc_axi0_clk = {
.halt_reg = 0x28744,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28744,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ubi32_nc_axi0_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_ubi_nc_axi_bfdcd_clk_src.clkr.hw,
},
.num_parents = 1,
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_branch2_ops,
},
},
};
static struct clk_branch nss_cc_ubi32_nc_axi1_clk = {
.halt_reg = 0x2874c,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x2874c,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ubi32_nc_axi1_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_ubi_nc_axi_bfdcd_clk_src.clkr.hw,
},
.num_parents = 1,
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_branch2_ops,
},
},
};
static struct clk_branch nss_cc_ubi32_nc_axi2_clk = {
.halt_reg = 0x28754,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28754,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ubi32_nc_axi2_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_ubi_nc_axi_bfdcd_clk_src.clkr.hw,
},
.num_parents = 1,
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_branch2_ops,
},
},
};
static struct clk_branch nss_cc_ubi32_nc_axi3_clk = {
.halt_reg = 0x2875c,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x2875c,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ubi32_nc_axi3_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_ubi_nc_axi_bfdcd_clk_src.clkr.hw,
},
.num_parents = 1,
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_branch2_ops,
},
},
};
static struct clk_branch nss_cc_ubi32_utcm0_clk = {
.halt_reg = 0x28748,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28748,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ubi32_utcm0_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_ubi_nc_axi_bfdcd_clk_src.clkr.hw,
},
.num_parents = 1,
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_branch2_ops,
},
},
};
static struct clk_branch nss_cc_ubi32_utcm1_clk = {
.halt_reg = 0x28750,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28750,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ubi32_utcm1_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_ubi_nc_axi_bfdcd_clk_src.clkr.hw,
},
.num_parents = 1,
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_branch2_ops,
},
},
};
static struct clk_branch nss_cc_ubi32_utcm2_clk = {
.halt_reg = 0x28758,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28758,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ubi32_utcm2_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_ubi_nc_axi_bfdcd_clk_src.clkr.hw,
},
.num_parents = 1,
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_branch2_ops,
},
},
};
static struct clk_branch nss_cc_ubi32_utcm3_clk = {
.halt_reg = 0x28760,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28760,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_ubi32_utcm3_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_ubi_nc_axi_bfdcd_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 = 0x28904,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28904,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_uniphy_port1_rx_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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 = 0x28908,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28908,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_uniphy_port1_tx_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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 = 0x2890c,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x2890c,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_uniphy_port2_rx_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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 = 0x28910,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28910,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_uniphy_port2_tx_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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 = 0x28914,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28914,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_uniphy_port3_rx_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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 = 0x28918,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28918,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_uniphy_port3_tx_clk" ,
.parent_data = &(const struct clk_parent_data) {
.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_uniphy_port4_rx_clk = {
.halt_reg = 0x2891c,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x2891c,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_uniphy_port4_rx_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_port4_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_port4_tx_clk = {
.halt_reg = 0x28920,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x28920,
.enable_mask = BIT(0),
.hw.init = &(const struct clk_init_data) {
.name = "nss_cc_uniphy_port4_tx_clk" ,
.parent_data = &(const struct clk_parent_data) {
.hw = &nss_cc_port4_tx_div_clk_src.clkr.hw,
},
.num_parents = 1,
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_branch2_ops,
},
},
};
--> --------------------
--> maximum size reached
--> --------------------
Messung V0.5 C=96 H=97 G=96
¤ Dauer der Verarbeitung: 0.22 Sekunden
¤
*© Formatika GbR, Deutschland