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