xref: /linux/drivers/clk/qcom/camcc-x1p42100.c (revision 8c04c1292dca29a57ea82c6a44348be49749fc22)
1*10524682SJagadeesh Kona // SPDX-License-Identifier: GPL-2.0-only
2*10524682SJagadeesh Kona /*
3*10524682SJagadeesh Kona  * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
4*10524682SJagadeesh Kona  */
5*10524682SJagadeesh Kona 
6*10524682SJagadeesh Kona #include <linux/clk-provider.h>
7*10524682SJagadeesh Kona #include <linux/mod_devicetable.h>
8*10524682SJagadeesh Kona #include <linux/module.h>
9*10524682SJagadeesh Kona #include <linux/platform_device.h>
10*10524682SJagadeesh Kona #include <linux/regmap.h>
11*10524682SJagadeesh Kona 
12*10524682SJagadeesh Kona #include <dt-bindings/clock/qcom,x1e80100-camcc.h>
13*10524682SJagadeesh Kona 
14*10524682SJagadeesh Kona #include "clk-alpha-pll.h"
15*10524682SJagadeesh Kona #include "clk-branch.h"
16*10524682SJagadeesh Kona #include "clk-rcg.h"
17*10524682SJagadeesh Kona #include "clk-regmap.h"
18*10524682SJagadeesh Kona #include "common.h"
19*10524682SJagadeesh Kona #include "gdsc.h"
20*10524682SJagadeesh Kona #include "reset.h"
21*10524682SJagadeesh Kona 
22*10524682SJagadeesh Kona enum {
23*10524682SJagadeesh Kona 	DT_IFACE,
24*10524682SJagadeesh Kona 	DT_BI_TCXO,
25*10524682SJagadeesh Kona 	DT_BI_TCXO_AO,
26*10524682SJagadeesh Kona 	DT_SLEEP_CLK,
27*10524682SJagadeesh Kona };
28*10524682SJagadeesh Kona 
29*10524682SJagadeesh Kona enum {
30*10524682SJagadeesh Kona 	P_BI_TCXO,
31*10524682SJagadeesh Kona 	P_BI_TCXO_AO,
32*10524682SJagadeesh Kona 	P_CAM_CC_PLL0_OUT_EVEN,
33*10524682SJagadeesh Kona 	P_CAM_CC_PLL0_OUT_MAIN,
34*10524682SJagadeesh Kona 	P_CAM_CC_PLL0_OUT_ODD,
35*10524682SJagadeesh Kona 	P_CAM_CC_PLL1_OUT_EVEN,
36*10524682SJagadeesh Kona 	P_CAM_CC_PLL2_OUT_EVEN,
37*10524682SJagadeesh Kona 	P_CAM_CC_PLL2_OUT_MAIN,
38*10524682SJagadeesh Kona 	P_CAM_CC_PLL3_OUT_EVEN,
39*10524682SJagadeesh Kona 	P_CAM_CC_PLL6_OUT_EVEN,
40*10524682SJagadeesh Kona 	P_SLEEP_CLK,
41*10524682SJagadeesh Kona };
42*10524682SJagadeesh Kona 
43*10524682SJagadeesh Kona static const struct pll_vco lucid_ole_vco[] = {
44*10524682SJagadeesh Kona 	{ 249600000, 2300000000, 0 },
45*10524682SJagadeesh Kona };
46*10524682SJagadeesh Kona 
47*10524682SJagadeesh Kona static const struct pll_vco rivian_ole_vco[] = {
48*10524682SJagadeesh Kona 	{ 777000000, 1285000000, 0 },
49*10524682SJagadeesh Kona };
50*10524682SJagadeesh Kona 
51*10524682SJagadeesh Kona /* 1200.0 MHz Configuration */
52*10524682SJagadeesh Kona static const struct alpha_pll_config cam_cc_pll0_config = {
53*10524682SJagadeesh Kona 	.l = 0x3e,
54*10524682SJagadeesh Kona 	.alpha = 0x8000,
55*10524682SJagadeesh Kona 	.config_ctl_val = 0x20485699,
56*10524682SJagadeesh Kona 	.config_ctl_hi_val = 0x00182261,
57*10524682SJagadeesh Kona 	.config_ctl_hi1_val = 0x82aa299c,
58*10524682SJagadeesh Kona 	.test_ctl_val = 0x00000000,
59*10524682SJagadeesh Kona 	.test_ctl_hi_val = 0x00000003,
60*10524682SJagadeesh Kona 	.test_ctl_hi1_val = 0x00009000,
61*10524682SJagadeesh Kona 	.test_ctl_hi2_val = 0x00000034,
62*10524682SJagadeesh Kona 	.user_ctl_val = 0x00008400,
63*10524682SJagadeesh Kona 	.user_ctl_hi_val = 0x00000005,
64*10524682SJagadeesh Kona };
65*10524682SJagadeesh Kona 
66*10524682SJagadeesh Kona static struct clk_alpha_pll cam_cc_pll0 = {
67*10524682SJagadeesh Kona 	.offset = 0x0,
68*10524682SJagadeesh Kona 	.config = &cam_cc_pll0_config,
69*10524682SJagadeesh Kona 	.vco_table = lucid_ole_vco,
70*10524682SJagadeesh Kona 	.num_vco = ARRAY_SIZE(lucid_ole_vco),
71*10524682SJagadeesh Kona 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
72*10524682SJagadeesh Kona 	.clkr = {
73*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
74*10524682SJagadeesh Kona 			.name = "cam_cc_pll0",
75*10524682SJagadeesh Kona 			.parent_data = &(const struct clk_parent_data) {
76*10524682SJagadeesh Kona 				.index = DT_BI_TCXO,
77*10524682SJagadeesh Kona 			},
78*10524682SJagadeesh Kona 			.num_parents = 1,
79*10524682SJagadeesh Kona 			.ops = &clk_alpha_pll_lucid_evo_ops,
80*10524682SJagadeesh Kona 		},
81*10524682SJagadeesh Kona 	},
82*10524682SJagadeesh Kona };
83*10524682SJagadeesh Kona 
84*10524682SJagadeesh Kona static const struct clk_div_table post_div_table_cam_cc_pll0_out_even[] = {
85*10524682SJagadeesh Kona 	{ 0x1, 2 },
86*10524682SJagadeesh Kona 	{ }
87*10524682SJagadeesh Kona };
88*10524682SJagadeesh Kona 
89*10524682SJagadeesh Kona static struct clk_alpha_pll_postdiv cam_cc_pll0_out_even = {
90*10524682SJagadeesh Kona 	.offset = 0x0,
91*10524682SJagadeesh Kona 	.post_div_shift = 10,
92*10524682SJagadeesh Kona 	.post_div_table = post_div_table_cam_cc_pll0_out_even,
93*10524682SJagadeesh Kona 	.num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll0_out_even),
94*10524682SJagadeesh Kona 	.width = 4,
95*10524682SJagadeesh Kona 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
96*10524682SJagadeesh Kona 	.clkr.hw.init = &(const struct clk_init_data) {
97*10524682SJagadeesh Kona 		.name = "cam_cc_pll0_out_even",
98*10524682SJagadeesh Kona 		.parent_hws = (const struct clk_hw*[]) {
99*10524682SJagadeesh Kona 			&cam_cc_pll0.clkr.hw,
100*10524682SJagadeesh Kona 		},
101*10524682SJagadeesh Kona 		.num_parents = 1,
102*10524682SJagadeesh Kona 		.flags = CLK_SET_RATE_PARENT,
103*10524682SJagadeesh Kona 		.ops = &clk_alpha_pll_postdiv_lucid_ole_ops,
104*10524682SJagadeesh Kona 	},
105*10524682SJagadeesh Kona };
106*10524682SJagadeesh Kona 
107*10524682SJagadeesh Kona static const struct clk_div_table post_div_table_cam_cc_pll0_out_odd[] = {
108*10524682SJagadeesh Kona 	{ 0x2, 3 },
109*10524682SJagadeesh Kona 	{ }
110*10524682SJagadeesh Kona };
111*10524682SJagadeesh Kona 
112*10524682SJagadeesh Kona static struct clk_alpha_pll_postdiv cam_cc_pll0_out_odd = {
113*10524682SJagadeesh Kona 	.offset = 0x0,
114*10524682SJagadeesh Kona 	.post_div_shift = 14,
115*10524682SJagadeesh Kona 	.post_div_table = post_div_table_cam_cc_pll0_out_odd,
116*10524682SJagadeesh Kona 	.num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll0_out_odd),
117*10524682SJagadeesh Kona 	.width = 4,
118*10524682SJagadeesh Kona 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
119*10524682SJagadeesh Kona 	.clkr.hw.init = &(const struct clk_init_data) {
120*10524682SJagadeesh Kona 		.name = "cam_cc_pll0_out_odd",
121*10524682SJagadeesh Kona 		.parent_hws = (const struct clk_hw*[]) {
122*10524682SJagadeesh Kona 			&cam_cc_pll0.clkr.hw,
123*10524682SJagadeesh Kona 		},
124*10524682SJagadeesh Kona 		.num_parents = 1,
125*10524682SJagadeesh Kona 		.flags = CLK_SET_RATE_PARENT,
126*10524682SJagadeesh Kona 		.ops = &clk_alpha_pll_postdiv_lucid_ole_ops,
127*10524682SJagadeesh Kona 	},
128*10524682SJagadeesh Kona };
129*10524682SJagadeesh Kona 
130*10524682SJagadeesh Kona /* 728.0 MHz Configuration */
131*10524682SJagadeesh Kona static const struct alpha_pll_config cam_cc_pll1_config = {
132*10524682SJagadeesh Kona 	.l = 0x25,
133*10524682SJagadeesh Kona 	.alpha = 0xeaaa,
134*10524682SJagadeesh Kona 	.config_ctl_val = 0x20485699,
135*10524682SJagadeesh Kona 	.config_ctl_hi_val = 0x00182261,
136*10524682SJagadeesh Kona 	.config_ctl_hi1_val = 0x82aa299c,
137*10524682SJagadeesh Kona 	.test_ctl_val = 0x00000000,
138*10524682SJagadeesh Kona 	.test_ctl_hi_val = 0x00000003,
139*10524682SJagadeesh Kona 	.test_ctl_hi1_val = 0x00009000,
140*10524682SJagadeesh Kona 	.test_ctl_hi2_val = 0x00000034,
141*10524682SJagadeesh Kona 	.user_ctl_val = 0x00000400,
142*10524682SJagadeesh Kona 	.user_ctl_hi_val = 0x00000005,
143*10524682SJagadeesh Kona };
144*10524682SJagadeesh Kona 
145*10524682SJagadeesh Kona static struct clk_alpha_pll cam_cc_pll1 = {
146*10524682SJagadeesh Kona 	.offset = 0x1000,
147*10524682SJagadeesh Kona 	.config = &cam_cc_pll1_config,
148*10524682SJagadeesh Kona 	.vco_table = lucid_ole_vco,
149*10524682SJagadeesh Kona 	.num_vco = ARRAY_SIZE(lucid_ole_vco),
150*10524682SJagadeesh Kona 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
151*10524682SJagadeesh Kona 	.clkr = {
152*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
153*10524682SJagadeesh Kona 			.name = "cam_cc_pll1",
154*10524682SJagadeesh Kona 			.parent_data = &(const struct clk_parent_data) {
155*10524682SJagadeesh Kona 				.index = DT_BI_TCXO,
156*10524682SJagadeesh Kona 			},
157*10524682SJagadeesh Kona 			.num_parents = 1,
158*10524682SJagadeesh Kona 			.ops = &clk_alpha_pll_lucid_evo_ops,
159*10524682SJagadeesh Kona 		},
160*10524682SJagadeesh Kona 	},
161*10524682SJagadeesh Kona };
162*10524682SJagadeesh Kona 
163*10524682SJagadeesh Kona static const struct clk_div_table post_div_table_cam_cc_pll1_out_even[] = {
164*10524682SJagadeesh Kona 	{ 0x1, 2 },
165*10524682SJagadeesh Kona 	{ }
166*10524682SJagadeesh Kona };
167*10524682SJagadeesh Kona 
168*10524682SJagadeesh Kona static struct clk_alpha_pll_postdiv cam_cc_pll1_out_even = {
169*10524682SJagadeesh Kona 	.offset = 0x1000,
170*10524682SJagadeesh Kona 	.post_div_shift = 10,
171*10524682SJagadeesh Kona 	.post_div_table = post_div_table_cam_cc_pll1_out_even,
172*10524682SJagadeesh Kona 	.num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll1_out_even),
173*10524682SJagadeesh Kona 	.width = 4,
174*10524682SJagadeesh Kona 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
175*10524682SJagadeesh Kona 	.clkr.hw.init = &(const struct clk_init_data) {
176*10524682SJagadeesh Kona 		.name = "cam_cc_pll1_out_even",
177*10524682SJagadeesh Kona 		.parent_hws = (const struct clk_hw*[]) {
178*10524682SJagadeesh Kona 			&cam_cc_pll1.clkr.hw,
179*10524682SJagadeesh Kona 		},
180*10524682SJagadeesh Kona 		.num_parents = 1,
181*10524682SJagadeesh Kona 		.flags = CLK_SET_RATE_PARENT,
182*10524682SJagadeesh Kona 		.ops = &clk_alpha_pll_postdiv_lucid_ole_ops,
183*10524682SJagadeesh Kona 	},
184*10524682SJagadeesh Kona };
185*10524682SJagadeesh Kona 
186*10524682SJagadeesh Kona /* 960.0 MHz Configuration */
187*10524682SJagadeesh Kona static const struct alpha_pll_config cam_cc_pll2_config = {
188*10524682SJagadeesh Kona 	.l = 0x32,
189*10524682SJagadeesh Kona 	.alpha = 0x0,
190*10524682SJagadeesh Kona 	.config_ctl_val = 0x10000030,
191*10524682SJagadeesh Kona 	.config_ctl_hi_val = 0x80890263,
192*10524682SJagadeesh Kona 	.config_ctl_hi1_val = 0x00000217,
193*10524682SJagadeesh Kona 	.user_ctl_val = 0x00000000,
194*10524682SJagadeesh Kona 	.user_ctl_hi_val = 0x00100000,
195*10524682SJagadeesh Kona };
196*10524682SJagadeesh Kona 
197*10524682SJagadeesh Kona static struct clk_alpha_pll cam_cc_pll2 = {
198*10524682SJagadeesh Kona 	.offset = 0x2000,
199*10524682SJagadeesh Kona 	.config = &cam_cc_pll2_config,
200*10524682SJagadeesh Kona 	.vco_table = rivian_ole_vco,
201*10524682SJagadeesh Kona 	.num_vco = ARRAY_SIZE(rivian_ole_vco),
202*10524682SJagadeesh Kona 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_RIVIAN_EVO],
203*10524682SJagadeesh Kona 	.clkr = {
204*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
205*10524682SJagadeesh Kona 			.name = "cam_cc_pll2",
206*10524682SJagadeesh Kona 			.parent_data = &(const struct clk_parent_data) {
207*10524682SJagadeesh Kona 				.index = DT_BI_TCXO,
208*10524682SJagadeesh Kona 			},
209*10524682SJagadeesh Kona 			.num_parents = 1,
210*10524682SJagadeesh Kona 			.ops = &clk_alpha_pll_rivian_evo_ops,
211*10524682SJagadeesh Kona 		},
212*10524682SJagadeesh Kona 	},
213*10524682SJagadeesh Kona };
214*10524682SJagadeesh Kona 
215*10524682SJagadeesh Kona /* 864.0 MHz Configuration */
216*10524682SJagadeesh Kona static const struct alpha_pll_config cam_cc_pll3_config = {
217*10524682SJagadeesh Kona 	.l = 0x2d,
218*10524682SJagadeesh Kona 	.alpha = 0x0,
219*10524682SJagadeesh Kona 	.config_ctl_val = 0x20485699,
220*10524682SJagadeesh Kona 	.config_ctl_hi_val = 0x00182261,
221*10524682SJagadeesh Kona 	.config_ctl_hi1_val = 0x82aa299c,
222*10524682SJagadeesh Kona 	.test_ctl_val = 0x00000000,
223*10524682SJagadeesh Kona 	.test_ctl_hi_val = 0x00000003,
224*10524682SJagadeesh Kona 	.test_ctl_hi1_val = 0x00009000,
225*10524682SJagadeesh Kona 	.test_ctl_hi2_val = 0x00000034,
226*10524682SJagadeesh Kona 	.user_ctl_val = 0x00000400,
227*10524682SJagadeesh Kona 	.user_ctl_hi_val = 0x00000005,
228*10524682SJagadeesh Kona };
229*10524682SJagadeesh Kona 
230*10524682SJagadeesh Kona static struct clk_alpha_pll cam_cc_pll3 = {
231*10524682SJagadeesh Kona 	.offset = 0x3000,
232*10524682SJagadeesh Kona 	.config = &cam_cc_pll3_config,
233*10524682SJagadeesh Kona 	.vco_table = lucid_ole_vco,
234*10524682SJagadeesh Kona 	.num_vco = ARRAY_SIZE(lucid_ole_vco),
235*10524682SJagadeesh Kona 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
236*10524682SJagadeesh Kona 	.clkr = {
237*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
238*10524682SJagadeesh Kona 			.name = "cam_cc_pll3",
239*10524682SJagadeesh Kona 			.parent_data = &(const struct clk_parent_data) {
240*10524682SJagadeesh Kona 				.index = DT_BI_TCXO,
241*10524682SJagadeesh Kona 			},
242*10524682SJagadeesh Kona 			.num_parents = 1,
243*10524682SJagadeesh Kona 			.ops = &clk_alpha_pll_lucid_evo_ops,
244*10524682SJagadeesh Kona 		},
245*10524682SJagadeesh Kona 	},
246*10524682SJagadeesh Kona };
247*10524682SJagadeesh Kona 
248*10524682SJagadeesh Kona static const struct clk_div_table post_div_table_cam_cc_pll3_out_even[] = {
249*10524682SJagadeesh Kona 	{ 0x1, 2 },
250*10524682SJagadeesh Kona 	{ }
251*10524682SJagadeesh Kona };
252*10524682SJagadeesh Kona 
253*10524682SJagadeesh Kona static struct clk_alpha_pll_postdiv cam_cc_pll3_out_even = {
254*10524682SJagadeesh Kona 	.offset = 0x3000,
255*10524682SJagadeesh Kona 	.post_div_shift = 10,
256*10524682SJagadeesh Kona 	.post_div_table = post_div_table_cam_cc_pll3_out_even,
257*10524682SJagadeesh Kona 	.num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll3_out_even),
258*10524682SJagadeesh Kona 	.width = 4,
259*10524682SJagadeesh Kona 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
260*10524682SJagadeesh Kona 	.clkr.hw.init = &(const struct clk_init_data) {
261*10524682SJagadeesh Kona 		.name = "cam_cc_pll3_out_even",
262*10524682SJagadeesh Kona 		.parent_hws = (const struct clk_hw*[]) {
263*10524682SJagadeesh Kona 			&cam_cc_pll3.clkr.hw,
264*10524682SJagadeesh Kona 		},
265*10524682SJagadeesh Kona 		.num_parents = 1,
266*10524682SJagadeesh Kona 		.flags = CLK_SET_RATE_PARENT,
267*10524682SJagadeesh Kona 		.ops = &clk_alpha_pll_postdiv_lucid_ole_ops,
268*10524682SJagadeesh Kona 	},
269*10524682SJagadeesh Kona };
270*10524682SJagadeesh Kona 
271*10524682SJagadeesh Kona /* 960.0 MHz Configuration */
272*10524682SJagadeesh Kona static const struct alpha_pll_config cam_cc_pll6_config = {
273*10524682SJagadeesh Kona 	.l = 0x32,
274*10524682SJagadeesh Kona 	.alpha = 0x0,
275*10524682SJagadeesh Kona 	.config_ctl_val = 0x20485699,
276*10524682SJagadeesh Kona 	.config_ctl_hi_val = 0x00182261,
277*10524682SJagadeesh Kona 	.config_ctl_hi1_val = 0x82aa299c,
278*10524682SJagadeesh Kona 	.test_ctl_val = 0x00000000,
279*10524682SJagadeesh Kona 	.test_ctl_hi_val = 0x00000003,
280*10524682SJagadeesh Kona 	.test_ctl_hi1_val = 0x00009000,
281*10524682SJagadeesh Kona 	.test_ctl_hi2_val = 0x00000034,
282*10524682SJagadeesh Kona 	.user_ctl_val = 0x00000400,
283*10524682SJagadeesh Kona 	.user_ctl_hi_val = 0x00000005,
284*10524682SJagadeesh Kona };
285*10524682SJagadeesh Kona 
286*10524682SJagadeesh Kona static struct clk_alpha_pll cam_cc_pll6 = {
287*10524682SJagadeesh Kona 	.offset = 0x6000,
288*10524682SJagadeesh Kona 	.config = &cam_cc_pll6_config,
289*10524682SJagadeesh Kona 	.vco_table = lucid_ole_vco,
290*10524682SJagadeesh Kona 	.num_vco = ARRAY_SIZE(lucid_ole_vco),
291*10524682SJagadeesh Kona 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
292*10524682SJagadeesh Kona 	.clkr = {
293*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
294*10524682SJagadeesh Kona 			.name = "cam_cc_pll6",
295*10524682SJagadeesh Kona 			.parent_data = &(const struct clk_parent_data) {
296*10524682SJagadeesh Kona 				.index = DT_BI_TCXO,
297*10524682SJagadeesh Kona 			},
298*10524682SJagadeesh Kona 			.num_parents = 1,
299*10524682SJagadeesh Kona 			.ops = &clk_alpha_pll_lucid_evo_ops,
300*10524682SJagadeesh Kona 		},
301*10524682SJagadeesh Kona 	},
302*10524682SJagadeesh Kona };
303*10524682SJagadeesh Kona 
304*10524682SJagadeesh Kona static const struct clk_div_table post_div_table_cam_cc_pll6_out_even[] = {
305*10524682SJagadeesh Kona 	{ 0x1, 2 },
306*10524682SJagadeesh Kona 	{ }
307*10524682SJagadeesh Kona };
308*10524682SJagadeesh Kona 
309*10524682SJagadeesh Kona static struct clk_alpha_pll_postdiv cam_cc_pll6_out_even = {
310*10524682SJagadeesh Kona 	.offset = 0x6000,
311*10524682SJagadeesh Kona 	.post_div_shift = 10,
312*10524682SJagadeesh Kona 	.post_div_table = post_div_table_cam_cc_pll6_out_even,
313*10524682SJagadeesh Kona 	.num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll6_out_even),
314*10524682SJagadeesh Kona 	.width = 4,
315*10524682SJagadeesh Kona 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
316*10524682SJagadeesh Kona 	.clkr.hw.init = &(const struct clk_init_data) {
317*10524682SJagadeesh Kona 		.name = "cam_cc_pll6_out_even",
318*10524682SJagadeesh Kona 		.parent_hws = (const struct clk_hw*[]) {
319*10524682SJagadeesh Kona 			&cam_cc_pll6.clkr.hw,
320*10524682SJagadeesh Kona 		},
321*10524682SJagadeesh Kona 		.num_parents = 1,
322*10524682SJagadeesh Kona 		.flags = CLK_SET_RATE_PARENT,
323*10524682SJagadeesh Kona 		.ops = &clk_alpha_pll_postdiv_lucid_ole_ops,
324*10524682SJagadeesh Kona 	},
325*10524682SJagadeesh Kona };
326*10524682SJagadeesh Kona 
327*10524682SJagadeesh Kona static const struct parent_map cam_cc_parent_map_0[] = {
328*10524682SJagadeesh Kona 	{ P_BI_TCXO, 0 },
329*10524682SJagadeesh Kona 	{ P_CAM_CC_PLL0_OUT_MAIN, 1 },
330*10524682SJagadeesh Kona 	{ P_CAM_CC_PLL0_OUT_EVEN, 2 },
331*10524682SJagadeesh Kona 	{ P_CAM_CC_PLL0_OUT_ODD, 3 },
332*10524682SJagadeesh Kona 	{ P_CAM_CC_PLL6_OUT_EVEN, 5 },
333*10524682SJagadeesh Kona };
334*10524682SJagadeesh Kona 
335*10524682SJagadeesh Kona static const struct clk_parent_data cam_cc_parent_data_0[] = {
336*10524682SJagadeesh Kona 	{ .index = DT_BI_TCXO },
337*10524682SJagadeesh Kona 	{ .hw = &cam_cc_pll0.clkr.hw },
338*10524682SJagadeesh Kona 	{ .hw = &cam_cc_pll0_out_even.clkr.hw },
339*10524682SJagadeesh Kona 	{ .hw = &cam_cc_pll0_out_odd.clkr.hw },
340*10524682SJagadeesh Kona 	{ .hw = &cam_cc_pll6_out_even.clkr.hw },
341*10524682SJagadeesh Kona };
342*10524682SJagadeesh Kona 
343*10524682SJagadeesh Kona static const struct parent_map cam_cc_parent_map_1[] = {
344*10524682SJagadeesh Kona 	{ P_BI_TCXO, 0 },
345*10524682SJagadeesh Kona 	{ P_CAM_CC_PLL2_OUT_EVEN, 3 },
346*10524682SJagadeesh Kona 	{ P_CAM_CC_PLL2_OUT_MAIN, 5 },
347*10524682SJagadeesh Kona };
348*10524682SJagadeesh Kona 
349*10524682SJagadeesh Kona static const struct clk_parent_data cam_cc_parent_data_1[] = {
350*10524682SJagadeesh Kona 	{ .index = DT_BI_TCXO },
351*10524682SJagadeesh Kona 	{ .hw = &cam_cc_pll2.clkr.hw },
352*10524682SJagadeesh Kona 	{ .hw = &cam_cc_pll2.clkr.hw },
353*10524682SJagadeesh Kona };
354*10524682SJagadeesh Kona 
355*10524682SJagadeesh Kona static const struct parent_map cam_cc_parent_map_2[] = {
356*10524682SJagadeesh Kona 	{ P_BI_TCXO, 0 },
357*10524682SJagadeesh Kona 	{ P_CAM_CC_PLL3_OUT_EVEN, 6 },
358*10524682SJagadeesh Kona };
359*10524682SJagadeesh Kona 
360*10524682SJagadeesh Kona static const struct clk_parent_data cam_cc_parent_data_2[] = {
361*10524682SJagadeesh Kona 	{ .index = DT_BI_TCXO },
362*10524682SJagadeesh Kona 	{ .hw = &cam_cc_pll3_out_even.clkr.hw },
363*10524682SJagadeesh Kona };
364*10524682SJagadeesh Kona 
365*10524682SJagadeesh Kona static const struct parent_map cam_cc_parent_map_3[] = {
366*10524682SJagadeesh Kona 	{ P_BI_TCXO, 0 },
367*10524682SJagadeesh Kona 	{ P_CAM_CC_PLL1_OUT_EVEN, 4 },
368*10524682SJagadeesh Kona };
369*10524682SJagadeesh Kona 
370*10524682SJagadeesh Kona static const struct clk_parent_data cam_cc_parent_data_3[] = {
371*10524682SJagadeesh Kona 	{ .index = DT_BI_TCXO },
372*10524682SJagadeesh Kona 	{ .hw = &cam_cc_pll1_out_even.clkr.hw },
373*10524682SJagadeesh Kona };
374*10524682SJagadeesh Kona 
375*10524682SJagadeesh Kona static const struct parent_map cam_cc_parent_map_4[] = {
376*10524682SJagadeesh Kona 	{ P_SLEEP_CLK, 0 },
377*10524682SJagadeesh Kona };
378*10524682SJagadeesh Kona 
379*10524682SJagadeesh Kona static const struct clk_parent_data cam_cc_parent_data_4[] = {
380*10524682SJagadeesh Kona 	{ .index = DT_SLEEP_CLK },
381*10524682SJagadeesh Kona };
382*10524682SJagadeesh Kona 
383*10524682SJagadeesh Kona static const struct parent_map cam_cc_parent_map_5[] = {
384*10524682SJagadeesh Kona 	{ P_BI_TCXO, 0 },
385*10524682SJagadeesh Kona };
386*10524682SJagadeesh Kona 
387*10524682SJagadeesh Kona static const struct clk_parent_data cam_cc_parent_data_5[] = {
388*10524682SJagadeesh Kona 	{ .index = DT_BI_TCXO },
389*10524682SJagadeesh Kona };
390*10524682SJagadeesh Kona 
391*10524682SJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_bps_clk_src[] = {
392*10524682SJagadeesh Kona 	F(19200000, P_BI_TCXO, 1, 0, 0),
393*10524682SJagadeesh Kona 	F(200000000, P_CAM_CC_PLL0_OUT_ODD, 2, 0, 0),
394*10524682SJagadeesh Kona 	F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0),
395*10524682SJagadeesh Kona 	F(600000000, P_CAM_CC_PLL0_OUT_EVEN, 1, 0, 0),
396*10524682SJagadeesh Kona 	{ }
397*10524682SJagadeesh Kona };
398*10524682SJagadeesh Kona 
399*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_bps_clk_src = {
400*10524682SJagadeesh Kona 	.cmd_rcgr = 0x10278,
401*10524682SJagadeesh Kona 	.mnd_width = 0,
402*10524682SJagadeesh Kona 	.hid_width = 5,
403*10524682SJagadeesh Kona 	.parent_map = cam_cc_parent_map_0,
404*10524682SJagadeesh Kona 	.freq_tbl = ftbl_cam_cc_bps_clk_src,
405*10524682SJagadeesh Kona 	.hw_clk_ctrl = true,
406*10524682SJagadeesh Kona 	.clkr.hw.init = &(const struct clk_init_data) {
407*10524682SJagadeesh Kona 		.name = "cam_cc_bps_clk_src",
408*10524682SJagadeesh Kona 		.parent_data = cam_cc_parent_data_0,
409*10524682SJagadeesh Kona 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
410*10524682SJagadeesh Kona 		.flags = CLK_SET_RATE_PARENT,
411*10524682SJagadeesh Kona 		.ops = &clk_rcg2_shared_ops,
412*10524682SJagadeesh Kona 	},
413*10524682SJagadeesh Kona };
414*10524682SJagadeesh Kona 
415*10524682SJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_camnoc_axi_rt_clk_src[] = {
416*10524682SJagadeesh Kona 	F(300000000, P_CAM_CC_PLL0_OUT_EVEN, 2, 0, 0),
417*10524682SJagadeesh Kona 	F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0),
418*10524682SJagadeesh Kona 	{ }
419*10524682SJagadeesh Kona };
420*10524682SJagadeesh Kona 
421*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_camnoc_axi_rt_clk_src = {
422*10524682SJagadeesh Kona 	.cmd_rcgr = 0x138f8,
423*10524682SJagadeesh Kona 	.mnd_width = 0,
424*10524682SJagadeesh Kona 	.hid_width = 5,
425*10524682SJagadeesh Kona 	.parent_map = cam_cc_parent_map_0,
426*10524682SJagadeesh Kona 	.freq_tbl = ftbl_cam_cc_camnoc_axi_rt_clk_src,
427*10524682SJagadeesh Kona 	.hw_clk_ctrl = true,
428*10524682SJagadeesh Kona 	.clkr.hw.init = &(const struct clk_init_data) {
429*10524682SJagadeesh Kona 		.name = "cam_cc_camnoc_axi_rt_clk_src",
430*10524682SJagadeesh Kona 		.parent_data = cam_cc_parent_data_0,
431*10524682SJagadeesh Kona 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
432*10524682SJagadeesh Kona 		.flags = CLK_SET_RATE_PARENT,
433*10524682SJagadeesh Kona 		.ops = &clk_rcg2_shared_ops,
434*10524682SJagadeesh Kona 	},
435*10524682SJagadeesh Kona };
436*10524682SJagadeesh Kona 
437*10524682SJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_cci_0_clk_src[] = {
438*10524682SJagadeesh Kona 	F(19200000, P_BI_TCXO, 1, 0, 0),
439*10524682SJagadeesh Kona 	F(37500000, P_CAM_CC_PLL0_OUT_EVEN, 16, 0, 0),
440*10524682SJagadeesh Kona 	{ }
441*10524682SJagadeesh Kona };
442*10524682SJagadeesh Kona 
443*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_cci_0_clk_src = {
444*10524682SJagadeesh Kona 	.cmd_rcgr = 0x1365c,
445*10524682SJagadeesh Kona 	.mnd_width = 8,
446*10524682SJagadeesh Kona 	.hid_width = 5,
447*10524682SJagadeesh Kona 	.parent_map = cam_cc_parent_map_0,
448*10524682SJagadeesh Kona 	.freq_tbl = ftbl_cam_cc_cci_0_clk_src,
449*10524682SJagadeesh Kona 	.hw_clk_ctrl = true,
450*10524682SJagadeesh Kona 	.clkr.hw.init = &(const struct clk_init_data) {
451*10524682SJagadeesh Kona 		.name = "cam_cc_cci_0_clk_src",
452*10524682SJagadeesh Kona 		.parent_data = cam_cc_parent_data_0,
453*10524682SJagadeesh Kona 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
454*10524682SJagadeesh Kona 		.flags = CLK_SET_RATE_PARENT,
455*10524682SJagadeesh Kona 		.ops = &clk_rcg2_shared_ops,
456*10524682SJagadeesh Kona 	},
457*10524682SJagadeesh Kona };
458*10524682SJagadeesh Kona 
459*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_cci_1_clk_src = {
460*10524682SJagadeesh Kona 	.cmd_rcgr = 0x1378c,
461*10524682SJagadeesh Kona 	.mnd_width = 8,
462*10524682SJagadeesh Kona 	.hid_width = 5,
463*10524682SJagadeesh Kona 	.parent_map = cam_cc_parent_map_0,
464*10524682SJagadeesh Kona 	.freq_tbl = ftbl_cam_cc_cci_0_clk_src,
465*10524682SJagadeesh Kona 	.hw_clk_ctrl = true,
466*10524682SJagadeesh Kona 	.clkr.hw.init = &(const struct clk_init_data) {
467*10524682SJagadeesh Kona 		.name = "cam_cc_cci_1_clk_src",
468*10524682SJagadeesh Kona 		.parent_data = cam_cc_parent_data_0,
469*10524682SJagadeesh Kona 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
470*10524682SJagadeesh Kona 		.flags = CLK_SET_RATE_PARENT,
471*10524682SJagadeesh Kona 		.ops = &clk_rcg2_shared_ops,
472*10524682SJagadeesh Kona 	},
473*10524682SJagadeesh Kona };
474*10524682SJagadeesh Kona 
475*10524682SJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_cphy_rx_clk_src[] = {
476*10524682SJagadeesh Kona 	F(19200000, P_BI_TCXO, 1, 0, 0),
477*10524682SJagadeesh Kona 	F(400000000, P_CAM_CC_PLL0_OUT_MAIN, 3, 0, 0),
478*10524682SJagadeesh Kona 	F(480000000, P_CAM_CC_PLL0_OUT_MAIN, 2.5, 0, 0),
479*10524682SJagadeesh Kona 	{ }
480*10524682SJagadeesh Kona };
481*10524682SJagadeesh Kona 
482*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_cphy_rx_clk_src = {
483*10524682SJagadeesh Kona 	.cmd_rcgr = 0x11164,
484*10524682SJagadeesh Kona 	.mnd_width = 0,
485*10524682SJagadeesh Kona 	.hid_width = 5,
486*10524682SJagadeesh Kona 	.parent_map = cam_cc_parent_map_0,
487*10524682SJagadeesh Kona 	.freq_tbl = ftbl_cam_cc_cphy_rx_clk_src,
488*10524682SJagadeesh Kona 	.hw_clk_ctrl = true,
489*10524682SJagadeesh Kona 	.clkr.hw.init = &(const struct clk_init_data) {
490*10524682SJagadeesh Kona 		.name = "cam_cc_cphy_rx_clk_src",
491*10524682SJagadeesh Kona 		.parent_data = cam_cc_parent_data_0,
492*10524682SJagadeesh Kona 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
493*10524682SJagadeesh Kona 		.flags = CLK_SET_RATE_PARENT,
494*10524682SJagadeesh Kona 		.ops = &clk_rcg2_shared_ops,
495*10524682SJagadeesh Kona 	},
496*10524682SJagadeesh Kona };
497*10524682SJagadeesh Kona 
498*10524682SJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_csi0phytimer_clk_src[] = {
499*10524682SJagadeesh Kona 	F(19200000, P_BI_TCXO, 1, 0, 0),
500*10524682SJagadeesh Kona 	F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0),
501*10524682SJagadeesh Kona 	{ }
502*10524682SJagadeesh Kona };
503*10524682SJagadeesh Kona 
504*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_csi0phytimer_clk_src = {
505*10524682SJagadeesh Kona 	.cmd_rcgr = 0x150e0,
506*10524682SJagadeesh Kona 	.mnd_width = 0,
507*10524682SJagadeesh Kona 	.hid_width = 5,
508*10524682SJagadeesh Kona 	.parent_map = cam_cc_parent_map_0,
509*10524682SJagadeesh Kona 	.freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src,
510*10524682SJagadeesh Kona 	.hw_clk_ctrl = true,
511*10524682SJagadeesh Kona 	.clkr.hw.init = &(const struct clk_init_data) {
512*10524682SJagadeesh Kona 		.name = "cam_cc_csi0phytimer_clk_src",
513*10524682SJagadeesh Kona 		.parent_data = cam_cc_parent_data_0,
514*10524682SJagadeesh Kona 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
515*10524682SJagadeesh Kona 		.flags = CLK_SET_RATE_PARENT,
516*10524682SJagadeesh Kona 		.ops = &clk_rcg2_shared_ops,
517*10524682SJagadeesh Kona 	},
518*10524682SJagadeesh Kona };
519*10524682SJagadeesh Kona 
520*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_csi1phytimer_clk_src = {
521*10524682SJagadeesh Kona 	.cmd_rcgr = 0x15104,
522*10524682SJagadeesh Kona 	.mnd_width = 0,
523*10524682SJagadeesh Kona 	.hid_width = 5,
524*10524682SJagadeesh Kona 	.parent_map = cam_cc_parent_map_0,
525*10524682SJagadeesh Kona 	.freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src,
526*10524682SJagadeesh Kona 	.hw_clk_ctrl = true,
527*10524682SJagadeesh Kona 	.clkr.hw.init = &(const struct clk_init_data) {
528*10524682SJagadeesh Kona 		.name = "cam_cc_csi1phytimer_clk_src",
529*10524682SJagadeesh Kona 		.parent_data = cam_cc_parent_data_0,
530*10524682SJagadeesh Kona 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
531*10524682SJagadeesh Kona 		.flags = CLK_SET_RATE_PARENT,
532*10524682SJagadeesh Kona 		.ops = &clk_rcg2_shared_ops,
533*10524682SJagadeesh Kona 	},
534*10524682SJagadeesh Kona };
535*10524682SJagadeesh Kona 
536*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_csi2phytimer_clk_src = {
537*10524682SJagadeesh Kona 	.cmd_rcgr = 0x15124,
538*10524682SJagadeesh Kona 	.mnd_width = 0,
539*10524682SJagadeesh Kona 	.hid_width = 5,
540*10524682SJagadeesh Kona 	.parent_map = cam_cc_parent_map_0,
541*10524682SJagadeesh Kona 	.freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src,
542*10524682SJagadeesh Kona 	.hw_clk_ctrl = true,
543*10524682SJagadeesh Kona 	.clkr.hw.init = &(const struct clk_init_data) {
544*10524682SJagadeesh Kona 		.name = "cam_cc_csi2phytimer_clk_src",
545*10524682SJagadeesh Kona 		.parent_data = cam_cc_parent_data_0,
546*10524682SJagadeesh Kona 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
547*10524682SJagadeesh Kona 		.flags = CLK_SET_RATE_PARENT,
548*10524682SJagadeesh Kona 		.ops = &clk_rcg2_shared_ops,
549*10524682SJagadeesh Kona 	},
550*10524682SJagadeesh Kona };
551*10524682SJagadeesh Kona 
552*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_csi3phytimer_clk_src = {
553*10524682SJagadeesh Kona 	.cmd_rcgr = 0x15258,
554*10524682SJagadeesh Kona 	.mnd_width = 0,
555*10524682SJagadeesh Kona 	.hid_width = 5,
556*10524682SJagadeesh Kona 	.parent_map = cam_cc_parent_map_0,
557*10524682SJagadeesh Kona 	.freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src,
558*10524682SJagadeesh Kona 	.hw_clk_ctrl = true,
559*10524682SJagadeesh Kona 	.clkr.hw.init = &(const struct clk_init_data) {
560*10524682SJagadeesh Kona 		.name = "cam_cc_csi3phytimer_clk_src",
561*10524682SJagadeesh Kona 		.parent_data = cam_cc_parent_data_0,
562*10524682SJagadeesh Kona 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
563*10524682SJagadeesh Kona 		.flags = CLK_SET_RATE_PARENT,
564*10524682SJagadeesh Kona 		.ops = &clk_rcg2_shared_ops,
565*10524682SJagadeesh Kona 	},
566*10524682SJagadeesh Kona };
567*10524682SJagadeesh Kona 
568*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_csi4phytimer_clk_src = {
569*10524682SJagadeesh Kona 	.cmd_rcgr = 0x1538c,
570*10524682SJagadeesh Kona 	.mnd_width = 0,
571*10524682SJagadeesh Kona 	.hid_width = 5,
572*10524682SJagadeesh Kona 	.parent_map = cam_cc_parent_map_0,
573*10524682SJagadeesh Kona 	.freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src,
574*10524682SJagadeesh Kona 	.hw_clk_ctrl = true,
575*10524682SJagadeesh Kona 	.clkr.hw.init = &(const struct clk_init_data) {
576*10524682SJagadeesh Kona 		.name = "cam_cc_csi4phytimer_clk_src",
577*10524682SJagadeesh Kona 		.parent_data = cam_cc_parent_data_0,
578*10524682SJagadeesh Kona 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
579*10524682SJagadeesh Kona 		.flags = CLK_SET_RATE_PARENT,
580*10524682SJagadeesh Kona 		.ops = &clk_rcg2_shared_ops,
581*10524682SJagadeesh Kona 	},
582*10524682SJagadeesh Kona };
583*10524682SJagadeesh Kona 
584*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_csi5phytimer_clk_src = {
585*10524682SJagadeesh Kona 	.cmd_rcgr = 0x154c0,
586*10524682SJagadeesh Kona 	.mnd_width = 0,
587*10524682SJagadeesh Kona 	.hid_width = 5,
588*10524682SJagadeesh Kona 	.parent_map = cam_cc_parent_map_0,
589*10524682SJagadeesh Kona 	.freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src,
590*10524682SJagadeesh Kona 	.hw_clk_ctrl = true,
591*10524682SJagadeesh Kona 	.clkr.hw.init = &(const struct clk_init_data) {
592*10524682SJagadeesh Kona 		.name = "cam_cc_csi5phytimer_clk_src",
593*10524682SJagadeesh Kona 		.parent_data = cam_cc_parent_data_0,
594*10524682SJagadeesh Kona 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
595*10524682SJagadeesh Kona 		.flags = CLK_SET_RATE_PARENT,
596*10524682SJagadeesh Kona 		.ops = &clk_rcg2_shared_ops,
597*10524682SJagadeesh Kona 	},
598*10524682SJagadeesh Kona };
599*10524682SJagadeesh Kona 
600*10524682SJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_csid_clk_src[] = {
601*10524682SJagadeesh Kona 	F(400000000, P_CAM_CC_PLL0_OUT_MAIN, 3, 0, 0),
602*10524682SJagadeesh Kona 	F(480000000, P_CAM_CC_PLL0_OUT_MAIN, 2.5, 0, 0),
603*10524682SJagadeesh Kona 	{ }
604*10524682SJagadeesh Kona };
605*10524682SJagadeesh Kona 
606*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_csid_clk_src = {
607*10524682SJagadeesh Kona 	.cmd_rcgr = 0x138d4,
608*10524682SJagadeesh Kona 	.mnd_width = 0,
609*10524682SJagadeesh Kona 	.hid_width = 5,
610*10524682SJagadeesh Kona 	.parent_map = cam_cc_parent_map_0,
611*10524682SJagadeesh Kona 	.freq_tbl = ftbl_cam_cc_csid_clk_src,
612*10524682SJagadeesh Kona 	.hw_clk_ctrl = true,
613*10524682SJagadeesh Kona 	.clkr.hw.init = &(const struct clk_init_data) {
614*10524682SJagadeesh Kona 		.name = "cam_cc_csid_clk_src",
615*10524682SJagadeesh Kona 		.parent_data = cam_cc_parent_data_0,
616*10524682SJagadeesh Kona 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
617*10524682SJagadeesh Kona 		.flags = CLK_SET_RATE_PARENT,
618*10524682SJagadeesh Kona 		.ops = &clk_rcg2_shared_ops,
619*10524682SJagadeesh Kona 	},
620*10524682SJagadeesh Kona };
621*10524682SJagadeesh Kona 
622*10524682SJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_fast_ahb_clk_src[] = {
623*10524682SJagadeesh Kona 	F(19200000, P_BI_TCXO, 1, 0, 0),
624*10524682SJagadeesh Kona 	F(100000000, P_CAM_CC_PLL0_OUT_EVEN, 6, 0, 0),
625*10524682SJagadeesh Kona 	F(200000000, P_CAM_CC_PLL0_OUT_EVEN, 3, 0, 0),
626*10524682SJagadeesh Kona 	F(300000000, P_CAM_CC_PLL0_OUT_MAIN, 4, 0, 0),
627*10524682SJagadeesh Kona 	F(400000000, P_CAM_CC_PLL0_OUT_MAIN, 3, 0, 0),
628*10524682SJagadeesh Kona 	{ }
629*10524682SJagadeesh Kona };
630*10524682SJagadeesh Kona 
631*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_fast_ahb_clk_src = {
632*10524682SJagadeesh Kona 	.cmd_rcgr = 0x10018,
633*10524682SJagadeesh Kona 	.mnd_width = 0,
634*10524682SJagadeesh Kona 	.hid_width = 5,
635*10524682SJagadeesh Kona 	.parent_map = cam_cc_parent_map_0,
636*10524682SJagadeesh Kona 	.freq_tbl = ftbl_cam_cc_fast_ahb_clk_src,
637*10524682SJagadeesh Kona 	.hw_clk_ctrl = true,
638*10524682SJagadeesh Kona 	.clkr.hw.init = &(const struct clk_init_data) {
639*10524682SJagadeesh Kona 		.name = "cam_cc_fast_ahb_clk_src",
640*10524682SJagadeesh Kona 		.parent_data = cam_cc_parent_data_0,
641*10524682SJagadeesh Kona 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
642*10524682SJagadeesh Kona 		.flags = CLK_SET_RATE_PARENT,
643*10524682SJagadeesh Kona 		.ops = &clk_rcg2_shared_ops,
644*10524682SJagadeesh Kona 	},
645*10524682SJagadeesh Kona };
646*10524682SJagadeesh Kona 
647*10524682SJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_icp_clk_src[] = {
648*10524682SJagadeesh Kona 	F(19200000, P_BI_TCXO, 1, 0, 0),
649*10524682SJagadeesh Kona 	F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0),
650*10524682SJagadeesh Kona 	F(480000000, P_CAM_CC_PLL6_OUT_EVEN, 1, 0, 0),
651*10524682SJagadeesh Kona 	F(600000000, P_CAM_CC_PLL0_OUT_MAIN, 2, 0, 0),
652*10524682SJagadeesh Kona 	{ }
653*10524682SJagadeesh Kona };
654*10524682SJagadeesh Kona 
655*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_icp_clk_src = {
656*10524682SJagadeesh Kona 	.cmd_rcgr = 0x13520,
657*10524682SJagadeesh Kona 	.mnd_width = 0,
658*10524682SJagadeesh Kona 	.hid_width = 5,
659*10524682SJagadeesh Kona 	.parent_map = cam_cc_parent_map_0,
660*10524682SJagadeesh Kona 	.freq_tbl = ftbl_cam_cc_icp_clk_src,
661*10524682SJagadeesh Kona 	.hw_clk_ctrl = true,
662*10524682SJagadeesh Kona 	.clkr.hw.init = &(const struct clk_init_data) {
663*10524682SJagadeesh Kona 		.name = "cam_cc_icp_clk_src",
664*10524682SJagadeesh Kona 		.parent_data = cam_cc_parent_data_0,
665*10524682SJagadeesh Kona 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
666*10524682SJagadeesh Kona 		.flags = CLK_SET_RATE_PARENT,
667*10524682SJagadeesh Kona 		.ops = &clk_rcg2_shared_ops,
668*10524682SJagadeesh Kona 	},
669*10524682SJagadeesh Kona };
670*10524682SJagadeesh Kona 
671*10524682SJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_ife_0_clk_src[] = {
672*10524682SJagadeesh Kona 	F(19200000, P_BI_TCXO, 1, 0, 0),
673*10524682SJagadeesh Kona 	F(432000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0),
674*10524682SJagadeesh Kona 	F(594000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0),
675*10524682SJagadeesh Kona 	F(675000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0),
676*10524682SJagadeesh Kona 	F(727000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0),
677*10524682SJagadeesh Kona 	{ }
678*10524682SJagadeesh Kona };
679*10524682SJagadeesh Kona 
680*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_ife_0_clk_src = {
681*10524682SJagadeesh Kona 	.cmd_rcgr = 0x11018,
682*10524682SJagadeesh Kona 	.mnd_width = 0,
683*10524682SJagadeesh Kona 	.hid_width = 5,
684*10524682SJagadeesh Kona 	.parent_map = cam_cc_parent_map_2,
685*10524682SJagadeesh Kona 	.freq_tbl = ftbl_cam_cc_ife_0_clk_src,
686*10524682SJagadeesh Kona 	.hw_clk_ctrl = true,
687*10524682SJagadeesh Kona 	.clkr.hw.init = &(const struct clk_init_data) {
688*10524682SJagadeesh Kona 		.name = "cam_cc_ife_0_clk_src",
689*10524682SJagadeesh Kona 		.parent_data = cam_cc_parent_data_2,
690*10524682SJagadeesh Kona 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_2),
691*10524682SJagadeesh Kona 		.flags = CLK_SET_RATE_PARENT,
692*10524682SJagadeesh Kona 		.ops = &clk_rcg2_shared_ops,
693*10524682SJagadeesh Kona 	},
694*10524682SJagadeesh Kona };
695*10524682SJagadeesh Kona 
696*10524682SJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_ife_lite_clk_src[] = {
697*10524682SJagadeesh Kona 	F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0),
698*10524682SJagadeesh Kona 	F(480000000, P_CAM_CC_PLL6_OUT_EVEN, 1, 0, 0),
699*10524682SJagadeesh Kona 	{ }
700*10524682SJagadeesh Kona };
701*10524682SJagadeesh Kona 
702*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_ife_lite_clk_src = {
703*10524682SJagadeesh Kona 	.cmd_rcgr = 0x13000,
704*10524682SJagadeesh Kona 	.mnd_width = 0,
705*10524682SJagadeesh Kona 	.hid_width = 5,
706*10524682SJagadeesh Kona 	.parent_map = cam_cc_parent_map_0,
707*10524682SJagadeesh Kona 	.freq_tbl = ftbl_cam_cc_ife_lite_clk_src,
708*10524682SJagadeesh Kona 	.hw_clk_ctrl = true,
709*10524682SJagadeesh Kona 	.clkr.hw.init = &(const struct clk_init_data) {
710*10524682SJagadeesh Kona 		.name = "cam_cc_ife_lite_clk_src",
711*10524682SJagadeesh Kona 		.parent_data = cam_cc_parent_data_0,
712*10524682SJagadeesh Kona 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
713*10524682SJagadeesh Kona 		.flags = CLK_SET_RATE_PARENT,
714*10524682SJagadeesh Kona 		.ops = &clk_rcg2_shared_ops,
715*10524682SJagadeesh Kona 	},
716*10524682SJagadeesh Kona };
717*10524682SJagadeesh Kona 
718*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_ife_lite_csid_clk_src = {
719*10524682SJagadeesh Kona 	.cmd_rcgr = 0x1313c,
720*10524682SJagadeesh Kona 	.mnd_width = 0,
721*10524682SJagadeesh Kona 	.hid_width = 5,
722*10524682SJagadeesh Kona 	.parent_map = cam_cc_parent_map_0,
723*10524682SJagadeesh Kona 	.freq_tbl = ftbl_cam_cc_ife_lite_clk_src,
724*10524682SJagadeesh Kona 	.hw_clk_ctrl = true,
725*10524682SJagadeesh Kona 	.clkr.hw.init = &(const struct clk_init_data) {
726*10524682SJagadeesh Kona 		.name = "cam_cc_ife_lite_csid_clk_src",
727*10524682SJagadeesh Kona 		.parent_data = cam_cc_parent_data_0,
728*10524682SJagadeesh Kona 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
729*10524682SJagadeesh Kona 		.flags = CLK_SET_RATE_PARENT,
730*10524682SJagadeesh Kona 		.ops = &clk_rcg2_shared_ops,
731*10524682SJagadeesh Kona 	},
732*10524682SJagadeesh Kona };
733*10524682SJagadeesh Kona 
734*10524682SJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_ipe_nps_clk_src[] = {
735*10524682SJagadeesh Kona 	F(364000000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0),
736*10524682SJagadeesh Kona 	F(500000000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0),
737*10524682SJagadeesh Kona 	F(600000000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0),
738*10524682SJagadeesh Kona 	F(700000000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0),
739*10524682SJagadeesh Kona 	{ }
740*10524682SJagadeesh Kona };
741*10524682SJagadeesh Kona 
742*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_ipe_nps_clk_src = {
743*10524682SJagadeesh Kona 	.cmd_rcgr = 0x103cc,
744*10524682SJagadeesh Kona 	.mnd_width = 0,
745*10524682SJagadeesh Kona 	.hid_width = 5,
746*10524682SJagadeesh Kona 	.parent_map = cam_cc_parent_map_3,
747*10524682SJagadeesh Kona 	.freq_tbl = ftbl_cam_cc_ipe_nps_clk_src,
748*10524682SJagadeesh Kona 	.hw_clk_ctrl = true,
749*10524682SJagadeesh Kona 	.clkr.hw.init = &(const struct clk_init_data) {
750*10524682SJagadeesh Kona 		.name = "cam_cc_ipe_nps_clk_src",
751*10524682SJagadeesh Kona 		.parent_data = cam_cc_parent_data_3,
752*10524682SJagadeesh Kona 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_3),
753*10524682SJagadeesh Kona 		.flags = CLK_SET_RATE_PARENT,
754*10524682SJagadeesh Kona 		.ops = &clk_rcg2_shared_ops,
755*10524682SJagadeesh Kona 	},
756*10524682SJagadeesh Kona };
757*10524682SJagadeesh Kona 
758*10524682SJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_jpeg_clk_src[] = {
759*10524682SJagadeesh Kona 	F(19200000, P_BI_TCXO, 1, 0, 0),
760*10524682SJagadeesh Kona 	F(200000000, P_CAM_CC_PLL0_OUT_ODD, 2, 0, 0),
761*10524682SJagadeesh Kona 	F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0),
762*10524682SJagadeesh Kona 	F(480000000, P_CAM_CC_PLL6_OUT_EVEN, 1, 0, 0),
763*10524682SJagadeesh Kona 	F(600000000, P_CAM_CC_PLL0_OUT_EVEN, 1, 0, 0),
764*10524682SJagadeesh Kona 	{ }
765*10524682SJagadeesh Kona };
766*10524682SJagadeesh Kona 
767*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_jpeg_clk_src = {
768*10524682SJagadeesh Kona 	.cmd_rcgr = 0x133dc,
769*10524682SJagadeesh Kona 	.mnd_width = 0,
770*10524682SJagadeesh Kona 	.hid_width = 5,
771*10524682SJagadeesh Kona 	.parent_map = cam_cc_parent_map_0,
772*10524682SJagadeesh Kona 	.freq_tbl = ftbl_cam_cc_jpeg_clk_src,
773*10524682SJagadeesh Kona 	.hw_clk_ctrl = true,
774*10524682SJagadeesh Kona 	.clkr.hw.init = &(const struct clk_init_data) {
775*10524682SJagadeesh Kona 		.name = "cam_cc_jpeg_clk_src",
776*10524682SJagadeesh Kona 		.parent_data = cam_cc_parent_data_0,
777*10524682SJagadeesh Kona 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
778*10524682SJagadeesh Kona 		.flags = CLK_SET_RATE_PARENT,
779*10524682SJagadeesh Kona 		.ops = &clk_rcg2_shared_ops,
780*10524682SJagadeesh Kona 	},
781*10524682SJagadeesh Kona };
782*10524682SJagadeesh Kona 
783*10524682SJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_mclk0_clk_src[] = {
784*10524682SJagadeesh Kona 	F(19200000, P_BI_TCXO, 1, 0, 0),
785*10524682SJagadeesh Kona 	F(24000000, P_CAM_CC_PLL2_OUT_MAIN, 10, 1, 4),
786*10524682SJagadeesh Kona 	F(68571429, P_CAM_CC_PLL2_OUT_MAIN, 14, 0, 0),
787*10524682SJagadeesh Kona 	{ }
788*10524682SJagadeesh Kona };
789*10524682SJagadeesh Kona 
790*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_mclk0_clk_src = {
791*10524682SJagadeesh Kona 	.cmd_rcgr = 0x15000,
792*10524682SJagadeesh Kona 	.mnd_width = 8,
793*10524682SJagadeesh Kona 	.hid_width = 5,
794*10524682SJagadeesh Kona 	.parent_map = cam_cc_parent_map_1,
795*10524682SJagadeesh Kona 	.freq_tbl = ftbl_cam_cc_mclk0_clk_src,
796*10524682SJagadeesh Kona 	.hw_clk_ctrl = true,
797*10524682SJagadeesh Kona 	.clkr.hw.init = &(const struct clk_init_data) {
798*10524682SJagadeesh Kona 		.name = "cam_cc_mclk0_clk_src",
799*10524682SJagadeesh Kona 		.parent_data = cam_cc_parent_data_1,
800*10524682SJagadeesh Kona 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
801*10524682SJagadeesh Kona 		.flags = CLK_SET_RATE_PARENT,
802*10524682SJagadeesh Kona 		.ops = &clk_rcg2_shared_ops,
803*10524682SJagadeesh Kona 	},
804*10524682SJagadeesh Kona };
805*10524682SJagadeesh Kona 
806*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_mclk1_clk_src = {
807*10524682SJagadeesh Kona 	.cmd_rcgr = 0x1501c,
808*10524682SJagadeesh Kona 	.mnd_width = 8,
809*10524682SJagadeesh Kona 	.hid_width = 5,
810*10524682SJagadeesh Kona 	.parent_map = cam_cc_parent_map_1,
811*10524682SJagadeesh Kona 	.freq_tbl = ftbl_cam_cc_mclk0_clk_src,
812*10524682SJagadeesh Kona 	.hw_clk_ctrl = true,
813*10524682SJagadeesh Kona 	.clkr.hw.init = &(const struct clk_init_data) {
814*10524682SJagadeesh Kona 		.name = "cam_cc_mclk1_clk_src",
815*10524682SJagadeesh Kona 		.parent_data = cam_cc_parent_data_1,
816*10524682SJagadeesh Kona 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
817*10524682SJagadeesh Kona 		.flags = CLK_SET_RATE_PARENT,
818*10524682SJagadeesh Kona 		.ops = &clk_rcg2_shared_ops,
819*10524682SJagadeesh Kona 	},
820*10524682SJagadeesh Kona };
821*10524682SJagadeesh Kona 
822*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_mclk2_clk_src = {
823*10524682SJagadeesh Kona 	.cmd_rcgr = 0x15038,
824*10524682SJagadeesh Kona 	.mnd_width = 8,
825*10524682SJagadeesh Kona 	.hid_width = 5,
826*10524682SJagadeesh Kona 	.parent_map = cam_cc_parent_map_1,
827*10524682SJagadeesh Kona 	.freq_tbl = ftbl_cam_cc_mclk0_clk_src,
828*10524682SJagadeesh Kona 	.hw_clk_ctrl = true,
829*10524682SJagadeesh Kona 	.clkr.hw.init = &(const struct clk_init_data) {
830*10524682SJagadeesh Kona 		.name = "cam_cc_mclk2_clk_src",
831*10524682SJagadeesh Kona 		.parent_data = cam_cc_parent_data_1,
832*10524682SJagadeesh Kona 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
833*10524682SJagadeesh Kona 		.flags = CLK_SET_RATE_PARENT,
834*10524682SJagadeesh Kona 		.ops = &clk_rcg2_shared_ops,
835*10524682SJagadeesh Kona 	},
836*10524682SJagadeesh Kona };
837*10524682SJagadeesh Kona 
838*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_mclk3_clk_src = {
839*10524682SJagadeesh Kona 	.cmd_rcgr = 0x15054,
840*10524682SJagadeesh Kona 	.mnd_width = 8,
841*10524682SJagadeesh Kona 	.hid_width = 5,
842*10524682SJagadeesh Kona 	.parent_map = cam_cc_parent_map_1,
843*10524682SJagadeesh Kona 	.freq_tbl = ftbl_cam_cc_mclk0_clk_src,
844*10524682SJagadeesh Kona 	.hw_clk_ctrl = true,
845*10524682SJagadeesh Kona 	.clkr.hw.init = &(const struct clk_init_data) {
846*10524682SJagadeesh Kona 		.name = "cam_cc_mclk3_clk_src",
847*10524682SJagadeesh Kona 		.parent_data = cam_cc_parent_data_1,
848*10524682SJagadeesh Kona 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
849*10524682SJagadeesh Kona 		.flags = CLK_SET_RATE_PARENT,
850*10524682SJagadeesh Kona 		.ops = &clk_rcg2_shared_ops,
851*10524682SJagadeesh Kona 	},
852*10524682SJagadeesh Kona };
853*10524682SJagadeesh Kona 
854*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_mclk4_clk_src = {
855*10524682SJagadeesh Kona 	.cmd_rcgr = 0x15070,
856*10524682SJagadeesh Kona 	.mnd_width = 8,
857*10524682SJagadeesh Kona 	.hid_width = 5,
858*10524682SJagadeesh Kona 	.parent_map = cam_cc_parent_map_1,
859*10524682SJagadeesh Kona 	.freq_tbl = ftbl_cam_cc_mclk0_clk_src,
860*10524682SJagadeesh Kona 	.hw_clk_ctrl = true,
861*10524682SJagadeesh Kona 	.clkr.hw.init = &(const struct clk_init_data) {
862*10524682SJagadeesh Kona 		.name = "cam_cc_mclk4_clk_src",
863*10524682SJagadeesh Kona 		.parent_data = cam_cc_parent_data_1,
864*10524682SJagadeesh Kona 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
865*10524682SJagadeesh Kona 		.flags = CLK_SET_RATE_PARENT,
866*10524682SJagadeesh Kona 		.ops = &clk_rcg2_shared_ops,
867*10524682SJagadeesh Kona 	},
868*10524682SJagadeesh Kona };
869*10524682SJagadeesh Kona 
870*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_mclk5_clk_src = {
871*10524682SJagadeesh Kona 	.cmd_rcgr = 0x1508c,
872*10524682SJagadeesh Kona 	.mnd_width = 8,
873*10524682SJagadeesh Kona 	.hid_width = 5,
874*10524682SJagadeesh Kona 	.parent_map = cam_cc_parent_map_1,
875*10524682SJagadeesh Kona 	.freq_tbl = ftbl_cam_cc_mclk0_clk_src,
876*10524682SJagadeesh Kona 	.hw_clk_ctrl = true,
877*10524682SJagadeesh Kona 	.clkr.hw.init = &(const struct clk_init_data) {
878*10524682SJagadeesh Kona 		.name = "cam_cc_mclk5_clk_src",
879*10524682SJagadeesh Kona 		.parent_data = cam_cc_parent_data_1,
880*10524682SJagadeesh Kona 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
881*10524682SJagadeesh Kona 		.flags = CLK_SET_RATE_PARENT,
882*10524682SJagadeesh Kona 		.ops = &clk_rcg2_shared_ops,
883*10524682SJagadeesh Kona 	},
884*10524682SJagadeesh Kona };
885*10524682SJagadeesh Kona 
886*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_mclk6_clk_src = {
887*10524682SJagadeesh Kona 	.cmd_rcgr = 0x150a8,
888*10524682SJagadeesh Kona 	.mnd_width = 8,
889*10524682SJagadeesh Kona 	.hid_width = 5,
890*10524682SJagadeesh Kona 	.parent_map = cam_cc_parent_map_1,
891*10524682SJagadeesh Kona 	.freq_tbl = ftbl_cam_cc_mclk0_clk_src,
892*10524682SJagadeesh Kona 	.hw_clk_ctrl = true,
893*10524682SJagadeesh Kona 	.clkr.hw.init = &(const struct clk_init_data) {
894*10524682SJagadeesh Kona 		.name = "cam_cc_mclk6_clk_src",
895*10524682SJagadeesh Kona 		.parent_data = cam_cc_parent_data_1,
896*10524682SJagadeesh Kona 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
897*10524682SJagadeesh Kona 		.flags = CLK_SET_RATE_PARENT,
898*10524682SJagadeesh Kona 		.ops = &clk_rcg2_shared_ops,
899*10524682SJagadeesh Kona 	},
900*10524682SJagadeesh Kona };
901*10524682SJagadeesh Kona 
902*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_mclk7_clk_src = {
903*10524682SJagadeesh Kona 	.cmd_rcgr = 0x150c4,
904*10524682SJagadeesh Kona 	.mnd_width = 8,
905*10524682SJagadeesh Kona 	.hid_width = 5,
906*10524682SJagadeesh Kona 	.parent_map = cam_cc_parent_map_1,
907*10524682SJagadeesh Kona 	.freq_tbl = ftbl_cam_cc_mclk0_clk_src,
908*10524682SJagadeesh Kona 	.hw_clk_ctrl = true,
909*10524682SJagadeesh Kona 	.clkr.hw.init = &(const struct clk_init_data) {
910*10524682SJagadeesh Kona 		.name = "cam_cc_mclk7_clk_src",
911*10524682SJagadeesh Kona 		.parent_data = cam_cc_parent_data_1,
912*10524682SJagadeesh Kona 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
913*10524682SJagadeesh Kona 		.flags = CLK_SET_RATE_PARENT,
914*10524682SJagadeesh Kona 		.ops = &clk_rcg2_shared_ops,
915*10524682SJagadeesh Kona 	},
916*10524682SJagadeesh Kona };
917*10524682SJagadeesh Kona 
918*10524682SJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_qdss_debug_clk_src[] = {
919*10524682SJagadeesh Kona 	F(19200000, P_BI_TCXO, 1, 0, 0),
920*10524682SJagadeesh Kona 	F(75000000, P_CAM_CC_PLL0_OUT_EVEN, 8, 0, 0),
921*10524682SJagadeesh Kona 	F(150000000, P_CAM_CC_PLL0_OUT_EVEN, 4, 0, 0),
922*10524682SJagadeesh Kona 	F(300000000, P_CAM_CC_PLL0_OUT_MAIN, 4, 0, 0),
923*10524682SJagadeesh Kona 	{ }
924*10524682SJagadeesh Kona };
925*10524682SJagadeesh Kona 
926*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_qdss_debug_clk_src = {
927*10524682SJagadeesh Kona 	.cmd_rcgr = 0x13938,
928*10524682SJagadeesh Kona 	.mnd_width = 0,
929*10524682SJagadeesh Kona 	.hid_width = 5,
930*10524682SJagadeesh Kona 	.parent_map = cam_cc_parent_map_0,
931*10524682SJagadeesh Kona 	.freq_tbl = ftbl_cam_cc_qdss_debug_clk_src,
932*10524682SJagadeesh Kona 	.hw_clk_ctrl = true,
933*10524682SJagadeesh Kona 	.clkr.hw.init = &(const struct clk_init_data) {
934*10524682SJagadeesh Kona 		.name = "cam_cc_qdss_debug_clk_src",
935*10524682SJagadeesh Kona 		.parent_data = cam_cc_parent_data_0,
936*10524682SJagadeesh Kona 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
937*10524682SJagadeesh Kona 		.flags = CLK_SET_RATE_PARENT,
938*10524682SJagadeesh Kona 		.ops = &clk_rcg2_shared_ops,
939*10524682SJagadeesh Kona 	},
940*10524682SJagadeesh Kona };
941*10524682SJagadeesh Kona 
942*10524682SJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_sleep_clk_src[] = {
943*10524682SJagadeesh Kona 	F(32000, P_SLEEP_CLK, 1, 0, 0),
944*10524682SJagadeesh Kona 	{ }
945*10524682SJagadeesh Kona };
946*10524682SJagadeesh Kona 
947*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_sleep_clk_src = {
948*10524682SJagadeesh Kona 	.cmd_rcgr = 0x13aa0,
949*10524682SJagadeesh Kona 	.mnd_width = 0,
950*10524682SJagadeesh Kona 	.hid_width = 5,
951*10524682SJagadeesh Kona 	.parent_map = cam_cc_parent_map_4,
952*10524682SJagadeesh Kona 	.freq_tbl = ftbl_cam_cc_sleep_clk_src,
953*10524682SJagadeesh Kona 	.clkr.hw.init = &(const struct clk_init_data) {
954*10524682SJagadeesh Kona 		.name = "cam_cc_sleep_clk_src",
955*10524682SJagadeesh Kona 		.parent_data = cam_cc_parent_data_4,
956*10524682SJagadeesh Kona 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_4),
957*10524682SJagadeesh Kona 		.flags = CLK_SET_RATE_PARENT,
958*10524682SJagadeesh Kona 		.ops = &clk_rcg2_shared_ops,
959*10524682SJagadeesh Kona 	},
960*10524682SJagadeesh Kona };
961*10524682SJagadeesh Kona 
962*10524682SJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_slow_ahb_clk_src[] = {
963*10524682SJagadeesh Kona 	F(19200000, P_BI_TCXO, 1, 0, 0),
964*10524682SJagadeesh Kona 	F(80000000, P_CAM_CC_PLL0_OUT_EVEN, 7.5, 0, 0),
965*10524682SJagadeesh Kona 	{ }
966*10524682SJagadeesh Kona };
967*10524682SJagadeesh Kona 
968*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_slow_ahb_clk_src = {
969*10524682SJagadeesh Kona 	.cmd_rcgr = 0x10148,
970*10524682SJagadeesh Kona 	.mnd_width = 8,
971*10524682SJagadeesh Kona 	.hid_width = 5,
972*10524682SJagadeesh Kona 	.parent_map = cam_cc_parent_map_0,
973*10524682SJagadeesh Kona 	.freq_tbl = ftbl_cam_cc_slow_ahb_clk_src,
974*10524682SJagadeesh Kona 	.hw_clk_ctrl = true,
975*10524682SJagadeesh Kona 	.clkr.hw.init = &(const struct clk_init_data) {
976*10524682SJagadeesh Kona 		.name = "cam_cc_slow_ahb_clk_src",
977*10524682SJagadeesh Kona 		.parent_data = cam_cc_parent_data_0,
978*10524682SJagadeesh Kona 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
979*10524682SJagadeesh Kona 		.flags = CLK_SET_RATE_PARENT,
980*10524682SJagadeesh Kona 		.ops = &clk_rcg2_shared_ops,
981*10524682SJagadeesh Kona 	},
982*10524682SJagadeesh Kona };
983*10524682SJagadeesh Kona 
984*10524682SJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_xo_clk_src[] = {
985*10524682SJagadeesh Kona 	F(19200000, P_BI_TCXO, 1, 0, 0),
986*10524682SJagadeesh Kona 	{ }
987*10524682SJagadeesh Kona };
988*10524682SJagadeesh Kona 
989*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_xo_clk_src = {
990*10524682SJagadeesh Kona 	.cmd_rcgr = 0x13a84,
991*10524682SJagadeesh Kona 	.mnd_width = 0,
992*10524682SJagadeesh Kona 	.hid_width = 5,
993*10524682SJagadeesh Kona 	.parent_map = cam_cc_parent_map_5,
994*10524682SJagadeesh Kona 	.freq_tbl = ftbl_cam_cc_xo_clk_src,
995*10524682SJagadeesh Kona 	.hw_clk_ctrl = true,
996*10524682SJagadeesh Kona 	.clkr.hw.init = &(const struct clk_init_data) {
997*10524682SJagadeesh Kona 		.name = "cam_cc_xo_clk_src",
998*10524682SJagadeesh Kona 		.parent_data = cam_cc_parent_data_5,
999*10524682SJagadeesh Kona 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_5),
1000*10524682SJagadeesh Kona 		.flags = CLK_SET_RATE_PARENT,
1001*10524682SJagadeesh Kona 		.ops = &clk_rcg2_shared_ops,
1002*10524682SJagadeesh Kona 	},
1003*10524682SJagadeesh Kona };
1004*10524682SJagadeesh Kona 
1005*10524682SJagadeesh Kona static struct clk_branch cam_cc_bps_ahb_clk = {
1006*10524682SJagadeesh Kona 	.halt_reg = 0x10274,
1007*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1008*10524682SJagadeesh Kona 	.clkr = {
1009*10524682SJagadeesh Kona 		.enable_reg = 0x10274,
1010*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1011*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1012*10524682SJagadeesh Kona 			.name = "cam_cc_bps_ahb_clk",
1013*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1014*10524682SJagadeesh Kona 				&cam_cc_slow_ahb_clk_src.clkr.hw,
1015*10524682SJagadeesh Kona 			},
1016*10524682SJagadeesh Kona 			.num_parents = 1,
1017*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1018*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1019*10524682SJagadeesh Kona 		},
1020*10524682SJagadeesh Kona 	},
1021*10524682SJagadeesh Kona };
1022*10524682SJagadeesh Kona 
1023*10524682SJagadeesh Kona static struct clk_branch cam_cc_bps_clk = {
1024*10524682SJagadeesh Kona 	.halt_reg = 0x103a4,
1025*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1026*10524682SJagadeesh Kona 	.clkr = {
1027*10524682SJagadeesh Kona 		.enable_reg = 0x103a4,
1028*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1029*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1030*10524682SJagadeesh Kona 			.name = "cam_cc_bps_clk",
1031*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1032*10524682SJagadeesh Kona 				&cam_cc_bps_clk_src.clkr.hw,
1033*10524682SJagadeesh Kona 			},
1034*10524682SJagadeesh Kona 			.num_parents = 1,
1035*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1036*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1037*10524682SJagadeesh Kona 		},
1038*10524682SJagadeesh Kona 	},
1039*10524682SJagadeesh Kona };
1040*10524682SJagadeesh Kona 
1041*10524682SJagadeesh Kona static struct clk_branch cam_cc_bps_fast_ahb_clk = {
1042*10524682SJagadeesh Kona 	.halt_reg = 0x10144,
1043*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1044*10524682SJagadeesh Kona 	.clkr = {
1045*10524682SJagadeesh Kona 		.enable_reg = 0x10144,
1046*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1047*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1048*10524682SJagadeesh Kona 			.name = "cam_cc_bps_fast_ahb_clk",
1049*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1050*10524682SJagadeesh Kona 				&cam_cc_fast_ahb_clk_src.clkr.hw,
1051*10524682SJagadeesh Kona 			},
1052*10524682SJagadeesh Kona 			.num_parents = 1,
1053*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1054*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1055*10524682SJagadeesh Kona 		},
1056*10524682SJagadeesh Kona 	},
1057*10524682SJagadeesh Kona };
1058*10524682SJagadeesh Kona 
1059*10524682SJagadeesh Kona static struct clk_branch cam_cc_camnoc_axi_nrt_clk = {
1060*10524682SJagadeesh Kona 	.halt_reg = 0x13920,
1061*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT_VOTED,
1062*10524682SJagadeesh Kona 	.hwcg_reg = 0x13920,
1063*10524682SJagadeesh Kona 	.hwcg_bit = 1,
1064*10524682SJagadeesh Kona 	.clkr = {
1065*10524682SJagadeesh Kona 		.enable_reg = 0x13920,
1066*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1067*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1068*10524682SJagadeesh Kona 			.name = "cam_cc_camnoc_axi_nrt_clk",
1069*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1070*10524682SJagadeesh Kona 				&cam_cc_camnoc_axi_rt_clk_src.clkr.hw,
1071*10524682SJagadeesh Kona 			},
1072*10524682SJagadeesh Kona 			.num_parents = 1,
1073*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1074*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1075*10524682SJagadeesh Kona 		},
1076*10524682SJagadeesh Kona 	},
1077*10524682SJagadeesh Kona };
1078*10524682SJagadeesh Kona 
1079*10524682SJagadeesh Kona static struct clk_branch cam_cc_camnoc_axi_rt_clk = {
1080*10524682SJagadeesh Kona 	.halt_reg = 0x13910,
1081*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1082*10524682SJagadeesh Kona 	.clkr = {
1083*10524682SJagadeesh Kona 		.enable_reg = 0x13910,
1084*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1085*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1086*10524682SJagadeesh Kona 			.name = "cam_cc_camnoc_axi_rt_clk",
1087*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1088*10524682SJagadeesh Kona 				&cam_cc_camnoc_axi_rt_clk_src.clkr.hw,
1089*10524682SJagadeesh Kona 			},
1090*10524682SJagadeesh Kona 			.num_parents = 1,
1091*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1092*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1093*10524682SJagadeesh Kona 		},
1094*10524682SJagadeesh Kona 	},
1095*10524682SJagadeesh Kona };
1096*10524682SJagadeesh Kona 
1097*10524682SJagadeesh Kona static struct clk_branch cam_cc_camnoc_dcd_xo_clk = {
1098*10524682SJagadeesh Kona 	.halt_reg = 0x1392c,
1099*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1100*10524682SJagadeesh Kona 	.clkr = {
1101*10524682SJagadeesh Kona 		.enable_reg = 0x1392c,
1102*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1103*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1104*10524682SJagadeesh Kona 			.name = "cam_cc_camnoc_dcd_xo_clk",
1105*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1106*10524682SJagadeesh Kona 				&cam_cc_xo_clk_src.clkr.hw,
1107*10524682SJagadeesh Kona 			},
1108*10524682SJagadeesh Kona 			.num_parents = 1,
1109*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1110*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1111*10524682SJagadeesh Kona 		},
1112*10524682SJagadeesh Kona 	},
1113*10524682SJagadeesh Kona };
1114*10524682SJagadeesh Kona 
1115*10524682SJagadeesh Kona static struct clk_branch cam_cc_camnoc_xo_clk = {
1116*10524682SJagadeesh Kona 	.halt_reg = 0x13930,
1117*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1118*10524682SJagadeesh Kona 	.clkr = {
1119*10524682SJagadeesh Kona 		.enable_reg = 0x13930,
1120*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1121*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1122*10524682SJagadeesh Kona 			.name = "cam_cc_camnoc_xo_clk",
1123*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1124*10524682SJagadeesh Kona 				&cam_cc_xo_clk_src.clkr.hw,
1125*10524682SJagadeesh Kona 			},
1126*10524682SJagadeesh Kona 			.num_parents = 1,
1127*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1128*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1129*10524682SJagadeesh Kona 		},
1130*10524682SJagadeesh Kona 	},
1131*10524682SJagadeesh Kona };
1132*10524682SJagadeesh Kona 
1133*10524682SJagadeesh Kona static struct clk_branch cam_cc_cci_0_clk = {
1134*10524682SJagadeesh Kona 	.halt_reg = 0x13788,
1135*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1136*10524682SJagadeesh Kona 	.clkr = {
1137*10524682SJagadeesh Kona 		.enable_reg = 0x13788,
1138*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1139*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1140*10524682SJagadeesh Kona 			.name = "cam_cc_cci_0_clk",
1141*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1142*10524682SJagadeesh Kona 				&cam_cc_cci_0_clk_src.clkr.hw,
1143*10524682SJagadeesh Kona 			},
1144*10524682SJagadeesh Kona 			.num_parents = 1,
1145*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1146*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1147*10524682SJagadeesh Kona 		},
1148*10524682SJagadeesh Kona 	},
1149*10524682SJagadeesh Kona };
1150*10524682SJagadeesh Kona 
1151*10524682SJagadeesh Kona static struct clk_branch cam_cc_cci_1_clk = {
1152*10524682SJagadeesh Kona 	.halt_reg = 0x138b8,
1153*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1154*10524682SJagadeesh Kona 	.clkr = {
1155*10524682SJagadeesh Kona 		.enable_reg = 0x138b8,
1156*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1157*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1158*10524682SJagadeesh Kona 			.name = "cam_cc_cci_1_clk",
1159*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1160*10524682SJagadeesh Kona 				&cam_cc_cci_1_clk_src.clkr.hw,
1161*10524682SJagadeesh Kona 			},
1162*10524682SJagadeesh Kona 			.num_parents = 1,
1163*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1164*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1165*10524682SJagadeesh Kona 		},
1166*10524682SJagadeesh Kona 	},
1167*10524682SJagadeesh Kona };
1168*10524682SJagadeesh Kona 
1169*10524682SJagadeesh Kona static struct clk_branch cam_cc_core_ahb_clk = {
1170*10524682SJagadeesh Kona 	.halt_reg = 0x13a80,
1171*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT_VOTED,
1172*10524682SJagadeesh Kona 	.clkr = {
1173*10524682SJagadeesh Kona 		.enable_reg = 0x13a80,
1174*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1175*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1176*10524682SJagadeesh Kona 			.name = "cam_cc_core_ahb_clk",
1177*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1178*10524682SJagadeesh Kona 				&cam_cc_slow_ahb_clk_src.clkr.hw,
1179*10524682SJagadeesh Kona 			},
1180*10524682SJagadeesh Kona 			.num_parents = 1,
1181*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1182*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1183*10524682SJagadeesh Kona 		},
1184*10524682SJagadeesh Kona 	},
1185*10524682SJagadeesh Kona };
1186*10524682SJagadeesh Kona 
1187*10524682SJagadeesh Kona static struct clk_branch cam_cc_cpas_ahb_clk = {
1188*10524682SJagadeesh Kona 	.halt_reg = 0x138bc,
1189*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1190*10524682SJagadeesh Kona 	.clkr = {
1191*10524682SJagadeesh Kona 		.enable_reg = 0x138bc,
1192*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1193*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1194*10524682SJagadeesh Kona 			.name = "cam_cc_cpas_ahb_clk",
1195*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1196*10524682SJagadeesh Kona 				&cam_cc_slow_ahb_clk_src.clkr.hw,
1197*10524682SJagadeesh Kona 			},
1198*10524682SJagadeesh Kona 			.num_parents = 1,
1199*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1200*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1201*10524682SJagadeesh Kona 		},
1202*10524682SJagadeesh Kona 	},
1203*10524682SJagadeesh Kona };
1204*10524682SJagadeesh Kona 
1205*10524682SJagadeesh Kona static struct clk_branch cam_cc_cpas_bps_clk = {
1206*10524682SJagadeesh Kona 	.halt_reg = 0x103b0,
1207*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1208*10524682SJagadeesh Kona 	.clkr = {
1209*10524682SJagadeesh Kona 		.enable_reg = 0x103b0,
1210*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1211*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1212*10524682SJagadeesh Kona 			.name = "cam_cc_cpas_bps_clk",
1213*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1214*10524682SJagadeesh Kona 				&cam_cc_bps_clk_src.clkr.hw,
1215*10524682SJagadeesh Kona 			},
1216*10524682SJagadeesh Kona 			.num_parents = 1,
1217*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1218*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1219*10524682SJagadeesh Kona 		},
1220*10524682SJagadeesh Kona 	},
1221*10524682SJagadeesh Kona };
1222*10524682SJagadeesh Kona 
1223*10524682SJagadeesh Kona static struct clk_branch cam_cc_cpas_fast_ahb_clk = {
1224*10524682SJagadeesh Kona 	.halt_reg = 0x138c8,
1225*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1226*10524682SJagadeesh Kona 	.clkr = {
1227*10524682SJagadeesh Kona 		.enable_reg = 0x138c8,
1228*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1229*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1230*10524682SJagadeesh Kona 			.name = "cam_cc_cpas_fast_ahb_clk",
1231*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1232*10524682SJagadeesh Kona 				&cam_cc_fast_ahb_clk_src.clkr.hw,
1233*10524682SJagadeesh Kona 			},
1234*10524682SJagadeesh Kona 			.num_parents = 1,
1235*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1236*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1237*10524682SJagadeesh Kona 		},
1238*10524682SJagadeesh Kona 	},
1239*10524682SJagadeesh Kona };
1240*10524682SJagadeesh Kona 
1241*10524682SJagadeesh Kona static struct clk_branch cam_cc_cpas_ife_0_clk = {
1242*10524682SJagadeesh Kona 	.halt_reg = 0x11150,
1243*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1244*10524682SJagadeesh Kona 	.clkr = {
1245*10524682SJagadeesh Kona 		.enable_reg = 0x11150,
1246*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1247*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1248*10524682SJagadeesh Kona 			.name = "cam_cc_cpas_ife_0_clk",
1249*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1250*10524682SJagadeesh Kona 				&cam_cc_ife_0_clk_src.clkr.hw,
1251*10524682SJagadeesh Kona 			},
1252*10524682SJagadeesh Kona 			.num_parents = 1,
1253*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1254*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1255*10524682SJagadeesh Kona 		},
1256*10524682SJagadeesh Kona 	},
1257*10524682SJagadeesh Kona };
1258*10524682SJagadeesh Kona 
1259*10524682SJagadeesh Kona static struct clk_branch cam_cc_cpas_ife_lite_clk = {
1260*10524682SJagadeesh Kona 	.halt_reg = 0x13138,
1261*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1262*10524682SJagadeesh Kona 	.clkr = {
1263*10524682SJagadeesh Kona 		.enable_reg = 0x13138,
1264*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1265*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1266*10524682SJagadeesh Kona 			.name = "cam_cc_cpas_ife_lite_clk",
1267*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1268*10524682SJagadeesh Kona 				&cam_cc_ife_lite_clk_src.clkr.hw,
1269*10524682SJagadeesh Kona 			},
1270*10524682SJagadeesh Kona 			.num_parents = 1,
1271*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1272*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1273*10524682SJagadeesh Kona 		},
1274*10524682SJagadeesh Kona 	},
1275*10524682SJagadeesh Kona };
1276*10524682SJagadeesh Kona 
1277*10524682SJagadeesh Kona static struct clk_branch cam_cc_cpas_ipe_nps_clk = {
1278*10524682SJagadeesh Kona 	.halt_reg = 0x10504,
1279*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1280*10524682SJagadeesh Kona 	.clkr = {
1281*10524682SJagadeesh Kona 		.enable_reg = 0x10504,
1282*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1283*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1284*10524682SJagadeesh Kona 			.name = "cam_cc_cpas_ipe_nps_clk",
1285*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1286*10524682SJagadeesh Kona 				&cam_cc_ipe_nps_clk_src.clkr.hw,
1287*10524682SJagadeesh Kona 			},
1288*10524682SJagadeesh Kona 			.num_parents = 1,
1289*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1290*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1291*10524682SJagadeesh Kona 		},
1292*10524682SJagadeesh Kona 	},
1293*10524682SJagadeesh Kona };
1294*10524682SJagadeesh Kona 
1295*10524682SJagadeesh Kona static struct clk_branch cam_cc_csi0phytimer_clk = {
1296*10524682SJagadeesh Kona 	.halt_reg = 0x150f8,
1297*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1298*10524682SJagadeesh Kona 	.clkr = {
1299*10524682SJagadeesh Kona 		.enable_reg = 0x150f8,
1300*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1301*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1302*10524682SJagadeesh Kona 			.name = "cam_cc_csi0phytimer_clk",
1303*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1304*10524682SJagadeesh Kona 				&cam_cc_csi0phytimer_clk_src.clkr.hw,
1305*10524682SJagadeesh Kona 			},
1306*10524682SJagadeesh Kona 			.num_parents = 1,
1307*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1308*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1309*10524682SJagadeesh Kona 		},
1310*10524682SJagadeesh Kona 	},
1311*10524682SJagadeesh Kona };
1312*10524682SJagadeesh Kona 
1313*10524682SJagadeesh Kona static struct clk_branch cam_cc_csi1phytimer_clk = {
1314*10524682SJagadeesh Kona 	.halt_reg = 0x1511c,
1315*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1316*10524682SJagadeesh Kona 	.clkr = {
1317*10524682SJagadeesh Kona 		.enable_reg = 0x1511c,
1318*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1319*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1320*10524682SJagadeesh Kona 			.name = "cam_cc_csi1phytimer_clk",
1321*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1322*10524682SJagadeesh Kona 				&cam_cc_csi1phytimer_clk_src.clkr.hw,
1323*10524682SJagadeesh Kona 			},
1324*10524682SJagadeesh Kona 			.num_parents = 1,
1325*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1326*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1327*10524682SJagadeesh Kona 		},
1328*10524682SJagadeesh Kona 	},
1329*10524682SJagadeesh Kona };
1330*10524682SJagadeesh Kona 
1331*10524682SJagadeesh Kona static struct clk_branch cam_cc_csi2phytimer_clk = {
1332*10524682SJagadeesh Kona 	.halt_reg = 0x15250,
1333*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1334*10524682SJagadeesh Kona 	.clkr = {
1335*10524682SJagadeesh Kona 		.enable_reg = 0x15250,
1336*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1337*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1338*10524682SJagadeesh Kona 			.name = "cam_cc_csi2phytimer_clk",
1339*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1340*10524682SJagadeesh Kona 				&cam_cc_csi2phytimer_clk_src.clkr.hw,
1341*10524682SJagadeesh Kona 			},
1342*10524682SJagadeesh Kona 			.num_parents = 1,
1343*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1344*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1345*10524682SJagadeesh Kona 		},
1346*10524682SJagadeesh Kona 	},
1347*10524682SJagadeesh Kona };
1348*10524682SJagadeesh Kona 
1349*10524682SJagadeesh Kona static struct clk_branch cam_cc_csi3phytimer_clk = {
1350*10524682SJagadeesh Kona 	.halt_reg = 0x15384,
1351*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1352*10524682SJagadeesh Kona 	.clkr = {
1353*10524682SJagadeesh Kona 		.enable_reg = 0x15384,
1354*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1355*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1356*10524682SJagadeesh Kona 			.name = "cam_cc_csi3phytimer_clk",
1357*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1358*10524682SJagadeesh Kona 				&cam_cc_csi3phytimer_clk_src.clkr.hw,
1359*10524682SJagadeesh Kona 			},
1360*10524682SJagadeesh Kona 			.num_parents = 1,
1361*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1362*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1363*10524682SJagadeesh Kona 		},
1364*10524682SJagadeesh Kona 	},
1365*10524682SJagadeesh Kona };
1366*10524682SJagadeesh Kona 
1367*10524682SJagadeesh Kona static struct clk_branch cam_cc_csi4phytimer_clk = {
1368*10524682SJagadeesh Kona 	.halt_reg = 0x154b8,
1369*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1370*10524682SJagadeesh Kona 	.clkr = {
1371*10524682SJagadeesh Kona 		.enable_reg = 0x154b8,
1372*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1373*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1374*10524682SJagadeesh Kona 			.name = "cam_cc_csi4phytimer_clk",
1375*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1376*10524682SJagadeesh Kona 				&cam_cc_csi4phytimer_clk_src.clkr.hw,
1377*10524682SJagadeesh Kona 			},
1378*10524682SJagadeesh Kona 			.num_parents = 1,
1379*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1380*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1381*10524682SJagadeesh Kona 		},
1382*10524682SJagadeesh Kona 	},
1383*10524682SJagadeesh Kona };
1384*10524682SJagadeesh Kona 
1385*10524682SJagadeesh Kona static struct clk_branch cam_cc_csi5phytimer_clk = {
1386*10524682SJagadeesh Kona 	.halt_reg = 0x155ec,
1387*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1388*10524682SJagadeesh Kona 	.clkr = {
1389*10524682SJagadeesh Kona 		.enable_reg = 0x155ec,
1390*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1391*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1392*10524682SJagadeesh Kona 			.name = "cam_cc_csi5phytimer_clk",
1393*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1394*10524682SJagadeesh Kona 				&cam_cc_csi5phytimer_clk_src.clkr.hw,
1395*10524682SJagadeesh Kona 			},
1396*10524682SJagadeesh Kona 			.num_parents = 1,
1397*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1398*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1399*10524682SJagadeesh Kona 		},
1400*10524682SJagadeesh Kona 	},
1401*10524682SJagadeesh Kona };
1402*10524682SJagadeesh Kona 
1403*10524682SJagadeesh Kona static struct clk_branch cam_cc_csid_clk = {
1404*10524682SJagadeesh Kona 	.halt_reg = 0x138ec,
1405*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1406*10524682SJagadeesh Kona 	.clkr = {
1407*10524682SJagadeesh Kona 		.enable_reg = 0x138ec,
1408*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1409*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1410*10524682SJagadeesh Kona 			.name = "cam_cc_csid_clk",
1411*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1412*10524682SJagadeesh Kona 				&cam_cc_csid_clk_src.clkr.hw,
1413*10524682SJagadeesh Kona 			},
1414*10524682SJagadeesh Kona 			.num_parents = 1,
1415*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1416*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1417*10524682SJagadeesh Kona 		},
1418*10524682SJagadeesh Kona 	},
1419*10524682SJagadeesh Kona };
1420*10524682SJagadeesh Kona 
1421*10524682SJagadeesh Kona static struct clk_branch cam_cc_csid_csiphy_rx_clk = {
1422*10524682SJagadeesh Kona 	.halt_reg = 0x15100,
1423*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1424*10524682SJagadeesh Kona 	.clkr = {
1425*10524682SJagadeesh Kona 		.enable_reg = 0x15100,
1426*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1427*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1428*10524682SJagadeesh Kona 			.name = "cam_cc_csid_csiphy_rx_clk",
1429*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1430*10524682SJagadeesh Kona 				&cam_cc_cphy_rx_clk_src.clkr.hw,
1431*10524682SJagadeesh Kona 			},
1432*10524682SJagadeesh Kona 			.num_parents = 1,
1433*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1434*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1435*10524682SJagadeesh Kona 		},
1436*10524682SJagadeesh Kona 	},
1437*10524682SJagadeesh Kona };
1438*10524682SJagadeesh Kona 
1439*10524682SJagadeesh Kona static struct clk_branch cam_cc_csiphy0_clk = {
1440*10524682SJagadeesh Kona 	.halt_reg = 0x150fc,
1441*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1442*10524682SJagadeesh Kona 	.clkr = {
1443*10524682SJagadeesh Kona 		.enable_reg = 0x150fc,
1444*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1445*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1446*10524682SJagadeesh Kona 			.name = "cam_cc_csiphy0_clk",
1447*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1448*10524682SJagadeesh Kona 				&cam_cc_cphy_rx_clk_src.clkr.hw,
1449*10524682SJagadeesh Kona 			},
1450*10524682SJagadeesh Kona 			.num_parents = 1,
1451*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1452*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1453*10524682SJagadeesh Kona 		},
1454*10524682SJagadeesh Kona 	},
1455*10524682SJagadeesh Kona };
1456*10524682SJagadeesh Kona 
1457*10524682SJagadeesh Kona static struct clk_branch cam_cc_csiphy1_clk = {
1458*10524682SJagadeesh Kona 	.halt_reg = 0x15120,
1459*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1460*10524682SJagadeesh Kona 	.clkr = {
1461*10524682SJagadeesh Kona 		.enable_reg = 0x15120,
1462*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1463*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1464*10524682SJagadeesh Kona 			.name = "cam_cc_csiphy1_clk",
1465*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1466*10524682SJagadeesh Kona 				&cam_cc_cphy_rx_clk_src.clkr.hw,
1467*10524682SJagadeesh Kona 			},
1468*10524682SJagadeesh Kona 			.num_parents = 1,
1469*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1470*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1471*10524682SJagadeesh Kona 		},
1472*10524682SJagadeesh Kona 	},
1473*10524682SJagadeesh Kona };
1474*10524682SJagadeesh Kona 
1475*10524682SJagadeesh Kona static struct clk_branch cam_cc_csiphy2_clk = {
1476*10524682SJagadeesh Kona 	.halt_reg = 0x15254,
1477*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1478*10524682SJagadeesh Kona 	.clkr = {
1479*10524682SJagadeesh Kona 		.enable_reg = 0x15254,
1480*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1481*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1482*10524682SJagadeesh Kona 			.name = "cam_cc_csiphy2_clk",
1483*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1484*10524682SJagadeesh Kona 				&cam_cc_cphy_rx_clk_src.clkr.hw,
1485*10524682SJagadeesh Kona 			},
1486*10524682SJagadeesh Kona 			.num_parents = 1,
1487*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1488*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1489*10524682SJagadeesh Kona 		},
1490*10524682SJagadeesh Kona 	},
1491*10524682SJagadeesh Kona };
1492*10524682SJagadeesh Kona 
1493*10524682SJagadeesh Kona static struct clk_branch cam_cc_csiphy3_clk = {
1494*10524682SJagadeesh Kona 	.halt_reg = 0x15388,
1495*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1496*10524682SJagadeesh Kona 	.clkr = {
1497*10524682SJagadeesh Kona 		.enable_reg = 0x15388,
1498*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1499*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1500*10524682SJagadeesh Kona 			.name = "cam_cc_csiphy3_clk",
1501*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1502*10524682SJagadeesh Kona 				&cam_cc_cphy_rx_clk_src.clkr.hw,
1503*10524682SJagadeesh Kona 			},
1504*10524682SJagadeesh Kona 			.num_parents = 1,
1505*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1506*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1507*10524682SJagadeesh Kona 		},
1508*10524682SJagadeesh Kona 	},
1509*10524682SJagadeesh Kona };
1510*10524682SJagadeesh Kona 
1511*10524682SJagadeesh Kona static struct clk_branch cam_cc_csiphy4_clk = {
1512*10524682SJagadeesh Kona 	.halt_reg = 0x154bc,
1513*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1514*10524682SJagadeesh Kona 	.clkr = {
1515*10524682SJagadeesh Kona 		.enable_reg = 0x154bc,
1516*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1517*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1518*10524682SJagadeesh Kona 			.name = "cam_cc_csiphy4_clk",
1519*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1520*10524682SJagadeesh Kona 				&cam_cc_cphy_rx_clk_src.clkr.hw,
1521*10524682SJagadeesh Kona 			},
1522*10524682SJagadeesh Kona 			.num_parents = 1,
1523*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1524*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1525*10524682SJagadeesh Kona 		},
1526*10524682SJagadeesh Kona 	},
1527*10524682SJagadeesh Kona };
1528*10524682SJagadeesh Kona 
1529*10524682SJagadeesh Kona static struct clk_branch cam_cc_csiphy5_clk = {
1530*10524682SJagadeesh Kona 	.halt_reg = 0x155f0,
1531*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1532*10524682SJagadeesh Kona 	.clkr = {
1533*10524682SJagadeesh Kona 		.enable_reg = 0x155f0,
1534*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1535*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1536*10524682SJagadeesh Kona 			.name = "cam_cc_csiphy5_clk",
1537*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1538*10524682SJagadeesh Kona 				&cam_cc_cphy_rx_clk_src.clkr.hw,
1539*10524682SJagadeesh Kona 			},
1540*10524682SJagadeesh Kona 			.num_parents = 1,
1541*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1542*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1543*10524682SJagadeesh Kona 		},
1544*10524682SJagadeesh Kona 	},
1545*10524682SJagadeesh Kona };
1546*10524682SJagadeesh Kona 
1547*10524682SJagadeesh Kona static struct clk_branch cam_cc_icp_ahb_clk = {
1548*10524682SJagadeesh Kona 	.halt_reg = 0x13658,
1549*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1550*10524682SJagadeesh Kona 	.clkr = {
1551*10524682SJagadeesh Kona 		.enable_reg = 0x13658,
1552*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1553*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1554*10524682SJagadeesh Kona 			.name = "cam_cc_icp_ahb_clk",
1555*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1556*10524682SJagadeesh Kona 				&cam_cc_slow_ahb_clk_src.clkr.hw,
1557*10524682SJagadeesh Kona 			},
1558*10524682SJagadeesh Kona 			.num_parents = 1,
1559*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1560*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1561*10524682SJagadeesh Kona 		},
1562*10524682SJagadeesh Kona 	},
1563*10524682SJagadeesh Kona };
1564*10524682SJagadeesh Kona 
1565*10524682SJagadeesh Kona static struct clk_branch cam_cc_icp_clk = {
1566*10524682SJagadeesh Kona 	.halt_reg = 0x1364c,
1567*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1568*10524682SJagadeesh Kona 	.clkr = {
1569*10524682SJagadeesh Kona 		.enable_reg = 0x1364c,
1570*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1571*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1572*10524682SJagadeesh Kona 			.name = "cam_cc_icp_clk",
1573*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1574*10524682SJagadeesh Kona 				&cam_cc_icp_clk_src.clkr.hw,
1575*10524682SJagadeesh Kona 			},
1576*10524682SJagadeesh Kona 			.num_parents = 1,
1577*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1578*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1579*10524682SJagadeesh Kona 		},
1580*10524682SJagadeesh Kona 	},
1581*10524682SJagadeesh Kona };
1582*10524682SJagadeesh Kona 
1583*10524682SJagadeesh Kona static struct clk_branch cam_cc_ife_0_clk = {
1584*10524682SJagadeesh Kona 	.halt_reg = 0x11144,
1585*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1586*10524682SJagadeesh Kona 	.clkr = {
1587*10524682SJagadeesh Kona 		.enable_reg = 0x11144,
1588*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1589*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1590*10524682SJagadeesh Kona 			.name = "cam_cc_ife_0_clk",
1591*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1592*10524682SJagadeesh Kona 				&cam_cc_ife_0_clk_src.clkr.hw,
1593*10524682SJagadeesh Kona 			},
1594*10524682SJagadeesh Kona 			.num_parents = 1,
1595*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1596*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1597*10524682SJagadeesh Kona 		},
1598*10524682SJagadeesh Kona 	},
1599*10524682SJagadeesh Kona };
1600*10524682SJagadeesh Kona 
1601*10524682SJagadeesh Kona static struct clk_branch cam_cc_ife_0_dsp_clk = {
1602*10524682SJagadeesh Kona 	.halt_reg = 0x11154,
1603*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1604*10524682SJagadeesh Kona 	.clkr = {
1605*10524682SJagadeesh Kona 		.enable_reg = 0x11154,
1606*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1607*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1608*10524682SJagadeesh Kona 			.name = "cam_cc_ife_0_dsp_clk",
1609*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1610*10524682SJagadeesh Kona 				&cam_cc_ife_0_clk_src.clkr.hw,
1611*10524682SJagadeesh Kona 			},
1612*10524682SJagadeesh Kona 			.num_parents = 1,
1613*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1614*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1615*10524682SJagadeesh Kona 		},
1616*10524682SJagadeesh Kona 	},
1617*10524682SJagadeesh Kona };
1618*10524682SJagadeesh Kona 
1619*10524682SJagadeesh Kona static struct clk_branch cam_cc_ife_0_fast_ahb_clk = {
1620*10524682SJagadeesh Kona 	.halt_reg = 0x11160,
1621*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1622*10524682SJagadeesh Kona 	.clkr = {
1623*10524682SJagadeesh Kona 		.enable_reg = 0x11160,
1624*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1625*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1626*10524682SJagadeesh Kona 			.name = "cam_cc_ife_0_fast_ahb_clk",
1627*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1628*10524682SJagadeesh Kona 				&cam_cc_fast_ahb_clk_src.clkr.hw,
1629*10524682SJagadeesh Kona 			},
1630*10524682SJagadeesh Kona 			.num_parents = 1,
1631*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1632*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1633*10524682SJagadeesh Kona 		},
1634*10524682SJagadeesh Kona 	},
1635*10524682SJagadeesh Kona };
1636*10524682SJagadeesh Kona 
1637*10524682SJagadeesh Kona static struct clk_branch cam_cc_ife_lite_ahb_clk = {
1638*10524682SJagadeesh Kona 	.halt_reg = 0x13278,
1639*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1640*10524682SJagadeesh Kona 	.clkr = {
1641*10524682SJagadeesh Kona 		.enable_reg = 0x13278,
1642*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1643*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1644*10524682SJagadeesh Kona 			.name = "cam_cc_ife_lite_ahb_clk",
1645*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1646*10524682SJagadeesh Kona 				&cam_cc_slow_ahb_clk_src.clkr.hw,
1647*10524682SJagadeesh Kona 			},
1648*10524682SJagadeesh Kona 			.num_parents = 1,
1649*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1650*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1651*10524682SJagadeesh Kona 		},
1652*10524682SJagadeesh Kona 	},
1653*10524682SJagadeesh Kona };
1654*10524682SJagadeesh Kona 
1655*10524682SJagadeesh Kona static struct clk_branch cam_cc_ife_lite_clk = {
1656*10524682SJagadeesh Kona 	.halt_reg = 0x1312c,
1657*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1658*10524682SJagadeesh Kona 	.clkr = {
1659*10524682SJagadeesh Kona 		.enable_reg = 0x1312c,
1660*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1661*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1662*10524682SJagadeesh Kona 			.name = "cam_cc_ife_lite_clk",
1663*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1664*10524682SJagadeesh Kona 				&cam_cc_ife_lite_clk_src.clkr.hw,
1665*10524682SJagadeesh Kona 			},
1666*10524682SJagadeesh Kona 			.num_parents = 1,
1667*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1668*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1669*10524682SJagadeesh Kona 		},
1670*10524682SJagadeesh Kona 	},
1671*10524682SJagadeesh Kona };
1672*10524682SJagadeesh Kona 
1673*10524682SJagadeesh Kona static struct clk_branch cam_cc_ife_lite_cphy_rx_clk = {
1674*10524682SJagadeesh Kona 	.halt_reg = 0x13274,
1675*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1676*10524682SJagadeesh Kona 	.clkr = {
1677*10524682SJagadeesh Kona 		.enable_reg = 0x13274,
1678*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1679*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1680*10524682SJagadeesh Kona 			.name = "cam_cc_ife_lite_cphy_rx_clk",
1681*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1682*10524682SJagadeesh Kona 				&cam_cc_cphy_rx_clk_src.clkr.hw,
1683*10524682SJagadeesh Kona 			},
1684*10524682SJagadeesh Kona 			.num_parents = 1,
1685*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1686*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1687*10524682SJagadeesh Kona 		},
1688*10524682SJagadeesh Kona 	},
1689*10524682SJagadeesh Kona };
1690*10524682SJagadeesh Kona 
1691*10524682SJagadeesh Kona static struct clk_branch cam_cc_ife_lite_csid_clk = {
1692*10524682SJagadeesh Kona 	.halt_reg = 0x13268,
1693*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1694*10524682SJagadeesh Kona 	.clkr = {
1695*10524682SJagadeesh Kona 		.enable_reg = 0x13268,
1696*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1697*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1698*10524682SJagadeesh Kona 			.name = "cam_cc_ife_lite_csid_clk",
1699*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1700*10524682SJagadeesh Kona 				&cam_cc_ife_lite_csid_clk_src.clkr.hw,
1701*10524682SJagadeesh Kona 			},
1702*10524682SJagadeesh Kona 			.num_parents = 1,
1703*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1704*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1705*10524682SJagadeesh Kona 		},
1706*10524682SJagadeesh Kona 	},
1707*10524682SJagadeesh Kona };
1708*10524682SJagadeesh Kona 
1709*10524682SJagadeesh Kona static struct clk_branch cam_cc_ipe_nps_ahb_clk = {
1710*10524682SJagadeesh Kona 	.halt_reg = 0x1051c,
1711*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1712*10524682SJagadeesh Kona 	.clkr = {
1713*10524682SJagadeesh Kona 		.enable_reg = 0x1051c,
1714*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1715*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1716*10524682SJagadeesh Kona 			.name = "cam_cc_ipe_nps_ahb_clk",
1717*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1718*10524682SJagadeesh Kona 				&cam_cc_slow_ahb_clk_src.clkr.hw,
1719*10524682SJagadeesh Kona 			},
1720*10524682SJagadeesh Kona 			.num_parents = 1,
1721*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1722*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1723*10524682SJagadeesh Kona 		},
1724*10524682SJagadeesh Kona 	},
1725*10524682SJagadeesh Kona };
1726*10524682SJagadeesh Kona 
1727*10524682SJagadeesh Kona static struct clk_branch cam_cc_ipe_nps_clk = {
1728*10524682SJagadeesh Kona 	.halt_reg = 0x104f8,
1729*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1730*10524682SJagadeesh Kona 	.clkr = {
1731*10524682SJagadeesh Kona 		.enable_reg = 0x104f8,
1732*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1733*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1734*10524682SJagadeesh Kona 			.name = "cam_cc_ipe_nps_clk",
1735*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1736*10524682SJagadeesh Kona 				&cam_cc_ipe_nps_clk_src.clkr.hw,
1737*10524682SJagadeesh Kona 			},
1738*10524682SJagadeesh Kona 			.num_parents = 1,
1739*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1740*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1741*10524682SJagadeesh Kona 		},
1742*10524682SJagadeesh Kona 	},
1743*10524682SJagadeesh Kona };
1744*10524682SJagadeesh Kona 
1745*10524682SJagadeesh Kona static struct clk_branch cam_cc_ipe_nps_fast_ahb_clk = {
1746*10524682SJagadeesh Kona 	.halt_reg = 0x10520,
1747*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1748*10524682SJagadeesh Kona 	.clkr = {
1749*10524682SJagadeesh Kona 		.enable_reg = 0x10520,
1750*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1751*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1752*10524682SJagadeesh Kona 			.name = "cam_cc_ipe_nps_fast_ahb_clk",
1753*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1754*10524682SJagadeesh Kona 				&cam_cc_fast_ahb_clk_src.clkr.hw,
1755*10524682SJagadeesh Kona 			},
1756*10524682SJagadeesh Kona 			.num_parents = 1,
1757*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1758*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1759*10524682SJagadeesh Kona 		},
1760*10524682SJagadeesh Kona 	},
1761*10524682SJagadeesh Kona };
1762*10524682SJagadeesh Kona 
1763*10524682SJagadeesh Kona static struct clk_branch cam_cc_ipe_pps_clk = {
1764*10524682SJagadeesh Kona 	.halt_reg = 0x10508,
1765*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1766*10524682SJagadeesh Kona 	.clkr = {
1767*10524682SJagadeesh Kona 		.enable_reg = 0x10508,
1768*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1769*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1770*10524682SJagadeesh Kona 			.name = "cam_cc_ipe_pps_clk",
1771*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1772*10524682SJagadeesh Kona 				&cam_cc_ipe_nps_clk_src.clkr.hw,
1773*10524682SJagadeesh Kona 			},
1774*10524682SJagadeesh Kona 			.num_parents = 1,
1775*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1776*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1777*10524682SJagadeesh Kona 		},
1778*10524682SJagadeesh Kona 	},
1779*10524682SJagadeesh Kona };
1780*10524682SJagadeesh Kona 
1781*10524682SJagadeesh Kona static struct clk_branch cam_cc_ipe_pps_fast_ahb_clk = {
1782*10524682SJagadeesh Kona 	.halt_reg = 0x10524,
1783*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1784*10524682SJagadeesh Kona 	.clkr = {
1785*10524682SJagadeesh Kona 		.enable_reg = 0x10524,
1786*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1787*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1788*10524682SJagadeesh Kona 			.name = "cam_cc_ipe_pps_fast_ahb_clk",
1789*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1790*10524682SJagadeesh Kona 				&cam_cc_fast_ahb_clk_src.clkr.hw,
1791*10524682SJagadeesh Kona 			},
1792*10524682SJagadeesh Kona 			.num_parents = 1,
1793*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1794*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1795*10524682SJagadeesh Kona 		},
1796*10524682SJagadeesh Kona 	},
1797*10524682SJagadeesh Kona };
1798*10524682SJagadeesh Kona 
1799*10524682SJagadeesh Kona static struct clk_branch cam_cc_jpeg_clk = {
1800*10524682SJagadeesh Kona 	.halt_reg = 0x13508,
1801*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1802*10524682SJagadeesh Kona 	.clkr = {
1803*10524682SJagadeesh Kona 		.enable_reg = 0x13508,
1804*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1805*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1806*10524682SJagadeesh Kona 			.name = "cam_cc_jpeg_clk",
1807*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1808*10524682SJagadeesh Kona 				&cam_cc_jpeg_clk_src.clkr.hw,
1809*10524682SJagadeesh Kona 			},
1810*10524682SJagadeesh Kona 			.num_parents = 1,
1811*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1812*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1813*10524682SJagadeesh Kona 		},
1814*10524682SJagadeesh Kona 	},
1815*10524682SJagadeesh Kona };
1816*10524682SJagadeesh Kona 
1817*10524682SJagadeesh Kona static struct clk_branch cam_cc_mclk0_clk = {
1818*10524682SJagadeesh Kona 	.halt_reg = 0x15018,
1819*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1820*10524682SJagadeesh Kona 	.clkr = {
1821*10524682SJagadeesh Kona 		.enable_reg = 0x15018,
1822*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1823*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1824*10524682SJagadeesh Kona 			.name = "cam_cc_mclk0_clk",
1825*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1826*10524682SJagadeesh Kona 				&cam_cc_mclk0_clk_src.clkr.hw,
1827*10524682SJagadeesh Kona 			},
1828*10524682SJagadeesh Kona 			.num_parents = 1,
1829*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1830*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1831*10524682SJagadeesh Kona 		},
1832*10524682SJagadeesh Kona 	},
1833*10524682SJagadeesh Kona };
1834*10524682SJagadeesh Kona 
1835*10524682SJagadeesh Kona static struct clk_branch cam_cc_mclk1_clk = {
1836*10524682SJagadeesh Kona 	.halt_reg = 0x15034,
1837*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1838*10524682SJagadeesh Kona 	.clkr = {
1839*10524682SJagadeesh Kona 		.enable_reg = 0x15034,
1840*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1841*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1842*10524682SJagadeesh Kona 			.name = "cam_cc_mclk1_clk",
1843*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1844*10524682SJagadeesh Kona 				&cam_cc_mclk1_clk_src.clkr.hw,
1845*10524682SJagadeesh Kona 			},
1846*10524682SJagadeesh Kona 			.num_parents = 1,
1847*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1848*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1849*10524682SJagadeesh Kona 		},
1850*10524682SJagadeesh Kona 	},
1851*10524682SJagadeesh Kona };
1852*10524682SJagadeesh Kona 
1853*10524682SJagadeesh Kona static struct clk_branch cam_cc_mclk2_clk = {
1854*10524682SJagadeesh Kona 	.halt_reg = 0x15050,
1855*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1856*10524682SJagadeesh Kona 	.clkr = {
1857*10524682SJagadeesh Kona 		.enable_reg = 0x15050,
1858*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1859*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1860*10524682SJagadeesh Kona 			.name = "cam_cc_mclk2_clk",
1861*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1862*10524682SJagadeesh Kona 				&cam_cc_mclk2_clk_src.clkr.hw,
1863*10524682SJagadeesh Kona 			},
1864*10524682SJagadeesh Kona 			.num_parents = 1,
1865*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1866*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1867*10524682SJagadeesh Kona 		},
1868*10524682SJagadeesh Kona 	},
1869*10524682SJagadeesh Kona };
1870*10524682SJagadeesh Kona 
1871*10524682SJagadeesh Kona static struct clk_branch cam_cc_mclk3_clk = {
1872*10524682SJagadeesh Kona 	.halt_reg = 0x1506c,
1873*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1874*10524682SJagadeesh Kona 	.clkr = {
1875*10524682SJagadeesh Kona 		.enable_reg = 0x1506c,
1876*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1877*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1878*10524682SJagadeesh Kona 			.name = "cam_cc_mclk3_clk",
1879*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1880*10524682SJagadeesh Kona 				&cam_cc_mclk3_clk_src.clkr.hw,
1881*10524682SJagadeesh Kona 			},
1882*10524682SJagadeesh Kona 			.num_parents = 1,
1883*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1884*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1885*10524682SJagadeesh Kona 		},
1886*10524682SJagadeesh Kona 	},
1887*10524682SJagadeesh Kona };
1888*10524682SJagadeesh Kona 
1889*10524682SJagadeesh Kona static struct clk_branch cam_cc_mclk4_clk = {
1890*10524682SJagadeesh Kona 	.halt_reg = 0x15088,
1891*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1892*10524682SJagadeesh Kona 	.clkr = {
1893*10524682SJagadeesh Kona 		.enable_reg = 0x15088,
1894*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1895*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1896*10524682SJagadeesh Kona 			.name = "cam_cc_mclk4_clk",
1897*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1898*10524682SJagadeesh Kona 				&cam_cc_mclk4_clk_src.clkr.hw,
1899*10524682SJagadeesh Kona 			},
1900*10524682SJagadeesh Kona 			.num_parents = 1,
1901*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1902*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1903*10524682SJagadeesh Kona 		},
1904*10524682SJagadeesh Kona 	},
1905*10524682SJagadeesh Kona };
1906*10524682SJagadeesh Kona 
1907*10524682SJagadeesh Kona static struct clk_branch cam_cc_mclk5_clk = {
1908*10524682SJagadeesh Kona 	.halt_reg = 0x150a4,
1909*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1910*10524682SJagadeesh Kona 	.clkr = {
1911*10524682SJagadeesh Kona 		.enable_reg = 0x150a4,
1912*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1913*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1914*10524682SJagadeesh Kona 			.name = "cam_cc_mclk5_clk",
1915*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1916*10524682SJagadeesh Kona 				&cam_cc_mclk5_clk_src.clkr.hw,
1917*10524682SJagadeesh Kona 			},
1918*10524682SJagadeesh Kona 			.num_parents = 1,
1919*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1920*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1921*10524682SJagadeesh Kona 		},
1922*10524682SJagadeesh Kona 	},
1923*10524682SJagadeesh Kona };
1924*10524682SJagadeesh Kona 
1925*10524682SJagadeesh Kona static struct clk_branch cam_cc_mclk6_clk = {
1926*10524682SJagadeesh Kona 	.halt_reg = 0x150c0,
1927*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1928*10524682SJagadeesh Kona 	.clkr = {
1929*10524682SJagadeesh Kona 		.enable_reg = 0x150c0,
1930*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1931*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1932*10524682SJagadeesh Kona 			.name = "cam_cc_mclk6_clk",
1933*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1934*10524682SJagadeesh Kona 				&cam_cc_mclk6_clk_src.clkr.hw,
1935*10524682SJagadeesh Kona 			},
1936*10524682SJagadeesh Kona 			.num_parents = 1,
1937*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1938*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1939*10524682SJagadeesh Kona 		},
1940*10524682SJagadeesh Kona 	},
1941*10524682SJagadeesh Kona };
1942*10524682SJagadeesh Kona 
1943*10524682SJagadeesh Kona static struct clk_branch cam_cc_mclk7_clk = {
1944*10524682SJagadeesh Kona 	.halt_reg = 0x150dc,
1945*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1946*10524682SJagadeesh Kona 	.clkr = {
1947*10524682SJagadeesh Kona 		.enable_reg = 0x150dc,
1948*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1949*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1950*10524682SJagadeesh Kona 			.name = "cam_cc_mclk7_clk",
1951*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1952*10524682SJagadeesh Kona 				&cam_cc_mclk7_clk_src.clkr.hw,
1953*10524682SJagadeesh Kona 			},
1954*10524682SJagadeesh Kona 			.num_parents = 1,
1955*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1956*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1957*10524682SJagadeesh Kona 		},
1958*10524682SJagadeesh Kona 	},
1959*10524682SJagadeesh Kona };
1960*10524682SJagadeesh Kona 
1961*10524682SJagadeesh Kona static struct clk_branch cam_cc_qdss_debug_clk = {
1962*10524682SJagadeesh Kona 	.halt_reg = 0x13a64,
1963*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1964*10524682SJagadeesh Kona 	.clkr = {
1965*10524682SJagadeesh Kona 		.enable_reg = 0x13a64,
1966*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1967*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1968*10524682SJagadeesh Kona 			.name = "cam_cc_qdss_debug_clk",
1969*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1970*10524682SJagadeesh Kona 				&cam_cc_qdss_debug_clk_src.clkr.hw,
1971*10524682SJagadeesh Kona 			},
1972*10524682SJagadeesh Kona 			.num_parents = 1,
1973*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1974*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1975*10524682SJagadeesh Kona 		},
1976*10524682SJagadeesh Kona 	},
1977*10524682SJagadeesh Kona };
1978*10524682SJagadeesh Kona 
1979*10524682SJagadeesh Kona static struct clk_branch cam_cc_qdss_debug_xo_clk = {
1980*10524682SJagadeesh Kona 	.halt_reg = 0x13a68,
1981*10524682SJagadeesh Kona 	.halt_check = BRANCH_HALT,
1982*10524682SJagadeesh Kona 	.clkr = {
1983*10524682SJagadeesh Kona 		.enable_reg = 0x13a68,
1984*10524682SJagadeesh Kona 		.enable_mask = BIT(0),
1985*10524682SJagadeesh Kona 		.hw.init = &(const struct clk_init_data) {
1986*10524682SJagadeesh Kona 			.name = "cam_cc_qdss_debug_xo_clk",
1987*10524682SJagadeesh Kona 			.parent_hws = (const struct clk_hw*[]) {
1988*10524682SJagadeesh Kona 				&cam_cc_xo_clk_src.clkr.hw,
1989*10524682SJagadeesh Kona 			},
1990*10524682SJagadeesh Kona 			.num_parents = 1,
1991*10524682SJagadeesh Kona 			.flags = CLK_SET_RATE_PARENT,
1992*10524682SJagadeesh Kona 			.ops = &clk_branch2_ops,
1993*10524682SJagadeesh Kona 		},
1994*10524682SJagadeesh Kona 	},
1995*10524682SJagadeesh Kona };
1996*10524682SJagadeesh Kona 
1997*10524682SJagadeesh Kona static struct gdsc cam_cc_titan_top_gdsc = {
1998*10524682SJagadeesh Kona 	.gdscr = 0x13a6c,
1999*10524682SJagadeesh Kona 	.en_rest_wait_val = 0x2,
2000*10524682SJagadeesh Kona 	.en_few_wait_val = 0x2,
2001*10524682SJagadeesh Kona 	.clk_dis_wait_val = 0xf,
2002*10524682SJagadeesh Kona 	.pd = {
2003*10524682SJagadeesh Kona 		.name = "cam_cc_titan_top_gdsc",
2004*10524682SJagadeesh Kona 	},
2005*10524682SJagadeesh Kona 	.pwrsts = PWRSTS_OFF_ON,
2006*10524682SJagadeesh Kona 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
2007*10524682SJagadeesh Kona };
2008*10524682SJagadeesh Kona 
2009*10524682SJagadeesh Kona static struct gdsc cam_cc_bps_gdsc = {
2010*10524682SJagadeesh Kona 	.gdscr = 0x10004,
2011*10524682SJagadeesh Kona 	.en_rest_wait_val = 0x2,
2012*10524682SJagadeesh Kona 	.en_few_wait_val = 0x2,
2013*10524682SJagadeesh Kona 	.clk_dis_wait_val = 0xf,
2014*10524682SJagadeesh Kona 	.pd = {
2015*10524682SJagadeesh Kona 		.name = "cam_cc_bps_gdsc",
2016*10524682SJagadeesh Kona 	},
2017*10524682SJagadeesh Kona 	.pwrsts = PWRSTS_OFF_ON,
2018*10524682SJagadeesh Kona 	.parent = &cam_cc_titan_top_gdsc.pd,
2019*10524682SJagadeesh Kona 	.flags = HW_CTRL_TRIGGER | POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
2020*10524682SJagadeesh Kona };
2021*10524682SJagadeesh Kona 
2022*10524682SJagadeesh Kona static struct gdsc cam_cc_ife_0_gdsc = {
2023*10524682SJagadeesh Kona 	.gdscr = 0x11004,
2024*10524682SJagadeesh Kona 	.en_rest_wait_val = 0x2,
2025*10524682SJagadeesh Kona 	.en_few_wait_val = 0x2,
2026*10524682SJagadeesh Kona 	.clk_dis_wait_val = 0xf,
2027*10524682SJagadeesh Kona 	.pd = {
2028*10524682SJagadeesh Kona 		.name = "cam_cc_ife_0_gdsc",
2029*10524682SJagadeesh Kona 	},
2030*10524682SJagadeesh Kona 	.pwrsts = PWRSTS_OFF_ON,
2031*10524682SJagadeesh Kona 	.parent = &cam_cc_titan_top_gdsc.pd,
2032*10524682SJagadeesh Kona 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
2033*10524682SJagadeesh Kona };
2034*10524682SJagadeesh Kona 
2035*10524682SJagadeesh Kona static struct gdsc cam_cc_ipe_0_gdsc = {
2036*10524682SJagadeesh Kona 	.gdscr = 0x103b8,
2037*10524682SJagadeesh Kona 	.en_rest_wait_val = 0x2,
2038*10524682SJagadeesh Kona 	.en_few_wait_val = 0x2,
2039*10524682SJagadeesh Kona 	.clk_dis_wait_val = 0xf,
2040*10524682SJagadeesh Kona 	.pd = {
2041*10524682SJagadeesh Kona 		.name = "cam_cc_ipe_0_gdsc",
2042*10524682SJagadeesh Kona 	},
2043*10524682SJagadeesh Kona 	.pwrsts = PWRSTS_OFF_ON,
2044*10524682SJagadeesh Kona 	.parent = &cam_cc_titan_top_gdsc.pd,
2045*10524682SJagadeesh Kona 	.flags = HW_CTRL_TRIGGER | POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
2046*10524682SJagadeesh Kona };
2047*10524682SJagadeesh Kona 
2048*10524682SJagadeesh Kona static struct clk_regmap *cam_cc_x1p42100_clocks[] = {
2049*10524682SJagadeesh Kona 	[CAM_CC_BPS_AHB_CLK] = &cam_cc_bps_ahb_clk.clkr,
2050*10524682SJagadeesh Kona 	[CAM_CC_BPS_CLK] = &cam_cc_bps_clk.clkr,
2051*10524682SJagadeesh Kona 	[CAM_CC_BPS_CLK_SRC] = &cam_cc_bps_clk_src.clkr,
2052*10524682SJagadeesh Kona 	[CAM_CC_BPS_FAST_AHB_CLK] = &cam_cc_bps_fast_ahb_clk.clkr,
2053*10524682SJagadeesh Kona 	[CAM_CC_CAMNOC_AXI_NRT_CLK] = &cam_cc_camnoc_axi_nrt_clk.clkr,
2054*10524682SJagadeesh Kona 	[CAM_CC_CAMNOC_AXI_RT_CLK] = &cam_cc_camnoc_axi_rt_clk.clkr,
2055*10524682SJagadeesh Kona 	[CAM_CC_CAMNOC_AXI_RT_CLK_SRC] = &cam_cc_camnoc_axi_rt_clk_src.clkr,
2056*10524682SJagadeesh Kona 	[CAM_CC_CAMNOC_DCD_XO_CLK] = &cam_cc_camnoc_dcd_xo_clk.clkr,
2057*10524682SJagadeesh Kona 	[CAM_CC_CAMNOC_XO_CLK] = &cam_cc_camnoc_xo_clk.clkr,
2058*10524682SJagadeesh Kona 	[CAM_CC_CCI_0_CLK] = &cam_cc_cci_0_clk.clkr,
2059*10524682SJagadeesh Kona 	[CAM_CC_CCI_0_CLK_SRC] = &cam_cc_cci_0_clk_src.clkr,
2060*10524682SJagadeesh Kona 	[CAM_CC_CCI_1_CLK] = &cam_cc_cci_1_clk.clkr,
2061*10524682SJagadeesh Kona 	[CAM_CC_CCI_1_CLK_SRC] = &cam_cc_cci_1_clk_src.clkr,
2062*10524682SJagadeesh Kona 	[CAM_CC_CORE_AHB_CLK] = &cam_cc_core_ahb_clk.clkr,
2063*10524682SJagadeesh Kona 	[CAM_CC_CPAS_AHB_CLK] = &cam_cc_cpas_ahb_clk.clkr,
2064*10524682SJagadeesh Kona 	[CAM_CC_CPAS_BPS_CLK] = &cam_cc_cpas_bps_clk.clkr,
2065*10524682SJagadeesh Kona 	[CAM_CC_CPAS_FAST_AHB_CLK] = &cam_cc_cpas_fast_ahb_clk.clkr,
2066*10524682SJagadeesh Kona 	[CAM_CC_CPAS_IFE_0_CLK] = &cam_cc_cpas_ife_0_clk.clkr,
2067*10524682SJagadeesh Kona 	[CAM_CC_CPAS_IFE_LITE_CLK] = &cam_cc_cpas_ife_lite_clk.clkr,
2068*10524682SJagadeesh Kona 	[CAM_CC_CPAS_IPE_NPS_CLK] = &cam_cc_cpas_ipe_nps_clk.clkr,
2069*10524682SJagadeesh Kona 	[CAM_CC_CPHY_RX_CLK_SRC] = &cam_cc_cphy_rx_clk_src.clkr,
2070*10524682SJagadeesh Kona 	[CAM_CC_CSI0PHYTIMER_CLK] = &cam_cc_csi0phytimer_clk.clkr,
2071*10524682SJagadeesh Kona 	[CAM_CC_CSI0PHYTIMER_CLK_SRC] = &cam_cc_csi0phytimer_clk_src.clkr,
2072*10524682SJagadeesh Kona 	[CAM_CC_CSI1PHYTIMER_CLK] = &cam_cc_csi1phytimer_clk.clkr,
2073*10524682SJagadeesh Kona 	[CAM_CC_CSI1PHYTIMER_CLK_SRC] = &cam_cc_csi1phytimer_clk_src.clkr,
2074*10524682SJagadeesh Kona 	[CAM_CC_CSI2PHYTIMER_CLK] = &cam_cc_csi2phytimer_clk.clkr,
2075*10524682SJagadeesh Kona 	[CAM_CC_CSI2PHYTIMER_CLK_SRC] = &cam_cc_csi2phytimer_clk_src.clkr,
2076*10524682SJagadeesh Kona 	[CAM_CC_CSI3PHYTIMER_CLK] = &cam_cc_csi3phytimer_clk.clkr,
2077*10524682SJagadeesh Kona 	[CAM_CC_CSI3PHYTIMER_CLK_SRC] = &cam_cc_csi3phytimer_clk_src.clkr,
2078*10524682SJagadeesh Kona 	[CAM_CC_CSI4PHYTIMER_CLK] = &cam_cc_csi4phytimer_clk.clkr,
2079*10524682SJagadeesh Kona 	[CAM_CC_CSI4PHYTIMER_CLK_SRC] = &cam_cc_csi4phytimer_clk_src.clkr,
2080*10524682SJagadeesh Kona 	[CAM_CC_CSI5PHYTIMER_CLK] = &cam_cc_csi5phytimer_clk.clkr,
2081*10524682SJagadeesh Kona 	[CAM_CC_CSI5PHYTIMER_CLK_SRC] = &cam_cc_csi5phytimer_clk_src.clkr,
2082*10524682SJagadeesh Kona 	[CAM_CC_CSID_CLK] = &cam_cc_csid_clk.clkr,
2083*10524682SJagadeesh Kona 	[CAM_CC_CSID_CLK_SRC] = &cam_cc_csid_clk_src.clkr,
2084*10524682SJagadeesh Kona 	[CAM_CC_CSID_CSIPHY_RX_CLK] = &cam_cc_csid_csiphy_rx_clk.clkr,
2085*10524682SJagadeesh Kona 	[CAM_CC_CSIPHY0_CLK] = &cam_cc_csiphy0_clk.clkr,
2086*10524682SJagadeesh Kona 	[CAM_CC_CSIPHY1_CLK] = &cam_cc_csiphy1_clk.clkr,
2087*10524682SJagadeesh Kona 	[CAM_CC_CSIPHY2_CLK] = &cam_cc_csiphy2_clk.clkr,
2088*10524682SJagadeesh Kona 	[CAM_CC_CSIPHY3_CLK] = &cam_cc_csiphy3_clk.clkr,
2089*10524682SJagadeesh Kona 	[CAM_CC_CSIPHY4_CLK] = &cam_cc_csiphy4_clk.clkr,
2090*10524682SJagadeesh Kona 	[CAM_CC_CSIPHY5_CLK] = &cam_cc_csiphy5_clk.clkr,
2091*10524682SJagadeesh Kona 	[CAM_CC_FAST_AHB_CLK_SRC] = &cam_cc_fast_ahb_clk_src.clkr,
2092*10524682SJagadeesh Kona 	[CAM_CC_ICP_AHB_CLK] = &cam_cc_icp_ahb_clk.clkr,
2093*10524682SJagadeesh Kona 	[CAM_CC_ICP_CLK] = &cam_cc_icp_clk.clkr,
2094*10524682SJagadeesh Kona 	[CAM_CC_ICP_CLK_SRC] = &cam_cc_icp_clk_src.clkr,
2095*10524682SJagadeesh Kona 	[CAM_CC_IFE_0_CLK] = &cam_cc_ife_0_clk.clkr,
2096*10524682SJagadeesh Kona 	[CAM_CC_IFE_0_CLK_SRC] = &cam_cc_ife_0_clk_src.clkr,
2097*10524682SJagadeesh Kona 	[CAM_CC_IFE_0_DSP_CLK] = &cam_cc_ife_0_dsp_clk.clkr,
2098*10524682SJagadeesh Kona 	[CAM_CC_IFE_0_FAST_AHB_CLK] = &cam_cc_ife_0_fast_ahb_clk.clkr,
2099*10524682SJagadeesh Kona 	[CAM_CC_IFE_LITE_AHB_CLK] = &cam_cc_ife_lite_ahb_clk.clkr,
2100*10524682SJagadeesh Kona 	[CAM_CC_IFE_LITE_CLK] = &cam_cc_ife_lite_clk.clkr,
2101*10524682SJagadeesh Kona 	[CAM_CC_IFE_LITE_CLK_SRC] = &cam_cc_ife_lite_clk_src.clkr,
2102*10524682SJagadeesh Kona 	[CAM_CC_IFE_LITE_CPHY_RX_CLK] = &cam_cc_ife_lite_cphy_rx_clk.clkr,
2103*10524682SJagadeesh Kona 	[CAM_CC_IFE_LITE_CSID_CLK] = &cam_cc_ife_lite_csid_clk.clkr,
2104*10524682SJagadeesh Kona 	[CAM_CC_IFE_LITE_CSID_CLK_SRC] = &cam_cc_ife_lite_csid_clk_src.clkr,
2105*10524682SJagadeesh Kona 	[CAM_CC_IPE_NPS_AHB_CLK] = &cam_cc_ipe_nps_ahb_clk.clkr,
2106*10524682SJagadeesh Kona 	[CAM_CC_IPE_NPS_CLK] = &cam_cc_ipe_nps_clk.clkr,
2107*10524682SJagadeesh Kona 	[CAM_CC_IPE_NPS_CLK_SRC] = &cam_cc_ipe_nps_clk_src.clkr,
2108*10524682SJagadeesh Kona 	[CAM_CC_IPE_NPS_FAST_AHB_CLK] = &cam_cc_ipe_nps_fast_ahb_clk.clkr,
2109*10524682SJagadeesh Kona 	[CAM_CC_IPE_PPS_CLK] = &cam_cc_ipe_pps_clk.clkr,
2110*10524682SJagadeesh Kona 	[CAM_CC_IPE_PPS_FAST_AHB_CLK] = &cam_cc_ipe_pps_fast_ahb_clk.clkr,
2111*10524682SJagadeesh Kona 	[CAM_CC_JPEG_CLK] = &cam_cc_jpeg_clk.clkr,
2112*10524682SJagadeesh Kona 	[CAM_CC_JPEG_CLK_SRC] = &cam_cc_jpeg_clk_src.clkr,
2113*10524682SJagadeesh Kona 	[CAM_CC_MCLK0_CLK] = &cam_cc_mclk0_clk.clkr,
2114*10524682SJagadeesh Kona 	[CAM_CC_MCLK0_CLK_SRC] = &cam_cc_mclk0_clk_src.clkr,
2115*10524682SJagadeesh Kona 	[CAM_CC_MCLK1_CLK] = &cam_cc_mclk1_clk.clkr,
2116*10524682SJagadeesh Kona 	[CAM_CC_MCLK1_CLK_SRC] = &cam_cc_mclk1_clk_src.clkr,
2117*10524682SJagadeesh Kona 	[CAM_CC_MCLK2_CLK] = &cam_cc_mclk2_clk.clkr,
2118*10524682SJagadeesh Kona 	[CAM_CC_MCLK2_CLK_SRC] = &cam_cc_mclk2_clk_src.clkr,
2119*10524682SJagadeesh Kona 	[CAM_CC_MCLK3_CLK] = &cam_cc_mclk3_clk.clkr,
2120*10524682SJagadeesh Kona 	[CAM_CC_MCLK3_CLK_SRC] = &cam_cc_mclk3_clk_src.clkr,
2121*10524682SJagadeesh Kona 	[CAM_CC_MCLK4_CLK] = &cam_cc_mclk4_clk.clkr,
2122*10524682SJagadeesh Kona 	[CAM_CC_MCLK4_CLK_SRC] = &cam_cc_mclk4_clk_src.clkr,
2123*10524682SJagadeesh Kona 	[CAM_CC_MCLK5_CLK] = &cam_cc_mclk5_clk.clkr,
2124*10524682SJagadeesh Kona 	[CAM_CC_MCLK5_CLK_SRC] = &cam_cc_mclk5_clk_src.clkr,
2125*10524682SJagadeesh Kona 	[CAM_CC_MCLK6_CLK] = &cam_cc_mclk6_clk.clkr,
2126*10524682SJagadeesh Kona 	[CAM_CC_MCLK6_CLK_SRC] = &cam_cc_mclk6_clk_src.clkr,
2127*10524682SJagadeesh Kona 	[CAM_CC_MCLK7_CLK] = &cam_cc_mclk7_clk.clkr,
2128*10524682SJagadeesh Kona 	[CAM_CC_MCLK7_CLK_SRC] = &cam_cc_mclk7_clk_src.clkr,
2129*10524682SJagadeesh Kona 	[CAM_CC_PLL0] = &cam_cc_pll0.clkr,
2130*10524682SJagadeesh Kona 	[CAM_CC_PLL0_OUT_EVEN] = &cam_cc_pll0_out_even.clkr,
2131*10524682SJagadeesh Kona 	[CAM_CC_PLL0_OUT_ODD] = &cam_cc_pll0_out_odd.clkr,
2132*10524682SJagadeesh Kona 	[CAM_CC_PLL1] = &cam_cc_pll1.clkr,
2133*10524682SJagadeesh Kona 	[CAM_CC_PLL1_OUT_EVEN] = &cam_cc_pll1_out_even.clkr,
2134*10524682SJagadeesh Kona 	[CAM_CC_PLL2] = &cam_cc_pll2.clkr,
2135*10524682SJagadeesh Kona 	[CAM_CC_PLL3] = &cam_cc_pll3.clkr,
2136*10524682SJagadeesh Kona 	[CAM_CC_PLL3_OUT_EVEN] = &cam_cc_pll3_out_even.clkr,
2137*10524682SJagadeesh Kona 	[CAM_CC_PLL6] = &cam_cc_pll6.clkr,
2138*10524682SJagadeesh Kona 	[CAM_CC_PLL6_OUT_EVEN] = &cam_cc_pll6_out_even.clkr,
2139*10524682SJagadeesh Kona 	[CAM_CC_QDSS_DEBUG_CLK] = &cam_cc_qdss_debug_clk.clkr,
2140*10524682SJagadeesh Kona 	[CAM_CC_QDSS_DEBUG_CLK_SRC] = &cam_cc_qdss_debug_clk_src.clkr,
2141*10524682SJagadeesh Kona 	[CAM_CC_QDSS_DEBUG_XO_CLK] = &cam_cc_qdss_debug_xo_clk.clkr,
2142*10524682SJagadeesh Kona 	[CAM_CC_SLEEP_CLK_SRC] = &cam_cc_sleep_clk_src.clkr,
2143*10524682SJagadeesh Kona 	[CAM_CC_SLOW_AHB_CLK_SRC] = &cam_cc_slow_ahb_clk_src.clkr,
2144*10524682SJagadeesh Kona 	[CAM_CC_XO_CLK_SRC] = &cam_cc_xo_clk_src.clkr,
2145*10524682SJagadeesh Kona };
2146*10524682SJagadeesh Kona 
2147*10524682SJagadeesh Kona static struct gdsc *cam_cc_x1p42100_gdscs[] = {
2148*10524682SJagadeesh Kona 	[CAM_CC_BPS_GDSC] = &cam_cc_bps_gdsc,
2149*10524682SJagadeesh Kona 	[CAM_CC_IFE_0_GDSC] = &cam_cc_ife_0_gdsc,
2150*10524682SJagadeesh Kona 	[CAM_CC_IPE_0_GDSC] = &cam_cc_ipe_0_gdsc,
2151*10524682SJagadeesh Kona 	[CAM_CC_TITAN_TOP_GDSC] = &cam_cc_titan_top_gdsc,
2152*10524682SJagadeesh Kona };
2153*10524682SJagadeesh Kona 
2154*10524682SJagadeesh Kona static const struct qcom_reset_map cam_cc_x1p42100_resets[] = {
2155*10524682SJagadeesh Kona 	[CAM_CC_BPS_BCR] = { 0x10000 },
2156*10524682SJagadeesh Kona 	[CAM_CC_ICP_BCR] = { 0x1351c },
2157*10524682SJagadeesh Kona 	[CAM_CC_IFE_0_BCR] = { 0x11000 },
2158*10524682SJagadeesh Kona 	[CAM_CC_IPE_0_BCR] = { 0x103b4 },
2159*10524682SJagadeesh Kona };
2160*10524682SJagadeesh Kona 
2161*10524682SJagadeesh Kona static struct clk_alpha_pll *cam_cc_x1p42100_plls[] = {
2162*10524682SJagadeesh Kona 	&cam_cc_pll0,
2163*10524682SJagadeesh Kona 	&cam_cc_pll1,
2164*10524682SJagadeesh Kona 	&cam_cc_pll2,
2165*10524682SJagadeesh Kona 	&cam_cc_pll3,
2166*10524682SJagadeesh Kona 	&cam_cc_pll6,
2167*10524682SJagadeesh Kona };
2168*10524682SJagadeesh Kona 
2169*10524682SJagadeesh Kona static u32 cam_cc_x1p42100_critical_cbcrs[] = {
2170*10524682SJagadeesh Kona 	0x13a9c, /* CAM_CC_GDSC_CLK */
2171*10524682SJagadeesh Kona 	0x13ab8, /* CAM_CC_SLEEP_CLK */
2172*10524682SJagadeesh Kona };
2173*10524682SJagadeesh Kona 
2174*10524682SJagadeesh Kona static const struct regmap_config cam_cc_x1p42100_regmap_config = {
2175*10524682SJagadeesh Kona 	.reg_bits = 32,
2176*10524682SJagadeesh Kona 	.reg_stride = 4,
2177*10524682SJagadeesh Kona 	.val_bits = 32,
2178*10524682SJagadeesh Kona 	.max_register = 0x1603c,
2179*10524682SJagadeesh Kona 	.fast_io = true,
2180*10524682SJagadeesh Kona };
2181*10524682SJagadeesh Kona 
2182*10524682SJagadeesh Kona static struct qcom_cc_driver_data cam_cc_x1p42100_driver_data = {
2183*10524682SJagadeesh Kona 	.alpha_plls = cam_cc_x1p42100_plls,
2184*10524682SJagadeesh Kona 	.num_alpha_plls = ARRAY_SIZE(cam_cc_x1p42100_plls),
2185*10524682SJagadeesh Kona 	.clk_cbcrs = cam_cc_x1p42100_critical_cbcrs,
2186*10524682SJagadeesh Kona 	.num_clk_cbcrs = ARRAY_SIZE(cam_cc_x1p42100_critical_cbcrs),
2187*10524682SJagadeesh Kona };
2188*10524682SJagadeesh Kona 
2189*10524682SJagadeesh Kona static struct qcom_cc_desc cam_cc_x1p42100_desc = {
2190*10524682SJagadeesh Kona 	.config = &cam_cc_x1p42100_regmap_config,
2191*10524682SJagadeesh Kona 	.clks = cam_cc_x1p42100_clocks,
2192*10524682SJagadeesh Kona 	.num_clks = ARRAY_SIZE(cam_cc_x1p42100_clocks),
2193*10524682SJagadeesh Kona 	.resets = cam_cc_x1p42100_resets,
2194*10524682SJagadeesh Kona 	.num_resets = ARRAY_SIZE(cam_cc_x1p42100_resets),
2195*10524682SJagadeesh Kona 	.gdscs = cam_cc_x1p42100_gdscs,
2196*10524682SJagadeesh Kona 	.num_gdscs = ARRAY_SIZE(cam_cc_x1p42100_gdscs),
2197*10524682SJagadeesh Kona 	.use_rpm = true,
2198*10524682SJagadeesh Kona 	.driver_data = &cam_cc_x1p42100_driver_data,
2199*10524682SJagadeesh Kona };
2200*10524682SJagadeesh Kona 
2201*10524682SJagadeesh Kona static const struct of_device_id cam_cc_x1p42100_match_table[] = {
2202*10524682SJagadeesh Kona 	{ .compatible = "qcom,x1p42100-camcc" },
2203*10524682SJagadeesh Kona 	{ }
2204*10524682SJagadeesh Kona };
2205*10524682SJagadeesh Kona MODULE_DEVICE_TABLE(of, cam_cc_x1p42100_match_table);
2206*10524682SJagadeesh Kona 
2207*10524682SJagadeesh Kona static int cam_cc_x1p42100_probe(struct platform_device *pdev)
2208*10524682SJagadeesh Kona {
2209*10524682SJagadeesh Kona 	return qcom_cc_probe(pdev, &cam_cc_x1p42100_desc);
2210*10524682SJagadeesh Kona }
2211*10524682SJagadeesh Kona 
2212*10524682SJagadeesh Kona static struct platform_driver cam_cc_x1p42100_driver = {
2213*10524682SJagadeesh Kona 	.probe = cam_cc_x1p42100_probe,
2214*10524682SJagadeesh Kona 	.driver = {
2215*10524682SJagadeesh Kona 		.name = "camcc-x1p42100",
2216*10524682SJagadeesh Kona 		.of_match_table = cam_cc_x1p42100_match_table,
2217*10524682SJagadeesh Kona 	},
2218*10524682SJagadeesh Kona };
2219*10524682SJagadeesh Kona 
2220*10524682SJagadeesh Kona module_platform_driver(cam_cc_x1p42100_driver);
2221*10524682SJagadeesh Kona 
2222*10524682SJagadeesh Kona MODULE_DESCRIPTION("QTI CAMCC X1P42100 Driver");
2223*10524682SJagadeesh Kona MODULE_LICENSE("GPL");
2224