xref: /openbmc/linux/drivers/clk/qcom/gcc-sm6115.c (revision a96cbb14)
1cbe63bfdSIskren Chernev // SPDX-License-Identifier: GPL-2.0-only
2cbe63bfdSIskren Chernev /*
3cbe63bfdSIskren Chernev  * Copyright (c) 2019-2021, The Linux Foundation. All rights reserved.
4cbe63bfdSIskren Chernev  */
5cbe63bfdSIskren Chernev 
6cbe63bfdSIskren Chernev #include <linux/err.h>
7cbe63bfdSIskren Chernev #include <linux/kernel.h>
8cbe63bfdSIskren Chernev #include <linux/module.h>
9*a96cbb14SRob Herring #include <linux/of.h>
10*a96cbb14SRob Herring #include <linux/platform_device.h>
11cbe63bfdSIskren Chernev #include <linux/clk-provider.h>
12cbe63bfdSIskren Chernev #include <linux/regmap.h>
13cbe63bfdSIskren Chernev #include <linux/reset-controller.h>
14cbe63bfdSIskren Chernev 
15cbe63bfdSIskren Chernev #include <dt-bindings/clock/qcom,gcc-sm6115.h>
16cbe63bfdSIskren Chernev 
17cbe63bfdSIskren Chernev #include "clk-alpha-pll.h"
18cbe63bfdSIskren Chernev #include "clk-branch.h"
19cbe63bfdSIskren Chernev #include "clk-pll.h"
20cbe63bfdSIskren Chernev #include "clk-rcg.h"
21cbe63bfdSIskren Chernev #include "clk-regmap.h"
22cbe63bfdSIskren Chernev #include "clk-regmap-divider.h"
23cbe63bfdSIskren Chernev #include "common.h"
24cbe63bfdSIskren Chernev #include "gdsc.h"
25cbe63bfdSIskren Chernev #include "reset.h"
26cbe63bfdSIskren Chernev 
27cbe63bfdSIskren Chernev enum {
28cbe63bfdSIskren Chernev 	P_BI_TCXO,
29cbe63bfdSIskren Chernev 	P_GPLL0_OUT_AUX2,
30cbe63bfdSIskren Chernev 	P_GPLL0_OUT_EARLY,
31cbe63bfdSIskren Chernev 	P_GPLL10_OUT_MAIN,
32cbe63bfdSIskren Chernev 	P_GPLL11_OUT_MAIN,
33cbe63bfdSIskren Chernev 	P_GPLL3_OUT_EARLY,
34cbe63bfdSIskren Chernev 	P_GPLL4_OUT_MAIN,
35cbe63bfdSIskren Chernev 	P_GPLL6_OUT_EARLY,
36cbe63bfdSIskren Chernev 	P_GPLL6_OUT_MAIN,
37cbe63bfdSIskren Chernev 	P_GPLL7_OUT_MAIN,
38cbe63bfdSIskren Chernev 	P_GPLL8_OUT_EARLY,
39cbe63bfdSIskren Chernev 	P_GPLL8_OUT_MAIN,
40cbe63bfdSIskren Chernev 	P_GPLL9_OUT_EARLY,
41cbe63bfdSIskren Chernev 	P_GPLL9_OUT_MAIN,
42cbe63bfdSIskren Chernev 	P_SLEEP_CLK,
43cbe63bfdSIskren Chernev };
44cbe63bfdSIskren Chernev 
45cbe63bfdSIskren Chernev static struct pll_vco default_vco[] = {
46cbe63bfdSIskren Chernev 	{ 500000000, 1000000000, 2 },
47cbe63bfdSIskren Chernev };
48cbe63bfdSIskren Chernev 
49cbe63bfdSIskren Chernev static struct pll_vco gpll9_vco[] = {
50cbe63bfdSIskren Chernev 	{ 500000000, 1250000000, 0 },
51cbe63bfdSIskren Chernev };
52cbe63bfdSIskren Chernev 
53cbe63bfdSIskren Chernev static struct pll_vco gpll10_vco[] = {
54cbe63bfdSIskren Chernev 	{ 750000000, 1500000000, 1 },
55cbe63bfdSIskren Chernev };
56cbe63bfdSIskren Chernev 
57cbe63bfdSIskren Chernev static struct clk_alpha_pll gpll0 = {
58cbe63bfdSIskren Chernev 	.offset = 0x0,
59cbe63bfdSIskren Chernev 	.vco_table = default_vco,
60cbe63bfdSIskren Chernev 	.num_vco = ARRAY_SIZE(default_vco),
619e48f051SIskren Chernev 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO],
62cbe63bfdSIskren Chernev 	.clkr = {
63cbe63bfdSIskren Chernev 		.enable_reg = 0x79000,
64cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
65cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
66cbe63bfdSIskren Chernev 			.name = "gpll0",
67cbe63bfdSIskren Chernev 			.parent_data = &(const struct clk_parent_data){
68cbe63bfdSIskren Chernev 				.fw_name = "bi_tcxo",
69cbe63bfdSIskren Chernev 			},
70cbe63bfdSIskren Chernev 			.num_parents = 1,
71cbe63bfdSIskren Chernev 			.ops = &clk_alpha_pll_ops,
72cbe63bfdSIskren Chernev 		},
73cbe63bfdSIskren Chernev 	},
74cbe63bfdSIskren Chernev };
75cbe63bfdSIskren Chernev 
76cbe63bfdSIskren Chernev static const struct clk_div_table post_div_table_gpll0_out_aux2[] = {
77cbe63bfdSIskren Chernev 	{ 0x1, 2 },
78cbe63bfdSIskren Chernev 	{ }
79cbe63bfdSIskren Chernev };
80cbe63bfdSIskren Chernev 
81cbe63bfdSIskren Chernev static struct clk_alpha_pll_postdiv gpll0_out_aux2 = {
82cbe63bfdSIskren Chernev 	.offset = 0x0,
83cbe63bfdSIskren Chernev 	.post_div_shift = 8,
84cbe63bfdSIskren Chernev 	.post_div_table = post_div_table_gpll0_out_aux2,
85cbe63bfdSIskren Chernev 	.num_post_div = ARRAY_SIZE(post_div_table_gpll0_out_aux2),
86cbe63bfdSIskren Chernev 	.width = 4,
879e48f051SIskren Chernev 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO],
88cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
89cbe63bfdSIskren Chernev 		.name = "gpll0_out_aux2",
90cbe63bfdSIskren Chernev 		.parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw },
91cbe63bfdSIskren Chernev 		.num_parents = 1,
92cbe63bfdSIskren Chernev 		.ops = &clk_alpha_pll_postdiv_ro_ops,
93cbe63bfdSIskren Chernev 	},
94cbe63bfdSIskren Chernev };
95cbe63bfdSIskren Chernev 
96cbe63bfdSIskren Chernev static const struct clk_div_table post_div_table_gpll0_out_main[] = {
97cbe63bfdSIskren Chernev 	{ 0x0, 1 },
98cbe63bfdSIskren Chernev 	{ }
99cbe63bfdSIskren Chernev };
100cbe63bfdSIskren Chernev 
101cbe63bfdSIskren Chernev static struct clk_alpha_pll_postdiv gpll0_out_main = {
102cbe63bfdSIskren Chernev 	.offset = 0x0,
103cbe63bfdSIskren Chernev 	.post_div_shift = 8,
104cbe63bfdSIskren Chernev 	.post_div_table = post_div_table_gpll0_out_main,
105cbe63bfdSIskren Chernev 	.num_post_div = ARRAY_SIZE(post_div_table_gpll0_out_main),
106cbe63bfdSIskren Chernev 	.width = 4,
1079e48f051SIskren Chernev 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO],
108cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
109cbe63bfdSIskren Chernev 		.name = "gpll0_out_main",
110cbe63bfdSIskren Chernev 		.parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw },
111cbe63bfdSIskren Chernev 		.num_parents = 1,
112cbe63bfdSIskren Chernev 		.ops = &clk_alpha_pll_postdiv_ro_ops,
113cbe63bfdSIskren Chernev 	},
114cbe63bfdSIskren Chernev };
115cbe63bfdSIskren Chernev 
116cbe63bfdSIskren Chernev /* 1152MHz configuration */
117cbe63bfdSIskren Chernev static const struct alpha_pll_config gpll10_config = {
118cbe63bfdSIskren Chernev 	.l = 0x3c,
119cbe63bfdSIskren Chernev 	.vco_val = 0x1 << 20,
120cbe63bfdSIskren Chernev 	.vco_mask = GENMASK(21, 20),
121cbe63bfdSIskren Chernev 	.main_output_mask = BIT(0),
122cbe63bfdSIskren Chernev 	.config_ctl_val = 0x4001055b,
123e88c533dSKonrad Dybcio 	.test_ctl_hi1_val = 0x1,
124e88c533dSKonrad Dybcio 	.test_ctl_hi_mask = 0x1,
125cbe63bfdSIskren Chernev };
126cbe63bfdSIskren Chernev 
127cbe63bfdSIskren Chernev static struct clk_alpha_pll gpll10 = {
128cbe63bfdSIskren Chernev 	.offset = 0xa000,
129cbe63bfdSIskren Chernev 	.vco_table = gpll10_vco,
130cbe63bfdSIskren Chernev 	.num_vco = ARRAY_SIZE(gpll10_vco),
1319e48f051SIskren Chernev 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO],
132cbe63bfdSIskren Chernev 	.clkr = {
133cbe63bfdSIskren Chernev 		.enable_reg = 0x79000,
134cbe63bfdSIskren Chernev 		.enable_mask = BIT(10),
135cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
136cbe63bfdSIskren Chernev 			.name = "gpll10",
137cbe63bfdSIskren Chernev 			.parent_data = &(const struct clk_parent_data){
138cbe63bfdSIskren Chernev 				.fw_name = "bi_tcxo",
139cbe63bfdSIskren Chernev 			},
140cbe63bfdSIskren Chernev 			.num_parents = 1,
141cbe63bfdSIskren Chernev 			.ops = &clk_alpha_pll_ops,
142cbe63bfdSIskren Chernev 		},
143cbe63bfdSIskren Chernev 	},
144cbe63bfdSIskren Chernev };
145cbe63bfdSIskren Chernev 
146cbe63bfdSIskren Chernev static const struct clk_div_table post_div_table_gpll10_out_main[] = {
147cbe63bfdSIskren Chernev 	{ 0x0, 1 },
148cbe63bfdSIskren Chernev 	{ }
149cbe63bfdSIskren Chernev };
150cbe63bfdSIskren Chernev 
151cbe63bfdSIskren Chernev static struct clk_alpha_pll_postdiv gpll10_out_main = {
152cbe63bfdSIskren Chernev 	.offset = 0xa000,
153cbe63bfdSIskren Chernev 	.post_div_shift = 8,
154cbe63bfdSIskren Chernev 	.post_div_table = post_div_table_gpll10_out_main,
155cbe63bfdSIskren Chernev 	.num_post_div = ARRAY_SIZE(post_div_table_gpll10_out_main),
156cbe63bfdSIskren Chernev 	.width = 4,
1579e48f051SIskren Chernev 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO],
158cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
159cbe63bfdSIskren Chernev 		.name = "gpll10_out_main",
160cbe63bfdSIskren Chernev 		.parent_hws = (const struct clk_hw *[]){ &gpll10.clkr.hw },
161cbe63bfdSIskren Chernev 		.num_parents = 1,
162cbe63bfdSIskren Chernev 		.flags = CLK_SET_RATE_PARENT,
163cbe63bfdSIskren Chernev 		.ops = &clk_alpha_pll_postdiv_ops,
164cbe63bfdSIskren Chernev 	},
165cbe63bfdSIskren Chernev };
166cbe63bfdSIskren Chernev 
167cbe63bfdSIskren Chernev /* 600MHz configuration */
168cbe63bfdSIskren Chernev static const struct alpha_pll_config gpll11_config = {
169cbe63bfdSIskren Chernev 	.l = 0x1F,
170cbe63bfdSIskren Chernev 	.alpha = 0x0,
171cbe63bfdSIskren Chernev 	.alpha_hi = 0x40,
172cbe63bfdSIskren Chernev 	.alpha_en_mask = BIT(24),
173cbe63bfdSIskren Chernev 	.vco_val = 0x2 << 20,
174cbe63bfdSIskren Chernev 	.vco_mask = GENMASK(21, 20),
175cbe63bfdSIskren Chernev 	.config_ctl_val = 0x4001055b,
176e88c533dSKonrad Dybcio 	.test_ctl_hi1_val = 0x1,
177e88c533dSKonrad Dybcio 	.test_ctl_hi_mask = 0x1,
178cbe63bfdSIskren Chernev };
179cbe63bfdSIskren Chernev 
180cbe63bfdSIskren Chernev static struct clk_alpha_pll gpll11 = {
181cbe63bfdSIskren Chernev 	.offset = 0xb000,
182cbe63bfdSIskren Chernev 	.vco_table = default_vco,
183cbe63bfdSIskren Chernev 	.num_vco = ARRAY_SIZE(default_vco),
184cbe63bfdSIskren Chernev 	.flags = SUPPORTS_DYNAMIC_UPDATE,
1859e48f051SIskren Chernev 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO],
186cbe63bfdSIskren Chernev 	.clkr = {
187cbe63bfdSIskren Chernev 		.enable_reg = 0x79000,
188cbe63bfdSIskren Chernev 		.enable_mask = BIT(11),
189cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
190cbe63bfdSIskren Chernev 			.name = "gpll11",
191cbe63bfdSIskren Chernev 			.parent_data = &(const struct clk_parent_data){
192cbe63bfdSIskren Chernev 				.fw_name = "bi_tcxo",
193cbe63bfdSIskren Chernev 			},
194cbe63bfdSIskren Chernev 			.num_parents = 1,
195cbe63bfdSIskren Chernev 			.ops = &clk_alpha_pll_ops,
196cbe63bfdSIskren Chernev 		},
197cbe63bfdSIskren Chernev 	},
198cbe63bfdSIskren Chernev };
199cbe63bfdSIskren Chernev 
200cbe63bfdSIskren Chernev static const struct clk_div_table post_div_table_gpll11_out_main[] = {
201cbe63bfdSIskren Chernev 	{ 0x0, 1 },
202cbe63bfdSIskren Chernev 	{ }
203cbe63bfdSIskren Chernev };
204cbe63bfdSIskren Chernev 
205cbe63bfdSIskren Chernev static struct clk_alpha_pll_postdiv gpll11_out_main = {
206cbe63bfdSIskren Chernev 	.offset = 0xb000,
207cbe63bfdSIskren Chernev 	.post_div_shift = 8,
208cbe63bfdSIskren Chernev 	.post_div_table = post_div_table_gpll11_out_main,
209cbe63bfdSIskren Chernev 	.num_post_div = ARRAY_SIZE(post_div_table_gpll11_out_main),
210cbe63bfdSIskren Chernev 	.width = 4,
2119e48f051SIskren Chernev 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO],
212cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
213cbe63bfdSIskren Chernev 		.name = "gpll11_out_main",
214cbe63bfdSIskren Chernev 		.parent_hws = (const struct clk_hw *[]){ &gpll11.clkr.hw },
215cbe63bfdSIskren Chernev 		.num_parents = 1,
216cbe63bfdSIskren Chernev 		.flags = CLK_SET_RATE_PARENT,
217cbe63bfdSIskren Chernev 		.ops = &clk_alpha_pll_postdiv_ops,
218cbe63bfdSIskren Chernev 	},
219cbe63bfdSIskren Chernev };
220cbe63bfdSIskren Chernev 
221cbe63bfdSIskren Chernev static struct clk_alpha_pll gpll3 = {
222cbe63bfdSIskren Chernev 	.offset = 0x3000,
223cbe63bfdSIskren Chernev 	.vco_table = default_vco,
224cbe63bfdSIskren Chernev 	.num_vco = ARRAY_SIZE(default_vco),
2259e48f051SIskren Chernev 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO],
226cbe63bfdSIskren Chernev 	.clkr = {
227cbe63bfdSIskren Chernev 		.enable_reg = 0x79000,
228cbe63bfdSIskren Chernev 		.enable_mask = BIT(3),
229cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
230cbe63bfdSIskren Chernev 			.name = "gpll3",
231cbe63bfdSIskren Chernev 			.parent_data = &(const struct clk_parent_data){
232cbe63bfdSIskren Chernev 				.fw_name = "bi_tcxo",
233cbe63bfdSIskren Chernev 			},
234cbe63bfdSIskren Chernev 			.num_parents = 1,
235cbe63bfdSIskren Chernev 			.ops = &clk_alpha_pll_ops,
236cbe63bfdSIskren Chernev 		},
237cbe63bfdSIskren Chernev 	},
238cbe63bfdSIskren Chernev };
239cbe63bfdSIskren Chernev 
240cbe63bfdSIskren Chernev static struct clk_alpha_pll gpll4 = {
241cbe63bfdSIskren Chernev 	.offset = 0x4000,
242cbe63bfdSIskren Chernev 	.vco_table = default_vco,
243cbe63bfdSIskren Chernev 	.num_vco = ARRAY_SIZE(default_vco),
2449e48f051SIskren Chernev 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO],
245cbe63bfdSIskren Chernev 	.clkr = {
246cbe63bfdSIskren Chernev 		.enable_reg = 0x79000,
247cbe63bfdSIskren Chernev 		.enable_mask = BIT(4),
248cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
249cbe63bfdSIskren Chernev 			.name = "gpll4",
250cbe63bfdSIskren Chernev 			.parent_data = &(const struct clk_parent_data){
251cbe63bfdSIskren Chernev 				.fw_name = "bi_tcxo",
252cbe63bfdSIskren Chernev 			},
253cbe63bfdSIskren Chernev 			.num_parents = 1,
254cbe63bfdSIskren Chernev 			.ops = &clk_alpha_pll_ops,
255cbe63bfdSIskren Chernev 		},
256cbe63bfdSIskren Chernev 	},
257cbe63bfdSIskren Chernev };
258cbe63bfdSIskren Chernev 
259cbe63bfdSIskren Chernev static const struct clk_div_table post_div_table_gpll4_out_main[] = {
260cbe63bfdSIskren Chernev 	{ 0x0, 1 },
261cbe63bfdSIskren Chernev 	{ }
262cbe63bfdSIskren Chernev };
263cbe63bfdSIskren Chernev 
264cbe63bfdSIskren Chernev static struct clk_alpha_pll_postdiv gpll4_out_main = {
265cbe63bfdSIskren Chernev 	.offset = 0x4000,
266cbe63bfdSIskren Chernev 	.post_div_shift = 8,
267cbe63bfdSIskren Chernev 	.post_div_table = post_div_table_gpll4_out_main,
268cbe63bfdSIskren Chernev 	.num_post_div = ARRAY_SIZE(post_div_table_gpll4_out_main),
269cbe63bfdSIskren Chernev 	.width = 4,
2709e48f051SIskren Chernev 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO],
271cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
272cbe63bfdSIskren Chernev 		.name = "gpll4_out_main",
273cbe63bfdSIskren Chernev 		.parent_hws = (const struct clk_hw *[]){ &gpll4.clkr.hw },
274cbe63bfdSIskren Chernev 		.num_parents = 1,
275cbe63bfdSIskren Chernev 		.ops = &clk_alpha_pll_postdiv_ro_ops,
276cbe63bfdSIskren Chernev 	},
277cbe63bfdSIskren Chernev };
278cbe63bfdSIskren Chernev 
279cbe63bfdSIskren Chernev static struct clk_alpha_pll gpll6 = {
280cbe63bfdSIskren Chernev 	.offset = 0x6000,
281cbe63bfdSIskren Chernev 	.vco_table = default_vco,
282cbe63bfdSIskren Chernev 	.num_vco = ARRAY_SIZE(default_vco),
2839e48f051SIskren Chernev 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO],
284cbe63bfdSIskren Chernev 	.clkr = {
285cbe63bfdSIskren Chernev 		.enable_reg = 0x79000,
286cbe63bfdSIskren Chernev 		.enable_mask = BIT(6),
287cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
288cbe63bfdSIskren Chernev 			.name = "gpll6",
289cbe63bfdSIskren Chernev 			.parent_data = &(const struct clk_parent_data){
290cbe63bfdSIskren Chernev 				.fw_name = "bi_tcxo",
291cbe63bfdSIskren Chernev 			},
292cbe63bfdSIskren Chernev 			.num_parents = 1,
293cbe63bfdSIskren Chernev 			.ops = &clk_alpha_pll_ops,
294cbe63bfdSIskren Chernev 		},
295cbe63bfdSIskren Chernev 	},
296cbe63bfdSIskren Chernev };
297cbe63bfdSIskren Chernev 
298cbe63bfdSIskren Chernev static const struct clk_div_table post_div_table_gpll6_out_main[] = {
299cbe63bfdSIskren Chernev 	{ 0x1, 2 },
300cbe63bfdSIskren Chernev 	{ }
301cbe63bfdSIskren Chernev };
302cbe63bfdSIskren Chernev 
303cbe63bfdSIskren Chernev static struct clk_alpha_pll_postdiv gpll6_out_main = {
304cbe63bfdSIskren Chernev 	.offset = 0x6000,
305cbe63bfdSIskren Chernev 	.post_div_shift = 8,
306cbe63bfdSIskren Chernev 	.post_div_table = post_div_table_gpll6_out_main,
307cbe63bfdSIskren Chernev 	.num_post_div = ARRAY_SIZE(post_div_table_gpll6_out_main),
308cbe63bfdSIskren Chernev 	.width = 4,
3099e48f051SIskren Chernev 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO],
310cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
311cbe63bfdSIskren Chernev 		.name = "gpll6_out_main",
312cbe63bfdSIskren Chernev 		.parent_hws = (const struct clk_hw *[]){ &gpll6.clkr.hw },
313cbe63bfdSIskren Chernev 		.num_parents = 1,
314cbe63bfdSIskren Chernev 		.ops = &clk_alpha_pll_postdiv_ro_ops,
315cbe63bfdSIskren Chernev 	},
316cbe63bfdSIskren Chernev };
317cbe63bfdSIskren Chernev 
318cbe63bfdSIskren Chernev static struct clk_alpha_pll gpll7 = {
319cbe63bfdSIskren Chernev 	.offset = 0x7000,
320cbe63bfdSIskren Chernev 	.vco_table = default_vco,
321cbe63bfdSIskren Chernev 	.num_vco = ARRAY_SIZE(default_vco),
3229e48f051SIskren Chernev 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO],
323cbe63bfdSIskren Chernev 	.clkr = {
324cbe63bfdSIskren Chernev 		.enable_reg = 0x79000,
325cbe63bfdSIskren Chernev 		.enable_mask = BIT(7),
326cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
327cbe63bfdSIskren Chernev 			.name = "gpll7",
328cbe63bfdSIskren Chernev 			.parent_data = &(const struct clk_parent_data){
329cbe63bfdSIskren Chernev 				.fw_name = "bi_tcxo",
330cbe63bfdSIskren Chernev 			},
331cbe63bfdSIskren Chernev 			.num_parents = 1,
332cbe63bfdSIskren Chernev 			.ops = &clk_alpha_pll_ops,
333cbe63bfdSIskren Chernev 		},
334cbe63bfdSIskren Chernev 	},
335cbe63bfdSIskren Chernev };
336cbe63bfdSIskren Chernev 
337cbe63bfdSIskren Chernev static const struct clk_div_table post_div_table_gpll7_out_main[] = {
338cbe63bfdSIskren Chernev 	{ 0x0, 1 },
339cbe63bfdSIskren Chernev 	{ }
340cbe63bfdSIskren Chernev };
341cbe63bfdSIskren Chernev 
342cbe63bfdSIskren Chernev static struct clk_alpha_pll_postdiv gpll7_out_main = {
343cbe63bfdSIskren Chernev 	.offset = 0x7000,
344cbe63bfdSIskren Chernev 	.post_div_shift = 8,
345cbe63bfdSIskren Chernev 	.post_div_table = post_div_table_gpll7_out_main,
346cbe63bfdSIskren Chernev 	.num_post_div = ARRAY_SIZE(post_div_table_gpll7_out_main),
347cbe63bfdSIskren Chernev 	.width = 4,
3489e48f051SIskren Chernev 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO],
349cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
350cbe63bfdSIskren Chernev 		.name = "gpll7_out_main",
351cbe63bfdSIskren Chernev 		.parent_hws = (const struct clk_hw *[]){ &gpll7.clkr.hw },
352cbe63bfdSIskren Chernev 		.num_parents = 1,
353cbe63bfdSIskren Chernev 		.ops = &clk_alpha_pll_postdiv_ro_ops,
354cbe63bfdSIskren Chernev 	},
355cbe63bfdSIskren Chernev };
356cbe63bfdSIskren Chernev 
357cbe63bfdSIskren Chernev /* 800MHz configuration */
358cbe63bfdSIskren Chernev static const struct alpha_pll_config gpll8_config = {
359cbe63bfdSIskren Chernev 	.l = 0x29,
360cbe63bfdSIskren Chernev 	.alpha = 0xAAAAAAAA,
361cbe63bfdSIskren Chernev 	.alpha_hi = 0xAA,
362cbe63bfdSIskren Chernev 	.alpha_en_mask = BIT(24),
363cbe63bfdSIskren Chernev 	.vco_val = 0x2 << 20,
364cbe63bfdSIskren Chernev 	.vco_mask = GENMASK(21, 20),
365cbe63bfdSIskren Chernev 	.main_output_mask = BIT(0),
366cbe63bfdSIskren Chernev 	.early_output_mask = BIT(3),
367cbe63bfdSIskren Chernev 	.post_div_val = 0x1 << 8,
368cbe63bfdSIskren Chernev 	.post_div_mask = GENMASK(11, 8),
369cbe63bfdSIskren Chernev 	.config_ctl_val = 0x4001055b,
370e88c533dSKonrad Dybcio 	.test_ctl_hi1_val = 0x1,
371e88c533dSKonrad Dybcio 	.test_ctl_hi_mask = 0x1,
372cbe63bfdSIskren Chernev };
373cbe63bfdSIskren Chernev 
374cbe63bfdSIskren Chernev static struct clk_alpha_pll gpll8 = {
375cbe63bfdSIskren Chernev 	.offset = 0x8000,
376cbe63bfdSIskren Chernev 	.vco_table = default_vco,
377cbe63bfdSIskren Chernev 	.num_vco = ARRAY_SIZE(default_vco),
3789e48f051SIskren Chernev 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO],
379cbe63bfdSIskren Chernev 	.flags = SUPPORTS_DYNAMIC_UPDATE,
380cbe63bfdSIskren Chernev 	.clkr = {
381cbe63bfdSIskren Chernev 		.enable_reg = 0x79000,
382cbe63bfdSIskren Chernev 		.enable_mask = BIT(8),
383cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
384cbe63bfdSIskren Chernev 			.name = "gpll8",
385cbe63bfdSIskren Chernev 			.parent_data = &(const struct clk_parent_data){
386cbe63bfdSIskren Chernev 				.fw_name = "bi_tcxo",
387cbe63bfdSIskren Chernev 			},
388cbe63bfdSIskren Chernev 			.num_parents = 1,
389cbe63bfdSIskren Chernev 			.ops = &clk_alpha_pll_ops,
390cbe63bfdSIskren Chernev 		},
391cbe63bfdSIskren Chernev 	},
392cbe63bfdSIskren Chernev };
393cbe63bfdSIskren Chernev 
394cbe63bfdSIskren Chernev static const struct clk_div_table post_div_table_gpll8_out_main[] = {
395cbe63bfdSIskren Chernev 	{ 0x1, 2 },
396cbe63bfdSIskren Chernev 	{ }
397cbe63bfdSIskren Chernev };
398cbe63bfdSIskren Chernev 
399cbe63bfdSIskren Chernev static struct clk_alpha_pll_postdiv gpll8_out_main = {
400cbe63bfdSIskren Chernev 	.offset = 0x8000,
401cbe63bfdSIskren Chernev 	.post_div_shift = 8,
402cbe63bfdSIskren Chernev 	.post_div_table = post_div_table_gpll8_out_main,
403cbe63bfdSIskren Chernev 	.num_post_div = ARRAY_SIZE(post_div_table_gpll8_out_main),
404cbe63bfdSIskren Chernev 	.width = 4,
4059e48f051SIskren Chernev 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO],
406cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
407cbe63bfdSIskren Chernev 		.name = "gpll8_out_main",
408cbe63bfdSIskren Chernev 		.parent_hws = (const struct clk_hw *[]){ &gpll8.clkr.hw },
409cbe63bfdSIskren Chernev 		.num_parents = 1,
410cbe63bfdSIskren Chernev 		.flags = CLK_SET_RATE_PARENT,
411cbe63bfdSIskren Chernev 		.ops = &clk_alpha_pll_postdiv_ro_ops,
412cbe63bfdSIskren Chernev 	},
413cbe63bfdSIskren Chernev };
414cbe63bfdSIskren Chernev 
415cbe63bfdSIskren Chernev /* 1152MHz configuration */
416cbe63bfdSIskren Chernev static const struct alpha_pll_config gpll9_config = {
417cbe63bfdSIskren Chernev 	.l = 0x3C,
418cbe63bfdSIskren Chernev 	.alpha = 0x0,
419cbe63bfdSIskren Chernev 	.post_div_val = 0x1 << 8,
420cbe63bfdSIskren Chernev 	.post_div_mask = GENMASK(9, 8),
421cbe63bfdSIskren Chernev 	.main_output_mask = BIT(0),
422cbe63bfdSIskren Chernev 	.config_ctl_val = 0x00004289,
423e88c533dSKonrad Dybcio 	.test_ctl_mask = GENMASK(31, 0),
424e88c533dSKonrad Dybcio 	.test_ctl_val = 0x08000000,
425cbe63bfdSIskren Chernev };
426cbe63bfdSIskren Chernev 
427cbe63bfdSIskren Chernev static struct clk_alpha_pll gpll9 = {
428cbe63bfdSIskren Chernev 	.offset = 0x9000,
429cbe63bfdSIskren Chernev 	.vco_table = gpll9_vco,
430cbe63bfdSIskren Chernev 	.num_vco = ARRAY_SIZE(gpll9_vco),
4319e48f051SIskren Chernev 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_BRAMMO_EVO],
432cbe63bfdSIskren Chernev 	.clkr = {
433cbe63bfdSIskren Chernev 		.enable_reg = 0x79000,
434cbe63bfdSIskren Chernev 		.enable_mask = BIT(9),
435cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
436cbe63bfdSIskren Chernev 			.name = "gpll9",
437cbe63bfdSIskren Chernev 			.parent_data = &(const struct clk_parent_data){
438cbe63bfdSIskren Chernev 				.fw_name = "bi_tcxo",
439cbe63bfdSIskren Chernev 			},
440cbe63bfdSIskren Chernev 			.num_parents = 1,
441cbe63bfdSIskren Chernev 			.ops = &clk_alpha_pll_ops,
442cbe63bfdSIskren Chernev 		},
443cbe63bfdSIskren Chernev 	},
444cbe63bfdSIskren Chernev };
445cbe63bfdSIskren Chernev 
446cbe63bfdSIskren Chernev static const struct clk_div_table post_div_table_gpll9_out_main[] = {
447cbe63bfdSIskren Chernev 	{ 0x1, 2 },
448cbe63bfdSIskren Chernev 	{ }
449cbe63bfdSIskren Chernev };
450cbe63bfdSIskren Chernev 
451cbe63bfdSIskren Chernev static struct clk_alpha_pll_postdiv gpll9_out_main = {
452cbe63bfdSIskren Chernev 	.offset = 0x9000,
453cbe63bfdSIskren Chernev 	.post_div_shift = 8,
454cbe63bfdSIskren Chernev 	.post_div_table = post_div_table_gpll9_out_main,
455cbe63bfdSIskren Chernev 	.num_post_div = ARRAY_SIZE(post_div_table_gpll9_out_main),
456cbe63bfdSIskren Chernev 	.width = 2,
4579e48f051SIskren Chernev 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_BRAMMO_EVO],
458cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
459cbe63bfdSIskren Chernev 		.name = "gpll9_out_main",
460cbe63bfdSIskren Chernev 		.parent_hws = (const struct clk_hw *[]){ &gpll9.clkr.hw },
461cbe63bfdSIskren Chernev 		.num_parents = 1,
462cbe63bfdSIskren Chernev 		.flags = CLK_SET_RATE_PARENT,
463cbe63bfdSIskren Chernev 		.ops = &clk_alpha_pll_postdiv_ops,
464cbe63bfdSIskren Chernev 	},
465cbe63bfdSIskren Chernev };
466cbe63bfdSIskren Chernev 
467cbe63bfdSIskren Chernev static const struct parent_map gcc_parent_map_0[] = {
468cbe63bfdSIskren Chernev 	{ P_BI_TCXO, 0 },
469cbe63bfdSIskren Chernev 	{ P_GPLL0_OUT_EARLY, 1 },
470cbe63bfdSIskren Chernev 	{ P_GPLL0_OUT_AUX2, 2 },
471cbe63bfdSIskren Chernev };
472cbe63bfdSIskren Chernev 
473cbe63bfdSIskren Chernev static const struct clk_parent_data gcc_parents_0[] = {
474cbe63bfdSIskren Chernev 	{ .fw_name = "bi_tcxo" },
475cbe63bfdSIskren Chernev 	{ .hw = &gpll0.clkr.hw },
476cbe63bfdSIskren Chernev 	{ .hw = &gpll0_out_aux2.clkr.hw },
477cbe63bfdSIskren Chernev };
478cbe63bfdSIskren Chernev 
479cbe63bfdSIskren Chernev static const struct parent_map gcc_parent_map_1[] = {
480cbe63bfdSIskren Chernev 	{ P_BI_TCXO, 0 },
481cbe63bfdSIskren Chernev 	{ P_GPLL0_OUT_EARLY, 1 },
482cbe63bfdSIskren Chernev 	{ P_GPLL0_OUT_AUX2, 2 },
483cbe63bfdSIskren Chernev 	{ P_GPLL6_OUT_MAIN, 4 },
484cbe63bfdSIskren Chernev };
485cbe63bfdSIskren Chernev 
486cbe63bfdSIskren Chernev static const struct clk_parent_data gcc_parents_1[] = {
487cbe63bfdSIskren Chernev 	{ .fw_name = "bi_tcxo" },
488cbe63bfdSIskren Chernev 	{ .hw = &gpll0.clkr.hw },
489cbe63bfdSIskren Chernev 	{ .hw = &gpll0_out_aux2.clkr.hw },
490cbe63bfdSIskren Chernev 	{ .hw = &gpll6_out_main.clkr.hw },
491cbe63bfdSIskren Chernev };
492cbe63bfdSIskren Chernev 
493cbe63bfdSIskren Chernev static const struct parent_map gcc_parent_map_2[] = {
494cbe63bfdSIskren Chernev 	{ P_BI_TCXO, 0 },
495cbe63bfdSIskren Chernev 	{ P_GPLL0_OUT_EARLY, 1 },
496cbe63bfdSIskren Chernev 	{ P_GPLL0_OUT_AUX2, 2 },
497cbe63bfdSIskren Chernev 	{ P_SLEEP_CLK, 5 },
498cbe63bfdSIskren Chernev };
499cbe63bfdSIskren Chernev 
500cbe63bfdSIskren Chernev static const struct clk_parent_data gcc_parents_2[] = {
501cbe63bfdSIskren Chernev 	{ .fw_name = "bi_tcxo" },
502cbe63bfdSIskren Chernev 	{ .hw = &gpll0.clkr.hw },
503cbe63bfdSIskren Chernev 	{ .hw = &gpll0_out_aux2.clkr.hw },
504cbe63bfdSIskren Chernev 	{ .fw_name = "sleep_clk" },
505cbe63bfdSIskren Chernev };
506cbe63bfdSIskren Chernev 
507cbe63bfdSIskren Chernev static const struct parent_map gcc_parent_map_3[] = {
508cbe63bfdSIskren Chernev 	{ P_BI_TCXO, 0 },
509cbe63bfdSIskren Chernev 	{ P_GPLL0_OUT_EARLY, 1 },
510cbe63bfdSIskren Chernev 	{ P_GPLL9_OUT_EARLY, 2 },
511cbe63bfdSIskren Chernev 	{ P_GPLL10_OUT_MAIN, 3 },
512cbe63bfdSIskren Chernev 	{ P_GPLL9_OUT_MAIN, 5 },
513cbe63bfdSIskren Chernev };
514cbe63bfdSIskren Chernev 
515cbe63bfdSIskren Chernev static const struct clk_parent_data gcc_parents_3[] = {
516cbe63bfdSIskren Chernev 	{ .fw_name = "bi_tcxo" },
517cbe63bfdSIskren Chernev 	{ .hw = &gpll0.clkr.hw },
518cbe63bfdSIskren Chernev 	{ .hw = &gpll9.clkr.hw },
519cbe63bfdSIskren Chernev 	{ .hw = &gpll10_out_main.clkr.hw },
520cbe63bfdSIskren Chernev 	{ .hw = &gpll9_out_main.clkr.hw },
521cbe63bfdSIskren Chernev };
522cbe63bfdSIskren Chernev 
523cbe63bfdSIskren Chernev static const struct parent_map gcc_parent_map_4[] = {
524cbe63bfdSIskren Chernev 	{ P_BI_TCXO, 0 },
525cbe63bfdSIskren Chernev 	{ P_GPLL0_OUT_EARLY, 1 },
526cbe63bfdSIskren Chernev 	{ P_GPLL0_OUT_AUX2, 2 },
527cbe63bfdSIskren Chernev 	{ P_GPLL4_OUT_MAIN, 5 },
528cbe63bfdSIskren Chernev };
529cbe63bfdSIskren Chernev 
530cbe63bfdSIskren Chernev static const struct clk_parent_data gcc_parents_4[] = {
531cbe63bfdSIskren Chernev 	{ .fw_name = "bi_tcxo" },
532cbe63bfdSIskren Chernev 	{ .hw = &gpll0.clkr.hw },
533cbe63bfdSIskren Chernev 	{ .hw = &gpll0_out_aux2.clkr.hw },
534cbe63bfdSIskren Chernev 	{ .hw = &gpll4_out_main.clkr.hw },
535cbe63bfdSIskren Chernev };
536cbe63bfdSIskren Chernev 
537cbe63bfdSIskren Chernev static const struct parent_map gcc_parent_map_5[] = {
538cbe63bfdSIskren Chernev 	{ P_BI_TCXO, 0 },
539cbe63bfdSIskren Chernev 	{ P_GPLL0_OUT_EARLY, 1 },
540cbe63bfdSIskren Chernev 	{ P_GPLL8_OUT_EARLY, 2 },
541cbe63bfdSIskren Chernev 	{ P_GPLL10_OUT_MAIN, 3 },
542cbe63bfdSIskren Chernev 	{ P_GPLL8_OUT_MAIN, 4 },
543cbe63bfdSIskren Chernev 	{ P_GPLL9_OUT_MAIN, 5 },
544cbe63bfdSIskren Chernev };
545cbe63bfdSIskren Chernev 
546cbe63bfdSIskren Chernev static const struct clk_parent_data gcc_parents_5[] = {
547cbe63bfdSIskren Chernev 	{ .fw_name = "bi_tcxo" },
548cbe63bfdSIskren Chernev 	{ .hw = &gpll0.clkr.hw },
549cbe63bfdSIskren Chernev 	{ .hw = &gpll8.clkr.hw },
550cbe63bfdSIskren Chernev 	{ .hw = &gpll10_out_main.clkr.hw },
551cbe63bfdSIskren Chernev 	{ .hw = &gpll8_out_main.clkr.hw },
552cbe63bfdSIskren Chernev 	{ .hw = &gpll9_out_main.clkr.hw },
553cbe63bfdSIskren Chernev };
554cbe63bfdSIskren Chernev 
555cbe63bfdSIskren Chernev static const struct parent_map gcc_parent_map_6[] = {
556cbe63bfdSIskren Chernev 	{ P_BI_TCXO, 0 },
557cbe63bfdSIskren Chernev 	{ P_GPLL0_OUT_EARLY, 1 },
558cbe63bfdSIskren Chernev 	{ P_GPLL8_OUT_EARLY, 2 },
559cbe63bfdSIskren Chernev 	{ P_GPLL10_OUT_MAIN, 3 },
560cbe63bfdSIskren Chernev 	{ P_GPLL6_OUT_MAIN, 4 },
561cbe63bfdSIskren Chernev 	{ P_GPLL9_OUT_MAIN, 5 },
562cbe63bfdSIskren Chernev 	{ P_GPLL3_OUT_EARLY, 6 },
563cbe63bfdSIskren Chernev };
564cbe63bfdSIskren Chernev 
565cbe63bfdSIskren Chernev static const struct clk_parent_data gcc_parents_6[] = {
566cbe63bfdSIskren Chernev 	{ .fw_name = "bi_tcxo" },
567cbe63bfdSIskren Chernev 	{ .hw = &gpll0.clkr.hw },
568cbe63bfdSIskren Chernev 	{ .hw = &gpll8.clkr.hw },
569cbe63bfdSIskren Chernev 	{ .hw = &gpll10_out_main.clkr.hw },
570cbe63bfdSIskren Chernev 	{ .hw = &gpll6_out_main.clkr.hw },
571cbe63bfdSIskren Chernev 	{ .hw = &gpll9_out_main.clkr.hw },
572cbe63bfdSIskren Chernev 	{ .hw = &gpll3.clkr.hw },
573cbe63bfdSIskren Chernev };
574cbe63bfdSIskren Chernev 
575cbe63bfdSIskren Chernev static const struct parent_map gcc_parent_map_7[] = {
576cbe63bfdSIskren Chernev 	{ P_BI_TCXO, 0 },
577cbe63bfdSIskren Chernev 	{ P_GPLL0_OUT_EARLY, 1 },
578cbe63bfdSIskren Chernev 	{ P_GPLL0_OUT_AUX2, 2 },
579cbe63bfdSIskren Chernev 	{ P_GPLL10_OUT_MAIN, 3 },
580cbe63bfdSIskren Chernev 	{ P_GPLL4_OUT_MAIN, 5 },
581cbe63bfdSIskren Chernev 	{ P_GPLL3_OUT_EARLY, 6 },
582cbe63bfdSIskren Chernev };
583cbe63bfdSIskren Chernev 
584cbe63bfdSIskren Chernev static const struct clk_parent_data gcc_parents_7[] = {
585cbe63bfdSIskren Chernev 	{ .fw_name = "bi_tcxo" },
586cbe63bfdSIskren Chernev 	{ .hw = &gpll0.clkr.hw },
587cbe63bfdSIskren Chernev 	{ .hw = &gpll0_out_aux2.clkr.hw },
588cbe63bfdSIskren Chernev 	{ .hw = &gpll10_out_main.clkr.hw },
589cbe63bfdSIskren Chernev 	{ .hw = &gpll4_out_main.clkr.hw },
590cbe63bfdSIskren Chernev 	{ .hw = &gpll3.clkr.hw },
591cbe63bfdSIskren Chernev };
592cbe63bfdSIskren Chernev 
593cbe63bfdSIskren Chernev static const struct parent_map gcc_parent_map_8[] = {
594cbe63bfdSIskren Chernev 	{ P_BI_TCXO, 0 },
595cbe63bfdSIskren Chernev 	{ P_GPLL0_OUT_EARLY, 1 },
596cbe63bfdSIskren Chernev 	{ P_GPLL8_OUT_EARLY, 2 },
597cbe63bfdSIskren Chernev 	{ P_GPLL10_OUT_MAIN, 3 },
598cbe63bfdSIskren Chernev 	{ P_GPLL8_OUT_MAIN, 4 },
599cbe63bfdSIskren Chernev 	{ P_GPLL9_OUT_MAIN, 5 },
600cbe63bfdSIskren Chernev 	{ P_GPLL3_OUT_EARLY, 6 },
601cbe63bfdSIskren Chernev };
602cbe63bfdSIskren Chernev 
603cbe63bfdSIskren Chernev static const struct clk_parent_data gcc_parents_8[] = {
604cbe63bfdSIskren Chernev 	{ .fw_name = "bi_tcxo" },
605cbe63bfdSIskren Chernev 	{ .hw = &gpll0.clkr.hw },
606cbe63bfdSIskren Chernev 	{ .hw = &gpll8.clkr.hw },
607cbe63bfdSIskren Chernev 	{ .hw = &gpll10_out_main.clkr.hw },
608cbe63bfdSIskren Chernev 	{ .hw = &gpll8_out_main.clkr.hw },
609cbe63bfdSIskren Chernev 	{ .hw = &gpll9_out_main.clkr.hw },
610cbe63bfdSIskren Chernev 	{ .hw = &gpll3.clkr.hw },
611cbe63bfdSIskren Chernev };
612cbe63bfdSIskren Chernev 
613cbe63bfdSIskren Chernev static const struct parent_map gcc_parent_map_9[] = {
614cbe63bfdSIskren Chernev 	{ P_BI_TCXO, 0 },
615cbe63bfdSIskren Chernev 	{ P_GPLL0_OUT_EARLY, 1 },
616cbe63bfdSIskren Chernev 	{ P_GPLL0_OUT_AUX2, 2 },
617cbe63bfdSIskren Chernev 	{ P_GPLL10_OUT_MAIN, 3 },
618cbe63bfdSIskren Chernev 	{ P_GPLL8_OUT_MAIN, 4 },
619cbe63bfdSIskren Chernev 	{ P_GPLL9_OUT_MAIN, 5 },
620cbe63bfdSIskren Chernev 	{ P_GPLL3_OUT_EARLY, 6 },
621cbe63bfdSIskren Chernev };
622cbe63bfdSIskren Chernev 
623cbe63bfdSIskren Chernev static const struct clk_parent_data gcc_parents_9[] = {
624cbe63bfdSIskren Chernev 	{ .fw_name = "bi_tcxo" },
625cbe63bfdSIskren Chernev 	{ .hw = &gpll0.clkr.hw },
626cbe63bfdSIskren Chernev 	{ .hw = &gpll0_out_aux2.clkr.hw },
627cbe63bfdSIskren Chernev 	{ .hw = &gpll10_out_main.clkr.hw },
628cbe63bfdSIskren Chernev 	{ .hw = &gpll8_out_main.clkr.hw },
629cbe63bfdSIskren Chernev 	{ .hw = &gpll9_out_main.clkr.hw },
630cbe63bfdSIskren Chernev 	{ .hw = &gpll3.clkr.hw },
631cbe63bfdSIskren Chernev };
632cbe63bfdSIskren Chernev 
633cbe63bfdSIskren Chernev static const struct parent_map gcc_parent_map_10[] = {
634cbe63bfdSIskren Chernev 	{ P_BI_TCXO, 0 },
635cbe63bfdSIskren Chernev 	{ P_GPLL0_OUT_EARLY, 1 },
636cbe63bfdSIskren Chernev 	{ P_GPLL8_OUT_EARLY, 2 },
637cbe63bfdSIskren Chernev 	{ P_GPLL10_OUT_MAIN, 3 },
638cbe63bfdSIskren Chernev 	{ P_GPLL6_OUT_EARLY, 4 },
639cbe63bfdSIskren Chernev 	{ P_GPLL9_OUT_MAIN, 5 },
640cbe63bfdSIskren Chernev };
641cbe63bfdSIskren Chernev 
642cbe63bfdSIskren Chernev static const struct clk_parent_data gcc_parents_10[] = {
643cbe63bfdSIskren Chernev 	{ .fw_name = "bi_tcxo" },
644cbe63bfdSIskren Chernev 	{ .hw = &gpll0.clkr.hw },
645cbe63bfdSIskren Chernev 	{ .hw = &gpll8.clkr.hw },
646cbe63bfdSIskren Chernev 	{ .hw = &gpll10_out_main.clkr.hw },
647cbe63bfdSIskren Chernev 	{ .hw = &gpll6.clkr.hw },
648cbe63bfdSIskren Chernev 	{ .hw = &gpll9_out_main.clkr.hw },
649cbe63bfdSIskren Chernev };
650cbe63bfdSIskren Chernev 
651cbe63bfdSIskren Chernev static const struct parent_map gcc_parent_map_11[] = {
652cbe63bfdSIskren Chernev 	{ P_BI_TCXO, 0 },
653cbe63bfdSIskren Chernev 	{ P_GPLL0_OUT_EARLY, 1 },
654cbe63bfdSIskren Chernev 	{ P_GPLL0_OUT_AUX2, 2 },
655cbe63bfdSIskren Chernev 	{ P_GPLL7_OUT_MAIN, 3 },
656cbe63bfdSIskren Chernev 	{ P_GPLL4_OUT_MAIN, 5 },
657cbe63bfdSIskren Chernev };
658cbe63bfdSIskren Chernev 
659cbe63bfdSIskren Chernev static const struct clk_parent_data gcc_parents_11[] = {
660cbe63bfdSIskren Chernev 	{ .fw_name = "bi_tcxo" },
661cbe63bfdSIskren Chernev 	{ .hw = &gpll0.clkr.hw },
662cbe63bfdSIskren Chernev 	{ .hw = &gpll0_out_aux2.clkr.hw },
663cbe63bfdSIskren Chernev 	{ .hw = &gpll7_out_main.clkr.hw },
664cbe63bfdSIskren Chernev 	{ .hw = &gpll4_out_main.clkr.hw },
665cbe63bfdSIskren Chernev };
666cbe63bfdSIskren Chernev 
667cbe63bfdSIskren Chernev static const struct parent_map gcc_parent_map_12[] = {
668cbe63bfdSIskren Chernev 	{ P_BI_TCXO, 0 },
669cbe63bfdSIskren Chernev 	{ P_SLEEP_CLK, 5 },
670cbe63bfdSIskren Chernev };
671cbe63bfdSIskren Chernev 
672cbe63bfdSIskren Chernev static const struct clk_parent_data gcc_parents_12[] = {
673cbe63bfdSIskren Chernev 	{ .fw_name = "bi_tcxo" },
674cbe63bfdSIskren Chernev 	{ .fw_name = "sleep_clk" },
675cbe63bfdSIskren Chernev };
676cbe63bfdSIskren Chernev 
677cbe63bfdSIskren Chernev static const struct parent_map gcc_parent_map_13[] = {
678cbe63bfdSIskren Chernev 	{ P_BI_TCXO, 0 },
679cbe63bfdSIskren Chernev 	{ P_GPLL11_OUT_MAIN, 1 },
680cbe63bfdSIskren Chernev };
681cbe63bfdSIskren Chernev 
682cbe63bfdSIskren Chernev static const struct clk_parent_data gcc_parents_13[] = {
683cbe63bfdSIskren Chernev 	{ .fw_name = "bi_tcxo" },
684cbe63bfdSIskren Chernev 	{ .hw = &gpll11_out_main.clkr.hw },
685cbe63bfdSIskren Chernev };
686cbe63bfdSIskren Chernev 
687cbe63bfdSIskren Chernev static const struct freq_tbl ftbl_gcc_camss_axi_clk_src[] = {
688cbe63bfdSIskren Chernev 	F(19200000, P_BI_TCXO, 1, 0, 0),
689cbe63bfdSIskren Chernev 	F(150000000, P_GPLL0_OUT_AUX2, 2, 0, 0),
690cbe63bfdSIskren Chernev 	F(200000000, P_GPLL0_OUT_AUX2, 1.5, 0, 0),
691cbe63bfdSIskren Chernev 	F(300000000, P_GPLL0_OUT_AUX2, 1, 0, 0),
692cbe63bfdSIskren Chernev 	{ }
693cbe63bfdSIskren Chernev };
694cbe63bfdSIskren Chernev 
695cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_camss_axi_clk_src = {
696cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x5802c,
697cbe63bfdSIskren Chernev 	.mnd_width = 0,
698cbe63bfdSIskren Chernev 	.hid_width = 5,
699cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_7,
700cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_camss_axi_clk_src,
701cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
702cbe63bfdSIskren Chernev 		.name = "gcc_camss_axi_clk_src",
703cbe63bfdSIskren Chernev 		.parent_data = gcc_parents_7,
704cbe63bfdSIskren Chernev 		.num_parents = ARRAY_SIZE(gcc_parents_7),
705cbe63bfdSIskren Chernev 		.flags = CLK_SET_RATE_PARENT,
706996c32b7SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
707cbe63bfdSIskren Chernev 	},
708cbe63bfdSIskren Chernev };
709cbe63bfdSIskren Chernev 
710cbe63bfdSIskren Chernev static const struct freq_tbl ftbl_gcc_camss_cci_clk_src[] = {
711cbe63bfdSIskren Chernev 	F(19200000, P_BI_TCXO, 1, 0, 0),
712cbe63bfdSIskren Chernev 	F(37500000, P_GPLL0_OUT_AUX2, 8, 0, 0),
713cbe63bfdSIskren Chernev 	{ }
714cbe63bfdSIskren Chernev };
715cbe63bfdSIskren Chernev 
716cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_camss_cci_clk_src = {
717cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x56000,
718cbe63bfdSIskren Chernev 	.mnd_width = 0,
719cbe63bfdSIskren Chernev 	.hid_width = 5,
720cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_9,
721cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_camss_cci_clk_src,
722cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
723cbe63bfdSIskren Chernev 		.name = "gcc_camss_cci_clk_src",
724cbe63bfdSIskren Chernev 		.parent_data = gcc_parents_9,
725cbe63bfdSIskren Chernev 		.num_parents = ARRAY_SIZE(gcc_parents_9),
726cbe63bfdSIskren Chernev 		.flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE,
727996c32b7SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
728cbe63bfdSIskren Chernev 	},
729cbe63bfdSIskren Chernev };
730cbe63bfdSIskren Chernev 
731cbe63bfdSIskren Chernev static const struct freq_tbl ftbl_gcc_camss_csi0phytimer_clk_src[] = {
732cbe63bfdSIskren Chernev 	F(19200000, P_BI_TCXO, 1, 0, 0),
733cbe63bfdSIskren Chernev 	F(100000000, P_GPLL0_OUT_AUX2, 3, 0, 0),
734cbe63bfdSIskren Chernev 	F(200000000, P_GPLL0_OUT_AUX2, 1.5, 0, 0),
735cbe63bfdSIskren Chernev 	F(268800000, P_GPLL4_OUT_MAIN, 3, 0, 0),
736cbe63bfdSIskren Chernev 	{ }
737cbe63bfdSIskren Chernev };
738cbe63bfdSIskren Chernev 
739cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_camss_csi0phytimer_clk_src = {
740cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x59000,
741cbe63bfdSIskren Chernev 	.mnd_width = 0,
742cbe63bfdSIskren Chernev 	.hid_width = 5,
743cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_4,
744cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_camss_csi0phytimer_clk_src,
745cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
746cbe63bfdSIskren Chernev 		.name = "gcc_camss_csi0phytimer_clk_src",
747cbe63bfdSIskren Chernev 		.parent_data = gcc_parents_4,
748cbe63bfdSIskren Chernev 		.num_parents = ARRAY_SIZE(gcc_parents_4),
749cbe63bfdSIskren Chernev 		.flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE,
750996c32b7SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
751cbe63bfdSIskren Chernev 	},
752cbe63bfdSIskren Chernev };
753cbe63bfdSIskren Chernev 
754cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_camss_csi1phytimer_clk_src = {
755cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x5901c,
756cbe63bfdSIskren Chernev 	.mnd_width = 0,
757cbe63bfdSIskren Chernev 	.hid_width = 5,
758cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_4,
759cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_camss_csi0phytimer_clk_src,
760cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
761cbe63bfdSIskren Chernev 		.name = "gcc_camss_csi1phytimer_clk_src",
762cbe63bfdSIskren Chernev 		.parent_data = gcc_parents_4,
763cbe63bfdSIskren Chernev 		.num_parents = ARRAY_SIZE(gcc_parents_4),
764cbe63bfdSIskren Chernev 		.flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE,
765996c32b7SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
766cbe63bfdSIskren Chernev 	},
767cbe63bfdSIskren Chernev };
768cbe63bfdSIskren Chernev 
769cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_camss_csi2phytimer_clk_src = {
770cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x59038,
771cbe63bfdSIskren Chernev 	.mnd_width = 0,
772cbe63bfdSIskren Chernev 	.hid_width = 5,
773cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_4,
774cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_camss_csi0phytimer_clk_src,
775cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
776cbe63bfdSIskren Chernev 		.name = "gcc_camss_csi2phytimer_clk_src",
777cbe63bfdSIskren Chernev 		.parent_data = gcc_parents_4,
778cbe63bfdSIskren Chernev 		.num_parents = ARRAY_SIZE(gcc_parents_4),
779cbe63bfdSIskren Chernev 		.flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE,
780996c32b7SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
781cbe63bfdSIskren Chernev 	},
782cbe63bfdSIskren Chernev };
783cbe63bfdSIskren Chernev 
784cbe63bfdSIskren Chernev static const struct freq_tbl ftbl_gcc_camss_mclk0_clk_src[] = {
785cbe63bfdSIskren Chernev 	F(19200000, P_BI_TCXO, 1, 0, 0),
786cbe63bfdSIskren Chernev 	F(24000000, P_GPLL9_OUT_MAIN, 1, 1, 24),
787cbe63bfdSIskren Chernev 	F(64000000, P_GPLL9_OUT_MAIN, 1, 1, 9),
788cbe63bfdSIskren Chernev 	{ }
789cbe63bfdSIskren Chernev };
790cbe63bfdSIskren Chernev 
791cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_camss_mclk0_clk_src = {
792cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x51000,
793cbe63bfdSIskren Chernev 	.mnd_width = 8,
794cbe63bfdSIskren Chernev 	.hid_width = 5,
795cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_3,
796cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_camss_mclk0_clk_src,
797cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
798cbe63bfdSIskren Chernev 		.name = "gcc_camss_mclk0_clk_src",
799cbe63bfdSIskren Chernev 		.parent_data = gcc_parents_3,
800cbe63bfdSIskren Chernev 		.num_parents = ARRAY_SIZE(gcc_parents_3),
801cbe63bfdSIskren Chernev 		.flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE,
802996c32b7SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
803cbe63bfdSIskren Chernev 	},
804cbe63bfdSIskren Chernev };
805cbe63bfdSIskren Chernev 
806cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_camss_mclk1_clk_src = {
807cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x5101c,
808cbe63bfdSIskren Chernev 	.mnd_width = 8,
809cbe63bfdSIskren Chernev 	.hid_width = 5,
810cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_3,
811cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_camss_mclk0_clk_src,
812cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
813cbe63bfdSIskren Chernev 		.name = "gcc_camss_mclk1_clk_src",
814cbe63bfdSIskren Chernev 		.parent_data = gcc_parents_3,
815cbe63bfdSIskren Chernev 		.num_parents = ARRAY_SIZE(gcc_parents_3),
816cbe63bfdSIskren Chernev 		.flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE,
817996c32b7SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
818cbe63bfdSIskren Chernev 	},
819cbe63bfdSIskren Chernev };
820cbe63bfdSIskren Chernev 
821cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_camss_mclk2_clk_src = {
822cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x51038,
823cbe63bfdSIskren Chernev 	.mnd_width = 8,
824cbe63bfdSIskren Chernev 	.hid_width = 5,
825cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_3,
826cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_camss_mclk0_clk_src,
827cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
828cbe63bfdSIskren Chernev 		.name = "gcc_camss_mclk2_clk_src",
829cbe63bfdSIskren Chernev 		.parent_data = gcc_parents_3,
830cbe63bfdSIskren Chernev 		.num_parents = ARRAY_SIZE(gcc_parents_3),
831cbe63bfdSIskren Chernev 		.flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE,
832996c32b7SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
833cbe63bfdSIskren Chernev 	},
834cbe63bfdSIskren Chernev };
835cbe63bfdSIskren Chernev 
836cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_camss_mclk3_clk_src = {
837cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x51054,
838cbe63bfdSIskren Chernev 	.mnd_width = 8,
839cbe63bfdSIskren Chernev 	.hid_width = 5,
840cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_3,
841cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_camss_mclk0_clk_src,
842cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
843cbe63bfdSIskren Chernev 		.name = "gcc_camss_mclk3_clk_src",
844cbe63bfdSIskren Chernev 		.parent_data = gcc_parents_3,
845cbe63bfdSIskren Chernev 		.num_parents = ARRAY_SIZE(gcc_parents_3),
846cbe63bfdSIskren Chernev 		.flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE,
847996c32b7SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
848cbe63bfdSIskren Chernev 	},
849cbe63bfdSIskren Chernev };
850cbe63bfdSIskren Chernev 
851cbe63bfdSIskren Chernev static const struct freq_tbl ftbl_gcc_camss_ope_ahb_clk_src[] = {
852cbe63bfdSIskren Chernev 	F(19200000, P_BI_TCXO, 1, 0, 0),
853cbe63bfdSIskren Chernev 	F(171428571, P_GPLL0_OUT_EARLY, 3.5, 0, 0),
854cbe63bfdSIskren Chernev 	F(240000000, P_GPLL0_OUT_EARLY, 2.5, 0, 0),
855cbe63bfdSIskren Chernev 	{ }
856cbe63bfdSIskren Chernev };
857cbe63bfdSIskren Chernev 
858cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_camss_ope_ahb_clk_src = {
859cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x55024,
860cbe63bfdSIskren Chernev 	.mnd_width = 0,
861cbe63bfdSIskren Chernev 	.hid_width = 5,
862cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_8,
863cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_camss_ope_ahb_clk_src,
864cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
865cbe63bfdSIskren Chernev 		.name = "gcc_camss_ope_ahb_clk_src",
866cbe63bfdSIskren Chernev 		.parent_data = gcc_parents_8,
867cbe63bfdSIskren Chernev 		.num_parents = ARRAY_SIZE(gcc_parents_8),
868cbe63bfdSIskren Chernev 		.flags = CLK_SET_RATE_PARENT,
869996c32b7SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
870cbe63bfdSIskren Chernev 	},
871cbe63bfdSIskren Chernev };
872cbe63bfdSIskren Chernev 
873cbe63bfdSIskren Chernev static const struct freq_tbl ftbl_gcc_camss_ope_clk_src[] = {
874cbe63bfdSIskren Chernev 	F(19200000, P_BI_TCXO, 1, 0, 0),
875cbe63bfdSIskren Chernev 	F(200000000, P_GPLL8_OUT_MAIN, 2, 0, 0),
876cbe63bfdSIskren Chernev 	F(266600000, P_GPLL8_OUT_MAIN, 1, 0, 0),
877cbe63bfdSIskren Chernev 	F(465000000, P_GPLL8_OUT_MAIN, 1, 0, 0),
878cbe63bfdSIskren Chernev 	F(576000000, P_GPLL9_OUT_MAIN, 1, 0, 0),
879cbe63bfdSIskren Chernev 	{ }
880cbe63bfdSIskren Chernev };
881cbe63bfdSIskren Chernev 
882cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_camss_ope_clk_src = {
883cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x55004,
884cbe63bfdSIskren Chernev 	.mnd_width = 0,
885cbe63bfdSIskren Chernev 	.hid_width = 5,
886cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_8,
887cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_camss_ope_clk_src,
888cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
889cbe63bfdSIskren Chernev 		.name = "gcc_camss_ope_clk_src",
890cbe63bfdSIskren Chernev 		.parent_data = gcc_parents_8,
891cbe63bfdSIskren Chernev 		.num_parents = ARRAY_SIZE(gcc_parents_8),
892cbe63bfdSIskren Chernev 		.flags = CLK_SET_RATE_PARENT,
893996c32b7SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
894cbe63bfdSIskren Chernev 	},
895cbe63bfdSIskren Chernev };
896cbe63bfdSIskren Chernev 
897cbe63bfdSIskren Chernev static const struct freq_tbl ftbl_gcc_camss_tfe_0_clk_src[] = {
898cbe63bfdSIskren Chernev 	F(19200000, P_BI_TCXO, 1, 0, 0),
899cbe63bfdSIskren Chernev 	F(128000000, P_GPLL10_OUT_MAIN, 9, 0, 0),
900cbe63bfdSIskren Chernev 	F(135529412, P_GPLL10_OUT_MAIN, 8.5, 0, 0),
901cbe63bfdSIskren Chernev 	F(144000000, P_GPLL10_OUT_MAIN, 8, 0, 0),
902cbe63bfdSIskren Chernev 	F(153600000, P_GPLL10_OUT_MAIN, 7.5, 0, 0),
903cbe63bfdSIskren Chernev 	F(164571429, P_GPLL10_OUT_MAIN, 7, 0, 0),
904cbe63bfdSIskren Chernev 	F(177230769, P_GPLL10_OUT_MAIN, 6.5, 0, 0),
905cbe63bfdSIskren Chernev 	F(192000000, P_GPLL10_OUT_MAIN, 6, 0, 0),
906cbe63bfdSIskren Chernev 	F(209454545, P_GPLL10_OUT_MAIN, 5.5, 0, 0),
907cbe63bfdSIskren Chernev 	F(230400000, P_GPLL10_OUT_MAIN, 5, 0, 0),
908cbe63bfdSIskren Chernev 	F(256000000, P_GPLL10_OUT_MAIN, 4.5, 0, 0),
909cbe63bfdSIskren Chernev 	F(288000000, P_GPLL10_OUT_MAIN, 4, 0, 0),
910cbe63bfdSIskren Chernev 	F(329142857, P_GPLL10_OUT_MAIN, 3.5, 0, 0),
911cbe63bfdSIskren Chernev 	F(384000000, P_GPLL10_OUT_MAIN, 3, 0, 0),
912cbe63bfdSIskren Chernev 	F(460800000, P_GPLL10_OUT_MAIN, 2.5, 0, 0),
913cbe63bfdSIskren Chernev 	F(576000000, P_GPLL10_OUT_MAIN, 2, 0, 0),
914cbe63bfdSIskren Chernev 	{ }
915cbe63bfdSIskren Chernev };
916cbe63bfdSIskren Chernev 
917cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_camss_tfe_0_clk_src = {
918cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x52004,
919cbe63bfdSIskren Chernev 	.mnd_width = 8,
920cbe63bfdSIskren Chernev 	.hid_width = 5,
921cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_5,
922cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_camss_tfe_0_clk_src,
923cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
924cbe63bfdSIskren Chernev 		.name = "gcc_camss_tfe_0_clk_src",
925cbe63bfdSIskren Chernev 		.parent_data = gcc_parents_5,
926cbe63bfdSIskren Chernev 		.num_parents = ARRAY_SIZE(gcc_parents_5),
927cbe63bfdSIskren Chernev 		.flags = CLK_SET_RATE_PARENT,
928996c32b7SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
929cbe63bfdSIskren Chernev 	},
930cbe63bfdSIskren Chernev };
931cbe63bfdSIskren Chernev 
932cbe63bfdSIskren Chernev static const struct freq_tbl ftbl_gcc_camss_tfe_0_csid_clk_src[] = {
933cbe63bfdSIskren Chernev 	F(19200000, P_BI_TCXO, 1, 0, 0),
934cbe63bfdSIskren Chernev 	F(120000000, P_GPLL0_OUT_EARLY, 5, 0, 0),
935cbe63bfdSIskren Chernev 	F(192000000, P_GPLL6_OUT_MAIN, 2, 0, 0),
936cbe63bfdSIskren Chernev 	F(240000000, P_GPLL0_OUT_EARLY, 2.5, 0, 0),
937cbe63bfdSIskren Chernev 	F(384000000, P_GPLL6_OUT_MAIN, 1, 0, 0),
938cbe63bfdSIskren Chernev 	F(426400000, P_GPLL3_OUT_EARLY, 2.5, 0, 0),
939cbe63bfdSIskren Chernev 	{ }
940cbe63bfdSIskren Chernev };
941cbe63bfdSIskren Chernev 
942cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_camss_tfe_0_csid_clk_src = {
943cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x52094,
944cbe63bfdSIskren Chernev 	.mnd_width = 0,
945cbe63bfdSIskren Chernev 	.hid_width = 5,
946cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_6,
947cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_camss_tfe_0_csid_clk_src,
948cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
949cbe63bfdSIskren Chernev 		.name = "gcc_camss_tfe_0_csid_clk_src",
950cbe63bfdSIskren Chernev 		.parent_data = gcc_parents_6,
951cbe63bfdSIskren Chernev 		.num_parents = ARRAY_SIZE(gcc_parents_6),
952cbe63bfdSIskren Chernev 		.flags = CLK_SET_RATE_PARENT,
953996c32b7SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
954cbe63bfdSIskren Chernev 	},
955cbe63bfdSIskren Chernev };
956cbe63bfdSIskren Chernev 
957cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_camss_tfe_1_clk_src = {
958cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x52024,
959cbe63bfdSIskren Chernev 	.mnd_width = 8,
960cbe63bfdSIskren Chernev 	.hid_width = 5,
961cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_5,
962cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_camss_tfe_0_clk_src,
963cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
964cbe63bfdSIskren Chernev 		.name = "gcc_camss_tfe_1_clk_src",
965cbe63bfdSIskren Chernev 		.parent_data = gcc_parents_5,
966cbe63bfdSIskren Chernev 		.num_parents = ARRAY_SIZE(gcc_parents_5),
967cbe63bfdSIskren Chernev 		.flags = CLK_SET_RATE_PARENT,
968996c32b7SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
969cbe63bfdSIskren Chernev 	},
970cbe63bfdSIskren Chernev };
971cbe63bfdSIskren Chernev 
972cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_camss_tfe_1_csid_clk_src = {
973cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x520b4,
974cbe63bfdSIskren Chernev 	.mnd_width = 0,
975cbe63bfdSIskren Chernev 	.hid_width = 5,
976cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_6,
977cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_camss_tfe_0_csid_clk_src,
978cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
979cbe63bfdSIskren Chernev 		.name = "gcc_camss_tfe_1_csid_clk_src",
980cbe63bfdSIskren Chernev 		.parent_data = gcc_parents_6,
981cbe63bfdSIskren Chernev 		.num_parents = ARRAY_SIZE(gcc_parents_6),
982cbe63bfdSIskren Chernev 		.flags = CLK_SET_RATE_PARENT,
983996c32b7SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
984cbe63bfdSIskren Chernev 	},
985cbe63bfdSIskren Chernev };
986cbe63bfdSIskren Chernev 
987cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_camss_tfe_2_clk_src = {
988cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x52044,
989cbe63bfdSIskren Chernev 	.mnd_width = 8,
990cbe63bfdSIskren Chernev 	.hid_width = 5,
991cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_5,
992cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_camss_tfe_0_clk_src,
993cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
994cbe63bfdSIskren Chernev 		.name = "gcc_camss_tfe_2_clk_src",
995cbe63bfdSIskren Chernev 		.parent_data = gcc_parents_5,
996cbe63bfdSIskren Chernev 		.num_parents = ARRAY_SIZE(gcc_parents_5),
997cbe63bfdSIskren Chernev 		.flags = CLK_SET_RATE_PARENT,
998996c32b7SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
999cbe63bfdSIskren Chernev 	},
1000cbe63bfdSIskren Chernev };
1001cbe63bfdSIskren Chernev 
1002cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_camss_tfe_2_csid_clk_src = {
1003cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x520d4,
1004cbe63bfdSIskren Chernev 	.mnd_width = 0,
1005cbe63bfdSIskren Chernev 	.hid_width = 5,
1006cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_6,
1007cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_camss_tfe_0_csid_clk_src,
1008cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
1009cbe63bfdSIskren Chernev 		.name = "gcc_camss_tfe_2_csid_clk_src",
1010cbe63bfdSIskren Chernev 		.parent_data = gcc_parents_6,
1011cbe63bfdSIskren Chernev 		.num_parents = ARRAY_SIZE(gcc_parents_6),
1012cbe63bfdSIskren Chernev 		.flags = CLK_SET_RATE_PARENT,
1013996c32b7SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1014cbe63bfdSIskren Chernev 	},
1015cbe63bfdSIskren Chernev };
1016cbe63bfdSIskren Chernev 
1017cbe63bfdSIskren Chernev static const struct freq_tbl ftbl_gcc_camss_tfe_cphy_rx_clk_src[] = {
1018cbe63bfdSIskren Chernev 	F(19200000, P_BI_TCXO, 1, 0, 0),
1019cbe63bfdSIskren Chernev 	F(240000000, P_GPLL0_OUT_EARLY, 2.5, 0, 0),
1020cbe63bfdSIskren Chernev 	F(341333333, P_GPLL6_OUT_EARLY, 1, 4, 9),
1021cbe63bfdSIskren Chernev 	F(384000000, P_GPLL6_OUT_EARLY, 2, 0, 0),
1022cbe63bfdSIskren Chernev 	{ }
1023cbe63bfdSIskren Chernev };
1024cbe63bfdSIskren Chernev 
1025cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_camss_tfe_cphy_rx_clk_src = {
1026cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x52064,
1027cbe63bfdSIskren Chernev 	.mnd_width = 16,
1028cbe63bfdSIskren Chernev 	.hid_width = 5,
1029cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_10,
1030cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_camss_tfe_cphy_rx_clk_src,
1031cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
1032cbe63bfdSIskren Chernev 		.name = "gcc_camss_tfe_cphy_rx_clk_src",
1033cbe63bfdSIskren Chernev 		.parent_data = gcc_parents_10,
1034cbe63bfdSIskren Chernev 		.num_parents = ARRAY_SIZE(gcc_parents_10),
1035cbe63bfdSIskren Chernev 		.flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE,
1036996c32b7SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1037cbe63bfdSIskren Chernev 	},
1038cbe63bfdSIskren Chernev };
1039cbe63bfdSIskren Chernev 
1040cbe63bfdSIskren Chernev static const struct freq_tbl ftbl_gcc_camss_top_ahb_clk_src[] = {
1041cbe63bfdSIskren Chernev 	F(19200000, P_BI_TCXO, 1, 0, 0),
1042cbe63bfdSIskren Chernev 	F(40000000, P_GPLL0_OUT_AUX2, 7.5, 0, 0),
1043cbe63bfdSIskren Chernev 	F(80000000, P_GPLL0_OUT_EARLY, 7.5, 0, 0),
1044cbe63bfdSIskren Chernev 	{ }
1045cbe63bfdSIskren Chernev };
1046cbe63bfdSIskren Chernev 
1047cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_camss_top_ahb_clk_src = {
1048cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x58010,
1049cbe63bfdSIskren Chernev 	.mnd_width = 0,
1050cbe63bfdSIskren Chernev 	.hid_width = 5,
1051cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_7,
1052cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_camss_top_ahb_clk_src,
1053cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
1054cbe63bfdSIskren Chernev 		.name = "gcc_camss_top_ahb_clk_src",
1055cbe63bfdSIskren Chernev 		.parent_data = gcc_parents_7,
1056cbe63bfdSIskren Chernev 		.num_parents = ARRAY_SIZE(gcc_parents_7),
1057cbe63bfdSIskren Chernev 		.flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE,
1058996c32b7SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1059cbe63bfdSIskren Chernev 	},
1060cbe63bfdSIskren Chernev };
1061cbe63bfdSIskren Chernev 
1062cbe63bfdSIskren Chernev static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = {
1063cbe63bfdSIskren Chernev 	F(25000000, P_GPLL0_OUT_AUX2, 12, 0, 0),
1064cbe63bfdSIskren Chernev 	F(50000000, P_GPLL0_OUT_AUX2, 6, 0, 0),
1065cbe63bfdSIskren Chernev 	F(100000000, P_GPLL0_OUT_AUX2, 3, 0, 0),
1066cbe63bfdSIskren Chernev 	F(200000000, P_GPLL0_OUT_AUX2, 1.5, 0, 0),
1067cbe63bfdSIskren Chernev 	{ }
1068cbe63bfdSIskren Chernev };
1069cbe63bfdSIskren Chernev 
1070cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_gp1_clk_src = {
1071cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x4d004,
1072cbe63bfdSIskren Chernev 	.mnd_width = 8,
1073cbe63bfdSIskren Chernev 	.hid_width = 5,
1074cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_2,
1075cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_gp1_clk_src,
1076cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
1077cbe63bfdSIskren Chernev 		.name = "gcc_gp1_clk_src",
1078cbe63bfdSIskren Chernev 		.parent_data = gcc_parents_2,
1079cbe63bfdSIskren Chernev 		.num_parents = ARRAY_SIZE(gcc_parents_2),
1080cbe63bfdSIskren Chernev 		.ops = &clk_rcg2_ops,
1081cbe63bfdSIskren Chernev 	},
1082cbe63bfdSIskren Chernev };
1083cbe63bfdSIskren Chernev 
1084cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_gp2_clk_src = {
1085cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x4e004,
1086cbe63bfdSIskren Chernev 	.mnd_width = 8,
1087cbe63bfdSIskren Chernev 	.hid_width = 5,
1088cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_2,
1089cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_gp1_clk_src,
1090cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
1091cbe63bfdSIskren Chernev 		.name = "gcc_gp2_clk_src",
1092cbe63bfdSIskren Chernev 		.parent_data = gcc_parents_2,
1093cbe63bfdSIskren Chernev 		.num_parents = ARRAY_SIZE(gcc_parents_2),
1094cbe63bfdSIskren Chernev 		.ops = &clk_rcg2_ops,
1095cbe63bfdSIskren Chernev 	},
1096cbe63bfdSIskren Chernev };
1097cbe63bfdSIskren Chernev 
1098cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_gp3_clk_src = {
1099cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x4f004,
1100cbe63bfdSIskren Chernev 	.mnd_width = 8,
1101cbe63bfdSIskren Chernev 	.hid_width = 5,
1102cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_2,
1103cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_gp1_clk_src,
1104cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
1105cbe63bfdSIskren Chernev 		.name = "gcc_gp3_clk_src",
1106cbe63bfdSIskren Chernev 		.parent_data = gcc_parents_2,
1107cbe63bfdSIskren Chernev 		.num_parents = ARRAY_SIZE(gcc_parents_2),
1108cbe63bfdSIskren Chernev 		.ops = &clk_rcg2_ops,
1109cbe63bfdSIskren Chernev 	},
1110cbe63bfdSIskren Chernev };
1111cbe63bfdSIskren Chernev 
1112cbe63bfdSIskren Chernev static const struct freq_tbl ftbl_gcc_pdm2_clk_src[] = {
1113cbe63bfdSIskren Chernev 	F(19200000, P_BI_TCXO, 1, 0, 0),
1114cbe63bfdSIskren Chernev 	F(60000000, P_GPLL0_OUT_AUX2, 5, 0, 0),
1115cbe63bfdSIskren Chernev 	{ }
1116cbe63bfdSIskren Chernev };
1117cbe63bfdSIskren Chernev 
1118cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_pdm2_clk_src = {
1119cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x20010,
1120cbe63bfdSIskren Chernev 	.mnd_width = 0,
1121cbe63bfdSIskren Chernev 	.hid_width = 5,
1122cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_0,
1123cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_pdm2_clk_src,
1124cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
1125cbe63bfdSIskren Chernev 		.name = "gcc_pdm2_clk_src",
1126cbe63bfdSIskren Chernev 		.parent_data = gcc_parents_0,
1127cbe63bfdSIskren Chernev 		.num_parents = ARRAY_SIZE(gcc_parents_0),
1128996c32b7SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1129cbe63bfdSIskren Chernev 	},
1130cbe63bfdSIskren Chernev };
1131cbe63bfdSIskren Chernev 
1132cbe63bfdSIskren Chernev static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s0_clk_src[] = {
1133cbe63bfdSIskren Chernev 	F(7372800, P_GPLL0_OUT_AUX2, 1, 384, 15625),
1134cbe63bfdSIskren Chernev 	F(14745600, P_GPLL0_OUT_AUX2, 1, 768, 15625),
1135cbe63bfdSIskren Chernev 	F(19200000, P_BI_TCXO, 1, 0, 0),
1136cbe63bfdSIskren Chernev 	F(29491200, P_GPLL0_OUT_AUX2, 1, 1536, 15625),
1137cbe63bfdSIskren Chernev 	F(32000000, P_GPLL0_OUT_AUX2, 1, 8, 75),
1138cbe63bfdSIskren Chernev 	F(48000000, P_GPLL0_OUT_AUX2, 1, 4, 25),
1139cbe63bfdSIskren Chernev 	F(64000000, P_GPLL0_OUT_AUX2, 1, 16, 75),
1140cbe63bfdSIskren Chernev 	F(75000000, P_GPLL0_OUT_AUX2, 4, 0, 0),
1141cbe63bfdSIskren Chernev 	F(80000000, P_GPLL0_OUT_AUX2, 1, 4, 15),
1142cbe63bfdSIskren Chernev 	F(96000000, P_GPLL0_OUT_AUX2, 1, 8, 25),
1143cbe63bfdSIskren Chernev 	F(100000000, P_GPLL0_OUT_AUX2, 3, 0, 0),
1144cbe63bfdSIskren Chernev 	F(102400000, P_GPLL0_OUT_AUX2, 1, 128, 375),
1145cbe63bfdSIskren Chernev 	F(112000000, P_GPLL0_OUT_AUX2, 1, 28, 75),
1146cbe63bfdSIskren Chernev 	F(117964800, P_GPLL0_OUT_AUX2, 1, 6144, 15625),
1147cbe63bfdSIskren Chernev 	F(120000000, P_GPLL0_OUT_AUX2, 2.5, 0, 0),
1148cbe63bfdSIskren Chernev 	F(128000000, P_GPLL6_OUT_MAIN, 3, 0, 0),
1149cbe63bfdSIskren Chernev 	{ }
1150cbe63bfdSIskren Chernev };
1151cbe63bfdSIskren Chernev 
1152cbe63bfdSIskren Chernev static struct clk_init_data gcc_qupv3_wrap0_s0_clk_src_init = {
1153cbe63bfdSIskren Chernev 	.name = "gcc_qupv3_wrap0_s0_clk_src",
1154cbe63bfdSIskren Chernev 	.parent_data = gcc_parents_1,
1155cbe63bfdSIskren Chernev 	.num_parents = ARRAY_SIZE(gcc_parents_1),
1156cbe63bfdSIskren Chernev 	.ops = &clk_rcg2_ops,
1157cbe63bfdSIskren Chernev };
1158cbe63bfdSIskren Chernev 
1159cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_qupv3_wrap0_s0_clk_src = {
1160cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x1f148,
1161cbe63bfdSIskren Chernev 	.mnd_width = 16,
1162cbe63bfdSIskren Chernev 	.hid_width = 5,
1163cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_1,
1164cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1165cbe63bfdSIskren Chernev 	.clkr.hw.init = &gcc_qupv3_wrap0_s0_clk_src_init,
1166cbe63bfdSIskren Chernev };
1167cbe63bfdSIskren Chernev 
1168cbe63bfdSIskren Chernev static struct clk_init_data gcc_qupv3_wrap0_s1_clk_src_init = {
1169cbe63bfdSIskren Chernev 	.name = "gcc_qupv3_wrap0_s1_clk_src",
1170cbe63bfdSIskren Chernev 	.parent_data = gcc_parents_1,
1171cbe63bfdSIskren Chernev 	.num_parents = ARRAY_SIZE(gcc_parents_1),
1172cbe63bfdSIskren Chernev 	.ops = &clk_rcg2_ops,
1173cbe63bfdSIskren Chernev };
1174cbe63bfdSIskren Chernev 
1175cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_qupv3_wrap0_s1_clk_src = {
1176cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x1f278,
1177cbe63bfdSIskren Chernev 	.mnd_width = 16,
1178cbe63bfdSIskren Chernev 	.hid_width = 5,
1179cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_1,
1180cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1181cbe63bfdSIskren Chernev 	.clkr.hw.init = &gcc_qupv3_wrap0_s1_clk_src_init,
1182cbe63bfdSIskren Chernev };
1183cbe63bfdSIskren Chernev 
1184cbe63bfdSIskren Chernev static struct clk_init_data gcc_qupv3_wrap0_s2_clk_src_init = {
1185cbe63bfdSIskren Chernev 	.name = "gcc_qupv3_wrap0_s2_clk_src",
1186cbe63bfdSIskren Chernev 	.parent_data = gcc_parents_1,
1187cbe63bfdSIskren Chernev 	.num_parents = ARRAY_SIZE(gcc_parents_1),
1188cbe63bfdSIskren Chernev 	.ops = &clk_rcg2_ops,
1189cbe63bfdSIskren Chernev };
1190cbe63bfdSIskren Chernev 
1191cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_qupv3_wrap0_s2_clk_src = {
1192cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x1f3a8,
1193cbe63bfdSIskren Chernev 	.mnd_width = 16,
1194cbe63bfdSIskren Chernev 	.hid_width = 5,
1195cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_1,
1196cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1197cbe63bfdSIskren Chernev 	.clkr.hw.init = &gcc_qupv3_wrap0_s2_clk_src_init,
1198cbe63bfdSIskren Chernev };
1199cbe63bfdSIskren Chernev 
1200cbe63bfdSIskren Chernev static struct clk_init_data gcc_qupv3_wrap0_s3_clk_src_init = {
1201cbe63bfdSIskren Chernev 	.name = "gcc_qupv3_wrap0_s3_clk_src",
1202cbe63bfdSIskren Chernev 	.parent_data = gcc_parents_1,
1203cbe63bfdSIskren Chernev 	.num_parents = ARRAY_SIZE(gcc_parents_1),
1204cbe63bfdSIskren Chernev 	.ops = &clk_rcg2_ops,
1205cbe63bfdSIskren Chernev };
1206cbe63bfdSIskren Chernev 
1207cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_qupv3_wrap0_s3_clk_src = {
1208cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x1f4d8,
1209cbe63bfdSIskren Chernev 	.mnd_width = 16,
1210cbe63bfdSIskren Chernev 	.hid_width = 5,
1211cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_1,
1212cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1213cbe63bfdSIskren Chernev 	.clkr.hw.init = &gcc_qupv3_wrap0_s3_clk_src_init,
1214cbe63bfdSIskren Chernev };
1215cbe63bfdSIskren Chernev 
1216cbe63bfdSIskren Chernev static struct clk_init_data gcc_qupv3_wrap0_s4_clk_src_init = {
1217cbe63bfdSIskren Chernev 	.name = "gcc_qupv3_wrap0_s4_clk_src",
1218cbe63bfdSIskren Chernev 	.parent_data = gcc_parents_1,
1219cbe63bfdSIskren Chernev 	.num_parents = ARRAY_SIZE(gcc_parents_1),
1220cbe63bfdSIskren Chernev 	.ops = &clk_rcg2_ops,
1221cbe63bfdSIskren Chernev };
1222cbe63bfdSIskren Chernev 
1223cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_qupv3_wrap0_s4_clk_src = {
1224cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x1f608,
1225cbe63bfdSIskren Chernev 	.mnd_width = 16,
1226cbe63bfdSIskren Chernev 	.hid_width = 5,
1227cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_1,
1228cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1229cbe63bfdSIskren Chernev 	.clkr.hw.init = &gcc_qupv3_wrap0_s4_clk_src_init,
1230cbe63bfdSIskren Chernev };
1231cbe63bfdSIskren Chernev 
1232cbe63bfdSIskren Chernev static struct clk_init_data gcc_qupv3_wrap0_s5_clk_src_init = {
1233cbe63bfdSIskren Chernev 	.name = "gcc_qupv3_wrap0_s5_clk_src",
1234cbe63bfdSIskren Chernev 	.parent_data = gcc_parents_1,
1235cbe63bfdSIskren Chernev 	.num_parents = ARRAY_SIZE(gcc_parents_1),
1236cbe63bfdSIskren Chernev 	.ops = &clk_rcg2_ops,
1237cbe63bfdSIskren Chernev };
1238cbe63bfdSIskren Chernev 
1239cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_qupv3_wrap0_s5_clk_src = {
1240cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x1f738,
1241cbe63bfdSIskren Chernev 	.mnd_width = 16,
1242cbe63bfdSIskren Chernev 	.hid_width = 5,
1243cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_1,
1244cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1245cbe63bfdSIskren Chernev 	.clkr.hw.init = &gcc_qupv3_wrap0_s5_clk_src_init,
1246cbe63bfdSIskren Chernev };
1247cbe63bfdSIskren Chernev 
1248cbe63bfdSIskren Chernev static const struct freq_tbl ftbl_gcc_sdcc1_apps_clk_src[] = {
1249cbe63bfdSIskren Chernev 	F(144000, P_BI_TCXO, 16, 3, 25),
1250cbe63bfdSIskren Chernev 	F(400000, P_BI_TCXO, 12, 1, 4),
1251cbe63bfdSIskren Chernev 	F(20000000, P_GPLL0_OUT_AUX2, 5, 1, 3),
1252cbe63bfdSIskren Chernev 	F(25000000, P_GPLL0_OUT_AUX2, 6, 1, 2),
1253cbe63bfdSIskren Chernev 	F(50000000, P_GPLL0_OUT_AUX2, 6, 0, 0),
1254cbe63bfdSIskren Chernev 	F(100000000, P_GPLL0_OUT_AUX2, 3, 0, 0),
1255cbe63bfdSIskren Chernev 	F(192000000, P_GPLL6_OUT_MAIN, 2, 0, 0),
1256cbe63bfdSIskren Chernev 	F(384000000, P_GPLL6_OUT_MAIN, 1, 0, 0),
1257cbe63bfdSIskren Chernev 	{ }
1258cbe63bfdSIskren Chernev };
1259cbe63bfdSIskren Chernev 
1260cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_sdcc1_apps_clk_src = {
1261cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x38028,
1262cbe63bfdSIskren Chernev 	.mnd_width = 8,
1263cbe63bfdSIskren Chernev 	.hid_width = 5,
1264cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_1,
1265cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_sdcc1_apps_clk_src,
1266cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
1267cbe63bfdSIskren Chernev 		.name = "gcc_sdcc1_apps_clk_src",
1268cbe63bfdSIskren Chernev 		.parent_data = gcc_parents_1,
1269cbe63bfdSIskren Chernev 		.num_parents = ARRAY_SIZE(gcc_parents_1),
127085d4e6eaSKonrad Dybcio 		.ops = &clk_rcg2_floor_ops,
1271cbe63bfdSIskren Chernev 	},
1272cbe63bfdSIskren Chernev };
1273cbe63bfdSIskren Chernev 
1274cbe63bfdSIskren Chernev static const struct freq_tbl ftbl_gcc_sdcc1_ice_core_clk_src[] = {
1275cbe63bfdSIskren Chernev 	F(75000000, P_GPLL0_OUT_AUX2, 4, 0, 0),
1276cbe63bfdSIskren Chernev 	F(100000000, P_GPLL0_OUT_AUX2, 3, 0, 0),
1277cbe63bfdSIskren Chernev 	F(150000000, P_GPLL0_OUT_AUX2, 2, 0, 0),
1278cbe63bfdSIskren Chernev 	F(200000000, P_GPLL0_OUT_EARLY, 3, 0, 0),
1279cbe63bfdSIskren Chernev 	F(300000000, P_GPLL0_OUT_AUX2, 1, 0, 0),
1280cbe63bfdSIskren Chernev 	{ }
1281cbe63bfdSIskren Chernev };
1282cbe63bfdSIskren Chernev 
1283cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_sdcc1_ice_core_clk_src = {
1284cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x38010,
1285cbe63bfdSIskren Chernev 	.mnd_width = 0,
1286cbe63bfdSIskren Chernev 	.hid_width = 5,
1287cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_0,
1288cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_sdcc1_ice_core_clk_src,
1289cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
1290cbe63bfdSIskren Chernev 		.name = "gcc_sdcc1_ice_core_clk_src",
1291cbe63bfdSIskren Chernev 		.parent_data = gcc_parents_0,
1292cbe63bfdSIskren Chernev 		.num_parents = ARRAY_SIZE(gcc_parents_0),
1293cbe63bfdSIskren Chernev 		.ops = &clk_rcg2_ops,
1294cbe63bfdSIskren Chernev 	},
1295cbe63bfdSIskren Chernev };
1296cbe63bfdSIskren Chernev 
1297cbe63bfdSIskren Chernev static const struct freq_tbl ftbl_gcc_sdcc2_apps_clk_src[] = {
1298cbe63bfdSIskren Chernev 	F(400000, P_BI_TCXO, 12, 1, 4),
1299cbe63bfdSIskren Chernev 	F(19200000, P_BI_TCXO, 1, 0, 0),
1300cbe63bfdSIskren Chernev 	F(25000000, P_GPLL0_OUT_AUX2, 12, 0, 0),
1301cbe63bfdSIskren Chernev 	F(50000000, P_GPLL0_OUT_AUX2, 6, 0, 0),
1302cbe63bfdSIskren Chernev 	F(100000000, P_GPLL0_OUT_AUX2, 3, 0, 0),
1303cbe63bfdSIskren Chernev 	F(200000000, P_GPLL0_OUT_EARLY, 3, 0, 0),
1304cbe63bfdSIskren Chernev 	{ }
1305cbe63bfdSIskren Chernev };
1306cbe63bfdSIskren Chernev 
1307cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_sdcc2_apps_clk_src = {
1308cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x1e00c,
1309cbe63bfdSIskren Chernev 	.mnd_width = 8,
1310cbe63bfdSIskren Chernev 	.hid_width = 5,
1311cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_11,
1312cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_sdcc2_apps_clk_src,
1313cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
1314cbe63bfdSIskren Chernev 		.name = "gcc_sdcc2_apps_clk_src",
1315cbe63bfdSIskren Chernev 		.parent_data = gcc_parents_11,
1316cbe63bfdSIskren Chernev 		.num_parents = ARRAY_SIZE(gcc_parents_11),
131785d4e6eaSKonrad Dybcio 		.ops = &clk_rcg2_floor_ops,
1318cbe63bfdSIskren Chernev 		.flags = CLK_OPS_PARENT_ENABLE,
1319cbe63bfdSIskren Chernev 	},
1320cbe63bfdSIskren Chernev };
1321cbe63bfdSIskren Chernev 
1322cbe63bfdSIskren Chernev static const struct freq_tbl ftbl_gcc_ufs_phy_axi_clk_src[] = {
1323cbe63bfdSIskren Chernev 	F(25000000, P_GPLL0_OUT_AUX2, 12, 0, 0),
1324cbe63bfdSIskren Chernev 	F(50000000, P_GPLL0_OUT_AUX2, 6, 0, 0),
1325cbe63bfdSIskren Chernev 	F(100000000, P_GPLL0_OUT_AUX2, 3, 0, 0),
1326cbe63bfdSIskren Chernev 	F(200000000, P_GPLL0_OUT_EARLY, 3, 0, 0),
1327cbe63bfdSIskren Chernev 	F(240000000, P_GPLL0_OUT_EARLY, 2.5, 0, 0),
1328cbe63bfdSIskren Chernev 	{ }
1329cbe63bfdSIskren Chernev };
1330cbe63bfdSIskren Chernev 
1331cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_ufs_phy_axi_clk_src = {
1332cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x45020,
1333cbe63bfdSIskren Chernev 	.mnd_width = 8,
1334cbe63bfdSIskren Chernev 	.hid_width = 5,
1335cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_0,
1336cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_ufs_phy_axi_clk_src,
1337cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
1338cbe63bfdSIskren Chernev 		.name = "gcc_ufs_phy_axi_clk_src",
1339cbe63bfdSIskren Chernev 		.parent_data = gcc_parents_0,
1340cbe63bfdSIskren Chernev 		.num_parents = ARRAY_SIZE(gcc_parents_0),
1341996c32b7SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1342cbe63bfdSIskren Chernev 	},
1343cbe63bfdSIskren Chernev };
1344cbe63bfdSIskren Chernev 
1345cbe63bfdSIskren Chernev static const struct freq_tbl ftbl_gcc_ufs_phy_ice_core_clk_src[] = {
1346cbe63bfdSIskren Chernev 	F(37500000, P_GPLL0_OUT_AUX2, 8, 0, 0),
1347cbe63bfdSIskren Chernev 	F(75000000, P_GPLL0_OUT_AUX2, 4, 0, 0),
1348cbe63bfdSIskren Chernev 	F(150000000, P_GPLL0_OUT_AUX2, 2, 0, 0),
1349cbe63bfdSIskren Chernev 	F(300000000, P_GPLL0_OUT_AUX2, 1, 0, 0),
1350cbe63bfdSIskren Chernev 	{ }
1351cbe63bfdSIskren Chernev };
1352cbe63bfdSIskren Chernev 
1353cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src = {
1354cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x45048,
1355cbe63bfdSIskren Chernev 	.mnd_width = 0,
1356cbe63bfdSIskren Chernev 	.hid_width = 5,
1357cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_0,
1358cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_ufs_phy_ice_core_clk_src,
1359cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
1360cbe63bfdSIskren Chernev 		.name = "gcc_ufs_phy_ice_core_clk_src",
1361cbe63bfdSIskren Chernev 		.parent_data = gcc_parents_0,
1362cbe63bfdSIskren Chernev 		.num_parents = ARRAY_SIZE(gcc_parents_0),
1363996c32b7SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1364cbe63bfdSIskren Chernev 	},
1365cbe63bfdSIskren Chernev };
1366cbe63bfdSIskren Chernev 
1367cbe63bfdSIskren Chernev static const struct freq_tbl ftbl_gcc_ufs_phy_phy_aux_clk_src[] = {
1368cbe63bfdSIskren Chernev 	F(9600000, P_BI_TCXO, 2, 0, 0),
1369cbe63bfdSIskren Chernev 	F(19200000, P_BI_TCXO, 1, 0, 0),
1370cbe63bfdSIskren Chernev 	{ }
1371cbe63bfdSIskren Chernev };
1372cbe63bfdSIskren Chernev 
1373cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src = {
1374cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x4507c,
1375cbe63bfdSIskren Chernev 	.mnd_width = 0,
1376cbe63bfdSIskren Chernev 	.hid_width = 5,
1377cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_0,
1378cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_ufs_phy_phy_aux_clk_src,
1379cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
1380cbe63bfdSIskren Chernev 		.name = "gcc_ufs_phy_phy_aux_clk_src",
1381cbe63bfdSIskren Chernev 		.parent_data = gcc_parents_0,
1382cbe63bfdSIskren Chernev 		.num_parents = ARRAY_SIZE(gcc_parents_0),
1383cbe63bfdSIskren Chernev 		.ops = &clk_rcg2_ops,
1384cbe63bfdSIskren Chernev 	},
1385cbe63bfdSIskren Chernev };
1386cbe63bfdSIskren Chernev 
1387cbe63bfdSIskren Chernev static const struct freq_tbl ftbl_gcc_ufs_phy_unipro_core_clk_src[] = {
1388cbe63bfdSIskren Chernev 	F(37500000, P_GPLL0_OUT_AUX2, 8, 0, 0),
1389cbe63bfdSIskren Chernev 	F(75000000, P_GPLL0_OUT_AUX2, 4, 0, 0),
1390cbe63bfdSIskren Chernev 	F(150000000, P_GPLL0_OUT_AUX2, 2, 0, 0),
1391cbe63bfdSIskren Chernev 	{ }
1392cbe63bfdSIskren Chernev };
1393cbe63bfdSIskren Chernev 
1394cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_ufs_phy_unipro_core_clk_src = {
1395cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x45060,
1396cbe63bfdSIskren Chernev 	.mnd_width = 0,
1397cbe63bfdSIskren Chernev 	.hid_width = 5,
1398cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_0,
1399cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_ufs_phy_unipro_core_clk_src,
1400cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
1401cbe63bfdSIskren Chernev 		.name = "gcc_ufs_phy_unipro_core_clk_src",
1402cbe63bfdSIskren Chernev 		.parent_data = gcc_parents_0,
1403cbe63bfdSIskren Chernev 		.num_parents = ARRAY_SIZE(gcc_parents_0),
1404996c32b7SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1405cbe63bfdSIskren Chernev 	},
1406cbe63bfdSIskren Chernev };
1407cbe63bfdSIskren Chernev 
1408cbe63bfdSIskren Chernev static const struct freq_tbl ftbl_gcc_usb30_prim_master_clk_src[] = {
1409cbe63bfdSIskren Chernev 	F(66666667, P_GPLL0_OUT_AUX2, 4.5, 0, 0),
1410cbe63bfdSIskren Chernev 	F(133333333, P_GPLL0_OUT_EARLY, 4.5, 0, 0),
1411cbe63bfdSIskren Chernev 	F(200000000, P_GPLL0_OUT_EARLY, 3, 0, 0),
1412cbe63bfdSIskren Chernev 	F(240000000, P_GPLL0_OUT_EARLY, 2.5, 0, 0),
1413cbe63bfdSIskren Chernev 	{ }
1414cbe63bfdSIskren Chernev };
1415cbe63bfdSIskren Chernev 
1416cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_usb30_prim_master_clk_src = {
1417cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x1a01c,
1418cbe63bfdSIskren Chernev 	.mnd_width = 8,
1419cbe63bfdSIskren Chernev 	.hid_width = 5,
1420cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_0,
1421cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_usb30_prim_master_clk_src,
1422cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
1423cbe63bfdSIskren Chernev 		.name = "gcc_usb30_prim_master_clk_src",
1424cbe63bfdSIskren Chernev 		.parent_data = gcc_parents_0,
1425cbe63bfdSIskren Chernev 		.num_parents = ARRAY_SIZE(gcc_parents_0),
1426996c32b7SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1427cbe63bfdSIskren Chernev 	},
1428cbe63bfdSIskren Chernev };
1429cbe63bfdSIskren Chernev 
1430cbe63bfdSIskren Chernev static const struct freq_tbl ftbl_gcc_usb30_prim_mock_utmi_clk_src[] = {
1431cbe63bfdSIskren Chernev 	F(19200000, P_BI_TCXO, 1, 0, 0),
1432cbe63bfdSIskren Chernev 	{ }
1433cbe63bfdSIskren Chernev };
1434cbe63bfdSIskren Chernev 
1435cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src = {
1436cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x1a034,
1437cbe63bfdSIskren Chernev 	.mnd_width = 0,
1438cbe63bfdSIskren Chernev 	.hid_width = 5,
1439cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_0,
1440cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_usb30_prim_mock_utmi_clk_src,
1441cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
1442cbe63bfdSIskren Chernev 		.name = "gcc_usb30_prim_mock_utmi_clk_src",
1443cbe63bfdSIskren Chernev 		.parent_data = gcc_parents_0,
1444cbe63bfdSIskren Chernev 		.num_parents = ARRAY_SIZE(gcc_parents_0),
1445cbe63bfdSIskren Chernev 		.ops = &clk_rcg2_ops,
1446cbe63bfdSIskren Chernev 	},
1447cbe63bfdSIskren Chernev };
1448cbe63bfdSIskren Chernev 
1449cbe63bfdSIskren Chernev static struct clk_regmap_div gcc_usb30_prim_mock_utmi_postdiv_clk_src = {
1450cbe63bfdSIskren Chernev 	.reg = 0x1a04c,
1451cbe63bfdSIskren Chernev 	.shift = 0,
1452cbe63bfdSIskren Chernev 	.width = 2,
1453cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data) {
1454cbe63bfdSIskren Chernev 		.name = "gcc_usb30_prim_mock_utmi_postdiv_clk_src",
1455cbe63bfdSIskren Chernev 		.parent_hws = (const struct clk_hw *[]) {
1456cbe63bfdSIskren Chernev 			&gcc_usb30_prim_mock_utmi_clk_src.clkr.hw },
1457cbe63bfdSIskren Chernev 		.num_parents = 1,
1458cbe63bfdSIskren Chernev 		.ops = &clk_regmap_div_ro_ops,
1459cbe63bfdSIskren Chernev 	},
1460cbe63bfdSIskren Chernev };
1461cbe63bfdSIskren Chernev 
1462cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src = {
1463cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x1a060,
1464cbe63bfdSIskren Chernev 	.mnd_width = 0,
1465cbe63bfdSIskren Chernev 	.hid_width = 5,
1466cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_12,
1467cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_usb30_prim_mock_utmi_clk_src,
1468cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
1469cbe63bfdSIskren Chernev 		.name = "gcc_usb3_prim_phy_aux_clk_src",
1470cbe63bfdSIskren Chernev 		.parent_data = gcc_parents_12,
1471cbe63bfdSIskren Chernev 		.num_parents = ARRAY_SIZE(gcc_parents_12),
1472cbe63bfdSIskren Chernev 		.ops = &clk_rcg2_ops,
1473cbe63bfdSIskren Chernev 	},
1474cbe63bfdSIskren Chernev };
1475cbe63bfdSIskren Chernev 
1476cbe63bfdSIskren Chernev static const struct freq_tbl ftbl_gcc_video_venus_clk_src[] = {
1477cbe63bfdSIskren Chernev 	F(133333333, P_GPLL11_OUT_MAIN, 4.5, 0, 0),
1478cbe63bfdSIskren Chernev 	F(240000000, P_GPLL11_OUT_MAIN, 2.5, 0, 0),
1479cbe63bfdSIskren Chernev 	F(300000000, P_GPLL11_OUT_MAIN, 2, 0, 0),
1480cbe63bfdSIskren Chernev 	F(384000000, P_GPLL11_OUT_MAIN, 2, 0, 0),
1481cbe63bfdSIskren Chernev 	{ }
1482cbe63bfdSIskren Chernev };
1483cbe63bfdSIskren Chernev 
1484cbe63bfdSIskren Chernev static struct clk_rcg2 gcc_video_venus_clk_src = {
1485cbe63bfdSIskren Chernev 	.cmd_rcgr = 0x58060,
1486cbe63bfdSIskren Chernev 	.mnd_width = 0,
1487cbe63bfdSIskren Chernev 	.hid_width = 5,
1488cbe63bfdSIskren Chernev 	.parent_map = gcc_parent_map_13,
1489cbe63bfdSIskren Chernev 	.freq_tbl = ftbl_gcc_video_venus_clk_src,
1490cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data){
1491cbe63bfdSIskren Chernev 		.name = "gcc_video_venus_clk_src",
1492cbe63bfdSIskren Chernev 		.parent_data = gcc_parents_13,
1493cbe63bfdSIskren Chernev 		.num_parents = ARRAY_SIZE(gcc_parents_13),
1494cbe63bfdSIskren Chernev 		.flags = CLK_SET_RATE_PARENT,
1495996c32b7SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1496cbe63bfdSIskren Chernev 	},
1497cbe63bfdSIskren Chernev };
1498cbe63bfdSIskren Chernev 
1499cbe63bfdSIskren Chernev static struct clk_branch gcc_ahb2phy_csi_clk = {
1500cbe63bfdSIskren Chernev 	.halt_reg = 0x1d004,
1501cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
1502cbe63bfdSIskren Chernev 	.hwcg_reg = 0x1d004,
1503cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
1504cbe63bfdSIskren Chernev 	.clkr = {
1505cbe63bfdSIskren Chernev 		.enable_reg = 0x1d004,
1506cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
1507cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
1508cbe63bfdSIskren Chernev 			.name = "gcc_ahb2phy_csi_clk",
1509cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
1510cbe63bfdSIskren Chernev 		},
1511cbe63bfdSIskren Chernev 	},
1512cbe63bfdSIskren Chernev };
1513cbe63bfdSIskren Chernev 
1514cbe63bfdSIskren Chernev static struct clk_branch gcc_ahb2phy_usb_clk = {
1515cbe63bfdSIskren Chernev 	.halt_reg = 0x1d008,
1516cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
1517cbe63bfdSIskren Chernev 	.hwcg_reg = 0x1d008,
1518cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
1519cbe63bfdSIskren Chernev 	.clkr = {
1520cbe63bfdSIskren Chernev 		.enable_reg = 0x1d008,
1521cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
1522cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
1523cbe63bfdSIskren Chernev 			.name = "gcc_ahb2phy_usb_clk",
1524cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
1525cbe63bfdSIskren Chernev 		},
1526cbe63bfdSIskren Chernev 	},
1527cbe63bfdSIskren Chernev };
1528cbe63bfdSIskren Chernev 
1529cbe63bfdSIskren Chernev static struct clk_branch gcc_bimc_gpu_axi_clk = {
1530cbe63bfdSIskren Chernev 	.halt_reg = 0x71154,
1531cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT_DELAY,
1532cbe63bfdSIskren Chernev 	.hwcg_reg = 0x71154,
1533cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
1534cbe63bfdSIskren Chernev 	.clkr = {
1535cbe63bfdSIskren Chernev 		.enable_reg = 0x71154,
1536cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
1537cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
1538cbe63bfdSIskren Chernev 			.name = "gcc_bimc_gpu_axi_clk",
1539cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
1540cbe63bfdSIskren Chernev 		},
1541cbe63bfdSIskren Chernev 	},
1542cbe63bfdSIskren Chernev };
1543cbe63bfdSIskren Chernev 
1544cbe63bfdSIskren Chernev static struct clk_branch gcc_boot_rom_ahb_clk = {
1545cbe63bfdSIskren Chernev 	.halt_reg = 0x23004,
1546cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT_VOTED,
1547cbe63bfdSIskren Chernev 	.hwcg_reg = 0x23004,
1548cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
1549cbe63bfdSIskren Chernev 	.clkr = {
1550cbe63bfdSIskren Chernev 		.enable_reg = 0x79004,
1551cbe63bfdSIskren Chernev 		.enable_mask = BIT(10),
1552cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
1553cbe63bfdSIskren Chernev 			.name = "gcc_boot_rom_ahb_clk",
1554cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
1555cbe63bfdSIskren Chernev 		},
1556cbe63bfdSIskren Chernev 	},
1557cbe63bfdSIskren Chernev };
1558cbe63bfdSIskren Chernev 
1559cbe63bfdSIskren Chernev static struct clk_branch gcc_cam_throttle_nrt_clk = {
1560cbe63bfdSIskren Chernev 	.halt_reg = 0x17070,
1561cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT_VOTED,
1562cbe63bfdSIskren Chernev 	.hwcg_reg = 0x17070,
1563cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
1564cbe63bfdSIskren Chernev 	.clkr = {
1565cbe63bfdSIskren Chernev 		.enable_reg = 0x79004,
1566cbe63bfdSIskren Chernev 		.enable_mask = BIT(27),
1567cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
1568cbe63bfdSIskren Chernev 			.name = "gcc_cam_throttle_nrt_clk",
1569cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
1570cbe63bfdSIskren Chernev 		},
1571cbe63bfdSIskren Chernev 	},
1572cbe63bfdSIskren Chernev };
1573cbe63bfdSIskren Chernev 
1574cbe63bfdSIskren Chernev static struct clk_branch gcc_cam_throttle_rt_clk = {
1575cbe63bfdSIskren Chernev 	.halt_reg = 0x1706c,
1576cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT_VOTED,
1577cbe63bfdSIskren Chernev 	.hwcg_reg = 0x1706c,
1578cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
1579cbe63bfdSIskren Chernev 	.clkr = {
1580cbe63bfdSIskren Chernev 		.enable_reg = 0x79004,
1581cbe63bfdSIskren Chernev 		.enable_mask = BIT(26),
1582cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
1583cbe63bfdSIskren Chernev 			.name = "gcc_cam_throttle_rt_clk",
1584cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
1585cbe63bfdSIskren Chernev 		},
1586cbe63bfdSIskren Chernev 	},
1587cbe63bfdSIskren Chernev };
1588cbe63bfdSIskren Chernev 
1589cbe63bfdSIskren Chernev static struct clk_branch gcc_camera_ahb_clk = {
1590cbe63bfdSIskren Chernev 	.halt_reg = 0x17008,
1591cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT_DELAY,
1592cbe63bfdSIskren Chernev 	.hwcg_reg = 0x17008,
1593cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
1594cbe63bfdSIskren Chernev 	.clkr = {
1595cbe63bfdSIskren Chernev 		.enable_reg = 0x17008,
1596cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
1597cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
1598cbe63bfdSIskren Chernev 			.name = "gcc_camera_ahb_clk",
1599cbe63bfdSIskren Chernev 			.flags = CLK_IS_CRITICAL,
1600cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
1601cbe63bfdSIskren Chernev 		},
1602cbe63bfdSIskren Chernev 	},
1603cbe63bfdSIskren Chernev };
1604cbe63bfdSIskren Chernev 
1605cbe63bfdSIskren Chernev static struct clk_branch gcc_camera_xo_clk = {
1606cbe63bfdSIskren Chernev 	.halt_reg = 0x17028,
1607cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
1608cbe63bfdSIskren Chernev 	.clkr = {
1609cbe63bfdSIskren Chernev 		.enable_reg = 0x17028,
1610cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
1611cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
1612cbe63bfdSIskren Chernev 			.name = "gcc_camera_xo_clk",
1613cbe63bfdSIskren Chernev 			.flags = CLK_IS_CRITICAL,
1614cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
1615cbe63bfdSIskren Chernev 		},
1616cbe63bfdSIskren Chernev 	},
1617cbe63bfdSIskren Chernev };
1618cbe63bfdSIskren Chernev 
1619cbe63bfdSIskren Chernev static struct clk_branch gcc_camss_axi_clk = {
1620cbe63bfdSIskren Chernev 	.halt_reg = 0x58044,
1621cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
1622cbe63bfdSIskren Chernev 	.clkr = {
1623cbe63bfdSIskren Chernev 		.enable_reg = 0x58044,
1624cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
1625cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
1626cbe63bfdSIskren Chernev 			.name = "gcc_camss_axi_clk",
1627cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
1628cbe63bfdSIskren Chernev 				&gcc_camss_axi_clk_src.clkr.hw,
1629cbe63bfdSIskren Chernev 			},
1630cbe63bfdSIskren Chernev 			.num_parents = 1,
1631cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
1632cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
1633cbe63bfdSIskren Chernev 		},
1634cbe63bfdSIskren Chernev 	},
1635cbe63bfdSIskren Chernev };
1636cbe63bfdSIskren Chernev 
1637cbe63bfdSIskren Chernev static struct clk_branch gcc_camss_camnoc_atb_clk = {
1638cbe63bfdSIskren Chernev 	.halt_reg = 0x5804c,
1639cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT_DELAY,
1640cbe63bfdSIskren Chernev 	.hwcg_reg = 0x5804c,
1641cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
1642cbe63bfdSIskren Chernev 	.clkr = {
1643cbe63bfdSIskren Chernev 		.enable_reg = 0x5804c,
1644cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
1645cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
1646cbe63bfdSIskren Chernev 			.name = "gcc_camss_camnoc_atb_clk",
1647cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
1648cbe63bfdSIskren Chernev 		},
1649cbe63bfdSIskren Chernev 	},
1650cbe63bfdSIskren Chernev };
1651cbe63bfdSIskren Chernev 
1652cbe63bfdSIskren Chernev static struct clk_branch gcc_camss_camnoc_nts_xo_clk = {
1653cbe63bfdSIskren Chernev 	.halt_reg = 0x58050,
1654cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT_DELAY,
1655cbe63bfdSIskren Chernev 	.hwcg_reg = 0x58050,
1656cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
1657cbe63bfdSIskren Chernev 	.clkr = {
1658cbe63bfdSIskren Chernev 		.enable_reg = 0x58050,
1659cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
1660cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
1661cbe63bfdSIskren Chernev 			.name = "gcc_camss_camnoc_nts_xo_clk",
1662cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
1663cbe63bfdSIskren Chernev 		},
1664cbe63bfdSIskren Chernev 	},
1665cbe63bfdSIskren Chernev };
1666cbe63bfdSIskren Chernev 
1667cbe63bfdSIskren Chernev static struct clk_branch gcc_camss_cci_0_clk = {
1668cbe63bfdSIskren Chernev 	.halt_reg = 0x56018,
1669cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
1670cbe63bfdSIskren Chernev 	.clkr = {
1671cbe63bfdSIskren Chernev 		.enable_reg = 0x56018,
1672cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
1673cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
1674cbe63bfdSIskren Chernev 			.name = "gcc_camss_cci_0_clk",
1675cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
1676cbe63bfdSIskren Chernev 				&gcc_camss_cci_clk_src.clkr.hw,
1677cbe63bfdSIskren Chernev 			},
1678cbe63bfdSIskren Chernev 			.num_parents = 1,
1679cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
1680cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
1681cbe63bfdSIskren Chernev 		},
1682cbe63bfdSIskren Chernev 	},
1683cbe63bfdSIskren Chernev };
1684cbe63bfdSIskren Chernev 
1685cbe63bfdSIskren Chernev static struct clk_branch gcc_camss_cphy_0_clk = {
1686cbe63bfdSIskren Chernev 	.halt_reg = 0x52088,
1687cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
1688cbe63bfdSIskren Chernev 	.clkr = {
1689cbe63bfdSIskren Chernev 		.enable_reg = 0x52088,
1690cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
1691cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
1692cbe63bfdSIskren Chernev 			.name = "gcc_camss_cphy_0_clk",
1693cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
1694cbe63bfdSIskren Chernev 				&gcc_camss_tfe_cphy_rx_clk_src.clkr.hw,
1695cbe63bfdSIskren Chernev 			},
1696cbe63bfdSIskren Chernev 			.num_parents = 1,
1697cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
1698cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
1699cbe63bfdSIskren Chernev 		},
1700cbe63bfdSIskren Chernev 	},
1701cbe63bfdSIskren Chernev };
1702cbe63bfdSIskren Chernev 
1703cbe63bfdSIskren Chernev static struct clk_branch gcc_camss_cphy_1_clk = {
1704cbe63bfdSIskren Chernev 	.halt_reg = 0x5208c,
1705cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
1706cbe63bfdSIskren Chernev 	.clkr = {
1707cbe63bfdSIskren Chernev 		.enable_reg = 0x5208c,
1708cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
1709cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
1710cbe63bfdSIskren Chernev 			.name = "gcc_camss_cphy_1_clk",
1711cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
1712cbe63bfdSIskren Chernev 				&gcc_camss_tfe_cphy_rx_clk_src.clkr.hw,
1713cbe63bfdSIskren Chernev 			},
1714cbe63bfdSIskren Chernev 			.num_parents = 1,
1715cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
1716cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
1717cbe63bfdSIskren Chernev 		},
1718cbe63bfdSIskren Chernev 	},
1719cbe63bfdSIskren Chernev };
1720cbe63bfdSIskren Chernev 
1721cbe63bfdSIskren Chernev static struct clk_branch gcc_camss_cphy_2_clk = {
1722cbe63bfdSIskren Chernev 	.halt_reg = 0x52090,
1723cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
1724cbe63bfdSIskren Chernev 	.clkr = {
1725cbe63bfdSIskren Chernev 		.enable_reg = 0x52090,
1726cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
1727cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
1728cbe63bfdSIskren Chernev 			.name = "gcc_camss_cphy_2_clk",
1729cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
1730cbe63bfdSIskren Chernev 				&gcc_camss_tfe_cphy_rx_clk_src.clkr.hw,
1731cbe63bfdSIskren Chernev 			},
1732cbe63bfdSIskren Chernev 			.num_parents = 1,
1733cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
1734cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
1735cbe63bfdSIskren Chernev 		},
1736cbe63bfdSIskren Chernev 	},
1737cbe63bfdSIskren Chernev };
1738cbe63bfdSIskren Chernev 
1739cbe63bfdSIskren Chernev static struct clk_branch gcc_camss_csi0phytimer_clk = {
1740cbe63bfdSIskren Chernev 	.halt_reg = 0x59018,
1741cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
1742cbe63bfdSIskren Chernev 	.clkr = {
1743cbe63bfdSIskren Chernev 		.enable_reg = 0x59018,
1744cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
1745cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
1746cbe63bfdSIskren Chernev 			.name = "gcc_camss_csi0phytimer_clk",
1747cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
1748cbe63bfdSIskren Chernev 				&gcc_camss_csi0phytimer_clk_src.clkr.hw,
1749cbe63bfdSIskren Chernev 			},
1750cbe63bfdSIskren Chernev 			.num_parents = 1,
1751cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
1752cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
1753cbe63bfdSIskren Chernev 		},
1754cbe63bfdSIskren Chernev 	},
1755cbe63bfdSIskren Chernev };
1756cbe63bfdSIskren Chernev 
1757cbe63bfdSIskren Chernev static struct clk_branch gcc_camss_csi1phytimer_clk = {
1758cbe63bfdSIskren Chernev 	.halt_reg = 0x59034,
1759cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
1760cbe63bfdSIskren Chernev 	.clkr = {
1761cbe63bfdSIskren Chernev 		.enable_reg = 0x59034,
1762cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
1763cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
1764cbe63bfdSIskren Chernev 			.name = "gcc_camss_csi1phytimer_clk",
1765cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
1766cbe63bfdSIskren Chernev 				&gcc_camss_csi1phytimer_clk_src.clkr.hw,
1767cbe63bfdSIskren Chernev 			},
1768cbe63bfdSIskren Chernev 			.num_parents = 1,
1769cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
1770cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
1771cbe63bfdSIskren Chernev 		},
1772cbe63bfdSIskren Chernev 	},
1773cbe63bfdSIskren Chernev };
1774cbe63bfdSIskren Chernev 
1775cbe63bfdSIskren Chernev static struct clk_branch gcc_camss_csi2phytimer_clk = {
1776cbe63bfdSIskren Chernev 	.halt_reg = 0x59050,
1777cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
1778cbe63bfdSIskren Chernev 	.clkr = {
1779cbe63bfdSIskren Chernev 		.enable_reg = 0x59050,
1780cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
1781cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
1782cbe63bfdSIskren Chernev 			.name = "gcc_camss_csi2phytimer_clk",
1783cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
1784cbe63bfdSIskren Chernev 				&gcc_camss_csi2phytimer_clk_src.clkr.hw,
1785cbe63bfdSIskren Chernev 			},
1786cbe63bfdSIskren Chernev 			.num_parents = 1,
1787cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
1788cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
1789cbe63bfdSIskren Chernev 		},
1790cbe63bfdSIskren Chernev 	},
1791cbe63bfdSIskren Chernev };
1792cbe63bfdSIskren Chernev 
1793cbe63bfdSIskren Chernev static struct clk_branch gcc_camss_mclk0_clk = {
1794cbe63bfdSIskren Chernev 	.halt_reg = 0x51018,
1795cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
1796cbe63bfdSIskren Chernev 	.clkr = {
1797cbe63bfdSIskren Chernev 		.enable_reg = 0x51018,
1798cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
1799cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
1800cbe63bfdSIskren Chernev 			.name = "gcc_camss_mclk0_clk",
1801cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
1802cbe63bfdSIskren Chernev 				&gcc_camss_mclk0_clk_src.clkr.hw,
1803cbe63bfdSIskren Chernev 			},
1804cbe63bfdSIskren Chernev 			.num_parents = 1,
1805cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
1806cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
1807cbe63bfdSIskren Chernev 		},
1808cbe63bfdSIskren Chernev 	},
1809cbe63bfdSIskren Chernev };
1810cbe63bfdSIskren Chernev 
1811cbe63bfdSIskren Chernev static struct clk_branch gcc_camss_mclk1_clk = {
1812cbe63bfdSIskren Chernev 	.halt_reg = 0x51034,
1813cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
1814cbe63bfdSIskren Chernev 	.clkr = {
1815cbe63bfdSIskren Chernev 		.enable_reg = 0x51034,
1816cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
1817cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
1818cbe63bfdSIskren Chernev 			.name = "gcc_camss_mclk1_clk",
1819cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
1820cbe63bfdSIskren Chernev 				&gcc_camss_mclk1_clk_src.clkr.hw,
1821cbe63bfdSIskren Chernev 			},
1822cbe63bfdSIskren Chernev 			.num_parents = 1,
1823cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
1824cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
1825cbe63bfdSIskren Chernev 		},
1826cbe63bfdSIskren Chernev 	},
1827cbe63bfdSIskren Chernev };
1828cbe63bfdSIskren Chernev 
1829cbe63bfdSIskren Chernev static struct clk_branch gcc_camss_mclk2_clk = {
1830cbe63bfdSIskren Chernev 	.halt_reg = 0x51050,
1831cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
1832cbe63bfdSIskren Chernev 	.clkr = {
1833cbe63bfdSIskren Chernev 		.enable_reg = 0x51050,
1834cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
1835cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
1836cbe63bfdSIskren Chernev 			.name = "gcc_camss_mclk2_clk",
1837cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
1838cbe63bfdSIskren Chernev 				&gcc_camss_mclk2_clk_src.clkr.hw,
1839cbe63bfdSIskren Chernev 			},
1840cbe63bfdSIskren Chernev 			.num_parents = 1,
1841cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
1842cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
1843cbe63bfdSIskren Chernev 		},
1844cbe63bfdSIskren Chernev 	},
1845cbe63bfdSIskren Chernev };
1846cbe63bfdSIskren Chernev 
1847cbe63bfdSIskren Chernev static struct clk_branch gcc_camss_mclk3_clk = {
1848cbe63bfdSIskren Chernev 	.halt_reg = 0x5106c,
1849cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
1850cbe63bfdSIskren Chernev 	.clkr = {
1851cbe63bfdSIskren Chernev 		.enable_reg = 0x5106c,
1852cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
1853cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
1854cbe63bfdSIskren Chernev 			.name = "gcc_camss_mclk3_clk",
1855cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
1856cbe63bfdSIskren Chernev 				&gcc_camss_mclk3_clk_src.clkr.hw,
1857cbe63bfdSIskren Chernev 			},
1858cbe63bfdSIskren Chernev 			.num_parents = 1,
1859cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
1860cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
1861cbe63bfdSIskren Chernev 		},
1862cbe63bfdSIskren Chernev 	},
1863cbe63bfdSIskren Chernev };
1864cbe63bfdSIskren Chernev 
1865cbe63bfdSIskren Chernev static struct clk_branch gcc_camss_nrt_axi_clk = {
1866cbe63bfdSIskren Chernev 	.halt_reg = 0x58054,
1867cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
1868cbe63bfdSIskren Chernev 	.clkr = {
1869cbe63bfdSIskren Chernev 		.enable_reg = 0x58054,
1870cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
1871cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
1872cbe63bfdSIskren Chernev 			.name = "gcc_camss_nrt_axi_clk",
1873cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
1874cbe63bfdSIskren Chernev 		},
1875cbe63bfdSIskren Chernev 	},
1876cbe63bfdSIskren Chernev };
1877cbe63bfdSIskren Chernev 
1878cbe63bfdSIskren Chernev static struct clk_branch gcc_camss_ope_ahb_clk = {
1879cbe63bfdSIskren Chernev 	.halt_reg = 0x5503c,
1880cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
1881cbe63bfdSIskren Chernev 	.clkr = {
1882cbe63bfdSIskren Chernev 		.enable_reg = 0x5503c,
1883cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
1884cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
1885cbe63bfdSIskren Chernev 			.name = "gcc_camss_ope_ahb_clk",
1886cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
1887cbe63bfdSIskren Chernev 				&gcc_camss_ope_ahb_clk_src.clkr.hw,
1888cbe63bfdSIskren Chernev 			},
1889cbe63bfdSIskren Chernev 			.num_parents = 1,
1890cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
1891cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
1892cbe63bfdSIskren Chernev 		},
1893cbe63bfdSIskren Chernev 	},
1894cbe63bfdSIskren Chernev };
1895cbe63bfdSIskren Chernev 
1896cbe63bfdSIskren Chernev static struct clk_branch gcc_camss_ope_clk = {
1897cbe63bfdSIskren Chernev 	.halt_reg = 0x5501c,
1898cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
1899cbe63bfdSIskren Chernev 	.clkr = {
1900cbe63bfdSIskren Chernev 		.enable_reg = 0x5501c,
1901cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
1902cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
1903cbe63bfdSIskren Chernev 			.name = "gcc_camss_ope_clk",
1904cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
1905cbe63bfdSIskren Chernev 				&gcc_camss_ope_clk_src.clkr.hw,
1906cbe63bfdSIskren Chernev 			},
1907cbe63bfdSIskren Chernev 			.num_parents = 1,
1908cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
1909cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
1910cbe63bfdSIskren Chernev 		},
1911cbe63bfdSIskren Chernev 	},
1912cbe63bfdSIskren Chernev };
1913cbe63bfdSIskren Chernev 
1914cbe63bfdSIskren Chernev static struct clk_branch gcc_camss_rt_axi_clk = {
1915cbe63bfdSIskren Chernev 	.halt_reg = 0x5805c,
1916cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
1917cbe63bfdSIskren Chernev 	.clkr = {
1918cbe63bfdSIskren Chernev 		.enable_reg = 0x5805c,
1919cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
1920cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
1921cbe63bfdSIskren Chernev 			.name = "gcc_camss_rt_axi_clk",
1922cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
1923cbe63bfdSIskren Chernev 		},
1924cbe63bfdSIskren Chernev 	},
1925cbe63bfdSIskren Chernev };
1926cbe63bfdSIskren Chernev 
1927cbe63bfdSIskren Chernev static struct clk_branch gcc_camss_tfe_0_clk = {
1928cbe63bfdSIskren Chernev 	.halt_reg = 0x5201c,
1929cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
1930cbe63bfdSIskren Chernev 	.clkr = {
1931cbe63bfdSIskren Chernev 		.enable_reg = 0x5201c,
1932cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
1933cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
1934cbe63bfdSIskren Chernev 			.name = "gcc_camss_tfe_0_clk",
1935cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
1936cbe63bfdSIskren Chernev 				&gcc_camss_tfe_0_clk_src.clkr.hw,
1937cbe63bfdSIskren Chernev 			},
1938cbe63bfdSIskren Chernev 			.num_parents = 1,
1939cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
1940cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
1941cbe63bfdSIskren Chernev 		},
1942cbe63bfdSIskren Chernev 	},
1943cbe63bfdSIskren Chernev };
1944cbe63bfdSIskren Chernev 
1945cbe63bfdSIskren Chernev static struct clk_branch gcc_camss_tfe_0_cphy_rx_clk = {
1946cbe63bfdSIskren Chernev 	.halt_reg = 0x5207c,
1947cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
1948cbe63bfdSIskren Chernev 	.clkr = {
1949cbe63bfdSIskren Chernev 		.enable_reg = 0x5207c,
1950cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
1951cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
1952cbe63bfdSIskren Chernev 			.name = "gcc_camss_tfe_0_cphy_rx_clk",
1953cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
1954cbe63bfdSIskren Chernev 				&gcc_camss_tfe_cphy_rx_clk_src.clkr.hw,
1955cbe63bfdSIskren Chernev 			},
1956cbe63bfdSIskren Chernev 			.num_parents = 1,
1957cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
1958cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
1959cbe63bfdSIskren Chernev 		},
1960cbe63bfdSIskren Chernev 	},
1961cbe63bfdSIskren Chernev };
1962cbe63bfdSIskren Chernev 
1963cbe63bfdSIskren Chernev static struct clk_branch gcc_camss_tfe_0_csid_clk = {
1964cbe63bfdSIskren Chernev 	.halt_reg = 0x520ac,
1965cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
1966cbe63bfdSIskren Chernev 	.clkr = {
1967cbe63bfdSIskren Chernev 		.enable_reg = 0x520ac,
1968cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
1969cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
1970cbe63bfdSIskren Chernev 			.name = "gcc_camss_tfe_0_csid_clk",
1971cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
1972cbe63bfdSIskren Chernev 				&gcc_camss_tfe_0_csid_clk_src.clkr.hw,
1973cbe63bfdSIskren Chernev 			},
1974cbe63bfdSIskren Chernev 			.num_parents = 1,
1975cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
1976cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
1977cbe63bfdSIskren Chernev 		},
1978cbe63bfdSIskren Chernev 	},
1979cbe63bfdSIskren Chernev };
1980cbe63bfdSIskren Chernev 
1981cbe63bfdSIskren Chernev static struct clk_branch gcc_camss_tfe_1_clk = {
1982cbe63bfdSIskren Chernev 	.halt_reg = 0x5203c,
1983cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
1984cbe63bfdSIskren Chernev 	.clkr = {
1985cbe63bfdSIskren Chernev 		.enable_reg = 0x5203c,
1986cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
1987cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
1988cbe63bfdSIskren Chernev 			.name = "gcc_camss_tfe_1_clk",
1989cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
1990cbe63bfdSIskren Chernev 				&gcc_camss_tfe_1_clk_src.clkr.hw,
1991cbe63bfdSIskren Chernev 			},
1992cbe63bfdSIskren Chernev 			.num_parents = 1,
1993cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
1994cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
1995cbe63bfdSIskren Chernev 		},
1996cbe63bfdSIskren Chernev 	},
1997cbe63bfdSIskren Chernev };
1998cbe63bfdSIskren Chernev 
1999cbe63bfdSIskren Chernev static struct clk_branch gcc_camss_tfe_1_cphy_rx_clk = {
2000cbe63bfdSIskren Chernev 	.halt_reg = 0x52080,
2001cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
2002cbe63bfdSIskren Chernev 	.clkr = {
2003cbe63bfdSIskren Chernev 		.enable_reg = 0x52080,
2004cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2005cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2006cbe63bfdSIskren Chernev 			.name = "gcc_camss_tfe_1_cphy_rx_clk",
2007cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
2008cbe63bfdSIskren Chernev 				&gcc_camss_tfe_cphy_rx_clk_src.clkr.hw,
2009cbe63bfdSIskren Chernev 			},
2010cbe63bfdSIskren Chernev 			.num_parents = 1,
2011cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
2012cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2013cbe63bfdSIskren Chernev 		},
2014cbe63bfdSIskren Chernev 	},
2015cbe63bfdSIskren Chernev };
2016cbe63bfdSIskren Chernev 
2017cbe63bfdSIskren Chernev static struct clk_branch gcc_camss_tfe_1_csid_clk = {
2018cbe63bfdSIskren Chernev 	.halt_reg = 0x520cc,
2019cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
2020cbe63bfdSIskren Chernev 	.clkr = {
2021cbe63bfdSIskren Chernev 		.enable_reg = 0x520cc,
2022cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2023cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2024cbe63bfdSIskren Chernev 			.name = "gcc_camss_tfe_1_csid_clk",
2025cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
2026cbe63bfdSIskren Chernev 				&gcc_camss_tfe_1_csid_clk_src.clkr.hw,
2027cbe63bfdSIskren Chernev 			},
2028cbe63bfdSIskren Chernev 			.num_parents = 1,
2029cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
2030cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2031cbe63bfdSIskren Chernev 		},
2032cbe63bfdSIskren Chernev 	},
2033cbe63bfdSIskren Chernev };
2034cbe63bfdSIskren Chernev 
2035cbe63bfdSIskren Chernev static struct clk_branch gcc_camss_tfe_2_clk = {
2036cbe63bfdSIskren Chernev 	.halt_reg = 0x5205c,
2037cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
2038cbe63bfdSIskren Chernev 	.clkr = {
2039cbe63bfdSIskren Chernev 		.enable_reg = 0x5205c,
2040cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2041cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2042cbe63bfdSIskren Chernev 			.name = "gcc_camss_tfe_2_clk",
2043cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
2044cbe63bfdSIskren Chernev 				&gcc_camss_tfe_2_clk_src.clkr.hw,
2045cbe63bfdSIskren Chernev 			},
2046cbe63bfdSIskren Chernev 			.num_parents = 1,
2047cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
2048cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2049cbe63bfdSIskren Chernev 		},
2050cbe63bfdSIskren Chernev 	},
2051cbe63bfdSIskren Chernev };
2052cbe63bfdSIskren Chernev 
2053cbe63bfdSIskren Chernev static struct clk_branch gcc_camss_tfe_2_cphy_rx_clk = {
2054cbe63bfdSIskren Chernev 	.halt_reg = 0x52084,
2055cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
2056cbe63bfdSIskren Chernev 	.clkr = {
2057cbe63bfdSIskren Chernev 		.enable_reg = 0x52084,
2058cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2059cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2060cbe63bfdSIskren Chernev 			.name = "gcc_camss_tfe_2_cphy_rx_clk",
2061cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
2062cbe63bfdSIskren Chernev 				&gcc_camss_tfe_cphy_rx_clk_src.clkr.hw,
2063cbe63bfdSIskren Chernev 			},
2064cbe63bfdSIskren Chernev 			.num_parents = 1,
2065cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
2066cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2067cbe63bfdSIskren Chernev 		},
2068cbe63bfdSIskren Chernev 	},
2069cbe63bfdSIskren Chernev };
2070cbe63bfdSIskren Chernev 
2071cbe63bfdSIskren Chernev static struct clk_branch gcc_camss_tfe_2_csid_clk = {
2072cbe63bfdSIskren Chernev 	.halt_reg = 0x520ec,
2073cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
2074cbe63bfdSIskren Chernev 	.clkr = {
2075cbe63bfdSIskren Chernev 		.enable_reg = 0x520ec,
2076cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2077cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2078cbe63bfdSIskren Chernev 			.name = "gcc_camss_tfe_2_csid_clk",
2079cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
2080cbe63bfdSIskren Chernev 				&gcc_camss_tfe_2_csid_clk_src.clkr.hw,
2081cbe63bfdSIskren Chernev 			},
2082cbe63bfdSIskren Chernev 			.num_parents = 1,
2083cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
2084cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2085cbe63bfdSIskren Chernev 		},
2086cbe63bfdSIskren Chernev 	},
2087cbe63bfdSIskren Chernev };
2088cbe63bfdSIskren Chernev 
2089cbe63bfdSIskren Chernev static struct clk_branch gcc_camss_top_ahb_clk = {
2090cbe63bfdSIskren Chernev 	.halt_reg = 0x58028,
2091cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
2092cbe63bfdSIskren Chernev 	.clkr = {
2093cbe63bfdSIskren Chernev 		.enable_reg = 0x58028,
2094cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2095cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2096cbe63bfdSIskren Chernev 			.name = "gcc_camss_top_ahb_clk",
2097cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
2098cbe63bfdSIskren Chernev 				&gcc_camss_top_ahb_clk_src.clkr.hw,
2099cbe63bfdSIskren Chernev 			},
2100cbe63bfdSIskren Chernev 			.num_parents = 1,
2101cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
2102cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2103cbe63bfdSIskren Chernev 		},
2104cbe63bfdSIskren Chernev 	},
2105cbe63bfdSIskren Chernev };
2106cbe63bfdSIskren Chernev 
2107cbe63bfdSIskren Chernev static struct clk_branch gcc_cfg_noc_usb3_prim_axi_clk = {
2108cbe63bfdSIskren Chernev 	.halt_reg = 0x1a084,
2109cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
2110cbe63bfdSIskren Chernev 	.hwcg_reg = 0x1a084,
2111cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
2112cbe63bfdSIskren Chernev 	.clkr = {
2113cbe63bfdSIskren Chernev 		.enable_reg = 0x1a084,
2114cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2115cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2116cbe63bfdSIskren Chernev 			.name = "gcc_cfg_noc_usb3_prim_axi_clk",
2117cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
2118cbe63bfdSIskren Chernev 				&gcc_usb30_prim_master_clk_src.clkr.hw,
2119cbe63bfdSIskren Chernev 			},
2120cbe63bfdSIskren Chernev 			.num_parents = 1,
2121cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
2122cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2123cbe63bfdSIskren Chernev 		},
2124cbe63bfdSIskren Chernev 	},
2125cbe63bfdSIskren Chernev };
2126cbe63bfdSIskren Chernev 
2127cbe63bfdSIskren Chernev static struct clk_branch gcc_cpuss_gnoc_clk = {
2128cbe63bfdSIskren Chernev 	.halt_reg = 0x2b004,
2129cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT_VOTED,
2130cbe63bfdSIskren Chernev 	.hwcg_reg = 0x2b004,
2131cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
2132cbe63bfdSIskren Chernev 	.clkr = {
2133cbe63bfdSIskren Chernev 		.enable_reg = 0x79004,
2134cbe63bfdSIskren Chernev 		.enable_mask = BIT(22),
2135cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2136cbe63bfdSIskren Chernev 			.name = "gcc_cpuss_gnoc_clk",
2137cbe63bfdSIskren Chernev 			.flags = CLK_IS_CRITICAL,
2138cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2139cbe63bfdSIskren Chernev 		},
2140cbe63bfdSIskren Chernev 	},
2141cbe63bfdSIskren Chernev };
2142cbe63bfdSIskren Chernev 
2143cbe63bfdSIskren Chernev static struct clk_branch gcc_disp_ahb_clk = {
2144cbe63bfdSIskren Chernev 	.halt_reg = 0x1700c,
2145cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
2146cbe63bfdSIskren Chernev 	.hwcg_reg = 0x1700c,
2147cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
2148cbe63bfdSIskren Chernev 	.clkr = {
2149cbe63bfdSIskren Chernev 		.enable_reg = 0x1700c,
2150cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2151cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2152cbe63bfdSIskren Chernev 			.name = "gcc_disp_ahb_clk",
2153cbe63bfdSIskren Chernev 			.flags = CLK_IS_CRITICAL,
2154cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2155cbe63bfdSIskren Chernev 		},
2156cbe63bfdSIskren Chernev 	},
2157cbe63bfdSIskren Chernev };
2158cbe63bfdSIskren Chernev 
2159cbe63bfdSIskren Chernev static struct clk_regmap_div gcc_disp_gpll0_clk_src = {
2160cbe63bfdSIskren Chernev 	.reg = 0x17058,
2161cbe63bfdSIskren Chernev 	.shift = 0,
2162cbe63bfdSIskren Chernev 	.width = 2,
2163cbe63bfdSIskren Chernev 	.clkr.hw.init = &(struct clk_init_data) {
2164cbe63bfdSIskren Chernev 		.name = "gcc_disp_gpll0_clk_src",
2165cbe63bfdSIskren Chernev 		.parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw },
2166cbe63bfdSIskren Chernev 		.num_parents = 1,
2167cbe63bfdSIskren Chernev 		.ops = &clk_regmap_div_ops,
2168cbe63bfdSIskren Chernev 	},
2169cbe63bfdSIskren Chernev };
2170cbe63bfdSIskren Chernev 
2171cbe63bfdSIskren Chernev static struct clk_branch gcc_disp_gpll0_div_clk_src = {
2172cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT_DELAY,
2173cbe63bfdSIskren Chernev 	.clkr = {
2174cbe63bfdSIskren Chernev 		.enable_reg = 0x79004,
2175cbe63bfdSIskren Chernev 		.enable_mask = BIT(20),
2176cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2177cbe63bfdSIskren Chernev 			.name = "gcc_disp_gpll0_div_clk_src",
2178cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
2179cbe63bfdSIskren Chernev 				&gcc_disp_gpll0_clk_src.clkr.hw,
2180cbe63bfdSIskren Chernev 			},
2181cbe63bfdSIskren Chernev 			.num_parents = 1,
2182cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
2183cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2184cbe63bfdSIskren Chernev 		},
2185cbe63bfdSIskren Chernev 	},
2186cbe63bfdSIskren Chernev };
2187cbe63bfdSIskren Chernev 
2188cbe63bfdSIskren Chernev static struct clk_branch gcc_disp_hf_axi_clk = {
2189cbe63bfdSIskren Chernev 	.halt_reg = 0x17020,
2190cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
2191cbe63bfdSIskren Chernev 	.hwcg_reg = 0x17020,
2192cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
2193cbe63bfdSIskren Chernev 	.clkr = {
2194cbe63bfdSIskren Chernev 		.enable_reg = 0x17020,
2195cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2196cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2197cbe63bfdSIskren Chernev 			.name = "gcc_disp_hf_axi_clk",
2198cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2199cbe63bfdSIskren Chernev 		},
2200cbe63bfdSIskren Chernev 	},
2201cbe63bfdSIskren Chernev };
2202cbe63bfdSIskren Chernev 
2203cbe63bfdSIskren Chernev static struct clk_branch gcc_disp_throttle_core_clk = {
2204cbe63bfdSIskren Chernev 	.halt_reg = 0x17064,
2205cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT_VOTED,
2206cbe63bfdSIskren Chernev 	.hwcg_reg = 0x17064,
2207cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
2208cbe63bfdSIskren Chernev 	.clkr = {
2209cbe63bfdSIskren Chernev 		.enable_reg = 0x7900c,
2210cbe63bfdSIskren Chernev 		.enable_mask = BIT(5),
2211cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2212cbe63bfdSIskren Chernev 			.name = "gcc_disp_throttle_core_clk",
2213cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2214cbe63bfdSIskren Chernev 		},
2215cbe63bfdSIskren Chernev 	},
2216cbe63bfdSIskren Chernev };
2217cbe63bfdSIskren Chernev 
2218cbe63bfdSIskren Chernev static struct clk_branch gcc_disp_xo_clk = {
2219cbe63bfdSIskren Chernev 	.halt_reg = 0x1702c,
2220cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
2221cbe63bfdSIskren Chernev 	.clkr = {
2222cbe63bfdSIskren Chernev 		.enable_reg = 0x1702c,
2223cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2224cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2225cbe63bfdSIskren Chernev 			.name = "gcc_disp_xo_clk",
2226cbe63bfdSIskren Chernev 			.flags = CLK_IS_CRITICAL,
2227cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2228cbe63bfdSIskren Chernev 		},
2229cbe63bfdSIskren Chernev 	},
2230cbe63bfdSIskren Chernev };
2231cbe63bfdSIskren Chernev 
2232cbe63bfdSIskren Chernev static struct clk_branch gcc_gp1_clk = {
2233cbe63bfdSIskren Chernev 	.halt_reg = 0x4d000,
2234cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
2235cbe63bfdSIskren Chernev 	.clkr = {
2236cbe63bfdSIskren Chernev 		.enable_reg = 0x4d000,
2237cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2238cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2239cbe63bfdSIskren Chernev 			.name = "gcc_gp1_clk",
2240cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
2241cbe63bfdSIskren Chernev 				&gcc_gp1_clk_src.clkr.hw,
2242cbe63bfdSIskren Chernev 			},
2243cbe63bfdSIskren Chernev 			.num_parents = 1,
2244cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
2245cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2246cbe63bfdSIskren Chernev 		},
2247cbe63bfdSIskren Chernev 	},
2248cbe63bfdSIskren Chernev };
2249cbe63bfdSIskren Chernev 
2250cbe63bfdSIskren Chernev static struct clk_branch gcc_gp2_clk = {
2251cbe63bfdSIskren Chernev 	.halt_reg = 0x4e000,
2252cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
2253cbe63bfdSIskren Chernev 	.clkr = {
2254cbe63bfdSIskren Chernev 		.enable_reg = 0x4e000,
2255cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2256cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2257cbe63bfdSIskren Chernev 			.name = "gcc_gp2_clk",
2258cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
2259cbe63bfdSIskren Chernev 				&gcc_gp2_clk_src.clkr.hw,
2260cbe63bfdSIskren Chernev 			},
2261cbe63bfdSIskren Chernev 			.num_parents = 1,
2262cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
2263cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2264cbe63bfdSIskren Chernev 		},
2265cbe63bfdSIskren Chernev 	},
2266cbe63bfdSIskren Chernev };
2267cbe63bfdSIskren Chernev 
2268cbe63bfdSIskren Chernev static struct clk_branch gcc_gp3_clk = {
2269cbe63bfdSIskren Chernev 	.halt_reg = 0x4f000,
2270cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
2271cbe63bfdSIskren Chernev 	.clkr = {
2272cbe63bfdSIskren Chernev 		.enable_reg = 0x4f000,
2273cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2274cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2275cbe63bfdSIskren Chernev 			.name = "gcc_gp3_clk",
2276cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
2277cbe63bfdSIskren Chernev 				&gcc_gp3_clk_src.clkr.hw,
2278cbe63bfdSIskren Chernev 			},
2279cbe63bfdSIskren Chernev 			.num_parents = 1,
2280cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
2281cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2282cbe63bfdSIskren Chernev 		},
2283cbe63bfdSIskren Chernev 	},
2284cbe63bfdSIskren Chernev };
2285cbe63bfdSIskren Chernev 
2286cbe63bfdSIskren Chernev static struct clk_branch gcc_gpu_cfg_ahb_clk = {
2287cbe63bfdSIskren Chernev 	.halt_reg = 0x36004,
2288cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
2289cbe63bfdSIskren Chernev 	.hwcg_reg = 0x36004,
2290cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
2291cbe63bfdSIskren Chernev 	.clkr = {
2292cbe63bfdSIskren Chernev 		.enable_reg = 0x36004,
2293cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2294cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2295cbe63bfdSIskren Chernev 			.name = "gcc_gpu_cfg_ahb_clk",
2296cbe63bfdSIskren Chernev 			.flags = CLK_IS_CRITICAL,
2297cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2298cbe63bfdSIskren Chernev 		},
2299cbe63bfdSIskren Chernev 	},
2300cbe63bfdSIskren Chernev };
2301cbe63bfdSIskren Chernev 
2302cbe63bfdSIskren Chernev static struct clk_branch gcc_gpu_gpll0_clk_src = {
2303cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT_DELAY,
2304cbe63bfdSIskren Chernev 	.clkr = {
2305cbe63bfdSIskren Chernev 		.enable_reg = 0x79004,
2306cbe63bfdSIskren Chernev 		.enable_mask = BIT(15),
2307cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2308cbe63bfdSIskren Chernev 			.name = "gcc_gpu_gpll0_clk_src",
2309cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
2310cbe63bfdSIskren Chernev 				&gpll0.clkr.hw,
2311cbe63bfdSIskren Chernev 			},
2312cbe63bfdSIskren Chernev 			.num_parents = 1,
2313cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
2314cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2315cbe63bfdSIskren Chernev 		},
2316cbe63bfdSIskren Chernev 	},
2317cbe63bfdSIskren Chernev };
2318cbe63bfdSIskren Chernev 
2319cbe63bfdSIskren Chernev static struct clk_branch gcc_gpu_gpll0_div_clk_src = {
2320cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT_DELAY,
2321cbe63bfdSIskren Chernev 	.clkr = {
2322cbe63bfdSIskren Chernev 		.enable_reg = 0x79004,
2323cbe63bfdSIskren Chernev 		.enable_mask = BIT(16),
2324cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2325cbe63bfdSIskren Chernev 			.name = "gcc_gpu_gpll0_div_clk_src",
2326cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
2327cbe63bfdSIskren Chernev 				&gpll0_out_aux2.clkr.hw,
2328cbe63bfdSIskren Chernev 			},
2329cbe63bfdSIskren Chernev 			.num_parents = 1,
2330cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
2331cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2332cbe63bfdSIskren Chernev 		},
2333cbe63bfdSIskren Chernev 	},
2334cbe63bfdSIskren Chernev };
2335cbe63bfdSIskren Chernev 
2336cbe63bfdSIskren Chernev static struct clk_branch gcc_gpu_iref_clk = {
2337cbe63bfdSIskren Chernev 	.halt_reg = 0x36100,
2338cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT_DELAY,
2339cbe63bfdSIskren Chernev 	.clkr = {
2340cbe63bfdSIskren Chernev 		.enable_reg = 0x36100,
2341cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2342cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2343cbe63bfdSIskren Chernev 			.name = "gcc_gpu_iref_clk",
2344cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2345cbe63bfdSIskren Chernev 		},
2346cbe63bfdSIskren Chernev 	},
2347cbe63bfdSIskren Chernev };
2348cbe63bfdSIskren Chernev 
2349cbe63bfdSIskren Chernev static struct clk_branch gcc_gpu_memnoc_gfx_clk = {
2350cbe63bfdSIskren Chernev 	.halt_reg = 0x3600c,
2351cbe63bfdSIskren Chernev 	.halt_check = BRANCH_VOTED,
2352cbe63bfdSIskren Chernev 	.hwcg_reg = 0x3600c,
2353cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
2354cbe63bfdSIskren Chernev 	.clkr = {
2355cbe63bfdSIskren Chernev 		.enable_reg = 0x3600c,
2356cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2357cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2358cbe63bfdSIskren Chernev 			.name = "gcc_gpu_memnoc_gfx_clk",
2359cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2360cbe63bfdSIskren Chernev 		},
2361cbe63bfdSIskren Chernev 	},
2362cbe63bfdSIskren Chernev };
2363cbe63bfdSIskren Chernev 
2364cbe63bfdSIskren Chernev static struct clk_branch gcc_gpu_snoc_dvm_gfx_clk = {
2365cbe63bfdSIskren Chernev 	.halt_reg = 0x36018,
2366cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
2367cbe63bfdSIskren Chernev 	.clkr = {
2368cbe63bfdSIskren Chernev 		.enable_reg = 0x36018,
2369cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2370cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2371cbe63bfdSIskren Chernev 			.name = "gcc_gpu_snoc_dvm_gfx_clk",
2372cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2373cbe63bfdSIskren Chernev 		},
2374cbe63bfdSIskren Chernev 	},
2375cbe63bfdSIskren Chernev };
2376cbe63bfdSIskren Chernev 
2377cbe63bfdSIskren Chernev static struct clk_branch gcc_gpu_throttle_core_clk = {
2378cbe63bfdSIskren Chernev 	.halt_reg = 0x36048,
2379cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT_VOTED,
2380cbe63bfdSIskren Chernev 	.hwcg_reg = 0x36048,
2381cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
2382cbe63bfdSIskren Chernev 	.clkr = {
2383cbe63bfdSIskren Chernev 		.enable_reg = 0x79004,
2384cbe63bfdSIskren Chernev 		.enable_mask = BIT(31),
2385cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2386cbe63bfdSIskren Chernev 			.name = "gcc_gpu_throttle_core_clk",
2387cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2388cbe63bfdSIskren Chernev 		},
2389cbe63bfdSIskren Chernev 	},
2390cbe63bfdSIskren Chernev };
2391cbe63bfdSIskren Chernev 
2392cbe63bfdSIskren Chernev static struct clk_branch gcc_pdm2_clk = {
2393cbe63bfdSIskren Chernev 	.halt_reg = 0x2000c,
2394cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
2395cbe63bfdSIskren Chernev 	.clkr = {
2396cbe63bfdSIskren Chernev 		.enable_reg = 0x2000c,
2397cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2398cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2399cbe63bfdSIskren Chernev 			.name = "gcc_pdm2_clk",
2400cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
2401cbe63bfdSIskren Chernev 				&gcc_pdm2_clk_src.clkr.hw,
2402cbe63bfdSIskren Chernev 			},
2403cbe63bfdSIskren Chernev 			.num_parents = 1,
2404cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
2405cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2406cbe63bfdSIskren Chernev 		},
2407cbe63bfdSIskren Chernev 	},
2408cbe63bfdSIskren Chernev };
2409cbe63bfdSIskren Chernev 
2410cbe63bfdSIskren Chernev static struct clk_branch gcc_pdm_ahb_clk = {
2411cbe63bfdSIskren Chernev 	.halt_reg = 0x20004,
2412cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
2413cbe63bfdSIskren Chernev 	.hwcg_reg = 0x20004,
2414cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
2415cbe63bfdSIskren Chernev 	.clkr = {
2416cbe63bfdSIskren Chernev 		.enable_reg = 0x20004,
2417cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2418cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2419cbe63bfdSIskren Chernev 			.name = "gcc_pdm_ahb_clk",
2420cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2421cbe63bfdSIskren Chernev 		},
2422cbe63bfdSIskren Chernev 	},
2423cbe63bfdSIskren Chernev };
2424cbe63bfdSIskren Chernev 
2425cbe63bfdSIskren Chernev static struct clk_branch gcc_pdm_xo4_clk = {
2426cbe63bfdSIskren Chernev 	.halt_reg = 0x20008,
2427cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
2428cbe63bfdSIskren Chernev 	.clkr = {
2429cbe63bfdSIskren Chernev 		.enable_reg = 0x20008,
2430cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2431cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2432cbe63bfdSIskren Chernev 			.name = "gcc_pdm_xo4_clk",
2433cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2434cbe63bfdSIskren Chernev 		},
2435cbe63bfdSIskren Chernev 	},
2436cbe63bfdSIskren Chernev };
2437cbe63bfdSIskren Chernev 
2438cbe63bfdSIskren Chernev static struct clk_branch gcc_prng_ahb_clk = {
2439cbe63bfdSIskren Chernev 	.halt_reg = 0x21004,
2440cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT_VOTED,
2441cbe63bfdSIskren Chernev 	.hwcg_reg = 0x21004,
2442cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
2443cbe63bfdSIskren Chernev 	.clkr = {
2444cbe63bfdSIskren Chernev 		.enable_reg = 0x79004,
2445cbe63bfdSIskren Chernev 		.enable_mask = BIT(13),
2446cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2447cbe63bfdSIskren Chernev 			.name = "gcc_prng_ahb_clk",
2448cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2449cbe63bfdSIskren Chernev 		},
2450cbe63bfdSIskren Chernev 	},
2451cbe63bfdSIskren Chernev };
2452cbe63bfdSIskren Chernev 
2453cbe63bfdSIskren Chernev static struct clk_branch gcc_qmip_camera_nrt_ahb_clk = {
2454cbe63bfdSIskren Chernev 	.halt_reg = 0x17014,
2455cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT_VOTED,
2456cbe63bfdSIskren Chernev 	.hwcg_reg = 0x17014,
2457cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
2458cbe63bfdSIskren Chernev 	.clkr = {
2459cbe63bfdSIskren Chernev 		.enable_reg = 0x7900c,
2460cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2461cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2462cbe63bfdSIskren Chernev 			.name = "gcc_qmip_camera_nrt_ahb_clk",
2463cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2464cbe63bfdSIskren Chernev 		},
2465cbe63bfdSIskren Chernev 	},
2466cbe63bfdSIskren Chernev };
2467cbe63bfdSIskren Chernev 
2468cbe63bfdSIskren Chernev static struct clk_branch gcc_qmip_camera_rt_ahb_clk = {
2469cbe63bfdSIskren Chernev 	.halt_reg = 0x17060,
2470cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT_VOTED,
2471cbe63bfdSIskren Chernev 	.hwcg_reg = 0x17060,
2472cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
2473cbe63bfdSIskren Chernev 	.clkr = {
2474cbe63bfdSIskren Chernev 		.enable_reg = 0x7900c,
2475cbe63bfdSIskren Chernev 		.enable_mask = BIT(2),
2476cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2477cbe63bfdSIskren Chernev 			.name = "gcc_qmip_camera_rt_ahb_clk",
2478cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2479cbe63bfdSIskren Chernev 		},
2480cbe63bfdSIskren Chernev 	},
2481cbe63bfdSIskren Chernev };
2482cbe63bfdSIskren Chernev 
2483cbe63bfdSIskren Chernev static struct clk_branch gcc_qmip_disp_ahb_clk = {
2484cbe63bfdSIskren Chernev 	.halt_reg = 0x17018,
2485cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT_VOTED,
2486cbe63bfdSIskren Chernev 	.hwcg_reg = 0x17018,
2487cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
2488cbe63bfdSIskren Chernev 	.clkr = {
2489cbe63bfdSIskren Chernev 		.enable_reg = 0x7900c,
2490cbe63bfdSIskren Chernev 		.enable_mask = BIT(1),
2491cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2492cbe63bfdSIskren Chernev 			.name = "gcc_qmip_disp_ahb_clk",
2493cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2494cbe63bfdSIskren Chernev 		},
2495cbe63bfdSIskren Chernev 	},
2496cbe63bfdSIskren Chernev };
2497cbe63bfdSIskren Chernev 
2498cbe63bfdSIskren Chernev static struct clk_branch gcc_qmip_gpu_cfg_ahb_clk = {
2499cbe63bfdSIskren Chernev 	.halt_reg = 0x36040,
2500cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT_VOTED,
2501cbe63bfdSIskren Chernev 	.hwcg_reg = 0x36040,
2502cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
2503cbe63bfdSIskren Chernev 	.clkr = {
2504cbe63bfdSIskren Chernev 		.enable_reg = 0x7900c,
2505cbe63bfdSIskren Chernev 		.enable_mask = BIT(4),
2506cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2507cbe63bfdSIskren Chernev 			.name = "gcc_qmip_gpu_cfg_ahb_clk",
2508cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2509cbe63bfdSIskren Chernev 		},
2510cbe63bfdSIskren Chernev 	},
2511cbe63bfdSIskren Chernev };
2512cbe63bfdSIskren Chernev 
2513cbe63bfdSIskren Chernev static struct clk_branch gcc_qmip_video_vcodec_ahb_clk = {
2514cbe63bfdSIskren Chernev 	.halt_reg = 0x17010,
2515cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT_VOTED,
2516cbe63bfdSIskren Chernev 	.hwcg_reg = 0x17010,
2517cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
2518cbe63bfdSIskren Chernev 	.clkr = {
2519cbe63bfdSIskren Chernev 		.enable_reg = 0x79004,
2520cbe63bfdSIskren Chernev 		.enable_mask = BIT(25),
2521cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2522cbe63bfdSIskren Chernev 			.name = "gcc_qmip_video_vcodec_ahb_clk",
2523cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2524cbe63bfdSIskren Chernev 		},
2525cbe63bfdSIskren Chernev 	},
2526cbe63bfdSIskren Chernev };
2527cbe63bfdSIskren Chernev 
2528cbe63bfdSIskren Chernev static struct clk_branch gcc_qupv3_wrap0_core_2x_clk = {
2529cbe63bfdSIskren Chernev 	.halt_reg = 0x1f014,
2530cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT_VOTED,
2531cbe63bfdSIskren Chernev 	.clkr = {
2532cbe63bfdSIskren Chernev 		.enable_reg = 0x7900c,
2533cbe63bfdSIskren Chernev 		.enable_mask = BIT(9),
2534cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2535cbe63bfdSIskren Chernev 			.name = "gcc_qupv3_wrap0_core_2x_clk",
2536cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2537cbe63bfdSIskren Chernev 		},
2538cbe63bfdSIskren Chernev 	},
2539cbe63bfdSIskren Chernev };
2540cbe63bfdSIskren Chernev 
2541cbe63bfdSIskren Chernev static struct clk_branch gcc_qupv3_wrap0_core_clk = {
2542cbe63bfdSIskren Chernev 	.halt_reg = 0x1f00c,
2543cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT_VOTED,
2544cbe63bfdSIskren Chernev 	.clkr = {
2545cbe63bfdSIskren Chernev 		.enable_reg = 0x7900c,
2546cbe63bfdSIskren Chernev 		.enable_mask = BIT(8),
2547cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2548cbe63bfdSIskren Chernev 			.name = "gcc_qupv3_wrap0_core_clk",
2549cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2550cbe63bfdSIskren Chernev 		},
2551cbe63bfdSIskren Chernev 	},
2552cbe63bfdSIskren Chernev };
2553cbe63bfdSIskren Chernev 
2554cbe63bfdSIskren Chernev static struct clk_branch gcc_qupv3_wrap0_s0_clk = {
2555cbe63bfdSIskren Chernev 	.halt_reg = 0x1f144,
2556cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT_VOTED,
2557cbe63bfdSIskren Chernev 	.clkr = {
2558cbe63bfdSIskren Chernev 		.enable_reg = 0x7900c,
2559cbe63bfdSIskren Chernev 		.enable_mask = BIT(10),
2560cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2561cbe63bfdSIskren Chernev 			.name = "gcc_qupv3_wrap0_s0_clk",
2562cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
2563cbe63bfdSIskren Chernev 				&gcc_qupv3_wrap0_s0_clk_src.clkr.hw,
2564cbe63bfdSIskren Chernev 			},
2565cbe63bfdSIskren Chernev 			.num_parents = 1,
2566cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
2567cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2568cbe63bfdSIskren Chernev 		},
2569cbe63bfdSIskren Chernev 	},
2570cbe63bfdSIskren Chernev };
2571cbe63bfdSIskren Chernev 
2572cbe63bfdSIskren Chernev static struct clk_branch gcc_qupv3_wrap0_s1_clk = {
2573cbe63bfdSIskren Chernev 	.halt_reg = 0x1f274,
2574cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT_VOTED,
2575cbe63bfdSIskren Chernev 	.clkr = {
2576cbe63bfdSIskren Chernev 		.enable_reg = 0x7900c,
2577cbe63bfdSIskren Chernev 		.enable_mask = BIT(11),
2578cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2579cbe63bfdSIskren Chernev 			.name = "gcc_qupv3_wrap0_s1_clk",
2580cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
2581cbe63bfdSIskren Chernev 				&gcc_qupv3_wrap0_s1_clk_src.clkr.hw,
2582cbe63bfdSIskren Chernev 			},
2583cbe63bfdSIskren Chernev 			.num_parents = 1,
2584cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
2585cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2586cbe63bfdSIskren Chernev 		},
2587cbe63bfdSIskren Chernev 	},
2588cbe63bfdSIskren Chernev };
2589cbe63bfdSIskren Chernev 
2590cbe63bfdSIskren Chernev static struct clk_branch gcc_qupv3_wrap0_s2_clk = {
2591cbe63bfdSIskren Chernev 	.halt_reg = 0x1f3a4,
2592cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT_VOTED,
2593cbe63bfdSIskren Chernev 	.clkr = {
2594cbe63bfdSIskren Chernev 		.enable_reg = 0x7900c,
2595cbe63bfdSIskren Chernev 		.enable_mask = BIT(12),
2596cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2597cbe63bfdSIskren Chernev 			.name = "gcc_qupv3_wrap0_s2_clk",
2598cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
2599cbe63bfdSIskren Chernev 				&gcc_qupv3_wrap0_s2_clk_src.clkr.hw,
2600cbe63bfdSIskren Chernev 			},
2601cbe63bfdSIskren Chernev 			.num_parents = 1,
2602cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
2603cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2604cbe63bfdSIskren Chernev 		},
2605cbe63bfdSIskren Chernev 	},
2606cbe63bfdSIskren Chernev };
2607cbe63bfdSIskren Chernev 
2608cbe63bfdSIskren Chernev static struct clk_branch gcc_qupv3_wrap0_s3_clk = {
2609cbe63bfdSIskren Chernev 	.halt_reg = 0x1f4d4,
2610cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT_VOTED,
2611cbe63bfdSIskren Chernev 	.clkr = {
2612cbe63bfdSIskren Chernev 		.enable_reg = 0x7900c,
2613cbe63bfdSIskren Chernev 		.enable_mask = BIT(13),
2614cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2615cbe63bfdSIskren Chernev 			.name = "gcc_qupv3_wrap0_s3_clk",
2616cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
2617cbe63bfdSIskren Chernev 				&gcc_qupv3_wrap0_s3_clk_src.clkr.hw,
2618cbe63bfdSIskren Chernev 			},
2619cbe63bfdSIskren Chernev 			.num_parents = 1,
2620cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
2621cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2622cbe63bfdSIskren Chernev 		},
2623cbe63bfdSIskren Chernev 	},
2624cbe63bfdSIskren Chernev };
2625cbe63bfdSIskren Chernev 
2626cbe63bfdSIskren Chernev static struct clk_branch gcc_qupv3_wrap0_s4_clk = {
2627cbe63bfdSIskren Chernev 	.halt_reg = 0x1f604,
2628cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT_VOTED,
2629cbe63bfdSIskren Chernev 	.clkr = {
2630cbe63bfdSIskren Chernev 		.enable_reg = 0x7900c,
2631cbe63bfdSIskren Chernev 		.enable_mask = BIT(14),
2632cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2633cbe63bfdSIskren Chernev 			.name = "gcc_qupv3_wrap0_s4_clk",
2634cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
2635cbe63bfdSIskren Chernev 				&gcc_qupv3_wrap0_s4_clk_src.clkr.hw,
2636cbe63bfdSIskren Chernev 			},
2637cbe63bfdSIskren Chernev 			.num_parents = 1,
2638cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
2639cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2640cbe63bfdSIskren Chernev 		},
2641cbe63bfdSIskren Chernev 	},
2642cbe63bfdSIskren Chernev };
2643cbe63bfdSIskren Chernev 
2644cbe63bfdSIskren Chernev static struct clk_branch gcc_qupv3_wrap0_s5_clk = {
2645cbe63bfdSIskren Chernev 	.halt_reg = 0x1f734,
2646cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT_VOTED,
2647cbe63bfdSIskren Chernev 	.clkr = {
2648cbe63bfdSIskren Chernev 		.enable_reg = 0x7900c,
2649cbe63bfdSIskren Chernev 		.enable_mask = BIT(15),
2650cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2651cbe63bfdSIskren Chernev 			.name = "gcc_qupv3_wrap0_s5_clk",
2652cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
2653cbe63bfdSIskren Chernev 				&gcc_qupv3_wrap0_s5_clk_src.clkr.hw,
2654cbe63bfdSIskren Chernev 			},
2655cbe63bfdSIskren Chernev 			.num_parents = 1,
2656cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
2657cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2658cbe63bfdSIskren Chernev 		},
2659cbe63bfdSIskren Chernev 	},
2660cbe63bfdSIskren Chernev };
2661cbe63bfdSIskren Chernev 
2662cbe63bfdSIskren Chernev static struct clk_branch gcc_qupv3_wrap_0_m_ahb_clk = {
2663cbe63bfdSIskren Chernev 	.halt_reg = 0x1f004,
2664cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT_VOTED,
2665cbe63bfdSIskren Chernev 	.hwcg_reg = 0x1f004,
2666cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
2667cbe63bfdSIskren Chernev 	.clkr = {
2668cbe63bfdSIskren Chernev 		.enable_reg = 0x7900c,
2669cbe63bfdSIskren Chernev 		.enable_mask = BIT(6),
2670cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2671cbe63bfdSIskren Chernev 			.name = "gcc_qupv3_wrap_0_m_ahb_clk",
2672cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2673cbe63bfdSIskren Chernev 		},
2674cbe63bfdSIskren Chernev 	},
2675cbe63bfdSIskren Chernev };
2676cbe63bfdSIskren Chernev 
2677cbe63bfdSIskren Chernev static struct clk_branch gcc_qupv3_wrap_0_s_ahb_clk = {
2678cbe63bfdSIskren Chernev 	.halt_reg = 0x1f008,
2679cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT_VOTED,
2680cbe63bfdSIskren Chernev 	.hwcg_reg = 0x1f008,
2681cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
2682cbe63bfdSIskren Chernev 	.clkr = {
2683cbe63bfdSIskren Chernev 		.enable_reg = 0x7900c,
2684cbe63bfdSIskren Chernev 		.enable_mask = BIT(7),
2685cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2686cbe63bfdSIskren Chernev 			.name = "gcc_qupv3_wrap_0_s_ahb_clk",
2687cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2688cbe63bfdSIskren Chernev 		},
2689cbe63bfdSIskren Chernev 	},
2690cbe63bfdSIskren Chernev };
2691cbe63bfdSIskren Chernev 
2692cbe63bfdSIskren Chernev static struct clk_branch gcc_sdcc1_ahb_clk = {
2693cbe63bfdSIskren Chernev 	.halt_reg = 0x38008,
2694cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
2695cbe63bfdSIskren Chernev 	.clkr = {
2696cbe63bfdSIskren Chernev 		.enable_reg = 0x38008,
2697cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2698cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2699cbe63bfdSIskren Chernev 			.name = "gcc_sdcc1_ahb_clk",
2700cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2701cbe63bfdSIskren Chernev 		},
2702cbe63bfdSIskren Chernev 	},
2703cbe63bfdSIskren Chernev };
2704cbe63bfdSIskren Chernev 
2705cbe63bfdSIskren Chernev static struct clk_branch gcc_sdcc1_apps_clk = {
2706cbe63bfdSIskren Chernev 	.halt_reg = 0x38004,
2707cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
2708cbe63bfdSIskren Chernev 	.clkr = {
2709cbe63bfdSIskren Chernev 		.enable_reg = 0x38004,
2710cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2711cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2712cbe63bfdSIskren Chernev 			.name = "gcc_sdcc1_apps_clk",
2713cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
2714cbe63bfdSIskren Chernev 				&gcc_sdcc1_apps_clk_src.clkr.hw,
2715cbe63bfdSIskren Chernev 			},
2716cbe63bfdSIskren Chernev 			.num_parents = 1,
2717cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT /* | CLK_ENABLE_HAND_OFF */,
2718cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2719cbe63bfdSIskren Chernev 		},
2720cbe63bfdSIskren Chernev 	},
2721cbe63bfdSIskren Chernev };
2722cbe63bfdSIskren Chernev 
2723cbe63bfdSIskren Chernev static struct clk_branch gcc_sdcc1_ice_core_clk = {
2724cbe63bfdSIskren Chernev 	.halt_reg = 0x3800c,
2725cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
2726cbe63bfdSIskren Chernev 	.hwcg_reg = 0x3800c,
2727cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
2728cbe63bfdSIskren Chernev 	.clkr = {
2729cbe63bfdSIskren Chernev 		.enable_reg = 0x3800c,
2730cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2731cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2732cbe63bfdSIskren Chernev 			.name = "gcc_sdcc1_ice_core_clk",
2733cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
2734cbe63bfdSIskren Chernev 				&gcc_sdcc1_ice_core_clk_src.clkr.hw,
2735cbe63bfdSIskren Chernev 			},
2736cbe63bfdSIskren Chernev 			.num_parents = 1,
2737cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
2738cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2739cbe63bfdSIskren Chernev 		},
2740cbe63bfdSIskren Chernev 	},
2741cbe63bfdSIskren Chernev };
2742cbe63bfdSIskren Chernev 
2743cbe63bfdSIskren Chernev static struct clk_branch gcc_sdcc2_ahb_clk = {
2744cbe63bfdSIskren Chernev 	.halt_reg = 0x1e008,
2745cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
2746cbe63bfdSIskren Chernev 	.clkr = {
2747cbe63bfdSIskren Chernev 		.enable_reg = 0x1e008,
2748cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2749cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2750cbe63bfdSIskren Chernev 			.name = "gcc_sdcc2_ahb_clk",
2751cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2752cbe63bfdSIskren Chernev 		},
2753cbe63bfdSIskren Chernev 	},
2754cbe63bfdSIskren Chernev };
2755cbe63bfdSIskren Chernev 
2756cbe63bfdSIskren Chernev static struct clk_branch gcc_sdcc2_apps_clk = {
2757cbe63bfdSIskren Chernev 	.halt_reg = 0x1e004,
2758cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
2759cbe63bfdSIskren Chernev 	.clkr = {
2760cbe63bfdSIskren Chernev 		.enable_reg = 0x1e004,
2761cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2762cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2763cbe63bfdSIskren Chernev 			.name = "gcc_sdcc2_apps_clk",
2764cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
2765cbe63bfdSIskren Chernev 				&gcc_sdcc2_apps_clk_src.clkr.hw,
2766cbe63bfdSIskren Chernev 			},
2767cbe63bfdSIskren Chernev 			.num_parents = 1,
2768cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
2769cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2770cbe63bfdSIskren Chernev 		},
2771cbe63bfdSIskren Chernev 	},
2772cbe63bfdSIskren Chernev };
2773cbe63bfdSIskren Chernev 
2774cbe63bfdSIskren Chernev static struct clk_branch gcc_sys_noc_cpuss_ahb_clk = {
2775cbe63bfdSIskren Chernev 	.halt_reg = 0x2b06c,
2776cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT_VOTED,
2777cbe63bfdSIskren Chernev 	.hwcg_reg = 0x2b06c,
2778cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
2779cbe63bfdSIskren Chernev 	.clkr = {
2780cbe63bfdSIskren Chernev 		.enable_reg = 0x79004,
2781cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2782cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2783cbe63bfdSIskren Chernev 			.name = "gcc_sys_noc_cpuss_ahb_clk",
2784cbe63bfdSIskren Chernev 			.flags = CLK_IS_CRITICAL,
2785cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2786cbe63bfdSIskren Chernev 		},
2787cbe63bfdSIskren Chernev 	},
2788cbe63bfdSIskren Chernev };
2789cbe63bfdSIskren Chernev 
2790cbe63bfdSIskren Chernev static struct clk_branch gcc_sys_noc_ufs_phy_axi_clk = {
2791cbe63bfdSIskren Chernev 	.halt_reg = 0x45098,
2792cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
2793cbe63bfdSIskren Chernev 	.clkr = {
2794cbe63bfdSIskren Chernev 		.enable_reg = 0x45098,
2795cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2796cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2797cbe63bfdSIskren Chernev 			.name = "gcc_sys_noc_ufs_phy_axi_clk",
2798cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
2799cbe63bfdSIskren Chernev 				&gcc_ufs_phy_axi_clk_src.clkr.hw,
2800cbe63bfdSIskren Chernev 			},
2801cbe63bfdSIskren Chernev 			.num_parents = 1,
2802cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
2803cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2804cbe63bfdSIskren Chernev 		},
2805cbe63bfdSIskren Chernev 	},
2806cbe63bfdSIskren Chernev };
2807cbe63bfdSIskren Chernev 
2808cbe63bfdSIskren Chernev static struct clk_branch gcc_sys_noc_usb3_prim_axi_clk = {
2809cbe63bfdSIskren Chernev 	.halt_reg = 0x1a080,
2810cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
2811cbe63bfdSIskren Chernev 	.hwcg_reg = 0x1a080,
2812cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
2813cbe63bfdSIskren Chernev 	.clkr = {
2814cbe63bfdSIskren Chernev 		.enable_reg = 0x1a080,
2815cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2816cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2817cbe63bfdSIskren Chernev 			.name = "gcc_sys_noc_usb3_prim_axi_clk",
2818cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
2819cbe63bfdSIskren Chernev 				&gcc_usb30_prim_master_clk_src.clkr.hw,
2820cbe63bfdSIskren Chernev 			},
2821cbe63bfdSIskren Chernev 			.num_parents = 1,
2822cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
2823cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2824cbe63bfdSIskren Chernev 		},
2825cbe63bfdSIskren Chernev 	},
2826cbe63bfdSIskren Chernev };
2827cbe63bfdSIskren Chernev 
2828cbe63bfdSIskren Chernev static struct clk_branch gcc_ufs_clkref_clk = {
2829cbe63bfdSIskren Chernev 	.halt_reg = 0x8c000,
2830cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
2831cbe63bfdSIskren Chernev 	.clkr = {
2832cbe63bfdSIskren Chernev 		.enable_reg = 0x8c000,
2833cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2834cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2835cbe63bfdSIskren Chernev 			.name = "gcc_ufs_clkref_clk",
2836cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2837cbe63bfdSIskren Chernev 		},
2838cbe63bfdSIskren Chernev 	},
2839cbe63bfdSIskren Chernev };
2840cbe63bfdSIskren Chernev 
2841cbe63bfdSIskren Chernev static struct clk_branch gcc_ufs_phy_ahb_clk = {
2842cbe63bfdSIskren Chernev 	.halt_reg = 0x45014,
2843cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
2844cbe63bfdSIskren Chernev 	.hwcg_reg = 0x45014,
2845cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
2846cbe63bfdSIskren Chernev 	.clkr = {
2847cbe63bfdSIskren Chernev 		.enable_reg = 0x45014,
2848cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2849cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2850cbe63bfdSIskren Chernev 			.name = "gcc_ufs_phy_ahb_clk",
2851cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2852cbe63bfdSIskren Chernev 		},
2853cbe63bfdSIskren Chernev 	},
2854cbe63bfdSIskren Chernev };
2855cbe63bfdSIskren Chernev 
2856cbe63bfdSIskren Chernev static struct clk_branch gcc_ufs_phy_axi_clk = {
2857cbe63bfdSIskren Chernev 	.halt_reg = 0x45010,
2858cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
2859cbe63bfdSIskren Chernev 	.hwcg_reg = 0x45010,
2860cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
2861cbe63bfdSIskren Chernev 	.clkr = {
2862cbe63bfdSIskren Chernev 		.enable_reg = 0x45010,
2863cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2864cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2865cbe63bfdSIskren Chernev 			.name = "gcc_ufs_phy_axi_clk",
2866cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
2867cbe63bfdSIskren Chernev 				&gcc_ufs_phy_axi_clk_src.clkr.hw,
2868cbe63bfdSIskren Chernev 			},
2869cbe63bfdSIskren Chernev 			.num_parents = 1,
2870cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
2871cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2872cbe63bfdSIskren Chernev 		},
2873cbe63bfdSIskren Chernev 	},
2874cbe63bfdSIskren Chernev };
2875cbe63bfdSIskren Chernev 
2876cbe63bfdSIskren Chernev static struct clk_branch gcc_ufs_phy_ice_core_clk = {
2877cbe63bfdSIskren Chernev 	.halt_reg = 0x45044,
2878cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
2879cbe63bfdSIskren Chernev 	.hwcg_reg = 0x45044,
2880cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
2881cbe63bfdSIskren Chernev 	.clkr = {
2882cbe63bfdSIskren Chernev 		.enable_reg = 0x45044,
2883cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2884cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2885cbe63bfdSIskren Chernev 			.name = "gcc_ufs_phy_ice_core_clk",
2886cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
2887cbe63bfdSIskren Chernev 				&gcc_ufs_phy_ice_core_clk_src.clkr.hw,
2888cbe63bfdSIskren Chernev 			},
2889cbe63bfdSIskren Chernev 			.num_parents = 1,
2890cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
2891cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2892cbe63bfdSIskren Chernev 		},
2893cbe63bfdSIskren Chernev 	},
2894cbe63bfdSIskren Chernev };
2895cbe63bfdSIskren Chernev 
2896cbe63bfdSIskren Chernev static struct clk_branch gcc_ufs_phy_phy_aux_clk = {
2897cbe63bfdSIskren Chernev 	.halt_reg = 0x45078,
2898cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
2899cbe63bfdSIskren Chernev 	.hwcg_reg = 0x45078,
2900cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
2901cbe63bfdSIskren Chernev 	.clkr = {
2902cbe63bfdSIskren Chernev 		.enable_reg = 0x45078,
2903cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2904cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2905cbe63bfdSIskren Chernev 			.name = "gcc_ufs_phy_phy_aux_clk",
2906cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
2907cbe63bfdSIskren Chernev 				&gcc_ufs_phy_phy_aux_clk_src.clkr.hw,
2908cbe63bfdSIskren Chernev 			},
2909cbe63bfdSIskren Chernev 			.num_parents = 1,
2910cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
2911cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2912cbe63bfdSIskren Chernev 		},
2913cbe63bfdSIskren Chernev 	},
2914cbe63bfdSIskren Chernev };
2915cbe63bfdSIskren Chernev 
2916cbe63bfdSIskren Chernev static struct clk_branch gcc_ufs_phy_rx_symbol_0_clk = {
2917cbe63bfdSIskren Chernev 	.halt_reg = 0x4501c,
2918cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT_SKIP,
2919cbe63bfdSIskren Chernev 	.clkr = {
2920cbe63bfdSIskren Chernev 		.enable_reg = 0x4501c,
2921cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2922cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2923cbe63bfdSIskren Chernev 			.name = "gcc_ufs_phy_rx_symbol_0_clk",
2924cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2925cbe63bfdSIskren Chernev 		},
2926cbe63bfdSIskren Chernev 	},
2927cbe63bfdSIskren Chernev };
2928cbe63bfdSIskren Chernev 
2929cbe63bfdSIskren Chernev static struct clk_branch gcc_ufs_phy_tx_symbol_0_clk = {
2930cbe63bfdSIskren Chernev 	.halt_reg = 0x45018,
2931cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT_SKIP,
2932cbe63bfdSIskren Chernev 	.clkr = {
2933cbe63bfdSIskren Chernev 		.enable_reg = 0x45018,
2934cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2935cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2936cbe63bfdSIskren Chernev 			.name = "gcc_ufs_phy_tx_symbol_0_clk",
2937cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2938cbe63bfdSIskren Chernev 		},
2939cbe63bfdSIskren Chernev 	},
2940cbe63bfdSIskren Chernev };
2941cbe63bfdSIskren Chernev 
2942cbe63bfdSIskren Chernev static struct clk_branch gcc_ufs_phy_unipro_core_clk = {
2943cbe63bfdSIskren Chernev 	.halt_reg = 0x45040,
2944cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
2945cbe63bfdSIskren Chernev 	.hwcg_reg = 0x45040,
2946cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
2947cbe63bfdSIskren Chernev 	.clkr = {
2948cbe63bfdSIskren Chernev 		.enable_reg = 0x45040,
2949cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2950cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2951cbe63bfdSIskren Chernev 			.name = "gcc_ufs_phy_unipro_core_clk",
2952cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
2953cbe63bfdSIskren Chernev 				&gcc_ufs_phy_unipro_core_clk_src.clkr.hw,
2954cbe63bfdSIskren Chernev 			},
2955cbe63bfdSIskren Chernev 			.num_parents = 1,
2956cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
2957cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2958cbe63bfdSIskren Chernev 		},
2959cbe63bfdSIskren Chernev 	},
2960cbe63bfdSIskren Chernev };
2961cbe63bfdSIskren Chernev 
2962cbe63bfdSIskren Chernev static struct clk_branch gcc_usb30_prim_master_clk = {
2963cbe63bfdSIskren Chernev 	.halt_reg = 0x1a010,
2964cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
2965cbe63bfdSIskren Chernev 	.clkr = {
2966cbe63bfdSIskren Chernev 		.enable_reg = 0x1a010,
2967cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2968cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2969cbe63bfdSIskren Chernev 			.name = "gcc_usb30_prim_master_clk",
2970cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
2971cbe63bfdSIskren Chernev 				&gcc_usb30_prim_master_clk_src.clkr.hw,
2972cbe63bfdSIskren Chernev 			},
2973cbe63bfdSIskren Chernev 			.num_parents = 1,
2974cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
2975cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2976cbe63bfdSIskren Chernev 		},
2977cbe63bfdSIskren Chernev 	},
2978cbe63bfdSIskren Chernev };
2979cbe63bfdSIskren Chernev 
2980cbe63bfdSIskren Chernev static struct clk_branch gcc_usb30_prim_mock_utmi_clk = {
2981cbe63bfdSIskren Chernev 	.halt_reg = 0x1a018,
2982cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
2983cbe63bfdSIskren Chernev 	.clkr = {
2984cbe63bfdSIskren Chernev 		.enable_reg = 0x1a018,
2985cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
2986cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
2987cbe63bfdSIskren Chernev 			.name = "gcc_usb30_prim_mock_utmi_clk",
2988cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
2989cbe63bfdSIskren Chernev 				&gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr.hw,
2990cbe63bfdSIskren Chernev 			},
2991cbe63bfdSIskren Chernev 			.num_parents = 1,
2992cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
2993cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
2994cbe63bfdSIskren Chernev 		},
2995cbe63bfdSIskren Chernev 	},
2996cbe63bfdSIskren Chernev };
2997cbe63bfdSIskren Chernev 
2998cbe63bfdSIskren Chernev static struct clk_branch gcc_usb30_prim_sleep_clk = {
2999cbe63bfdSIskren Chernev 	.halt_reg = 0x1a014,
3000cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
3001cbe63bfdSIskren Chernev 	.clkr = {
3002cbe63bfdSIskren Chernev 		.enable_reg = 0x1a014,
3003cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
3004cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
3005cbe63bfdSIskren Chernev 			.name = "gcc_usb30_prim_sleep_clk",
3006cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
3007cbe63bfdSIskren Chernev 		},
3008cbe63bfdSIskren Chernev 	},
3009cbe63bfdSIskren Chernev };
3010cbe63bfdSIskren Chernev 
3011cbe63bfdSIskren Chernev static struct clk_branch gcc_usb3_prim_clkref_clk = {
3012cbe63bfdSIskren Chernev 	.halt_reg = 0x9f000,
3013cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
3014cbe63bfdSIskren Chernev 	.clkr = {
3015cbe63bfdSIskren Chernev 		.enable_reg = 0x9f000,
3016cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
3017cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
3018cbe63bfdSIskren Chernev 			.name = "gcc_usb3_prim_clkref_clk",
3019cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
3020cbe63bfdSIskren Chernev 		},
3021cbe63bfdSIskren Chernev 	},
3022cbe63bfdSIskren Chernev };
3023cbe63bfdSIskren Chernev 
3024cbe63bfdSIskren Chernev static struct clk_branch gcc_usb3_prim_phy_com_aux_clk = {
3025cbe63bfdSIskren Chernev 	.halt_reg = 0x1a054,
3026cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
3027cbe63bfdSIskren Chernev 	.clkr = {
3028cbe63bfdSIskren Chernev 		.enable_reg = 0x1a054,
3029cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
3030cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
3031cbe63bfdSIskren Chernev 			.name = "gcc_usb3_prim_phy_com_aux_clk",
3032cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
3033cbe63bfdSIskren Chernev 				&gcc_usb3_prim_phy_aux_clk_src.clkr.hw,
3034cbe63bfdSIskren Chernev 			},
3035cbe63bfdSIskren Chernev 			.num_parents = 1,
3036cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
3037cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
3038cbe63bfdSIskren Chernev 		},
3039cbe63bfdSIskren Chernev 	},
3040cbe63bfdSIskren Chernev };
3041cbe63bfdSIskren Chernev 
3042cbe63bfdSIskren Chernev static struct clk_branch gcc_usb3_prim_phy_pipe_clk = {
3043cbe63bfdSIskren Chernev 	.halt_reg = 0x1a058,
3044cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT_SKIP,
3045cbe63bfdSIskren Chernev 	.hwcg_reg = 0x1a058,
3046cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
3047cbe63bfdSIskren Chernev 	.clkr = {
3048cbe63bfdSIskren Chernev 		.enable_reg = 0x1a058,
3049cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
3050cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
3051cbe63bfdSIskren Chernev 			.name = "gcc_usb3_prim_phy_pipe_clk",
3052cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
3053cbe63bfdSIskren Chernev 		},
3054cbe63bfdSIskren Chernev 	},
3055cbe63bfdSIskren Chernev };
3056cbe63bfdSIskren Chernev 
3057cbe63bfdSIskren Chernev static struct clk_branch gcc_vcodec0_axi_clk = {
3058cbe63bfdSIskren Chernev 	.halt_reg = 0x6e008,
3059cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
3060cbe63bfdSIskren Chernev 	.clkr = {
3061cbe63bfdSIskren Chernev 		.enable_reg = 0x6e008,
3062cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
3063cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
3064cbe63bfdSIskren Chernev 			.name = "gcc_vcodec0_axi_clk",
3065cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
3066cbe63bfdSIskren Chernev 		},
3067cbe63bfdSIskren Chernev 	},
3068cbe63bfdSIskren Chernev };
3069cbe63bfdSIskren Chernev 
3070cbe63bfdSIskren Chernev static struct clk_branch gcc_venus_ahb_clk = {
3071cbe63bfdSIskren Chernev 	.halt_reg = 0x6e010,
3072cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
3073cbe63bfdSIskren Chernev 	.clkr = {
3074cbe63bfdSIskren Chernev 		.enable_reg = 0x6e010,
3075cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
3076cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
3077cbe63bfdSIskren Chernev 			.name = "gcc_venus_ahb_clk",
3078cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
3079cbe63bfdSIskren Chernev 		},
3080cbe63bfdSIskren Chernev 	},
3081cbe63bfdSIskren Chernev };
3082cbe63bfdSIskren Chernev 
3083cbe63bfdSIskren Chernev static struct clk_branch gcc_venus_ctl_axi_clk = {
3084cbe63bfdSIskren Chernev 	.halt_reg = 0x6e004,
3085cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
3086cbe63bfdSIskren Chernev 	.clkr = {
3087cbe63bfdSIskren Chernev 		.enable_reg = 0x6e004,
3088cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
3089cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
3090cbe63bfdSIskren Chernev 			.name = "gcc_venus_ctl_axi_clk",
3091cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
3092cbe63bfdSIskren Chernev 		},
3093cbe63bfdSIskren Chernev 	},
3094cbe63bfdSIskren Chernev };
3095cbe63bfdSIskren Chernev 
3096cbe63bfdSIskren Chernev static struct clk_branch gcc_video_ahb_clk = {
3097cbe63bfdSIskren Chernev 	.halt_reg = 0x17004,
3098cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
3099cbe63bfdSIskren Chernev 	.hwcg_reg = 0x17004,
3100cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
3101cbe63bfdSIskren Chernev 	.clkr = {
3102cbe63bfdSIskren Chernev 		.enable_reg = 0x17004,
3103cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
3104cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
3105cbe63bfdSIskren Chernev 			.name = "gcc_video_ahb_clk",
3106cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
3107cbe63bfdSIskren Chernev 		},
3108cbe63bfdSIskren Chernev 	},
3109cbe63bfdSIskren Chernev };
3110cbe63bfdSIskren Chernev 
3111cbe63bfdSIskren Chernev static struct clk_branch gcc_video_axi0_clk = {
3112cbe63bfdSIskren Chernev 	.halt_reg = 0x1701c,
3113cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
3114cbe63bfdSIskren Chernev 	.hwcg_reg = 0x1701c,
3115cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
3116cbe63bfdSIskren Chernev 	.clkr = {
3117cbe63bfdSIskren Chernev 		.enable_reg = 0x1701c,
3118cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
3119cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
3120cbe63bfdSIskren Chernev 			.name = "gcc_video_axi0_clk",
3121cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
3122cbe63bfdSIskren Chernev 		},
3123cbe63bfdSIskren Chernev 	},
3124cbe63bfdSIskren Chernev };
3125cbe63bfdSIskren Chernev 
3126cbe63bfdSIskren Chernev static struct clk_branch gcc_video_throttle_core_clk = {
3127cbe63bfdSIskren Chernev 	.halt_reg = 0x17068,
3128cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT_VOTED,
3129cbe63bfdSIskren Chernev 	.hwcg_reg = 0x17068,
3130cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
3131cbe63bfdSIskren Chernev 	.clkr = {
3132cbe63bfdSIskren Chernev 		.enable_reg = 0x79004,
3133cbe63bfdSIskren Chernev 		.enable_mask = BIT(28),
3134cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
3135cbe63bfdSIskren Chernev 			.name = "gcc_video_throttle_core_clk",
3136cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
3137cbe63bfdSIskren Chernev 		},
3138cbe63bfdSIskren Chernev 	},
3139cbe63bfdSIskren Chernev };
3140cbe63bfdSIskren Chernev 
3141cbe63bfdSIskren Chernev static struct clk_branch gcc_video_vcodec0_sys_clk = {
3142cbe63bfdSIskren Chernev 	.halt_reg = 0x580a4,
3143cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT_DELAY,
3144cbe63bfdSIskren Chernev 	.hwcg_reg = 0x580a4,
3145cbe63bfdSIskren Chernev 	.hwcg_bit = 1,
3146cbe63bfdSIskren Chernev 	.clkr = {
3147cbe63bfdSIskren Chernev 		.enable_reg = 0x580a4,
3148cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
3149cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
3150cbe63bfdSIskren Chernev 			.name = "gcc_video_vcodec0_sys_clk",
3151cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
3152cbe63bfdSIskren Chernev 				&gcc_video_venus_clk_src.clkr.hw,
3153cbe63bfdSIskren Chernev 			},
3154cbe63bfdSIskren Chernev 			.num_parents = 1,
3155cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
3156cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
3157cbe63bfdSIskren Chernev 		},
3158cbe63bfdSIskren Chernev 	},
3159cbe63bfdSIskren Chernev };
3160cbe63bfdSIskren Chernev 
3161cbe63bfdSIskren Chernev static struct clk_branch gcc_video_venus_ctl_clk = {
3162cbe63bfdSIskren Chernev 	.halt_reg = 0x5808c,
3163cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
3164cbe63bfdSIskren Chernev 	.clkr = {
3165cbe63bfdSIskren Chernev 		.enable_reg = 0x5808c,
3166cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
3167cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
3168cbe63bfdSIskren Chernev 			.name = "gcc_video_venus_ctl_clk",
3169cbe63bfdSIskren Chernev 			.parent_hws = (const struct clk_hw *[]){
3170cbe63bfdSIskren Chernev 				&gcc_video_venus_clk_src.clkr.hw,
3171cbe63bfdSIskren Chernev 			},
3172cbe63bfdSIskren Chernev 			.num_parents = 1,
3173cbe63bfdSIskren Chernev 			.flags = CLK_SET_RATE_PARENT,
3174cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
3175cbe63bfdSIskren Chernev 		},
3176cbe63bfdSIskren Chernev 	},
3177cbe63bfdSIskren Chernev };
3178cbe63bfdSIskren Chernev 
3179cbe63bfdSIskren Chernev static struct clk_branch gcc_video_xo_clk = {
3180cbe63bfdSIskren Chernev 	.halt_reg = 0x17024,
3181cbe63bfdSIskren Chernev 	.halt_check = BRANCH_HALT,
3182cbe63bfdSIskren Chernev 	.clkr = {
3183cbe63bfdSIskren Chernev 		.enable_reg = 0x17024,
3184cbe63bfdSIskren Chernev 		.enable_mask = BIT(0),
3185cbe63bfdSIskren Chernev 		.hw.init = &(struct clk_init_data){
3186cbe63bfdSIskren Chernev 			.name = "gcc_video_xo_clk",
3187cbe63bfdSIskren Chernev 			.ops = &clk_branch2_ops,
3188cbe63bfdSIskren Chernev 		},
3189cbe63bfdSIskren Chernev 	},
3190cbe63bfdSIskren Chernev };
3191cbe63bfdSIskren Chernev 
3192cbe63bfdSIskren Chernev static struct gdsc gcc_camss_top_gdsc = {
3193cbe63bfdSIskren Chernev 	.gdscr = 0x58004,
3194cbe63bfdSIskren Chernev 	.pd = {
3195cbe63bfdSIskren Chernev 		.name = "gcc_camss_top",
3196cbe63bfdSIskren Chernev 	},
3197cbe63bfdSIskren Chernev 	.pwrsts = PWRSTS_OFF_ON,
3198cbe63bfdSIskren Chernev };
3199cbe63bfdSIskren Chernev 
3200cbe63bfdSIskren Chernev static struct gdsc gcc_ufs_phy_gdsc = {
3201cbe63bfdSIskren Chernev 	.gdscr = 0x45004,
3202cbe63bfdSIskren Chernev 	.pd = {
3203cbe63bfdSIskren Chernev 		.name = "gcc_ufs_phy",
3204cbe63bfdSIskren Chernev 	},
3205cbe63bfdSIskren Chernev 	.pwrsts = PWRSTS_OFF_ON,
3206cbe63bfdSIskren Chernev };
3207cbe63bfdSIskren Chernev 
3208cbe63bfdSIskren Chernev static struct gdsc gcc_usb30_prim_gdsc = {
3209cbe63bfdSIskren Chernev 	.gdscr = 0x1a004,
3210cbe63bfdSIskren Chernev 	.pd = {
3211cbe63bfdSIskren Chernev 		.name = "gcc_usb30_prim",
3212cbe63bfdSIskren Chernev 	},
3213cbe63bfdSIskren Chernev 	.pwrsts = PWRSTS_OFF_ON,
3214cbe63bfdSIskren Chernev };
3215cbe63bfdSIskren Chernev 
3216cbe63bfdSIskren Chernev static struct gdsc gcc_vcodec0_gdsc = {
3217cbe63bfdSIskren Chernev 	.gdscr = 0x58098,
3218cbe63bfdSIskren Chernev 	.pd = {
3219cbe63bfdSIskren Chernev 		.name = "gcc_vcodec0",
3220cbe63bfdSIskren Chernev 	},
3221cbe63bfdSIskren Chernev 	.pwrsts = PWRSTS_OFF_ON,
3222cbe63bfdSIskren Chernev };
3223cbe63bfdSIskren Chernev 
3224cbe63bfdSIskren Chernev static struct gdsc gcc_venus_gdsc = {
3225cbe63bfdSIskren Chernev 	.gdscr = 0x5807c,
3226cbe63bfdSIskren Chernev 	.pd = {
3227cbe63bfdSIskren Chernev 		.name = "gcc_venus",
3228cbe63bfdSIskren Chernev 	},
3229cbe63bfdSIskren Chernev 	.pwrsts = PWRSTS_OFF_ON,
3230cbe63bfdSIskren Chernev };
3231cbe63bfdSIskren Chernev 
3232cbe63bfdSIskren Chernev static struct gdsc hlos1_vote_turing_mmu_tbu1_gdsc = {
3233cbe63bfdSIskren Chernev 	.gdscr = 0x7d060,
3234cbe63bfdSIskren Chernev 	.pd = {
3235cbe63bfdSIskren Chernev 		.name = "hlos1_vote_turing_mmu_tbu1",
3236cbe63bfdSIskren Chernev 	},
3237cbe63bfdSIskren Chernev 	.pwrsts = PWRSTS_OFF_ON,
3238cbe63bfdSIskren Chernev 	.flags = VOTABLE,
3239cbe63bfdSIskren Chernev };
3240cbe63bfdSIskren Chernev 
3241cbe63bfdSIskren Chernev static struct gdsc hlos1_vote_turing_mmu_tbu0_gdsc = {
3242e41bdd18SShawn Guo 	.gdscr = 0x7d07c,
3243cbe63bfdSIskren Chernev 	.pd = {
3244cbe63bfdSIskren Chernev 		.name = "hlos1_vote_turing_mmu_tbu0",
3245cbe63bfdSIskren Chernev 	},
3246cbe63bfdSIskren Chernev 	.pwrsts = PWRSTS_OFF_ON,
3247cbe63bfdSIskren Chernev 	.flags = VOTABLE,
3248cbe63bfdSIskren Chernev };
3249cbe63bfdSIskren Chernev 
3250cbe63bfdSIskren Chernev static struct gdsc hlos1_vote_mm_snoc_mmu_tbu_rt_gdsc = {
3251cbe63bfdSIskren Chernev 	.gdscr = 0x7d074,
3252cbe63bfdSIskren Chernev 	.pd = {
3253cbe63bfdSIskren Chernev 		.name = "hlos1_vote_mm_snoc_mmu_tbu_rt",
3254cbe63bfdSIskren Chernev 	},
3255cbe63bfdSIskren Chernev 	.pwrsts = PWRSTS_OFF_ON,
3256cbe63bfdSIskren Chernev 	.flags = VOTABLE,
3257cbe63bfdSIskren Chernev };
3258cbe63bfdSIskren Chernev 
3259cbe63bfdSIskren Chernev static struct gdsc hlos1_vote_mm_snoc_mmu_tbu_nrt_gdsc = {
3260cbe63bfdSIskren Chernev 	.gdscr = 0x7d078,
3261cbe63bfdSIskren Chernev 	.pd = {
3262cbe63bfdSIskren Chernev 		.name = "hlos1_vote_mm_snoc_mmu_tbu_nrt",
3263cbe63bfdSIskren Chernev 	},
3264cbe63bfdSIskren Chernev 	.pwrsts = PWRSTS_OFF_ON,
3265cbe63bfdSIskren Chernev 	.flags = VOTABLE,
3266cbe63bfdSIskren Chernev };
3267cbe63bfdSIskren Chernev 
3268cbe63bfdSIskren Chernev static struct clk_regmap *gcc_sm6115_clocks[] = {
3269cbe63bfdSIskren Chernev 	[GCC_AHB2PHY_CSI_CLK] = &gcc_ahb2phy_csi_clk.clkr,
3270cbe63bfdSIskren Chernev 	[GCC_AHB2PHY_USB_CLK] = &gcc_ahb2phy_usb_clk.clkr,
3271cbe63bfdSIskren Chernev 	[GCC_BIMC_GPU_AXI_CLK] = &gcc_bimc_gpu_axi_clk.clkr,
3272cbe63bfdSIskren Chernev 	[GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
3273cbe63bfdSIskren Chernev 	[GCC_CAM_THROTTLE_NRT_CLK] = &gcc_cam_throttle_nrt_clk.clkr,
3274cbe63bfdSIskren Chernev 	[GCC_CAM_THROTTLE_RT_CLK] = &gcc_cam_throttle_rt_clk.clkr,
3275cbe63bfdSIskren Chernev 	[GCC_CAMERA_AHB_CLK] = &gcc_camera_ahb_clk.clkr,
3276cbe63bfdSIskren Chernev 	[GCC_CAMERA_XO_CLK] = &gcc_camera_xo_clk.clkr,
3277cbe63bfdSIskren Chernev 	[GCC_CAMSS_AXI_CLK] = &gcc_camss_axi_clk.clkr,
3278cbe63bfdSIskren Chernev 	[GCC_CAMSS_AXI_CLK_SRC] = &gcc_camss_axi_clk_src.clkr,
3279cbe63bfdSIskren Chernev 	[GCC_CAMSS_CAMNOC_ATB_CLK] = &gcc_camss_camnoc_atb_clk.clkr,
3280cbe63bfdSIskren Chernev 	[GCC_CAMSS_CAMNOC_NTS_XO_CLK] = &gcc_camss_camnoc_nts_xo_clk.clkr,
3281cbe63bfdSIskren Chernev 	[GCC_CAMSS_CCI_0_CLK] = &gcc_camss_cci_0_clk.clkr,
3282cbe63bfdSIskren Chernev 	[GCC_CAMSS_CCI_CLK_SRC] = &gcc_camss_cci_clk_src.clkr,
3283cbe63bfdSIskren Chernev 	[GCC_CAMSS_CPHY_0_CLK] = &gcc_camss_cphy_0_clk.clkr,
3284cbe63bfdSIskren Chernev 	[GCC_CAMSS_CPHY_1_CLK] = &gcc_camss_cphy_1_clk.clkr,
3285cbe63bfdSIskren Chernev 	[GCC_CAMSS_CPHY_2_CLK] = &gcc_camss_cphy_2_clk.clkr,
3286cbe63bfdSIskren Chernev 	[GCC_CAMSS_CSI0PHYTIMER_CLK] = &gcc_camss_csi0phytimer_clk.clkr,
3287cbe63bfdSIskren Chernev 	[GCC_CAMSS_CSI0PHYTIMER_CLK_SRC] = &gcc_camss_csi0phytimer_clk_src.clkr,
3288cbe63bfdSIskren Chernev 	[GCC_CAMSS_CSI1PHYTIMER_CLK] = &gcc_camss_csi1phytimer_clk.clkr,
3289cbe63bfdSIskren Chernev 	[GCC_CAMSS_CSI1PHYTIMER_CLK_SRC] = &gcc_camss_csi1phytimer_clk_src.clkr,
3290cbe63bfdSIskren Chernev 	[GCC_CAMSS_CSI2PHYTIMER_CLK] = &gcc_camss_csi2phytimer_clk.clkr,
3291cbe63bfdSIskren Chernev 	[GCC_CAMSS_CSI2PHYTIMER_CLK_SRC] = &gcc_camss_csi2phytimer_clk_src.clkr,
3292cbe63bfdSIskren Chernev 	[GCC_CAMSS_MCLK0_CLK] = &gcc_camss_mclk0_clk.clkr,
3293cbe63bfdSIskren Chernev 	[GCC_CAMSS_MCLK0_CLK_SRC] = &gcc_camss_mclk0_clk_src.clkr,
3294cbe63bfdSIskren Chernev 	[GCC_CAMSS_MCLK1_CLK] = &gcc_camss_mclk1_clk.clkr,
3295cbe63bfdSIskren Chernev 	[GCC_CAMSS_MCLK1_CLK_SRC] = &gcc_camss_mclk1_clk_src.clkr,
3296cbe63bfdSIskren Chernev 	[GCC_CAMSS_MCLK2_CLK] = &gcc_camss_mclk2_clk.clkr,
3297cbe63bfdSIskren Chernev 	[GCC_CAMSS_MCLK2_CLK_SRC] = &gcc_camss_mclk2_clk_src.clkr,
3298cbe63bfdSIskren Chernev 	[GCC_CAMSS_MCLK3_CLK] = &gcc_camss_mclk3_clk.clkr,
3299cbe63bfdSIskren Chernev 	[GCC_CAMSS_MCLK3_CLK_SRC] = &gcc_camss_mclk3_clk_src.clkr,
3300cbe63bfdSIskren Chernev 	[GCC_CAMSS_NRT_AXI_CLK] = &gcc_camss_nrt_axi_clk.clkr,
3301cbe63bfdSIskren Chernev 	[GCC_CAMSS_OPE_AHB_CLK] = &gcc_camss_ope_ahb_clk.clkr,
3302cbe63bfdSIskren Chernev 	[GCC_CAMSS_OPE_AHB_CLK_SRC] = &gcc_camss_ope_ahb_clk_src.clkr,
3303cbe63bfdSIskren Chernev 	[GCC_CAMSS_OPE_CLK] = &gcc_camss_ope_clk.clkr,
3304cbe63bfdSIskren Chernev 	[GCC_CAMSS_OPE_CLK_SRC] = &gcc_camss_ope_clk_src.clkr,
3305cbe63bfdSIskren Chernev 	[GCC_CAMSS_RT_AXI_CLK] = &gcc_camss_rt_axi_clk.clkr,
3306cbe63bfdSIskren Chernev 	[GCC_CAMSS_TFE_0_CLK] = &gcc_camss_tfe_0_clk.clkr,
3307cbe63bfdSIskren Chernev 	[GCC_CAMSS_TFE_0_CLK_SRC] = &gcc_camss_tfe_0_clk_src.clkr,
3308cbe63bfdSIskren Chernev 	[GCC_CAMSS_TFE_0_CPHY_RX_CLK] = &gcc_camss_tfe_0_cphy_rx_clk.clkr,
3309cbe63bfdSIskren Chernev 	[GCC_CAMSS_TFE_0_CSID_CLK] = &gcc_camss_tfe_0_csid_clk.clkr,
3310cbe63bfdSIskren Chernev 	[GCC_CAMSS_TFE_0_CSID_CLK_SRC] = &gcc_camss_tfe_0_csid_clk_src.clkr,
3311cbe63bfdSIskren Chernev 	[GCC_CAMSS_TFE_1_CLK] = &gcc_camss_tfe_1_clk.clkr,
3312cbe63bfdSIskren Chernev 	[GCC_CAMSS_TFE_1_CLK_SRC] = &gcc_camss_tfe_1_clk_src.clkr,
3313cbe63bfdSIskren Chernev 	[GCC_CAMSS_TFE_1_CPHY_RX_CLK] = &gcc_camss_tfe_1_cphy_rx_clk.clkr,
3314cbe63bfdSIskren Chernev 	[GCC_CAMSS_TFE_1_CSID_CLK] = &gcc_camss_tfe_1_csid_clk.clkr,
3315cbe63bfdSIskren Chernev 	[GCC_CAMSS_TFE_1_CSID_CLK_SRC] = &gcc_camss_tfe_1_csid_clk_src.clkr,
3316cbe63bfdSIskren Chernev 	[GCC_CAMSS_TFE_2_CLK] = &gcc_camss_tfe_2_clk.clkr,
3317cbe63bfdSIskren Chernev 	[GCC_CAMSS_TFE_2_CLK_SRC] = &gcc_camss_tfe_2_clk_src.clkr,
3318cbe63bfdSIskren Chernev 	[GCC_CAMSS_TFE_2_CPHY_RX_CLK] = &gcc_camss_tfe_2_cphy_rx_clk.clkr,
3319cbe63bfdSIskren Chernev 	[GCC_CAMSS_TFE_2_CSID_CLK] = &gcc_camss_tfe_2_csid_clk.clkr,
3320cbe63bfdSIskren Chernev 	[GCC_CAMSS_TFE_2_CSID_CLK_SRC] = &gcc_camss_tfe_2_csid_clk_src.clkr,
3321cbe63bfdSIskren Chernev 	[GCC_CAMSS_TFE_CPHY_RX_CLK_SRC] = &gcc_camss_tfe_cphy_rx_clk_src.clkr,
3322cbe63bfdSIskren Chernev 	[GCC_CAMSS_TOP_AHB_CLK] = &gcc_camss_top_ahb_clk.clkr,
3323cbe63bfdSIskren Chernev 	[GCC_CAMSS_TOP_AHB_CLK_SRC] = &gcc_camss_top_ahb_clk_src.clkr,
3324cbe63bfdSIskren Chernev 	[GCC_CFG_NOC_USB3_PRIM_AXI_CLK] = &gcc_cfg_noc_usb3_prim_axi_clk.clkr,
3325cbe63bfdSIskren Chernev 	[GCC_CPUSS_GNOC_CLK] = &gcc_cpuss_gnoc_clk.clkr,
3326cbe63bfdSIskren Chernev 	[GCC_DISP_AHB_CLK] = &gcc_disp_ahb_clk.clkr,
3327cbe63bfdSIskren Chernev 	[GCC_DISP_GPLL0_CLK_SRC] = &gcc_disp_gpll0_clk_src.clkr,
3328cbe63bfdSIskren Chernev 	[GCC_DISP_GPLL0_DIV_CLK_SRC] = &gcc_disp_gpll0_div_clk_src.clkr,
3329cbe63bfdSIskren Chernev 	[GCC_DISP_HF_AXI_CLK] = &gcc_disp_hf_axi_clk.clkr,
3330cbe63bfdSIskren Chernev 	[GCC_DISP_THROTTLE_CORE_CLK] = &gcc_disp_throttle_core_clk.clkr,
3331cbe63bfdSIskren Chernev 	[GCC_DISP_XO_CLK] = &gcc_disp_xo_clk.clkr,
3332cbe63bfdSIskren Chernev 	[GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
3333cbe63bfdSIskren Chernev 	[GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr,
3334cbe63bfdSIskren Chernev 	[GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
3335cbe63bfdSIskren Chernev 	[GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr,
3336cbe63bfdSIskren Chernev 	[GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
3337cbe63bfdSIskren Chernev 	[GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr,
3338cbe63bfdSIskren Chernev 	[GCC_GPU_CFG_AHB_CLK] = &gcc_gpu_cfg_ahb_clk.clkr,
3339cbe63bfdSIskren Chernev 	[GCC_GPU_GPLL0_CLK_SRC] = &gcc_gpu_gpll0_clk_src.clkr,
3340cbe63bfdSIskren Chernev 	[GCC_GPU_GPLL0_DIV_CLK_SRC] = &gcc_gpu_gpll0_div_clk_src.clkr,
3341cbe63bfdSIskren Chernev 	[GCC_GPU_IREF_CLK] = &gcc_gpu_iref_clk.clkr,
3342cbe63bfdSIskren Chernev 	[GCC_GPU_MEMNOC_GFX_CLK] = &gcc_gpu_memnoc_gfx_clk.clkr,
3343cbe63bfdSIskren Chernev 	[GCC_GPU_SNOC_DVM_GFX_CLK] = &gcc_gpu_snoc_dvm_gfx_clk.clkr,
3344cbe63bfdSIskren Chernev 	[GCC_GPU_THROTTLE_CORE_CLK] = &gcc_gpu_throttle_core_clk.clkr,
3345cbe63bfdSIskren Chernev 	[GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
3346cbe63bfdSIskren Chernev 	[GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr,
3347cbe63bfdSIskren Chernev 	[GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
3348cbe63bfdSIskren Chernev 	[GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr,
3349cbe63bfdSIskren Chernev 	[GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
3350cbe63bfdSIskren Chernev 	[GCC_QMIP_CAMERA_NRT_AHB_CLK] = &gcc_qmip_camera_nrt_ahb_clk.clkr,
3351cbe63bfdSIskren Chernev 	[GCC_QMIP_CAMERA_RT_AHB_CLK] = &gcc_qmip_camera_rt_ahb_clk.clkr,
3352cbe63bfdSIskren Chernev 	[GCC_QMIP_DISP_AHB_CLK] = &gcc_qmip_disp_ahb_clk.clkr,
3353cbe63bfdSIskren Chernev 	[GCC_QMIP_GPU_CFG_AHB_CLK] = &gcc_qmip_gpu_cfg_ahb_clk.clkr,
3354cbe63bfdSIskren Chernev 	[GCC_QMIP_VIDEO_VCODEC_AHB_CLK] = &gcc_qmip_video_vcodec_ahb_clk.clkr,
3355cbe63bfdSIskren Chernev 	[GCC_QUPV3_WRAP0_CORE_2X_CLK] = &gcc_qupv3_wrap0_core_2x_clk.clkr,
3356cbe63bfdSIskren Chernev 	[GCC_QUPV3_WRAP0_CORE_CLK] = &gcc_qupv3_wrap0_core_clk.clkr,
3357cbe63bfdSIskren Chernev 	[GCC_QUPV3_WRAP0_S0_CLK] = &gcc_qupv3_wrap0_s0_clk.clkr,
3358cbe63bfdSIskren Chernev 	[GCC_QUPV3_WRAP0_S0_CLK_SRC] = &gcc_qupv3_wrap0_s0_clk_src.clkr,
3359cbe63bfdSIskren Chernev 	[GCC_QUPV3_WRAP0_S1_CLK] = &gcc_qupv3_wrap0_s1_clk.clkr,
3360cbe63bfdSIskren Chernev 	[GCC_QUPV3_WRAP0_S1_CLK_SRC] = &gcc_qupv3_wrap0_s1_clk_src.clkr,
3361cbe63bfdSIskren Chernev 	[GCC_QUPV3_WRAP0_S2_CLK] = &gcc_qupv3_wrap0_s2_clk.clkr,
3362cbe63bfdSIskren Chernev 	[GCC_QUPV3_WRAP0_S2_CLK_SRC] = &gcc_qupv3_wrap0_s2_clk_src.clkr,
3363cbe63bfdSIskren Chernev 	[GCC_QUPV3_WRAP0_S3_CLK] = &gcc_qupv3_wrap0_s3_clk.clkr,
3364cbe63bfdSIskren Chernev 	[GCC_QUPV3_WRAP0_S3_CLK_SRC] = &gcc_qupv3_wrap0_s3_clk_src.clkr,
3365cbe63bfdSIskren Chernev 	[GCC_QUPV3_WRAP0_S4_CLK] = &gcc_qupv3_wrap0_s4_clk.clkr,
3366cbe63bfdSIskren Chernev 	[GCC_QUPV3_WRAP0_S4_CLK_SRC] = &gcc_qupv3_wrap0_s4_clk_src.clkr,
3367cbe63bfdSIskren Chernev 	[GCC_QUPV3_WRAP0_S5_CLK] = &gcc_qupv3_wrap0_s5_clk.clkr,
3368cbe63bfdSIskren Chernev 	[GCC_QUPV3_WRAP0_S5_CLK_SRC] = &gcc_qupv3_wrap0_s5_clk_src.clkr,
3369cbe63bfdSIskren Chernev 	[GCC_QUPV3_WRAP_0_M_AHB_CLK] = &gcc_qupv3_wrap_0_m_ahb_clk.clkr,
3370cbe63bfdSIskren Chernev 	[GCC_QUPV3_WRAP_0_S_AHB_CLK] = &gcc_qupv3_wrap_0_s_ahb_clk.clkr,
3371cbe63bfdSIskren Chernev 	[GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
3372cbe63bfdSIskren Chernev 	[GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
3373cbe63bfdSIskren Chernev 	[GCC_SDCC1_APPS_CLK_SRC] = &gcc_sdcc1_apps_clk_src.clkr,
3374cbe63bfdSIskren Chernev 	[GCC_SDCC1_ICE_CORE_CLK] = &gcc_sdcc1_ice_core_clk.clkr,
3375cbe63bfdSIskren Chernev 	[GCC_SDCC1_ICE_CORE_CLK_SRC] = &gcc_sdcc1_ice_core_clk_src.clkr,
3376cbe63bfdSIskren Chernev 	[GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
3377cbe63bfdSIskren Chernev 	[GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
3378cbe63bfdSIskren Chernev 	[GCC_SDCC2_APPS_CLK_SRC] = &gcc_sdcc2_apps_clk_src.clkr,
3379cbe63bfdSIskren Chernev 	[GCC_SYS_NOC_CPUSS_AHB_CLK] = &gcc_sys_noc_cpuss_ahb_clk.clkr,
3380cbe63bfdSIskren Chernev 	[GCC_SYS_NOC_UFS_PHY_AXI_CLK] = &gcc_sys_noc_ufs_phy_axi_clk.clkr,
3381cbe63bfdSIskren Chernev 	[GCC_SYS_NOC_USB3_PRIM_AXI_CLK] = &gcc_sys_noc_usb3_prim_axi_clk.clkr,
3382cbe63bfdSIskren Chernev 	[GCC_UFS_CLKREF_CLK] = &gcc_ufs_clkref_clk.clkr,
3383cbe63bfdSIskren Chernev 	[GCC_UFS_PHY_AHB_CLK] = &gcc_ufs_phy_ahb_clk.clkr,
3384cbe63bfdSIskren Chernev 	[GCC_UFS_PHY_AXI_CLK] = &gcc_ufs_phy_axi_clk.clkr,
3385cbe63bfdSIskren Chernev 	[GCC_UFS_PHY_AXI_CLK_SRC] = &gcc_ufs_phy_axi_clk_src.clkr,
3386cbe63bfdSIskren Chernev 	[GCC_UFS_PHY_ICE_CORE_CLK] = &gcc_ufs_phy_ice_core_clk.clkr,
3387cbe63bfdSIskren Chernev 	[GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &gcc_ufs_phy_ice_core_clk_src.clkr,
3388cbe63bfdSIskren Chernev 	[GCC_UFS_PHY_PHY_AUX_CLK] = &gcc_ufs_phy_phy_aux_clk.clkr,
3389cbe63bfdSIskren Chernev 	[GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &gcc_ufs_phy_phy_aux_clk_src.clkr,
3390cbe63bfdSIskren Chernev 	[GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &gcc_ufs_phy_rx_symbol_0_clk.clkr,
3391cbe63bfdSIskren Chernev 	[GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &gcc_ufs_phy_tx_symbol_0_clk.clkr,
3392cbe63bfdSIskren Chernev 	[GCC_UFS_PHY_UNIPRO_CORE_CLK] = &gcc_ufs_phy_unipro_core_clk.clkr,
3393cbe63bfdSIskren Chernev 	[GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC] =
3394cbe63bfdSIskren Chernev 		&gcc_ufs_phy_unipro_core_clk_src.clkr,
3395cbe63bfdSIskren Chernev 	[GCC_USB30_PRIM_MASTER_CLK] = &gcc_usb30_prim_master_clk.clkr,
3396cbe63bfdSIskren Chernev 	[GCC_USB30_PRIM_MASTER_CLK_SRC] = &gcc_usb30_prim_master_clk_src.clkr,
3397cbe63bfdSIskren Chernev 	[GCC_USB30_PRIM_MOCK_UTMI_CLK] = &gcc_usb30_prim_mock_utmi_clk.clkr,
3398cbe63bfdSIskren Chernev 	[GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC] =
3399cbe63bfdSIskren Chernev 		&gcc_usb30_prim_mock_utmi_clk_src.clkr,
3400cbe63bfdSIskren Chernev 	[GCC_USB30_PRIM_MOCK_UTMI_POSTDIV_CLK_SRC] =
3401cbe63bfdSIskren Chernev 		&gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr,
3402cbe63bfdSIskren Chernev 	[GCC_USB30_PRIM_SLEEP_CLK] = &gcc_usb30_prim_sleep_clk.clkr,
3403cbe63bfdSIskren Chernev 	[GCC_USB3_PRIM_CLKREF_CLK] = &gcc_usb3_prim_clkref_clk.clkr,
3404cbe63bfdSIskren Chernev 	[GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &gcc_usb3_prim_phy_aux_clk_src.clkr,
3405cbe63bfdSIskren Chernev 	[GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &gcc_usb3_prim_phy_com_aux_clk.clkr,
3406cbe63bfdSIskren Chernev 	[GCC_USB3_PRIM_PHY_PIPE_CLK] = &gcc_usb3_prim_phy_pipe_clk.clkr,
3407cbe63bfdSIskren Chernev 	[GCC_VCODEC0_AXI_CLK] = &gcc_vcodec0_axi_clk.clkr,
3408cbe63bfdSIskren Chernev 	[GCC_VENUS_AHB_CLK] = &gcc_venus_ahb_clk.clkr,
3409cbe63bfdSIskren Chernev 	[GCC_VENUS_CTL_AXI_CLK] = &gcc_venus_ctl_axi_clk.clkr,
3410cbe63bfdSIskren Chernev 	[GCC_VIDEO_AHB_CLK] = &gcc_video_ahb_clk.clkr,
3411cbe63bfdSIskren Chernev 	[GCC_VIDEO_AXI0_CLK] = &gcc_video_axi0_clk.clkr,
3412cbe63bfdSIskren Chernev 	[GCC_VIDEO_THROTTLE_CORE_CLK] = &gcc_video_throttle_core_clk.clkr,
3413cbe63bfdSIskren Chernev 	[GCC_VIDEO_VCODEC0_SYS_CLK] = &gcc_video_vcodec0_sys_clk.clkr,
3414cbe63bfdSIskren Chernev 	[GCC_VIDEO_VENUS_CLK_SRC] = &gcc_video_venus_clk_src.clkr,
3415cbe63bfdSIskren Chernev 	[GCC_VIDEO_VENUS_CTL_CLK] = &gcc_video_venus_ctl_clk.clkr,
3416cbe63bfdSIskren Chernev 	[GCC_VIDEO_XO_CLK] = &gcc_video_xo_clk.clkr,
3417cbe63bfdSIskren Chernev 	[GPLL0] = &gpll0.clkr,
3418cbe63bfdSIskren Chernev 	[GPLL0_OUT_AUX2] = &gpll0_out_aux2.clkr,
3419cbe63bfdSIskren Chernev 	[GPLL0_OUT_MAIN] = &gpll0_out_main.clkr,
3420cbe63bfdSIskren Chernev 	[GPLL10] = &gpll10.clkr,
3421cbe63bfdSIskren Chernev 	[GPLL10_OUT_MAIN] = &gpll10_out_main.clkr,
3422cbe63bfdSIskren Chernev 	[GPLL11] = &gpll11.clkr,
3423cbe63bfdSIskren Chernev 	[GPLL11_OUT_MAIN] = &gpll11_out_main.clkr,
3424cbe63bfdSIskren Chernev 	[GPLL3] = &gpll3.clkr,
3425cbe63bfdSIskren Chernev 	[GPLL4] = &gpll4.clkr,
3426cbe63bfdSIskren Chernev 	[GPLL4_OUT_MAIN] = &gpll4_out_main.clkr,
3427cbe63bfdSIskren Chernev 	[GPLL6] = &gpll6.clkr,
3428cbe63bfdSIskren Chernev 	[GPLL6_OUT_MAIN] = &gpll6_out_main.clkr,
3429cbe63bfdSIskren Chernev 	[GPLL7] = &gpll7.clkr,
3430cbe63bfdSIskren Chernev 	[GPLL7_OUT_MAIN] = &gpll7_out_main.clkr,
3431cbe63bfdSIskren Chernev 	[GPLL8] = &gpll8.clkr,
3432cbe63bfdSIskren Chernev 	[GPLL8_OUT_MAIN] = &gpll8_out_main.clkr,
3433cbe63bfdSIskren Chernev 	[GPLL9] = &gpll9.clkr,
3434cbe63bfdSIskren Chernev 	[GPLL9_OUT_MAIN] = &gpll9_out_main.clkr,
3435cbe63bfdSIskren Chernev };
3436cbe63bfdSIskren Chernev 
3437cbe63bfdSIskren Chernev static const struct qcom_reset_map gcc_sm6115_resets[] = {
3438cbe63bfdSIskren Chernev 	[GCC_QUSB2PHY_PRIM_BCR] = { 0x1c000 },
3439cbe63bfdSIskren Chernev 	[GCC_QUSB2PHY_SEC_BCR] = { 0x1c004 },
3440cbe63bfdSIskren Chernev 	[GCC_SDCC1_BCR] = { 0x38000 },
3441cbe63bfdSIskren Chernev 	[GCC_SDCC2_BCR] = { 0x1e000 },
3442cbe63bfdSIskren Chernev 	[GCC_UFS_PHY_BCR] = { 0x45000 },
3443cbe63bfdSIskren Chernev 	[GCC_USB30_PRIM_BCR] = { 0x1a000 },
3444cbe63bfdSIskren Chernev 	[GCC_USB_PHY_CFG_AHB2PHY_BCR] = { 0x1d000 },
3445cbe63bfdSIskren Chernev 	[GCC_USB3PHY_PHY_PRIM_SP0_BCR] = { 0x1b008 },
3446cbe63bfdSIskren Chernev 	[GCC_USB3_PHY_PRIM_SP0_BCR] = { 0x1b000 },
3447cbe63bfdSIskren Chernev 	[GCC_VCODEC0_BCR] = { 0x58094 },
3448cbe63bfdSIskren Chernev 	[GCC_VENUS_BCR] = { 0x58078 },
3449cbe63bfdSIskren Chernev 	[GCC_VIDEO_INTERFACE_BCR] = { 0x6e000 },
3450cbe63bfdSIskren Chernev };
3451cbe63bfdSIskren Chernev 
3452cbe63bfdSIskren Chernev static struct gdsc *gcc_sm6115_gdscs[] = {
3453cbe63bfdSIskren Chernev 	[GCC_CAMSS_TOP_GDSC] = &gcc_camss_top_gdsc,
3454cbe63bfdSIskren Chernev 	[GCC_UFS_PHY_GDSC] = &gcc_ufs_phy_gdsc,
3455cbe63bfdSIskren Chernev 	[GCC_USB30_PRIM_GDSC] = &gcc_usb30_prim_gdsc,
3456cbe63bfdSIskren Chernev 	[GCC_VCODEC0_GDSC] = &gcc_vcodec0_gdsc,
3457cbe63bfdSIskren Chernev 	[GCC_VENUS_GDSC] = &gcc_venus_gdsc,
3458cbe63bfdSIskren Chernev 	[HLOS1_VOTE_TURING_MMU_TBU1_GDSC] = &hlos1_vote_turing_mmu_tbu1_gdsc,
3459cbe63bfdSIskren Chernev 	[HLOS1_VOTE_TURING_MMU_TBU0_GDSC] = &hlos1_vote_turing_mmu_tbu0_gdsc,
3460cbe63bfdSIskren Chernev 	[HLOS1_VOTE_MM_SNOC_MMU_TBU_RT_GDSC] = &hlos1_vote_mm_snoc_mmu_tbu_rt_gdsc,
3461cbe63bfdSIskren Chernev 	[HLOS1_VOTE_MM_SNOC_MMU_TBU_NRT_GDSC] = &hlos1_vote_mm_snoc_mmu_tbu_nrt_gdsc,
3462cbe63bfdSIskren Chernev };
3463cbe63bfdSIskren Chernev 
3464cbe63bfdSIskren Chernev static const struct clk_rcg_dfs_data gcc_dfs_clocks[] = {
3465cbe63bfdSIskren Chernev 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s0_clk_src),
3466cbe63bfdSIskren Chernev 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s1_clk_src),
3467cbe63bfdSIskren Chernev 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s2_clk_src),
3468cbe63bfdSIskren Chernev 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s3_clk_src),
3469cbe63bfdSIskren Chernev 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s4_clk_src),
3470cbe63bfdSIskren Chernev 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s5_clk_src),
3471cbe63bfdSIskren Chernev };
3472cbe63bfdSIskren Chernev 
3473cbe63bfdSIskren Chernev static const struct regmap_config gcc_sm6115_regmap_config = {
3474cbe63bfdSIskren Chernev 	.reg_bits = 32,
3475cbe63bfdSIskren Chernev 	.reg_stride = 4,
3476cbe63bfdSIskren Chernev 	.val_bits = 32,
3477cbe63bfdSIskren Chernev 	.max_register = 0xc7000,
3478cbe63bfdSIskren Chernev 	.fast_io = true,
3479cbe63bfdSIskren Chernev };
3480cbe63bfdSIskren Chernev 
3481cbe63bfdSIskren Chernev static const struct qcom_cc_desc gcc_sm6115_desc = {
3482cbe63bfdSIskren Chernev 	.config = &gcc_sm6115_regmap_config,
3483cbe63bfdSIskren Chernev 	.clks = gcc_sm6115_clocks,
3484cbe63bfdSIskren Chernev 	.num_clks = ARRAY_SIZE(gcc_sm6115_clocks),
3485cbe63bfdSIskren Chernev 	.resets = gcc_sm6115_resets,
3486cbe63bfdSIskren Chernev 	.num_resets = ARRAY_SIZE(gcc_sm6115_resets),
3487cbe63bfdSIskren Chernev 	.gdscs = gcc_sm6115_gdscs,
3488cbe63bfdSIskren Chernev 	.num_gdscs = ARRAY_SIZE(gcc_sm6115_gdscs),
3489cbe63bfdSIskren Chernev };
3490cbe63bfdSIskren Chernev 
3491cbe63bfdSIskren Chernev static const struct of_device_id gcc_sm6115_match_table[] = {
3492cbe63bfdSIskren Chernev 	{ .compatible = "qcom,gcc-sm6115" },
3493cbe63bfdSIskren Chernev 	{ }
3494cbe63bfdSIskren Chernev };
3495cbe63bfdSIskren Chernev MODULE_DEVICE_TABLE(of, gcc_sm6115_match_table);
3496cbe63bfdSIskren Chernev 
gcc_sm6115_probe(struct platform_device * pdev)3497cbe63bfdSIskren Chernev static int gcc_sm6115_probe(struct platform_device *pdev)
3498cbe63bfdSIskren Chernev {
3499cbe63bfdSIskren Chernev 	struct regmap *regmap;
3500cbe63bfdSIskren Chernev 	int ret;
3501cbe63bfdSIskren Chernev 
3502cbe63bfdSIskren Chernev 	regmap = qcom_cc_map(pdev, &gcc_sm6115_desc);
3503cbe63bfdSIskren Chernev 	if (IS_ERR(regmap))
3504cbe63bfdSIskren Chernev 		return PTR_ERR(regmap);
3505cbe63bfdSIskren Chernev 
3506cbe63bfdSIskren Chernev 	ret = qcom_cc_register_rcg_dfs(regmap, gcc_dfs_clocks,
3507cbe63bfdSIskren Chernev 			ARRAY_SIZE(gcc_dfs_clocks));
3508cbe63bfdSIskren Chernev 	if (ret)
3509cbe63bfdSIskren Chernev 		return ret;
3510cbe63bfdSIskren Chernev 
3511cbe63bfdSIskren Chernev 	clk_alpha_pll_configure(&gpll8, regmap, &gpll8_config);
3512cbe63bfdSIskren Chernev 	clk_alpha_pll_configure(&gpll9, regmap, &gpll9_config);
3513cbe63bfdSIskren Chernev 	clk_alpha_pll_configure(&gpll10, regmap, &gpll10_config);
3514cbe63bfdSIskren Chernev 	clk_alpha_pll_configure(&gpll11, regmap, &gpll11_config);
3515cbe63bfdSIskren Chernev 
3516cbe63bfdSIskren Chernev 	return qcom_cc_really_probe(pdev, &gcc_sm6115_desc, regmap);
3517cbe63bfdSIskren Chernev }
3518cbe63bfdSIskren Chernev 
3519cbe63bfdSIskren Chernev static struct platform_driver gcc_sm6115_driver = {
3520cbe63bfdSIskren Chernev 	.probe = gcc_sm6115_probe,
3521cbe63bfdSIskren Chernev 	.driver = {
3522cbe63bfdSIskren Chernev 		.name = "gcc-sm6115",
3523cbe63bfdSIskren Chernev 		.of_match_table = gcc_sm6115_match_table,
3524cbe63bfdSIskren Chernev 	},
3525cbe63bfdSIskren Chernev };
3526cbe63bfdSIskren Chernev 
gcc_sm6115_init(void)3527cbe63bfdSIskren Chernev static int __init gcc_sm6115_init(void)
3528cbe63bfdSIskren Chernev {
3529cbe63bfdSIskren Chernev 	return platform_driver_register(&gcc_sm6115_driver);
3530cbe63bfdSIskren Chernev }
3531cbe63bfdSIskren Chernev subsys_initcall(gcc_sm6115_init);
3532cbe63bfdSIskren Chernev 
gcc_sm6115_exit(void)3533cbe63bfdSIskren Chernev static void __exit gcc_sm6115_exit(void)
3534cbe63bfdSIskren Chernev {
3535cbe63bfdSIskren Chernev 	platform_driver_unregister(&gcc_sm6115_driver);
3536cbe63bfdSIskren Chernev }
3537cbe63bfdSIskren Chernev module_exit(gcc_sm6115_exit);
3538cbe63bfdSIskren Chernev 
3539cbe63bfdSIskren Chernev MODULE_DESCRIPTION("QTI GCC SM6115 and SM4250 Driver");
3540cbe63bfdSIskren Chernev MODULE_LICENSE("GPL v2");
3541cbe63bfdSIskren Chernev MODULE_ALIAS("platform:gcc-sm6115");
3542