xref: /openbmc/linux/drivers/clk/qcom/gcc-ipq6018.c (revision d9db07f088af01a1080d01de363141b673c7d646)
1*d9db07f0SSricharan R // SPDX-License-Identifier: GPL-2.0
2*d9db07f0SSricharan R /*
3*d9db07f0SSricharan R  * Copyright (c) 2018, The Linux Foundation. All rights reserved.
4*d9db07f0SSricharan R  */
5*d9db07f0SSricharan R 
6*d9db07f0SSricharan R #include <linux/kernel.h>
7*d9db07f0SSricharan R #include <linux/err.h>
8*d9db07f0SSricharan R #include <linux/platform_device.h>
9*d9db07f0SSricharan R #include <linux/module.h>
10*d9db07f0SSricharan R #include <linux/of.h>
11*d9db07f0SSricharan R #include <linux/of_device.h>
12*d9db07f0SSricharan R #include <linux/clk-provider.h>
13*d9db07f0SSricharan R #include <linux/regmap.h>
14*d9db07f0SSricharan R 
15*d9db07f0SSricharan R #include <linux/reset-controller.h>
16*d9db07f0SSricharan R #include <dt-bindings/clock/qcom,gcc-ipq6018.h>
17*d9db07f0SSricharan R #include <dt-bindings/reset/qcom,gcc-ipq6018.h>
18*d9db07f0SSricharan R 
19*d9db07f0SSricharan R #include "common.h"
20*d9db07f0SSricharan R #include "clk-regmap.h"
21*d9db07f0SSricharan R #include "clk-pll.h"
22*d9db07f0SSricharan R #include "clk-rcg.h"
23*d9db07f0SSricharan R #include "clk-branch.h"
24*d9db07f0SSricharan R #include "clk-alpha-pll.h"
25*d9db07f0SSricharan R #include "clk-regmap-divider.h"
26*d9db07f0SSricharan R #include "clk-regmap-mux.h"
27*d9db07f0SSricharan R #include "reset.h"
28*d9db07f0SSricharan R 
29*d9db07f0SSricharan R #define F(f, s, h, m, n) { (f), (s), (2 * (h) - 1), (m), (n) }
30*d9db07f0SSricharan R 
31*d9db07f0SSricharan R enum {
32*d9db07f0SSricharan R 	P_XO,
33*d9db07f0SSricharan R 	P_BIAS_PLL,
34*d9db07f0SSricharan R 	P_UNIPHY0_RX,
35*d9db07f0SSricharan R 	P_UNIPHY0_TX,
36*d9db07f0SSricharan R 	P_UNIPHY1_RX,
37*d9db07f0SSricharan R 	P_BIAS_PLL_NSS_NOC,
38*d9db07f0SSricharan R 	P_UNIPHY1_TX,
39*d9db07f0SSricharan R 	P_PCIE20_PHY0_PIPE,
40*d9db07f0SSricharan R 	P_USB3PHY_0_PIPE,
41*d9db07f0SSricharan R 	P_GPLL0,
42*d9db07f0SSricharan R 	P_GPLL0_DIV2,
43*d9db07f0SSricharan R 	P_GPLL2,
44*d9db07f0SSricharan R 	P_GPLL4,
45*d9db07f0SSricharan R 	P_GPLL6,
46*d9db07f0SSricharan R 	P_SLEEP_CLK,
47*d9db07f0SSricharan R 	P_UBI32_PLL,
48*d9db07f0SSricharan R 	P_NSS_CRYPTO_PLL,
49*d9db07f0SSricharan R 	P_PI_SLEEP,
50*d9db07f0SSricharan R };
51*d9db07f0SSricharan R 
52*d9db07f0SSricharan R static struct clk_alpha_pll gpll0_main = {
53*d9db07f0SSricharan R 	.offset = 0x21000,
54*d9db07f0SSricharan R 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
55*d9db07f0SSricharan R 	.clkr = {
56*d9db07f0SSricharan R 		.enable_reg = 0x0b000,
57*d9db07f0SSricharan R 		.enable_mask = BIT(0),
58*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
59*d9db07f0SSricharan R 			.name = "gpll0_main",
60*d9db07f0SSricharan R 			.parent_data = &(const struct clk_parent_data){
61*d9db07f0SSricharan R 				.fw_name = "xo",
62*d9db07f0SSricharan R 			},
63*d9db07f0SSricharan R 			.num_parents = 1,
64*d9db07f0SSricharan R 			.ops = &clk_alpha_pll_ops,
65*d9db07f0SSricharan R 		},
66*d9db07f0SSricharan R 	},
67*d9db07f0SSricharan R };
68*d9db07f0SSricharan R 
69*d9db07f0SSricharan R static struct clk_fixed_factor gpll0_out_main_div2 = {
70*d9db07f0SSricharan R 	.mult = 1,
71*d9db07f0SSricharan R 	.div = 2,
72*d9db07f0SSricharan R 	.hw.init = &(struct clk_init_data){
73*d9db07f0SSricharan R 		.name = "gpll0_out_main_div2",
74*d9db07f0SSricharan R 		.parent_hws = (const struct clk_hw *[]){
75*d9db07f0SSricharan R 				&gpll0_main.clkr.hw },
76*d9db07f0SSricharan R 		.num_parents = 1,
77*d9db07f0SSricharan R 		.ops = &clk_fixed_factor_ops,
78*d9db07f0SSricharan R 		.flags = CLK_SET_RATE_PARENT,
79*d9db07f0SSricharan R 	},
80*d9db07f0SSricharan R };
81*d9db07f0SSricharan R 
82*d9db07f0SSricharan R static struct clk_alpha_pll_postdiv gpll0 = {
83*d9db07f0SSricharan R 	.offset = 0x21000,
84*d9db07f0SSricharan R 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
85*d9db07f0SSricharan R 	.width = 4,
86*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
87*d9db07f0SSricharan R 		.name = "gpll0",
88*d9db07f0SSricharan R 		.parent_hws = (const struct clk_hw *[]){
89*d9db07f0SSricharan R 				&gpll0_main.clkr.hw },
90*d9db07f0SSricharan R 		.num_parents = 1,
91*d9db07f0SSricharan R 		.ops = &clk_alpha_pll_postdiv_ro_ops,
92*d9db07f0SSricharan R 		.flags = CLK_SET_RATE_PARENT,
93*d9db07f0SSricharan R 	},
94*d9db07f0SSricharan R };
95*d9db07f0SSricharan R 
96*d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_gpll0_gpll0_out_main_div2[] = {
97*d9db07f0SSricharan R 	{ .fw_name = "xo" },
98*d9db07f0SSricharan R 	{ .hw = &gpll0.clkr.hw},
99*d9db07f0SSricharan R 	{ .hw = &gpll0_out_main_div2.hw},
100*d9db07f0SSricharan R };
101*d9db07f0SSricharan R 
102*d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll0_gpll0_out_main_div2_map[] = {
103*d9db07f0SSricharan R 	{ P_XO, 0 },
104*d9db07f0SSricharan R 	{ P_GPLL0, 1 },
105*d9db07f0SSricharan R 	{ P_GPLL0_DIV2, 4 },
106*d9db07f0SSricharan R };
107*d9db07f0SSricharan R 
108*d9db07f0SSricharan R static struct clk_alpha_pll ubi32_pll_main = {
109*d9db07f0SSricharan R 	.offset = 0x25000,
110*d9db07f0SSricharan R 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_HUAYRA],
111*d9db07f0SSricharan R 	.flags = SUPPORTS_DYNAMIC_UPDATE,
112*d9db07f0SSricharan R 	.clkr = {
113*d9db07f0SSricharan R 		.enable_reg = 0x0b000,
114*d9db07f0SSricharan R 		.enable_mask = BIT(6),
115*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
116*d9db07f0SSricharan R 			.name = "ubi32_pll_main",
117*d9db07f0SSricharan R 			.parent_data = &(const struct clk_parent_data){
118*d9db07f0SSricharan R 				.fw_name = "xo",
119*d9db07f0SSricharan R 			},
120*d9db07f0SSricharan R 			.num_parents = 1,
121*d9db07f0SSricharan R 			.ops = &clk_alpha_pll_huayra_ops,
122*d9db07f0SSricharan R 		},
123*d9db07f0SSricharan R 	},
124*d9db07f0SSricharan R };
125*d9db07f0SSricharan R 
126*d9db07f0SSricharan R static struct clk_alpha_pll_postdiv ubi32_pll = {
127*d9db07f0SSricharan R 	.offset = 0x25000,
128*d9db07f0SSricharan R 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_HUAYRA],
129*d9db07f0SSricharan R 	.width = 2,
130*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
131*d9db07f0SSricharan R 		.name = "ubi32_pll",
132*d9db07f0SSricharan R 		.parent_hws = (const struct clk_hw *[]){
133*d9db07f0SSricharan R 				&ubi32_pll_main.clkr.hw },
134*d9db07f0SSricharan R 		.num_parents = 1,
135*d9db07f0SSricharan R 		.ops = &clk_alpha_pll_postdiv_ro_ops,
136*d9db07f0SSricharan R 		.flags = CLK_SET_RATE_PARENT,
137*d9db07f0SSricharan R 	},
138*d9db07f0SSricharan R };
139*d9db07f0SSricharan R 
140*d9db07f0SSricharan R static struct clk_alpha_pll gpll6_main = {
141*d9db07f0SSricharan R 	.offset = 0x37000,
142*d9db07f0SSricharan R 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_BRAMMO],
143*d9db07f0SSricharan R 	.clkr = {
144*d9db07f0SSricharan R 		.enable_reg = 0x0b000,
145*d9db07f0SSricharan R 		.enable_mask = BIT(7),
146*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
147*d9db07f0SSricharan R 			.name = "gpll6_main",
148*d9db07f0SSricharan R 			.parent_data = &(const struct clk_parent_data){
149*d9db07f0SSricharan R 				.fw_name = "xo",
150*d9db07f0SSricharan R 			},
151*d9db07f0SSricharan R 			.num_parents = 1,
152*d9db07f0SSricharan R 			.ops = &clk_alpha_pll_ops,
153*d9db07f0SSricharan R 		},
154*d9db07f0SSricharan R 	},
155*d9db07f0SSricharan R };
156*d9db07f0SSricharan R 
157*d9db07f0SSricharan R static struct clk_alpha_pll_postdiv gpll6 = {
158*d9db07f0SSricharan R 	.offset = 0x37000,
159*d9db07f0SSricharan R 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_BRAMMO],
160*d9db07f0SSricharan R 	.width = 2,
161*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
162*d9db07f0SSricharan R 		.name = "gpll6",
163*d9db07f0SSricharan R 		.parent_hws = (const struct clk_hw *[]){
164*d9db07f0SSricharan R 				&gpll6_main.clkr.hw },
165*d9db07f0SSricharan R 		.num_parents = 1,
166*d9db07f0SSricharan R 		.ops = &clk_alpha_pll_postdiv_ro_ops,
167*d9db07f0SSricharan R 		.flags = CLK_SET_RATE_PARENT,
168*d9db07f0SSricharan R 	},
169*d9db07f0SSricharan R };
170*d9db07f0SSricharan R 
171*d9db07f0SSricharan R static struct clk_alpha_pll gpll4_main = {
172*d9db07f0SSricharan R 	.offset = 0x24000,
173*d9db07f0SSricharan R 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
174*d9db07f0SSricharan R 	.clkr = {
175*d9db07f0SSricharan R 		.enable_reg = 0x0b000,
176*d9db07f0SSricharan R 		.enable_mask = BIT(5),
177*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
178*d9db07f0SSricharan R 			.name = "gpll4_main",
179*d9db07f0SSricharan R 			.parent_data = &(const struct clk_parent_data){
180*d9db07f0SSricharan R 				.fw_name = "xo",
181*d9db07f0SSricharan R 			},
182*d9db07f0SSricharan R 			.num_parents = 1,
183*d9db07f0SSricharan R 			.ops = &clk_alpha_pll_ops,
184*d9db07f0SSricharan R 		},
185*d9db07f0SSricharan R 	},
186*d9db07f0SSricharan R };
187*d9db07f0SSricharan R 
188*d9db07f0SSricharan R static struct clk_alpha_pll_postdiv gpll4 = {
189*d9db07f0SSricharan R 	.offset = 0x24000,
190*d9db07f0SSricharan R 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
191*d9db07f0SSricharan R 	.width = 4,
192*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
193*d9db07f0SSricharan R 		.name = "gpll4",
194*d9db07f0SSricharan R 		.parent_hws = (const struct clk_hw *[]){
195*d9db07f0SSricharan R 				&gpll4_main.clkr.hw },
196*d9db07f0SSricharan R 		.num_parents = 1,
197*d9db07f0SSricharan R 		.ops = &clk_alpha_pll_postdiv_ro_ops,
198*d9db07f0SSricharan R 		.flags = CLK_SET_RATE_PARENT,
199*d9db07f0SSricharan R 	},
200*d9db07f0SSricharan R };
201*d9db07f0SSricharan R 
202*d9db07f0SSricharan R static const struct freq_tbl ftbl_pcnoc_bfdcd_clk_src[] = {
203*d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
204*d9db07f0SSricharan R 	F(50000000, P_GPLL0, 16, 0, 0),
205*d9db07f0SSricharan R 	F(100000000, P_GPLL0, 8, 0, 0),
206*d9db07f0SSricharan R 	{ }
207*d9db07f0SSricharan R };
208*d9db07f0SSricharan R 
209*d9db07f0SSricharan R static struct clk_rcg2 pcnoc_bfdcd_clk_src = {
210*d9db07f0SSricharan R 	.cmd_rcgr = 0x27000,
211*d9db07f0SSricharan R 	.freq_tbl = ftbl_pcnoc_bfdcd_clk_src,
212*d9db07f0SSricharan R 	.hid_width = 5,
213*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
214*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
215*d9db07f0SSricharan R 		.name = "pcnoc_bfdcd_clk_src",
216*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
217*d9db07f0SSricharan R 		.num_parents = 3,
218*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
219*d9db07f0SSricharan R 	},
220*d9db07f0SSricharan R };
221*d9db07f0SSricharan R 
222*d9db07f0SSricharan R static struct clk_alpha_pll gpll2_main = {
223*d9db07f0SSricharan R 	.offset = 0x4a000,
224*d9db07f0SSricharan R 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
225*d9db07f0SSricharan R 	.clkr = {
226*d9db07f0SSricharan R 		.enable_reg = 0x0b000,
227*d9db07f0SSricharan R 		.enable_mask = BIT(2),
228*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
229*d9db07f0SSricharan R 			.name = "gpll2_main",
230*d9db07f0SSricharan R 			.parent_data = &(const struct clk_parent_data){
231*d9db07f0SSricharan R 				.fw_name = "xo",
232*d9db07f0SSricharan R 			},
233*d9db07f0SSricharan R 			.num_parents = 1,
234*d9db07f0SSricharan R 			.ops = &clk_alpha_pll_ops,
235*d9db07f0SSricharan R 		},
236*d9db07f0SSricharan R 	},
237*d9db07f0SSricharan R };
238*d9db07f0SSricharan R 
239*d9db07f0SSricharan R static struct clk_alpha_pll_postdiv gpll2 = {
240*d9db07f0SSricharan R 	.offset = 0x4a000,
241*d9db07f0SSricharan R 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
242*d9db07f0SSricharan R 	.width = 4,
243*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
244*d9db07f0SSricharan R 		.name = "gpll2",
245*d9db07f0SSricharan R 		.parent_hws = (const struct clk_hw *[]){
246*d9db07f0SSricharan R 				&gpll2_main.clkr.hw },
247*d9db07f0SSricharan R 		.num_parents = 1,
248*d9db07f0SSricharan R 		.ops = &clk_alpha_pll_postdiv_ro_ops,
249*d9db07f0SSricharan R 		.flags = CLK_SET_RATE_PARENT,
250*d9db07f0SSricharan R 	},
251*d9db07f0SSricharan R };
252*d9db07f0SSricharan R 
253*d9db07f0SSricharan R static struct clk_alpha_pll nss_crypto_pll_main = {
254*d9db07f0SSricharan R 	.offset = 0x22000,
255*d9db07f0SSricharan R 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
256*d9db07f0SSricharan R 	.clkr = {
257*d9db07f0SSricharan R 		.enable_reg = 0x0b000,
258*d9db07f0SSricharan R 		.enable_mask = BIT(4),
259*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
260*d9db07f0SSricharan R 			.name = "nss_crypto_pll_main",
261*d9db07f0SSricharan R 			.parent_data = &(const struct clk_parent_data){
262*d9db07f0SSricharan R 				.fw_name = "xo",
263*d9db07f0SSricharan R 			},
264*d9db07f0SSricharan R 			.num_parents = 1,
265*d9db07f0SSricharan R 			.ops = &clk_alpha_pll_ops,
266*d9db07f0SSricharan R 		},
267*d9db07f0SSricharan R 	},
268*d9db07f0SSricharan R };
269*d9db07f0SSricharan R 
270*d9db07f0SSricharan R static struct clk_alpha_pll_postdiv nss_crypto_pll = {
271*d9db07f0SSricharan R 	.offset = 0x22000,
272*d9db07f0SSricharan R 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
273*d9db07f0SSricharan R 	.width = 4,
274*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
275*d9db07f0SSricharan R 		.name = "nss_crypto_pll",
276*d9db07f0SSricharan R 		.parent_hws = (const struct clk_hw *[]){
277*d9db07f0SSricharan R 				&nss_crypto_pll_main.clkr.hw },
278*d9db07f0SSricharan R 		.num_parents = 1,
279*d9db07f0SSricharan R 		.ops = &clk_alpha_pll_postdiv_ro_ops,
280*d9db07f0SSricharan R 		.flags = CLK_SET_RATE_PARENT,
281*d9db07f0SSricharan R 	},
282*d9db07f0SSricharan R };
283*d9db07f0SSricharan R 
284*d9db07f0SSricharan R static const struct freq_tbl ftbl_qdss_tsctr_clk_src[] = {
285*d9db07f0SSricharan R 	F(160000000, P_GPLL0_DIV2, 2.5, 0, 0),
286*d9db07f0SSricharan R 	F(320000000, P_GPLL0, 2.5, 0, 0),
287*d9db07f0SSricharan R 	F(600000000, P_GPLL4, 2, 0, 0),
288*d9db07f0SSricharan R 	{ }
289*d9db07f0SSricharan R };
290*d9db07f0SSricharan R 
291*d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_gpll4_gpll0_gpll6_gpll0_div2[] = {
292*d9db07f0SSricharan R 	{ .fw_name = "xo" },
293*d9db07f0SSricharan R 	{ .hw = &gpll4.clkr.hw },
294*d9db07f0SSricharan R 	{ .hw = &gpll0.clkr.hw },
295*d9db07f0SSricharan R 	{ .hw = &gpll6.clkr.hw },
296*d9db07f0SSricharan R 	{ .hw = &gpll0_out_main_div2.hw },
297*d9db07f0SSricharan R };
298*d9db07f0SSricharan R 
299*d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll4_gpll0_gpll6_gpll0_div2_map[] = {
300*d9db07f0SSricharan R 	{ P_XO, 0 },
301*d9db07f0SSricharan R 	{ P_GPLL4, 1 },
302*d9db07f0SSricharan R 	{ P_GPLL0, 2 },
303*d9db07f0SSricharan R 	{ P_GPLL6, 3 },
304*d9db07f0SSricharan R 	{ P_GPLL0_DIV2, 4 },
305*d9db07f0SSricharan R };
306*d9db07f0SSricharan R 
307*d9db07f0SSricharan R static struct clk_rcg2 qdss_tsctr_clk_src = {
308*d9db07f0SSricharan R 	.cmd_rcgr = 0x29064,
309*d9db07f0SSricharan R 	.freq_tbl = ftbl_qdss_tsctr_clk_src,
310*d9db07f0SSricharan R 	.hid_width = 5,
311*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll4_gpll0_gpll6_gpll0_div2_map,
312*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
313*d9db07f0SSricharan R 		.name = "qdss_tsctr_clk_src",
314*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll4_gpll0_gpll6_gpll0_div2,
315*d9db07f0SSricharan R 		.num_parents = 5,
316*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
317*d9db07f0SSricharan R 	},
318*d9db07f0SSricharan R };
319*d9db07f0SSricharan R 
320*d9db07f0SSricharan R static struct clk_fixed_factor qdss_dap_sync_clk_src = {
321*d9db07f0SSricharan R 	.mult = 1,
322*d9db07f0SSricharan R 	.div = 4,
323*d9db07f0SSricharan R 	.hw.init = &(struct clk_init_data){
324*d9db07f0SSricharan R 		.name = "qdss_dap_sync_clk_src",
325*d9db07f0SSricharan R 		.parent_hws = (const struct clk_hw *[]){
326*d9db07f0SSricharan R 				&qdss_tsctr_clk_src.clkr.hw },
327*d9db07f0SSricharan R 		.num_parents = 1,
328*d9db07f0SSricharan R 		.ops = &clk_fixed_factor_ops,
329*d9db07f0SSricharan R 	},
330*d9db07f0SSricharan R };
331*d9db07f0SSricharan R 
332*d9db07f0SSricharan R static const struct freq_tbl ftbl_qdss_at_clk_src[] = {
333*d9db07f0SSricharan R 	F(66670000, P_GPLL0_DIV2, 6, 0, 0),
334*d9db07f0SSricharan R 	F(240000000, P_GPLL4, 5, 0, 0),
335*d9db07f0SSricharan R 	{ }
336*d9db07f0SSricharan R };
337*d9db07f0SSricharan R 
338*d9db07f0SSricharan R static struct clk_rcg2 qdss_at_clk_src = {
339*d9db07f0SSricharan R 	.cmd_rcgr = 0x2900c,
340*d9db07f0SSricharan R 	.freq_tbl = ftbl_qdss_at_clk_src,
341*d9db07f0SSricharan R 	.hid_width = 5,
342*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll4_gpll0_gpll6_gpll0_div2_map,
343*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
344*d9db07f0SSricharan R 		.name = "qdss_at_clk_src",
345*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll4_gpll0_gpll6_gpll0_div2,
346*d9db07f0SSricharan R 		.num_parents = 5,
347*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
348*d9db07f0SSricharan R 	},
349*d9db07f0SSricharan R };
350*d9db07f0SSricharan R 
351*d9db07f0SSricharan R static struct clk_fixed_factor qdss_tsctr_div2_clk_src = {
352*d9db07f0SSricharan R 	.mult = 1,
353*d9db07f0SSricharan R 	.div = 2,
354*d9db07f0SSricharan R 	.hw.init = &(struct clk_init_data){
355*d9db07f0SSricharan R 		.name = "qdss_tsctr_div2_clk_src",
356*d9db07f0SSricharan R 		.parent_hws = (const struct clk_hw *[]){
357*d9db07f0SSricharan R 				&qdss_tsctr_clk_src.clkr.hw },
358*d9db07f0SSricharan R 		.num_parents = 1,
359*d9db07f0SSricharan R 		.flags = CLK_SET_RATE_PARENT,
360*d9db07f0SSricharan R 		.ops = &clk_fixed_factor_ops,
361*d9db07f0SSricharan R 	},
362*d9db07f0SSricharan R };
363*d9db07f0SSricharan R 
364*d9db07f0SSricharan R static const struct freq_tbl ftbl_nss_ppe_clk_src[] = {
365*d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
366*d9db07f0SSricharan R 	F(300000000, P_BIAS_PLL, 1, 0, 0),
367*d9db07f0SSricharan R 	{ }
368*d9db07f0SSricharan R };
369*d9db07f0SSricharan R 
370*d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_bias_gpll0_gpll4_nss_ubi32[] = {
371*d9db07f0SSricharan R 	{ .fw_name = "xo" },
372*d9db07f0SSricharan R 	{ .fw_name = "bias_pll_cc_clk" },
373*d9db07f0SSricharan R 	{ .hw = &gpll0.clkr.hw },
374*d9db07f0SSricharan R 	{ .hw = &gpll4.clkr.hw },
375*d9db07f0SSricharan R 	{ .hw = &nss_crypto_pll.clkr.hw },
376*d9db07f0SSricharan R 	{ .hw = &ubi32_pll.clkr.hw },
377*d9db07f0SSricharan R };
378*d9db07f0SSricharan R 
379*d9db07f0SSricharan R static const struct parent_map gcc_xo_bias_gpll0_gpll4_nss_ubi32_map[] = {
380*d9db07f0SSricharan R 	{ P_XO, 0 },
381*d9db07f0SSricharan R 	{ P_BIAS_PLL, 1 },
382*d9db07f0SSricharan R 	{ P_GPLL0, 2 },
383*d9db07f0SSricharan R 	{ P_GPLL4, 3 },
384*d9db07f0SSricharan R 	{ P_NSS_CRYPTO_PLL, 4 },
385*d9db07f0SSricharan R 	{ P_UBI32_PLL, 5 },
386*d9db07f0SSricharan R };
387*d9db07f0SSricharan R 
388*d9db07f0SSricharan R static struct clk_rcg2 nss_ppe_clk_src = {
389*d9db07f0SSricharan R 	.cmd_rcgr = 0x68080,
390*d9db07f0SSricharan R 	.freq_tbl = ftbl_nss_ppe_clk_src,
391*d9db07f0SSricharan R 	.hid_width = 5,
392*d9db07f0SSricharan R 	.parent_map = gcc_xo_bias_gpll0_gpll4_nss_ubi32_map,
393*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
394*d9db07f0SSricharan R 		.name = "nss_ppe_clk_src",
395*d9db07f0SSricharan R 		.parent_data = gcc_xo_bias_gpll0_gpll4_nss_ubi32,
396*d9db07f0SSricharan R 		.num_parents = 6,
397*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
398*d9db07f0SSricharan R 	},
399*d9db07f0SSricharan R };
400*d9db07f0SSricharan R 
401*d9db07f0SSricharan R static struct clk_branch gcc_xo_clk_src = {
402*d9db07f0SSricharan R 	.halt_reg = 0x30018,
403*d9db07f0SSricharan R 	.clkr = {
404*d9db07f0SSricharan R 		.enable_reg = 0x30018,
405*d9db07f0SSricharan R 		.enable_mask = BIT(1),
406*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
407*d9db07f0SSricharan R 			.name = "gcc_xo_clk_src",
408*d9db07f0SSricharan R 			.parent_data = &(const struct clk_parent_data){
409*d9db07f0SSricharan R 				.fw_name = "xo",
410*d9db07f0SSricharan R 			},
411*d9db07f0SSricharan R 			.num_parents = 1,
412*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
413*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
414*d9db07f0SSricharan R 		},
415*d9db07f0SSricharan R 	},
416*d9db07f0SSricharan R };
417*d9db07f0SSricharan R 
418*d9db07f0SSricharan R static const struct freq_tbl ftbl_nss_ce_clk_src[] = {
419*d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
420*d9db07f0SSricharan R 	F(200000000, P_GPLL0, 4, 0, 0),
421*d9db07f0SSricharan R 	{ }
422*d9db07f0SSricharan R };
423*d9db07f0SSricharan R 
424*d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_gpll0[] = {
425*d9db07f0SSricharan R 	{ .fw_name = "xo" },
426*d9db07f0SSricharan R 	{ .hw = &gpll0.clkr.hw },
427*d9db07f0SSricharan R };
428*d9db07f0SSricharan R 
429*d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll0_map[] = {
430*d9db07f0SSricharan R 	{ P_XO, 0 },
431*d9db07f0SSricharan R 	{ P_GPLL0, 1 },
432*d9db07f0SSricharan R };
433*d9db07f0SSricharan R 
434*d9db07f0SSricharan R static struct clk_rcg2 nss_ce_clk_src = {
435*d9db07f0SSricharan R 	.cmd_rcgr = 0x68098,
436*d9db07f0SSricharan R 	.freq_tbl = ftbl_nss_ce_clk_src,
437*d9db07f0SSricharan R 	.hid_width = 5,
438*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_map,
439*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
440*d9db07f0SSricharan R 		.name = "nss_ce_clk_src",
441*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0,
442*d9db07f0SSricharan R 		.num_parents = 2,
443*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
444*d9db07f0SSricharan R 	},
445*d9db07f0SSricharan R };
446*d9db07f0SSricharan R 
447*d9db07f0SSricharan R static struct clk_branch gcc_sleep_clk_src = {
448*d9db07f0SSricharan R 	.halt_reg = 0x30000,
449*d9db07f0SSricharan R 	.clkr = {
450*d9db07f0SSricharan R 		.enable_reg = 0x30000,
451*d9db07f0SSricharan R 		.enable_mask = BIT(1),
452*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
453*d9db07f0SSricharan R 			.name = "gcc_sleep_clk_src",
454*d9db07f0SSricharan R 			.parent_data = &(const struct clk_parent_data){
455*d9db07f0SSricharan R 				.fw_name = "sleep_clk",
456*d9db07f0SSricharan R 			},
457*d9db07f0SSricharan R 			.num_parents = 1,
458*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
459*d9db07f0SSricharan R 		},
460*d9db07f0SSricharan R 	},
461*d9db07f0SSricharan R };
462*d9db07f0SSricharan R 
463*d9db07f0SSricharan R static const struct freq_tbl ftbl_snoc_nssnoc_bfdcd_clk_src[] = {
464*d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
465*d9db07f0SSricharan R 	F(50000000, P_GPLL0_DIV2, 8, 0, 0),
466*d9db07f0SSricharan R 	F(100000000, P_GPLL0, 8, 0, 0),
467*d9db07f0SSricharan R 	F(133333333, P_GPLL0, 6, 0, 0),
468*d9db07f0SSricharan R 	F(160000000, P_GPLL0, 5, 0, 0),
469*d9db07f0SSricharan R 	F(200000000, P_GPLL0, 4, 0, 0),
470*d9db07f0SSricharan R 	F(266666667, P_GPLL0, 3, 0, 0),
471*d9db07f0SSricharan R 	{ }
472*d9db07f0SSricharan R };
473*d9db07f0SSricharan R 
474*d9db07f0SSricharan R static const struct clk_parent_data
475*d9db07f0SSricharan R 			gcc_xo_gpll0_gpll6_gpll0_out_main_div2[] = {
476*d9db07f0SSricharan R 	{ .fw_name = "xo" },
477*d9db07f0SSricharan R 	{ .hw = &gpll0.clkr.hw },
478*d9db07f0SSricharan R 	{ .hw = &gpll6.clkr.hw },
479*d9db07f0SSricharan R 	{ .hw = &gpll0_out_main_div2.hw },
480*d9db07f0SSricharan R };
481*d9db07f0SSricharan R 
482*d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_out_main_div2_map[] = {
483*d9db07f0SSricharan R 	{ P_XO, 0 },
484*d9db07f0SSricharan R 	{ P_GPLL0, 1 },
485*d9db07f0SSricharan R 	{ P_GPLL6, 2 },
486*d9db07f0SSricharan R 	{ P_GPLL0_DIV2, 3 },
487*d9db07f0SSricharan R };
488*d9db07f0SSricharan R 
489*d9db07f0SSricharan R static struct clk_rcg2 snoc_nssnoc_bfdcd_clk_src = {
490*d9db07f0SSricharan R 	.cmd_rcgr = 0x76054,
491*d9db07f0SSricharan R 	.freq_tbl = ftbl_snoc_nssnoc_bfdcd_clk_src,
492*d9db07f0SSricharan R 	.hid_width = 5,
493*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll6_gpll0_out_main_div2_map,
494*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
495*d9db07f0SSricharan R 		.name = "snoc_nssnoc_bfdcd_clk_src",
496*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll6_gpll0_out_main_div2,
497*d9db07f0SSricharan R 		.num_parents = 4,
498*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
499*d9db07f0SSricharan R 	},
500*d9db07f0SSricharan R };
501*d9db07f0SSricharan R 
502*d9db07f0SSricharan R static const struct freq_tbl ftbl_apss_ahb_clk_src[] = {
503*d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
504*d9db07f0SSricharan R 	F(25000000, P_GPLL0_DIV2, 16, 0, 0),
505*d9db07f0SSricharan R 	F(50000000, P_GPLL0, 16, 0, 0),
506*d9db07f0SSricharan R 	F(100000000, P_GPLL0, 8, 0, 0),
507*d9db07f0SSricharan R 	{ }
508*d9db07f0SSricharan R };
509*d9db07f0SSricharan R 
510*d9db07f0SSricharan R static struct clk_rcg2 apss_ahb_clk_src = {
511*d9db07f0SSricharan R 	.cmd_rcgr = 0x46000,
512*d9db07f0SSricharan R 	.freq_tbl = ftbl_apss_ahb_clk_src,
513*d9db07f0SSricharan R 	.hid_width = 5,
514*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
515*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
516*d9db07f0SSricharan R 		.name = "apss_ahb_clk_src",
517*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
518*d9db07f0SSricharan R 		.num_parents = 3,
519*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
520*d9db07f0SSricharan R 	},
521*d9db07f0SSricharan R };
522*d9db07f0SSricharan R 
523*d9db07f0SSricharan R static const struct freq_tbl ftbl_nss_port5_rx_clk_src[] = {
524*d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
525*d9db07f0SSricharan R 	F(25000000, P_UNIPHY1_RX, 12.5, 0, 0),
526*d9db07f0SSricharan R 	F(25000000, P_UNIPHY0_RX, 5, 0, 0),
527*d9db07f0SSricharan R 	F(78125000, P_UNIPHY1_RX, 4, 0, 0),
528*d9db07f0SSricharan R 	F(125000000, P_UNIPHY1_RX, 2.5, 0, 0),
529*d9db07f0SSricharan R 	F(125000000, P_UNIPHY0_RX, 1, 0, 0),
530*d9db07f0SSricharan R 	F(156250000, P_UNIPHY1_RX, 2, 0, 0),
531*d9db07f0SSricharan R 	F(312500000, P_UNIPHY1_RX, 1, 0, 0),
532*d9db07f0SSricharan R 	{ }
533*d9db07f0SSricharan R };
534*d9db07f0SSricharan R 
535*d9db07f0SSricharan R static const struct clk_parent_data
536*d9db07f0SSricharan R gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias[] = {
537*d9db07f0SSricharan R 	{ .fw_name = "xo" },
538*d9db07f0SSricharan R 	{ .fw_name = "uniphy0_gcc_rx_clk" },
539*d9db07f0SSricharan R 	{ .fw_name = "uniphy0_gcc_tx_clk" },
540*d9db07f0SSricharan R 	{ .fw_name = "uniphy1_gcc_rx_clk" },
541*d9db07f0SSricharan R 	{ .fw_name = "uniphy1_gcc_tx_clk" },
542*d9db07f0SSricharan R 	{ .hw = &ubi32_pll.clkr.hw },
543*d9db07f0SSricharan R 	{ .fw_name = "bias_pll_cc_clk" },
544*d9db07f0SSricharan R };
545*d9db07f0SSricharan R 
546*d9db07f0SSricharan R static const struct parent_map
547*d9db07f0SSricharan R gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias_map[] = {
548*d9db07f0SSricharan R 	{ P_XO, 0 },
549*d9db07f0SSricharan R 	{ P_UNIPHY0_RX, 1 },
550*d9db07f0SSricharan R 	{ P_UNIPHY0_TX, 2 },
551*d9db07f0SSricharan R 	{ P_UNIPHY1_RX, 3 },
552*d9db07f0SSricharan R 	{ P_UNIPHY1_TX, 4 },
553*d9db07f0SSricharan R 	{ P_UBI32_PLL, 5 },
554*d9db07f0SSricharan R 	{ P_BIAS_PLL, 6 },
555*d9db07f0SSricharan R };
556*d9db07f0SSricharan R 
557*d9db07f0SSricharan R static struct clk_rcg2 nss_port5_rx_clk_src = {
558*d9db07f0SSricharan R 	.cmd_rcgr = 0x68060,
559*d9db07f0SSricharan R 	.freq_tbl = ftbl_nss_port5_rx_clk_src,
560*d9db07f0SSricharan R 	.hid_width = 5,
561*d9db07f0SSricharan R 	.parent_map = gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias_map,
562*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
563*d9db07f0SSricharan R 		.name = "nss_port5_rx_clk_src",
564*d9db07f0SSricharan R 		.parent_data = gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias,
565*d9db07f0SSricharan R 		.num_parents = 7,
566*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
567*d9db07f0SSricharan R 	},
568*d9db07f0SSricharan R };
569*d9db07f0SSricharan R 
570*d9db07f0SSricharan R static const struct freq_tbl ftbl_nss_port5_tx_clk_src[] = {
571*d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
572*d9db07f0SSricharan R 	F(25000000, P_UNIPHY1_TX, 12.5, 0, 0),
573*d9db07f0SSricharan R 	F(25000000, P_UNIPHY0_TX, 5, 0, 0),
574*d9db07f0SSricharan R 	F(78125000, P_UNIPHY1_TX, 4, 0, 0),
575*d9db07f0SSricharan R 	F(125000000, P_UNIPHY1_TX, 2.5, 0, 0),
576*d9db07f0SSricharan R 	F(125000000, P_UNIPHY0_TX, 1, 0, 0),
577*d9db07f0SSricharan R 	F(156250000, P_UNIPHY1_TX, 2, 0, 0),
578*d9db07f0SSricharan R 	F(312500000, P_UNIPHY1_TX, 1, 0, 0),
579*d9db07f0SSricharan R 	{ }
580*d9db07f0SSricharan R };
581*d9db07f0SSricharan R 
582*d9db07f0SSricharan R static const struct clk_parent_data
583*d9db07f0SSricharan R gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias[] = {
584*d9db07f0SSricharan R 	{ .fw_name = "xo" },
585*d9db07f0SSricharan R 	{ .fw_name = "uniphy0_gcc_tx_clk" },
586*d9db07f0SSricharan R 	{ .fw_name = "uniphy0_gcc_rx_clk" },
587*d9db07f0SSricharan R 	{ .fw_name = "uniphy1_gcc_tx_clk" },
588*d9db07f0SSricharan R 	{ .fw_name = "uniphy1_gcc_rx_clk" },
589*d9db07f0SSricharan R 	{ .hw = &ubi32_pll.clkr.hw },
590*d9db07f0SSricharan R 	{ .fw_name = "bias_pll_cc_clk" },
591*d9db07f0SSricharan R };
592*d9db07f0SSricharan R 
593*d9db07f0SSricharan R static const struct parent_map
594*d9db07f0SSricharan R gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias_map[] = {
595*d9db07f0SSricharan R 	{ P_XO, 0 },
596*d9db07f0SSricharan R 	{ P_UNIPHY0_TX, 1 },
597*d9db07f0SSricharan R 	{ P_UNIPHY0_RX, 2 },
598*d9db07f0SSricharan R 	{ P_UNIPHY1_TX, 3 },
599*d9db07f0SSricharan R 	{ P_UNIPHY1_RX, 4 },
600*d9db07f0SSricharan R 	{ P_UBI32_PLL, 5 },
601*d9db07f0SSricharan R 	{ P_BIAS_PLL, 6 },
602*d9db07f0SSricharan R };
603*d9db07f0SSricharan R 
604*d9db07f0SSricharan R static struct clk_rcg2 nss_port5_tx_clk_src = {
605*d9db07f0SSricharan R 	.cmd_rcgr = 0x68068,
606*d9db07f0SSricharan R 	.freq_tbl = ftbl_nss_port5_tx_clk_src,
607*d9db07f0SSricharan R 	.hid_width = 5,
608*d9db07f0SSricharan R 	.parent_map = gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias_map,
609*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
610*d9db07f0SSricharan R 		.name = "nss_port5_tx_clk_src",
611*d9db07f0SSricharan R 		.parent_data = gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias,
612*d9db07f0SSricharan R 		.num_parents = 7,
613*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
614*d9db07f0SSricharan R 	},
615*d9db07f0SSricharan R };
616*d9db07f0SSricharan R 
617*d9db07f0SSricharan R static const struct freq_tbl ftbl_pcie_axi_clk_src[] = {
618*d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
619*d9db07f0SSricharan R 	F(200000000, P_GPLL0, 4, 0, 0),
620*d9db07f0SSricharan R 	F(240000000, P_GPLL4, 5, 0, 0),
621*d9db07f0SSricharan R 	{ }
622*d9db07f0SSricharan R };
623*d9db07f0SSricharan R 
624*d9db07f0SSricharan R static const struct freq_tbl ftbl_pcie_rchng_clk_src[] = {
625*d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
626*d9db07f0SSricharan R 	F(100000000, P_GPLL0, 8, 0, 0),
627*d9db07f0SSricharan R 	{ }
628*d9db07f0SSricharan R };
629*d9db07f0SSricharan R 
630*d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_gpll0_gpll4[] = {
631*d9db07f0SSricharan R 	{ .fw_name = "xo" },
632*d9db07f0SSricharan R 	{ .hw = &gpll0.clkr.hw },
633*d9db07f0SSricharan R 	{ .hw = &gpll4.clkr.hw },
634*d9db07f0SSricharan R };
635*d9db07f0SSricharan R 
636*d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll0_gpll4_map[] = {
637*d9db07f0SSricharan R 	{ P_XO, 0 },
638*d9db07f0SSricharan R 	{ P_GPLL0, 1 },
639*d9db07f0SSricharan R 	{ P_GPLL4, 2 },
640*d9db07f0SSricharan R };
641*d9db07f0SSricharan R 
642*d9db07f0SSricharan R static struct clk_rcg2 pcie0_axi_clk_src = {
643*d9db07f0SSricharan R 	.cmd_rcgr = 0x75054,
644*d9db07f0SSricharan R 	.freq_tbl = ftbl_pcie_axi_clk_src,
645*d9db07f0SSricharan R 	.hid_width = 5,
646*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll4_map,
647*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
648*d9db07f0SSricharan R 		.name = "pcie0_axi_clk_src",
649*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll4,
650*d9db07f0SSricharan R 		.num_parents = 3,
651*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
652*d9db07f0SSricharan R 	},
653*d9db07f0SSricharan R };
654*d9db07f0SSricharan R 
655*d9db07f0SSricharan R static const struct freq_tbl ftbl_usb0_master_clk_src[] = {
656*d9db07f0SSricharan R 	F(80000000, P_GPLL0_DIV2, 5, 0, 0),
657*d9db07f0SSricharan R 	F(100000000, P_GPLL0, 8, 0, 0),
658*d9db07f0SSricharan R 	F(133330000, P_GPLL0, 6, 0, 0),
659*d9db07f0SSricharan R 	F(200000000, P_GPLL0, 4, 0, 0),
660*d9db07f0SSricharan R 	{ }
661*d9db07f0SSricharan R };
662*d9db07f0SSricharan R 
663*d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_gpll0_out_main_div2_gpll0[] = {
664*d9db07f0SSricharan R 	{ .fw_name = "xo" },
665*d9db07f0SSricharan R 	{ .hw = &gpll0_out_main_div2.hw },
666*d9db07f0SSricharan R 	{ .hw = &gpll0.clkr.hw },
667*d9db07f0SSricharan R };
668*d9db07f0SSricharan R 
669*d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll0_out_main_div2_gpll0_map[] = {
670*d9db07f0SSricharan R 	{ P_XO, 0 },
671*d9db07f0SSricharan R 	{ P_GPLL0_DIV2, 2 },
672*d9db07f0SSricharan R 	{ P_GPLL0, 1 },
673*d9db07f0SSricharan R };
674*d9db07f0SSricharan R 
675*d9db07f0SSricharan R static struct clk_rcg2 usb0_master_clk_src = {
676*d9db07f0SSricharan R 	.cmd_rcgr = 0x3e00c,
677*d9db07f0SSricharan R 	.freq_tbl = ftbl_usb0_master_clk_src,
678*d9db07f0SSricharan R 	.mnd_width = 8,
679*d9db07f0SSricharan R 	.hid_width = 5,
680*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_out_main_div2_gpll0_map,
681*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
682*d9db07f0SSricharan R 		.name = "usb0_master_clk_src",
683*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_out_main_div2_gpll0,
684*d9db07f0SSricharan R 		.num_parents = 3,
685*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
686*d9db07f0SSricharan R 	},
687*d9db07f0SSricharan R };
688*d9db07f0SSricharan R 
689*d9db07f0SSricharan R static struct clk_regmap_div apss_ahb_postdiv_clk_src = {
690*d9db07f0SSricharan R 	.reg = 0x46018,
691*d9db07f0SSricharan R 	.shift = 4,
692*d9db07f0SSricharan R 	.width = 4,
693*d9db07f0SSricharan R 	.clkr = {
694*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
695*d9db07f0SSricharan R 			.name = "apss_ahb_postdiv_clk_src",
696*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
697*d9db07f0SSricharan R 					&apss_ahb_clk_src.clkr.hw },
698*d9db07f0SSricharan R 			.num_parents = 1,
699*d9db07f0SSricharan R 			.ops = &clk_regmap_div_ops,
700*d9db07f0SSricharan R 		},
701*d9db07f0SSricharan R 	},
702*d9db07f0SSricharan R };
703*d9db07f0SSricharan R 
704*d9db07f0SSricharan R static struct clk_fixed_factor gcc_xo_div4_clk_src = {
705*d9db07f0SSricharan R 	.mult = 1,
706*d9db07f0SSricharan R 	.div = 4,
707*d9db07f0SSricharan R 	.hw.init = &(struct clk_init_data){
708*d9db07f0SSricharan R 		.name = "gcc_xo_div4_clk_src",
709*d9db07f0SSricharan R 		.parent_hws = (const struct clk_hw *[]){
710*d9db07f0SSricharan R 				&gcc_xo_clk_src.clkr.hw },
711*d9db07f0SSricharan R 		.num_parents = 1,
712*d9db07f0SSricharan R 		.ops = &clk_fixed_factor_ops,
713*d9db07f0SSricharan R 		.flags = CLK_SET_RATE_PARENT,
714*d9db07f0SSricharan R 	},
715*d9db07f0SSricharan R };
716*d9db07f0SSricharan R 
717*d9db07f0SSricharan R static const struct freq_tbl ftbl_nss_port1_rx_clk_src[] = {
718*d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
719*d9db07f0SSricharan R 	F(25000000, P_UNIPHY0_RX, 5, 0, 0),
720*d9db07f0SSricharan R 	F(125000000, P_UNIPHY0_RX, 1, 0, 0),
721*d9db07f0SSricharan R 	{ }
722*d9db07f0SSricharan R };
723*d9db07f0SSricharan R 
724*d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_uniphy0_rx_tx_ubi32_bias[] = {
725*d9db07f0SSricharan R 	{ .fw_name = "xo" },
726*d9db07f0SSricharan R 	{ .fw_name = "uniphy0_gcc_rx_clk" },
727*d9db07f0SSricharan R 	{ .fw_name = "uniphy0_gcc_tx_clk" },
728*d9db07f0SSricharan R 	{ .hw = &ubi32_pll.clkr.hw },
729*d9db07f0SSricharan R 	{ .fw_name = "bias_pll_cc_clk" },
730*d9db07f0SSricharan R };
731*d9db07f0SSricharan R 
732*d9db07f0SSricharan R static const struct parent_map gcc_xo_uniphy0_rx_tx_ubi32_bias_map[] = {
733*d9db07f0SSricharan R 	{ P_XO, 0 },
734*d9db07f0SSricharan R 	{ P_UNIPHY0_RX, 1 },
735*d9db07f0SSricharan R 	{ P_UNIPHY0_TX, 2 },
736*d9db07f0SSricharan R 	{ P_UBI32_PLL, 5 },
737*d9db07f0SSricharan R 	{ P_BIAS_PLL, 6 },
738*d9db07f0SSricharan R };
739*d9db07f0SSricharan R 
740*d9db07f0SSricharan R static struct clk_rcg2 nss_port1_rx_clk_src = {
741*d9db07f0SSricharan R 	.cmd_rcgr = 0x68020,
742*d9db07f0SSricharan R 	.freq_tbl = ftbl_nss_port1_rx_clk_src,
743*d9db07f0SSricharan R 	.hid_width = 5,
744*d9db07f0SSricharan R 	.parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
745*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
746*d9db07f0SSricharan R 		.name = "nss_port1_rx_clk_src",
747*d9db07f0SSricharan R 		.parent_data = gcc_xo_uniphy0_rx_tx_ubi32_bias,
748*d9db07f0SSricharan R 		.num_parents = 5,
749*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
750*d9db07f0SSricharan R 	},
751*d9db07f0SSricharan R };
752*d9db07f0SSricharan R 
753*d9db07f0SSricharan R static const struct freq_tbl ftbl_nss_port1_tx_clk_src[] = {
754*d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
755*d9db07f0SSricharan R 	F(25000000, P_UNIPHY0_TX, 5, 0, 0),
756*d9db07f0SSricharan R 	F(125000000, P_UNIPHY0_TX, 1, 0, 0),
757*d9db07f0SSricharan R 	{ }
758*d9db07f0SSricharan R };
759*d9db07f0SSricharan R 
760*d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_uniphy0_tx_rx_ubi32_bias[] = {
761*d9db07f0SSricharan R 	{ .fw_name = "xo" },
762*d9db07f0SSricharan R 	{ .fw_name = "uniphy0_gcc_tx_clk" },
763*d9db07f0SSricharan R 	{ .fw_name = "uniphy0_gcc_rx_clk" },
764*d9db07f0SSricharan R 	{ .hw = &ubi32_pll.clkr.hw },
765*d9db07f0SSricharan R 	{ .fw_name = "bias_pll_cc_clk" },
766*d9db07f0SSricharan R };
767*d9db07f0SSricharan R 
768*d9db07f0SSricharan R static const struct parent_map gcc_xo_uniphy0_tx_rx_ubi32_bias_map[] = {
769*d9db07f0SSricharan R 	{ P_XO, 0 },
770*d9db07f0SSricharan R 	{ P_UNIPHY0_TX, 1 },
771*d9db07f0SSricharan R 	{ P_UNIPHY0_RX, 2 },
772*d9db07f0SSricharan R 	{ P_UBI32_PLL, 5 },
773*d9db07f0SSricharan R 	{ P_BIAS_PLL, 6 },
774*d9db07f0SSricharan R };
775*d9db07f0SSricharan R 
776*d9db07f0SSricharan R static struct clk_rcg2 nss_port1_tx_clk_src = {
777*d9db07f0SSricharan R 	.cmd_rcgr = 0x68028,
778*d9db07f0SSricharan R 	.freq_tbl = ftbl_nss_port1_tx_clk_src,
779*d9db07f0SSricharan R 	.hid_width = 5,
780*d9db07f0SSricharan R 	.parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
781*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
782*d9db07f0SSricharan R 		.name = "nss_port1_tx_clk_src",
783*d9db07f0SSricharan R 		.parent_data = gcc_xo_uniphy0_tx_rx_ubi32_bias,
784*d9db07f0SSricharan R 		.num_parents = 5,
785*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
786*d9db07f0SSricharan R 	},
787*d9db07f0SSricharan R };
788*d9db07f0SSricharan R 
789*d9db07f0SSricharan R static struct clk_rcg2 nss_port2_rx_clk_src = {
790*d9db07f0SSricharan R 	.cmd_rcgr = 0x68030,
791*d9db07f0SSricharan R 	.freq_tbl = ftbl_nss_port1_rx_clk_src,
792*d9db07f0SSricharan R 	.hid_width = 5,
793*d9db07f0SSricharan R 	.parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
794*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
795*d9db07f0SSricharan R 		.name = "nss_port2_rx_clk_src",
796*d9db07f0SSricharan R 		.parent_data = gcc_xo_uniphy0_rx_tx_ubi32_bias,
797*d9db07f0SSricharan R 		.num_parents = 5,
798*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
799*d9db07f0SSricharan R 	},
800*d9db07f0SSricharan R };
801*d9db07f0SSricharan R 
802*d9db07f0SSricharan R static struct clk_rcg2 nss_port2_tx_clk_src = {
803*d9db07f0SSricharan R 	.cmd_rcgr = 0x68038,
804*d9db07f0SSricharan R 	.freq_tbl = ftbl_nss_port1_tx_clk_src,
805*d9db07f0SSricharan R 	.hid_width = 5,
806*d9db07f0SSricharan R 	.parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
807*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
808*d9db07f0SSricharan R 		.name = "nss_port2_tx_clk_src",
809*d9db07f0SSricharan R 		.parent_data = gcc_xo_uniphy0_tx_rx_ubi32_bias,
810*d9db07f0SSricharan R 		.num_parents = 5,
811*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
812*d9db07f0SSricharan R 	},
813*d9db07f0SSricharan R };
814*d9db07f0SSricharan R 
815*d9db07f0SSricharan R static struct clk_rcg2 nss_port3_rx_clk_src = {
816*d9db07f0SSricharan R 	.cmd_rcgr = 0x68040,
817*d9db07f0SSricharan R 	.freq_tbl = ftbl_nss_port1_rx_clk_src,
818*d9db07f0SSricharan R 	.hid_width = 5,
819*d9db07f0SSricharan R 	.parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
820*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
821*d9db07f0SSricharan R 		.name = "nss_port3_rx_clk_src",
822*d9db07f0SSricharan R 		.parent_data = gcc_xo_uniphy0_rx_tx_ubi32_bias,
823*d9db07f0SSricharan R 		.num_parents = 5,
824*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
825*d9db07f0SSricharan R 	},
826*d9db07f0SSricharan R };
827*d9db07f0SSricharan R 
828*d9db07f0SSricharan R static struct clk_rcg2 nss_port3_tx_clk_src = {
829*d9db07f0SSricharan R 	.cmd_rcgr = 0x68048,
830*d9db07f0SSricharan R 	.freq_tbl = ftbl_nss_port1_tx_clk_src,
831*d9db07f0SSricharan R 	.hid_width = 5,
832*d9db07f0SSricharan R 	.parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
833*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
834*d9db07f0SSricharan R 		.name = "nss_port3_tx_clk_src",
835*d9db07f0SSricharan R 		.parent_data = gcc_xo_uniphy0_tx_rx_ubi32_bias,
836*d9db07f0SSricharan R 		.num_parents = 5,
837*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
838*d9db07f0SSricharan R 	},
839*d9db07f0SSricharan R };
840*d9db07f0SSricharan R 
841*d9db07f0SSricharan R static struct clk_rcg2 nss_port4_rx_clk_src = {
842*d9db07f0SSricharan R 	.cmd_rcgr = 0x68050,
843*d9db07f0SSricharan R 	.freq_tbl = ftbl_nss_port1_rx_clk_src,
844*d9db07f0SSricharan R 	.hid_width = 5,
845*d9db07f0SSricharan R 	.parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
846*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
847*d9db07f0SSricharan R 		.name = "nss_port4_rx_clk_src",
848*d9db07f0SSricharan R 		.parent_data = gcc_xo_uniphy0_rx_tx_ubi32_bias,
849*d9db07f0SSricharan R 		.num_parents = 5,
850*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
851*d9db07f0SSricharan R 	},
852*d9db07f0SSricharan R };
853*d9db07f0SSricharan R 
854*d9db07f0SSricharan R static struct clk_rcg2 nss_port4_tx_clk_src = {
855*d9db07f0SSricharan R 	.cmd_rcgr = 0x68058,
856*d9db07f0SSricharan R 	.freq_tbl = ftbl_nss_port1_tx_clk_src,
857*d9db07f0SSricharan R 	.hid_width = 5,
858*d9db07f0SSricharan R 	.parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
859*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
860*d9db07f0SSricharan R 		.name = "nss_port4_tx_clk_src",
861*d9db07f0SSricharan R 		.parent_data = gcc_xo_uniphy0_tx_rx_ubi32_bias,
862*d9db07f0SSricharan R 		.num_parents = 5,
863*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
864*d9db07f0SSricharan R 	},
865*d9db07f0SSricharan R };
866*d9db07f0SSricharan R 
867*d9db07f0SSricharan R static struct clk_regmap_div nss_port5_rx_div_clk_src = {
868*d9db07f0SSricharan R 	.reg = 0x68440,
869*d9db07f0SSricharan R 	.shift = 0,
870*d9db07f0SSricharan R 	.width = 4,
871*d9db07f0SSricharan R 	.clkr = {
872*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
873*d9db07f0SSricharan R 			.name = "nss_port5_rx_div_clk_src",
874*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
875*d9db07f0SSricharan R 					&nss_port5_rx_clk_src.clkr.hw },
876*d9db07f0SSricharan R 			.num_parents = 1,
877*d9db07f0SSricharan R 			.ops = &clk_regmap_div_ops,
878*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
879*d9db07f0SSricharan R 		},
880*d9db07f0SSricharan R 	},
881*d9db07f0SSricharan R };
882*d9db07f0SSricharan R 
883*d9db07f0SSricharan R static struct clk_regmap_div nss_port5_tx_div_clk_src = {
884*d9db07f0SSricharan R 	.reg = 0x68444,
885*d9db07f0SSricharan R 	.shift = 0,
886*d9db07f0SSricharan R 	.width = 4,
887*d9db07f0SSricharan R 	.clkr = {
888*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
889*d9db07f0SSricharan R 			.name = "nss_port5_tx_div_clk_src",
890*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
891*d9db07f0SSricharan R 					&nss_port5_tx_clk_src.clkr.hw },
892*d9db07f0SSricharan R 			.num_parents = 1,
893*d9db07f0SSricharan R 			.ops = &clk_regmap_div_ops,
894*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
895*d9db07f0SSricharan R 		},
896*d9db07f0SSricharan R 	},
897*d9db07f0SSricharan R };
898*d9db07f0SSricharan R 
899*d9db07f0SSricharan R static const struct freq_tbl ftbl_apss_axi_clk_src[] = {
900*d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
901*d9db07f0SSricharan R 	F(100000000, P_GPLL0_DIV2, 4, 0, 0),
902*d9db07f0SSricharan R 	F(200000000, P_GPLL0, 4, 0, 0),
903*d9db07f0SSricharan R 	F(308570000, P_GPLL6, 3.5, 0, 0),
904*d9db07f0SSricharan R 	F(400000000, P_GPLL0, 2, 0, 0),
905*d9db07f0SSricharan R 	F(533000000, P_GPLL0, 1.5, 0, 0),
906*d9db07f0SSricharan R 	{ }
907*d9db07f0SSricharan R };
908*d9db07f0SSricharan R 
909*d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_gpll0_gpll6_ubi32_gpll0_div2[] = {
910*d9db07f0SSricharan R 	{ .fw_name = "xo" },
911*d9db07f0SSricharan R 	{ .hw = &gpll0.clkr.hw },
912*d9db07f0SSricharan R 	{ .hw = &gpll6.clkr.hw },
913*d9db07f0SSricharan R 	{ .hw = &ubi32_pll.clkr.hw },
914*d9db07f0SSricharan R 	{ .hw = &gpll0_out_main_div2.hw },
915*d9db07f0SSricharan R };
916*d9db07f0SSricharan R 
917*d9db07f0SSricharan R static const struct parent_map
918*d9db07f0SSricharan R gcc_xo_gpll0_gpll6_ubi32_gpll0_div2_map[] = {
919*d9db07f0SSricharan R 	{ P_XO, 0 },
920*d9db07f0SSricharan R 	{ P_GPLL0, 1 },
921*d9db07f0SSricharan R 	{ P_GPLL6, 2 },
922*d9db07f0SSricharan R 	{ P_UBI32_PLL, 3 },
923*d9db07f0SSricharan R 	{ P_GPLL0_DIV2, 6 },
924*d9db07f0SSricharan R };
925*d9db07f0SSricharan R 
926*d9db07f0SSricharan R static struct clk_rcg2 apss_axi_clk_src = {
927*d9db07f0SSricharan R 	.cmd_rcgr = 0x38048,
928*d9db07f0SSricharan R 	.freq_tbl = ftbl_apss_axi_clk_src,
929*d9db07f0SSricharan R 	.hid_width = 5,
930*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll6_ubi32_gpll0_div2_map,
931*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
932*d9db07f0SSricharan R 		.name = "apss_axi_clk_src",
933*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll6_ubi32_gpll0_div2,
934*d9db07f0SSricharan R 		.num_parents = 5,
935*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
936*d9db07f0SSricharan R 	},
937*d9db07f0SSricharan R };
938*d9db07f0SSricharan R 
939*d9db07f0SSricharan R static const struct freq_tbl ftbl_nss_crypto_clk_src[] = {
940*d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
941*d9db07f0SSricharan R 	F(300000000, P_NSS_CRYPTO_PLL, 2, 0, 0),
942*d9db07f0SSricharan R 	{ }
943*d9db07f0SSricharan R };
944*d9db07f0SSricharan R 
945*d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_nss_crypto_pll_gpll0[] = {
946*d9db07f0SSricharan R 	{ .fw_name = "xo" },
947*d9db07f0SSricharan R 	{ .hw = &nss_crypto_pll.clkr.hw },
948*d9db07f0SSricharan R 	{ .hw = &gpll0.clkr.hw },
949*d9db07f0SSricharan R };
950*d9db07f0SSricharan R 
951*d9db07f0SSricharan R static const struct parent_map gcc_xo_nss_crypto_pll_gpll0_map[] = {
952*d9db07f0SSricharan R 	{ P_XO, 0 },
953*d9db07f0SSricharan R 	{ P_NSS_CRYPTO_PLL, 1 },
954*d9db07f0SSricharan R 	{ P_GPLL0, 2 },
955*d9db07f0SSricharan R };
956*d9db07f0SSricharan R 
957*d9db07f0SSricharan R static struct clk_rcg2 nss_crypto_clk_src = {
958*d9db07f0SSricharan R 	.cmd_rcgr = 0x68144,
959*d9db07f0SSricharan R 	.freq_tbl = ftbl_nss_crypto_clk_src,
960*d9db07f0SSricharan R 	.mnd_width = 16,
961*d9db07f0SSricharan R 	.hid_width = 5,
962*d9db07f0SSricharan R 	.parent_map = gcc_xo_nss_crypto_pll_gpll0_map,
963*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
964*d9db07f0SSricharan R 		.name = "nss_crypto_clk_src",
965*d9db07f0SSricharan R 		.parent_data = gcc_xo_nss_crypto_pll_gpll0,
966*d9db07f0SSricharan R 		.num_parents = 3,
967*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
968*d9db07f0SSricharan R 	},
969*d9db07f0SSricharan R };
970*d9db07f0SSricharan R 
971*d9db07f0SSricharan R static struct clk_regmap_div nss_port1_rx_div_clk_src = {
972*d9db07f0SSricharan R 	.reg = 0x68400,
973*d9db07f0SSricharan R 	.shift = 0,
974*d9db07f0SSricharan R 	.width = 4,
975*d9db07f0SSricharan R 	.clkr = {
976*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
977*d9db07f0SSricharan R 			.name = "nss_port1_rx_div_clk_src",
978*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
979*d9db07f0SSricharan R 				&nss_port1_rx_clk_src.clkr.hw },
980*d9db07f0SSricharan R 			.num_parents = 1,
981*d9db07f0SSricharan R 			.ops = &clk_regmap_div_ops,
982*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
983*d9db07f0SSricharan R 		},
984*d9db07f0SSricharan R 	},
985*d9db07f0SSricharan R };
986*d9db07f0SSricharan R 
987*d9db07f0SSricharan R static struct clk_regmap_div nss_port1_tx_div_clk_src = {
988*d9db07f0SSricharan R 	.reg = 0x68404,
989*d9db07f0SSricharan R 	.shift = 0,
990*d9db07f0SSricharan R 	.width = 4,
991*d9db07f0SSricharan R 	.clkr = {
992*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
993*d9db07f0SSricharan R 			.name = "nss_port1_tx_div_clk_src",
994*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
995*d9db07f0SSricharan R 					&nss_port1_tx_clk_src.clkr.hw },
996*d9db07f0SSricharan R 			.num_parents = 1,
997*d9db07f0SSricharan R 			.ops = &clk_regmap_div_ops,
998*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
999*d9db07f0SSricharan R 		},
1000*d9db07f0SSricharan R 	},
1001*d9db07f0SSricharan R };
1002*d9db07f0SSricharan R 
1003*d9db07f0SSricharan R static struct clk_regmap_div nss_port2_rx_div_clk_src = {
1004*d9db07f0SSricharan R 	.reg = 0x68410,
1005*d9db07f0SSricharan R 	.shift = 0,
1006*d9db07f0SSricharan R 	.width = 4,
1007*d9db07f0SSricharan R 	.clkr = {
1008*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
1009*d9db07f0SSricharan R 			.name = "nss_port2_rx_div_clk_src",
1010*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
1011*d9db07f0SSricharan R 					&nss_port2_rx_clk_src.clkr.hw },
1012*d9db07f0SSricharan R 			.num_parents = 1,
1013*d9db07f0SSricharan R 			.ops = &clk_regmap_div_ops,
1014*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
1015*d9db07f0SSricharan R 		},
1016*d9db07f0SSricharan R 	},
1017*d9db07f0SSricharan R };
1018*d9db07f0SSricharan R 
1019*d9db07f0SSricharan R static struct clk_regmap_div nss_port2_tx_div_clk_src = {
1020*d9db07f0SSricharan R 	.reg = 0x68414,
1021*d9db07f0SSricharan R 	.shift = 0,
1022*d9db07f0SSricharan R 	.width = 4,
1023*d9db07f0SSricharan R 	.clkr = {
1024*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
1025*d9db07f0SSricharan R 			.name = "nss_port2_tx_div_clk_src",
1026*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
1027*d9db07f0SSricharan R 					&nss_port2_tx_clk_src.clkr.hw },
1028*d9db07f0SSricharan R 			.num_parents = 1,
1029*d9db07f0SSricharan R 			.ops = &clk_regmap_div_ops,
1030*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
1031*d9db07f0SSricharan R 		},
1032*d9db07f0SSricharan R 	},
1033*d9db07f0SSricharan R };
1034*d9db07f0SSricharan R 
1035*d9db07f0SSricharan R static struct clk_regmap_div nss_port3_rx_div_clk_src = {
1036*d9db07f0SSricharan R 	.reg = 0x68420,
1037*d9db07f0SSricharan R 	.shift = 0,
1038*d9db07f0SSricharan R 	.width = 4,
1039*d9db07f0SSricharan R 	.clkr = {
1040*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
1041*d9db07f0SSricharan R 			.name = "nss_port3_rx_div_clk_src",
1042*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
1043*d9db07f0SSricharan R 					&nss_port3_rx_clk_src.clkr.hw },
1044*d9db07f0SSricharan R 			.num_parents = 1,
1045*d9db07f0SSricharan R 			.ops = &clk_regmap_div_ops,
1046*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
1047*d9db07f0SSricharan R 		},
1048*d9db07f0SSricharan R 	},
1049*d9db07f0SSricharan R };
1050*d9db07f0SSricharan R 
1051*d9db07f0SSricharan R static struct clk_regmap_div nss_port3_tx_div_clk_src = {
1052*d9db07f0SSricharan R 	.reg = 0x68424,
1053*d9db07f0SSricharan R 	.shift = 0,
1054*d9db07f0SSricharan R 	.width = 4,
1055*d9db07f0SSricharan R 	.clkr = {
1056*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
1057*d9db07f0SSricharan R 			.name = "nss_port3_tx_div_clk_src",
1058*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
1059*d9db07f0SSricharan R 					&nss_port3_tx_clk_src.clkr.hw },
1060*d9db07f0SSricharan R 			.num_parents = 1,
1061*d9db07f0SSricharan R 			.ops = &clk_regmap_div_ops,
1062*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
1063*d9db07f0SSricharan R 		},
1064*d9db07f0SSricharan R 	},
1065*d9db07f0SSricharan R };
1066*d9db07f0SSricharan R 
1067*d9db07f0SSricharan R static struct clk_regmap_div nss_port4_rx_div_clk_src = {
1068*d9db07f0SSricharan R 	.reg = 0x68430,
1069*d9db07f0SSricharan R 	.shift = 0,
1070*d9db07f0SSricharan R 	.width = 4,
1071*d9db07f0SSricharan R 	.clkr = {
1072*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
1073*d9db07f0SSricharan R 			.name = "nss_port4_rx_div_clk_src",
1074*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
1075*d9db07f0SSricharan R 					&nss_port4_rx_clk_src.clkr.hw },
1076*d9db07f0SSricharan R 			.num_parents = 1,
1077*d9db07f0SSricharan R 			.ops = &clk_regmap_div_ops,
1078*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
1079*d9db07f0SSricharan R 		},
1080*d9db07f0SSricharan R 	},
1081*d9db07f0SSricharan R };
1082*d9db07f0SSricharan R 
1083*d9db07f0SSricharan R static struct clk_regmap_div nss_port4_tx_div_clk_src = {
1084*d9db07f0SSricharan R 	.reg = 0x68434,
1085*d9db07f0SSricharan R 	.shift = 0,
1086*d9db07f0SSricharan R 	.width = 4,
1087*d9db07f0SSricharan R 	.clkr = {
1088*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
1089*d9db07f0SSricharan R 			.name = "nss_port4_tx_div_clk_src",
1090*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
1091*d9db07f0SSricharan R 					&nss_port4_tx_clk_src.clkr.hw },
1092*d9db07f0SSricharan R 			.num_parents = 1,
1093*d9db07f0SSricharan R 			.ops = &clk_regmap_div_ops,
1094*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
1095*d9db07f0SSricharan R 		},
1096*d9db07f0SSricharan R 	},
1097*d9db07f0SSricharan R };
1098*d9db07f0SSricharan R 
1099*d9db07f0SSricharan R static const struct freq_tbl ftbl_nss_ubi_clk_src[] = {
1100*d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
1101*d9db07f0SSricharan R 	F(149760000, P_UBI32_PLL, 10, 0, 0),
1102*d9db07f0SSricharan R 	F(187200000, P_UBI32_PLL, 8, 0, 0),
1103*d9db07f0SSricharan R 	F(249600000, P_UBI32_PLL, 6, 0, 0),
1104*d9db07f0SSricharan R 	F(374400000, P_UBI32_PLL, 4, 0, 0),
1105*d9db07f0SSricharan R 	F(748800000, P_UBI32_PLL, 2, 0, 0),
1106*d9db07f0SSricharan R 	F(1497600000, P_UBI32_PLL, 1, 0, 0),
1107*d9db07f0SSricharan R 	{ }
1108*d9db07f0SSricharan R };
1109*d9db07f0SSricharan R 
1110*d9db07f0SSricharan R static const struct clk_parent_data
1111*d9db07f0SSricharan R 			gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6[] = {
1112*d9db07f0SSricharan R 	{ .fw_name = "xo" },
1113*d9db07f0SSricharan R 	{ .hw = &ubi32_pll.clkr.hw },
1114*d9db07f0SSricharan R 	{ .hw = &gpll0.clkr.hw },
1115*d9db07f0SSricharan R 	{ .hw = &gpll2.clkr.hw },
1116*d9db07f0SSricharan R 	{ .hw = &gpll4.clkr.hw },
1117*d9db07f0SSricharan R 	{ .hw = &gpll6.clkr.hw },
1118*d9db07f0SSricharan R };
1119*d9db07f0SSricharan R 
1120*d9db07f0SSricharan R static const struct parent_map gcc_xo_ubi32_gpll0_gpll2_gpll4_gpll6_map[] = {
1121*d9db07f0SSricharan R 	{ P_XO, 0 },
1122*d9db07f0SSricharan R 	{ P_UBI32_PLL, 1 },
1123*d9db07f0SSricharan R 	{ P_GPLL0, 2 },
1124*d9db07f0SSricharan R 	{ P_GPLL2, 3 },
1125*d9db07f0SSricharan R 	{ P_GPLL4, 4 },
1126*d9db07f0SSricharan R 	{ P_GPLL6, 5 },
1127*d9db07f0SSricharan R };
1128*d9db07f0SSricharan R 
1129*d9db07f0SSricharan R static struct clk_rcg2 nss_ubi0_clk_src = {
1130*d9db07f0SSricharan R 	.cmd_rcgr = 0x68104,
1131*d9db07f0SSricharan R 	.freq_tbl = ftbl_nss_ubi_clk_src,
1132*d9db07f0SSricharan R 	.hid_width = 5,
1133*d9db07f0SSricharan R 	.parent_map = gcc_xo_ubi32_gpll0_gpll2_gpll4_gpll6_map,
1134*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1135*d9db07f0SSricharan R 		.name = "nss_ubi0_clk_src",
1136*d9db07f0SSricharan R 		.parent_data = gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6,
1137*d9db07f0SSricharan R 		.num_parents = 6,
1138*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1139*d9db07f0SSricharan R 		.flags = CLK_SET_RATE_PARENT,
1140*d9db07f0SSricharan R 	},
1141*d9db07f0SSricharan R };
1142*d9db07f0SSricharan R 
1143*d9db07f0SSricharan R static const struct freq_tbl ftbl_adss_pwm_clk_src[] = {
1144*d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
1145*d9db07f0SSricharan R 	F(100000000, P_GPLL0, 8, 0, 0),
1146*d9db07f0SSricharan R 	{ }
1147*d9db07f0SSricharan R };
1148*d9db07f0SSricharan R 
1149*d9db07f0SSricharan R static struct clk_rcg2 adss_pwm_clk_src = {
1150*d9db07f0SSricharan R 	.cmd_rcgr = 0x1c008,
1151*d9db07f0SSricharan R 	.freq_tbl = ftbl_adss_pwm_clk_src,
1152*d9db07f0SSricharan R 	.hid_width = 5,
1153*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_map,
1154*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1155*d9db07f0SSricharan R 		.name = "adss_pwm_clk_src",
1156*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0,
1157*d9db07f0SSricharan R 		.num_parents = 2,
1158*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1159*d9db07f0SSricharan R 	},
1160*d9db07f0SSricharan R };
1161*d9db07f0SSricharan R 
1162*d9db07f0SSricharan R static const struct freq_tbl ftbl_blsp1_qup_i2c_apps_clk_src[] = {
1163*d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
1164*d9db07f0SSricharan R 	F(25000000, P_GPLL0_DIV2, 16, 0, 0),
1165*d9db07f0SSricharan R 	F(50000000, P_GPLL0, 16, 0, 0),
1166*d9db07f0SSricharan R 	{ }
1167*d9db07f0SSricharan R };
1168*d9db07f0SSricharan R 
1169*d9db07f0SSricharan R static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = {
1170*d9db07f0SSricharan R 	.cmd_rcgr = 0x0200c,
1171*d9db07f0SSricharan R 	.freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
1172*d9db07f0SSricharan R 	.hid_width = 5,
1173*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1174*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1175*d9db07f0SSricharan R 		.name = "blsp1_qup1_i2c_apps_clk_src",
1176*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1177*d9db07f0SSricharan R 		.num_parents = 3,
1178*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1179*d9db07f0SSricharan R 	},
1180*d9db07f0SSricharan R };
1181*d9db07f0SSricharan R 
1182*d9db07f0SSricharan R static const struct freq_tbl ftbl_blsp1_qup_spi_apps_clk_src[] = {
1183*d9db07f0SSricharan R 	F(960000, P_XO, 10, 2, 5),
1184*d9db07f0SSricharan R 	F(4800000, P_XO, 5, 0, 0),
1185*d9db07f0SSricharan R 	F(9600000, P_XO, 2, 4, 5),
1186*d9db07f0SSricharan R 	F(12500000, P_GPLL0_DIV2, 16, 1, 2),
1187*d9db07f0SSricharan R 	F(16000000, P_GPLL0, 10, 1, 5),
1188*d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
1189*d9db07f0SSricharan R 	F(25000000, P_GPLL0, 16, 1, 2),
1190*d9db07f0SSricharan R 	F(50000000, P_GPLL0, 16, 0, 0),
1191*d9db07f0SSricharan R 	{ }
1192*d9db07f0SSricharan R };
1193*d9db07f0SSricharan R 
1194*d9db07f0SSricharan R static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = {
1195*d9db07f0SSricharan R 	.cmd_rcgr = 0x02024,
1196*d9db07f0SSricharan R 	.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
1197*d9db07f0SSricharan R 	.mnd_width = 8,
1198*d9db07f0SSricharan R 	.hid_width = 5,
1199*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1200*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1201*d9db07f0SSricharan R 		.name = "blsp1_qup1_spi_apps_clk_src",
1202*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1203*d9db07f0SSricharan R 		.num_parents = 3,
1204*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1205*d9db07f0SSricharan R 	},
1206*d9db07f0SSricharan R };
1207*d9db07f0SSricharan R 
1208*d9db07f0SSricharan R static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = {
1209*d9db07f0SSricharan R 	.cmd_rcgr = 0x03000,
1210*d9db07f0SSricharan R 	.freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
1211*d9db07f0SSricharan R 	.hid_width = 5,
1212*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1213*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1214*d9db07f0SSricharan R 		.name = "blsp1_qup2_i2c_apps_clk_src",
1215*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1216*d9db07f0SSricharan R 		.num_parents = 3,
1217*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1218*d9db07f0SSricharan R 	},
1219*d9db07f0SSricharan R };
1220*d9db07f0SSricharan R 
1221*d9db07f0SSricharan R static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = {
1222*d9db07f0SSricharan R 	.cmd_rcgr = 0x03014,
1223*d9db07f0SSricharan R 	.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
1224*d9db07f0SSricharan R 	.mnd_width = 8,
1225*d9db07f0SSricharan R 	.hid_width = 5,
1226*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1227*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1228*d9db07f0SSricharan R 		.name = "blsp1_qup2_spi_apps_clk_src",
1229*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1230*d9db07f0SSricharan R 		.num_parents = 3,
1231*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1232*d9db07f0SSricharan R 	},
1233*d9db07f0SSricharan R };
1234*d9db07f0SSricharan R 
1235*d9db07f0SSricharan R static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = {
1236*d9db07f0SSricharan R 	.cmd_rcgr = 0x04000,
1237*d9db07f0SSricharan R 	.freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
1238*d9db07f0SSricharan R 	.hid_width = 5,
1239*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1240*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1241*d9db07f0SSricharan R 		.name = "blsp1_qup3_i2c_apps_clk_src",
1242*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1243*d9db07f0SSricharan R 		.num_parents = 3,
1244*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1245*d9db07f0SSricharan R 	},
1246*d9db07f0SSricharan R };
1247*d9db07f0SSricharan R 
1248*d9db07f0SSricharan R static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = {
1249*d9db07f0SSricharan R 	.cmd_rcgr = 0x04014,
1250*d9db07f0SSricharan R 	.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
1251*d9db07f0SSricharan R 	.mnd_width = 8,
1252*d9db07f0SSricharan R 	.hid_width = 5,
1253*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1254*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1255*d9db07f0SSricharan R 		.name = "blsp1_qup3_spi_apps_clk_src",
1256*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1257*d9db07f0SSricharan R 		.num_parents = 3,
1258*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1259*d9db07f0SSricharan R 	},
1260*d9db07f0SSricharan R };
1261*d9db07f0SSricharan R 
1262*d9db07f0SSricharan R static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = {
1263*d9db07f0SSricharan R 	.cmd_rcgr = 0x05000,
1264*d9db07f0SSricharan R 	.freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
1265*d9db07f0SSricharan R 	.hid_width = 5,
1266*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1267*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1268*d9db07f0SSricharan R 		.name = "blsp1_qup4_i2c_apps_clk_src",
1269*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1270*d9db07f0SSricharan R 		.num_parents = 3,
1271*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1272*d9db07f0SSricharan R 	},
1273*d9db07f0SSricharan R };
1274*d9db07f0SSricharan R 
1275*d9db07f0SSricharan R static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = {
1276*d9db07f0SSricharan R 	.cmd_rcgr = 0x05014,
1277*d9db07f0SSricharan R 	.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
1278*d9db07f0SSricharan R 	.mnd_width = 8,
1279*d9db07f0SSricharan R 	.hid_width = 5,
1280*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1281*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1282*d9db07f0SSricharan R 		.name = "blsp1_qup4_spi_apps_clk_src",
1283*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1284*d9db07f0SSricharan R 		.num_parents = 3,
1285*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1286*d9db07f0SSricharan R 	},
1287*d9db07f0SSricharan R };
1288*d9db07f0SSricharan R 
1289*d9db07f0SSricharan R static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = {
1290*d9db07f0SSricharan R 	.cmd_rcgr = 0x06000,
1291*d9db07f0SSricharan R 	.freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
1292*d9db07f0SSricharan R 	.hid_width = 5,
1293*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1294*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1295*d9db07f0SSricharan R 		.name = "blsp1_qup5_i2c_apps_clk_src",
1296*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1297*d9db07f0SSricharan R 		.num_parents = 3,
1298*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1299*d9db07f0SSricharan R 	},
1300*d9db07f0SSricharan R };
1301*d9db07f0SSricharan R 
1302*d9db07f0SSricharan R static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = {
1303*d9db07f0SSricharan R 	.cmd_rcgr = 0x06014,
1304*d9db07f0SSricharan R 	.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
1305*d9db07f0SSricharan R 	.mnd_width = 8,
1306*d9db07f0SSricharan R 	.hid_width = 5,
1307*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1308*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1309*d9db07f0SSricharan R 		.name = "blsp1_qup5_spi_apps_clk_src",
1310*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1311*d9db07f0SSricharan R 		.num_parents = 3,
1312*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1313*d9db07f0SSricharan R 	},
1314*d9db07f0SSricharan R };
1315*d9db07f0SSricharan R 
1316*d9db07f0SSricharan R static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = {
1317*d9db07f0SSricharan R 	.cmd_rcgr = 0x07000,
1318*d9db07f0SSricharan R 	.freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
1319*d9db07f0SSricharan R 	.hid_width = 5,
1320*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1321*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1322*d9db07f0SSricharan R 		.name = "blsp1_qup6_i2c_apps_clk_src",
1323*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1324*d9db07f0SSricharan R 		.num_parents = 3,
1325*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1326*d9db07f0SSricharan R 	},
1327*d9db07f0SSricharan R };
1328*d9db07f0SSricharan R 
1329*d9db07f0SSricharan R static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = {
1330*d9db07f0SSricharan R 	.cmd_rcgr = 0x07014,
1331*d9db07f0SSricharan R 	.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
1332*d9db07f0SSricharan R 	.mnd_width = 8,
1333*d9db07f0SSricharan R 	.hid_width = 5,
1334*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1335*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1336*d9db07f0SSricharan R 		.name = "blsp1_qup6_spi_apps_clk_src",
1337*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1338*d9db07f0SSricharan R 		.num_parents = 3,
1339*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1340*d9db07f0SSricharan R 	},
1341*d9db07f0SSricharan R };
1342*d9db07f0SSricharan R 
1343*d9db07f0SSricharan R static const struct freq_tbl ftbl_blsp1_uart_apps_clk_src[] = {
1344*d9db07f0SSricharan R 	F(3686400, P_GPLL0_DIV2, 1, 144, 15625),
1345*d9db07f0SSricharan R 	F(7372800, P_GPLL0_DIV2, 1, 288, 15625),
1346*d9db07f0SSricharan R 	F(14745600, P_GPLL0_DIV2, 1, 576, 15625),
1347*d9db07f0SSricharan R 	F(16000000, P_GPLL0_DIV2, 5, 1, 5),
1348*d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
1349*d9db07f0SSricharan R 	F(24000000, P_GPLL0, 1, 3, 100),
1350*d9db07f0SSricharan R 	F(25000000, P_GPLL0, 16, 1, 2),
1351*d9db07f0SSricharan R 	F(32000000, P_GPLL0, 1, 1, 25),
1352*d9db07f0SSricharan R 	F(40000000, P_GPLL0, 1, 1, 20),
1353*d9db07f0SSricharan R 	F(46400000, P_GPLL0, 1, 29, 500),
1354*d9db07f0SSricharan R 	F(48000000, P_GPLL0, 1, 3, 50),
1355*d9db07f0SSricharan R 	F(51200000, P_GPLL0, 1, 8, 125),
1356*d9db07f0SSricharan R 	F(56000000, P_GPLL0, 1, 7, 100),
1357*d9db07f0SSricharan R 	F(58982400, P_GPLL0, 1, 1152, 15625),
1358*d9db07f0SSricharan R 	F(60000000, P_GPLL0, 1, 3, 40),
1359*d9db07f0SSricharan R 	F(64000000, P_GPLL0, 12.5, 1, 1),
1360*d9db07f0SSricharan R 	{ }
1361*d9db07f0SSricharan R };
1362*d9db07f0SSricharan R 
1363*d9db07f0SSricharan R static struct clk_rcg2 blsp1_uart1_apps_clk_src = {
1364*d9db07f0SSricharan R 	.cmd_rcgr = 0x02044,
1365*d9db07f0SSricharan R 	.freq_tbl = ftbl_blsp1_uart_apps_clk_src,
1366*d9db07f0SSricharan R 	.mnd_width = 16,
1367*d9db07f0SSricharan R 	.hid_width = 5,
1368*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1369*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1370*d9db07f0SSricharan R 		.name = "blsp1_uart1_apps_clk_src",
1371*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1372*d9db07f0SSricharan R 		.num_parents = 3,
1373*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1374*d9db07f0SSricharan R 	},
1375*d9db07f0SSricharan R };
1376*d9db07f0SSricharan R 
1377*d9db07f0SSricharan R static struct clk_rcg2 blsp1_uart2_apps_clk_src = {
1378*d9db07f0SSricharan R 	.cmd_rcgr = 0x03034,
1379*d9db07f0SSricharan R 	.freq_tbl = ftbl_blsp1_uart_apps_clk_src,
1380*d9db07f0SSricharan R 	.mnd_width = 16,
1381*d9db07f0SSricharan R 	.hid_width = 5,
1382*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1383*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1384*d9db07f0SSricharan R 		.name = "blsp1_uart2_apps_clk_src",
1385*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1386*d9db07f0SSricharan R 		.num_parents = 3,
1387*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1388*d9db07f0SSricharan R 	},
1389*d9db07f0SSricharan R };
1390*d9db07f0SSricharan R 
1391*d9db07f0SSricharan R static struct clk_rcg2 blsp1_uart3_apps_clk_src = {
1392*d9db07f0SSricharan R 	.cmd_rcgr = 0x04034,
1393*d9db07f0SSricharan R 	.freq_tbl = ftbl_blsp1_uart_apps_clk_src,
1394*d9db07f0SSricharan R 	.mnd_width = 16,
1395*d9db07f0SSricharan R 	.hid_width = 5,
1396*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1397*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1398*d9db07f0SSricharan R 		.name = "blsp1_uart3_apps_clk_src",
1399*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1400*d9db07f0SSricharan R 		.num_parents = 3,
1401*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1402*d9db07f0SSricharan R 	},
1403*d9db07f0SSricharan R };
1404*d9db07f0SSricharan R 
1405*d9db07f0SSricharan R static struct clk_rcg2 blsp1_uart4_apps_clk_src = {
1406*d9db07f0SSricharan R 	.cmd_rcgr = 0x05034,
1407*d9db07f0SSricharan R 	.freq_tbl = ftbl_blsp1_uart_apps_clk_src,
1408*d9db07f0SSricharan R 	.mnd_width = 16,
1409*d9db07f0SSricharan R 	.hid_width = 5,
1410*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1411*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1412*d9db07f0SSricharan R 		.name = "blsp1_uart4_apps_clk_src",
1413*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1414*d9db07f0SSricharan R 		.num_parents = 3,
1415*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1416*d9db07f0SSricharan R 	},
1417*d9db07f0SSricharan R };
1418*d9db07f0SSricharan R 
1419*d9db07f0SSricharan R static struct clk_rcg2 blsp1_uart5_apps_clk_src = {
1420*d9db07f0SSricharan R 	.cmd_rcgr = 0x06034,
1421*d9db07f0SSricharan R 	.freq_tbl = ftbl_blsp1_uart_apps_clk_src,
1422*d9db07f0SSricharan R 	.mnd_width = 16,
1423*d9db07f0SSricharan R 	.hid_width = 5,
1424*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1425*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1426*d9db07f0SSricharan R 		.name = "blsp1_uart5_apps_clk_src",
1427*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1428*d9db07f0SSricharan R 		.num_parents = 3,
1429*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1430*d9db07f0SSricharan R 	},
1431*d9db07f0SSricharan R };
1432*d9db07f0SSricharan R 
1433*d9db07f0SSricharan R static struct clk_rcg2 blsp1_uart6_apps_clk_src = {
1434*d9db07f0SSricharan R 	.cmd_rcgr = 0x07034,
1435*d9db07f0SSricharan R 	.freq_tbl = ftbl_blsp1_uart_apps_clk_src,
1436*d9db07f0SSricharan R 	.mnd_width = 16,
1437*d9db07f0SSricharan R 	.hid_width = 5,
1438*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1439*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1440*d9db07f0SSricharan R 		.name = "blsp1_uart6_apps_clk_src",
1441*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1442*d9db07f0SSricharan R 		.num_parents = 3,
1443*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1444*d9db07f0SSricharan R 	},
1445*d9db07f0SSricharan R };
1446*d9db07f0SSricharan R 
1447*d9db07f0SSricharan R static const struct freq_tbl ftbl_crypto_clk_src[] = {
1448*d9db07f0SSricharan R 	F(40000000, P_GPLL0_DIV2, 10, 0, 0),
1449*d9db07f0SSricharan R 	F(80000000, P_GPLL0, 10, 0, 0),
1450*d9db07f0SSricharan R 	F(100000000, P_GPLL0, 8, 0, 0),
1451*d9db07f0SSricharan R 	F(160000000, P_GPLL0, 5, 0, 0),
1452*d9db07f0SSricharan R 	{ }
1453*d9db07f0SSricharan R };
1454*d9db07f0SSricharan R 
1455*d9db07f0SSricharan R static struct clk_rcg2 crypto_clk_src = {
1456*d9db07f0SSricharan R 	.cmd_rcgr = 0x16004,
1457*d9db07f0SSricharan R 	.freq_tbl = ftbl_crypto_clk_src,
1458*d9db07f0SSricharan R 	.hid_width = 5,
1459*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1460*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1461*d9db07f0SSricharan R 		.name = "crypto_clk_src",
1462*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1463*d9db07f0SSricharan R 		.num_parents = 3,
1464*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1465*d9db07f0SSricharan R 	},
1466*d9db07f0SSricharan R };
1467*d9db07f0SSricharan R 
1468*d9db07f0SSricharan R static const struct freq_tbl ftbl_gp_clk_src[] = {
1469*d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
1470*d9db07f0SSricharan R 	F(50000000, P_GPLL0_DIV2, 8, 0, 0),
1471*d9db07f0SSricharan R 	F(100000000, P_GPLL0, 8, 0, 0),
1472*d9db07f0SSricharan R 	F(200000000, P_GPLL0, 4, 0, 0),
1473*d9db07f0SSricharan R 	F(266666666, P_GPLL0, 3, 0, 0),
1474*d9db07f0SSricharan R 	{ }
1475*d9db07f0SSricharan R };
1476*d9db07f0SSricharan R 
1477*d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_gpll0_gpll6_gpll0_sleep_clk[] = {
1478*d9db07f0SSricharan R 	{ .fw_name = "xo" },
1479*d9db07f0SSricharan R 	{ .hw = &gpll0.clkr.hw },
1480*d9db07f0SSricharan R 	{ .hw = &gpll6.clkr.hw },
1481*d9db07f0SSricharan R 	{ .hw = &gpll0_out_main_div2.hw },
1482*d9db07f0SSricharan R 	{ .fw_name = "sleep_clk" },
1483*d9db07f0SSricharan R };
1484*d9db07f0SSricharan R 
1485*d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map[] = {
1486*d9db07f0SSricharan R 	{ P_XO, 0 },
1487*d9db07f0SSricharan R 	{ P_GPLL0, 1 },
1488*d9db07f0SSricharan R 	{ P_GPLL6, 2 },
1489*d9db07f0SSricharan R 	{ P_GPLL0_DIV2, 4 },
1490*d9db07f0SSricharan R 	{ P_SLEEP_CLK, 6 },
1491*d9db07f0SSricharan R };
1492*d9db07f0SSricharan R 
1493*d9db07f0SSricharan R static struct clk_rcg2 gp1_clk_src = {
1494*d9db07f0SSricharan R 	.cmd_rcgr = 0x08004,
1495*d9db07f0SSricharan R 	.freq_tbl = ftbl_gp_clk_src,
1496*d9db07f0SSricharan R 	.mnd_width = 8,
1497*d9db07f0SSricharan R 	.hid_width = 5,
1498*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map,
1499*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1500*d9db07f0SSricharan R 		.name = "gp1_clk_src",
1501*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll6_gpll0_sleep_clk,
1502*d9db07f0SSricharan R 		.num_parents = 5,
1503*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1504*d9db07f0SSricharan R 	},
1505*d9db07f0SSricharan R };
1506*d9db07f0SSricharan R 
1507*d9db07f0SSricharan R static struct clk_rcg2 gp2_clk_src = {
1508*d9db07f0SSricharan R 	.cmd_rcgr = 0x09004,
1509*d9db07f0SSricharan R 	.freq_tbl = ftbl_gp_clk_src,
1510*d9db07f0SSricharan R 	.mnd_width = 8,
1511*d9db07f0SSricharan R 	.hid_width = 5,
1512*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map,
1513*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1514*d9db07f0SSricharan R 		.name = "gp2_clk_src",
1515*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll6_gpll0_sleep_clk,
1516*d9db07f0SSricharan R 		.num_parents = 5,
1517*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1518*d9db07f0SSricharan R 	},
1519*d9db07f0SSricharan R };
1520*d9db07f0SSricharan R 
1521*d9db07f0SSricharan R static struct clk_rcg2 gp3_clk_src = {
1522*d9db07f0SSricharan R 	.cmd_rcgr = 0x0a004,
1523*d9db07f0SSricharan R 	.freq_tbl = ftbl_gp_clk_src,
1524*d9db07f0SSricharan R 	.mnd_width = 8,
1525*d9db07f0SSricharan R 	.hid_width = 5,
1526*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map,
1527*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1528*d9db07f0SSricharan R 		.name = "gp3_clk_src",
1529*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll6_gpll0_sleep_clk,
1530*d9db07f0SSricharan R 		.num_parents = 5,
1531*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1532*d9db07f0SSricharan R 	},
1533*d9db07f0SSricharan R };
1534*d9db07f0SSricharan R 
1535*d9db07f0SSricharan R static struct clk_fixed_factor nss_ppe_cdiv_clk_src = {
1536*d9db07f0SSricharan R 	.mult = 1,
1537*d9db07f0SSricharan R 	.div = 4,
1538*d9db07f0SSricharan R 	.hw.init = &(struct clk_init_data){
1539*d9db07f0SSricharan R 		.name = "nss_ppe_cdiv_clk_src",
1540*d9db07f0SSricharan R 		.parent_hws = (const struct clk_hw *[]){
1541*d9db07f0SSricharan R 				&nss_ppe_clk_src.clkr.hw },
1542*d9db07f0SSricharan R 		.num_parents = 1,
1543*d9db07f0SSricharan R 		.ops = &clk_fixed_factor_ops,
1544*d9db07f0SSricharan R 		.flags = CLK_SET_RATE_PARENT,
1545*d9db07f0SSricharan R 	},
1546*d9db07f0SSricharan R };
1547*d9db07f0SSricharan R 
1548*d9db07f0SSricharan R static struct clk_regmap_div nss_ubi0_div_clk_src = {
1549*d9db07f0SSricharan R 	.reg = 0x68118,
1550*d9db07f0SSricharan R 	.shift = 0,
1551*d9db07f0SSricharan R 	.width = 4,
1552*d9db07f0SSricharan R 	.clkr = {
1553*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
1554*d9db07f0SSricharan R 			.name = "nss_ubi0_div_clk_src",
1555*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
1556*d9db07f0SSricharan R 				&nss_ubi0_clk_src.clkr.hw },
1557*d9db07f0SSricharan R 			.num_parents = 1,
1558*d9db07f0SSricharan R 			.ops = &clk_regmap_div_ro_ops,
1559*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
1560*d9db07f0SSricharan R 		},
1561*d9db07f0SSricharan R 	},
1562*d9db07f0SSricharan R };
1563*d9db07f0SSricharan R 
1564*d9db07f0SSricharan R static const struct freq_tbl ftbl_pcie_aux_clk_src[] = {
1565*d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
1566*d9db07f0SSricharan R };
1567*d9db07f0SSricharan R 
1568*d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_gpll0_core_pi_sleep_clk[] = {
1569*d9db07f0SSricharan R 	{ .fw_name = "xo" },
1570*d9db07f0SSricharan R 	{ .hw = &gpll0.clkr.hw },
1571*d9db07f0SSricharan R 	{ .fw_name = "sleep_clk" },
1572*d9db07f0SSricharan R };
1573*d9db07f0SSricharan R 
1574*d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll0_core_pi_sleep_clk_map[] = {
1575*d9db07f0SSricharan R 	{ P_XO, 0 },
1576*d9db07f0SSricharan R 	{ P_GPLL0, 2 },
1577*d9db07f0SSricharan R 	{ P_PI_SLEEP, 6 },
1578*d9db07f0SSricharan R };
1579*d9db07f0SSricharan R 
1580*d9db07f0SSricharan R static struct clk_rcg2 pcie0_aux_clk_src = {
1581*d9db07f0SSricharan R 	.cmd_rcgr = 0x75024,
1582*d9db07f0SSricharan R 	.freq_tbl = ftbl_pcie_aux_clk_src,
1583*d9db07f0SSricharan R 	.mnd_width = 16,
1584*d9db07f0SSricharan R 	.hid_width = 5,
1585*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_core_pi_sleep_clk_map,
1586*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1587*d9db07f0SSricharan R 		.name = "pcie0_aux_clk_src",
1588*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_core_pi_sleep_clk,
1589*d9db07f0SSricharan R 		.num_parents = 3,
1590*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1591*d9db07f0SSricharan R 	},
1592*d9db07f0SSricharan R };
1593*d9db07f0SSricharan R 
1594*d9db07f0SSricharan R static const struct clk_parent_data gcc_pcie20_phy0_pipe_clk_xo[] = {
1595*d9db07f0SSricharan R 	{ .fw_name = "pcie20_phy0_pipe_clk" },
1596*d9db07f0SSricharan R 	{ .fw_name = "xo" },
1597*d9db07f0SSricharan R };
1598*d9db07f0SSricharan R 
1599*d9db07f0SSricharan R static const struct parent_map gcc_pcie20_phy0_pipe_clk_xo_map[] = {
1600*d9db07f0SSricharan R 	{ P_PCIE20_PHY0_PIPE, 0 },
1601*d9db07f0SSricharan R 	{ P_XO, 2 },
1602*d9db07f0SSricharan R };
1603*d9db07f0SSricharan R 
1604*d9db07f0SSricharan R static struct clk_regmap_mux pcie0_pipe_clk_src = {
1605*d9db07f0SSricharan R 	.reg = 0x7501c,
1606*d9db07f0SSricharan R 	.shift = 8,
1607*d9db07f0SSricharan R 	.width = 2,
1608*d9db07f0SSricharan R 	.parent_map = gcc_pcie20_phy0_pipe_clk_xo_map,
1609*d9db07f0SSricharan R 	.clkr = {
1610*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
1611*d9db07f0SSricharan R 			.name = "pcie0_pipe_clk_src",
1612*d9db07f0SSricharan R 			.parent_data = gcc_pcie20_phy0_pipe_clk_xo,
1613*d9db07f0SSricharan R 			.num_parents = 2,
1614*d9db07f0SSricharan R 			.ops = &clk_regmap_mux_closest_ops,
1615*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
1616*d9db07f0SSricharan R 		},
1617*d9db07f0SSricharan R 	},
1618*d9db07f0SSricharan R };
1619*d9db07f0SSricharan R 
1620*d9db07f0SSricharan R static const struct freq_tbl ftbl_sdcc_apps_clk_src[] = {
1621*d9db07f0SSricharan R 	F(144000, P_XO, 16, 12, 125),
1622*d9db07f0SSricharan R 	F(400000, P_XO, 12, 1, 5),
1623*d9db07f0SSricharan R 	F(24000000, P_GPLL2, 12, 1, 4),
1624*d9db07f0SSricharan R 	F(48000000, P_GPLL2, 12, 1, 2),
1625*d9db07f0SSricharan R 	F(96000000, P_GPLL2, 12, 0, 0),
1626*d9db07f0SSricharan R 	F(177777778, P_GPLL0, 4.5, 0, 0),
1627*d9db07f0SSricharan R 	F(192000000, P_GPLL2, 6, 0, 0),
1628*d9db07f0SSricharan R 	F(384000000, P_GPLL2, 3, 0, 0),
1629*d9db07f0SSricharan R 	{ }
1630*d9db07f0SSricharan R };
1631*d9db07f0SSricharan R 
1632*d9db07f0SSricharan R static const struct clk_parent_data
1633*d9db07f0SSricharan R 			gcc_xo_gpll0_gpll2_gpll0_out_main_div2[] = {
1634*d9db07f0SSricharan R 	{ .fw_name = "xo" },
1635*d9db07f0SSricharan R 	{ .hw = &gpll0.clkr.hw },
1636*d9db07f0SSricharan R 	{ .hw = &gpll2.clkr.hw },
1637*d9db07f0SSricharan R 	{ .hw = &gpll0_out_main_div2.hw },
1638*d9db07f0SSricharan R };
1639*d9db07f0SSricharan R 
1640*d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map[] = {
1641*d9db07f0SSricharan R 	{ P_XO, 0 },
1642*d9db07f0SSricharan R 	{ P_GPLL0, 1 },
1643*d9db07f0SSricharan R 	{ P_GPLL2, 2 },
1644*d9db07f0SSricharan R 	{ P_GPLL0_DIV2, 4 },
1645*d9db07f0SSricharan R };
1646*d9db07f0SSricharan R 
1647*d9db07f0SSricharan R static struct clk_rcg2 sdcc1_apps_clk_src = {
1648*d9db07f0SSricharan R 	.cmd_rcgr = 0x42004,
1649*d9db07f0SSricharan R 	.freq_tbl = ftbl_sdcc_apps_clk_src,
1650*d9db07f0SSricharan R 	.mnd_width = 8,
1651*d9db07f0SSricharan R 	.hid_width = 5,
1652*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map,
1653*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1654*d9db07f0SSricharan R 		.name = "sdcc1_apps_clk_src",
1655*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll2_gpll0_out_main_div2,
1656*d9db07f0SSricharan R 		.num_parents = 4,
1657*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1658*d9db07f0SSricharan R 	},
1659*d9db07f0SSricharan R };
1660*d9db07f0SSricharan R 
1661*d9db07f0SSricharan R static const struct freq_tbl ftbl_usb_aux_clk_src[] = {
1662*d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
1663*d9db07f0SSricharan R 	{ }
1664*d9db07f0SSricharan R };
1665*d9db07f0SSricharan R 
1666*d9db07f0SSricharan R static struct clk_rcg2 usb0_aux_clk_src = {
1667*d9db07f0SSricharan R 	.cmd_rcgr = 0x3e05c,
1668*d9db07f0SSricharan R 	.freq_tbl = ftbl_usb_aux_clk_src,
1669*d9db07f0SSricharan R 	.mnd_width = 16,
1670*d9db07f0SSricharan R 	.hid_width = 5,
1671*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_core_pi_sleep_clk_map,
1672*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1673*d9db07f0SSricharan R 		.name = "usb0_aux_clk_src",
1674*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_core_pi_sleep_clk,
1675*d9db07f0SSricharan R 		.num_parents = 3,
1676*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1677*d9db07f0SSricharan R 	},
1678*d9db07f0SSricharan R };
1679*d9db07f0SSricharan R 
1680*d9db07f0SSricharan R static const struct freq_tbl ftbl_usb_mock_utmi_clk_src[] = {
1681*d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
1682*d9db07f0SSricharan R 	F(60000000, P_GPLL6, 6, 1, 3),
1683*d9db07f0SSricharan R 	{ }
1684*d9db07f0SSricharan R };
1685*d9db07f0SSricharan R 
1686*d9db07f0SSricharan R static const struct clk_parent_data
1687*d9db07f0SSricharan R 			gcc_xo_gpll6_gpll0_gpll0_out_main_div2[] = {
1688*d9db07f0SSricharan R 	{ .fw_name = "xo" },
1689*d9db07f0SSricharan R 	{ .hw = &gpll6.clkr.hw },
1690*d9db07f0SSricharan R 	{ .hw = &gpll0.clkr.hw },
1691*d9db07f0SSricharan R 	{ .hw = &gpll0_out_main_div2.hw },
1692*d9db07f0SSricharan R };
1693*d9db07f0SSricharan R 
1694*d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map[] = {
1695*d9db07f0SSricharan R 	{ P_XO, 0 },
1696*d9db07f0SSricharan R 	{ P_GPLL6, 1 },
1697*d9db07f0SSricharan R 	{ P_GPLL0, 3 },
1698*d9db07f0SSricharan R 	{ P_GPLL0_DIV2, 4 },
1699*d9db07f0SSricharan R };
1700*d9db07f0SSricharan R 
1701*d9db07f0SSricharan R static struct clk_rcg2 usb0_mock_utmi_clk_src = {
1702*d9db07f0SSricharan R 	.cmd_rcgr = 0x3e020,
1703*d9db07f0SSricharan R 	.freq_tbl = ftbl_usb_mock_utmi_clk_src,
1704*d9db07f0SSricharan R 	.mnd_width = 8,
1705*d9db07f0SSricharan R 	.hid_width = 5,
1706*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map,
1707*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1708*d9db07f0SSricharan R 		.name = "usb0_mock_utmi_clk_src",
1709*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll6_gpll0_gpll0_out_main_div2,
1710*d9db07f0SSricharan R 		.num_parents = 4,
1711*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1712*d9db07f0SSricharan R 	},
1713*d9db07f0SSricharan R };
1714*d9db07f0SSricharan R 
1715*d9db07f0SSricharan R static const struct clk_parent_data gcc_usb3phy_0_cc_pipe_clk_xo[] = {
1716*d9db07f0SSricharan R 	{ .fw_name = "usb3phy_0_cc_pipe_clk" },
1717*d9db07f0SSricharan R 	{ .fw_name = "xo" },
1718*d9db07f0SSricharan R };
1719*d9db07f0SSricharan R 
1720*d9db07f0SSricharan R static const struct parent_map gcc_usb3phy_0_cc_pipe_clk_xo_map[] = {
1721*d9db07f0SSricharan R 	{ P_USB3PHY_0_PIPE, 0 },
1722*d9db07f0SSricharan R 	{ P_XO, 2 },
1723*d9db07f0SSricharan R };
1724*d9db07f0SSricharan R 
1725*d9db07f0SSricharan R static struct clk_regmap_mux usb0_pipe_clk_src = {
1726*d9db07f0SSricharan R 	.reg = 0x3e048,
1727*d9db07f0SSricharan R 	.shift = 8,
1728*d9db07f0SSricharan R 	.width = 2,
1729*d9db07f0SSricharan R 	.parent_map = gcc_usb3phy_0_cc_pipe_clk_xo_map,
1730*d9db07f0SSricharan R 	.clkr = {
1731*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
1732*d9db07f0SSricharan R 			.name = "usb0_pipe_clk_src",
1733*d9db07f0SSricharan R 			.parent_data = gcc_usb3phy_0_cc_pipe_clk_xo,
1734*d9db07f0SSricharan R 			.num_parents = 2,
1735*d9db07f0SSricharan R 			.ops = &clk_regmap_mux_closest_ops,
1736*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
1737*d9db07f0SSricharan R 		},
1738*d9db07f0SSricharan R 	},
1739*d9db07f0SSricharan R };
1740*d9db07f0SSricharan R 
1741*d9db07f0SSricharan R static const struct freq_tbl ftbl_sdcc_ice_core_clk_src[] = {
1742*d9db07f0SSricharan R 	F(80000000, P_GPLL0_DIV2, 5, 0, 0),
1743*d9db07f0SSricharan R 	F(160000000, P_GPLL0, 5, 0, 0),
1744*d9db07f0SSricharan R 	F(216000000, P_GPLL6, 5, 0, 0),
1745*d9db07f0SSricharan R 	F(308570000, P_GPLL6, 3.5, 0, 0),
1746*d9db07f0SSricharan R };
1747*d9db07f0SSricharan R 
1748*d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_gpll0_gpll6_gpll0_div2[] = {
1749*d9db07f0SSricharan R 	{ .fw_name = "xo"},
1750*d9db07f0SSricharan R 	{ .hw = &gpll0.clkr.hw },
1751*d9db07f0SSricharan R 	{ .hw = &gpll6.clkr.hw },
1752*d9db07f0SSricharan R 	{ .hw = &gpll0_out_main_div2.hw },
1753*d9db07f0SSricharan R };
1754*d9db07f0SSricharan R 
1755*d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_div2_map[] = {
1756*d9db07f0SSricharan R 	{ P_XO, 0 },
1757*d9db07f0SSricharan R 	{ P_GPLL0, 1 },
1758*d9db07f0SSricharan R 	{ P_GPLL6, 2 },
1759*d9db07f0SSricharan R 	{ P_GPLL0_DIV2, 4 },
1760*d9db07f0SSricharan R };
1761*d9db07f0SSricharan R 
1762*d9db07f0SSricharan R static struct clk_rcg2 sdcc1_ice_core_clk_src = {
1763*d9db07f0SSricharan R 	.cmd_rcgr = 0x5d000,
1764*d9db07f0SSricharan R 	.freq_tbl = ftbl_sdcc_ice_core_clk_src,
1765*d9db07f0SSricharan R 	.mnd_width = 8,
1766*d9db07f0SSricharan R 	.hid_width = 5,
1767*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll6_gpll0_div2_map,
1768*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1769*d9db07f0SSricharan R 		.name = "sdcc1_ice_core_clk_src",
1770*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll6_gpll0_div2,
1771*d9db07f0SSricharan R 		.num_parents = 4,
1772*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1773*d9db07f0SSricharan R 	},
1774*d9db07f0SSricharan R };
1775*d9db07f0SSricharan R 
1776*d9db07f0SSricharan R static const struct freq_tbl ftbl_qdss_stm_clk_src[] = {
1777*d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
1778*d9db07f0SSricharan R 	F(50000000, P_GPLL0_DIV2, 8, 0, 0),
1779*d9db07f0SSricharan R 	F(100000000, P_GPLL0, 8, 0, 0),
1780*d9db07f0SSricharan R 	F(200000000, P_GPLL0, 4, 0, 0),
1781*d9db07f0SSricharan R 	{ }
1782*d9db07f0SSricharan R };
1783*d9db07f0SSricharan R 
1784*d9db07f0SSricharan R static struct clk_rcg2 qdss_stm_clk_src = {
1785*d9db07f0SSricharan R 	.cmd_rcgr = 0x2902C,
1786*d9db07f0SSricharan R 	.freq_tbl = ftbl_qdss_stm_clk_src,
1787*d9db07f0SSricharan R 	.hid_width = 5,
1788*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1789*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1790*d9db07f0SSricharan R 		.name = "qdss_stm_clk_src",
1791*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1792*d9db07f0SSricharan R 		.num_parents = 3,
1793*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1794*d9db07f0SSricharan R 	},
1795*d9db07f0SSricharan R };
1796*d9db07f0SSricharan R 
1797*d9db07f0SSricharan R static const struct freq_tbl ftbl_qdss_traceclkin_clk_src[] = {
1798*d9db07f0SSricharan R 	F(80000000, P_GPLL0_DIV2, 5, 0, 0),
1799*d9db07f0SSricharan R 	F(160000000, P_GPLL0, 5, 0, 0),
1800*d9db07f0SSricharan R 	F(300000000, P_GPLL4, 4, 0, 0),
1801*d9db07f0SSricharan R 	{ }
1802*d9db07f0SSricharan R };
1803*d9db07f0SSricharan R 
1804*d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_gpll4_gpll0_gpll0_div2[] = {
1805*d9db07f0SSricharan R 	{ .fw_name = "xo" },
1806*d9db07f0SSricharan R 	{ .hw = &gpll4.clkr.hw },
1807*d9db07f0SSricharan R 	{ .hw = &gpll0.clkr.hw },
1808*d9db07f0SSricharan R 	{ .hw = &gpll0_out_main_div2.hw },
1809*d9db07f0SSricharan R };
1810*d9db07f0SSricharan R 
1811*d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll4_gpll0_gpll0_div2_map[] = {
1812*d9db07f0SSricharan R 	{ P_XO, 0 },
1813*d9db07f0SSricharan R 	{ P_GPLL4, 1 },
1814*d9db07f0SSricharan R 	{ P_GPLL0, 2 },
1815*d9db07f0SSricharan R 	{ P_GPLL0_DIV2, 4 },
1816*d9db07f0SSricharan R };
1817*d9db07f0SSricharan R 
1818*d9db07f0SSricharan R static struct clk_rcg2 qdss_traceclkin_clk_src = {
1819*d9db07f0SSricharan R 	.cmd_rcgr = 0x29048,
1820*d9db07f0SSricharan R 	.freq_tbl = ftbl_qdss_traceclkin_clk_src,
1821*d9db07f0SSricharan R 	.hid_width = 5,
1822*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll4_gpll0_gpll0_div2_map,
1823*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1824*d9db07f0SSricharan R 		.name = "qdss_traceclkin_clk_src",
1825*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll4_gpll0_gpll0_div2,
1826*d9db07f0SSricharan R 		.num_parents = 4,
1827*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1828*d9db07f0SSricharan R 	},
1829*d9db07f0SSricharan R };
1830*d9db07f0SSricharan R 
1831*d9db07f0SSricharan R static struct clk_rcg2 usb1_mock_utmi_clk_src = {
1832*d9db07f0SSricharan R 	.cmd_rcgr = 0x3f020,
1833*d9db07f0SSricharan R 	.freq_tbl = ftbl_usb_mock_utmi_clk_src,
1834*d9db07f0SSricharan R 	.mnd_width = 8,
1835*d9db07f0SSricharan R 	.hid_width = 5,
1836*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map,
1837*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1838*d9db07f0SSricharan R 		.name = "usb1_mock_utmi_clk_src",
1839*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll6_gpll0_gpll0_out_main_div2,
1840*d9db07f0SSricharan R 		.num_parents = 4,
1841*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1842*d9db07f0SSricharan R 	},
1843*d9db07f0SSricharan R };
1844*d9db07f0SSricharan R 
1845*d9db07f0SSricharan R static struct clk_branch gcc_adss_pwm_clk = {
1846*d9db07f0SSricharan R 	.halt_reg = 0x1c020,
1847*d9db07f0SSricharan R 	.clkr = {
1848*d9db07f0SSricharan R 		.enable_reg = 0x1c020,
1849*d9db07f0SSricharan R 		.enable_mask = BIT(0),
1850*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
1851*d9db07f0SSricharan R 			.name = "gcc_adss_pwm_clk",
1852*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
1853*d9db07f0SSricharan R 					&adss_pwm_clk_src.clkr.hw },
1854*d9db07f0SSricharan R 			.num_parents = 1,
1855*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
1856*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
1857*d9db07f0SSricharan R 		},
1858*d9db07f0SSricharan R 	},
1859*d9db07f0SSricharan R };
1860*d9db07f0SSricharan R 
1861*d9db07f0SSricharan R static struct clk_branch gcc_apss_ahb_clk = {
1862*d9db07f0SSricharan R 	.halt_reg = 0x4601c,
1863*d9db07f0SSricharan R 	.halt_check = BRANCH_HALT_VOTED,
1864*d9db07f0SSricharan R 	.clkr = {
1865*d9db07f0SSricharan R 		.enable_reg = 0x0b004,
1866*d9db07f0SSricharan R 		.enable_mask = BIT(14),
1867*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
1868*d9db07f0SSricharan R 			.name = "gcc_apss_ahb_clk",
1869*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
1870*d9db07f0SSricharan R 					&apss_ahb_postdiv_clk_src.clkr.hw },
1871*d9db07f0SSricharan R 			.num_parents = 1,
1872*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
1873*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
1874*d9db07f0SSricharan R 		},
1875*d9db07f0SSricharan R 	},
1876*d9db07f0SSricharan R };
1877*d9db07f0SSricharan R 
1878*d9db07f0SSricharan R static const struct freq_tbl ftbl_system_noc_bfdcd_clk_src[] = {
1879*d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
1880*d9db07f0SSricharan R 	F(50000000, P_GPLL0_DIV2, 8, 0, 0),
1881*d9db07f0SSricharan R 	F(100000000, P_GPLL0, 8, 0, 0),
1882*d9db07f0SSricharan R 	F(133333333, P_GPLL0, 6, 0, 0),
1883*d9db07f0SSricharan R 	F(160000000, P_GPLL0, 5, 0, 0),
1884*d9db07f0SSricharan R 	F(200000000, P_GPLL0, 4, 0, 0),
1885*d9db07f0SSricharan R 	F(266666667, P_GPLL0, 3, 0, 0),
1886*d9db07f0SSricharan R 	{ }
1887*d9db07f0SSricharan R };
1888*d9db07f0SSricharan R 
1889*d9db07f0SSricharan R static struct clk_rcg2 system_noc_bfdcd_clk_src = {
1890*d9db07f0SSricharan R 	.cmd_rcgr = 0x26004,
1891*d9db07f0SSricharan R 	.freq_tbl = ftbl_system_noc_bfdcd_clk_src,
1892*d9db07f0SSricharan R 	.hid_width = 5,
1893*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll6_gpll0_out_main_div2_map,
1894*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1895*d9db07f0SSricharan R 		.name = "system_noc_bfdcd_clk_src",
1896*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll6_gpll0_out_main_div2,
1897*d9db07f0SSricharan R 		.num_parents = 4,
1898*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1899*d9db07f0SSricharan R 	},
1900*d9db07f0SSricharan R };
1901*d9db07f0SSricharan R 
1902*d9db07f0SSricharan R static const struct freq_tbl ftbl_ubi32_mem_noc_bfdcd_clk_src[] = {
1903*d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
1904*d9db07f0SSricharan R 	F(307670000, P_BIAS_PLL_NSS_NOC, 1.5, 0, 0),
1905*d9db07f0SSricharan R 	F(533333333, P_GPLL0, 1.5, 0, 0),
1906*d9db07f0SSricharan R 	{ }
1907*d9db07f0SSricharan R };
1908*d9db07f0SSricharan R 
1909*d9db07f0SSricharan R static const struct clk_parent_data
1910*d9db07f0SSricharan R 			gcc_xo_gpll0_gpll2_bias_pll_nss_noc_clk[] = {
1911*d9db07f0SSricharan R 	{ .fw_name = "xo" },
1912*d9db07f0SSricharan R 	{ .hw = &gpll0.clkr.hw },
1913*d9db07f0SSricharan R 	{ .hw = &gpll2.clkr.hw },
1914*d9db07f0SSricharan R 	{ .fw_name = "bias_pll_nss_noc_clk" },
1915*d9db07f0SSricharan R };
1916*d9db07f0SSricharan R 
1917*d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll0_gpll2_bias_pll_nss_noc_clk_map[] = {
1918*d9db07f0SSricharan R 	{ P_XO, 0 },
1919*d9db07f0SSricharan R 	{ P_GPLL0, 1 },
1920*d9db07f0SSricharan R 	{ P_GPLL2, 3 },
1921*d9db07f0SSricharan R 	{ P_BIAS_PLL_NSS_NOC, 4 },
1922*d9db07f0SSricharan R };
1923*d9db07f0SSricharan R 
1924*d9db07f0SSricharan R static struct clk_rcg2 ubi32_mem_noc_bfdcd_clk_src = {
1925*d9db07f0SSricharan R 	.cmd_rcgr = 0x68088,
1926*d9db07f0SSricharan R 	.freq_tbl = ftbl_ubi32_mem_noc_bfdcd_clk_src,
1927*d9db07f0SSricharan R 	.hid_width = 5,
1928*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll2_bias_pll_nss_noc_clk_map,
1929*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1930*d9db07f0SSricharan R 		.name = "ubi32_mem_noc_bfdcd_clk_src",
1931*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll2_bias_pll_nss_noc_clk,
1932*d9db07f0SSricharan R 		.num_parents = 4,
1933*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1934*d9db07f0SSricharan R 	},
1935*d9db07f0SSricharan R };
1936*d9db07f0SSricharan R 
1937*d9db07f0SSricharan R static struct clk_branch gcc_apss_axi_clk = {
1938*d9db07f0SSricharan R 	.halt_reg = 0x46020,
1939*d9db07f0SSricharan R 	.halt_check = BRANCH_HALT_VOTED,
1940*d9db07f0SSricharan R 	.clkr = {
1941*d9db07f0SSricharan R 		.enable_reg = 0x0b004,
1942*d9db07f0SSricharan R 		.enable_mask = BIT(13),
1943*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
1944*d9db07f0SSricharan R 			.name = "gcc_apss_axi_clk",
1945*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
1946*d9db07f0SSricharan R 					&apss_axi_clk_src.clkr.hw },
1947*d9db07f0SSricharan R 			.num_parents = 1,
1948*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
1949*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
1950*d9db07f0SSricharan R 		},
1951*d9db07f0SSricharan R 	},
1952*d9db07f0SSricharan R };
1953*d9db07f0SSricharan R 
1954*d9db07f0SSricharan R static struct clk_branch gcc_blsp1_ahb_clk = {
1955*d9db07f0SSricharan R 	.halt_reg = 0x01008,
1956*d9db07f0SSricharan R 	.halt_check = BRANCH_HALT_VOTED,
1957*d9db07f0SSricharan R 	.clkr = {
1958*d9db07f0SSricharan R 		.enable_reg = 0x0b004,
1959*d9db07f0SSricharan R 		.enable_mask = BIT(10),
1960*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
1961*d9db07f0SSricharan R 			.name = "gcc_blsp1_ahb_clk",
1962*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
1963*d9db07f0SSricharan R 					&pcnoc_bfdcd_clk_src.clkr.hw },
1964*d9db07f0SSricharan R 			.num_parents = 1,
1965*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
1966*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
1967*d9db07f0SSricharan R 		},
1968*d9db07f0SSricharan R 	},
1969*d9db07f0SSricharan R };
1970*d9db07f0SSricharan R 
1971*d9db07f0SSricharan R static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = {
1972*d9db07f0SSricharan R 	.halt_reg = 0x02008,
1973*d9db07f0SSricharan R 	.clkr = {
1974*d9db07f0SSricharan R 		.enable_reg = 0x02008,
1975*d9db07f0SSricharan R 		.enable_mask = BIT(0),
1976*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
1977*d9db07f0SSricharan R 			.name = "gcc_blsp1_qup1_i2c_apps_clk",
1978*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
1979*d9db07f0SSricharan R 					&blsp1_qup1_i2c_apps_clk_src.clkr.hw },
1980*d9db07f0SSricharan R 			.num_parents = 1,
1981*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
1982*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
1983*d9db07f0SSricharan R 		},
1984*d9db07f0SSricharan R 	},
1985*d9db07f0SSricharan R };
1986*d9db07f0SSricharan R 
1987*d9db07f0SSricharan R static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = {
1988*d9db07f0SSricharan R 	.halt_reg = 0x02004,
1989*d9db07f0SSricharan R 	.clkr = {
1990*d9db07f0SSricharan R 		.enable_reg = 0x02004,
1991*d9db07f0SSricharan R 		.enable_mask = BIT(0),
1992*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
1993*d9db07f0SSricharan R 			.name = "gcc_blsp1_qup1_spi_apps_clk",
1994*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
1995*d9db07f0SSricharan R 					&blsp1_qup1_spi_apps_clk_src.clkr.hw },
1996*d9db07f0SSricharan R 			.num_parents = 1,
1997*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
1998*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
1999*d9db07f0SSricharan R 		},
2000*d9db07f0SSricharan R 	},
2001*d9db07f0SSricharan R };
2002*d9db07f0SSricharan R 
2003*d9db07f0SSricharan R static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = {
2004*d9db07f0SSricharan R 	.halt_reg = 0x03010,
2005*d9db07f0SSricharan R 	.clkr = {
2006*d9db07f0SSricharan R 		.enable_reg = 0x03010,
2007*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2008*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2009*d9db07f0SSricharan R 			.name = "gcc_blsp1_qup2_i2c_apps_clk",
2010*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2011*d9db07f0SSricharan R 					&blsp1_qup2_i2c_apps_clk_src.clkr.hw },
2012*d9db07f0SSricharan R 			.num_parents = 1,
2013*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2014*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2015*d9db07f0SSricharan R 		},
2016*d9db07f0SSricharan R 	},
2017*d9db07f0SSricharan R };
2018*d9db07f0SSricharan R 
2019*d9db07f0SSricharan R static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = {
2020*d9db07f0SSricharan R 	.halt_reg = 0x0300c,
2021*d9db07f0SSricharan R 	.clkr = {
2022*d9db07f0SSricharan R 		.enable_reg = 0x0300c,
2023*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2024*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2025*d9db07f0SSricharan R 			.name = "gcc_blsp1_qup2_spi_apps_clk",
2026*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2027*d9db07f0SSricharan R 					&blsp1_qup2_spi_apps_clk_src.clkr.hw },
2028*d9db07f0SSricharan R 			.num_parents = 1,
2029*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2030*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2031*d9db07f0SSricharan R 		},
2032*d9db07f0SSricharan R 	},
2033*d9db07f0SSricharan R };
2034*d9db07f0SSricharan R 
2035*d9db07f0SSricharan R static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = {
2036*d9db07f0SSricharan R 	.halt_reg = 0x04010,
2037*d9db07f0SSricharan R 	.clkr = {
2038*d9db07f0SSricharan R 		.enable_reg = 0x04010,
2039*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2040*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2041*d9db07f0SSricharan R 			.name = "gcc_blsp1_qup3_i2c_apps_clk",
2042*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2043*d9db07f0SSricharan R 					&blsp1_qup3_i2c_apps_clk_src.clkr.hw },
2044*d9db07f0SSricharan R 			.num_parents = 1,
2045*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2046*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2047*d9db07f0SSricharan R 		},
2048*d9db07f0SSricharan R 	},
2049*d9db07f0SSricharan R };
2050*d9db07f0SSricharan R 
2051*d9db07f0SSricharan R static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = {
2052*d9db07f0SSricharan R 	.halt_reg = 0x0400c,
2053*d9db07f0SSricharan R 	.clkr = {
2054*d9db07f0SSricharan R 		.enable_reg = 0x0400c,
2055*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2056*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2057*d9db07f0SSricharan R 			.name = "gcc_blsp1_qup3_spi_apps_clk",
2058*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2059*d9db07f0SSricharan R 					&blsp1_qup3_spi_apps_clk_src.clkr.hw },
2060*d9db07f0SSricharan R 			.num_parents = 1,
2061*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2062*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2063*d9db07f0SSricharan R 		},
2064*d9db07f0SSricharan R 	},
2065*d9db07f0SSricharan R };
2066*d9db07f0SSricharan R 
2067*d9db07f0SSricharan R static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = {
2068*d9db07f0SSricharan R 	.halt_reg = 0x05010,
2069*d9db07f0SSricharan R 	.clkr = {
2070*d9db07f0SSricharan R 		.enable_reg = 0x05010,
2071*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2072*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2073*d9db07f0SSricharan R 			.name = "gcc_blsp1_qup4_i2c_apps_clk",
2074*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2075*d9db07f0SSricharan R 					&blsp1_qup4_i2c_apps_clk_src.clkr.hw },
2076*d9db07f0SSricharan R 			.num_parents = 1,
2077*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2078*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2079*d9db07f0SSricharan R 		},
2080*d9db07f0SSricharan R 	},
2081*d9db07f0SSricharan R };
2082*d9db07f0SSricharan R 
2083*d9db07f0SSricharan R static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = {
2084*d9db07f0SSricharan R 	.halt_reg = 0x0500c,
2085*d9db07f0SSricharan R 	.clkr = {
2086*d9db07f0SSricharan R 		.enable_reg = 0x0500c,
2087*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2088*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2089*d9db07f0SSricharan R 			.name = "gcc_blsp1_qup4_spi_apps_clk",
2090*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2091*d9db07f0SSricharan R 					&blsp1_qup4_spi_apps_clk_src.clkr.hw },
2092*d9db07f0SSricharan R 			.num_parents = 1,
2093*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2094*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2095*d9db07f0SSricharan R 		},
2096*d9db07f0SSricharan R 	},
2097*d9db07f0SSricharan R };
2098*d9db07f0SSricharan R 
2099*d9db07f0SSricharan R static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = {
2100*d9db07f0SSricharan R 	.halt_reg = 0x06010,
2101*d9db07f0SSricharan R 	.clkr = {
2102*d9db07f0SSricharan R 		.enable_reg = 0x06010,
2103*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2104*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2105*d9db07f0SSricharan R 			.name = "gcc_blsp1_qup5_i2c_apps_clk",
2106*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2107*d9db07f0SSricharan R 					&blsp1_qup5_i2c_apps_clk_src.clkr.hw },
2108*d9db07f0SSricharan R 			.num_parents = 1,
2109*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2110*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2111*d9db07f0SSricharan R 		},
2112*d9db07f0SSricharan R 	},
2113*d9db07f0SSricharan R };
2114*d9db07f0SSricharan R 
2115*d9db07f0SSricharan R static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = {
2116*d9db07f0SSricharan R 	.halt_reg = 0x0600c,
2117*d9db07f0SSricharan R 	.clkr = {
2118*d9db07f0SSricharan R 		.enable_reg = 0x0600c,
2119*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2120*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2121*d9db07f0SSricharan R 			.name = "gcc_blsp1_qup5_spi_apps_clk",
2122*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2123*d9db07f0SSricharan R 					&blsp1_qup5_spi_apps_clk_src.clkr.hw },
2124*d9db07f0SSricharan R 			.num_parents = 1,
2125*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2126*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2127*d9db07f0SSricharan R 		},
2128*d9db07f0SSricharan R 	},
2129*d9db07f0SSricharan R };
2130*d9db07f0SSricharan R 
2131*d9db07f0SSricharan R static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = {
2132*d9db07f0SSricharan R 	.halt_reg = 0x0700c,
2133*d9db07f0SSricharan R 	.clkr = {
2134*d9db07f0SSricharan R 		.enable_reg = 0x0700c,
2135*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2136*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2137*d9db07f0SSricharan R 			.name = "gcc_blsp1_qup6_spi_apps_clk",
2138*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2139*d9db07f0SSricharan R 					&blsp1_qup6_spi_apps_clk_src.clkr.hw },
2140*d9db07f0SSricharan R 			.num_parents = 1,
2141*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2142*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2143*d9db07f0SSricharan R 		},
2144*d9db07f0SSricharan R 	},
2145*d9db07f0SSricharan R };
2146*d9db07f0SSricharan R 
2147*d9db07f0SSricharan R static struct clk_branch gcc_blsp1_uart1_apps_clk = {
2148*d9db07f0SSricharan R 	.halt_reg = 0x0203c,
2149*d9db07f0SSricharan R 	.clkr = {
2150*d9db07f0SSricharan R 		.enable_reg = 0x0203c,
2151*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2152*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2153*d9db07f0SSricharan R 			.name = "gcc_blsp1_uart1_apps_clk",
2154*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2155*d9db07f0SSricharan R 					&blsp1_uart1_apps_clk_src.clkr.hw },
2156*d9db07f0SSricharan R 			.num_parents = 1,
2157*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2158*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2159*d9db07f0SSricharan R 		},
2160*d9db07f0SSricharan R 	},
2161*d9db07f0SSricharan R };
2162*d9db07f0SSricharan R 
2163*d9db07f0SSricharan R static struct clk_branch gcc_blsp1_uart2_apps_clk = {
2164*d9db07f0SSricharan R 	.halt_reg = 0x0302c,
2165*d9db07f0SSricharan R 	.clkr = {
2166*d9db07f0SSricharan R 		.enable_reg = 0x0302c,
2167*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2168*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2169*d9db07f0SSricharan R 			.name = "gcc_blsp1_uart2_apps_clk",
2170*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2171*d9db07f0SSricharan R 					&blsp1_uart2_apps_clk_src.clkr.hw },
2172*d9db07f0SSricharan R 			.num_parents = 1,
2173*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2174*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2175*d9db07f0SSricharan R 		},
2176*d9db07f0SSricharan R 	},
2177*d9db07f0SSricharan R };
2178*d9db07f0SSricharan R 
2179*d9db07f0SSricharan R static struct clk_branch gcc_blsp1_uart3_apps_clk = {
2180*d9db07f0SSricharan R 	.halt_reg = 0x0402c,
2181*d9db07f0SSricharan R 	.clkr = {
2182*d9db07f0SSricharan R 		.enable_reg = 0x0402c,
2183*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2184*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2185*d9db07f0SSricharan R 			.name = "gcc_blsp1_uart3_apps_clk",
2186*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2187*d9db07f0SSricharan R 					&blsp1_uart3_apps_clk_src.clkr.hw },
2188*d9db07f0SSricharan R 			.num_parents = 1,
2189*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2190*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2191*d9db07f0SSricharan R 		},
2192*d9db07f0SSricharan R 	},
2193*d9db07f0SSricharan R };
2194*d9db07f0SSricharan R 
2195*d9db07f0SSricharan R static struct clk_branch gcc_blsp1_uart4_apps_clk = {
2196*d9db07f0SSricharan R 	.halt_reg = 0x0502c,
2197*d9db07f0SSricharan R 	.clkr = {
2198*d9db07f0SSricharan R 		.enable_reg = 0x0502c,
2199*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2200*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2201*d9db07f0SSricharan R 			.name = "gcc_blsp1_uart4_apps_clk",
2202*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2203*d9db07f0SSricharan R 					&blsp1_uart4_apps_clk_src.clkr.hw },
2204*d9db07f0SSricharan R 			.num_parents = 1,
2205*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2206*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2207*d9db07f0SSricharan R 		},
2208*d9db07f0SSricharan R 	},
2209*d9db07f0SSricharan R };
2210*d9db07f0SSricharan R 
2211*d9db07f0SSricharan R static struct clk_branch gcc_blsp1_uart5_apps_clk = {
2212*d9db07f0SSricharan R 	.halt_reg = 0x0602c,
2213*d9db07f0SSricharan R 	.clkr = {
2214*d9db07f0SSricharan R 		.enable_reg = 0x0602c,
2215*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2216*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2217*d9db07f0SSricharan R 			.name = "gcc_blsp1_uart5_apps_clk",
2218*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2219*d9db07f0SSricharan R 					&blsp1_uart5_apps_clk_src.clkr.hw },
2220*d9db07f0SSricharan R 			.num_parents = 1,
2221*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2222*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2223*d9db07f0SSricharan R 		},
2224*d9db07f0SSricharan R 	},
2225*d9db07f0SSricharan R };
2226*d9db07f0SSricharan R 
2227*d9db07f0SSricharan R static struct clk_branch gcc_blsp1_uart6_apps_clk = {
2228*d9db07f0SSricharan R 	.halt_reg = 0x0702c,
2229*d9db07f0SSricharan R 	.clkr = {
2230*d9db07f0SSricharan R 		.enable_reg = 0x0702c,
2231*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2232*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2233*d9db07f0SSricharan R 			.name = "gcc_blsp1_uart6_apps_clk",
2234*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2235*d9db07f0SSricharan R 					&blsp1_uart6_apps_clk_src.clkr.hw },
2236*d9db07f0SSricharan R 			.num_parents = 1,
2237*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2238*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2239*d9db07f0SSricharan R 		},
2240*d9db07f0SSricharan R 	},
2241*d9db07f0SSricharan R };
2242*d9db07f0SSricharan R 
2243*d9db07f0SSricharan R static struct clk_branch gcc_crypto_ahb_clk = {
2244*d9db07f0SSricharan R 	.halt_reg = 0x16024,
2245*d9db07f0SSricharan R 	.halt_check = BRANCH_HALT_VOTED,
2246*d9db07f0SSricharan R 	.clkr = {
2247*d9db07f0SSricharan R 		.enable_reg = 0x0b004,
2248*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2249*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2250*d9db07f0SSricharan R 			.name = "gcc_crypto_ahb_clk",
2251*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2252*d9db07f0SSricharan R 					&pcnoc_bfdcd_clk_src.clkr.hw },
2253*d9db07f0SSricharan R 			.num_parents = 1,
2254*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2255*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2256*d9db07f0SSricharan R 		},
2257*d9db07f0SSricharan R 	},
2258*d9db07f0SSricharan R };
2259*d9db07f0SSricharan R 
2260*d9db07f0SSricharan R static struct clk_branch gcc_crypto_axi_clk = {
2261*d9db07f0SSricharan R 	.halt_reg = 0x16020,
2262*d9db07f0SSricharan R 	.halt_check = BRANCH_HALT_VOTED,
2263*d9db07f0SSricharan R 	.clkr = {
2264*d9db07f0SSricharan R 		.enable_reg = 0x0b004,
2265*d9db07f0SSricharan R 		.enable_mask = BIT(1),
2266*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2267*d9db07f0SSricharan R 			.name = "gcc_crypto_axi_clk",
2268*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2269*d9db07f0SSricharan R 					&pcnoc_bfdcd_clk_src.clkr.hw },
2270*d9db07f0SSricharan R 			.num_parents = 1,
2271*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2272*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2273*d9db07f0SSricharan R 		},
2274*d9db07f0SSricharan R 	},
2275*d9db07f0SSricharan R };
2276*d9db07f0SSricharan R 
2277*d9db07f0SSricharan R static struct clk_branch gcc_crypto_clk = {
2278*d9db07f0SSricharan R 	.halt_reg = 0x1601c,
2279*d9db07f0SSricharan R 	.halt_check = BRANCH_HALT_VOTED,
2280*d9db07f0SSricharan R 	.clkr = {
2281*d9db07f0SSricharan R 		.enable_reg = 0x0b004,
2282*d9db07f0SSricharan R 		.enable_mask = BIT(2),
2283*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2284*d9db07f0SSricharan R 			.name = "gcc_crypto_clk",
2285*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2286*d9db07f0SSricharan R 					&crypto_clk_src.clkr.hw },
2287*d9db07f0SSricharan R 			.num_parents = 1,
2288*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2289*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2290*d9db07f0SSricharan R 		},
2291*d9db07f0SSricharan R 	},
2292*d9db07f0SSricharan R };
2293*d9db07f0SSricharan R 
2294*d9db07f0SSricharan R static struct clk_fixed_factor gpll6_out_main_div2 = {
2295*d9db07f0SSricharan R 	.mult = 1,
2296*d9db07f0SSricharan R 	.div = 2,
2297*d9db07f0SSricharan R 	.hw.init = &(struct clk_init_data){
2298*d9db07f0SSricharan R 		.name = "gpll6_out_main_div2",
2299*d9db07f0SSricharan R 		.parent_hws = (const struct clk_hw *[]){
2300*d9db07f0SSricharan R 				&gpll6_main.clkr.hw },
2301*d9db07f0SSricharan R 		.num_parents = 1,
2302*d9db07f0SSricharan R 		.ops = &clk_fixed_factor_ops,
2303*d9db07f0SSricharan R 		.flags = CLK_SET_RATE_PARENT,
2304*d9db07f0SSricharan R 	},
2305*d9db07f0SSricharan R };
2306*d9db07f0SSricharan R 
2307*d9db07f0SSricharan R static struct clk_branch gcc_xo_clk = {
2308*d9db07f0SSricharan R 	.halt_reg = 0x30030,
2309*d9db07f0SSricharan R 	.clkr = {
2310*d9db07f0SSricharan R 		.enable_reg = 0x30030,
2311*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2312*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2313*d9db07f0SSricharan R 			.name = "gcc_xo_clk",
2314*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2315*d9db07f0SSricharan R 					&gcc_xo_clk_src.clkr.hw },
2316*d9db07f0SSricharan R 			.num_parents = 1,
2317*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2318*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2319*d9db07f0SSricharan R 		},
2320*d9db07f0SSricharan R 	},
2321*d9db07f0SSricharan R };
2322*d9db07f0SSricharan R 
2323*d9db07f0SSricharan R static struct clk_branch gcc_gp1_clk = {
2324*d9db07f0SSricharan R 	.halt_reg = 0x08000,
2325*d9db07f0SSricharan R 	.clkr = {
2326*d9db07f0SSricharan R 		.enable_reg = 0x08000,
2327*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2328*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2329*d9db07f0SSricharan R 			.name = "gcc_gp1_clk",
2330*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2331*d9db07f0SSricharan R 					&gp1_clk_src.clkr.hw },
2332*d9db07f0SSricharan R 			.num_parents = 1,
2333*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2334*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2335*d9db07f0SSricharan R 		},
2336*d9db07f0SSricharan R 	},
2337*d9db07f0SSricharan R };
2338*d9db07f0SSricharan R 
2339*d9db07f0SSricharan R static struct clk_branch gcc_gp2_clk = {
2340*d9db07f0SSricharan R 	.halt_reg = 0x09000,
2341*d9db07f0SSricharan R 	.clkr = {
2342*d9db07f0SSricharan R 		.enable_reg = 0x09000,
2343*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2344*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2345*d9db07f0SSricharan R 			.name = "gcc_gp2_clk",
2346*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2347*d9db07f0SSricharan R 					&gp2_clk_src.clkr.hw },
2348*d9db07f0SSricharan R 			.num_parents = 1,
2349*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2350*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2351*d9db07f0SSricharan R 		},
2352*d9db07f0SSricharan R 	},
2353*d9db07f0SSricharan R };
2354*d9db07f0SSricharan R 
2355*d9db07f0SSricharan R static struct clk_branch gcc_gp3_clk = {
2356*d9db07f0SSricharan R 	.halt_reg = 0x0a000,
2357*d9db07f0SSricharan R 	.clkr = {
2358*d9db07f0SSricharan R 		.enable_reg = 0x0a000,
2359*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2360*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2361*d9db07f0SSricharan R 			.name = "gcc_gp3_clk",
2362*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2363*d9db07f0SSricharan R 					&gp3_clk_src.clkr.hw },
2364*d9db07f0SSricharan R 			.num_parents = 1,
2365*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2366*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2367*d9db07f0SSricharan R 		},
2368*d9db07f0SSricharan R 	},
2369*d9db07f0SSricharan R };
2370*d9db07f0SSricharan R 
2371*d9db07f0SSricharan R static struct clk_branch gcc_mdio_ahb_clk = {
2372*d9db07f0SSricharan R 	.halt_reg = 0x58004,
2373*d9db07f0SSricharan R 	.clkr = {
2374*d9db07f0SSricharan R 		.enable_reg = 0x58004,
2375*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2376*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2377*d9db07f0SSricharan R 			.name = "gcc_mdio_ahb_clk",
2378*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2379*d9db07f0SSricharan R 					&pcnoc_bfdcd_clk_src.clkr.hw },
2380*d9db07f0SSricharan R 			.num_parents = 1,
2381*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2382*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2383*d9db07f0SSricharan R 		},
2384*d9db07f0SSricharan R 	},
2385*d9db07f0SSricharan R };
2386*d9db07f0SSricharan R 
2387*d9db07f0SSricharan R static struct clk_branch gcc_crypto_ppe_clk = {
2388*d9db07f0SSricharan R 	.halt_reg = 0x68310,
2389*d9db07f0SSricharan R 	.clkr = {
2390*d9db07f0SSricharan R 		.enable_reg = 0x68310,
2391*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2392*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2393*d9db07f0SSricharan R 			.name = "gcc_crypto_ppe_clk",
2394*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2395*d9db07f0SSricharan R 					&nss_ppe_clk_src.clkr.hw },
2396*d9db07f0SSricharan R 			.num_parents = 1,
2397*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2398*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2399*d9db07f0SSricharan R 		},
2400*d9db07f0SSricharan R 	},
2401*d9db07f0SSricharan R };
2402*d9db07f0SSricharan R 
2403*d9db07f0SSricharan R static struct clk_branch gcc_nss_ce_apb_clk = {
2404*d9db07f0SSricharan R 	.halt_reg = 0x68174,
2405*d9db07f0SSricharan R 	.clkr = {
2406*d9db07f0SSricharan R 		.enable_reg = 0x68174,
2407*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2408*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2409*d9db07f0SSricharan R 			.name = "gcc_nss_ce_apb_clk",
2410*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2411*d9db07f0SSricharan R 					&nss_ce_clk_src.clkr.hw },
2412*d9db07f0SSricharan R 			.num_parents = 1,
2413*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2414*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2415*d9db07f0SSricharan R 		},
2416*d9db07f0SSricharan R 	},
2417*d9db07f0SSricharan R };
2418*d9db07f0SSricharan R 
2419*d9db07f0SSricharan R static struct clk_branch gcc_nss_ce_axi_clk = {
2420*d9db07f0SSricharan R 	.halt_reg = 0x68170,
2421*d9db07f0SSricharan R 	.clkr = {
2422*d9db07f0SSricharan R 		.enable_reg = 0x68170,
2423*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2424*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2425*d9db07f0SSricharan R 			.name = "gcc_nss_ce_axi_clk",
2426*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2427*d9db07f0SSricharan R 					&nss_ce_clk_src.clkr.hw },
2428*d9db07f0SSricharan R 			.num_parents = 1,
2429*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2430*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2431*d9db07f0SSricharan R 		},
2432*d9db07f0SSricharan R 	},
2433*d9db07f0SSricharan R };
2434*d9db07f0SSricharan R 
2435*d9db07f0SSricharan R static struct clk_branch gcc_nss_cfg_clk = {
2436*d9db07f0SSricharan R 	.halt_reg = 0x68160,
2437*d9db07f0SSricharan R 	.clkr = {
2438*d9db07f0SSricharan R 		.enable_reg = 0x68160,
2439*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2440*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2441*d9db07f0SSricharan R 			.name = "gcc_nss_cfg_clk",
2442*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2443*d9db07f0SSricharan R 					&pcnoc_bfdcd_clk_src.clkr.hw },
2444*d9db07f0SSricharan R 			.num_parents = 1,
2445*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2446*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2447*d9db07f0SSricharan R 		},
2448*d9db07f0SSricharan R 	},
2449*d9db07f0SSricharan R };
2450*d9db07f0SSricharan R 
2451*d9db07f0SSricharan R static struct clk_branch gcc_nss_crypto_clk = {
2452*d9db07f0SSricharan R 	.halt_reg = 0x68164,
2453*d9db07f0SSricharan R 	.clkr = {
2454*d9db07f0SSricharan R 		.enable_reg = 0x68164,
2455*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2456*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2457*d9db07f0SSricharan R 			.name = "gcc_nss_crypto_clk",
2458*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2459*d9db07f0SSricharan R 					&nss_crypto_clk_src.clkr.hw },
2460*d9db07f0SSricharan R 			.num_parents = 1,
2461*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2462*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2463*d9db07f0SSricharan R 		},
2464*d9db07f0SSricharan R 	},
2465*d9db07f0SSricharan R };
2466*d9db07f0SSricharan R 
2467*d9db07f0SSricharan R static struct clk_branch gcc_nss_csr_clk = {
2468*d9db07f0SSricharan R 	.halt_reg = 0x68318,
2469*d9db07f0SSricharan R 	.clkr = {
2470*d9db07f0SSricharan R 		.enable_reg = 0x68318,
2471*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2472*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2473*d9db07f0SSricharan R 			.name = "gcc_nss_csr_clk",
2474*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2475*d9db07f0SSricharan R 					&nss_ce_clk_src.clkr.hw },
2476*d9db07f0SSricharan R 			.num_parents = 1,
2477*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2478*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2479*d9db07f0SSricharan R 		},
2480*d9db07f0SSricharan R 	},
2481*d9db07f0SSricharan R };
2482*d9db07f0SSricharan R 
2483*d9db07f0SSricharan R static struct clk_branch gcc_nss_edma_cfg_clk = {
2484*d9db07f0SSricharan R 	.halt_reg = 0x6819C,
2485*d9db07f0SSricharan R 	.clkr = {
2486*d9db07f0SSricharan R 		.enable_reg = 0x6819C,
2487*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2488*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2489*d9db07f0SSricharan R 			.name = "gcc_nss_edma_cfg_clk",
2490*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2491*d9db07f0SSricharan R 					&nss_ppe_clk_src.clkr.hw },
2492*d9db07f0SSricharan R 			.num_parents = 1,
2493*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2494*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2495*d9db07f0SSricharan R 		},
2496*d9db07f0SSricharan R 	},
2497*d9db07f0SSricharan R };
2498*d9db07f0SSricharan R 
2499*d9db07f0SSricharan R static struct clk_branch gcc_nss_edma_clk = {
2500*d9db07f0SSricharan R 	.halt_reg = 0x68198,
2501*d9db07f0SSricharan R 	.clkr = {
2502*d9db07f0SSricharan R 		.enable_reg = 0x68198,
2503*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2504*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2505*d9db07f0SSricharan R 			.name = "gcc_nss_edma_clk",
2506*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2507*d9db07f0SSricharan R 					&nss_ppe_clk_src.clkr.hw },
2508*d9db07f0SSricharan R 			.num_parents = 1,
2509*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2510*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2511*d9db07f0SSricharan R 		},
2512*d9db07f0SSricharan R 	},
2513*d9db07f0SSricharan R };
2514*d9db07f0SSricharan R 
2515*d9db07f0SSricharan R static struct clk_branch gcc_nss_noc_clk = {
2516*d9db07f0SSricharan R 	.halt_reg = 0x68168,
2517*d9db07f0SSricharan R 	.clkr = {
2518*d9db07f0SSricharan R 		.enable_reg = 0x68168,
2519*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2520*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2521*d9db07f0SSricharan R 			.name = "gcc_nss_noc_clk",
2522*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2523*d9db07f0SSricharan R 					&snoc_nssnoc_bfdcd_clk_src.clkr.hw },
2524*d9db07f0SSricharan R 			.num_parents = 1,
2525*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2526*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2527*d9db07f0SSricharan R 		},
2528*d9db07f0SSricharan R 	},
2529*d9db07f0SSricharan R };
2530*d9db07f0SSricharan R 
2531*d9db07f0SSricharan R static struct clk_branch gcc_ubi0_utcm_clk = {
2532*d9db07f0SSricharan R 	.halt_reg = 0x2606c,
2533*d9db07f0SSricharan R 	.clkr = {
2534*d9db07f0SSricharan R 		.enable_reg = 0x2606c,
2535*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2536*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2537*d9db07f0SSricharan R 			.name = "gcc_ubi0_utcm_clk",
2538*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2539*d9db07f0SSricharan R 					&snoc_nssnoc_bfdcd_clk_src.clkr.hw },
2540*d9db07f0SSricharan R 			.num_parents = 1,
2541*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2542*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2543*d9db07f0SSricharan R 		},
2544*d9db07f0SSricharan R 	},
2545*d9db07f0SSricharan R };
2546*d9db07f0SSricharan R 
2547*d9db07f0SSricharan R static struct clk_branch gcc_snoc_nssnoc_clk = {
2548*d9db07f0SSricharan R 	.halt_reg = 0x26070,
2549*d9db07f0SSricharan R 	.clkr = {
2550*d9db07f0SSricharan R 		.enable_reg = 0x26070,
2551*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2552*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2553*d9db07f0SSricharan R 			.name = "gcc_snoc_nssnoc_clk",
2554*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2555*d9db07f0SSricharan R 					&snoc_nssnoc_bfdcd_clk_src.clkr.hw },
2556*d9db07f0SSricharan R 			.num_parents = 1,
2557*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2558*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2559*d9db07f0SSricharan R 		},
2560*d9db07f0SSricharan R 	},
2561*d9db07f0SSricharan R };
2562*d9db07f0SSricharan R 
2563*d9db07f0SSricharan R static const struct freq_tbl ftbl_wcss_ahb_clk_src[] = {
2564*d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
2565*d9db07f0SSricharan R 	F(133333333, P_GPLL0, 6, 0, 0),
2566*d9db07f0SSricharan R 	{ }
2567*d9db07f0SSricharan R };
2568*d9db07f0SSricharan R 
2569*d9db07f0SSricharan R static const struct freq_tbl ftbl_q6_axi_clk_src[] = {
2570*d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
2571*d9db07f0SSricharan R 	F(400000000, P_GPLL0, 2, 0, 0),
2572*d9db07f0SSricharan R 	{ }
2573*d9db07f0SSricharan R };
2574*d9db07f0SSricharan R 
2575*d9db07f0SSricharan R static struct clk_rcg2 wcss_ahb_clk_src = {
2576*d9db07f0SSricharan R 	.cmd_rcgr = 0x59020,
2577*d9db07f0SSricharan R 	.freq_tbl = ftbl_wcss_ahb_clk_src,
2578*d9db07f0SSricharan R 	.hid_width = 5,
2579*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_map,
2580*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
2581*d9db07f0SSricharan R 		.name = "wcss_ahb_clk_src",
2582*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0,
2583*d9db07f0SSricharan R 		.num_parents = 2,
2584*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
2585*d9db07f0SSricharan R 	},
2586*d9db07f0SSricharan R };
2587*d9db07f0SSricharan R 
2588*d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_gpll0_gpll2_gpll4_gpll6[] = {
2589*d9db07f0SSricharan R 	{ .fw_name = "xo" },
2590*d9db07f0SSricharan R 	{ .hw = &gpll0.clkr.hw },
2591*d9db07f0SSricharan R 	{ .hw = &gpll2.clkr.hw },
2592*d9db07f0SSricharan R 	{ .hw = &gpll4.clkr.hw },
2593*d9db07f0SSricharan R 	{ .hw = &gpll6.clkr.hw },
2594*d9db07f0SSricharan R };
2595*d9db07f0SSricharan R 
2596*d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll0_gpll2_gpll4_gpll6_map[] = {
2597*d9db07f0SSricharan R 	{ P_XO, 0 },
2598*d9db07f0SSricharan R 	{ P_GPLL0, 1 },
2599*d9db07f0SSricharan R 	{ P_GPLL2, 2 },
2600*d9db07f0SSricharan R 	{ P_GPLL4, 3 },
2601*d9db07f0SSricharan R 	{ P_GPLL6, 4 },
2602*d9db07f0SSricharan R };
2603*d9db07f0SSricharan R 
2604*d9db07f0SSricharan R static struct clk_rcg2 q6_axi_clk_src = {
2605*d9db07f0SSricharan R 	.cmd_rcgr = 0x59120,
2606*d9db07f0SSricharan R 	.freq_tbl = ftbl_q6_axi_clk_src,
2607*d9db07f0SSricharan R 	.hid_width = 5,
2608*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll2_gpll4_gpll6_map,
2609*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
2610*d9db07f0SSricharan R 		.name = "q6_axi_clk_src",
2611*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll2_gpll4_gpll6,
2612*d9db07f0SSricharan R 		.num_parents = 5,
2613*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
2614*d9db07f0SSricharan R 	},
2615*d9db07f0SSricharan R };
2616*d9db07f0SSricharan R 
2617*d9db07f0SSricharan R static const struct freq_tbl ftbl_lpass_core_axim_clk_src[] = {
2618*d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
2619*d9db07f0SSricharan R 	F(100000000, P_GPLL0, 8, 0, 0),
2620*d9db07f0SSricharan R 	{ }
2621*d9db07f0SSricharan R };
2622*d9db07f0SSricharan R 
2623*d9db07f0SSricharan R static struct clk_rcg2 lpass_core_axim_clk_src = {
2624*d9db07f0SSricharan R 	.cmd_rcgr = 0x1F020,
2625*d9db07f0SSricharan R 	.freq_tbl = ftbl_lpass_core_axim_clk_src,
2626*d9db07f0SSricharan R 	.hid_width = 5,
2627*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_map,
2628*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
2629*d9db07f0SSricharan R 		.name = "lpass_core_axim_clk_src",
2630*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0,
2631*d9db07f0SSricharan R 		.num_parents = 2,
2632*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
2633*d9db07f0SSricharan R 	},
2634*d9db07f0SSricharan R };
2635*d9db07f0SSricharan R 
2636*d9db07f0SSricharan R static const struct freq_tbl ftbl_lpass_snoc_cfg_clk_src[] = {
2637*d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
2638*d9db07f0SSricharan R 	F(266666667, P_GPLL0, 3, 0, 0),
2639*d9db07f0SSricharan R 	{ }
2640*d9db07f0SSricharan R };
2641*d9db07f0SSricharan R 
2642*d9db07f0SSricharan R static struct clk_rcg2 lpass_snoc_cfg_clk_src = {
2643*d9db07f0SSricharan R 	.cmd_rcgr = 0x1F040,
2644*d9db07f0SSricharan R 	.freq_tbl = ftbl_lpass_snoc_cfg_clk_src,
2645*d9db07f0SSricharan R 	.hid_width = 5,
2646*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_map,
2647*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
2648*d9db07f0SSricharan R 		.name = "lpass_snoc_cfg_clk_src",
2649*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0,
2650*d9db07f0SSricharan R 		.num_parents = 2,
2651*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
2652*d9db07f0SSricharan R 	},
2653*d9db07f0SSricharan R };
2654*d9db07f0SSricharan R 
2655*d9db07f0SSricharan R static const struct freq_tbl ftbl_lpass_q6_axim_clk_src[] = {
2656*d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
2657*d9db07f0SSricharan R 	F(400000000, P_GPLL0, 2, 0, 0),
2658*d9db07f0SSricharan R 	{ }
2659*d9db07f0SSricharan R };
2660*d9db07f0SSricharan R 
2661*d9db07f0SSricharan R static struct clk_rcg2 lpass_q6_axim_clk_src = {
2662*d9db07f0SSricharan R 	.cmd_rcgr = 0x1F008,
2663*d9db07f0SSricharan R 	.freq_tbl = ftbl_lpass_q6_axim_clk_src,
2664*d9db07f0SSricharan R 	.hid_width = 5,
2665*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_map,
2666*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
2667*d9db07f0SSricharan R 		.name = "lpass_q6_axim_clk_src",
2668*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0,
2669*d9db07f0SSricharan R 		.num_parents = 2,
2670*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
2671*d9db07f0SSricharan R 	},
2672*d9db07f0SSricharan R };
2673*d9db07f0SSricharan R 
2674*d9db07f0SSricharan R static struct freq_tbl ftbl_rbcpr_wcss_clk_src[] = {
2675*d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
2676*d9db07f0SSricharan R 	F(50000000, P_GPLL0, 16, 0, 0),
2677*d9db07f0SSricharan R 	{ }
2678*d9db07f0SSricharan R };
2679*d9db07f0SSricharan R 
2680*d9db07f0SSricharan R static struct clk_rcg2 rbcpr_wcss_clk_src = {
2681*d9db07f0SSricharan R 	.cmd_rcgr = 0x3a00c,
2682*d9db07f0SSricharan R 	.freq_tbl = ftbl_rbcpr_wcss_clk_src,
2683*d9db07f0SSricharan R 	.hid_width = 5,
2684*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_out_main_div2_gpll0_map,
2685*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
2686*d9db07f0SSricharan R 		.name = "rbcpr_wcss_clk_src",
2687*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_out_main_div2_gpll0,
2688*d9db07f0SSricharan R 		.num_parents = 3,
2689*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
2690*d9db07f0SSricharan R 	},
2691*d9db07f0SSricharan R };
2692*d9db07f0SSricharan R 
2693*d9db07f0SSricharan R static struct clk_branch gcc_lpass_core_axim_clk = {
2694*d9db07f0SSricharan R 	.halt_reg = 0x1F028,
2695*d9db07f0SSricharan R 	.clkr = {
2696*d9db07f0SSricharan R 		.enable_reg = 0x1F028,
2697*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2698*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2699*d9db07f0SSricharan R 			.name = "gcc_lpass_core_axim_clk",
2700*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2701*d9db07f0SSricharan R 					&lpass_core_axim_clk_src.clkr.hw },
2702*d9db07f0SSricharan R 			.num_parents = 1,
2703*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2704*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2705*d9db07f0SSricharan R 		},
2706*d9db07f0SSricharan R 	},
2707*d9db07f0SSricharan R };
2708*d9db07f0SSricharan R 
2709*d9db07f0SSricharan R static struct clk_branch gcc_lpass_snoc_cfg_clk = {
2710*d9db07f0SSricharan R 	.halt_reg = 0x1F048,
2711*d9db07f0SSricharan R 	.clkr = {
2712*d9db07f0SSricharan R 		.enable_reg = 0x1F048,
2713*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2714*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2715*d9db07f0SSricharan R 			.name = "gcc_lpass_snoc_cfg_clk",
2716*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2717*d9db07f0SSricharan R 					&lpass_snoc_cfg_clk_src.clkr.hw },
2718*d9db07f0SSricharan R 			.num_parents = 1,
2719*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2720*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2721*d9db07f0SSricharan R 		},
2722*d9db07f0SSricharan R 	},
2723*d9db07f0SSricharan R };
2724*d9db07f0SSricharan R 
2725*d9db07f0SSricharan R static struct clk_branch gcc_lpass_q6_axim_clk = {
2726*d9db07f0SSricharan R 	.halt_reg = 0x1F010,
2727*d9db07f0SSricharan R 	.clkr = {
2728*d9db07f0SSricharan R 		.enable_reg = 0x1F010,
2729*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2730*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2731*d9db07f0SSricharan R 			.name = "gcc_lpass_q6_axim_clk",
2732*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2733*d9db07f0SSricharan R 					&lpass_q6_axim_clk_src.clkr.hw },
2734*d9db07f0SSricharan R 			.num_parents = 1,
2735*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2736*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2737*d9db07f0SSricharan R 		},
2738*d9db07f0SSricharan R 	},
2739*d9db07f0SSricharan R };
2740*d9db07f0SSricharan R 
2741*d9db07f0SSricharan R static struct clk_branch gcc_lpass_q6_atbm_at_clk = {
2742*d9db07f0SSricharan R 	.halt_reg = 0x1F018,
2743*d9db07f0SSricharan R 	.clkr = {
2744*d9db07f0SSricharan R 		.enable_reg = 0x1F018,
2745*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2746*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2747*d9db07f0SSricharan R 			.name = "gcc_lpass_q6_atbm_at_clk",
2748*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2749*d9db07f0SSricharan R 					&qdss_at_clk_src.clkr.hw },
2750*d9db07f0SSricharan R 			.num_parents = 1,
2751*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2752*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2753*d9db07f0SSricharan R 		},
2754*d9db07f0SSricharan R 	},
2755*d9db07f0SSricharan R };
2756*d9db07f0SSricharan R 
2757*d9db07f0SSricharan R static struct clk_branch gcc_lpass_q6_pclkdbg_clk = {
2758*d9db07f0SSricharan R 	.halt_reg = 0x1F01C,
2759*d9db07f0SSricharan R 	.clkr = {
2760*d9db07f0SSricharan R 		.enable_reg = 0x1F01C,
2761*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2762*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2763*d9db07f0SSricharan R 			.name = "gcc_lpass_q6_pclkdbg_clk",
2764*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2765*d9db07f0SSricharan R 					&qdss_dap_sync_clk_src.hw },
2766*d9db07f0SSricharan R 			.num_parents = 1,
2767*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2768*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2769*d9db07f0SSricharan R 		},
2770*d9db07f0SSricharan R 	},
2771*d9db07f0SSricharan R };
2772*d9db07f0SSricharan R 
2773*d9db07f0SSricharan R static struct clk_branch gcc_lpass_q6ss_tsctr_1to2_clk = {
2774*d9db07f0SSricharan R 	.halt_reg = 0x1F014,
2775*d9db07f0SSricharan R 	.clkr = {
2776*d9db07f0SSricharan R 		.enable_reg = 0x1F014,
2777*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2778*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2779*d9db07f0SSricharan R 			.name = "gcc_lpass_q6ss_tsctr_1to2_clk",
2780*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2781*d9db07f0SSricharan R 					&qdss_tsctr_div2_clk_src.hw },
2782*d9db07f0SSricharan R 			.num_parents = 1,
2783*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2784*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2785*d9db07f0SSricharan R 		},
2786*d9db07f0SSricharan R 	},
2787*d9db07f0SSricharan R };
2788*d9db07f0SSricharan R 
2789*d9db07f0SSricharan R static struct clk_branch gcc_lpass_q6ss_trig_clk = {
2790*d9db07f0SSricharan R 	.halt_reg = 0x1F038,
2791*d9db07f0SSricharan R 	.clkr = {
2792*d9db07f0SSricharan R 		.enable_reg = 0x1F038,
2793*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2794*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2795*d9db07f0SSricharan R 			.name = "gcc_lpass_q6ss_trig_clk",
2796*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2797*d9db07f0SSricharan R 					&qdss_dap_sync_clk_src.hw },
2798*d9db07f0SSricharan R 			.num_parents = 1,
2799*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2800*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2801*d9db07f0SSricharan R 		},
2802*d9db07f0SSricharan R 	},
2803*d9db07f0SSricharan R };
2804*d9db07f0SSricharan R 
2805*d9db07f0SSricharan R static struct clk_branch gcc_lpass_tbu_clk = {
2806*d9db07f0SSricharan R 	.halt_reg = 0x12094,
2807*d9db07f0SSricharan R 	.clkr = {
2808*d9db07f0SSricharan R 		.enable_reg = 0xb00c,
2809*d9db07f0SSricharan R 		.enable_mask = BIT(10),
2810*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2811*d9db07f0SSricharan R 			.name = "gcc_lpass_tbu_clk",
2812*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2813*d9db07f0SSricharan R 					&lpass_q6_axim_clk_src.clkr.hw },
2814*d9db07f0SSricharan R 			.num_parents = 1,
2815*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2816*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2817*d9db07f0SSricharan R 		},
2818*d9db07f0SSricharan R 	},
2819*d9db07f0SSricharan R };
2820*d9db07f0SSricharan R 
2821*d9db07f0SSricharan R static struct clk_branch gcc_pcnoc_lpass_clk = {
2822*d9db07f0SSricharan R 	.halt_reg = 0x27020,
2823*d9db07f0SSricharan R 	.clkr = {
2824*d9db07f0SSricharan R 		.enable_reg = 0x27020,
2825*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2826*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2827*d9db07f0SSricharan R 			.name = "gcc_pcnoc_lpass_clk",
2828*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2829*d9db07f0SSricharan R 					&lpass_core_axim_clk_src.clkr.hw },
2830*d9db07f0SSricharan R 			.num_parents = 1,
2831*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2832*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2833*d9db07f0SSricharan R 		},
2834*d9db07f0SSricharan R 	},
2835*d9db07f0SSricharan R };
2836*d9db07f0SSricharan R 
2837*d9db07f0SSricharan R static struct clk_branch gcc_mem_noc_lpass_clk = {
2838*d9db07f0SSricharan R 	.halt_reg = 0x1D044,
2839*d9db07f0SSricharan R 	.clkr = {
2840*d9db07f0SSricharan R 		.enable_reg = 0x1D044,
2841*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2842*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2843*d9db07f0SSricharan R 			.name = "gcc_mem_noc_lpass_clk",
2844*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2845*d9db07f0SSricharan R 					&lpass_q6_axim_clk_src.clkr.hw },
2846*d9db07f0SSricharan R 			.num_parents = 1,
2847*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2848*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2849*d9db07f0SSricharan R 		},
2850*d9db07f0SSricharan R 	},
2851*d9db07f0SSricharan R };
2852*d9db07f0SSricharan R 
2853*d9db07f0SSricharan R static struct clk_branch gcc_snoc_lpass_cfg_clk = {
2854*d9db07f0SSricharan R 	.halt_reg = 0x26074,
2855*d9db07f0SSricharan R 	.clkr = {
2856*d9db07f0SSricharan R 		.enable_reg = 0x26074,
2857*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2858*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2859*d9db07f0SSricharan R 			.name = "gcc_snoc_lpass_cfg_clk",
2860*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2861*d9db07f0SSricharan R 					&lpass_snoc_cfg_clk_src.clkr.hw },
2862*d9db07f0SSricharan R 			.num_parents = 1,
2863*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2864*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2865*d9db07f0SSricharan R 		},
2866*d9db07f0SSricharan R 	},
2867*d9db07f0SSricharan R };
2868*d9db07f0SSricharan R 
2869*d9db07f0SSricharan R static struct clk_branch gcc_mem_noc_ubi32_clk = {
2870*d9db07f0SSricharan R 	.halt_reg = 0x1D03C,
2871*d9db07f0SSricharan R 	.clkr = {
2872*d9db07f0SSricharan R 		.enable_reg = 0x1D03C,
2873*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2874*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2875*d9db07f0SSricharan R 			.name = "gcc_mem_noc_ubi32_clk",
2876*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2877*d9db07f0SSricharan R 					&ubi32_mem_noc_bfdcd_clk_src.clkr.hw },
2878*d9db07f0SSricharan R 			.num_parents = 1,
2879*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2880*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2881*d9db07f0SSricharan R 		},
2882*d9db07f0SSricharan R 	},
2883*d9db07f0SSricharan R };
2884*d9db07f0SSricharan R 
2885*d9db07f0SSricharan R static struct clk_branch gcc_nss_port1_rx_clk = {
2886*d9db07f0SSricharan R 	.halt_reg = 0x68240,
2887*d9db07f0SSricharan R 	.clkr = {
2888*d9db07f0SSricharan R 		.enable_reg = 0x68240,
2889*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2890*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2891*d9db07f0SSricharan R 			.name = "gcc_nss_port1_rx_clk",
2892*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2893*d9db07f0SSricharan R 					&nss_port1_rx_div_clk_src.clkr.hw },
2894*d9db07f0SSricharan R 			.num_parents = 1,
2895*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2896*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2897*d9db07f0SSricharan R 		},
2898*d9db07f0SSricharan R 	},
2899*d9db07f0SSricharan R };
2900*d9db07f0SSricharan R 
2901*d9db07f0SSricharan R static struct clk_branch gcc_nss_port1_tx_clk = {
2902*d9db07f0SSricharan R 	.halt_reg = 0x68244,
2903*d9db07f0SSricharan R 	.clkr = {
2904*d9db07f0SSricharan R 		.enable_reg = 0x68244,
2905*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2906*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2907*d9db07f0SSricharan R 			.name = "gcc_nss_port1_tx_clk",
2908*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2909*d9db07f0SSricharan R 					&nss_port1_tx_div_clk_src.clkr.hw },
2910*d9db07f0SSricharan R 			.num_parents = 1,
2911*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2912*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2913*d9db07f0SSricharan R 		},
2914*d9db07f0SSricharan R 	},
2915*d9db07f0SSricharan R };
2916*d9db07f0SSricharan R 
2917*d9db07f0SSricharan R static struct clk_branch gcc_nss_port2_rx_clk = {
2918*d9db07f0SSricharan R 	.halt_reg = 0x68248,
2919*d9db07f0SSricharan R 	.clkr = {
2920*d9db07f0SSricharan R 		.enable_reg = 0x68248,
2921*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2922*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2923*d9db07f0SSricharan R 			.name = "gcc_nss_port2_rx_clk",
2924*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2925*d9db07f0SSricharan R 					&nss_port2_rx_div_clk_src.clkr.hw },
2926*d9db07f0SSricharan R 			.num_parents = 1,
2927*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2928*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2929*d9db07f0SSricharan R 		},
2930*d9db07f0SSricharan R 	},
2931*d9db07f0SSricharan R };
2932*d9db07f0SSricharan R 
2933*d9db07f0SSricharan R static struct clk_branch gcc_nss_port2_tx_clk = {
2934*d9db07f0SSricharan R 	.halt_reg = 0x6824c,
2935*d9db07f0SSricharan R 	.clkr = {
2936*d9db07f0SSricharan R 		.enable_reg = 0x6824c,
2937*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2938*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2939*d9db07f0SSricharan R 			.name = "gcc_nss_port2_tx_clk",
2940*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2941*d9db07f0SSricharan R 					&nss_port2_tx_div_clk_src.clkr.hw },
2942*d9db07f0SSricharan R 			.num_parents = 1,
2943*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2944*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2945*d9db07f0SSricharan R 		},
2946*d9db07f0SSricharan R 	},
2947*d9db07f0SSricharan R };
2948*d9db07f0SSricharan R 
2949*d9db07f0SSricharan R static struct clk_branch gcc_nss_port3_rx_clk = {
2950*d9db07f0SSricharan R 	.halt_reg = 0x68250,
2951*d9db07f0SSricharan R 	.clkr = {
2952*d9db07f0SSricharan R 		.enable_reg = 0x68250,
2953*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2954*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2955*d9db07f0SSricharan R 			.name = "gcc_nss_port3_rx_clk",
2956*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2957*d9db07f0SSricharan R 					&nss_port3_rx_div_clk_src.clkr.hw },
2958*d9db07f0SSricharan R 			.num_parents = 1,
2959*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2960*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2961*d9db07f0SSricharan R 		},
2962*d9db07f0SSricharan R 	},
2963*d9db07f0SSricharan R };
2964*d9db07f0SSricharan R 
2965*d9db07f0SSricharan R static struct clk_branch gcc_nss_port3_tx_clk = {
2966*d9db07f0SSricharan R 	.halt_reg = 0x68254,
2967*d9db07f0SSricharan R 	.clkr = {
2968*d9db07f0SSricharan R 		.enable_reg = 0x68254,
2969*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2970*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2971*d9db07f0SSricharan R 			.name = "gcc_nss_port3_tx_clk",
2972*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2973*d9db07f0SSricharan R 					&nss_port3_tx_div_clk_src.clkr.hw },
2974*d9db07f0SSricharan R 			.num_parents = 1,
2975*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2976*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2977*d9db07f0SSricharan R 		},
2978*d9db07f0SSricharan R 	},
2979*d9db07f0SSricharan R };
2980*d9db07f0SSricharan R 
2981*d9db07f0SSricharan R static struct clk_branch gcc_nss_port4_rx_clk = {
2982*d9db07f0SSricharan R 	.halt_reg = 0x68258,
2983*d9db07f0SSricharan R 	.clkr = {
2984*d9db07f0SSricharan R 		.enable_reg = 0x68258,
2985*d9db07f0SSricharan R 		.enable_mask = BIT(0),
2986*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2987*d9db07f0SSricharan R 			.name = "gcc_nss_port4_rx_clk",
2988*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2989*d9db07f0SSricharan R 					&nss_port4_rx_div_clk_src.clkr.hw },
2990*d9db07f0SSricharan R 			.num_parents = 1,
2991*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2992*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2993*d9db07f0SSricharan R 		},
2994*d9db07f0SSricharan R 	},
2995*d9db07f0SSricharan R };
2996*d9db07f0SSricharan R 
2997*d9db07f0SSricharan R static struct clk_branch gcc_nss_port4_tx_clk = {
2998*d9db07f0SSricharan R 	.halt_reg = 0x6825c,
2999*d9db07f0SSricharan R 	.clkr = {
3000*d9db07f0SSricharan R 		.enable_reg = 0x6825c,
3001*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3002*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3003*d9db07f0SSricharan R 			.name = "gcc_nss_port4_tx_clk",
3004*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3005*d9db07f0SSricharan R 					&nss_port4_tx_div_clk_src.clkr.hw },
3006*d9db07f0SSricharan R 			.num_parents = 1,
3007*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3008*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3009*d9db07f0SSricharan R 		},
3010*d9db07f0SSricharan R 	},
3011*d9db07f0SSricharan R };
3012*d9db07f0SSricharan R 
3013*d9db07f0SSricharan R static struct clk_branch gcc_nss_port5_rx_clk = {
3014*d9db07f0SSricharan R 	.halt_reg = 0x68260,
3015*d9db07f0SSricharan R 	.clkr = {
3016*d9db07f0SSricharan R 		.enable_reg = 0x68260,
3017*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3018*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3019*d9db07f0SSricharan R 			.name = "gcc_nss_port5_rx_clk",
3020*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3021*d9db07f0SSricharan R 					&nss_port5_rx_div_clk_src.clkr.hw },
3022*d9db07f0SSricharan R 			.num_parents = 1,
3023*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3024*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3025*d9db07f0SSricharan R 		},
3026*d9db07f0SSricharan R 	},
3027*d9db07f0SSricharan R };
3028*d9db07f0SSricharan R 
3029*d9db07f0SSricharan R static struct clk_branch gcc_nss_port5_tx_clk = {
3030*d9db07f0SSricharan R 	.halt_reg = 0x68264,
3031*d9db07f0SSricharan R 	.clkr = {
3032*d9db07f0SSricharan R 		.enable_reg = 0x68264,
3033*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3034*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3035*d9db07f0SSricharan R 			.name = "gcc_nss_port5_tx_clk",
3036*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3037*d9db07f0SSricharan R 					&nss_port5_tx_div_clk_src.clkr.hw },
3038*d9db07f0SSricharan R 			.num_parents = 1,
3039*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3040*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3041*d9db07f0SSricharan R 		},
3042*d9db07f0SSricharan R 	},
3043*d9db07f0SSricharan R };
3044*d9db07f0SSricharan R 
3045*d9db07f0SSricharan R static struct clk_branch gcc_nss_ppe_cfg_clk = {
3046*d9db07f0SSricharan R 	.halt_reg = 0x68194,
3047*d9db07f0SSricharan R 	.clkr = {
3048*d9db07f0SSricharan R 		.enable_reg = 0x68194,
3049*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3050*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3051*d9db07f0SSricharan R 			.name = "gcc_nss_ppe_cfg_clk",
3052*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3053*d9db07f0SSricharan R 					&nss_ppe_clk_src.clkr.hw },
3054*d9db07f0SSricharan R 			.num_parents = 1,
3055*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3056*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3057*d9db07f0SSricharan R 		},
3058*d9db07f0SSricharan R 	},
3059*d9db07f0SSricharan R };
3060*d9db07f0SSricharan R 
3061*d9db07f0SSricharan R static struct clk_branch gcc_nss_ppe_clk = {
3062*d9db07f0SSricharan R 	.halt_reg = 0x68190,
3063*d9db07f0SSricharan R 	.clkr = {
3064*d9db07f0SSricharan R 		.enable_reg = 0x68190,
3065*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3066*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3067*d9db07f0SSricharan R 			.name = "gcc_nss_ppe_clk",
3068*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3069*d9db07f0SSricharan R 					&nss_ppe_clk_src.clkr.hw },
3070*d9db07f0SSricharan R 			.num_parents = 1,
3071*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3072*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3073*d9db07f0SSricharan R 		},
3074*d9db07f0SSricharan R 	},
3075*d9db07f0SSricharan R };
3076*d9db07f0SSricharan R 
3077*d9db07f0SSricharan R static struct clk_branch gcc_nss_ppe_ipe_clk = {
3078*d9db07f0SSricharan R 	.halt_reg = 0x68338,
3079*d9db07f0SSricharan R 	.clkr = {
3080*d9db07f0SSricharan R 		.enable_reg = 0x68338,
3081*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3082*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3083*d9db07f0SSricharan R 			.name = "gcc_nss_ppe_ipe_clk",
3084*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3085*d9db07f0SSricharan R 					&nss_ppe_clk_src.clkr.hw },
3086*d9db07f0SSricharan R 			.num_parents = 1,
3087*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3088*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3089*d9db07f0SSricharan R 		},
3090*d9db07f0SSricharan R 	},
3091*d9db07f0SSricharan R };
3092*d9db07f0SSricharan R 
3093*d9db07f0SSricharan R static struct clk_branch gcc_nss_ptp_ref_clk = {
3094*d9db07f0SSricharan R 	.halt_reg = 0x6816C,
3095*d9db07f0SSricharan R 	.clkr = {
3096*d9db07f0SSricharan R 		.enable_reg = 0x6816C,
3097*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3098*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3099*d9db07f0SSricharan R 			.name = "gcc_nss_ptp_ref_clk",
3100*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3101*d9db07f0SSricharan R 					&nss_ppe_cdiv_clk_src.hw },
3102*d9db07f0SSricharan R 			.num_parents = 1,
3103*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3104*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3105*d9db07f0SSricharan R 		},
3106*d9db07f0SSricharan R 	},
3107*d9db07f0SSricharan R };
3108*d9db07f0SSricharan R 
3109*d9db07f0SSricharan R static struct clk_branch gcc_nssnoc_ce_apb_clk = {
3110*d9db07f0SSricharan R 	.halt_reg = 0x6830C,
3111*d9db07f0SSricharan R 	.clkr = {
3112*d9db07f0SSricharan R 		.enable_reg = 0x6830C,
3113*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3114*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3115*d9db07f0SSricharan R 			.name = "gcc_nssnoc_ce_apb_clk",
3116*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3117*d9db07f0SSricharan R 					&nss_ce_clk_src.clkr.hw },
3118*d9db07f0SSricharan R 			.num_parents = 1,
3119*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3120*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3121*d9db07f0SSricharan R 		},
3122*d9db07f0SSricharan R 	},
3123*d9db07f0SSricharan R };
3124*d9db07f0SSricharan R 
3125*d9db07f0SSricharan R static struct clk_branch gcc_nssnoc_ce_axi_clk = {
3126*d9db07f0SSricharan R 	.halt_reg = 0x68308,
3127*d9db07f0SSricharan R 	.clkr = {
3128*d9db07f0SSricharan R 		.enable_reg = 0x68308,
3129*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3130*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3131*d9db07f0SSricharan R 			.name = "gcc_nssnoc_ce_axi_clk",
3132*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3133*d9db07f0SSricharan R 					&nss_ce_clk_src.clkr.hw },
3134*d9db07f0SSricharan R 			.num_parents = 1,
3135*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3136*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3137*d9db07f0SSricharan R 		},
3138*d9db07f0SSricharan R 	},
3139*d9db07f0SSricharan R };
3140*d9db07f0SSricharan R 
3141*d9db07f0SSricharan R static struct clk_branch gcc_nssnoc_crypto_clk = {
3142*d9db07f0SSricharan R 	.halt_reg = 0x68314,
3143*d9db07f0SSricharan R 	.clkr = {
3144*d9db07f0SSricharan R 		.enable_reg = 0x68314,
3145*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3146*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3147*d9db07f0SSricharan R 			.name = "gcc_nssnoc_crypto_clk",
3148*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3149*d9db07f0SSricharan R 					&nss_crypto_clk_src.clkr.hw },
3150*d9db07f0SSricharan R 			.num_parents = 1,
3151*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3152*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3153*d9db07f0SSricharan R 		},
3154*d9db07f0SSricharan R 	},
3155*d9db07f0SSricharan R };
3156*d9db07f0SSricharan R 
3157*d9db07f0SSricharan R static struct clk_branch gcc_nssnoc_ppe_cfg_clk = {
3158*d9db07f0SSricharan R 	.halt_reg = 0x68304,
3159*d9db07f0SSricharan R 	.clkr = {
3160*d9db07f0SSricharan R 		.enable_reg = 0x68304,
3161*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3162*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3163*d9db07f0SSricharan R 			.name = "gcc_nssnoc_ppe_cfg_clk",
3164*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3165*d9db07f0SSricharan R 					&nss_ppe_clk_src.clkr.hw },
3166*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3167*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3168*d9db07f0SSricharan R 		},
3169*d9db07f0SSricharan R 	},
3170*d9db07f0SSricharan R };
3171*d9db07f0SSricharan R 
3172*d9db07f0SSricharan R static struct clk_branch gcc_nssnoc_ppe_clk = {
3173*d9db07f0SSricharan R 	.halt_reg = 0x68300,
3174*d9db07f0SSricharan R 	.clkr = {
3175*d9db07f0SSricharan R 		.enable_reg = 0x68300,
3176*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3177*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3178*d9db07f0SSricharan R 			.name = "gcc_nssnoc_ppe_clk",
3179*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3180*d9db07f0SSricharan R 					&nss_ppe_clk_src.clkr.hw },
3181*d9db07f0SSricharan R 			.num_parents = 1,
3182*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3183*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3184*d9db07f0SSricharan R 		},
3185*d9db07f0SSricharan R 	},
3186*d9db07f0SSricharan R };
3187*d9db07f0SSricharan R 
3188*d9db07f0SSricharan R static struct clk_branch gcc_nssnoc_qosgen_ref_clk = {
3189*d9db07f0SSricharan R 	.halt_reg = 0x68180,
3190*d9db07f0SSricharan R 	.clkr = {
3191*d9db07f0SSricharan R 		.enable_reg = 0x68180,
3192*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3193*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3194*d9db07f0SSricharan R 			.name = "gcc_nssnoc_qosgen_ref_clk",
3195*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3196*d9db07f0SSricharan R 					&gcc_xo_clk_src.clkr.hw },
3197*d9db07f0SSricharan R 			.num_parents = 1,
3198*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3199*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3200*d9db07f0SSricharan R 		},
3201*d9db07f0SSricharan R 	},
3202*d9db07f0SSricharan R };
3203*d9db07f0SSricharan R 
3204*d9db07f0SSricharan R static struct clk_branch gcc_nssnoc_snoc_clk = {
3205*d9db07f0SSricharan R 	.halt_reg = 0x68188,
3206*d9db07f0SSricharan R 	.clkr = {
3207*d9db07f0SSricharan R 		.enable_reg = 0x68188,
3208*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3209*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3210*d9db07f0SSricharan R 			.name = "gcc_nssnoc_snoc_clk",
3211*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3212*d9db07f0SSricharan R 					&system_noc_bfdcd_clk_src.clkr.hw },
3213*d9db07f0SSricharan R 			.num_parents = 1,
3214*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3215*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3216*d9db07f0SSricharan R 		},
3217*d9db07f0SSricharan R 	},
3218*d9db07f0SSricharan R };
3219*d9db07f0SSricharan R 
3220*d9db07f0SSricharan R static struct clk_branch gcc_nssnoc_timeout_ref_clk = {
3221*d9db07f0SSricharan R 	.halt_reg = 0x68184,
3222*d9db07f0SSricharan R 	.clkr = {
3223*d9db07f0SSricharan R 		.enable_reg = 0x68184,
3224*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3225*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3226*d9db07f0SSricharan R 			.name = "gcc_nssnoc_timeout_ref_clk",
3227*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3228*d9db07f0SSricharan R 					&gcc_xo_div4_clk_src.hw },
3229*d9db07f0SSricharan R 			.num_parents = 1,
3230*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3231*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3232*d9db07f0SSricharan R 		},
3233*d9db07f0SSricharan R 	},
3234*d9db07f0SSricharan R };
3235*d9db07f0SSricharan R 
3236*d9db07f0SSricharan R static struct clk_branch gcc_nssnoc_ubi0_ahb_clk = {
3237*d9db07f0SSricharan R 	.halt_reg = 0x68270,
3238*d9db07f0SSricharan R 	.clkr = {
3239*d9db07f0SSricharan R 		.enable_reg = 0x68270,
3240*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3241*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3242*d9db07f0SSricharan R 			.name = "gcc_nssnoc_ubi0_ahb_clk",
3243*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3244*d9db07f0SSricharan R 					&nss_ce_clk_src.clkr.hw },
3245*d9db07f0SSricharan R 			.num_parents = 1,
3246*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3247*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3248*d9db07f0SSricharan R 		},
3249*d9db07f0SSricharan R 	},
3250*d9db07f0SSricharan R };
3251*d9db07f0SSricharan R 
3252*d9db07f0SSricharan R static struct clk_branch gcc_port1_mac_clk = {
3253*d9db07f0SSricharan R 	.halt_reg = 0x68320,
3254*d9db07f0SSricharan R 	.clkr = {
3255*d9db07f0SSricharan R 		.enable_reg = 0x68320,
3256*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3257*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3258*d9db07f0SSricharan R 			.name = "gcc_port1_mac_clk",
3259*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3260*d9db07f0SSricharan R 					&nss_ppe_clk_src.clkr.hw },
3261*d9db07f0SSricharan R 			.num_parents = 1,
3262*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3263*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3264*d9db07f0SSricharan R 		},
3265*d9db07f0SSricharan R 	},
3266*d9db07f0SSricharan R };
3267*d9db07f0SSricharan R 
3268*d9db07f0SSricharan R static struct clk_branch gcc_port2_mac_clk = {
3269*d9db07f0SSricharan R 	.halt_reg = 0x68324,
3270*d9db07f0SSricharan R 	.clkr = {
3271*d9db07f0SSricharan R 		.enable_reg = 0x68324,
3272*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3273*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3274*d9db07f0SSricharan R 			.name = "gcc_port2_mac_clk",
3275*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3276*d9db07f0SSricharan R 					&nss_ppe_clk_src.clkr.hw },
3277*d9db07f0SSricharan R 			.num_parents = 1,
3278*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3279*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3280*d9db07f0SSricharan R 		},
3281*d9db07f0SSricharan R 	},
3282*d9db07f0SSricharan R };
3283*d9db07f0SSricharan R 
3284*d9db07f0SSricharan R static struct clk_branch gcc_port3_mac_clk = {
3285*d9db07f0SSricharan R 	.halt_reg = 0x68328,
3286*d9db07f0SSricharan R 	.clkr = {
3287*d9db07f0SSricharan R 		.enable_reg = 0x68328,
3288*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3289*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3290*d9db07f0SSricharan R 			.name = "gcc_port3_mac_clk",
3291*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3292*d9db07f0SSricharan R 					&nss_ppe_clk_src.clkr.hw },
3293*d9db07f0SSricharan R 			.num_parents = 1,
3294*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3295*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3296*d9db07f0SSricharan R 		},
3297*d9db07f0SSricharan R 	},
3298*d9db07f0SSricharan R };
3299*d9db07f0SSricharan R 
3300*d9db07f0SSricharan R static struct clk_branch gcc_port4_mac_clk = {
3301*d9db07f0SSricharan R 	.halt_reg = 0x6832c,
3302*d9db07f0SSricharan R 	.clkr = {
3303*d9db07f0SSricharan R 		.enable_reg = 0x6832c,
3304*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3305*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3306*d9db07f0SSricharan R 			.name = "gcc_port4_mac_clk",
3307*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3308*d9db07f0SSricharan R 					&nss_ppe_clk_src.clkr.hw },
3309*d9db07f0SSricharan R 			.num_parents = 1,
3310*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3311*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3312*d9db07f0SSricharan R 		},
3313*d9db07f0SSricharan R 	},
3314*d9db07f0SSricharan R };
3315*d9db07f0SSricharan R 
3316*d9db07f0SSricharan R static struct clk_branch gcc_port5_mac_clk = {
3317*d9db07f0SSricharan R 	.halt_reg = 0x68330,
3318*d9db07f0SSricharan R 	.clkr = {
3319*d9db07f0SSricharan R 		.enable_reg = 0x68330,
3320*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3321*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3322*d9db07f0SSricharan R 			.name = "gcc_port5_mac_clk",
3323*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3324*d9db07f0SSricharan R 					&nss_ppe_clk_src.clkr.hw },
3325*d9db07f0SSricharan R 			.num_parents = 1,
3326*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3327*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3328*d9db07f0SSricharan R 		},
3329*d9db07f0SSricharan R 	},
3330*d9db07f0SSricharan R };
3331*d9db07f0SSricharan R 
3332*d9db07f0SSricharan R static struct clk_branch gcc_ubi0_ahb_clk = {
3333*d9db07f0SSricharan R 	.halt_reg = 0x6820C,
3334*d9db07f0SSricharan R 	.halt_check = BRANCH_HALT_DELAY,
3335*d9db07f0SSricharan R 	.clkr = {
3336*d9db07f0SSricharan R 		.enable_reg = 0x6820C,
3337*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3338*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3339*d9db07f0SSricharan R 			.name = "gcc_ubi0_ahb_clk",
3340*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3341*d9db07f0SSricharan R 					&nss_ce_clk_src.clkr.hw },
3342*d9db07f0SSricharan R 			.num_parents = 1,
3343*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3344*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3345*d9db07f0SSricharan R 		},
3346*d9db07f0SSricharan R 	},
3347*d9db07f0SSricharan R };
3348*d9db07f0SSricharan R 
3349*d9db07f0SSricharan R static struct clk_branch gcc_ubi0_axi_clk = {
3350*d9db07f0SSricharan R 	.halt_reg = 0x68200,
3351*d9db07f0SSricharan R 	.halt_check = BRANCH_HALT_DELAY,
3352*d9db07f0SSricharan R 	.clkr = {
3353*d9db07f0SSricharan R 		.enable_reg = 0x68200,
3354*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3355*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3356*d9db07f0SSricharan R 			.name = "gcc_ubi0_axi_clk",
3357*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3358*d9db07f0SSricharan R 					&ubi32_mem_noc_bfdcd_clk_src.clkr.hw },
3359*d9db07f0SSricharan R 			.num_parents = 1,
3360*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3361*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3362*d9db07f0SSricharan R 		},
3363*d9db07f0SSricharan R 	},
3364*d9db07f0SSricharan R };
3365*d9db07f0SSricharan R 
3366*d9db07f0SSricharan R static struct clk_branch gcc_ubi0_nc_axi_clk = {
3367*d9db07f0SSricharan R 	.halt_reg = 0x68204,
3368*d9db07f0SSricharan R 	.halt_check = BRANCH_HALT_DELAY,
3369*d9db07f0SSricharan R 	.clkr = {
3370*d9db07f0SSricharan R 		.enable_reg = 0x68204,
3371*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3372*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3373*d9db07f0SSricharan R 			.name = "gcc_ubi0_nc_axi_clk",
3374*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3375*d9db07f0SSricharan R 					&snoc_nssnoc_bfdcd_clk_src.clkr.hw },
3376*d9db07f0SSricharan R 			.num_parents = 1,
3377*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3378*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3379*d9db07f0SSricharan R 		},
3380*d9db07f0SSricharan R 	},
3381*d9db07f0SSricharan R };
3382*d9db07f0SSricharan R 
3383*d9db07f0SSricharan R static struct clk_branch gcc_ubi0_core_clk = {
3384*d9db07f0SSricharan R 	.halt_reg = 0x68210,
3385*d9db07f0SSricharan R 	.halt_check = BRANCH_HALT_DELAY,
3386*d9db07f0SSricharan R 	.clkr = {
3387*d9db07f0SSricharan R 		.enable_reg = 0x68210,
3388*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3389*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3390*d9db07f0SSricharan R 			.name = "gcc_ubi0_core_clk",
3391*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3392*d9db07f0SSricharan R 					&nss_ubi0_div_clk_src.clkr.hw },
3393*d9db07f0SSricharan R 			.num_parents = 1,
3394*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3395*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3396*d9db07f0SSricharan R 		},
3397*d9db07f0SSricharan R 	},
3398*d9db07f0SSricharan R };
3399*d9db07f0SSricharan R 
3400*d9db07f0SSricharan R static struct clk_branch gcc_pcie0_ahb_clk = {
3401*d9db07f0SSricharan R 	.halt_reg = 0x75010,
3402*d9db07f0SSricharan R 	.clkr = {
3403*d9db07f0SSricharan R 		.enable_reg = 0x75010,
3404*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3405*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3406*d9db07f0SSricharan R 			.name = "gcc_pcie0_ahb_clk",
3407*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3408*d9db07f0SSricharan R 					&pcnoc_bfdcd_clk_src.clkr.hw },
3409*d9db07f0SSricharan R 			.num_parents = 1,
3410*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3411*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3412*d9db07f0SSricharan R 		},
3413*d9db07f0SSricharan R 	},
3414*d9db07f0SSricharan R };
3415*d9db07f0SSricharan R 
3416*d9db07f0SSricharan R static struct clk_branch gcc_pcie0_aux_clk = {
3417*d9db07f0SSricharan R 	.halt_reg = 0x75014,
3418*d9db07f0SSricharan R 	.clkr = {
3419*d9db07f0SSricharan R 		.enable_reg = 0x75014,
3420*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3421*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3422*d9db07f0SSricharan R 			.name = "gcc_pcie0_aux_clk",
3423*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3424*d9db07f0SSricharan R 					&pcie0_aux_clk_src.clkr.hw },
3425*d9db07f0SSricharan R 			.num_parents = 1,
3426*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3427*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3428*d9db07f0SSricharan R 		},
3429*d9db07f0SSricharan R 	},
3430*d9db07f0SSricharan R };
3431*d9db07f0SSricharan R 
3432*d9db07f0SSricharan R static struct clk_branch gcc_pcie0_axi_m_clk = {
3433*d9db07f0SSricharan R 	.halt_reg = 0x75008,
3434*d9db07f0SSricharan R 	.clkr = {
3435*d9db07f0SSricharan R 		.enable_reg = 0x75008,
3436*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3437*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3438*d9db07f0SSricharan R 			.name = "gcc_pcie0_axi_m_clk",
3439*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3440*d9db07f0SSricharan R 					&pcie0_axi_clk_src.clkr.hw },
3441*d9db07f0SSricharan R 			.num_parents = 1,
3442*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3443*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3444*d9db07f0SSricharan R 		},
3445*d9db07f0SSricharan R 	},
3446*d9db07f0SSricharan R };
3447*d9db07f0SSricharan R 
3448*d9db07f0SSricharan R static struct clk_branch gcc_pcie0_axi_s_clk = {
3449*d9db07f0SSricharan R 	.halt_reg = 0x7500c,
3450*d9db07f0SSricharan R 	.clkr = {
3451*d9db07f0SSricharan R 		.enable_reg = 0x7500c,
3452*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3453*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3454*d9db07f0SSricharan R 			.name = "gcc_pcie0_axi_s_clk",
3455*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3456*d9db07f0SSricharan R 					&pcie0_axi_clk_src.clkr.hw },
3457*d9db07f0SSricharan R 			.num_parents = 1,
3458*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3459*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3460*d9db07f0SSricharan R 		},
3461*d9db07f0SSricharan R 	},
3462*d9db07f0SSricharan R };
3463*d9db07f0SSricharan R 
3464*d9db07f0SSricharan R static struct clk_branch gcc_sys_noc_pcie0_axi_clk = {
3465*d9db07f0SSricharan R 	.halt_reg = 0x26048,
3466*d9db07f0SSricharan R 	.clkr = {
3467*d9db07f0SSricharan R 		.enable_reg = 0x26048,
3468*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3469*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3470*d9db07f0SSricharan R 			.name = "gcc_sys_noc_pcie0_axi_clk",
3471*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3472*d9db07f0SSricharan R 					&pcie0_axi_clk_src.clkr.hw },
3473*d9db07f0SSricharan R 			.num_parents = 1,
3474*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3475*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3476*d9db07f0SSricharan R 		},
3477*d9db07f0SSricharan R 	},
3478*d9db07f0SSricharan R };
3479*d9db07f0SSricharan R 
3480*d9db07f0SSricharan R static struct clk_branch gcc_pcie0_pipe_clk = {
3481*d9db07f0SSricharan R 	.halt_reg = 0x75018,
3482*d9db07f0SSricharan R 	.halt_check = BRANCH_HALT_DELAY,
3483*d9db07f0SSricharan R 	.clkr = {
3484*d9db07f0SSricharan R 		.enable_reg = 0x75018,
3485*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3486*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3487*d9db07f0SSricharan R 			.name = "gcc_pcie0_pipe_clk",
3488*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3489*d9db07f0SSricharan R 					&pcie0_pipe_clk_src.clkr.hw },
3490*d9db07f0SSricharan R 			.num_parents = 1,
3491*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3492*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3493*d9db07f0SSricharan R 		},
3494*d9db07f0SSricharan R 	},
3495*d9db07f0SSricharan R };
3496*d9db07f0SSricharan R 
3497*d9db07f0SSricharan R static struct clk_branch gcc_prng_ahb_clk = {
3498*d9db07f0SSricharan R 	.halt_reg = 0x13004,
3499*d9db07f0SSricharan R 	.halt_check = BRANCH_HALT_VOTED,
3500*d9db07f0SSricharan R 	.clkr = {
3501*d9db07f0SSricharan R 		.enable_reg = 0x0b004,
3502*d9db07f0SSricharan R 		.enable_mask = BIT(8),
3503*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3504*d9db07f0SSricharan R 			.name = "gcc_prng_ahb_clk",
3505*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3506*d9db07f0SSricharan R 					&pcnoc_bfdcd_clk_src.clkr.hw },
3507*d9db07f0SSricharan R 			.num_parents = 1,
3508*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3509*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3510*d9db07f0SSricharan R 		},
3511*d9db07f0SSricharan R 	},
3512*d9db07f0SSricharan R };
3513*d9db07f0SSricharan R 
3514*d9db07f0SSricharan R static struct clk_branch gcc_qdss_dap_clk = {
3515*d9db07f0SSricharan R 	.halt_reg = 0x29084,
3516*d9db07f0SSricharan R 	.clkr = {
3517*d9db07f0SSricharan R 		.enable_reg = 0x29084,
3518*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3519*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3520*d9db07f0SSricharan R 			.name = "gcc_qdss_dap_clk",
3521*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3522*d9db07f0SSricharan R 					&qdss_dap_sync_clk_src.hw },
3523*d9db07f0SSricharan R 			.num_parents = 1,
3524*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3525*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3526*d9db07f0SSricharan R 		},
3527*d9db07f0SSricharan R 	},
3528*d9db07f0SSricharan R };
3529*d9db07f0SSricharan R 
3530*d9db07f0SSricharan R static struct clk_branch gcc_qpic_ahb_clk = {
3531*d9db07f0SSricharan R 	.halt_reg = 0x57024,
3532*d9db07f0SSricharan R 	.clkr = {
3533*d9db07f0SSricharan R 		.enable_reg = 0x57024,
3534*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3535*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3536*d9db07f0SSricharan R 			.name = "gcc_qpic_ahb_clk",
3537*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3538*d9db07f0SSricharan R 					&pcnoc_bfdcd_clk_src.clkr.hw },
3539*d9db07f0SSricharan R 			.num_parents = 1,
3540*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3541*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3542*d9db07f0SSricharan R 		},
3543*d9db07f0SSricharan R 	},
3544*d9db07f0SSricharan R };
3545*d9db07f0SSricharan R 
3546*d9db07f0SSricharan R static struct clk_branch gcc_qpic_clk = {
3547*d9db07f0SSricharan R 	.halt_reg = 0x57020,
3548*d9db07f0SSricharan R 	.clkr = {
3549*d9db07f0SSricharan R 		.enable_reg = 0x57020,
3550*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3551*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3552*d9db07f0SSricharan R 			.name = "gcc_qpic_clk",
3553*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3554*d9db07f0SSricharan R 					&pcnoc_bfdcd_clk_src.clkr.hw },
3555*d9db07f0SSricharan R 			.num_parents = 1,
3556*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3557*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3558*d9db07f0SSricharan R 		},
3559*d9db07f0SSricharan R 	},
3560*d9db07f0SSricharan R };
3561*d9db07f0SSricharan R 
3562*d9db07f0SSricharan R static struct clk_branch gcc_sdcc1_ahb_clk = {
3563*d9db07f0SSricharan R 	.halt_reg = 0x4201c,
3564*d9db07f0SSricharan R 	.clkr = {
3565*d9db07f0SSricharan R 		.enable_reg = 0x4201c,
3566*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3567*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3568*d9db07f0SSricharan R 			.name = "gcc_sdcc1_ahb_clk",
3569*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3570*d9db07f0SSricharan R 					&pcnoc_bfdcd_clk_src.clkr.hw },
3571*d9db07f0SSricharan R 			.num_parents = 1,
3572*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3573*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3574*d9db07f0SSricharan R 		},
3575*d9db07f0SSricharan R 	},
3576*d9db07f0SSricharan R };
3577*d9db07f0SSricharan R 
3578*d9db07f0SSricharan R static struct clk_branch gcc_sdcc1_apps_clk = {
3579*d9db07f0SSricharan R 	.halt_reg = 0x42018,
3580*d9db07f0SSricharan R 	.clkr = {
3581*d9db07f0SSricharan R 		.enable_reg = 0x42018,
3582*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3583*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3584*d9db07f0SSricharan R 			.name = "gcc_sdcc1_apps_clk",
3585*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3586*d9db07f0SSricharan R 					&sdcc1_apps_clk_src.clkr.hw },
3587*d9db07f0SSricharan R 			.num_parents = 1,
3588*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3589*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3590*d9db07f0SSricharan R 		},
3591*d9db07f0SSricharan R 	},
3592*d9db07f0SSricharan R };
3593*d9db07f0SSricharan R 
3594*d9db07f0SSricharan R static struct clk_branch gcc_uniphy0_ahb_clk = {
3595*d9db07f0SSricharan R 	.halt_reg = 0x56008,
3596*d9db07f0SSricharan R 	.clkr = {
3597*d9db07f0SSricharan R 		.enable_reg = 0x56008,
3598*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3599*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3600*d9db07f0SSricharan R 			.name = "gcc_uniphy0_ahb_clk",
3601*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3602*d9db07f0SSricharan R 					&pcnoc_bfdcd_clk_src.clkr.hw },
3603*d9db07f0SSricharan R 			.num_parents = 1,
3604*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3605*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3606*d9db07f0SSricharan R 		},
3607*d9db07f0SSricharan R 	},
3608*d9db07f0SSricharan R };
3609*d9db07f0SSricharan R 
3610*d9db07f0SSricharan R static struct clk_branch gcc_uniphy0_port1_rx_clk = {
3611*d9db07f0SSricharan R 	.halt_reg = 0x56010,
3612*d9db07f0SSricharan R 	.clkr = {
3613*d9db07f0SSricharan R 		.enable_reg = 0x56010,
3614*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3615*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3616*d9db07f0SSricharan R 			.name = "gcc_uniphy0_port1_rx_clk",
3617*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3618*d9db07f0SSricharan R 					&nss_port1_rx_div_clk_src.clkr.hw },
3619*d9db07f0SSricharan R 			.num_parents = 1,
3620*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3621*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3622*d9db07f0SSricharan R 		},
3623*d9db07f0SSricharan R 	},
3624*d9db07f0SSricharan R };
3625*d9db07f0SSricharan R 
3626*d9db07f0SSricharan R static struct clk_branch gcc_uniphy0_port1_tx_clk = {
3627*d9db07f0SSricharan R 	.halt_reg = 0x56014,
3628*d9db07f0SSricharan R 	.clkr = {
3629*d9db07f0SSricharan R 		.enable_reg = 0x56014,
3630*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3631*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3632*d9db07f0SSricharan R 			.name = "gcc_uniphy0_port1_tx_clk",
3633*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3634*d9db07f0SSricharan R 					&nss_port1_tx_div_clk_src.clkr.hw },
3635*d9db07f0SSricharan R 			.num_parents = 1,
3636*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3637*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3638*d9db07f0SSricharan R 		},
3639*d9db07f0SSricharan R 	},
3640*d9db07f0SSricharan R };
3641*d9db07f0SSricharan R 
3642*d9db07f0SSricharan R static struct clk_branch gcc_uniphy0_port2_rx_clk = {
3643*d9db07f0SSricharan R 	.halt_reg = 0x56018,
3644*d9db07f0SSricharan R 	.clkr = {
3645*d9db07f0SSricharan R 		.enable_reg = 0x56018,
3646*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3647*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3648*d9db07f0SSricharan R 			.name = "gcc_uniphy0_port2_rx_clk",
3649*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3650*d9db07f0SSricharan R 					&nss_port2_rx_div_clk_src.clkr.hw },
3651*d9db07f0SSricharan R 			.num_parents = 1,
3652*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3653*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3654*d9db07f0SSricharan R 		},
3655*d9db07f0SSricharan R 	},
3656*d9db07f0SSricharan R };
3657*d9db07f0SSricharan R 
3658*d9db07f0SSricharan R static struct clk_branch gcc_uniphy0_port2_tx_clk = {
3659*d9db07f0SSricharan R 	.halt_reg = 0x5601c,
3660*d9db07f0SSricharan R 	.clkr = {
3661*d9db07f0SSricharan R 		.enable_reg = 0x5601c,
3662*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3663*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3664*d9db07f0SSricharan R 			.name = "gcc_uniphy0_port2_tx_clk",
3665*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3666*d9db07f0SSricharan R 					&nss_port2_tx_div_clk_src.clkr.hw },
3667*d9db07f0SSricharan R 			.num_parents = 1,
3668*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3669*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3670*d9db07f0SSricharan R 		},
3671*d9db07f0SSricharan R 	},
3672*d9db07f0SSricharan R };
3673*d9db07f0SSricharan R 
3674*d9db07f0SSricharan R static struct clk_branch gcc_uniphy0_port3_rx_clk = {
3675*d9db07f0SSricharan R 	.halt_reg = 0x56020,
3676*d9db07f0SSricharan R 	.clkr = {
3677*d9db07f0SSricharan R 		.enable_reg = 0x56020,
3678*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3679*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3680*d9db07f0SSricharan R 			.name = "gcc_uniphy0_port3_rx_clk",
3681*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3682*d9db07f0SSricharan R 					&nss_port3_rx_div_clk_src.clkr.hw },
3683*d9db07f0SSricharan R 			.num_parents = 1,
3684*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3685*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3686*d9db07f0SSricharan R 		},
3687*d9db07f0SSricharan R 	},
3688*d9db07f0SSricharan R };
3689*d9db07f0SSricharan R 
3690*d9db07f0SSricharan R static struct clk_branch gcc_uniphy0_port3_tx_clk = {
3691*d9db07f0SSricharan R 	.halt_reg = 0x56024,
3692*d9db07f0SSricharan R 	.clkr = {
3693*d9db07f0SSricharan R 		.enable_reg = 0x56024,
3694*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3695*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3696*d9db07f0SSricharan R 			.name = "gcc_uniphy0_port3_tx_clk",
3697*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3698*d9db07f0SSricharan R 					&nss_port3_tx_div_clk_src.clkr.hw },
3699*d9db07f0SSricharan R 			.num_parents = 1,
3700*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3701*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3702*d9db07f0SSricharan R 		},
3703*d9db07f0SSricharan R 	},
3704*d9db07f0SSricharan R };
3705*d9db07f0SSricharan R 
3706*d9db07f0SSricharan R static struct clk_branch gcc_uniphy0_port4_rx_clk = {
3707*d9db07f0SSricharan R 	.halt_reg = 0x56028,
3708*d9db07f0SSricharan R 	.clkr = {
3709*d9db07f0SSricharan R 		.enable_reg = 0x56028,
3710*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3711*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3712*d9db07f0SSricharan R 			.name = "gcc_uniphy0_port4_rx_clk",
3713*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3714*d9db07f0SSricharan R 					&nss_port4_rx_div_clk_src.clkr.hw },
3715*d9db07f0SSricharan R 			.num_parents = 1,
3716*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3717*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3718*d9db07f0SSricharan R 		},
3719*d9db07f0SSricharan R 	},
3720*d9db07f0SSricharan R };
3721*d9db07f0SSricharan R 
3722*d9db07f0SSricharan R static struct clk_branch gcc_uniphy0_port4_tx_clk = {
3723*d9db07f0SSricharan R 	.halt_reg = 0x5602c,
3724*d9db07f0SSricharan R 	.clkr = {
3725*d9db07f0SSricharan R 		.enable_reg = 0x5602c,
3726*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3727*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3728*d9db07f0SSricharan R 			.name = "gcc_uniphy0_port4_tx_clk",
3729*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3730*d9db07f0SSricharan R 					&nss_port4_tx_div_clk_src.clkr.hw },
3731*d9db07f0SSricharan R 			.num_parents = 1,
3732*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3733*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3734*d9db07f0SSricharan R 		},
3735*d9db07f0SSricharan R 	},
3736*d9db07f0SSricharan R };
3737*d9db07f0SSricharan R 
3738*d9db07f0SSricharan R static struct clk_branch gcc_uniphy0_port5_rx_clk = {
3739*d9db07f0SSricharan R 	.halt_reg = 0x56030,
3740*d9db07f0SSricharan R 	.clkr = {
3741*d9db07f0SSricharan R 		.enable_reg = 0x56030,
3742*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3743*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3744*d9db07f0SSricharan R 			.name = "gcc_uniphy0_port5_rx_clk",
3745*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3746*d9db07f0SSricharan R 					&nss_port5_rx_div_clk_src.clkr.hw },
3747*d9db07f0SSricharan R 			.num_parents = 1,
3748*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3749*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3750*d9db07f0SSricharan R 		},
3751*d9db07f0SSricharan R 	},
3752*d9db07f0SSricharan R };
3753*d9db07f0SSricharan R 
3754*d9db07f0SSricharan R static struct clk_branch gcc_uniphy0_port5_tx_clk = {
3755*d9db07f0SSricharan R 	.halt_reg = 0x56034,
3756*d9db07f0SSricharan R 	.clkr = {
3757*d9db07f0SSricharan R 		.enable_reg = 0x56034,
3758*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3759*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3760*d9db07f0SSricharan R 			.name = "gcc_uniphy0_port5_tx_clk",
3761*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3762*d9db07f0SSricharan R 					&nss_port5_tx_div_clk_src.clkr.hw },
3763*d9db07f0SSricharan R 			.num_parents = 1,
3764*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3765*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3766*d9db07f0SSricharan R 		},
3767*d9db07f0SSricharan R 	},
3768*d9db07f0SSricharan R };
3769*d9db07f0SSricharan R 
3770*d9db07f0SSricharan R static struct clk_branch gcc_uniphy0_sys_clk = {
3771*d9db07f0SSricharan R 	.halt_reg = 0x5600C,
3772*d9db07f0SSricharan R 	.clkr = {
3773*d9db07f0SSricharan R 		.enable_reg = 0x5600C,
3774*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3775*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3776*d9db07f0SSricharan R 			.name = "gcc_uniphy0_sys_clk",
3777*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3778*d9db07f0SSricharan R 					&gcc_xo_clk_src.clkr.hw },
3779*d9db07f0SSricharan R 			.num_parents = 1,
3780*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3781*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3782*d9db07f0SSricharan R 		},
3783*d9db07f0SSricharan R 	},
3784*d9db07f0SSricharan R };
3785*d9db07f0SSricharan R 
3786*d9db07f0SSricharan R static struct clk_branch gcc_uniphy1_ahb_clk = {
3787*d9db07f0SSricharan R 	.halt_reg = 0x56108,
3788*d9db07f0SSricharan R 	.clkr = {
3789*d9db07f0SSricharan R 		.enable_reg = 0x56108,
3790*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3791*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3792*d9db07f0SSricharan R 			.name = "gcc_uniphy1_ahb_clk",
3793*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3794*d9db07f0SSricharan R 					&pcnoc_bfdcd_clk_src.clkr.hw },
3795*d9db07f0SSricharan R 			.num_parents = 1,
3796*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3797*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3798*d9db07f0SSricharan R 		},
3799*d9db07f0SSricharan R 	},
3800*d9db07f0SSricharan R };
3801*d9db07f0SSricharan R 
3802*d9db07f0SSricharan R static struct clk_branch gcc_uniphy1_port5_rx_clk = {
3803*d9db07f0SSricharan R 	.halt_reg = 0x56110,
3804*d9db07f0SSricharan R 	.clkr = {
3805*d9db07f0SSricharan R 		.enable_reg = 0x56110,
3806*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3807*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3808*d9db07f0SSricharan R 			.name = "gcc_uniphy1_port5_rx_clk",
3809*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3810*d9db07f0SSricharan R 					&nss_port5_rx_div_clk_src.clkr.hw },
3811*d9db07f0SSricharan R 			.num_parents = 1,
3812*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3813*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3814*d9db07f0SSricharan R 		},
3815*d9db07f0SSricharan R 	},
3816*d9db07f0SSricharan R };
3817*d9db07f0SSricharan R 
3818*d9db07f0SSricharan R static struct clk_branch gcc_uniphy1_port5_tx_clk = {
3819*d9db07f0SSricharan R 	.halt_reg = 0x56114,
3820*d9db07f0SSricharan R 	.clkr = {
3821*d9db07f0SSricharan R 		.enable_reg = 0x56114,
3822*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3823*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3824*d9db07f0SSricharan R 			.name = "gcc_uniphy1_port5_tx_clk",
3825*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3826*d9db07f0SSricharan R 					&nss_port5_tx_div_clk_src.clkr.hw },
3827*d9db07f0SSricharan R 			.num_parents = 1,
3828*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3829*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3830*d9db07f0SSricharan R 		},
3831*d9db07f0SSricharan R 	},
3832*d9db07f0SSricharan R };
3833*d9db07f0SSricharan R 
3834*d9db07f0SSricharan R static struct clk_branch gcc_uniphy1_sys_clk = {
3835*d9db07f0SSricharan R 	.halt_reg = 0x5610C,
3836*d9db07f0SSricharan R 	.clkr = {
3837*d9db07f0SSricharan R 		.enable_reg = 0x5610C,
3838*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3839*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3840*d9db07f0SSricharan R 			.name = "gcc_uniphy1_sys_clk",
3841*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3842*d9db07f0SSricharan R 					&gcc_xo_clk_src.clkr.hw },
3843*d9db07f0SSricharan R 			.num_parents = 1,
3844*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3845*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3846*d9db07f0SSricharan R 		},
3847*d9db07f0SSricharan R 	},
3848*d9db07f0SSricharan R };
3849*d9db07f0SSricharan R 
3850*d9db07f0SSricharan R static struct clk_branch gcc_usb0_aux_clk = {
3851*d9db07f0SSricharan R 	.halt_reg = 0x3e044,
3852*d9db07f0SSricharan R 	.clkr = {
3853*d9db07f0SSricharan R 		.enable_reg = 0x3e044,
3854*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3855*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3856*d9db07f0SSricharan R 			.name = "gcc_usb0_aux_clk",
3857*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3858*d9db07f0SSricharan R 					&usb0_aux_clk_src.clkr.hw },
3859*d9db07f0SSricharan R 			.num_parents = 1,
3860*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3861*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3862*d9db07f0SSricharan R 		},
3863*d9db07f0SSricharan R 	},
3864*d9db07f0SSricharan R };
3865*d9db07f0SSricharan R 
3866*d9db07f0SSricharan R static struct clk_branch gcc_usb0_master_clk = {
3867*d9db07f0SSricharan R 	.halt_reg = 0x3e000,
3868*d9db07f0SSricharan R 	.clkr = {
3869*d9db07f0SSricharan R 		.enable_reg = 0x3e000,
3870*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3871*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3872*d9db07f0SSricharan R 			.name = "gcc_usb0_master_clk",
3873*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3874*d9db07f0SSricharan R 					&usb0_master_clk_src.clkr.hw },
3875*d9db07f0SSricharan R 			.num_parents = 1,
3876*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3877*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3878*d9db07f0SSricharan R 		},
3879*d9db07f0SSricharan R 	},
3880*d9db07f0SSricharan R };
3881*d9db07f0SSricharan R 
3882*d9db07f0SSricharan R static struct clk_branch gcc_snoc_bus_timeout2_ahb_clk = {
3883*d9db07f0SSricharan R 	.halt_reg = 0x47014,
3884*d9db07f0SSricharan R 	.clkr = {
3885*d9db07f0SSricharan R 		.enable_reg = 0x47014,
3886*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3887*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3888*d9db07f0SSricharan R 			.name = "gcc_snoc_bus_timeout2_ahb_clk",
3889*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3890*d9db07f0SSricharan R 					&usb0_master_clk_src.clkr.hw },
3891*d9db07f0SSricharan R 			.num_parents = 1,
3892*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3893*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3894*d9db07f0SSricharan R 		},
3895*d9db07f0SSricharan R 	},
3896*d9db07f0SSricharan R };
3897*d9db07f0SSricharan R 
3898*d9db07f0SSricharan R static struct clk_rcg2 pcie0_rchng_clk_src = {
3899*d9db07f0SSricharan R 	.cmd_rcgr = 0x75070,
3900*d9db07f0SSricharan R 	.freq_tbl = ftbl_pcie_rchng_clk_src,
3901*d9db07f0SSricharan R 	.hid_width = 5,
3902*d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_map,
3903*d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
3904*d9db07f0SSricharan R 		.name = "pcie0_rchng_clk_src",
3905*d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0,
3906*d9db07f0SSricharan R 		.num_parents = 2,
3907*d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
3908*d9db07f0SSricharan R 	},
3909*d9db07f0SSricharan R };
3910*d9db07f0SSricharan R 
3911*d9db07f0SSricharan R static struct clk_branch gcc_pcie0_rchng_clk = {
3912*d9db07f0SSricharan R 	.halt_reg = 0x75070,
3913*d9db07f0SSricharan R 	.clkr = {
3914*d9db07f0SSricharan R 		.enable_reg = 0x75070,
3915*d9db07f0SSricharan R 		.enable_mask = BIT(1),
3916*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3917*d9db07f0SSricharan R 			.name = "gcc_pcie0_rchng_clk",
3918*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3919*d9db07f0SSricharan R 					&pcie0_rchng_clk_src.clkr.hw },
3920*d9db07f0SSricharan R 			.num_parents = 1,
3921*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3922*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3923*d9db07f0SSricharan R 		},
3924*d9db07f0SSricharan R 	},
3925*d9db07f0SSricharan R };
3926*d9db07f0SSricharan R 
3927*d9db07f0SSricharan R static struct clk_branch gcc_pcie0_axi_s_bridge_clk = {
3928*d9db07f0SSricharan R 	.halt_reg = 0x75048,
3929*d9db07f0SSricharan R 	.clkr = {
3930*d9db07f0SSricharan R 		.enable_reg = 0x75048,
3931*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3932*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3933*d9db07f0SSricharan R 			.name = "gcc_pcie0_axi_s_bridge_clk",
3934*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3935*d9db07f0SSricharan R 					&pcie0_axi_clk_src.clkr.hw },
3936*d9db07f0SSricharan R 			.num_parents = 1,
3937*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3938*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3939*d9db07f0SSricharan R 		},
3940*d9db07f0SSricharan R 	},
3941*d9db07f0SSricharan R };
3942*d9db07f0SSricharan R 
3943*d9db07f0SSricharan R static struct clk_branch gcc_sys_noc_usb0_axi_clk = {
3944*d9db07f0SSricharan R 	.halt_reg = 0x26040,
3945*d9db07f0SSricharan R 	.clkr = {
3946*d9db07f0SSricharan R 		.enable_reg = 0x26040,
3947*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3948*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3949*d9db07f0SSricharan R 			.name = "gcc_sys_noc_usb0_axi_clk",
3950*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3951*d9db07f0SSricharan R 					&usb0_master_clk_src.clkr.hw },
3952*d9db07f0SSricharan R 			.num_parents = 1,
3953*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3954*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3955*d9db07f0SSricharan R 		},
3956*d9db07f0SSricharan R 	},
3957*d9db07f0SSricharan R };
3958*d9db07f0SSricharan R 
3959*d9db07f0SSricharan R static struct clk_branch gcc_usb0_mock_utmi_clk = {
3960*d9db07f0SSricharan R 	.halt_reg = 0x3e008,
3961*d9db07f0SSricharan R 	.clkr = {
3962*d9db07f0SSricharan R 		.enable_reg = 0x3e008,
3963*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3964*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3965*d9db07f0SSricharan R 			.name = "gcc_usb0_mock_utmi_clk",
3966*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3967*d9db07f0SSricharan R 					&usb0_mock_utmi_clk_src.clkr.hw },
3968*d9db07f0SSricharan R 			.num_parents = 1,
3969*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3970*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3971*d9db07f0SSricharan R 		},
3972*d9db07f0SSricharan R 	},
3973*d9db07f0SSricharan R };
3974*d9db07f0SSricharan R 
3975*d9db07f0SSricharan R static struct clk_branch gcc_usb0_phy_cfg_ahb_clk = {
3976*d9db07f0SSricharan R 	.halt_reg = 0x3e080,
3977*d9db07f0SSricharan R 	.clkr = {
3978*d9db07f0SSricharan R 		.enable_reg = 0x3e080,
3979*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3980*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3981*d9db07f0SSricharan R 			.name = "gcc_usb0_phy_cfg_ahb_clk",
3982*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3983*d9db07f0SSricharan R 					&pcnoc_bfdcd_clk_src.clkr.hw },
3984*d9db07f0SSricharan R 			.num_parents = 1,
3985*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3986*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3987*d9db07f0SSricharan R 		},
3988*d9db07f0SSricharan R 	},
3989*d9db07f0SSricharan R };
3990*d9db07f0SSricharan R 
3991*d9db07f0SSricharan R static struct clk_branch gcc_usb0_pipe_clk = {
3992*d9db07f0SSricharan R 	.halt_reg = 0x3e040,
3993*d9db07f0SSricharan R 	.halt_check = BRANCH_HALT_DELAY,
3994*d9db07f0SSricharan R 	.clkr = {
3995*d9db07f0SSricharan R 		.enable_reg = 0x3e040,
3996*d9db07f0SSricharan R 		.enable_mask = BIT(0),
3997*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3998*d9db07f0SSricharan R 			.name = "gcc_usb0_pipe_clk",
3999*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
4000*d9db07f0SSricharan R 					&usb0_pipe_clk_src.clkr.hw },
4001*d9db07f0SSricharan R 			.num_parents = 1,
4002*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
4003*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
4004*d9db07f0SSricharan R 		},
4005*d9db07f0SSricharan R 	},
4006*d9db07f0SSricharan R };
4007*d9db07f0SSricharan R 
4008*d9db07f0SSricharan R static struct clk_branch gcc_usb0_sleep_clk = {
4009*d9db07f0SSricharan R 	.halt_reg = 0x3e004,
4010*d9db07f0SSricharan R 	.clkr = {
4011*d9db07f0SSricharan R 		.enable_reg = 0x3e004,
4012*d9db07f0SSricharan R 		.enable_mask = BIT(0),
4013*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
4014*d9db07f0SSricharan R 			.name = "gcc_usb0_sleep_clk",
4015*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
4016*d9db07f0SSricharan R 					&gcc_sleep_clk_src.clkr.hw },
4017*d9db07f0SSricharan R 			.num_parents = 1,
4018*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
4019*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
4020*d9db07f0SSricharan R 		},
4021*d9db07f0SSricharan R 	},
4022*d9db07f0SSricharan R };
4023*d9db07f0SSricharan R 
4024*d9db07f0SSricharan R static struct clk_branch gcc_usb1_master_clk = {
4025*d9db07f0SSricharan R 	.halt_reg = 0x3f000,
4026*d9db07f0SSricharan R 	.clkr = {
4027*d9db07f0SSricharan R 		.enable_reg = 0x3f000,
4028*d9db07f0SSricharan R 		.enable_mask = BIT(0),
4029*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
4030*d9db07f0SSricharan R 			.name = "gcc_usb1_master_clk",
4031*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
4032*d9db07f0SSricharan R 					&pcnoc_bfdcd_clk_src.clkr.hw },
4033*d9db07f0SSricharan R 			.num_parents = 1,
4034*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
4035*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
4036*d9db07f0SSricharan R 		},
4037*d9db07f0SSricharan R 	},
4038*d9db07f0SSricharan R };
4039*d9db07f0SSricharan R 
4040*d9db07f0SSricharan R static struct clk_branch gcc_usb1_mock_utmi_clk = {
4041*d9db07f0SSricharan R 	.halt_reg = 0x3f008,
4042*d9db07f0SSricharan R 	.clkr = {
4043*d9db07f0SSricharan R 		.enable_reg = 0x3f008,
4044*d9db07f0SSricharan R 		.enable_mask = BIT(0),
4045*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
4046*d9db07f0SSricharan R 			.name = "gcc_usb1_mock_utmi_clk",
4047*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
4048*d9db07f0SSricharan R 					&usb1_mock_utmi_clk_src.clkr.hw },
4049*d9db07f0SSricharan R 			.num_parents = 1,
4050*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
4051*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
4052*d9db07f0SSricharan R 		},
4053*d9db07f0SSricharan R 	},
4054*d9db07f0SSricharan R };
4055*d9db07f0SSricharan R 
4056*d9db07f0SSricharan R static struct clk_branch gcc_usb1_phy_cfg_ahb_clk = {
4057*d9db07f0SSricharan R 	.halt_reg = 0x3f080,
4058*d9db07f0SSricharan R 	.clkr = {
4059*d9db07f0SSricharan R 		.enable_reg = 0x3f080,
4060*d9db07f0SSricharan R 		.enable_mask = BIT(0),
4061*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
4062*d9db07f0SSricharan R 			.name = "gcc_usb1_phy_cfg_ahb_clk",
4063*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
4064*d9db07f0SSricharan R 					&pcnoc_bfdcd_clk_src.clkr.hw },
4065*d9db07f0SSricharan R 			.num_parents = 1,
4066*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
4067*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
4068*d9db07f0SSricharan R 		},
4069*d9db07f0SSricharan R 	},
4070*d9db07f0SSricharan R };
4071*d9db07f0SSricharan R 
4072*d9db07f0SSricharan R static struct clk_branch gcc_usb1_sleep_clk = {
4073*d9db07f0SSricharan R 	.halt_reg = 0x3f004,
4074*d9db07f0SSricharan R 	.clkr = {
4075*d9db07f0SSricharan R 		.enable_reg = 0x3f004,
4076*d9db07f0SSricharan R 		.enable_mask = BIT(0),
4077*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
4078*d9db07f0SSricharan R 			.name = "gcc_usb1_sleep_clk",
4079*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
4080*d9db07f0SSricharan R 					&gcc_sleep_clk_src.clkr.hw },
4081*d9db07f0SSricharan R 			.num_parents = 1,
4082*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
4083*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
4084*d9db07f0SSricharan R 		},
4085*d9db07f0SSricharan R 	},
4086*d9db07f0SSricharan R };
4087*d9db07f0SSricharan R 
4088*d9db07f0SSricharan R static struct clk_branch gcc_cmn_12gpll_ahb_clk = {
4089*d9db07f0SSricharan R 	.halt_reg = 0x56308,
4090*d9db07f0SSricharan R 	.clkr = {
4091*d9db07f0SSricharan R 		.enable_reg = 0x56308,
4092*d9db07f0SSricharan R 		.enable_mask = BIT(0),
4093*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
4094*d9db07f0SSricharan R 			.name = "gcc_cmn_12gpll_ahb_clk",
4095*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
4096*d9db07f0SSricharan R 					&pcnoc_bfdcd_clk_src.clkr.hw },
4097*d9db07f0SSricharan R 			.num_parents = 1,
4098*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
4099*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
4100*d9db07f0SSricharan R 		},
4101*d9db07f0SSricharan R 	},
4102*d9db07f0SSricharan R };
4103*d9db07f0SSricharan R 
4104*d9db07f0SSricharan R static struct clk_branch gcc_cmn_12gpll_sys_clk = {
4105*d9db07f0SSricharan R 	.halt_reg = 0x5630c,
4106*d9db07f0SSricharan R 	.clkr = {
4107*d9db07f0SSricharan R 		.enable_reg = 0x5630c,
4108*d9db07f0SSricharan R 		.enable_mask = BIT(0),
4109*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
4110*d9db07f0SSricharan R 			.name = "gcc_cmn_12gpll_sys_clk",
4111*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
4112*d9db07f0SSricharan R 					&gcc_xo_clk_src.clkr.hw },
4113*d9db07f0SSricharan R 			.num_parents = 1,
4114*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
4115*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
4116*d9db07f0SSricharan R 		},
4117*d9db07f0SSricharan R 	},
4118*d9db07f0SSricharan R };
4119*d9db07f0SSricharan R 
4120*d9db07f0SSricharan R static struct clk_branch gcc_sdcc1_ice_core_clk = {
4121*d9db07f0SSricharan R 	.halt_reg = 0x5d014,
4122*d9db07f0SSricharan R 	.clkr = {
4123*d9db07f0SSricharan R 		.enable_reg = 0x5d014,
4124*d9db07f0SSricharan R 		.enable_mask = BIT(0),
4125*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
4126*d9db07f0SSricharan R 			.name = "gcc_sdcc1_ice_core_clk",
4127*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
4128*d9db07f0SSricharan R 					&sdcc1_ice_core_clk_src.clkr.hw },
4129*d9db07f0SSricharan R 			.num_parents = 1,
4130*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
4131*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
4132*d9db07f0SSricharan R 		},
4133*d9db07f0SSricharan R 	},
4134*d9db07f0SSricharan R };
4135*d9db07f0SSricharan R 
4136*d9db07f0SSricharan R static struct clk_branch gcc_dcc_clk = {
4137*d9db07f0SSricharan R 	.halt_reg = 0x77004,
4138*d9db07f0SSricharan R 	.clkr = {
4139*d9db07f0SSricharan R 		.enable_reg = 0x77004,
4140*d9db07f0SSricharan R 		.enable_mask = BIT(0),
4141*d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
4142*d9db07f0SSricharan R 			.name = "gcc_dcc_clk",
4143*d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
4144*d9db07f0SSricharan R 					&pcnoc_bfdcd_clk_src.clkr.hw },
4145*d9db07f0SSricharan R 			.num_parents = 1,
4146*d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
4147*d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
4148*d9db07f0SSricharan R 		},
4149*d9db07f0SSricharan R 	},
4150*d9db07f0SSricharan R };
4151*d9db07f0SSricharan R 
4152*d9db07f0SSricharan R static const struct alpha_pll_config ubi32_pll_config = {
4153*d9db07f0SSricharan R 	.l = 0x3e,
4154*d9db07f0SSricharan R 	.alpha = 0x57,
4155*d9db07f0SSricharan R 	.config_ctl_val = 0x240d6aa8,
4156*d9db07f0SSricharan R 	.config_ctl_hi_val = 0x3c2,
4157*d9db07f0SSricharan R 	.main_output_mask = BIT(0),
4158*d9db07f0SSricharan R 	.aux_output_mask = BIT(1),
4159*d9db07f0SSricharan R 	.pre_div_val = 0x0,
4160*d9db07f0SSricharan R 	.pre_div_mask = BIT(12),
4161*d9db07f0SSricharan R 	.post_div_val = 0x0,
4162*d9db07f0SSricharan R 	.post_div_mask = GENMASK(9, 8),
4163*d9db07f0SSricharan R };
4164*d9db07f0SSricharan R 
4165*d9db07f0SSricharan R static const struct alpha_pll_config nss_crypto_pll_config = {
4166*d9db07f0SSricharan R 	.l = 0x32,
4167*d9db07f0SSricharan R 	.alpha = 0x0,
4168*d9db07f0SSricharan R 	.alpha_hi = 0x0,
4169*d9db07f0SSricharan R 	.config_ctl_val = 0x4001055b,
4170*d9db07f0SSricharan R 	.main_output_mask = BIT(0),
4171*d9db07f0SSricharan R 	.pre_div_val = 0x0,
4172*d9db07f0SSricharan R 	.pre_div_mask = GENMASK(14, 12),
4173*d9db07f0SSricharan R 	.post_div_val = 0x1 << 8,
4174*d9db07f0SSricharan R 	.post_div_mask = GENMASK(11, 8),
4175*d9db07f0SSricharan R 	.vco_mask = GENMASK(21, 20),
4176*d9db07f0SSricharan R 	.vco_val = 0x0,
4177*d9db07f0SSricharan R 	.alpha_en_mask = BIT(24),
4178*d9db07f0SSricharan R };
4179*d9db07f0SSricharan R 
4180*d9db07f0SSricharan R static struct clk_hw *gcc_ipq6018_hws[] = {
4181*d9db07f0SSricharan R 	&gpll0_out_main_div2.hw,
4182*d9db07f0SSricharan R 	&gcc_xo_div4_clk_src.hw,
4183*d9db07f0SSricharan R 	&nss_ppe_cdiv_clk_src.hw,
4184*d9db07f0SSricharan R 	&gpll6_out_main_div2.hw,
4185*d9db07f0SSricharan R 	&qdss_dap_sync_clk_src.hw,
4186*d9db07f0SSricharan R 	&qdss_tsctr_div2_clk_src.hw,
4187*d9db07f0SSricharan R };
4188*d9db07f0SSricharan R 
4189*d9db07f0SSricharan R static struct clk_regmap *gcc_ipq6018_clks[] = {
4190*d9db07f0SSricharan R 	[GPLL0_MAIN] = &gpll0_main.clkr,
4191*d9db07f0SSricharan R 	[GPLL0] = &gpll0.clkr,
4192*d9db07f0SSricharan R 	[UBI32_PLL_MAIN] = &ubi32_pll_main.clkr,
4193*d9db07f0SSricharan R 	[UBI32_PLL] = &ubi32_pll.clkr,
4194*d9db07f0SSricharan R 	[GPLL6_MAIN] = &gpll6_main.clkr,
4195*d9db07f0SSricharan R 	[GPLL6] = &gpll6.clkr,
4196*d9db07f0SSricharan R 	[GPLL4_MAIN] = &gpll4_main.clkr,
4197*d9db07f0SSricharan R 	[GPLL4] = &gpll4.clkr,
4198*d9db07f0SSricharan R 	[PCNOC_BFDCD_CLK_SRC] = &pcnoc_bfdcd_clk_src.clkr,
4199*d9db07f0SSricharan R 	[GPLL2_MAIN] = &gpll2_main.clkr,
4200*d9db07f0SSricharan R 	[GPLL2] = &gpll2.clkr,
4201*d9db07f0SSricharan R 	[NSS_CRYPTO_PLL_MAIN] = &nss_crypto_pll_main.clkr,
4202*d9db07f0SSricharan R 	[NSS_CRYPTO_PLL] = &nss_crypto_pll.clkr,
4203*d9db07f0SSricharan R 	[QDSS_TSCTR_CLK_SRC] = &qdss_tsctr_clk_src.clkr,
4204*d9db07f0SSricharan R 	[QDSS_AT_CLK_SRC] = &qdss_at_clk_src.clkr,
4205*d9db07f0SSricharan R 	[NSS_PPE_CLK_SRC] = &nss_ppe_clk_src.clkr,
4206*d9db07f0SSricharan R 	[GCC_XO_CLK_SRC] = &gcc_xo_clk_src.clkr,
4207*d9db07f0SSricharan R 	[SYSTEM_NOC_BFDCD_CLK_SRC] = &system_noc_bfdcd_clk_src.clkr,
4208*d9db07f0SSricharan R 	[SNOC_NSSNOC_BFDCD_CLK_SRC] = &snoc_nssnoc_bfdcd_clk_src.clkr,
4209*d9db07f0SSricharan R 	[NSS_CE_CLK_SRC] = &nss_ce_clk_src.clkr,
4210*d9db07f0SSricharan R 	[GCC_SLEEP_CLK_SRC] = &gcc_sleep_clk_src.clkr,
4211*d9db07f0SSricharan R 	[APSS_AHB_CLK_SRC] = &apss_ahb_clk_src.clkr,
4212*d9db07f0SSricharan R 	[NSS_PORT5_RX_CLK_SRC] = &nss_port5_rx_clk_src.clkr,
4213*d9db07f0SSricharan R 	[NSS_PORT5_TX_CLK_SRC] = &nss_port5_tx_clk_src.clkr,
4214*d9db07f0SSricharan R 	[UBI32_MEM_NOC_BFDCD_CLK_SRC] = &ubi32_mem_noc_bfdcd_clk_src.clkr,
4215*d9db07f0SSricharan R 	[PCIE0_AXI_CLK_SRC] = &pcie0_axi_clk_src.clkr,
4216*d9db07f0SSricharan R 	[USB0_MASTER_CLK_SRC] = &usb0_master_clk_src.clkr,
4217*d9db07f0SSricharan R 	[APSS_AHB_POSTDIV_CLK_SRC] = &apss_ahb_postdiv_clk_src.clkr,
4218*d9db07f0SSricharan R 	[NSS_PORT1_RX_CLK_SRC] = &nss_port1_rx_clk_src.clkr,
4219*d9db07f0SSricharan R 	[NSS_PORT1_TX_CLK_SRC] = &nss_port1_tx_clk_src.clkr,
4220*d9db07f0SSricharan R 	[NSS_PORT2_RX_CLK_SRC] = &nss_port2_rx_clk_src.clkr,
4221*d9db07f0SSricharan R 	[NSS_PORT2_TX_CLK_SRC] = &nss_port2_tx_clk_src.clkr,
4222*d9db07f0SSricharan R 	[NSS_PORT3_RX_CLK_SRC] = &nss_port3_rx_clk_src.clkr,
4223*d9db07f0SSricharan R 	[NSS_PORT3_TX_CLK_SRC] = &nss_port3_tx_clk_src.clkr,
4224*d9db07f0SSricharan R 	[NSS_PORT4_RX_CLK_SRC] = &nss_port4_rx_clk_src.clkr,
4225*d9db07f0SSricharan R 	[NSS_PORT4_TX_CLK_SRC] = &nss_port4_tx_clk_src.clkr,
4226*d9db07f0SSricharan R 	[NSS_PORT5_RX_DIV_CLK_SRC] = &nss_port5_rx_div_clk_src.clkr,
4227*d9db07f0SSricharan R 	[NSS_PORT5_TX_DIV_CLK_SRC] = &nss_port5_tx_div_clk_src.clkr,
4228*d9db07f0SSricharan R 	[APSS_AXI_CLK_SRC] = &apss_axi_clk_src.clkr,
4229*d9db07f0SSricharan R 	[NSS_CRYPTO_CLK_SRC] = &nss_crypto_clk_src.clkr,
4230*d9db07f0SSricharan R 	[NSS_PORT1_RX_DIV_CLK_SRC] = &nss_port1_rx_div_clk_src.clkr,
4231*d9db07f0SSricharan R 	[NSS_PORT1_TX_DIV_CLK_SRC] = &nss_port1_tx_div_clk_src.clkr,
4232*d9db07f0SSricharan R 	[NSS_PORT2_RX_DIV_CLK_SRC] = &nss_port2_rx_div_clk_src.clkr,
4233*d9db07f0SSricharan R 	[NSS_PORT2_TX_DIV_CLK_SRC] = &nss_port2_tx_div_clk_src.clkr,
4234*d9db07f0SSricharan R 	[NSS_PORT3_RX_DIV_CLK_SRC] = &nss_port3_rx_div_clk_src.clkr,
4235*d9db07f0SSricharan R 	[NSS_PORT3_TX_DIV_CLK_SRC] = &nss_port3_tx_div_clk_src.clkr,
4236*d9db07f0SSricharan R 	[NSS_PORT4_RX_DIV_CLK_SRC] = &nss_port4_rx_div_clk_src.clkr,
4237*d9db07f0SSricharan R 	[NSS_PORT4_TX_DIV_CLK_SRC] = &nss_port4_tx_div_clk_src.clkr,
4238*d9db07f0SSricharan R 	[NSS_UBI0_CLK_SRC] = &nss_ubi0_clk_src.clkr,
4239*d9db07f0SSricharan R 	[ADSS_PWM_CLK_SRC] = &adss_pwm_clk_src.clkr,
4240*d9db07f0SSricharan R 	[BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr,
4241*d9db07f0SSricharan R 	[BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr,
4242*d9db07f0SSricharan R 	[BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr,
4243*d9db07f0SSricharan R 	[BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr,
4244*d9db07f0SSricharan R 	[BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr,
4245*d9db07f0SSricharan R 	[BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr,
4246*d9db07f0SSricharan R 	[BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr,
4247*d9db07f0SSricharan R 	[BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr,
4248*d9db07f0SSricharan R 	[BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr,
4249*d9db07f0SSricharan R 	[BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr,
4250*d9db07f0SSricharan R 	[BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr,
4251*d9db07f0SSricharan R 	[BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr,
4252*d9db07f0SSricharan R 	[BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr,
4253*d9db07f0SSricharan R 	[BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr,
4254*d9db07f0SSricharan R 	[BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr,
4255*d9db07f0SSricharan R 	[BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr,
4256*d9db07f0SSricharan R 	[BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr,
4257*d9db07f0SSricharan R 	[BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr,
4258*d9db07f0SSricharan R 	[CRYPTO_CLK_SRC] = &crypto_clk_src.clkr,
4259*d9db07f0SSricharan R 	[GP1_CLK_SRC] = &gp1_clk_src.clkr,
4260*d9db07f0SSricharan R 	[GP2_CLK_SRC] = &gp2_clk_src.clkr,
4261*d9db07f0SSricharan R 	[GP3_CLK_SRC] = &gp3_clk_src.clkr,
4262*d9db07f0SSricharan R 	[NSS_UBI0_DIV_CLK_SRC] = &nss_ubi0_div_clk_src.clkr,
4263*d9db07f0SSricharan R 	[PCIE0_AUX_CLK_SRC] = &pcie0_aux_clk_src.clkr,
4264*d9db07f0SSricharan R 	[PCIE0_PIPE_CLK_SRC] = &pcie0_pipe_clk_src.clkr,
4265*d9db07f0SSricharan R 	[SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr,
4266*d9db07f0SSricharan R 	[USB0_AUX_CLK_SRC] = &usb0_aux_clk_src.clkr,
4267*d9db07f0SSricharan R 	[USB0_MOCK_UTMI_CLK_SRC] = &usb0_mock_utmi_clk_src.clkr,
4268*d9db07f0SSricharan R 	[USB0_PIPE_CLK_SRC] = &usb0_pipe_clk_src.clkr,
4269*d9db07f0SSricharan R 	[USB1_MOCK_UTMI_CLK_SRC] = &usb1_mock_utmi_clk_src.clkr,
4270*d9db07f0SSricharan R 	[GCC_ADSS_PWM_CLK] = &gcc_adss_pwm_clk.clkr,
4271*d9db07f0SSricharan R 	[GCC_APSS_AHB_CLK] = &gcc_apss_ahb_clk.clkr,
4272*d9db07f0SSricharan R 	[GCC_APSS_AXI_CLK] = &gcc_apss_axi_clk.clkr,
4273*d9db07f0SSricharan R 	[GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr,
4274*d9db07f0SSricharan R 	[GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr,
4275*d9db07f0SSricharan R 	[GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr,
4276*d9db07f0SSricharan R 	[GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr,
4277*d9db07f0SSricharan R 	[GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr,
4278*d9db07f0SSricharan R 	[GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr,
4279*d9db07f0SSricharan R 	[GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr,
4280*d9db07f0SSricharan R 	[GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr,
4281*d9db07f0SSricharan R 	[GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr,
4282*d9db07f0SSricharan R 	[GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr,
4283*d9db07f0SSricharan R 	[GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr,
4284*d9db07f0SSricharan R 	[GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr,
4285*d9db07f0SSricharan R 	[GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr,
4286*d9db07f0SSricharan R 	[GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr,
4287*d9db07f0SSricharan R 	[GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr,
4288*d9db07f0SSricharan R 	[GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr,
4289*d9db07f0SSricharan R 	[GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr,
4290*d9db07f0SSricharan R 	[GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr,
4291*d9db07f0SSricharan R 	[GCC_CRYPTO_AHB_CLK] = &gcc_crypto_ahb_clk.clkr,
4292*d9db07f0SSricharan R 	[GCC_CRYPTO_AXI_CLK] = &gcc_crypto_axi_clk.clkr,
4293*d9db07f0SSricharan R 	[GCC_CRYPTO_CLK] = &gcc_crypto_clk.clkr,
4294*d9db07f0SSricharan R 	[GCC_XO_CLK] = &gcc_xo_clk.clkr,
4295*d9db07f0SSricharan R 	[GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
4296*d9db07f0SSricharan R 	[GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
4297*d9db07f0SSricharan R 	[GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
4298*d9db07f0SSricharan R 	[GCC_MDIO_AHB_CLK] = &gcc_mdio_ahb_clk.clkr,
4299*d9db07f0SSricharan R 	[GCC_CRYPTO_PPE_CLK] = &gcc_crypto_ppe_clk.clkr,
4300*d9db07f0SSricharan R 	[GCC_NSS_CE_APB_CLK] = &gcc_nss_ce_apb_clk.clkr,
4301*d9db07f0SSricharan R 	[GCC_NSS_CE_AXI_CLK] = &gcc_nss_ce_axi_clk.clkr,
4302*d9db07f0SSricharan R 	[GCC_NSS_CFG_CLK] = &gcc_nss_cfg_clk.clkr,
4303*d9db07f0SSricharan R 	[GCC_NSS_CRYPTO_CLK] = &gcc_nss_crypto_clk.clkr,
4304*d9db07f0SSricharan R 	[GCC_NSS_CSR_CLK] = &gcc_nss_csr_clk.clkr,
4305*d9db07f0SSricharan R 	[GCC_NSS_EDMA_CFG_CLK] = &gcc_nss_edma_cfg_clk.clkr,
4306*d9db07f0SSricharan R 	[GCC_NSS_EDMA_CLK] = &gcc_nss_edma_clk.clkr,
4307*d9db07f0SSricharan R 	[GCC_NSS_NOC_CLK] = &gcc_nss_noc_clk.clkr,
4308*d9db07f0SSricharan R 	[GCC_UBI0_UTCM_CLK] = &gcc_ubi0_utcm_clk.clkr,
4309*d9db07f0SSricharan R 	[GCC_SNOC_NSSNOC_CLK] = &gcc_snoc_nssnoc_clk.clkr,
4310*d9db07f0SSricharan R 	[GCC_NSS_PORT1_RX_CLK] = &gcc_nss_port1_rx_clk.clkr,
4311*d9db07f0SSricharan R 	[GCC_NSS_PORT1_TX_CLK] = &gcc_nss_port1_tx_clk.clkr,
4312*d9db07f0SSricharan R 	[GCC_NSS_PORT2_RX_CLK] = &gcc_nss_port2_rx_clk.clkr,
4313*d9db07f0SSricharan R 	[GCC_NSS_PORT2_TX_CLK] = &gcc_nss_port2_tx_clk.clkr,
4314*d9db07f0SSricharan R 	[GCC_NSS_PORT3_RX_CLK] = &gcc_nss_port3_rx_clk.clkr,
4315*d9db07f0SSricharan R 	[GCC_NSS_PORT3_TX_CLK] = &gcc_nss_port3_tx_clk.clkr,
4316*d9db07f0SSricharan R 	[GCC_NSS_PORT4_RX_CLK] = &gcc_nss_port4_rx_clk.clkr,
4317*d9db07f0SSricharan R 	[GCC_NSS_PORT4_TX_CLK] = &gcc_nss_port4_tx_clk.clkr,
4318*d9db07f0SSricharan R 	[GCC_NSS_PORT5_RX_CLK] = &gcc_nss_port5_rx_clk.clkr,
4319*d9db07f0SSricharan R 	[GCC_NSS_PORT5_TX_CLK] = &gcc_nss_port5_tx_clk.clkr,
4320*d9db07f0SSricharan R 	[GCC_NSS_PPE_CFG_CLK] = &gcc_nss_ppe_cfg_clk.clkr,
4321*d9db07f0SSricharan R 	[GCC_NSS_PPE_CLK] = &gcc_nss_ppe_clk.clkr,
4322*d9db07f0SSricharan R 	[GCC_NSS_PPE_IPE_CLK] = &gcc_nss_ppe_ipe_clk.clkr,
4323*d9db07f0SSricharan R 	[GCC_NSS_PTP_REF_CLK] = &gcc_nss_ptp_ref_clk.clkr,
4324*d9db07f0SSricharan R 	[GCC_NSSNOC_CE_APB_CLK] = &gcc_nssnoc_ce_apb_clk.clkr,
4325*d9db07f0SSricharan R 	[GCC_NSSNOC_CE_AXI_CLK] = &gcc_nssnoc_ce_axi_clk.clkr,
4326*d9db07f0SSricharan R 	[GCC_NSSNOC_CRYPTO_CLK] = &gcc_nssnoc_crypto_clk.clkr,
4327*d9db07f0SSricharan R 	[GCC_NSSNOC_PPE_CFG_CLK] = &gcc_nssnoc_ppe_cfg_clk.clkr,
4328*d9db07f0SSricharan R 	[GCC_NSSNOC_PPE_CLK] = &gcc_nssnoc_ppe_clk.clkr,
4329*d9db07f0SSricharan R 	[GCC_NSSNOC_QOSGEN_REF_CLK] = &gcc_nssnoc_qosgen_ref_clk.clkr,
4330*d9db07f0SSricharan R 	[GCC_NSSNOC_SNOC_CLK] = &gcc_nssnoc_snoc_clk.clkr,
4331*d9db07f0SSricharan R 	[GCC_NSSNOC_TIMEOUT_REF_CLK] = &gcc_nssnoc_timeout_ref_clk.clkr,
4332*d9db07f0SSricharan R 	[GCC_NSSNOC_UBI0_AHB_CLK] = &gcc_nssnoc_ubi0_ahb_clk.clkr,
4333*d9db07f0SSricharan R 	[GCC_PORT1_MAC_CLK] = &gcc_port1_mac_clk.clkr,
4334*d9db07f0SSricharan R 	[GCC_PORT2_MAC_CLK] = &gcc_port2_mac_clk.clkr,
4335*d9db07f0SSricharan R 	[GCC_PORT3_MAC_CLK] = &gcc_port3_mac_clk.clkr,
4336*d9db07f0SSricharan R 	[GCC_PORT4_MAC_CLK] = &gcc_port4_mac_clk.clkr,
4337*d9db07f0SSricharan R 	[GCC_PORT5_MAC_CLK] = &gcc_port5_mac_clk.clkr,
4338*d9db07f0SSricharan R 	[GCC_UBI0_AHB_CLK] = &gcc_ubi0_ahb_clk.clkr,
4339*d9db07f0SSricharan R 	[GCC_UBI0_AXI_CLK] = &gcc_ubi0_axi_clk.clkr,
4340*d9db07f0SSricharan R 	[GCC_UBI0_NC_AXI_CLK] = &gcc_ubi0_nc_axi_clk.clkr,
4341*d9db07f0SSricharan R 	[GCC_UBI0_CORE_CLK] = &gcc_ubi0_core_clk.clkr,
4342*d9db07f0SSricharan R 	[GCC_PCIE0_AHB_CLK] = &gcc_pcie0_ahb_clk.clkr,
4343*d9db07f0SSricharan R 	[GCC_PCIE0_AUX_CLK] = &gcc_pcie0_aux_clk.clkr,
4344*d9db07f0SSricharan R 	[GCC_PCIE0_AXI_M_CLK] = &gcc_pcie0_axi_m_clk.clkr,
4345*d9db07f0SSricharan R 	[GCC_PCIE0_AXI_S_CLK] = &gcc_pcie0_axi_s_clk.clkr,
4346*d9db07f0SSricharan R 	[GCC_SYS_NOC_PCIE0_AXI_CLK] = &gcc_sys_noc_pcie0_axi_clk.clkr,
4347*d9db07f0SSricharan R 	[GCC_PCIE0_PIPE_CLK] = &gcc_pcie0_pipe_clk.clkr,
4348*d9db07f0SSricharan R 	[GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
4349*d9db07f0SSricharan R 	[GCC_QDSS_DAP_CLK] = &gcc_qdss_dap_clk.clkr,
4350*d9db07f0SSricharan R 	[GCC_QPIC_AHB_CLK] = &gcc_qpic_ahb_clk.clkr,
4351*d9db07f0SSricharan R 	[GCC_QPIC_CLK] = &gcc_qpic_clk.clkr,
4352*d9db07f0SSricharan R 	[GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
4353*d9db07f0SSricharan R 	[GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
4354*d9db07f0SSricharan R 	[GCC_UNIPHY0_AHB_CLK] = &gcc_uniphy0_ahb_clk.clkr,
4355*d9db07f0SSricharan R 	[GCC_UNIPHY0_PORT1_RX_CLK] = &gcc_uniphy0_port1_rx_clk.clkr,
4356*d9db07f0SSricharan R 	[GCC_UNIPHY0_PORT1_TX_CLK] = &gcc_uniphy0_port1_tx_clk.clkr,
4357*d9db07f0SSricharan R 	[GCC_UNIPHY0_PORT2_RX_CLK] = &gcc_uniphy0_port2_rx_clk.clkr,
4358*d9db07f0SSricharan R 	[GCC_UNIPHY0_PORT2_TX_CLK] = &gcc_uniphy0_port2_tx_clk.clkr,
4359*d9db07f0SSricharan R 	[GCC_UNIPHY0_PORT3_RX_CLK] = &gcc_uniphy0_port3_rx_clk.clkr,
4360*d9db07f0SSricharan R 	[GCC_UNIPHY0_PORT3_TX_CLK] = &gcc_uniphy0_port3_tx_clk.clkr,
4361*d9db07f0SSricharan R 	[GCC_UNIPHY0_PORT4_RX_CLK] = &gcc_uniphy0_port4_rx_clk.clkr,
4362*d9db07f0SSricharan R 	[GCC_UNIPHY0_PORT4_TX_CLK] = &gcc_uniphy0_port4_tx_clk.clkr,
4363*d9db07f0SSricharan R 	[GCC_UNIPHY0_PORT5_RX_CLK] = &gcc_uniphy0_port5_rx_clk.clkr,
4364*d9db07f0SSricharan R 	[GCC_UNIPHY0_PORT5_TX_CLK] = &gcc_uniphy0_port5_tx_clk.clkr,
4365*d9db07f0SSricharan R 	[GCC_UNIPHY0_SYS_CLK] = &gcc_uniphy0_sys_clk.clkr,
4366*d9db07f0SSricharan R 	[GCC_UNIPHY1_AHB_CLK] = &gcc_uniphy1_ahb_clk.clkr,
4367*d9db07f0SSricharan R 	[GCC_UNIPHY1_PORT5_RX_CLK] = &gcc_uniphy1_port5_rx_clk.clkr,
4368*d9db07f0SSricharan R 	[GCC_UNIPHY1_PORT5_TX_CLK] = &gcc_uniphy1_port5_tx_clk.clkr,
4369*d9db07f0SSricharan R 	[GCC_UNIPHY1_SYS_CLK] = &gcc_uniphy1_sys_clk.clkr,
4370*d9db07f0SSricharan R 	[GCC_USB0_AUX_CLK] = &gcc_usb0_aux_clk.clkr,
4371*d9db07f0SSricharan R 	[GCC_SYS_NOC_USB0_AXI_CLK] = &gcc_sys_noc_usb0_axi_clk.clkr,
4372*d9db07f0SSricharan R 	[GCC_SNOC_BUS_TIMEOUT2_AHB_CLK] = &gcc_snoc_bus_timeout2_ahb_clk.clkr,
4373*d9db07f0SSricharan R 	[GCC_USB0_MASTER_CLK] = &gcc_usb0_master_clk.clkr,
4374*d9db07f0SSricharan R 	[GCC_USB0_MOCK_UTMI_CLK] = &gcc_usb0_mock_utmi_clk.clkr,
4375*d9db07f0SSricharan R 	[GCC_USB0_PHY_CFG_AHB_CLK] = &gcc_usb0_phy_cfg_ahb_clk.clkr,
4376*d9db07f0SSricharan R 	[GCC_USB0_PIPE_CLK] = &gcc_usb0_pipe_clk.clkr,
4377*d9db07f0SSricharan R 	[GCC_USB0_SLEEP_CLK] = &gcc_usb0_sleep_clk.clkr,
4378*d9db07f0SSricharan R 	[GCC_USB1_MASTER_CLK] = &gcc_usb1_master_clk.clkr,
4379*d9db07f0SSricharan R 	[GCC_USB1_MOCK_UTMI_CLK] = &gcc_usb1_mock_utmi_clk.clkr,
4380*d9db07f0SSricharan R 	[GCC_USB1_PHY_CFG_AHB_CLK] = &gcc_usb1_phy_cfg_ahb_clk.clkr,
4381*d9db07f0SSricharan R 	[GCC_USB1_SLEEP_CLK] = &gcc_usb1_sleep_clk.clkr,
4382*d9db07f0SSricharan R 	[GCC_CMN_12GPLL_AHB_CLK] = &gcc_cmn_12gpll_ahb_clk.clkr,
4383*d9db07f0SSricharan R 	[GCC_CMN_12GPLL_SYS_CLK] = &gcc_cmn_12gpll_sys_clk.clkr,
4384*d9db07f0SSricharan R 	[GCC_SDCC1_ICE_CORE_CLK] = &gcc_sdcc1_ice_core_clk.clkr,
4385*d9db07f0SSricharan R 	[SDCC1_ICE_CORE_CLK_SRC] = &sdcc1_ice_core_clk_src.clkr,
4386*d9db07f0SSricharan R 	[GCC_DCC_CLK] = &gcc_dcc_clk.clkr,
4387*d9db07f0SSricharan R 	[PCIE0_RCHNG_CLK_SRC] = &pcie0_rchng_clk_src.clkr,
4388*d9db07f0SSricharan R 	[GCC_PCIE0_AXI_S_BRIDGE_CLK] = &gcc_pcie0_axi_s_bridge_clk.clkr,
4389*d9db07f0SSricharan R 	[PCIE0_RCHNG_CLK] = &gcc_pcie0_rchng_clk.clkr,
4390*d9db07f0SSricharan R 	[WCSS_AHB_CLK_SRC] = &wcss_ahb_clk_src.clkr,
4391*d9db07f0SSricharan R 	[Q6_AXI_CLK_SRC] = &q6_axi_clk_src.clkr,
4392*d9db07f0SSricharan R 	[RBCPR_WCSS_CLK_SRC] = &rbcpr_wcss_clk_src.clkr,
4393*d9db07f0SSricharan R 	[GCC_LPASS_CORE_AXIM_CLK] = &gcc_lpass_core_axim_clk.clkr,
4394*d9db07f0SSricharan R 	[LPASS_CORE_AXIM_CLK_SRC] = &lpass_core_axim_clk_src.clkr,
4395*d9db07f0SSricharan R 	[GCC_LPASS_SNOC_CFG_CLK] = &gcc_lpass_snoc_cfg_clk.clkr,
4396*d9db07f0SSricharan R 	[LPASS_SNOC_CFG_CLK_SRC] = &lpass_snoc_cfg_clk_src.clkr,
4397*d9db07f0SSricharan R 	[GCC_LPASS_Q6_AXIM_CLK] = &gcc_lpass_q6_axim_clk.clkr,
4398*d9db07f0SSricharan R 	[LPASS_Q6_AXIM_CLK_SRC] = &lpass_q6_axim_clk_src.clkr,
4399*d9db07f0SSricharan R 	[GCC_LPASS_Q6_ATBM_AT_CLK] = &gcc_lpass_q6_atbm_at_clk.clkr,
4400*d9db07f0SSricharan R 	[GCC_LPASS_Q6_PCLKDBG_CLK] = &gcc_lpass_q6_pclkdbg_clk.clkr,
4401*d9db07f0SSricharan R 	[GCC_LPASS_Q6SS_TSCTR_1TO2_CLK] = &gcc_lpass_q6ss_tsctr_1to2_clk.clkr,
4402*d9db07f0SSricharan R 	[GCC_LPASS_Q6SS_TRIG_CLK] = &gcc_lpass_q6ss_trig_clk.clkr,
4403*d9db07f0SSricharan R 	[GCC_LPASS_TBU_CLK] = &gcc_lpass_tbu_clk.clkr,
4404*d9db07f0SSricharan R 	[GCC_PCNOC_LPASS_CLK] = &gcc_pcnoc_lpass_clk.clkr,
4405*d9db07f0SSricharan R 	[GCC_MEM_NOC_UBI32_CLK] = &gcc_mem_noc_ubi32_clk.clkr,
4406*d9db07f0SSricharan R 	[GCC_MEM_NOC_LPASS_CLK] = &gcc_mem_noc_lpass_clk.clkr,
4407*d9db07f0SSricharan R 	[GCC_SNOC_LPASS_CFG_CLK] = &gcc_snoc_lpass_cfg_clk.clkr,
4408*d9db07f0SSricharan R 	[QDSS_STM_CLK_SRC] = &qdss_stm_clk_src.clkr,
4409*d9db07f0SSricharan R 	[QDSS_TRACECLKIN_CLK_SRC] = &qdss_traceclkin_clk_src.clkr,
4410*d9db07f0SSricharan R };
4411*d9db07f0SSricharan R 
4412*d9db07f0SSricharan R static const struct qcom_reset_map gcc_ipq6018_resets[] = {
4413*d9db07f0SSricharan R 	[GCC_BLSP1_BCR] = { 0x01000, 0 },
4414*d9db07f0SSricharan R 	[GCC_BLSP1_QUP1_BCR] = { 0x02000, 0 },
4415*d9db07f0SSricharan R 	[GCC_BLSP1_UART1_BCR] = { 0x02038, 0 },
4416*d9db07f0SSricharan R 	[GCC_BLSP1_QUP2_BCR] = { 0x03008, 0 },
4417*d9db07f0SSricharan R 	[GCC_BLSP1_UART2_BCR] = { 0x03028, 0 },
4418*d9db07f0SSricharan R 	[GCC_BLSP1_QUP3_BCR] = { 0x04008, 0 },
4419*d9db07f0SSricharan R 	[GCC_BLSP1_UART3_BCR] = { 0x04028, 0 },
4420*d9db07f0SSricharan R 	[GCC_BLSP1_QUP4_BCR] = { 0x05008, 0 },
4421*d9db07f0SSricharan R 	[GCC_BLSP1_UART4_BCR] = { 0x05028, 0 },
4422*d9db07f0SSricharan R 	[GCC_BLSP1_QUP5_BCR] = { 0x06008, 0 },
4423*d9db07f0SSricharan R 	[GCC_BLSP1_UART5_BCR] = { 0x06028, 0 },
4424*d9db07f0SSricharan R 	[GCC_BLSP1_QUP6_BCR] = { 0x07008, 0 },
4425*d9db07f0SSricharan R 	[GCC_BLSP1_UART6_BCR] = { 0x07028, 0 },
4426*d9db07f0SSricharan R 	[GCC_IMEM_BCR] = { 0x0e000, 0 },
4427*d9db07f0SSricharan R 	[GCC_SMMU_BCR] = { 0x12000, 0 },
4428*d9db07f0SSricharan R 	[GCC_APSS_TCU_BCR] = { 0x12050, 0 },
4429*d9db07f0SSricharan R 	[GCC_SMMU_XPU_BCR] = { 0x12054, 0 },
4430*d9db07f0SSricharan R 	[GCC_PCNOC_TBU_BCR] = { 0x12058, 0 },
4431*d9db07f0SSricharan R 	[GCC_SMMU_CFG_BCR] = { 0x1208c, 0 },
4432*d9db07f0SSricharan R 	[GCC_PRNG_BCR] = { 0x13000, 0 },
4433*d9db07f0SSricharan R 	[GCC_BOOT_ROM_BCR] = { 0x13008, 0 },
4434*d9db07f0SSricharan R 	[GCC_CRYPTO_BCR] = { 0x16000, 0 },
4435*d9db07f0SSricharan R 	[GCC_WCSS_BCR] = { 0x18000, 0 },
4436*d9db07f0SSricharan R 	[GCC_WCSS_Q6_BCR] = { 0x18100, 0 },
4437*d9db07f0SSricharan R 	[GCC_NSS_BCR] = { 0x19000, 0 },
4438*d9db07f0SSricharan R 	[GCC_SEC_CTRL_BCR] = { 0x1a000, 0 },
4439*d9db07f0SSricharan R 	[GCC_ADSS_BCR] = { 0x1c000, 0 },
4440*d9db07f0SSricharan R 	[GCC_DDRSS_BCR] = { 0x1e000, 0 },
4441*d9db07f0SSricharan R 	[GCC_SYSTEM_NOC_BCR] = { 0x26000, 0 },
4442*d9db07f0SSricharan R 	[GCC_PCNOC_BCR] = { 0x27018, 0 },
4443*d9db07f0SSricharan R 	[GCC_TCSR_BCR] = { 0x28000, 0 },
4444*d9db07f0SSricharan R 	[GCC_QDSS_BCR] = { 0x29000, 0 },
4445*d9db07f0SSricharan R 	[GCC_DCD_BCR] = { 0x2a000, 0 },
4446*d9db07f0SSricharan R 	[GCC_MSG_RAM_BCR] = { 0x2b000, 0 },
4447*d9db07f0SSricharan R 	[GCC_MPM_BCR] = { 0x2c000, 0 },
4448*d9db07f0SSricharan R 	[GCC_SPDM_BCR] = { 0x2f000, 0 },
4449*d9db07f0SSricharan R 	[GCC_RBCPR_BCR] = { 0x33000, 0 },
4450*d9db07f0SSricharan R 	[GCC_RBCPR_MX_BCR] = { 0x33014, 0 },
4451*d9db07f0SSricharan R 	[GCC_TLMM_BCR] = { 0x34000, 0 },
4452*d9db07f0SSricharan R 	[GCC_RBCPR_WCSS_BCR] = { 0x3a000, 0 },
4453*d9db07f0SSricharan R 	[GCC_USB0_PHY_BCR] = { 0x3e034, 0 },
4454*d9db07f0SSricharan R 	[GCC_USB3PHY_0_PHY_BCR] = { 0x3e03c, 0 },
4455*d9db07f0SSricharan R 	[GCC_USB0_BCR] = { 0x3e070, 0 },
4456*d9db07f0SSricharan R 	[GCC_USB1_BCR] = { 0x3f070, 0 },
4457*d9db07f0SSricharan R 	[GCC_QUSB2_0_PHY_BCR] = { 0x4103c, 0 },
4458*d9db07f0SSricharan R 	[GCC_QUSB2_1_PHY_BCR] = { 0x41040, 0 },
4459*d9db07f0SSricharan R 	[GCC_SDCC1_BCR] = { 0x42000, 0 },
4460*d9db07f0SSricharan R 	[GCC_SNOC_BUS_TIMEOUT0_BCR] = { 0x47000, 0 },
4461*d9db07f0SSricharan R 	[GCC_SNOC_BUS_TIMEOUT1_BCR] = { 0x47008, 0 },
4462*d9db07f0SSricharan R 	[GCC_SNOC_BUS_TIMEOUT2_BCR] = { 0x47010, 0 },
4463*d9db07f0SSricharan R 	[GCC_PCNOC_BUS_TIMEOUT0_BCR] = { 0x48000, 0 },
4464*d9db07f0SSricharan R 	[GCC_PCNOC_BUS_TIMEOUT1_BCR] = { 0x48008, 0 },
4465*d9db07f0SSricharan R 	[GCC_PCNOC_BUS_TIMEOUT2_BCR] = { 0x48010, 0 },
4466*d9db07f0SSricharan R 	[GCC_PCNOC_BUS_TIMEOUT3_BCR] = { 0x48018, 0 },
4467*d9db07f0SSricharan R 	[GCC_PCNOC_BUS_TIMEOUT4_BCR] = { 0x48020, 0 },
4468*d9db07f0SSricharan R 	[GCC_PCNOC_BUS_TIMEOUT5_BCR] = { 0x48028, 0 },
4469*d9db07f0SSricharan R 	[GCC_PCNOC_BUS_TIMEOUT6_BCR] = { 0x48030, 0 },
4470*d9db07f0SSricharan R 	[GCC_PCNOC_BUS_TIMEOUT7_BCR] = { 0x48038, 0 },
4471*d9db07f0SSricharan R 	[GCC_PCNOC_BUS_TIMEOUT8_BCR] = { 0x48040, 0 },
4472*d9db07f0SSricharan R 	[GCC_PCNOC_BUS_TIMEOUT9_BCR] = { 0x48048, 0 },
4473*d9db07f0SSricharan R 	[GCC_UNIPHY0_BCR] = { 0x56000, 0 },
4474*d9db07f0SSricharan R 	[GCC_UNIPHY1_BCR] = { 0x56100, 0 },
4475*d9db07f0SSricharan R 	[GCC_CMN_12GPLL_BCR] = { 0x56300, 0 },
4476*d9db07f0SSricharan R 	[GCC_QPIC_BCR] = { 0x57018, 0 },
4477*d9db07f0SSricharan R 	[GCC_MDIO_BCR] = { 0x58000, 0 },
4478*d9db07f0SSricharan R 	[GCC_WCSS_CORE_TBU_BCR] = { 0x66000, 0 },
4479*d9db07f0SSricharan R 	[GCC_WCSS_Q6_TBU_BCR] = { 0x67000, 0 },
4480*d9db07f0SSricharan R 	[GCC_USB0_TBU_BCR] = { 0x6a000, 0 },
4481*d9db07f0SSricharan R 	[GCC_PCIE0_TBU_BCR] = { 0x6b000, 0 },
4482*d9db07f0SSricharan R 	[GCC_NSS_NOC_TBU_BCR] = { 0x6e000, 0 },
4483*d9db07f0SSricharan R 	[GCC_PCIE0_BCR] = { 0x75004, 0 },
4484*d9db07f0SSricharan R 	[GCC_PCIE0_PHY_BCR] = { 0x75038, 0 },
4485*d9db07f0SSricharan R 	[GCC_PCIE0PHY_PHY_BCR] = { 0x7503c, 0 },
4486*d9db07f0SSricharan R 	[GCC_PCIE0_LINK_DOWN_BCR] = { 0x75044, 0 },
4487*d9db07f0SSricharan R 	[GCC_DCC_BCR] = { 0x77000, 0 },
4488*d9db07f0SSricharan R 	[GCC_APC0_VOLTAGE_DROOP_DETECTOR_BCR] = { 0x78000, 0 },
4489*d9db07f0SSricharan R 	[GCC_SMMU_CATS_BCR] = { 0x7c000, 0 },
4490*d9db07f0SSricharan R 	[GCC_UBI0_AXI_ARES] = { 0x68010, 0 },
4491*d9db07f0SSricharan R 	[GCC_UBI0_AHB_ARES] = { 0x68010, 1 },
4492*d9db07f0SSricharan R 	[GCC_UBI0_NC_AXI_ARES] = { 0x68010, 2 },
4493*d9db07f0SSricharan R 	[GCC_UBI0_DBG_ARES] = { 0x68010, 3 },
4494*d9db07f0SSricharan R 	[GCC_UBI0_CORE_CLAMP_ENABLE] = { 0x68010, 4 },
4495*d9db07f0SSricharan R 	[GCC_UBI0_CLKRST_CLAMP_ENABLE] = { 0x68010, 5 },
4496*d9db07f0SSricharan R 	[GCC_UBI0_UTCM_ARES] = { 0x68010, 6 },
4497*d9db07f0SSricharan R 	[GCC_UBI0_CORE_ARES] = { 0x68010, 7 },
4498*d9db07f0SSricharan R 	[GCC_NSS_CFG_ARES] = { 0x68010, 16 },
4499*d9db07f0SSricharan R 	[GCC_NSS_NOC_ARES] = { 0x68010, 18 },
4500*d9db07f0SSricharan R 	[GCC_NSS_CRYPTO_ARES] = { 0x68010, 19 },
4501*d9db07f0SSricharan R 	[GCC_NSS_CSR_ARES] = { 0x68010, 20 },
4502*d9db07f0SSricharan R 	[GCC_NSS_CE_APB_ARES] = { 0x68010, 21 },
4503*d9db07f0SSricharan R 	[GCC_NSS_CE_AXI_ARES] = { 0x68010, 22 },
4504*d9db07f0SSricharan R 	[GCC_NSSNOC_CE_APB_ARES] = { 0x68010, 23 },
4505*d9db07f0SSricharan R 	[GCC_NSSNOC_CE_AXI_ARES] = { 0x68010, 24 },
4506*d9db07f0SSricharan R 	[GCC_NSSNOC_UBI0_AHB_ARES] = { 0x68010, 25 },
4507*d9db07f0SSricharan R 	[GCC_NSSNOC_SNOC_ARES] = { 0x68010, 27 },
4508*d9db07f0SSricharan R 	[GCC_NSSNOC_CRYPTO_ARES] = { 0x68010, 28 },
4509*d9db07f0SSricharan R 	[GCC_NSSNOC_ATB_ARES] = { 0x68010, 29 },
4510*d9db07f0SSricharan R 	[GCC_NSSNOC_QOSGEN_REF_ARES] = { 0x68010, 30 },
4511*d9db07f0SSricharan R 	[GCC_NSSNOC_TIMEOUT_REF_ARES] = { 0x68010, 31 },
4512*d9db07f0SSricharan R 	[GCC_PCIE0_PIPE_ARES] = { 0x75040, 0 },
4513*d9db07f0SSricharan R 	[GCC_PCIE0_SLEEP_ARES] = { 0x75040, 1 },
4514*d9db07f0SSricharan R 	[GCC_PCIE0_CORE_STICKY_ARES] = { 0x75040, 2 },
4515*d9db07f0SSricharan R 	[GCC_PCIE0_AXI_MASTER_ARES] = { 0x75040, 3 },
4516*d9db07f0SSricharan R 	[GCC_PCIE0_AXI_SLAVE_ARES] = { 0x75040, 4 },
4517*d9db07f0SSricharan R 	[GCC_PCIE0_AHB_ARES] = { 0x75040, 5 },
4518*d9db07f0SSricharan R 	[GCC_PCIE0_AXI_MASTER_STICKY_ARES] = { 0x75040, 6 },
4519*d9db07f0SSricharan R 	[GCC_PCIE0_AXI_SLAVE_STICKY_ARES] = { 0x75040, 7 },
4520*d9db07f0SSricharan R 	[GCC_PPE_FULL_RESET] = { 0x68014, 0 },
4521*d9db07f0SSricharan R 	[GCC_UNIPHY0_SOFT_RESET] = { 0x56004, 0 },
4522*d9db07f0SSricharan R 	[GCC_UNIPHY0_XPCS_RESET] = { 0x56004, 2 },
4523*d9db07f0SSricharan R 	[GCC_UNIPHY1_SOFT_RESET] = { 0x56104, 0 },
4524*d9db07f0SSricharan R 	[GCC_UNIPHY1_XPCS_RESET] = { 0x56104, 2 },
4525*d9db07f0SSricharan R 	[GCC_EDMA_HW_RESET] = { 0x68014, 0 },
4526*d9db07f0SSricharan R 	[GCC_NSSPORT1_RESET] = { 0x68014, 0 },
4527*d9db07f0SSricharan R 	[GCC_NSSPORT2_RESET] = { 0x68014, 0 },
4528*d9db07f0SSricharan R 	[GCC_NSSPORT3_RESET] = { 0x68014, 0 },
4529*d9db07f0SSricharan R 	[GCC_NSSPORT4_RESET] = { 0x68014, 0 },
4530*d9db07f0SSricharan R 	[GCC_NSSPORT5_RESET] = { 0x68014, 0 },
4531*d9db07f0SSricharan R 	[GCC_UNIPHY0_PORT1_ARES] = { 0x56004, 0 },
4532*d9db07f0SSricharan R 	[GCC_UNIPHY0_PORT2_ARES] = { 0x56004, 0 },
4533*d9db07f0SSricharan R 	[GCC_UNIPHY0_PORT3_ARES] = { 0x56004, 0 },
4534*d9db07f0SSricharan R 	[GCC_UNIPHY0_PORT4_ARES] = { 0x56004, 0 },
4535*d9db07f0SSricharan R 	[GCC_UNIPHY0_PORT5_ARES] = { 0x56004, 0 },
4536*d9db07f0SSricharan R 	[GCC_UNIPHY0_PORT_4_5_RESET] = { 0x56004, 0 },
4537*d9db07f0SSricharan R 	[GCC_UNIPHY0_PORT_4_RESET] = { 0x56004, 0 },
4538*d9db07f0SSricharan R 	[GCC_LPASS_BCR] = {0x1F000, 0},
4539*d9db07f0SSricharan R 	[GCC_UBI32_TBU_BCR] = {0x65000, 0},
4540*d9db07f0SSricharan R 	[GCC_LPASS_TBU_BCR] = {0x6C000, 0},
4541*d9db07f0SSricharan R 	[GCC_WCSSAON_RESET] = {0x59010, 0},
4542*d9db07f0SSricharan R 	[GCC_LPASS_Q6_AXIM_ARES] = {0x1F004, 0},
4543*d9db07f0SSricharan R 	[GCC_LPASS_Q6SS_TSCTR_1TO2_ARES] = {0x1F004, 1},
4544*d9db07f0SSricharan R 	[GCC_LPASS_Q6SS_TRIG_ARES] = {0x1F004, 2},
4545*d9db07f0SSricharan R 	[GCC_LPASS_Q6_ATBM_AT_ARES] = {0x1F004, 3},
4546*d9db07f0SSricharan R 	[GCC_LPASS_Q6_PCLKDBG_ARES] = {0x1F004, 4},
4547*d9db07f0SSricharan R 	[GCC_LPASS_CORE_AXIM_ARES] = {0x1F004, 5},
4548*d9db07f0SSricharan R 	[GCC_LPASS_SNOC_CFG_ARES] = {0x1F004, 6},
4549*d9db07f0SSricharan R 	[GCC_WCSS_DBG_ARES] = {0x59008, 0},
4550*d9db07f0SSricharan R 	[GCC_WCSS_ECAHB_ARES] = {0x59008, 1},
4551*d9db07f0SSricharan R 	[GCC_WCSS_ACMT_ARES] = {0x59008, 2},
4552*d9db07f0SSricharan R 	[GCC_WCSS_DBG_BDG_ARES] = {0x59008, 3},
4553*d9db07f0SSricharan R 	[GCC_WCSS_AHB_S_ARES] = {0x59008, 4},
4554*d9db07f0SSricharan R 	[GCC_WCSS_AXI_M_ARES] = {0x59008, 5},
4555*d9db07f0SSricharan R 	[GCC_Q6SS_DBG_ARES] = {0x59110, 0},
4556*d9db07f0SSricharan R 	[GCC_Q6_AHB_S_ARES] = {0x59110, 1},
4557*d9db07f0SSricharan R 	[GCC_Q6_AHB_ARES] = {0x59110, 2},
4558*d9db07f0SSricharan R 	[GCC_Q6_AXIM2_ARES] = {0x59110, 3},
4559*d9db07f0SSricharan R 	[GCC_Q6_AXIM_ARES] = {0x59110, 4},
4560*d9db07f0SSricharan R };
4561*d9db07f0SSricharan R 
4562*d9db07f0SSricharan R static const struct of_device_id gcc_ipq6018_match_table[] = {
4563*d9db07f0SSricharan R 	{ .compatible = "qcom,gcc-ipq6018" },
4564*d9db07f0SSricharan R 	{ }
4565*d9db07f0SSricharan R };
4566*d9db07f0SSricharan R MODULE_DEVICE_TABLE(of, gcc_ipq6018_match_table);
4567*d9db07f0SSricharan R 
4568*d9db07f0SSricharan R static const struct regmap_config gcc_ipq6018_regmap_config = {
4569*d9db07f0SSricharan R 	.reg_bits       = 32,
4570*d9db07f0SSricharan R 	.reg_stride     = 4,
4571*d9db07f0SSricharan R 	.val_bits       = 32,
4572*d9db07f0SSricharan R 	.max_register   = 0x7fffc,
4573*d9db07f0SSricharan R 	.fast_io	= true,
4574*d9db07f0SSricharan R };
4575*d9db07f0SSricharan R 
4576*d9db07f0SSricharan R static const struct qcom_cc_desc gcc_ipq6018_desc = {
4577*d9db07f0SSricharan R 	.config = &gcc_ipq6018_regmap_config,
4578*d9db07f0SSricharan R 	.clks = gcc_ipq6018_clks,
4579*d9db07f0SSricharan R 	.num_clks = ARRAY_SIZE(gcc_ipq6018_clks),
4580*d9db07f0SSricharan R 	.resets = gcc_ipq6018_resets,
4581*d9db07f0SSricharan R 	.num_resets = ARRAY_SIZE(gcc_ipq6018_resets),
4582*d9db07f0SSricharan R 	.clk_hws = gcc_ipq6018_hws,
4583*d9db07f0SSricharan R 	.num_clk_hws = ARRAY_SIZE(gcc_ipq6018_hws),
4584*d9db07f0SSricharan R };
4585*d9db07f0SSricharan R 
4586*d9db07f0SSricharan R static int gcc_ipq6018_probe(struct platform_device *pdev)
4587*d9db07f0SSricharan R {
4588*d9db07f0SSricharan R 	struct regmap *regmap;
4589*d9db07f0SSricharan R 
4590*d9db07f0SSricharan R 	regmap = qcom_cc_map(pdev, &gcc_ipq6018_desc);
4591*d9db07f0SSricharan R 	if (IS_ERR(regmap))
4592*d9db07f0SSricharan R 		return PTR_ERR(regmap);
4593*d9db07f0SSricharan R 
4594*d9db07f0SSricharan R 	/* Disable SW_COLLAPSE for USB0 GDSCR */
4595*d9db07f0SSricharan R 	regmap_update_bits(regmap, 0x3e078, BIT(0), 0x0);
4596*d9db07f0SSricharan R 	/* Enable SW_OVERRIDE for USB0 GDSCR */
4597*d9db07f0SSricharan R 	regmap_update_bits(regmap, 0x3e078, BIT(2), BIT(2));
4598*d9db07f0SSricharan R 	/* Disable SW_COLLAPSE for USB1 GDSCR */
4599*d9db07f0SSricharan R 	regmap_update_bits(regmap, 0x3f078, BIT(0), 0x0);
4600*d9db07f0SSricharan R 	/* Enable SW_OVERRIDE for USB1 GDSCR */
4601*d9db07f0SSricharan R 	regmap_update_bits(regmap, 0x3f078, BIT(2), BIT(2));
4602*d9db07f0SSricharan R 
4603*d9db07f0SSricharan R 	/* SW Workaround for UBI Huyara PLL */
4604*d9db07f0SSricharan R 	regmap_update_bits(regmap, 0x2501c, BIT(26), BIT(26));
4605*d9db07f0SSricharan R 
4606*d9db07f0SSricharan R 	clk_alpha_pll_configure(&ubi32_pll_main, regmap, &ubi32_pll_config);
4607*d9db07f0SSricharan R 
4608*d9db07f0SSricharan R 	clk_alpha_pll_configure(&nss_crypto_pll_main, regmap,
4609*d9db07f0SSricharan R 				&nss_crypto_pll_config);
4610*d9db07f0SSricharan R 
4611*d9db07f0SSricharan R 	return qcom_cc_really_probe(pdev, &gcc_ipq6018_desc, regmap);
4612*d9db07f0SSricharan R }
4613*d9db07f0SSricharan R 
4614*d9db07f0SSricharan R static struct platform_driver gcc_ipq6018_driver = {
4615*d9db07f0SSricharan R 	.probe = gcc_ipq6018_probe,
4616*d9db07f0SSricharan R 	.driver = {
4617*d9db07f0SSricharan R 		.name   = "qcom,gcc-ipq6018",
4618*d9db07f0SSricharan R 		.of_match_table = gcc_ipq6018_match_table,
4619*d9db07f0SSricharan R 	},
4620*d9db07f0SSricharan R };
4621*d9db07f0SSricharan R 
4622*d9db07f0SSricharan R static int __init gcc_ipq6018_init(void)
4623*d9db07f0SSricharan R {
4624*d9db07f0SSricharan R 	return platform_driver_register(&gcc_ipq6018_driver);
4625*d9db07f0SSricharan R }
4626*d9db07f0SSricharan R core_initcall(gcc_ipq6018_init);
4627*d9db07f0SSricharan R 
4628*d9db07f0SSricharan R static void __exit gcc_ipq6018_exit(void)
4629*d9db07f0SSricharan R {
4630*d9db07f0SSricharan R 	platform_driver_unregister(&gcc_ipq6018_driver);
4631*d9db07f0SSricharan R }
4632*d9db07f0SSricharan R module_exit(gcc_ipq6018_exit);
4633*d9db07f0SSricharan R 
4634*d9db07f0SSricharan R MODULE_DESCRIPTION("Qualcomm Technologies, Inc. GCC IPQ6018 Driver");
4635*d9db07f0SSricharan R MODULE_LICENSE("GPL v2");
4636