xref: /linux/drivers/clk/qcom/negcc-nord.c (revision 0fc8f6200d2313278fbf4539bbab74677c685531)
1*a4f780cdSTaniya Das // SPDX-License-Identifier: GPL-2.0-only
2*a4f780cdSTaniya Das /*
3*a4f780cdSTaniya Das  * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
4*a4f780cdSTaniya Das  */
5*a4f780cdSTaniya Das 
6*a4f780cdSTaniya Das #include <linux/clk-provider.h>
7*a4f780cdSTaniya Das #include <linux/mod_devicetable.h>
8*a4f780cdSTaniya Das #include <linux/module.h>
9*a4f780cdSTaniya Das #include <linux/platform_device.h>
10*a4f780cdSTaniya Das #include <linux/regmap.h>
11*a4f780cdSTaniya Das 
12*a4f780cdSTaniya Das #include <dt-bindings/clock/qcom,nord-negcc.h>
13*a4f780cdSTaniya Das 
14*a4f780cdSTaniya Das #include "clk-alpha-pll.h"
15*a4f780cdSTaniya Das #include "clk-branch.h"
16*a4f780cdSTaniya Das #include "clk-pll.h"
17*a4f780cdSTaniya Das #include "clk-rcg.h"
18*a4f780cdSTaniya Das #include "clk-regmap.h"
19*a4f780cdSTaniya Das #include "clk-regmap-divider.h"
20*a4f780cdSTaniya Das #include "clk-regmap-mux.h"
21*a4f780cdSTaniya Das #include "clk-regmap-phy-mux.h"
22*a4f780cdSTaniya Das #include "common.h"
23*a4f780cdSTaniya Das #include "gdsc.h"
24*a4f780cdSTaniya Das #include "reset.h"
25*a4f780cdSTaniya Das 
26*a4f780cdSTaniya Das enum {
27*a4f780cdSTaniya Das 	DT_BI_TCXO,
28*a4f780cdSTaniya Das 	DT_SLEEP_CLK,
29*a4f780cdSTaniya Das 	DT_UFS_PHY_RX_SYMBOL_0_CLK,
30*a4f780cdSTaniya Das 	DT_UFS_PHY_RX_SYMBOL_1_CLK,
31*a4f780cdSTaniya Das 	DT_UFS_PHY_TX_SYMBOL_0_CLK,
32*a4f780cdSTaniya Das 	DT_USB3_PHY_SEC_WRAPPER_NE_GCC_USB31_PIPE_CLK,
33*a4f780cdSTaniya Das 	DT_USB3_PHY_WRAPPER_NE_GCC_USB31_PIPE_CLK,
34*a4f780cdSTaniya Das };
35*a4f780cdSTaniya Das 
36*a4f780cdSTaniya Das enum {
37*a4f780cdSTaniya Das 	P_BI_TCXO,
38*a4f780cdSTaniya Das 	P_NE_GCC_GPLL0_OUT_EVEN,
39*a4f780cdSTaniya Das 	P_NE_GCC_GPLL0_OUT_MAIN,
40*a4f780cdSTaniya Das 	P_NE_GCC_GPLL2_OUT_MAIN,
41*a4f780cdSTaniya Das 	P_SLEEP_CLK,
42*a4f780cdSTaniya Das 	P_UFS_PHY_RX_SYMBOL_0_CLK,
43*a4f780cdSTaniya Das 	P_UFS_PHY_RX_SYMBOL_1_CLK,
44*a4f780cdSTaniya Das 	P_UFS_PHY_TX_SYMBOL_0_CLK,
45*a4f780cdSTaniya Das 	P_USB3_PHY_SEC_WRAPPER_NE_GCC_USB31_PIPE_CLK,
46*a4f780cdSTaniya Das 	P_USB3_PHY_WRAPPER_NE_GCC_USB31_PIPE_CLK,
47*a4f780cdSTaniya Das };
48*a4f780cdSTaniya Das 
49*a4f780cdSTaniya Das static struct clk_alpha_pll ne_gcc_gpll0 = {
50*a4f780cdSTaniya Das 	.offset = 0x0,
51*a4f780cdSTaniya Das 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
52*a4f780cdSTaniya Das 	.clkr = {
53*a4f780cdSTaniya Das 		.enable_reg = 0x0,
54*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
55*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
56*a4f780cdSTaniya Das 			.name = "ne_gcc_gpll0",
57*a4f780cdSTaniya Das 			.parent_data = &(const struct clk_parent_data) {
58*a4f780cdSTaniya Das 				.index = DT_BI_TCXO,
59*a4f780cdSTaniya Das 			},
60*a4f780cdSTaniya Das 			.num_parents = 1,
61*a4f780cdSTaniya Das 			.ops = &clk_alpha_pll_fixed_lucid_ole_ops,
62*a4f780cdSTaniya Das 		},
63*a4f780cdSTaniya Das 	},
64*a4f780cdSTaniya Das };
65*a4f780cdSTaniya Das 
66*a4f780cdSTaniya Das static const struct clk_div_table post_div_table_ne_gcc_gpll0_out_even[] = {
67*a4f780cdSTaniya Das 	{ 0x1, 2 },
68*a4f780cdSTaniya Das 	{ }
69*a4f780cdSTaniya Das };
70*a4f780cdSTaniya Das 
71*a4f780cdSTaniya Das static struct clk_alpha_pll_postdiv ne_gcc_gpll0_out_even = {
72*a4f780cdSTaniya Das 	.offset = 0x0,
73*a4f780cdSTaniya Das 	.post_div_shift = 10,
74*a4f780cdSTaniya Das 	.post_div_table = post_div_table_ne_gcc_gpll0_out_even,
75*a4f780cdSTaniya Das 	.num_post_div = ARRAY_SIZE(post_div_table_ne_gcc_gpll0_out_even),
76*a4f780cdSTaniya Das 	.width = 4,
77*a4f780cdSTaniya Das 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
78*a4f780cdSTaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
79*a4f780cdSTaniya Das 		.name = "ne_gcc_gpll0_out_even",
80*a4f780cdSTaniya Das 		.parent_hws = (const struct clk_hw*[]) {
81*a4f780cdSTaniya Das 			&ne_gcc_gpll0.clkr.hw,
82*a4f780cdSTaniya Das 		},
83*a4f780cdSTaniya Das 		.num_parents = 1,
84*a4f780cdSTaniya Das 		.ops = &clk_alpha_pll_postdiv_lucid_ole_ops,
85*a4f780cdSTaniya Das 	},
86*a4f780cdSTaniya Das };
87*a4f780cdSTaniya Das 
88*a4f780cdSTaniya Das static struct clk_alpha_pll ne_gcc_gpll2 = {
89*a4f780cdSTaniya Das 	.offset = 0x2000,
90*a4f780cdSTaniya Das 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
91*a4f780cdSTaniya Das 	.clkr = {
92*a4f780cdSTaniya Das 		.enable_reg = 0x0,
93*a4f780cdSTaniya Das 		.enable_mask = BIT(2),
94*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
95*a4f780cdSTaniya Das 			.name = "ne_gcc_gpll2",
96*a4f780cdSTaniya Das 			.parent_data = &(const struct clk_parent_data) {
97*a4f780cdSTaniya Das 				.index = DT_BI_TCXO,
98*a4f780cdSTaniya Das 			},
99*a4f780cdSTaniya Das 			.num_parents = 1,
100*a4f780cdSTaniya Das 			.ops = &clk_alpha_pll_fixed_lucid_ole_ops,
101*a4f780cdSTaniya Das 		},
102*a4f780cdSTaniya Das 	},
103*a4f780cdSTaniya Das };
104*a4f780cdSTaniya Das 
105*a4f780cdSTaniya Das static const struct parent_map ne_gcc_parent_map_0[] = {
106*a4f780cdSTaniya Das 	{ P_BI_TCXO, 0 },
107*a4f780cdSTaniya Das 	{ P_NE_GCC_GPLL0_OUT_MAIN, 1 },
108*a4f780cdSTaniya Das };
109*a4f780cdSTaniya Das 
110*a4f780cdSTaniya Das static const struct clk_parent_data ne_gcc_parent_data_0[] = {
111*a4f780cdSTaniya Das 	{ .index = DT_BI_TCXO },
112*a4f780cdSTaniya Das 	{ .hw = &ne_gcc_gpll0.clkr.hw },
113*a4f780cdSTaniya Das };
114*a4f780cdSTaniya Das 
115*a4f780cdSTaniya Das static const struct parent_map ne_gcc_parent_map_1[] = {
116*a4f780cdSTaniya Das 	{ P_BI_TCXO, 0 },
117*a4f780cdSTaniya Das 	{ P_NE_GCC_GPLL0_OUT_MAIN, 1 },
118*a4f780cdSTaniya Das 	{ P_NE_GCC_GPLL0_OUT_EVEN, 5 },
119*a4f780cdSTaniya Das };
120*a4f780cdSTaniya Das 
121*a4f780cdSTaniya Das static const struct clk_parent_data ne_gcc_parent_data_1[] = {
122*a4f780cdSTaniya Das 	{ .index = DT_BI_TCXO },
123*a4f780cdSTaniya Das 	{ .hw = &ne_gcc_gpll0.clkr.hw },
124*a4f780cdSTaniya Das 	{ .hw = &ne_gcc_gpll0_out_even.clkr.hw },
125*a4f780cdSTaniya Das };
126*a4f780cdSTaniya Das 
127*a4f780cdSTaniya Das static const struct parent_map ne_gcc_parent_map_2[] = {
128*a4f780cdSTaniya Das 	{ P_BI_TCXO, 0 },
129*a4f780cdSTaniya Das 	{ P_NE_GCC_GPLL0_OUT_MAIN, 1 },
130*a4f780cdSTaniya Das 	{ P_NE_GCC_GPLL2_OUT_MAIN, 3 },
131*a4f780cdSTaniya Das };
132*a4f780cdSTaniya Das 
133*a4f780cdSTaniya Das static const struct clk_parent_data ne_gcc_parent_data_2[] = {
134*a4f780cdSTaniya Das 	{ .index = DT_BI_TCXO },
135*a4f780cdSTaniya Das 	{ .hw = &ne_gcc_gpll0.clkr.hw },
136*a4f780cdSTaniya Das 	{ .hw = &ne_gcc_gpll2.clkr.hw },
137*a4f780cdSTaniya Das };
138*a4f780cdSTaniya Das 
139*a4f780cdSTaniya Das static const struct parent_map ne_gcc_parent_map_3[] = {
140*a4f780cdSTaniya Das 	{ P_BI_TCXO, 0 },
141*a4f780cdSTaniya Das 	{ P_SLEEP_CLK, 5 },
142*a4f780cdSTaniya Das };
143*a4f780cdSTaniya Das 
144*a4f780cdSTaniya Das static const struct clk_parent_data ne_gcc_parent_data_3[] = {
145*a4f780cdSTaniya Das 	{ .index = DT_BI_TCXO },
146*a4f780cdSTaniya Das 	{ .index = DT_SLEEP_CLK },
147*a4f780cdSTaniya Das };
148*a4f780cdSTaniya Das 
149*a4f780cdSTaniya Das static const struct parent_map ne_gcc_parent_map_4[] = {
150*a4f780cdSTaniya Das 	{ P_BI_TCXO, 0 },
151*a4f780cdSTaniya Das 	{ P_NE_GCC_GPLL0_OUT_MAIN, 1 },
152*a4f780cdSTaniya Das 	{ P_SLEEP_CLK, 5 },
153*a4f780cdSTaniya Das };
154*a4f780cdSTaniya Das 
155*a4f780cdSTaniya Das static const struct clk_parent_data ne_gcc_parent_data_4[] = {
156*a4f780cdSTaniya Das 	{ .index = DT_BI_TCXO },
157*a4f780cdSTaniya Das 	{ .hw = &ne_gcc_gpll0.clkr.hw },
158*a4f780cdSTaniya Das 	{ .index = DT_SLEEP_CLK },
159*a4f780cdSTaniya Das };
160*a4f780cdSTaniya Das 
161*a4f780cdSTaniya Das static const struct parent_map ne_gcc_parent_map_5[] = {
162*a4f780cdSTaniya Das 	{ P_BI_TCXO, 0 },
163*a4f780cdSTaniya Das };
164*a4f780cdSTaniya Das 
165*a4f780cdSTaniya Das static const struct clk_parent_data ne_gcc_parent_data_5[] = {
166*a4f780cdSTaniya Das 	{ .index = DT_BI_TCXO },
167*a4f780cdSTaniya Das };
168*a4f780cdSTaniya Das 
169*a4f780cdSTaniya Das static const struct parent_map ne_gcc_parent_map_6[] = {
170*a4f780cdSTaniya Das 	{ P_USB3_PHY_WRAPPER_NE_GCC_USB31_PIPE_CLK, 0 },
171*a4f780cdSTaniya Das 	{ P_BI_TCXO, 2 },
172*a4f780cdSTaniya Das };
173*a4f780cdSTaniya Das 
174*a4f780cdSTaniya Das static const struct clk_parent_data ne_gcc_parent_data_6[] = {
175*a4f780cdSTaniya Das 	{ .index = DT_USB3_PHY_WRAPPER_NE_GCC_USB31_PIPE_CLK },
176*a4f780cdSTaniya Das 	{ .index = DT_BI_TCXO },
177*a4f780cdSTaniya Das };
178*a4f780cdSTaniya Das 
179*a4f780cdSTaniya Das static const struct parent_map ne_gcc_parent_map_7[] = {
180*a4f780cdSTaniya Das 	{ P_USB3_PHY_SEC_WRAPPER_NE_GCC_USB31_PIPE_CLK, 0 },
181*a4f780cdSTaniya Das 	{ P_BI_TCXO, 2 },
182*a4f780cdSTaniya Das };
183*a4f780cdSTaniya Das 
184*a4f780cdSTaniya Das static const struct clk_parent_data ne_gcc_parent_data_7[] = {
185*a4f780cdSTaniya Das 	{ .index = DT_USB3_PHY_SEC_WRAPPER_NE_GCC_USB31_PIPE_CLK },
186*a4f780cdSTaniya Das 	{ .index = DT_BI_TCXO },
187*a4f780cdSTaniya Das };
188*a4f780cdSTaniya Das 
189*a4f780cdSTaniya Das static struct clk_regmap_phy_mux ne_gcc_ufs_phy_rx_symbol_0_clk_src = {
190*a4f780cdSTaniya Das 	.reg = 0x33068,
191*a4f780cdSTaniya Das 	.clkr = {
192*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
193*a4f780cdSTaniya Das 			.name = "ne_gcc_ufs_phy_rx_symbol_0_clk_src",
194*a4f780cdSTaniya Das 			.parent_data = &(const struct clk_parent_data){
195*a4f780cdSTaniya Das 				.index = DT_UFS_PHY_RX_SYMBOL_0_CLK,
196*a4f780cdSTaniya Das 			},
197*a4f780cdSTaniya Das 			.num_parents = 1,
198*a4f780cdSTaniya Das 			.ops = &clk_regmap_phy_mux_ops,
199*a4f780cdSTaniya Das 		},
200*a4f780cdSTaniya Das 	},
201*a4f780cdSTaniya Das };
202*a4f780cdSTaniya Das 
203*a4f780cdSTaniya Das static struct clk_regmap_phy_mux ne_gcc_ufs_phy_rx_symbol_1_clk_src = {
204*a4f780cdSTaniya Das 	.reg = 0x330f0,
205*a4f780cdSTaniya Das 	.clkr = {
206*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
207*a4f780cdSTaniya Das 			.name = "ne_gcc_ufs_phy_rx_symbol_1_clk_src",
208*a4f780cdSTaniya Das 			.parent_data = &(const struct clk_parent_data){
209*a4f780cdSTaniya Das 				.index = DT_UFS_PHY_RX_SYMBOL_1_CLK,
210*a4f780cdSTaniya Das 			},
211*a4f780cdSTaniya Das 			.num_parents = 1,
212*a4f780cdSTaniya Das 			.ops = &clk_regmap_phy_mux_ops,
213*a4f780cdSTaniya Das 		},
214*a4f780cdSTaniya Das 	},
215*a4f780cdSTaniya Das };
216*a4f780cdSTaniya Das 
217*a4f780cdSTaniya Das static struct clk_regmap_phy_mux ne_gcc_ufs_phy_tx_symbol_0_clk_src = {
218*a4f780cdSTaniya Das 	.reg = 0x33058,
219*a4f780cdSTaniya Das 	.clkr = {
220*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
221*a4f780cdSTaniya Das 			.name = "ne_gcc_ufs_phy_tx_symbol_0_clk_src",
222*a4f780cdSTaniya Das 			.parent_data = &(const struct clk_parent_data){
223*a4f780cdSTaniya Das 				.index = DT_UFS_PHY_TX_SYMBOL_0_CLK,
224*a4f780cdSTaniya Das 			},
225*a4f780cdSTaniya Das 			.num_parents = 1,
226*a4f780cdSTaniya Das 			.ops = &clk_regmap_phy_mux_ops,
227*a4f780cdSTaniya Das 		},
228*a4f780cdSTaniya Das 	},
229*a4f780cdSTaniya Das };
230*a4f780cdSTaniya Das 
231*a4f780cdSTaniya Das static struct clk_regmap_mux ne_gcc_usb3_prim_phy_pipe_clk_src = {
232*a4f780cdSTaniya Das 	.reg = 0x2a078,
233*a4f780cdSTaniya Das 	.shift = 0,
234*a4f780cdSTaniya Das 	.width = 2,
235*a4f780cdSTaniya Das 	.parent_map = ne_gcc_parent_map_6,
236*a4f780cdSTaniya Das 	.clkr = {
237*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
238*a4f780cdSTaniya Das 			.name = "ne_gcc_usb3_prim_phy_pipe_clk_src",
239*a4f780cdSTaniya Das 			.parent_data = ne_gcc_parent_data_6,
240*a4f780cdSTaniya Das 			.num_parents = ARRAY_SIZE(ne_gcc_parent_data_6),
241*a4f780cdSTaniya Das 			.ops = &clk_regmap_mux_closest_ops,
242*a4f780cdSTaniya Das 		},
243*a4f780cdSTaniya Das 	},
244*a4f780cdSTaniya Das };
245*a4f780cdSTaniya Das 
246*a4f780cdSTaniya Das static struct clk_regmap_mux ne_gcc_usb3_sec_phy_pipe_clk_src = {
247*a4f780cdSTaniya Das 	.reg = 0x2c078,
248*a4f780cdSTaniya Das 	.shift = 0,
249*a4f780cdSTaniya Das 	.width = 2,
250*a4f780cdSTaniya Das 	.parent_map = ne_gcc_parent_map_7,
251*a4f780cdSTaniya Das 	.clkr = {
252*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
253*a4f780cdSTaniya Das 			.name = "ne_gcc_usb3_sec_phy_pipe_clk_src",
254*a4f780cdSTaniya Das 			.parent_data = ne_gcc_parent_data_7,
255*a4f780cdSTaniya Das 			.num_parents = ARRAY_SIZE(ne_gcc_parent_data_7),
256*a4f780cdSTaniya Das 			.ops = &clk_regmap_mux_closest_ops,
257*a4f780cdSTaniya Das 		},
258*a4f780cdSTaniya Das 	},
259*a4f780cdSTaniya Das };
260*a4f780cdSTaniya Das 
261*a4f780cdSTaniya Das static const struct freq_tbl ftbl_ne_gcc_gp1_clk_src[] = {
262*a4f780cdSTaniya Das 	F(66666667, P_NE_GCC_GPLL0_OUT_MAIN, 9, 0, 0),
263*a4f780cdSTaniya Das 	F(100000000, P_NE_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
264*a4f780cdSTaniya Das 	F(200000000, P_NE_GCC_GPLL0_OUT_MAIN, 3, 0, 0),
265*a4f780cdSTaniya Das 	{ }
266*a4f780cdSTaniya Das };
267*a4f780cdSTaniya Das 
268*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_gp1_clk_src = {
269*a4f780cdSTaniya Das 	.cmd_rcgr = 0x21004,
270*a4f780cdSTaniya Das 	.mnd_width = 16,
271*a4f780cdSTaniya Das 	.hid_width = 5,
272*a4f780cdSTaniya Das 	.parent_map = ne_gcc_parent_map_4,
273*a4f780cdSTaniya Das 	.freq_tbl = ftbl_ne_gcc_gp1_clk_src,
274*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
275*a4f780cdSTaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
276*a4f780cdSTaniya Das 		.name = "ne_gcc_gp1_clk_src",
277*a4f780cdSTaniya Das 		.parent_data = ne_gcc_parent_data_4,
278*a4f780cdSTaniya Das 		.num_parents = ARRAY_SIZE(ne_gcc_parent_data_4),
279*a4f780cdSTaniya Das 		.flags = CLK_SET_RATE_PARENT,
280*a4f780cdSTaniya Das 		.ops = &clk_rcg2_shared_ops,
281*a4f780cdSTaniya Das 	},
282*a4f780cdSTaniya Das };
283*a4f780cdSTaniya Das 
284*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_gp2_clk_src = {
285*a4f780cdSTaniya Das 	.cmd_rcgr = 0x22004,
286*a4f780cdSTaniya Das 	.mnd_width = 16,
287*a4f780cdSTaniya Das 	.hid_width = 5,
288*a4f780cdSTaniya Das 	.parent_map = ne_gcc_parent_map_4,
289*a4f780cdSTaniya Das 	.freq_tbl = ftbl_ne_gcc_gp1_clk_src,
290*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
291*a4f780cdSTaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
292*a4f780cdSTaniya Das 		.name = "ne_gcc_gp2_clk_src",
293*a4f780cdSTaniya Das 		.parent_data = ne_gcc_parent_data_4,
294*a4f780cdSTaniya Das 		.num_parents = ARRAY_SIZE(ne_gcc_parent_data_4),
295*a4f780cdSTaniya Das 		.flags = CLK_SET_RATE_PARENT,
296*a4f780cdSTaniya Das 		.ops = &clk_rcg2_shared_ops,
297*a4f780cdSTaniya Das 	},
298*a4f780cdSTaniya Das };
299*a4f780cdSTaniya Das 
300*a4f780cdSTaniya Das static const struct freq_tbl ftbl_ne_gcc_qupv3_wrap2_s0_clk_src[] = {
301*a4f780cdSTaniya Das 	F(7372800, P_NE_GCC_GPLL0_OUT_MAIN, 1, 192, 15625),
302*a4f780cdSTaniya Das 	F(14745600, P_NE_GCC_GPLL0_OUT_MAIN, 1, 384, 15625),
303*a4f780cdSTaniya Das 	F(19200000, P_BI_TCXO, 1, 0, 0),
304*a4f780cdSTaniya Das 	F(29491200, P_NE_GCC_GPLL0_OUT_MAIN, 1, 768, 15625),
305*a4f780cdSTaniya Das 	F(32000000, P_NE_GCC_GPLL0_OUT_MAIN, 1, 4, 75),
306*a4f780cdSTaniya Das 	F(48000000, P_NE_GCC_GPLL0_OUT_MAIN, 1, 2, 25),
307*a4f780cdSTaniya Das 	F(51200000, P_NE_GCC_GPLL0_OUT_MAIN, 1, 32, 375),
308*a4f780cdSTaniya Das 	F(64000000, P_NE_GCC_GPLL0_OUT_MAIN, 1, 8, 75),
309*a4f780cdSTaniya Das 	F(66666667, P_NE_GCC_GPLL0_OUT_MAIN, 9, 0, 0),
310*a4f780cdSTaniya Das 	F(75000000, P_NE_GCC_GPLL0_OUT_MAIN, 8, 0, 0),
311*a4f780cdSTaniya Das 	F(80000000, P_NE_GCC_GPLL0_OUT_MAIN, 1, 2, 15),
312*a4f780cdSTaniya Das 	F(96000000, P_NE_GCC_GPLL0_OUT_MAIN, 1, 4, 25),
313*a4f780cdSTaniya Das 	F(100000000, P_NE_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
314*a4f780cdSTaniya Das 	F(102400000, P_NE_GCC_GPLL0_OUT_MAIN, 1, 64, 375),
315*a4f780cdSTaniya Das 	F(112000000, P_NE_GCC_GPLL0_OUT_MAIN, 1, 14, 75),
316*a4f780cdSTaniya Das 	F(117964800, P_NE_GCC_GPLL0_OUT_MAIN, 1, 3072, 15625),
317*a4f780cdSTaniya Das 	F(120000000, P_NE_GCC_GPLL0_OUT_MAIN, 5, 0, 0),
318*a4f780cdSTaniya Das 	{ }
319*a4f780cdSTaniya Das };
320*a4f780cdSTaniya Das 
321*a4f780cdSTaniya Das static struct clk_init_data ne_gcc_qupv3_wrap2_s0_clk_src_init = {
322*a4f780cdSTaniya Das 	.name = "ne_gcc_qupv3_wrap2_s0_clk_src",
323*a4f780cdSTaniya Das 	.parent_data = ne_gcc_parent_data_0,
324*a4f780cdSTaniya Das 	.num_parents = ARRAY_SIZE(ne_gcc_parent_data_0),
325*a4f780cdSTaniya Das 	.flags = CLK_SET_RATE_PARENT,
326*a4f780cdSTaniya Das 	.ops = &clk_rcg2_shared_no_init_park_ops,
327*a4f780cdSTaniya Das };
328*a4f780cdSTaniya Das 
329*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_qupv3_wrap2_s0_clk_src = {
330*a4f780cdSTaniya Das 	.cmd_rcgr = 0x3816c,
331*a4f780cdSTaniya Das 	.mnd_width = 16,
332*a4f780cdSTaniya Das 	.hid_width = 5,
333*a4f780cdSTaniya Das 	.parent_map = ne_gcc_parent_map_0,
334*a4f780cdSTaniya Das 	.freq_tbl = ftbl_ne_gcc_qupv3_wrap2_s0_clk_src,
335*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
336*a4f780cdSTaniya Das 	.clkr.hw.init = &ne_gcc_qupv3_wrap2_s0_clk_src_init,
337*a4f780cdSTaniya Das };
338*a4f780cdSTaniya Das 
339*a4f780cdSTaniya Das static struct clk_init_data ne_gcc_qupv3_wrap2_s1_clk_src_init = {
340*a4f780cdSTaniya Das 	.name = "ne_gcc_qupv3_wrap2_s1_clk_src",
341*a4f780cdSTaniya Das 	.parent_data = ne_gcc_parent_data_0,
342*a4f780cdSTaniya Das 	.num_parents = ARRAY_SIZE(ne_gcc_parent_data_0),
343*a4f780cdSTaniya Das 	.flags = CLK_SET_RATE_PARENT,
344*a4f780cdSTaniya Das 	.ops = &clk_rcg2_shared_no_init_park_ops,
345*a4f780cdSTaniya Das };
346*a4f780cdSTaniya Das 
347*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_qupv3_wrap2_s1_clk_src = {
348*a4f780cdSTaniya Das 	.cmd_rcgr = 0x382a8,
349*a4f780cdSTaniya Das 	.mnd_width = 16,
350*a4f780cdSTaniya Das 	.hid_width = 5,
351*a4f780cdSTaniya Das 	.parent_map = ne_gcc_parent_map_0,
352*a4f780cdSTaniya Das 	.freq_tbl = ftbl_ne_gcc_qupv3_wrap2_s0_clk_src,
353*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
354*a4f780cdSTaniya Das 	.clkr.hw.init = &ne_gcc_qupv3_wrap2_s1_clk_src_init,
355*a4f780cdSTaniya Das };
356*a4f780cdSTaniya Das 
357*a4f780cdSTaniya Das static const struct freq_tbl ftbl_ne_gcc_qupv3_wrap2_s2_clk_src[] = {
358*a4f780cdSTaniya Das 	F(7372800, P_NE_GCC_GPLL0_OUT_MAIN, 1, 192, 15625),
359*a4f780cdSTaniya Das 	F(14745600, P_NE_GCC_GPLL0_OUT_MAIN, 1, 384, 15625),
360*a4f780cdSTaniya Das 	F(19200000, P_BI_TCXO, 1, 0, 0),
361*a4f780cdSTaniya Das 	F(29491200, P_NE_GCC_GPLL0_OUT_MAIN, 1, 768, 15625),
362*a4f780cdSTaniya Das 	F(32000000, P_NE_GCC_GPLL0_OUT_MAIN, 1, 4, 75),
363*a4f780cdSTaniya Das 	F(48000000, P_NE_GCC_GPLL0_OUT_MAIN, 1, 2, 25),
364*a4f780cdSTaniya Das 	F(51200000, P_NE_GCC_GPLL0_OUT_MAIN, 1, 32, 375),
365*a4f780cdSTaniya Das 	F(64000000, P_NE_GCC_GPLL0_OUT_MAIN, 1, 8, 75),
366*a4f780cdSTaniya Das 	F(66666667, P_NE_GCC_GPLL0_OUT_MAIN, 9, 0, 0),
367*a4f780cdSTaniya Das 	F(75000000, P_NE_GCC_GPLL0_OUT_MAIN, 8, 0, 0),
368*a4f780cdSTaniya Das 	F(80000000, P_NE_GCC_GPLL0_OUT_MAIN, 1, 2, 15),
369*a4f780cdSTaniya Das 	F(96000000, P_NE_GCC_GPLL0_OUT_MAIN, 1, 4, 25),
370*a4f780cdSTaniya Das 	F(100000000, P_NE_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
371*a4f780cdSTaniya Das 	{ }
372*a4f780cdSTaniya Das };
373*a4f780cdSTaniya Das 
374*a4f780cdSTaniya Das static struct clk_init_data ne_gcc_qupv3_wrap2_s2_clk_src_init = {
375*a4f780cdSTaniya Das 	.name = "ne_gcc_qupv3_wrap2_s2_clk_src",
376*a4f780cdSTaniya Das 	.parent_data = ne_gcc_parent_data_0,
377*a4f780cdSTaniya Das 	.num_parents = ARRAY_SIZE(ne_gcc_parent_data_0),
378*a4f780cdSTaniya Das 	.flags = CLK_SET_RATE_PARENT,
379*a4f780cdSTaniya Das 	.ops = &clk_rcg2_shared_no_init_park_ops,
380*a4f780cdSTaniya Das };
381*a4f780cdSTaniya Das 
382*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_qupv3_wrap2_s2_clk_src = {
383*a4f780cdSTaniya Das 	.cmd_rcgr = 0x383e4,
384*a4f780cdSTaniya Das 	.mnd_width = 16,
385*a4f780cdSTaniya Das 	.hid_width = 5,
386*a4f780cdSTaniya Das 	.parent_map = ne_gcc_parent_map_0,
387*a4f780cdSTaniya Das 	.freq_tbl = ftbl_ne_gcc_qupv3_wrap2_s2_clk_src,
388*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
389*a4f780cdSTaniya Das 	.clkr.hw.init = &ne_gcc_qupv3_wrap2_s2_clk_src_init,
390*a4f780cdSTaniya Das };
391*a4f780cdSTaniya Das 
392*a4f780cdSTaniya Das static struct clk_init_data ne_gcc_qupv3_wrap2_s3_clk_src_init = {
393*a4f780cdSTaniya Das 	.name = "ne_gcc_qupv3_wrap2_s3_clk_src",
394*a4f780cdSTaniya Das 	.parent_data = ne_gcc_parent_data_0,
395*a4f780cdSTaniya Das 	.num_parents = ARRAY_SIZE(ne_gcc_parent_data_0),
396*a4f780cdSTaniya Das 	.flags = CLK_SET_RATE_PARENT,
397*a4f780cdSTaniya Das 	.ops = &clk_rcg2_shared_no_init_park_ops,
398*a4f780cdSTaniya Das };
399*a4f780cdSTaniya Das 
400*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_qupv3_wrap2_s3_clk_src = {
401*a4f780cdSTaniya Das 	.cmd_rcgr = 0x38520,
402*a4f780cdSTaniya Das 	.mnd_width = 16,
403*a4f780cdSTaniya Das 	.hid_width = 5,
404*a4f780cdSTaniya Das 	.parent_map = ne_gcc_parent_map_0,
405*a4f780cdSTaniya Das 	.freq_tbl = ftbl_ne_gcc_qupv3_wrap2_s2_clk_src,
406*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
407*a4f780cdSTaniya Das 	.clkr.hw.init = &ne_gcc_qupv3_wrap2_s3_clk_src_init,
408*a4f780cdSTaniya Das };
409*a4f780cdSTaniya Das 
410*a4f780cdSTaniya Das static struct clk_init_data ne_gcc_qupv3_wrap2_s4_clk_src_init = {
411*a4f780cdSTaniya Das 	.name = "ne_gcc_qupv3_wrap2_s4_clk_src",
412*a4f780cdSTaniya Das 	.parent_data = ne_gcc_parent_data_0,
413*a4f780cdSTaniya Das 	.num_parents = ARRAY_SIZE(ne_gcc_parent_data_0),
414*a4f780cdSTaniya Das 	.flags = CLK_SET_RATE_PARENT,
415*a4f780cdSTaniya Das 	.ops = &clk_rcg2_shared_no_init_park_ops,
416*a4f780cdSTaniya Das };
417*a4f780cdSTaniya Das 
418*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_qupv3_wrap2_s4_clk_src = {
419*a4f780cdSTaniya Das 	.cmd_rcgr = 0x3865c,
420*a4f780cdSTaniya Das 	.mnd_width = 16,
421*a4f780cdSTaniya Das 	.hid_width = 5,
422*a4f780cdSTaniya Das 	.parent_map = ne_gcc_parent_map_0,
423*a4f780cdSTaniya Das 	.freq_tbl = ftbl_ne_gcc_qupv3_wrap2_s2_clk_src,
424*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
425*a4f780cdSTaniya Das 	.clkr.hw.init = &ne_gcc_qupv3_wrap2_s4_clk_src_init,
426*a4f780cdSTaniya Das };
427*a4f780cdSTaniya Das 
428*a4f780cdSTaniya Das static struct clk_init_data ne_gcc_qupv3_wrap2_s5_clk_src_init = {
429*a4f780cdSTaniya Das 	.name = "ne_gcc_qupv3_wrap2_s5_clk_src",
430*a4f780cdSTaniya Das 	.parent_data = ne_gcc_parent_data_0,
431*a4f780cdSTaniya Das 	.num_parents = ARRAY_SIZE(ne_gcc_parent_data_0),
432*a4f780cdSTaniya Das 	.flags = CLK_SET_RATE_PARENT,
433*a4f780cdSTaniya Das 	.ops = &clk_rcg2_shared_no_init_park_ops,
434*a4f780cdSTaniya Das };
435*a4f780cdSTaniya Das 
436*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_qupv3_wrap2_s5_clk_src = {
437*a4f780cdSTaniya Das 	.cmd_rcgr = 0x38798,
438*a4f780cdSTaniya Das 	.mnd_width = 16,
439*a4f780cdSTaniya Das 	.hid_width = 5,
440*a4f780cdSTaniya Das 	.parent_map = ne_gcc_parent_map_0,
441*a4f780cdSTaniya Das 	.freq_tbl = ftbl_ne_gcc_qupv3_wrap2_s2_clk_src,
442*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
443*a4f780cdSTaniya Das 	.clkr.hw.init = &ne_gcc_qupv3_wrap2_s5_clk_src_init,
444*a4f780cdSTaniya Das };
445*a4f780cdSTaniya Das 
446*a4f780cdSTaniya Das static struct clk_init_data ne_gcc_qupv3_wrap2_s6_clk_src_init = {
447*a4f780cdSTaniya Das 	.name = "ne_gcc_qupv3_wrap2_s6_clk_src",
448*a4f780cdSTaniya Das 	.parent_data = ne_gcc_parent_data_0,
449*a4f780cdSTaniya Das 	.num_parents = ARRAY_SIZE(ne_gcc_parent_data_0),
450*a4f780cdSTaniya Das 	.flags = CLK_SET_RATE_PARENT,
451*a4f780cdSTaniya Das 	.ops = &clk_rcg2_shared_no_init_park_ops,
452*a4f780cdSTaniya Das };
453*a4f780cdSTaniya Das 
454*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_qupv3_wrap2_s6_clk_src = {
455*a4f780cdSTaniya Das 	.cmd_rcgr = 0x388d4,
456*a4f780cdSTaniya Das 	.mnd_width = 16,
457*a4f780cdSTaniya Das 	.hid_width = 5,
458*a4f780cdSTaniya Das 	.parent_map = ne_gcc_parent_map_0,
459*a4f780cdSTaniya Das 	.freq_tbl = ftbl_ne_gcc_qupv3_wrap2_s2_clk_src,
460*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
461*a4f780cdSTaniya Das 	.clkr.hw.init = &ne_gcc_qupv3_wrap2_s6_clk_src_init,
462*a4f780cdSTaniya Das };
463*a4f780cdSTaniya Das 
464*a4f780cdSTaniya Das static const struct freq_tbl ftbl_ne_gcc_sdcc4_apps_clk_src[] = {
465*a4f780cdSTaniya Das 	F(37500000, P_NE_GCC_GPLL0_OUT_MAIN, 16, 0, 0),
466*a4f780cdSTaniya Das 	F(50000000, P_NE_GCC_GPLL0_OUT_MAIN, 12, 0, 0),
467*a4f780cdSTaniya Das 	F(100000000, P_NE_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
468*a4f780cdSTaniya Das 	{ }
469*a4f780cdSTaniya Das };
470*a4f780cdSTaniya Das 
471*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_sdcc4_apps_clk_src = {
472*a4f780cdSTaniya Das 	.cmd_rcgr = 0x1801c,
473*a4f780cdSTaniya Das 	.mnd_width = 8,
474*a4f780cdSTaniya Das 	.hid_width = 5,
475*a4f780cdSTaniya Das 	.parent_map = ne_gcc_parent_map_0,
476*a4f780cdSTaniya Das 	.freq_tbl = ftbl_ne_gcc_sdcc4_apps_clk_src,
477*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
478*a4f780cdSTaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
479*a4f780cdSTaniya Das 		.name = "ne_gcc_sdcc4_apps_clk_src",
480*a4f780cdSTaniya Das 		.parent_data = ne_gcc_parent_data_0,
481*a4f780cdSTaniya Das 		.num_parents = ARRAY_SIZE(ne_gcc_parent_data_0),
482*a4f780cdSTaniya Das 		.flags = CLK_SET_RATE_PARENT,
483*a4f780cdSTaniya Das 		.ops = &clk_rcg2_shared_floor_ops,
484*a4f780cdSTaniya Das 	},
485*a4f780cdSTaniya Das };
486*a4f780cdSTaniya Das 
487*a4f780cdSTaniya Das static const struct freq_tbl ftbl_ne_gcc_ufs_phy_axi_clk_src[] = {
488*a4f780cdSTaniya Das 	F(120000000, P_NE_GCC_GPLL0_OUT_MAIN, 5, 0, 0),
489*a4f780cdSTaniya Das 	F(201500000, P_NE_GCC_GPLL2_OUT_MAIN, 4, 0, 0),
490*a4f780cdSTaniya Das 	F(300000000, P_NE_GCC_GPLL0_OUT_MAIN, 2, 0, 0),
491*a4f780cdSTaniya Das 	F(403000000, P_NE_GCC_GPLL2_OUT_MAIN, 2, 0, 0),
492*a4f780cdSTaniya Das 	{ }
493*a4f780cdSTaniya Das };
494*a4f780cdSTaniya Das 
495*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_ufs_phy_axi_clk_src = {
496*a4f780cdSTaniya Das 	.cmd_rcgr = 0x33034,
497*a4f780cdSTaniya Das 	.mnd_width = 8,
498*a4f780cdSTaniya Das 	.hid_width = 5,
499*a4f780cdSTaniya Das 	.parent_map = ne_gcc_parent_map_2,
500*a4f780cdSTaniya Das 	.freq_tbl = ftbl_ne_gcc_ufs_phy_axi_clk_src,
501*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
502*a4f780cdSTaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
503*a4f780cdSTaniya Das 		.name = "ne_gcc_ufs_phy_axi_clk_src",
504*a4f780cdSTaniya Das 		.parent_data = ne_gcc_parent_data_2,
505*a4f780cdSTaniya Das 		.num_parents = ARRAY_SIZE(ne_gcc_parent_data_2),
506*a4f780cdSTaniya Das 		.flags = CLK_SET_RATE_PARENT,
507*a4f780cdSTaniya Das 		.ops = &clk_rcg2_shared_ops,
508*a4f780cdSTaniya Das 	},
509*a4f780cdSTaniya Das };
510*a4f780cdSTaniya Das 
511*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_ufs_phy_ice_core_clk_src = {
512*a4f780cdSTaniya Das 	.cmd_rcgr = 0x3308c,
513*a4f780cdSTaniya Das 	.mnd_width = 0,
514*a4f780cdSTaniya Das 	.hid_width = 5,
515*a4f780cdSTaniya Das 	.parent_map = ne_gcc_parent_map_2,
516*a4f780cdSTaniya Das 	.freq_tbl = ftbl_ne_gcc_ufs_phy_axi_clk_src,
517*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
518*a4f780cdSTaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
519*a4f780cdSTaniya Das 		.name = "ne_gcc_ufs_phy_ice_core_clk_src",
520*a4f780cdSTaniya Das 		.parent_data = ne_gcc_parent_data_2,
521*a4f780cdSTaniya Das 		.num_parents = ARRAY_SIZE(ne_gcc_parent_data_2),
522*a4f780cdSTaniya Das 		.flags = CLK_SET_RATE_PARENT,
523*a4f780cdSTaniya Das 		.ops = &clk_rcg2_shared_ops,
524*a4f780cdSTaniya Das 	},
525*a4f780cdSTaniya Das };
526*a4f780cdSTaniya Das 
527*a4f780cdSTaniya Das static const struct freq_tbl ftbl_ne_gcc_ufs_phy_phy_aux_clk_src[] = {
528*a4f780cdSTaniya Das 	F(19200000, P_BI_TCXO, 1, 0, 0),
529*a4f780cdSTaniya Das 	{ }
530*a4f780cdSTaniya Das };
531*a4f780cdSTaniya Das 
532*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_ufs_phy_phy_aux_clk_src = {
533*a4f780cdSTaniya Das 	.cmd_rcgr = 0x330c0,
534*a4f780cdSTaniya Das 	.mnd_width = 0,
535*a4f780cdSTaniya Das 	.hid_width = 5,
536*a4f780cdSTaniya Das 	.parent_map = ne_gcc_parent_map_5,
537*a4f780cdSTaniya Das 	.freq_tbl = ftbl_ne_gcc_ufs_phy_phy_aux_clk_src,
538*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
539*a4f780cdSTaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
540*a4f780cdSTaniya Das 		.name = "ne_gcc_ufs_phy_phy_aux_clk_src",
541*a4f780cdSTaniya Das 		.parent_data = ne_gcc_parent_data_5,
542*a4f780cdSTaniya Das 		.num_parents = ARRAY_SIZE(ne_gcc_parent_data_5),
543*a4f780cdSTaniya Das 		.flags = CLK_SET_RATE_PARENT,
544*a4f780cdSTaniya Das 		.ops = &clk_rcg2_shared_ops,
545*a4f780cdSTaniya Das 	},
546*a4f780cdSTaniya Das };
547*a4f780cdSTaniya Das 
548*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_ufs_phy_unipro_core_clk_src = {
549*a4f780cdSTaniya Das 	.cmd_rcgr = 0x330a4,
550*a4f780cdSTaniya Das 	.mnd_width = 0,
551*a4f780cdSTaniya Das 	.hid_width = 5,
552*a4f780cdSTaniya Das 	.parent_map = ne_gcc_parent_map_2,
553*a4f780cdSTaniya Das 	.freq_tbl = ftbl_ne_gcc_ufs_phy_axi_clk_src,
554*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
555*a4f780cdSTaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
556*a4f780cdSTaniya Das 		.name = "ne_gcc_ufs_phy_unipro_core_clk_src",
557*a4f780cdSTaniya Das 		.parent_data = ne_gcc_parent_data_2,
558*a4f780cdSTaniya Das 		.num_parents = ARRAY_SIZE(ne_gcc_parent_data_2),
559*a4f780cdSTaniya Das 		.flags = CLK_SET_RATE_PARENT,
560*a4f780cdSTaniya Das 		.ops = &clk_rcg2_shared_ops,
561*a4f780cdSTaniya Das 	},
562*a4f780cdSTaniya Das };
563*a4f780cdSTaniya Das 
564*a4f780cdSTaniya Das static const struct freq_tbl ftbl_ne_gcc_usb20_master_clk_src[] = {
565*a4f780cdSTaniya Das 	F(75000000, P_NE_GCC_GPLL0_OUT_MAIN, 8, 0, 0),
566*a4f780cdSTaniya Das 	F(120000000, P_NE_GCC_GPLL0_OUT_MAIN, 5, 0, 0),
567*a4f780cdSTaniya Das 	{ }
568*a4f780cdSTaniya Das };
569*a4f780cdSTaniya Das 
570*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_usb20_master_clk_src = {
571*a4f780cdSTaniya Das 	.cmd_rcgr = 0x31030,
572*a4f780cdSTaniya Das 	.mnd_width = 8,
573*a4f780cdSTaniya Das 	.hid_width = 5,
574*a4f780cdSTaniya Das 	.parent_map = ne_gcc_parent_map_0,
575*a4f780cdSTaniya Das 	.freq_tbl = ftbl_ne_gcc_usb20_master_clk_src,
576*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
577*a4f780cdSTaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
578*a4f780cdSTaniya Das 		.name = "ne_gcc_usb20_master_clk_src",
579*a4f780cdSTaniya Das 		.parent_data = ne_gcc_parent_data_0,
580*a4f780cdSTaniya Das 		.num_parents = ARRAY_SIZE(ne_gcc_parent_data_0),
581*a4f780cdSTaniya Das 		.flags = CLK_SET_RATE_PARENT,
582*a4f780cdSTaniya Das 		.ops = &clk_rcg2_shared_ops,
583*a4f780cdSTaniya Das 	},
584*a4f780cdSTaniya Das };
585*a4f780cdSTaniya Das 
586*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_usb20_mock_utmi_clk_src = {
587*a4f780cdSTaniya Das 	.cmd_rcgr = 0x31048,
588*a4f780cdSTaniya Das 	.mnd_width = 0,
589*a4f780cdSTaniya Das 	.hid_width = 5,
590*a4f780cdSTaniya Das 	.parent_map = ne_gcc_parent_map_0,
591*a4f780cdSTaniya Das 	.freq_tbl = ftbl_ne_gcc_ufs_phy_phy_aux_clk_src,
592*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
593*a4f780cdSTaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
594*a4f780cdSTaniya Das 		.name = "ne_gcc_usb20_mock_utmi_clk_src",
595*a4f780cdSTaniya Das 		.parent_data = ne_gcc_parent_data_0,
596*a4f780cdSTaniya Das 		.num_parents = ARRAY_SIZE(ne_gcc_parent_data_0),
597*a4f780cdSTaniya Das 		.flags = CLK_SET_RATE_PARENT,
598*a4f780cdSTaniya Das 		.ops = &clk_rcg2_shared_ops,
599*a4f780cdSTaniya Das 	},
600*a4f780cdSTaniya Das };
601*a4f780cdSTaniya Das 
602*a4f780cdSTaniya Das static const struct freq_tbl ftbl_ne_gcc_usb31_prim_master_clk_src[] = {
603*a4f780cdSTaniya Das 	F(85714286, P_NE_GCC_GPLL0_OUT_MAIN, 7, 0, 0),
604*a4f780cdSTaniya Das 	F(133333333, P_NE_GCC_GPLL0_OUT_MAIN, 4.5, 0, 0),
605*a4f780cdSTaniya Das 	F(200000000, P_NE_GCC_GPLL0_OUT_MAIN, 3, 0, 0),
606*a4f780cdSTaniya Das 	F(240000000, P_NE_GCC_GPLL0_OUT_MAIN, 2.5, 0, 0),
607*a4f780cdSTaniya Das 	{ }
608*a4f780cdSTaniya Das };
609*a4f780cdSTaniya Das 
610*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_usb31_prim_master_clk_src = {
611*a4f780cdSTaniya Das 	.cmd_rcgr = 0x2a038,
612*a4f780cdSTaniya Das 	.mnd_width = 8,
613*a4f780cdSTaniya Das 	.hid_width = 5,
614*a4f780cdSTaniya Das 	.parent_map = ne_gcc_parent_map_1,
615*a4f780cdSTaniya Das 	.freq_tbl = ftbl_ne_gcc_usb31_prim_master_clk_src,
616*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
617*a4f780cdSTaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
618*a4f780cdSTaniya Das 		.name = "ne_gcc_usb31_prim_master_clk_src",
619*a4f780cdSTaniya Das 		.parent_data = ne_gcc_parent_data_1,
620*a4f780cdSTaniya Das 		.num_parents = ARRAY_SIZE(ne_gcc_parent_data_1),
621*a4f780cdSTaniya Das 		.flags = CLK_SET_RATE_PARENT,
622*a4f780cdSTaniya Das 		.ops = &clk_rcg2_shared_ops,
623*a4f780cdSTaniya Das 	},
624*a4f780cdSTaniya Das };
625*a4f780cdSTaniya Das 
626*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_usb31_prim_mock_utmi_clk_src = {
627*a4f780cdSTaniya Das 	.cmd_rcgr = 0x2a050,
628*a4f780cdSTaniya Das 	.mnd_width = 0,
629*a4f780cdSTaniya Das 	.hid_width = 5,
630*a4f780cdSTaniya Das 	.parent_map = ne_gcc_parent_map_0,
631*a4f780cdSTaniya Das 	.freq_tbl = ftbl_ne_gcc_ufs_phy_phy_aux_clk_src,
632*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
633*a4f780cdSTaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
634*a4f780cdSTaniya Das 		.name = "ne_gcc_usb31_prim_mock_utmi_clk_src",
635*a4f780cdSTaniya Das 		.parent_data = ne_gcc_parent_data_0,
636*a4f780cdSTaniya Das 		.num_parents = ARRAY_SIZE(ne_gcc_parent_data_0),
637*a4f780cdSTaniya Das 		.flags = CLK_SET_RATE_PARENT,
638*a4f780cdSTaniya Das 		.ops = &clk_rcg2_shared_ops,
639*a4f780cdSTaniya Das 	},
640*a4f780cdSTaniya Das };
641*a4f780cdSTaniya Das 
642*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_usb31_sec_master_clk_src = {
643*a4f780cdSTaniya Das 	.cmd_rcgr = 0x2c038,
644*a4f780cdSTaniya Das 	.mnd_width = 8,
645*a4f780cdSTaniya Das 	.hid_width = 5,
646*a4f780cdSTaniya Das 	.parent_map = ne_gcc_parent_map_0,
647*a4f780cdSTaniya Das 	.freq_tbl = ftbl_ne_gcc_usb31_prim_master_clk_src,
648*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
649*a4f780cdSTaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
650*a4f780cdSTaniya Das 		.name = "ne_gcc_usb31_sec_master_clk_src",
651*a4f780cdSTaniya Das 		.parent_data = ne_gcc_parent_data_0,
652*a4f780cdSTaniya Das 		.num_parents = ARRAY_SIZE(ne_gcc_parent_data_0),
653*a4f780cdSTaniya Das 		.flags = CLK_SET_RATE_PARENT,
654*a4f780cdSTaniya Das 		.ops = &clk_rcg2_shared_ops,
655*a4f780cdSTaniya Das 	},
656*a4f780cdSTaniya Das };
657*a4f780cdSTaniya Das 
658*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_usb31_sec_mock_utmi_clk_src = {
659*a4f780cdSTaniya Das 	.cmd_rcgr = 0x2c050,
660*a4f780cdSTaniya Das 	.mnd_width = 0,
661*a4f780cdSTaniya Das 	.hid_width = 5,
662*a4f780cdSTaniya Das 	.parent_map = ne_gcc_parent_map_0,
663*a4f780cdSTaniya Das 	.freq_tbl = ftbl_ne_gcc_ufs_phy_phy_aux_clk_src,
664*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
665*a4f780cdSTaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
666*a4f780cdSTaniya Das 		.name = "ne_gcc_usb31_sec_mock_utmi_clk_src",
667*a4f780cdSTaniya Das 		.parent_data = ne_gcc_parent_data_0,
668*a4f780cdSTaniya Das 		.num_parents = ARRAY_SIZE(ne_gcc_parent_data_0),
669*a4f780cdSTaniya Das 		.flags = CLK_SET_RATE_PARENT,
670*a4f780cdSTaniya Das 		.ops = &clk_rcg2_shared_ops,
671*a4f780cdSTaniya Das 	},
672*a4f780cdSTaniya Das };
673*a4f780cdSTaniya Das 
674*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_usb3_prim_phy_aux_clk_src = {
675*a4f780cdSTaniya Das 	.cmd_rcgr = 0x2a07c,
676*a4f780cdSTaniya Das 	.mnd_width = 0,
677*a4f780cdSTaniya Das 	.hid_width = 5,
678*a4f780cdSTaniya Das 	.parent_map = ne_gcc_parent_map_3,
679*a4f780cdSTaniya Das 	.freq_tbl = ftbl_ne_gcc_ufs_phy_phy_aux_clk_src,
680*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
681*a4f780cdSTaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
682*a4f780cdSTaniya Das 		.name = "ne_gcc_usb3_prim_phy_aux_clk_src",
683*a4f780cdSTaniya Das 		.parent_data = ne_gcc_parent_data_3,
684*a4f780cdSTaniya Das 		.num_parents = ARRAY_SIZE(ne_gcc_parent_data_3),
685*a4f780cdSTaniya Das 		.flags = CLK_SET_RATE_PARENT,
686*a4f780cdSTaniya Das 		.ops = &clk_rcg2_shared_ops,
687*a4f780cdSTaniya Das 	},
688*a4f780cdSTaniya Das };
689*a4f780cdSTaniya Das 
690*a4f780cdSTaniya Das static struct clk_rcg2 ne_gcc_usb3_sec_phy_aux_clk_src = {
691*a4f780cdSTaniya Das 	.cmd_rcgr = 0x2c07c,
692*a4f780cdSTaniya Das 	.mnd_width = 0,
693*a4f780cdSTaniya Das 	.hid_width = 5,
694*a4f780cdSTaniya Das 	.parent_map = ne_gcc_parent_map_3,
695*a4f780cdSTaniya Das 	.freq_tbl = ftbl_ne_gcc_ufs_phy_phy_aux_clk_src,
696*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
697*a4f780cdSTaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
698*a4f780cdSTaniya Das 		.name = "ne_gcc_usb3_sec_phy_aux_clk_src",
699*a4f780cdSTaniya Das 		.parent_data = ne_gcc_parent_data_3,
700*a4f780cdSTaniya Das 		.num_parents = ARRAY_SIZE(ne_gcc_parent_data_3),
701*a4f780cdSTaniya Das 		.flags = CLK_SET_RATE_PARENT,
702*a4f780cdSTaniya Das 		.ops = &clk_rcg2_shared_ops,
703*a4f780cdSTaniya Das 	},
704*a4f780cdSTaniya Das };
705*a4f780cdSTaniya Das 
706*a4f780cdSTaniya Das static struct clk_regmap_div ne_gcc_usb20_mock_utmi_postdiv_clk_src = {
707*a4f780cdSTaniya Das 	.reg = 0x31060,
708*a4f780cdSTaniya Das 	.shift = 0,
709*a4f780cdSTaniya Das 	.width = 4,
710*a4f780cdSTaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
711*a4f780cdSTaniya Das 		.name = "ne_gcc_usb20_mock_utmi_postdiv_clk_src",
712*a4f780cdSTaniya Das 		.parent_hws = (const struct clk_hw*[]) {
713*a4f780cdSTaniya Das 			&ne_gcc_usb20_mock_utmi_clk_src.clkr.hw,
714*a4f780cdSTaniya Das 		},
715*a4f780cdSTaniya Das 		.num_parents = 1,
716*a4f780cdSTaniya Das 		.flags = CLK_SET_RATE_PARENT,
717*a4f780cdSTaniya Das 		.ops = &clk_regmap_div_ro_ops,
718*a4f780cdSTaniya Das 	},
719*a4f780cdSTaniya Das };
720*a4f780cdSTaniya Das 
721*a4f780cdSTaniya Das static struct clk_regmap_div ne_gcc_usb31_prim_mock_utmi_postdiv_clk_src = {
722*a4f780cdSTaniya Das 	.reg = 0x2a068,
723*a4f780cdSTaniya Das 	.shift = 0,
724*a4f780cdSTaniya Das 	.width = 4,
725*a4f780cdSTaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
726*a4f780cdSTaniya Das 		.name = "ne_gcc_usb31_prim_mock_utmi_postdiv_clk_src",
727*a4f780cdSTaniya Das 		.parent_hws = (const struct clk_hw*[]) {
728*a4f780cdSTaniya Das 			&ne_gcc_usb31_prim_mock_utmi_clk_src.clkr.hw,
729*a4f780cdSTaniya Das 		},
730*a4f780cdSTaniya Das 		.num_parents = 1,
731*a4f780cdSTaniya Das 		.flags = CLK_SET_RATE_PARENT,
732*a4f780cdSTaniya Das 		.ops = &clk_regmap_div_ro_ops,
733*a4f780cdSTaniya Das 	},
734*a4f780cdSTaniya Das };
735*a4f780cdSTaniya Das 
736*a4f780cdSTaniya Das static struct clk_regmap_div ne_gcc_usb31_sec_mock_utmi_postdiv_clk_src = {
737*a4f780cdSTaniya Das 	.reg = 0x2c068,
738*a4f780cdSTaniya Das 	.shift = 0,
739*a4f780cdSTaniya Das 	.width = 4,
740*a4f780cdSTaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
741*a4f780cdSTaniya Das 		.name = "ne_gcc_usb31_sec_mock_utmi_postdiv_clk_src",
742*a4f780cdSTaniya Das 		.parent_hws = (const struct clk_hw*[]) {
743*a4f780cdSTaniya Das 			&ne_gcc_usb31_sec_mock_utmi_clk_src.clkr.hw,
744*a4f780cdSTaniya Das 		},
745*a4f780cdSTaniya Das 		.num_parents = 1,
746*a4f780cdSTaniya Das 		.flags = CLK_SET_RATE_PARENT,
747*a4f780cdSTaniya Das 		.ops = &clk_regmap_div_ro_ops,
748*a4f780cdSTaniya Das 	},
749*a4f780cdSTaniya Das };
750*a4f780cdSTaniya Das 
751*a4f780cdSTaniya Das static struct clk_branch ne_gcc_aggre_noc_ufs_phy_axi_clk = {
752*a4f780cdSTaniya Das 	.halt_reg = 0x330f4,
753*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
754*a4f780cdSTaniya Das 	.hwcg_reg = 0x330f4,
755*a4f780cdSTaniya Das 	.hwcg_bit = 1,
756*a4f780cdSTaniya Das 	.clkr = {
757*a4f780cdSTaniya Das 		.enable_reg = 0x330f4,
758*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
759*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
760*a4f780cdSTaniya Das 			.name = "ne_gcc_aggre_noc_ufs_phy_axi_clk",
761*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
762*a4f780cdSTaniya Das 				&ne_gcc_ufs_phy_axi_clk_src.clkr.hw,
763*a4f780cdSTaniya Das 			},
764*a4f780cdSTaniya Das 			.num_parents = 1,
765*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
766*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
767*a4f780cdSTaniya Das 		},
768*a4f780cdSTaniya Das 	},
769*a4f780cdSTaniya Das };
770*a4f780cdSTaniya Das 
771*a4f780cdSTaniya Das static struct clk_branch ne_gcc_aggre_noc_usb2_axi_clk = {
772*a4f780cdSTaniya Das 	.halt_reg = 0x31068,
773*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
774*a4f780cdSTaniya Das 	.hwcg_reg = 0x31068,
775*a4f780cdSTaniya Das 	.hwcg_bit = 1,
776*a4f780cdSTaniya Das 	.clkr = {
777*a4f780cdSTaniya Das 		.enable_reg = 0x31068,
778*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
779*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
780*a4f780cdSTaniya Das 			.name = "ne_gcc_aggre_noc_usb2_axi_clk",
781*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
782*a4f780cdSTaniya Das 				&ne_gcc_usb20_master_clk_src.clkr.hw,
783*a4f780cdSTaniya Das 			},
784*a4f780cdSTaniya Das 			.num_parents = 1,
785*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
786*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
787*a4f780cdSTaniya Das 		},
788*a4f780cdSTaniya Das 	},
789*a4f780cdSTaniya Das };
790*a4f780cdSTaniya Das 
791*a4f780cdSTaniya Das static struct clk_branch ne_gcc_aggre_noc_usb3_prim_axi_clk = {
792*a4f780cdSTaniya Das 	.halt_reg = 0x2a098,
793*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
794*a4f780cdSTaniya Das 	.hwcg_reg = 0x2a098,
795*a4f780cdSTaniya Das 	.hwcg_bit = 1,
796*a4f780cdSTaniya Das 	.clkr = {
797*a4f780cdSTaniya Das 		.enable_reg = 0x2a098,
798*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
799*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
800*a4f780cdSTaniya Das 			.name = "ne_gcc_aggre_noc_usb3_prim_axi_clk",
801*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
802*a4f780cdSTaniya Das 				&ne_gcc_usb31_prim_master_clk_src.clkr.hw,
803*a4f780cdSTaniya Das 			},
804*a4f780cdSTaniya Das 			.num_parents = 1,
805*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
806*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
807*a4f780cdSTaniya Das 		},
808*a4f780cdSTaniya Das 	},
809*a4f780cdSTaniya Das };
810*a4f780cdSTaniya Das 
811*a4f780cdSTaniya Das static struct clk_branch ne_gcc_aggre_noc_usb3_sec_axi_clk = {
812*a4f780cdSTaniya Das 	.halt_reg = 0x2c098,
813*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
814*a4f780cdSTaniya Das 	.hwcg_reg = 0x2c098,
815*a4f780cdSTaniya Das 	.hwcg_bit = 1,
816*a4f780cdSTaniya Das 	.clkr = {
817*a4f780cdSTaniya Das 		.enable_reg = 0x2c098,
818*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
819*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
820*a4f780cdSTaniya Das 			.name = "ne_gcc_aggre_noc_usb3_sec_axi_clk",
821*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
822*a4f780cdSTaniya Das 				&ne_gcc_usb31_sec_master_clk_src.clkr.hw,
823*a4f780cdSTaniya Das 			},
824*a4f780cdSTaniya Das 			.num_parents = 1,
825*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
826*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
827*a4f780cdSTaniya Das 		},
828*a4f780cdSTaniya Das 	},
829*a4f780cdSTaniya Das };
830*a4f780cdSTaniya Das 
831*a4f780cdSTaniya Das static struct clk_branch ne_gcc_ahb2phy_clk = {
832*a4f780cdSTaniya Das 	.halt_reg = 0x30004,
833*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
834*a4f780cdSTaniya Das 	.hwcg_reg = 0x30004,
835*a4f780cdSTaniya Das 	.hwcg_bit = 1,
836*a4f780cdSTaniya Das 	.clkr = {
837*a4f780cdSTaniya Das 		.enable_reg = 0x30004,
838*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
839*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
840*a4f780cdSTaniya Das 			.name = "ne_gcc_ahb2phy_clk",
841*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
842*a4f780cdSTaniya Das 		},
843*a4f780cdSTaniya Das 	},
844*a4f780cdSTaniya Das };
845*a4f780cdSTaniya Das 
846*a4f780cdSTaniya Das static struct clk_branch ne_gcc_cnoc_usb2_axi_clk = {
847*a4f780cdSTaniya Das 	.halt_reg = 0x31064,
848*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
849*a4f780cdSTaniya Das 	.hwcg_reg = 0x31064,
850*a4f780cdSTaniya Das 	.hwcg_bit = 1,
851*a4f780cdSTaniya Das 	.clkr = {
852*a4f780cdSTaniya Das 		.enable_reg = 0x31064,
853*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
854*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
855*a4f780cdSTaniya Das 			.name = "ne_gcc_cnoc_usb2_axi_clk",
856*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
857*a4f780cdSTaniya Das 				&ne_gcc_usb20_master_clk_src.clkr.hw,
858*a4f780cdSTaniya Das 			},
859*a4f780cdSTaniya Das 			.num_parents = 1,
860*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
861*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
862*a4f780cdSTaniya Das 		},
863*a4f780cdSTaniya Das 	},
864*a4f780cdSTaniya Das };
865*a4f780cdSTaniya Das 
866*a4f780cdSTaniya Das static struct clk_branch ne_gcc_cnoc_usb3_prim_axi_clk = {
867*a4f780cdSTaniya Das 	.halt_reg = 0x2a094,
868*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
869*a4f780cdSTaniya Das 	.hwcg_reg = 0x2a094,
870*a4f780cdSTaniya Das 	.hwcg_bit = 1,
871*a4f780cdSTaniya Das 	.clkr = {
872*a4f780cdSTaniya Das 		.enable_reg = 0x2a094,
873*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
874*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
875*a4f780cdSTaniya Das 			.name = "ne_gcc_cnoc_usb3_prim_axi_clk",
876*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
877*a4f780cdSTaniya Das 				&ne_gcc_usb31_prim_master_clk_src.clkr.hw,
878*a4f780cdSTaniya Das 			},
879*a4f780cdSTaniya Das 			.num_parents = 1,
880*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
881*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
882*a4f780cdSTaniya Das 		},
883*a4f780cdSTaniya Das 	},
884*a4f780cdSTaniya Das };
885*a4f780cdSTaniya Das 
886*a4f780cdSTaniya Das static struct clk_branch ne_gcc_cnoc_usb3_sec_axi_clk = {
887*a4f780cdSTaniya Das 	.halt_reg = 0x2c094,
888*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
889*a4f780cdSTaniya Das 	.hwcg_reg = 0x2c094,
890*a4f780cdSTaniya Das 	.hwcg_bit = 1,
891*a4f780cdSTaniya Das 	.clkr = {
892*a4f780cdSTaniya Das 		.enable_reg = 0x2c094,
893*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
894*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
895*a4f780cdSTaniya Das 			.name = "ne_gcc_cnoc_usb3_sec_axi_clk",
896*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
897*a4f780cdSTaniya Das 				&ne_gcc_usb31_sec_master_clk_src.clkr.hw,
898*a4f780cdSTaniya Das 			},
899*a4f780cdSTaniya Das 			.num_parents = 1,
900*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
901*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
902*a4f780cdSTaniya Das 		},
903*a4f780cdSTaniya Das 	},
904*a4f780cdSTaniya Das };
905*a4f780cdSTaniya Das 
906*a4f780cdSTaniya Das static struct clk_branch ne_gcc_frq_measure_ref_clk = {
907*a4f780cdSTaniya Das 	.halt_reg = 0x20008,
908*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
909*a4f780cdSTaniya Das 	.clkr = {
910*a4f780cdSTaniya Das 		.enable_reg = 0x20008,
911*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
912*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
913*a4f780cdSTaniya Das 			.name = "ne_gcc_frq_measure_ref_clk",
914*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
915*a4f780cdSTaniya Das 		},
916*a4f780cdSTaniya Das 	},
917*a4f780cdSTaniya Das };
918*a4f780cdSTaniya Das 
919*a4f780cdSTaniya Das static struct clk_branch ne_gcc_gp1_clk = {
920*a4f780cdSTaniya Das 	.halt_reg = 0x21000,
921*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
922*a4f780cdSTaniya Das 	.clkr = {
923*a4f780cdSTaniya Das 		.enable_reg = 0x21000,
924*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
925*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
926*a4f780cdSTaniya Das 			.name = "ne_gcc_gp1_clk",
927*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
928*a4f780cdSTaniya Das 				&ne_gcc_gp1_clk_src.clkr.hw,
929*a4f780cdSTaniya Das 			},
930*a4f780cdSTaniya Das 			.num_parents = 1,
931*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
932*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
933*a4f780cdSTaniya Das 		},
934*a4f780cdSTaniya Das 	},
935*a4f780cdSTaniya Das };
936*a4f780cdSTaniya Das 
937*a4f780cdSTaniya Das static struct clk_branch ne_gcc_gp2_clk = {
938*a4f780cdSTaniya Das 	.halt_reg = 0x22000,
939*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
940*a4f780cdSTaniya Das 	.clkr = {
941*a4f780cdSTaniya Das 		.enable_reg = 0x22000,
942*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
943*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
944*a4f780cdSTaniya Das 			.name = "ne_gcc_gp2_clk",
945*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
946*a4f780cdSTaniya Das 				&ne_gcc_gp2_clk_src.clkr.hw,
947*a4f780cdSTaniya Das 			},
948*a4f780cdSTaniya Das 			.num_parents = 1,
949*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
950*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
951*a4f780cdSTaniya Das 		},
952*a4f780cdSTaniya Das 	},
953*a4f780cdSTaniya Das };
954*a4f780cdSTaniya Das 
955*a4f780cdSTaniya Das static struct clk_branch ne_gcc_gpu_2_cfg_clk = {
956*a4f780cdSTaniya Das 	.halt_reg = 0x34004,
957*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
958*a4f780cdSTaniya Das 	.hwcg_reg = 0x34004,
959*a4f780cdSTaniya Das 	.hwcg_bit = 1,
960*a4f780cdSTaniya Das 	.clkr = {
961*a4f780cdSTaniya Das 		.enable_reg = 0x34004,
962*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
963*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
964*a4f780cdSTaniya Das 			.name = "ne_gcc_gpu_2_cfg_clk",
965*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
966*a4f780cdSTaniya Das 		},
967*a4f780cdSTaniya Das 	},
968*a4f780cdSTaniya Das };
969*a4f780cdSTaniya Das 
970*a4f780cdSTaniya Das static struct clk_branch ne_gcc_gpu_2_gpll0_clk_src = {
971*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_DELAY,
972*a4f780cdSTaniya Das 	.clkr = {
973*a4f780cdSTaniya Das 		.enable_reg = 0x57000,
974*a4f780cdSTaniya Das 		.enable_mask = BIT(19),
975*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
976*a4f780cdSTaniya Das 			.name = "ne_gcc_gpu_2_gpll0_clk_src",
977*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
978*a4f780cdSTaniya Das 				&ne_gcc_gpll0.clkr.hw,
979*a4f780cdSTaniya Das 			},
980*a4f780cdSTaniya Das 			.num_parents = 1,
981*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
982*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
983*a4f780cdSTaniya Das 		},
984*a4f780cdSTaniya Das 	},
985*a4f780cdSTaniya Das };
986*a4f780cdSTaniya Das 
987*a4f780cdSTaniya Das static struct clk_branch ne_gcc_gpu_2_gpll0_div_clk_src = {
988*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_DELAY,
989*a4f780cdSTaniya Das 	.clkr = {
990*a4f780cdSTaniya Das 		.enable_reg = 0x57000,
991*a4f780cdSTaniya Das 		.enable_mask = BIT(20),
992*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
993*a4f780cdSTaniya Das 			.name = "ne_gcc_gpu_2_gpll0_div_clk_src",
994*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
995*a4f780cdSTaniya Das 				&ne_gcc_gpll0_out_even.clkr.hw,
996*a4f780cdSTaniya Das 			},
997*a4f780cdSTaniya Das 			.num_parents = 1,
998*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
999*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1000*a4f780cdSTaniya Das 		},
1001*a4f780cdSTaniya Das 	},
1002*a4f780cdSTaniya Das };
1003*a4f780cdSTaniya Das 
1004*a4f780cdSTaniya Das static struct clk_branch ne_gcc_gpu_2_hscnoc_gfx_clk = {
1005*a4f780cdSTaniya Das 	.halt_reg = 0x34014,
1006*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1007*a4f780cdSTaniya Das 	.hwcg_reg = 0x34014,
1008*a4f780cdSTaniya Das 	.hwcg_bit = 1,
1009*a4f780cdSTaniya Das 	.clkr = {
1010*a4f780cdSTaniya Das 		.enable_reg = 0x34014,
1011*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
1012*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1013*a4f780cdSTaniya Das 			.name = "ne_gcc_gpu_2_hscnoc_gfx_clk",
1014*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1015*a4f780cdSTaniya Das 		},
1016*a4f780cdSTaniya Das 	},
1017*a4f780cdSTaniya Das };
1018*a4f780cdSTaniya Das 
1019*a4f780cdSTaniya Das static struct clk_branch ne_gcc_gpu_2_smmu_vote_clk = {
1020*a4f780cdSTaniya Das 	.halt_reg = 0x57028,
1021*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1022*a4f780cdSTaniya Das 	.clkr = {
1023*a4f780cdSTaniya Das 		.enable_reg = 0x57028,
1024*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
1025*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1026*a4f780cdSTaniya Das 			.name = "ne_gcc_gpu_2_smmu_vote_clk",
1027*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1028*a4f780cdSTaniya Das 		},
1029*a4f780cdSTaniya Das 	},
1030*a4f780cdSTaniya Das };
1031*a4f780cdSTaniya Das 
1032*a4f780cdSTaniya Das static struct clk_branch ne_gcc_qupv3_wrap2_core_2x_clk = {
1033*a4f780cdSTaniya Das 	.halt_reg = 0x38020,
1034*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1035*a4f780cdSTaniya Das 	.clkr = {
1036*a4f780cdSTaniya Das 		.enable_reg = 0x57008,
1037*a4f780cdSTaniya Das 		.enable_mask = BIT(1),
1038*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1039*a4f780cdSTaniya Das 			.name = "ne_gcc_qupv3_wrap2_core_2x_clk",
1040*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1041*a4f780cdSTaniya Das 		},
1042*a4f780cdSTaniya Das 	},
1043*a4f780cdSTaniya Das };
1044*a4f780cdSTaniya Das 
1045*a4f780cdSTaniya Das static struct clk_branch ne_gcc_qupv3_wrap2_core_clk = {
1046*a4f780cdSTaniya Das 	.halt_reg = 0x3800c,
1047*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1048*a4f780cdSTaniya Das 	.clkr = {
1049*a4f780cdSTaniya Das 		.enable_reg = 0x57008,
1050*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
1051*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1052*a4f780cdSTaniya Das 			.name = "ne_gcc_qupv3_wrap2_core_clk",
1053*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1054*a4f780cdSTaniya Das 		},
1055*a4f780cdSTaniya Das 	},
1056*a4f780cdSTaniya Das };
1057*a4f780cdSTaniya Das 
1058*a4f780cdSTaniya Das static struct clk_branch ne_gcc_qupv3_wrap2_m_ahb_clk = {
1059*a4f780cdSTaniya Das 	.halt_reg = 0x38004,
1060*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1061*a4f780cdSTaniya Das 	.hwcg_reg = 0x38004,
1062*a4f780cdSTaniya Das 	.hwcg_bit = 1,
1063*a4f780cdSTaniya Das 	.clkr = {
1064*a4f780cdSTaniya Das 		.enable_reg = 0x57000,
1065*a4f780cdSTaniya Das 		.enable_mask = BIT(30),
1066*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1067*a4f780cdSTaniya Das 			.name = "ne_gcc_qupv3_wrap2_m_ahb_clk",
1068*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1069*a4f780cdSTaniya Das 		},
1070*a4f780cdSTaniya Das 	},
1071*a4f780cdSTaniya Das };
1072*a4f780cdSTaniya Das 
1073*a4f780cdSTaniya Das static struct clk_branch ne_gcc_qupv3_wrap2_s0_clk = {
1074*a4f780cdSTaniya Das 	.halt_reg = 0x3815c,
1075*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1076*a4f780cdSTaniya Das 	.clkr = {
1077*a4f780cdSTaniya Das 		.enable_reg = 0x57008,
1078*a4f780cdSTaniya Das 		.enable_mask = BIT(2),
1079*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1080*a4f780cdSTaniya Das 			.name = "ne_gcc_qupv3_wrap2_s0_clk",
1081*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1082*a4f780cdSTaniya Das 				&ne_gcc_qupv3_wrap2_s0_clk_src.clkr.hw,
1083*a4f780cdSTaniya Das 			},
1084*a4f780cdSTaniya Das 			.num_parents = 1,
1085*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1086*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1087*a4f780cdSTaniya Das 		},
1088*a4f780cdSTaniya Das 	},
1089*a4f780cdSTaniya Das };
1090*a4f780cdSTaniya Das 
1091*a4f780cdSTaniya Das static struct clk_branch ne_gcc_qupv3_wrap2_s1_clk = {
1092*a4f780cdSTaniya Das 	.halt_reg = 0x38298,
1093*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1094*a4f780cdSTaniya Das 	.clkr = {
1095*a4f780cdSTaniya Das 		.enable_reg = 0x57008,
1096*a4f780cdSTaniya Das 		.enable_mask = BIT(3),
1097*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1098*a4f780cdSTaniya Das 			.name = "ne_gcc_qupv3_wrap2_s1_clk",
1099*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1100*a4f780cdSTaniya Das 				&ne_gcc_qupv3_wrap2_s1_clk_src.clkr.hw,
1101*a4f780cdSTaniya Das 			},
1102*a4f780cdSTaniya Das 			.num_parents = 1,
1103*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1104*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1105*a4f780cdSTaniya Das 		},
1106*a4f780cdSTaniya Das 	},
1107*a4f780cdSTaniya Das };
1108*a4f780cdSTaniya Das 
1109*a4f780cdSTaniya Das static struct clk_branch ne_gcc_qupv3_wrap2_s2_clk = {
1110*a4f780cdSTaniya Das 	.halt_reg = 0x383d4,
1111*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1112*a4f780cdSTaniya Das 	.clkr = {
1113*a4f780cdSTaniya Das 		.enable_reg = 0x57008,
1114*a4f780cdSTaniya Das 		.enable_mask = BIT(4),
1115*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1116*a4f780cdSTaniya Das 			.name = "ne_gcc_qupv3_wrap2_s2_clk",
1117*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1118*a4f780cdSTaniya Das 				&ne_gcc_qupv3_wrap2_s2_clk_src.clkr.hw,
1119*a4f780cdSTaniya Das 			},
1120*a4f780cdSTaniya Das 			.num_parents = 1,
1121*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1122*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1123*a4f780cdSTaniya Das 		},
1124*a4f780cdSTaniya Das 	},
1125*a4f780cdSTaniya Das };
1126*a4f780cdSTaniya Das 
1127*a4f780cdSTaniya Das static struct clk_branch ne_gcc_qupv3_wrap2_s3_clk = {
1128*a4f780cdSTaniya Das 	.halt_reg = 0x38510,
1129*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1130*a4f780cdSTaniya Das 	.clkr = {
1131*a4f780cdSTaniya Das 		.enable_reg = 0x57008,
1132*a4f780cdSTaniya Das 		.enable_mask = BIT(5),
1133*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1134*a4f780cdSTaniya Das 			.name = "ne_gcc_qupv3_wrap2_s3_clk",
1135*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1136*a4f780cdSTaniya Das 				&ne_gcc_qupv3_wrap2_s3_clk_src.clkr.hw,
1137*a4f780cdSTaniya Das 			},
1138*a4f780cdSTaniya Das 			.num_parents = 1,
1139*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1140*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1141*a4f780cdSTaniya Das 		},
1142*a4f780cdSTaniya Das 	},
1143*a4f780cdSTaniya Das };
1144*a4f780cdSTaniya Das 
1145*a4f780cdSTaniya Das static struct clk_branch ne_gcc_qupv3_wrap2_s4_clk = {
1146*a4f780cdSTaniya Das 	.halt_reg = 0x3864c,
1147*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1148*a4f780cdSTaniya Das 	.clkr = {
1149*a4f780cdSTaniya Das 		.enable_reg = 0x57008,
1150*a4f780cdSTaniya Das 		.enable_mask = BIT(6),
1151*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1152*a4f780cdSTaniya Das 			.name = "ne_gcc_qupv3_wrap2_s4_clk",
1153*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1154*a4f780cdSTaniya Das 				&ne_gcc_qupv3_wrap2_s4_clk_src.clkr.hw,
1155*a4f780cdSTaniya Das 			},
1156*a4f780cdSTaniya Das 			.num_parents = 1,
1157*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1158*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1159*a4f780cdSTaniya Das 		},
1160*a4f780cdSTaniya Das 	},
1161*a4f780cdSTaniya Das };
1162*a4f780cdSTaniya Das 
1163*a4f780cdSTaniya Das static struct clk_branch ne_gcc_qupv3_wrap2_s5_clk = {
1164*a4f780cdSTaniya Das 	.halt_reg = 0x38788,
1165*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1166*a4f780cdSTaniya Das 	.clkr = {
1167*a4f780cdSTaniya Das 		.enable_reg = 0x57008,
1168*a4f780cdSTaniya Das 		.enable_mask = BIT(7),
1169*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1170*a4f780cdSTaniya Das 			.name = "ne_gcc_qupv3_wrap2_s5_clk",
1171*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1172*a4f780cdSTaniya Das 				&ne_gcc_qupv3_wrap2_s5_clk_src.clkr.hw,
1173*a4f780cdSTaniya Das 			},
1174*a4f780cdSTaniya Das 			.num_parents = 1,
1175*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1176*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1177*a4f780cdSTaniya Das 		},
1178*a4f780cdSTaniya Das 	},
1179*a4f780cdSTaniya Das };
1180*a4f780cdSTaniya Das 
1181*a4f780cdSTaniya Das static struct clk_branch ne_gcc_qupv3_wrap2_s6_clk = {
1182*a4f780cdSTaniya Das 	.halt_reg = 0x388c4,
1183*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1184*a4f780cdSTaniya Das 	.clkr = {
1185*a4f780cdSTaniya Das 		.enable_reg = 0x57008,
1186*a4f780cdSTaniya Das 		.enable_mask = BIT(8),
1187*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1188*a4f780cdSTaniya Das 			.name = "ne_gcc_qupv3_wrap2_s6_clk",
1189*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1190*a4f780cdSTaniya Das 				&ne_gcc_qupv3_wrap2_s6_clk_src.clkr.hw,
1191*a4f780cdSTaniya Das 			},
1192*a4f780cdSTaniya Das 			.num_parents = 1,
1193*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1194*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1195*a4f780cdSTaniya Das 		},
1196*a4f780cdSTaniya Das 	},
1197*a4f780cdSTaniya Das };
1198*a4f780cdSTaniya Das 
1199*a4f780cdSTaniya Das static struct clk_branch ne_gcc_qupv3_wrap2_s_ahb_clk = {
1200*a4f780cdSTaniya Das 	.halt_reg = 0x38008,
1201*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1202*a4f780cdSTaniya Das 	.hwcg_reg = 0x38008,
1203*a4f780cdSTaniya Das 	.hwcg_bit = 1,
1204*a4f780cdSTaniya Das 	.clkr = {
1205*a4f780cdSTaniya Das 		.enable_reg = 0x57000,
1206*a4f780cdSTaniya Das 		.enable_mask = BIT(31),
1207*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1208*a4f780cdSTaniya Das 			.name = "ne_gcc_qupv3_wrap2_s_ahb_clk",
1209*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1210*a4f780cdSTaniya Das 		},
1211*a4f780cdSTaniya Das 	},
1212*a4f780cdSTaniya Das };
1213*a4f780cdSTaniya Das 
1214*a4f780cdSTaniya Das static struct clk_branch ne_gcc_sdcc4_apps_clk = {
1215*a4f780cdSTaniya Das 	.halt_reg = 0x18004,
1216*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
1217*a4f780cdSTaniya Das 	.clkr = {
1218*a4f780cdSTaniya Das 		.enable_reg = 0x18004,
1219*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
1220*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1221*a4f780cdSTaniya Das 			.name = "ne_gcc_sdcc4_apps_clk",
1222*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1223*a4f780cdSTaniya Das 				&ne_gcc_sdcc4_apps_clk_src.clkr.hw,
1224*a4f780cdSTaniya Das 			},
1225*a4f780cdSTaniya Das 			.num_parents = 1,
1226*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1227*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1228*a4f780cdSTaniya Das 		},
1229*a4f780cdSTaniya Das 	},
1230*a4f780cdSTaniya Das };
1231*a4f780cdSTaniya Das 
1232*a4f780cdSTaniya Das static struct clk_branch ne_gcc_sdcc4_axi_clk = {
1233*a4f780cdSTaniya Das 	.halt_reg = 0x18014,
1234*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
1235*a4f780cdSTaniya Das 	.clkr = {
1236*a4f780cdSTaniya Das 		.enable_reg = 0x18014,
1237*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
1238*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1239*a4f780cdSTaniya Das 			.name = "ne_gcc_sdcc4_axi_clk",
1240*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1241*a4f780cdSTaniya Das 		},
1242*a4f780cdSTaniya Das 	},
1243*a4f780cdSTaniya Das };
1244*a4f780cdSTaniya Das 
1245*a4f780cdSTaniya Das static struct clk_branch ne_gcc_ufs_phy_ahb_clk = {
1246*a4f780cdSTaniya Das 	.halt_reg = 0x33028,
1247*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1248*a4f780cdSTaniya Das 	.hwcg_reg = 0x33028,
1249*a4f780cdSTaniya Das 	.hwcg_bit = 1,
1250*a4f780cdSTaniya Das 	.clkr = {
1251*a4f780cdSTaniya Das 		.enable_reg = 0x33028,
1252*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
1253*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1254*a4f780cdSTaniya Das 			.name = "ne_gcc_ufs_phy_ahb_clk",
1255*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1256*a4f780cdSTaniya Das 		},
1257*a4f780cdSTaniya Das 	},
1258*a4f780cdSTaniya Das };
1259*a4f780cdSTaniya Das 
1260*a4f780cdSTaniya Das static struct clk_branch ne_gcc_ufs_phy_axi_clk = {
1261*a4f780cdSTaniya Das 	.halt_reg = 0x33018,
1262*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1263*a4f780cdSTaniya Das 	.hwcg_reg = 0x33018,
1264*a4f780cdSTaniya Das 	.hwcg_bit = 1,
1265*a4f780cdSTaniya Das 	.clkr = {
1266*a4f780cdSTaniya Das 		.enable_reg = 0x33018,
1267*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
1268*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1269*a4f780cdSTaniya Das 			.name = "ne_gcc_ufs_phy_axi_clk",
1270*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1271*a4f780cdSTaniya Das 				&ne_gcc_ufs_phy_axi_clk_src.clkr.hw,
1272*a4f780cdSTaniya Das 			},
1273*a4f780cdSTaniya Das 			.num_parents = 1,
1274*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1275*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1276*a4f780cdSTaniya Das 		},
1277*a4f780cdSTaniya Das 	},
1278*a4f780cdSTaniya Das };
1279*a4f780cdSTaniya Das 
1280*a4f780cdSTaniya Das static struct clk_branch ne_gcc_ufs_phy_ice_core_clk = {
1281*a4f780cdSTaniya Das 	.halt_reg = 0x3307c,
1282*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1283*a4f780cdSTaniya Das 	.hwcg_reg = 0x3307c,
1284*a4f780cdSTaniya Das 	.hwcg_bit = 1,
1285*a4f780cdSTaniya Das 	.clkr = {
1286*a4f780cdSTaniya Das 		.enable_reg = 0x3307c,
1287*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
1288*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1289*a4f780cdSTaniya Das 			.name = "ne_gcc_ufs_phy_ice_core_clk",
1290*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1291*a4f780cdSTaniya Das 				&ne_gcc_ufs_phy_ice_core_clk_src.clkr.hw,
1292*a4f780cdSTaniya Das 			},
1293*a4f780cdSTaniya Das 			.num_parents = 1,
1294*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1295*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1296*a4f780cdSTaniya Das 		},
1297*a4f780cdSTaniya Das 	},
1298*a4f780cdSTaniya Das };
1299*a4f780cdSTaniya Das 
1300*a4f780cdSTaniya Das static struct clk_branch ne_gcc_ufs_phy_phy_aux_clk = {
1301*a4f780cdSTaniya Das 	.halt_reg = 0x330bc,
1302*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1303*a4f780cdSTaniya Das 	.hwcg_reg = 0x330bc,
1304*a4f780cdSTaniya Das 	.hwcg_bit = 1,
1305*a4f780cdSTaniya Das 	.clkr = {
1306*a4f780cdSTaniya Das 		.enable_reg = 0x330bc,
1307*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
1308*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1309*a4f780cdSTaniya Das 			.name = "ne_gcc_ufs_phy_phy_aux_clk",
1310*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1311*a4f780cdSTaniya Das 				&ne_gcc_ufs_phy_phy_aux_clk_src.clkr.hw,
1312*a4f780cdSTaniya Das 			},
1313*a4f780cdSTaniya Das 			.num_parents = 1,
1314*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1315*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1316*a4f780cdSTaniya Das 		},
1317*a4f780cdSTaniya Das 	},
1318*a4f780cdSTaniya Das };
1319*a4f780cdSTaniya Das 
1320*a4f780cdSTaniya Das static struct clk_branch ne_gcc_ufs_phy_rx_symbol_0_clk = {
1321*a4f780cdSTaniya Das 	.halt_reg = 0x33030,
1322*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_DELAY,
1323*a4f780cdSTaniya Das 	.clkr = {
1324*a4f780cdSTaniya Das 		.enable_reg = 0x33030,
1325*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
1326*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1327*a4f780cdSTaniya Das 			.name = "ne_gcc_ufs_phy_rx_symbol_0_clk",
1328*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1329*a4f780cdSTaniya Das 				&ne_gcc_ufs_phy_rx_symbol_0_clk_src.clkr.hw,
1330*a4f780cdSTaniya Das 			},
1331*a4f780cdSTaniya Das 			.num_parents = 1,
1332*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1333*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1334*a4f780cdSTaniya Das 		},
1335*a4f780cdSTaniya Das 	},
1336*a4f780cdSTaniya Das };
1337*a4f780cdSTaniya Das 
1338*a4f780cdSTaniya Das static struct clk_branch ne_gcc_ufs_phy_rx_symbol_1_clk = {
1339*a4f780cdSTaniya Das 	.halt_reg = 0x330d8,
1340*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_DELAY,
1341*a4f780cdSTaniya Das 	.clkr = {
1342*a4f780cdSTaniya Das 		.enable_reg = 0x330d8,
1343*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
1344*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1345*a4f780cdSTaniya Das 			.name = "ne_gcc_ufs_phy_rx_symbol_1_clk",
1346*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1347*a4f780cdSTaniya Das 				&ne_gcc_ufs_phy_rx_symbol_1_clk_src.clkr.hw,
1348*a4f780cdSTaniya Das 			},
1349*a4f780cdSTaniya Das 			.num_parents = 1,
1350*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1351*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1352*a4f780cdSTaniya Das 		},
1353*a4f780cdSTaniya Das 	},
1354*a4f780cdSTaniya Das };
1355*a4f780cdSTaniya Das 
1356*a4f780cdSTaniya Das static struct clk_branch ne_gcc_ufs_phy_tx_symbol_0_clk = {
1357*a4f780cdSTaniya Das 	.halt_reg = 0x3302c,
1358*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_DELAY,
1359*a4f780cdSTaniya Das 	.clkr = {
1360*a4f780cdSTaniya Das 		.enable_reg = 0x3302c,
1361*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
1362*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1363*a4f780cdSTaniya Das 			.name = "ne_gcc_ufs_phy_tx_symbol_0_clk",
1364*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1365*a4f780cdSTaniya Das 				&ne_gcc_ufs_phy_tx_symbol_0_clk_src.clkr.hw,
1366*a4f780cdSTaniya Das 			},
1367*a4f780cdSTaniya Das 			.num_parents = 1,
1368*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1369*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1370*a4f780cdSTaniya Das 		},
1371*a4f780cdSTaniya Das 	},
1372*a4f780cdSTaniya Das };
1373*a4f780cdSTaniya Das 
1374*a4f780cdSTaniya Das static struct clk_branch ne_gcc_ufs_phy_unipro_core_clk = {
1375*a4f780cdSTaniya Das 	.halt_reg = 0x3306c,
1376*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1377*a4f780cdSTaniya Das 	.hwcg_reg = 0x3306c,
1378*a4f780cdSTaniya Das 	.hwcg_bit = 1,
1379*a4f780cdSTaniya Das 	.clkr = {
1380*a4f780cdSTaniya Das 		.enable_reg = 0x3306c,
1381*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
1382*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1383*a4f780cdSTaniya Das 			.name = "ne_gcc_ufs_phy_unipro_core_clk",
1384*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1385*a4f780cdSTaniya Das 				&ne_gcc_ufs_phy_unipro_core_clk_src.clkr.hw,
1386*a4f780cdSTaniya Das 			},
1387*a4f780cdSTaniya Das 			.num_parents = 1,
1388*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1389*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1390*a4f780cdSTaniya Das 		},
1391*a4f780cdSTaniya Das 	},
1392*a4f780cdSTaniya Das };
1393*a4f780cdSTaniya Das 
1394*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb20_master_clk = {
1395*a4f780cdSTaniya Das 	.halt_reg = 0x31018,
1396*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
1397*a4f780cdSTaniya Das 	.clkr = {
1398*a4f780cdSTaniya Das 		.enable_reg = 0x31018,
1399*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
1400*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1401*a4f780cdSTaniya Das 			.name = "ne_gcc_usb20_master_clk",
1402*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1403*a4f780cdSTaniya Das 				&ne_gcc_usb20_master_clk_src.clkr.hw,
1404*a4f780cdSTaniya Das 			},
1405*a4f780cdSTaniya Das 			.num_parents = 1,
1406*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1407*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1408*a4f780cdSTaniya Das 		},
1409*a4f780cdSTaniya Das 	},
1410*a4f780cdSTaniya Das };
1411*a4f780cdSTaniya Das 
1412*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb20_mock_utmi_clk = {
1413*a4f780cdSTaniya Das 	.halt_reg = 0x3102c,
1414*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
1415*a4f780cdSTaniya Das 	.clkr = {
1416*a4f780cdSTaniya Das 		.enable_reg = 0x3102c,
1417*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
1418*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1419*a4f780cdSTaniya Das 			.name = "ne_gcc_usb20_mock_utmi_clk",
1420*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1421*a4f780cdSTaniya Das 				&ne_gcc_usb20_mock_utmi_postdiv_clk_src.clkr.hw,
1422*a4f780cdSTaniya Das 			},
1423*a4f780cdSTaniya Das 			.num_parents = 1,
1424*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1425*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1426*a4f780cdSTaniya Das 		},
1427*a4f780cdSTaniya Das 	},
1428*a4f780cdSTaniya Das };
1429*a4f780cdSTaniya Das 
1430*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb20_sleep_clk = {
1431*a4f780cdSTaniya Das 	.halt_reg = 0x31028,
1432*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
1433*a4f780cdSTaniya Das 	.clkr = {
1434*a4f780cdSTaniya Das 		.enable_reg = 0x31028,
1435*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
1436*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1437*a4f780cdSTaniya Das 			.name = "ne_gcc_usb20_sleep_clk",
1438*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1439*a4f780cdSTaniya Das 		},
1440*a4f780cdSTaniya Das 	},
1441*a4f780cdSTaniya Das };
1442*a4f780cdSTaniya Das 
1443*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb31_prim_atb_clk = {
1444*a4f780cdSTaniya Das 	.halt_reg = 0x2a018,
1445*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1446*a4f780cdSTaniya Das 	.clkr = {
1447*a4f780cdSTaniya Das 		.enable_reg = 0x2a018,
1448*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
1449*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1450*a4f780cdSTaniya Das 			.name = "ne_gcc_usb31_prim_atb_clk",
1451*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1452*a4f780cdSTaniya Das 				&ne_gcc_usb31_prim_master_clk_src.clkr.hw,
1453*a4f780cdSTaniya Das 			},
1454*a4f780cdSTaniya Das 			.num_parents = 1,
1455*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1456*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1457*a4f780cdSTaniya Das 		},
1458*a4f780cdSTaniya Das 	},
1459*a4f780cdSTaniya Das };
1460*a4f780cdSTaniya Das 
1461*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb31_prim_eud_ahb_clk = {
1462*a4f780cdSTaniya Das 	.halt_reg = 0x2a02c,
1463*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1464*a4f780cdSTaniya Das 	.hwcg_reg = 0x2a02c,
1465*a4f780cdSTaniya Das 	.hwcg_bit = 1,
1466*a4f780cdSTaniya Das 	.clkr = {
1467*a4f780cdSTaniya Das 		.enable_reg = 0x2a02c,
1468*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
1469*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1470*a4f780cdSTaniya Das 			.name = "ne_gcc_usb31_prim_eud_ahb_clk",
1471*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1472*a4f780cdSTaniya Das 		},
1473*a4f780cdSTaniya Das 	},
1474*a4f780cdSTaniya Das };
1475*a4f780cdSTaniya Das 
1476*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb31_prim_master_clk = {
1477*a4f780cdSTaniya Das 	.halt_reg = 0x2a01c,
1478*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
1479*a4f780cdSTaniya Das 	.clkr = {
1480*a4f780cdSTaniya Das 		.enable_reg = 0x2a01c,
1481*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
1482*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1483*a4f780cdSTaniya Das 			.name = "ne_gcc_usb31_prim_master_clk",
1484*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1485*a4f780cdSTaniya Das 				&ne_gcc_usb31_prim_master_clk_src.clkr.hw,
1486*a4f780cdSTaniya Das 			},
1487*a4f780cdSTaniya Das 			.num_parents = 1,
1488*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1489*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1490*a4f780cdSTaniya Das 		},
1491*a4f780cdSTaniya Das 	},
1492*a4f780cdSTaniya Das };
1493*a4f780cdSTaniya Das 
1494*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb31_prim_mock_utmi_clk = {
1495*a4f780cdSTaniya Das 	.halt_reg = 0x2a034,
1496*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
1497*a4f780cdSTaniya Das 	.clkr = {
1498*a4f780cdSTaniya Das 		.enable_reg = 0x2a034,
1499*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
1500*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1501*a4f780cdSTaniya Das 			.name = "ne_gcc_usb31_prim_mock_utmi_clk",
1502*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1503*a4f780cdSTaniya Das 				&ne_gcc_usb31_prim_mock_utmi_postdiv_clk_src.clkr.hw,
1504*a4f780cdSTaniya Das 			},
1505*a4f780cdSTaniya Das 			.num_parents = 1,
1506*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1507*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1508*a4f780cdSTaniya Das 		},
1509*a4f780cdSTaniya Das 	},
1510*a4f780cdSTaniya Das };
1511*a4f780cdSTaniya Das 
1512*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb31_prim_sleep_clk = {
1513*a4f780cdSTaniya Das 	.halt_reg = 0x2a030,
1514*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
1515*a4f780cdSTaniya Das 	.clkr = {
1516*a4f780cdSTaniya Das 		.enable_reg = 0x2a030,
1517*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
1518*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1519*a4f780cdSTaniya Das 			.name = "ne_gcc_usb31_prim_sleep_clk",
1520*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1521*a4f780cdSTaniya Das 		},
1522*a4f780cdSTaniya Das 	},
1523*a4f780cdSTaniya Das };
1524*a4f780cdSTaniya Das 
1525*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb31_sec_atb_clk = {
1526*a4f780cdSTaniya Das 	.halt_reg = 0x2c018,
1527*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1528*a4f780cdSTaniya Das 	.clkr = {
1529*a4f780cdSTaniya Das 		.enable_reg = 0x2c018,
1530*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
1531*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1532*a4f780cdSTaniya Das 			.name = "ne_gcc_usb31_sec_atb_clk",
1533*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1534*a4f780cdSTaniya Das 				&ne_gcc_usb31_prim_master_clk_src.clkr.hw,
1535*a4f780cdSTaniya Das 			},
1536*a4f780cdSTaniya Das 			.num_parents = 1,
1537*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1538*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1539*a4f780cdSTaniya Das 		},
1540*a4f780cdSTaniya Das 	},
1541*a4f780cdSTaniya Das };
1542*a4f780cdSTaniya Das 
1543*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb31_sec_eud_ahb_clk = {
1544*a4f780cdSTaniya Das 	.halt_reg = 0x2c02c,
1545*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1546*a4f780cdSTaniya Das 	.hwcg_reg = 0x2c02c,
1547*a4f780cdSTaniya Das 	.hwcg_bit = 1,
1548*a4f780cdSTaniya Das 	.clkr = {
1549*a4f780cdSTaniya Das 		.enable_reg = 0x2c02c,
1550*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
1551*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1552*a4f780cdSTaniya Das 			.name = "ne_gcc_usb31_sec_eud_ahb_clk",
1553*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1554*a4f780cdSTaniya Das 		},
1555*a4f780cdSTaniya Das 	},
1556*a4f780cdSTaniya Das };
1557*a4f780cdSTaniya Das 
1558*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb31_sec_master_clk = {
1559*a4f780cdSTaniya Das 	.halt_reg = 0x2c01c,
1560*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
1561*a4f780cdSTaniya Das 	.clkr = {
1562*a4f780cdSTaniya Das 		.enable_reg = 0x2c01c,
1563*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
1564*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1565*a4f780cdSTaniya Das 			.name = "ne_gcc_usb31_sec_master_clk",
1566*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1567*a4f780cdSTaniya Das 				&ne_gcc_usb31_sec_master_clk_src.clkr.hw,
1568*a4f780cdSTaniya Das 			},
1569*a4f780cdSTaniya Das 			.num_parents = 1,
1570*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1571*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1572*a4f780cdSTaniya Das 		},
1573*a4f780cdSTaniya Das 	},
1574*a4f780cdSTaniya Das };
1575*a4f780cdSTaniya Das 
1576*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb31_sec_mock_utmi_clk = {
1577*a4f780cdSTaniya Das 	.halt_reg = 0x2c034,
1578*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
1579*a4f780cdSTaniya Das 	.clkr = {
1580*a4f780cdSTaniya Das 		.enable_reg = 0x2c034,
1581*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
1582*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1583*a4f780cdSTaniya Das 			.name = "ne_gcc_usb31_sec_mock_utmi_clk",
1584*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1585*a4f780cdSTaniya Das 				&ne_gcc_usb31_sec_mock_utmi_postdiv_clk_src.clkr.hw,
1586*a4f780cdSTaniya Das 			},
1587*a4f780cdSTaniya Das 			.num_parents = 1,
1588*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1589*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1590*a4f780cdSTaniya Das 		},
1591*a4f780cdSTaniya Das 	},
1592*a4f780cdSTaniya Das };
1593*a4f780cdSTaniya Das 
1594*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb31_sec_sleep_clk = {
1595*a4f780cdSTaniya Das 	.halt_reg = 0x2c030,
1596*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
1597*a4f780cdSTaniya Das 	.clkr = {
1598*a4f780cdSTaniya Das 		.enable_reg = 0x2c030,
1599*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
1600*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1601*a4f780cdSTaniya Das 			.name = "ne_gcc_usb31_sec_sleep_clk",
1602*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1603*a4f780cdSTaniya Das 		},
1604*a4f780cdSTaniya Das 	},
1605*a4f780cdSTaniya Das };
1606*a4f780cdSTaniya Das 
1607*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb3_prim_phy_aux_clk = {
1608*a4f780cdSTaniya Das 	.halt_reg = 0x2a06c,
1609*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
1610*a4f780cdSTaniya Das 	.clkr = {
1611*a4f780cdSTaniya Das 		.enable_reg = 0x2a06c,
1612*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
1613*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1614*a4f780cdSTaniya Das 			.name = "ne_gcc_usb3_prim_phy_aux_clk",
1615*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1616*a4f780cdSTaniya Das 				&ne_gcc_usb3_prim_phy_aux_clk_src.clkr.hw,
1617*a4f780cdSTaniya Das 			},
1618*a4f780cdSTaniya Das 			.num_parents = 1,
1619*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1620*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1621*a4f780cdSTaniya Das 		},
1622*a4f780cdSTaniya Das 	},
1623*a4f780cdSTaniya Das };
1624*a4f780cdSTaniya Das 
1625*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb3_prim_phy_com_aux_clk = {
1626*a4f780cdSTaniya Das 	.halt_reg = 0x2a070,
1627*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
1628*a4f780cdSTaniya Das 	.clkr = {
1629*a4f780cdSTaniya Das 		.enable_reg = 0x2a070,
1630*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
1631*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1632*a4f780cdSTaniya Das 			.name = "ne_gcc_usb3_prim_phy_com_aux_clk",
1633*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1634*a4f780cdSTaniya Das 				&ne_gcc_usb3_prim_phy_aux_clk_src.clkr.hw,
1635*a4f780cdSTaniya Das 			},
1636*a4f780cdSTaniya Das 			.num_parents = 1,
1637*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1638*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1639*a4f780cdSTaniya Das 		},
1640*a4f780cdSTaniya Das 	},
1641*a4f780cdSTaniya Das };
1642*a4f780cdSTaniya Das 
1643*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb3_prim_phy_pipe_clk = {
1644*a4f780cdSTaniya Das 	.halt_reg = 0x2a074,
1645*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1646*a4f780cdSTaniya Das 	.hwcg_reg = 0x2a074,
1647*a4f780cdSTaniya Das 	.hwcg_bit = 1,
1648*a4f780cdSTaniya Das 	.clkr = {
1649*a4f780cdSTaniya Das 		.enable_reg = 0x2a074,
1650*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
1651*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1652*a4f780cdSTaniya Das 			.name = "ne_gcc_usb3_prim_phy_pipe_clk",
1653*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1654*a4f780cdSTaniya Das 				&ne_gcc_usb3_prim_phy_pipe_clk_src.clkr.hw,
1655*a4f780cdSTaniya Das 			},
1656*a4f780cdSTaniya Das 			.num_parents = 1,
1657*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1658*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1659*a4f780cdSTaniya Das 		},
1660*a4f780cdSTaniya Das 	},
1661*a4f780cdSTaniya Das };
1662*a4f780cdSTaniya Das 
1663*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb3_sec_phy_aux_clk = {
1664*a4f780cdSTaniya Das 	.halt_reg = 0x2c06c,
1665*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
1666*a4f780cdSTaniya Das 	.clkr = {
1667*a4f780cdSTaniya Das 		.enable_reg = 0x2c06c,
1668*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
1669*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1670*a4f780cdSTaniya Das 			.name = "ne_gcc_usb3_sec_phy_aux_clk",
1671*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1672*a4f780cdSTaniya Das 				&ne_gcc_usb3_sec_phy_aux_clk_src.clkr.hw,
1673*a4f780cdSTaniya Das 			},
1674*a4f780cdSTaniya Das 			.num_parents = 1,
1675*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1676*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1677*a4f780cdSTaniya Das 		},
1678*a4f780cdSTaniya Das 	},
1679*a4f780cdSTaniya Das };
1680*a4f780cdSTaniya Das 
1681*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb3_sec_phy_com_aux_clk = {
1682*a4f780cdSTaniya Das 	.halt_reg = 0x2c070,
1683*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
1684*a4f780cdSTaniya Das 	.clkr = {
1685*a4f780cdSTaniya Das 		.enable_reg = 0x2c070,
1686*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
1687*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1688*a4f780cdSTaniya Das 			.name = "ne_gcc_usb3_sec_phy_com_aux_clk",
1689*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1690*a4f780cdSTaniya Das 				&ne_gcc_usb3_sec_phy_aux_clk_src.clkr.hw,
1691*a4f780cdSTaniya Das 			},
1692*a4f780cdSTaniya Das 			.num_parents = 1,
1693*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1694*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1695*a4f780cdSTaniya Das 		},
1696*a4f780cdSTaniya Das 	},
1697*a4f780cdSTaniya Das };
1698*a4f780cdSTaniya Das 
1699*a4f780cdSTaniya Das static struct clk_branch ne_gcc_usb3_sec_phy_pipe_clk = {
1700*a4f780cdSTaniya Das 	.halt_reg = 0x2c074,
1701*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1702*a4f780cdSTaniya Das 	.hwcg_reg = 0x2c074,
1703*a4f780cdSTaniya Das 	.hwcg_bit = 1,
1704*a4f780cdSTaniya Das 	.clkr = {
1705*a4f780cdSTaniya Das 		.enable_reg = 0x2c074,
1706*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
1707*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1708*a4f780cdSTaniya Das 			.name = "ne_gcc_usb3_sec_phy_pipe_clk",
1709*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1710*a4f780cdSTaniya Das 				&ne_gcc_usb3_sec_phy_pipe_clk_src.clkr.hw,
1711*a4f780cdSTaniya Das 			},
1712*a4f780cdSTaniya Das 			.num_parents = 1,
1713*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1714*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1715*a4f780cdSTaniya Das 		},
1716*a4f780cdSTaniya Das 	},
1717*a4f780cdSTaniya Das };
1718*a4f780cdSTaniya Das 
1719*a4f780cdSTaniya Das static struct gdsc ne_gcc_ufs_mem_phy_gdsc = {
1720*a4f780cdSTaniya Das 	.gdscr = 0x32000,
1721*a4f780cdSTaniya Das 	.en_rest_wait_val = 0x2,
1722*a4f780cdSTaniya Das 	.en_few_wait_val = 0x2,
1723*a4f780cdSTaniya Das 	.clk_dis_wait_val = 0x2,
1724*a4f780cdSTaniya Das 	.pd = {
1725*a4f780cdSTaniya Das 		.name = "ne_gcc_ufs_mem_phy_gdsc",
1726*a4f780cdSTaniya Das 	},
1727*a4f780cdSTaniya Das 	.pwrsts = PWRSTS_OFF_ON,
1728*a4f780cdSTaniya Das 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
1729*a4f780cdSTaniya Das };
1730*a4f780cdSTaniya Das 
1731*a4f780cdSTaniya Das static struct gdsc ne_gcc_ufs_phy_gdsc = {
1732*a4f780cdSTaniya Das 	.gdscr = 0x33004,
1733*a4f780cdSTaniya Das 	.en_rest_wait_val = 0x2,
1734*a4f780cdSTaniya Das 	.en_few_wait_val = 0x2,
1735*a4f780cdSTaniya Das 	.clk_dis_wait_val = 0xf,
1736*a4f780cdSTaniya Das 	.pd = {
1737*a4f780cdSTaniya Das 		.name = "ne_gcc_ufs_phy_gdsc",
1738*a4f780cdSTaniya Das 	},
1739*a4f780cdSTaniya Das 	.pwrsts = PWRSTS_OFF_ON,
1740*a4f780cdSTaniya Das 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
1741*a4f780cdSTaniya Das };
1742*a4f780cdSTaniya Das 
1743*a4f780cdSTaniya Das static struct gdsc ne_gcc_usb20_prim_gdsc = {
1744*a4f780cdSTaniya Das 	.gdscr = 0x31004,
1745*a4f780cdSTaniya Das 	.en_rest_wait_val = 0x2,
1746*a4f780cdSTaniya Das 	.en_few_wait_val = 0x2,
1747*a4f780cdSTaniya Das 	.clk_dis_wait_val = 0xf,
1748*a4f780cdSTaniya Das 	.pd = {
1749*a4f780cdSTaniya Das 		.name = "ne_gcc_usb20_prim_gdsc",
1750*a4f780cdSTaniya Das 	},
1751*a4f780cdSTaniya Das 	.pwrsts = PWRSTS_OFF_ON,
1752*a4f780cdSTaniya Das 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
1753*a4f780cdSTaniya Das };
1754*a4f780cdSTaniya Das 
1755*a4f780cdSTaniya Das static struct gdsc ne_gcc_usb31_prim_gdsc = {
1756*a4f780cdSTaniya Das 	.gdscr = 0x2a004,
1757*a4f780cdSTaniya Das 	.en_rest_wait_val = 0x2,
1758*a4f780cdSTaniya Das 	.en_few_wait_val = 0x2,
1759*a4f780cdSTaniya Das 	.clk_dis_wait_val = 0xf,
1760*a4f780cdSTaniya Das 	.pd = {
1761*a4f780cdSTaniya Das 		.name = "ne_gcc_usb31_prim_gdsc",
1762*a4f780cdSTaniya Das 	},
1763*a4f780cdSTaniya Das 	.pwrsts = PWRSTS_OFF_ON,
1764*a4f780cdSTaniya Das 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
1765*a4f780cdSTaniya Das };
1766*a4f780cdSTaniya Das 
1767*a4f780cdSTaniya Das static struct gdsc ne_gcc_usb31_sec_gdsc = {
1768*a4f780cdSTaniya Das 	.gdscr = 0x2c004,
1769*a4f780cdSTaniya Das 	.en_rest_wait_val = 0x2,
1770*a4f780cdSTaniya Das 	.en_few_wait_val = 0x2,
1771*a4f780cdSTaniya Das 	.clk_dis_wait_val = 0xf,
1772*a4f780cdSTaniya Das 	.pd = {
1773*a4f780cdSTaniya Das 		.name = "ne_gcc_usb31_sec_gdsc",
1774*a4f780cdSTaniya Das 	},
1775*a4f780cdSTaniya Das 	.pwrsts = PWRSTS_OFF_ON,
1776*a4f780cdSTaniya Das 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
1777*a4f780cdSTaniya Das };
1778*a4f780cdSTaniya Das 
1779*a4f780cdSTaniya Das static struct gdsc ne_gcc_usb3_phy_gdsc = {
1780*a4f780cdSTaniya Das 	.gdscr = 0x2b00c,
1781*a4f780cdSTaniya Das 	.en_rest_wait_val = 0x2,
1782*a4f780cdSTaniya Das 	.en_few_wait_val = 0x2,
1783*a4f780cdSTaniya Das 	.clk_dis_wait_val = 0x2,
1784*a4f780cdSTaniya Das 	.pd = {
1785*a4f780cdSTaniya Das 		.name = "ne_gcc_usb3_phy_gdsc",
1786*a4f780cdSTaniya Das 	},
1787*a4f780cdSTaniya Das 	.pwrsts = PWRSTS_OFF_ON,
1788*a4f780cdSTaniya Das 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
1789*a4f780cdSTaniya Das };
1790*a4f780cdSTaniya Das 
1791*a4f780cdSTaniya Das static struct gdsc ne_gcc_usb3_sec_phy_gdsc = {
1792*a4f780cdSTaniya Das 	.gdscr = 0x2d00c,
1793*a4f780cdSTaniya Das 	.en_rest_wait_val = 0x2,
1794*a4f780cdSTaniya Das 	.en_few_wait_val = 0x2,
1795*a4f780cdSTaniya Das 	.clk_dis_wait_val = 0x2,
1796*a4f780cdSTaniya Das 	.pd = {
1797*a4f780cdSTaniya Das 		.name = "ne_gcc_usb3_sec_phy_gdsc",
1798*a4f780cdSTaniya Das 	},
1799*a4f780cdSTaniya Das 	.pwrsts = PWRSTS_OFF_ON,
1800*a4f780cdSTaniya Das 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
1801*a4f780cdSTaniya Das };
1802*a4f780cdSTaniya Das 
1803*a4f780cdSTaniya Das static struct clk_regmap *ne_gcc_nord_clocks[] = {
1804*a4f780cdSTaniya Das 	[NE_GCC_AGGRE_NOC_UFS_PHY_AXI_CLK] = &ne_gcc_aggre_noc_ufs_phy_axi_clk.clkr,
1805*a4f780cdSTaniya Das 	[NE_GCC_AGGRE_NOC_USB2_AXI_CLK] = &ne_gcc_aggre_noc_usb2_axi_clk.clkr,
1806*a4f780cdSTaniya Das 	[NE_GCC_AGGRE_NOC_USB3_PRIM_AXI_CLK] = &ne_gcc_aggre_noc_usb3_prim_axi_clk.clkr,
1807*a4f780cdSTaniya Das 	[NE_GCC_AGGRE_NOC_USB3_SEC_AXI_CLK] = &ne_gcc_aggre_noc_usb3_sec_axi_clk.clkr,
1808*a4f780cdSTaniya Das 	[NE_GCC_AHB2PHY_CLK] = &ne_gcc_ahb2phy_clk.clkr,
1809*a4f780cdSTaniya Das 	[NE_GCC_CNOC_USB2_AXI_CLK] = &ne_gcc_cnoc_usb2_axi_clk.clkr,
1810*a4f780cdSTaniya Das 	[NE_GCC_CNOC_USB3_PRIM_AXI_CLK] = &ne_gcc_cnoc_usb3_prim_axi_clk.clkr,
1811*a4f780cdSTaniya Das 	[NE_GCC_CNOC_USB3_SEC_AXI_CLK] = &ne_gcc_cnoc_usb3_sec_axi_clk.clkr,
1812*a4f780cdSTaniya Das 	[NE_GCC_FRQ_MEASURE_REF_CLK] = &ne_gcc_frq_measure_ref_clk.clkr,
1813*a4f780cdSTaniya Das 	[NE_GCC_GP1_CLK] = &ne_gcc_gp1_clk.clkr,
1814*a4f780cdSTaniya Das 	[NE_GCC_GP1_CLK_SRC] = &ne_gcc_gp1_clk_src.clkr,
1815*a4f780cdSTaniya Das 	[NE_GCC_GP2_CLK] = &ne_gcc_gp2_clk.clkr,
1816*a4f780cdSTaniya Das 	[NE_GCC_GP2_CLK_SRC] = &ne_gcc_gp2_clk_src.clkr,
1817*a4f780cdSTaniya Das 	[NE_GCC_GPLL0] = &ne_gcc_gpll0.clkr,
1818*a4f780cdSTaniya Das 	[NE_GCC_GPLL0_OUT_EVEN] = &ne_gcc_gpll0_out_even.clkr,
1819*a4f780cdSTaniya Das 	[NE_GCC_GPLL2] = &ne_gcc_gpll2.clkr,
1820*a4f780cdSTaniya Das 	[NE_GCC_GPU_2_CFG_CLK] = &ne_gcc_gpu_2_cfg_clk.clkr,
1821*a4f780cdSTaniya Das 	[NE_GCC_GPU_2_GPLL0_CLK_SRC] = &ne_gcc_gpu_2_gpll0_clk_src.clkr,
1822*a4f780cdSTaniya Das 	[NE_GCC_GPU_2_GPLL0_DIV_CLK_SRC] = &ne_gcc_gpu_2_gpll0_div_clk_src.clkr,
1823*a4f780cdSTaniya Das 	[NE_GCC_GPU_2_HSCNOC_GFX_CLK] = &ne_gcc_gpu_2_hscnoc_gfx_clk.clkr,
1824*a4f780cdSTaniya Das 	[NE_GCC_GPU_2_SMMU_VOTE_CLK] = &ne_gcc_gpu_2_smmu_vote_clk.clkr,
1825*a4f780cdSTaniya Das 	[NE_GCC_QUPV3_WRAP2_CORE_2X_CLK] = &ne_gcc_qupv3_wrap2_core_2x_clk.clkr,
1826*a4f780cdSTaniya Das 	[NE_GCC_QUPV3_WRAP2_CORE_CLK] = &ne_gcc_qupv3_wrap2_core_clk.clkr,
1827*a4f780cdSTaniya Das 	[NE_GCC_QUPV3_WRAP2_M_AHB_CLK] = &ne_gcc_qupv3_wrap2_m_ahb_clk.clkr,
1828*a4f780cdSTaniya Das 	[NE_GCC_QUPV3_WRAP2_S0_CLK] = &ne_gcc_qupv3_wrap2_s0_clk.clkr,
1829*a4f780cdSTaniya Das 	[NE_GCC_QUPV3_WRAP2_S0_CLK_SRC] = &ne_gcc_qupv3_wrap2_s0_clk_src.clkr,
1830*a4f780cdSTaniya Das 	[NE_GCC_QUPV3_WRAP2_S1_CLK] = &ne_gcc_qupv3_wrap2_s1_clk.clkr,
1831*a4f780cdSTaniya Das 	[NE_GCC_QUPV3_WRAP2_S1_CLK_SRC] = &ne_gcc_qupv3_wrap2_s1_clk_src.clkr,
1832*a4f780cdSTaniya Das 	[NE_GCC_QUPV3_WRAP2_S2_CLK] = &ne_gcc_qupv3_wrap2_s2_clk.clkr,
1833*a4f780cdSTaniya Das 	[NE_GCC_QUPV3_WRAP2_S2_CLK_SRC] = &ne_gcc_qupv3_wrap2_s2_clk_src.clkr,
1834*a4f780cdSTaniya Das 	[NE_GCC_QUPV3_WRAP2_S3_CLK] = &ne_gcc_qupv3_wrap2_s3_clk.clkr,
1835*a4f780cdSTaniya Das 	[NE_GCC_QUPV3_WRAP2_S3_CLK_SRC] = &ne_gcc_qupv3_wrap2_s3_clk_src.clkr,
1836*a4f780cdSTaniya Das 	[NE_GCC_QUPV3_WRAP2_S4_CLK] = &ne_gcc_qupv3_wrap2_s4_clk.clkr,
1837*a4f780cdSTaniya Das 	[NE_GCC_QUPV3_WRAP2_S4_CLK_SRC] = &ne_gcc_qupv3_wrap2_s4_clk_src.clkr,
1838*a4f780cdSTaniya Das 	[NE_GCC_QUPV3_WRAP2_S5_CLK] = &ne_gcc_qupv3_wrap2_s5_clk.clkr,
1839*a4f780cdSTaniya Das 	[NE_GCC_QUPV3_WRAP2_S5_CLK_SRC] = &ne_gcc_qupv3_wrap2_s5_clk_src.clkr,
1840*a4f780cdSTaniya Das 	[NE_GCC_QUPV3_WRAP2_S6_CLK] = &ne_gcc_qupv3_wrap2_s6_clk.clkr,
1841*a4f780cdSTaniya Das 	[NE_GCC_QUPV3_WRAP2_S6_CLK_SRC] = &ne_gcc_qupv3_wrap2_s6_clk_src.clkr,
1842*a4f780cdSTaniya Das 	[NE_GCC_QUPV3_WRAP2_S_AHB_CLK] = &ne_gcc_qupv3_wrap2_s_ahb_clk.clkr,
1843*a4f780cdSTaniya Das 	[NE_GCC_SDCC4_APPS_CLK] = &ne_gcc_sdcc4_apps_clk.clkr,
1844*a4f780cdSTaniya Das 	[NE_GCC_SDCC4_APPS_CLK_SRC] = &ne_gcc_sdcc4_apps_clk_src.clkr,
1845*a4f780cdSTaniya Das 	[NE_GCC_SDCC4_AXI_CLK] = &ne_gcc_sdcc4_axi_clk.clkr,
1846*a4f780cdSTaniya Das 	[NE_GCC_UFS_PHY_AHB_CLK] = &ne_gcc_ufs_phy_ahb_clk.clkr,
1847*a4f780cdSTaniya Das 	[NE_GCC_UFS_PHY_AXI_CLK] = &ne_gcc_ufs_phy_axi_clk.clkr,
1848*a4f780cdSTaniya Das 	[NE_GCC_UFS_PHY_AXI_CLK_SRC] = &ne_gcc_ufs_phy_axi_clk_src.clkr,
1849*a4f780cdSTaniya Das 	[NE_GCC_UFS_PHY_ICE_CORE_CLK] = &ne_gcc_ufs_phy_ice_core_clk.clkr,
1850*a4f780cdSTaniya Das 	[NE_GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &ne_gcc_ufs_phy_ice_core_clk_src.clkr,
1851*a4f780cdSTaniya Das 	[NE_GCC_UFS_PHY_PHY_AUX_CLK] = &ne_gcc_ufs_phy_phy_aux_clk.clkr,
1852*a4f780cdSTaniya Das 	[NE_GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &ne_gcc_ufs_phy_phy_aux_clk_src.clkr,
1853*a4f780cdSTaniya Das 	[NE_GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &ne_gcc_ufs_phy_rx_symbol_0_clk.clkr,
1854*a4f780cdSTaniya Das 	[NE_GCC_UFS_PHY_RX_SYMBOL_0_CLK_SRC] = &ne_gcc_ufs_phy_rx_symbol_0_clk_src.clkr,
1855*a4f780cdSTaniya Das 	[NE_GCC_UFS_PHY_RX_SYMBOL_1_CLK] = &ne_gcc_ufs_phy_rx_symbol_1_clk.clkr,
1856*a4f780cdSTaniya Das 	[NE_GCC_UFS_PHY_RX_SYMBOL_1_CLK_SRC] = &ne_gcc_ufs_phy_rx_symbol_1_clk_src.clkr,
1857*a4f780cdSTaniya Das 	[NE_GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &ne_gcc_ufs_phy_tx_symbol_0_clk.clkr,
1858*a4f780cdSTaniya Das 	[NE_GCC_UFS_PHY_TX_SYMBOL_0_CLK_SRC] = &ne_gcc_ufs_phy_tx_symbol_0_clk_src.clkr,
1859*a4f780cdSTaniya Das 	[NE_GCC_UFS_PHY_UNIPRO_CORE_CLK] = &ne_gcc_ufs_phy_unipro_core_clk.clkr,
1860*a4f780cdSTaniya Das 	[NE_GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC] = &ne_gcc_ufs_phy_unipro_core_clk_src.clkr,
1861*a4f780cdSTaniya Das 	[NE_GCC_USB20_MASTER_CLK] = &ne_gcc_usb20_master_clk.clkr,
1862*a4f780cdSTaniya Das 	[NE_GCC_USB20_MASTER_CLK_SRC] = &ne_gcc_usb20_master_clk_src.clkr,
1863*a4f780cdSTaniya Das 	[NE_GCC_USB20_MOCK_UTMI_CLK] = &ne_gcc_usb20_mock_utmi_clk.clkr,
1864*a4f780cdSTaniya Das 	[NE_GCC_USB20_MOCK_UTMI_CLK_SRC] = &ne_gcc_usb20_mock_utmi_clk_src.clkr,
1865*a4f780cdSTaniya Das 	[NE_GCC_USB20_MOCK_UTMI_POSTDIV_CLK_SRC] = &ne_gcc_usb20_mock_utmi_postdiv_clk_src.clkr,
1866*a4f780cdSTaniya Das 	[NE_GCC_USB20_SLEEP_CLK] = &ne_gcc_usb20_sleep_clk.clkr,
1867*a4f780cdSTaniya Das 	[NE_GCC_USB31_PRIM_ATB_CLK] = &ne_gcc_usb31_prim_atb_clk.clkr,
1868*a4f780cdSTaniya Das 	[NE_GCC_USB31_PRIM_EUD_AHB_CLK] = &ne_gcc_usb31_prim_eud_ahb_clk.clkr,
1869*a4f780cdSTaniya Das 	[NE_GCC_USB31_PRIM_MASTER_CLK] = &ne_gcc_usb31_prim_master_clk.clkr,
1870*a4f780cdSTaniya Das 	[NE_GCC_USB31_PRIM_MASTER_CLK_SRC] = &ne_gcc_usb31_prim_master_clk_src.clkr,
1871*a4f780cdSTaniya Das 	[NE_GCC_USB31_PRIM_MOCK_UTMI_CLK] = &ne_gcc_usb31_prim_mock_utmi_clk.clkr,
1872*a4f780cdSTaniya Das 	[NE_GCC_USB31_PRIM_MOCK_UTMI_CLK_SRC] = &ne_gcc_usb31_prim_mock_utmi_clk_src.clkr,
1873*a4f780cdSTaniya Das 	[NE_GCC_USB31_PRIM_MOCK_UTMI_POSTDIV_CLK_SRC] =
1874*a4f780cdSTaniya Das 		&ne_gcc_usb31_prim_mock_utmi_postdiv_clk_src.clkr,
1875*a4f780cdSTaniya Das 	[NE_GCC_USB31_PRIM_SLEEP_CLK] = &ne_gcc_usb31_prim_sleep_clk.clkr,
1876*a4f780cdSTaniya Das 	[NE_GCC_USB31_SEC_ATB_CLK] = &ne_gcc_usb31_sec_atb_clk.clkr,
1877*a4f780cdSTaniya Das 	[NE_GCC_USB31_SEC_EUD_AHB_CLK] = &ne_gcc_usb31_sec_eud_ahb_clk.clkr,
1878*a4f780cdSTaniya Das 	[NE_GCC_USB31_SEC_MASTER_CLK] = &ne_gcc_usb31_sec_master_clk.clkr,
1879*a4f780cdSTaniya Das 	[NE_GCC_USB31_SEC_MASTER_CLK_SRC] = &ne_gcc_usb31_sec_master_clk_src.clkr,
1880*a4f780cdSTaniya Das 	[NE_GCC_USB31_SEC_MOCK_UTMI_CLK] = &ne_gcc_usb31_sec_mock_utmi_clk.clkr,
1881*a4f780cdSTaniya Das 	[NE_GCC_USB31_SEC_MOCK_UTMI_CLK_SRC] = &ne_gcc_usb31_sec_mock_utmi_clk_src.clkr,
1882*a4f780cdSTaniya Das 	[NE_GCC_USB31_SEC_MOCK_UTMI_POSTDIV_CLK_SRC] =
1883*a4f780cdSTaniya Das 		&ne_gcc_usb31_sec_mock_utmi_postdiv_clk_src.clkr,
1884*a4f780cdSTaniya Das 	[NE_GCC_USB31_SEC_SLEEP_CLK] = &ne_gcc_usb31_sec_sleep_clk.clkr,
1885*a4f780cdSTaniya Das 	[NE_GCC_USB3_PRIM_PHY_AUX_CLK] = &ne_gcc_usb3_prim_phy_aux_clk.clkr,
1886*a4f780cdSTaniya Das 	[NE_GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &ne_gcc_usb3_prim_phy_aux_clk_src.clkr,
1887*a4f780cdSTaniya Das 	[NE_GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &ne_gcc_usb3_prim_phy_com_aux_clk.clkr,
1888*a4f780cdSTaniya Das 	[NE_GCC_USB3_PRIM_PHY_PIPE_CLK] = &ne_gcc_usb3_prim_phy_pipe_clk.clkr,
1889*a4f780cdSTaniya Das 	[NE_GCC_USB3_PRIM_PHY_PIPE_CLK_SRC] = &ne_gcc_usb3_prim_phy_pipe_clk_src.clkr,
1890*a4f780cdSTaniya Das 	[NE_GCC_USB3_SEC_PHY_AUX_CLK] = &ne_gcc_usb3_sec_phy_aux_clk.clkr,
1891*a4f780cdSTaniya Das 	[NE_GCC_USB3_SEC_PHY_AUX_CLK_SRC] = &ne_gcc_usb3_sec_phy_aux_clk_src.clkr,
1892*a4f780cdSTaniya Das 	[NE_GCC_USB3_SEC_PHY_COM_AUX_CLK] = &ne_gcc_usb3_sec_phy_com_aux_clk.clkr,
1893*a4f780cdSTaniya Das 	[NE_GCC_USB3_SEC_PHY_PIPE_CLK] = &ne_gcc_usb3_sec_phy_pipe_clk.clkr,
1894*a4f780cdSTaniya Das 	[NE_GCC_USB3_SEC_PHY_PIPE_CLK_SRC] = &ne_gcc_usb3_sec_phy_pipe_clk_src.clkr,
1895*a4f780cdSTaniya Das };
1896*a4f780cdSTaniya Das 
1897*a4f780cdSTaniya Das static struct gdsc *ne_gcc_nord_gdscs[] = {
1898*a4f780cdSTaniya Das 	[NE_GCC_UFS_MEM_PHY_GDSC] = &ne_gcc_ufs_mem_phy_gdsc,
1899*a4f780cdSTaniya Das 	[NE_GCC_UFS_PHY_GDSC] = &ne_gcc_ufs_phy_gdsc,
1900*a4f780cdSTaniya Das 	[NE_GCC_USB20_PRIM_GDSC] = &ne_gcc_usb20_prim_gdsc,
1901*a4f780cdSTaniya Das 	[NE_GCC_USB31_PRIM_GDSC] = &ne_gcc_usb31_prim_gdsc,
1902*a4f780cdSTaniya Das 	[NE_GCC_USB31_SEC_GDSC] = &ne_gcc_usb31_sec_gdsc,
1903*a4f780cdSTaniya Das 	[NE_GCC_USB3_PHY_GDSC] = &ne_gcc_usb3_phy_gdsc,
1904*a4f780cdSTaniya Das 	[NE_GCC_USB3_SEC_PHY_GDSC] = &ne_gcc_usb3_sec_phy_gdsc,
1905*a4f780cdSTaniya Das };
1906*a4f780cdSTaniya Das 
1907*a4f780cdSTaniya Das static const struct qcom_reset_map ne_gcc_nord_resets[] = {
1908*a4f780cdSTaniya Das 	[NE_GCC_GPU_2_BCR] = { 0x34000 },
1909*a4f780cdSTaniya Das 	[NE_GCC_QUPV3_WRAPPER_2_BCR] = { 0x38000 },
1910*a4f780cdSTaniya Das 	[NE_GCC_SDCC4_BCR] = { 0x18000 },
1911*a4f780cdSTaniya Das 	[NE_GCC_UFS_PHY_BCR] = { 0x33000 },
1912*a4f780cdSTaniya Das 	[NE_GCC_USB20_PRIM_BCR] = { 0x31000 },
1913*a4f780cdSTaniya Das 	[NE_GCC_USB31_PRIM_BCR] = { 0x2a000 },
1914*a4f780cdSTaniya Das 	[NE_GCC_USB31_SEC_BCR] = { 0x2c000 },
1915*a4f780cdSTaniya Das 	[NE_GCC_USB3_DP_PHY_PRIM_BCR] = { 0x2b008 },
1916*a4f780cdSTaniya Das 	[NE_GCC_USB3_DP_PHY_SEC_BCR] = { 0x2d008 },
1917*a4f780cdSTaniya Das 	[NE_GCC_USB3_PHY_PRIM_BCR] = { 0x2b000 },
1918*a4f780cdSTaniya Das 	[NE_GCC_USB3_PHY_SEC_BCR] = { 0x2d000 },
1919*a4f780cdSTaniya Das 	[NE_GCC_USB3PHY_PHY_PRIM_BCR] = { 0x2b004 },
1920*a4f780cdSTaniya Das 	[NE_GCC_USB3PHY_PHY_SEC_BCR] = { 0x2d004 },
1921*a4f780cdSTaniya Das };
1922*a4f780cdSTaniya Das 
1923*a4f780cdSTaniya Das static const struct clk_rcg_dfs_data ne_gcc_nord_dfs_clocks[] = {
1924*a4f780cdSTaniya Das 	DEFINE_RCG_DFS(ne_gcc_qupv3_wrap2_s0_clk_src),
1925*a4f780cdSTaniya Das 	DEFINE_RCG_DFS(ne_gcc_qupv3_wrap2_s1_clk_src),
1926*a4f780cdSTaniya Das 	DEFINE_RCG_DFS(ne_gcc_qupv3_wrap2_s2_clk_src),
1927*a4f780cdSTaniya Das 	DEFINE_RCG_DFS(ne_gcc_qupv3_wrap2_s3_clk_src),
1928*a4f780cdSTaniya Das 	DEFINE_RCG_DFS(ne_gcc_qupv3_wrap2_s4_clk_src),
1929*a4f780cdSTaniya Das 	DEFINE_RCG_DFS(ne_gcc_qupv3_wrap2_s5_clk_src),
1930*a4f780cdSTaniya Das 	DEFINE_RCG_DFS(ne_gcc_qupv3_wrap2_s6_clk_src),
1931*a4f780cdSTaniya Das };
1932*a4f780cdSTaniya Das 
1933*a4f780cdSTaniya Das static const struct regmap_config ne_gcc_nord_regmap_config = {
1934*a4f780cdSTaniya Das 	.reg_bits = 32,
1935*a4f780cdSTaniya Das 	.reg_stride = 4,
1936*a4f780cdSTaniya Das 	.val_bits = 32,
1937*a4f780cdSTaniya Das 	.max_register = 0xf41f0,
1938*a4f780cdSTaniya Das 	.fast_io = true,
1939*a4f780cdSTaniya Das };
1940*a4f780cdSTaniya Das 
1941*a4f780cdSTaniya Das static void clk_nord_regs_configure(struct device *dev, struct regmap *regmap)
1942*a4f780cdSTaniya Das {
1943*a4f780cdSTaniya Das 	/* FORCE_MEM_CORE_ON for  ne_gcc_ufs_phy_ice_core_clk and ne_gcc_ufs_phy_axi_clk */
1944*a4f780cdSTaniya Das 	qcom_branch_set_force_mem_core(regmap, ne_gcc_ufs_phy_ice_core_clk, true);
1945*a4f780cdSTaniya Das 	qcom_branch_set_force_mem_core(regmap, ne_gcc_ufs_phy_axi_clk, true);
1946*a4f780cdSTaniya Das }
1947*a4f780cdSTaniya Das 
1948*a4f780cdSTaniya Das static struct qcom_cc_driver_data ne_gcc_nord_driver_data = {
1949*a4f780cdSTaniya Das 	.dfs_rcgs = ne_gcc_nord_dfs_clocks,
1950*a4f780cdSTaniya Das 	.num_dfs_rcgs = ARRAY_SIZE(ne_gcc_nord_dfs_clocks),
1951*a4f780cdSTaniya Das 	.clk_regs_configure = clk_nord_regs_configure,
1952*a4f780cdSTaniya Das };
1953*a4f780cdSTaniya Das 
1954*a4f780cdSTaniya Das static const struct qcom_cc_desc ne_gcc_nord_desc = {
1955*a4f780cdSTaniya Das 	.config = &ne_gcc_nord_regmap_config,
1956*a4f780cdSTaniya Das 	.clks = ne_gcc_nord_clocks,
1957*a4f780cdSTaniya Das 	.num_clks = ARRAY_SIZE(ne_gcc_nord_clocks),
1958*a4f780cdSTaniya Das 	.resets = ne_gcc_nord_resets,
1959*a4f780cdSTaniya Das 	.num_resets = ARRAY_SIZE(ne_gcc_nord_resets),
1960*a4f780cdSTaniya Das 	.gdscs = ne_gcc_nord_gdscs,
1961*a4f780cdSTaniya Das 	.num_gdscs = ARRAY_SIZE(ne_gcc_nord_gdscs),
1962*a4f780cdSTaniya Das 	.driver_data = &ne_gcc_nord_driver_data,
1963*a4f780cdSTaniya Das };
1964*a4f780cdSTaniya Das 
1965*a4f780cdSTaniya Das static const struct of_device_id ne_gcc_nord_match_table[] = {
1966*a4f780cdSTaniya Das 	{ .compatible = "qcom,nord-negcc" },
1967*a4f780cdSTaniya Das 	{ }
1968*a4f780cdSTaniya Das };
1969*a4f780cdSTaniya Das MODULE_DEVICE_TABLE(of, ne_gcc_nord_match_table);
1970*a4f780cdSTaniya Das 
1971*a4f780cdSTaniya Das static int ne_gcc_nord_probe(struct platform_device *pdev)
1972*a4f780cdSTaniya Das {
1973*a4f780cdSTaniya Das 	return qcom_cc_probe(pdev, &ne_gcc_nord_desc);
1974*a4f780cdSTaniya Das }
1975*a4f780cdSTaniya Das 
1976*a4f780cdSTaniya Das static struct platform_driver ne_gcc_nord_driver = {
1977*a4f780cdSTaniya Das 	.probe = ne_gcc_nord_probe,
1978*a4f780cdSTaniya Das 	.driver = {
1979*a4f780cdSTaniya Das 		.name = "negcc-nord",
1980*a4f780cdSTaniya Das 		.of_match_table = ne_gcc_nord_match_table,
1981*a4f780cdSTaniya Das 	},
1982*a4f780cdSTaniya Das };
1983*a4f780cdSTaniya Das 
1984*a4f780cdSTaniya Das module_platform_driver(ne_gcc_nord_driver);
1985*a4f780cdSTaniya Das 
1986*a4f780cdSTaniya Das MODULE_DESCRIPTION("QTI NEGCC NORD Driver");
1987*a4f780cdSTaniya Das MODULE_LICENSE("GPL");
1988