xref: /openbmc/linux/drivers/clk/qcom/gcc-sm6375.c (revision a96cbb14)
1184fdd87SKonrad Dybcio // SPDX-License-Identifier: GPL-2.0-only
2184fdd87SKonrad Dybcio /*
3184fdd87SKonrad Dybcio  * Copyright (c) 2021, The Linux Foundation. All rights reserved.
4184fdd87SKonrad Dybcio  * Copyright (c) 2022, Konrad Dybcio <konrad.dybcio@somainline.org>
5184fdd87SKonrad Dybcio  */
6184fdd87SKonrad Dybcio 
7184fdd87SKonrad Dybcio #include <linux/clk-provider.h>
8184fdd87SKonrad Dybcio #include <linux/module.h>
9*a96cbb14SRob Herring #include <linux/of.h>
10*a96cbb14SRob Herring #include <linux/platform_device.h>
11184fdd87SKonrad Dybcio #include <linux/regmap.h>
12184fdd87SKonrad Dybcio 
13184fdd87SKonrad Dybcio #include <dt-bindings/clock/qcom,sm6375-gcc.h>
14184fdd87SKonrad Dybcio 
15184fdd87SKonrad Dybcio #include "clk-alpha-pll.h"
16184fdd87SKonrad Dybcio #include "clk-branch.h"
17184fdd87SKonrad Dybcio #include "clk-rcg.h"
18184fdd87SKonrad Dybcio #include "clk-regmap.h"
19184fdd87SKonrad Dybcio #include "clk-regmap-divider.h"
20184fdd87SKonrad Dybcio #include "clk-regmap-mux.h"
21184fdd87SKonrad Dybcio #include "clk-regmap-phy-mux.h"
22184fdd87SKonrad Dybcio #include "gdsc.h"
23184fdd87SKonrad Dybcio #include "reset.h"
24184fdd87SKonrad Dybcio 
25184fdd87SKonrad Dybcio enum {
26184fdd87SKonrad Dybcio 	DT_BI_TCXO,
27184fdd87SKonrad Dybcio 	DT_BI_TCXO_AO,
28184fdd87SKonrad Dybcio 	DT_SLEEP_CLK
29184fdd87SKonrad Dybcio };
30184fdd87SKonrad Dybcio 
31184fdd87SKonrad Dybcio enum {
32184fdd87SKonrad Dybcio 	P_BI_TCXO,
33184fdd87SKonrad Dybcio 	P_GPLL0_OUT_EVEN,
34184fdd87SKonrad Dybcio 	P_GPLL0_OUT_MAIN,
35184fdd87SKonrad Dybcio 	P_GPLL0_OUT_ODD,
36184fdd87SKonrad Dybcio 	P_GPLL10_OUT_EVEN,
37184fdd87SKonrad Dybcio 	P_GPLL11_OUT_EVEN,
38184fdd87SKonrad Dybcio 	P_GPLL11_OUT_ODD,
39184fdd87SKonrad Dybcio 	P_GPLL3_OUT_EVEN,
40184fdd87SKonrad Dybcio 	P_GPLL3_OUT_MAIN,
41184fdd87SKonrad Dybcio 	P_GPLL4_OUT_EVEN,
42184fdd87SKonrad Dybcio 	P_GPLL5_OUT_EVEN,
43184fdd87SKonrad Dybcio 	P_GPLL6_OUT_EVEN,
44184fdd87SKonrad Dybcio 	P_GPLL6_OUT_MAIN,
45184fdd87SKonrad Dybcio 	P_GPLL7_OUT_EVEN,
46184fdd87SKonrad Dybcio 	P_GPLL8_OUT_EVEN,
47184fdd87SKonrad Dybcio 	P_GPLL8_OUT_MAIN,
48184fdd87SKonrad Dybcio 	P_GPLL9_OUT_EARLY,
49184fdd87SKonrad Dybcio 	P_GPLL9_OUT_MAIN,
50184fdd87SKonrad Dybcio 	P_SLEEP_CLK,
51184fdd87SKonrad Dybcio };
52184fdd87SKonrad Dybcio 
53184fdd87SKonrad Dybcio static struct pll_vco lucid_vco[] = {
54184fdd87SKonrad Dybcio 	{ 249600000, 2000000000, 0 },
55184fdd87SKonrad Dybcio };
56184fdd87SKonrad Dybcio 
57184fdd87SKonrad Dybcio static struct pll_vco zonda_vco[] = {
5839bc9b58SStephen Boyd 	{ 595200000, 3600000000UL, 0 },
59184fdd87SKonrad Dybcio };
60184fdd87SKonrad Dybcio 
61184fdd87SKonrad Dybcio static struct clk_alpha_pll gpll0 = {
62184fdd87SKonrad Dybcio 	.offset = 0x0,
63184fdd87SKonrad Dybcio 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
64184fdd87SKonrad Dybcio 	.clkr = {
65184fdd87SKonrad Dybcio 		.enable_reg = 0x79000,
66184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
67184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
68184fdd87SKonrad Dybcio 			.name = "gpll0",
69184fdd87SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
70184fdd87SKonrad Dybcio 				.index = DT_BI_TCXO,
71184fdd87SKonrad Dybcio 			},
72184fdd87SKonrad Dybcio 			.num_parents = 1,
73184fdd87SKonrad Dybcio 			.ops = &clk_alpha_pll_fixed_lucid_ops,
74184fdd87SKonrad Dybcio 		},
75184fdd87SKonrad Dybcio 	},
76184fdd87SKonrad Dybcio };
77184fdd87SKonrad Dybcio 
78184fdd87SKonrad Dybcio static const struct clk_div_table post_div_table_gpll0_out_even[] = {
79184fdd87SKonrad Dybcio 	{ 0x1, 2 },
80184fdd87SKonrad Dybcio 	{ }
81184fdd87SKonrad Dybcio };
82184fdd87SKonrad Dybcio 
83184fdd87SKonrad Dybcio static struct clk_alpha_pll_postdiv gpll0_out_even = {
84184fdd87SKonrad Dybcio 	.offset = 0x0,
85184fdd87SKonrad Dybcio 	.post_div_shift = 8,
86184fdd87SKonrad Dybcio 	.post_div_table = post_div_table_gpll0_out_even,
87184fdd87SKonrad Dybcio 	.num_post_div = ARRAY_SIZE(post_div_table_gpll0_out_even),
88184fdd87SKonrad Dybcio 	.width = 4,
89184fdd87SKonrad Dybcio 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
90184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
91184fdd87SKonrad Dybcio 		.name = "gpll0_out_even",
92184fdd87SKonrad Dybcio 		.parent_hws = (const struct clk_hw*[]){
93184fdd87SKonrad Dybcio 			&gpll0.clkr.hw,
94184fdd87SKonrad Dybcio 		},
95184fdd87SKonrad Dybcio 		.num_parents = 1,
96184fdd87SKonrad Dybcio 		.ops = &clk_alpha_pll_postdiv_lucid_ops,
97184fdd87SKonrad Dybcio 	},
98184fdd87SKonrad Dybcio };
99184fdd87SKonrad Dybcio 
100184fdd87SKonrad Dybcio static const struct clk_div_table post_div_table_gpll0_out_odd[] = {
101184fdd87SKonrad Dybcio 	{ 0x3, 3 },
102184fdd87SKonrad Dybcio 	{ }
103184fdd87SKonrad Dybcio };
104184fdd87SKonrad Dybcio 
105184fdd87SKonrad Dybcio static struct clk_alpha_pll_postdiv gpll0_out_odd = {
106184fdd87SKonrad Dybcio 	.offset = 0x0,
107184fdd87SKonrad Dybcio 	.post_div_shift = 12,
108184fdd87SKonrad Dybcio 	.post_div_table = post_div_table_gpll0_out_odd,
109184fdd87SKonrad Dybcio 	.num_post_div = ARRAY_SIZE(post_div_table_gpll0_out_odd),
110184fdd87SKonrad Dybcio 	.width = 4,
111184fdd87SKonrad Dybcio 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
112184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
113184fdd87SKonrad Dybcio 		.name = "gpll0_out_odd",
114184fdd87SKonrad Dybcio 		.parent_hws = (const struct clk_hw*[]){
115184fdd87SKonrad Dybcio 			&gpll0.clkr.hw,
116184fdd87SKonrad Dybcio 		},
117184fdd87SKonrad Dybcio 		.num_parents = 1,
118184fdd87SKonrad Dybcio 		.ops = &clk_alpha_pll_postdiv_lucid_ops,
119184fdd87SKonrad Dybcio 	},
120184fdd87SKonrad Dybcio };
121184fdd87SKonrad Dybcio 
122184fdd87SKonrad Dybcio static struct clk_alpha_pll gpll1 = {
123184fdd87SKonrad Dybcio 	.offset = 0x1000,
124184fdd87SKonrad Dybcio 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
125184fdd87SKonrad Dybcio 	.clkr = {
126184fdd87SKonrad Dybcio 		.enable_reg = 0x79000,
127184fdd87SKonrad Dybcio 		.enable_mask = BIT(1),
128184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
129184fdd87SKonrad Dybcio 			.name = "gpll1",
130184fdd87SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
131184fdd87SKonrad Dybcio 				.index = DT_BI_TCXO,
132184fdd87SKonrad Dybcio 			},
133184fdd87SKonrad Dybcio 			.num_parents = 1,
134184fdd87SKonrad Dybcio 			.ops = &clk_alpha_pll_lucid_ops,
135184fdd87SKonrad Dybcio 		},
136184fdd87SKonrad Dybcio 	},
137184fdd87SKonrad Dybcio };
138184fdd87SKonrad Dybcio 
139184fdd87SKonrad Dybcio /* 1152MHz Configuration */
140184fdd87SKonrad Dybcio static const struct alpha_pll_config gpll10_config = {
141184fdd87SKonrad Dybcio 	.l = 0x3c,
142184fdd87SKonrad Dybcio 	.alpha = 0x0,
143184fdd87SKonrad Dybcio 	.config_ctl_val = 0x20485699,
144184fdd87SKonrad Dybcio 	.config_ctl_hi_val = 0x00002261,
145184fdd87SKonrad Dybcio 	.config_ctl_hi1_val = 0x329a299c,
146184fdd87SKonrad Dybcio 	.user_ctl_val = 0x00000001,
147184fdd87SKonrad Dybcio 	.user_ctl_hi_val = 0x00000805,
148184fdd87SKonrad Dybcio 	.user_ctl_hi1_val = 0x00000000,
149184fdd87SKonrad Dybcio };
150184fdd87SKonrad Dybcio 
151184fdd87SKonrad Dybcio static struct clk_alpha_pll gpll10 = {
152184fdd87SKonrad Dybcio 	.offset = 0xa000,
153184fdd87SKonrad Dybcio 	.vco_table = lucid_vco,
154184fdd87SKonrad Dybcio 	.num_vco = ARRAY_SIZE(lucid_vco),
155184fdd87SKonrad Dybcio 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
156184fdd87SKonrad Dybcio 	.flags = SUPPORTS_FSM_LEGACY_MODE,
157184fdd87SKonrad Dybcio 	.clkr = {
158184fdd87SKonrad Dybcio 		.enable_reg = 0x79000,
159184fdd87SKonrad Dybcio 		.enable_mask = BIT(10),
160184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
161184fdd87SKonrad Dybcio 			.name = "gpll10",
162184fdd87SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
163184fdd87SKonrad Dybcio 				.index = DT_BI_TCXO,
164184fdd87SKonrad Dybcio 			},
165184fdd87SKonrad Dybcio 			.num_parents = 1,
166184fdd87SKonrad Dybcio 			.ops = &clk_alpha_pll_fixed_lucid_ops,
167184fdd87SKonrad Dybcio 		},
168184fdd87SKonrad Dybcio 	},
169184fdd87SKonrad Dybcio };
170184fdd87SKonrad Dybcio 
171184fdd87SKonrad Dybcio /* 532MHz Configuration */
172184fdd87SKonrad Dybcio static const struct alpha_pll_config gpll11_config = {
173184fdd87SKonrad Dybcio 	.l = 0x1b,
174184fdd87SKonrad Dybcio 	.alpha = 0xb555,
175184fdd87SKonrad Dybcio 	.config_ctl_val = 0x20485699,
176184fdd87SKonrad Dybcio 	.config_ctl_hi_val = 0x00002261,
177184fdd87SKonrad Dybcio 	.config_ctl_hi1_val = 0x329a299c,
178184fdd87SKonrad Dybcio 	.user_ctl_val = 0x00000001,
179184fdd87SKonrad Dybcio 	.user_ctl_hi_val = 0x00000805,
180184fdd87SKonrad Dybcio 	.user_ctl_hi1_val = 0x00000000,
181184fdd87SKonrad Dybcio };
182184fdd87SKonrad Dybcio 
183184fdd87SKonrad Dybcio static struct clk_alpha_pll gpll11 = {
184184fdd87SKonrad Dybcio 	.offset = 0xb000,
185184fdd87SKonrad Dybcio 	.vco_table = lucid_vco,
186184fdd87SKonrad Dybcio 	.num_vco = ARRAY_SIZE(lucid_vco),
187184fdd87SKonrad Dybcio 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
188184fdd87SKonrad Dybcio 	.flags = SUPPORTS_FSM_LEGACY_MODE,
189184fdd87SKonrad Dybcio 	.clkr = {
190184fdd87SKonrad Dybcio 		.enable_reg = 0x79000,
191184fdd87SKonrad Dybcio 		.enable_mask = BIT(11),
192184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
193184fdd87SKonrad Dybcio 			.name = "gpll11",
194184fdd87SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
195184fdd87SKonrad Dybcio 				.index = DT_BI_TCXO,
196184fdd87SKonrad Dybcio 			},
197184fdd87SKonrad Dybcio 			.num_parents = 1,
198184fdd87SKonrad Dybcio 			.ops = &clk_alpha_pll_lucid_ops,
199184fdd87SKonrad Dybcio 		},
200184fdd87SKonrad Dybcio 	},
201184fdd87SKonrad Dybcio };
202184fdd87SKonrad Dybcio 
203184fdd87SKonrad Dybcio static struct clk_alpha_pll gpll3 = {
204184fdd87SKonrad Dybcio 	.offset = 0x3000,
205184fdd87SKonrad Dybcio 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
206184fdd87SKonrad Dybcio 	.clkr = {
207184fdd87SKonrad Dybcio 		.enable_reg = 0x79000,
208184fdd87SKonrad Dybcio 		.enable_mask = BIT(3),
209184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
210184fdd87SKonrad Dybcio 			.name = "gpll3",
211184fdd87SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
212184fdd87SKonrad Dybcio 				.index = DT_BI_TCXO,
213184fdd87SKonrad Dybcio 			},
214184fdd87SKonrad Dybcio 			.num_parents = 1,
215184fdd87SKonrad Dybcio 			.ops = &clk_alpha_pll_fixed_lucid_ops,
216184fdd87SKonrad Dybcio 		},
217184fdd87SKonrad Dybcio 	},
218184fdd87SKonrad Dybcio };
219184fdd87SKonrad Dybcio 
220184fdd87SKonrad Dybcio static const struct clk_div_table post_div_table_gpll3_out_even[] = {
221184fdd87SKonrad Dybcio 	{ 0x1, 2 },
222184fdd87SKonrad Dybcio 	{ }
223184fdd87SKonrad Dybcio };
224184fdd87SKonrad Dybcio 
225184fdd87SKonrad Dybcio static struct clk_alpha_pll_postdiv gpll3_out_even = {
226184fdd87SKonrad Dybcio 	.offset = 0x3000,
227184fdd87SKonrad Dybcio 	.post_div_shift = 8,
228184fdd87SKonrad Dybcio 	.post_div_table = post_div_table_gpll3_out_even,
229184fdd87SKonrad Dybcio 	.num_post_div = ARRAY_SIZE(post_div_table_gpll3_out_even),
230184fdd87SKonrad Dybcio 	.width = 4,
231184fdd87SKonrad Dybcio 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
232184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
233184fdd87SKonrad Dybcio 		.name = "gpll3_out_even",
234184fdd87SKonrad Dybcio 		.parent_hws = (const struct clk_hw*[]){
235184fdd87SKonrad Dybcio 			&gpll3.clkr.hw,
236184fdd87SKonrad Dybcio 		},
237184fdd87SKonrad Dybcio 		.num_parents = 1,
238184fdd87SKonrad Dybcio 		.ops = &clk_alpha_pll_postdiv_lucid_ops,
239184fdd87SKonrad Dybcio 	},
240184fdd87SKonrad Dybcio };
241184fdd87SKonrad Dybcio 
242184fdd87SKonrad Dybcio static struct clk_alpha_pll gpll4 = {
243184fdd87SKonrad Dybcio 	.offset = 0x4000,
244184fdd87SKonrad Dybcio 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
245184fdd87SKonrad Dybcio 	.clkr = {
246184fdd87SKonrad Dybcio 		.enable_reg = 0x79000,
247184fdd87SKonrad Dybcio 		.enable_mask = BIT(4),
248184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
249184fdd87SKonrad Dybcio 			.name = "gpll4",
250184fdd87SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
251184fdd87SKonrad Dybcio 				.index = DT_BI_TCXO,
252184fdd87SKonrad Dybcio 			},
253184fdd87SKonrad Dybcio 			.num_parents = 1,
254184fdd87SKonrad Dybcio 			.ops = &clk_alpha_pll_fixed_lucid_ops,
255184fdd87SKonrad Dybcio 		},
256184fdd87SKonrad Dybcio 	},
257184fdd87SKonrad Dybcio };
258184fdd87SKonrad Dybcio 
259184fdd87SKonrad Dybcio static struct clk_alpha_pll gpll5 = {
260184fdd87SKonrad Dybcio 	.offset = 0x5000,
261184fdd87SKonrad Dybcio 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
262184fdd87SKonrad Dybcio 	.clkr = {
263184fdd87SKonrad Dybcio 		.enable_reg = 0x79000,
264184fdd87SKonrad Dybcio 		.enable_mask = BIT(5),
265184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
266184fdd87SKonrad Dybcio 			.name = "gpll5",
267184fdd87SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
268184fdd87SKonrad Dybcio 				.index = DT_BI_TCXO,
269184fdd87SKonrad Dybcio 			},
270184fdd87SKonrad Dybcio 			.num_parents = 1,
271184fdd87SKonrad Dybcio 			.ops = &clk_alpha_pll_fixed_lucid_ops,
272184fdd87SKonrad Dybcio 		},
273184fdd87SKonrad Dybcio 	},
274184fdd87SKonrad Dybcio };
275184fdd87SKonrad Dybcio 
276184fdd87SKonrad Dybcio static struct clk_alpha_pll gpll6 = {
277184fdd87SKonrad Dybcio 	.offset = 0x6000,
278184fdd87SKonrad Dybcio 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
279184fdd87SKonrad Dybcio 	.clkr = {
280184fdd87SKonrad Dybcio 		.enable_reg = 0x79000,
281184fdd87SKonrad Dybcio 		.enable_mask = BIT(6),
282184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
283184fdd87SKonrad Dybcio 			.name = "gpll6",
284184fdd87SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
285184fdd87SKonrad Dybcio 				.index = DT_BI_TCXO,
286184fdd87SKonrad Dybcio 			},
287184fdd87SKonrad Dybcio 			.num_parents = 1,
288184fdd87SKonrad Dybcio 			.ops = &clk_alpha_pll_fixed_lucid_ops,
289184fdd87SKonrad Dybcio 		},
290184fdd87SKonrad Dybcio 	},
291184fdd87SKonrad Dybcio };
292184fdd87SKonrad Dybcio 
293184fdd87SKonrad Dybcio static const struct clk_div_table post_div_table_gpll6_out_even[] = {
294184fdd87SKonrad Dybcio 	{ 0x1, 2 },
295184fdd87SKonrad Dybcio 	{ }
296184fdd87SKonrad Dybcio };
297184fdd87SKonrad Dybcio 
298184fdd87SKonrad Dybcio static struct clk_alpha_pll_postdiv gpll6_out_even = {
299184fdd87SKonrad Dybcio 	.offset = 0x6000,
300184fdd87SKonrad Dybcio 	.post_div_shift = 8,
301184fdd87SKonrad Dybcio 	.post_div_table = post_div_table_gpll6_out_even,
302184fdd87SKonrad Dybcio 	.num_post_div = ARRAY_SIZE(post_div_table_gpll6_out_even),
303184fdd87SKonrad Dybcio 	.width = 4,
304184fdd87SKonrad Dybcio 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
305184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
306184fdd87SKonrad Dybcio 		.name = "gpll6_out_even",
307184fdd87SKonrad Dybcio 		.parent_hws = (const struct clk_hw*[]){
308184fdd87SKonrad Dybcio 			&gpll6.clkr.hw,
309184fdd87SKonrad Dybcio 		},
310184fdd87SKonrad Dybcio 		.num_parents = 1,
311184fdd87SKonrad Dybcio 		.ops = &clk_alpha_pll_postdiv_lucid_ops,
312184fdd87SKonrad Dybcio 	},
313184fdd87SKonrad Dybcio };
314184fdd87SKonrad Dybcio 
315184fdd87SKonrad Dybcio static struct clk_alpha_pll gpll7 = {
316184fdd87SKonrad Dybcio 	.offset = 0x7000,
317184fdd87SKonrad Dybcio 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
318184fdd87SKonrad Dybcio 	.clkr = {
319184fdd87SKonrad Dybcio 		.enable_reg = 0x79000,
320184fdd87SKonrad Dybcio 		.enable_mask = BIT(7),
321184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
322184fdd87SKonrad Dybcio 			.name = "gpll7",
323184fdd87SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
324184fdd87SKonrad Dybcio 				.index = DT_BI_TCXO,
325184fdd87SKonrad Dybcio 			},
326184fdd87SKonrad Dybcio 			.num_parents = 1,
327184fdd87SKonrad Dybcio 			.ops = &clk_alpha_pll_fixed_lucid_ops,
328184fdd87SKonrad Dybcio 		},
329184fdd87SKonrad Dybcio 	},
330184fdd87SKonrad Dybcio };
331184fdd87SKonrad Dybcio 
332184fdd87SKonrad Dybcio /* 400MHz Configuration */
333184fdd87SKonrad Dybcio static const struct alpha_pll_config gpll8_config = {
334184fdd87SKonrad Dybcio 	.l = 0x14,
335184fdd87SKonrad Dybcio 	.alpha = 0xd555,
336184fdd87SKonrad Dybcio 	.config_ctl_val = 0x20485699,
337184fdd87SKonrad Dybcio 	.config_ctl_hi_val = 0x00002261,
338184fdd87SKonrad Dybcio 	.config_ctl_hi1_val = 0x329a299c,
339184fdd87SKonrad Dybcio 	.user_ctl_val = 0x00000101,
340184fdd87SKonrad Dybcio 	.user_ctl_hi_val = 0x00000805,
341184fdd87SKonrad Dybcio 	.user_ctl_hi1_val = 0x00000000,
342184fdd87SKonrad Dybcio };
343184fdd87SKonrad Dybcio 
344184fdd87SKonrad Dybcio static struct clk_alpha_pll gpll8 = {
345184fdd87SKonrad Dybcio 	.offset = 0x8000,
346184fdd87SKonrad Dybcio 	.vco_table = lucid_vco,
347184fdd87SKonrad Dybcio 	.num_vco = ARRAY_SIZE(lucid_vco),
348184fdd87SKonrad Dybcio 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
349184fdd87SKonrad Dybcio 	.flags = SUPPORTS_FSM_LEGACY_MODE,
350184fdd87SKonrad Dybcio 	.clkr = {
351184fdd87SKonrad Dybcio 		.enable_reg = 0x79000,
352184fdd87SKonrad Dybcio 		.enable_mask = BIT(8),
353184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
354184fdd87SKonrad Dybcio 			.name = "gpll8",
355184fdd87SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
356184fdd87SKonrad Dybcio 				.index = DT_BI_TCXO,
357184fdd87SKonrad Dybcio 			},
358184fdd87SKonrad Dybcio 			.num_parents = 1,
359184fdd87SKonrad Dybcio 			.ops = &clk_alpha_pll_lucid_ops,
360184fdd87SKonrad Dybcio 		},
361184fdd87SKonrad Dybcio 	},
362184fdd87SKonrad Dybcio };
363184fdd87SKonrad Dybcio 
364184fdd87SKonrad Dybcio static const struct clk_div_table post_div_table_gpll8_out_even[] = {
365184fdd87SKonrad Dybcio 	{ 0x1, 2 },
366184fdd87SKonrad Dybcio 	{ }
367184fdd87SKonrad Dybcio };
368184fdd87SKonrad Dybcio 
369184fdd87SKonrad Dybcio static struct clk_alpha_pll_postdiv gpll8_out_even = {
370184fdd87SKonrad Dybcio 	.offset = 0x8000,
371184fdd87SKonrad Dybcio 	.post_div_shift = 8,
372184fdd87SKonrad Dybcio 	.post_div_table = post_div_table_gpll8_out_even,
373184fdd87SKonrad Dybcio 	.num_post_div = ARRAY_SIZE(post_div_table_gpll8_out_even),
374184fdd87SKonrad Dybcio 	.width = 4,
375184fdd87SKonrad Dybcio 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
376184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
377184fdd87SKonrad Dybcio 		.name = "gpll8_out_even",
378184fdd87SKonrad Dybcio 		.parent_hws = (const struct clk_hw*[]){
379184fdd87SKonrad Dybcio 			&gpll8.clkr.hw,
380184fdd87SKonrad Dybcio 		},
381184fdd87SKonrad Dybcio 		.num_parents = 1,
382184fdd87SKonrad Dybcio 		.flags = CLK_SET_RATE_PARENT,
383184fdd87SKonrad Dybcio 		.ops = &clk_alpha_pll_postdiv_lucid_ops,
384184fdd87SKonrad Dybcio 	},
385184fdd87SKonrad Dybcio };
386184fdd87SKonrad Dybcio 
387184fdd87SKonrad Dybcio /* 1440MHz Configuration */
388184fdd87SKonrad Dybcio static const struct alpha_pll_config gpll9_config = {
389184fdd87SKonrad Dybcio 	.l = 0x4b,
390184fdd87SKonrad Dybcio 	.alpha = 0x0,
391184fdd87SKonrad Dybcio 	.config_ctl_val = 0x08200800,
392184fdd87SKonrad Dybcio 	.config_ctl_hi_val = 0x05022011,
393184fdd87SKonrad Dybcio 	.config_ctl_hi1_val = 0x08000000,
394184fdd87SKonrad Dybcio 	.user_ctl_val = 0x00000301,
395184fdd87SKonrad Dybcio };
396184fdd87SKonrad Dybcio 
397184fdd87SKonrad Dybcio static struct clk_alpha_pll gpll9 = {
398184fdd87SKonrad Dybcio 	.offset = 0x9000,
399184fdd87SKonrad Dybcio 	.vco_table = zonda_vco,
400184fdd87SKonrad Dybcio 	.num_vco = ARRAY_SIZE(zonda_vco),
401184fdd87SKonrad Dybcio 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_ZONDA],
402184fdd87SKonrad Dybcio 	.clkr = {
403184fdd87SKonrad Dybcio 		.enable_reg = 0x79000,
404184fdd87SKonrad Dybcio 		.enable_mask = BIT(9),
405184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
406184fdd87SKonrad Dybcio 			.name = "gpll9",
407184fdd87SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
408184fdd87SKonrad Dybcio 				.index = DT_BI_TCXO,
409184fdd87SKonrad Dybcio 			},
410184fdd87SKonrad Dybcio 			.num_parents = 1,
411184fdd87SKonrad Dybcio 			.ops = &clk_alpha_pll_zonda_ops,
412184fdd87SKonrad Dybcio 		},
413184fdd87SKonrad Dybcio 	},
414184fdd87SKonrad Dybcio };
415184fdd87SKonrad Dybcio 
416184fdd87SKonrad Dybcio static const struct clk_div_table post_div_table_gpll9_out_main[] = {
417184fdd87SKonrad Dybcio 	{ 0x3, 4 },
418184fdd87SKonrad Dybcio 	{ }
419184fdd87SKonrad Dybcio };
420184fdd87SKonrad Dybcio 
421184fdd87SKonrad Dybcio static struct clk_alpha_pll_postdiv gpll9_out_main = {
422184fdd87SKonrad Dybcio 	.offset = 0x9000,
423184fdd87SKonrad Dybcio 	.post_div_shift = 8,
424184fdd87SKonrad Dybcio 	.post_div_table = post_div_table_gpll9_out_main,
425184fdd87SKonrad Dybcio 	.num_post_div = ARRAY_SIZE(post_div_table_gpll9_out_main),
426184fdd87SKonrad Dybcio 	.width = 2,
427184fdd87SKonrad Dybcio 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_ZONDA],
428184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
429184fdd87SKonrad Dybcio 		.name = "gpll9_out_main",
430184fdd87SKonrad Dybcio 		.parent_hws = (const struct clk_hw*[]){
431184fdd87SKonrad Dybcio 			&gpll9.clkr.hw,
432184fdd87SKonrad Dybcio 		},
433184fdd87SKonrad Dybcio 		.num_parents = 1,
434184fdd87SKonrad Dybcio 		.flags = CLK_SET_RATE_PARENT,
435184fdd87SKonrad Dybcio 		.ops = &clk_alpha_pll_postdiv_zonda_ops,
436184fdd87SKonrad Dybcio 	},
437184fdd87SKonrad Dybcio };
438184fdd87SKonrad Dybcio 
439184fdd87SKonrad Dybcio static const struct parent_map gcc_parent_map_0[] = {
440184fdd87SKonrad Dybcio 	{ P_BI_TCXO, 0 },
441184fdd87SKonrad Dybcio 	{ P_GPLL0_OUT_MAIN, 1 },
442184fdd87SKonrad Dybcio 	{ P_GPLL0_OUT_EVEN, 2 },
443184fdd87SKonrad Dybcio };
444184fdd87SKonrad Dybcio 
445184fdd87SKonrad Dybcio static const struct clk_parent_data gcc_parent_data_0[] = {
446184fdd87SKonrad Dybcio 	{ .index = DT_BI_TCXO },
447184fdd87SKonrad Dybcio 	{ .hw = &gpll0.clkr.hw },
448184fdd87SKonrad Dybcio 	{ .hw = &gpll0_out_even.clkr.hw },
449184fdd87SKonrad Dybcio };
450184fdd87SKonrad Dybcio 
451184fdd87SKonrad Dybcio static const struct parent_map gcc_parent_map_1[] = {
452184fdd87SKonrad Dybcio 	{ P_BI_TCXO, 0 },
453184fdd87SKonrad Dybcio 	{ P_GPLL0_OUT_MAIN, 1 },
454184fdd87SKonrad Dybcio 	{ P_GPLL0_OUT_EVEN, 2 },
455184fdd87SKonrad Dybcio 	{ P_GPLL6_OUT_EVEN, 4 },
456184fdd87SKonrad Dybcio };
457184fdd87SKonrad Dybcio 
458184fdd87SKonrad Dybcio static const struct clk_parent_data gcc_parent_data_1[] = {
459184fdd87SKonrad Dybcio 	{ .index = DT_BI_TCXO },
460184fdd87SKonrad Dybcio 	{ .hw = &gpll0.clkr.hw },
461184fdd87SKonrad Dybcio 	{ .hw = &gpll0_out_even.clkr.hw },
462184fdd87SKonrad Dybcio 	{ .hw = &gpll6_out_even.clkr.hw },
463184fdd87SKonrad Dybcio };
464184fdd87SKonrad Dybcio 
465184fdd87SKonrad Dybcio static const struct parent_map gcc_parent_map_2[] = {
466184fdd87SKonrad Dybcio 	{ P_BI_TCXO, 0 },
467184fdd87SKonrad Dybcio 	{ P_GPLL0_OUT_MAIN, 1 },
468184fdd87SKonrad Dybcio 	{ P_GPLL0_OUT_EVEN, 2 },
469184fdd87SKonrad Dybcio 	{ P_GPLL0_OUT_ODD, 4 },
470184fdd87SKonrad Dybcio };
471184fdd87SKonrad Dybcio 
472184fdd87SKonrad Dybcio static const struct clk_parent_data gcc_parent_data_2[] = {
473184fdd87SKonrad Dybcio 	{ .index = DT_BI_TCXO },
474184fdd87SKonrad Dybcio 	{ .hw = &gpll0.clkr.hw },
475184fdd87SKonrad Dybcio 	{ .hw = &gpll0_out_even.clkr.hw },
476184fdd87SKonrad Dybcio 	{ .hw = &gpll0_out_odd.clkr.hw },
477184fdd87SKonrad Dybcio };
478184fdd87SKonrad Dybcio 
479184fdd87SKonrad Dybcio static const struct clk_parent_data gcc_parent_data_2_ao[] = {
480184fdd87SKonrad Dybcio 	{ .index = DT_BI_TCXO_AO },
481184fdd87SKonrad Dybcio 	{ .hw = &gpll0.clkr.hw },
482184fdd87SKonrad Dybcio 	{ .hw = &gpll0_out_even.clkr.hw },
483184fdd87SKonrad Dybcio 	{ .hw = &gpll0_out_odd.clkr.hw },
484184fdd87SKonrad Dybcio };
485184fdd87SKonrad Dybcio 
486184fdd87SKonrad Dybcio static const struct parent_map gcc_parent_map_3[] = {
487184fdd87SKonrad Dybcio 	{ P_BI_TCXO, 0 },
488184fdd87SKonrad Dybcio 	{ P_GPLL0_OUT_MAIN, 1 },
489184fdd87SKonrad Dybcio 	{ P_GPLL9_OUT_EARLY, 2 },
490184fdd87SKonrad Dybcio 	{ P_GPLL10_OUT_EVEN, 3 },
491184fdd87SKonrad Dybcio 	{ P_GPLL9_OUT_MAIN, 4 },
492184fdd87SKonrad Dybcio 	{ P_GPLL3_OUT_EVEN, 6 },
493184fdd87SKonrad Dybcio };
494184fdd87SKonrad Dybcio 
495184fdd87SKonrad Dybcio static const struct clk_parent_data gcc_parent_data_3[] = {
496184fdd87SKonrad Dybcio 	{ .index = DT_BI_TCXO },
497184fdd87SKonrad Dybcio 	{ .hw = &gpll0.clkr.hw },
498184fdd87SKonrad Dybcio 	{ .hw = &gpll9.clkr.hw },
499184fdd87SKonrad Dybcio 	{ .hw = &gpll10.clkr.hw },
500184fdd87SKonrad Dybcio 	{ .hw = &gpll9_out_main.clkr.hw },
501184fdd87SKonrad Dybcio 	{ .hw = &gpll3_out_even.clkr.hw },
502184fdd87SKonrad Dybcio };
503184fdd87SKonrad Dybcio 
504184fdd87SKonrad Dybcio static const struct parent_map gcc_parent_map_4[] = {
505184fdd87SKonrad Dybcio 	{ P_BI_TCXO, 0 },
506184fdd87SKonrad Dybcio 	{ P_GPLL0_OUT_MAIN, 1 },
507184fdd87SKonrad Dybcio 	{ P_GPLL0_OUT_EVEN, 2 },
508184fdd87SKonrad Dybcio 	{ P_GPLL0_OUT_ODD, 4 },
509184fdd87SKonrad Dybcio 	{ P_GPLL4_OUT_EVEN, 5 },
510184fdd87SKonrad Dybcio 	{ P_GPLL3_OUT_EVEN, 6 },
511184fdd87SKonrad Dybcio };
512184fdd87SKonrad Dybcio 
513184fdd87SKonrad Dybcio static const struct clk_parent_data gcc_parent_data_4[] = {
514184fdd87SKonrad Dybcio 	{ .index = DT_BI_TCXO },
515184fdd87SKonrad Dybcio 	{ .hw = &gpll0.clkr.hw },
516184fdd87SKonrad Dybcio 	{ .hw = &gpll0_out_even.clkr.hw },
517184fdd87SKonrad Dybcio 	{ .hw = &gpll0_out_odd.clkr.hw },
518184fdd87SKonrad Dybcio 	{ .hw = &gpll4.clkr.hw },
519184fdd87SKonrad Dybcio 	{ .hw = &gpll3_out_even.clkr.hw },
520184fdd87SKonrad Dybcio };
521184fdd87SKonrad Dybcio 
522184fdd87SKonrad Dybcio static const struct parent_map gcc_parent_map_5[] = {
523184fdd87SKonrad Dybcio 	{ P_BI_TCXO, 0 },
524184fdd87SKonrad Dybcio 	{ P_GPLL0_OUT_MAIN, 1 },
525184fdd87SKonrad Dybcio 	{ P_GPLL8_OUT_MAIN, 2 },
526184fdd87SKonrad Dybcio 	{ P_GPLL10_OUT_EVEN, 3 },
527184fdd87SKonrad Dybcio 	{ P_GPLL9_OUT_MAIN, 4 },
528184fdd87SKonrad Dybcio 	{ P_GPLL8_OUT_EVEN, 5 },
529184fdd87SKonrad Dybcio 	{ P_GPLL3_OUT_EVEN, 6 },
530184fdd87SKonrad Dybcio };
531184fdd87SKonrad Dybcio 
532184fdd87SKonrad Dybcio static const struct clk_parent_data gcc_parent_data_5[] = {
533184fdd87SKonrad Dybcio 	{ .index = DT_BI_TCXO },
534184fdd87SKonrad Dybcio 	{ .hw = &gpll0.clkr.hw },
535184fdd87SKonrad Dybcio 	{ .hw = &gpll8.clkr.hw },
536184fdd87SKonrad Dybcio 	{ .hw = &gpll10.clkr.hw },
537184fdd87SKonrad Dybcio 	{ .hw = &gpll9_out_main.clkr.hw },
538184fdd87SKonrad Dybcio 	{ .hw = &gpll8_out_even.clkr.hw },
539184fdd87SKonrad Dybcio 	{ .hw = &gpll3_out_even.clkr.hw },
540184fdd87SKonrad Dybcio };
541184fdd87SKonrad Dybcio 
542184fdd87SKonrad Dybcio static const struct parent_map gcc_parent_map_6[] = {
543184fdd87SKonrad Dybcio 	{ P_BI_TCXO, 0 },
544184fdd87SKonrad Dybcio 	{ P_GPLL0_OUT_MAIN, 1 },
545184fdd87SKonrad Dybcio 	{ P_GPLL8_OUT_MAIN, 2 },
546184fdd87SKonrad Dybcio 	{ P_GPLL5_OUT_EVEN, 3 },
547184fdd87SKonrad Dybcio 	{ P_GPLL9_OUT_MAIN, 4 },
548184fdd87SKonrad Dybcio 	{ P_GPLL8_OUT_EVEN, 5 },
549184fdd87SKonrad Dybcio 	{ P_GPLL3_OUT_MAIN, 6 },
550184fdd87SKonrad Dybcio };
551184fdd87SKonrad Dybcio 
552184fdd87SKonrad Dybcio static const struct clk_parent_data gcc_parent_data_6[] = {
553184fdd87SKonrad Dybcio 	{ .index = DT_BI_TCXO },
554184fdd87SKonrad Dybcio 	{ .hw = &gpll0.clkr.hw },
555184fdd87SKonrad Dybcio 	{ .hw = &gpll8.clkr.hw },
556184fdd87SKonrad Dybcio 	{ .hw = &gpll5.clkr.hw },
557184fdd87SKonrad Dybcio 	{ .hw = &gpll9_out_main.clkr.hw },
558184fdd87SKonrad Dybcio 	{ .hw = &gpll8_out_even.clkr.hw },
559184fdd87SKonrad Dybcio 	{ .hw = &gpll3.clkr.hw },
560184fdd87SKonrad Dybcio };
561184fdd87SKonrad Dybcio 
562184fdd87SKonrad Dybcio static const struct parent_map gcc_parent_map_7[] = {
563184fdd87SKonrad Dybcio 	{ P_BI_TCXO, 0 },
564184fdd87SKonrad Dybcio 	{ P_GPLL0_OUT_MAIN, 1 },
565184fdd87SKonrad Dybcio 	{ P_GPLL0_OUT_EVEN, 2 },
566184fdd87SKonrad Dybcio 	{ P_GPLL0_OUT_ODD, 4 },
567184fdd87SKonrad Dybcio 	{ P_SLEEP_CLK, 5 },
568184fdd87SKonrad Dybcio };
569184fdd87SKonrad Dybcio 
570184fdd87SKonrad Dybcio static const struct clk_parent_data gcc_parent_data_7[] = {
571184fdd87SKonrad Dybcio 	{ .index = DT_BI_TCXO },
572184fdd87SKonrad Dybcio 	{ .hw = &gpll0.clkr.hw },
573184fdd87SKonrad Dybcio 	{ .hw = &gpll0_out_even.clkr.hw },
574184fdd87SKonrad Dybcio 	{ .hw = &gpll0_out_odd.clkr.hw },
575184fdd87SKonrad Dybcio 	{ .index = DT_SLEEP_CLK },
576184fdd87SKonrad Dybcio };
577184fdd87SKonrad Dybcio 
578184fdd87SKonrad Dybcio static const struct parent_map gcc_parent_map_8[] = {
579184fdd87SKonrad Dybcio 	{ P_BI_TCXO, 0 },
580184fdd87SKonrad Dybcio 	{ P_GPLL0_OUT_MAIN, 1 },
581184fdd87SKonrad Dybcio 	{ P_GPLL0_OUT_EVEN, 2 },
582184fdd87SKonrad Dybcio 	{ P_GPLL10_OUT_EVEN, 3 },
583184fdd87SKonrad Dybcio 	{ P_GPLL4_OUT_EVEN, 5 },
584184fdd87SKonrad Dybcio 	{ P_GPLL3_OUT_MAIN, 6 },
585184fdd87SKonrad Dybcio };
586184fdd87SKonrad Dybcio 
587184fdd87SKonrad Dybcio static const struct clk_parent_data gcc_parent_data_8[] = {
588184fdd87SKonrad Dybcio 	{ .index = DT_BI_TCXO },
589184fdd87SKonrad Dybcio 	{ .hw = &gpll0.clkr.hw },
590184fdd87SKonrad Dybcio 	{ .hw = &gpll0_out_even.clkr.hw },
591184fdd87SKonrad Dybcio 	{ .hw = &gpll10.clkr.hw },
592184fdd87SKonrad Dybcio 	{ .hw = &gpll4.clkr.hw },
593184fdd87SKonrad Dybcio 	{ .hw = &gpll3.clkr.hw },
594184fdd87SKonrad Dybcio };
595184fdd87SKonrad Dybcio 
596184fdd87SKonrad Dybcio static const struct parent_map gcc_parent_map_9[] = {
597184fdd87SKonrad Dybcio 	{ P_BI_TCXO, 0 },
598184fdd87SKonrad Dybcio 	{ P_GPLL0_OUT_MAIN, 1 },
599184fdd87SKonrad Dybcio 	{ P_GPLL0_OUT_EVEN, 2 },
600184fdd87SKonrad Dybcio 	{ P_GPLL10_OUT_EVEN, 3 },
601184fdd87SKonrad Dybcio 	{ P_GPLL9_OUT_MAIN, 4 },
602184fdd87SKonrad Dybcio 	{ P_GPLL8_OUT_EVEN, 5 },
603184fdd87SKonrad Dybcio 	{ P_GPLL3_OUT_MAIN, 6 },
604184fdd87SKonrad Dybcio };
605184fdd87SKonrad Dybcio 
606184fdd87SKonrad Dybcio static const struct clk_parent_data gcc_parent_data_9[] = {
607184fdd87SKonrad Dybcio 	{ .index = DT_BI_TCXO },
608184fdd87SKonrad Dybcio 	{ .hw = &gpll0.clkr.hw },
609184fdd87SKonrad Dybcio 	{ .hw = &gpll0_out_even.clkr.hw },
610184fdd87SKonrad Dybcio 	{ .hw = &gpll10.clkr.hw },
611184fdd87SKonrad Dybcio 	{ .hw = &gpll9_out_main.clkr.hw },
612184fdd87SKonrad Dybcio 	{ .hw = &gpll8_out_even.clkr.hw },
613184fdd87SKonrad Dybcio 	{ .hw = &gpll3.clkr.hw },
614184fdd87SKonrad Dybcio };
615184fdd87SKonrad Dybcio 
616184fdd87SKonrad Dybcio static const struct parent_map gcc_parent_map_10[] = {
617184fdd87SKonrad Dybcio 	{ P_BI_TCXO, 0 },
618184fdd87SKonrad Dybcio 	{ P_GPLL0_OUT_MAIN, 1 },
619184fdd87SKonrad Dybcio 	{ P_GPLL8_OUT_MAIN, 2 },
620184fdd87SKonrad Dybcio 	{ P_GPLL10_OUT_EVEN, 3 },
621184fdd87SKonrad Dybcio 	{ P_GPLL9_OUT_MAIN, 4 },
622184fdd87SKonrad Dybcio 	{ P_GPLL8_OUT_EVEN, 5 },
623184fdd87SKonrad Dybcio 	{ P_GPLL3_OUT_MAIN, 6 },
624184fdd87SKonrad Dybcio };
625184fdd87SKonrad Dybcio 
626184fdd87SKonrad Dybcio static const struct clk_parent_data gcc_parent_data_10[] = {
627184fdd87SKonrad Dybcio 	{ .index = DT_BI_TCXO },
628184fdd87SKonrad Dybcio 	{ .hw = &gpll0.clkr.hw },
629184fdd87SKonrad Dybcio 	{ .hw = &gpll8.clkr.hw },
630184fdd87SKonrad Dybcio 	{ .hw = &gpll10.clkr.hw },
631184fdd87SKonrad Dybcio 	{ .hw = &gpll9_out_main.clkr.hw },
632184fdd87SKonrad Dybcio 	{ .hw = &gpll8_out_even.clkr.hw },
633184fdd87SKonrad Dybcio 	{ .hw = &gpll3.clkr.hw },
634184fdd87SKonrad Dybcio };
635184fdd87SKonrad Dybcio 
636184fdd87SKonrad Dybcio static const struct parent_map gcc_parent_map_11[] = {
637184fdd87SKonrad Dybcio 	{ P_BI_TCXO, 0 },
638184fdd87SKonrad Dybcio 	{ P_GPLL0_OUT_MAIN, 1 },
639184fdd87SKonrad Dybcio 	{ P_GPLL8_OUT_MAIN, 2 },
640184fdd87SKonrad Dybcio 	{ P_GPLL10_OUT_EVEN, 3 },
641184fdd87SKonrad Dybcio 	{ P_GPLL6_OUT_MAIN, 4 },
642184fdd87SKonrad Dybcio 	{ P_GPLL3_OUT_EVEN, 6 },
643184fdd87SKonrad Dybcio };
644184fdd87SKonrad Dybcio 
645184fdd87SKonrad Dybcio static const struct clk_parent_data gcc_parent_data_11[] = {
646184fdd87SKonrad Dybcio 	{ .index = DT_BI_TCXO },
647184fdd87SKonrad Dybcio 	{ .hw = &gpll0.clkr.hw },
648184fdd87SKonrad Dybcio 	{ .hw = &gpll8.clkr.hw },
649184fdd87SKonrad Dybcio 	{ .hw = &gpll10.clkr.hw },
650184fdd87SKonrad Dybcio 	{ .hw = &gpll6.clkr.hw },
651184fdd87SKonrad Dybcio 	{ .hw = &gpll3_out_even.clkr.hw },
652184fdd87SKonrad Dybcio };
653184fdd87SKonrad Dybcio 
654184fdd87SKonrad Dybcio static const struct parent_map gcc_parent_map_12[] = {
655184fdd87SKonrad Dybcio 	{ P_BI_TCXO, 0 },
656184fdd87SKonrad Dybcio 	{ P_GPLL0_OUT_MAIN, 1 },
657184fdd87SKonrad Dybcio 	{ P_GPLL0_OUT_EVEN, 2 },
658184fdd87SKonrad Dybcio 	{ P_GPLL7_OUT_EVEN, 3 },
659184fdd87SKonrad Dybcio 	{ P_GPLL4_OUT_EVEN, 5 },
660184fdd87SKonrad Dybcio };
661184fdd87SKonrad Dybcio 
662184fdd87SKonrad Dybcio static const struct clk_parent_data gcc_parent_data_12[] = {
663184fdd87SKonrad Dybcio 	{ .index = DT_BI_TCXO },
664184fdd87SKonrad Dybcio 	{ .hw = &gpll0.clkr.hw },
665184fdd87SKonrad Dybcio 	{ .hw = &gpll0_out_even.clkr.hw },
666184fdd87SKonrad Dybcio 	{ .hw = &gpll7.clkr.hw },
667184fdd87SKonrad Dybcio 	{ .hw = &gpll4.clkr.hw },
668184fdd87SKonrad Dybcio };
669184fdd87SKonrad Dybcio 
670184fdd87SKonrad Dybcio static const struct parent_map gcc_parent_map_13[] = {
671184fdd87SKonrad Dybcio 	{ P_BI_TCXO, 0 },
672184fdd87SKonrad Dybcio 	{ P_SLEEP_CLK, 5 },
673184fdd87SKonrad Dybcio };
674184fdd87SKonrad Dybcio 
675184fdd87SKonrad Dybcio static const struct clk_parent_data gcc_parent_data_13[] = {
676184fdd87SKonrad Dybcio 	{ .index = DT_BI_TCXO },
677184fdd87SKonrad Dybcio 	{ .index = DT_SLEEP_CLK },
678184fdd87SKonrad Dybcio };
679184fdd87SKonrad Dybcio 
680184fdd87SKonrad Dybcio static const struct parent_map gcc_parent_map_14[] = {
681184fdd87SKonrad Dybcio 	{ P_BI_TCXO, 0 },
682184fdd87SKonrad Dybcio 	{ P_GPLL11_OUT_ODD, 2 },
683184fdd87SKonrad Dybcio 	{ P_GPLL11_OUT_EVEN, 3 },
684184fdd87SKonrad Dybcio };
685184fdd87SKonrad Dybcio 
686184fdd87SKonrad Dybcio static const struct clk_parent_data gcc_parent_data_14[] = {
687184fdd87SKonrad Dybcio 	{ .index = DT_BI_TCXO },
688184fdd87SKonrad Dybcio 	{ .hw = &gpll11.clkr.hw },
689184fdd87SKonrad Dybcio 	{ .hw = &gpll11.clkr.hw },
690184fdd87SKonrad Dybcio };
691184fdd87SKonrad Dybcio 
692184fdd87SKonrad Dybcio static const struct freq_tbl ftbl_gcc_camss_axi_clk_src[] = {
693184fdd87SKonrad Dybcio 	F(19200000, P_BI_TCXO, 1, 0, 0),
694184fdd87SKonrad Dybcio 	F(150000000, P_GPLL0_OUT_EVEN, 2, 0, 0),
695184fdd87SKonrad Dybcio 	F(240000000, P_GPLL0_OUT_MAIN, 2.5, 0, 0),
696184fdd87SKonrad Dybcio 	F(300000000, P_GPLL0_OUT_EVEN, 1, 0, 0),
697184fdd87SKonrad Dybcio 	{ }
698184fdd87SKonrad Dybcio };
699184fdd87SKonrad Dybcio 
700184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_camss_axi_clk_src = {
701184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x5802c,
702184fdd87SKonrad Dybcio 	.mnd_width = 0,
703184fdd87SKonrad Dybcio 	.hid_width = 5,
704184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_8,
705184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_axi_clk_src,
706184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
707184fdd87SKonrad Dybcio 		.name = "gcc_camss_axi_clk_src",
708184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_8,
709184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_8),
710184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
711184fdd87SKonrad Dybcio 	},
712184fdd87SKonrad Dybcio };
713184fdd87SKonrad Dybcio 
714184fdd87SKonrad Dybcio static const struct freq_tbl ftbl_gcc_camss_cci_0_clk_src[] = {
715184fdd87SKonrad Dybcio 	F(19200000, P_BI_TCXO, 1, 0, 0),
716184fdd87SKonrad Dybcio 	F(37500000, P_GPLL0_OUT_EVEN, 8, 0, 0),
717184fdd87SKonrad Dybcio 	{ }
718184fdd87SKonrad Dybcio };
719184fdd87SKonrad Dybcio 
720184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_camss_cci_0_clk_src = {
721184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x56000,
722184fdd87SKonrad Dybcio 	.mnd_width = 0,
723184fdd87SKonrad Dybcio 	.hid_width = 5,
724184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_9,
725184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_cci_0_clk_src,
726184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
727184fdd87SKonrad Dybcio 		.name = "gcc_camss_cci_0_clk_src",
728184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_9,
729184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_9),
730184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
731184fdd87SKonrad Dybcio 	},
732184fdd87SKonrad Dybcio };
733184fdd87SKonrad Dybcio 
734184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_camss_cci_1_clk_src = {
735184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x5c000,
736184fdd87SKonrad Dybcio 	.mnd_width = 0,
737184fdd87SKonrad Dybcio 	.hid_width = 5,
738184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_9,
739184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_cci_0_clk_src,
740184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
741184fdd87SKonrad Dybcio 		.name = "gcc_camss_cci_1_clk_src",
742184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_9,
743184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_9),
744184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
745184fdd87SKonrad Dybcio 	},
746184fdd87SKonrad Dybcio };
747184fdd87SKonrad Dybcio 
748184fdd87SKonrad Dybcio static const struct freq_tbl ftbl_gcc_camss_csi0phytimer_clk_src[] = {
749184fdd87SKonrad Dybcio 	F(19200000, P_BI_TCXO, 1, 0, 0),
750184fdd87SKonrad Dybcio 	F(100000000, P_GPLL0_OUT_ODD, 2, 0, 0),
751184fdd87SKonrad Dybcio 	F(300000000, P_GPLL0_OUT_EVEN, 1, 0, 0),
752184fdd87SKonrad Dybcio 	{ }
753184fdd87SKonrad Dybcio };
754184fdd87SKonrad Dybcio 
755184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_camss_csi0phytimer_clk_src = {
756184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x59000,
757184fdd87SKonrad Dybcio 	.mnd_width = 0,
758184fdd87SKonrad Dybcio 	.hid_width = 5,
759184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_4,
760184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_csi0phytimer_clk_src,
761184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
762184fdd87SKonrad Dybcio 		.name = "gcc_camss_csi0phytimer_clk_src",
763184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_4,
764184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_4),
765184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
766184fdd87SKonrad Dybcio 	},
767184fdd87SKonrad Dybcio };
768184fdd87SKonrad Dybcio 
769184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_camss_csi1phytimer_clk_src = {
770184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x5901c,
771184fdd87SKonrad Dybcio 	.mnd_width = 0,
772184fdd87SKonrad Dybcio 	.hid_width = 5,
773184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_4,
774184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_csi0phytimer_clk_src,
775184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
776184fdd87SKonrad Dybcio 		.name = "gcc_camss_csi1phytimer_clk_src",
777184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_4,
778184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_4),
779184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
780184fdd87SKonrad Dybcio 	},
781184fdd87SKonrad Dybcio };
782184fdd87SKonrad Dybcio 
783184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_camss_csi2phytimer_clk_src = {
784184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x59038,
785184fdd87SKonrad Dybcio 	.mnd_width = 0,
786184fdd87SKonrad Dybcio 	.hid_width = 5,
787184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_4,
788184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_csi0phytimer_clk_src,
789184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
790184fdd87SKonrad Dybcio 		.name = "gcc_camss_csi2phytimer_clk_src",
791184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_4,
792184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_4),
793184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
794184fdd87SKonrad Dybcio 	},
795184fdd87SKonrad Dybcio };
796184fdd87SKonrad Dybcio 
797184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_camss_csi3phytimer_clk_src = {
798184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x59054,
799184fdd87SKonrad Dybcio 	.mnd_width = 0,
800184fdd87SKonrad Dybcio 	.hid_width = 5,
801184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_4,
802184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_csi0phytimer_clk_src,
803184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
804184fdd87SKonrad Dybcio 		.name = "gcc_camss_csi3phytimer_clk_src",
805184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_4,
806184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_4),
807184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
808184fdd87SKonrad Dybcio 	},
809184fdd87SKonrad Dybcio };
810184fdd87SKonrad Dybcio 
811184fdd87SKonrad Dybcio static const struct freq_tbl ftbl_gcc_camss_mclk0_clk_src[] = {
812184fdd87SKonrad Dybcio 	F(19200000, P_BI_TCXO, 1, 0, 0),
813184fdd87SKonrad Dybcio 	F(24000000, P_GPLL9_OUT_MAIN, 1, 1, 15),
814184fdd87SKonrad Dybcio 	F(65454545, P_GPLL9_OUT_EARLY, 11, 1, 2),
815184fdd87SKonrad Dybcio 	{ }
816184fdd87SKonrad Dybcio };
817184fdd87SKonrad Dybcio 
818184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_camss_mclk0_clk_src = {
819184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x51000,
820184fdd87SKonrad Dybcio 	.mnd_width = 8,
821184fdd87SKonrad Dybcio 	.hid_width = 5,
822184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_3,
823184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_mclk0_clk_src,
824184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
825184fdd87SKonrad Dybcio 		.name = "gcc_camss_mclk0_clk_src",
826184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_3,
827184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_3),
828184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
829184fdd87SKonrad Dybcio 	},
830184fdd87SKonrad Dybcio };
831184fdd87SKonrad Dybcio 
832184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_camss_mclk1_clk_src = {
833184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x5101c,
834184fdd87SKonrad Dybcio 	.mnd_width = 8,
835184fdd87SKonrad Dybcio 	.hid_width = 5,
836184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_3,
837184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_mclk0_clk_src,
838184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
839184fdd87SKonrad Dybcio 		.name = "gcc_camss_mclk1_clk_src",
840184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_3,
841184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_3),
842184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
843184fdd87SKonrad Dybcio 	},
844184fdd87SKonrad Dybcio };
845184fdd87SKonrad Dybcio 
846184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_camss_mclk2_clk_src = {
847184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x51038,
848184fdd87SKonrad Dybcio 	.mnd_width = 8,
849184fdd87SKonrad Dybcio 	.hid_width = 5,
850184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_3,
851184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_mclk0_clk_src,
852184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
853184fdd87SKonrad Dybcio 		.name = "gcc_camss_mclk2_clk_src",
854184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_3,
855184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_3),
856184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
857184fdd87SKonrad Dybcio 	},
858184fdd87SKonrad Dybcio };
859184fdd87SKonrad Dybcio 
860184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_camss_mclk3_clk_src = {
861184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x51054,
862184fdd87SKonrad Dybcio 	.mnd_width = 8,
863184fdd87SKonrad Dybcio 	.hid_width = 5,
864184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_3,
865184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_mclk0_clk_src,
866184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
867184fdd87SKonrad Dybcio 		.name = "gcc_camss_mclk3_clk_src",
868184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_3,
869184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_3),
870184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
871184fdd87SKonrad Dybcio 	},
872184fdd87SKonrad Dybcio };
873184fdd87SKonrad Dybcio 
874184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_camss_mclk4_clk_src = {
875184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x51070,
876184fdd87SKonrad Dybcio 	.mnd_width = 8,
877184fdd87SKonrad Dybcio 	.hid_width = 5,
878184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_3,
879184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_mclk0_clk_src,
880184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
881184fdd87SKonrad Dybcio 		.name = "gcc_camss_mclk4_clk_src",
882184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_3,
883184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_3),
884184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
885184fdd87SKonrad Dybcio 	},
886184fdd87SKonrad Dybcio };
887184fdd87SKonrad Dybcio 
888184fdd87SKonrad Dybcio static const struct freq_tbl ftbl_gcc_camss_ope_ahb_clk_src[] = {
889184fdd87SKonrad Dybcio 	F(19200000, P_BI_TCXO, 1, 0, 0),
890184fdd87SKonrad Dybcio 	F(171428571, P_GPLL0_OUT_MAIN, 3.5, 0, 0),
891184fdd87SKonrad Dybcio 	F(240000000, P_GPLL0_OUT_MAIN, 2.5, 0, 0),
892184fdd87SKonrad Dybcio 	{ }
893184fdd87SKonrad Dybcio };
894184fdd87SKonrad Dybcio 
895184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_camss_ope_ahb_clk_src = {
896184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x55024,
897184fdd87SKonrad Dybcio 	.mnd_width = 0,
898184fdd87SKonrad Dybcio 	.hid_width = 5,
899184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_10,
900184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_ope_ahb_clk_src,
901184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
902184fdd87SKonrad Dybcio 		.name = "gcc_camss_ope_ahb_clk_src",
903184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_10,
904184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_10),
905184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
906184fdd87SKonrad Dybcio 	},
907184fdd87SKonrad Dybcio };
908184fdd87SKonrad Dybcio 
909184fdd87SKonrad Dybcio static const struct freq_tbl ftbl_gcc_camss_ope_clk_src[] = {
910184fdd87SKonrad Dybcio 	F(19200000, P_BI_TCXO, 1, 0, 0),
911184fdd87SKonrad Dybcio 	F(200000000, P_GPLL8_OUT_EVEN, 1, 0, 0),
912184fdd87SKonrad Dybcio 	F(266600000, P_GPLL8_OUT_EVEN, 1, 0, 0),
913184fdd87SKonrad Dybcio 	F(480000000, P_GPLL8_OUT_EVEN, 1, 0, 0),
914184fdd87SKonrad Dybcio 	F(580000000, P_GPLL8_OUT_EVEN, 1, 0, 0),
915184fdd87SKonrad Dybcio 	{ }
916184fdd87SKonrad Dybcio };
917184fdd87SKonrad Dybcio 
918184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_camss_ope_clk_src = {
919184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x55004,
920184fdd87SKonrad Dybcio 	.mnd_width = 0,
921184fdd87SKonrad Dybcio 	.hid_width = 5,
922184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_10,
923184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_ope_clk_src,
924184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
925184fdd87SKonrad Dybcio 		.name = "gcc_camss_ope_clk_src",
926184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_10,
927184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_10),
928184fdd87SKonrad Dybcio 		.flags = CLK_SET_RATE_PARENT,
929184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
930184fdd87SKonrad Dybcio 	},
931184fdd87SKonrad Dybcio };
932184fdd87SKonrad Dybcio 
933184fdd87SKonrad Dybcio static const struct freq_tbl ftbl_gcc_camss_tfe_0_clk_src[] = {
934184fdd87SKonrad Dybcio 	F(19200000, P_BI_TCXO, 1, 0, 0),
935184fdd87SKonrad Dybcio 	F(120000000, P_GPLL0_OUT_MAIN, 5, 0, 0),
936184fdd87SKonrad Dybcio 	F(133333333, P_GPLL0_OUT_MAIN, 4.5, 0, 0),
937184fdd87SKonrad Dybcio 	F(144000000, P_GPLL9_OUT_MAIN, 2.5, 0, 0),
938184fdd87SKonrad Dybcio 	F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
939184fdd87SKonrad Dybcio 	F(171428571, P_GPLL0_OUT_MAIN, 3.5, 0, 0),
940184fdd87SKonrad Dybcio 	F(180000000, P_GPLL9_OUT_MAIN, 2, 0, 0),
941184fdd87SKonrad Dybcio 	F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),
942184fdd87SKonrad Dybcio 	F(240000000, P_GPLL0_OUT_MAIN, 2.5, 0, 0),
943184fdd87SKonrad Dybcio 	F(300000000, P_GPLL0_OUT_MAIN, 2, 0, 0),
944184fdd87SKonrad Dybcio 	F(329142857, P_GPLL10_OUT_EVEN, 3.5, 0, 0),
945184fdd87SKonrad Dybcio 	F(384000000, P_GPLL10_OUT_EVEN, 3, 0, 0),
946184fdd87SKonrad Dybcio 	F(460800000, P_GPLL10_OUT_EVEN, 2.5, 0, 0),
947184fdd87SKonrad Dybcio 	F(576000000, P_GPLL10_OUT_EVEN, 2, 0, 0),
948184fdd87SKonrad Dybcio 	{ }
949184fdd87SKonrad Dybcio };
950184fdd87SKonrad Dybcio 
951184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_camss_tfe_0_clk_src = {
952184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x52004,
953184fdd87SKonrad Dybcio 	.mnd_width = 8,
954184fdd87SKonrad Dybcio 	.hid_width = 5,
955184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_5,
956184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_tfe_0_clk_src,
957184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
958184fdd87SKonrad Dybcio 		.name = "gcc_camss_tfe_0_clk_src",
959184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_5,
960184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_5),
961184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
962184fdd87SKonrad Dybcio 	},
963184fdd87SKonrad Dybcio };
964184fdd87SKonrad Dybcio 
965184fdd87SKonrad Dybcio static const struct freq_tbl ftbl_gcc_camss_tfe_0_csid_clk_src[] = {
966184fdd87SKonrad Dybcio 	F(19200000, P_BI_TCXO, 1, 0, 0),
967184fdd87SKonrad Dybcio 	F(120000000, P_GPLL0_OUT_MAIN, 5, 0, 0),
968184fdd87SKonrad Dybcio 	F(266571429, P_GPLL5_OUT_EVEN, 3.5, 0, 0),
969184fdd87SKonrad Dybcio 	F(426400000, P_GPLL3_OUT_MAIN, 2.5, 0, 0),
970184fdd87SKonrad Dybcio 	F(466500000, P_GPLL5_OUT_EVEN, 2, 0, 0),
971184fdd87SKonrad Dybcio 	{ }
972184fdd87SKonrad Dybcio };
973184fdd87SKonrad Dybcio 
974184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_camss_tfe_0_csid_clk_src = {
975184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x52094,
976184fdd87SKonrad Dybcio 	.mnd_width = 0,
977184fdd87SKonrad Dybcio 	.hid_width = 5,
978184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_6,
979184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_tfe_0_csid_clk_src,
980184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
981184fdd87SKonrad Dybcio 		.name = "gcc_camss_tfe_0_csid_clk_src",
982184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_6,
983184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_6),
984184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
985184fdd87SKonrad Dybcio 	},
986184fdd87SKonrad Dybcio };
987184fdd87SKonrad Dybcio 
988184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_camss_tfe_1_clk_src = {
989184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x52024,
990184fdd87SKonrad Dybcio 	.mnd_width = 8,
991184fdd87SKonrad Dybcio 	.hid_width = 5,
992184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_5,
993184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_tfe_0_clk_src,
994184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
995184fdd87SKonrad Dybcio 		.name = "gcc_camss_tfe_1_clk_src",
996184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_5,
997184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_5),
998184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
999184fdd87SKonrad Dybcio 	},
1000184fdd87SKonrad Dybcio };
1001184fdd87SKonrad Dybcio 
1002184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_camss_tfe_1_csid_clk_src = {
1003184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x520b4,
1004184fdd87SKonrad Dybcio 	.mnd_width = 0,
1005184fdd87SKonrad Dybcio 	.hid_width = 5,
1006184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_6,
1007184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_tfe_0_csid_clk_src,
1008184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1009184fdd87SKonrad Dybcio 		.name = "gcc_camss_tfe_1_csid_clk_src",
1010184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_6,
1011184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_6),
1012184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1013184fdd87SKonrad Dybcio 	},
1014184fdd87SKonrad Dybcio };
1015184fdd87SKonrad Dybcio 
1016184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_camss_tfe_2_clk_src = {
1017184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x52044,
1018184fdd87SKonrad Dybcio 	.mnd_width = 8,
1019184fdd87SKonrad Dybcio 	.hid_width = 5,
1020184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_5,
1021184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_tfe_0_clk_src,
1022184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1023184fdd87SKonrad Dybcio 		.name = "gcc_camss_tfe_2_clk_src",
1024184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_5,
1025184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_5),
1026184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1027184fdd87SKonrad Dybcio 	},
1028184fdd87SKonrad Dybcio };
1029184fdd87SKonrad Dybcio 
1030184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_camss_tfe_2_csid_clk_src = {
1031184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x520d4,
1032184fdd87SKonrad Dybcio 	.mnd_width = 0,
1033184fdd87SKonrad Dybcio 	.hid_width = 5,
1034184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_6,
1035184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_tfe_0_csid_clk_src,
1036184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1037184fdd87SKonrad Dybcio 		.name = "gcc_camss_tfe_2_csid_clk_src",
1038184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_6,
1039184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_6),
1040184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1041184fdd87SKonrad Dybcio 	},
1042184fdd87SKonrad Dybcio };
1043184fdd87SKonrad Dybcio 
1044184fdd87SKonrad Dybcio static const struct freq_tbl ftbl_gcc_camss_tfe_cphy_rx_clk_src[] = {
1045184fdd87SKonrad Dybcio 	F(19200000, P_BI_TCXO, 1, 0, 0),
1046184fdd87SKonrad Dybcio 	F(256000000, P_GPLL6_OUT_MAIN, 3, 0, 0),
1047184fdd87SKonrad Dybcio 	F(384000000, P_GPLL6_OUT_MAIN, 2, 0, 0),
1048184fdd87SKonrad Dybcio 	{ }
1049184fdd87SKonrad Dybcio };
1050184fdd87SKonrad Dybcio 
1051184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_camss_tfe_cphy_rx_clk_src = {
1052184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x52064,
1053184fdd87SKonrad Dybcio 	.mnd_width = 0,
1054184fdd87SKonrad Dybcio 	.hid_width = 5,
1055184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_11,
1056184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_tfe_cphy_rx_clk_src,
1057184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1058184fdd87SKonrad Dybcio 		.name = "gcc_camss_tfe_cphy_rx_clk_src",
1059184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_11,
1060184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_11),
1061184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1062184fdd87SKonrad Dybcio 	},
1063184fdd87SKonrad Dybcio };
1064184fdd87SKonrad Dybcio 
1065184fdd87SKonrad Dybcio static const struct freq_tbl ftbl_gcc_camss_top_ahb_clk_src[] = {
1066184fdd87SKonrad Dybcio 	F(19200000, P_BI_TCXO, 1, 0, 0),
1067184fdd87SKonrad Dybcio 	F(40000000, P_GPLL0_OUT_EVEN, 7.5, 0, 0),
1068184fdd87SKonrad Dybcio 	F(80000000, P_GPLL0_OUT_MAIN, 7.5, 0, 0),
1069184fdd87SKonrad Dybcio 	{ }
1070184fdd87SKonrad Dybcio };
1071184fdd87SKonrad Dybcio 
1072184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_camss_top_ahb_clk_src = {
1073184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x58010,
1074184fdd87SKonrad Dybcio 	.mnd_width = 0,
1075184fdd87SKonrad Dybcio 	.hid_width = 5,
1076184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_8,
1077184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_camss_top_ahb_clk_src,
1078184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1079184fdd87SKonrad Dybcio 		.name = "gcc_camss_top_ahb_clk_src",
1080184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_8,
1081184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_8),
1082184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1083184fdd87SKonrad Dybcio 	},
1084184fdd87SKonrad Dybcio };
1085184fdd87SKonrad Dybcio 
1086184fdd87SKonrad Dybcio static const struct freq_tbl ftbl_gcc_cpuss_ahb_clk_src[] = {
1087184fdd87SKonrad Dybcio 	F(19200000, P_BI_TCXO, 1, 0, 0),
1088184fdd87SKonrad Dybcio 	F(50000000, P_GPLL0_OUT_ODD, 4, 0, 0),
1089184fdd87SKonrad Dybcio 	F(100000000, P_GPLL0_OUT_ODD, 2, 0, 0),
1090184fdd87SKonrad Dybcio 	{ }
1091184fdd87SKonrad Dybcio };
1092184fdd87SKonrad Dybcio 
1093184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_cpuss_ahb_clk_src = {
1094184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x2b13c,
1095184fdd87SKonrad Dybcio 	.mnd_width = 0,
1096184fdd87SKonrad Dybcio 	.hid_width = 5,
1097184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_2,
1098184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_cpuss_ahb_clk_src,
1099184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1100184fdd87SKonrad Dybcio 		.name = "gcc_cpuss_ahb_clk_src",
1101184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_2_ao,
1102184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_2_ao),
1103184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1104184fdd87SKonrad Dybcio 	},
1105184fdd87SKonrad Dybcio };
1106184fdd87SKonrad Dybcio 
1107184fdd87SKonrad Dybcio static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = {
1108184fdd87SKonrad Dybcio 	F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),
1109184fdd87SKonrad Dybcio 	F(50000000, P_GPLL0_OUT_ODD, 4, 0, 0),
1110184fdd87SKonrad Dybcio 	F(100000000, P_GPLL0_OUT_ODD, 2, 0, 0),
1111184fdd87SKonrad Dybcio 	F(200000000, P_GPLL0_OUT_ODD, 1, 0, 0),
1112184fdd87SKonrad Dybcio 	{ }
1113184fdd87SKonrad Dybcio };
1114184fdd87SKonrad Dybcio 
1115184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_gp1_clk_src = {
1116184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x4d004,
1117184fdd87SKonrad Dybcio 	.mnd_width = 16,
1118184fdd87SKonrad Dybcio 	.hid_width = 5,
1119184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_7,
1120184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_gp1_clk_src,
1121184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1122184fdd87SKonrad Dybcio 		.name = "gcc_gp1_clk_src",
1123184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_7,
1124184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_7),
1125184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1126184fdd87SKonrad Dybcio 	},
1127184fdd87SKonrad Dybcio };
1128184fdd87SKonrad Dybcio 
1129184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_gp2_clk_src = {
1130184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x4e004,
1131184fdd87SKonrad Dybcio 	.mnd_width = 16,
1132184fdd87SKonrad Dybcio 	.hid_width = 5,
1133184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_7,
1134184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_gp1_clk_src,
1135184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1136184fdd87SKonrad Dybcio 		.name = "gcc_gp2_clk_src",
1137184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_7,
1138184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_7),
1139184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1140184fdd87SKonrad Dybcio 	},
1141184fdd87SKonrad Dybcio };
1142184fdd87SKonrad Dybcio 
1143184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_gp3_clk_src = {
1144184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x4f004,
1145184fdd87SKonrad Dybcio 	.mnd_width = 16,
1146184fdd87SKonrad Dybcio 	.hid_width = 5,
1147184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_7,
1148184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_gp1_clk_src,
1149184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1150184fdd87SKonrad Dybcio 		.name = "gcc_gp3_clk_src",
1151184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_7,
1152184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_7),
1153184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1154184fdd87SKonrad Dybcio 	},
1155184fdd87SKonrad Dybcio };
1156184fdd87SKonrad Dybcio 
1157184fdd87SKonrad Dybcio static const struct freq_tbl ftbl_gcc_pdm2_clk_src[] = {
1158184fdd87SKonrad Dybcio 	F(19200000, P_BI_TCXO, 1, 0, 0),
1159184fdd87SKonrad Dybcio 	F(60000000, P_GPLL0_OUT_EVEN, 5, 0, 0),
1160184fdd87SKonrad Dybcio 	{ }
1161184fdd87SKonrad Dybcio };
1162184fdd87SKonrad Dybcio 
1163184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_pdm2_clk_src = {
1164184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x20010,
1165184fdd87SKonrad Dybcio 	.mnd_width = 0,
1166184fdd87SKonrad Dybcio 	.hid_width = 5,
1167184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_0,
1168184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_pdm2_clk_src,
1169184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1170184fdd87SKonrad Dybcio 		.name = "gcc_pdm2_clk_src",
1171184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_0,
1172184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1173184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1174184fdd87SKonrad Dybcio 	},
1175184fdd87SKonrad Dybcio };
1176184fdd87SKonrad Dybcio 
1177184fdd87SKonrad Dybcio static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s0_clk_src[] = {
1178184fdd87SKonrad Dybcio 	F(7372800, P_GPLL0_OUT_EVEN, 1, 384, 15625),
1179184fdd87SKonrad Dybcio 	F(14745600, P_GPLL0_OUT_EVEN, 1, 768, 15625),
1180184fdd87SKonrad Dybcio 	F(19200000, P_BI_TCXO, 1, 0, 0),
1181184fdd87SKonrad Dybcio 	F(29491200, P_GPLL0_OUT_EVEN, 1, 1536, 15625),
1182184fdd87SKonrad Dybcio 	F(32000000, P_GPLL0_OUT_EVEN, 1, 8, 75),
1183184fdd87SKonrad Dybcio 	F(48000000, P_GPLL0_OUT_EVEN, 1, 4, 25),
1184184fdd87SKonrad Dybcio 	F(64000000, P_GPLL0_OUT_EVEN, 1, 16, 75),
1185184fdd87SKonrad Dybcio 	F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0),
1186184fdd87SKonrad Dybcio 	F(80000000, P_GPLL0_OUT_EVEN, 1, 4, 15),
1187184fdd87SKonrad Dybcio 	F(96000000, P_GPLL0_OUT_EVEN, 1, 8, 25),
1188184fdd87SKonrad Dybcio 	F(100000000, P_GPLL0_OUT_EVEN, 3, 0, 0),
1189184fdd87SKonrad Dybcio 	F(102400000, P_GPLL0_OUT_EVEN, 1, 128, 375),
1190184fdd87SKonrad Dybcio 	F(112000000, P_GPLL0_OUT_EVEN, 1, 28, 75),
1191184fdd87SKonrad Dybcio 	F(117964800, P_GPLL0_OUT_EVEN, 1, 6144, 15625),
1192184fdd87SKonrad Dybcio 	F(120000000, P_GPLL0_OUT_EVEN, 2.5, 0, 0),
1193184fdd87SKonrad Dybcio 	F(128000000, P_GPLL6_OUT_EVEN, 3, 0, 0),
1194184fdd87SKonrad Dybcio 	{ }
1195184fdd87SKonrad Dybcio };
1196184fdd87SKonrad Dybcio 
1197184fdd87SKonrad Dybcio static struct clk_init_data gcc_qupv3_wrap0_s0_clk_src_init = {
1198184fdd87SKonrad Dybcio 	.name = "gcc_qupv3_wrap0_s0_clk_src",
1199184fdd87SKonrad Dybcio 	.parent_data = gcc_parent_data_1,
1200184fdd87SKonrad Dybcio 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
1201184fdd87SKonrad Dybcio 	.ops = &clk_rcg2_shared_ops,
1202184fdd87SKonrad Dybcio };
1203184fdd87SKonrad Dybcio 
1204184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_qupv3_wrap0_s0_clk_src = {
1205184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x1f148,
1206184fdd87SKonrad Dybcio 	.mnd_width = 16,
1207184fdd87SKonrad Dybcio 	.hid_width = 5,
1208184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_1,
1209184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1210184fdd87SKonrad Dybcio 	.clkr.hw.init = &gcc_qupv3_wrap0_s0_clk_src_init,
1211184fdd87SKonrad Dybcio };
1212184fdd87SKonrad Dybcio 
1213184fdd87SKonrad Dybcio static struct clk_init_data gcc_qupv3_wrap0_s1_clk_src_init = {
1214184fdd87SKonrad Dybcio 	.name = "gcc_qupv3_wrap0_s1_clk_src",
1215184fdd87SKonrad Dybcio 	.parent_data = gcc_parent_data_1,
1216184fdd87SKonrad Dybcio 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
1217184fdd87SKonrad Dybcio 	.ops = &clk_rcg2_shared_ops,
1218184fdd87SKonrad Dybcio };
1219184fdd87SKonrad Dybcio 
1220184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_qupv3_wrap0_s1_clk_src = {
1221184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x1f278,
1222184fdd87SKonrad Dybcio 	.mnd_width = 16,
1223184fdd87SKonrad Dybcio 	.hid_width = 5,
1224184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_1,
1225184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1226184fdd87SKonrad Dybcio 	.clkr.hw.init = &gcc_qupv3_wrap0_s1_clk_src_init,
1227184fdd87SKonrad Dybcio };
1228184fdd87SKonrad Dybcio 
1229184fdd87SKonrad Dybcio static struct clk_init_data gcc_qupv3_wrap0_s2_clk_src_init = {
1230184fdd87SKonrad Dybcio 	.name = "gcc_qupv3_wrap0_s2_clk_src",
1231184fdd87SKonrad Dybcio 	.parent_data = gcc_parent_data_1,
1232184fdd87SKonrad Dybcio 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
1233184fdd87SKonrad Dybcio 	.ops = &clk_rcg2_shared_ops,
1234184fdd87SKonrad Dybcio };
1235184fdd87SKonrad Dybcio 
1236184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_qupv3_wrap0_s2_clk_src = {
1237184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x1f3a8,
1238184fdd87SKonrad Dybcio 	.mnd_width = 16,
1239184fdd87SKonrad Dybcio 	.hid_width = 5,
1240184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_1,
1241184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1242184fdd87SKonrad Dybcio 	.clkr.hw.init = &gcc_qupv3_wrap0_s2_clk_src_init,
1243184fdd87SKonrad Dybcio };
1244184fdd87SKonrad Dybcio 
1245184fdd87SKonrad Dybcio static struct clk_init_data gcc_qupv3_wrap0_s3_clk_src_init = {
1246184fdd87SKonrad Dybcio 	.name = "gcc_qupv3_wrap0_s3_clk_src",
1247184fdd87SKonrad Dybcio 	.parent_data = gcc_parent_data_1,
1248184fdd87SKonrad Dybcio 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
1249184fdd87SKonrad Dybcio 	.ops = &clk_rcg2_shared_ops,
1250184fdd87SKonrad Dybcio };
1251184fdd87SKonrad Dybcio 
1252184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_qupv3_wrap0_s3_clk_src = {
1253184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x1f4d8,
1254184fdd87SKonrad Dybcio 	.mnd_width = 16,
1255184fdd87SKonrad Dybcio 	.hid_width = 5,
1256184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_1,
1257184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1258184fdd87SKonrad Dybcio 	.clkr.hw.init = &gcc_qupv3_wrap0_s3_clk_src_init,
1259184fdd87SKonrad Dybcio };
1260184fdd87SKonrad Dybcio 
1261184fdd87SKonrad Dybcio static struct clk_init_data gcc_qupv3_wrap0_s4_clk_src_init = {
1262184fdd87SKonrad Dybcio 	.name = "gcc_qupv3_wrap0_s4_clk_src",
1263184fdd87SKonrad Dybcio 	.parent_data = gcc_parent_data_1,
1264184fdd87SKonrad Dybcio 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
1265184fdd87SKonrad Dybcio 	.ops = &clk_rcg2_shared_ops,
1266184fdd87SKonrad Dybcio };
1267184fdd87SKonrad Dybcio 
1268184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_qupv3_wrap0_s4_clk_src = {
1269184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x1f608,
1270184fdd87SKonrad Dybcio 	.mnd_width = 16,
1271184fdd87SKonrad Dybcio 	.hid_width = 5,
1272184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_1,
1273184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1274184fdd87SKonrad Dybcio 	.clkr.hw.init = &gcc_qupv3_wrap0_s4_clk_src_init,
1275184fdd87SKonrad Dybcio };
1276184fdd87SKonrad Dybcio 
1277184fdd87SKonrad Dybcio static struct clk_init_data gcc_qupv3_wrap0_s5_clk_src_init = {
1278184fdd87SKonrad Dybcio 	.name = "gcc_qupv3_wrap0_s5_clk_src",
1279184fdd87SKonrad Dybcio 	.parent_data = gcc_parent_data_1,
1280184fdd87SKonrad Dybcio 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
1281184fdd87SKonrad Dybcio 	.ops = &clk_rcg2_shared_ops,
1282184fdd87SKonrad Dybcio };
1283184fdd87SKonrad Dybcio 
1284184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_qupv3_wrap0_s5_clk_src = {
1285184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x1f738,
1286184fdd87SKonrad Dybcio 	.mnd_width = 16,
1287184fdd87SKonrad Dybcio 	.hid_width = 5,
1288184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_1,
1289184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1290184fdd87SKonrad Dybcio 	.clkr.hw.init = &gcc_qupv3_wrap0_s5_clk_src_init,
1291184fdd87SKonrad Dybcio };
1292184fdd87SKonrad Dybcio 
1293184fdd87SKonrad Dybcio static struct clk_init_data gcc_qupv3_wrap1_s0_clk_src_init = {
1294184fdd87SKonrad Dybcio 	.name = "gcc_qupv3_wrap1_s0_clk_src",
1295184fdd87SKonrad Dybcio 	.parent_data = gcc_parent_data_1,
1296184fdd87SKonrad Dybcio 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
1297184fdd87SKonrad Dybcio 	.ops = &clk_rcg2_shared_ops,
1298184fdd87SKonrad Dybcio };
1299184fdd87SKonrad Dybcio 
1300184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_qupv3_wrap1_s0_clk_src = {
1301184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x5301c,
1302184fdd87SKonrad Dybcio 	.mnd_width = 16,
1303184fdd87SKonrad Dybcio 	.hid_width = 5,
1304184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_1,
1305184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1306184fdd87SKonrad Dybcio 	.clkr.hw.init = &gcc_qupv3_wrap1_s0_clk_src_init,
1307184fdd87SKonrad Dybcio };
1308184fdd87SKonrad Dybcio 
1309184fdd87SKonrad Dybcio static struct clk_init_data gcc_qupv3_wrap1_s1_clk_src_init = {
1310184fdd87SKonrad Dybcio 	.name = "gcc_qupv3_wrap1_s1_clk_src",
1311184fdd87SKonrad Dybcio 	.parent_data = gcc_parent_data_1,
1312184fdd87SKonrad Dybcio 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
1313184fdd87SKonrad Dybcio 	.ops = &clk_rcg2_shared_ops,
1314184fdd87SKonrad Dybcio };
1315184fdd87SKonrad Dybcio 
1316184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_qupv3_wrap1_s1_clk_src = {
1317184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x5314c,
1318184fdd87SKonrad Dybcio 	.mnd_width = 16,
1319184fdd87SKonrad Dybcio 	.hid_width = 5,
1320184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_1,
1321184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1322184fdd87SKonrad Dybcio 	.clkr.hw.init = &gcc_qupv3_wrap1_s1_clk_src_init,
1323184fdd87SKonrad Dybcio };
1324184fdd87SKonrad Dybcio 
1325184fdd87SKonrad Dybcio static struct clk_init_data gcc_qupv3_wrap1_s2_clk_src_init = {
1326184fdd87SKonrad Dybcio 	.name = "gcc_qupv3_wrap1_s2_clk_src",
1327184fdd87SKonrad Dybcio 	.parent_data = gcc_parent_data_1,
1328184fdd87SKonrad Dybcio 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
1329184fdd87SKonrad Dybcio 	.ops = &clk_rcg2_shared_ops,
1330184fdd87SKonrad Dybcio };
1331184fdd87SKonrad Dybcio 
1332184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_qupv3_wrap1_s2_clk_src = {
1333184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x5327c,
1334184fdd87SKonrad Dybcio 	.mnd_width = 16,
1335184fdd87SKonrad Dybcio 	.hid_width = 5,
1336184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_1,
1337184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1338184fdd87SKonrad Dybcio 	.clkr.hw.init = &gcc_qupv3_wrap1_s2_clk_src_init,
1339184fdd87SKonrad Dybcio };
1340184fdd87SKonrad Dybcio 
1341184fdd87SKonrad Dybcio static struct clk_init_data gcc_qupv3_wrap1_s3_clk_src_init = {
1342184fdd87SKonrad Dybcio 	.name = "gcc_qupv3_wrap1_s3_clk_src",
1343184fdd87SKonrad Dybcio 	.parent_data = gcc_parent_data_1,
1344184fdd87SKonrad Dybcio 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
1345184fdd87SKonrad Dybcio 	.ops = &clk_rcg2_shared_ops,
1346184fdd87SKonrad Dybcio };
1347184fdd87SKonrad Dybcio 
1348184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_qupv3_wrap1_s3_clk_src = {
1349184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x533ac,
1350184fdd87SKonrad Dybcio 	.mnd_width = 16,
1351184fdd87SKonrad Dybcio 	.hid_width = 5,
1352184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_1,
1353184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1354184fdd87SKonrad Dybcio 	.clkr.hw.init = &gcc_qupv3_wrap1_s3_clk_src_init,
1355184fdd87SKonrad Dybcio };
1356184fdd87SKonrad Dybcio 
1357184fdd87SKonrad Dybcio static struct clk_init_data gcc_qupv3_wrap1_s4_clk_src_init = {
1358184fdd87SKonrad Dybcio 	.name = "gcc_qupv3_wrap1_s4_clk_src",
1359184fdd87SKonrad Dybcio 	.parent_data = gcc_parent_data_1,
1360184fdd87SKonrad Dybcio 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
1361184fdd87SKonrad Dybcio 	.ops = &clk_rcg2_shared_ops,
1362184fdd87SKonrad Dybcio };
1363184fdd87SKonrad Dybcio 
1364184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_qupv3_wrap1_s4_clk_src = {
1365184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x534dc,
1366184fdd87SKonrad Dybcio 	.mnd_width = 16,
1367184fdd87SKonrad Dybcio 	.hid_width = 5,
1368184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_1,
1369184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1370184fdd87SKonrad Dybcio 	.clkr.hw.init = &gcc_qupv3_wrap1_s4_clk_src_init,
1371184fdd87SKonrad Dybcio };
1372184fdd87SKonrad Dybcio 
1373184fdd87SKonrad Dybcio static struct clk_init_data gcc_qupv3_wrap1_s5_clk_src_init = {
1374184fdd87SKonrad Dybcio 	.name = "gcc_qupv3_wrap1_s5_clk_src",
1375184fdd87SKonrad Dybcio 	.parent_data = gcc_parent_data_1,
1376184fdd87SKonrad Dybcio 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
1377184fdd87SKonrad Dybcio 	.ops = &clk_rcg2_shared_ops,
1378184fdd87SKonrad Dybcio };
1379184fdd87SKonrad Dybcio 
1380184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_qupv3_wrap1_s5_clk_src = {
1381184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x5360c,
1382184fdd87SKonrad Dybcio 	.mnd_width = 16,
1383184fdd87SKonrad Dybcio 	.hid_width = 5,
1384184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_1,
1385184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1386184fdd87SKonrad Dybcio 	.clkr.hw.init = &gcc_qupv3_wrap1_s5_clk_src_init,
1387184fdd87SKonrad Dybcio };
1388184fdd87SKonrad Dybcio 
1389184fdd87SKonrad Dybcio static const struct freq_tbl ftbl_gcc_sdcc1_apps_clk_src[] = {
1390184fdd87SKonrad Dybcio 	F(144000, P_BI_TCXO, 16, 3, 25),
1391184fdd87SKonrad Dybcio 	F(400000, P_BI_TCXO, 12, 1, 4),
1392184fdd87SKonrad Dybcio 	F(20000000, P_GPLL0_OUT_EVEN, 5, 1, 3),
1393184fdd87SKonrad Dybcio 	F(25000000, P_GPLL0_OUT_EVEN, 6, 1, 2),
1394184fdd87SKonrad Dybcio 	F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
1395184fdd87SKonrad Dybcio 	F(100000000, P_GPLL0_OUT_EVEN, 3, 0, 0),
1396184fdd87SKonrad Dybcio 	F(192000000, P_GPLL6_OUT_EVEN, 2, 0, 0),
1397184fdd87SKonrad Dybcio 	F(384000000, P_GPLL6_OUT_EVEN, 1, 0, 0),
1398184fdd87SKonrad Dybcio 	{ }
1399184fdd87SKonrad Dybcio };
1400184fdd87SKonrad Dybcio 
1401184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_sdcc1_apps_clk_src = {
1402184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x38028,
1403184fdd87SKonrad Dybcio 	.mnd_width = 8,
1404184fdd87SKonrad Dybcio 	.hid_width = 5,
1405184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_1,
1406184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_sdcc1_apps_clk_src,
1407184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1408184fdd87SKonrad Dybcio 		.name = "gcc_sdcc1_apps_clk_src",
1409184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_1,
1410184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_1),
1411184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1412184fdd87SKonrad Dybcio 	},
1413184fdd87SKonrad Dybcio };
1414184fdd87SKonrad Dybcio 
1415184fdd87SKonrad Dybcio static const struct freq_tbl ftbl_gcc_sdcc1_ice_core_clk_src[] = {
1416184fdd87SKonrad Dybcio 	F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0),
1417184fdd87SKonrad Dybcio 	F(100000000, P_GPLL0_OUT_EVEN, 3, 0, 0),
1418184fdd87SKonrad Dybcio 	F(150000000, P_GPLL0_OUT_EVEN, 2, 0, 0),
1419184fdd87SKonrad Dybcio 	F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),
1420184fdd87SKonrad Dybcio 	F(300000000, P_GPLL0_OUT_EVEN, 1, 0, 0),
1421184fdd87SKonrad Dybcio 	{ }
1422184fdd87SKonrad Dybcio };
1423184fdd87SKonrad Dybcio 
1424184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_sdcc1_ice_core_clk_src = {
1425184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x38010,
1426184fdd87SKonrad Dybcio 	.mnd_width = 0,
1427184fdd87SKonrad Dybcio 	.hid_width = 5,
1428184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_0,
1429184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_sdcc1_ice_core_clk_src,
1430184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1431184fdd87SKonrad Dybcio 		.name = "gcc_sdcc1_ice_core_clk_src",
1432184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_0,
1433184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1434184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1435184fdd87SKonrad Dybcio 	},
1436184fdd87SKonrad Dybcio };
1437184fdd87SKonrad Dybcio 
1438184fdd87SKonrad Dybcio static const struct freq_tbl ftbl_gcc_sdcc2_apps_clk_src[] = {
1439184fdd87SKonrad Dybcio 	F(400000, P_BI_TCXO, 12, 1, 4),
1440184fdd87SKonrad Dybcio 	F(19200000, P_BI_TCXO, 1, 0, 0),
1441184fdd87SKonrad Dybcio 	F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),
1442184fdd87SKonrad Dybcio 	F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
1443184fdd87SKonrad Dybcio 	F(100000000, P_GPLL0_OUT_EVEN, 3, 0, 0),
1444184fdd87SKonrad Dybcio 	F(202000000, P_GPLL7_OUT_EVEN, 4, 0, 0),
1445184fdd87SKonrad Dybcio 	{ }
1446184fdd87SKonrad Dybcio };
1447184fdd87SKonrad Dybcio 
1448184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_sdcc2_apps_clk_src = {
1449184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x1e00c,
1450184fdd87SKonrad Dybcio 	.mnd_width = 8,
1451184fdd87SKonrad Dybcio 	.hid_width = 5,
1452184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_12,
1453184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_sdcc2_apps_clk_src,
1454184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1455184fdd87SKonrad Dybcio 		.name = "gcc_sdcc2_apps_clk_src",
1456184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_12,
1457184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_12),
1458184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1459184fdd87SKonrad Dybcio 	},
1460184fdd87SKonrad Dybcio };
1461184fdd87SKonrad Dybcio 
1462184fdd87SKonrad Dybcio static const struct freq_tbl ftbl_gcc_ufs_phy_axi_clk_src[] = {
1463184fdd87SKonrad Dybcio 	F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),
1464184fdd87SKonrad Dybcio 	F(50000000, P_GPLL0_OUT_ODD, 4, 0, 0),
1465184fdd87SKonrad Dybcio 	F(100000000, P_GPLL0_OUT_ODD, 2, 0, 0),
1466184fdd87SKonrad Dybcio 	F(200000000, P_GPLL0_OUT_ODD, 1, 0, 0),
1467184fdd87SKonrad Dybcio 	F(240000000, P_GPLL0_OUT_MAIN, 2.5, 0, 0),
1468184fdd87SKonrad Dybcio 	{ }
1469184fdd87SKonrad Dybcio };
1470184fdd87SKonrad Dybcio 
1471184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_ufs_phy_axi_clk_src = {
1472184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x45020,
1473184fdd87SKonrad Dybcio 	.mnd_width = 8,
1474184fdd87SKonrad Dybcio 	.hid_width = 5,
1475184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_2,
1476184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_ufs_phy_axi_clk_src,
1477184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1478184fdd87SKonrad Dybcio 		.name = "gcc_ufs_phy_axi_clk_src",
1479184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_2,
1480184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
1481184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1482184fdd87SKonrad Dybcio 	},
1483184fdd87SKonrad Dybcio };
1484184fdd87SKonrad Dybcio 
1485184fdd87SKonrad Dybcio static const struct freq_tbl ftbl_gcc_ufs_phy_ice_core_clk_src[] = {
1486184fdd87SKonrad Dybcio 	F(37500000, P_GPLL0_OUT_EVEN, 8, 0, 0),
1487184fdd87SKonrad Dybcio 	F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0),
1488184fdd87SKonrad Dybcio 	F(150000000, P_GPLL0_OUT_EVEN, 2, 0, 0),
1489184fdd87SKonrad Dybcio 	F(300000000, P_GPLL0_OUT_EVEN, 1, 0, 0),
1490184fdd87SKonrad Dybcio 	{ }
1491184fdd87SKonrad Dybcio };
1492184fdd87SKonrad Dybcio 
1493184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src = {
1494184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x45048,
1495184fdd87SKonrad Dybcio 	.mnd_width = 0,
1496184fdd87SKonrad Dybcio 	.hid_width = 5,
1497184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_0,
1498184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_ufs_phy_ice_core_clk_src,
1499184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1500184fdd87SKonrad Dybcio 		.name = "gcc_ufs_phy_ice_core_clk_src",
1501184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_0,
1502184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1503184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1504184fdd87SKonrad Dybcio 	},
1505184fdd87SKonrad Dybcio };
1506184fdd87SKonrad Dybcio 
1507184fdd87SKonrad Dybcio static const struct freq_tbl ftbl_gcc_ufs_phy_phy_aux_clk_src[] = {
1508184fdd87SKonrad Dybcio 	F(9600000, P_BI_TCXO, 2, 0, 0),
1509184fdd87SKonrad Dybcio 	F(19200000, P_BI_TCXO, 1, 0, 0),
1510184fdd87SKonrad Dybcio 	{ }
1511184fdd87SKonrad Dybcio };
1512184fdd87SKonrad Dybcio 
1513184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src = {
1514184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x4507c,
1515184fdd87SKonrad Dybcio 	.mnd_width = 0,
1516184fdd87SKonrad Dybcio 	.hid_width = 5,
1517184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_0,
1518184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_ufs_phy_phy_aux_clk_src,
1519184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1520184fdd87SKonrad Dybcio 		.name = "gcc_ufs_phy_phy_aux_clk_src",
1521184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_0,
1522184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1523184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1524184fdd87SKonrad Dybcio 	},
1525184fdd87SKonrad Dybcio };
1526184fdd87SKonrad Dybcio 
1527184fdd87SKonrad Dybcio static const struct freq_tbl ftbl_gcc_ufs_phy_unipro_core_clk_src[] = {
1528184fdd87SKonrad Dybcio 	F(37500000, P_GPLL0_OUT_EVEN, 8, 0, 0),
1529184fdd87SKonrad Dybcio 	F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0),
1530184fdd87SKonrad Dybcio 	F(150000000, P_GPLL0_OUT_EVEN, 2, 0, 0),
1531184fdd87SKonrad Dybcio 	{ }
1532184fdd87SKonrad Dybcio };
1533184fdd87SKonrad Dybcio 
1534184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_ufs_phy_unipro_core_clk_src = {
1535184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x45060,
1536184fdd87SKonrad Dybcio 	.mnd_width = 0,
1537184fdd87SKonrad Dybcio 	.hid_width = 5,
1538184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_0,
1539184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_ufs_phy_unipro_core_clk_src,
1540184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1541184fdd87SKonrad Dybcio 		.name = "gcc_ufs_phy_unipro_core_clk_src",
1542184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_0,
1543184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1544184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1545184fdd87SKonrad Dybcio 	},
1546184fdd87SKonrad Dybcio };
1547184fdd87SKonrad Dybcio 
1548184fdd87SKonrad Dybcio static const struct freq_tbl ftbl_gcc_usb30_prim_master_clk_src[] = {
1549184fdd87SKonrad Dybcio 	F(66666667, P_GPLL0_OUT_EVEN, 4.5, 0, 0),
1550184fdd87SKonrad Dybcio 	F(133333333, P_GPLL0_OUT_MAIN, 4.5, 0, 0),
1551184fdd87SKonrad Dybcio 	F(200000000, P_GPLL0_OUT_ODD, 1, 0, 0),
1552184fdd87SKonrad Dybcio 	F(240000000, P_GPLL0_OUT_MAIN, 2.5, 0, 0),
1553184fdd87SKonrad Dybcio 	{ }
1554184fdd87SKonrad Dybcio };
1555184fdd87SKonrad Dybcio 
1556184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_usb30_prim_master_clk_src = {
1557184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x1a01c,
1558184fdd87SKonrad Dybcio 	.mnd_width = 8,
1559184fdd87SKonrad Dybcio 	.hid_width = 5,
1560184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_2,
1561184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_usb30_prim_master_clk_src,
1562184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1563184fdd87SKonrad Dybcio 		.name = "gcc_usb30_prim_master_clk_src",
1564184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_2,
1565184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
1566184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1567184fdd87SKonrad Dybcio 	},
1568184fdd87SKonrad Dybcio };
1569184fdd87SKonrad Dybcio 
1570184fdd87SKonrad Dybcio static const struct freq_tbl ftbl_gcc_usb30_prim_mock_utmi_clk_src[] = {
1571184fdd87SKonrad Dybcio 	F(19200000, P_BI_TCXO, 1, 0, 0),
1572184fdd87SKonrad Dybcio 	{ }
1573184fdd87SKonrad Dybcio };
1574184fdd87SKonrad Dybcio 
1575184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src = {
1576184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x1a034,
1577184fdd87SKonrad Dybcio 	.mnd_width = 0,
1578184fdd87SKonrad Dybcio 	.hid_width = 5,
1579184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_0,
1580184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_usb30_prim_mock_utmi_clk_src,
1581184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1582184fdd87SKonrad Dybcio 		.name = "gcc_usb30_prim_mock_utmi_clk_src",
1583184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_0,
1584184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1585184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1586184fdd87SKonrad Dybcio 	},
1587184fdd87SKonrad Dybcio };
1588184fdd87SKonrad Dybcio 
1589184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src = {
1590184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x1a060,
1591184fdd87SKonrad Dybcio 	.mnd_width = 0,
1592184fdd87SKonrad Dybcio 	.hid_width = 5,
1593184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_13,
1594184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_usb30_prim_mock_utmi_clk_src,
1595184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1596184fdd87SKonrad Dybcio 		.name = "gcc_usb3_prim_phy_aux_clk_src",
1597184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_13,
1598184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_13),
1599184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1600184fdd87SKonrad Dybcio 	},
1601184fdd87SKonrad Dybcio };
1602184fdd87SKonrad Dybcio 
1603184fdd87SKonrad Dybcio static const struct freq_tbl ftbl_gcc_video_venus_clk_src[] = {
1604184fdd87SKonrad Dybcio 	F(133000000, P_GPLL11_OUT_EVEN, 4, 0, 0),
1605184fdd87SKonrad Dybcio 	F(240000000, P_GPLL11_OUT_EVEN, 2.5, 0, 0),
1606184fdd87SKonrad Dybcio 	F(300000000, P_GPLL11_OUT_EVEN, 2, 0, 0),
1607184fdd87SKonrad Dybcio 	F(384000000, P_GPLL11_OUT_EVEN, 2, 0, 0),
1608184fdd87SKonrad Dybcio 	{ }
1609184fdd87SKonrad Dybcio };
1610184fdd87SKonrad Dybcio 
1611184fdd87SKonrad Dybcio static struct clk_rcg2 gcc_video_venus_clk_src = {
1612184fdd87SKonrad Dybcio 	.cmd_rcgr = 0x58060,
1613184fdd87SKonrad Dybcio 	.mnd_width = 0,
1614184fdd87SKonrad Dybcio 	.hid_width = 5,
1615184fdd87SKonrad Dybcio 	.parent_map = gcc_parent_map_14,
1616184fdd87SKonrad Dybcio 	.freq_tbl = ftbl_gcc_video_venus_clk_src,
1617184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1618184fdd87SKonrad Dybcio 		.name = "gcc_video_venus_clk_src",
1619184fdd87SKonrad Dybcio 		.parent_data = gcc_parent_data_14,
1620184fdd87SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_parent_data_14),
1621184fdd87SKonrad Dybcio 		.flags = CLK_SET_RATE_PARENT,
1622184fdd87SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1623184fdd87SKonrad Dybcio 	},
1624184fdd87SKonrad Dybcio };
1625184fdd87SKonrad Dybcio 
1626184fdd87SKonrad Dybcio static struct clk_regmap_div gcc_cpuss_ahb_postdiv_clk_src = {
1627184fdd87SKonrad Dybcio 	.reg = 0x2b154,
1628184fdd87SKonrad Dybcio 	.shift = 0,
1629184fdd87SKonrad Dybcio 	.width = 4,
1630184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data) {
1631184fdd87SKonrad Dybcio 		.name = "gcc_cpuss_ahb_postdiv_clk_src",
1632184fdd87SKonrad Dybcio 		.parent_hws = (const struct clk_hw*[]){
1633184fdd87SKonrad Dybcio 			&gcc_cpuss_ahb_clk_src.clkr.hw,
1634184fdd87SKonrad Dybcio 		},
1635184fdd87SKonrad Dybcio 		.num_parents = 1,
1636184fdd87SKonrad Dybcio 		.flags = CLK_SET_RATE_PARENT,
1637184fdd87SKonrad Dybcio 		.ops = &clk_regmap_div_ro_ops,
1638184fdd87SKonrad Dybcio 	},
1639184fdd87SKonrad Dybcio };
1640184fdd87SKonrad Dybcio 
1641184fdd87SKonrad Dybcio static struct clk_regmap_div gcc_usb30_prim_mock_utmi_postdiv_clk_src = {
1642184fdd87SKonrad Dybcio 	.reg = 0x1a04c,
1643184fdd87SKonrad Dybcio 	.shift = 0,
1644184fdd87SKonrad Dybcio 	.width = 4,
1645184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data) {
1646184fdd87SKonrad Dybcio 		.name = "gcc_usb30_prim_mock_utmi_postdiv_clk_src",
1647184fdd87SKonrad Dybcio 		.parent_hws = (const struct clk_hw*[]){
1648184fdd87SKonrad Dybcio 			&gcc_usb30_prim_mock_utmi_clk_src.clkr.hw,
1649184fdd87SKonrad Dybcio 		},
1650184fdd87SKonrad Dybcio 		.num_parents = 1,
1651184fdd87SKonrad Dybcio 		.flags = CLK_SET_RATE_PARENT,
1652184fdd87SKonrad Dybcio 		.ops = &clk_regmap_div_ro_ops,
1653184fdd87SKonrad Dybcio 	},
1654184fdd87SKonrad Dybcio };
1655184fdd87SKonrad Dybcio 
1656184fdd87SKonrad Dybcio static struct clk_branch gcc_ahb2phy_csi_clk = {
1657184fdd87SKonrad Dybcio 	.halt_reg = 0x1d004,
1658184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
1659184fdd87SKonrad Dybcio 	.hwcg_reg = 0x1d004,
1660184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
1661184fdd87SKonrad Dybcio 	.clkr = {
1662184fdd87SKonrad Dybcio 		.enable_reg = 0x1d004,
1663184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
1664184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1665184fdd87SKonrad Dybcio 			.name = "gcc_ahb2phy_csi_clk",
1666184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
1667184fdd87SKonrad Dybcio 		},
1668184fdd87SKonrad Dybcio 	},
1669184fdd87SKonrad Dybcio };
1670184fdd87SKonrad Dybcio 
1671184fdd87SKonrad Dybcio static struct clk_branch gcc_ahb2phy_usb_clk = {
1672184fdd87SKonrad Dybcio 	.halt_reg = 0x1d008,
1673184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
1674184fdd87SKonrad Dybcio 	.hwcg_reg = 0x1d008,
1675184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
1676184fdd87SKonrad Dybcio 	.clkr = {
1677184fdd87SKonrad Dybcio 		.enable_reg = 0x1d008,
1678184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
1679184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1680184fdd87SKonrad Dybcio 			.name = "gcc_ahb2phy_usb_clk",
1681184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
1682184fdd87SKonrad Dybcio 		},
1683184fdd87SKonrad Dybcio 	},
1684184fdd87SKonrad Dybcio };
1685184fdd87SKonrad Dybcio 
1686184fdd87SKonrad Dybcio static struct clk_branch gcc_bimc_gpu_axi_clk = {
1687184fdd87SKonrad Dybcio 	.halt_reg = 0x71154,
1688184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
1689184fdd87SKonrad Dybcio 	.hwcg_reg = 0x71154,
1690184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
1691184fdd87SKonrad Dybcio 	.clkr = {
1692184fdd87SKonrad Dybcio 		.enable_reg = 0x71154,
1693184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
1694184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1695184fdd87SKonrad Dybcio 			.name = "gcc_bimc_gpu_axi_clk",
1696184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
1697184fdd87SKonrad Dybcio 		},
1698184fdd87SKonrad Dybcio 	},
1699184fdd87SKonrad Dybcio };
1700184fdd87SKonrad Dybcio 
1701184fdd87SKonrad Dybcio static struct clk_branch gcc_boot_rom_ahb_clk = {
1702184fdd87SKonrad Dybcio 	.halt_reg = 0x23004,
1703184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
1704184fdd87SKonrad Dybcio 	.hwcg_reg = 0x23004,
1705184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
1706184fdd87SKonrad Dybcio 	.clkr = {
1707184fdd87SKonrad Dybcio 		.enable_reg = 0x79004,
1708184fdd87SKonrad Dybcio 		.enable_mask = BIT(10),
1709184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1710184fdd87SKonrad Dybcio 			.name = "gcc_boot_rom_ahb_clk",
1711184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
1712184fdd87SKonrad Dybcio 		},
1713184fdd87SKonrad Dybcio 	},
1714184fdd87SKonrad Dybcio };
1715184fdd87SKonrad Dybcio 
1716184fdd87SKonrad Dybcio static struct clk_branch gcc_cam_throttle_nrt_clk = {
1717184fdd87SKonrad Dybcio 	.halt_reg = 0x17070,
1718184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
1719184fdd87SKonrad Dybcio 	.hwcg_reg = 0x17070,
1720184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
1721184fdd87SKonrad Dybcio 	.clkr = {
1722184fdd87SKonrad Dybcio 		.enable_reg = 0x79004,
1723184fdd87SKonrad Dybcio 		.enable_mask = BIT(27),
1724184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1725184fdd87SKonrad Dybcio 			.name = "gcc_cam_throttle_nrt_clk",
1726184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
1727184fdd87SKonrad Dybcio 		},
1728184fdd87SKonrad Dybcio 	},
1729184fdd87SKonrad Dybcio };
1730184fdd87SKonrad Dybcio 
1731184fdd87SKonrad Dybcio static struct clk_branch gcc_cam_throttle_rt_clk = {
1732184fdd87SKonrad Dybcio 	.halt_reg = 0x1706c,
1733184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
1734184fdd87SKonrad Dybcio 	.hwcg_reg = 0x1706c,
1735184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
1736184fdd87SKonrad Dybcio 	.clkr = {
1737184fdd87SKonrad Dybcio 		.enable_reg = 0x79004,
1738184fdd87SKonrad Dybcio 		.enable_mask = BIT(26),
1739184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1740184fdd87SKonrad Dybcio 			.name = "gcc_cam_throttle_rt_clk",
1741184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
1742184fdd87SKonrad Dybcio 		},
1743184fdd87SKonrad Dybcio 	},
1744184fdd87SKonrad Dybcio };
1745184fdd87SKonrad Dybcio 
1746184fdd87SKonrad Dybcio static struct clk_branch gcc_camera_ahb_clk = {
1747184fdd87SKonrad Dybcio 	.halt_reg = 0x17008,
1748184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
1749184fdd87SKonrad Dybcio 	.hwcg_reg = 0x17008,
1750184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
1751184fdd87SKonrad Dybcio 	.clkr = {
1752184fdd87SKonrad Dybcio 		.enable_reg = 0x17008,
1753184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
1754184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1755184fdd87SKonrad Dybcio 			.name = "gcc_camera_ahb_clk",
1756184fdd87SKonrad Dybcio 			.flags = CLK_IS_CRITICAL,
1757184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
1758184fdd87SKonrad Dybcio 		},
1759184fdd87SKonrad Dybcio 	},
1760184fdd87SKonrad Dybcio };
1761184fdd87SKonrad Dybcio 
1762184fdd87SKonrad Dybcio static struct clk_branch gcc_camss_axi_clk = {
1763184fdd87SKonrad Dybcio 	.halt_reg = 0x58044,
1764184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
1765184fdd87SKonrad Dybcio 	.clkr = {
1766184fdd87SKonrad Dybcio 		.enable_reg = 0x58044,
1767184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
1768184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1769184fdd87SKonrad Dybcio 			.name = "gcc_camss_axi_clk",
17705d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
17715d0e6922SDmitry Baryshkov 				&gcc_camss_axi_clk_src.clkr.hw,
1772184fdd87SKonrad Dybcio 			},
1773184fdd87SKonrad Dybcio 			.num_parents = 1,
1774184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
1775184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
1776184fdd87SKonrad Dybcio 		},
1777184fdd87SKonrad Dybcio 	},
1778184fdd87SKonrad Dybcio };
1779184fdd87SKonrad Dybcio 
1780184fdd87SKonrad Dybcio static struct clk_branch gcc_camss_cci_0_clk = {
1781184fdd87SKonrad Dybcio 	.halt_reg = 0x56018,
1782184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
1783184fdd87SKonrad Dybcio 	.clkr = {
1784184fdd87SKonrad Dybcio 		.enable_reg = 0x56018,
1785184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
1786184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1787184fdd87SKonrad Dybcio 			.name = "gcc_camss_cci_0_clk",
17885d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
17895d0e6922SDmitry Baryshkov 				&gcc_camss_cci_0_clk_src.clkr.hw,
1790184fdd87SKonrad Dybcio 			},
1791184fdd87SKonrad Dybcio 			.num_parents = 1,
1792184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
1793184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
1794184fdd87SKonrad Dybcio 		},
1795184fdd87SKonrad Dybcio 	},
1796184fdd87SKonrad Dybcio };
1797184fdd87SKonrad Dybcio 
1798184fdd87SKonrad Dybcio static struct clk_branch gcc_camss_cci_1_clk = {
1799184fdd87SKonrad Dybcio 	.halt_reg = 0x5c018,
1800184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
1801184fdd87SKonrad Dybcio 	.clkr = {
1802184fdd87SKonrad Dybcio 		.enable_reg = 0x5c018,
1803184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
1804184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1805184fdd87SKonrad Dybcio 			.name = "gcc_camss_cci_1_clk",
18065d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
18075d0e6922SDmitry Baryshkov 				&gcc_camss_cci_1_clk_src.clkr.hw,
1808184fdd87SKonrad Dybcio 			},
1809184fdd87SKonrad Dybcio 			.num_parents = 1,
1810184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
1811184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
1812184fdd87SKonrad Dybcio 		},
1813184fdd87SKonrad Dybcio 	},
1814184fdd87SKonrad Dybcio };
1815184fdd87SKonrad Dybcio 
1816184fdd87SKonrad Dybcio static struct clk_branch gcc_camss_cphy_0_clk = {
1817184fdd87SKonrad Dybcio 	.halt_reg = 0x52088,
1818184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
1819184fdd87SKonrad Dybcio 	.clkr = {
1820184fdd87SKonrad Dybcio 		.enable_reg = 0x52088,
1821184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
1822184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1823184fdd87SKonrad Dybcio 			.name = "gcc_camss_cphy_0_clk",
18245d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
18255d0e6922SDmitry Baryshkov 				&gcc_camss_tfe_cphy_rx_clk_src.clkr.hw,
1826184fdd87SKonrad Dybcio 			},
1827184fdd87SKonrad Dybcio 			.num_parents = 1,
1828184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
1829184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
1830184fdd87SKonrad Dybcio 		},
1831184fdd87SKonrad Dybcio 	},
1832184fdd87SKonrad Dybcio };
1833184fdd87SKonrad Dybcio 
1834184fdd87SKonrad Dybcio static struct clk_branch gcc_camss_cphy_1_clk = {
1835184fdd87SKonrad Dybcio 	.halt_reg = 0x5208c,
1836184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
1837184fdd87SKonrad Dybcio 	.clkr = {
1838184fdd87SKonrad Dybcio 		.enable_reg = 0x5208c,
1839184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
1840184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1841184fdd87SKonrad Dybcio 			.name = "gcc_camss_cphy_1_clk",
18425d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
18435d0e6922SDmitry Baryshkov 				&gcc_camss_tfe_cphy_rx_clk_src.clkr.hw,
1844184fdd87SKonrad Dybcio 			},
1845184fdd87SKonrad Dybcio 			.num_parents = 1,
1846184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
1847184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
1848184fdd87SKonrad Dybcio 		},
1849184fdd87SKonrad Dybcio 	},
1850184fdd87SKonrad Dybcio };
1851184fdd87SKonrad Dybcio 
1852184fdd87SKonrad Dybcio static struct clk_branch gcc_camss_cphy_2_clk = {
1853184fdd87SKonrad Dybcio 	.halt_reg = 0x52090,
1854184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
1855184fdd87SKonrad Dybcio 	.clkr = {
1856184fdd87SKonrad Dybcio 		.enable_reg = 0x52090,
1857184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
1858184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1859184fdd87SKonrad Dybcio 			.name = "gcc_camss_cphy_2_clk",
18605d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
18615d0e6922SDmitry Baryshkov 				&gcc_camss_tfe_cphy_rx_clk_src.clkr.hw,
1862184fdd87SKonrad Dybcio 			},
1863184fdd87SKonrad Dybcio 			.num_parents = 1,
1864184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
1865184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
1866184fdd87SKonrad Dybcio 		},
1867184fdd87SKonrad Dybcio 	},
1868184fdd87SKonrad Dybcio };
1869184fdd87SKonrad Dybcio 
1870184fdd87SKonrad Dybcio static struct clk_branch gcc_camss_cphy_3_clk = {
1871184fdd87SKonrad Dybcio 	.halt_reg = 0x520f8,
1872184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
1873184fdd87SKonrad Dybcio 	.clkr = {
1874184fdd87SKonrad Dybcio 		.enable_reg = 0x520f8,
1875184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
1876184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1877184fdd87SKonrad Dybcio 			.name = "gcc_camss_cphy_3_clk",
18785d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
18795d0e6922SDmitry Baryshkov 				&gcc_camss_tfe_cphy_rx_clk_src.clkr.hw,
1880184fdd87SKonrad Dybcio 			},
1881184fdd87SKonrad Dybcio 			.num_parents = 1,
1882184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
1883184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
1884184fdd87SKonrad Dybcio 		},
1885184fdd87SKonrad Dybcio 	},
1886184fdd87SKonrad Dybcio };
1887184fdd87SKonrad Dybcio 
1888184fdd87SKonrad Dybcio static struct clk_branch gcc_camss_csi0phytimer_clk = {
1889184fdd87SKonrad Dybcio 	.halt_reg = 0x59018,
1890184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
1891184fdd87SKonrad Dybcio 	.clkr = {
1892184fdd87SKonrad Dybcio 		.enable_reg = 0x59018,
1893184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
1894184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1895184fdd87SKonrad Dybcio 			.name = "gcc_camss_csi0phytimer_clk",
18965d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
18975d0e6922SDmitry Baryshkov 				&gcc_camss_csi0phytimer_clk_src.clkr.hw,
1898184fdd87SKonrad Dybcio 			},
1899184fdd87SKonrad Dybcio 			.num_parents = 1,
1900184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
1901184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
1902184fdd87SKonrad Dybcio 		},
1903184fdd87SKonrad Dybcio 	},
1904184fdd87SKonrad Dybcio };
1905184fdd87SKonrad Dybcio 
1906184fdd87SKonrad Dybcio static struct clk_branch gcc_camss_csi1phytimer_clk = {
1907184fdd87SKonrad Dybcio 	.halt_reg = 0x59034,
1908184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
1909184fdd87SKonrad Dybcio 	.clkr = {
1910184fdd87SKonrad Dybcio 		.enable_reg = 0x59034,
1911184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
1912184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1913184fdd87SKonrad Dybcio 			.name = "gcc_camss_csi1phytimer_clk",
19145d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
19155d0e6922SDmitry Baryshkov 				&gcc_camss_csi1phytimer_clk_src.clkr.hw,
1916184fdd87SKonrad Dybcio 			},
1917184fdd87SKonrad Dybcio 			.num_parents = 1,
1918184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
1919184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
1920184fdd87SKonrad Dybcio 		},
1921184fdd87SKonrad Dybcio 	},
1922184fdd87SKonrad Dybcio };
1923184fdd87SKonrad Dybcio 
1924184fdd87SKonrad Dybcio static struct clk_branch gcc_camss_csi2phytimer_clk = {
1925184fdd87SKonrad Dybcio 	.halt_reg = 0x59050,
1926184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
1927184fdd87SKonrad Dybcio 	.clkr = {
1928184fdd87SKonrad Dybcio 		.enable_reg = 0x59050,
1929184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
1930184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1931184fdd87SKonrad Dybcio 			.name = "gcc_camss_csi2phytimer_clk",
19325d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
19335d0e6922SDmitry Baryshkov 				&gcc_camss_csi2phytimer_clk_src.clkr.hw,
1934184fdd87SKonrad Dybcio 			},
1935184fdd87SKonrad Dybcio 			.num_parents = 1,
1936184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
1937184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
1938184fdd87SKonrad Dybcio 		},
1939184fdd87SKonrad Dybcio 	},
1940184fdd87SKonrad Dybcio };
1941184fdd87SKonrad Dybcio 
1942184fdd87SKonrad Dybcio static struct clk_branch gcc_camss_csi3phytimer_clk = {
1943184fdd87SKonrad Dybcio 	.halt_reg = 0x5906c,
1944184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
1945184fdd87SKonrad Dybcio 	.clkr = {
1946184fdd87SKonrad Dybcio 		.enable_reg = 0x5906c,
1947184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
1948184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1949184fdd87SKonrad Dybcio 			.name = "gcc_camss_csi3phytimer_clk",
19505d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
19515d0e6922SDmitry Baryshkov 				&gcc_camss_csi3phytimer_clk_src.clkr.hw,
1952184fdd87SKonrad Dybcio 			},
1953184fdd87SKonrad Dybcio 			.num_parents = 1,
1954184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
1955184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
1956184fdd87SKonrad Dybcio 		},
1957184fdd87SKonrad Dybcio 	},
1958184fdd87SKonrad Dybcio };
1959184fdd87SKonrad Dybcio 
1960184fdd87SKonrad Dybcio static struct clk_branch gcc_camss_mclk0_clk = {
1961184fdd87SKonrad Dybcio 	.halt_reg = 0x51018,
1962184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
1963184fdd87SKonrad Dybcio 	.clkr = {
1964184fdd87SKonrad Dybcio 		.enable_reg = 0x51018,
1965184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
1966184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1967184fdd87SKonrad Dybcio 			.name = "gcc_camss_mclk0_clk",
19685d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
19695d0e6922SDmitry Baryshkov 				&gcc_camss_mclk0_clk_src.clkr.hw,
1970184fdd87SKonrad Dybcio 			},
1971184fdd87SKonrad Dybcio 			.num_parents = 1,
1972184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
1973184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
1974184fdd87SKonrad Dybcio 		},
1975184fdd87SKonrad Dybcio 	},
1976184fdd87SKonrad Dybcio };
1977184fdd87SKonrad Dybcio 
1978184fdd87SKonrad Dybcio static struct clk_branch gcc_camss_mclk1_clk = {
1979184fdd87SKonrad Dybcio 	.halt_reg = 0x51034,
1980184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
1981184fdd87SKonrad Dybcio 	.clkr = {
1982184fdd87SKonrad Dybcio 		.enable_reg = 0x51034,
1983184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
1984184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1985184fdd87SKonrad Dybcio 			.name = "gcc_camss_mclk1_clk",
19865d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
19875d0e6922SDmitry Baryshkov 				&gcc_camss_mclk1_clk_src.clkr.hw,
1988184fdd87SKonrad Dybcio 			},
1989184fdd87SKonrad Dybcio 			.num_parents = 1,
1990184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
1991184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
1992184fdd87SKonrad Dybcio 		},
1993184fdd87SKonrad Dybcio 	},
1994184fdd87SKonrad Dybcio };
1995184fdd87SKonrad Dybcio 
1996184fdd87SKonrad Dybcio static struct clk_branch gcc_camss_mclk2_clk = {
1997184fdd87SKonrad Dybcio 	.halt_reg = 0x51050,
1998184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
1999184fdd87SKonrad Dybcio 	.clkr = {
2000184fdd87SKonrad Dybcio 		.enable_reg = 0x51050,
2001184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
2002184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2003184fdd87SKonrad Dybcio 			.name = "gcc_camss_mclk2_clk",
20045d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
20055d0e6922SDmitry Baryshkov 				&gcc_camss_mclk2_clk_src.clkr.hw,
2006184fdd87SKonrad Dybcio 			},
2007184fdd87SKonrad Dybcio 			.num_parents = 1,
2008184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
2009184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2010184fdd87SKonrad Dybcio 		},
2011184fdd87SKonrad Dybcio 	},
2012184fdd87SKonrad Dybcio };
2013184fdd87SKonrad Dybcio 
2014184fdd87SKonrad Dybcio static struct clk_branch gcc_camss_mclk3_clk = {
2015184fdd87SKonrad Dybcio 	.halt_reg = 0x5106c,
2016184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
2017184fdd87SKonrad Dybcio 	.clkr = {
2018184fdd87SKonrad Dybcio 		.enable_reg = 0x5106c,
2019184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
2020184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2021184fdd87SKonrad Dybcio 			.name = "gcc_camss_mclk3_clk",
20225d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
20235d0e6922SDmitry Baryshkov 				&gcc_camss_mclk3_clk_src.clkr.hw,
2024184fdd87SKonrad Dybcio 			},
2025184fdd87SKonrad Dybcio 			.num_parents = 1,
2026184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
2027184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2028184fdd87SKonrad Dybcio 		},
2029184fdd87SKonrad Dybcio 	},
2030184fdd87SKonrad Dybcio };
2031184fdd87SKonrad Dybcio 
2032184fdd87SKonrad Dybcio static struct clk_branch gcc_camss_mclk4_clk = {
2033184fdd87SKonrad Dybcio 	.halt_reg = 0x51088,
2034184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
2035184fdd87SKonrad Dybcio 	.clkr = {
2036184fdd87SKonrad Dybcio 		.enable_reg = 0x51088,
2037184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
2038184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2039184fdd87SKonrad Dybcio 			.name = "gcc_camss_mclk4_clk",
20405d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
20415d0e6922SDmitry Baryshkov 				&gcc_camss_mclk4_clk_src.clkr.hw,
2042184fdd87SKonrad Dybcio 			},
2043184fdd87SKonrad Dybcio 			.num_parents = 1,
2044184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
2045184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2046184fdd87SKonrad Dybcio 		},
2047184fdd87SKonrad Dybcio 	},
2048184fdd87SKonrad Dybcio };
2049184fdd87SKonrad Dybcio 
2050184fdd87SKonrad Dybcio static struct clk_branch gcc_camss_nrt_axi_clk = {
2051184fdd87SKonrad Dybcio 	.halt_reg = 0x58054,
2052184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
2053184fdd87SKonrad Dybcio 	.clkr = {
2054184fdd87SKonrad Dybcio 		.enable_reg = 0x58054,
2055184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
2056184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2057184fdd87SKonrad Dybcio 			.name = "gcc_camss_nrt_axi_clk",
2058184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2059184fdd87SKonrad Dybcio 		},
2060184fdd87SKonrad Dybcio 	},
2061184fdd87SKonrad Dybcio };
2062184fdd87SKonrad Dybcio 
2063184fdd87SKonrad Dybcio static struct clk_branch gcc_camss_ope_ahb_clk = {
2064184fdd87SKonrad Dybcio 	.halt_reg = 0x5503c,
2065184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
2066184fdd87SKonrad Dybcio 	.clkr = {
2067184fdd87SKonrad Dybcio 		.enable_reg = 0x5503c,
2068184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
2069184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2070184fdd87SKonrad Dybcio 			.name = "gcc_camss_ope_ahb_clk",
20715d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
20725d0e6922SDmitry Baryshkov 				&gcc_camss_ope_ahb_clk_src.clkr.hw,
2073184fdd87SKonrad Dybcio 			},
2074184fdd87SKonrad Dybcio 			.num_parents = 1,
2075184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
2076184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2077184fdd87SKonrad Dybcio 		},
2078184fdd87SKonrad Dybcio 	},
2079184fdd87SKonrad Dybcio };
2080184fdd87SKonrad Dybcio 
2081184fdd87SKonrad Dybcio static struct clk_branch gcc_camss_ope_clk = {
2082184fdd87SKonrad Dybcio 	.halt_reg = 0x5501c,
2083184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
2084184fdd87SKonrad Dybcio 	.clkr = {
2085184fdd87SKonrad Dybcio 		.enable_reg = 0x5501c,
2086184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
2087184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2088184fdd87SKonrad Dybcio 			.name = "gcc_camss_ope_clk",
20895d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
20905d0e6922SDmitry Baryshkov 				&gcc_camss_ope_clk_src.clkr.hw,
2091184fdd87SKonrad Dybcio 			},
2092184fdd87SKonrad Dybcio 			.num_parents = 1,
2093184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
2094184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2095184fdd87SKonrad Dybcio 		},
2096184fdd87SKonrad Dybcio 	},
2097184fdd87SKonrad Dybcio };
2098184fdd87SKonrad Dybcio 
2099184fdd87SKonrad Dybcio static struct clk_branch gcc_camss_rt_axi_clk = {
2100184fdd87SKonrad Dybcio 	.halt_reg = 0x5805c,
2101184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
2102184fdd87SKonrad Dybcio 	.clkr = {
2103184fdd87SKonrad Dybcio 		.enable_reg = 0x5805c,
2104184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
2105184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2106184fdd87SKonrad Dybcio 			.name = "gcc_camss_rt_axi_clk",
2107184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2108184fdd87SKonrad Dybcio 		},
2109184fdd87SKonrad Dybcio 	},
2110184fdd87SKonrad Dybcio };
2111184fdd87SKonrad Dybcio 
2112184fdd87SKonrad Dybcio static struct clk_branch gcc_camss_tfe_0_clk = {
2113184fdd87SKonrad Dybcio 	.halt_reg = 0x5201c,
2114184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
2115184fdd87SKonrad Dybcio 	.clkr = {
2116184fdd87SKonrad Dybcio 		.enable_reg = 0x5201c,
2117184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
2118184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2119184fdd87SKonrad Dybcio 			.name = "gcc_camss_tfe_0_clk",
21205d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
21215d0e6922SDmitry Baryshkov 				&gcc_camss_tfe_0_clk_src.clkr.hw,
2122184fdd87SKonrad Dybcio 			},
2123184fdd87SKonrad Dybcio 			.num_parents = 1,
2124184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
2125184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2126184fdd87SKonrad Dybcio 		},
2127184fdd87SKonrad Dybcio 	},
2128184fdd87SKonrad Dybcio };
2129184fdd87SKonrad Dybcio 
2130184fdd87SKonrad Dybcio static struct clk_branch gcc_camss_tfe_0_cphy_rx_clk = {
2131184fdd87SKonrad Dybcio 	.halt_reg = 0x5207c,
2132184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
2133184fdd87SKonrad Dybcio 	.clkr = {
2134184fdd87SKonrad Dybcio 		.enable_reg = 0x5207c,
2135184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
2136184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2137184fdd87SKonrad Dybcio 			.name = "gcc_camss_tfe_0_cphy_rx_clk",
21385d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
21395d0e6922SDmitry Baryshkov 				&gcc_camss_tfe_cphy_rx_clk_src.clkr.hw,
2140184fdd87SKonrad Dybcio 			},
2141184fdd87SKonrad Dybcio 			.num_parents = 1,
2142184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
2143184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2144184fdd87SKonrad Dybcio 		},
2145184fdd87SKonrad Dybcio 	},
2146184fdd87SKonrad Dybcio };
2147184fdd87SKonrad Dybcio 
2148184fdd87SKonrad Dybcio static struct clk_branch gcc_camss_tfe_0_csid_clk = {
2149184fdd87SKonrad Dybcio 	.halt_reg = 0x520ac,
2150184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
2151184fdd87SKonrad Dybcio 	.clkr = {
2152184fdd87SKonrad Dybcio 		.enable_reg = 0x520ac,
2153184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
2154184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2155184fdd87SKonrad Dybcio 			.name = "gcc_camss_tfe_0_csid_clk",
21565d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
21575d0e6922SDmitry Baryshkov 				&gcc_camss_tfe_0_csid_clk_src.clkr.hw,
2158184fdd87SKonrad Dybcio 			},
2159184fdd87SKonrad Dybcio 			.num_parents = 1,
2160184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
2161184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2162184fdd87SKonrad Dybcio 		},
2163184fdd87SKonrad Dybcio 	},
2164184fdd87SKonrad Dybcio };
2165184fdd87SKonrad Dybcio 
2166184fdd87SKonrad Dybcio static struct clk_branch gcc_camss_tfe_1_clk = {
2167184fdd87SKonrad Dybcio 	.halt_reg = 0x5203c,
2168184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
2169184fdd87SKonrad Dybcio 	.clkr = {
2170184fdd87SKonrad Dybcio 		.enable_reg = 0x5203c,
2171184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
2172184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2173184fdd87SKonrad Dybcio 			.name = "gcc_camss_tfe_1_clk",
21745d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
21755d0e6922SDmitry Baryshkov 				&gcc_camss_tfe_1_clk_src.clkr.hw,
2176184fdd87SKonrad Dybcio 			},
2177184fdd87SKonrad Dybcio 			.num_parents = 1,
2178184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
2179184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2180184fdd87SKonrad Dybcio 		},
2181184fdd87SKonrad Dybcio 	},
2182184fdd87SKonrad Dybcio };
2183184fdd87SKonrad Dybcio 
2184184fdd87SKonrad Dybcio static struct clk_branch gcc_camss_tfe_1_cphy_rx_clk = {
2185184fdd87SKonrad Dybcio 	.halt_reg = 0x52080,
2186184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
2187184fdd87SKonrad Dybcio 	.clkr = {
2188184fdd87SKonrad Dybcio 		.enable_reg = 0x52080,
2189184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
2190184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2191184fdd87SKonrad Dybcio 			.name = "gcc_camss_tfe_1_cphy_rx_clk",
21925d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
21935d0e6922SDmitry Baryshkov 				&gcc_camss_tfe_cphy_rx_clk_src.clkr.hw,
2194184fdd87SKonrad Dybcio 			},
2195184fdd87SKonrad Dybcio 			.num_parents = 1,
2196184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
2197184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2198184fdd87SKonrad Dybcio 		},
2199184fdd87SKonrad Dybcio 	},
2200184fdd87SKonrad Dybcio };
2201184fdd87SKonrad Dybcio 
2202184fdd87SKonrad Dybcio static struct clk_branch gcc_camss_tfe_1_csid_clk = {
2203184fdd87SKonrad Dybcio 	.halt_reg = 0x520cc,
2204184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
2205184fdd87SKonrad Dybcio 	.clkr = {
2206184fdd87SKonrad Dybcio 		.enable_reg = 0x520cc,
2207184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
2208184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2209184fdd87SKonrad Dybcio 			.name = "gcc_camss_tfe_1_csid_clk",
22105d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
22115d0e6922SDmitry Baryshkov 				&gcc_camss_tfe_1_csid_clk_src.clkr.hw,
2212184fdd87SKonrad Dybcio 			},
2213184fdd87SKonrad Dybcio 			.num_parents = 1,
2214184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
2215184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2216184fdd87SKonrad Dybcio 		},
2217184fdd87SKonrad Dybcio 	},
2218184fdd87SKonrad Dybcio };
2219184fdd87SKonrad Dybcio 
2220184fdd87SKonrad Dybcio static struct clk_branch gcc_camss_tfe_2_clk = {
2221184fdd87SKonrad Dybcio 	.halt_reg = 0x5205c,
2222184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
2223184fdd87SKonrad Dybcio 	.clkr = {
2224184fdd87SKonrad Dybcio 		.enable_reg = 0x5205c,
2225184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
2226184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2227184fdd87SKonrad Dybcio 			.name = "gcc_camss_tfe_2_clk",
22285d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
22295d0e6922SDmitry Baryshkov 				&gcc_camss_tfe_2_clk_src.clkr.hw,
2230184fdd87SKonrad Dybcio 			},
2231184fdd87SKonrad Dybcio 			.num_parents = 1,
2232184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
2233184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2234184fdd87SKonrad Dybcio 		},
2235184fdd87SKonrad Dybcio 	},
2236184fdd87SKonrad Dybcio };
2237184fdd87SKonrad Dybcio 
2238184fdd87SKonrad Dybcio static struct clk_branch gcc_camss_tfe_2_cphy_rx_clk = {
2239184fdd87SKonrad Dybcio 	.halt_reg = 0x52084,
2240184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
2241184fdd87SKonrad Dybcio 	.clkr = {
2242184fdd87SKonrad Dybcio 		.enable_reg = 0x52084,
2243184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
2244184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2245184fdd87SKonrad Dybcio 			.name = "gcc_camss_tfe_2_cphy_rx_clk",
22465d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
22475d0e6922SDmitry Baryshkov 				&gcc_camss_tfe_cphy_rx_clk_src.clkr.hw,
2248184fdd87SKonrad Dybcio 			},
2249184fdd87SKonrad Dybcio 			.num_parents = 1,
2250184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
2251184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2252184fdd87SKonrad Dybcio 		},
2253184fdd87SKonrad Dybcio 	},
2254184fdd87SKonrad Dybcio };
2255184fdd87SKonrad Dybcio 
2256184fdd87SKonrad Dybcio static struct clk_branch gcc_camss_tfe_2_csid_clk = {
2257184fdd87SKonrad Dybcio 	.halt_reg = 0x520ec,
2258184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
2259184fdd87SKonrad Dybcio 	.clkr = {
2260184fdd87SKonrad Dybcio 		.enable_reg = 0x520ec,
2261184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
2262184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2263184fdd87SKonrad Dybcio 			.name = "gcc_camss_tfe_2_csid_clk",
22645d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
22655d0e6922SDmitry Baryshkov 				&gcc_camss_tfe_2_csid_clk_src.clkr.hw,
2266184fdd87SKonrad Dybcio 			},
2267184fdd87SKonrad Dybcio 			.num_parents = 1,
2268184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
2269184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2270184fdd87SKonrad Dybcio 		},
2271184fdd87SKonrad Dybcio 	},
2272184fdd87SKonrad Dybcio };
2273184fdd87SKonrad Dybcio 
2274184fdd87SKonrad Dybcio static struct clk_branch gcc_camss_top_ahb_clk = {
2275184fdd87SKonrad Dybcio 	.halt_reg = 0x58028,
2276184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
2277184fdd87SKonrad Dybcio 	.clkr = {
2278184fdd87SKonrad Dybcio 		.enable_reg = 0x58028,
2279184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
2280184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2281184fdd87SKonrad Dybcio 			.name = "gcc_camss_top_ahb_clk",
22825d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
22835d0e6922SDmitry Baryshkov 				&gcc_camss_top_ahb_clk_src.clkr.hw,
2284184fdd87SKonrad Dybcio 			},
2285184fdd87SKonrad Dybcio 			.num_parents = 1,
2286184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
2287184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2288184fdd87SKonrad Dybcio 		},
2289184fdd87SKonrad Dybcio 	},
2290184fdd87SKonrad Dybcio };
2291184fdd87SKonrad Dybcio 
2292184fdd87SKonrad Dybcio static struct clk_branch gcc_cfg_noc_usb3_prim_axi_clk = {
2293184fdd87SKonrad Dybcio 	.halt_reg = 0x1a084,
2294184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2295184fdd87SKonrad Dybcio 	.hwcg_reg = 0x1a084,
2296184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
2297184fdd87SKonrad Dybcio 	.clkr = {
2298184fdd87SKonrad Dybcio 		.enable_reg = 0x1a084,
2299184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
2300184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2301184fdd87SKonrad Dybcio 			.name = "gcc_cfg_noc_usb3_prim_axi_clk",
23025d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
23035d0e6922SDmitry Baryshkov 				&gcc_usb30_prim_master_clk_src.clkr.hw,
2304184fdd87SKonrad Dybcio 			},
2305184fdd87SKonrad Dybcio 			.num_parents = 1,
2306184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
2307184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2308184fdd87SKonrad Dybcio 		},
2309184fdd87SKonrad Dybcio 	},
2310184fdd87SKonrad Dybcio };
2311184fdd87SKonrad Dybcio 
2312184fdd87SKonrad Dybcio static struct clk_branch gcc_disp_ahb_clk = {
2313184fdd87SKonrad Dybcio 	.halt_reg = 0x1700c,
2314184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2315184fdd87SKonrad Dybcio 	.hwcg_reg = 0x1700c,
2316184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
2317184fdd87SKonrad Dybcio 	.clkr = {
2318184fdd87SKonrad Dybcio 		.enable_reg = 0x1700c,
2319184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
2320184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2321184fdd87SKonrad Dybcio 			.name = "gcc_disp_ahb_clk",
2322184fdd87SKonrad Dybcio 			.flags = CLK_IS_CRITICAL,
2323184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2324184fdd87SKonrad Dybcio 		},
2325184fdd87SKonrad Dybcio 	},
2326184fdd87SKonrad Dybcio };
2327184fdd87SKonrad Dybcio 
2328184fdd87SKonrad Dybcio static struct clk_regmap_div gcc_disp_gpll0_clk_src = {
2329184fdd87SKonrad Dybcio 	.reg = 0x17058,
2330184fdd87SKonrad Dybcio 	.shift = 0,
2331184fdd87SKonrad Dybcio 	.width = 2,
2332184fdd87SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data) {
2333184fdd87SKonrad Dybcio 		.name = "gcc_disp_gpll0_clk_src",
23347069b91aSDmitry Baryshkov 		.parent_hws = (const struct clk_hw*[]){
23357069b91aSDmitry Baryshkov 			&gpll0.clkr.hw,
23367069b91aSDmitry Baryshkov 		},
2337184fdd87SKonrad Dybcio 		.num_parents = 1,
2338184fdd87SKonrad Dybcio 		.ops = &clk_regmap_div_ops,
2339184fdd87SKonrad Dybcio 	},
2340184fdd87SKonrad Dybcio };
2341184fdd87SKonrad Dybcio 
2342184fdd87SKonrad Dybcio static struct clk_branch gcc_disp_gpll0_div_clk_src = {
2343184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
2344184fdd87SKonrad Dybcio 	.clkr = {
2345184fdd87SKonrad Dybcio 		.enable_reg = 0x79004,
2346184fdd87SKonrad Dybcio 		.enable_mask = BIT(20),
2347184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2348184fdd87SKonrad Dybcio 			.name = "gcc_disp_gpll0_div_clk_src",
23495d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
23505d0e6922SDmitry Baryshkov 				&gcc_disp_gpll0_clk_src.clkr.hw,
2351184fdd87SKonrad Dybcio 			},
2352184fdd87SKonrad Dybcio 			.num_parents = 1,
2353184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
2354184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2355184fdd87SKonrad Dybcio 		},
2356184fdd87SKonrad Dybcio 	},
2357184fdd87SKonrad Dybcio };
2358184fdd87SKonrad Dybcio 
2359184fdd87SKonrad Dybcio static struct clk_branch gcc_disp_hf_axi_clk = {
2360184fdd87SKonrad Dybcio 	.halt_reg = 0x17020,
2361184fdd87SKonrad Dybcio 	.halt_check = BRANCH_VOTED,
2362184fdd87SKonrad Dybcio 	.hwcg_reg = 0x17020,
2363184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
2364184fdd87SKonrad Dybcio 	.clkr = {
2365184fdd87SKonrad Dybcio 		.enable_reg = 0x17020,
2366184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
2367184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2368184fdd87SKonrad Dybcio 			.name = "gcc_disp_hf_axi_clk",
2369184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2370184fdd87SKonrad Dybcio 		},
2371184fdd87SKonrad Dybcio 	},
2372184fdd87SKonrad Dybcio };
2373184fdd87SKonrad Dybcio 
2374184fdd87SKonrad Dybcio static struct clk_branch gcc_disp_sleep_clk = {
2375184fdd87SKonrad Dybcio 	.halt_reg = 0x17074,
2376184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2377184fdd87SKonrad Dybcio 	.hwcg_reg = 0x17074,
2378184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
2379184fdd87SKonrad Dybcio 	.clkr = {
2380184fdd87SKonrad Dybcio 		.enable_reg = 0x17074,
2381184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
2382184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2383184fdd87SKonrad Dybcio 			.name = "gcc_disp_sleep_clk",
2384184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2385184fdd87SKonrad Dybcio 		},
2386184fdd87SKonrad Dybcio 	},
2387184fdd87SKonrad Dybcio };
2388184fdd87SKonrad Dybcio 
2389184fdd87SKonrad Dybcio static struct clk_branch gcc_disp_throttle_core_clk = {
2390184fdd87SKonrad Dybcio 	.halt_reg = 0x17064,
2391184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2392184fdd87SKonrad Dybcio 	.hwcg_reg = 0x17064,
2393184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
2394184fdd87SKonrad Dybcio 	.clkr = {
2395184fdd87SKonrad Dybcio 		.enable_reg = 0x7900c,
2396184fdd87SKonrad Dybcio 		.enable_mask = BIT(5),
2397184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2398184fdd87SKonrad Dybcio 			.name = "gcc_disp_throttle_core_clk",
2399184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2400184fdd87SKonrad Dybcio 		},
2401184fdd87SKonrad Dybcio 	},
2402184fdd87SKonrad Dybcio };
2403184fdd87SKonrad Dybcio 
2404184fdd87SKonrad Dybcio static struct clk_branch gcc_gp1_clk = {
2405184fdd87SKonrad Dybcio 	.halt_reg = 0x4d000,
2406184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
2407184fdd87SKonrad Dybcio 	.clkr = {
2408184fdd87SKonrad Dybcio 		.enable_reg = 0x4d000,
2409184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
2410184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2411184fdd87SKonrad Dybcio 			.name = "gcc_gp1_clk",
24125d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
24135d0e6922SDmitry Baryshkov 				&gcc_gp1_clk_src.clkr.hw,
2414184fdd87SKonrad Dybcio 			},
2415184fdd87SKonrad Dybcio 			.num_parents = 1,
2416184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
2417184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2418184fdd87SKonrad Dybcio 		},
2419184fdd87SKonrad Dybcio 	},
2420184fdd87SKonrad Dybcio };
2421184fdd87SKonrad Dybcio 
2422184fdd87SKonrad Dybcio static struct clk_branch gcc_gp2_clk = {
2423184fdd87SKonrad Dybcio 	.halt_reg = 0x4e000,
2424184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
2425184fdd87SKonrad Dybcio 	.clkr = {
2426184fdd87SKonrad Dybcio 		.enable_reg = 0x4e000,
2427184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
2428184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2429184fdd87SKonrad Dybcio 			.name = "gcc_gp2_clk",
24305d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
24315d0e6922SDmitry Baryshkov 				&gcc_gp2_clk_src.clkr.hw,
2432184fdd87SKonrad Dybcio 			},
2433184fdd87SKonrad Dybcio 			.num_parents = 1,
2434184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
2435184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2436184fdd87SKonrad Dybcio 		},
2437184fdd87SKonrad Dybcio 	},
2438184fdd87SKonrad Dybcio };
2439184fdd87SKonrad Dybcio 
2440184fdd87SKonrad Dybcio static struct clk_branch gcc_gp3_clk = {
2441184fdd87SKonrad Dybcio 	.halt_reg = 0x4f000,
2442184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
2443184fdd87SKonrad Dybcio 	.clkr = {
2444184fdd87SKonrad Dybcio 		.enable_reg = 0x4f000,
2445184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
2446184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2447184fdd87SKonrad Dybcio 			.name = "gcc_gp3_clk",
24485d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
24495d0e6922SDmitry Baryshkov 				&gcc_gp3_clk_src.clkr.hw,
2450184fdd87SKonrad Dybcio 			},
2451184fdd87SKonrad Dybcio 			.num_parents = 1,
2452184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
2453184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2454184fdd87SKonrad Dybcio 		},
2455184fdd87SKonrad Dybcio 	},
2456184fdd87SKonrad Dybcio };
2457184fdd87SKonrad Dybcio 
2458184fdd87SKonrad Dybcio static struct clk_branch gcc_gpu_cfg_ahb_clk = {
2459184fdd87SKonrad Dybcio 	.halt_reg = 0x36004,
2460184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2461184fdd87SKonrad Dybcio 	.hwcg_reg = 0x36004,
2462184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
2463184fdd87SKonrad Dybcio 	.clkr = {
2464184fdd87SKonrad Dybcio 		.enable_reg = 0x36004,
2465184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
2466184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2467184fdd87SKonrad Dybcio 			.name = "gcc_gpu_cfg_ahb_clk",
2468184fdd87SKonrad Dybcio 			.flags = CLK_IS_CRITICAL,
2469184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2470184fdd87SKonrad Dybcio 		},
2471184fdd87SKonrad Dybcio 	},
2472184fdd87SKonrad Dybcio };
2473184fdd87SKonrad Dybcio 
2474184fdd87SKonrad Dybcio static struct clk_branch gcc_gpu_gpll0_clk_src = {
2475184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
2476184fdd87SKonrad Dybcio 	.clkr = {
2477184fdd87SKonrad Dybcio 		.enable_reg = 0x79004,
2478184fdd87SKonrad Dybcio 		.enable_mask = BIT(15),
2479184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2480184fdd87SKonrad Dybcio 			.name = "gcc_gpu_gpll0_clk_src",
24815d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
24825d0e6922SDmitry Baryshkov 				&gpll0.clkr.hw,
2483184fdd87SKonrad Dybcio 			},
2484184fdd87SKonrad Dybcio 			.num_parents = 1,
2485184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
2486184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2487184fdd87SKonrad Dybcio 		},
2488184fdd87SKonrad Dybcio 	},
2489184fdd87SKonrad Dybcio };
2490184fdd87SKonrad Dybcio 
2491184fdd87SKonrad Dybcio static struct clk_branch gcc_gpu_gpll0_div_clk_src = {
2492184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
2493184fdd87SKonrad Dybcio 	.clkr = {
2494184fdd87SKonrad Dybcio 		.enable_reg = 0x79004,
2495184fdd87SKonrad Dybcio 		.enable_mask = BIT(16),
2496184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2497184fdd87SKonrad Dybcio 			.name = "gcc_gpu_gpll0_div_clk_src",
24985d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
24995d0e6922SDmitry Baryshkov 				&gpll0_out_even.clkr.hw,
2500184fdd87SKonrad Dybcio 			},
2501184fdd87SKonrad Dybcio 			.num_parents = 1,
2502184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
2503184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2504184fdd87SKonrad Dybcio 		},
2505184fdd87SKonrad Dybcio 	},
2506184fdd87SKonrad Dybcio };
2507184fdd87SKonrad Dybcio 
2508184fdd87SKonrad Dybcio static struct clk_branch gcc_gpu_memnoc_gfx_clk = {
2509184fdd87SKonrad Dybcio 	.halt_reg = 0x3600c,
2510184fdd87SKonrad Dybcio 	.halt_check = BRANCH_VOTED,
2511184fdd87SKonrad Dybcio 	.hwcg_reg = 0x3600c,
2512184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
2513184fdd87SKonrad Dybcio 	.clkr = {
2514184fdd87SKonrad Dybcio 		.enable_reg = 0x3600c,
2515184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
2516184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2517184fdd87SKonrad Dybcio 			.name = "gcc_gpu_memnoc_gfx_clk",
2518184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2519184fdd87SKonrad Dybcio 		},
2520184fdd87SKonrad Dybcio 	},
2521184fdd87SKonrad Dybcio };
2522184fdd87SKonrad Dybcio 
2523184fdd87SKonrad Dybcio static struct clk_branch gcc_gpu_snoc_dvm_gfx_clk = {
2524184fdd87SKonrad Dybcio 	.halt_reg = 0x36018,
2525184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
2526184fdd87SKonrad Dybcio 	.clkr = {
2527184fdd87SKonrad Dybcio 		.enable_reg = 0x36018,
2528184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
2529184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2530184fdd87SKonrad Dybcio 			.name = "gcc_gpu_snoc_dvm_gfx_clk",
2531184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2532184fdd87SKonrad Dybcio 		},
2533184fdd87SKonrad Dybcio 	},
2534184fdd87SKonrad Dybcio };
2535184fdd87SKonrad Dybcio 
2536184fdd87SKonrad Dybcio static struct clk_branch gcc_gpu_throttle_core_clk = {
2537184fdd87SKonrad Dybcio 	.halt_reg = 0x36048,
2538184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2539184fdd87SKonrad Dybcio 	.hwcg_reg = 0x36048,
2540184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
2541184fdd87SKonrad Dybcio 	.clkr = {
2542184fdd87SKonrad Dybcio 		.enable_reg = 0x79004,
2543184fdd87SKonrad Dybcio 		.enable_mask = BIT(31),
2544184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2545184fdd87SKonrad Dybcio 			.name = "gcc_gpu_throttle_core_clk",
2546184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2547184fdd87SKonrad Dybcio 		},
2548184fdd87SKonrad Dybcio 	},
2549184fdd87SKonrad Dybcio };
2550184fdd87SKonrad Dybcio 
2551184fdd87SKonrad Dybcio static struct clk_branch gcc_pdm2_clk = {
2552184fdd87SKonrad Dybcio 	.halt_reg = 0x2000c,
2553184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
2554184fdd87SKonrad Dybcio 	.clkr = {
2555184fdd87SKonrad Dybcio 		.enable_reg = 0x2000c,
2556184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
2557184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2558184fdd87SKonrad Dybcio 			.name = "gcc_pdm2_clk",
25595d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
25605d0e6922SDmitry Baryshkov 				&gcc_pdm2_clk_src.clkr.hw,
2561184fdd87SKonrad Dybcio 			},
2562184fdd87SKonrad Dybcio 			.num_parents = 1,
2563184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
2564184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2565184fdd87SKonrad Dybcio 		},
2566184fdd87SKonrad Dybcio 	},
2567184fdd87SKonrad Dybcio };
2568184fdd87SKonrad Dybcio 
2569184fdd87SKonrad Dybcio static struct clk_branch gcc_pdm_ahb_clk = {
2570184fdd87SKonrad Dybcio 	.halt_reg = 0x20004,
2571184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2572184fdd87SKonrad Dybcio 	.hwcg_reg = 0x20004,
2573184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
2574184fdd87SKonrad Dybcio 	.clkr = {
2575184fdd87SKonrad Dybcio 		.enable_reg = 0x20004,
2576184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
2577184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2578184fdd87SKonrad Dybcio 			.name = "gcc_pdm_ahb_clk",
2579184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2580184fdd87SKonrad Dybcio 		},
2581184fdd87SKonrad Dybcio 	},
2582184fdd87SKonrad Dybcio };
2583184fdd87SKonrad Dybcio 
2584184fdd87SKonrad Dybcio static struct clk_branch gcc_pdm_xo4_clk = {
2585184fdd87SKonrad Dybcio 	.halt_reg = 0x20008,
2586184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
2587184fdd87SKonrad Dybcio 	.clkr = {
2588184fdd87SKonrad Dybcio 		.enable_reg = 0x20008,
2589184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
2590184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2591184fdd87SKonrad Dybcio 			.name = "gcc_pdm_xo4_clk",
2592184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2593184fdd87SKonrad Dybcio 		},
2594184fdd87SKonrad Dybcio 	},
2595184fdd87SKonrad Dybcio };
2596184fdd87SKonrad Dybcio 
2597184fdd87SKonrad Dybcio static struct clk_branch gcc_prng_ahb_clk = {
2598184fdd87SKonrad Dybcio 	.halt_reg = 0x21004,
2599184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2600184fdd87SKonrad Dybcio 	.hwcg_reg = 0x21004,
2601184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
2602184fdd87SKonrad Dybcio 	.clkr = {
2603184fdd87SKonrad Dybcio 		.enable_reg = 0x79004,
2604184fdd87SKonrad Dybcio 		.enable_mask = BIT(13),
2605184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2606184fdd87SKonrad Dybcio 			.name = "gcc_prng_ahb_clk",
2607184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2608184fdd87SKonrad Dybcio 		},
2609184fdd87SKonrad Dybcio 	},
2610184fdd87SKonrad Dybcio };
2611184fdd87SKonrad Dybcio 
2612184fdd87SKonrad Dybcio static struct clk_branch gcc_qmip_camera_nrt_ahb_clk = {
2613184fdd87SKonrad Dybcio 	.halt_reg = 0x17014,
2614184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2615184fdd87SKonrad Dybcio 	.hwcg_reg = 0x17014,
2616184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
2617184fdd87SKonrad Dybcio 	.clkr = {
2618184fdd87SKonrad Dybcio 		.enable_reg = 0x7900c,
2619184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
2620184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2621184fdd87SKonrad Dybcio 			.name = "gcc_qmip_camera_nrt_ahb_clk",
2622184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2623184fdd87SKonrad Dybcio 		},
2624184fdd87SKonrad Dybcio 	},
2625184fdd87SKonrad Dybcio };
2626184fdd87SKonrad Dybcio 
2627184fdd87SKonrad Dybcio static struct clk_branch gcc_qmip_camera_rt_ahb_clk = {
2628184fdd87SKonrad Dybcio 	.halt_reg = 0x17060,
2629184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2630184fdd87SKonrad Dybcio 	.hwcg_reg = 0x17060,
2631184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
2632184fdd87SKonrad Dybcio 	.clkr = {
2633184fdd87SKonrad Dybcio 		.enable_reg = 0x7900c,
2634184fdd87SKonrad Dybcio 		.enable_mask = BIT(2),
2635184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2636184fdd87SKonrad Dybcio 			.name = "gcc_qmip_camera_rt_ahb_clk",
2637184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2638184fdd87SKonrad Dybcio 		},
2639184fdd87SKonrad Dybcio 	},
2640184fdd87SKonrad Dybcio };
2641184fdd87SKonrad Dybcio 
2642184fdd87SKonrad Dybcio static struct clk_branch gcc_qmip_disp_ahb_clk = {
2643184fdd87SKonrad Dybcio 	.halt_reg = 0x17018,
2644184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2645184fdd87SKonrad Dybcio 	.hwcg_reg = 0x17018,
2646184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
2647184fdd87SKonrad Dybcio 	.clkr = {
2648184fdd87SKonrad Dybcio 		.enable_reg = 0x7900c,
2649184fdd87SKonrad Dybcio 		.enable_mask = BIT(1),
2650184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2651184fdd87SKonrad Dybcio 			.name = "gcc_qmip_disp_ahb_clk",
2652184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2653184fdd87SKonrad Dybcio 		},
2654184fdd87SKonrad Dybcio 	},
2655184fdd87SKonrad Dybcio };
2656184fdd87SKonrad Dybcio 
2657184fdd87SKonrad Dybcio static struct clk_branch gcc_qmip_gpu_cfg_ahb_clk = {
2658184fdd87SKonrad Dybcio 	.halt_reg = 0x36040,
2659184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2660184fdd87SKonrad Dybcio 	.hwcg_reg = 0x36040,
2661184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
2662184fdd87SKonrad Dybcio 	.clkr = {
2663184fdd87SKonrad Dybcio 		.enable_reg = 0x7900c,
2664184fdd87SKonrad Dybcio 		.enable_mask = BIT(4),
2665184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2666184fdd87SKonrad Dybcio 			.name = "gcc_qmip_gpu_cfg_ahb_clk",
2667184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2668184fdd87SKonrad Dybcio 		},
2669184fdd87SKonrad Dybcio 	},
2670184fdd87SKonrad Dybcio };
2671184fdd87SKonrad Dybcio 
2672184fdd87SKonrad Dybcio static struct clk_branch gcc_qmip_video_vcodec_ahb_clk = {
2673184fdd87SKonrad Dybcio 	.halt_reg = 0x17010,
2674184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2675184fdd87SKonrad Dybcio 	.hwcg_reg = 0x17010,
2676184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
2677184fdd87SKonrad Dybcio 	.clkr = {
2678184fdd87SKonrad Dybcio 		.enable_reg = 0x79004,
2679184fdd87SKonrad Dybcio 		.enable_mask = BIT(25),
2680184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2681184fdd87SKonrad Dybcio 			.name = "gcc_qmip_video_vcodec_ahb_clk",
2682184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2683184fdd87SKonrad Dybcio 		},
2684184fdd87SKonrad Dybcio 	},
2685184fdd87SKonrad Dybcio };
2686184fdd87SKonrad Dybcio 
2687184fdd87SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap0_core_2x_clk = {
2688184fdd87SKonrad Dybcio 	.halt_reg = 0x1f014,
2689184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2690184fdd87SKonrad Dybcio 	.clkr = {
2691184fdd87SKonrad Dybcio 		.enable_reg = 0x7900c,
2692184fdd87SKonrad Dybcio 		.enable_mask = BIT(9),
2693184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2694184fdd87SKonrad Dybcio 			.name = "gcc_qupv3_wrap0_core_2x_clk",
2695184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2696184fdd87SKonrad Dybcio 		},
2697184fdd87SKonrad Dybcio 	},
2698184fdd87SKonrad Dybcio };
2699184fdd87SKonrad Dybcio 
2700184fdd87SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap0_core_clk = {
2701184fdd87SKonrad Dybcio 	.halt_reg = 0x1f00c,
2702184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2703184fdd87SKonrad Dybcio 	.clkr = {
2704184fdd87SKonrad Dybcio 		.enable_reg = 0x7900c,
2705184fdd87SKonrad Dybcio 		.enable_mask = BIT(8),
2706184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2707184fdd87SKonrad Dybcio 			.name = "gcc_qupv3_wrap0_core_clk",
2708184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2709184fdd87SKonrad Dybcio 		},
2710184fdd87SKonrad Dybcio 	},
2711184fdd87SKonrad Dybcio };
2712184fdd87SKonrad Dybcio 
2713184fdd87SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap0_s0_clk = {
2714184fdd87SKonrad Dybcio 	.halt_reg = 0x1f144,
2715184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2716184fdd87SKonrad Dybcio 	.clkr = {
2717184fdd87SKonrad Dybcio 		.enable_reg = 0x7900c,
2718184fdd87SKonrad Dybcio 		.enable_mask = BIT(10),
2719184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2720184fdd87SKonrad Dybcio 			.name = "gcc_qupv3_wrap0_s0_clk",
27215d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
27225d0e6922SDmitry Baryshkov 				&gcc_qupv3_wrap0_s0_clk_src.clkr.hw,
2723184fdd87SKonrad Dybcio 			},
2724184fdd87SKonrad Dybcio 			.num_parents = 1,
2725184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
2726184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2727184fdd87SKonrad Dybcio 		},
2728184fdd87SKonrad Dybcio 	},
2729184fdd87SKonrad Dybcio };
2730184fdd87SKonrad Dybcio 
2731184fdd87SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap0_s1_clk = {
2732184fdd87SKonrad Dybcio 	.halt_reg = 0x1f274,
2733184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2734184fdd87SKonrad Dybcio 	.clkr = {
2735184fdd87SKonrad Dybcio 		.enable_reg = 0x7900c,
2736184fdd87SKonrad Dybcio 		.enable_mask = BIT(11),
2737184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2738184fdd87SKonrad Dybcio 			.name = "gcc_qupv3_wrap0_s1_clk",
27395d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
27405d0e6922SDmitry Baryshkov 				&gcc_qupv3_wrap0_s1_clk_src.clkr.hw,
2741184fdd87SKonrad Dybcio 			},
2742184fdd87SKonrad Dybcio 			.num_parents = 1,
2743184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
2744184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2745184fdd87SKonrad Dybcio 		},
2746184fdd87SKonrad Dybcio 	},
2747184fdd87SKonrad Dybcio };
2748184fdd87SKonrad Dybcio 
2749184fdd87SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap0_s2_clk = {
2750184fdd87SKonrad Dybcio 	.halt_reg = 0x1f3a4,
2751184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2752184fdd87SKonrad Dybcio 	.clkr = {
2753184fdd87SKonrad Dybcio 		.enable_reg = 0x7900c,
2754184fdd87SKonrad Dybcio 		.enable_mask = BIT(12),
2755184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2756184fdd87SKonrad Dybcio 			.name = "gcc_qupv3_wrap0_s2_clk",
27575d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
27585d0e6922SDmitry Baryshkov 				&gcc_qupv3_wrap0_s2_clk_src.clkr.hw,
2759184fdd87SKonrad Dybcio 			},
2760184fdd87SKonrad Dybcio 			.num_parents = 1,
2761184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
2762184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2763184fdd87SKonrad Dybcio 		},
2764184fdd87SKonrad Dybcio 	},
2765184fdd87SKonrad Dybcio };
2766184fdd87SKonrad Dybcio 
2767184fdd87SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap0_s3_clk = {
2768184fdd87SKonrad Dybcio 	.halt_reg = 0x1f4d4,
2769184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2770184fdd87SKonrad Dybcio 	.clkr = {
2771184fdd87SKonrad Dybcio 		.enable_reg = 0x7900c,
2772184fdd87SKonrad Dybcio 		.enable_mask = BIT(13),
2773184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2774184fdd87SKonrad Dybcio 			.name = "gcc_qupv3_wrap0_s3_clk",
27755d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
27765d0e6922SDmitry Baryshkov 				&gcc_qupv3_wrap0_s3_clk_src.clkr.hw,
2777184fdd87SKonrad Dybcio 			},
2778184fdd87SKonrad Dybcio 			.num_parents = 1,
2779184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
2780184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2781184fdd87SKonrad Dybcio 		},
2782184fdd87SKonrad Dybcio 	},
2783184fdd87SKonrad Dybcio };
2784184fdd87SKonrad Dybcio 
2785184fdd87SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap0_s4_clk = {
2786184fdd87SKonrad Dybcio 	.halt_reg = 0x1f604,
2787184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2788184fdd87SKonrad Dybcio 	.clkr = {
2789184fdd87SKonrad Dybcio 		.enable_reg = 0x7900c,
2790184fdd87SKonrad Dybcio 		.enable_mask = BIT(14),
2791184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2792184fdd87SKonrad Dybcio 			.name = "gcc_qupv3_wrap0_s4_clk",
27935d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
27945d0e6922SDmitry Baryshkov 				&gcc_qupv3_wrap0_s4_clk_src.clkr.hw,
2795184fdd87SKonrad Dybcio 			},
2796184fdd87SKonrad Dybcio 			.num_parents = 1,
2797184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
2798184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2799184fdd87SKonrad Dybcio 		},
2800184fdd87SKonrad Dybcio 	},
2801184fdd87SKonrad Dybcio };
2802184fdd87SKonrad Dybcio 
2803184fdd87SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap0_s5_clk = {
2804184fdd87SKonrad Dybcio 	.halt_reg = 0x1f734,
2805184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2806184fdd87SKonrad Dybcio 	.clkr = {
2807184fdd87SKonrad Dybcio 		.enable_reg = 0x7900c,
2808184fdd87SKonrad Dybcio 		.enable_mask = BIT(15),
2809184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2810184fdd87SKonrad Dybcio 			.name = "gcc_qupv3_wrap0_s5_clk",
28115d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
28125d0e6922SDmitry Baryshkov 				&gcc_qupv3_wrap0_s5_clk_src.clkr.hw,
2813184fdd87SKonrad Dybcio 			},
2814184fdd87SKonrad Dybcio 			.num_parents = 1,
2815184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
2816184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2817184fdd87SKonrad Dybcio 		},
2818184fdd87SKonrad Dybcio 	},
2819184fdd87SKonrad Dybcio };
2820184fdd87SKonrad Dybcio 
2821184fdd87SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap1_core_2x_clk = {
2822184fdd87SKonrad Dybcio 	.halt_reg = 0x53014,
2823184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2824184fdd87SKonrad Dybcio 	.clkr = {
2825184fdd87SKonrad Dybcio 		.enable_reg = 0x7900c,
2826184fdd87SKonrad Dybcio 		.enable_mask = BIT(20),
2827184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2828184fdd87SKonrad Dybcio 			.name = "gcc_qupv3_wrap1_core_2x_clk",
2829184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2830184fdd87SKonrad Dybcio 		},
2831184fdd87SKonrad Dybcio 	},
2832184fdd87SKonrad Dybcio };
2833184fdd87SKonrad Dybcio 
2834184fdd87SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap1_core_clk = {
2835184fdd87SKonrad Dybcio 	.halt_reg = 0x5300c,
2836184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2837184fdd87SKonrad Dybcio 	.clkr = {
2838184fdd87SKonrad Dybcio 		.enable_reg = 0x7900c,
2839184fdd87SKonrad Dybcio 		.enable_mask = BIT(19),
2840184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2841184fdd87SKonrad Dybcio 			.name = "gcc_qupv3_wrap1_core_clk",
2842184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2843184fdd87SKonrad Dybcio 		},
2844184fdd87SKonrad Dybcio 	},
2845184fdd87SKonrad Dybcio };
2846184fdd87SKonrad Dybcio 
2847184fdd87SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap1_s0_clk = {
2848184fdd87SKonrad Dybcio 	.halt_reg = 0x53018,
2849184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2850184fdd87SKonrad Dybcio 	.clkr = {
2851184fdd87SKonrad Dybcio 		.enable_reg = 0x7900c,
2852184fdd87SKonrad Dybcio 		.enable_mask = BIT(21),
2853184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2854184fdd87SKonrad Dybcio 			.name = "gcc_qupv3_wrap1_s0_clk",
28555d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
28565d0e6922SDmitry Baryshkov 				&gcc_qupv3_wrap1_s0_clk_src.clkr.hw,
2857184fdd87SKonrad Dybcio 			},
2858184fdd87SKonrad Dybcio 			.num_parents = 1,
2859184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
2860184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2861184fdd87SKonrad Dybcio 		},
2862184fdd87SKonrad Dybcio 	},
2863184fdd87SKonrad Dybcio };
2864184fdd87SKonrad Dybcio 
2865184fdd87SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap1_s1_clk = {
2866184fdd87SKonrad Dybcio 	.halt_reg = 0x53148,
2867184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2868184fdd87SKonrad Dybcio 	.clkr = {
2869184fdd87SKonrad Dybcio 		.enable_reg = 0x7900c,
2870184fdd87SKonrad Dybcio 		.enable_mask = BIT(22),
2871184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2872184fdd87SKonrad Dybcio 			.name = "gcc_qupv3_wrap1_s1_clk",
28735d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
28745d0e6922SDmitry Baryshkov 				&gcc_qupv3_wrap1_s1_clk_src.clkr.hw,
2875184fdd87SKonrad Dybcio 			},
2876184fdd87SKonrad Dybcio 			.num_parents = 1,
2877184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
2878184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2879184fdd87SKonrad Dybcio 		},
2880184fdd87SKonrad Dybcio 	},
2881184fdd87SKonrad Dybcio };
2882184fdd87SKonrad Dybcio 
2883184fdd87SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap1_s2_clk = {
2884184fdd87SKonrad Dybcio 	.halt_reg = 0x53278,
2885184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2886184fdd87SKonrad Dybcio 	.clkr = {
2887184fdd87SKonrad Dybcio 		.enable_reg = 0x7900c,
2888184fdd87SKonrad Dybcio 		.enable_mask = BIT(23),
2889184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2890184fdd87SKonrad Dybcio 			.name = "gcc_qupv3_wrap1_s2_clk",
28915d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
28925d0e6922SDmitry Baryshkov 				&gcc_qupv3_wrap1_s2_clk_src.clkr.hw,
2893184fdd87SKonrad Dybcio 			},
2894184fdd87SKonrad Dybcio 			.num_parents = 1,
2895184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
2896184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2897184fdd87SKonrad Dybcio 		},
2898184fdd87SKonrad Dybcio 	},
2899184fdd87SKonrad Dybcio };
2900184fdd87SKonrad Dybcio 
2901184fdd87SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap1_s3_clk = {
2902184fdd87SKonrad Dybcio 	.halt_reg = 0x533a8,
2903184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2904184fdd87SKonrad Dybcio 	.clkr = {
2905184fdd87SKonrad Dybcio 		.enable_reg = 0x7900c,
2906184fdd87SKonrad Dybcio 		.enable_mask = BIT(24),
2907184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2908184fdd87SKonrad Dybcio 			.name = "gcc_qupv3_wrap1_s3_clk",
29095d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
29105d0e6922SDmitry Baryshkov 				&gcc_qupv3_wrap1_s3_clk_src.clkr.hw,
2911184fdd87SKonrad Dybcio 			},
2912184fdd87SKonrad Dybcio 			.num_parents = 1,
2913184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
2914184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2915184fdd87SKonrad Dybcio 		},
2916184fdd87SKonrad Dybcio 	},
2917184fdd87SKonrad Dybcio };
2918184fdd87SKonrad Dybcio 
2919184fdd87SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap1_s4_clk = {
2920184fdd87SKonrad Dybcio 	.halt_reg = 0x534d8,
2921184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2922184fdd87SKonrad Dybcio 	.clkr = {
2923184fdd87SKonrad Dybcio 		.enable_reg = 0x7900c,
2924184fdd87SKonrad Dybcio 		.enable_mask = BIT(25),
2925184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2926184fdd87SKonrad Dybcio 			.name = "gcc_qupv3_wrap1_s4_clk",
29275d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
29285d0e6922SDmitry Baryshkov 				&gcc_qupv3_wrap1_s4_clk_src.clkr.hw,
2929184fdd87SKonrad Dybcio 			},
2930184fdd87SKonrad Dybcio 			.num_parents = 1,
2931184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
2932184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2933184fdd87SKonrad Dybcio 		},
2934184fdd87SKonrad Dybcio 	},
2935184fdd87SKonrad Dybcio };
2936184fdd87SKonrad Dybcio 
2937184fdd87SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap1_s5_clk = {
2938184fdd87SKonrad Dybcio 	.halt_reg = 0x53608,
2939184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2940184fdd87SKonrad Dybcio 	.clkr = {
2941184fdd87SKonrad Dybcio 		.enable_reg = 0x7900c,
2942184fdd87SKonrad Dybcio 		.enable_mask = BIT(26),
2943184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2944184fdd87SKonrad Dybcio 			.name = "gcc_qupv3_wrap1_s5_clk",
29455d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
29465d0e6922SDmitry Baryshkov 				&gcc_qupv3_wrap1_s5_clk_src.clkr.hw,
2947184fdd87SKonrad Dybcio 			},
2948184fdd87SKonrad Dybcio 			.num_parents = 1,
2949184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
2950184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2951184fdd87SKonrad Dybcio 		},
2952184fdd87SKonrad Dybcio 	},
2953184fdd87SKonrad Dybcio };
2954184fdd87SKonrad Dybcio 
2955184fdd87SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap_0_m_ahb_clk = {
2956184fdd87SKonrad Dybcio 	.halt_reg = 0x1f004,
2957184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2958184fdd87SKonrad Dybcio 	.hwcg_reg = 0x1f004,
2959184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
2960184fdd87SKonrad Dybcio 	.clkr = {
2961184fdd87SKonrad Dybcio 		.enable_reg = 0x7900c,
2962184fdd87SKonrad Dybcio 		.enable_mask = BIT(6),
2963184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2964184fdd87SKonrad Dybcio 			.name = "gcc_qupv3_wrap_0_m_ahb_clk",
2965184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2966184fdd87SKonrad Dybcio 		},
2967184fdd87SKonrad Dybcio 	},
2968184fdd87SKonrad Dybcio };
2969184fdd87SKonrad Dybcio 
2970184fdd87SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap_0_s_ahb_clk = {
2971184fdd87SKonrad Dybcio 	.halt_reg = 0x1f008,
2972184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2973184fdd87SKonrad Dybcio 	.hwcg_reg = 0x1f008,
2974184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
2975184fdd87SKonrad Dybcio 	.clkr = {
2976184fdd87SKonrad Dybcio 		.enable_reg = 0x7900c,
2977184fdd87SKonrad Dybcio 		.enable_mask = BIT(7),
2978184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2979184fdd87SKonrad Dybcio 			.name = "gcc_qupv3_wrap_0_s_ahb_clk",
2980184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2981184fdd87SKonrad Dybcio 		},
2982184fdd87SKonrad Dybcio 	},
2983184fdd87SKonrad Dybcio };
2984184fdd87SKonrad Dybcio 
2985184fdd87SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap_1_m_ahb_clk = {
2986184fdd87SKonrad Dybcio 	.halt_reg = 0x53004,
2987184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2988184fdd87SKonrad Dybcio 	.hwcg_reg = 0x53004,
2989184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
2990184fdd87SKonrad Dybcio 	.clkr = {
2991184fdd87SKonrad Dybcio 		.enable_reg = 0x7900c,
2992184fdd87SKonrad Dybcio 		.enable_mask = BIT(17),
2993184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2994184fdd87SKonrad Dybcio 			.name = "gcc_qupv3_wrap_1_m_ahb_clk",
2995184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
2996184fdd87SKonrad Dybcio 		},
2997184fdd87SKonrad Dybcio 	},
2998184fdd87SKonrad Dybcio };
2999184fdd87SKonrad Dybcio 
3000184fdd87SKonrad Dybcio static struct clk_branch gcc_qupv3_wrap_1_s_ahb_clk = {
3001184fdd87SKonrad Dybcio 	.halt_reg = 0x53008,
3002184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
3003184fdd87SKonrad Dybcio 	.hwcg_reg = 0x53008,
3004184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
3005184fdd87SKonrad Dybcio 	.clkr = {
3006184fdd87SKonrad Dybcio 		.enable_reg = 0x7900c,
3007184fdd87SKonrad Dybcio 		.enable_mask = BIT(18),
3008184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
3009184fdd87SKonrad Dybcio 			.name = "gcc_qupv3_wrap_1_s_ahb_clk",
3010184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
3011184fdd87SKonrad Dybcio 		},
3012184fdd87SKonrad Dybcio 	},
3013184fdd87SKonrad Dybcio };
3014184fdd87SKonrad Dybcio 
3015184fdd87SKonrad Dybcio static struct clk_branch gcc_sdcc1_ahb_clk = {
3016184fdd87SKonrad Dybcio 	.halt_reg = 0x38008,
3017184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
3018184fdd87SKonrad Dybcio 	.clkr = {
3019184fdd87SKonrad Dybcio 		.enable_reg = 0x38008,
3020184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
3021184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
3022184fdd87SKonrad Dybcio 			.name = "gcc_sdcc1_ahb_clk",
3023184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
3024184fdd87SKonrad Dybcio 		},
3025184fdd87SKonrad Dybcio 	},
3026184fdd87SKonrad Dybcio };
3027184fdd87SKonrad Dybcio 
3028184fdd87SKonrad Dybcio static struct clk_branch gcc_sdcc1_apps_clk = {
3029184fdd87SKonrad Dybcio 	.halt_reg = 0x38004,
3030184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
3031184fdd87SKonrad Dybcio 	.clkr = {
3032184fdd87SKonrad Dybcio 		.enable_reg = 0x38004,
3033184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
3034184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
3035184fdd87SKonrad Dybcio 			.name = "gcc_sdcc1_apps_clk",
30365d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
30375d0e6922SDmitry Baryshkov 				&gcc_sdcc1_apps_clk_src.clkr.hw,
3038184fdd87SKonrad Dybcio 			},
3039184fdd87SKonrad Dybcio 			.num_parents = 1,
3040184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
3041184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
3042184fdd87SKonrad Dybcio 		},
3043184fdd87SKonrad Dybcio 	},
3044184fdd87SKonrad Dybcio };
3045184fdd87SKonrad Dybcio 
3046184fdd87SKonrad Dybcio static struct clk_branch gcc_sdcc1_ice_core_clk = {
3047184fdd87SKonrad Dybcio 	.halt_reg = 0x3800c,
3048184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
3049184fdd87SKonrad Dybcio 	.hwcg_reg = 0x3800c,
3050184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
3051184fdd87SKonrad Dybcio 	.clkr = {
3052184fdd87SKonrad Dybcio 		.enable_reg = 0x3800c,
3053184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
3054184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
3055184fdd87SKonrad Dybcio 			.name = "gcc_sdcc1_ice_core_clk",
30565d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
30575d0e6922SDmitry Baryshkov 				&gcc_sdcc1_ice_core_clk_src.clkr.hw,
3058184fdd87SKonrad Dybcio 			},
3059184fdd87SKonrad Dybcio 			.num_parents = 1,
3060184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
3061184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
3062184fdd87SKonrad Dybcio 		},
3063184fdd87SKonrad Dybcio 	},
3064184fdd87SKonrad Dybcio };
3065184fdd87SKonrad Dybcio 
3066184fdd87SKonrad Dybcio static struct clk_branch gcc_sdcc2_ahb_clk = {
3067184fdd87SKonrad Dybcio 	.halt_reg = 0x1e008,
3068184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
3069184fdd87SKonrad Dybcio 	.clkr = {
3070184fdd87SKonrad Dybcio 		.enable_reg = 0x1e008,
3071184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
3072184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
3073184fdd87SKonrad Dybcio 			.name = "gcc_sdcc2_ahb_clk",
3074184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
3075184fdd87SKonrad Dybcio 		},
3076184fdd87SKonrad Dybcio 	},
3077184fdd87SKonrad Dybcio };
3078184fdd87SKonrad Dybcio 
3079184fdd87SKonrad Dybcio static struct clk_branch gcc_sdcc2_apps_clk = {
3080184fdd87SKonrad Dybcio 	.halt_reg = 0x1e004,
3081184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
3082184fdd87SKonrad Dybcio 	.clkr = {
3083184fdd87SKonrad Dybcio 		.enable_reg = 0x1e004,
3084184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
3085184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
3086184fdd87SKonrad Dybcio 			.name = "gcc_sdcc2_apps_clk",
30875d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
30885d0e6922SDmitry Baryshkov 				&gcc_sdcc2_apps_clk_src.clkr.hw,
3089184fdd87SKonrad Dybcio 			},
3090184fdd87SKonrad Dybcio 			.num_parents = 1,
3091184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
3092184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
3093184fdd87SKonrad Dybcio 		},
3094184fdd87SKonrad Dybcio 	},
3095184fdd87SKonrad Dybcio };
3096184fdd87SKonrad Dybcio 
3097184fdd87SKonrad Dybcio static struct clk_branch gcc_sys_noc_cpuss_ahb_clk = {
3098184fdd87SKonrad Dybcio 	.halt_reg = 0x2b06c,
3099184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
3100184fdd87SKonrad Dybcio 	.hwcg_reg = 0x2b06c,
3101184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
3102184fdd87SKonrad Dybcio 	.clkr = {
3103184fdd87SKonrad Dybcio 		.enable_reg = 0x79004,
3104184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
3105184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
3106184fdd87SKonrad Dybcio 			.name = "gcc_sys_noc_cpuss_ahb_clk",
31075d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
31085d0e6922SDmitry Baryshkov 				&gcc_cpuss_ahb_postdiv_clk_src.clkr.hw,
3109184fdd87SKonrad Dybcio 			},
3110184fdd87SKonrad Dybcio 			.num_parents = 1,
3111184fdd87SKonrad Dybcio 			.flags = CLK_IS_CRITICAL | CLK_SET_RATE_PARENT,
3112184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
3113184fdd87SKonrad Dybcio 		},
3114184fdd87SKonrad Dybcio 	},
3115184fdd87SKonrad Dybcio };
3116184fdd87SKonrad Dybcio 
3117184fdd87SKonrad Dybcio static struct clk_branch gcc_sys_noc_ufs_phy_axi_clk = {
3118184fdd87SKonrad Dybcio 	.halt_reg = 0x45098,
3119184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
3120184fdd87SKonrad Dybcio 	.clkr = {
3121184fdd87SKonrad Dybcio 		.enable_reg = 0x45098,
3122184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
3123184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
3124184fdd87SKonrad Dybcio 			.name = "gcc_sys_noc_ufs_phy_axi_clk",
31255d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
31265d0e6922SDmitry Baryshkov 				&gcc_ufs_phy_axi_clk_src.clkr.hw,
3127184fdd87SKonrad Dybcio 			},
3128184fdd87SKonrad Dybcio 			.num_parents = 1,
3129184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
3130184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
3131184fdd87SKonrad Dybcio 		},
3132184fdd87SKonrad Dybcio 	},
3133184fdd87SKonrad Dybcio };
3134184fdd87SKonrad Dybcio 
3135184fdd87SKonrad Dybcio static struct clk_branch gcc_sys_noc_usb3_prim_axi_clk = {
3136184fdd87SKonrad Dybcio 	.halt_reg = 0x1a080,
3137184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
3138184fdd87SKonrad Dybcio 	.hwcg_reg = 0x1a080,
3139184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
3140184fdd87SKonrad Dybcio 	.clkr = {
3141184fdd87SKonrad Dybcio 		.enable_reg = 0x1a080,
3142184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
3143184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
3144184fdd87SKonrad Dybcio 			.name = "gcc_sys_noc_usb3_prim_axi_clk",
31455d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
31465d0e6922SDmitry Baryshkov 				&gcc_usb30_prim_master_clk_src.clkr.hw,
3147184fdd87SKonrad Dybcio 			},
3148184fdd87SKonrad Dybcio 			.num_parents = 1,
3149184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
3150184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
3151184fdd87SKonrad Dybcio 		},
3152184fdd87SKonrad Dybcio 	},
3153184fdd87SKonrad Dybcio };
3154184fdd87SKonrad Dybcio 
3155184fdd87SKonrad Dybcio static struct clk_branch gcc_ufs_phy_ahb_clk = {
3156184fdd87SKonrad Dybcio 	.halt_reg = 0x45014,
3157184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
3158184fdd87SKonrad Dybcio 	.hwcg_reg = 0x45014,
3159184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
3160184fdd87SKonrad Dybcio 	.clkr = {
3161184fdd87SKonrad Dybcio 		.enable_reg = 0x45014,
3162184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
3163184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
3164184fdd87SKonrad Dybcio 			.name = "gcc_ufs_phy_ahb_clk",
3165184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
3166184fdd87SKonrad Dybcio 		},
3167184fdd87SKonrad Dybcio 	},
3168184fdd87SKonrad Dybcio };
3169184fdd87SKonrad Dybcio 
3170184fdd87SKonrad Dybcio static struct clk_branch gcc_ufs_phy_axi_clk = {
3171184fdd87SKonrad Dybcio 	.halt_reg = 0x45010,
3172184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
3173184fdd87SKonrad Dybcio 	.hwcg_reg = 0x45010,
3174184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
3175184fdd87SKonrad Dybcio 	.clkr = {
3176184fdd87SKonrad Dybcio 		.enable_reg = 0x45010,
3177184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
3178184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
3179184fdd87SKonrad Dybcio 			.name = "gcc_ufs_phy_axi_clk",
31805d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
31815d0e6922SDmitry Baryshkov 				&gcc_ufs_phy_axi_clk_src.clkr.hw,
3182184fdd87SKonrad Dybcio 			},
3183184fdd87SKonrad Dybcio 			.num_parents = 1,
3184184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
3185184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
3186184fdd87SKonrad Dybcio 		},
3187184fdd87SKonrad Dybcio 	},
3188184fdd87SKonrad Dybcio };
3189184fdd87SKonrad Dybcio 
3190184fdd87SKonrad Dybcio static struct clk_branch gcc_ufs_phy_ice_core_clk = {
3191184fdd87SKonrad Dybcio 	.halt_reg = 0x45044,
3192184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
3193184fdd87SKonrad Dybcio 	.hwcg_reg = 0x45044,
3194184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
3195184fdd87SKonrad Dybcio 	.clkr = {
3196184fdd87SKonrad Dybcio 		.enable_reg = 0x45044,
3197184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
3198184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
3199184fdd87SKonrad Dybcio 			.name = "gcc_ufs_phy_ice_core_clk",
32005d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
32015d0e6922SDmitry Baryshkov 				&gcc_ufs_phy_ice_core_clk_src.clkr.hw,
3202184fdd87SKonrad Dybcio 			},
3203184fdd87SKonrad Dybcio 			.num_parents = 1,
3204184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
3205184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
3206184fdd87SKonrad Dybcio 		},
3207184fdd87SKonrad Dybcio 	},
3208184fdd87SKonrad Dybcio };
3209184fdd87SKonrad Dybcio 
3210184fdd87SKonrad Dybcio static struct clk_branch gcc_ufs_phy_phy_aux_clk = {
3211184fdd87SKonrad Dybcio 	.halt_reg = 0x45078,
3212184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
3213184fdd87SKonrad Dybcio 	.hwcg_reg = 0x45078,
3214184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
3215184fdd87SKonrad Dybcio 	.clkr = {
3216184fdd87SKonrad Dybcio 		.enable_reg = 0x45078,
3217184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
3218184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
3219184fdd87SKonrad Dybcio 			.name = "gcc_ufs_phy_phy_aux_clk",
32205d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
32215d0e6922SDmitry Baryshkov 				&gcc_ufs_phy_phy_aux_clk_src.clkr.hw,
3222184fdd87SKonrad Dybcio 			},
3223184fdd87SKonrad Dybcio 			.num_parents = 1,
3224184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
3225184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
3226184fdd87SKonrad Dybcio 		},
3227184fdd87SKonrad Dybcio 	},
3228184fdd87SKonrad Dybcio };
3229184fdd87SKonrad Dybcio 
3230184fdd87SKonrad Dybcio static struct clk_branch gcc_ufs_phy_rx_symbol_0_clk = {
3231184fdd87SKonrad Dybcio 	.halt_reg = 0x4501c,
3232184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_SKIP,
3233184fdd87SKonrad Dybcio 	.clkr = {
3234184fdd87SKonrad Dybcio 		.enable_reg = 0x4501c,
3235184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
3236184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
3237184fdd87SKonrad Dybcio 			.name = "gcc_ufs_phy_rx_symbol_0_clk",
3238184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
3239184fdd87SKonrad Dybcio 		},
3240184fdd87SKonrad Dybcio 	},
3241184fdd87SKonrad Dybcio };
3242184fdd87SKonrad Dybcio 
3243184fdd87SKonrad Dybcio static struct clk_branch gcc_ufs_phy_tx_symbol_0_clk = {
3244184fdd87SKonrad Dybcio 	.halt_reg = 0x45018,
3245184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_SKIP,
3246184fdd87SKonrad Dybcio 	.clkr = {
3247184fdd87SKonrad Dybcio 		.enable_reg = 0x45018,
3248184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
3249184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
3250184fdd87SKonrad Dybcio 			.name = "gcc_ufs_phy_tx_symbol_0_clk",
3251184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
3252184fdd87SKonrad Dybcio 		},
3253184fdd87SKonrad Dybcio 	},
3254184fdd87SKonrad Dybcio };
3255184fdd87SKonrad Dybcio 
3256184fdd87SKonrad Dybcio static struct clk_branch gcc_ufs_phy_unipro_core_clk = {
3257184fdd87SKonrad Dybcio 	.halt_reg = 0x45040,
3258184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
3259184fdd87SKonrad Dybcio 	.hwcg_reg = 0x45040,
3260184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
3261184fdd87SKonrad Dybcio 	.clkr = {
3262184fdd87SKonrad Dybcio 		.enable_reg = 0x45040,
3263184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
3264184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
3265184fdd87SKonrad Dybcio 			.name = "gcc_ufs_phy_unipro_core_clk",
32665d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
32675d0e6922SDmitry Baryshkov 				&gcc_ufs_phy_unipro_core_clk_src.clkr.hw,
3268184fdd87SKonrad Dybcio 			},
3269184fdd87SKonrad Dybcio 			.num_parents = 1,
3270184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
3271184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
3272184fdd87SKonrad Dybcio 		},
3273184fdd87SKonrad Dybcio 	},
3274184fdd87SKonrad Dybcio };
3275184fdd87SKonrad Dybcio 
3276184fdd87SKonrad Dybcio static struct clk_branch gcc_usb30_prim_master_clk = {
3277184fdd87SKonrad Dybcio 	.halt_reg = 0x1a010,
3278184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
3279184fdd87SKonrad Dybcio 	.clkr = {
3280184fdd87SKonrad Dybcio 		.enable_reg = 0x1a010,
3281184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
3282184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
3283184fdd87SKonrad Dybcio 			.name = "gcc_usb30_prim_master_clk",
32845d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
32855d0e6922SDmitry Baryshkov 				&gcc_usb30_prim_master_clk_src.clkr.hw,
3286184fdd87SKonrad Dybcio 			},
3287184fdd87SKonrad Dybcio 			.num_parents = 1,
3288184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
3289184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
3290184fdd87SKonrad Dybcio 		},
3291184fdd87SKonrad Dybcio 	},
3292184fdd87SKonrad Dybcio };
3293184fdd87SKonrad Dybcio 
3294184fdd87SKonrad Dybcio static struct clk_branch gcc_usb30_prim_mock_utmi_clk = {
3295184fdd87SKonrad Dybcio 	.halt_reg = 0x1a018,
3296184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
3297184fdd87SKonrad Dybcio 	.clkr = {
3298184fdd87SKonrad Dybcio 		.enable_reg = 0x1a018,
3299184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
3300184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
3301184fdd87SKonrad Dybcio 			.name = "gcc_usb30_prim_mock_utmi_clk",
33025d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
33035d0e6922SDmitry Baryshkov 				&gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr.hw,
3304184fdd87SKonrad Dybcio 			},
3305184fdd87SKonrad Dybcio 			.num_parents = 1,
3306184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
3307184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
3308184fdd87SKonrad Dybcio 		},
3309184fdd87SKonrad Dybcio 	},
3310184fdd87SKonrad Dybcio };
3311184fdd87SKonrad Dybcio 
3312184fdd87SKonrad Dybcio static struct clk_branch gcc_usb30_prim_sleep_clk = {
3313184fdd87SKonrad Dybcio 	.halt_reg = 0x1a014,
3314184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
3315184fdd87SKonrad Dybcio 	.clkr = {
3316184fdd87SKonrad Dybcio 		.enable_reg = 0x1a014,
3317184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
3318184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
3319184fdd87SKonrad Dybcio 			.name = "gcc_usb30_prim_sleep_clk",
3320184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
3321184fdd87SKonrad Dybcio 		},
3322184fdd87SKonrad Dybcio 	},
3323184fdd87SKonrad Dybcio };
3324184fdd87SKonrad Dybcio 
3325184fdd87SKonrad Dybcio static struct clk_branch gcc_ufs_mem_clkref_clk = {
3326184fdd87SKonrad Dybcio 	.halt_reg = 0x8c000,
3327184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
3328184fdd87SKonrad Dybcio 	.clkr = {
3329184fdd87SKonrad Dybcio 		.enable_reg = 0x8c000,
3330184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
3331184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
3332184fdd87SKonrad Dybcio 			.name = "gcc_ufs_mem_clkref_clk",
3333184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
3334184fdd87SKonrad Dybcio 		},
3335184fdd87SKonrad Dybcio 	},
3336184fdd87SKonrad Dybcio };
3337184fdd87SKonrad Dybcio 
3338184fdd87SKonrad Dybcio static struct clk_branch gcc_rx5_pcie_clkref_en_clk = {
3339184fdd87SKonrad Dybcio 	.halt_reg = 0x8c00c,
3340184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
3341184fdd87SKonrad Dybcio 	.clkr = {
3342184fdd87SKonrad Dybcio 		.enable_reg = 0x8c00c,
3343184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
3344184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
3345184fdd87SKonrad Dybcio 			.name = "gcc_rx5_pcie_clkref_en_clk",
3346184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
3347184fdd87SKonrad Dybcio 		},
3348184fdd87SKonrad Dybcio 	},
3349184fdd87SKonrad Dybcio };
3350184fdd87SKonrad Dybcio 
3351184fdd87SKonrad Dybcio static struct clk_branch gcc_usb3_prim_clkref_clk = {
3352184fdd87SKonrad Dybcio 	.halt_reg = 0x8c010,
3353184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
3354184fdd87SKonrad Dybcio 	.clkr = {
3355184fdd87SKonrad Dybcio 		.enable_reg = 0x8c010,
3356184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
3357184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
3358184fdd87SKonrad Dybcio 			.name = "gcc_usb3_prim_clkref_clk",
3359184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
3360184fdd87SKonrad Dybcio 		},
3361184fdd87SKonrad Dybcio 	},
3362184fdd87SKonrad Dybcio };
3363184fdd87SKonrad Dybcio 
3364184fdd87SKonrad Dybcio static struct clk_branch gcc_usb3_prim_phy_com_aux_clk = {
3365184fdd87SKonrad Dybcio 	.halt_reg = 0x1a054,
3366184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
3367184fdd87SKonrad Dybcio 	.clkr = {
3368184fdd87SKonrad Dybcio 		.enable_reg = 0x1a054,
3369184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
3370184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
3371184fdd87SKonrad Dybcio 			.name = "gcc_usb3_prim_phy_com_aux_clk",
33725d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
33735d0e6922SDmitry Baryshkov 				&gcc_usb3_prim_phy_aux_clk_src.clkr.hw,
3374184fdd87SKonrad Dybcio 			},
3375184fdd87SKonrad Dybcio 			.num_parents = 1,
3376184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
3377184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
3378184fdd87SKonrad Dybcio 		},
3379184fdd87SKonrad Dybcio 	},
3380184fdd87SKonrad Dybcio };
3381184fdd87SKonrad Dybcio 
3382184fdd87SKonrad Dybcio static struct clk_branch gcc_usb3_prim_phy_pipe_clk = {
3383184fdd87SKonrad Dybcio 	.halt_reg = 0x1a058,
3384184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_SKIP,
3385184fdd87SKonrad Dybcio 	.hwcg_reg = 0x1a058,
3386184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
3387184fdd87SKonrad Dybcio 	.clkr = {
3388184fdd87SKonrad Dybcio 		.enable_reg = 0x1a058,
3389184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
3390184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
3391184fdd87SKonrad Dybcio 			.name = "gcc_usb3_prim_phy_pipe_clk",
3392184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
3393184fdd87SKonrad Dybcio 		},
3394184fdd87SKonrad Dybcio 	},
3395184fdd87SKonrad Dybcio };
3396184fdd87SKonrad Dybcio 
3397184fdd87SKonrad Dybcio static struct clk_branch gcc_vcodec0_axi_clk = {
3398184fdd87SKonrad Dybcio 	.halt_reg = 0x6e008,
3399184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
3400184fdd87SKonrad Dybcio 	.clkr = {
3401184fdd87SKonrad Dybcio 		.enable_reg = 0x6e008,
3402184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
3403184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
3404184fdd87SKonrad Dybcio 			.name = "gcc_vcodec0_axi_clk",
3405184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
3406184fdd87SKonrad Dybcio 		},
3407184fdd87SKonrad Dybcio 	},
3408184fdd87SKonrad Dybcio };
3409184fdd87SKonrad Dybcio 
3410184fdd87SKonrad Dybcio static struct clk_branch gcc_venus_ahb_clk = {
3411184fdd87SKonrad Dybcio 	.halt_reg = 0x6e010,
3412184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
3413184fdd87SKonrad Dybcio 	.clkr = {
3414184fdd87SKonrad Dybcio 		.enable_reg = 0x6e010,
3415184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
3416184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
3417184fdd87SKonrad Dybcio 			.name = "gcc_venus_ahb_clk",
3418184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
3419184fdd87SKonrad Dybcio 		},
3420184fdd87SKonrad Dybcio 	},
3421184fdd87SKonrad Dybcio };
3422184fdd87SKonrad Dybcio 
3423184fdd87SKonrad Dybcio static struct clk_branch gcc_venus_ctl_axi_clk = {
3424184fdd87SKonrad Dybcio 	.halt_reg = 0x6e004,
3425184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
3426184fdd87SKonrad Dybcio 	.clkr = {
3427184fdd87SKonrad Dybcio 		.enable_reg = 0x6e004,
3428184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
3429184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
3430184fdd87SKonrad Dybcio 			.name = "gcc_venus_ctl_axi_clk",
3431184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
3432184fdd87SKonrad Dybcio 		},
3433184fdd87SKonrad Dybcio 	},
3434184fdd87SKonrad Dybcio };
3435184fdd87SKonrad Dybcio 
3436184fdd87SKonrad Dybcio static struct clk_branch gcc_video_ahb_clk = {
3437184fdd87SKonrad Dybcio 	.halt_reg = 0x17004,
3438184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
3439184fdd87SKonrad Dybcio 	.hwcg_reg = 0x17004,
3440184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
3441184fdd87SKonrad Dybcio 	.clkr = {
3442184fdd87SKonrad Dybcio 		.enable_reg = 0x17004,
3443184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
3444184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
3445184fdd87SKonrad Dybcio 			.name = "gcc_video_ahb_clk",
3446184fdd87SKonrad Dybcio 			.flags = CLK_IS_CRITICAL,
3447184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
3448184fdd87SKonrad Dybcio 		},
3449184fdd87SKonrad Dybcio 	},
3450184fdd87SKonrad Dybcio };
3451184fdd87SKonrad Dybcio 
3452184fdd87SKonrad Dybcio static struct clk_branch gcc_video_axi0_clk = {
3453184fdd87SKonrad Dybcio 	.halt_reg = 0x1701c,
3454184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
3455184fdd87SKonrad Dybcio 	.hwcg_reg = 0x1701c,
3456184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
3457184fdd87SKonrad Dybcio 	.clkr = {
3458184fdd87SKonrad Dybcio 		.enable_reg = 0x1701c,
3459184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
3460184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
3461184fdd87SKonrad Dybcio 			.name = "gcc_video_axi0_clk",
3462184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
3463184fdd87SKonrad Dybcio 		},
3464184fdd87SKonrad Dybcio 	},
3465184fdd87SKonrad Dybcio };
3466184fdd87SKonrad Dybcio 
3467184fdd87SKonrad Dybcio static struct clk_branch gcc_video_throttle_core_clk = {
3468184fdd87SKonrad Dybcio 	.halt_reg = 0x17068,
3469184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
3470184fdd87SKonrad Dybcio 	.hwcg_reg = 0x17068,
3471184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
3472184fdd87SKonrad Dybcio 	.clkr = {
3473184fdd87SKonrad Dybcio 		.enable_reg = 0x79004,
3474184fdd87SKonrad Dybcio 		.enable_mask = BIT(28),
3475184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
3476184fdd87SKonrad Dybcio 			.name = "gcc_video_throttle_core_clk",
3477184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
3478184fdd87SKonrad Dybcio 		},
3479184fdd87SKonrad Dybcio 	},
3480184fdd87SKonrad Dybcio };
3481184fdd87SKonrad Dybcio 
3482184fdd87SKonrad Dybcio static struct clk_branch gcc_video_vcodec0_sys_clk = {
3483184fdd87SKonrad Dybcio 	.halt_reg = 0x580a4,
3484184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
3485184fdd87SKonrad Dybcio 	.hwcg_reg = 0x580a4,
3486184fdd87SKonrad Dybcio 	.hwcg_bit = 1,
3487184fdd87SKonrad Dybcio 	.clkr = {
3488184fdd87SKonrad Dybcio 		.enable_reg = 0x580a4,
3489184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
3490184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
3491184fdd87SKonrad Dybcio 			.name = "gcc_video_vcodec0_sys_clk",
34925d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
34935d0e6922SDmitry Baryshkov 				&gcc_video_venus_clk_src.clkr.hw,
3494184fdd87SKonrad Dybcio 			},
3495184fdd87SKonrad Dybcio 			.num_parents = 1,
3496184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
3497184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
3498184fdd87SKonrad Dybcio 		},
3499184fdd87SKonrad Dybcio 	},
3500184fdd87SKonrad Dybcio };
3501184fdd87SKonrad Dybcio 
3502184fdd87SKonrad Dybcio static struct clk_branch gcc_video_venus_ctl_clk = {
3503184fdd87SKonrad Dybcio 	.halt_reg = 0x5808c,
3504184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
3505184fdd87SKonrad Dybcio 	.clkr = {
3506184fdd87SKonrad Dybcio 		.enable_reg = 0x5808c,
3507184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
3508184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
3509184fdd87SKonrad Dybcio 			.name = "gcc_video_venus_ctl_clk",
35105d0e6922SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
35115d0e6922SDmitry Baryshkov 				&gcc_video_venus_clk_src.clkr.hw,
3512184fdd87SKonrad Dybcio 			},
3513184fdd87SKonrad Dybcio 			.num_parents = 1,
3514184fdd87SKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
3515184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
3516184fdd87SKonrad Dybcio 		},
3517184fdd87SKonrad Dybcio 	},
3518184fdd87SKonrad Dybcio };
3519184fdd87SKonrad Dybcio 
3520184fdd87SKonrad Dybcio static struct clk_branch gcc_video_xo_clk = {
3521184fdd87SKonrad Dybcio 	.halt_reg = 0x17024,
3522184fdd87SKonrad Dybcio 	.halt_check = BRANCH_HALT,
3523184fdd87SKonrad Dybcio 	.clkr = {
3524184fdd87SKonrad Dybcio 		.enable_reg = 0x17024,
3525184fdd87SKonrad Dybcio 		.enable_mask = BIT(0),
3526184fdd87SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
3527184fdd87SKonrad Dybcio 			.name = "gcc_video_xo_clk",
3528184fdd87SKonrad Dybcio 			.ops = &clk_branch2_ops,
3529184fdd87SKonrad Dybcio 		},
3530184fdd87SKonrad Dybcio 	},
3531184fdd87SKonrad Dybcio };
3532184fdd87SKonrad Dybcio 
3533184fdd87SKonrad Dybcio static struct gdsc usb30_prim_gdsc = {
3534184fdd87SKonrad Dybcio 	.gdscr = 0x1a004,
3535184fdd87SKonrad Dybcio 	.pd = {
3536184fdd87SKonrad Dybcio 		.name = "usb30_prim_gdsc",
3537184fdd87SKonrad Dybcio 	},
353803b49487SKonrad Dybcio 	/* TODO: Change to OFF_ON when USB drivers get proper suspend support */
353903b49487SKonrad Dybcio 	.pwrsts = PWRSTS_RET_ON,
3540184fdd87SKonrad Dybcio };
3541184fdd87SKonrad Dybcio 
3542184fdd87SKonrad Dybcio static struct gdsc ufs_phy_gdsc = {
3543184fdd87SKonrad Dybcio 	.gdscr = 0x45004,
3544184fdd87SKonrad Dybcio 	.pd = {
3545184fdd87SKonrad Dybcio 		.name = "ufs_phy_gdsc",
3546184fdd87SKonrad Dybcio 	},
3547184fdd87SKonrad Dybcio 	.pwrsts = PWRSTS_OFF_ON,
3548184fdd87SKonrad Dybcio };
3549184fdd87SKonrad Dybcio 
3550184fdd87SKonrad Dybcio static struct gdsc camss_top_gdsc = {
3551184fdd87SKonrad Dybcio 	.gdscr = 0x58004,
3552184fdd87SKonrad Dybcio 	.pd = {
3553184fdd87SKonrad Dybcio 		.name = "camss_top_gdsc",
3554184fdd87SKonrad Dybcio 	},
3555184fdd87SKonrad Dybcio 	.pwrsts = PWRSTS_OFF_ON,
3556184fdd87SKonrad Dybcio };
3557184fdd87SKonrad Dybcio 
3558184fdd87SKonrad Dybcio static struct gdsc venus_gdsc = {
3559184fdd87SKonrad Dybcio 	.gdscr = 0x5807c,
3560184fdd87SKonrad Dybcio 	.pd = {
3561184fdd87SKonrad Dybcio 		.name = "venus_gdsc",
3562184fdd87SKonrad Dybcio 	},
3563184fdd87SKonrad Dybcio 	.pwrsts = PWRSTS_OFF_ON,
3564184fdd87SKonrad Dybcio };
3565184fdd87SKonrad Dybcio 
3566184fdd87SKonrad Dybcio static struct gdsc vcodec0_gdsc = {
3567184fdd87SKonrad Dybcio 	.gdscr = 0x58098,
3568184fdd87SKonrad Dybcio 	.pd = {
3569184fdd87SKonrad Dybcio 		.name = "vcodec0_gdsc",
3570184fdd87SKonrad Dybcio 	},
3571184fdd87SKonrad Dybcio 	.pwrsts = PWRSTS_OFF_ON,
3572184fdd87SKonrad Dybcio 	.flags = HW_CTRL,
3573184fdd87SKonrad Dybcio };
3574184fdd87SKonrad Dybcio 
3575184fdd87SKonrad Dybcio static struct gdsc hlos1_vote_mm_snoc_mmu_tbu_rt_gdsc = {
3576184fdd87SKonrad Dybcio 	.gdscr = 0x7d074,
3577184fdd87SKonrad Dybcio 	.pd = {
3578184fdd87SKonrad Dybcio 		.name = "hlos1_vote_mm_snoc_mmu_tbu_rt_gdsc",
3579184fdd87SKonrad Dybcio 	},
3580184fdd87SKonrad Dybcio 	.pwrsts = PWRSTS_OFF_ON,
3581184fdd87SKonrad Dybcio 	.flags = VOTABLE,
3582184fdd87SKonrad Dybcio };
3583184fdd87SKonrad Dybcio 
3584184fdd87SKonrad Dybcio static struct gdsc hlos1_vote_mm_snoc_mmu_tbu_nrt_gdsc = {
3585184fdd87SKonrad Dybcio 	.gdscr = 0x7d078,
3586184fdd87SKonrad Dybcio 	.pd = {
3587184fdd87SKonrad Dybcio 		.name = "hlos1_vote_mm_snoc_mmu_tbu_nrt_gdsc",
3588184fdd87SKonrad Dybcio 	},
3589184fdd87SKonrad Dybcio 	.pwrsts = PWRSTS_OFF_ON,
3590184fdd87SKonrad Dybcio 	.flags = VOTABLE,
3591184fdd87SKonrad Dybcio };
3592184fdd87SKonrad Dybcio 
3593184fdd87SKonrad Dybcio static struct gdsc hlos1_vote_turing_mmu_tbu1_gdsc = {
3594184fdd87SKonrad Dybcio 	.gdscr = 0x7d060,
3595184fdd87SKonrad Dybcio 	.pd = {
3596184fdd87SKonrad Dybcio 		.name = "hlos1_vote_turing_mmu_tbu1_gdsc",
3597184fdd87SKonrad Dybcio 	},
3598184fdd87SKonrad Dybcio 	.pwrsts = PWRSTS_OFF_ON,
3599184fdd87SKonrad Dybcio 	.flags = VOTABLE,
3600184fdd87SKonrad Dybcio };
3601184fdd87SKonrad Dybcio 
3602184fdd87SKonrad Dybcio static struct gdsc hlos1_vote_turing_mmu_tbu0_gdsc = {
3603184fdd87SKonrad Dybcio 	.gdscr = 0x7d07c,
3604184fdd87SKonrad Dybcio 	.pd = {
3605184fdd87SKonrad Dybcio 		.name = "hlos1_vote_turing_mmu_tbu0_gdsc",
3606184fdd87SKonrad Dybcio 	},
3607184fdd87SKonrad Dybcio 	.pwrsts = PWRSTS_OFF_ON,
3608184fdd87SKonrad Dybcio 	.flags = VOTABLE,
3609184fdd87SKonrad Dybcio };
3610184fdd87SKonrad Dybcio 
3611184fdd87SKonrad Dybcio static struct clk_regmap *gcc_sm6375_clocks[] = {
3612184fdd87SKonrad Dybcio 	[GCC_AHB2PHY_CSI_CLK] = &gcc_ahb2phy_csi_clk.clkr,
3613184fdd87SKonrad Dybcio 	[GCC_AHB2PHY_USB_CLK] = &gcc_ahb2phy_usb_clk.clkr,
3614184fdd87SKonrad Dybcio 	[GCC_BIMC_GPU_AXI_CLK] = &gcc_bimc_gpu_axi_clk.clkr,
3615184fdd87SKonrad Dybcio 	[GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
3616184fdd87SKonrad Dybcio 	[GCC_CAM_THROTTLE_NRT_CLK] = &gcc_cam_throttle_nrt_clk.clkr,
3617184fdd87SKonrad Dybcio 	[GCC_CAM_THROTTLE_RT_CLK] = &gcc_cam_throttle_rt_clk.clkr,
3618184fdd87SKonrad Dybcio 	[GCC_CAMERA_AHB_CLK] = &gcc_camera_ahb_clk.clkr,
3619184fdd87SKonrad Dybcio 	[GCC_CAMSS_AXI_CLK] = &gcc_camss_axi_clk.clkr,
3620184fdd87SKonrad Dybcio 	[GCC_CAMSS_AXI_CLK_SRC] = &gcc_camss_axi_clk_src.clkr,
3621184fdd87SKonrad Dybcio 	[GCC_CAMSS_CCI_0_CLK] = &gcc_camss_cci_0_clk.clkr,
3622184fdd87SKonrad Dybcio 	[GCC_CAMSS_CCI_0_CLK_SRC] = &gcc_camss_cci_0_clk_src.clkr,
3623184fdd87SKonrad Dybcio 	[GCC_CAMSS_CCI_1_CLK] = &gcc_camss_cci_1_clk.clkr,
3624184fdd87SKonrad Dybcio 	[GCC_CAMSS_CCI_1_CLK_SRC] = &gcc_camss_cci_1_clk_src.clkr,
3625184fdd87SKonrad Dybcio 	[GCC_CAMSS_CPHY_0_CLK] = &gcc_camss_cphy_0_clk.clkr,
3626184fdd87SKonrad Dybcio 	[GCC_CAMSS_CPHY_1_CLK] = &gcc_camss_cphy_1_clk.clkr,
3627184fdd87SKonrad Dybcio 	[GCC_CAMSS_CPHY_2_CLK] = &gcc_camss_cphy_2_clk.clkr,
3628184fdd87SKonrad Dybcio 	[GCC_CAMSS_CPHY_3_CLK] = &gcc_camss_cphy_3_clk.clkr,
3629184fdd87SKonrad Dybcio 	[GCC_CAMSS_CSI0PHYTIMER_CLK] = &gcc_camss_csi0phytimer_clk.clkr,
3630184fdd87SKonrad Dybcio 	[GCC_CAMSS_CSI0PHYTIMER_CLK_SRC] = &gcc_camss_csi0phytimer_clk_src.clkr,
3631184fdd87SKonrad Dybcio 	[GCC_CAMSS_CSI1PHYTIMER_CLK] = &gcc_camss_csi1phytimer_clk.clkr,
3632184fdd87SKonrad Dybcio 	[GCC_CAMSS_CSI1PHYTIMER_CLK_SRC] = &gcc_camss_csi1phytimer_clk_src.clkr,
3633184fdd87SKonrad Dybcio 	[GCC_CAMSS_CSI2PHYTIMER_CLK] = &gcc_camss_csi2phytimer_clk.clkr,
3634184fdd87SKonrad Dybcio 	[GCC_CAMSS_CSI2PHYTIMER_CLK_SRC] = &gcc_camss_csi2phytimer_clk_src.clkr,
3635184fdd87SKonrad Dybcio 	[GCC_CAMSS_CSI3PHYTIMER_CLK] = &gcc_camss_csi3phytimer_clk.clkr,
3636184fdd87SKonrad Dybcio 	[GCC_CAMSS_CSI3PHYTIMER_CLK_SRC] = &gcc_camss_csi3phytimer_clk_src.clkr,
3637184fdd87SKonrad Dybcio 	[GCC_CAMSS_MCLK0_CLK] = &gcc_camss_mclk0_clk.clkr,
3638184fdd87SKonrad Dybcio 	[GCC_CAMSS_MCLK0_CLK_SRC] = &gcc_camss_mclk0_clk_src.clkr,
3639184fdd87SKonrad Dybcio 	[GCC_CAMSS_MCLK1_CLK] = &gcc_camss_mclk1_clk.clkr,
3640184fdd87SKonrad Dybcio 	[GCC_CAMSS_MCLK1_CLK_SRC] = &gcc_camss_mclk1_clk_src.clkr,
3641184fdd87SKonrad Dybcio 	[GCC_CAMSS_MCLK2_CLK] = &gcc_camss_mclk2_clk.clkr,
3642184fdd87SKonrad Dybcio 	[GCC_CAMSS_MCLK2_CLK_SRC] = &gcc_camss_mclk2_clk_src.clkr,
3643184fdd87SKonrad Dybcio 	[GCC_CAMSS_MCLK3_CLK] = &gcc_camss_mclk3_clk.clkr,
3644184fdd87SKonrad Dybcio 	[GCC_CAMSS_MCLK3_CLK_SRC] = &gcc_camss_mclk3_clk_src.clkr,
3645184fdd87SKonrad Dybcio 	[GCC_CAMSS_MCLK4_CLK] = &gcc_camss_mclk4_clk.clkr,
3646184fdd87SKonrad Dybcio 	[GCC_CAMSS_MCLK4_CLK_SRC] = &gcc_camss_mclk4_clk_src.clkr,
3647184fdd87SKonrad Dybcio 	[GCC_CAMSS_NRT_AXI_CLK] = &gcc_camss_nrt_axi_clk.clkr,
3648184fdd87SKonrad Dybcio 	[GCC_CAMSS_OPE_AHB_CLK] = &gcc_camss_ope_ahb_clk.clkr,
3649184fdd87SKonrad Dybcio 	[GCC_CAMSS_OPE_AHB_CLK_SRC] = &gcc_camss_ope_ahb_clk_src.clkr,
3650184fdd87SKonrad Dybcio 	[GCC_CAMSS_OPE_CLK] = &gcc_camss_ope_clk.clkr,
3651184fdd87SKonrad Dybcio 	[GCC_CAMSS_OPE_CLK_SRC] = &gcc_camss_ope_clk_src.clkr,
3652184fdd87SKonrad Dybcio 	[GCC_CAMSS_RT_AXI_CLK] = &gcc_camss_rt_axi_clk.clkr,
3653184fdd87SKonrad Dybcio 	[GCC_CAMSS_TFE_0_CLK] = &gcc_camss_tfe_0_clk.clkr,
3654184fdd87SKonrad Dybcio 	[GCC_CAMSS_TFE_0_CLK_SRC] = &gcc_camss_tfe_0_clk_src.clkr,
3655184fdd87SKonrad Dybcio 	[GCC_CAMSS_TFE_0_CPHY_RX_CLK] = &gcc_camss_tfe_0_cphy_rx_clk.clkr,
3656184fdd87SKonrad Dybcio 	[GCC_CAMSS_TFE_0_CSID_CLK] = &gcc_camss_tfe_0_csid_clk.clkr,
3657184fdd87SKonrad Dybcio 	[GCC_CAMSS_TFE_0_CSID_CLK_SRC] = &gcc_camss_tfe_0_csid_clk_src.clkr,
3658184fdd87SKonrad Dybcio 	[GCC_CAMSS_TFE_1_CLK] = &gcc_camss_tfe_1_clk.clkr,
3659184fdd87SKonrad Dybcio 	[GCC_CAMSS_TFE_1_CLK_SRC] = &gcc_camss_tfe_1_clk_src.clkr,
3660184fdd87SKonrad Dybcio 	[GCC_CAMSS_TFE_1_CPHY_RX_CLK] = &gcc_camss_tfe_1_cphy_rx_clk.clkr,
3661184fdd87SKonrad Dybcio 	[GCC_CAMSS_TFE_1_CSID_CLK] = &gcc_camss_tfe_1_csid_clk.clkr,
3662184fdd87SKonrad Dybcio 	[GCC_CAMSS_TFE_1_CSID_CLK_SRC] = &gcc_camss_tfe_1_csid_clk_src.clkr,
3663184fdd87SKonrad Dybcio 	[GCC_CAMSS_TFE_2_CLK] = &gcc_camss_tfe_2_clk.clkr,
3664184fdd87SKonrad Dybcio 	[GCC_CAMSS_TFE_2_CLK_SRC] = &gcc_camss_tfe_2_clk_src.clkr,
3665184fdd87SKonrad Dybcio 	[GCC_CAMSS_TFE_2_CPHY_RX_CLK] = &gcc_camss_tfe_2_cphy_rx_clk.clkr,
3666184fdd87SKonrad Dybcio 	[GCC_CAMSS_TFE_2_CSID_CLK] = &gcc_camss_tfe_2_csid_clk.clkr,
3667184fdd87SKonrad Dybcio 	[GCC_CAMSS_TFE_2_CSID_CLK_SRC] = &gcc_camss_tfe_2_csid_clk_src.clkr,
3668184fdd87SKonrad Dybcio 	[GCC_CAMSS_TFE_CPHY_RX_CLK_SRC] = &gcc_camss_tfe_cphy_rx_clk_src.clkr,
3669184fdd87SKonrad Dybcio 	[GCC_CAMSS_TOP_AHB_CLK] = &gcc_camss_top_ahb_clk.clkr,
3670184fdd87SKonrad Dybcio 	[GCC_CAMSS_TOP_AHB_CLK_SRC] = &gcc_camss_top_ahb_clk_src.clkr,
3671184fdd87SKonrad Dybcio 	[GCC_CFG_NOC_USB3_PRIM_AXI_CLK] = &gcc_cfg_noc_usb3_prim_axi_clk.clkr,
3672184fdd87SKonrad Dybcio 	[GCC_CPUSS_AHB_CLK_SRC] = &gcc_cpuss_ahb_clk_src.clkr,
3673184fdd87SKonrad Dybcio 	[GCC_CPUSS_AHB_POSTDIV_CLK_SRC] = &gcc_cpuss_ahb_postdiv_clk_src.clkr,
3674184fdd87SKonrad Dybcio 	[GCC_DISP_AHB_CLK] = &gcc_disp_ahb_clk.clkr,
3675184fdd87SKonrad Dybcio 	[GCC_DISP_GPLL0_CLK_SRC] = &gcc_disp_gpll0_clk_src.clkr,
3676184fdd87SKonrad Dybcio 	[GCC_DISP_GPLL0_DIV_CLK_SRC] = &gcc_disp_gpll0_div_clk_src.clkr,
3677184fdd87SKonrad Dybcio 	[GCC_DISP_HF_AXI_CLK] = &gcc_disp_hf_axi_clk.clkr,
3678184fdd87SKonrad Dybcio 	[GCC_DISP_SLEEP_CLK] = &gcc_disp_sleep_clk.clkr,
3679184fdd87SKonrad Dybcio 	[GCC_DISP_THROTTLE_CORE_CLK] = &gcc_disp_throttle_core_clk.clkr,
3680184fdd87SKonrad Dybcio 	[GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
3681184fdd87SKonrad Dybcio 	[GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr,
3682184fdd87SKonrad Dybcio 	[GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
3683184fdd87SKonrad Dybcio 	[GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr,
3684184fdd87SKonrad Dybcio 	[GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
3685184fdd87SKonrad Dybcio 	[GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr,
3686184fdd87SKonrad Dybcio 	[GCC_GPU_CFG_AHB_CLK] = &gcc_gpu_cfg_ahb_clk.clkr,
3687184fdd87SKonrad Dybcio 	[GCC_GPU_GPLL0_CLK_SRC] = &gcc_gpu_gpll0_clk_src.clkr,
3688184fdd87SKonrad Dybcio 	[GCC_GPU_GPLL0_DIV_CLK_SRC] = &gcc_gpu_gpll0_div_clk_src.clkr,
3689184fdd87SKonrad Dybcio 	[GCC_GPU_MEMNOC_GFX_CLK] = &gcc_gpu_memnoc_gfx_clk.clkr,
3690184fdd87SKonrad Dybcio 	[GCC_GPU_SNOC_DVM_GFX_CLK] = &gcc_gpu_snoc_dvm_gfx_clk.clkr,
3691184fdd87SKonrad Dybcio 	[GCC_GPU_THROTTLE_CORE_CLK] = &gcc_gpu_throttle_core_clk.clkr,
3692184fdd87SKonrad Dybcio 	[GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
3693184fdd87SKonrad Dybcio 	[GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr,
3694184fdd87SKonrad Dybcio 	[GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
3695184fdd87SKonrad Dybcio 	[GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr,
3696184fdd87SKonrad Dybcio 	[GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
3697184fdd87SKonrad Dybcio 	[GCC_QMIP_CAMERA_NRT_AHB_CLK] = &gcc_qmip_camera_nrt_ahb_clk.clkr,
3698184fdd87SKonrad Dybcio 	[GCC_QMIP_CAMERA_RT_AHB_CLK] = &gcc_qmip_camera_rt_ahb_clk.clkr,
3699184fdd87SKonrad Dybcio 	[GCC_QMIP_DISP_AHB_CLK] = &gcc_qmip_disp_ahb_clk.clkr,
3700184fdd87SKonrad Dybcio 	[GCC_QMIP_GPU_CFG_AHB_CLK] = &gcc_qmip_gpu_cfg_ahb_clk.clkr,
3701184fdd87SKonrad Dybcio 	[GCC_QMIP_VIDEO_VCODEC_AHB_CLK] = &gcc_qmip_video_vcodec_ahb_clk.clkr,
3702184fdd87SKonrad Dybcio 	[GCC_QUPV3_WRAP0_CORE_2X_CLK] = &gcc_qupv3_wrap0_core_2x_clk.clkr,
3703184fdd87SKonrad Dybcio 	[GCC_QUPV3_WRAP0_CORE_CLK] = &gcc_qupv3_wrap0_core_clk.clkr,
3704184fdd87SKonrad Dybcio 	[GCC_QUPV3_WRAP0_S0_CLK] = &gcc_qupv3_wrap0_s0_clk.clkr,
3705184fdd87SKonrad Dybcio 	[GCC_QUPV3_WRAP0_S0_CLK_SRC] = &gcc_qupv3_wrap0_s0_clk_src.clkr,
3706184fdd87SKonrad Dybcio 	[GCC_QUPV3_WRAP0_S1_CLK] = &gcc_qupv3_wrap0_s1_clk.clkr,
3707184fdd87SKonrad Dybcio 	[GCC_QUPV3_WRAP0_S1_CLK_SRC] = &gcc_qupv3_wrap0_s1_clk_src.clkr,
3708184fdd87SKonrad Dybcio 	[GCC_QUPV3_WRAP0_S2_CLK] = &gcc_qupv3_wrap0_s2_clk.clkr,
3709184fdd87SKonrad Dybcio 	[GCC_QUPV3_WRAP0_S2_CLK_SRC] = &gcc_qupv3_wrap0_s2_clk_src.clkr,
3710184fdd87SKonrad Dybcio 	[GCC_QUPV3_WRAP0_S3_CLK] = &gcc_qupv3_wrap0_s3_clk.clkr,
3711184fdd87SKonrad Dybcio 	[GCC_QUPV3_WRAP0_S3_CLK_SRC] = &gcc_qupv3_wrap0_s3_clk_src.clkr,
3712184fdd87SKonrad Dybcio 	[GCC_QUPV3_WRAP0_S4_CLK] = &gcc_qupv3_wrap0_s4_clk.clkr,
3713184fdd87SKonrad Dybcio 	[GCC_QUPV3_WRAP0_S4_CLK_SRC] = &gcc_qupv3_wrap0_s4_clk_src.clkr,
3714184fdd87SKonrad Dybcio 	[GCC_QUPV3_WRAP0_S5_CLK] = &gcc_qupv3_wrap0_s5_clk.clkr,
3715184fdd87SKonrad Dybcio 	[GCC_QUPV3_WRAP0_S5_CLK_SRC] = &gcc_qupv3_wrap0_s5_clk_src.clkr,
3716184fdd87SKonrad Dybcio 	[GCC_QUPV3_WRAP1_CORE_2X_CLK] = &gcc_qupv3_wrap1_core_2x_clk.clkr,
3717184fdd87SKonrad Dybcio 	[GCC_QUPV3_WRAP1_CORE_CLK] = &gcc_qupv3_wrap1_core_clk.clkr,
3718184fdd87SKonrad Dybcio 	[GCC_QUPV3_WRAP1_S0_CLK] = &gcc_qupv3_wrap1_s0_clk.clkr,
3719184fdd87SKonrad Dybcio 	[GCC_QUPV3_WRAP1_S0_CLK_SRC] = &gcc_qupv3_wrap1_s0_clk_src.clkr,
3720184fdd87SKonrad Dybcio 	[GCC_QUPV3_WRAP1_S1_CLK] = &gcc_qupv3_wrap1_s1_clk.clkr,
3721184fdd87SKonrad Dybcio 	[GCC_QUPV3_WRAP1_S1_CLK_SRC] = &gcc_qupv3_wrap1_s1_clk_src.clkr,
3722184fdd87SKonrad Dybcio 	[GCC_QUPV3_WRAP1_S2_CLK] = &gcc_qupv3_wrap1_s2_clk.clkr,
3723184fdd87SKonrad Dybcio 	[GCC_QUPV3_WRAP1_S2_CLK_SRC] = &gcc_qupv3_wrap1_s2_clk_src.clkr,
3724184fdd87SKonrad Dybcio 	[GCC_QUPV3_WRAP1_S3_CLK] = &gcc_qupv3_wrap1_s3_clk.clkr,
3725184fdd87SKonrad Dybcio 	[GCC_QUPV3_WRAP1_S3_CLK_SRC] = &gcc_qupv3_wrap1_s3_clk_src.clkr,
3726184fdd87SKonrad Dybcio 	[GCC_QUPV3_WRAP1_S4_CLK] = &gcc_qupv3_wrap1_s4_clk.clkr,
3727184fdd87SKonrad Dybcio 	[GCC_QUPV3_WRAP1_S4_CLK_SRC] = &gcc_qupv3_wrap1_s4_clk_src.clkr,
3728184fdd87SKonrad Dybcio 	[GCC_QUPV3_WRAP1_S5_CLK] = &gcc_qupv3_wrap1_s5_clk.clkr,
3729184fdd87SKonrad Dybcio 	[GCC_QUPV3_WRAP1_S5_CLK_SRC] = &gcc_qupv3_wrap1_s5_clk_src.clkr,
3730184fdd87SKonrad Dybcio 	[GCC_QUPV3_WRAP_0_M_AHB_CLK] = &gcc_qupv3_wrap_0_m_ahb_clk.clkr,
3731184fdd87SKonrad Dybcio 	[GCC_QUPV3_WRAP_0_S_AHB_CLK] = &gcc_qupv3_wrap_0_s_ahb_clk.clkr,
3732184fdd87SKonrad Dybcio 	[GCC_QUPV3_WRAP_1_M_AHB_CLK] = &gcc_qupv3_wrap_1_m_ahb_clk.clkr,
3733184fdd87SKonrad Dybcio 	[GCC_QUPV3_WRAP_1_S_AHB_CLK] = &gcc_qupv3_wrap_1_s_ahb_clk.clkr,
3734184fdd87SKonrad Dybcio 	[GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
3735184fdd87SKonrad Dybcio 	[GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
3736184fdd87SKonrad Dybcio 	[GCC_SDCC1_APPS_CLK_SRC] = &gcc_sdcc1_apps_clk_src.clkr,
3737184fdd87SKonrad Dybcio 	[GCC_SDCC1_ICE_CORE_CLK] = &gcc_sdcc1_ice_core_clk.clkr,
3738184fdd87SKonrad Dybcio 	[GCC_SDCC1_ICE_CORE_CLK_SRC] = &gcc_sdcc1_ice_core_clk_src.clkr,
3739184fdd87SKonrad Dybcio 	[GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
3740184fdd87SKonrad Dybcio 	[GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
3741184fdd87SKonrad Dybcio 	[GCC_SDCC2_APPS_CLK_SRC] = &gcc_sdcc2_apps_clk_src.clkr,
3742184fdd87SKonrad Dybcio 	[GCC_SYS_NOC_CPUSS_AHB_CLK] = &gcc_sys_noc_cpuss_ahb_clk.clkr,
3743184fdd87SKonrad Dybcio 	[GCC_SYS_NOC_UFS_PHY_AXI_CLK] = &gcc_sys_noc_ufs_phy_axi_clk.clkr,
3744184fdd87SKonrad Dybcio 	[GCC_SYS_NOC_USB3_PRIM_AXI_CLK] = &gcc_sys_noc_usb3_prim_axi_clk.clkr,
3745184fdd87SKonrad Dybcio 	[GCC_UFS_PHY_AHB_CLK] = &gcc_ufs_phy_ahb_clk.clkr,
3746184fdd87SKonrad Dybcio 	[GCC_UFS_PHY_AXI_CLK] = &gcc_ufs_phy_axi_clk.clkr,
3747184fdd87SKonrad Dybcio 	[GCC_UFS_PHY_AXI_CLK_SRC] = &gcc_ufs_phy_axi_clk_src.clkr,
3748184fdd87SKonrad Dybcio 	[GCC_UFS_PHY_ICE_CORE_CLK] = &gcc_ufs_phy_ice_core_clk.clkr,
3749184fdd87SKonrad Dybcio 	[GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &gcc_ufs_phy_ice_core_clk_src.clkr,
3750184fdd87SKonrad Dybcio 	[GCC_UFS_PHY_PHY_AUX_CLK] = &gcc_ufs_phy_phy_aux_clk.clkr,
3751184fdd87SKonrad Dybcio 	[GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &gcc_ufs_phy_phy_aux_clk_src.clkr,
3752184fdd87SKonrad Dybcio 	[GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &gcc_ufs_phy_rx_symbol_0_clk.clkr,
3753184fdd87SKonrad Dybcio 	[GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &gcc_ufs_phy_tx_symbol_0_clk.clkr,
3754184fdd87SKonrad Dybcio 	[GCC_UFS_PHY_UNIPRO_CORE_CLK] = &gcc_ufs_phy_unipro_core_clk.clkr,
3755184fdd87SKonrad Dybcio 	[GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC] = &gcc_ufs_phy_unipro_core_clk_src.clkr,
3756184fdd87SKonrad Dybcio 	[GCC_USB30_PRIM_MASTER_CLK] = &gcc_usb30_prim_master_clk.clkr,
3757184fdd87SKonrad Dybcio 	[GCC_USB30_PRIM_MASTER_CLK_SRC] = &gcc_usb30_prim_master_clk_src.clkr,
3758184fdd87SKonrad Dybcio 	[GCC_USB30_PRIM_MOCK_UTMI_CLK] = &gcc_usb30_prim_mock_utmi_clk.clkr,
3759184fdd87SKonrad Dybcio 	[GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC] = &gcc_usb30_prim_mock_utmi_clk_src.clkr,
3760184fdd87SKonrad Dybcio 	[GCC_USB30_PRIM_MOCK_UTMI_POSTDIV_CLK_SRC] = &gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr,
3761184fdd87SKonrad Dybcio 	[GCC_USB30_PRIM_SLEEP_CLK] = &gcc_usb30_prim_sleep_clk.clkr,
3762184fdd87SKonrad Dybcio 	[GCC_USB3_PRIM_CLKREF_CLK] = &gcc_usb3_prim_clkref_clk.clkr,
3763184fdd87SKonrad Dybcio 	[GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &gcc_usb3_prim_phy_aux_clk_src.clkr,
3764184fdd87SKonrad Dybcio 	[GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &gcc_usb3_prim_phy_com_aux_clk.clkr,
3765184fdd87SKonrad Dybcio 	[GCC_USB3_PRIM_PHY_PIPE_CLK] = &gcc_usb3_prim_phy_pipe_clk.clkr,
3766184fdd87SKonrad Dybcio 	[GCC_VCODEC0_AXI_CLK] = &gcc_vcodec0_axi_clk.clkr,
3767184fdd87SKonrad Dybcio 	[GCC_VENUS_AHB_CLK] = &gcc_venus_ahb_clk.clkr,
3768184fdd87SKonrad Dybcio 	[GCC_VENUS_CTL_AXI_CLK] = &gcc_venus_ctl_axi_clk.clkr,
3769184fdd87SKonrad Dybcio 	[GCC_VIDEO_AHB_CLK] = &gcc_video_ahb_clk.clkr,
3770184fdd87SKonrad Dybcio 	[GCC_VIDEO_AXI0_CLK] = &gcc_video_axi0_clk.clkr,
3771184fdd87SKonrad Dybcio 	[GCC_VIDEO_THROTTLE_CORE_CLK] = &gcc_video_throttle_core_clk.clkr,
3772184fdd87SKonrad Dybcio 	[GCC_VIDEO_VCODEC0_SYS_CLK] = &gcc_video_vcodec0_sys_clk.clkr,
3773184fdd87SKonrad Dybcio 	[GCC_VIDEO_VENUS_CLK_SRC] = &gcc_video_venus_clk_src.clkr,
3774184fdd87SKonrad Dybcio 	[GCC_VIDEO_VENUS_CTL_CLK] = &gcc_video_venus_ctl_clk.clkr,
3775184fdd87SKonrad Dybcio 	[GCC_VIDEO_XO_CLK] = &gcc_video_xo_clk.clkr,
3776184fdd87SKonrad Dybcio 	[GCC_UFS_MEM_CLKREF_CLK] = &gcc_ufs_mem_clkref_clk.clkr,
3777184fdd87SKonrad Dybcio 	[GCC_RX5_PCIE_CLKREF_EN_CLK] = &gcc_rx5_pcie_clkref_en_clk.clkr,
3778184fdd87SKonrad Dybcio 	[GPLL0] = &gpll0.clkr,
3779184fdd87SKonrad Dybcio 	[GPLL0_OUT_EVEN] = &gpll0_out_even.clkr,
3780184fdd87SKonrad Dybcio 	[GPLL0_OUT_ODD] = &gpll0_out_odd.clkr,
3781184fdd87SKonrad Dybcio 	[GPLL1] = &gpll1.clkr,
3782184fdd87SKonrad Dybcio 	[GPLL10] = &gpll10.clkr,
3783184fdd87SKonrad Dybcio 	[GPLL11] = &gpll11.clkr,
3784184fdd87SKonrad Dybcio 	[GPLL3] = &gpll3.clkr,
3785184fdd87SKonrad Dybcio 	[GPLL3_OUT_EVEN] = &gpll3_out_even.clkr,
3786184fdd87SKonrad Dybcio 	[GPLL4] = &gpll4.clkr,
3787184fdd87SKonrad Dybcio 	[GPLL5] = &gpll5.clkr,
3788184fdd87SKonrad Dybcio 	[GPLL6] = &gpll6.clkr,
3789184fdd87SKonrad Dybcio 	[GPLL6_OUT_EVEN] = &gpll6_out_even.clkr,
3790184fdd87SKonrad Dybcio 	[GPLL7] = &gpll7.clkr,
3791184fdd87SKonrad Dybcio 	[GPLL8] = &gpll8.clkr,
3792184fdd87SKonrad Dybcio 	[GPLL8_OUT_EVEN] = &gpll8_out_even.clkr,
3793184fdd87SKonrad Dybcio 	[GPLL9] = &gpll9.clkr,
3794184fdd87SKonrad Dybcio 	[GPLL9_OUT_MAIN] = &gpll9_out_main.clkr,
3795184fdd87SKonrad Dybcio };
3796184fdd87SKonrad Dybcio 
3797184fdd87SKonrad Dybcio static const struct qcom_reset_map gcc_sm6375_resets[] = {
3798184fdd87SKonrad Dybcio 	[GCC_MMSS_BCR] = { 0x17000 },
3799184fdd87SKonrad Dybcio 	[GCC_USB30_PRIM_BCR] = { 0x1a000 },
3800184fdd87SKonrad Dybcio 	[GCC_USB3_PHY_PRIM_SP0_BCR] = { 0x1b000 },
3801184fdd87SKonrad Dybcio 	[GCC_USB3_DP_PHY_PRIM_BCR] = { 0x1b020 },
3802184fdd87SKonrad Dybcio 	[GCC_QUSB2PHY_PRIM_BCR] = { 0x1c000 },
3803184fdd87SKonrad Dybcio 	[GCC_QUSB2PHY_SEC_BCR] = { 0x1c004 },
3804184fdd87SKonrad Dybcio 	[GCC_USB_PHY_CFG_AHB2PHY_BCR] = { 0x1d000 },
3805184fdd87SKonrad Dybcio 	[GCC_SDCC2_BCR] = { 0x1e000 },
3806184fdd87SKonrad Dybcio 	[GCC_QUPV3_WRAPPER_0_BCR] = { 0x1f000 },
3807184fdd87SKonrad Dybcio 	[GCC_PDM_BCR] = { 0x20000 },
3808184fdd87SKonrad Dybcio 	[GCC_GPU_BCR] = { 0x36000 },
3809184fdd87SKonrad Dybcio 	[GCC_SDCC1_BCR] = { 0x38000 },
3810184fdd87SKonrad Dybcio 	[GCC_UFS_PHY_BCR] = { 0x45000 },
3811184fdd87SKonrad Dybcio 	[GCC_CAMSS_TFE_BCR] = { 0x52000 },
3812184fdd87SKonrad Dybcio 	[GCC_QUPV3_WRAPPER_1_BCR] = { 0x53000 },
3813184fdd87SKonrad Dybcio 	[GCC_CAMSS_OPE_BCR] = { 0x55000 },
3814184fdd87SKonrad Dybcio 	[GCC_CAMSS_TOP_BCR] = { 0x58000 },
3815184fdd87SKonrad Dybcio 	[GCC_VENUS_BCR] = { 0x58078 },
3816184fdd87SKonrad Dybcio 	[GCC_VCODEC0_BCR] = { 0x58094 },
3817184fdd87SKonrad Dybcio 	[GCC_VIDEO_INTERFACE_BCR] = { 0x6e000 },
3818184fdd87SKonrad Dybcio };
3819184fdd87SKonrad Dybcio 
3820184fdd87SKonrad Dybcio 
3821184fdd87SKonrad Dybcio static const struct clk_rcg_dfs_data gcc_dfs_clocks[] = {
3822184fdd87SKonrad Dybcio 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s0_clk_src),
3823184fdd87SKonrad Dybcio 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s1_clk_src),
3824184fdd87SKonrad Dybcio 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s2_clk_src),
3825184fdd87SKonrad Dybcio 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s3_clk_src),
3826184fdd87SKonrad Dybcio 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s4_clk_src),
3827184fdd87SKonrad Dybcio 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s5_clk_src),
3828184fdd87SKonrad Dybcio 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s0_clk_src),
3829184fdd87SKonrad Dybcio 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s1_clk_src),
3830184fdd87SKonrad Dybcio 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s2_clk_src),
3831184fdd87SKonrad Dybcio 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s3_clk_src),
3832184fdd87SKonrad Dybcio 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s4_clk_src),
3833184fdd87SKonrad Dybcio 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s5_clk_src),
3834184fdd87SKonrad Dybcio };
3835184fdd87SKonrad Dybcio 
3836184fdd87SKonrad Dybcio static struct gdsc *gcc_sm6375_gdscs[] = {
3837184fdd87SKonrad Dybcio 	[USB30_PRIM_GDSC] = &usb30_prim_gdsc,
3838184fdd87SKonrad Dybcio 	[UFS_PHY_GDSC] = &ufs_phy_gdsc,
3839184fdd87SKonrad Dybcio 	[CAMSS_TOP_GDSC] = &camss_top_gdsc,
3840184fdd87SKonrad Dybcio 	[VENUS_GDSC] = &venus_gdsc,
3841184fdd87SKonrad Dybcio 	[VCODEC0_GDSC] = &vcodec0_gdsc,
3842184fdd87SKonrad Dybcio 	[HLOS1_VOTE_MM_SNOC_MMU_TBU_NRT_GDSC] = &hlos1_vote_mm_snoc_mmu_tbu_nrt_gdsc,
3843184fdd87SKonrad Dybcio 	[HLOS1_VOTE_MM_SNOC_MMU_TBU_RT_GDSC] = &hlos1_vote_mm_snoc_mmu_tbu_rt_gdsc,
3844184fdd87SKonrad Dybcio 	[HLOS1_VOTE_TURING_MMU_TBU0_GDSC] = &hlos1_vote_turing_mmu_tbu0_gdsc,
3845184fdd87SKonrad Dybcio 	[HLOS1_VOTE_TURING_MMU_TBU1_GDSC] = &hlos1_vote_turing_mmu_tbu1_gdsc,
3846184fdd87SKonrad Dybcio };
3847184fdd87SKonrad Dybcio 
3848184fdd87SKonrad Dybcio static const struct regmap_config gcc_sm6375_regmap_config = {
3849184fdd87SKonrad Dybcio 	.reg_bits = 32,
3850184fdd87SKonrad Dybcio 	.reg_stride = 4,
3851184fdd87SKonrad Dybcio 	.val_bits = 32,
3852184fdd87SKonrad Dybcio 	.max_register = 0xc7000,
3853184fdd87SKonrad Dybcio 	.fast_io = true,
3854184fdd87SKonrad Dybcio };
3855184fdd87SKonrad Dybcio 
3856184fdd87SKonrad Dybcio static const struct qcom_cc_desc gcc_sm6375_desc = {
3857184fdd87SKonrad Dybcio 	.config = &gcc_sm6375_regmap_config,
3858184fdd87SKonrad Dybcio 	.clks = gcc_sm6375_clocks,
3859184fdd87SKonrad Dybcio 	.num_clks = ARRAY_SIZE(gcc_sm6375_clocks),
3860184fdd87SKonrad Dybcio 	.resets = gcc_sm6375_resets,
3861184fdd87SKonrad Dybcio 	.num_resets = ARRAY_SIZE(gcc_sm6375_resets),
3862184fdd87SKonrad Dybcio 	.gdscs = gcc_sm6375_gdscs,
3863184fdd87SKonrad Dybcio 	.num_gdscs = ARRAY_SIZE(gcc_sm6375_gdscs),
3864184fdd87SKonrad Dybcio };
3865184fdd87SKonrad Dybcio 
3866184fdd87SKonrad Dybcio static const struct of_device_id gcc_sm6375_match_table[] = {
3867184fdd87SKonrad Dybcio 	{ .compatible = "qcom,sm6375-gcc" },
3868184fdd87SKonrad Dybcio 	{ }
3869184fdd87SKonrad Dybcio };
3870184fdd87SKonrad Dybcio MODULE_DEVICE_TABLE(of, gcc_sm6375_match_table);
3871184fdd87SKonrad Dybcio 
gcc_sm6375_probe(struct platform_device * pdev)3872184fdd87SKonrad Dybcio static int gcc_sm6375_probe(struct platform_device *pdev)
3873184fdd87SKonrad Dybcio {
3874184fdd87SKonrad Dybcio 	struct regmap *regmap;
3875184fdd87SKonrad Dybcio 	int ret;
3876184fdd87SKonrad Dybcio 
3877184fdd87SKonrad Dybcio 	regmap = qcom_cc_map(pdev, &gcc_sm6375_desc);
3878184fdd87SKonrad Dybcio 	if (IS_ERR(regmap))
3879184fdd87SKonrad Dybcio 		return PTR_ERR(regmap);
3880184fdd87SKonrad Dybcio 
3881184fdd87SKonrad Dybcio 	ret = qcom_cc_register_rcg_dfs(regmap, gcc_dfs_clocks, ARRAY_SIZE(gcc_dfs_clocks));
3882184fdd87SKonrad Dybcio 	if (ret)
3883184fdd87SKonrad Dybcio 		return ret;
3884184fdd87SKonrad Dybcio 
3885184fdd87SKonrad Dybcio 	/*
3886184fdd87SKonrad Dybcio 	 * Keep the following clocks always on:
3887184fdd87SKonrad Dybcio 	 * GCC_CAMERA_XO_CLK, GCC_CPUSS_GNOC_CLK, GCC_DISP_XO_CLK
3888184fdd87SKonrad Dybcio 	 */
3889184fdd87SKonrad Dybcio 	regmap_update_bits(regmap, 0x17028, BIT(0), BIT(0));
3890184fdd87SKonrad Dybcio 	regmap_update_bits(regmap, 0x2b004, BIT(0), BIT(0));
3891184fdd87SKonrad Dybcio 	regmap_update_bits(regmap, 0x1702c, BIT(0), BIT(0));
3892184fdd87SKonrad Dybcio 
3893184fdd87SKonrad Dybcio 	clk_lucid_pll_configure(&gpll10, regmap, &gpll10_config);
3894184fdd87SKonrad Dybcio 	clk_lucid_pll_configure(&gpll11, regmap, &gpll11_config);
3895184fdd87SKonrad Dybcio 	clk_lucid_pll_configure(&gpll8, regmap, &gpll8_config);
3896184fdd87SKonrad Dybcio 	clk_zonda_pll_configure(&gpll9, regmap, &gpll9_config);
3897184fdd87SKonrad Dybcio 
3898184fdd87SKonrad Dybcio 	return qcom_cc_really_probe(pdev, &gcc_sm6375_desc, regmap);
3899184fdd87SKonrad Dybcio }
3900184fdd87SKonrad Dybcio 
3901184fdd87SKonrad Dybcio static struct platform_driver gcc_sm6375_driver = {
3902184fdd87SKonrad Dybcio 	.probe = gcc_sm6375_probe,
3903184fdd87SKonrad Dybcio 	.driver = {
3904184fdd87SKonrad Dybcio 		.name = "gcc-sm6375",
3905184fdd87SKonrad Dybcio 		.of_match_table = gcc_sm6375_match_table,
3906184fdd87SKonrad Dybcio 	},
3907184fdd87SKonrad Dybcio };
3908184fdd87SKonrad Dybcio 
gcc_sm6375_init(void)3909184fdd87SKonrad Dybcio static int __init gcc_sm6375_init(void)
3910184fdd87SKonrad Dybcio {
3911184fdd87SKonrad Dybcio 	return platform_driver_register(&gcc_sm6375_driver);
3912184fdd87SKonrad Dybcio }
3913184fdd87SKonrad Dybcio subsys_initcall(gcc_sm6375_init);
3914184fdd87SKonrad Dybcio 
gcc_sm6375_exit(void)3915184fdd87SKonrad Dybcio static void __exit gcc_sm6375_exit(void)
3916184fdd87SKonrad Dybcio {
3917184fdd87SKonrad Dybcio 	platform_driver_unregister(&gcc_sm6375_driver);
3918184fdd87SKonrad Dybcio }
3919184fdd87SKonrad Dybcio module_exit(gcc_sm6375_exit);
3920184fdd87SKonrad Dybcio 
3921184fdd87SKonrad Dybcio MODULE_DESCRIPTION("QTI GCC SM6375 Driver");
3922184fdd87SKonrad Dybcio MODULE_LICENSE("GPL");
3923