xref: /linux/drivers/clk/qcom/camcc-sc8180x.c (revision 8d2b0853add1d7534dc0794e3c8e0b9e8c4ec640)
1*691f3413SSatya Priya Kakitapalli // SPDX-License-Identifier: GPL-2.0-only
2*691f3413SSatya Priya Kakitapalli /*
3*691f3413SSatya Priya Kakitapalli  * Copyright (c) 2025, Qualcomm Innovation Center, Inc. All rights reserved.
4*691f3413SSatya Priya Kakitapalli  */
5*691f3413SSatya Priya Kakitapalli 
6*691f3413SSatya Priya Kakitapalli #include <linux/clk-provider.h>
7*691f3413SSatya Priya Kakitapalli #include <linux/mod_devicetable.h>
8*691f3413SSatya Priya Kakitapalli #include <linux/module.h>
9*691f3413SSatya Priya Kakitapalli #include <linux/platform_device.h>
10*691f3413SSatya Priya Kakitapalli #include <linux/pm_runtime.h>
11*691f3413SSatya Priya Kakitapalli #include <linux/regmap.h>
12*691f3413SSatya Priya Kakitapalli 
13*691f3413SSatya Priya Kakitapalli #include <dt-bindings/clock/qcom,sc8180x-camcc.h>
14*691f3413SSatya Priya Kakitapalli 
15*691f3413SSatya Priya Kakitapalli #include "clk-alpha-pll.h"
16*691f3413SSatya Priya Kakitapalli #include "clk-branch.h"
17*691f3413SSatya Priya Kakitapalli #include "clk-rcg.h"
18*691f3413SSatya Priya Kakitapalli #include "clk-regmap.h"
19*691f3413SSatya Priya Kakitapalli #include "common.h"
20*691f3413SSatya Priya Kakitapalli #include "gdsc.h"
21*691f3413SSatya Priya Kakitapalli #include "reset.h"
22*691f3413SSatya Priya Kakitapalli 
23*691f3413SSatya Priya Kakitapalli enum {
24*691f3413SSatya Priya Kakitapalli 	DT_IFACE,
25*691f3413SSatya Priya Kakitapalli 	DT_BI_TCXO,
26*691f3413SSatya Priya Kakitapalli 	DT_SLEEP_CLK,
27*691f3413SSatya Priya Kakitapalli };
28*691f3413SSatya Priya Kakitapalli 
29*691f3413SSatya Priya Kakitapalli enum {
30*691f3413SSatya Priya Kakitapalli 	P_BI_TCXO,
31*691f3413SSatya Priya Kakitapalli 	P_CAM_CC_PLL0_OUT_EVEN,
32*691f3413SSatya Priya Kakitapalli 	P_CAM_CC_PLL0_OUT_MAIN,
33*691f3413SSatya Priya Kakitapalli 	P_CAM_CC_PLL0_OUT_ODD,
34*691f3413SSatya Priya Kakitapalli 	P_CAM_CC_PLL1_OUT_EVEN,
35*691f3413SSatya Priya Kakitapalli 	P_CAM_CC_PLL2_OUT_EARLY,
36*691f3413SSatya Priya Kakitapalli 	P_CAM_CC_PLL2_OUT_MAIN,
37*691f3413SSatya Priya Kakitapalli 	P_CAM_CC_PLL3_OUT_EVEN,
38*691f3413SSatya Priya Kakitapalli 	P_CAM_CC_PLL4_OUT_EVEN,
39*691f3413SSatya Priya Kakitapalli 	P_CAM_CC_PLL5_OUT_EVEN,
40*691f3413SSatya Priya Kakitapalli 	P_CAM_CC_PLL6_OUT_EVEN,
41*691f3413SSatya Priya Kakitapalli 	P_SLEEP_CLK,
42*691f3413SSatya Priya Kakitapalli };
43*691f3413SSatya Priya Kakitapalli 
44*691f3413SSatya Priya Kakitapalli static const struct pll_vco regera_vco[] = {
45*691f3413SSatya Priya Kakitapalli 	{ 600000000, 3300000000, 0 },
46*691f3413SSatya Priya Kakitapalli };
47*691f3413SSatya Priya Kakitapalli 
48*691f3413SSatya Priya Kakitapalli static const struct pll_vco trion_vco[] = {
49*691f3413SSatya Priya Kakitapalli 	{ 249600000, 2000000000, 0 },
50*691f3413SSatya Priya Kakitapalli };
51*691f3413SSatya Priya Kakitapalli 
52*691f3413SSatya Priya Kakitapalli static const struct alpha_pll_config cam_cc_pll0_config = {
53*691f3413SSatya Priya Kakitapalli 	.l = 0x3e,
54*691f3413SSatya Priya Kakitapalli 	.alpha = 0x8000,
55*691f3413SSatya Priya Kakitapalli 	.config_ctl_val = 0x20485699,
56*691f3413SSatya Priya Kakitapalli 	.config_ctl_hi_val = 0x00002267,
57*691f3413SSatya Priya Kakitapalli 	.config_ctl_hi1_val = 0x00000024,
58*691f3413SSatya Priya Kakitapalli 	.test_ctl_hi1_val = 0x00000020,
59*691f3413SSatya Priya Kakitapalli 	.user_ctl_val = 0x00003100,
60*691f3413SSatya Priya Kakitapalli 	.user_ctl_hi_val = 0x00000805,
61*691f3413SSatya Priya Kakitapalli 	.user_ctl_hi1_val = 0x000000d0,
62*691f3413SSatya Priya Kakitapalli };
63*691f3413SSatya Priya Kakitapalli 
64*691f3413SSatya Priya Kakitapalli static struct clk_alpha_pll cam_cc_pll0 = {
65*691f3413SSatya Priya Kakitapalli 	.offset = 0x0,
66*691f3413SSatya Priya Kakitapalli 	.vco_table = trion_vco,
67*691f3413SSatya Priya Kakitapalli 	.num_vco = ARRAY_SIZE(trion_vco),
68*691f3413SSatya Priya Kakitapalli 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TRION],
69*691f3413SSatya Priya Kakitapalli 	.clkr = {
70*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
71*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_pll0",
72*691f3413SSatya Priya Kakitapalli 			.parent_data = &(const struct clk_parent_data) {
73*691f3413SSatya Priya Kakitapalli 				.index = DT_BI_TCXO,
74*691f3413SSatya Priya Kakitapalli 			},
75*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
76*691f3413SSatya Priya Kakitapalli 			.ops = &clk_alpha_pll_trion_ops,
77*691f3413SSatya Priya Kakitapalli 		},
78*691f3413SSatya Priya Kakitapalli 	},
79*691f3413SSatya Priya Kakitapalli };
80*691f3413SSatya Priya Kakitapalli 
81*691f3413SSatya Priya Kakitapalli static const struct clk_div_table post_div_table_cam_cc_pll0_out_even[] = {
82*691f3413SSatya Priya Kakitapalli 	{ 0x1, 2 },
83*691f3413SSatya Priya Kakitapalli 	{ }
84*691f3413SSatya Priya Kakitapalli };
85*691f3413SSatya Priya Kakitapalli 
86*691f3413SSatya Priya Kakitapalli static struct clk_alpha_pll_postdiv cam_cc_pll0_out_even = {
87*691f3413SSatya Priya Kakitapalli 	.offset = 0x0,
88*691f3413SSatya Priya Kakitapalli 	.post_div_shift = 8,
89*691f3413SSatya Priya Kakitapalli 	.post_div_table = post_div_table_cam_cc_pll0_out_even,
90*691f3413SSatya Priya Kakitapalli 	.num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll0_out_even),
91*691f3413SSatya Priya Kakitapalli 	.width = 4,
92*691f3413SSatya Priya Kakitapalli 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TRION],
93*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
94*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_pll0_out_even",
95*691f3413SSatya Priya Kakitapalli 		.parent_hws = (const struct clk_hw*[]) {
96*691f3413SSatya Priya Kakitapalli 			&cam_cc_pll0.clkr.hw,
97*691f3413SSatya Priya Kakitapalli 		},
98*691f3413SSatya Priya Kakitapalli 		.num_parents = 1,
99*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
100*691f3413SSatya Priya Kakitapalli 		.ops = &clk_alpha_pll_postdiv_trion_ops,
101*691f3413SSatya Priya Kakitapalli 	},
102*691f3413SSatya Priya Kakitapalli };
103*691f3413SSatya Priya Kakitapalli 
104*691f3413SSatya Priya Kakitapalli static const struct clk_div_table post_div_table_cam_cc_pll0_out_odd[] = {
105*691f3413SSatya Priya Kakitapalli 	{ 0x3, 3 },
106*691f3413SSatya Priya Kakitapalli 	{ }
107*691f3413SSatya Priya Kakitapalli };
108*691f3413SSatya Priya Kakitapalli 
109*691f3413SSatya Priya Kakitapalli static struct clk_alpha_pll_postdiv cam_cc_pll0_out_odd = {
110*691f3413SSatya Priya Kakitapalli 	.offset = 0x0,
111*691f3413SSatya Priya Kakitapalli 	.post_div_shift = 12,
112*691f3413SSatya Priya Kakitapalli 	.post_div_table = post_div_table_cam_cc_pll0_out_odd,
113*691f3413SSatya Priya Kakitapalli 	.num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll0_out_odd),
114*691f3413SSatya Priya Kakitapalli 	.width = 4,
115*691f3413SSatya Priya Kakitapalli 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TRION],
116*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
117*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_pll0_out_odd",
118*691f3413SSatya Priya Kakitapalli 		.parent_hws = (const struct clk_hw*[]) {
119*691f3413SSatya Priya Kakitapalli 			&cam_cc_pll0.clkr.hw,
120*691f3413SSatya Priya Kakitapalli 		},
121*691f3413SSatya Priya Kakitapalli 		.num_parents = 1,
122*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
123*691f3413SSatya Priya Kakitapalli 		.ops = &clk_alpha_pll_postdiv_trion_ops,
124*691f3413SSatya Priya Kakitapalli 	},
125*691f3413SSatya Priya Kakitapalli };
126*691f3413SSatya Priya Kakitapalli 
127*691f3413SSatya Priya Kakitapalli static const struct alpha_pll_config cam_cc_pll1_config = {
128*691f3413SSatya Priya Kakitapalli 	.l = 0x13,
129*691f3413SSatya Priya Kakitapalli 	.alpha = 0x8800,
130*691f3413SSatya Priya Kakitapalli 	.config_ctl_val = 0x20485699,
131*691f3413SSatya Priya Kakitapalli 	.config_ctl_hi_val = 0x00002267,
132*691f3413SSatya Priya Kakitapalli 	.config_ctl_hi1_val = 0x00000024,
133*691f3413SSatya Priya Kakitapalli 	.test_ctl_hi1_val = 0x00000020,
134*691f3413SSatya Priya Kakitapalli 	.user_ctl_val = 0x00000000,
135*691f3413SSatya Priya Kakitapalli 	.user_ctl_hi_val = 0x00000805,
136*691f3413SSatya Priya Kakitapalli 	.user_ctl_hi1_val = 0x000000d0,
137*691f3413SSatya Priya Kakitapalli };
138*691f3413SSatya Priya Kakitapalli 
139*691f3413SSatya Priya Kakitapalli static struct clk_alpha_pll cam_cc_pll1 = {
140*691f3413SSatya Priya Kakitapalli 	.offset = 0x1000,
141*691f3413SSatya Priya Kakitapalli 	.vco_table = trion_vco,
142*691f3413SSatya Priya Kakitapalli 	.num_vco = ARRAY_SIZE(trion_vco),
143*691f3413SSatya Priya Kakitapalli 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TRION],
144*691f3413SSatya Priya Kakitapalli 	.clkr = {
145*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
146*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_pll1",
147*691f3413SSatya Priya Kakitapalli 			.parent_data = &(const struct clk_parent_data) {
148*691f3413SSatya Priya Kakitapalli 				.index = DT_BI_TCXO,
149*691f3413SSatya Priya Kakitapalli 			},
150*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
151*691f3413SSatya Priya Kakitapalli 			.ops = &clk_alpha_pll_trion_ops,
152*691f3413SSatya Priya Kakitapalli 		},
153*691f3413SSatya Priya Kakitapalli 	},
154*691f3413SSatya Priya Kakitapalli };
155*691f3413SSatya Priya Kakitapalli 
156*691f3413SSatya Priya Kakitapalli static const struct alpha_pll_config cam_cc_pll2_config = {
157*691f3413SSatya Priya Kakitapalli 	.l = 0x32,
158*691f3413SSatya Priya Kakitapalli 	.alpha = 0x0,
159*691f3413SSatya Priya Kakitapalli 	.config_ctl_val = 0x10000807,
160*691f3413SSatya Priya Kakitapalli 	.config_ctl_hi_val = 0x00000011,
161*691f3413SSatya Priya Kakitapalli 	.config_ctl_hi1_val = 0x04300142,
162*691f3413SSatya Priya Kakitapalli 	.test_ctl_val = 0x04000400,
163*691f3413SSatya Priya Kakitapalli 	.test_ctl_hi_val = 0x00004000,
164*691f3413SSatya Priya Kakitapalli 	.test_ctl_hi1_val = 0x00000000,
165*691f3413SSatya Priya Kakitapalli 	.user_ctl_val = 0x00000100,
166*691f3413SSatya Priya Kakitapalli };
167*691f3413SSatya Priya Kakitapalli 
168*691f3413SSatya Priya Kakitapalli static struct clk_alpha_pll cam_cc_pll2 = {
169*691f3413SSatya Priya Kakitapalli 	.offset = 0x2000,
170*691f3413SSatya Priya Kakitapalli 	.vco_table = regera_vco,
171*691f3413SSatya Priya Kakitapalli 	.num_vco = ARRAY_SIZE(regera_vco),
172*691f3413SSatya Priya Kakitapalli 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_REGERA],
173*691f3413SSatya Priya Kakitapalli 	.clkr = {
174*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
175*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_pll2",
176*691f3413SSatya Priya Kakitapalli 			.parent_data = &(const struct clk_parent_data) {
177*691f3413SSatya Priya Kakitapalli 				.index = DT_BI_TCXO,
178*691f3413SSatya Priya Kakitapalli 			},
179*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
180*691f3413SSatya Priya Kakitapalli 			.ops = &clk_alpha_pll_regera_ops,
181*691f3413SSatya Priya Kakitapalli 		},
182*691f3413SSatya Priya Kakitapalli 	},
183*691f3413SSatya Priya Kakitapalli };
184*691f3413SSatya Priya Kakitapalli 
185*691f3413SSatya Priya Kakitapalli static const struct clk_div_table post_div_table_cam_cc_pll2_out_main[] = {
186*691f3413SSatya Priya Kakitapalli 	{ 0x1, 2 },
187*691f3413SSatya Priya Kakitapalli 	{ }
188*691f3413SSatya Priya Kakitapalli };
189*691f3413SSatya Priya Kakitapalli 
190*691f3413SSatya Priya Kakitapalli static struct clk_alpha_pll_postdiv cam_cc_pll2_out_main = {
191*691f3413SSatya Priya Kakitapalli 	.offset = 0x2000,
192*691f3413SSatya Priya Kakitapalli 	.post_div_shift = 8,
193*691f3413SSatya Priya Kakitapalli 	.post_div_table = post_div_table_cam_cc_pll2_out_main,
194*691f3413SSatya Priya Kakitapalli 	.num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll2_out_main),
195*691f3413SSatya Priya Kakitapalli 	.width = 2,
196*691f3413SSatya Priya Kakitapalli 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_REGERA],
197*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
198*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_pll2_out_main",
199*691f3413SSatya Priya Kakitapalli 		.parent_hws = (const struct clk_hw*[]) {
200*691f3413SSatya Priya Kakitapalli 			&cam_cc_pll2.clkr.hw,
201*691f3413SSatya Priya Kakitapalli 		},
202*691f3413SSatya Priya Kakitapalli 		.num_parents = 1,
203*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
204*691f3413SSatya Priya Kakitapalli 		.ops = &clk_alpha_pll_postdiv_trion_ops,
205*691f3413SSatya Priya Kakitapalli 	},
206*691f3413SSatya Priya Kakitapalli };
207*691f3413SSatya Priya Kakitapalli 
208*691f3413SSatya Priya Kakitapalli static const struct alpha_pll_config cam_cc_pll3_config = {
209*691f3413SSatya Priya Kakitapalli 	.l = 0x14,
210*691f3413SSatya Priya Kakitapalli 	.alpha = 0xd555,
211*691f3413SSatya Priya Kakitapalli 	.config_ctl_val = 0x20485699,
212*691f3413SSatya Priya Kakitapalli 	.config_ctl_hi_val = 0x00002267,
213*691f3413SSatya Priya Kakitapalli 	.config_ctl_hi1_val = 0x00000024,
214*691f3413SSatya Priya Kakitapalli 	.test_ctl_hi1_val = 0x00000020,
215*691f3413SSatya Priya Kakitapalli 	.user_ctl_val = 0x00000000,
216*691f3413SSatya Priya Kakitapalli 	.user_ctl_hi_val = 0x00000805,
217*691f3413SSatya Priya Kakitapalli 	.user_ctl_hi1_val = 0x000000d0,
218*691f3413SSatya Priya Kakitapalli };
219*691f3413SSatya Priya Kakitapalli 
220*691f3413SSatya Priya Kakitapalli static struct clk_alpha_pll cam_cc_pll3 = {
221*691f3413SSatya Priya Kakitapalli 	.offset = 0x3000,
222*691f3413SSatya Priya Kakitapalli 	.vco_table = trion_vco,
223*691f3413SSatya Priya Kakitapalli 	.num_vco = ARRAY_SIZE(trion_vco),
224*691f3413SSatya Priya Kakitapalli 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TRION],
225*691f3413SSatya Priya Kakitapalli 	.clkr = {
226*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
227*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_pll3",
228*691f3413SSatya Priya Kakitapalli 			.parent_data = &(const struct clk_parent_data) {
229*691f3413SSatya Priya Kakitapalli 				.index = DT_BI_TCXO,
230*691f3413SSatya Priya Kakitapalli 			},
231*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
232*691f3413SSatya Priya Kakitapalli 			.ops = &clk_alpha_pll_trion_ops,
233*691f3413SSatya Priya Kakitapalli 		},
234*691f3413SSatya Priya Kakitapalli 	},
235*691f3413SSatya Priya Kakitapalli };
236*691f3413SSatya Priya Kakitapalli 
237*691f3413SSatya Priya Kakitapalli static const struct alpha_pll_config cam_cc_pll4_config = {
238*691f3413SSatya Priya Kakitapalli 	.l = 0x14,
239*691f3413SSatya Priya Kakitapalli 	.alpha = 0xd555,
240*691f3413SSatya Priya Kakitapalli 	.config_ctl_val = 0x20485699,
241*691f3413SSatya Priya Kakitapalli 	.config_ctl_hi_val = 0x00002267,
242*691f3413SSatya Priya Kakitapalli 	.config_ctl_hi1_val = 0x00000024,
243*691f3413SSatya Priya Kakitapalli 	.test_ctl_hi1_val = 0x00000020,
244*691f3413SSatya Priya Kakitapalli 	.user_ctl_val = 0x00000000,
245*691f3413SSatya Priya Kakitapalli 	.user_ctl_hi_val = 0x00000805,
246*691f3413SSatya Priya Kakitapalli 	.user_ctl_hi1_val = 0x000000d0,
247*691f3413SSatya Priya Kakitapalli };
248*691f3413SSatya Priya Kakitapalli 
249*691f3413SSatya Priya Kakitapalli static struct clk_alpha_pll cam_cc_pll4 = {
250*691f3413SSatya Priya Kakitapalli 	.offset = 0x4000,
251*691f3413SSatya Priya Kakitapalli 	.vco_table = trion_vco,
252*691f3413SSatya Priya Kakitapalli 	.num_vco = ARRAY_SIZE(trion_vco),
253*691f3413SSatya Priya Kakitapalli 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TRION],
254*691f3413SSatya Priya Kakitapalli 	.clkr = {
255*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
256*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_pll4",
257*691f3413SSatya Priya Kakitapalli 			.parent_data = &(const struct clk_parent_data) {
258*691f3413SSatya Priya Kakitapalli 				.index = DT_BI_TCXO,
259*691f3413SSatya Priya Kakitapalli 			},
260*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
261*691f3413SSatya Priya Kakitapalli 			.ops = &clk_alpha_pll_trion_ops,
262*691f3413SSatya Priya Kakitapalli 		},
263*691f3413SSatya Priya Kakitapalli 	},
264*691f3413SSatya Priya Kakitapalli };
265*691f3413SSatya Priya Kakitapalli 
266*691f3413SSatya Priya Kakitapalli static const struct alpha_pll_config cam_cc_pll5_config = {
267*691f3413SSatya Priya Kakitapalli 	.l = 0x14,
268*691f3413SSatya Priya Kakitapalli 	.alpha = 0xd555,
269*691f3413SSatya Priya Kakitapalli 	.config_ctl_val = 0x20485699,
270*691f3413SSatya Priya Kakitapalli 	.config_ctl_hi_val = 0x00002267,
271*691f3413SSatya Priya Kakitapalli 	.config_ctl_hi1_val = 0x00000024,
272*691f3413SSatya Priya Kakitapalli 	.test_ctl_hi1_val = 0x00000020,
273*691f3413SSatya Priya Kakitapalli 	.user_ctl_val = 0x00000000,
274*691f3413SSatya Priya Kakitapalli 	.user_ctl_hi_val = 0x00000805,
275*691f3413SSatya Priya Kakitapalli 	.user_ctl_hi1_val = 0x000000d0,
276*691f3413SSatya Priya Kakitapalli };
277*691f3413SSatya Priya Kakitapalli 
278*691f3413SSatya Priya Kakitapalli static struct clk_alpha_pll cam_cc_pll5 = {
279*691f3413SSatya Priya Kakitapalli 	.offset = 0x4078,
280*691f3413SSatya Priya Kakitapalli 	.vco_table = trion_vco,
281*691f3413SSatya Priya Kakitapalli 	.num_vco = ARRAY_SIZE(trion_vco),
282*691f3413SSatya Priya Kakitapalli 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TRION],
283*691f3413SSatya Priya Kakitapalli 	.clkr = {
284*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
285*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_pll5",
286*691f3413SSatya Priya Kakitapalli 			.parent_data = &(const struct clk_parent_data) {
287*691f3413SSatya Priya Kakitapalli 				.index = DT_BI_TCXO,
288*691f3413SSatya Priya Kakitapalli 			},
289*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
290*691f3413SSatya Priya Kakitapalli 			.ops = &clk_alpha_pll_trion_ops,
291*691f3413SSatya Priya Kakitapalli 		},
292*691f3413SSatya Priya Kakitapalli 	},
293*691f3413SSatya Priya Kakitapalli };
294*691f3413SSatya Priya Kakitapalli 
295*691f3413SSatya Priya Kakitapalli static const struct alpha_pll_config cam_cc_pll6_config = {
296*691f3413SSatya Priya Kakitapalli 	.l = 0x14,
297*691f3413SSatya Priya Kakitapalli 	.alpha = 0xd555,
298*691f3413SSatya Priya Kakitapalli 	.config_ctl_val = 0x20485699,
299*691f3413SSatya Priya Kakitapalli 	.config_ctl_hi_val = 0x00002267,
300*691f3413SSatya Priya Kakitapalli 	.config_ctl_hi1_val = 0x00000024,
301*691f3413SSatya Priya Kakitapalli 	.test_ctl_hi1_val = 0x00000020,
302*691f3413SSatya Priya Kakitapalli 	.user_ctl_val = 0x00000000,
303*691f3413SSatya Priya Kakitapalli 	.user_ctl_hi_val = 0x00000805,
304*691f3413SSatya Priya Kakitapalli 	.user_ctl_hi1_val = 0x000000d0,
305*691f3413SSatya Priya Kakitapalli };
306*691f3413SSatya Priya Kakitapalli 
307*691f3413SSatya Priya Kakitapalli static struct clk_alpha_pll cam_cc_pll6 = {
308*691f3413SSatya Priya Kakitapalli 	.offset = 0x40f0,
309*691f3413SSatya Priya Kakitapalli 	.vco_table = trion_vco,
310*691f3413SSatya Priya Kakitapalli 	.num_vco = ARRAY_SIZE(trion_vco),
311*691f3413SSatya Priya Kakitapalli 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TRION],
312*691f3413SSatya Priya Kakitapalli 	.clkr = {
313*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
314*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_pll6",
315*691f3413SSatya Priya Kakitapalli 			.parent_data = &(const struct clk_parent_data) {
316*691f3413SSatya Priya Kakitapalli 				.index = DT_BI_TCXO,
317*691f3413SSatya Priya Kakitapalli 			},
318*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
319*691f3413SSatya Priya Kakitapalli 			.ops = &clk_alpha_pll_trion_ops,
320*691f3413SSatya Priya Kakitapalli 		},
321*691f3413SSatya Priya Kakitapalli 	},
322*691f3413SSatya Priya Kakitapalli };
323*691f3413SSatya Priya Kakitapalli 
324*691f3413SSatya Priya Kakitapalli static const struct parent_map cam_cc_parent_map_0[] = {
325*691f3413SSatya Priya Kakitapalli 	{ P_BI_TCXO, 0 },
326*691f3413SSatya Priya Kakitapalli 	{ P_CAM_CC_PLL0_OUT_MAIN, 1 },
327*691f3413SSatya Priya Kakitapalli 	{ P_CAM_CC_PLL0_OUT_EVEN, 2 },
328*691f3413SSatya Priya Kakitapalli 	{ P_CAM_CC_PLL0_OUT_ODD, 3 },
329*691f3413SSatya Priya Kakitapalli 	{ P_CAM_CC_PLL2_OUT_MAIN, 5 },
330*691f3413SSatya Priya Kakitapalli };
331*691f3413SSatya Priya Kakitapalli 
332*691f3413SSatya Priya Kakitapalli static const struct clk_parent_data cam_cc_parent_data_0[] = {
333*691f3413SSatya Priya Kakitapalli 	{ .index = DT_BI_TCXO },
334*691f3413SSatya Priya Kakitapalli 	{ .hw = &cam_cc_pll0.clkr.hw },
335*691f3413SSatya Priya Kakitapalli 	{ .hw = &cam_cc_pll0_out_even.clkr.hw },
336*691f3413SSatya Priya Kakitapalli 	{ .hw = &cam_cc_pll0_out_odd.clkr.hw },
337*691f3413SSatya Priya Kakitapalli 	{ .hw = &cam_cc_pll2_out_main.clkr.hw },
338*691f3413SSatya Priya Kakitapalli };
339*691f3413SSatya Priya Kakitapalli 
340*691f3413SSatya Priya Kakitapalli static const struct parent_map cam_cc_parent_map_1[] = {
341*691f3413SSatya Priya Kakitapalli 	{ P_BI_TCXO, 0 },
342*691f3413SSatya Priya Kakitapalli 	{ P_CAM_CC_PLL2_OUT_EARLY, 5 },
343*691f3413SSatya Priya Kakitapalli };
344*691f3413SSatya Priya Kakitapalli 
345*691f3413SSatya Priya Kakitapalli static const struct clk_parent_data cam_cc_parent_data_1[] = {
346*691f3413SSatya Priya Kakitapalli 	{ .index = DT_BI_TCXO },
347*691f3413SSatya Priya Kakitapalli 	{ .hw = &cam_cc_pll2.clkr.hw },
348*691f3413SSatya Priya Kakitapalli };
349*691f3413SSatya Priya Kakitapalli 
350*691f3413SSatya Priya Kakitapalli static const struct parent_map cam_cc_parent_map_2[] = {
351*691f3413SSatya Priya Kakitapalli 	{ P_BI_TCXO, 0 },
352*691f3413SSatya Priya Kakitapalli 	{ P_CAM_CC_PLL3_OUT_EVEN, 6 },
353*691f3413SSatya Priya Kakitapalli };
354*691f3413SSatya Priya Kakitapalli 
355*691f3413SSatya Priya Kakitapalli static const struct clk_parent_data cam_cc_parent_data_2[] = {
356*691f3413SSatya Priya Kakitapalli 	{ .index = DT_BI_TCXO },
357*691f3413SSatya Priya Kakitapalli 	{ .hw = &cam_cc_pll3.clkr.hw },
358*691f3413SSatya Priya Kakitapalli };
359*691f3413SSatya Priya Kakitapalli 
360*691f3413SSatya Priya Kakitapalli static const struct parent_map cam_cc_parent_map_3[] = {
361*691f3413SSatya Priya Kakitapalli 	{ P_BI_TCXO, 0 },
362*691f3413SSatya Priya Kakitapalli 	{ P_CAM_CC_PLL4_OUT_EVEN, 6 },
363*691f3413SSatya Priya Kakitapalli };
364*691f3413SSatya Priya Kakitapalli 
365*691f3413SSatya Priya Kakitapalli static const struct clk_parent_data cam_cc_parent_data_3[] = {
366*691f3413SSatya Priya Kakitapalli 	{ .index = DT_BI_TCXO },
367*691f3413SSatya Priya Kakitapalli 	{ .hw = &cam_cc_pll4.clkr.hw },
368*691f3413SSatya Priya Kakitapalli };
369*691f3413SSatya Priya Kakitapalli 
370*691f3413SSatya Priya Kakitapalli static const struct parent_map cam_cc_parent_map_4[] = {
371*691f3413SSatya Priya Kakitapalli 	{ P_BI_TCXO, 0 },
372*691f3413SSatya Priya Kakitapalli 	{ P_CAM_CC_PLL5_OUT_EVEN, 6 },
373*691f3413SSatya Priya Kakitapalli };
374*691f3413SSatya Priya Kakitapalli 
375*691f3413SSatya Priya Kakitapalli static const struct clk_parent_data cam_cc_parent_data_4[] = {
376*691f3413SSatya Priya Kakitapalli 	{ .index = DT_BI_TCXO },
377*691f3413SSatya Priya Kakitapalli 	{ .hw = &cam_cc_pll5.clkr.hw },
378*691f3413SSatya Priya Kakitapalli };
379*691f3413SSatya Priya Kakitapalli 
380*691f3413SSatya Priya Kakitapalli static const struct parent_map cam_cc_parent_map_5[] = {
381*691f3413SSatya Priya Kakitapalli 	{ P_BI_TCXO, 0 },
382*691f3413SSatya Priya Kakitapalli 	{ P_CAM_CC_PLL6_OUT_EVEN, 6 },
383*691f3413SSatya Priya Kakitapalli };
384*691f3413SSatya Priya Kakitapalli 
385*691f3413SSatya Priya Kakitapalli static const struct clk_parent_data cam_cc_parent_data_5[] = {
386*691f3413SSatya Priya Kakitapalli 	{ .index = DT_BI_TCXO },
387*691f3413SSatya Priya Kakitapalli 	{ .hw = &cam_cc_pll6.clkr.hw },
388*691f3413SSatya Priya Kakitapalli };
389*691f3413SSatya Priya Kakitapalli 
390*691f3413SSatya Priya Kakitapalli static const struct parent_map cam_cc_parent_map_6[] = {
391*691f3413SSatya Priya Kakitapalli 	{ P_BI_TCXO, 0 },
392*691f3413SSatya Priya Kakitapalli 	{ P_CAM_CC_PLL1_OUT_EVEN, 4 },
393*691f3413SSatya Priya Kakitapalli };
394*691f3413SSatya Priya Kakitapalli 
395*691f3413SSatya Priya Kakitapalli static const struct clk_parent_data cam_cc_parent_data_6[] = {
396*691f3413SSatya Priya Kakitapalli 	{ .index = DT_BI_TCXO },
397*691f3413SSatya Priya Kakitapalli 	{ .hw = &cam_cc_pll1.clkr.hw },
398*691f3413SSatya Priya Kakitapalli };
399*691f3413SSatya Priya Kakitapalli 
400*691f3413SSatya Priya Kakitapalli static const struct parent_map cam_cc_parent_map_7[] = {
401*691f3413SSatya Priya Kakitapalli 	{ P_BI_TCXO, 0 },
402*691f3413SSatya Priya Kakitapalli };
403*691f3413SSatya Priya Kakitapalli 
404*691f3413SSatya Priya Kakitapalli static const struct clk_parent_data cam_cc_parent_data_7[] = {
405*691f3413SSatya Priya Kakitapalli 	{ .index = DT_BI_TCXO },
406*691f3413SSatya Priya Kakitapalli };
407*691f3413SSatya Priya Kakitapalli 
408*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_bps_clk_src[] = {
409*691f3413SSatya Priya Kakitapalli 	F(19200000, P_BI_TCXO, 1, 0, 0),
410*691f3413SSatya Priya Kakitapalli 	F(100000000, P_CAM_CC_PLL0_OUT_EVEN, 6, 0, 0),
411*691f3413SSatya Priya Kakitapalli 	F(200000000, P_CAM_CC_PLL0_OUT_ODD, 2, 0, 0),
412*691f3413SSatya Priya Kakitapalli 	F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0),
413*691f3413SSatya Priya Kakitapalli 	F(480000000, P_CAM_CC_PLL2_OUT_MAIN, 1, 0, 0),
414*691f3413SSatya Priya Kakitapalli 	F(600000000, P_CAM_CC_PLL0_OUT_MAIN, 2, 0, 0),
415*691f3413SSatya Priya Kakitapalli 	{ }
416*691f3413SSatya Priya Kakitapalli };
417*691f3413SSatya Priya Kakitapalli 
418*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_bps_clk_src = {
419*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0x7010,
420*691f3413SSatya Priya Kakitapalli 	.mnd_width = 0,
421*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
422*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_0,
423*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_bps_clk_src,
424*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
425*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_bps_clk_src",
426*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_0,
427*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
428*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
429*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
430*691f3413SSatya Priya Kakitapalli 	},
431*691f3413SSatya Priya Kakitapalli };
432*691f3413SSatya Priya Kakitapalli 
433*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_camnoc_axi_clk_src[] = {
434*691f3413SSatya Priya Kakitapalli 	F(19200000, P_BI_TCXO, 1, 0, 0),
435*691f3413SSatya Priya Kakitapalli 	F(150000000, P_CAM_CC_PLL0_OUT_EVEN, 4, 0, 0),
436*691f3413SSatya Priya Kakitapalli 	F(266666667, P_CAM_CC_PLL0_OUT_ODD, 1.5, 0, 0),
437*691f3413SSatya Priya Kakitapalli 	F(320000000, P_CAM_CC_PLL2_OUT_MAIN, 1.5, 0, 0),
438*691f3413SSatya Priya Kakitapalli 	F(400000000, P_CAM_CC_PLL0_OUT_MAIN, 3, 0, 0),
439*691f3413SSatya Priya Kakitapalli 	F(480000000, P_CAM_CC_PLL2_OUT_MAIN, 1, 0, 0),
440*691f3413SSatya Priya Kakitapalli 	{ }
441*691f3413SSatya Priya Kakitapalli };
442*691f3413SSatya Priya Kakitapalli 
443*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_camnoc_axi_clk_src = {
444*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0xc170,
445*691f3413SSatya Priya Kakitapalli 	.mnd_width = 0,
446*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
447*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_0,
448*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_camnoc_axi_clk_src,
449*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
450*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_camnoc_axi_clk_src",
451*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_0,
452*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
453*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
454*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
455*691f3413SSatya Priya Kakitapalli 	},
456*691f3413SSatya Priya Kakitapalli };
457*691f3413SSatya Priya Kakitapalli 
458*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_cci_0_clk_src[] = {
459*691f3413SSatya Priya Kakitapalli 	F(19200000, P_BI_TCXO, 1, 0, 0),
460*691f3413SSatya Priya Kakitapalli 	F(37500000, P_CAM_CC_PLL0_OUT_EVEN, 16, 0, 0),
461*691f3413SSatya Priya Kakitapalli 	{ }
462*691f3413SSatya Priya Kakitapalli };
463*691f3413SSatya Priya Kakitapalli 
464*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_cci_0_clk_src = {
465*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0xc108,
466*691f3413SSatya Priya Kakitapalli 	.mnd_width = 8,
467*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
468*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_0,
469*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_cci_0_clk_src,
470*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
471*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_cci_0_clk_src",
472*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_0,
473*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
474*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
475*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
476*691f3413SSatya Priya Kakitapalli 	},
477*691f3413SSatya Priya Kakitapalli };
478*691f3413SSatya Priya Kakitapalli 
479*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_cci_1_clk_src = {
480*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0xc124,
481*691f3413SSatya Priya Kakitapalli 	.mnd_width = 8,
482*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
483*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_0,
484*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_cci_0_clk_src,
485*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
486*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_cci_1_clk_src",
487*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_0,
488*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
489*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
490*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
491*691f3413SSatya Priya Kakitapalli 	},
492*691f3413SSatya Priya Kakitapalli };
493*691f3413SSatya Priya Kakitapalli 
494*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_cci_2_clk_src = {
495*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0xc204,
496*691f3413SSatya Priya Kakitapalli 	.mnd_width = 8,
497*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
498*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_0,
499*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_cci_0_clk_src,
500*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
501*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_cci_2_clk_src",
502*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_0,
503*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
504*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
505*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
506*691f3413SSatya Priya Kakitapalli 	},
507*691f3413SSatya Priya Kakitapalli };
508*691f3413SSatya Priya Kakitapalli 
509*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_cci_3_clk_src = {
510*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0xc220,
511*691f3413SSatya Priya Kakitapalli 	.mnd_width = 8,
512*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
513*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_0,
514*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_cci_0_clk_src,
515*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
516*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_cci_3_clk_src",
517*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_0,
518*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
519*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
520*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
521*691f3413SSatya Priya Kakitapalli 	},
522*691f3413SSatya Priya Kakitapalli };
523*691f3413SSatya Priya Kakitapalli 
524*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_cphy_rx_clk_src[] = {
525*691f3413SSatya Priya Kakitapalli 	F(19200000, P_BI_TCXO, 1, 0, 0),
526*691f3413SSatya Priya Kakitapalli 	F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0),
527*691f3413SSatya Priya Kakitapalli 	{ }
528*691f3413SSatya Priya Kakitapalli };
529*691f3413SSatya Priya Kakitapalli 
530*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_cphy_rx_clk_src = {
531*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0xa064,
532*691f3413SSatya Priya Kakitapalli 	.mnd_width = 0,
533*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
534*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_0,
535*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_cphy_rx_clk_src,
536*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
537*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_cphy_rx_clk_src",
538*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_0,
539*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
540*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
541*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
542*691f3413SSatya Priya Kakitapalli 	},
543*691f3413SSatya Priya Kakitapalli };
544*691f3413SSatya Priya Kakitapalli 
545*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_csi0phytimer_clk_src[] = {
546*691f3413SSatya Priya Kakitapalli 	F(19200000, P_BI_TCXO, 1, 0, 0),
547*691f3413SSatya Priya Kakitapalli 	F(300000000, P_CAM_CC_PLL0_OUT_EVEN, 2, 0, 0),
548*691f3413SSatya Priya Kakitapalli 	{ }
549*691f3413SSatya Priya Kakitapalli };
550*691f3413SSatya Priya Kakitapalli 
551*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_csi0phytimer_clk_src = {
552*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0x6004,
553*691f3413SSatya Priya Kakitapalli 	.mnd_width = 0,
554*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
555*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_0,
556*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src,
557*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
558*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_csi0phytimer_clk_src",
559*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_0,
560*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
561*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
562*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
563*691f3413SSatya Priya Kakitapalli 	},
564*691f3413SSatya Priya Kakitapalli };
565*691f3413SSatya Priya Kakitapalli 
566*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_csi1phytimer_clk_src = {
567*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0x6028,
568*691f3413SSatya Priya Kakitapalli 	.mnd_width = 0,
569*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
570*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_0,
571*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src,
572*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
573*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_csi1phytimer_clk_src",
574*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_0,
575*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
576*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
577*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
578*691f3413SSatya Priya Kakitapalli 	},
579*691f3413SSatya Priya Kakitapalli };
580*691f3413SSatya Priya Kakitapalli 
581*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_csi2phytimer_clk_src = {
582*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0x604c,
583*691f3413SSatya Priya Kakitapalli 	.mnd_width = 0,
584*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
585*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_0,
586*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src,
587*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
588*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_csi2phytimer_clk_src",
589*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_0,
590*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
591*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
592*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
593*691f3413SSatya Priya Kakitapalli 	},
594*691f3413SSatya Priya Kakitapalli };
595*691f3413SSatya Priya Kakitapalli 
596*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_csi3phytimer_clk_src = {
597*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0x6070,
598*691f3413SSatya Priya Kakitapalli 	.mnd_width = 0,
599*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
600*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_0,
601*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src,
602*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
603*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_csi3phytimer_clk_src",
604*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_0,
605*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
606*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
607*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
608*691f3413SSatya Priya Kakitapalli 	},
609*691f3413SSatya Priya Kakitapalli };
610*691f3413SSatya Priya Kakitapalli 
611*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_fast_ahb_clk_src[] = {
612*691f3413SSatya Priya Kakitapalli 	F(19200000, P_BI_TCXO, 1, 0, 0),
613*691f3413SSatya Priya Kakitapalli 	F(50000000, P_CAM_CC_PLL0_OUT_EVEN, 12, 0, 0),
614*691f3413SSatya Priya Kakitapalli 	F(100000000, P_CAM_CC_PLL0_OUT_EVEN, 6, 0, 0),
615*691f3413SSatya Priya Kakitapalli 	F(200000000, P_CAM_CC_PLL0_OUT_EVEN, 3, 0, 0),
616*691f3413SSatya Priya Kakitapalli 	F(300000000, P_CAM_CC_PLL0_OUT_MAIN, 4, 0, 0),
617*691f3413SSatya Priya Kakitapalli 	F(400000000, P_CAM_CC_PLL0_OUT_MAIN, 3, 0, 0),
618*691f3413SSatya Priya Kakitapalli 	{ }
619*691f3413SSatya Priya Kakitapalli };
620*691f3413SSatya Priya Kakitapalli 
621*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_fast_ahb_clk_src = {
622*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0x703c,
623*691f3413SSatya Priya Kakitapalli 	.mnd_width = 0,
624*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
625*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_0,
626*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_fast_ahb_clk_src,
627*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
628*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_fast_ahb_clk_src",
629*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_0,
630*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
631*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
632*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
633*691f3413SSatya Priya Kakitapalli 	},
634*691f3413SSatya Priya Kakitapalli };
635*691f3413SSatya Priya Kakitapalli 
636*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_fd_core_clk_src[] = {
637*691f3413SSatya Priya Kakitapalli 	F(19200000, P_BI_TCXO, 1, 0, 0),
638*691f3413SSatya Priya Kakitapalli 	F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0),
639*691f3413SSatya Priya Kakitapalli 	F(480000000, P_CAM_CC_PLL2_OUT_MAIN, 1, 0, 0),
640*691f3413SSatya Priya Kakitapalli 	F(600000000, P_CAM_CC_PLL0_OUT_MAIN, 2, 0, 0),
641*691f3413SSatya Priya Kakitapalli 	{ }
642*691f3413SSatya Priya Kakitapalli };
643*691f3413SSatya Priya Kakitapalli 
644*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_fd_core_clk_src = {
645*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0xc0e0,
646*691f3413SSatya Priya Kakitapalli 	.mnd_width = 0,
647*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
648*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_0,
649*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_fd_core_clk_src,
650*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
651*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_fd_core_clk_src",
652*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_0,
653*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
654*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
655*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
656*691f3413SSatya Priya Kakitapalli 	},
657*691f3413SSatya Priya Kakitapalli };
658*691f3413SSatya Priya Kakitapalli 
659*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_icp_clk_src[] = {
660*691f3413SSatya Priya Kakitapalli 	F(19200000, P_BI_TCXO, 1, 0, 0),
661*691f3413SSatya Priya Kakitapalli 	F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0),
662*691f3413SSatya Priya Kakitapalli 	F(600000000, P_CAM_CC_PLL0_OUT_MAIN, 2, 0, 0),
663*691f3413SSatya Priya Kakitapalli 	{ }
664*691f3413SSatya Priya Kakitapalli };
665*691f3413SSatya Priya Kakitapalli 
666*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_icp_clk_src = {
667*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0xc0b8,
668*691f3413SSatya Priya Kakitapalli 	.mnd_width = 0,
669*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
670*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_0,
671*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_icp_clk_src,
672*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
673*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_icp_clk_src",
674*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_0,
675*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
676*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
677*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
678*691f3413SSatya Priya Kakitapalli 	},
679*691f3413SSatya Priya Kakitapalli };
680*691f3413SSatya Priya Kakitapalli 
681*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_ife_0_clk_src[] = {
682*691f3413SSatya Priya Kakitapalli 	F(19200000, P_BI_TCXO, 1, 0, 0),
683*691f3413SSatya Priya Kakitapalli 	F(400000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0),
684*691f3413SSatya Priya Kakitapalli 	F(558000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0),
685*691f3413SSatya Priya Kakitapalli 	F(637000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0),
686*691f3413SSatya Priya Kakitapalli 	F(760000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0),
687*691f3413SSatya Priya Kakitapalli 	{ }
688*691f3413SSatya Priya Kakitapalli };
689*691f3413SSatya Priya Kakitapalli 
690*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_ife_0_clk_src = {
691*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0xa010,
692*691f3413SSatya Priya Kakitapalli 	.mnd_width = 0,
693*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
694*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_2,
695*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_ife_0_clk_src,
696*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
697*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_ife_0_clk_src",
698*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_2,
699*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_2),
700*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
701*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
702*691f3413SSatya Priya Kakitapalli 	},
703*691f3413SSatya Priya Kakitapalli };
704*691f3413SSatya Priya Kakitapalli 
705*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_ife_0_csid_clk_src[] = {
706*691f3413SSatya Priya Kakitapalli 	F(19200000, P_BI_TCXO, 1, 0, 0),
707*691f3413SSatya Priya Kakitapalli 	F(75000000, P_CAM_CC_PLL0_OUT_EVEN, 8, 0, 0),
708*691f3413SSatya Priya Kakitapalli 	F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0),
709*691f3413SSatya Priya Kakitapalli 	F(480000000, P_CAM_CC_PLL2_OUT_MAIN, 1, 0, 0),
710*691f3413SSatya Priya Kakitapalli 	F(600000000, P_CAM_CC_PLL0_OUT_MAIN, 2, 0, 0),
711*691f3413SSatya Priya Kakitapalli 	{ }
712*691f3413SSatya Priya Kakitapalli };
713*691f3413SSatya Priya Kakitapalli 
714*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_ife_0_csid_clk_src = {
715*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0xa03c,
716*691f3413SSatya Priya Kakitapalli 	.mnd_width = 0,
717*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
718*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_0,
719*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_ife_0_csid_clk_src,
720*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
721*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_ife_0_csid_clk_src",
722*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_0,
723*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
724*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
725*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
726*691f3413SSatya Priya Kakitapalli 	},
727*691f3413SSatya Priya Kakitapalli };
728*691f3413SSatya Priya Kakitapalli 
729*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_ife_1_clk_src[] = {
730*691f3413SSatya Priya Kakitapalli 	F(19200000, P_BI_TCXO, 1, 0, 0),
731*691f3413SSatya Priya Kakitapalli 	F(400000000, P_CAM_CC_PLL4_OUT_EVEN, 1, 0, 0),
732*691f3413SSatya Priya Kakitapalli 	F(558000000, P_CAM_CC_PLL4_OUT_EVEN, 1, 0, 0),
733*691f3413SSatya Priya Kakitapalli 	F(637000000, P_CAM_CC_PLL4_OUT_EVEN, 1, 0, 0),
734*691f3413SSatya Priya Kakitapalli 	F(760000000, P_CAM_CC_PLL4_OUT_EVEN, 1, 0, 0),
735*691f3413SSatya Priya Kakitapalli 	{ }
736*691f3413SSatya Priya Kakitapalli };
737*691f3413SSatya Priya Kakitapalli 
738*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_ife_1_clk_src = {
739*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0xb010,
740*691f3413SSatya Priya Kakitapalli 	.mnd_width = 0,
741*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
742*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_3,
743*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_ife_1_clk_src,
744*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
745*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_ife_1_clk_src",
746*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_3,
747*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_3),
748*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
749*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
750*691f3413SSatya Priya Kakitapalli 	},
751*691f3413SSatya Priya Kakitapalli };
752*691f3413SSatya Priya Kakitapalli 
753*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_ife_1_csid_clk_src = {
754*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0xb034,
755*691f3413SSatya Priya Kakitapalli 	.mnd_width = 0,
756*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
757*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_0,
758*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_ife_0_csid_clk_src,
759*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
760*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_ife_1_csid_clk_src",
761*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_0,
762*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
763*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
764*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
765*691f3413SSatya Priya Kakitapalli 	},
766*691f3413SSatya Priya Kakitapalli };
767*691f3413SSatya Priya Kakitapalli 
768*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_ife_2_clk_src[] = {
769*691f3413SSatya Priya Kakitapalli 	F(19200000, P_BI_TCXO, 1, 0, 0),
770*691f3413SSatya Priya Kakitapalli 	F(400000000, P_CAM_CC_PLL5_OUT_EVEN, 1, 0, 0),
771*691f3413SSatya Priya Kakitapalli 	F(558000000, P_CAM_CC_PLL5_OUT_EVEN, 1, 0, 0),
772*691f3413SSatya Priya Kakitapalli 	F(637000000, P_CAM_CC_PLL5_OUT_EVEN, 1, 0, 0),
773*691f3413SSatya Priya Kakitapalli 	F(760000000, P_CAM_CC_PLL5_OUT_EVEN, 1, 0, 0),
774*691f3413SSatya Priya Kakitapalli 	{ }
775*691f3413SSatya Priya Kakitapalli };
776*691f3413SSatya Priya Kakitapalli 
777*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_ife_2_clk_src = {
778*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0xf010,
779*691f3413SSatya Priya Kakitapalli 	.mnd_width = 0,
780*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
781*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_4,
782*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_ife_2_clk_src,
783*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
784*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_ife_2_clk_src",
785*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_4,
786*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_4),
787*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
788*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
789*691f3413SSatya Priya Kakitapalli 	},
790*691f3413SSatya Priya Kakitapalli };
791*691f3413SSatya Priya Kakitapalli 
792*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_ife_2_csid_clk_src = {
793*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0xf03c,
794*691f3413SSatya Priya Kakitapalli 	.mnd_width = 0,
795*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
796*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_0,
797*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_fd_core_clk_src,
798*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
799*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_ife_2_csid_clk_src",
800*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_0,
801*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
802*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
803*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
804*691f3413SSatya Priya Kakitapalli 	},
805*691f3413SSatya Priya Kakitapalli };
806*691f3413SSatya Priya Kakitapalli 
807*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_ife_3_clk_src[] = {
808*691f3413SSatya Priya Kakitapalli 	F(19200000, P_BI_TCXO, 1, 0, 0),
809*691f3413SSatya Priya Kakitapalli 	F(400000000, P_CAM_CC_PLL6_OUT_EVEN, 1, 0, 0),
810*691f3413SSatya Priya Kakitapalli 	F(558000000, P_CAM_CC_PLL6_OUT_EVEN, 1, 0, 0),
811*691f3413SSatya Priya Kakitapalli 	F(637000000, P_CAM_CC_PLL6_OUT_EVEN, 1, 0, 0),
812*691f3413SSatya Priya Kakitapalli 	F(760000000, P_CAM_CC_PLL6_OUT_EVEN, 1, 0, 0),
813*691f3413SSatya Priya Kakitapalli 	{ }
814*691f3413SSatya Priya Kakitapalli };
815*691f3413SSatya Priya Kakitapalli 
816*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_ife_3_clk_src = {
817*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0xf07c,
818*691f3413SSatya Priya Kakitapalli 	.mnd_width = 0,
819*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
820*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_5,
821*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_ife_3_clk_src,
822*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
823*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_ife_3_clk_src",
824*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_5,
825*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_5),
826*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
827*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
828*691f3413SSatya Priya Kakitapalli 	},
829*691f3413SSatya Priya Kakitapalli };
830*691f3413SSatya Priya Kakitapalli 
831*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_ife_3_csid_clk_src = {
832*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0xf0a8,
833*691f3413SSatya Priya Kakitapalli 	.mnd_width = 0,
834*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
835*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_0,
836*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_fd_core_clk_src,
837*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
838*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_ife_3_csid_clk_src",
839*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_0,
840*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
841*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
842*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
843*691f3413SSatya Priya Kakitapalli 	},
844*691f3413SSatya Priya Kakitapalli };
845*691f3413SSatya Priya Kakitapalli 
846*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_ife_lite_0_clk_src[] = {
847*691f3413SSatya Priya Kakitapalli 	F(19200000, P_BI_TCXO, 1, 0, 0),
848*691f3413SSatya Priya Kakitapalli 	F(320000000, P_CAM_CC_PLL2_OUT_MAIN, 1.5, 0, 0),
849*691f3413SSatya Priya Kakitapalli 	F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0),
850*691f3413SSatya Priya Kakitapalli 	F(480000000, P_CAM_CC_PLL2_OUT_MAIN, 1, 0, 0),
851*691f3413SSatya Priya Kakitapalli 	F(600000000, P_CAM_CC_PLL0_OUT_MAIN, 2, 0, 0),
852*691f3413SSatya Priya Kakitapalli 	{ }
853*691f3413SSatya Priya Kakitapalli };
854*691f3413SSatya Priya Kakitapalli 
855*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_ife_lite_0_clk_src = {
856*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0xc004,
857*691f3413SSatya Priya Kakitapalli 	.mnd_width = 0,
858*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
859*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_0,
860*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_ife_lite_0_clk_src,
861*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
862*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_ife_lite_0_clk_src",
863*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_0,
864*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
865*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
866*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
867*691f3413SSatya Priya Kakitapalli 	},
868*691f3413SSatya Priya Kakitapalli };
869*691f3413SSatya Priya Kakitapalli 
870*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_ife_lite_0_csid_clk_src = {
871*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0xc020,
872*691f3413SSatya Priya Kakitapalli 	.mnd_width = 0,
873*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
874*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_0,
875*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_fd_core_clk_src,
876*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
877*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_ife_lite_0_csid_clk_src",
878*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_0,
879*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
880*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
881*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
882*691f3413SSatya Priya Kakitapalli 	},
883*691f3413SSatya Priya Kakitapalli };
884*691f3413SSatya Priya Kakitapalli 
885*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_ife_lite_1_clk_src = {
886*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0xc048,
887*691f3413SSatya Priya Kakitapalli 	.mnd_width = 0,
888*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
889*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_0,
890*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_ife_lite_0_clk_src,
891*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
892*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_ife_lite_1_clk_src",
893*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_0,
894*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
895*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
896*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
897*691f3413SSatya Priya Kakitapalli 	},
898*691f3413SSatya Priya Kakitapalli };
899*691f3413SSatya Priya Kakitapalli 
900*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_ife_lite_1_csid_clk_src = {
901*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0xc064,
902*691f3413SSatya Priya Kakitapalli 	.mnd_width = 0,
903*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
904*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_0,
905*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_fd_core_clk_src,
906*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
907*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_ife_lite_1_csid_clk_src",
908*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_0,
909*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
910*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
911*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
912*691f3413SSatya Priya Kakitapalli 	},
913*691f3413SSatya Priya Kakitapalli };
914*691f3413SSatya Priya Kakitapalli 
915*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_ife_lite_2_clk_src = {
916*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0xc240,
917*691f3413SSatya Priya Kakitapalli 	.mnd_width = 0,
918*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
919*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_0,
920*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_ife_lite_0_clk_src,
921*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
922*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_ife_lite_2_clk_src",
923*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_0,
924*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
925*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
926*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
927*691f3413SSatya Priya Kakitapalli 	},
928*691f3413SSatya Priya Kakitapalli };
929*691f3413SSatya Priya Kakitapalli 
930*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_ife_lite_2_csid_clk_src = {
931*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0xc25c,
932*691f3413SSatya Priya Kakitapalli 	.mnd_width = 0,
933*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
934*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_0,
935*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_fd_core_clk_src,
936*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
937*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_ife_lite_2_csid_clk_src",
938*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_0,
939*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
940*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
941*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
942*691f3413SSatya Priya Kakitapalli 	},
943*691f3413SSatya Priya Kakitapalli };
944*691f3413SSatya Priya Kakitapalli 
945*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_ife_lite_3_clk_src = {
946*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0xc284,
947*691f3413SSatya Priya Kakitapalli 	.mnd_width = 0,
948*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
949*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_0,
950*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_ife_lite_0_clk_src,
951*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
952*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_ife_lite_3_clk_src",
953*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_0,
954*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
955*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
956*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
957*691f3413SSatya Priya Kakitapalli 	},
958*691f3413SSatya Priya Kakitapalli };
959*691f3413SSatya Priya Kakitapalli 
960*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_ife_lite_3_csid_clk_src = {
961*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0xc2a0,
962*691f3413SSatya Priya Kakitapalli 	.mnd_width = 0,
963*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
964*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_0,
965*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_fd_core_clk_src,
966*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
967*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_ife_lite_3_csid_clk_src",
968*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_0,
969*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
970*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
971*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
972*691f3413SSatya Priya Kakitapalli 	},
973*691f3413SSatya Priya Kakitapalli };
974*691f3413SSatya Priya Kakitapalli 
975*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_ipe_0_clk_src[] = {
976*691f3413SSatya Priya Kakitapalli 	F(19200000, P_BI_TCXO, 1, 0, 0),
977*691f3413SSatya Priya Kakitapalli 	F(375000000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0),
978*691f3413SSatya Priya Kakitapalli 	F(475000000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0),
979*691f3413SSatya Priya Kakitapalli 	F(520000000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0),
980*691f3413SSatya Priya Kakitapalli 	F(600000000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0),
981*691f3413SSatya Priya Kakitapalli 	{ }
982*691f3413SSatya Priya Kakitapalli };
983*691f3413SSatya Priya Kakitapalli 
984*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_ipe_0_clk_src = {
985*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0x8010,
986*691f3413SSatya Priya Kakitapalli 	.mnd_width = 0,
987*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
988*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_6,
989*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_ipe_0_clk_src,
990*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
991*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_ipe_0_clk_src",
992*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_6,
993*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_6),
994*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
995*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
996*691f3413SSatya Priya Kakitapalli 	},
997*691f3413SSatya Priya Kakitapalli };
998*691f3413SSatya Priya Kakitapalli 
999*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_jpeg_clk_src = {
1000*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0xc08c,
1001*691f3413SSatya Priya Kakitapalli 	.mnd_width = 0,
1002*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
1003*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_0,
1004*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_bps_clk_src,
1005*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
1006*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_jpeg_clk_src",
1007*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_0,
1008*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
1009*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
1010*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
1011*691f3413SSatya Priya Kakitapalli 	},
1012*691f3413SSatya Priya Kakitapalli };
1013*691f3413SSatya Priya Kakitapalli 
1014*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_lrme_clk_src[] = {
1015*691f3413SSatya Priya Kakitapalli 	F(19200000, P_BI_TCXO, 1, 0, 0),
1016*691f3413SSatya Priya Kakitapalli 	F(100000000, P_CAM_CC_PLL0_OUT_EVEN, 6, 0, 0),
1017*691f3413SSatya Priya Kakitapalli 	F(240000000, P_CAM_CC_PLL2_OUT_MAIN, 2, 0, 0),
1018*691f3413SSatya Priya Kakitapalli 	F(300000000, P_CAM_CC_PLL0_OUT_EVEN, 2, 0, 0),
1019*691f3413SSatya Priya Kakitapalli 	F(320000000, P_CAM_CC_PLL2_OUT_MAIN, 1.5, 0, 0),
1020*691f3413SSatya Priya Kakitapalli 	F(400000000, P_CAM_CC_PLL0_OUT_MAIN, 3, 0, 0),
1021*691f3413SSatya Priya Kakitapalli 	{ }
1022*691f3413SSatya Priya Kakitapalli };
1023*691f3413SSatya Priya Kakitapalli 
1024*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_lrme_clk_src = {
1025*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0xc144,
1026*691f3413SSatya Priya Kakitapalli 	.mnd_width = 0,
1027*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
1028*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_0,
1029*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_lrme_clk_src,
1030*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
1031*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_lrme_clk_src",
1032*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_0,
1033*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
1034*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
1035*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
1036*691f3413SSatya Priya Kakitapalli 	},
1037*691f3413SSatya Priya Kakitapalli };
1038*691f3413SSatya Priya Kakitapalli 
1039*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_mclk0_clk_src[] = {
1040*691f3413SSatya Priya Kakitapalli 	F(19200000, P_BI_TCXO, 1, 0, 0),
1041*691f3413SSatya Priya Kakitapalli 	F(24000000, P_CAM_CC_PLL2_OUT_EARLY, 10, 1, 4),
1042*691f3413SSatya Priya Kakitapalli 	F(68571429, P_CAM_CC_PLL2_OUT_EARLY, 14, 0, 0),
1043*691f3413SSatya Priya Kakitapalli 	{ }
1044*691f3413SSatya Priya Kakitapalli };
1045*691f3413SSatya Priya Kakitapalli 
1046*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_mclk0_clk_src = {
1047*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0x5004,
1048*691f3413SSatya Priya Kakitapalli 	.mnd_width = 8,
1049*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
1050*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_1,
1051*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_mclk0_clk_src,
1052*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
1053*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_mclk0_clk_src",
1054*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_1,
1055*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
1056*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
1057*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
1058*691f3413SSatya Priya Kakitapalli 	},
1059*691f3413SSatya Priya Kakitapalli };
1060*691f3413SSatya Priya Kakitapalli 
1061*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_mclk1_clk_src = {
1062*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0x5024,
1063*691f3413SSatya Priya Kakitapalli 	.mnd_width = 8,
1064*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
1065*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_1,
1066*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_mclk0_clk_src,
1067*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
1068*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_mclk1_clk_src",
1069*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_1,
1070*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
1071*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
1072*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
1073*691f3413SSatya Priya Kakitapalli 	},
1074*691f3413SSatya Priya Kakitapalli };
1075*691f3413SSatya Priya Kakitapalli 
1076*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_mclk2_clk_src = {
1077*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0x5044,
1078*691f3413SSatya Priya Kakitapalli 	.mnd_width = 8,
1079*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
1080*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_1,
1081*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_mclk0_clk_src,
1082*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
1083*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_mclk2_clk_src",
1084*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_1,
1085*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
1086*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
1087*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
1088*691f3413SSatya Priya Kakitapalli 	},
1089*691f3413SSatya Priya Kakitapalli };
1090*691f3413SSatya Priya Kakitapalli 
1091*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_mclk3_clk_src = {
1092*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0x5064,
1093*691f3413SSatya Priya Kakitapalli 	.mnd_width = 8,
1094*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
1095*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_1,
1096*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_mclk0_clk_src,
1097*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
1098*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_mclk3_clk_src",
1099*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_1,
1100*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
1101*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
1102*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
1103*691f3413SSatya Priya Kakitapalli 	},
1104*691f3413SSatya Priya Kakitapalli };
1105*691f3413SSatya Priya Kakitapalli 
1106*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_mclk4_clk_src = {
1107*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0x5084,
1108*691f3413SSatya Priya Kakitapalli 	.mnd_width = 8,
1109*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
1110*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_1,
1111*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_mclk0_clk_src,
1112*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
1113*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_mclk4_clk_src",
1114*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_1,
1115*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
1116*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
1117*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
1118*691f3413SSatya Priya Kakitapalli 	},
1119*691f3413SSatya Priya Kakitapalli };
1120*691f3413SSatya Priya Kakitapalli 
1121*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_mclk5_clk_src = {
1122*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0x50a4,
1123*691f3413SSatya Priya Kakitapalli 	.mnd_width = 8,
1124*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
1125*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_1,
1126*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_mclk0_clk_src,
1127*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
1128*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_mclk5_clk_src",
1129*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_1,
1130*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
1131*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
1132*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
1133*691f3413SSatya Priya Kakitapalli 	},
1134*691f3413SSatya Priya Kakitapalli };
1135*691f3413SSatya Priya Kakitapalli 
1136*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_mclk6_clk_src = {
1137*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0x50c4,
1138*691f3413SSatya Priya Kakitapalli 	.mnd_width = 8,
1139*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
1140*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_1,
1141*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_mclk0_clk_src,
1142*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
1143*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_mclk6_clk_src",
1144*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_1,
1145*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
1146*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
1147*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
1148*691f3413SSatya Priya Kakitapalli 	},
1149*691f3413SSatya Priya Kakitapalli };
1150*691f3413SSatya Priya Kakitapalli 
1151*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_mclk7_clk_src = {
1152*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0x50e4,
1153*691f3413SSatya Priya Kakitapalli 	.mnd_width = 8,
1154*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
1155*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_1,
1156*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_mclk0_clk_src,
1157*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
1158*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_mclk7_clk_src",
1159*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_1,
1160*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
1161*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
1162*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
1163*691f3413SSatya Priya Kakitapalli 	},
1164*691f3413SSatya Priya Kakitapalli };
1165*691f3413SSatya Priya Kakitapalli 
1166*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_slow_ahb_clk_src[] = {
1167*691f3413SSatya Priya Kakitapalli 	F(19200000, P_BI_TCXO, 1, 0, 0),
1168*691f3413SSatya Priya Kakitapalli 	F(80000000, P_CAM_CC_PLL0_OUT_EVEN, 7.5, 0, 0),
1169*691f3413SSatya Priya Kakitapalli 	{ }
1170*691f3413SSatya Priya Kakitapalli };
1171*691f3413SSatya Priya Kakitapalli 
1172*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_slow_ahb_clk_src = {
1173*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0x7058,
1174*691f3413SSatya Priya Kakitapalli 	.mnd_width = 8,
1175*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
1176*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_0,
1177*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_slow_ahb_clk_src,
1178*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
1179*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_slow_ahb_clk_src",
1180*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_0,
1181*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
1182*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
1183*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
1184*691f3413SSatya Priya Kakitapalli 	},
1185*691f3413SSatya Priya Kakitapalli };
1186*691f3413SSatya Priya Kakitapalli 
1187*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_xo_clk_src[] = {
1188*691f3413SSatya Priya Kakitapalli 	F(19200000, P_BI_TCXO, 1, 0, 0),
1189*691f3413SSatya Priya Kakitapalli 	{ }
1190*691f3413SSatya Priya Kakitapalli };
1191*691f3413SSatya Priya Kakitapalli 
1192*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_xo_clk_src = {
1193*691f3413SSatya Priya Kakitapalli 	.cmd_rcgr = 0xc1cc,
1194*691f3413SSatya Priya Kakitapalli 	.mnd_width = 0,
1195*691f3413SSatya Priya Kakitapalli 	.hid_width = 5,
1196*691f3413SSatya Priya Kakitapalli 	.parent_map = cam_cc_parent_map_7,
1197*691f3413SSatya Priya Kakitapalli 	.freq_tbl = ftbl_cam_cc_xo_clk_src,
1198*691f3413SSatya Priya Kakitapalli 	.clkr.hw.init = &(const struct clk_init_data) {
1199*691f3413SSatya Priya Kakitapalli 		.name = "cam_cc_xo_clk_src",
1200*691f3413SSatya Priya Kakitapalli 		.parent_data = cam_cc_parent_data_7,
1201*691f3413SSatya Priya Kakitapalli 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_7),
1202*691f3413SSatya Priya Kakitapalli 		.flags = CLK_SET_RATE_PARENT,
1203*691f3413SSatya Priya Kakitapalli 		.ops = &clk_rcg2_shared_ops,
1204*691f3413SSatya Priya Kakitapalli 	},
1205*691f3413SSatya Priya Kakitapalli };
1206*691f3413SSatya Priya Kakitapalli 
1207*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_bps_ahb_clk = {
1208*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0x7070,
1209*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1210*691f3413SSatya Priya Kakitapalli 	.clkr = {
1211*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0x7070,
1212*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1213*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1214*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_bps_ahb_clk",
1215*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1216*691f3413SSatya Priya Kakitapalli 				&cam_cc_slow_ahb_clk_src.clkr.hw,
1217*691f3413SSatya Priya Kakitapalli 			},
1218*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1219*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1220*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1221*691f3413SSatya Priya Kakitapalli 		},
1222*691f3413SSatya Priya Kakitapalli 	},
1223*691f3413SSatya Priya Kakitapalli };
1224*691f3413SSatya Priya Kakitapalli 
1225*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_bps_areg_clk = {
1226*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0x7054,
1227*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1228*691f3413SSatya Priya Kakitapalli 	.clkr = {
1229*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0x7054,
1230*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1231*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1232*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_bps_areg_clk",
1233*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1234*691f3413SSatya Priya Kakitapalli 				&cam_cc_fast_ahb_clk_src.clkr.hw,
1235*691f3413SSatya Priya Kakitapalli 			},
1236*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1237*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1238*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1239*691f3413SSatya Priya Kakitapalli 		},
1240*691f3413SSatya Priya Kakitapalli 	},
1241*691f3413SSatya Priya Kakitapalli };
1242*691f3413SSatya Priya Kakitapalli 
1243*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_bps_axi_clk = {
1244*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0x7038,
1245*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1246*691f3413SSatya Priya Kakitapalli 	.clkr = {
1247*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0x7038,
1248*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1249*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1250*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_bps_axi_clk",
1251*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1252*691f3413SSatya Priya Kakitapalli 				&cam_cc_camnoc_axi_clk_src.clkr.hw,
1253*691f3413SSatya Priya Kakitapalli 			},
1254*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1255*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1256*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1257*691f3413SSatya Priya Kakitapalli 		},
1258*691f3413SSatya Priya Kakitapalli 	},
1259*691f3413SSatya Priya Kakitapalli };
1260*691f3413SSatya Priya Kakitapalli 
1261*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_bps_clk = {
1262*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0x7028,
1263*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1264*691f3413SSatya Priya Kakitapalli 	.clkr = {
1265*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0x7028,
1266*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1267*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1268*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_bps_clk",
1269*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1270*691f3413SSatya Priya Kakitapalli 				&cam_cc_bps_clk_src.clkr.hw,
1271*691f3413SSatya Priya Kakitapalli 			},
1272*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1273*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1274*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1275*691f3413SSatya Priya Kakitapalli 		},
1276*691f3413SSatya Priya Kakitapalli 	},
1277*691f3413SSatya Priya Kakitapalli };
1278*691f3413SSatya Priya Kakitapalli 
1279*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_camnoc_axi_clk = {
1280*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xc18c,
1281*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1282*691f3413SSatya Priya Kakitapalli 	.clkr = {
1283*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xc18c,
1284*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1285*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1286*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_camnoc_axi_clk",
1287*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1288*691f3413SSatya Priya Kakitapalli 				&cam_cc_camnoc_axi_clk_src.clkr.hw,
1289*691f3413SSatya Priya Kakitapalli 			},
1290*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1291*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1292*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1293*691f3413SSatya Priya Kakitapalli 		},
1294*691f3413SSatya Priya Kakitapalli 	},
1295*691f3413SSatya Priya Kakitapalli };
1296*691f3413SSatya Priya Kakitapalli 
1297*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_camnoc_dcd_xo_clk = {
1298*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xc194,
1299*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1300*691f3413SSatya Priya Kakitapalli 	.clkr = {
1301*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xc194,
1302*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1303*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1304*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_camnoc_dcd_xo_clk",
1305*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1306*691f3413SSatya Priya Kakitapalli 				&cam_cc_xo_clk_src.clkr.hw,
1307*691f3413SSatya Priya Kakitapalli 			},
1308*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1309*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1310*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1311*691f3413SSatya Priya Kakitapalli 		},
1312*691f3413SSatya Priya Kakitapalli 	},
1313*691f3413SSatya Priya Kakitapalli };
1314*691f3413SSatya Priya Kakitapalli 
1315*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_cci_0_clk = {
1316*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xc120,
1317*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1318*691f3413SSatya Priya Kakitapalli 	.clkr = {
1319*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xc120,
1320*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1321*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1322*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_cci_0_clk",
1323*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1324*691f3413SSatya Priya Kakitapalli 				&cam_cc_cci_0_clk_src.clkr.hw,
1325*691f3413SSatya Priya Kakitapalli 			},
1326*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1327*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1328*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1329*691f3413SSatya Priya Kakitapalli 		},
1330*691f3413SSatya Priya Kakitapalli 	},
1331*691f3413SSatya Priya Kakitapalli };
1332*691f3413SSatya Priya Kakitapalli 
1333*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_cci_1_clk = {
1334*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xc13c,
1335*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1336*691f3413SSatya Priya Kakitapalli 	.clkr = {
1337*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xc13c,
1338*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1339*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1340*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_cci_1_clk",
1341*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1342*691f3413SSatya Priya Kakitapalli 				&cam_cc_cci_1_clk_src.clkr.hw,
1343*691f3413SSatya Priya Kakitapalli 			},
1344*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1345*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1346*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1347*691f3413SSatya Priya Kakitapalli 		},
1348*691f3413SSatya Priya Kakitapalli 	},
1349*691f3413SSatya Priya Kakitapalli };
1350*691f3413SSatya Priya Kakitapalli 
1351*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_cci_2_clk = {
1352*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xc21c,
1353*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1354*691f3413SSatya Priya Kakitapalli 	.clkr = {
1355*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xc21c,
1356*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1357*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1358*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_cci_2_clk",
1359*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1360*691f3413SSatya Priya Kakitapalli 				&cam_cc_cci_2_clk_src.clkr.hw,
1361*691f3413SSatya Priya Kakitapalli 			},
1362*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1363*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1364*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1365*691f3413SSatya Priya Kakitapalli 		},
1366*691f3413SSatya Priya Kakitapalli 	},
1367*691f3413SSatya Priya Kakitapalli };
1368*691f3413SSatya Priya Kakitapalli 
1369*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_cci_3_clk = {
1370*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xc238,
1371*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1372*691f3413SSatya Priya Kakitapalli 	.clkr = {
1373*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xc238,
1374*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1375*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1376*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_cci_3_clk",
1377*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1378*691f3413SSatya Priya Kakitapalli 				&cam_cc_cci_3_clk_src.clkr.hw,
1379*691f3413SSatya Priya Kakitapalli 			},
1380*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1381*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1382*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1383*691f3413SSatya Priya Kakitapalli 		},
1384*691f3413SSatya Priya Kakitapalli 	},
1385*691f3413SSatya Priya Kakitapalli };
1386*691f3413SSatya Priya Kakitapalli 
1387*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_core_ahb_clk = {
1388*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xc1c8,
1389*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT_VOTED,
1390*691f3413SSatya Priya Kakitapalli 	.clkr = {
1391*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xc1c8,
1392*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1393*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1394*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_core_ahb_clk",
1395*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1396*691f3413SSatya Priya Kakitapalli 				&cam_cc_slow_ahb_clk_src.clkr.hw,
1397*691f3413SSatya Priya Kakitapalli 			},
1398*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1399*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1400*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1401*691f3413SSatya Priya Kakitapalli 		},
1402*691f3413SSatya Priya Kakitapalli 	},
1403*691f3413SSatya Priya Kakitapalli };
1404*691f3413SSatya Priya Kakitapalli 
1405*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_cpas_ahb_clk = {
1406*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xc168,
1407*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1408*691f3413SSatya Priya Kakitapalli 	.clkr = {
1409*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xc168,
1410*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1411*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1412*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_cpas_ahb_clk",
1413*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1414*691f3413SSatya Priya Kakitapalli 				&cam_cc_slow_ahb_clk_src.clkr.hw,
1415*691f3413SSatya Priya Kakitapalli 			},
1416*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1417*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1418*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1419*691f3413SSatya Priya Kakitapalli 		},
1420*691f3413SSatya Priya Kakitapalli 	},
1421*691f3413SSatya Priya Kakitapalli };
1422*691f3413SSatya Priya Kakitapalli 
1423*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_csi0phytimer_clk = {
1424*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0x601c,
1425*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1426*691f3413SSatya Priya Kakitapalli 	.clkr = {
1427*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0x601c,
1428*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1429*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1430*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_csi0phytimer_clk",
1431*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1432*691f3413SSatya Priya Kakitapalli 				&cam_cc_csi0phytimer_clk_src.clkr.hw,
1433*691f3413SSatya Priya Kakitapalli 			},
1434*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1435*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1436*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1437*691f3413SSatya Priya Kakitapalli 		},
1438*691f3413SSatya Priya Kakitapalli 	},
1439*691f3413SSatya Priya Kakitapalli };
1440*691f3413SSatya Priya Kakitapalli 
1441*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_csi1phytimer_clk = {
1442*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0x6040,
1443*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1444*691f3413SSatya Priya Kakitapalli 	.clkr = {
1445*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0x6040,
1446*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1447*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1448*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_csi1phytimer_clk",
1449*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1450*691f3413SSatya Priya Kakitapalli 				&cam_cc_csi1phytimer_clk_src.clkr.hw,
1451*691f3413SSatya Priya Kakitapalli 			},
1452*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1453*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1454*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1455*691f3413SSatya Priya Kakitapalli 		},
1456*691f3413SSatya Priya Kakitapalli 	},
1457*691f3413SSatya Priya Kakitapalli };
1458*691f3413SSatya Priya Kakitapalli 
1459*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_csi2phytimer_clk = {
1460*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0x6064,
1461*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1462*691f3413SSatya Priya Kakitapalli 	.clkr = {
1463*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0x6064,
1464*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1465*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1466*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_csi2phytimer_clk",
1467*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1468*691f3413SSatya Priya Kakitapalli 				&cam_cc_csi2phytimer_clk_src.clkr.hw,
1469*691f3413SSatya Priya Kakitapalli 			},
1470*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1471*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1472*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1473*691f3413SSatya Priya Kakitapalli 		},
1474*691f3413SSatya Priya Kakitapalli 	},
1475*691f3413SSatya Priya Kakitapalli };
1476*691f3413SSatya Priya Kakitapalli 
1477*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_csi3phytimer_clk = {
1478*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0x6088,
1479*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1480*691f3413SSatya Priya Kakitapalli 	.clkr = {
1481*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0x6088,
1482*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1483*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1484*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_csi3phytimer_clk",
1485*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1486*691f3413SSatya Priya Kakitapalli 				&cam_cc_csi3phytimer_clk_src.clkr.hw,
1487*691f3413SSatya Priya Kakitapalli 			},
1488*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1489*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1490*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1491*691f3413SSatya Priya Kakitapalli 		},
1492*691f3413SSatya Priya Kakitapalli 	},
1493*691f3413SSatya Priya Kakitapalli };
1494*691f3413SSatya Priya Kakitapalli 
1495*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_csiphy0_clk = {
1496*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0x6020,
1497*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1498*691f3413SSatya Priya Kakitapalli 	.clkr = {
1499*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0x6020,
1500*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1501*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1502*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_csiphy0_clk",
1503*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1504*691f3413SSatya Priya Kakitapalli 				&cam_cc_cphy_rx_clk_src.clkr.hw,
1505*691f3413SSatya Priya Kakitapalli 			},
1506*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1507*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1508*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1509*691f3413SSatya Priya Kakitapalli 		},
1510*691f3413SSatya Priya Kakitapalli 	},
1511*691f3413SSatya Priya Kakitapalli };
1512*691f3413SSatya Priya Kakitapalli 
1513*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_csiphy1_clk = {
1514*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0x6044,
1515*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1516*691f3413SSatya Priya Kakitapalli 	.clkr = {
1517*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0x6044,
1518*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1519*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1520*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_csiphy1_clk",
1521*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1522*691f3413SSatya Priya Kakitapalli 				&cam_cc_cphy_rx_clk_src.clkr.hw,
1523*691f3413SSatya Priya Kakitapalli 			},
1524*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1525*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1526*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1527*691f3413SSatya Priya Kakitapalli 		},
1528*691f3413SSatya Priya Kakitapalli 	},
1529*691f3413SSatya Priya Kakitapalli };
1530*691f3413SSatya Priya Kakitapalli 
1531*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_csiphy2_clk = {
1532*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0x6068,
1533*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1534*691f3413SSatya Priya Kakitapalli 	.clkr = {
1535*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0x6068,
1536*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1537*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1538*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_csiphy2_clk",
1539*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1540*691f3413SSatya Priya Kakitapalli 				&cam_cc_cphy_rx_clk_src.clkr.hw,
1541*691f3413SSatya Priya Kakitapalli 			},
1542*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1543*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1544*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1545*691f3413SSatya Priya Kakitapalli 		},
1546*691f3413SSatya Priya Kakitapalli 	},
1547*691f3413SSatya Priya Kakitapalli };
1548*691f3413SSatya Priya Kakitapalli 
1549*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_csiphy3_clk = {
1550*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0x608c,
1551*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1552*691f3413SSatya Priya Kakitapalli 	.clkr = {
1553*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0x608c,
1554*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1555*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1556*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_csiphy3_clk",
1557*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1558*691f3413SSatya Priya Kakitapalli 				&cam_cc_cphy_rx_clk_src.clkr.hw,
1559*691f3413SSatya Priya Kakitapalli 			},
1560*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1561*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1562*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1563*691f3413SSatya Priya Kakitapalli 		},
1564*691f3413SSatya Priya Kakitapalli 	},
1565*691f3413SSatya Priya Kakitapalli };
1566*691f3413SSatya Priya Kakitapalli 
1567*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_fd_core_clk = {
1568*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xc0f8,
1569*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1570*691f3413SSatya Priya Kakitapalli 	.clkr = {
1571*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xc0f8,
1572*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1573*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1574*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_fd_core_clk",
1575*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1576*691f3413SSatya Priya Kakitapalli 				&cam_cc_fd_core_clk_src.clkr.hw,
1577*691f3413SSatya Priya Kakitapalli 			},
1578*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1579*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1580*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1581*691f3413SSatya Priya Kakitapalli 		},
1582*691f3413SSatya Priya Kakitapalli 	},
1583*691f3413SSatya Priya Kakitapalli };
1584*691f3413SSatya Priya Kakitapalli 
1585*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_fd_core_uar_clk = {
1586*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xc100,
1587*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1588*691f3413SSatya Priya Kakitapalli 	.clkr = {
1589*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xc100,
1590*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1591*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1592*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_fd_core_uar_clk",
1593*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1594*691f3413SSatya Priya Kakitapalli 				&cam_cc_fd_core_clk_src.clkr.hw,
1595*691f3413SSatya Priya Kakitapalli 			},
1596*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1597*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1598*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1599*691f3413SSatya Priya Kakitapalli 		},
1600*691f3413SSatya Priya Kakitapalli 	},
1601*691f3413SSatya Priya Kakitapalli };
1602*691f3413SSatya Priya Kakitapalli 
1603*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_icp_ahb_clk = {
1604*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xc0d8,
1605*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1606*691f3413SSatya Priya Kakitapalli 	.clkr = {
1607*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xc0d8,
1608*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1609*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1610*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_icp_ahb_clk",
1611*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1612*691f3413SSatya Priya Kakitapalli 				&cam_cc_slow_ahb_clk_src.clkr.hw,
1613*691f3413SSatya Priya Kakitapalli 			},
1614*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1615*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1616*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1617*691f3413SSatya Priya Kakitapalli 		},
1618*691f3413SSatya Priya Kakitapalli 	},
1619*691f3413SSatya Priya Kakitapalli };
1620*691f3413SSatya Priya Kakitapalli 
1621*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_icp_clk = {
1622*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xc0d0,
1623*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1624*691f3413SSatya Priya Kakitapalli 	.clkr = {
1625*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xc0d0,
1626*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1627*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1628*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_icp_clk",
1629*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1630*691f3413SSatya Priya Kakitapalli 				&cam_cc_icp_clk_src.clkr.hw,
1631*691f3413SSatya Priya Kakitapalli 			},
1632*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1633*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1634*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1635*691f3413SSatya Priya Kakitapalli 		},
1636*691f3413SSatya Priya Kakitapalli 	},
1637*691f3413SSatya Priya Kakitapalli };
1638*691f3413SSatya Priya Kakitapalli 
1639*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_0_axi_clk = {
1640*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xa080,
1641*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1642*691f3413SSatya Priya Kakitapalli 	.clkr = {
1643*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xa080,
1644*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1645*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1646*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ife_0_axi_clk",
1647*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1648*691f3413SSatya Priya Kakitapalli 				&cam_cc_camnoc_axi_clk_src.clkr.hw,
1649*691f3413SSatya Priya Kakitapalli 			},
1650*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1651*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1652*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1653*691f3413SSatya Priya Kakitapalli 		},
1654*691f3413SSatya Priya Kakitapalli 	},
1655*691f3413SSatya Priya Kakitapalli };
1656*691f3413SSatya Priya Kakitapalli 
1657*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_0_clk = {
1658*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xa028,
1659*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1660*691f3413SSatya Priya Kakitapalli 	.clkr = {
1661*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xa028,
1662*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1663*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1664*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ife_0_clk",
1665*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1666*691f3413SSatya Priya Kakitapalli 				&cam_cc_ife_0_clk_src.clkr.hw,
1667*691f3413SSatya Priya Kakitapalli 			},
1668*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1669*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1670*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1671*691f3413SSatya Priya Kakitapalli 		},
1672*691f3413SSatya Priya Kakitapalli 	},
1673*691f3413SSatya Priya Kakitapalli };
1674*691f3413SSatya Priya Kakitapalli 
1675*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_0_cphy_rx_clk = {
1676*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xa07c,
1677*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1678*691f3413SSatya Priya Kakitapalli 	.clkr = {
1679*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xa07c,
1680*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1681*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1682*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ife_0_cphy_rx_clk",
1683*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1684*691f3413SSatya Priya Kakitapalli 				&cam_cc_cphy_rx_clk_src.clkr.hw,
1685*691f3413SSatya Priya Kakitapalli 			},
1686*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1687*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1688*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1689*691f3413SSatya Priya Kakitapalli 		},
1690*691f3413SSatya Priya Kakitapalli 	},
1691*691f3413SSatya Priya Kakitapalli };
1692*691f3413SSatya Priya Kakitapalli 
1693*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_0_csid_clk = {
1694*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xa054,
1695*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1696*691f3413SSatya Priya Kakitapalli 	.clkr = {
1697*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xa054,
1698*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1699*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1700*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ife_0_csid_clk",
1701*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1702*691f3413SSatya Priya Kakitapalli 				&cam_cc_ife_0_csid_clk_src.clkr.hw,
1703*691f3413SSatya Priya Kakitapalli 			},
1704*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1705*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1706*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1707*691f3413SSatya Priya Kakitapalli 		},
1708*691f3413SSatya Priya Kakitapalli 	},
1709*691f3413SSatya Priya Kakitapalli };
1710*691f3413SSatya Priya Kakitapalli 
1711*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_0_dsp_clk = {
1712*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xa038,
1713*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1714*691f3413SSatya Priya Kakitapalli 	.clkr = {
1715*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xa038,
1716*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1717*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1718*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ife_0_dsp_clk",
1719*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1720*691f3413SSatya Priya Kakitapalli 				&cam_cc_ife_0_clk_src.clkr.hw,
1721*691f3413SSatya Priya Kakitapalli 			},
1722*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1723*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1724*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1725*691f3413SSatya Priya Kakitapalli 		},
1726*691f3413SSatya Priya Kakitapalli 	},
1727*691f3413SSatya Priya Kakitapalli };
1728*691f3413SSatya Priya Kakitapalli 
1729*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_1_axi_clk = {
1730*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xb058,
1731*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1732*691f3413SSatya Priya Kakitapalli 	.clkr = {
1733*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xb058,
1734*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1735*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1736*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ife_1_axi_clk",
1737*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1738*691f3413SSatya Priya Kakitapalli 				&cam_cc_camnoc_axi_clk_src.clkr.hw,
1739*691f3413SSatya Priya Kakitapalli 			},
1740*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1741*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1742*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1743*691f3413SSatya Priya Kakitapalli 		},
1744*691f3413SSatya Priya Kakitapalli 	},
1745*691f3413SSatya Priya Kakitapalli };
1746*691f3413SSatya Priya Kakitapalli 
1747*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_1_clk = {
1748*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xb028,
1749*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1750*691f3413SSatya Priya Kakitapalli 	.clkr = {
1751*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xb028,
1752*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1753*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1754*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ife_1_clk",
1755*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1756*691f3413SSatya Priya Kakitapalli 				&cam_cc_ife_1_clk_src.clkr.hw,
1757*691f3413SSatya Priya Kakitapalli 			},
1758*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1759*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1760*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1761*691f3413SSatya Priya Kakitapalli 		},
1762*691f3413SSatya Priya Kakitapalli 	},
1763*691f3413SSatya Priya Kakitapalli };
1764*691f3413SSatya Priya Kakitapalli 
1765*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_1_cphy_rx_clk = {
1766*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xb054,
1767*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1768*691f3413SSatya Priya Kakitapalli 	.clkr = {
1769*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xb054,
1770*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1771*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1772*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ife_1_cphy_rx_clk",
1773*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1774*691f3413SSatya Priya Kakitapalli 				&cam_cc_cphy_rx_clk_src.clkr.hw,
1775*691f3413SSatya Priya Kakitapalli 			},
1776*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1777*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1778*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1779*691f3413SSatya Priya Kakitapalli 		},
1780*691f3413SSatya Priya Kakitapalli 	},
1781*691f3413SSatya Priya Kakitapalli };
1782*691f3413SSatya Priya Kakitapalli 
1783*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_1_csid_clk = {
1784*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xb04c,
1785*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1786*691f3413SSatya Priya Kakitapalli 	.clkr = {
1787*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xb04c,
1788*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1789*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1790*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ife_1_csid_clk",
1791*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1792*691f3413SSatya Priya Kakitapalli 				&cam_cc_ife_1_csid_clk_src.clkr.hw,
1793*691f3413SSatya Priya Kakitapalli 			},
1794*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1795*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1796*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1797*691f3413SSatya Priya Kakitapalli 		},
1798*691f3413SSatya Priya Kakitapalli 	},
1799*691f3413SSatya Priya Kakitapalli };
1800*691f3413SSatya Priya Kakitapalli 
1801*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_1_dsp_clk = {
1802*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xb030,
1803*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1804*691f3413SSatya Priya Kakitapalli 	.clkr = {
1805*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xb030,
1806*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1807*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1808*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ife_1_dsp_clk",
1809*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1810*691f3413SSatya Priya Kakitapalli 				&cam_cc_ife_1_clk_src.clkr.hw,
1811*691f3413SSatya Priya Kakitapalli 			},
1812*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1813*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1814*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1815*691f3413SSatya Priya Kakitapalli 		},
1816*691f3413SSatya Priya Kakitapalli 	},
1817*691f3413SSatya Priya Kakitapalli };
1818*691f3413SSatya Priya Kakitapalli 
1819*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_2_axi_clk = {
1820*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xf068,
1821*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1822*691f3413SSatya Priya Kakitapalli 	.clkr = {
1823*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xf068,
1824*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1825*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1826*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ife_2_axi_clk",
1827*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1828*691f3413SSatya Priya Kakitapalli 				&cam_cc_camnoc_axi_clk_src.clkr.hw,
1829*691f3413SSatya Priya Kakitapalli 			},
1830*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1831*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1832*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1833*691f3413SSatya Priya Kakitapalli 		},
1834*691f3413SSatya Priya Kakitapalli 	},
1835*691f3413SSatya Priya Kakitapalli };
1836*691f3413SSatya Priya Kakitapalli 
1837*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_2_clk = {
1838*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xf028,
1839*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1840*691f3413SSatya Priya Kakitapalli 	.clkr = {
1841*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xf028,
1842*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1843*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1844*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ife_2_clk",
1845*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1846*691f3413SSatya Priya Kakitapalli 				&cam_cc_ife_2_clk_src.clkr.hw,
1847*691f3413SSatya Priya Kakitapalli 			},
1848*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1849*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1850*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1851*691f3413SSatya Priya Kakitapalli 		},
1852*691f3413SSatya Priya Kakitapalli 	},
1853*691f3413SSatya Priya Kakitapalli };
1854*691f3413SSatya Priya Kakitapalli 
1855*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_2_cphy_rx_clk = {
1856*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xf064,
1857*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1858*691f3413SSatya Priya Kakitapalli 	.clkr = {
1859*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xf064,
1860*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1861*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1862*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ife_2_cphy_rx_clk",
1863*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1864*691f3413SSatya Priya Kakitapalli 				&cam_cc_cphy_rx_clk_src.clkr.hw,
1865*691f3413SSatya Priya Kakitapalli 			},
1866*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1867*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1868*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1869*691f3413SSatya Priya Kakitapalli 		},
1870*691f3413SSatya Priya Kakitapalli 	},
1871*691f3413SSatya Priya Kakitapalli };
1872*691f3413SSatya Priya Kakitapalli 
1873*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_2_csid_clk = {
1874*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xf054,
1875*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1876*691f3413SSatya Priya Kakitapalli 	.clkr = {
1877*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xf054,
1878*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1879*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1880*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ife_2_csid_clk",
1881*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1882*691f3413SSatya Priya Kakitapalli 				&cam_cc_ife_2_csid_clk_src.clkr.hw,
1883*691f3413SSatya Priya Kakitapalli 			},
1884*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1885*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1886*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1887*691f3413SSatya Priya Kakitapalli 		},
1888*691f3413SSatya Priya Kakitapalli 	},
1889*691f3413SSatya Priya Kakitapalli };
1890*691f3413SSatya Priya Kakitapalli 
1891*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_2_dsp_clk = {
1892*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xf038,
1893*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1894*691f3413SSatya Priya Kakitapalli 	.clkr = {
1895*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xf038,
1896*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1897*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1898*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ife_2_dsp_clk",
1899*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1900*691f3413SSatya Priya Kakitapalli 				&cam_cc_ife_2_clk_src.clkr.hw,
1901*691f3413SSatya Priya Kakitapalli 			},
1902*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1903*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1904*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1905*691f3413SSatya Priya Kakitapalli 		},
1906*691f3413SSatya Priya Kakitapalli 	},
1907*691f3413SSatya Priya Kakitapalli };
1908*691f3413SSatya Priya Kakitapalli 
1909*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_3_axi_clk = {
1910*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xf0d4,
1911*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1912*691f3413SSatya Priya Kakitapalli 	.clkr = {
1913*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xf0d4,
1914*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1915*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1916*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ife_3_axi_clk",
1917*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1918*691f3413SSatya Priya Kakitapalli 				&cam_cc_camnoc_axi_clk_src.clkr.hw,
1919*691f3413SSatya Priya Kakitapalli 			},
1920*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1921*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1922*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1923*691f3413SSatya Priya Kakitapalli 		},
1924*691f3413SSatya Priya Kakitapalli 	},
1925*691f3413SSatya Priya Kakitapalli };
1926*691f3413SSatya Priya Kakitapalli 
1927*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_3_clk = {
1928*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xf094,
1929*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1930*691f3413SSatya Priya Kakitapalli 	.clkr = {
1931*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xf094,
1932*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1933*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1934*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ife_3_clk",
1935*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1936*691f3413SSatya Priya Kakitapalli 				&cam_cc_ife_3_clk_src.clkr.hw,
1937*691f3413SSatya Priya Kakitapalli 			},
1938*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1939*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1940*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1941*691f3413SSatya Priya Kakitapalli 		},
1942*691f3413SSatya Priya Kakitapalli 	},
1943*691f3413SSatya Priya Kakitapalli };
1944*691f3413SSatya Priya Kakitapalli 
1945*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_3_cphy_rx_clk = {
1946*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xf0d0,
1947*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1948*691f3413SSatya Priya Kakitapalli 	.clkr = {
1949*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xf0d0,
1950*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1951*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1952*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ife_3_cphy_rx_clk",
1953*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1954*691f3413SSatya Priya Kakitapalli 				&cam_cc_cphy_rx_clk_src.clkr.hw,
1955*691f3413SSatya Priya Kakitapalli 			},
1956*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1957*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1958*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1959*691f3413SSatya Priya Kakitapalli 		},
1960*691f3413SSatya Priya Kakitapalli 	},
1961*691f3413SSatya Priya Kakitapalli };
1962*691f3413SSatya Priya Kakitapalli 
1963*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_3_csid_clk = {
1964*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xf0c0,
1965*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1966*691f3413SSatya Priya Kakitapalli 	.clkr = {
1967*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xf0c0,
1968*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1969*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1970*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ife_3_csid_clk",
1971*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1972*691f3413SSatya Priya Kakitapalli 				&cam_cc_ife_3_csid_clk_src.clkr.hw,
1973*691f3413SSatya Priya Kakitapalli 			},
1974*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1975*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1976*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1977*691f3413SSatya Priya Kakitapalli 		},
1978*691f3413SSatya Priya Kakitapalli 	},
1979*691f3413SSatya Priya Kakitapalli };
1980*691f3413SSatya Priya Kakitapalli 
1981*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_3_dsp_clk = {
1982*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xf0a4,
1983*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
1984*691f3413SSatya Priya Kakitapalli 	.clkr = {
1985*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xf0a4,
1986*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
1987*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
1988*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ife_3_dsp_clk",
1989*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
1990*691f3413SSatya Priya Kakitapalli 				&cam_cc_ife_3_clk_src.clkr.hw,
1991*691f3413SSatya Priya Kakitapalli 			},
1992*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
1993*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
1994*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
1995*691f3413SSatya Priya Kakitapalli 		},
1996*691f3413SSatya Priya Kakitapalli 	},
1997*691f3413SSatya Priya Kakitapalli };
1998*691f3413SSatya Priya Kakitapalli 
1999*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_lite_0_clk = {
2000*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xc01c,
2001*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
2002*691f3413SSatya Priya Kakitapalli 	.clkr = {
2003*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xc01c,
2004*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
2005*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
2006*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ife_lite_0_clk",
2007*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
2008*691f3413SSatya Priya Kakitapalli 				&cam_cc_ife_lite_0_clk_src.clkr.hw,
2009*691f3413SSatya Priya Kakitapalli 			},
2010*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
2011*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
2012*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
2013*691f3413SSatya Priya Kakitapalli 		},
2014*691f3413SSatya Priya Kakitapalli 	},
2015*691f3413SSatya Priya Kakitapalli };
2016*691f3413SSatya Priya Kakitapalli 
2017*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_lite_0_cphy_rx_clk = {
2018*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xc040,
2019*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
2020*691f3413SSatya Priya Kakitapalli 	.clkr = {
2021*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xc040,
2022*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
2023*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
2024*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ife_lite_0_cphy_rx_clk",
2025*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
2026*691f3413SSatya Priya Kakitapalli 				&cam_cc_cphy_rx_clk_src.clkr.hw,
2027*691f3413SSatya Priya Kakitapalli 			},
2028*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
2029*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
2030*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
2031*691f3413SSatya Priya Kakitapalli 		},
2032*691f3413SSatya Priya Kakitapalli 	},
2033*691f3413SSatya Priya Kakitapalli };
2034*691f3413SSatya Priya Kakitapalli 
2035*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_lite_0_csid_clk = {
2036*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xc038,
2037*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
2038*691f3413SSatya Priya Kakitapalli 	.clkr = {
2039*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xc038,
2040*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
2041*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
2042*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ife_lite_0_csid_clk",
2043*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
2044*691f3413SSatya Priya Kakitapalli 				&cam_cc_ife_lite_0_csid_clk_src.clkr.hw,
2045*691f3413SSatya Priya Kakitapalli 			},
2046*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
2047*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
2048*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
2049*691f3413SSatya Priya Kakitapalli 		},
2050*691f3413SSatya Priya Kakitapalli 	},
2051*691f3413SSatya Priya Kakitapalli };
2052*691f3413SSatya Priya Kakitapalli 
2053*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_lite_1_clk = {
2054*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xc060,
2055*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
2056*691f3413SSatya Priya Kakitapalli 	.clkr = {
2057*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xc060,
2058*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
2059*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
2060*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ife_lite_1_clk",
2061*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
2062*691f3413SSatya Priya Kakitapalli 				&cam_cc_ife_lite_1_clk_src.clkr.hw,
2063*691f3413SSatya Priya Kakitapalli 			},
2064*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
2065*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
2066*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
2067*691f3413SSatya Priya Kakitapalli 		},
2068*691f3413SSatya Priya Kakitapalli 	},
2069*691f3413SSatya Priya Kakitapalli };
2070*691f3413SSatya Priya Kakitapalli 
2071*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_lite_1_cphy_rx_clk = {
2072*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xc084,
2073*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
2074*691f3413SSatya Priya Kakitapalli 	.clkr = {
2075*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xc084,
2076*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
2077*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
2078*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ife_lite_1_cphy_rx_clk",
2079*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
2080*691f3413SSatya Priya Kakitapalli 				&cam_cc_cphy_rx_clk_src.clkr.hw,
2081*691f3413SSatya Priya Kakitapalli 			},
2082*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
2083*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
2084*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
2085*691f3413SSatya Priya Kakitapalli 		},
2086*691f3413SSatya Priya Kakitapalli 	},
2087*691f3413SSatya Priya Kakitapalli };
2088*691f3413SSatya Priya Kakitapalli 
2089*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_lite_1_csid_clk = {
2090*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xc07c,
2091*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
2092*691f3413SSatya Priya Kakitapalli 	.clkr = {
2093*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xc07c,
2094*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
2095*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
2096*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ife_lite_1_csid_clk",
2097*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
2098*691f3413SSatya Priya Kakitapalli 				&cam_cc_ife_lite_1_csid_clk_src.clkr.hw,
2099*691f3413SSatya Priya Kakitapalli 			},
2100*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
2101*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
2102*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
2103*691f3413SSatya Priya Kakitapalli 		},
2104*691f3413SSatya Priya Kakitapalli 	},
2105*691f3413SSatya Priya Kakitapalli };
2106*691f3413SSatya Priya Kakitapalli 
2107*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_lite_2_clk = {
2108*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xc258,
2109*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
2110*691f3413SSatya Priya Kakitapalli 	.clkr = {
2111*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xc258,
2112*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
2113*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
2114*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ife_lite_2_clk",
2115*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
2116*691f3413SSatya Priya Kakitapalli 				&cam_cc_ife_lite_2_clk_src.clkr.hw,
2117*691f3413SSatya Priya Kakitapalli 			},
2118*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
2119*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
2120*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
2121*691f3413SSatya Priya Kakitapalli 		},
2122*691f3413SSatya Priya Kakitapalli 	},
2123*691f3413SSatya Priya Kakitapalli };
2124*691f3413SSatya Priya Kakitapalli 
2125*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_lite_2_cphy_rx_clk = {
2126*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xc27c,
2127*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
2128*691f3413SSatya Priya Kakitapalli 	.clkr = {
2129*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xc27c,
2130*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
2131*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
2132*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ife_lite_2_cphy_rx_clk",
2133*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
2134*691f3413SSatya Priya Kakitapalli 				&cam_cc_cphy_rx_clk_src.clkr.hw,
2135*691f3413SSatya Priya Kakitapalli 			},
2136*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
2137*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
2138*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
2139*691f3413SSatya Priya Kakitapalli 		},
2140*691f3413SSatya Priya Kakitapalli 	},
2141*691f3413SSatya Priya Kakitapalli };
2142*691f3413SSatya Priya Kakitapalli 
2143*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_lite_2_csid_clk = {
2144*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xc274,
2145*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
2146*691f3413SSatya Priya Kakitapalli 	.clkr = {
2147*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xc274,
2148*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
2149*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
2150*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ife_lite_2_csid_clk",
2151*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
2152*691f3413SSatya Priya Kakitapalli 				&cam_cc_ife_lite_2_csid_clk_src.clkr.hw,
2153*691f3413SSatya Priya Kakitapalli 			},
2154*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
2155*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
2156*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
2157*691f3413SSatya Priya Kakitapalli 		},
2158*691f3413SSatya Priya Kakitapalli 	},
2159*691f3413SSatya Priya Kakitapalli };
2160*691f3413SSatya Priya Kakitapalli 
2161*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_lite_3_clk = {
2162*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xc29c,
2163*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
2164*691f3413SSatya Priya Kakitapalli 	.clkr = {
2165*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xc29c,
2166*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
2167*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
2168*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ife_lite_3_clk",
2169*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
2170*691f3413SSatya Priya Kakitapalli 				&cam_cc_ife_lite_3_clk_src.clkr.hw,
2171*691f3413SSatya Priya Kakitapalli 			},
2172*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
2173*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
2174*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
2175*691f3413SSatya Priya Kakitapalli 		},
2176*691f3413SSatya Priya Kakitapalli 	},
2177*691f3413SSatya Priya Kakitapalli };
2178*691f3413SSatya Priya Kakitapalli 
2179*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_lite_3_cphy_rx_clk = {
2180*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xc2c0,
2181*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
2182*691f3413SSatya Priya Kakitapalli 	.clkr = {
2183*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xc2c0,
2184*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
2185*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
2186*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ife_lite_3_cphy_rx_clk",
2187*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
2188*691f3413SSatya Priya Kakitapalli 				&cam_cc_cphy_rx_clk_src.clkr.hw,
2189*691f3413SSatya Priya Kakitapalli 			},
2190*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
2191*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
2192*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
2193*691f3413SSatya Priya Kakitapalli 		},
2194*691f3413SSatya Priya Kakitapalli 	},
2195*691f3413SSatya Priya Kakitapalli };
2196*691f3413SSatya Priya Kakitapalli 
2197*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_lite_3_csid_clk = {
2198*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xc2b8,
2199*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
2200*691f3413SSatya Priya Kakitapalli 	.clkr = {
2201*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xc2b8,
2202*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
2203*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
2204*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ife_lite_3_csid_clk",
2205*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
2206*691f3413SSatya Priya Kakitapalli 				&cam_cc_ife_lite_3_csid_clk_src.clkr.hw,
2207*691f3413SSatya Priya Kakitapalli 			},
2208*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
2209*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
2210*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
2211*691f3413SSatya Priya Kakitapalli 		},
2212*691f3413SSatya Priya Kakitapalli 	},
2213*691f3413SSatya Priya Kakitapalli };
2214*691f3413SSatya Priya Kakitapalli 
2215*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ipe_0_ahb_clk = {
2216*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0x8040,
2217*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
2218*691f3413SSatya Priya Kakitapalli 	.clkr = {
2219*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0x8040,
2220*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
2221*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
2222*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ipe_0_ahb_clk",
2223*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
2224*691f3413SSatya Priya Kakitapalli 				&cam_cc_slow_ahb_clk_src.clkr.hw,
2225*691f3413SSatya Priya Kakitapalli 			},
2226*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
2227*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
2228*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
2229*691f3413SSatya Priya Kakitapalli 		},
2230*691f3413SSatya Priya Kakitapalli 	},
2231*691f3413SSatya Priya Kakitapalli };
2232*691f3413SSatya Priya Kakitapalli 
2233*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ipe_0_areg_clk = {
2234*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0x803c,
2235*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
2236*691f3413SSatya Priya Kakitapalli 	.clkr = {
2237*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0x803c,
2238*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
2239*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
2240*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ipe_0_areg_clk",
2241*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
2242*691f3413SSatya Priya Kakitapalli 				&cam_cc_fast_ahb_clk_src.clkr.hw,
2243*691f3413SSatya Priya Kakitapalli 			},
2244*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
2245*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
2246*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
2247*691f3413SSatya Priya Kakitapalli 		},
2248*691f3413SSatya Priya Kakitapalli 	},
2249*691f3413SSatya Priya Kakitapalli };
2250*691f3413SSatya Priya Kakitapalli 
2251*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ipe_0_axi_clk = {
2252*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0x8038,
2253*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
2254*691f3413SSatya Priya Kakitapalli 	.clkr = {
2255*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0x8038,
2256*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
2257*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
2258*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ipe_0_axi_clk",
2259*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
2260*691f3413SSatya Priya Kakitapalli 				&cam_cc_camnoc_axi_clk_src.clkr.hw,
2261*691f3413SSatya Priya Kakitapalli 			},
2262*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
2263*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
2264*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
2265*691f3413SSatya Priya Kakitapalli 		},
2266*691f3413SSatya Priya Kakitapalli 	},
2267*691f3413SSatya Priya Kakitapalli };
2268*691f3413SSatya Priya Kakitapalli 
2269*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ipe_0_clk = {
2270*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0x8028,
2271*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
2272*691f3413SSatya Priya Kakitapalli 	.clkr = {
2273*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0x8028,
2274*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
2275*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
2276*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ipe_0_clk",
2277*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
2278*691f3413SSatya Priya Kakitapalli 				&cam_cc_ipe_0_clk_src.clkr.hw,
2279*691f3413SSatya Priya Kakitapalli 			},
2280*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
2281*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
2282*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
2283*691f3413SSatya Priya Kakitapalli 		},
2284*691f3413SSatya Priya Kakitapalli 	},
2285*691f3413SSatya Priya Kakitapalli };
2286*691f3413SSatya Priya Kakitapalli 
2287*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ipe_1_ahb_clk = {
2288*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0x9028,
2289*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
2290*691f3413SSatya Priya Kakitapalli 	.clkr = {
2291*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0x9028,
2292*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
2293*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
2294*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ipe_1_ahb_clk",
2295*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
2296*691f3413SSatya Priya Kakitapalli 				&cam_cc_slow_ahb_clk_src.clkr.hw,
2297*691f3413SSatya Priya Kakitapalli 			},
2298*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
2299*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
2300*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
2301*691f3413SSatya Priya Kakitapalli 		},
2302*691f3413SSatya Priya Kakitapalli 	},
2303*691f3413SSatya Priya Kakitapalli };
2304*691f3413SSatya Priya Kakitapalli 
2305*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ipe_1_areg_clk = {
2306*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0x9024,
2307*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
2308*691f3413SSatya Priya Kakitapalli 	.clkr = {
2309*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0x9024,
2310*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
2311*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
2312*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ipe_1_areg_clk",
2313*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
2314*691f3413SSatya Priya Kakitapalli 				&cam_cc_fast_ahb_clk_src.clkr.hw,
2315*691f3413SSatya Priya Kakitapalli 			},
2316*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
2317*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
2318*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
2319*691f3413SSatya Priya Kakitapalli 		},
2320*691f3413SSatya Priya Kakitapalli 	},
2321*691f3413SSatya Priya Kakitapalli };
2322*691f3413SSatya Priya Kakitapalli 
2323*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ipe_1_axi_clk = {
2324*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0x9020,
2325*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
2326*691f3413SSatya Priya Kakitapalli 	.clkr = {
2327*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0x9020,
2328*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
2329*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
2330*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ipe_1_axi_clk",
2331*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
2332*691f3413SSatya Priya Kakitapalli 				&cam_cc_camnoc_axi_clk_src.clkr.hw,
2333*691f3413SSatya Priya Kakitapalli 			},
2334*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
2335*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
2336*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
2337*691f3413SSatya Priya Kakitapalli 		},
2338*691f3413SSatya Priya Kakitapalli 	},
2339*691f3413SSatya Priya Kakitapalli };
2340*691f3413SSatya Priya Kakitapalli 
2341*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ipe_1_clk = {
2342*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0x9010,
2343*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
2344*691f3413SSatya Priya Kakitapalli 	.clkr = {
2345*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0x9010,
2346*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
2347*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
2348*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_ipe_1_clk",
2349*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
2350*691f3413SSatya Priya Kakitapalli 				&cam_cc_ipe_0_clk_src.clkr.hw,
2351*691f3413SSatya Priya Kakitapalli 			},
2352*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
2353*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
2354*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
2355*691f3413SSatya Priya Kakitapalli 		},
2356*691f3413SSatya Priya Kakitapalli 	},
2357*691f3413SSatya Priya Kakitapalli };
2358*691f3413SSatya Priya Kakitapalli 
2359*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_jpeg_clk = {
2360*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xc0a4,
2361*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
2362*691f3413SSatya Priya Kakitapalli 	.clkr = {
2363*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xc0a4,
2364*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
2365*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
2366*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_jpeg_clk",
2367*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
2368*691f3413SSatya Priya Kakitapalli 				&cam_cc_jpeg_clk_src.clkr.hw,
2369*691f3413SSatya Priya Kakitapalli 			},
2370*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
2371*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
2372*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
2373*691f3413SSatya Priya Kakitapalli 		},
2374*691f3413SSatya Priya Kakitapalli 	},
2375*691f3413SSatya Priya Kakitapalli };
2376*691f3413SSatya Priya Kakitapalli 
2377*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_lrme_clk = {
2378*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0xc15c,
2379*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
2380*691f3413SSatya Priya Kakitapalli 	.clkr = {
2381*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0xc15c,
2382*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
2383*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
2384*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_lrme_clk",
2385*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
2386*691f3413SSatya Priya Kakitapalli 				&cam_cc_lrme_clk_src.clkr.hw,
2387*691f3413SSatya Priya Kakitapalli 			},
2388*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
2389*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
2390*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
2391*691f3413SSatya Priya Kakitapalli 		},
2392*691f3413SSatya Priya Kakitapalli 	},
2393*691f3413SSatya Priya Kakitapalli };
2394*691f3413SSatya Priya Kakitapalli 
2395*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_mclk0_clk = {
2396*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0x501c,
2397*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
2398*691f3413SSatya Priya Kakitapalli 	.clkr = {
2399*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0x501c,
2400*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
2401*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
2402*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_mclk0_clk",
2403*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
2404*691f3413SSatya Priya Kakitapalli 				&cam_cc_mclk0_clk_src.clkr.hw,
2405*691f3413SSatya Priya Kakitapalli 			},
2406*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
2407*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
2408*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
2409*691f3413SSatya Priya Kakitapalli 		},
2410*691f3413SSatya Priya Kakitapalli 	},
2411*691f3413SSatya Priya Kakitapalli };
2412*691f3413SSatya Priya Kakitapalli 
2413*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_mclk1_clk = {
2414*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0x503c,
2415*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
2416*691f3413SSatya Priya Kakitapalli 	.clkr = {
2417*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0x503c,
2418*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
2419*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
2420*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_mclk1_clk",
2421*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
2422*691f3413SSatya Priya Kakitapalli 				&cam_cc_mclk1_clk_src.clkr.hw,
2423*691f3413SSatya Priya Kakitapalli 			},
2424*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
2425*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
2426*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
2427*691f3413SSatya Priya Kakitapalli 		},
2428*691f3413SSatya Priya Kakitapalli 	},
2429*691f3413SSatya Priya Kakitapalli };
2430*691f3413SSatya Priya Kakitapalli 
2431*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_mclk2_clk = {
2432*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0x505c,
2433*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
2434*691f3413SSatya Priya Kakitapalli 	.clkr = {
2435*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0x505c,
2436*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
2437*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
2438*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_mclk2_clk",
2439*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
2440*691f3413SSatya Priya Kakitapalli 				&cam_cc_mclk2_clk_src.clkr.hw,
2441*691f3413SSatya Priya Kakitapalli 			},
2442*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
2443*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
2444*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
2445*691f3413SSatya Priya Kakitapalli 		},
2446*691f3413SSatya Priya Kakitapalli 	},
2447*691f3413SSatya Priya Kakitapalli };
2448*691f3413SSatya Priya Kakitapalli 
2449*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_mclk3_clk = {
2450*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0x507c,
2451*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
2452*691f3413SSatya Priya Kakitapalli 	.clkr = {
2453*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0x507c,
2454*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
2455*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
2456*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_mclk3_clk",
2457*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
2458*691f3413SSatya Priya Kakitapalli 				&cam_cc_mclk3_clk_src.clkr.hw,
2459*691f3413SSatya Priya Kakitapalli 			},
2460*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
2461*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
2462*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
2463*691f3413SSatya Priya Kakitapalli 		},
2464*691f3413SSatya Priya Kakitapalli 	},
2465*691f3413SSatya Priya Kakitapalli };
2466*691f3413SSatya Priya Kakitapalli 
2467*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_mclk4_clk = {
2468*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0x509c,
2469*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
2470*691f3413SSatya Priya Kakitapalli 	.clkr = {
2471*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0x509c,
2472*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
2473*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
2474*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_mclk4_clk",
2475*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
2476*691f3413SSatya Priya Kakitapalli 				&cam_cc_mclk4_clk_src.clkr.hw,
2477*691f3413SSatya Priya Kakitapalli 			},
2478*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
2479*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
2480*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
2481*691f3413SSatya Priya Kakitapalli 		},
2482*691f3413SSatya Priya Kakitapalli 	},
2483*691f3413SSatya Priya Kakitapalli };
2484*691f3413SSatya Priya Kakitapalli 
2485*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_mclk5_clk = {
2486*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0x50bc,
2487*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
2488*691f3413SSatya Priya Kakitapalli 	.clkr = {
2489*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0x50bc,
2490*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
2491*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
2492*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_mclk5_clk",
2493*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
2494*691f3413SSatya Priya Kakitapalli 				&cam_cc_mclk5_clk_src.clkr.hw,
2495*691f3413SSatya Priya Kakitapalli 			},
2496*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
2497*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
2498*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
2499*691f3413SSatya Priya Kakitapalli 		},
2500*691f3413SSatya Priya Kakitapalli 	},
2501*691f3413SSatya Priya Kakitapalli };
2502*691f3413SSatya Priya Kakitapalli 
2503*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_mclk6_clk = {
2504*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0x50dc,
2505*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
2506*691f3413SSatya Priya Kakitapalli 	.clkr = {
2507*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0x50dc,
2508*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
2509*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
2510*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_mclk6_clk",
2511*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
2512*691f3413SSatya Priya Kakitapalli 				&cam_cc_mclk6_clk_src.clkr.hw,
2513*691f3413SSatya Priya Kakitapalli 			},
2514*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
2515*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
2516*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
2517*691f3413SSatya Priya Kakitapalli 		},
2518*691f3413SSatya Priya Kakitapalli 	},
2519*691f3413SSatya Priya Kakitapalli };
2520*691f3413SSatya Priya Kakitapalli 
2521*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_mclk7_clk = {
2522*691f3413SSatya Priya Kakitapalli 	.halt_reg = 0x50fc,
2523*691f3413SSatya Priya Kakitapalli 	.halt_check = BRANCH_HALT,
2524*691f3413SSatya Priya Kakitapalli 	.clkr = {
2525*691f3413SSatya Priya Kakitapalli 		.enable_reg = 0x50fc,
2526*691f3413SSatya Priya Kakitapalli 		.enable_mask = BIT(0),
2527*691f3413SSatya Priya Kakitapalli 		.hw.init = &(const struct clk_init_data) {
2528*691f3413SSatya Priya Kakitapalli 			.name = "cam_cc_mclk7_clk",
2529*691f3413SSatya Priya Kakitapalli 			.parent_hws = (const struct clk_hw*[]) {
2530*691f3413SSatya Priya Kakitapalli 				&cam_cc_mclk7_clk_src.clkr.hw,
2531*691f3413SSatya Priya Kakitapalli 			},
2532*691f3413SSatya Priya Kakitapalli 			.num_parents = 1,
2533*691f3413SSatya Priya Kakitapalli 			.flags = CLK_SET_RATE_PARENT,
2534*691f3413SSatya Priya Kakitapalli 			.ops = &clk_branch2_ops,
2535*691f3413SSatya Priya Kakitapalli 		},
2536*691f3413SSatya Priya Kakitapalli 	},
2537*691f3413SSatya Priya Kakitapalli };
2538*691f3413SSatya Priya Kakitapalli 
2539*691f3413SSatya Priya Kakitapalli static struct gdsc titan_top_gdsc = {
2540*691f3413SSatya Priya Kakitapalli 	.gdscr = 0xc1bc,
2541*691f3413SSatya Priya Kakitapalli 	.en_rest_wait_val = 0x2,
2542*691f3413SSatya Priya Kakitapalli 	.en_few_wait_val = 0x2,
2543*691f3413SSatya Priya Kakitapalli 	.clk_dis_wait_val = 0xf,
2544*691f3413SSatya Priya Kakitapalli 	.pd = {
2545*691f3413SSatya Priya Kakitapalli 		.name = "titan_top_gdsc",
2546*691f3413SSatya Priya Kakitapalli 	},
2547*691f3413SSatya Priya Kakitapalli 	.pwrsts = PWRSTS_OFF_ON,
2548*691f3413SSatya Priya Kakitapalli 	.flags = POLL_CFG_GDSCR,
2549*691f3413SSatya Priya Kakitapalli };
2550*691f3413SSatya Priya Kakitapalli 
2551*691f3413SSatya Priya Kakitapalli static struct gdsc bps_gdsc = {
2552*691f3413SSatya Priya Kakitapalli 	.gdscr = 0x7004,
2553*691f3413SSatya Priya Kakitapalli 	.en_rest_wait_val = 0x2,
2554*691f3413SSatya Priya Kakitapalli 	.en_few_wait_val = 0x2,
2555*691f3413SSatya Priya Kakitapalli 	.clk_dis_wait_val = 0xf,
2556*691f3413SSatya Priya Kakitapalli 	.pd = {
2557*691f3413SSatya Priya Kakitapalli 		.name = "bps_gdsc",
2558*691f3413SSatya Priya Kakitapalli 	},
2559*691f3413SSatya Priya Kakitapalli 	.pwrsts = PWRSTS_OFF_ON,
2560*691f3413SSatya Priya Kakitapalli 	.parent = &titan_top_gdsc.pd,
2561*691f3413SSatya Priya Kakitapalli 	.flags = POLL_CFG_GDSCR,
2562*691f3413SSatya Priya Kakitapalli };
2563*691f3413SSatya Priya Kakitapalli 
2564*691f3413SSatya Priya Kakitapalli static struct gdsc ife_0_gdsc = {
2565*691f3413SSatya Priya Kakitapalli 	.gdscr = 0xa004,
2566*691f3413SSatya Priya Kakitapalli 	.en_rest_wait_val = 0x2,
2567*691f3413SSatya Priya Kakitapalli 	.en_few_wait_val = 0x2,
2568*691f3413SSatya Priya Kakitapalli 	.clk_dis_wait_val = 0xf,
2569*691f3413SSatya Priya Kakitapalli 	.pd = {
2570*691f3413SSatya Priya Kakitapalli 		.name = "ife_0_gdsc",
2571*691f3413SSatya Priya Kakitapalli 	},
2572*691f3413SSatya Priya Kakitapalli 	.pwrsts = PWRSTS_OFF_ON,
2573*691f3413SSatya Priya Kakitapalli 	.parent = &titan_top_gdsc.pd,
2574*691f3413SSatya Priya Kakitapalli 	.flags = POLL_CFG_GDSCR,
2575*691f3413SSatya Priya Kakitapalli };
2576*691f3413SSatya Priya Kakitapalli 
2577*691f3413SSatya Priya Kakitapalli static struct gdsc ife_1_gdsc = {
2578*691f3413SSatya Priya Kakitapalli 	.gdscr = 0xb004,
2579*691f3413SSatya Priya Kakitapalli 	.en_rest_wait_val = 0x2,
2580*691f3413SSatya Priya Kakitapalli 	.en_few_wait_val = 0x2,
2581*691f3413SSatya Priya Kakitapalli 	.clk_dis_wait_val = 0xf,
2582*691f3413SSatya Priya Kakitapalli 	.pd = {
2583*691f3413SSatya Priya Kakitapalli 		.name = "ife_1_gdsc",
2584*691f3413SSatya Priya Kakitapalli 	},
2585*691f3413SSatya Priya Kakitapalli 	.pwrsts = PWRSTS_OFF_ON,
2586*691f3413SSatya Priya Kakitapalli 	.parent = &titan_top_gdsc.pd,
2587*691f3413SSatya Priya Kakitapalli 	.flags = POLL_CFG_GDSCR,
2588*691f3413SSatya Priya Kakitapalli };
2589*691f3413SSatya Priya Kakitapalli 
2590*691f3413SSatya Priya Kakitapalli static struct gdsc ife_2_gdsc = {
2591*691f3413SSatya Priya Kakitapalli 	.gdscr = 0xf004,
2592*691f3413SSatya Priya Kakitapalli 	.en_rest_wait_val = 0x2,
2593*691f3413SSatya Priya Kakitapalli 	.en_few_wait_val = 0x2,
2594*691f3413SSatya Priya Kakitapalli 	.clk_dis_wait_val = 0xf,
2595*691f3413SSatya Priya Kakitapalli 	.pd = {
2596*691f3413SSatya Priya Kakitapalli 		.name = "ife_2_gdsc",
2597*691f3413SSatya Priya Kakitapalli 	},
2598*691f3413SSatya Priya Kakitapalli 	.pwrsts = PWRSTS_OFF_ON,
2599*691f3413SSatya Priya Kakitapalli 	.parent = &titan_top_gdsc.pd,
2600*691f3413SSatya Priya Kakitapalli 	.flags = POLL_CFG_GDSCR,
2601*691f3413SSatya Priya Kakitapalli };
2602*691f3413SSatya Priya Kakitapalli 
2603*691f3413SSatya Priya Kakitapalli static struct gdsc ife_3_gdsc = {
2604*691f3413SSatya Priya Kakitapalli 	.gdscr = 0xf070,
2605*691f3413SSatya Priya Kakitapalli 	.en_rest_wait_val = 0x2,
2606*691f3413SSatya Priya Kakitapalli 	.en_few_wait_val = 0x2,
2607*691f3413SSatya Priya Kakitapalli 	.clk_dis_wait_val = 0xf,
2608*691f3413SSatya Priya Kakitapalli 	.pd = {
2609*691f3413SSatya Priya Kakitapalli 		.name = "ife_3_gdsc",
2610*691f3413SSatya Priya Kakitapalli 	},
2611*691f3413SSatya Priya Kakitapalli 	.pwrsts = PWRSTS_OFF_ON,
2612*691f3413SSatya Priya Kakitapalli 	.parent = &titan_top_gdsc.pd,
2613*691f3413SSatya Priya Kakitapalli 	.flags = POLL_CFG_GDSCR,
2614*691f3413SSatya Priya Kakitapalli };
2615*691f3413SSatya Priya Kakitapalli 
2616*691f3413SSatya Priya Kakitapalli static struct gdsc ipe_0_gdsc = {
2617*691f3413SSatya Priya Kakitapalli 	.gdscr = 0x8004,
2618*691f3413SSatya Priya Kakitapalli 	.en_rest_wait_val = 0x2,
2619*691f3413SSatya Priya Kakitapalli 	.en_few_wait_val = 0x2,
2620*691f3413SSatya Priya Kakitapalli 	.clk_dis_wait_val = 0xf,
2621*691f3413SSatya Priya Kakitapalli 	.pd = {
2622*691f3413SSatya Priya Kakitapalli 		.name = "ipe_0_gdsc",
2623*691f3413SSatya Priya Kakitapalli 	},
2624*691f3413SSatya Priya Kakitapalli 	.pwrsts = PWRSTS_OFF_ON,
2625*691f3413SSatya Priya Kakitapalli 	.parent = &titan_top_gdsc.pd,
2626*691f3413SSatya Priya Kakitapalli 	.flags = POLL_CFG_GDSCR,
2627*691f3413SSatya Priya Kakitapalli };
2628*691f3413SSatya Priya Kakitapalli 
2629*691f3413SSatya Priya Kakitapalli static struct gdsc ipe_1_gdsc = {
2630*691f3413SSatya Priya Kakitapalli 	.gdscr = 0x9004,
2631*691f3413SSatya Priya Kakitapalli 	.en_rest_wait_val = 0x2,
2632*691f3413SSatya Priya Kakitapalli 	.en_few_wait_val = 0x2,
2633*691f3413SSatya Priya Kakitapalli 	.clk_dis_wait_val = 0xf,
2634*691f3413SSatya Priya Kakitapalli 	.pd = {
2635*691f3413SSatya Priya Kakitapalli 		.name = "ipe_1_gdsc",
2636*691f3413SSatya Priya Kakitapalli 	},
2637*691f3413SSatya Priya Kakitapalli 	.pwrsts = PWRSTS_OFF_ON,
2638*691f3413SSatya Priya Kakitapalli 	.parent = &titan_top_gdsc.pd,
2639*691f3413SSatya Priya Kakitapalli 	.flags = POLL_CFG_GDSCR,
2640*691f3413SSatya Priya Kakitapalli };
2641*691f3413SSatya Priya Kakitapalli 
2642*691f3413SSatya Priya Kakitapalli static struct clk_regmap *cam_cc_sc8180x_clocks[] = {
2643*691f3413SSatya Priya Kakitapalli 	[CAM_CC_BPS_AHB_CLK] = &cam_cc_bps_ahb_clk.clkr,
2644*691f3413SSatya Priya Kakitapalli 	[CAM_CC_BPS_AREG_CLK] = &cam_cc_bps_areg_clk.clkr,
2645*691f3413SSatya Priya Kakitapalli 	[CAM_CC_BPS_AXI_CLK] = &cam_cc_bps_axi_clk.clkr,
2646*691f3413SSatya Priya Kakitapalli 	[CAM_CC_BPS_CLK] = &cam_cc_bps_clk.clkr,
2647*691f3413SSatya Priya Kakitapalli 	[CAM_CC_BPS_CLK_SRC] = &cam_cc_bps_clk_src.clkr,
2648*691f3413SSatya Priya Kakitapalli 	[CAM_CC_CAMNOC_AXI_CLK] = &cam_cc_camnoc_axi_clk.clkr,
2649*691f3413SSatya Priya Kakitapalli 	[CAM_CC_CAMNOC_AXI_CLK_SRC] = &cam_cc_camnoc_axi_clk_src.clkr,
2650*691f3413SSatya Priya Kakitapalli 	[CAM_CC_CAMNOC_DCD_XO_CLK] = &cam_cc_camnoc_dcd_xo_clk.clkr,
2651*691f3413SSatya Priya Kakitapalli 	[CAM_CC_CCI_0_CLK] = &cam_cc_cci_0_clk.clkr,
2652*691f3413SSatya Priya Kakitapalli 	[CAM_CC_CCI_0_CLK_SRC] = &cam_cc_cci_0_clk_src.clkr,
2653*691f3413SSatya Priya Kakitapalli 	[CAM_CC_CCI_1_CLK] = &cam_cc_cci_1_clk.clkr,
2654*691f3413SSatya Priya Kakitapalli 	[CAM_CC_CCI_1_CLK_SRC] = &cam_cc_cci_1_clk_src.clkr,
2655*691f3413SSatya Priya Kakitapalli 	[CAM_CC_CCI_2_CLK] = &cam_cc_cci_2_clk.clkr,
2656*691f3413SSatya Priya Kakitapalli 	[CAM_CC_CCI_2_CLK_SRC] = &cam_cc_cci_2_clk_src.clkr,
2657*691f3413SSatya Priya Kakitapalli 	[CAM_CC_CCI_3_CLK] = &cam_cc_cci_3_clk.clkr,
2658*691f3413SSatya Priya Kakitapalli 	[CAM_CC_CCI_3_CLK_SRC] = &cam_cc_cci_3_clk_src.clkr,
2659*691f3413SSatya Priya Kakitapalli 	[CAM_CC_CORE_AHB_CLK] = &cam_cc_core_ahb_clk.clkr,
2660*691f3413SSatya Priya Kakitapalli 	[CAM_CC_CPAS_AHB_CLK] = &cam_cc_cpas_ahb_clk.clkr,
2661*691f3413SSatya Priya Kakitapalli 	[CAM_CC_CPHY_RX_CLK_SRC] = &cam_cc_cphy_rx_clk_src.clkr,
2662*691f3413SSatya Priya Kakitapalli 	[CAM_CC_CSI0PHYTIMER_CLK] = &cam_cc_csi0phytimer_clk.clkr,
2663*691f3413SSatya Priya Kakitapalli 	[CAM_CC_CSI0PHYTIMER_CLK_SRC] = &cam_cc_csi0phytimer_clk_src.clkr,
2664*691f3413SSatya Priya Kakitapalli 	[CAM_CC_CSI1PHYTIMER_CLK] = &cam_cc_csi1phytimer_clk.clkr,
2665*691f3413SSatya Priya Kakitapalli 	[CAM_CC_CSI1PHYTIMER_CLK_SRC] = &cam_cc_csi1phytimer_clk_src.clkr,
2666*691f3413SSatya Priya Kakitapalli 	[CAM_CC_CSI2PHYTIMER_CLK] = &cam_cc_csi2phytimer_clk.clkr,
2667*691f3413SSatya Priya Kakitapalli 	[CAM_CC_CSI2PHYTIMER_CLK_SRC] = &cam_cc_csi2phytimer_clk_src.clkr,
2668*691f3413SSatya Priya Kakitapalli 	[CAM_CC_CSI3PHYTIMER_CLK] = &cam_cc_csi3phytimer_clk.clkr,
2669*691f3413SSatya Priya Kakitapalli 	[CAM_CC_CSI3PHYTIMER_CLK_SRC] = &cam_cc_csi3phytimer_clk_src.clkr,
2670*691f3413SSatya Priya Kakitapalli 	[CAM_CC_CSIPHY0_CLK] = &cam_cc_csiphy0_clk.clkr,
2671*691f3413SSatya Priya Kakitapalli 	[CAM_CC_CSIPHY1_CLK] = &cam_cc_csiphy1_clk.clkr,
2672*691f3413SSatya Priya Kakitapalli 	[CAM_CC_CSIPHY2_CLK] = &cam_cc_csiphy2_clk.clkr,
2673*691f3413SSatya Priya Kakitapalli 	[CAM_CC_CSIPHY3_CLK] = &cam_cc_csiphy3_clk.clkr,
2674*691f3413SSatya Priya Kakitapalli 	[CAM_CC_FAST_AHB_CLK_SRC] = &cam_cc_fast_ahb_clk_src.clkr,
2675*691f3413SSatya Priya Kakitapalli 	[CAM_CC_FD_CORE_CLK] = &cam_cc_fd_core_clk.clkr,
2676*691f3413SSatya Priya Kakitapalli 	[CAM_CC_FD_CORE_CLK_SRC] = &cam_cc_fd_core_clk_src.clkr,
2677*691f3413SSatya Priya Kakitapalli 	[CAM_CC_FD_CORE_UAR_CLK] = &cam_cc_fd_core_uar_clk.clkr,
2678*691f3413SSatya Priya Kakitapalli 	[CAM_CC_ICP_AHB_CLK] = &cam_cc_icp_ahb_clk.clkr,
2679*691f3413SSatya Priya Kakitapalli 	[CAM_CC_ICP_CLK] = &cam_cc_icp_clk.clkr,
2680*691f3413SSatya Priya Kakitapalli 	[CAM_CC_ICP_CLK_SRC] = &cam_cc_icp_clk_src.clkr,
2681*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_0_AXI_CLK] = &cam_cc_ife_0_axi_clk.clkr,
2682*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_0_CLK] = &cam_cc_ife_0_clk.clkr,
2683*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_0_CLK_SRC] = &cam_cc_ife_0_clk_src.clkr,
2684*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_0_CPHY_RX_CLK] = &cam_cc_ife_0_cphy_rx_clk.clkr,
2685*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_0_CSID_CLK] = &cam_cc_ife_0_csid_clk.clkr,
2686*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_0_CSID_CLK_SRC] = &cam_cc_ife_0_csid_clk_src.clkr,
2687*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_0_DSP_CLK] = &cam_cc_ife_0_dsp_clk.clkr,
2688*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_1_AXI_CLK] = &cam_cc_ife_1_axi_clk.clkr,
2689*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_1_CLK] = &cam_cc_ife_1_clk.clkr,
2690*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_1_CLK_SRC] = &cam_cc_ife_1_clk_src.clkr,
2691*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_1_CPHY_RX_CLK] = &cam_cc_ife_1_cphy_rx_clk.clkr,
2692*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_1_CSID_CLK] = &cam_cc_ife_1_csid_clk.clkr,
2693*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_1_CSID_CLK_SRC] = &cam_cc_ife_1_csid_clk_src.clkr,
2694*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_1_DSP_CLK] = &cam_cc_ife_1_dsp_clk.clkr,
2695*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_2_AXI_CLK] = &cam_cc_ife_2_axi_clk.clkr,
2696*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_2_CLK] = &cam_cc_ife_2_clk.clkr,
2697*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_2_CLK_SRC] = &cam_cc_ife_2_clk_src.clkr,
2698*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_2_CPHY_RX_CLK] = &cam_cc_ife_2_cphy_rx_clk.clkr,
2699*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_2_CSID_CLK] = &cam_cc_ife_2_csid_clk.clkr,
2700*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_2_CSID_CLK_SRC] = &cam_cc_ife_2_csid_clk_src.clkr,
2701*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_2_DSP_CLK] = &cam_cc_ife_2_dsp_clk.clkr,
2702*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_3_AXI_CLK] = &cam_cc_ife_3_axi_clk.clkr,
2703*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_3_CLK] = &cam_cc_ife_3_clk.clkr,
2704*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_3_CLK_SRC] = &cam_cc_ife_3_clk_src.clkr,
2705*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_3_CPHY_RX_CLK] = &cam_cc_ife_3_cphy_rx_clk.clkr,
2706*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_3_CSID_CLK] = &cam_cc_ife_3_csid_clk.clkr,
2707*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_3_CSID_CLK_SRC] = &cam_cc_ife_3_csid_clk_src.clkr,
2708*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_3_DSP_CLK] = &cam_cc_ife_3_dsp_clk.clkr,
2709*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_LITE_0_CLK] = &cam_cc_ife_lite_0_clk.clkr,
2710*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_LITE_0_CLK_SRC] = &cam_cc_ife_lite_0_clk_src.clkr,
2711*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_LITE_0_CPHY_RX_CLK] = &cam_cc_ife_lite_0_cphy_rx_clk.clkr,
2712*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_LITE_0_CSID_CLK] = &cam_cc_ife_lite_0_csid_clk.clkr,
2713*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_LITE_0_CSID_CLK_SRC] = &cam_cc_ife_lite_0_csid_clk_src.clkr,
2714*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_LITE_1_CLK] = &cam_cc_ife_lite_1_clk.clkr,
2715*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_LITE_1_CLK_SRC] = &cam_cc_ife_lite_1_clk_src.clkr,
2716*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_LITE_1_CPHY_RX_CLK] = &cam_cc_ife_lite_1_cphy_rx_clk.clkr,
2717*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_LITE_1_CSID_CLK] = &cam_cc_ife_lite_1_csid_clk.clkr,
2718*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_LITE_1_CSID_CLK_SRC] = &cam_cc_ife_lite_1_csid_clk_src.clkr,
2719*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_LITE_2_CLK] = &cam_cc_ife_lite_2_clk.clkr,
2720*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_LITE_2_CLK_SRC] = &cam_cc_ife_lite_2_clk_src.clkr,
2721*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_LITE_2_CPHY_RX_CLK] = &cam_cc_ife_lite_2_cphy_rx_clk.clkr,
2722*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_LITE_2_CSID_CLK] = &cam_cc_ife_lite_2_csid_clk.clkr,
2723*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_LITE_2_CSID_CLK_SRC] = &cam_cc_ife_lite_2_csid_clk_src.clkr,
2724*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_LITE_3_CLK] = &cam_cc_ife_lite_3_clk.clkr,
2725*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_LITE_3_CLK_SRC] = &cam_cc_ife_lite_3_clk_src.clkr,
2726*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_LITE_3_CPHY_RX_CLK] = &cam_cc_ife_lite_3_cphy_rx_clk.clkr,
2727*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_LITE_3_CSID_CLK] = &cam_cc_ife_lite_3_csid_clk.clkr,
2728*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_LITE_3_CSID_CLK_SRC] = &cam_cc_ife_lite_3_csid_clk_src.clkr,
2729*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IPE_0_AHB_CLK] = &cam_cc_ipe_0_ahb_clk.clkr,
2730*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IPE_0_AREG_CLK] = &cam_cc_ipe_0_areg_clk.clkr,
2731*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IPE_0_AXI_CLK] = &cam_cc_ipe_0_axi_clk.clkr,
2732*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IPE_0_CLK] = &cam_cc_ipe_0_clk.clkr,
2733*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IPE_0_CLK_SRC] = &cam_cc_ipe_0_clk_src.clkr,
2734*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IPE_1_AHB_CLK] = &cam_cc_ipe_1_ahb_clk.clkr,
2735*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IPE_1_AREG_CLK] = &cam_cc_ipe_1_areg_clk.clkr,
2736*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IPE_1_AXI_CLK] = &cam_cc_ipe_1_axi_clk.clkr,
2737*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IPE_1_CLK] = &cam_cc_ipe_1_clk.clkr,
2738*691f3413SSatya Priya Kakitapalli 	[CAM_CC_JPEG_CLK] = &cam_cc_jpeg_clk.clkr,
2739*691f3413SSatya Priya Kakitapalli 	[CAM_CC_JPEG_CLK_SRC] = &cam_cc_jpeg_clk_src.clkr,
2740*691f3413SSatya Priya Kakitapalli 	[CAM_CC_LRME_CLK] = &cam_cc_lrme_clk.clkr,
2741*691f3413SSatya Priya Kakitapalli 	[CAM_CC_LRME_CLK_SRC] = &cam_cc_lrme_clk_src.clkr,
2742*691f3413SSatya Priya Kakitapalli 	[CAM_CC_MCLK0_CLK] = &cam_cc_mclk0_clk.clkr,
2743*691f3413SSatya Priya Kakitapalli 	[CAM_CC_MCLK0_CLK_SRC] = &cam_cc_mclk0_clk_src.clkr,
2744*691f3413SSatya Priya Kakitapalli 	[CAM_CC_MCLK1_CLK] = &cam_cc_mclk1_clk.clkr,
2745*691f3413SSatya Priya Kakitapalli 	[CAM_CC_MCLK1_CLK_SRC] = &cam_cc_mclk1_clk_src.clkr,
2746*691f3413SSatya Priya Kakitapalli 	[CAM_CC_MCLK2_CLK] = &cam_cc_mclk2_clk.clkr,
2747*691f3413SSatya Priya Kakitapalli 	[CAM_CC_MCLK2_CLK_SRC] = &cam_cc_mclk2_clk_src.clkr,
2748*691f3413SSatya Priya Kakitapalli 	[CAM_CC_MCLK3_CLK] = &cam_cc_mclk3_clk.clkr,
2749*691f3413SSatya Priya Kakitapalli 	[CAM_CC_MCLK3_CLK_SRC] = &cam_cc_mclk3_clk_src.clkr,
2750*691f3413SSatya Priya Kakitapalli 	[CAM_CC_MCLK4_CLK] = &cam_cc_mclk4_clk.clkr,
2751*691f3413SSatya Priya Kakitapalli 	[CAM_CC_MCLK4_CLK_SRC] = &cam_cc_mclk4_clk_src.clkr,
2752*691f3413SSatya Priya Kakitapalli 	[CAM_CC_MCLK5_CLK] = &cam_cc_mclk5_clk.clkr,
2753*691f3413SSatya Priya Kakitapalli 	[CAM_CC_MCLK5_CLK_SRC] = &cam_cc_mclk5_clk_src.clkr,
2754*691f3413SSatya Priya Kakitapalli 	[CAM_CC_MCLK6_CLK] = &cam_cc_mclk6_clk.clkr,
2755*691f3413SSatya Priya Kakitapalli 	[CAM_CC_MCLK6_CLK_SRC] = &cam_cc_mclk6_clk_src.clkr,
2756*691f3413SSatya Priya Kakitapalli 	[CAM_CC_MCLK7_CLK] = &cam_cc_mclk7_clk.clkr,
2757*691f3413SSatya Priya Kakitapalli 	[CAM_CC_MCLK7_CLK_SRC] = &cam_cc_mclk7_clk_src.clkr,
2758*691f3413SSatya Priya Kakitapalli 	[CAM_CC_PLL0] = &cam_cc_pll0.clkr,
2759*691f3413SSatya Priya Kakitapalli 	[CAM_CC_PLL0_OUT_EVEN] = &cam_cc_pll0_out_even.clkr,
2760*691f3413SSatya Priya Kakitapalli 	[CAM_CC_PLL0_OUT_ODD] = &cam_cc_pll0_out_odd.clkr,
2761*691f3413SSatya Priya Kakitapalli 	[CAM_CC_PLL1] = &cam_cc_pll1.clkr,
2762*691f3413SSatya Priya Kakitapalli 	[CAM_CC_PLL2] = &cam_cc_pll2.clkr,
2763*691f3413SSatya Priya Kakitapalli 	[CAM_CC_PLL2_OUT_MAIN] = &cam_cc_pll2_out_main.clkr,
2764*691f3413SSatya Priya Kakitapalli 	[CAM_CC_PLL3] = &cam_cc_pll3.clkr,
2765*691f3413SSatya Priya Kakitapalli 	[CAM_CC_PLL4] = &cam_cc_pll4.clkr,
2766*691f3413SSatya Priya Kakitapalli 	[CAM_CC_PLL5] = &cam_cc_pll5.clkr,
2767*691f3413SSatya Priya Kakitapalli 	[CAM_CC_PLL6] = &cam_cc_pll6.clkr,
2768*691f3413SSatya Priya Kakitapalli 	[CAM_CC_SLOW_AHB_CLK_SRC] = &cam_cc_slow_ahb_clk_src.clkr,
2769*691f3413SSatya Priya Kakitapalli 	[CAM_CC_XO_CLK_SRC] = &cam_cc_xo_clk_src.clkr,
2770*691f3413SSatya Priya Kakitapalli };
2771*691f3413SSatya Priya Kakitapalli 
2772*691f3413SSatya Priya Kakitapalli static struct gdsc *cam_cc_sc8180x_gdscs[] = {
2773*691f3413SSatya Priya Kakitapalli 	[BPS_GDSC] = &bps_gdsc,
2774*691f3413SSatya Priya Kakitapalli 	[IFE_0_GDSC] = &ife_0_gdsc,
2775*691f3413SSatya Priya Kakitapalli 	[IFE_1_GDSC] = &ife_1_gdsc,
2776*691f3413SSatya Priya Kakitapalli 	[IFE_2_GDSC] = &ife_2_gdsc,
2777*691f3413SSatya Priya Kakitapalli 	[IFE_3_GDSC] = &ife_3_gdsc,
2778*691f3413SSatya Priya Kakitapalli 	[IPE_0_GDSC] = &ipe_0_gdsc,
2779*691f3413SSatya Priya Kakitapalli 	[IPE_1_GDSC] = &ipe_1_gdsc,
2780*691f3413SSatya Priya Kakitapalli 	[TITAN_TOP_GDSC] = &titan_top_gdsc,
2781*691f3413SSatya Priya Kakitapalli };
2782*691f3413SSatya Priya Kakitapalli 
2783*691f3413SSatya Priya Kakitapalli static const struct qcom_reset_map cam_cc_sc8180x_resets[] = {
2784*691f3413SSatya Priya Kakitapalli 	[CAM_CC_BPS_BCR] = { 0x7000 },
2785*691f3413SSatya Priya Kakitapalli 	[CAM_CC_CAMNOC_BCR] = { 0xc16c },
2786*691f3413SSatya Priya Kakitapalli 	[CAM_CC_CCI_BCR] = { 0xc104 },
2787*691f3413SSatya Priya Kakitapalli 	[CAM_CC_CPAS_BCR] = { 0xc164 },
2788*691f3413SSatya Priya Kakitapalli 	[CAM_CC_CSI0PHY_BCR] = { 0x6000 },
2789*691f3413SSatya Priya Kakitapalli 	[CAM_CC_CSI1PHY_BCR] = { 0x6024 },
2790*691f3413SSatya Priya Kakitapalli 	[CAM_CC_CSI2PHY_BCR] = { 0x6048 },
2791*691f3413SSatya Priya Kakitapalli 	[CAM_CC_CSI3PHY_BCR] = { 0x606c },
2792*691f3413SSatya Priya Kakitapalli 	[CAM_CC_FD_BCR] = { 0xc0dc },
2793*691f3413SSatya Priya Kakitapalli 	[CAM_CC_ICP_BCR] = { 0xc0b4 },
2794*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_0_BCR] = { 0xa000 },
2795*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_1_BCR] = { 0xb000 },
2796*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_2_BCR] = { 0xf000 },
2797*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_3_BCR] = { 0xf06c },
2798*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_LITE_0_BCR] = { 0xc000 },
2799*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_LITE_1_BCR] = { 0xc044 },
2800*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_LITE_2_BCR] = { 0xc23c },
2801*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IFE_LITE_3_BCR] = { 0xc280 },
2802*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IPE_0_BCR] = { 0x8000 },
2803*691f3413SSatya Priya Kakitapalli 	[CAM_CC_IPE_1_BCR] = { 0x9000 },
2804*691f3413SSatya Priya Kakitapalli 	[CAM_CC_JPEG_BCR] = { 0xc088 },
2805*691f3413SSatya Priya Kakitapalli 	[CAM_CC_LRME_BCR] = { 0xc140 },
2806*691f3413SSatya Priya Kakitapalli 	[CAM_CC_MCLK0_BCR] = { 0x5000 },
2807*691f3413SSatya Priya Kakitapalli 	[CAM_CC_MCLK1_BCR] = { 0x5020 },
2808*691f3413SSatya Priya Kakitapalli 	[CAM_CC_MCLK2_BCR] = { 0x5040 },
2809*691f3413SSatya Priya Kakitapalli 	[CAM_CC_MCLK3_BCR] = { 0x5060 },
2810*691f3413SSatya Priya Kakitapalli 	[CAM_CC_MCLK4_BCR] = { 0x5080 },
2811*691f3413SSatya Priya Kakitapalli 	[CAM_CC_MCLK5_BCR] = { 0x50a0 },
2812*691f3413SSatya Priya Kakitapalli 	[CAM_CC_MCLK6_BCR] = { 0x50c0 },
2813*691f3413SSatya Priya Kakitapalli 	[CAM_CC_MCLK7_BCR] = { 0x50e0 },
2814*691f3413SSatya Priya Kakitapalli };
2815*691f3413SSatya Priya Kakitapalli 
2816*691f3413SSatya Priya Kakitapalli static const struct regmap_config cam_cc_sc8180x_regmap_config = {
2817*691f3413SSatya Priya Kakitapalli 	.reg_bits = 32,
2818*691f3413SSatya Priya Kakitapalli 	.reg_stride = 4,
2819*691f3413SSatya Priya Kakitapalli 	.val_bits = 32,
2820*691f3413SSatya Priya Kakitapalli 	.max_register = 0xf0d4,
2821*691f3413SSatya Priya Kakitapalli 	.fast_io = true,
2822*691f3413SSatya Priya Kakitapalli };
2823*691f3413SSatya Priya Kakitapalli 
2824*691f3413SSatya Priya Kakitapalli static const struct qcom_cc_desc cam_cc_sc8180x_desc = {
2825*691f3413SSatya Priya Kakitapalli 	.config = &cam_cc_sc8180x_regmap_config,
2826*691f3413SSatya Priya Kakitapalli 	.clks = cam_cc_sc8180x_clocks,
2827*691f3413SSatya Priya Kakitapalli 	.num_clks = ARRAY_SIZE(cam_cc_sc8180x_clocks),
2828*691f3413SSatya Priya Kakitapalli 	.resets = cam_cc_sc8180x_resets,
2829*691f3413SSatya Priya Kakitapalli 	.num_resets = ARRAY_SIZE(cam_cc_sc8180x_resets),
2830*691f3413SSatya Priya Kakitapalli 	.gdscs = cam_cc_sc8180x_gdscs,
2831*691f3413SSatya Priya Kakitapalli 	.num_gdscs = ARRAY_SIZE(cam_cc_sc8180x_gdscs),
2832*691f3413SSatya Priya Kakitapalli };
2833*691f3413SSatya Priya Kakitapalli 
2834*691f3413SSatya Priya Kakitapalli static const struct of_device_id cam_cc_sc8180x_match_table[] = {
2835*691f3413SSatya Priya Kakitapalli 	{ .compatible = "qcom,sc8180x-camcc" },
2836*691f3413SSatya Priya Kakitapalli 	{ }
2837*691f3413SSatya Priya Kakitapalli };
2838*691f3413SSatya Priya Kakitapalli MODULE_DEVICE_TABLE(of, cam_cc_sc8180x_match_table);
2839*691f3413SSatya Priya Kakitapalli 
2840*691f3413SSatya Priya Kakitapalli static int cam_cc_sc8180x_probe(struct platform_device *pdev)
2841*691f3413SSatya Priya Kakitapalli {
2842*691f3413SSatya Priya Kakitapalli 	struct regmap *regmap;
2843*691f3413SSatya Priya Kakitapalli 	int ret;
2844*691f3413SSatya Priya Kakitapalli 
2845*691f3413SSatya Priya Kakitapalli 	ret = devm_pm_runtime_enable(&pdev->dev);
2846*691f3413SSatya Priya Kakitapalli 	if (ret)
2847*691f3413SSatya Priya Kakitapalli 		return ret;
2848*691f3413SSatya Priya Kakitapalli 
2849*691f3413SSatya Priya Kakitapalli 	ret = pm_runtime_resume_and_get(&pdev->dev);
2850*691f3413SSatya Priya Kakitapalli 	if (ret)
2851*691f3413SSatya Priya Kakitapalli 		return ret;
2852*691f3413SSatya Priya Kakitapalli 
2853*691f3413SSatya Priya Kakitapalli 	regmap = qcom_cc_map(pdev, &cam_cc_sc8180x_desc);
2854*691f3413SSatya Priya Kakitapalli 	if (IS_ERR(regmap)) {
2855*691f3413SSatya Priya Kakitapalli 		pm_runtime_put(&pdev->dev);
2856*691f3413SSatya Priya Kakitapalli 		return PTR_ERR(regmap);
2857*691f3413SSatya Priya Kakitapalli 	}
2858*691f3413SSatya Priya Kakitapalli 
2859*691f3413SSatya Priya Kakitapalli 	clk_trion_pll_configure(&cam_cc_pll0, regmap, &cam_cc_pll0_config);
2860*691f3413SSatya Priya Kakitapalli 	clk_trion_pll_configure(&cam_cc_pll1, regmap, &cam_cc_pll1_config);
2861*691f3413SSatya Priya Kakitapalli 	clk_regera_pll_configure(&cam_cc_pll2, regmap, &cam_cc_pll2_config);
2862*691f3413SSatya Priya Kakitapalli 	clk_trion_pll_configure(&cam_cc_pll3, regmap, &cam_cc_pll3_config);
2863*691f3413SSatya Priya Kakitapalli 	clk_trion_pll_configure(&cam_cc_pll4, regmap, &cam_cc_pll4_config);
2864*691f3413SSatya Priya Kakitapalli 	clk_trion_pll_configure(&cam_cc_pll5, regmap, &cam_cc_pll5_config);
2865*691f3413SSatya Priya Kakitapalli 	clk_trion_pll_configure(&cam_cc_pll6, regmap, &cam_cc_pll6_config);
2866*691f3413SSatya Priya Kakitapalli 
2867*691f3413SSatya Priya Kakitapalli 	/* Keep some clocks always enabled */
2868*691f3413SSatya Priya Kakitapalli 	qcom_branch_set_clk_en(regmap, 0xc1e4); /* CAM_CC_GDSC_CLK */
2869*691f3413SSatya Priya Kakitapalli 	qcom_branch_set_clk_en(regmap, 0xc200); /* CAM_CC_SLEEP_CLK */
2870*691f3413SSatya Priya Kakitapalli 
2871*691f3413SSatya Priya Kakitapalli 	ret = qcom_cc_really_probe(&pdev->dev, &cam_cc_sc8180x_desc, regmap);
2872*691f3413SSatya Priya Kakitapalli 
2873*691f3413SSatya Priya Kakitapalli 	pm_runtime_put(&pdev->dev);
2874*691f3413SSatya Priya Kakitapalli 
2875*691f3413SSatya Priya Kakitapalli 	return ret;
2876*691f3413SSatya Priya Kakitapalli }
2877*691f3413SSatya Priya Kakitapalli 
2878*691f3413SSatya Priya Kakitapalli static struct platform_driver cam_cc_sc8180x_driver = {
2879*691f3413SSatya Priya Kakitapalli 	.probe = cam_cc_sc8180x_probe,
2880*691f3413SSatya Priya Kakitapalli 	.driver = {
2881*691f3413SSatya Priya Kakitapalli 		.name = "camcc-sc8180x",
2882*691f3413SSatya Priya Kakitapalli 		.of_match_table = cam_cc_sc8180x_match_table,
2883*691f3413SSatya Priya Kakitapalli 	},
2884*691f3413SSatya Priya Kakitapalli };
2885*691f3413SSatya Priya Kakitapalli 
2886*691f3413SSatya Priya Kakitapalli module_platform_driver(cam_cc_sc8180x_driver);
2887*691f3413SSatya Priya Kakitapalli 
2888*691f3413SSatya Priya Kakitapalli MODULE_DESCRIPTION("QTI CAMCC SC8180X Driver");
2889*691f3413SSatya Priya Kakitapalli MODULE_LICENSE("GPL");
2890