xref: /linux/drivers/clk/qcom/segcc-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-segcc.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 "common.h"
21*a4f780cdSTaniya Das #include "gdsc.h"
22*a4f780cdSTaniya Das #include "reset.h"
23*a4f780cdSTaniya Das 
24*a4f780cdSTaniya Das enum {
25*a4f780cdSTaniya Das 	DT_BI_TCXO,
26*a4f780cdSTaniya Das 	DT_SLEEP_CLK,
27*a4f780cdSTaniya Das };
28*a4f780cdSTaniya Das 
29*a4f780cdSTaniya Das enum {
30*a4f780cdSTaniya Das 	P_BI_TCXO,
31*a4f780cdSTaniya Das 	P_SE_GCC_GPLL0_OUT_EVEN,
32*a4f780cdSTaniya Das 	P_SE_GCC_GPLL0_OUT_MAIN,
33*a4f780cdSTaniya Das 	P_SE_GCC_GPLL2_OUT_MAIN,
34*a4f780cdSTaniya Das 	P_SE_GCC_GPLL4_OUT_MAIN,
35*a4f780cdSTaniya Das 	P_SE_GCC_GPLL5_OUT_MAIN,
36*a4f780cdSTaniya Das 	P_SLEEP_CLK,
37*a4f780cdSTaniya Das };
38*a4f780cdSTaniya Das 
39*a4f780cdSTaniya Das static struct clk_alpha_pll se_gcc_gpll0 = {
40*a4f780cdSTaniya Das 	.offset = 0x0,
41*a4f780cdSTaniya Das 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
42*a4f780cdSTaniya Das 	.clkr = {
43*a4f780cdSTaniya Das 		.enable_reg = 0x0,
44*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
45*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
46*a4f780cdSTaniya Das 			.name = "se_gcc_gpll0",
47*a4f780cdSTaniya Das 			.parent_data = &(const struct clk_parent_data) {
48*a4f780cdSTaniya Das 				.index = DT_BI_TCXO,
49*a4f780cdSTaniya Das 			},
50*a4f780cdSTaniya Das 			.num_parents = 1,
51*a4f780cdSTaniya Das 			.ops = &clk_alpha_pll_fixed_lucid_ole_ops,
52*a4f780cdSTaniya Das 		},
53*a4f780cdSTaniya Das 	},
54*a4f780cdSTaniya Das };
55*a4f780cdSTaniya Das 
56*a4f780cdSTaniya Das static const struct clk_div_table post_div_table_se_gcc_gpll0_out_even[] = {
57*a4f780cdSTaniya Das 	{ 0x1, 2 },
58*a4f780cdSTaniya Das 	{ }
59*a4f780cdSTaniya Das };
60*a4f780cdSTaniya Das 
61*a4f780cdSTaniya Das static struct clk_alpha_pll_postdiv se_gcc_gpll0_out_even = {
62*a4f780cdSTaniya Das 	.offset = 0x0,
63*a4f780cdSTaniya Das 	.post_div_shift = 10,
64*a4f780cdSTaniya Das 	.post_div_table = post_div_table_se_gcc_gpll0_out_even,
65*a4f780cdSTaniya Das 	.num_post_div = ARRAY_SIZE(post_div_table_se_gcc_gpll0_out_even),
66*a4f780cdSTaniya Das 	.width = 4,
67*a4f780cdSTaniya Das 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
68*a4f780cdSTaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
69*a4f780cdSTaniya Das 		.name = "se_gcc_gpll0_out_even",
70*a4f780cdSTaniya Das 		.parent_hws = (const struct clk_hw*[]) {
71*a4f780cdSTaniya Das 			&se_gcc_gpll0.clkr.hw,
72*a4f780cdSTaniya Das 		},
73*a4f780cdSTaniya Das 		.num_parents = 1,
74*a4f780cdSTaniya Das 		.ops = &clk_alpha_pll_postdiv_lucid_ole_ops,
75*a4f780cdSTaniya Das 	},
76*a4f780cdSTaniya Das };
77*a4f780cdSTaniya Das 
78*a4f780cdSTaniya Das static struct clk_alpha_pll se_gcc_gpll2 = {
79*a4f780cdSTaniya Das 	.offset = 0x2000,
80*a4f780cdSTaniya Das 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
81*a4f780cdSTaniya Das 	.clkr = {
82*a4f780cdSTaniya Das 		.enable_reg = 0x0,
83*a4f780cdSTaniya Das 		.enable_mask = BIT(2),
84*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
85*a4f780cdSTaniya Das 			.name = "se_gcc_gpll2",
86*a4f780cdSTaniya Das 			.parent_data = &(const struct clk_parent_data) {
87*a4f780cdSTaniya Das 				.index = DT_BI_TCXO,
88*a4f780cdSTaniya Das 			},
89*a4f780cdSTaniya Das 			.num_parents = 1,
90*a4f780cdSTaniya Das 			.ops = &clk_alpha_pll_fixed_lucid_ole_ops,
91*a4f780cdSTaniya Das 		},
92*a4f780cdSTaniya Das 	},
93*a4f780cdSTaniya Das };
94*a4f780cdSTaniya Das 
95*a4f780cdSTaniya Das static struct clk_alpha_pll se_gcc_gpll4 = {
96*a4f780cdSTaniya Das 	.offset = 0x4000,
97*a4f780cdSTaniya Das 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
98*a4f780cdSTaniya Das 	.clkr = {
99*a4f780cdSTaniya Das 		.enable_reg = 0x0,
100*a4f780cdSTaniya Das 		.enable_mask = BIT(4),
101*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
102*a4f780cdSTaniya Das 			.name = "se_gcc_gpll4",
103*a4f780cdSTaniya Das 			.parent_data = &(const struct clk_parent_data) {
104*a4f780cdSTaniya Das 				.index = DT_BI_TCXO,
105*a4f780cdSTaniya Das 			},
106*a4f780cdSTaniya Das 			.num_parents = 1,
107*a4f780cdSTaniya Das 			.ops = &clk_alpha_pll_fixed_lucid_ole_ops,
108*a4f780cdSTaniya Das 		},
109*a4f780cdSTaniya Das 	},
110*a4f780cdSTaniya Das };
111*a4f780cdSTaniya Das 
112*a4f780cdSTaniya Das static struct clk_alpha_pll se_gcc_gpll5 = {
113*a4f780cdSTaniya Das 	.offset = 0x5000,
114*a4f780cdSTaniya Das 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
115*a4f780cdSTaniya Das 	.clkr = {
116*a4f780cdSTaniya Das 		.enable_reg = 0x0,
117*a4f780cdSTaniya Das 		.enable_mask = BIT(5),
118*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
119*a4f780cdSTaniya Das 			.name = "se_gcc_gpll5",
120*a4f780cdSTaniya Das 			.parent_data = &(const struct clk_parent_data) {
121*a4f780cdSTaniya Das 				.index = DT_BI_TCXO,
122*a4f780cdSTaniya Das 			},
123*a4f780cdSTaniya Das 			.num_parents = 1,
124*a4f780cdSTaniya Das 			.ops = &clk_alpha_pll_fixed_lucid_ole_ops,
125*a4f780cdSTaniya Das 		},
126*a4f780cdSTaniya Das 	},
127*a4f780cdSTaniya Das };
128*a4f780cdSTaniya Das 
129*a4f780cdSTaniya Das static const struct parent_map se_gcc_parent_map_0[] = {
130*a4f780cdSTaniya Das 	{ P_BI_TCXO, 0 },
131*a4f780cdSTaniya Das 	{ P_SE_GCC_GPLL0_OUT_MAIN, 1 },
132*a4f780cdSTaniya Das 	{ P_SE_GCC_GPLL0_OUT_EVEN, 2 },
133*a4f780cdSTaniya Das };
134*a4f780cdSTaniya Das 
135*a4f780cdSTaniya Das static const struct clk_parent_data se_gcc_parent_data_0[] = {
136*a4f780cdSTaniya Das 	{ .index = DT_BI_TCXO },
137*a4f780cdSTaniya Das 	{ .hw = &se_gcc_gpll0.clkr.hw },
138*a4f780cdSTaniya Das 	{ .hw = &se_gcc_gpll0_out_even.clkr.hw },
139*a4f780cdSTaniya Das };
140*a4f780cdSTaniya Das 
141*a4f780cdSTaniya Das static const struct parent_map se_gcc_parent_map_1[] = {
142*a4f780cdSTaniya Das 	{ P_BI_TCXO, 0 },
143*a4f780cdSTaniya Das 	{ P_SE_GCC_GPLL0_OUT_MAIN, 1 },
144*a4f780cdSTaniya Das };
145*a4f780cdSTaniya Das 
146*a4f780cdSTaniya Das static const struct clk_parent_data se_gcc_parent_data_1[] = {
147*a4f780cdSTaniya Das 	{ .index = DT_BI_TCXO },
148*a4f780cdSTaniya Das 	{ .hw = &se_gcc_gpll0.clkr.hw },
149*a4f780cdSTaniya Das };
150*a4f780cdSTaniya Das 
151*a4f780cdSTaniya Das static const struct parent_map se_gcc_parent_map_2[] = {
152*a4f780cdSTaniya Das 	{ P_BI_TCXO, 0 },
153*a4f780cdSTaniya Das 	{ P_SE_GCC_GPLL0_OUT_MAIN, 1 },
154*a4f780cdSTaniya Das 	{ P_SLEEP_CLK, 5 },
155*a4f780cdSTaniya Das };
156*a4f780cdSTaniya Das 
157*a4f780cdSTaniya Das static const struct clk_parent_data se_gcc_parent_data_2[] = {
158*a4f780cdSTaniya Das 	{ .index = DT_BI_TCXO },
159*a4f780cdSTaniya Das 	{ .hw = &se_gcc_gpll0.clkr.hw },
160*a4f780cdSTaniya Das 	{ .index = DT_SLEEP_CLK },
161*a4f780cdSTaniya Das };
162*a4f780cdSTaniya Das 
163*a4f780cdSTaniya Das static const struct parent_map se_gcc_parent_map_3[] = {
164*a4f780cdSTaniya Das 	{ P_BI_TCXO, 0 },
165*a4f780cdSTaniya Das 	{ P_SE_GCC_GPLL0_OUT_MAIN, 1 },
166*a4f780cdSTaniya Das 	{ P_SE_GCC_GPLL5_OUT_MAIN, 3 },
167*a4f780cdSTaniya Das 	{ P_SE_GCC_GPLL4_OUT_MAIN, 5 },
168*a4f780cdSTaniya Das 	{ P_SE_GCC_GPLL2_OUT_MAIN, 6 },
169*a4f780cdSTaniya Das };
170*a4f780cdSTaniya Das 
171*a4f780cdSTaniya Das static const struct clk_parent_data se_gcc_parent_data_3[] = {
172*a4f780cdSTaniya Das 	{ .index = DT_BI_TCXO },
173*a4f780cdSTaniya Das 	{ .hw = &se_gcc_gpll0.clkr.hw },
174*a4f780cdSTaniya Das 	{ .hw = &se_gcc_gpll5.clkr.hw },
175*a4f780cdSTaniya Das 	{ .hw = &se_gcc_gpll4.clkr.hw },
176*a4f780cdSTaniya Das 	{ .hw = &se_gcc_gpll2.clkr.hw },
177*a4f780cdSTaniya Das };
178*a4f780cdSTaniya Das 
179*a4f780cdSTaniya Das static const struct parent_map se_gcc_parent_map_4[] = {
180*a4f780cdSTaniya Das 	{ P_BI_TCXO, 0 },
181*a4f780cdSTaniya Das 	{ P_SE_GCC_GPLL0_OUT_MAIN, 1 },
182*a4f780cdSTaniya Das 	{ P_SE_GCC_GPLL0_OUT_EVEN, 2 },
183*a4f780cdSTaniya Das 	{ P_SLEEP_CLK, 5 },
184*a4f780cdSTaniya Das };
185*a4f780cdSTaniya Das 
186*a4f780cdSTaniya Das static const struct clk_parent_data se_gcc_parent_data_4[] = {
187*a4f780cdSTaniya Das 	{ .index = DT_BI_TCXO },
188*a4f780cdSTaniya Das 	{ .hw = &se_gcc_gpll0.clkr.hw },
189*a4f780cdSTaniya Das 	{ .hw = &se_gcc_gpll0_out_even.clkr.hw },
190*a4f780cdSTaniya Das 	{ .index = DT_SLEEP_CLK },
191*a4f780cdSTaniya Das };
192*a4f780cdSTaniya Das 
193*a4f780cdSTaniya Das static const struct freq_tbl ftbl_se_gcc_eee_emac0_clk_src[] = {
194*a4f780cdSTaniya Das 	F(66666667, P_SE_GCC_GPLL0_OUT_MAIN, 9, 0, 0),
195*a4f780cdSTaniya Das 	F(100000000, P_SE_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
196*a4f780cdSTaniya Das 	{ }
197*a4f780cdSTaniya Das };
198*a4f780cdSTaniya Das 
199*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_eee_emac0_clk_src = {
200*a4f780cdSTaniya Das 	.cmd_rcgr = 0x240b8,
201*a4f780cdSTaniya Das 	.mnd_width = 16,
202*a4f780cdSTaniya Das 	.hid_width = 5,
203*a4f780cdSTaniya Das 	.parent_map = se_gcc_parent_map_2,
204*a4f780cdSTaniya Das 	.freq_tbl = ftbl_se_gcc_eee_emac0_clk_src,
205*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
206*a4f780cdSTaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
207*a4f780cdSTaniya Das 		.name = "se_gcc_eee_emac0_clk_src",
208*a4f780cdSTaniya Das 		.parent_data = se_gcc_parent_data_2,
209*a4f780cdSTaniya Das 		.num_parents = ARRAY_SIZE(se_gcc_parent_data_2),
210*a4f780cdSTaniya Das 		.flags = CLK_SET_RATE_PARENT,
211*a4f780cdSTaniya Das 		.ops = &clk_rcg2_shared_ops,
212*a4f780cdSTaniya Das 	},
213*a4f780cdSTaniya Das };
214*a4f780cdSTaniya Das 
215*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_eee_emac1_clk_src = {
216*a4f780cdSTaniya Das 	.cmd_rcgr = 0x250b8,
217*a4f780cdSTaniya Das 	.mnd_width = 16,
218*a4f780cdSTaniya Das 	.hid_width = 5,
219*a4f780cdSTaniya Das 	.parent_map = se_gcc_parent_map_2,
220*a4f780cdSTaniya Das 	.freq_tbl = ftbl_se_gcc_eee_emac0_clk_src,
221*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
222*a4f780cdSTaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
223*a4f780cdSTaniya Das 		.name = "se_gcc_eee_emac1_clk_src",
224*a4f780cdSTaniya Das 		.parent_data = se_gcc_parent_data_2,
225*a4f780cdSTaniya Das 		.num_parents = ARRAY_SIZE(se_gcc_parent_data_2),
226*a4f780cdSTaniya Das 		.flags = CLK_SET_RATE_PARENT,
227*a4f780cdSTaniya Das 		.ops = &clk_rcg2_shared_ops,
228*a4f780cdSTaniya Das 	},
229*a4f780cdSTaniya Das };
230*a4f780cdSTaniya Das 
231*a4f780cdSTaniya Das static const struct freq_tbl ftbl_se_gcc_emac0_phy_aux_clk_src[] = {
232*a4f780cdSTaniya Das 	F(19200000, P_BI_TCXO, 1, 0, 0),
233*a4f780cdSTaniya Das 	{ }
234*a4f780cdSTaniya Das };
235*a4f780cdSTaniya Das 
236*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_emac0_phy_aux_clk_src = {
237*a4f780cdSTaniya Das 	.cmd_rcgr = 0x24030,
238*a4f780cdSTaniya Das 	.mnd_width = 0,
239*a4f780cdSTaniya Das 	.hid_width = 5,
240*a4f780cdSTaniya Das 	.parent_map = se_gcc_parent_map_2,
241*a4f780cdSTaniya Das 	.freq_tbl = ftbl_se_gcc_emac0_phy_aux_clk_src,
242*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
243*a4f780cdSTaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
244*a4f780cdSTaniya Das 		.name = "se_gcc_emac0_phy_aux_clk_src",
245*a4f780cdSTaniya Das 		.parent_data = se_gcc_parent_data_2,
246*a4f780cdSTaniya Das 		.num_parents = ARRAY_SIZE(se_gcc_parent_data_2),
247*a4f780cdSTaniya Das 		.flags = CLK_SET_RATE_PARENT,
248*a4f780cdSTaniya Das 		.ops = &clk_rcg2_shared_ops,
249*a4f780cdSTaniya Das 	},
250*a4f780cdSTaniya Das };
251*a4f780cdSTaniya Das 
252*a4f780cdSTaniya Das static const struct freq_tbl ftbl_se_gcc_emac0_ptp_clk_src[] = {
253*a4f780cdSTaniya Das 	F(150000000, P_SE_GCC_GPLL0_OUT_MAIN, 4, 0, 0),
254*a4f780cdSTaniya Das 	F(250000000, P_SE_GCC_GPLL5_OUT_MAIN, 4, 0, 0),
255*a4f780cdSTaniya Das 	{ }
256*a4f780cdSTaniya Das };
257*a4f780cdSTaniya Das 
258*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_emac0_ptp_clk_src = {
259*a4f780cdSTaniya Das 	.cmd_rcgr = 0x24084,
260*a4f780cdSTaniya Das 	.mnd_width = 16,
261*a4f780cdSTaniya Das 	.hid_width = 5,
262*a4f780cdSTaniya Das 	.parent_map = se_gcc_parent_map_3,
263*a4f780cdSTaniya Das 	.freq_tbl = ftbl_se_gcc_emac0_ptp_clk_src,
264*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
265*a4f780cdSTaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
266*a4f780cdSTaniya Das 		.name = "se_gcc_emac0_ptp_clk_src",
267*a4f780cdSTaniya Das 		.parent_data = se_gcc_parent_data_3,
268*a4f780cdSTaniya Das 		.num_parents = ARRAY_SIZE(se_gcc_parent_data_3),
269*a4f780cdSTaniya Das 		.flags = CLK_SET_RATE_PARENT,
270*a4f780cdSTaniya Das 		.ops = &clk_rcg2_shared_ops,
271*a4f780cdSTaniya Das 	},
272*a4f780cdSTaniya Das };
273*a4f780cdSTaniya Das 
274*a4f780cdSTaniya Das static const struct freq_tbl ftbl_se_gcc_emac0_rgmii_clk_src[] = {
275*a4f780cdSTaniya Das 	F(75000000, P_SE_GCC_GPLL0_OUT_MAIN, 8, 0, 0),
276*a4f780cdSTaniya Das 	F(120000000, P_SE_GCC_GPLL0_OUT_MAIN, 5, 0, 0),
277*a4f780cdSTaniya Das 	F(250000000, P_SE_GCC_GPLL5_OUT_MAIN, 4, 0, 0),
278*a4f780cdSTaniya Das 	{ }
279*a4f780cdSTaniya Das };
280*a4f780cdSTaniya Das 
281*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_emac0_rgmii_clk_src = {
282*a4f780cdSTaniya Das 	.cmd_rcgr = 0x2406c,
283*a4f780cdSTaniya Das 	.mnd_width = 16,
284*a4f780cdSTaniya Das 	.hid_width = 5,
285*a4f780cdSTaniya Das 	.parent_map = se_gcc_parent_map_3,
286*a4f780cdSTaniya Das 	.freq_tbl = ftbl_se_gcc_emac0_rgmii_clk_src,
287*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
288*a4f780cdSTaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
289*a4f780cdSTaniya Das 		.name = "se_gcc_emac0_rgmii_clk_src",
290*a4f780cdSTaniya Das 		.parent_data = se_gcc_parent_data_3,
291*a4f780cdSTaniya Das 		.num_parents = ARRAY_SIZE(se_gcc_parent_data_3),
292*a4f780cdSTaniya Das 		.flags = CLK_SET_RATE_PARENT,
293*a4f780cdSTaniya Das 		.ops = &clk_rcg2_shared_ops,
294*a4f780cdSTaniya Das 	},
295*a4f780cdSTaniya Das };
296*a4f780cdSTaniya Das 
297*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_emac1_phy_aux_clk_src = {
298*a4f780cdSTaniya Das 	.cmd_rcgr = 0x25030,
299*a4f780cdSTaniya Das 	.mnd_width = 0,
300*a4f780cdSTaniya Das 	.hid_width = 5,
301*a4f780cdSTaniya Das 	.parent_map = se_gcc_parent_map_2,
302*a4f780cdSTaniya Das 	.freq_tbl = ftbl_se_gcc_emac0_phy_aux_clk_src,
303*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
304*a4f780cdSTaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
305*a4f780cdSTaniya Das 		.name = "se_gcc_emac1_phy_aux_clk_src",
306*a4f780cdSTaniya Das 		.parent_data = se_gcc_parent_data_2,
307*a4f780cdSTaniya Das 		.num_parents = ARRAY_SIZE(se_gcc_parent_data_2),
308*a4f780cdSTaniya Das 		.flags = CLK_SET_RATE_PARENT,
309*a4f780cdSTaniya Das 		.ops = &clk_rcg2_shared_ops,
310*a4f780cdSTaniya Das 	},
311*a4f780cdSTaniya Das };
312*a4f780cdSTaniya Das 
313*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_emac1_ptp_clk_src = {
314*a4f780cdSTaniya Das 	.cmd_rcgr = 0x25084,
315*a4f780cdSTaniya Das 	.mnd_width = 16,
316*a4f780cdSTaniya Das 	.hid_width = 5,
317*a4f780cdSTaniya Das 	.parent_map = se_gcc_parent_map_3,
318*a4f780cdSTaniya Das 	.freq_tbl = ftbl_se_gcc_emac0_ptp_clk_src,
319*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
320*a4f780cdSTaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
321*a4f780cdSTaniya Das 		.name = "se_gcc_emac1_ptp_clk_src",
322*a4f780cdSTaniya Das 		.parent_data = se_gcc_parent_data_3,
323*a4f780cdSTaniya Das 		.num_parents = ARRAY_SIZE(se_gcc_parent_data_3),
324*a4f780cdSTaniya Das 		.flags = CLK_SET_RATE_PARENT,
325*a4f780cdSTaniya Das 		.ops = &clk_rcg2_shared_ops,
326*a4f780cdSTaniya Das 	},
327*a4f780cdSTaniya Das };
328*a4f780cdSTaniya Das 
329*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_emac1_rgmii_clk_src = {
330*a4f780cdSTaniya Das 	.cmd_rcgr = 0x2506c,
331*a4f780cdSTaniya Das 	.mnd_width = 16,
332*a4f780cdSTaniya Das 	.hid_width = 5,
333*a4f780cdSTaniya Das 	.parent_map = se_gcc_parent_map_3,
334*a4f780cdSTaniya Das 	.freq_tbl = ftbl_se_gcc_emac0_rgmii_clk_src,
335*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
336*a4f780cdSTaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
337*a4f780cdSTaniya Das 		.name = "se_gcc_emac1_rgmii_clk_src",
338*a4f780cdSTaniya Das 		.parent_data = se_gcc_parent_data_3,
339*a4f780cdSTaniya Das 		.num_parents = ARRAY_SIZE(se_gcc_parent_data_3),
340*a4f780cdSTaniya Das 		.flags = CLK_SET_RATE_PARENT,
341*a4f780cdSTaniya Das 		.ops = &clk_rcg2_shared_ops,
342*a4f780cdSTaniya Das 	},
343*a4f780cdSTaniya Das };
344*a4f780cdSTaniya Das 
345*a4f780cdSTaniya Das static const struct freq_tbl ftbl_se_gcc_gp1_clk_src[] = {
346*a4f780cdSTaniya Das 	F(66666667, P_SE_GCC_GPLL0_OUT_MAIN, 9, 0, 0),
347*a4f780cdSTaniya Das 	F(100000000, P_SE_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
348*a4f780cdSTaniya Das 	F(200000000, P_SE_GCC_GPLL0_OUT_MAIN, 3, 0, 0),
349*a4f780cdSTaniya Das 	{ }
350*a4f780cdSTaniya Das };
351*a4f780cdSTaniya Das 
352*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_gp1_clk_src = {
353*a4f780cdSTaniya Das 	.cmd_rcgr = 0x19004,
354*a4f780cdSTaniya Das 	.mnd_width = 16,
355*a4f780cdSTaniya Das 	.hid_width = 5,
356*a4f780cdSTaniya Das 	.parent_map = se_gcc_parent_map_4,
357*a4f780cdSTaniya Das 	.freq_tbl = ftbl_se_gcc_gp1_clk_src,
358*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
359*a4f780cdSTaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
360*a4f780cdSTaniya Das 		.name = "se_gcc_gp1_clk_src",
361*a4f780cdSTaniya Das 		.parent_data = se_gcc_parent_data_4,
362*a4f780cdSTaniya Das 		.num_parents = ARRAY_SIZE(se_gcc_parent_data_4),
363*a4f780cdSTaniya Das 		.flags = CLK_SET_RATE_PARENT,
364*a4f780cdSTaniya Das 		.ops = &clk_rcg2_shared_ops,
365*a4f780cdSTaniya Das 	},
366*a4f780cdSTaniya Das };
367*a4f780cdSTaniya Das 
368*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_gp2_clk_src = {
369*a4f780cdSTaniya Das 	.cmd_rcgr = 0x1a004,
370*a4f780cdSTaniya Das 	.mnd_width = 16,
371*a4f780cdSTaniya Das 	.hid_width = 5,
372*a4f780cdSTaniya Das 	.parent_map = se_gcc_parent_map_4,
373*a4f780cdSTaniya Das 	.freq_tbl = ftbl_se_gcc_gp1_clk_src,
374*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
375*a4f780cdSTaniya Das 	.clkr.hw.init = &(const struct clk_init_data) {
376*a4f780cdSTaniya Das 		.name = "se_gcc_gp2_clk_src",
377*a4f780cdSTaniya Das 		.parent_data = se_gcc_parent_data_4,
378*a4f780cdSTaniya Das 		.num_parents = ARRAY_SIZE(se_gcc_parent_data_4),
379*a4f780cdSTaniya Das 		.flags = CLK_SET_RATE_PARENT,
380*a4f780cdSTaniya Das 		.ops = &clk_rcg2_shared_ops,
381*a4f780cdSTaniya Das 	},
382*a4f780cdSTaniya Das };
383*a4f780cdSTaniya Das 
384*a4f780cdSTaniya Das static const struct freq_tbl ftbl_se_gcc_qupv3_wrap0_s0_clk_src[] = {
385*a4f780cdSTaniya Das 	F(7372800, P_SE_GCC_GPLL0_OUT_MAIN, 1, 192, 15625),
386*a4f780cdSTaniya Das 	F(14745600, P_SE_GCC_GPLL0_OUT_MAIN, 1, 384, 15625),
387*a4f780cdSTaniya Das 	F(19200000, P_BI_TCXO, 1, 0, 0),
388*a4f780cdSTaniya Das 	F(29491200, P_SE_GCC_GPLL0_OUT_MAIN, 1, 768, 15625),
389*a4f780cdSTaniya Das 	F(32000000, P_SE_GCC_GPLL0_OUT_MAIN, 1, 4, 75),
390*a4f780cdSTaniya Das 	F(48000000, P_SE_GCC_GPLL0_OUT_MAIN, 1, 2, 25),
391*a4f780cdSTaniya Das 	F(51200000, P_SE_GCC_GPLL0_OUT_MAIN, 1, 32, 375),
392*a4f780cdSTaniya Das 	F(64000000, P_SE_GCC_GPLL0_OUT_MAIN, 1, 8, 75),
393*a4f780cdSTaniya Das 	F(66666667, P_SE_GCC_GPLL0_OUT_MAIN, 9, 0, 0),
394*a4f780cdSTaniya Das 	F(75000000, P_SE_GCC_GPLL0_OUT_MAIN, 8, 0, 0),
395*a4f780cdSTaniya Das 	F(80000000, P_SE_GCC_GPLL0_OUT_MAIN, 1, 2, 15),
396*a4f780cdSTaniya Das 	F(96000000, P_SE_GCC_GPLL0_OUT_MAIN, 1, 4, 25),
397*a4f780cdSTaniya Das 	F(100000000, P_SE_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
398*a4f780cdSTaniya Das 	F(102400000, P_SE_GCC_GPLL0_OUT_MAIN, 1, 64, 375),
399*a4f780cdSTaniya Das 	F(112000000, P_SE_GCC_GPLL0_OUT_MAIN, 1, 14, 75),
400*a4f780cdSTaniya Das 	F(117964800, P_SE_GCC_GPLL0_OUT_MAIN, 1, 3072, 15625),
401*a4f780cdSTaniya Das 	F(120000000, P_SE_GCC_GPLL0_OUT_MAIN, 5, 0, 0),
402*a4f780cdSTaniya Das 	{ }
403*a4f780cdSTaniya Das };
404*a4f780cdSTaniya Das 
405*a4f780cdSTaniya Das static struct clk_init_data se_gcc_qupv3_wrap0_s0_clk_src_init = {
406*a4f780cdSTaniya Das 	.name = "se_gcc_qupv3_wrap0_s0_clk_src",
407*a4f780cdSTaniya Das 	.parent_data = se_gcc_parent_data_1,
408*a4f780cdSTaniya Das 	.num_parents = ARRAY_SIZE(se_gcc_parent_data_1),
409*a4f780cdSTaniya Das 	.flags = CLK_SET_RATE_PARENT,
410*a4f780cdSTaniya Das 	.ops = &clk_rcg2_shared_no_init_park_ops,
411*a4f780cdSTaniya Das };
412*a4f780cdSTaniya Das 
413*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_qupv3_wrap0_s0_clk_src = {
414*a4f780cdSTaniya Das 	.cmd_rcgr = 0x2616c,
415*a4f780cdSTaniya Das 	.mnd_width = 16,
416*a4f780cdSTaniya Das 	.hid_width = 5,
417*a4f780cdSTaniya Das 	.parent_map = se_gcc_parent_map_1,
418*a4f780cdSTaniya Das 	.freq_tbl = ftbl_se_gcc_qupv3_wrap0_s0_clk_src,
419*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
420*a4f780cdSTaniya Das 	.clkr.hw.init = &se_gcc_qupv3_wrap0_s0_clk_src_init,
421*a4f780cdSTaniya Das };
422*a4f780cdSTaniya Das 
423*a4f780cdSTaniya Das static struct clk_init_data se_gcc_qupv3_wrap0_s1_clk_src_init = {
424*a4f780cdSTaniya Das 	.name = "se_gcc_qupv3_wrap0_s1_clk_src",
425*a4f780cdSTaniya Das 	.parent_data = se_gcc_parent_data_1,
426*a4f780cdSTaniya Das 	.num_parents = ARRAY_SIZE(se_gcc_parent_data_1),
427*a4f780cdSTaniya Das 	.flags = CLK_SET_RATE_PARENT,
428*a4f780cdSTaniya Das 	.ops = &clk_rcg2_shared_no_init_park_ops,
429*a4f780cdSTaniya Das };
430*a4f780cdSTaniya Das 
431*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_qupv3_wrap0_s1_clk_src = {
432*a4f780cdSTaniya Das 	.cmd_rcgr = 0x262a8,
433*a4f780cdSTaniya Das 	.mnd_width = 16,
434*a4f780cdSTaniya Das 	.hid_width = 5,
435*a4f780cdSTaniya Das 	.parent_map = se_gcc_parent_map_1,
436*a4f780cdSTaniya Das 	.freq_tbl = ftbl_se_gcc_qupv3_wrap0_s0_clk_src,
437*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
438*a4f780cdSTaniya Das 	.clkr.hw.init = &se_gcc_qupv3_wrap0_s1_clk_src_init,
439*a4f780cdSTaniya Das };
440*a4f780cdSTaniya Das 
441*a4f780cdSTaniya Das static const struct freq_tbl ftbl_se_gcc_qupv3_wrap0_s2_clk_src[] = {
442*a4f780cdSTaniya Das 	F(7372800, P_SE_GCC_GPLL0_OUT_MAIN, 1, 192, 15625),
443*a4f780cdSTaniya Das 	F(14745600, P_SE_GCC_GPLL0_OUT_MAIN, 1, 384, 15625),
444*a4f780cdSTaniya Das 	F(19200000, P_BI_TCXO, 1, 0, 0),
445*a4f780cdSTaniya Das 	F(29491200, P_SE_GCC_GPLL0_OUT_MAIN, 1, 768, 15625),
446*a4f780cdSTaniya Das 	F(32000000, P_SE_GCC_GPLL0_OUT_MAIN, 1, 4, 75),
447*a4f780cdSTaniya Das 	F(48000000, P_SE_GCC_GPLL0_OUT_MAIN, 1, 2, 25),
448*a4f780cdSTaniya Das 	F(51200000, P_SE_GCC_GPLL0_OUT_MAIN, 1, 32, 375),
449*a4f780cdSTaniya Das 	F(64000000, P_SE_GCC_GPLL0_OUT_MAIN, 1, 8, 75),
450*a4f780cdSTaniya Das 	F(66666667, P_SE_GCC_GPLL0_OUT_MAIN, 9, 0, 0),
451*a4f780cdSTaniya Das 	F(75000000, P_SE_GCC_GPLL0_OUT_MAIN, 8, 0, 0),
452*a4f780cdSTaniya Das 	F(80000000, P_SE_GCC_GPLL0_OUT_MAIN, 1, 2, 15),
453*a4f780cdSTaniya Das 	F(96000000, P_SE_GCC_GPLL0_OUT_MAIN, 1, 4, 25),
454*a4f780cdSTaniya Das 	F(100000000, P_SE_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
455*a4f780cdSTaniya Das 	{ }
456*a4f780cdSTaniya Das };
457*a4f780cdSTaniya Das 
458*a4f780cdSTaniya Das static struct clk_init_data se_gcc_qupv3_wrap0_s2_clk_src_init = {
459*a4f780cdSTaniya Das 	.name = "se_gcc_qupv3_wrap0_s2_clk_src",
460*a4f780cdSTaniya Das 	.parent_data = se_gcc_parent_data_1,
461*a4f780cdSTaniya Das 	.num_parents = ARRAY_SIZE(se_gcc_parent_data_1),
462*a4f780cdSTaniya Das 	.flags = CLK_SET_RATE_PARENT,
463*a4f780cdSTaniya Das 	.ops = &clk_rcg2_shared_no_init_park_ops,
464*a4f780cdSTaniya Das };
465*a4f780cdSTaniya Das 
466*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_qupv3_wrap0_s2_clk_src = {
467*a4f780cdSTaniya Das 	.cmd_rcgr = 0x263e4,
468*a4f780cdSTaniya Das 	.mnd_width = 16,
469*a4f780cdSTaniya Das 	.hid_width = 5,
470*a4f780cdSTaniya Das 	.parent_map = se_gcc_parent_map_1,
471*a4f780cdSTaniya Das 	.freq_tbl = ftbl_se_gcc_qupv3_wrap0_s2_clk_src,
472*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
473*a4f780cdSTaniya Das 	.clkr.hw.init = &se_gcc_qupv3_wrap0_s2_clk_src_init,
474*a4f780cdSTaniya Das };
475*a4f780cdSTaniya Das 
476*a4f780cdSTaniya Das static struct clk_init_data se_gcc_qupv3_wrap0_s3_clk_src_init = {
477*a4f780cdSTaniya Das 	.name = "se_gcc_qupv3_wrap0_s3_clk_src",
478*a4f780cdSTaniya Das 	.parent_data = se_gcc_parent_data_1,
479*a4f780cdSTaniya Das 	.num_parents = ARRAY_SIZE(se_gcc_parent_data_1),
480*a4f780cdSTaniya Das 	.flags = CLK_SET_RATE_PARENT,
481*a4f780cdSTaniya Das 	.ops = &clk_rcg2_shared_no_init_park_ops,
482*a4f780cdSTaniya Das };
483*a4f780cdSTaniya Das 
484*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_qupv3_wrap0_s3_clk_src = {
485*a4f780cdSTaniya Das 	.cmd_rcgr = 0x26520,
486*a4f780cdSTaniya Das 	.mnd_width = 16,
487*a4f780cdSTaniya Das 	.hid_width = 5,
488*a4f780cdSTaniya Das 	.parent_map = se_gcc_parent_map_1,
489*a4f780cdSTaniya Das 	.freq_tbl = ftbl_se_gcc_qupv3_wrap0_s2_clk_src,
490*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
491*a4f780cdSTaniya Das 	.clkr.hw.init = &se_gcc_qupv3_wrap0_s3_clk_src_init,
492*a4f780cdSTaniya Das };
493*a4f780cdSTaniya Das 
494*a4f780cdSTaniya Das static struct clk_init_data se_gcc_qupv3_wrap0_s4_clk_src_init = {
495*a4f780cdSTaniya Das 	.name = "se_gcc_qupv3_wrap0_s4_clk_src",
496*a4f780cdSTaniya Das 	.parent_data = se_gcc_parent_data_1,
497*a4f780cdSTaniya Das 	.num_parents = ARRAY_SIZE(se_gcc_parent_data_1),
498*a4f780cdSTaniya Das 	.flags = CLK_SET_RATE_PARENT,
499*a4f780cdSTaniya Das 	.ops = &clk_rcg2_shared_no_init_park_ops,
500*a4f780cdSTaniya Das };
501*a4f780cdSTaniya Das 
502*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_qupv3_wrap0_s4_clk_src = {
503*a4f780cdSTaniya Das 	.cmd_rcgr = 0x2665c,
504*a4f780cdSTaniya Das 	.mnd_width = 16,
505*a4f780cdSTaniya Das 	.hid_width = 5,
506*a4f780cdSTaniya Das 	.parent_map = se_gcc_parent_map_1,
507*a4f780cdSTaniya Das 	.freq_tbl = ftbl_se_gcc_qupv3_wrap0_s2_clk_src,
508*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
509*a4f780cdSTaniya Das 	.clkr.hw.init = &se_gcc_qupv3_wrap0_s4_clk_src_init,
510*a4f780cdSTaniya Das };
511*a4f780cdSTaniya Das 
512*a4f780cdSTaniya Das static struct clk_init_data se_gcc_qupv3_wrap0_s5_clk_src_init = {
513*a4f780cdSTaniya Das 	.name = "se_gcc_qupv3_wrap0_s5_clk_src",
514*a4f780cdSTaniya Das 	.parent_data = se_gcc_parent_data_1,
515*a4f780cdSTaniya Das 	.num_parents = ARRAY_SIZE(se_gcc_parent_data_1),
516*a4f780cdSTaniya Das 	.flags = CLK_SET_RATE_PARENT,
517*a4f780cdSTaniya Das 	.ops = &clk_rcg2_shared_no_init_park_ops,
518*a4f780cdSTaniya Das };
519*a4f780cdSTaniya Das 
520*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_qupv3_wrap0_s5_clk_src = {
521*a4f780cdSTaniya Das 	.cmd_rcgr = 0x26798,
522*a4f780cdSTaniya Das 	.mnd_width = 16,
523*a4f780cdSTaniya Das 	.hid_width = 5,
524*a4f780cdSTaniya Das 	.parent_map = se_gcc_parent_map_1,
525*a4f780cdSTaniya Das 	.freq_tbl = ftbl_se_gcc_qupv3_wrap0_s2_clk_src,
526*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
527*a4f780cdSTaniya Das 	.clkr.hw.init = &se_gcc_qupv3_wrap0_s5_clk_src_init,
528*a4f780cdSTaniya Das };
529*a4f780cdSTaniya Das 
530*a4f780cdSTaniya Das static struct clk_init_data se_gcc_qupv3_wrap0_s6_clk_src_init = {
531*a4f780cdSTaniya Das 	.name = "se_gcc_qupv3_wrap0_s6_clk_src",
532*a4f780cdSTaniya Das 	.parent_data = se_gcc_parent_data_1,
533*a4f780cdSTaniya Das 	.num_parents = ARRAY_SIZE(se_gcc_parent_data_1),
534*a4f780cdSTaniya Das 	.flags = CLK_SET_RATE_PARENT,
535*a4f780cdSTaniya Das 	.ops = &clk_rcg2_shared_no_init_park_ops,
536*a4f780cdSTaniya Das };
537*a4f780cdSTaniya Das 
538*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_qupv3_wrap0_s6_clk_src = {
539*a4f780cdSTaniya Das 	.cmd_rcgr = 0x268d4,
540*a4f780cdSTaniya Das 	.mnd_width = 16,
541*a4f780cdSTaniya Das 	.hid_width = 5,
542*a4f780cdSTaniya Das 	.parent_map = se_gcc_parent_map_1,
543*a4f780cdSTaniya Das 	.freq_tbl = ftbl_se_gcc_qupv3_wrap0_s2_clk_src,
544*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
545*a4f780cdSTaniya Das 	.clkr.hw.init = &se_gcc_qupv3_wrap0_s6_clk_src_init,
546*a4f780cdSTaniya Das };
547*a4f780cdSTaniya Das 
548*a4f780cdSTaniya Das static struct clk_init_data se_gcc_qupv3_wrap1_s0_clk_src_init = {
549*a4f780cdSTaniya Das 	.name = "se_gcc_qupv3_wrap1_s0_clk_src",
550*a4f780cdSTaniya Das 	.parent_data = se_gcc_parent_data_0,
551*a4f780cdSTaniya Das 	.num_parents = ARRAY_SIZE(se_gcc_parent_data_0),
552*a4f780cdSTaniya Das 	.flags = CLK_SET_RATE_PARENT,
553*a4f780cdSTaniya Das 	.ops = &clk_rcg2_shared_no_init_park_ops,
554*a4f780cdSTaniya Das };
555*a4f780cdSTaniya Das 
556*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_qupv3_wrap1_s0_clk_src = {
557*a4f780cdSTaniya Das 	.cmd_rcgr = 0x2716c,
558*a4f780cdSTaniya Das 	.mnd_width = 16,
559*a4f780cdSTaniya Das 	.hid_width = 5,
560*a4f780cdSTaniya Das 	.parent_map = se_gcc_parent_map_0,
561*a4f780cdSTaniya Das 	.freq_tbl = ftbl_se_gcc_qupv3_wrap0_s0_clk_src,
562*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
563*a4f780cdSTaniya Das 	.clkr.hw.init = &se_gcc_qupv3_wrap1_s0_clk_src_init,
564*a4f780cdSTaniya Das };
565*a4f780cdSTaniya Das 
566*a4f780cdSTaniya Das static struct clk_init_data se_gcc_qupv3_wrap1_s1_clk_src_init = {
567*a4f780cdSTaniya Das 	.name = "se_gcc_qupv3_wrap1_s1_clk_src",
568*a4f780cdSTaniya Das 	.parent_data = se_gcc_parent_data_0,
569*a4f780cdSTaniya Das 	.num_parents = ARRAY_SIZE(se_gcc_parent_data_0),
570*a4f780cdSTaniya Das 	.flags = CLK_SET_RATE_PARENT,
571*a4f780cdSTaniya Das 	.ops = &clk_rcg2_shared_no_init_park_ops,
572*a4f780cdSTaniya Das };
573*a4f780cdSTaniya Das 
574*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_qupv3_wrap1_s1_clk_src = {
575*a4f780cdSTaniya Das 	.cmd_rcgr = 0x272a8,
576*a4f780cdSTaniya Das 	.mnd_width = 16,
577*a4f780cdSTaniya Das 	.hid_width = 5,
578*a4f780cdSTaniya Das 	.parent_map = se_gcc_parent_map_0,
579*a4f780cdSTaniya Das 	.freq_tbl = ftbl_se_gcc_qupv3_wrap0_s0_clk_src,
580*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
581*a4f780cdSTaniya Das 	.clkr.hw.init = &se_gcc_qupv3_wrap1_s1_clk_src_init,
582*a4f780cdSTaniya Das };
583*a4f780cdSTaniya Das 
584*a4f780cdSTaniya Das static struct clk_init_data se_gcc_qupv3_wrap1_s2_clk_src_init = {
585*a4f780cdSTaniya Das 	.name = "se_gcc_qupv3_wrap1_s2_clk_src",
586*a4f780cdSTaniya Das 	.parent_data = se_gcc_parent_data_0,
587*a4f780cdSTaniya Das 	.num_parents = ARRAY_SIZE(se_gcc_parent_data_0),
588*a4f780cdSTaniya Das 	.flags = CLK_SET_RATE_PARENT,
589*a4f780cdSTaniya Das 	.ops = &clk_rcg2_shared_no_init_park_ops,
590*a4f780cdSTaniya Das };
591*a4f780cdSTaniya Das 
592*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_qupv3_wrap1_s2_clk_src = {
593*a4f780cdSTaniya Das 	.cmd_rcgr = 0x273e4,
594*a4f780cdSTaniya Das 	.mnd_width = 16,
595*a4f780cdSTaniya Das 	.hid_width = 5,
596*a4f780cdSTaniya Das 	.parent_map = se_gcc_parent_map_0,
597*a4f780cdSTaniya Das 	.freq_tbl = ftbl_se_gcc_qupv3_wrap0_s2_clk_src,
598*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
599*a4f780cdSTaniya Das 	.clkr.hw.init = &se_gcc_qupv3_wrap1_s2_clk_src_init,
600*a4f780cdSTaniya Das };
601*a4f780cdSTaniya Das 
602*a4f780cdSTaniya Das static struct clk_init_data se_gcc_qupv3_wrap1_s3_clk_src_init = {
603*a4f780cdSTaniya Das 	.name = "se_gcc_qupv3_wrap1_s3_clk_src",
604*a4f780cdSTaniya Das 	.parent_data = se_gcc_parent_data_0,
605*a4f780cdSTaniya Das 	.num_parents = ARRAY_SIZE(se_gcc_parent_data_0),
606*a4f780cdSTaniya Das 	.flags = CLK_SET_RATE_PARENT,
607*a4f780cdSTaniya Das 	.ops = &clk_rcg2_shared_no_init_park_ops,
608*a4f780cdSTaniya Das };
609*a4f780cdSTaniya Das 
610*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_qupv3_wrap1_s3_clk_src = {
611*a4f780cdSTaniya Das 	.cmd_rcgr = 0x27520,
612*a4f780cdSTaniya Das 	.mnd_width = 16,
613*a4f780cdSTaniya Das 	.hid_width = 5,
614*a4f780cdSTaniya Das 	.parent_map = se_gcc_parent_map_0,
615*a4f780cdSTaniya Das 	.freq_tbl = ftbl_se_gcc_qupv3_wrap0_s2_clk_src,
616*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
617*a4f780cdSTaniya Das 	.clkr.hw.init = &se_gcc_qupv3_wrap1_s3_clk_src_init,
618*a4f780cdSTaniya Das };
619*a4f780cdSTaniya Das 
620*a4f780cdSTaniya Das static struct clk_init_data se_gcc_qupv3_wrap1_s4_clk_src_init = {
621*a4f780cdSTaniya Das 	.name = "se_gcc_qupv3_wrap1_s4_clk_src",
622*a4f780cdSTaniya Das 	.parent_data = se_gcc_parent_data_0,
623*a4f780cdSTaniya Das 	.num_parents = ARRAY_SIZE(se_gcc_parent_data_0),
624*a4f780cdSTaniya Das 	.flags = CLK_SET_RATE_PARENT,
625*a4f780cdSTaniya Das 	.ops = &clk_rcg2_shared_no_init_park_ops,
626*a4f780cdSTaniya Das };
627*a4f780cdSTaniya Das 
628*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_qupv3_wrap1_s4_clk_src = {
629*a4f780cdSTaniya Das 	.cmd_rcgr = 0x2765c,
630*a4f780cdSTaniya Das 	.mnd_width = 16,
631*a4f780cdSTaniya Das 	.hid_width = 5,
632*a4f780cdSTaniya Das 	.parent_map = se_gcc_parent_map_0,
633*a4f780cdSTaniya Das 	.freq_tbl = ftbl_se_gcc_qupv3_wrap0_s2_clk_src,
634*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
635*a4f780cdSTaniya Das 	.clkr.hw.init = &se_gcc_qupv3_wrap1_s4_clk_src_init,
636*a4f780cdSTaniya Das };
637*a4f780cdSTaniya Das 
638*a4f780cdSTaniya Das static struct clk_init_data se_gcc_qupv3_wrap1_s5_clk_src_init = {
639*a4f780cdSTaniya Das 	.name = "se_gcc_qupv3_wrap1_s5_clk_src",
640*a4f780cdSTaniya Das 	.parent_data = se_gcc_parent_data_0,
641*a4f780cdSTaniya Das 	.num_parents = ARRAY_SIZE(se_gcc_parent_data_0),
642*a4f780cdSTaniya Das 	.flags = CLK_SET_RATE_PARENT,
643*a4f780cdSTaniya Das 	.ops = &clk_rcg2_shared_no_init_park_ops,
644*a4f780cdSTaniya Das };
645*a4f780cdSTaniya Das 
646*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_qupv3_wrap1_s5_clk_src = {
647*a4f780cdSTaniya Das 	.cmd_rcgr = 0x27798,
648*a4f780cdSTaniya Das 	.mnd_width = 16,
649*a4f780cdSTaniya Das 	.hid_width = 5,
650*a4f780cdSTaniya Das 	.parent_map = se_gcc_parent_map_0,
651*a4f780cdSTaniya Das 	.freq_tbl = ftbl_se_gcc_qupv3_wrap0_s2_clk_src,
652*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
653*a4f780cdSTaniya Das 	.clkr.hw.init = &se_gcc_qupv3_wrap1_s5_clk_src_init,
654*a4f780cdSTaniya Das };
655*a4f780cdSTaniya Das 
656*a4f780cdSTaniya Das static struct clk_init_data se_gcc_qupv3_wrap1_s6_clk_src_init = {
657*a4f780cdSTaniya Das 	.name = "se_gcc_qupv3_wrap1_s6_clk_src",
658*a4f780cdSTaniya Das 	.parent_data = se_gcc_parent_data_0,
659*a4f780cdSTaniya Das 	.num_parents = ARRAY_SIZE(se_gcc_parent_data_0),
660*a4f780cdSTaniya Das 	.flags = CLK_SET_RATE_PARENT,
661*a4f780cdSTaniya Das 	.ops = &clk_rcg2_shared_no_init_park_ops,
662*a4f780cdSTaniya Das };
663*a4f780cdSTaniya Das 
664*a4f780cdSTaniya Das static struct clk_rcg2 se_gcc_qupv3_wrap1_s6_clk_src = {
665*a4f780cdSTaniya Das 	.cmd_rcgr = 0x278d4,
666*a4f780cdSTaniya Das 	.mnd_width = 16,
667*a4f780cdSTaniya Das 	.hid_width = 5,
668*a4f780cdSTaniya Das 	.parent_map = se_gcc_parent_map_0,
669*a4f780cdSTaniya Das 	.freq_tbl = ftbl_se_gcc_qupv3_wrap0_s2_clk_src,
670*a4f780cdSTaniya Das 	.hw_clk_ctrl = true,
671*a4f780cdSTaniya Das 	.clkr.hw.init = &se_gcc_qupv3_wrap1_s6_clk_src_init,
672*a4f780cdSTaniya Das };
673*a4f780cdSTaniya Das 
674*a4f780cdSTaniya Das static struct clk_branch se_gcc_eee_emac0_clk = {
675*a4f780cdSTaniya Das 	.halt_reg = 0x240b4,
676*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
677*a4f780cdSTaniya Das 	.clkr = {
678*a4f780cdSTaniya Das 		.enable_reg = 0x240b4,
679*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
680*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
681*a4f780cdSTaniya Das 			.name = "se_gcc_eee_emac0_clk",
682*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
683*a4f780cdSTaniya Das 				&se_gcc_eee_emac0_clk_src.clkr.hw,
684*a4f780cdSTaniya Das 			},
685*a4f780cdSTaniya Das 			.num_parents = 1,
686*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
687*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
688*a4f780cdSTaniya Das 		},
689*a4f780cdSTaniya Das 	},
690*a4f780cdSTaniya Das };
691*a4f780cdSTaniya Das 
692*a4f780cdSTaniya Das static struct clk_branch se_gcc_eee_emac1_clk = {
693*a4f780cdSTaniya Das 	.halt_reg = 0x250b4,
694*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
695*a4f780cdSTaniya Das 	.clkr = {
696*a4f780cdSTaniya Das 		.enable_reg = 0x250b4,
697*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
698*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
699*a4f780cdSTaniya Das 			.name = "se_gcc_eee_emac1_clk",
700*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
701*a4f780cdSTaniya Das 				&se_gcc_eee_emac1_clk_src.clkr.hw,
702*a4f780cdSTaniya Das 			},
703*a4f780cdSTaniya Das 			.num_parents = 1,
704*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
705*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
706*a4f780cdSTaniya Das 		},
707*a4f780cdSTaniya Das 	},
708*a4f780cdSTaniya Das };
709*a4f780cdSTaniya Das 
710*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac0_axi_clk = {
711*a4f780cdSTaniya Das 	.halt_reg = 0x2401c,
712*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
713*a4f780cdSTaniya Das 	.hwcg_reg = 0x2401c,
714*a4f780cdSTaniya Das 	.hwcg_bit = 1,
715*a4f780cdSTaniya Das 	.clkr = {
716*a4f780cdSTaniya Das 		.enable_reg = 0x2401c,
717*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
718*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
719*a4f780cdSTaniya Das 			.name = "se_gcc_emac0_axi_clk",
720*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
721*a4f780cdSTaniya Das 		},
722*a4f780cdSTaniya Das 	},
723*a4f780cdSTaniya Das };
724*a4f780cdSTaniya Das 
725*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac0_cc_sgmiiphy_rx_clk = {
726*a4f780cdSTaniya Das 	.halt_reg = 0x24064,
727*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
728*a4f780cdSTaniya Das 	.clkr = {
729*a4f780cdSTaniya Das 		.enable_reg = 0x24064,
730*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
731*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
732*a4f780cdSTaniya Das 			.name = "se_gcc_emac0_cc_sgmiiphy_rx_clk",
733*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
734*a4f780cdSTaniya Das 		},
735*a4f780cdSTaniya Das 	},
736*a4f780cdSTaniya Das };
737*a4f780cdSTaniya Das 
738*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac0_cc_sgmiiphy_tx_clk = {
739*a4f780cdSTaniya Das 	.halt_reg = 0x2405c,
740*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
741*a4f780cdSTaniya Das 	.clkr = {
742*a4f780cdSTaniya Das 		.enable_reg = 0x2405c,
743*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
744*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
745*a4f780cdSTaniya Das 			.name = "se_gcc_emac0_cc_sgmiiphy_tx_clk",
746*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
747*a4f780cdSTaniya Das 		},
748*a4f780cdSTaniya Das 	},
749*a4f780cdSTaniya Das };
750*a4f780cdSTaniya Das 
751*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac0_phy_aux_clk = {
752*a4f780cdSTaniya Das 	.halt_reg = 0x2402c,
753*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
754*a4f780cdSTaniya Das 	.clkr = {
755*a4f780cdSTaniya Das 		.enable_reg = 0x2402c,
756*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
757*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
758*a4f780cdSTaniya Das 			.name = "se_gcc_emac0_phy_aux_clk",
759*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
760*a4f780cdSTaniya Das 				&se_gcc_emac0_phy_aux_clk_src.clkr.hw,
761*a4f780cdSTaniya Das 			},
762*a4f780cdSTaniya Das 			.num_parents = 1,
763*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
764*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
765*a4f780cdSTaniya Das 		},
766*a4f780cdSTaniya Das 	},
767*a4f780cdSTaniya Das };
768*a4f780cdSTaniya Das 
769*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac0_ptp_clk = {
770*a4f780cdSTaniya Das 	.halt_reg = 0x24048,
771*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
772*a4f780cdSTaniya Das 	.clkr = {
773*a4f780cdSTaniya Das 		.enable_reg = 0x24048,
774*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
775*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
776*a4f780cdSTaniya Das 			.name = "se_gcc_emac0_ptp_clk",
777*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
778*a4f780cdSTaniya Das 				&se_gcc_emac0_ptp_clk_src.clkr.hw,
779*a4f780cdSTaniya Das 			},
780*a4f780cdSTaniya Das 			.num_parents = 1,
781*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
782*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
783*a4f780cdSTaniya Das 		},
784*a4f780cdSTaniya Das 	},
785*a4f780cdSTaniya Das };
786*a4f780cdSTaniya Das 
787*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac0_rgmii_clk = {
788*a4f780cdSTaniya Das 	.halt_reg = 0x24058,
789*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
790*a4f780cdSTaniya Das 	.clkr = {
791*a4f780cdSTaniya Das 		.enable_reg = 0x24058,
792*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
793*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
794*a4f780cdSTaniya Das 			.name = "se_gcc_emac0_rgmii_clk",
795*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
796*a4f780cdSTaniya Das 				&se_gcc_emac0_rgmii_clk_src.clkr.hw,
797*a4f780cdSTaniya Das 			},
798*a4f780cdSTaniya Das 			.num_parents = 1,
799*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
800*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
801*a4f780cdSTaniya Das 		},
802*a4f780cdSTaniya Das 	},
803*a4f780cdSTaniya Das };
804*a4f780cdSTaniya Das 
805*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac0_rpcs_rx_clk = {
806*a4f780cdSTaniya Das 	.halt_reg = 0x240a8,
807*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
808*a4f780cdSTaniya Das 	.clkr = {
809*a4f780cdSTaniya Das 		.enable_reg = 0x240a8,
810*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
811*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
812*a4f780cdSTaniya Das 			.name = "se_gcc_emac0_rpcs_rx_clk",
813*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
814*a4f780cdSTaniya Das 		},
815*a4f780cdSTaniya Das 	},
816*a4f780cdSTaniya Das };
817*a4f780cdSTaniya Das 
818*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac0_rpcs_tx_clk = {
819*a4f780cdSTaniya Das 	.halt_reg = 0x240a4,
820*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
821*a4f780cdSTaniya Das 	.clkr = {
822*a4f780cdSTaniya Das 		.enable_reg = 0x240a4,
823*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
824*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
825*a4f780cdSTaniya Das 			.name = "se_gcc_emac0_rpcs_tx_clk",
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 se_gcc_emac0_xgxs_rx_clk = {
832*a4f780cdSTaniya Das 	.halt_reg = 0x240b0,
833*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
834*a4f780cdSTaniya Das 	.clkr = {
835*a4f780cdSTaniya Das 		.enable_reg = 0x240b0,
836*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
837*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
838*a4f780cdSTaniya Das 			.name = "se_gcc_emac0_xgxs_rx_clk",
839*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
840*a4f780cdSTaniya Das 		},
841*a4f780cdSTaniya Das 	},
842*a4f780cdSTaniya Das };
843*a4f780cdSTaniya Das 
844*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac0_xgxs_tx_clk = {
845*a4f780cdSTaniya Das 	.halt_reg = 0x240ac,
846*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
847*a4f780cdSTaniya Das 	.clkr = {
848*a4f780cdSTaniya Das 		.enable_reg = 0x240ac,
849*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
850*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
851*a4f780cdSTaniya Das 			.name = "se_gcc_emac0_xgxs_tx_clk",
852*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
853*a4f780cdSTaniya Das 		},
854*a4f780cdSTaniya Das 	},
855*a4f780cdSTaniya Das };
856*a4f780cdSTaniya Das 
857*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac1_axi_clk = {
858*a4f780cdSTaniya Das 	.halt_reg = 0x2501c,
859*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
860*a4f780cdSTaniya Das 	.hwcg_reg = 0x2501c,
861*a4f780cdSTaniya Das 	.hwcg_bit = 1,
862*a4f780cdSTaniya Das 	.clkr = {
863*a4f780cdSTaniya Das 		.enable_reg = 0x2501c,
864*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
865*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
866*a4f780cdSTaniya Das 			.name = "se_gcc_emac1_axi_clk",
867*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
868*a4f780cdSTaniya Das 		},
869*a4f780cdSTaniya Das 	},
870*a4f780cdSTaniya Das };
871*a4f780cdSTaniya Das 
872*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac1_cc_sgmiiphy_rx_clk = {
873*a4f780cdSTaniya Das 	.halt_reg = 0x25064,
874*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
875*a4f780cdSTaniya Das 	.clkr = {
876*a4f780cdSTaniya Das 		.enable_reg = 0x25064,
877*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
878*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
879*a4f780cdSTaniya Das 			.name = "se_gcc_emac1_cc_sgmiiphy_rx_clk",
880*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
881*a4f780cdSTaniya Das 		},
882*a4f780cdSTaniya Das 	},
883*a4f780cdSTaniya Das };
884*a4f780cdSTaniya Das 
885*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac1_cc_sgmiiphy_tx_clk = {
886*a4f780cdSTaniya Das 	.halt_reg = 0x2505c,
887*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
888*a4f780cdSTaniya Das 	.clkr = {
889*a4f780cdSTaniya Das 		.enable_reg = 0x2505c,
890*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
891*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
892*a4f780cdSTaniya Das 			.name = "se_gcc_emac1_cc_sgmiiphy_tx_clk",
893*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
894*a4f780cdSTaniya Das 		},
895*a4f780cdSTaniya Das 	},
896*a4f780cdSTaniya Das };
897*a4f780cdSTaniya Das 
898*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac1_phy_aux_clk = {
899*a4f780cdSTaniya Das 	.halt_reg = 0x2502c,
900*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
901*a4f780cdSTaniya Das 	.clkr = {
902*a4f780cdSTaniya Das 		.enable_reg = 0x2502c,
903*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
904*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
905*a4f780cdSTaniya Das 			.name = "se_gcc_emac1_phy_aux_clk",
906*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
907*a4f780cdSTaniya Das 				&se_gcc_emac1_phy_aux_clk_src.clkr.hw,
908*a4f780cdSTaniya Das 			},
909*a4f780cdSTaniya Das 			.num_parents = 1,
910*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
911*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
912*a4f780cdSTaniya Das 		},
913*a4f780cdSTaniya Das 	},
914*a4f780cdSTaniya Das };
915*a4f780cdSTaniya Das 
916*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac1_ptp_clk = {
917*a4f780cdSTaniya Das 	.halt_reg = 0x25048,
918*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
919*a4f780cdSTaniya Das 	.clkr = {
920*a4f780cdSTaniya Das 		.enable_reg = 0x25048,
921*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
922*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
923*a4f780cdSTaniya Das 			.name = "se_gcc_emac1_ptp_clk",
924*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
925*a4f780cdSTaniya Das 				&se_gcc_emac1_ptp_clk_src.clkr.hw,
926*a4f780cdSTaniya Das 			},
927*a4f780cdSTaniya Das 			.num_parents = 1,
928*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
929*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
930*a4f780cdSTaniya Das 		},
931*a4f780cdSTaniya Das 	},
932*a4f780cdSTaniya Das };
933*a4f780cdSTaniya Das 
934*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac1_rgmii_clk = {
935*a4f780cdSTaniya Das 	.halt_reg = 0x25058,
936*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
937*a4f780cdSTaniya Das 	.clkr = {
938*a4f780cdSTaniya Das 		.enable_reg = 0x25058,
939*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
940*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
941*a4f780cdSTaniya Das 			.name = "se_gcc_emac1_rgmii_clk",
942*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
943*a4f780cdSTaniya Das 				&se_gcc_emac1_rgmii_clk_src.clkr.hw,
944*a4f780cdSTaniya Das 			},
945*a4f780cdSTaniya Das 			.num_parents = 1,
946*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
947*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
948*a4f780cdSTaniya Das 		},
949*a4f780cdSTaniya Das 	},
950*a4f780cdSTaniya Das };
951*a4f780cdSTaniya Das 
952*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac1_rpcs_rx_clk = {
953*a4f780cdSTaniya Das 	.halt_reg = 0x250a8,
954*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
955*a4f780cdSTaniya Das 	.clkr = {
956*a4f780cdSTaniya Das 		.enable_reg = 0x250a8,
957*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
958*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
959*a4f780cdSTaniya Das 			.name = "se_gcc_emac1_rpcs_rx_clk",
960*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
961*a4f780cdSTaniya Das 		},
962*a4f780cdSTaniya Das 	},
963*a4f780cdSTaniya Das };
964*a4f780cdSTaniya Das 
965*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac1_rpcs_tx_clk = {
966*a4f780cdSTaniya Das 	.halt_reg = 0x250a4,
967*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
968*a4f780cdSTaniya Das 	.clkr = {
969*a4f780cdSTaniya Das 		.enable_reg = 0x250a4,
970*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
971*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
972*a4f780cdSTaniya Das 			.name = "se_gcc_emac1_rpcs_tx_clk",
973*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
974*a4f780cdSTaniya Das 		},
975*a4f780cdSTaniya Das 	},
976*a4f780cdSTaniya Das };
977*a4f780cdSTaniya Das 
978*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac1_xgxs_rx_clk = {
979*a4f780cdSTaniya Das 	.halt_reg = 0x250b0,
980*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
981*a4f780cdSTaniya Das 	.clkr = {
982*a4f780cdSTaniya Das 		.enable_reg = 0x250b0,
983*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
984*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
985*a4f780cdSTaniya Das 			.name = "se_gcc_emac1_xgxs_rx_clk",
986*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
987*a4f780cdSTaniya Das 		},
988*a4f780cdSTaniya Das 	},
989*a4f780cdSTaniya Das };
990*a4f780cdSTaniya Das 
991*a4f780cdSTaniya Das static struct clk_branch se_gcc_emac1_xgxs_tx_clk = {
992*a4f780cdSTaniya Das 	.halt_reg = 0x250ac,
993*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
994*a4f780cdSTaniya Das 	.clkr = {
995*a4f780cdSTaniya Das 		.enable_reg = 0x250ac,
996*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
997*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
998*a4f780cdSTaniya Das 			.name = "se_gcc_emac1_xgxs_tx_clk",
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 se_gcc_frq_measure_ref_clk = {
1005*a4f780cdSTaniya Das 	.halt_reg = 0x18008,
1006*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
1007*a4f780cdSTaniya Das 	.clkr = {
1008*a4f780cdSTaniya Das 		.enable_reg = 0x18008,
1009*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
1010*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1011*a4f780cdSTaniya Das 			.name = "se_gcc_frq_measure_ref_clk",
1012*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1013*a4f780cdSTaniya Das 		},
1014*a4f780cdSTaniya Das 	},
1015*a4f780cdSTaniya Das };
1016*a4f780cdSTaniya Das 
1017*a4f780cdSTaniya Das static struct clk_branch se_gcc_gp1_clk = {
1018*a4f780cdSTaniya Das 	.halt_reg = 0x19000,
1019*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
1020*a4f780cdSTaniya Das 	.clkr = {
1021*a4f780cdSTaniya Das 		.enable_reg = 0x19000,
1022*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
1023*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1024*a4f780cdSTaniya Das 			.name = "se_gcc_gp1_clk",
1025*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1026*a4f780cdSTaniya Das 				&se_gcc_gp1_clk_src.clkr.hw,
1027*a4f780cdSTaniya Das 			},
1028*a4f780cdSTaniya Das 			.num_parents = 1,
1029*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1030*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1031*a4f780cdSTaniya Das 		},
1032*a4f780cdSTaniya Das 	},
1033*a4f780cdSTaniya Das };
1034*a4f780cdSTaniya Das 
1035*a4f780cdSTaniya Das static struct clk_branch se_gcc_gp2_clk = {
1036*a4f780cdSTaniya Das 	.halt_reg = 0x1a000,
1037*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT,
1038*a4f780cdSTaniya Das 	.clkr = {
1039*a4f780cdSTaniya Das 		.enable_reg = 0x1a000,
1040*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
1041*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1042*a4f780cdSTaniya Das 			.name = "se_gcc_gp2_clk",
1043*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1044*a4f780cdSTaniya Das 				&se_gcc_gp2_clk_src.clkr.hw,
1045*a4f780cdSTaniya Das 			},
1046*a4f780cdSTaniya Das 			.num_parents = 1,
1047*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1048*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1049*a4f780cdSTaniya Das 		},
1050*a4f780cdSTaniya Das 	},
1051*a4f780cdSTaniya Das };
1052*a4f780cdSTaniya Das 
1053*a4f780cdSTaniya Das static struct clk_branch se_gcc_mmu_2_tcu_vote_clk = {
1054*a4f780cdSTaniya Das 	.halt_reg = 0x57040,
1055*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1056*a4f780cdSTaniya Das 	.clkr = {
1057*a4f780cdSTaniya Das 		.enable_reg = 0x57040,
1058*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
1059*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1060*a4f780cdSTaniya Das 			.name = "se_gcc_mmu_2_tcu_vote_clk",
1061*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1062*a4f780cdSTaniya Das 		},
1063*a4f780cdSTaniya Das 	},
1064*a4f780cdSTaniya Das };
1065*a4f780cdSTaniya Das 
1066*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap0_core_2x_clk = {
1067*a4f780cdSTaniya Das 	.halt_reg = 0x26020,
1068*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1069*a4f780cdSTaniya Das 	.clkr = {
1070*a4f780cdSTaniya Das 		.enable_reg = 0x57000,
1071*a4f780cdSTaniya Das 		.enable_mask = BIT(15),
1072*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1073*a4f780cdSTaniya Das 			.name = "se_gcc_qupv3_wrap0_core_2x_clk",
1074*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1075*a4f780cdSTaniya Das 		},
1076*a4f780cdSTaniya Das 	},
1077*a4f780cdSTaniya Das };
1078*a4f780cdSTaniya Das 
1079*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap0_core_clk = {
1080*a4f780cdSTaniya Das 	.halt_reg = 0x2600c,
1081*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1082*a4f780cdSTaniya Das 	.clkr = {
1083*a4f780cdSTaniya Das 		.enable_reg = 0x57000,
1084*a4f780cdSTaniya Das 		.enable_mask = BIT(14),
1085*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1086*a4f780cdSTaniya Das 			.name = "se_gcc_qupv3_wrap0_core_clk",
1087*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1088*a4f780cdSTaniya Das 		},
1089*a4f780cdSTaniya Das 	},
1090*a4f780cdSTaniya Das };
1091*a4f780cdSTaniya Das 
1092*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap0_m_ahb_clk = {
1093*a4f780cdSTaniya Das 	.halt_reg = 0x26004,
1094*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1095*a4f780cdSTaniya Das 	.hwcg_reg = 0x26004,
1096*a4f780cdSTaniya Das 	.hwcg_bit = 1,
1097*a4f780cdSTaniya Das 	.clkr = {
1098*a4f780cdSTaniya Das 		.enable_reg = 0x57000,
1099*a4f780cdSTaniya Das 		.enable_mask = BIT(12),
1100*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1101*a4f780cdSTaniya Das 			.name = "se_gcc_qupv3_wrap0_m_ahb_clk",
1102*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1103*a4f780cdSTaniya Das 		},
1104*a4f780cdSTaniya Das 	},
1105*a4f780cdSTaniya Das };
1106*a4f780cdSTaniya Das 
1107*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap0_s0_clk = {
1108*a4f780cdSTaniya Das 	.halt_reg = 0x2615c,
1109*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1110*a4f780cdSTaniya Das 	.clkr = {
1111*a4f780cdSTaniya Das 		.enable_reg = 0x57000,
1112*a4f780cdSTaniya Das 		.enable_mask = BIT(16),
1113*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1114*a4f780cdSTaniya Das 			.name = "se_gcc_qupv3_wrap0_s0_clk",
1115*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1116*a4f780cdSTaniya Das 				&se_gcc_qupv3_wrap0_s0_clk_src.clkr.hw,
1117*a4f780cdSTaniya Das 			},
1118*a4f780cdSTaniya Das 			.num_parents = 1,
1119*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1120*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1121*a4f780cdSTaniya Das 		},
1122*a4f780cdSTaniya Das 	},
1123*a4f780cdSTaniya Das };
1124*a4f780cdSTaniya Das 
1125*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap0_s1_clk = {
1126*a4f780cdSTaniya Das 	.halt_reg = 0x26298,
1127*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1128*a4f780cdSTaniya Das 	.clkr = {
1129*a4f780cdSTaniya Das 		.enable_reg = 0x57000,
1130*a4f780cdSTaniya Das 		.enable_mask = BIT(17),
1131*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1132*a4f780cdSTaniya Das 			.name = "se_gcc_qupv3_wrap0_s1_clk",
1133*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1134*a4f780cdSTaniya Das 				&se_gcc_qupv3_wrap0_s1_clk_src.clkr.hw,
1135*a4f780cdSTaniya Das 			},
1136*a4f780cdSTaniya Das 			.num_parents = 1,
1137*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1138*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1139*a4f780cdSTaniya Das 		},
1140*a4f780cdSTaniya Das 	},
1141*a4f780cdSTaniya Das };
1142*a4f780cdSTaniya Das 
1143*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap0_s2_clk = {
1144*a4f780cdSTaniya Das 	.halt_reg = 0x263d4,
1145*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1146*a4f780cdSTaniya Das 	.clkr = {
1147*a4f780cdSTaniya Das 		.enable_reg = 0x57000,
1148*a4f780cdSTaniya Das 		.enable_mask = BIT(18),
1149*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1150*a4f780cdSTaniya Das 			.name = "se_gcc_qupv3_wrap0_s2_clk",
1151*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1152*a4f780cdSTaniya Das 				&se_gcc_qupv3_wrap0_s2_clk_src.clkr.hw,
1153*a4f780cdSTaniya Das 			},
1154*a4f780cdSTaniya Das 			.num_parents = 1,
1155*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1156*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1157*a4f780cdSTaniya Das 		},
1158*a4f780cdSTaniya Das 	},
1159*a4f780cdSTaniya Das };
1160*a4f780cdSTaniya Das 
1161*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap0_s3_clk = {
1162*a4f780cdSTaniya Das 	.halt_reg = 0x26510,
1163*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1164*a4f780cdSTaniya Das 	.clkr = {
1165*a4f780cdSTaniya Das 		.enable_reg = 0x57000,
1166*a4f780cdSTaniya Das 		.enable_mask = BIT(19),
1167*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1168*a4f780cdSTaniya Das 			.name = "se_gcc_qupv3_wrap0_s3_clk",
1169*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1170*a4f780cdSTaniya Das 				&se_gcc_qupv3_wrap0_s3_clk_src.clkr.hw,
1171*a4f780cdSTaniya Das 			},
1172*a4f780cdSTaniya Das 			.num_parents = 1,
1173*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1174*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1175*a4f780cdSTaniya Das 		},
1176*a4f780cdSTaniya Das 	},
1177*a4f780cdSTaniya Das };
1178*a4f780cdSTaniya Das 
1179*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap0_s4_clk = {
1180*a4f780cdSTaniya Das 	.halt_reg = 0x2664c,
1181*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1182*a4f780cdSTaniya Das 	.clkr = {
1183*a4f780cdSTaniya Das 		.enable_reg = 0x57000,
1184*a4f780cdSTaniya Das 		.enable_mask = BIT(20),
1185*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1186*a4f780cdSTaniya Das 			.name = "se_gcc_qupv3_wrap0_s4_clk",
1187*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1188*a4f780cdSTaniya Das 				&se_gcc_qupv3_wrap0_s4_clk_src.clkr.hw,
1189*a4f780cdSTaniya Das 			},
1190*a4f780cdSTaniya Das 			.num_parents = 1,
1191*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1192*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1193*a4f780cdSTaniya Das 		},
1194*a4f780cdSTaniya Das 	},
1195*a4f780cdSTaniya Das };
1196*a4f780cdSTaniya Das 
1197*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap0_s5_clk = {
1198*a4f780cdSTaniya Das 	.halt_reg = 0x26788,
1199*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1200*a4f780cdSTaniya Das 	.clkr = {
1201*a4f780cdSTaniya Das 		.enable_reg = 0x57000,
1202*a4f780cdSTaniya Das 		.enable_mask = BIT(21),
1203*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1204*a4f780cdSTaniya Das 			.name = "se_gcc_qupv3_wrap0_s5_clk",
1205*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1206*a4f780cdSTaniya Das 				&se_gcc_qupv3_wrap0_s5_clk_src.clkr.hw,
1207*a4f780cdSTaniya Das 			},
1208*a4f780cdSTaniya Das 			.num_parents = 1,
1209*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1210*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1211*a4f780cdSTaniya Das 		},
1212*a4f780cdSTaniya Das 	},
1213*a4f780cdSTaniya Das };
1214*a4f780cdSTaniya Das 
1215*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap0_s6_clk = {
1216*a4f780cdSTaniya Das 	.halt_reg = 0x268c4,
1217*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1218*a4f780cdSTaniya Das 	.clkr = {
1219*a4f780cdSTaniya Das 		.enable_reg = 0x57000,
1220*a4f780cdSTaniya Das 		.enable_mask = BIT(22),
1221*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1222*a4f780cdSTaniya Das 			.name = "se_gcc_qupv3_wrap0_s6_clk",
1223*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1224*a4f780cdSTaniya Das 				&se_gcc_qupv3_wrap0_s6_clk_src.clkr.hw,
1225*a4f780cdSTaniya Das 			},
1226*a4f780cdSTaniya Das 			.num_parents = 1,
1227*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1228*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1229*a4f780cdSTaniya Das 		},
1230*a4f780cdSTaniya Das 	},
1231*a4f780cdSTaniya Das };
1232*a4f780cdSTaniya Das 
1233*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap0_s_ahb_clk = {
1234*a4f780cdSTaniya Das 	.halt_reg = 0x26008,
1235*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1236*a4f780cdSTaniya Das 	.hwcg_reg = 0x26008,
1237*a4f780cdSTaniya Das 	.hwcg_bit = 1,
1238*a4f780cdSTaniya Das 	.clkr = {
1239*a4f780cdSTaniya Das 		.enable_reg = 0x57000,
1240*a4f780cdSTaniya Das 		.enable_mask = BIT(13),
1241*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1242*a4f780cdSTaniya Das 			.name = "se_gcc_qupv3_wrap0_s_ahb_clk",
1243*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1244*a4f780cdSTaniya Das 		},
1245*a4f780cdSTaniya Das 	},
1246*a4f780cdSTaniya Das };
1247*a4f780cdSTaniya Das 
1248*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap1_core_2x_clk = {
1249*a4f780cdSTaniya Das 	.halt_reg = 0x27020,
1250*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1251*a4f780cdSTaniya Das 	.clkr = {
1252*a4f780cdSTaniya Das 		.enable_reg = 0x57000,
1253*a4f780cdSTaniya Das 		.enable_mask = BIT(26),
1254*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1255*a4f780cdSTaniya Das 			.name = "se_gcc_qupv3_wrap1_core_2x_clk",
1256*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1257*a4f780cdSTaniya Das 		},
1258*a4f780cdSTaniya Das 	},
1259*a4f780cdSTaniya Das };
1260*a4f780cdSTaniya Das 
1261*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap1_core_clk = {
1262*a4f780cdSTaniya Das 	.halt_reg = 0x2700c,
1263*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1264*a4f780cdSTaniya Das 	.clkr = {
1265*a4f780cdSTaniya Das 		.enable_reg = 0x57000,
1266*a4f780cdSTaniya Das 		.enable_mask = BIT(25),
1267*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1268*a4f780cdSTaniya Das 			.name = "se_gcc_qupv3_wrap1_core_clk",
1269*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1270*a4f780cdSTaniya Das 		},
1271*a4f780cdSTaniya Das 	},
1272*a4f780cdSTaniya Das };
1273*a4f780cdSTaniya Das 
1274*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap1_m_ahb_clk = {
1275*a4f780cdSTaniya Das 	.halt_reg = 0x27004,
1276*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1277*a4f780cdSTaniya Das 	.hwcg_reg = 0x27004,
1278*a4f780cdSTaniya Das 	.hwcg_bit = 1,
1279*a4f780cdSTaniya Das 	.clkr = {
1280*a4f780cdSTaniya Das 		.enable_reg = 0x57000,
1281*a4f780cdSTaniya Das 		.enable_mask = BIT(23),
1282*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1283*a4f780cdSTaniya Das 			.name = "se_gcc_qupv3_wrap1_m_ahb_clk",
1284*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1285*a4f780cdSTaniya Das 		},
1286*a4f780cdSTaniya Das 	},
1287*a4f780cdSTaniya Das };
1288*a4f780cdSTaniya Das 
1289*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap1_s0_clk = {
1290*a4f780cdSTaniya Das 	.halt_reg = 0x2715c,
1291*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1292*a4f780cdSTaniya Das 	.clkr = {
1293*a4f780cdSTaniya Das 		.enable_reg = 0x57000,
1294*a4f780cdSTaniya Das 		.enable_mask = BIT(27),
1295*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1296*a4f780cdSTaniya Das 			.name = "se_gcc_qupv3_wrap1_s0_clk",
1297*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1298*a4f780cdSTaniya Das 				&se_gcc_qupv3_wrap1_s0_clk_src.clkr.hw,
1299*a4f780cdSTaniya Das 			},
1300*a4f780cdSTaniya Das 			.num_parents = 1,
1301*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1302*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1303*a4f780cdSTaniya Das 		},
1304*a4f780cdSTaniya Das 	},
1305*a4f780cdSTaniya Das };
1306*a4f780cdSTaniya Das 
1307*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap1_s1_clk = {
1308*a4f780cdSTaniya Das 	.halt_reg = 0x27298,
1309*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1310*a4f780cdSTaniya Das 	.clkr = {
1311*a4f780cdSTaniya Das 		.enable_reg = 0x57000,
1312*a4f780cdSTaniya Das 		.enable_mask = BIT(28),
1313*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1314*a4f780cdSTaniya Das 			.name = "se_gcc_qupv3_wrap1_s1_clk",
1315*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1316*a4f780cdSTaniya Das 				&se_gcc_qupv3_wrap1_s1_clk_src.clkr.hw,
1317*a4f780cdSTaniya Das 			},
1318*a4f780cdSTaniya Das 			.num_parents = 1,
1319*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1320*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1321*a4f780cdSTaniya Das 		},
1322*a4f780cdSTaniya Das 	},
1323*a4f780cdSTaniya Das };
1324*a4f780cdSTaniya Das 
1325*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap1_s2_clk = {
1326*a4f780cdSTaniya Das 	.halt_reg = 0x273d4,
1327*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1328*a4f780cdSTaniya Das 	.clkr = {
1329*a4f780cdSTaniya Das 		.enable_reg = 0x57000,
1330*a4f780cdSTaniya Das 		.enable_mask = BIT(29),
1331*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1332*a4f780cdSTaniya Das 			.name = "se_gcc_qupv3_wrap1_s2_clk",
1333*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1334*a4f780cdSTaniya Das 				&se_gcc_qupv3_wrap1_s2_clk_src.clkr.hw,
1335*a4f780cdSTaniya Das 			},
1336*a4f780cdSTaniya Das 			.num_parents = 1,
1337*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1338*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1339*a4f780cdSTaniya Das 		},
1340*a4f780cdSTaniya Das 	},
1341*a4f780cdSTaniya Das };
1342*a4f780cdSTaniya Das 
1343*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap1_s3_clk = {
1344*a4f780cdSTaniya Das 	.halt_reg = 0x27510,
1345*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1346*a4f780cdSTaniya Das 	.clkr = {
1347*a4f780cdSTaniya Das 		.enable_reg = 0x57000,
1348*a4f780cdSTaniya Das 		.enable_mask = BIT(30),
1349*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1350*a4f780cdSTaniya Das 			.name = "se_gcc_qupv3_wrap1_s3_clk",
1351*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1352*a4f780cdSTaniya Das 				&se_gcc_qupv3_wrap1_s3_clk_src.clkr.hw,
1353*a4f780cdSTaniya Das 			},
1354*a4f780cdSTaniya Das 			.num_parents = 1,
1355*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1356*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1357*a4f780cdSTaniya Das 		},
1358*a4f780cdSTaniya Das 	},
1359*a4f780cdSTaniya Das };
1360*a4f780cdSTaniya Das 
1361*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap1_s4_clk = {
1362*a4f780cdSTaniya Das 	.halt_reg = 0x2764c,
1363*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1364*a4f780cdSTaniya Das 	.clkr = {
1365*a4f780cdSTaniya Das 		.enable_reg = 0x57000,
1366*a4f780cdSTaniya Das 		.enable_mask = BIT(31),
1367*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1368*a4f780cdSTaniya Das 			.name = "se_gcc_qupv3_wrap1_s4_clk",
1369*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1370*a4f780cdSTaniya Das 				&se_gcc_qupv3_wrap1_s4_clk_src.clkr.hw,
1371*a4f780cdSTaniya Das 			},
1372*a4f780cdSTaniya Das 			.num_parents = 1,
1373*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1374*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1375*a4f780cdSTaniya Das 		},
1376*a4f780cdSTaniya Das 	},
1377*a4f780cdSTaniya Das };
1378*a4f780cdSTaniya Das 
1379*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap1_s5_clk = {
1380*a4f780cdSTaniya Das 	.halt_reg = 0x27788,
1381*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1382*a4f780cdSTaniya Das 	.clkr = {
1383*a4f780cdSTaniya Das 		.enable_reg = 0x57008,
1384*a4f780cdSTaniya Das 		.enable_mask = BIT(0),
1385*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1386*a4f780cdSTaniya Das 			.name = "se_gcc_qupv3_wrap1_s5_clk",
1387*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1388*a4f780cdSTaniya Das 				&se_gcc_qupv3_wrap1_s5_clk_src.clkr.hw,
1389*a4f780cdSTaniya Das 			},
1390*a4f780cdSTaniya Das 			.num_parents = 1,
1391*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1392*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1393*a4f780cdSTaniya Das 		},
1394*a4f780cdSTaniya Das 	},
1395*a4f780cdSTaniya Das };
1396*a4f780cdSTaniya Das 
1397*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap1_s6_clk = {
1398*a4f780cdSTaniya Das 	.halt_reg = 0x278c4,
1399*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1400*a4f780cdSTaniya Das 	.clkr = {
1401*a4f780cdSTaniya Das 		.enable_reg = 0x57008,
1402*a4f780cdSTaniya Das 		.enable_mask = BIT(1),
1403*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1404*a4f780cdSTaniya Das 			.name = "se_gcc_qupv3_wrap1_s6_clk",
1405*a4f780cdSTaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1406*a4f780cdSTaniya Das 				&se_gcc_qupv3_wrap1_s6_clk_src.clkr.hw,
1407*a4f780cdSTaniya Das 			},
1408*a4f780cdSTaniya Das 			.num_parents = 1,
1409*a4f780cdSTaniya Das 			.flags = CLK_SET_RATE_PARENT,
1410*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1411*a4f780cdSTaniya Das 		},
1412*a4f780cdSTaniya Das 	},
1413*a4f780cdSTaniya Das };
1414*a4f780cdSTaniya Das 
1415*a4f780cdSTaniya Das static struct clk_branch se_gcc_qupv3_wrap1_s_ahb_clk = {
1416*a4f780cdSTaniya Das 	.halt_reg = 0x27008,
1417*a4f780cdSTaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1418*a4f780cdSTaniya Das 	.hwcg_reg = 0x27008,
1419*a4f780cdSTaniya Das 	.hwcg_bit = 1,
1420*a4f780cdSTaniya Das 	.clkr = {
1421*a4f780cdSTaniya Das 		.enable_reg = 0x57000,
1422*a4f780cdSTaniya Das 		.enable_mask = BIT(24),
1423*a4f780cdSTaniya Das 		.hw.init = &(const struct clk_init_data) {
1424*a4f780cdSTaniya Das 			.name = "se_gcc_qupv3_wrap1_s_ahb_clk",
1425*a4f780cdSTaniya Das 			.ops = &clk_branch2_ops,
1426*a4f780cdSTaniya Das 		},
1427*a4f780cdSTaniya Das 	},
1428*a4f780cdSTaniya Das };
1429*a4f780cdSTaniya Das 
1430*a4f780cdSTaniya Das static struct gdsc se_gcc_emac0_gdsc = {
1431*a4f780cdSTaniya Das 	.gdscr = 0x24004,
1432*a4f780cdSTaniya Das 	.en_rest_wait_val = 0x2,
1433*a4f780cdSTaniya Das 	.en_few_wait_val = 0x2,
1434*a4f780cdSTaniya Das 	.clk_dis_wait_val = 0xf,
1435*a4f780cdSTaniya Das 	.pd = {
1436*a4f780cdSTaniya Das 		.name = "se_gcc_emac0_gdsc",
1437*a4f780cdSTaniya Das 	},
1438*a4f780cdSTaniya Das 	.pwrsts = PWRSTS_OFF_ON,
1439*a4f780cdSTaniya Das 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
1440*a4f780cdSTaniya Das };
1441*a4f780cdSTaniya Das 
1442*a4f780cdSTaniya Das static struct gdsc se_gcc_emac1_gdsc = {
1443*a4f780cdSTaniya Das 	.gdscr = 0x25004,
1444*a4f780cdSTaniya Das 	.en_rest_wait_val = 0x2,
1445*a4f780cdSTaniya Das 	.en_few_wait_val = 0x2,
1446*a4f780cdSTaniya Das 	.clk_dis_wait_val = 0xf,
1447*a4f780cdSTaniya Das 	.pd = {
1448*a4f780cdSTaniya Das 		.name = "se_gcc_emac1_gdsc",
1449*a4f780cdSTaniya Das 	},
1450*a4f780cdSTaniya Das 	.pwrsts = PWRSTS_OFF_ON,
1451*a4f780cdSTaniya Das 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
1452*a4f780cdSTaniya Das };
1453*a4f780cdSTaniya Das 
1454*a4f780cdSTaniya Das static struct clk_regmap *se_gcc_nord_clocks[] = {
1455*a4f780cdSTaniya Das 	[SE_GCC_EEE_EMAC0_CLK] = &se_gcc_eee_emac0_clk.clkr,
1456*a4f780cdSTaniya Das 	[SE_GCC_EEE_EMAC0_CLK_SRC] = &se_gcc_eee_emac0_clk_src.clkr,
1457*a4f780cdSTaniya Das 	[SE_GCC_EEE_EMAC1_CLK] = &se_gcc_eee_emac1_clk.clkr,
1458*a4f780cdSTaniya Das 	[SE_GCC_EEE_EMAC1_CLK_SRC] = &se_gcc_eee_emac1_clk_src.clkr,
1459*a4f780cdSTaniya Das 	[SE_GCC_EMAC0_AXI_CLK] = &se_gcc_emac0_axi_clk.clkr,
1460*a4f780cdSTaniya Das 	[SE_GCC_EMAC0_CC_SGMIIPHY_RX_CLK] = &se_gcc_emac0_cc_sgmiiphy_rx_clk.clkr,
1461*a4f780cdSTaniya Das 	[SE_GCC_EMAC0_CC_SGMIIPHY_TX_CLK] = &se_gcc_emac0_cc_sgmiiphy_tx_clk.clkr,
1462*a4f780cdSTaniya Das 	[SE_GCC_EMAC0_PHY_AUX_CLK] = &se_gcc_emac0_phy_aux_clk.clkr,
1463*a4f780cdSTaniya Das 	[SE_GCC_EMAC0_PHY_AUX_CLK_SRC] = &se_gcc_emac0_phy_aux_clk_src.clkr,
1464*a4f780cdSTaniya Das 	[SE_GCC_EMAC0_PTP_CLK] = &se_gcc_emac0_ptp_clk.clkr,
1465*a4f780cdSTaniya Das 	[SE_GCC_EMAC0_PTP_CLK_SRC] = &se_gcc_emac0_ptp_clk_src.clkr,
1466*a4f780cdSTaniya Das 	[SE_GCC_EMAC0_RGMII_CLK] = &se_gcc_emac0_rgmii_clk.clkr,
1467*a4f780cdSTaniya Das 	[SE_GCC_EMAC0_RGMII_CLK_SRC] = &se_gcc_emac0_rgmii_clk_src.clkr,
1468*a4f780cdSTaniya Das 	[SE_GCC_EMAC0_RPCS_RX_CLK] = &se_gcc_emac0_rpcs_rx_clk.clkr,
1469*a4f780cdSTaniya Das 	[SE_GCC_EMAC0_RPCS_TX_CLK] = &se_gcc_emac0_rpcs_tx_clk.clkr,
1470*a4f780cdSTaniya Das 	[SE_GCC_EMAC0_XGXS_RX_CLK] = &se_gcc_emac0_xgxs_rx_clk.clkr,
1471*a4f780cdSTaniya Das 	[SE_GCC_EMAC0_XGXS_TX_CLK] = &se_gcc_emac0_xgxs_tx_clk.clkr,
1472*a4f780cdSTaniya Das 	[SE_GCC_EMAC1_AXI_CLK] = &se_gcc_emac1_axi_clk.clkr,
1473*a4f780cdSTaniya Das 	[SE_GCC_EMAC1_CC_SGMIIPHY_RX_CLK] = &se_gcc_emac1_cc_sgmiiphy_rx_clk.clkr,
1474*a4f780cdSTaniya Das 	[SE_GCC_EMAC1_CC_SGMIIPHY_TX_CLK] = &se_gcc_emac1_cc_sgmiiphy_tx_clk.clkr,
1475*a4f780cdSTaniya Das 	[SE_GCC_EMAC1_PHY_AUX_CLK] = &se_gcc_emac1_phy_aux_clk.clkr,
1476*a4f780cdSTaniya Das 	[SE_GCC_EMAC1_PHY_AUX_CLK_SRC] = &se_gcc_emac1_phy_aux_clk_src.clkr,
1477*a4f780cdSTaniya Das 	[SE_GCC_EMAC1_PTP_CLK] = &se_gcc_emac1_ptp_clk.clkr,
1478*a4f780cdSTaniya Das 	[SE_GCC_EMAC1_PTP_CLK_SRC] = &se_gcc_emac1_ptp_clk_src.clkr,
1479*a4f780cdSTaniya Das 	[SE_GCC_EMAC1_RGMII_CLK] = &se_gcc_emac1_rgmii_clk.clkr,
1480*a4f780cdSTaniya Das 	[SE_GCC_EMAC1_RGMII_CLK_SRC] = &se_gcc_emac1_rgmii_clk_src.clkr,
1481*a4f780cdSTaniya Das 	[SE_GCC_EMAC1_RPCS_RX_CLK] = &se_gcc_emac1_rpcs_rx_clk.clkr,
1482*a4f780cdSTaniya Das 	[SE_GCC_EMAC1_RPCS_TX_CLK] = &se_gcc_emac1_rpcs_tx_clk.clkr,
1483*a4f780cdSTaniya Das 	[SE_GCC_EMAC1_XGXS_RX_CLK] = &se_gcc_emac1_xgxs_rx_clk.clkr,
1484*a4f780cdSTaniya Das 	[SE_GCC_EMAC1_XGXS_TX_CLK] = &se_gcc_emac1_xgxs_tx_clk.clkr,
1485*a4f780cdSTaniya Das 	[SE_GCC_FRQ_MEASURE_REF_CLK] = &se_gcc_frq_measure_ref_clk.clkr,
1486*a4f780cdSTaniya Das 	[SE_GCC_GP1_CLK] = &se_gcc_gp1_clk.clkr,
1487*a4f780cdSTaniya Das 	[SE_GCC_GP1_CLK_SRC] = &se_gcc_gp1_clk_src.clkr,
1488*a4f780cdSTaniya Das 	[SE_GCC_GP2_CLK] = &se_gcc_gp2_clk.clkr,
1489*a4f780cdSTaniya Das 	[SE_GCC_GP2_CLK_SRC] = &se_gcc_gp2_clk_src.clkr,
1490*a4f780cdSTaniya Das 	[SE_GCC_GPLL0] = &se_gcc_gpll0.clkr,
1491*a4f780cdSTaniya Das 	[SE_GCC_GPLL0_OUT_EVEN] = &se_gcc_gpll0_out_even.clkr,
1492*a4f780cdSTaniya Das 	[SE_GCC_GPLL2] = &se_gcc_gpll2.clkr,
1493*a4f780cdSTaniya Das 	[SE_GCC_GPLL4] = &se_gcc_gpll4.clkr,
1494*a4f780cdSTaniya Das 	[SE_GCC_GPLL5] = &se_gcc_gpll5.clkr,
1495*a4f780cdSTaniya Das 	[SE_GCC_MMU_2_TCU_VOTE_CLK] = &se_gcc_mmu_2_tcu_vote_clk.clkr,
1496*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAP0_CORE_2X_CLK] = &se_gcc_qupv3_wrap0_core_2x_clk.clkr,
1497*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAP0_CORE_CLK] = &se_gcc_qupv3_wrap0_core_clk.clkr,
1498*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAP0_M_AHB_CLK] = &se_gcc_qupv3_wrap0_m_ahb_clk.clkr,
1499*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAP0_S0_CLK] = &se_gcc_qupv3_wrap0_s0_clk.clkr,
1500*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAP0_S0_CLK_SRC] = &se_gcc_qupv3_wrap0_s0_clk_src.clkr,
1501*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAP0_S1_CLK] = &se_gcc_qupv3_wrap0_s1_clk.clkr,
1502*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAP0_S1_CLK_SRC] = &se_gcc_qupv3_wrap0_s1_clk_src.clkr,
1503*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAP0_S2_CLK] = &se_gcc_qupv3_wrap0_s2_clk.clkr,
1504*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAP0_S2_CLK_SRC] = &se_gcc_qupv3_wrap0_s2_clk_src.clkr,
1505*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAP0_S3_CLK] = &se_gcc_qupv3_wrap0_s3_clk.clkr,
1506*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAP0_S3_CLK_SRC] = &se_gcc_qupv3_wrap0_s3_clk_src.clkr,
1507*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAP0_S4_CLK] = &se_gcc_qupv3_wrap0_s4_clk.clkr,
1508*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAP0_S4_CLK_SRC] = &se_gcc_qupv3_wrap0_s4_clk_src.clkr,
1509*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAP0_S5_CLK] = &se_gcc_qupv3_wrap0_s5_clk.clkr,
1510*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAP0_S5_CLK_SRC] = &se_gcc_qupv3_wrap0_s5_clk_src.clkr,
1511*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAP0_S6_CLK] = &se_gcc_qupv3_wrap0_s6_clk.clkr,
1512*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAP0_S6_CLK_SRC] = &se_gcc_qupv3_wrap0_s6_clk_src.clkr,
1513*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAP0_S_AHB_CLK] = &se_gcc_qupv3_wrap0_s_ahb_clk.clkr,
1514*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAP1_CORE_2X_CLK] = &se_gcc_qupv3_wrap1_core_2x_clk.clkr,
1515*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAP1_CORE_CLK] = &se_gcc_qupv3_wrap1_core_clk.clkr,
1516*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAP1_M_AHB_CLK] = &se_gcc_qupv3_wrap1_m_ahb_clk.clkr,
1517*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAP1_S0_CLK] = &se_gcc_qupv3_wrap1_s0_clk.clkr,
1518*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAP1_S0_CLK_SRC] = &se_gcc_qupv3_wrap1_s0_clk_src.clkr,
1519*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAP1_S1_CLK] = &se_gcc_qupv3_wrap1_s1_clk.clkr,
1520*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAP1_S1_CLK_SRC] = &se_gcc_qupv3_wrap1_s1_clk_src.clkr,
1521*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAP1_S2_CLK] = &se_gcc_qupv3_wrap1_s2_clk.clkr,
1522*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAP1_S2_CLK_SRC] = &se_gcc_qupv3_wrap1_s2_clk_src.clkr,
1523*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAP1_S3_CLK] = &se_gcc_qupv3_wrap1_s3_clk.clkr,
1524*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAP1_S3_CLK_SRC] = &se_gcc_qupv3_wrap1_s3_clk_src.clkr,
1525*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAP1_S4_CLK] = &se_gcc_qupv3_wrap1_s4_clk.clkr,
1526*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAP1_S4_CLK_SRC] = &se_gcc_qupv3_wrap1_s4_clk_src.clkr,
1527*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAP1_S5_CLK] = &se_gcc_qupv3_wrap1_s5_clk.clkr,
1528*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAP1_S5_CLK_SRC] = &se_gcc_qupv3_wrap1_s5_clk_src.clkr,
1529*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAP1_S6_CLK] = &se_gcc_qupv3_wrap1_s6_clk.clkr,
1530*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAP1_S6_CLK_SRC] = &se_gcc_qupv3_wrap1_s6_clk_src.clkr,
1531*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAP1_S_AHB_CLK] = &se_gcc_qupv3_wrap1_s_ahb_clk.clkr,
1532*a4f780cdSTaniya Das };
1533*a4f780cdSTaniya Das 
1534*a4f780cdSTaniya Das static struct gdsc *se_gcc_nord_gdscs[] = {
1535*a4f780cdSTaniya Das 	[SE_GCC_EMAC0_GDSC] = &se_gcc_emac0_gdsc,
1536*a4f780cdSTaniya Das 	[SE_GCC_EMAC1_GDSC] = &se_gcc_emac1_gdsc,
1537*a4f780cdSTaniya Das };
1538*a4f780cdSTaniya Das 
1539*a4f780cdSTaniya Das static const struct qcom_reset_map se_gcc_nord_resets[] = {
1540*a4f780cdSTaniya Das 	[SE_GCC_EMAC0_BCR] = { 0x24000 },
1541*a4f780cdSTaniya Das 	[SE_GCC_EMAC1_BCR] = { 0x25000 },
1542*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAPPER_0_BCR] = { 0x26000 },
1543*a4f780cdSTaniya Das 	[SE_GCC_QUPV3_WRAPPER_1_BCR] = { 0x27000 },
1544*a4f780cdSTaniya Das };
1545*a4f780cdSTaniya Das 
1546*a4f780cdSTaniya Das static const struct clk_rcg_dfs_data se_gcc_nord_dfs_clocks[] = {
1547*a4f780cdSTaniya Das 	DEFINE_RCG_DFS(se_gcc_qupv3_wrap0_s0_clk_src),
1548*a4f780cdSTaniya Das 	DEFINE_RCG_DFS(se_gcc_qupv3_wrap0_s1_clk_src),
1549*a4f780cdSTaniya Das 	DEFINE_RCG_DFS(se_gcc_qupv3_wrap0_s2_clk_src),
1550*a4f780cdSTaniya Das 	DEFINE_RCG_DFS(se_gcc_qupv3_wrap0_s3_clk_src),
1551*a4f780cdSTaniya Das 	DEFINE_RCG_DFS(se_gcc_qupv3_wrap0_s4_clk_src),
1552*a4f780cdSTaniya Das 	DEFINE_RCG_DFS(se_gcc_qupv3_wrap0_s5_clk_src),
1553*a4f780cdSTaniya Das 	DEFINE_RCG_DFS(se_gcc_qupv3_wrap0_s6_clk_src),
1554*a4f780cdSTaniya Das 	DEFINE_RCG_DFS(se_gcc_qupv3_wrap1_s0_clk_src),
1555*a4f780cdSTaniya Das 	DEFINE_RCG_DFS(se_gcc_qupv3_wrap1_s1_clk_src),
1556*a4f780cdSTaniya Das 	DEFINE_RCG_DFS(se_gcc_qupv3_wrap1_s2_clk_src),
1557*a4f780cdSTaniya Das 	DEFINE_RCG_DFS(se_gcc_qupv3_wrap1_s3_clk_src),
1558*a4f780cdSTaniya Das 	DEFINE_RCG_DFS(se_gcc_qupv3_wrap1_s4_clk_src),
1559*a4f780cdSTaniya Das 	DEFINE_RCG_DFS(se_gcc_qupv3_wrap1_s5_clk_src),
1560*a4f780cdSTaniya Das 	DEFINE_RCG_DFS(se_gcc_qupv3_wrap1_s6_clk_src),
1561*a4f780cdSTaniya Das };
1562*a4f780cdSTaniya Das 
1563*a4f780cdSTaniya Das static const struct regmap_config se_gcc_nord_regmap_config = {
1564*a4f780cdSTaniya Das 	.reg_bits = 32,
1565*a4f780cdSTaniya Das 	.reg_stride = 4,
1566*a4f780cdSTaniya Das 	.val_bits = 32,
1567*a4f780cdSTaniya Das 	.max_register = 0xf41f0,
1568*a4f780cdSTaniya Das 	.fast_io = true,
1569*a4f780cdSTaniya Das };
1570*a4f780cdSTaniya Das 
1571*a4f780cdSTaniya Das static struct qcom_cc_driver_data se_gcc_nord_driver_data = {
1572*a4f780cdSTaniya Das 	.dfs_rcgs = se_gcc_nord_dfs_clocks,
1573*a4f780cdSTaniya Das 	.num_dfs_rcgs = ARRAY_SIZE(se_gcc_nord_dfs_clocks),
1574*a4f780cdSTaniya Das };
1575*a4f780cdSTaniya Das 
1576*a4f780cdSTaniya Das static const struct qcom_cc_desc se_gcc_nord_desc = {
1577*a4f780cdSTaniya Das 	.config = &se_gcc_nord_regmap_config,
1578*a4f780cdSTaniya Das 	.clks = se_gcc_nord_clocks,
1579*a4f780cdSTaniya Das 	.num_clks = ARRAY_SIZE(se_gcc_nord_clocks),
1580*a4f780cdSTaniya Das 	.resets = se_gcc_nord_resets,
1581*a4f780cdSTaniya Das 	.num_resets = ARRAY_SIZE(se_gcc_nord_resets),
1582*a4f780cdSTaniya Das 	.gdscs = se_gcc_nord_gdscs,
1583*a4f780cdSTaniya Das 	.num_gdscs = ARRAY_SIZE(se_gcc_nord_gdscs),
1584*a4f780cdSTaniya Das 	.driver_data = &se_gcc_nord_driver_data,
1585*a4f780cdSTaniya Das };
1586*a4f780cdSTaniya Das 
1587*a4f780cdSTaniya Das static const struct of_device_id se_gcc_nord_match_table[] = {
1588*a4f780cdSTaniya Das 	{ .compatible = "qcom,nord-segcc" },
1589*a4f780cdSTaniya Das 	{ }
1590*a4f780cdSTaniya Das };
1591*a4f780cdSTaniya Das MODULE_DEVICE_TABLE(of, se_gcc_nord_match_table);
1592*a4f780cdSTaniya Das 
1593*a4f780cdSTaniya Das static int se_gcc_nord_probe(struct platform_device *pdev)
1594*a4f780cdSTaniya Das {
1595*a4f780cdSTaniya Das 	return qcom_cc_probe(pdev, &se_gcc_nord_desc);
1596*a4f780cdSTaniya Das }
1597*a4f780cdSTaniya Das 
1598*a4f780cdSTaniya Das static struct platform_driver se_gcc_nord_driver = {
1599*a4f780cdSTaniya Das 	.probe = se_gcc_nord_probe,
1600*a4f780cdSTaniya Das 	.driver = {
1601*a4f780cdSTaniya Das 		.name = "segcc-nord",
1602*a4f780cdSTaniya Das 		.of_match_table = se_gcc_nord_match_table,
1603*a4f780cdSTaniya Das 	},
1604*a4f780cdSTaniya Das };
1605*a4f780cdSTaniya Das 
1606*a4f780cdSTaniya Das module_platform_driver(se_gcc_nord_driver);
1607*a4f780cdSTaniya Das 
1608*a4f780cdSTaniya Das MODULE_DESCRIPTION("QTI SEGCC NORD Driver");
1609*a4f780cdSTaniya Das MODULE_LICENSE("GPL");
1610