xref: /openbmc/linux/drivers/clk/qcom/camcc-sdm845.c (revision b4e2d27e)
178412c26SAmit Nischal // SPDX-License-Identifier: GPL-2.0
278412c26SAmit Nischal /*
378412c26SAmit Nischal  * Copyright (c) 2018, The Linux Foundation. All rights reserved.
478412c26SAmit Nischal  */
578412c26SAmit Nischal 
678412c26SAmit Nischal #include <linux/clk-provider.h>
778412c26SAmit Nischal #include <linux/module.h>
878412c26SAmit Nischal #include <linux/platform_device.h>
978412c26SAmit Nischal #include <linux/regmap.h>
1078412c26SAmit Nischal 
1178412c26SAmit Nischal #include <dt-bindings/clock/qcom,camcc-sdm845.h>
1278412c26SAmit Nischal 
1378412c26SAmit Nischal #include "common.h"
1478412c26SAmit Nischal #include "clk-alpha-pll.h"
1578412c26SAmit Nischal #include "clk-branch.h"
1678412c26SAmit Nischal #include "clk-rcg.h"
1778412c26SAmit Nischal #include "clk-regmap.h"
1878412c26SAmit Nischal #include "gdsc.h"
1978412c26SAmit Nischal 
2078412c26SAmit Nischal enum {
2178412c26SAmit Nischal 	P_BI_TCXO,
2278412c26SAmit Nischal 	P_CAM_CC_PLL0_OUT_EVEN,
2378412c26SAmit Nischal 	P_CAM_CC_PLL1_OUT_EVEN,
2478412c26SAmit Nischal 	P_CAM_CC_PLL2_OUT_EVEN,
2578412c26SAmit Nischal 	P_CAM_CC_PLL3_OUT_EVEN,
2678412c26SAmit Nischal };
2778412c26SAmit Nischal 
2878412c26SAmit Nischal static struct clk_alpha_pll cam_cc_pll0 = {
2978412c26SAmit Nischal 	.offset = 0x0,
3078412c26SAmit Nischal 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA],
3178412c26SAmit Nischal 	.clkr = {
3278412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
3378412c26SAmit Nischal 			.name = "cam_cc_pll0",
3478412c26SAmit Nischal 			.parent_names = (const char *[]){ "bi_tcxo" },
3578412c26SAmit Nischal 			.num_parents = 1,
3678412c26SAmit Nischal 			.ops = &clk_alpha_pll_fabia_ops,
3778412c26SAmit Nischal 		},
3878412c26SAmit Nischal 	},
3978412c26SAmit Nischal };
4078412c26SAmit Nischal 
4178412c26SAmit Nischal static const struct clk_div_table post_div_table_fabia_even[] = {
4278412c26SAmit Nischal 	{ 0x0, 1 },
4378412c26SAmit Nischal 	{ 0x1, 2 },
4478412c26SAmit Nischal 	{ }
4578412c26SAmit Nischal };
4678412c26SAmit Nischal 
4778412c26SAmit Nischal static struct clk_alpha_pll_postdiv cam_cc_pll0_out_even = {
4878412c26SAmit Nischal 	.offset = 0x0,
4978412c26SAmit Nischal 	.post_div_shift = 8,
5078412c26SAmit Nischal 	.post_div_table = post_div_table_fabia_even,
5178412c26SAmit Nischal 	.num_post_div = ARRAY_SIZE(post_div_table_fabia_even),
5278412c26SAmit Nischal 	.width = 4,
5378412c26SAmit Nischal 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA],
5478412c26SAmit Nischal 	.clkr.hw.init = &(struct clk_init_data){
5578412c26SAmit Nischal 		.name = "cam_cc_pll0_out_even",
5678412c26SAmit Nischal 		.parent_names = (const char *[]){ "cam_cc_pll0" },
5778412c26SAmit Nischal 		.num_parents = 1,
5878412c26SAmit Nischal 		.ops = &clk_alpha_pll_postdiv_fabia_ops,
5978412c26SAmit Nischal 	},
6078412c26SAmit Nischal };
6178412c26SAmit Nischal 
6278412c26SAmit Nischal static struct clk_alpha_pll cam_cc_pll1 = {
6378412c26SAmit Nischal 	.offset = 0x1000,
6478412c26SAmit Nischal 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA],
6578412c26SAmit Nischal 	.clkr = {
6678412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
6778412c26SAmit Nischal 			.name = "cam_cc_pll1",
6878412c26SAmit Nischal 			.parent_names = (const char *[]){ "bi_tcxo" },
6978412c26SAmit Nischal 			.num_parents = 1,
7078412c26SAmit Nischal 			.ops = &clk_alpha_pll_fabia_ops,
7178412c26SAmit Nischal 		},
7278412c26SAmit Nischal 	},
7378412c26SAmit Nischal };
7478412c26SAmit Nischal 
7578412c26SAmit Nischal static struct clk_alpha_pll_postdiv cam_cc_pll1_out_even = {
7678412c26SAmit Nischal 	.offset = 0x1000,
7778412c26SAmit Nischal 	.post_div_shift = 8,
7878412c26SAmit Nischal 	.post_div_table = post_div_table_fabia_even,
7978412c26SAmit Nischal 	.num_post_div = ARRAY_SIZE(post_div_table_fabia_even),
8078412c26SAmit Nischal 	.width = 4,
8178412c26SAmit Nischal 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA],
8278412c26SAmit Nischal 	.clkr.hw.init = &(struct clk_init_data){
8378412c26SAmit Nischal 		.name = "cam_cc_pll1_out_even",
8478412c26SAmit Nischal 		.parent_names = (const char *[]){ "cam_cc_pll1" },
8578412c26SAmit Nischal 		.num_parents = 1,
8678412c26SAmit Nischal 		.ops = &clk_alpha_pll_postdiv_fabia_ops,
8778412c26SAmit Nischal 	},
8878412c26SAmit Nischal };
8978412c26SAmit Nischal 
9078412c26SAmit Nischal static struct clk_alpha_pll cam_cc_pll2 = {
9178412c26SAmit Nischal 	.offset = 0x2000,
9278412c26SAmit Nischal 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA],
9378412c26SAmit Nischal 	.clkr = {
9478412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
9578412c26SAmit Nischal 			.name = "cam_cc_pll2",
9678412c26SAmit Nischal 			.parent_names = (const char *[]){ "bi_tcxo" },
9778412c26SAmit Nischal 			.num_parents = 1,
9878412c26SAmit Nischal 			.ops = &clk_alpha_pll_fabia_ops,
9978412c26SAmit Nischal 		},
10078412c26SAmit Nischal 	},
10178412c26SAmit Nischal };
10278412c26SAmit Nischal 
10378412c26SAmit Nischal static struct clk_alpha_pll_postdiv cam_cc_pll2_out_even = {
10478412c26SAmit Nischal 	.offset = 0x2000,
10578412c26SAmit Nischal 	.post_div_shift = 8,
10678412c26SAmit Nischal 	.post_div_table = post_div_table_fabia_even,
10778412c26SAmit Nischal 	.num_post_div = ARRAY_SIZE(post_div_table_fabia_even),
10878412c26SAmit Nischal 	.width = 4,
10978412c26SAmit Nischal 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA],
11078412c26SAmit Nischal 	.clkr.hw.init = &(struct clk_init_data){
11178412c26SAmit Nischal 		.name = "cam_cc_pll2_out_even",
11278412c26SAmit Nischal 		.parent_names = (const char *[]){ "cam_cc_pll2" },
11378412c26SAmit Nischal 		.num_parents = 1,
11478412c26SAmit Nischal 		.ops = &clk_alpha_pll_postdiv_fabia_ops,
11578412c26SAmit Nischal 	},
11678412c26SAmit Nischal };
11778412c26SAmit Nischal 
11878412c26SAmit Nischal static struct clk_alpha_pll cam_cc_pll3 = {
11978412c26SAmit Nischal 	.offset = 0x3000,
12078412c26SAmit Nischal 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA],
12178412c26SAmit Nischal 	.clkr = {
12278412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
12378412c26SAmit Nischal 			.name = "cam_cc_pll3",
12478412c26SAmit Nischal 			.parent_names = (const char *[]){ "bi_tcxo" },
12578412c26SAmit Nischal 			.num_parents = 1,
12678412c26SAmit Nischal 			.ops = &clk_alpha_pll_fabia_ops,
12778412c26SAmit Nischal 		},
12878412c26SAmit Nischal 	},
12978412c26SAmit Nischal };
13078412c26SAmit Nischal 
13178412c26SAmit Nischal static struct clk_alpha_pll_postdiv cam_cc_pll3_out_even = {
13278412c26SAmit Nischal 	.offset = 0x3000,
13378412c26SAmit Nischal 	.post_div_shift = 8,
13478412c26SAmit Nischal 	.post_div_table = post_div_table_fabia_even,
13578412c26SAmit Nischal 	.num_post_div = ARRAY_SIZE(post_div_table_fabia_even),
13678412c26SAmit Nischal 	.width = 4,
13778412c26SAmit Nischal 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA],
13878412c26SAmit Nischal 	.clkr.hw.init = &(struct clk_init_data){
13978412c26SAmit Nischal 		.name = "cam_cc_pll3_out_even",
14078412c26SAmit Nischal 		.parent_names = (const char *[]){ "cam_cc_pll3" },
14178412c26SAmit Nischal 		.num_parents = 1,
14278412c26SAmit Nischal 		.ops = &clk_alpha_pll_postdiv_fabia_ops,
14378412c26SAmit Nischal 	},
14478412c26SAmit Nischal };
14578412c26SAmit Nischal 
146*b4e2d27eSDmitry Baryshkov static const struct parent_map cam_cc_parent_map_0[] = {
147*b4e2d27eSDmitry Baryshkov 	{ P_BI_TCXO, 0 },
148*b4e2d27eSDmitry Baryshkov 	{ P_CAM_CC_PLL2_OUT_EVEN, 1 },
149*b4e2d27eSDmitry Baryshkov 	{ P_CAM_CC_PLL1_OUT_EVEN, 2 },
150*b4e2d27eSDmitry Baryshkov 	{ P_CAM_CC_PLL3_OUT_EVEN, 5 },
151*b4e2d27eSDmitry Baryshkov 	{ P_CAM_CC_PLL0_OUT_EVEN, 6 },
152*b4e2d27eSDmitry Baryshkov };
153*b4e2d27eSDmitry Baryshkov 
154*b4e2d27eSDmitry Baryshkov static const char * const cam_cc_parent_names_0[] = {
155*b4e2d27eSDmitry Baryshkov 	"bi_tcxo",
156*b4e2d27eSDmitry Baryshkov 	"cam_cc_pll2_out_even",
157*b4e2d27eSDmitry Baryshkov 	"cam_cc_pll1_out_even",
158*b4e2d27eSDmitry Baryshkov 	"cam_cc_pll3_out_even",
159*b4e2d27eSDmitry Baryshkov 	"cam_cc_pll0_out_even",
160*b4e2d27eSDmitry Baryshkov };
161*b4e2d27eSDmitry Baryshkov 
16278412c26SAmit Nischal static const struct freq_tbl ftbl_cam_cc_bps_clk_src[] = {
16378412c26SAmit Nischal 	F(19200000, P_BI_TCXO, 1, 0, 0),
16478412c26SAmit Nischal 	F(100000000, P_CAM_CC_PLL0_OUT_EVEN, 6, 0, 0),
16578412c26SAmit Nischal 	F(200000000, P_CAM_CC_PLL0_OUT_EVEN, 3, 0, 0),
16678412c26SAmit Nischal 	F(404000000, P_CAM_CC_PLL1_OUT_EVEN, 2, 0, 0),
16778412c26SAmit Nischal 	F(480000000, P_CAM_CC_PLL2_OUT_EVEN, 1, 0, 0),
16878412c26SAmit Nischal 	F(600000000, P_CAM_CC_PLL0_OUT_EVEN, 1, 0, 0),
16978412c26SAmit Nischal 	{ }
17078412c26SAmit Nischal };
17178412c26SAmit Nischal 
17278412c26SAmit Nischal /*
17378412c26SAmit Nischal  * As per HW design, some of the CAMCC RCGs needs to
17478412c26SAmit Nischal  * move to XO clock during their clock disable so using
17578412c26SAmit Nischal  * clk_rcg2_shared_ops for such RCGs. This is required
17678412c26SAmit Nischal  * to power down the camera memories gracefully.
17778412c26SAmit Nischal  * Also, use CLK_SET_RATE_PARENT flag for the RCGs which
17878412c26SAmit Nischal  * have CAM_CC_PLL2_OUT_EVEN PLL as parent in frequency
17978412c26SAmit Nischal  * table and requires reconfiguration of the PLL frequency.
18078412c26SAmit Nischal  */
18178412c26SAmit Nischal static struct clk_rcg2 cam_cc_bps_clk_src = {
18278412c26SAmit Nischal 	.cmd_rcgr = 0x600c,
18378412c26SAmit Nischal 	.mnd_width = 0,
18478412c26SAmit Nischal 	.hid_width = 5,
18578412c26SAmit Nischal 	.parent_map = cam_cc_parent_map_0,
18678412c26SAmit Nischal 	.freq_tbl = ftbl_cam_cc_bps_clk_src,
18778412c26SAmit Nischal 	.clkr.hw.init = &(struct clk_init_data){
18878412c26SAmit Nischal 		.name = "cam_cc_bps_clk_src",
18978412c26SAmit Nischal 		.parent_names = cam_cc_parent_names_0,
190cf4cd3dcSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(cam_cc_parent_names_0),
19178412c26SAmit Nischal 		.flags = CLK_SET_RATE_PARENT,
19278412c26SAmit Nischal 		.ops = &clk_rcg2_shared_ops,
19378412c26SAmit Nischal 	},
19478412c26SAmit Nischal };
19578412c26SAmit Nischal 
19678412c26SAmit Nischal static const struct freq_tbl ftbl_cam_cc_cci_clk_src[] = {
19778412c26SAmit Nischal 	F(19200000, P_BI_TCXO, 1, 0, 0),
19878412c26SAmit Nischal 	F(37500000, P_CAM_CC_PLL0_OUT_EVEN, 16, 0, 0),
19978412c26SAmit Nischal 	F(50000000, P_CAM_CC_PLL0_OUT_EVEN, 12, 0, 0),
20078412c26SAmit Nischal 	F(100000000, P_CAM_CC_PLL0_OUT_EVEN, 6, 0, 0),
20178412c26SAmit Nischal 	{ }
20278412c26SAmit Nischal };
20378412c26SAmit Nischal 
20478412c26SAmit Nischal static struct clk_rcg2 cam_cc_cci_clk_src = {
20578412c26SAmit Nischal 	.cmd_rcgr = 0xb0d8,
20678412c26SAmit Nischal 	.mnd_width = 8,
20778412c26SAmit Nischal 	.hid_width = 5,
20878412c26SAmit Nischal 	.parent_map = cam_cc_parent_map_0,
20978412c26SAmit Nischal 	.freq_tbl = ftbl_cam_cc_cci_clk_src,
21078412c26SAmit Nischal 	.clkr.hw.init = &(struct clk_init_data){
21178412c26SAmit Nischal 		.name = "cam_cc_cci_clk_src",
21278412c26SAmit Nischal 		.parent_names = cam_cc_parent_names_0,
213cf4cd3dcSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(cam_cc_parent_names_0),
21478412c26SAmit Nischal 		.ops = &clk_rcg2_ops,
21578412c26SAmit Nischal 	},
21678412c26SAmit Nischal };
21778412c26SAmit Nischal 
21878412c26SAmit Nischal static const struct freq_tbl ftbl_cam_cc_cphy_rx_clk_src[] = {
21978412c26SAmit Nischal 	F(19200000, P_BI_TCXO, 1, 0, 0),
22078412c26SAmit Nischal 	F(384000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0),
22178412c26SAmit Nischal 	{ }
22278412c26SAmit Nischal };
22378412c26SAmit Nischal 
22478412c26SAmit Nischal static struct clk_rcg2 cam_cc_cphy_rx_clk_src = {
22578412c26SAmit Nischal 	.cmd_rcgr = 0x9060,
22678412c26SAmit Nischal 	.mnd_width = 0,
22778412c26SAmit Nischal 	.hid_width = 5,
22878412c26SAmit Nischal 	.parent_map = cam_cc_parent_map_0,
22978412c26SAmit Nischal 	.freq_tbl = ftbl_cam_cc_cphy_rx_clk_src,
23078412c26SAmit Nischal 	.clkr.hw.init = &(struct clk_init_data){
23178412c26SAmit Nischal 		.name = "cam_cc_cphy_rx_clk_src",
23278412c26SAmit Nischal 		.parent_names = cam_cc_parent_names_0,
233cf4cd3dcSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(cam_cc_parent_names_0),
23478412c26SAmit Nischal 		.ops = &clk_rcg2_ops,
23578412c26SAmit Nischal 	},
23678412c26SAmit Nischal };
23778412c26SAmit Nischal 
23878412c26SAmit Nischal static const struct freq_tbl ftbl_cam_cc_csi0phytimer_clk_src[] = {
23978412c26SAmit Nischal 	F(19200000, P_BI_TCXO, 1, 0, 0),
24078412c26SAmit Nischal 	F(240000000, P_CAM_CC_PLL2_OUT_EVEN, 2, 0, 0),
24178412c26SAmit Nischal 	F(269333333, P_CAM_CC_PLL1_OUT_EVEN, 3, 0, 0),
24278412c26SAmit Nischal 	{ }
24378412c26SAmit Nischal };
24478412c26SAmit Nischal 
24578412c26SAmit Nischal static struct clk_rcg2 cam_cc_csi0phytimer_clk_src = {
24678412c26SAmit Nischal 	.cmd_rcgr = 0x5004,
24778412c26SAmit Nischal 	.mnd_width = 0,
24878412c26SAmit Nischal 	.hid_width = 5,
24978412c26SAmit Nischal 	.parent_map = cam_cc_parent_map_0,
25078412c26SAmit Nischal 	.freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src,
25178412c26SAmit Nischal 	.clkr.hw.init = &(struct clk_init_data){
25278412c26SAmit Nischal 		.name = "cam_cc_csi0phytimer_clk_src",
25378412c26SAmit Nischal 		.parent_names = cam_cc_parent_names_0,
254cf4cd3dcSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(cam_cc_parent_names_0),
25578412c26SAmit Nischal 		.flags = CLK_SET_RATE_PARENT,
25678412c26SAmit Nischal 		.ops = &clk_rcg2_ops,
25778412c26SAmit Nischal 	},
25878412c26SAmit Nischal };
25978412c26SAmit Nischal 
26078412c26SAmit Nischal static struct clk_rcg2 cam_cc_csi1phytimer_clk_src = {
26178412c26SAmit Nischal 	.cmd_rcgr = 0x5028,
26278412c26SAmit Nischal 	.mnd_width = 0,
26378412c26SAmit Nischal 	.hid_width = 5,
26478412c26SAmit Nischal 	.parent_map = cam_cc_parent_map_0,
26578412c26SAmit Nischal 	.freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src,
26678412c26SAmit Nischal 	.clkr.hw.init = &(struct clk_init_data){
26778412c26SAmit Nischal 		.name = "cam_cc_csi1phytimer_clk_src",
26878412c26SAmit Nischal 		.parent_names = cam_cc_parent_names_0,
269cf4cd3dcSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(cam_cc_parent_names_0),
27078412c26SAmit Nischal 		.flags = CLK_SET_RATE_PARENT,
27178412c26SAmit Nischal 		.ops = &clk_rcg2_ops,
27278412c26SAmit Nischal 	},
27378412c26SAmit Nischal };
27478412c26SAmit Nischal 
27578412c26SAmit Nischal static struct clk_rcg2 cam_cc_csi2phytimer_clk_src = {
27678412c26SAmit Nischal 	.cmd_rcgr = 0x504c,
27778412c26SAmit Nischal 	.mnd_width = 0,
27878412c26SAmit Nischal 	.hid_width = 5,
27978412c26SAmit Nischal 	.parent_map = cam_cc_parent_map_0,
28078412c26SAmit Nischal 	.freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src,
28178412c26SAmit Nischal 	.clkr.hw.init = &(struct clk_init_data){
28278412c26SAmit Nischal 		.name = "cam_cc_csi2phytimer_clk_src",
28378412c26SAmit Nischal 		.parent_names = cam_cc_parent_names_0,
284cf4cd3dcSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(cam_cc_parent_names_0),
28578412c26SAmit Nischal 		.flags = CLK_SET_RATE_PARENT,
28678412c26SAmit Nischal 		.ops = &clk_rcg2_ops,
28778412c26SAmit Nischal 	},
28878412c26SAmit Nischal };
28978412c26SAmit Nischal 
29078412c26SAmit Nischal static struct clk_rcg2 cam_cc_csi3phytimer_clk_src = {
29178412c26SAmit Nischal 	.cmd_rcgr = 0x5070,
29278412c26SAmit Nischal 	.mnd_width = 0,
29378412c26SAmit Nischal 	.hid_width = 5,
29478412c26SAmit Nischal 	.parent_map = cam_cc_parent_map_0,
29578412c26SAmit Nischal 	.freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src,
29678412c26SAmit Nischal 	.clkr.hw.init = &(struct clk_init_data){
29778412c26SAmit Nischal 		.name = "cam_cc_csi3phytimer_clk_src",
29878412c26SAmit Nischal 		.parent_names = cam_cc_parent_names_0,
299cf4cd3dcSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(cam_cc_parent_names_0),
30078412c26SAmit Nischal 		.flags = CLK_SET_RATE_PARENT,
30178412c26SAmit Nischal 		.ops = &clk_rcg2_ops,
30278412c26SAmit Nischal 	},
30378412c26SAmit Nischal };
30478412c26SAmit Nischal 
30578412c26SAmit Nischal static const struct freq_tbl ftbl_cam_cc_fast_ahb_clk_src[] = {
30678412c26SAmit Nischal 	F(19200000, P_BI_TCXO, 1, 0, 0),
30778412c26SAmit Nischal 	F(50000000, P_CAM_CC_PLL0_OUT_EVEN, 12, 0, 0),
30878412c26SAmit Nischal 	F(100000000, P_CAM_CC_PLL0_OUT_EVEN, 6, 0, 0),
30978412c26SAmit Nischal 	F(200000000, P_CAM_CC_PLL0_OUT_EVEN, 3, 0, 0),
31078412c26SAmit Nischal 	F(300000000, P_CAM_CC_PLL0_OUT_EVEN, 2, 0, 0),
31178412c26SAmit Nischal 	F(400000000, P_CAM_CC_PLL0_OUT_EVEN, 1.5, 0, 0),
31278412c26SAmit Nischal 	{ }
31378412c26SAmit Nischal };
31478412c26SAmit Nischal 
31578412c26SAmit Nischal static struct clk_rcg2 cam_cc_fast_ahb_clk_src = {
31678412c26SAmit Nischal 	.cmd_rcgr = 0x6038,
31778412c26SAmit Nischal 	.mnd_width = 0,
31878412c26SAmit Nischal 	.hid_width = 5,
31978412c26SAmit Nischal 	.parent_map = cam_cc_parent_map_0,
32078412c26SAmit Nischal 	.freq_tbl = ftbl_cam_cc_fast_ahb_clk_src,
32178412c26SAmit Nischal 	.clkr.hw.init = &(struct clk_init_data){
32278412c26SAmit Nischal 		.name = "cam_cc_fast_ahb_clk_src",
32378412c26SAmit Nischal 		.parent_names = cam_cc_parent_names_0,
324cf4cd3dcSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(cam_cc_parent_names_0),
32578412c26SAmit Nischal 		.ops = &clk_rcg2_ops,
32678412c26SAmit Nischal 	},
32778412c26SAmit Nischal };
32878412c26SAmit Nischal 
32978412c26SAmit Nischal static const struct freq_tbl ftbl_cam_cc_fd_core_clk_src[] = {
33078412c26SAmit Nischal 	F(19200000, P_BI_TCXO, 1, 0, 0),
33178412c26SAmit Nischal 	F(384000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0),
33278412c26SAmit Nischal 	F(400000000, P_CAM_CC_PLL0_OUT_EVEN, 1.5, 0, 0),
33378412c26SAmit Nischal 	F(538666667, P_CAM_CC_PLL1_OUT_EVEN, 1.5, 0, 0),
33478412c26SAmit Nischal 	F(600000000, P_CAM_CC_PLL0_OUT_EVEN, 1, 0, 0),
33578412c26SAmit Nischal 	{ }
33678412c26SAmit Nischal };
33778412c26SAmit Nischal 
33878412c26SAmit Nischal static struct clk_rcg2 cam_cc_fd_core_clk_src = {
33978412c26SAmit Nischal 	.cmd_rcgr = 0xb0b0,
34078412c26SAmit Nischal 	.mnd_width = 0,
34178412c26SAmit Nischal 	.hid_width = 5,
34278412c26SAmit Nischal 	.parent_map = cam_cc_parent_map_0,
34378412c26SAmit Nischal 	.freq_tbl = ftbl_cam_cc_fd_core_clk_src,
34478412c26SAmit Nischal 	.clkr.hw.init = &(struct clk_init_data){
34578412c26SAmit Nischal 		.name = "cam_cc_fd_core_clk_src",
34678412c26SAmit Nischal 		.parent_names = cam_cc_parent_names_0,
347cf4cd3dcSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(cam_cc_parent_names_0),
34878412c26SAmit Nischal 		.ops = &clk_rcg2_shared_ops,
34978412c26SAmit Nischal 	},
35078412c26SAmit Nischal };
35178412c26SAmit Nischal 
35278412c26SAmit Nischal static const struct freq_tbl ftbl_cam_cc_icp_clk_src[] = {
35378412c26SAmit Nischal 	F(19200000, P_BI_TCXO, 1, 0, 0),
35478412c26SAmit Nischal 	F(384000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0),
35578412c26SAmit Nischal 	F(400000000, P_CAM_CC_PLL0_OUT_EVEN, 1.5, 0, 0),
35678412c26SAmit Nischal 	F(538666667, P_CAM_CC_PLL1_OUT_EVEN, 1.5, 0, 0),
35778412c26SAmit Nischal 	F(600000000, P_CAM_CC_PLL0_OUT_EVEN, 1, 0, 0),
35878412c26SAmit Nischal 	{ }
35978412c26SAmit Nischal };
36078412c26SAmit Nischal 
36178412c26SAmit Nischal static struct clk_rcg2 cam_cc_icp_clk_src = {
36278412c26SAmit Nischal 	.cmd_rcgr = 0xb088,
36378412c26SAmit Nischal 	.mnd_width = 0,
36478412c26SAmit Nischal 	.hid_width = 5,
36578412c26SAmit Nischal 	.parent_map = cam_cc_parent_map_0,
36678412c26SAmit Nischal 	.freq_tbl = ftbl_cam_cc_icp_clk_src,
36778412c26SAmit Nischal 	.clkr.hw.init = &(struct clk_init_data){
36878412c26SAmit Nischal 		.name = "cam_cc_icp_clk_src",
36978412c26SAmit Nischal 		.parent_names = cam_cc_parent_names_0,
370cf4cd3dcSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(cam_cc_parent_names_0),
37178412c26SAmit Nischal 		.ops = &clk_rcg2_shared_ops,
37278412c26SAmit Nischal 	},
37378412c26SAmit Nischal };
37478412c26SAmit Nischal 
37578412c26SAmit Nischal static const struct freq_tbl ftbl_cam_cc_ife_0_clk_src[] = {
37678412c26SAmit Nischal 	F(19200000, P_BI_TCXO, 1, 0, 0),
37778412c26SAmit Nischal 	F(100000000, P_CAM_CC_PLL0_OUT_EVEN, 6, 0, 0),
37878412c26SAmit Nischal 	F(320000000, P_CAM_CC_PLL2_OUT_EVEN, 1.5, 0, 0),
37978412c26SAmit Nischal 	F(404000000, P_CAM_CC_PLL1_OUT_EVEN, 2, 0, 0),
38078412c26SAmit Nischal 	F(480000000, P_CAM_CC_PLL2_OUT_EVEN, 1, 0, 0),
38178412c26SAmit Nischal 	F(600000000, P_CAM_CC_PLL0_OUT_EVEN, 1, 0, 0),
38278412c26SAmit Nischal 	{ }
38378412c26SAmit Nischal };
38478412c26SAmit Nischal 
38578412c26SAmit Nischal static struct clk_rcg2 cam_cc_ife_0_clk_src = {
38678412c26SAmit Nischal 	.cmd_rcgr = 0x900c,
38778412c26SAmit Nischal 	.mnd_width = 0,
38878412c26SAmit Nischal 	.hid_width = 5,
38978412c26SAmit Nischal 	.parent_map = cam_cc_parent_map_0,
39078412c26SAmit Nischal 	.freq_tbl = ftbl_cam_cc_ife_0_clk_src,
39178412c26SAmit Nischal 	.clkr.hw.init = &(struct clk_init_data){
39278412c26SAmit Nischal 		.name = "cam_cc_ife_0_clk_src",
39378412c26SAmit Nischal 		.parent_names = cam_cc_parent_names_0,
394cf4cd3dcSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(cam_cc_parent_names_0),
39578412c26SAmit Nischal 		.flags = CLK_SET_RATE_PARENT,
39678412c26SAmit Nischal 		.ops = &clk_rcg2_shared_ops,
39778412c26SAmit Nischal 	},
39878412c26SAmit Nischal };
39978412c26SAmit Nischal 
40078412c26SAmit Nischal static const struct freq_tbl ftbl_cam_cc_ife_0_csid_clk_src[] = {
40178412c26SAmit Nischal 	F(19200000, P_BI_TCXO, 1, 0, 0),
40278412c26SAmit Nischal 	F(75000000, P_CAM_CC_PLL0_OUT_EVEN, 8, 0, 0),
40378412c26SAmit Nischal 	F(384000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0),
40478412c26SAmit Nischal 	F(538666667, P_CAM_CC_PLL1_OUT_EVEN, 1.5, 0, 0),
40578412c26SAmit Nischal 	{ }
40678412c26SAmit Nischal };
40778412c26SAmit Nischal 
40878412c26SAmit Nischal static struct clk_rcg2 cam_cc_ife_0_csid_clk_src = {
40978412c26SAmit Nischal 	.cmd_rcgr = 0x9038,
41078412c26SAmit Nischal 	.mnd_width = 0,
41178412c26SAmit Nischal 	.hid_width = 5,
41278412c26SAmit Nischal 	.parent_map = cam_cc_parent_map_0,
41378412c26SAmit Nischal 	.freq_tbl = ftbl_cam_cc_ife_0_csid_clk_src,
41478412c26SAmit Nischal 	.clkr.hw.init = &(struct clk_init_data){
41578412c26SAmit Nischal 		.name = "cam_cc_ife_0_csid_clk_src",
41678412c26SAmit Nischal 		.parent_names = cam_cc_parent_names_0,
417cf4cd3dcSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(cam_cc_parent_names_0),
41878412c26SAmit Nischal 		.ops = &clk_rcg2_shared_ops,
41978412c26SAmit Nischal 	},
42078412c26SAmit Nischal };
42178412c26SAmit Nischal 
42278412c26SAmit Nischal static struct clk_rcg2 cam_cc_ife_1_clk_src = {
42378412c26SAmit Nischal 	.cmd_rcgr = 0xa00c,
42478412c26SAmit Nischal 	.mnd_width = 0,
42578412c26SAmit Nischal 	.hid_width = 5,
42678412c26SAmit Nischal 	.parent_map = cam_cc_parent_map_0,
42778412c26SAmit Nischal 	.freq_tbl = ftbl_cam_cc_ife_0_clk_src,
42878412c26SAmit Nischal 	.clkr.hw.init = &(struct clk_init_data){
42978412c26SAmit Nischal 		.name = "cam_cc_ife_1_clk_src",
43078412c26SAmit Nischal 		.parent_names = cam_cc_parent_names_0,
431cf4cd3dcSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(cam_cc_parent_names_0),
43278412c26SAmit Nischal 		.flags = CLK_SET_RATE_PARENT,
43378412c26SAmit Nischal 		.ops = &clk_rcg2_shared_ops,
43478412c26SAmit Nischal 	},
43578412c26SAmit Nischal };
43678412c26SAmit Nischal 
43778412c26SAmit Nischal static struct clk_rcg2 cam_cc_ife_1_csid_clk_src = {
43878412c26SAmit Nischal 	.cmd_rcgr = 0xa030,
43978412c26SAmit Nischal 	.mnd_width = 0,
44078412c26SAmit Nischal 	.hid_width = 5,
44178412c26SAmit Nischal 	.parent_map = cam_cc_parent_map_0,
44278412c26SAmit Nischal 	.freq_tbl = ftbl_cam_cc_ife_0_csid_clk_src,
44378412c26SAmit Nischal 	.clkr.hw.init = &(struct clk_init_data){
44478412c26SAmit Nischal 		.name = "cam_cc_ife_1_csid_clk_src",
44578412c26SAmit Nischal 		.parent_names = cam_cc_parent_names_0,
446cf4cd3dcSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(cam_cc_parent_names_0),
44778412c26SAmit Nischal 		.ops = &clk_rcg2_shared_ops,
44878412c26SAmit Nischal 	},
44978412c26SAmit Nischal };
45078412c26SAmit Nischal 
45178412c26SAmit Nischal static struct clk_rcg2 cam_cc_ife_lite_clk_src = {
45278412c26SAmit Nischal 	.cmd_rcgr = 0xb004,
45378412c26SAmit Nischal 	.mnd_width = 0,
45478412c26SAmit Nischal 	.hid_width = 5,
45578412c26SAmit Nischal 	.parent_map = cam_cc_parent_map_0,
45678412c26SAmit Nischal 	.freq_tbl = ftbl_cam_cc_ife_0_clk_src,
45778412c26SAmit Nischal 	.clkr.hw.init = &(struct clk_init_data){
45878412c26SAmit Nischal 		.name = "cam_cc_ife_lite_clk_src",
45978412c26SAmit Nischal 		.parent_names = cam_cc_parent_names_0,
460cf4cd3dcSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(cam_cc_parent_names_0),
46178412c26SAmit Nischal 		.flags = CLK_SET_RATE_PARENT,
46278412c26SAmit Nischal 		.ops = &clk_rcg2_shared_ops,
46378412c26SAmit Nischal 	},
46478412c26SAmit Nischal };
46578412c26SAmit Nischal 
46678412c26SAmit Nischal static struct clk_rcg2 cam_cc_ife_lite_csid_clk_src = {
46778412c26SAmit Nischal 	.cmd_rcgr = 0xb024,
46878412c26SAmit Nischal 	.mnd_width = 0,
46978412c26SAmit Nischal 	.hid_width = 5,
47078412c26SAmit Nischal 	.parent_map = cam_cc_parent_map_0,
47178412c26SAmit Nischal 	.freq_tbl = ftbl_cam_cc_ife_0_csid_clk_src,
47278412c26SAmit Nischal 	.clkr.hw.init = &(struct clk_init_data){
47378412c26SAmit Nischal 		.name = "cam_cc_ife_lite_csid_clk_src",
47478412c26SAmit Nischal 		.parent_names = cam_cc_parent_names_0,
475cf4cd3dcSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(cam_cc_parent_names_0),
47678412c26SAmit Nischal 		.ops = &clk_rcg2_shared_ops,
47778412c26SAmit Nischal 	},
47878412c26SAmit Nischal };
47978412c26SAmit Nischal 
48078412c26SAmit Nischal static const struct freq_tbl ftbl_cam_cc_ipe_0_clk_src[] = {
48178412c26SAmit Nischal 	F(19200000, P_BI_TCXO, 1, 0, 0),
48278412c26SAmit Nischal 	F(100000000, P_CAM_CC_PLL0_OUT_EVEN, 6, 0, 0),
48378412c26SAmit Nischal 	F(240000000, P_CAM_CC_PLL0_OUT_EVEN, 2.5, 0, 0),
48478412c26SAmit Nischal 	F(404000000, P_CAM_CC_PLL1_OUT_EVEN, 2, 0, 0),
48578412c26SAmit Nischal 	F(480000000, P_CAM_CC_PLL2_OUT_EVEN, 1, 0, 0),
48678412c26SAmit Nischal 	F(538666667, P_CAM_CC_PLL1_OUT_EVEN, 1.5, 0, 0),
48778412c26SAmit Nischal 	F(600000000, P_CAM_CC_PLL0_OUT_EVEN, 1, 0, 0),
48878412c26SAmit Nischal 	{ }
48978412c26SAmit Nischal };
49078412c26SAmit Nischal 
49178412c26SAmit Nischal static struct clk_rcg2 cam_cc_ipe_0_clk_src = {
49278412c26SAmit Nischal 	.cmd_rcgr = 0x700c,
49378412c26SAmit Nischal 	.mnd_width = 0,
49478412c26SAmit Nischal 	.hid_width = 5,
49578412c26SAmit Nischal 	.parent_map = cam_cc_parent_map_0,
49678412c26SAmit Nischal 	.freq_tbl = ftbl_cam_cc_ipe_0_clk_src,
49778412c26SAmit Nischal 	.clkr.hw.init = &(struct clk_init_data){
49878412c26SAmit Nischal 		.name = "cam_cc_ipe_0_clk_src",
49978412c26SAmit Nischal 		.parent_names = cam_cc_parent_names_0,
500cf4cd3dcSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(cam_cc_parent_names_0),
50178412c26SAmit Nischal 		.flags = CLK_SET_RATE_PARENT,
50278412c26SAmit Nischal 		.ops = &clk_rcg2_shared_ops,
50378412c26SAmit Nischal 	},
50478412c26SAmit Nischal };
50578412c26SAmit Nischal 
50678412c26SAmit Nischal static struct clk_rcg2 cam_cc_ipe_1_clk_src = {
50778412c26SAmit Nischal 	.cmd_rcgr = 0x800c,
50878412c26SAmit Nischal 	.mnd_width = 0,
50978412c26SAmit Nischal 	.hid_width = 5,
51078412c26SAmit Nischal 	.parent_map = cam_cc_parent_map_0,
51178412c26SAmit Nischal 	.freq_tbl = ftbl_cam_cc_ipe_0_clk_src,
51278412c26SAmit Nischal 	.clkr.hw.init = &(struct clk_init_data){
51378412c26SAmit Nischal 		.name = "cam_cc_ipe_1_clk_src",
51478412c26SAmit Nischal 		.parent_names = cam_cc_parent_names_0,
515cf4cd3dcSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(cam_cc_parent_names_0),
51678412c26SAmit Nischal 		.flags = CLK_SET_RATE_PARENT,
51778412c26SAmit Nischal 		.ops = &clk_rcg2_shared_ops,
51878412c26SAmit Nischal 	},
51978412c26SAmit Nischal };
52078412c26SAmit Nischal 
52178412c26SAmit Nischal static struct clk_rcg2 cam_cc_jpeg_clk_src = {
52278412c26SAmit Nischal 	.cmd_rcgr = 0xb04c,
52378412c26SAmit Nischal 	.mnd_width = 0,
52478412c26SAmit Nischal 	.hid_width = 5,
52578412c26SAmit Nischal 	.parent_map = cam_cc_parent_map_0,
52678412c26SAmit Nischal 	.freq_tbl = ftbl_cam_cc_bps_clk_src,
52778412c26SAmit Nischal 	.clkr.hw.init = &(struct clk_init_data){
52878412c26SAmit Nischal 		.name = "cam_cc_jpeg_clk_src",
52978412c26SAmit Nischal 		.parent_names = cam_cc_parent_names_0,
530cf4cd3dcSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(cam_cc_parent_names_0),
53178412c26SAmit Nischal 		.flags = CLK_SET_RATE_PARENT,
53278412c26SAmit Nischal 		.ops = &clk_rcg2_shared_ops,
53378412c26SAmit Nischal 	},
53478412c26SAmit Nischal };
53578412c26SAmit Nischal 
53678412c26SAmit Nischal static const struct freq_tbl ftbl_cam_cc_lrme_clk_src[] = {
53778412c26SAmit Nischal 	F(19200000, P_BI_TCXO, 1, 0, 0),
53878412c26SAmit Nischal 	F(100000000, P_CAM_CC_PLL0_OUT_EVEN, 6, 0, 0),
53978412c26SAmit Nischal 	F(200000000, P_CAM_CC_PLL0_OUT_EVEN, 3, 0, 0),
54078412c26SAmit Nischal 	F(269333333, P_CAM_CC_PLL1_OUT_EVEN, 3, 0, 0),
54178412c26SAmit Nischal 	F(320000000, P_CAM_CC_PLL2_OUT_EVEN, 1.5, 0, 0),
54278412c26SAmit Nischal 	F(400000000, P_CAM_CC_PLL0_OUT_EVEN, 1.5, 0, 0),
54378412c26SAmit Nischal 	{ }
54478412c26SAmit Nischal };
54578412c26SAmit Nischal 
54678412c26SAmit Nischal static struct clk_rcg2 cam_cc_lrme_clk_src = {
54778412c26SAmit Nischal 	.cmd_rcgr = 0xb0f8,
54878412c26SAmit Nischal 	.mnd_width = 0,
54978412c26SAmit Nischal 	.hid_width = 5,
55078412c26SAmit Nischal 	.parent_map = cam_cc_parent_map_0,
55178412c26SAmit Nischal 	.freq_tbl = ftbl_cam_cc_lrme_clk_src,
55278412c26SAmit Nischal 	.clkr.hw.init = &(struct clk_init_data){
55378412c26SAmit Nischal 		.name = "cam_cc_lrme_clk_src",
55478412c26SAmit Nischal 		.parent_names = cam_cc_parent_names_0,
555cf4cd3dcSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(cam_cc_parent_names_0),
55678412c26SAmit Nischal 		.flags = CLK_SET_RATE_PARENT,
55778412c26SAmit Nischal 		.ops = &clk_rcg2_shared_ops,
55878412c26SAmit Nischal 	},
55978412c26SAmit Nischal };
56078412c26SAmit Nischal 
56178412c26SAmit Nischal static const struct freq_tbl ftbl_cam_cc_mclk0_clk_src[] = {
56278412c26SAmit Nischal 	F(19200000, P_BI_TCXO, 1, 0, 0),
56378412c26SAmit Nischal 	F(24000000, P_CAM_CC_PLL2_OUT_EVEN, 10, 1, 2),
56478412c26SAmit Nischal 	F(33333333, P_CAM_CC_PLL0_OUT_EVEN, 2, 1, 9),
56578412c26SAmit Nischal 	F(34285714, P_CAM_CC_PLL2_OUT_EVEN, 14, 0, 0),
56678412c26SAmit Nischal 	{ }
56778412c26SAmit Nischal };
56878412c26SAmit Nischal 
56978412c26SAmit Nischal static struct clk_rcg2 cam_cc_mclk0_clk_src = {
57078412c26SAmit Nischal 	.cmd_rcgr = 0x4004,
57178412c26SAmit Nischal 	.mnd_width = 8,
57278412c26SAmit Nischal 	.hid_width = 5,
57378412c26SAmit Nischal 	.parent_map = cam_cc_parent_map_0,
57478412c26SAmit Nischal 	.freq_tbl = ftbl_cam_cc_mclk0_clk_src,
57578412c26SAmit Nischal 	.clkr.hw.init = &(struct clk_init_data){
57678412c26SAmit Nischal 		.name = "cam_cc_mclk0_clk_src",
57778412c26SAmit Nischal 		.parent_names = cam_cc_parent_names_0,
578cf4cd3dcSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(cam_cc_parent_names_0),
57978412c26SAmit Nischal 		.flags = CLK_SET_RATE_PARENT,
58078412c26SAmit Nischal 		.ops = &clk_rcg2_ops,
58178412c26SAmit Nischal 	},
58278412c26SAmit Nischal };
58378412c26SAmit Nischal 
58478412c26SAmit Nischal static struct clk_rcg2 cam_cc_mclk1_clk_src = {
58578412c26SAmit Nischal 	.cmd_rcgr = 0x4024,
58678412c26SAmit Nischal 	.mnd_width = 8,
58778412c26SAmit Nischal 	.hid_width = 5,
58878412c26SAmit Nischal 	.parent_map = cam_cc_parent_map_0,
58978412c26SAmit Nischal 	.freq_tbl = ftbl_cam_cc_mclk0_clk_src,
59078412c26SAmit Nischal 	.clkr.hw.init = &(struct clk_init_data){
59178412c26SAmit Nischal 		.name = "cam_cc_mclk1_clk_src",
59278412c26SAmit Nischal 		.parent_names = cam_cc_parent_names_0,
593cf4cd3dcSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(cam_cc_parent_names_0),
59478412c26SAmit Nischal 		.flags = CLK_SET_RATE_PARENT,
59578412c26SAmit Nischal 		.ops = &clk_rcg2_ops,
59678412c26SAmit Nischal 	},
59778412c26SAmit Nischal };
59878412c26SAmit Nischal 
59978412c26SAmit Nischal static struct clk_rcg2 cam_cc_mclk2_clk_src = {
60078412c26SAmit Nischal 	.cmd_rcgr = 0x4044,
60178412c26SAmit Nischal 	.mnd_width = 8,
60278412c26SAmit Nischal 	.hid_width = 5,
60378412c26SAmit Nischal 	.parent_map = cam_cc_parent_map_0,
60478412c26SAmit Nischal 	.freq_tbl = ftbl_cam_cc_mclk0_clk_src,
60578412c26SAmit Nischal 	.clkr.hw.init = &(struct clk_init_data){
60678412c26SAmit Nischal 		.name = "cam_cc_mclk2_clk_src",
60778412c26SAmit Nischal 		.parent_names = cam_cc_parent_names_0,
608cf4cd3dcSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(cam_cc_parent_names_0),
60978412c26SAmit Nischal 		.flags = CLK_SET_RATE_PARENT,
61078412c26SAmit Nischal 		.ops = &clk_rcg2_ops,
61178412c26SAmit Nischal 	},
61278412c26SAmit Nischal };
61378412c26SAmit Nischal 
61478412c26SAmit Nischal static struct clk_rcg2 cam_cc_mclk3_clk_src = {
61578412c26SAmit Nischal 	.cmd_rcgr = 0x4064,
61678412c26SAmit Nischal 	.mnd_width = 8,
61778412c26SAmit Nischal 	.hid_width = 5,
61878412c26SAmit Nischal 	.parent_map = cam_cc_parent_map_0,
61978412c26SAmit Nischal 	.freq_tbl = ftbl_cam_cc_mclk0_clk_src,
62078412c26SAmit Nischal 	.clkr.hw.init = &(struct clk_init_data){
62178412c26SAmit Nischal 		.name = "cam_cc_mclk3_clk_src",
62278412c26SAmit Nischal 		.parent_names = cam_cc_parent_names_0,
623cf4cd3dcSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(cam_cc_parent_names_0),
62478412c26SAmit Nischal 		.flags = CLK_SET_RATE_PARENT,
62578412c26SAmit Nischal 		.ops = &clk_rcg2_ops,
62678412c26SAmit Nischal 	},
62778412c26SAmit Nischal };
62878412c26SAmit Nischal 
62978412c26SAmit Nischal static const struct freq_tbl ftbl_cam_cc_slow_ahb_clk_src[] = {
63078412c26SAmit Nischal 	F(19200000, P_BI_TCXO, 1, 0, 0),
63178412c26SAmit Nischal 	F(60000000, P_CAM_CC_PLL0_OUT_EVEN, 10, 0, 0),
63278412c26SAmit Nischal 	F(66666667, P_CAM_CC_PLL0_OUT_EVEN, 9, 0, 0),
63378412c26SAmit Nischal 	F(73846154, P_CAM_CC_PLL2_OUT_EVEN, 6.5, 0, 0),
63478412c26SAmit Nischal 	F(80000000, P_CAM_CC_PLL2_OUT_EVEN, 6, 0, 0),
63578412c26SAmit Nischal 	{ }
63678412c26SAmit Nischal };
63778412c26SAmit Nischal 
63878412c26SAmit Nischal static struct clk_rcg2 cam_cc_slow_ahb_clk_src = {
63978412c26SAmit Nischal 	.cmd_rcgr = 0x6054,
64078412c26SAmit Nischal 	.mnd_width = 0,
64178412c26SAmit Nischal 	.hid_width = 5,
64278412c26SAmit Nischal 	.parent_map = cam_cc_parent_map_0,
64378412c26SAmit Nischal 	.freq_tbl = ftbl_cam_cc_slow_ahb_clk_src,
64478412c26SAmit Nischal 	.clkr.hw.init = &(struct clk_init_data){
64578412c26SAmit Nischal 		.name = "cam_cc_slow_ahb_clk_src",
64678412c26SAmit Nischal 		.parent_names = cam_cc_parent_names_0,
647cf4cd3dcSDmitry Baryshkov 		.num_parents = ARRAY_SIZE(cam_cc_parent_names_0),
64878412c26SAmit Nischal 		.flags = CLK_SET_RATE_PARENT,
64978412c26SAmit Nischal 		.ops = &clk_rcg2_ops,
65078412c26SAmit Nischal 	},
65178412c26SAmit Nischal };
65278412c26SAmit Nischal 
65378412c26SAmit Nischal static struct clk_branch cam_cc_bps_ahb_clk = {
65478412c26SAmit Nischal 	.halt_reg = 0x606c,
65578412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
65678412c26SAmit Nischal 	.clkr = {
65778412c26SAmit Nischal 		.enable_reg = 0x606c,
65878412c26SAmit Nischal 		.enable_mask = BIT(0),
65978412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
66078412c26SAmit Nischal 			.name = "cam_cc_bps_ahb_clk",
66178412c26SAmit Nischal 			.parent_names = (const char *[]){
66278412c26SAmit Nischal 				"cam_cc_slow_ahb_clk_src",
66378412c26SAmit Nischal 			},
66478412c26SAmit Nischal 			.num_parents = 1,
66578412c26SAmit Nischal 			.flags = CLK_SET_RATE_PARENT,
66678412c26SAmit Nischal 			.ops = &clk_branch2_ops,
66778412c26SAmit Nischal 		},
66878412c26SAmit Nischal 	},
66978412c26SAmit Nischal };
67078412c26SAmit Nischal 
67178412c26SAmit Nischal static struct clk_branch cam_cc_bps_areg_clk = {
67278412c26SAmit Nischal 	.halt_reg = 0x6050,
67378412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
67478412c26SAmit Nischal 	.clkr = {
67578412c26SAmit Nischal 		.enable_reg = 0x6050,
67678412c26SAmit Nischal 		.enable_mask = BIT(0),
67778412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
67878412c26SAmit Nischal 			.name = "cam_cc_bps_areg_clk",
67978412c26SAmit Nischal 			.parent_names = (const char *[]){
68078412c26SAmit Nischal 				"cam_cc_fast_ahb_clk_src",
68178412c26SAmit Nischal 			},
68278412c26SAmit Nischal 			.num_parents = 1,
68378412c26SAmit Nischal 			.flags = CLK_SET_RATE_PARENT,
68478412c26SAmit Nischal 			.ops = &clk_branch2_ops,
68578412c26SAmit Nischal 		},
68678412c26SAmit Nischal 	},
68778412c26SAmit Nischal };
68878412c26SAmit Nischal 
68978412c26SAmit Nischal static struct clk_branch cam_cc_bps_axi_clk = {
69078412c26SAmit Nischal 	.halt_reg = 0x6034,
69178412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
69278412c26SAmit Nischal 	.clkr = {
69378412c26SAmit Nischal 		.enable_reg = 0x6034,
69478412c26SAmit Nischal 		.enable_mask = BIT(0),
69578412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
69678412c26SAmit Nischal 			.name = "cam_cc_bps_axi_clk",
69778412c26SAmit Nischal 			.ops = &clk_branch2_ops,
69878412c26SAmit Nischal 		},
69978412c26SAmit Nischal 	},
70078412c26SAmit Nischal };
70178412c26SAmit Nischal 
70278412c26SAmit Nischal static struct clk_branch cam_cc_bps_clk = {
70378412c26SAmit Nischal 	.halt_reg = 0x6024,
70478412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
70578412c26SAmit Nischal 	.clkr = {
70678412c26SAmit Nischal 		.enable_reg = 0x6024,
70778412c26SAmit Nischal 		.enable_mask = BIT(0),
70878412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
70978412c26SAmit Nischal 			.name = "cam_cc_bps_clk",
71078412c26SAmit Nischal 			.parent_names = (const char *[]){
71178412c26SAmit Nischal 				"cam_cc_bps_clk_src",
71278412c26SAmit Nischal 			},
71378412c26SAmit Nischal 			.num_parents = 1,
71478412c26SAmit Nischal 			.flags = CLK_SET_RATE_PARENT,
71578412c26SAmit Nischal 			.ops = &clk_branch2_ops,
71678412c26SAmit Nischal 		},
71778412c26SAmit Nischal 	},
71878412c26SAmit Nischal };
71978412c26SAmit Nischal 
72078412c26SAmit Nischal static struct clk_branch cam_cc_camnoc_atb_clk = {
72178412c26SAmit Nischal 	.halt_reg = 0xb12c,
72278412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
72378412c26SAmit Nischal 	.clkr = {
72478412c26SAmit Nischal 		.enable_reg = 0xb12c,
72578412c26SAmit Nischal 		.enable_mask = BIT(0),
72678412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
72778412c26SAmit Nischal 			.name = "cam_cc_camnoc_atb_clk",
72878412c26SAmit Nischal 			.ops = &clk_branch2_ops,
72978412c26SAmit Nischal 		},
73078412c26SAmit Nischal 	},
73178412c26SAmit Nischal };
73278412c26SAmit Nischal 
73378412c26SAmit Nischal static struct clk_branch cam_cc_camnoc_axi_clk = {
73478412c26SAmit Nischal 	.halt_reg = 0xb124,
73578412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
73678412c26SAmit Nischal 	.clkr = {
73778412c26SAmit Nischal 		.enable_reg = 0xb124,
73878412c26SAmit Nischal 		.enable_mask = BIT(0),
73978412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
74078412c26SAmit Nischal 			.name = "cam_cc_camnoc_axi_clk",
74178412c26SAmit Nischal 			.ops = &clk_branch2_ops,
74278412c26SAmit Nischal 		},
74378412c26SAmit Nischal 	},
74478412c26SAmit Nischal };
74578412c26SAmit Nischal 
74678412c26SAmit Nischal static struct clk_branch cam_cc_cci_clk = {
74778412c26SAmit Nischal 	.halt_reg = 0xb0f0,
74878412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
74978412c26SAmit Nischal 	.clkr = {
75078412c26SAmit Nischal 		.enable_reg = 0xb0f0,
75178412c26SAmit Nischal 		.enable_mask = BIT(0),
75278412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
75378412c26SAmit Nischal 			.name = "cam_cc_cci_clk",
75478412c26SAmit Nischal 			.parent_names = (const char *[]){
75578412c26SAmit Nischal 				"cam_cc_cci_clk_src",
75678412c26SAmit Nischal 			},
75778412c26SAmit Nischal 			.num_parents = 1,
75878412c26SAmit Nischal 			.flags = CLK_SET_RATE_PARENT,
75978412c26SAmit Nischal 			.ops = &clk_branch2_ops,
76078412c26SAmit Nischal 		},
76178412c26SAmit Nischal 	},
76278412c26SAmit Nischal };
76378412c26SAmit Nischal 
76478412c26SAmit Nischal static struct clk_branch cam_cc_cpas_ahb_clk = {
76578412c26SAmit Nischal 	.halt_reg = 0xb11c,
76678412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
76778412c26SAmit Nischal 	.clkr = {
76878412c26SAmit Nischal 		.enable_reg = 0xb11c,
76978412c26SAmit Nischal 		.enable_mask = BIT(0),
77078412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
77178412c26SAmit Nischal 			.name = "cam_cc_cpas_ahb_clk",
77278412c26SAmit Nischal 			.parent_names = (const char *[]){
77378412c26SAmit Nischal 				"cam_cc_slow_ahb_clk_src",
77478412c26SAmit Nischal 			},
77578412c26SAmit Nischal 			.num_parents = 1,
77678412c26SAmit Nischal 			.flags = CLK_SET_RATE_PARENT,
77778412c26SAmit Nischal 			.ops = &clk_branch2_ops,
77878412c26SAmit Nischal 		},
77978412c26SAmit Nischal 	},
78078412c26SAmit Nischal };
78178412c26SAmit Nischal 
78278412c26SAmit Nischal static struct clk_branch cam_cc_csi0phytimer_clk = {
78378412c26SAmit Nischal 	.halt_reg = 0x501c,
78478412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
78578412c26SAmit Nischal 	.clkr = {
78678412c26SAmit Nischal 		.enable_reg = 0x501c,
78778412c26SAmit Nischal 		.enable_mask = BIT(0),
78878412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
78978412c26SAmit Nischal 			.name = "cam_cc_csi0phytimer_clk",
79078412c26SAmit Nischal 			.parent_names = (const char *[]){
79178412c26SAmit Nischal 				"cam_cc_csi0phytimer_clk_src",
79278412c26SAmit Nischal 			},
79378412c26SAmit Nischal 			.num_parents = 1,
79478412c26SAmit Nischal 			.flags = CLK_SET_RATE_PARENT,
79578412c26SAmit Nischal 			.ops = &clk_branch2_ops,
79678412c26SAmit Nischal 		},
79778412c26SAmit Nischal 	},
79878412c26SAmit Nischal };
79978412c26SAmit Nischal 
80078412c26SAmit Nischal static struct clk_branch cam_cc_csi1phytimer_clk = {
80178412c26SAmit Nischal 	.halt_reg = 0x5040,
80278412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
80378412c26SAmit Nischal 	.clkr = {
80478412c26SAmit Nischal 		.enable_reg = 0x5040,
80578412c26SAmit Nischal 		.enable_mask = BIT(0),
80678412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
80778412c26SAmit Nischal 			.name = "cam_cc_csi1phytimer_clk",
80878412c26SAmit Nischal 			.parent_names = (const char *[]){
80978412c26SAmit Nischal 				"cam_cc_csi1phytimer_clk_src",
81078412c26SAmit Nischal 			},
81178412c26SAmit Nischal 			.num_parents = 1,
81278412c26SAmit Nischal 			.flags = CLK_SET_RATE_PARENT,
81378412c26SAmit Nischal 			.ops = &clk_branch2_ops,
81478412c26SAmit Nischal 		},
81578412c26SAmit Nischal 	},
81678412c26SAmit Nischal };
81778412c26SAmit Nischal 
81878412c26SAmit Nischal static struct clk_branch cam_cc_csi2phytimer_clk = {
81978412c26SAmit Nischal 	.halt_reg = 0x5064,
82078412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
82178412c26SAmit Nischal 	.clkr = {
82278412c26SAmit Nischal 		.enable_reg = 0x5064,
82378412c26SAmit Nischal 		.enable_mask = BIT(0),
82478412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
82578412c26SAmit Nischal 			.name = "cam_cc_csi2phytimer_clk",
82678412c26SAmit Nischal 			.parent_names = (const char *[]){
82778412c26SAmit Nischal 				"cam_cc_csi2phytimer_clk_src",
82878412c26SAmit Nischal 			},
82978412c26SAmit Nischal 			.num_parents = 1,
83078412c26SAmit Nischal 			.flags = CLK_SET_RATE_PARENT,
83178412c26SAmit Nischal 			.ops = &clk_branch2_ops,
83278412c26SAmit Nischal 		},
83378412c26SAmit Nischal 	},
83478412c26SAmit Nischal };
83578412c26SAmit Nischal 
83678412c26SAmit Nischal static struct clk_branch cam_cc_csi3phytimer_clk = {
83778412c26SAmit Nischal 	.halt_reg = 0x5088,
83878412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
83978412c26SAmit Nischal 	.clkr = {
84078412c26SAmit Nischal 		.enable_reg = 0x5088,
84178412c26SAmit Nischal 		.enable_mask = BIT(0),
84278412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
84378412c26SAmit Nischal 			.name = "cam_cc_csi3phytimer_clk",
84478412c26SAmit Nischal 			.parent_names = (const char *[]){
84578412c26SAmit Nischal 				"cam_cc_csi3phytimer_clk_src",
84678412c26SAmit Nischal 			},
84778412c26SAmit Nischal 			.num_parents = 1,
84878412c26SAmit Nischal 			.flags = CLK_SET_RATE_PARENT,
84978412c26SAmit Nischal 			.ops = &clk_branch2_ops,
85078412c26SAmit Nischal 		},
85178412c26SAmit Nischal 	},
85278412c26SAmit Nischal };
85378412c26SAmit Nischal 
85478412c26SAmit Nischal static struct clk_branch cam_cc_csiphy0_clk = {
85578412c26SAmit Nischal 	.halt_reg = 0x5020,
85678412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
85778412c26SAmit Nischal 	.clkr = {
85878412c26SAmit Nischal 		.enable_reg = 0x5020,
85978412c26SAmit Nischal 		.enable_mask = BIT(0),
86078412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
86178412c26SAmit Nischal 			.name = "cam_cc_csiphy0_clk",
86278412c26SAmit Nischal 			.parent_names = (const char *[]){
86378412c26SAmit Nischal 				"cam_cc_cphy_rx_clk_src",
86478412c26SAmit Nischal 			},
86578412c26SAmit Nischal 			.num_parents = 1,
86678412c26SAmit Nischal 			.flags = CLK_SET_RATE_PARENT,
86778412c26SAmit Nischal 			.ops = &clk_branch2_ops,
86878412c26SAmit Nischal 		},
86978412c26SAmit Nischal 	},
87078412c26SAmit Nischal };
87178412c26SAmit Nischal 
87278412c26SAmit Nischal static struct clk_branch cam_cc_csiphy1_clk = {
87378412c26SAmit Nischal 	.halt_reg = 0x5044,
87478412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
87578412c26SAmit Nischal 	.clkr = {
87678412c26SAmit Nischal 		.enable_reg = 0x5044,
87778412c26SAmit Nischal 		.enable_mask = BIT(0),
87878412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
87978412c26SAmit Nischal 			.name = "cam_cc_csiphy1_clk",
88078412c26SAmit Nischal 			.parent_names = (const char *[]){
88178412c26SAmit Nischal 				"cam_cc_cphy_rx_clk_src",
88278412c26SAmit Nischal 			},
88378412c26SAmit Nischal 			.num_parents = 1,
88478412c26SAmit Nischal 			.flags = CLK_SET_RATE_PARENT,
88578412c26SAmit Nischal 			.ops = &clk_branch2_ops,
88678412c26SAmit Nischal 		},
88778412c26SAmit Nischal 	},
88878412c26SAmit Nischal };
88978412c26SAmit Nischal 
89078412c26SAmit Nischal static struct clk_branch cam_cc_csiphy2_clk = {
89178412c26SAmit Nischal 	.halt_reg = 0x5068,
89278412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
89378412c26SAmit Nischal 	.clkr = {
89478412c26SAmit Nischal 		.enable_reg = 0x5068,
89578412c26SAmit Nischal 		.enable_mask = BIT(0),
89678412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
89778412c26SAmit Nischal 			.name = "cam_cc_csiphy2_clk",
89878412c26SAmit Nischal 			.parent_names = (const char *[]){
89978412c26SAmit Nischal 				"cam_cc_cphy_rx_clk_src",
90078412c26SAmit Nischal 			},
90178412c26SAmit Nischal 			.num_parents = 1,
90278412c26SAmit Nischal 			.flags = CLK_SET_RATE_PARENT,
90378412c26SAmit Nischal 			.ops = &clk_branch2_ops,
90478412c26SAmit Nischal 		},
90578412c26SAmit Nischal 	},
90678412c26SAmit Nischal };
90778412c26SAmit Nischal 
90878412c26SAmit Nischal static struct clk_branch cam_cc_csiphy3_clk = {
90978412c26SAmit Nischal 	.halt_reg = 0x508c,
91078412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
91178412c26SAmit Nischal 	.clkr = {
91278412c26SAmit Nischal 		.enable_reg = 0x508c,
91378412c26SAmit Nischal 		.enable_mask = BIT(0),
91478412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
91578412c26SAmit Nischal 			.name = "cam_cc_csiphy3_clk",
91678412c26SAmit Nischal 			.parent_names = (const char *[]){
91778412c26SAmit Nischal 				"cam_cc_cphy_rx_clk_src",
91878412c26SAmit Nischal 			},
91978412c26SAmit Nischal 			.num_parents = 1,
92078412c26SAmit Nischal 			.flags = CLK_SET_RATE_PARENT,
92178412c26SAmit Nischal 			.ops = &clk_branch2_ops,
92278412c26SAmit Nischal 		},
92378412c26SAmit Nischal 	},
92478412c26SAmit Nischal };
92578412c26SAmit Nischal 
92678412c26SAmit Nischal static struct clk_branch cam_cc_fd_core_clk = {
92778412c26SAmit Nischal 	.halt_reg = 0xb0c8,
92878412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
92978412c26SAmit Nischal 	.clkr = {
93078412c26SAmit Nischal 		.enable_reg = 0xb0c8,
93178412c26SAmit Nischal 		.enable_mask = BIT(0),
93278412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
93378412c26SAmit Nischal 			.name = "cam_cc_fd_core_clk",
93478412c26SAmit Nischal 			.parent_names = (const char *[]){
93578412c26SAmit Nischal 				"cam_cc_fd_core_clk_src",
93678412c26SAmit Nischal 			},
93778412c26SAmit Nischal 			.num_parents = 1,
93878412c26SAmit Nischal 			.flags = CLK_SET_RATE_PARENT,
93978412c26SAmit Nischal 			.ops = &clk_branch2_ops,
94078412c26SAmit Nischal 		},
94178412c26SAmit Nischal 	},
94278412c26SAmit Nischal };
94378412c26SAmit Nischal 
94478412c26SAmit Nischal static struct clk_branch cam_cc_fd_core_uar_clk = {
94578412c26SAmit Nischal 	.halt_reg = 0xb0d0,
94678412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
94778412c26SAmit Nischal 	.clkr = {
94878412c26SAmit Nischal 		.enable_reg = 0xb0d0,
94978412c26SAmit Nischal 		.enable_mask = BIT(0),
95078412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
95178412c26SAmit Nischal 			.name = "cam_cc_fd_core_uar_clk",
95278412c26SAmit Nischal 			.parent_names = (const char *[]){
95378412c26SAmit Nischal 				"cam_cc_fd_core_clk_src",
95478412c26SAmit Nischal 			},
95578412c26SAmit Nischal 			.num_parents = 1,
95678412c26SAmit Nischal 			.ops = &clk_branch2_ops,
95778412c26SAmit Nischal 		},
95878412c26SAmit Nischal 	},
95978412c26SAmit Nischal };
96078412c26SAmit Nischal 
96178412c26SAmit Nischal static struct clk_branch cam_cc_icp_apb_clk = {
96278412c26SAmit Nischal 	.halt_reg = 0xb084,
96378412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
96478412c26SAmit Nischal 	.clkr = {
96578412c26SAmit Nischal 		.enable_reg = 0xb084,
96678412c26SAmit Nischal 		.enable_mask = BIT(0),
96778412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
96878412c26SAmit Nischal 			.name = "cam_cc_icp_apb_clk",
96978412c26SAmit Nischal 			.ops = &clk_branch2_ops,
97078412c26SAmit Nischal 		},
97178412c26SAmit Nischal 	},
97278412c26SAmit Nischal };
97378412c26SAmit Nischal 
97478412c26SAmit Nischal static struct clk_branch cam_cc_icp_atb_clk = {
97578412c26SAmit Nischal 	.halt_reg = 0xb078,
97678412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
97778412c26SAmit Nischal 	.clkr = {
97878412c26SAmit Nischal 		.enable_reg = 0xb078,
97978412c26SAmit Nischal 		.enable_mask = BIT(0),
98078412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
98178412c26SAmit Nischal 			.name = "cam_cc_icp_atb_clk",
98278412c26SAmit Nischal 			.ops = &clk_branch2_ops,
98378412c26SAmit Nischal 		},
98478412c26SAmit Nischal 	},
98578412c26SAmit Nischal };
98678412c26SAmit Nischal 
98778412c26SAmit Nischal static struct clk_branch cam_cc_icp_clk = {
98878412c26SAmit Nischal 	.halt_reg = 0xb0a0,
98978412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
99078412c26SAmit Nischal 	.clkr = {
99178412c26SAmit Nischal 		.enable_reg = 0xb0a0,
99278412c26SAmit Nischal 		.enable_mask = BIT(0),
99378412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
99478412c26SAmit Nischal 			.name = "cam_cc_icp_clk",
99578412c26SAmit Nischal 			.parent_names = (const char *[]){
99678412c26SAmit Nischal 				"cam_cc_icp_clk_src",
99778412c26SAmit Nischal 			},
99878412c26SAmit Nischal 			.num_parents = 1,
99978412c26SAmit Nischal 			.flags = CLK_SET_RATE_PARENT,
100078412c26SAmit Nischal 			.ops = &clk_branch2_ops,
100178412c26SAmit Nischal 		},
100278412c26SAmit Nischal 	},
100378412c26SAmit Nischal };
100478412c26SAmit Nischal 
100578412c26SAmit Nischal static struct clk_branch cam_cc_icp_cti_clk = {
100678412c26SAmit Nischal 	.halt_reg = 0xb07c,
100778412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
100878412c26SAmit Nischal 	.clkr = {
100978412c26SAmit Nischal 		.enable_reg = 0xb07c,
101078412c26SAmit Nischal 		.enable_mask = BIT(0),
101178412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
101278412c26SAmit Nischal 			.name = "cam_cc_icp_cti_clk",
101378412c26SAmit Nischal 			.ops = &clk_branch2_ops,
101478412c26SAmit Nischal 		},
101578412c26SAmit Nischal 	},
101678412c26SAmit Nischal };
101778412c26SAmit Nischal 
101878412c26SAmit Nischal static struct clk_branch cam_cc_icp_ts_clk = {
101978412c26SAmit Nischal 	.halt_reg = 0xb080,
102078412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
102178412c26SAmit Nischal 	.clkr = {
102278412c26SAmit Nischal 		.enable_reg = 0xb080,
102378412c26SAmit Nischal 		.enable_mask = BIT(0),
102478412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
102578412c26SAmit Nischal 			.name = "cam_cc_icp_ts_clk",
102678412c26SAmit Nischal 			.ops = &clk_branch2_ops,
102778412c26SAmit Nischal 		},
102878412c26SAmit Nischal 	},
102978412c26SAmit Nischal };
103078412c26SAmit Nischal 
103178412c26SAmit Nischal static struct clk_branch cam_cc_ife_0_axi_clk = {
103278412c26SAmit Nischal 	.halt_reg = 0x907c,
103378412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
103478412c26SAmit Nischal 	.clkr = {
103578412c26SAmit Nischal 		.enable_reg = 0x907c,
103678412c26SAmit Nischal 		.enable_mask = BIT(0),
103778412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
103878412c26SAmit Nischal 			.name = "cam_cc_ife_0_axi_clk",
103978412c26SAmit Nischal 			.ops = &clk_branch2_ops,
104078412c26SAmit Nischal 		},
104178412c26SAmit Nischal 	},
104278412c26SAmit Nischal };
104378412c26SAmit Nischal 
104478412c26SAmit Nischal static struct clk_branch cam_cc_ife_0_clk = {
104578412c26SAmit Nischal 	.halt_reg = 0x9024,
104678412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
104778412c26SAmit Nischal 	.clkr = {
104878412c26SAmit Nischal 		.enable_reg = 0x9024,
104978412c26SAmit Nischal 		.enable_mask = BIT(0),
105078412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
105178412c26SAmit Nischal 			.name = "cam_cc_ife_0_clk",
105278412c26SAmit Nischal 			.parent_names = (const char *[]){
105378412c26SAmit Nischal 				"cam_cc_ife_0_clk_src",
105478412c26SAmit Nischal 			},
105578412c26SAmit Nischal 			.num_parents = 1,
105678412c26SAmit Nischal 			.flags = CLK_SET_RATE_PARENT,
105778412c26SAmit Nischal 			.ops = &clk_branch2_ops,
105878412c26SAmit Nischal 		},
105978412c26SAmit Nischal 	},
106078412c26SAmit Nischal };
106178412c26SAmit Nischal 
106278412c26SAmit Nischal static struct clk_branch cam_cc_ife_0_cphy_rx_clk = {
106378412c26SAmit Nischal 	.halt_reg = 0x9078,
106478412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
106578412c26SAmit Nischal 	.clkr = {
106678412c26SAmit Nischal 		.enable_reg = 0x9078,
106778412c26SAmit Nischal 		.enable_mask = BIT(0),
106878412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
106978412c26SAmit Nischal 			.name = "cam_cc_ife_0_cphy_rx_clk",
107078412c26SAmit Nischal 			.parent_names = (const char *[]){
107178412c26SAmit Nischal 				"cam_cc_cphy_rx_clk_src",
107278412c26SAmit Nischal 			},
107378412c26SAmit Nischal 			.num_parents = 1,
107478412c26SAmit Nischal 			.flags = CLK_SET_RATE_PARENT,
107578412c26SAmit Nischal 			.ops = &clk_branch2_ops,
107678412c26SAmit Nischal 		},
107778412c26SAmit Nischal 	},
107878412c26SAmit Nischal };
107978412c26SAmit Nischal 
108078412c26SAmit Nischal static struct clk_branch cam_cc_ife_0_csid_clk = {
108178412c26SAmit Nischal 	.halt_reg = 0x9050,
108278412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
108378412c26SAmit Nischal 	.clkr = {
108478412c26SAmit Nischal 		.enable_reg = 0x9050,
108578412c26SAmit Nischal 		.enable_mask = BIT(0),
108678412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
108778412c26SAmit Nischal 			.name = "cam_cc_ife_0_csid_clk",
108878412c26SAmit Nischal 			.parent_names = (const char *[]){
108978412c26SAmit Nischal 				"cam_cc_ife_0_csid_clk_src",
109078412c26SAmit Nischal 			},
109178412c26SAmit Nischal 			.num_parents = 1,
109278412c26SAmit Nischal 			.flags = CLK_SET_RATE_PARENT,
109378412c26SAmit Nischal 			.ops = &clk_branch2_ops,
109478412c26SAmit Nischal 		},
109578412c26SAmit Nischal 	},
109678412c26SAmit Nischal };
109778412c26SAmit Nischal 
109878412c26SAmit Nischal static struct clk_branch cam_cc_ife_0_dsp_clk = {
109978412c26SAmit Nischal 	.halt_reg = 0x9034,
110078412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
110178412c26SAmit Nischal 	.clkr = {
110278412c26SAmit Nischal 		.enable_reg = 0x9034,
110378412c26SAmit Nischal 		.enable_mask = BIT(0),
110478412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
110578412c26SAmit Nischal 			.name = "cam_cc_ife_0_dsp_clk",
110678412c26SAmit Nischal 			.parent_names = (const char *[]){
110778412c26SAmit Nischal 				"cam_cc_ife_0_clk_src",
110878412c26SAmit Nischal 			},
110978412c26SAmit Nischal 			.num_parents = 1,
111078412c26SAmit Nischal 			.ops = &clk_branch2_ops,
111178412c26SAmit Nischal 		},
111278412c26SAmit Nischal 	},
111378412c26SAmit Nischal };
111478412c26SAmit Nischal 
111578412c26SAmit Nischal static struct clk_branch cam_cc_ife_1_axi_clk = {
111678412c26SAmit Nischal 	.halt_reg = 0xa054,
111778412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
111878412c26SAmit Nischal 	.clkr = {
111978412c26SAmit Nischal 		.enable_reg = 0xa054,
112078412c26SAmit Nischal 		.enable_mask = BIT(0),
112178412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
112278412c26SAmit Nischal 			.name = "cam_cc_ife_1_axi_clk",
112378412c26SAmit Nischal 			.ops = &clk_branch2_ops,
112478412c26SAmit Nischal 		},
112578412c26SAmit Nischal 	},
112678412c26SAmit Nischal };
112778412c26SAmit Nischal 
112878412c26SAmit Nischal static struct clk_branch cam_cc_ife_1_clk = {
112978412c26SAmit Nischal 	.halt_reg = 0xa024,
113078412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
113178412c26SAmit Nischal 	.clkr = {
113278412c26SAmit Nischal 		.enable_reg = 0xa024,
113378412c26SAmit Nischal 		.enable_mask = BIT(0),
113478412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
113578412c26SAmit Nischal 			.name = "cam_cc_ife_1_clk",
113678412c26SAmit Nischal 			.parent_names = (const char *[]){
113778412c26SAmit Nischal 				"cam_cc_ife_1_clk_src",
113878412c26SAmit Nischal 			},
113978412c26SAmit Nischal 			.num_parents = 1,
114078412c26SAmit Nischal 			.flags = CLK_SET_RATE_PARENT,
114178412c26SAmit Nischal 			.ops = &clk_branch2_ops,
114278412c26SAmit Nischal 		},
114378412c26SAmit Nischal 	},
114478412c26SAmit Nischal };
114578412c26SAmit Nischal 
114678412c26SAmit Nischal static struct clk_branch cam_cc_ife_1_cphy_rx_clk = {
114778412c26SAmit Nischal 	.halt_reg = 0xa050,
114878412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
114978412c26SAmit Nischal 	.clkr = {
115078412c26SAmit Nischal 		.enable_reg = 0xa050,
115178412c26SAmit Nischal 		.enable_mask = BIT(0),
115278412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
115378412c26SAmit Nischal 			.name = "cam_cc_ife_1_cphy_rx_clk",
115478412c26SAmit Nischal 			.parent_names = (const char *[]){
115578412c26SAmit Nischal 				"cam_cc_cphy_rx_clk_src",
115678412c26SAmit Nischal 			},
115778412c26SAmit Nischal 			.num_parents = 1,
115878412c26SAmit Nischal 			.flags = CLK_SET_RATE_PARENT,
115978412c26SAmit Nischal 			.ops = &clk_branch2_ops,
116078412c26SAmit Nischal 		},
116178412c26SAmit Nischal 	},
116278412c26SAmit Nischal };
116378412c26SAmit Nischal 
116478412c26SAmit Nischal static struct clk_branch cam_cc_ife_1_csid_clk = {
116578412c26SAmit Nischal 	.halt_reg = 0xa048,
116678412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
116778412c26SAmit Nischal 	.clkr = {
116878412c26SAmit Nischal 		.enable_reg = 0xa048,
116978412c26SAmit Nischal 		.enable_mask = BIT(0),
117078412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
117178412c26SAmit Nischal 			.name = "cam_cc_ife_1_csid_clk",
117278412c26SAmit Nischal 			.parent_names = (const char *[]){
117378412c26SAmit Nischal 				"cam_cc_ife_1_csid_clk_src",
117478412c26SAmit Nischal 			},
117578412c26SAmit Nischal 			.num_parents = 1,
117678412c26SAmit Nischal 			.flags = CLK_SET_RATE_PARENT,
117778412c26SAmit Nischal 			.ops = &clk_branch2_ops,
117878412c26SAmit Nischal 		},
117978412c26SAmit Nischal 	},
118078412c26SAmit Nischal };
118178412c26SAmit Nischal 
118278412c26SAmit Nischal static struct clk_branch cam_cc_ife_1_dsp_clk = {
118378412c26SAmit Nischal 	.halt_reg = 0xa02c,
118478412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
118578412c26SAmit Nischal 	.clkr = {
118678412c26SAmit Nischal 		.enable_reg = 0xa02c,
118778412c26SAmit Nischal 		.enable_mask = BIT(0),
118878412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
118978412c26SAmit Nischal 			.name = "cam_cc_ife_1_dsp_clk",
119078412c26SAmit Nischal 			.parent_names = (const char *[]){
119178412c26SAmit Nischal 				"cam_cc_ife_1_clk_src",
119278412c26SAmit Nischal 			},
119378412c26SAmit Nischal 			.num_parents = 1,
119478412c26SAmit Nischal 			.ops = &clk_branch2_ops,
119578412c26SAmit Nischal 		},
119678412c26SAmit Nischal 	},
119778412c26SAmit Nischal };
119878412c26SAmit Nischal 
119978412c26SAmit Nischal static struct clk_branch cam_cc_ife_lite_clk = {
120078412c26SAmit Nischal 	.halt_reg = 0xb01c,
120178412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
120278412c26SAmit Nischal 	.clkr = {
120378412c26SAmit Nischal 		.enable_reg = 0xb01c,
120478412c26SAmit Nischal 		.enable_mask = BIT(0),
120578412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
120678412c26SAmit Nischal 			.name = "cam_cc_ife_lite_clk",
120778412c26SAmit Nischal 			.parent_names = (const char *[]){
120878412c26SAmit Nischal 				"cam_cc_ife_lite_clk_src",
120978412c26SAmit Nischal 			},
121078412c26SAmit Nischal 			.num_parents = 1,
121178412c26SAmit Nischal 			.flags = CLK_SET_RATE_PARENT,
121278412c26SAmit Nischal 			.ops = &clk_branch2_ops,
121378412c26SAmit Nischal 		},
121478412c26SAmit Nischal 	},
121578412c26SAmit Nischal };
121678412c26SAmit Nischal 
121778412c26SAmit Nischal static struct clk_branch cam_cc_ife_lite_cphy_rx_clk = {
121878412c26SAmit Nischal 	.halt_reg = 0xb044,
121978412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
122078412c26SAmit Nischal 	.clkr = {
122178412c26SAmit Nischal 		.enable_reg = 0xb044,
122278412c26SAmit Nischal 		.enable_mask = BIT(0),
122378412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
122478412c26SAmit Nischal 			.name = "cam_cc_ife_lite_cphy_rx_clk",
122578412c26SAmit Nischal 			.parent_names = (const char *[]){
122678412c26SAmit Nischal 				"cam_cc_cphy_rx_clk_src",
122778412c26SAmit Nischal 			},
122878412c26SAmit Nischal 			.num_parents = 1,
122978412c26SAmit Nischal 			.flags = CLK_SET_RATE_PARENT,
123078412c26SAmit Nischal 			.ops = &clk_branch2_ops,
123178412c26SAmit Nischal 		},
123278412c26SAmit Nischal 	},
123378412c26SAmit Nischal };
123478412c26SAmit Nischal 
123578412c26SAmit Nischal static struct clk_branch cam_cc_ife_lite_csid_clk = {
123678412c26SAmit Nischal 	.halt_reg = 0xb03c,
123778412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
123878412c26SAmit Nischal 	.clkr = {
123978412c26SAmit Nischal 		.enable_reg = 0xb03c,
124078412c26SAmit Nischal 		.enable_mask = BIT(0),
124178412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
124278412c26SAmit Nischal 			.name = "cam_cc_ife_lite_csid_clk",
124378412c26SAmit Nischal 			.parent_names = (const char *[]){
124478412c26SAmit Nischal 				"cam_cc_ife_lite_csid_clk_src",
124578412c26SAmit Nischal 			},
124678412c26SAmit Nischal 			.num_parents = 1,
124778412c26SAmit Nischal 			.flags = CLK_SET_RATE_PARENT,
124878412c26SAmit Nischal 			.ops = &clk_branch2_ops,
124978412c26SAmit Nischal 		},
125078412c26SAmit Nischal 	},
125178412c26SAmit Nischal };
125278412c26SAmit Nischal 
125378412c26SAmit Nischal static struct clk_branch cam_cc_ipe_0_ahb_clk = {
125478412c26SAmit Nischal 	.halt_reg = 0x703c,
125578412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
125678412c26SAmit Nischal 	.clkr = {
125778412c26SAmit Nischal 		.enable_reg = 0x703c,
125878412c26SAmit Nischal 		.enable_mask = BIT(0),
125978412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
126078412c26SAmit Nischal 			.name = "cam_cc_ipe_0_ahb_clk",
126178412c26SAmit Nischal 			.parent_names = (const char *[]){
126278412c26SAmit Nischal 				"cam_cc_slow_ahb_clk_src",
126378412c26SAmit Nischal 			},
126478412c26SAmit Nischal 			.num_parents = 1,
126578412c26SAmit Nischal 			.flags = CLK_SET_RATE_PARENT,
126678412c26SAmit Nischal 			.ops = &clk_branch2_ops,
126778412c26SAmit Nischal 		},
126878412c26SAmit Nischal 	},
126978412c26SAmit Nischal };
127078412c26SAmit Nischal 
127178412c26SAmit Nischal static struct clk_branch cam_cc_ipe_0_areg_clk = {
127278412c26SAmit Nischal 	.halt_reg = 0x7038,
127378412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
127478412c26SAmit Nischal 	.clkr = {
127578412c26SAmit Nischal 		.enable_reg = 0x7038,
127678412c26SAmit Nischal 		.enable_mask = BIT(0),
127778412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
127878412c26SAmit Nischal 			.name = "cam_cc_ipe_0_areg_clk",
127978412c26SAmit Nischal 			.parent_names = (const char *[]){
128078412c26SAmit Nischal 				"cam_cc_fast_ahb_clk_src",
128178412c26SAmit Nischal 			},
128278412c26SAmit Nischal 			.num_parents = 1,
128378412c26SAmit Nischal 			.flags = CLK_SET_RATE_PARENT,
128478412c26SAmit Nischal 			.ops = &clk_branch2_ops,
128578412c26SAmit Nischal 		},
128678412c26SAmit Nischal 	},
128778412c26SAmit Nischal };
128878412c26SAmit Nischal 
128978412c26SAmit Nischal static struct clk_branch cam_cc_ipe_0_axi_clk = {
129078412c26SAmit Nischal 	.halt_reg = 0x7034,
129178412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
129278412c26SAmit Nischal 	.clkr = {
129378412c26SAmit Nischal 		.enable_reg = 0x7034,
129478412c26SAmit Nischal 		.enable_mask = BIT(0),
129578412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
129678412c26SAmit Nischal 			.name = "cam_cc_ipe_0_axi_clk",
129778412c26SAmit Nischal 			.ops = &clk_branch2_ops,
129878412c26SAmit Nischal 		},
129978412c26SAmit Nischal 	},
130078412c26SAmit Nischal };
130178412c26SAmit Nischal 
130278412c26SAmit Nischal static struct clk_branch cam_cc_ipe_0_clk = {
130378412c26SAmit Nischal 	.halt_reg = 0x7024,
130478412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
130578412c26SAmit Nischal 	.clkr = {
130678412c26SAmit Nischal 		.enable_reg = 0x7024,
130778412c26SAmit Nischal 		.enable_mask = BIT(0),
130878412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
130978412c26SAmit Nischal 			.name = "cam_cc_ipe_0_clk",
131078412c26SAmit Nischal 			.parent_names = (const char *[]){
131178412c26SAmit Nischal 				"cam_cc_ipe_0_clk_src",
131278412c26SAmit Nischal 			},
131378412c26SAmit Nischal 			.num_parents = 1,
131478412c26SAmit Nischal 			.flags = CLK_SET_RATE_PARENT,
131578412c26SAmit Nischal 			.ops = &clk_branch2_ops,
131678412c26SAmit Nischal 		},
131778412c26SAmit Nischal 	},
131878412c26SAmit Nischal };
131978412c26SAmit Nischal 
132078412c26SAmit Nischal static struct clk_branch cam_cc_ipe_1_ahb_clk = {
132178412c26SAmit Nischal 	.halt_reg = 0x803c,
132278412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
132378412c26SAmit Nischal 	.clkr = {
132478412c26SAmit Nischal 		.enable_reg = 0x803c,
132578412c26SAmit Nischal 		.enable_mask = BIT(0),
132678412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
132778412c26SAmit Nischal 			.name = "cam_cc_ipe_1_ahb_clk",
132878412c26SAmit Nischal 			.parent_names = (const char *[]){
132978412c26SAmit Nischal 				"cam_cc_slow_ahb_clk_src",
133078412c26SAmit Nischal 			},
133178412c26SAmit Nischal 			.num_parents = 1,
133278412c26SAmit Nischal 			.flags = CLK_SET_RATE_PARENT,
133378412c26SAmit Nischal 			.ops = &clk_branch2_ops,
133478412c26SAmit Nischal 		},
133578412c26SAmit Nischal 	},
133678412c26SAmit Nischal };
133778412c26SAmit Nischal 
133878412c26SAmit Nischal static struct clk_branch cam_cc_ipe_1_areg_clk = {
133978412c26SAmit Nischal 	.halt_reg = 0x8038,
134078412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
134178412c26SAmit Nischal 	.clkr = {
134278412c26SAmit Nischal 		.enable_reg = 0x8038,
134378412c26SAmit Nischal 		.enable_mask = BIT(0),
134478412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
134578412c26SAmit Nischal 			.name = "cam_cc_ipe_1_areg_clk",
134678412c26SAmit Nischal 			.parent_names = (const char *[]){
134778412c26SAmit Nischal 				"cam_cc_fast_ahb_clk_src",
134878412c26SAmit Nischal 			},
134978412c26SAmit Nischal 			.num_parents = 1,
135078412c26SAmit Nischal 			.flags = CLK_SET_RATE_PARENT,
135178412c26SAmit Nischal 			.ops = &clk_branch2_ops,
135278412c26SAmit Nischal 		},
135378412c26SAmit Nischal 	},
135478412c26SAmit Nischal };
135578412c26SAmit Nischal 
135678412c26SAmit Nischal static struct clk_branch cam_cc_ipe_1_axi_clk = {
135778412c26SAmit Nischal 	.halt_reg = 0x8034,
135878412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
135978412c26SAmit Nischal 	.clkr = {
136078412c26SAmit Nischal 		.enable_reg = 0x8034,
136178412c26SAmit Nischal 		.enable_mask = BIT(0),
136278412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
136378412c26SAmit Nischal 			.name = "cam_cc_ipe_1_axi_clk",
136478412c26SAmit Nischal 			.ops = &clk_branch2_ops,
136578412c26SAmit Nischal 		},
136678412c26SAmit Nischal 	},
136778412c26SAmit Nischal };
136878412c26SAmit Nischal 
136978412c26SAmit Nischal static struct clk_branch cam_cc_ipe_1_clk = {
137078412c26SAmit Nischal 	.halt_reg = 0x8024,
137178412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
137278412c26SAmit Nischal 	.clkr = {
137378412c26SAmit Nischal 		.enable_reg = 0x8024,
137478412c26SAmit Nischal 		.enable_mask = BIT(0),
137578412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
137678412c26SAmit Nischal 			.name = "cam_cc_ipe_1_clk",
137778412c26SAmit Nischal 			.parent_names = (const char *[]){
137878412c26SAmit Nischal 				"cam_cc_ipe_1_clk_src",
137978412c26SAmit Nischal 			},
138078412c26SAmit Nischal 			.num_parents = 1,
138178412c26SAmit Nischal 			.flags = CLK_SET_RATE_PARENT,
138278412c26SAmit Nischal 			.ops = &clk_branch2_ops,
138378412c26SAmit Nischal 		},
138478412c26SAmit Nischal 	},
138578412c26SAmit Nischal };
138678412c26SAmit Nischal 
138778412c26SAmit Nischal static struct clk_branch cam_cc_jpeg_clk = {
138878412c26SAmit Nischal 	.halt_reg = 0xb064,
138978412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
139078412c26SAmit Nischal 	.clkr = {
139178412c26SAmit Nischal 		.enable_reg = 0xb064,
139278412c26SAmit Nischal 		.enable_mask = BIT(0),
139378412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
139478412c26SAmit Nischal 			.name = "cam_cc_jpeg_clk",
139578412c26SAmit Nischal 			.parent_names = (const char *[]){
139678412c26SAmit Nischal 				"cam_cc_jpeg_clk_src",
139778412c26SAmit Nischal 			},
139878412c26SAmit Nischal 			.num_parents = 1,
139978412c26SAmit Nischal 			.flags = CLK_SET_RATE_PARENT,
140078412c26SAmit Nischal 			.ops = &clk_branch2_ops,
140178412c26SAmit Nischal 		},
140278412c26SAmit Nischal 	},
140378412c26SAmit Nischal };
140478412c26SAmit Nischal 
140578412c26SAmit Nischal static struct clk_branch cam_cc_lrme_clk = {
140678412c26SAmit Nischal 	.halt_reg = 0xb110,
140778412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
140878412c26SAmit Nischal 	.clkr = {
140978412c26SAmit Nischal 		.enable_reg = 0xb110,
141078412c26SAmit Nischal 		.enable_mask = BIT(0),
141178412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
141278412c26SAmit Nischal 			.name = "cam_cc_lrme_clk",
141378412c26SAmit Nischal 			.parent_names = (const char *[]){
141478412c26SAmit Nischal 				"cam_cc_lrme_clk_src",
141578412c26SAmit Nischal 			},
141678412c26SAmit Nischal 			.num_parents = 1,
141778412c26SAmit Nischal 			.flags = CLK_SET_RATE_PARENT,
141878412c26SAmit Nischal 			.ops = &clk_branch2_ops,
141978412c26SAmit Nischal 		},
142078412c26SAmit Nischal 	},
142178412c26SAmit Nischal };
142278412c26SAmit Nischal 
142378412c26SAmit Nischal static struct clk_branch cam_cc_mclk0_clk = {
142478412c26SAmit Nischal 	.halt_reg = 0x401c,
142578412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
142678412c26SAmit Nischal 	.clkr = {
142778412c26SAmit Nischal 		.enable_reg = 0x401c,
142878412c26SAmit Nischal 		.enable_mask = BIT(0),
142978412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
143078412c26SAmit Nischal 			.name = "cam_cc_mclk0_clk",
143178412c26SAmit Nischal 			.parent_names = (const char *[]){
143278412c26SAmit Nischal 				"cam_cc_mclk0_clk_src",
143378412c26SAmit Nischal 			},
143478412c26SAmit Nischal 			.num_parents = 1,
143578412c26SAmit Nischal 			.flags = CLK_SET_RATE_PARENT,
143678412c26SAmit Nischal 			.ops = &clk_branch2_ops,
143778412c26SAmit Nischal 		},
143878412c26SAmit Nischal 	},
143978412c26SAmit Nischal };
144078412c26SAmit Nischal 
144178412c26SAmit Nischal static struct clk_branch cam_cc_mclk1_clk = {
144278412c26SAmit Nischal 	.halt_reg = 0x403c,
144378412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
144478412c26SAmit Nischal 	.clkr = {
144578412c26SAmit Nischal 		.enable_reg = 0x403c,
144678412c26SAmit Nischal 		.enable_mask = BIT(0),
144778412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
144878412c26SAmit Nischal 			.name = "cam_cc_mclk1_clk",
144978412c26SAmit Nischal 			.parent_names = (const char *[]){
145078412c26SAmit Nischal 				"cam_cc_mclk1_clk_src",
145178412c26SAmit Nischal 			},
145278412c26SAmit Nischal 			.num_parents = 1,
145378412c26SAmit Nischal 			.flags = CLK_SET_RATE_PARENT,
145478412c26SAmit Nischal 			.ops = &clk_branch2_ops,
145578412c26SAmit Nischal 		},
145678412c26SAmit Nischal 	},
145778412c26SAmit Nischal };
145878412c26SAmit Nischal 
145978412c26SAmit Nischal static struct clk_branch cam_cc_mclk2_clk = {
146078412c26SAmit Nischal 	.halt_reg = 0x405c,
146178412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
146278412c26SAmit Nischal 	.clkr = {
146378412c26SAmit Nischal 		.enable_reg = 0x405c,
146478412c26SAmit Nischal 		.enable_mask = BIT(0),
146578412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
146678412c26SAmit Nischal 			.name = "cam_cc_mclk2_clk",
146778412c26SAmit Nischal 			.parent_names = (const char *[]){
146878412c26SAmit Nischal 				"cam_cc_mclk2_clk_src",
146978412c26SAmit Nischal 			},
147078412c26SAmit Nischal 			.num_parents = 1,
147178412c26SAmit Nischal 			.flags = CLK_SET_RATE_PARENT,
147278412c26SAmit Nischal 			.ops = &clk_branch2_ops,
147378412c26SAmit Nischal 		},
147478412c26SAmit Nischal 	},
147578412c26SAmit Nischal };
147678412c26SAmit Nischal 
147778412c26SAmit Nischal static struct clk_branch cam_cc_mclk3_clk = {
147878412c26SAmit Nischal 	.halt_reg = 0x407c,
147978412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
148078412c26SAmit Nischal 	.clkr = {
148178412c26SAmit Nischal 		.enable_reg = 0x407c,
148278412c26SAmit Nischal 		.enable_mask = BIT(0),
148378412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
148478412c26SAmit Nischal 			.name = "cam_cc_mclk3_clk",
148578412c26SAmit Nischal 			.parent_names = (const char *[]){
148678412c26SAmit Nischal 				"cam_cc_mclk3_clk_src",
148778412c26SAmit Nischal 			},
148878412c26SAmit Nischal 			.num_parents = 1,
148978412c26SAmit Nischal 			.flags = CLK_SET_RATE_PARENT,
149078412c26SAmit Nischal 			.ops = &clk_branch2_ops,
149178412c26SAmit Nischal 		},
149278412c26SAmit Nischal 	},
149378412c26SAmit Nischal };
149478412c26SAmit Nischal 
149578412c26SAmit Nischal static struct clk_branch cam_cc_soc_ahb_clk = {
149678412c26SAmit Nischal 	.halt_reg = 0xb13c,
149778412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
149878412c26SAmit Nischal 	.clkr = {
149978412c26SAmit Nischal 		.enable_reg = 0xb13c,
150078412c26SAmit Nischal 		.enable_mask = BIT(0),
150178412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
150278412c26SAmit Nischal 			.name = "cam_cc_soc_ahb_clk",
150378412c26SAmit Nischal 			.ops = &clk_branch2_ops,
150478412c26SAmit Nischal 		},
150578412c26SAmit Nischal 	},
150678412c26SAmit Nischal };
150778412c26SAmit Nischal 
150878412c26SAmit Nischal static struct clk_branch cam_cc_sys_tmr_clk = {
150978412c26SAmit Nischal 	.halt_reg = 0xb0a8,
151078412c26SAmit Nischal 	.halt_check = BRANCH_HALT,
151178412c26SAmit Nischal 	.clkr = {
151278412c26SAmit Nischal 		.enable_reg = 0xb0a8,
151378412c26SAmit Nischal 		.enable_mask = BIT(0),
151478412c26SAmit Nischal 		.hw.init = &(struct clk_init_data){
151578412c26SAmit Nischal 			.name = "cam_cc_sys_tmr_clk",
151678412c26SAmit Nischal 			.ops = &clk_branch2_ops,
151778412c26SAmit Nischal 		},
151878412c26SAmit Nischal 	},
151978412c26SAmit Nischal };
152078412c26SAmit Nischal 
152178412c26SAmit Nischal static struct gdsc bps_gdsc = {
152278412c26SAmit Nischal 	.gdscr = 0x6004,
152378412c26SAmit Nischal 	.pd = {
152478412c26SAmit Nischal 		.name = "bps_gdsc",
152578412c26SAmit Nischal 	},
152678412c26SAmit Nischal 	.flags = HW_CTRL | POLL_CFG_GDSCR,
152778412c26SAmit Nischal 	.pwrsts = PWRSTS_OFF_ON,
152878412c26SAmit Nischal };
152978412c26SAmit Nischal 
153078412c26SAmit Nischal static struct gdsc ipe_0_gdsc = {
153178412c26SAmit Nischal 	.gdscr = 0x7004,
153278412c26SAmit Nischal 	.pd = {
153378412c26SAmit Nischal 		.name = "ipe_0_gdsc",
153478412c26SAmit Nischal 	},
153578412c26SAmit Nischal 	.flags = HW_CTRL | POLL_CFG_GDSCR,
153678412c26SAmit Nischal 	.pwrsts = PWRSTS_OFF_ON,
153778412c26SAmit Nischal };
153878412c26SAmit Nischal 
153978412c26SAmit Nischal static struct gdsc ipe_1_gdsc = {
154078412c26SAmit Nischal 	.gdscr = 0x8004,
154178412c26SAmit Nischal 	.pd = {
154278412c26SAmit Nischal 		.name = "ipe_1_gdsc",
154378412c26SAmit Nischal 	},
154478412c26SAmit Nischal 	.flags = HW_CTRL | POLL_CFG_GDSCR,
154578412c26SAmit Nischal 	.pwrsts = PWRSTS_OFF_ON,
154678412c26SAmit Nischal };
154778412c26SAmit Nischal 
154878412c26SAmit Nischal static struct gdsc ife_0_gdsc = {
154978412c26SAmit Nischal 	.gdscr = 0x9004,
155078412c26SAmit Nischal 	.pd = {
155178412c26SAmit Nischal 		.name = "ife_0_gdsc",
155278412c26SAmit Nischal 	},
155378412c26SAmit Nischal 	.flags = POLL_CFG_GDSCR,
155478412c26SAmit Nischal 	.pwrsts = PWRSTS_OFF_ON,
155578412c26SAmit Nischal };
155678412c26SAmit Nischal 
155778412c26SAmit Nischal static struct gdsc ife_1_gdsc = {
155878412c26SAmit Nischal 	.gdscr = 0xa004,
155978412c26SAmit Nischal 	.pd = {
156078412c26SAmit Nischal 		.name = "ife_1_gdsc",
156178412c26SAmit Nischal 	},
156278412c26SAmit Nischal 	.flags = POLL_CFG_GDSCR,
156378412c26SAmit Nischal 	.pwrsts = PWRSTS_OFF_ON,
156478412c26SAmit Nischal };
156578412c26SAmit Nischal 
156678412c26SAmit Nischal static struct gdsc titan_top_gdsc = {
156778412c26SAmit Nischal 	.gdscr = 0xb134,
156878412c26SAmit Nischal 	.pd = {
156978412c26SAmit Nischal 		.name = "titan_top_gdsc",
157078412c26SAmit Nischal 	},
157178412c26SAmit Nischal 	.flags = POLL_CFG_GDSCR,
157278412c26SAmit Nischal 	.pwrsts = PWRSTS_OFF_ON,
157378412c26SAmit Nischal };
157478412c26SAmit Nischal 
157578412c26SAmit Nischal static struct clk_regmap *cam_cc_sdm845_clocks[] = {
157678412c26SAmit Nischal 	[CAM_CC_BPS_AHB_CLK] = &cam_cc_bps_ahb_clk.clkr,
157778412c26SAmit Nischal 	[CAM_CC_BPS_AREG_CLK] = &cam_cc_bps_areg_clk.clkr,
157878412c26SAmit Nischal 	[CAM_CC_BPS_AXI_CLK] = &cam_cc_bps_axi_clk.clkr,
157978412c26SAmit Nischal 	[CAM_CC_BPS_CLK] = &cam_cc_bps_clk.clkr,
158078412c26SAmit Nischal 	[CAM_CC_BPS_CLK_SRC] = &cam_cc_bps_clk_src.clkr,
158178412c26SAmit Nischal 	[CAM_CC_CAMNOC_ATB_CLK] = &cam_cc_camnoc_atb_clk.clkr,
158278412c26SAmit Nischal 	[CAM_CC_CAMNOC_AXI_CLK] = &cam_cc_camnoc_axi_clk.clkr,
158378412c26SAmit Nischal 	[CAM_CC_CCI_CLK] = &cam_cc_cci_clk.clkr,
158478412c26SAmit Nischal 	[CAM_CC_CCI_CLK_SRC] = &cam_cc_cci_clk_src.clkr,
158578412c26SAmit Nischal 	[CAM_CC_CPAS_AHB_CLK] = &cam_cc_cpas_ahb_clk.clkr,
158678412c26SAmit Nischal 	[CAM_CC_CPHY_RX_CLK_SRC] = &cam_cc_cphy_rx_clk_src.clkr,
158778412c26SAmit Nischal 	[CAM_CC_CSI0PHYTIMER_CLK] = &cam_cc_csi0phytimer_clk.clkr,
158878412c26SAmit Nischal 	[CAM_CC_CSI0PHYTIMER_CLK_SRC] = &cam_cc_csi0phytimer_clk_src.clkr,
158978412c26SAmit Nischal 	[CAM_CC_CSI1PHYTIMER_CLK] = &cam_cc_csi1phytimer_clk.clkr,
159078412c26SAmit Nischal 	[CAM_CC_CSI1PHYTIMER_CLK_SRC] = &cam_cc_csi1phytimer_clk_src.clkr,
159178412c26SAmit Nischal 	[CAM_CC_CSI2PHYTIMER_CLK] = &cam_cc_csi2phytimer_clk.clkr,
159278412c26SAmit Nischal 	[CAM_CC_CSI2PHYTIMER_CLK_SRC] = &cam_cc_csi2phytimer_clk_src.clkr,
159378412c26SAmit Nischal 	[CAM_CC_CSI3PHYTIMER_CLK] = &cam_cc_csi3phytimer_clk.clkr,
159478412c26SAmit Nischal 	[CAM_CC_CSI3PHYTIMER_CLK_SRC] = &cam_cc_csi3phytimer_clk_src.clkr,
159578412c26SAmit Nischal 	[CAM_CC_CSIPHY0_CLK] = &cam_cc_csiphy0_clk.clkr,
159678412c26SAmit Nischal 	[CAM_CC_CSIPHY1_CLK] = &cam_cc_csiphy1_clk.clkr,
159778412c26SAmit Nischal 	[CAM_CC_CSIPHY2_CLK] = &cam_cc_csiphy2_clk.clkr,
159878412c26SAmit Nischal 	[CAM_CC_CSIPHY3_CLK] = &cam_cc_csiphy3_clk.clkr,
159978412c26SAmit Nischal 	[CAM_CC_FAST_AHB_CLK_SRC] = &cam_cc_fast_ahb_clk_src.clkr,
160078412c26SAmit Nischal 	[CAM_CC_FD_CORE_CLK] = &cam_cc_fd_core_clk.clkr,
160178412c26SAmit Nischal 	[CAM_CC_FD_CORE_CLK_SRC] = &cam_cc_fd_core_clk_src.clkr,
160278412c26SAmit Nischal 	[CAM_CC_FD_CORE_UAR_CLK] = &cam_cc_fd_core_uar_clk.clkr,
160378412c26SAmit Nischal 	[CAM_CC_ICP_APB_CLK] = &cam_cc_icp_apb_clk.clkr,
160478412c26SAmit Nischal 	[CAM_CC_ICP_ATB_CLK] = &cam_cc_icp_atb_clk.clkr,
160578412c26SAmit Nischal 	[CAM_CC_ICP_CLK] = &cam_cc_icp_clk.clkr,
160678412c26SAmit Nischal 	[CAM_CC_ICP_CLK_SRC] = &cam_cc_icp_clk_src.clkr,
160778412c26SAmit Nischal 	[CAM_CC_ICP_CTI_CLK] = &cam_cc_icp_cti_clk.clkr,
160878412c26SAmit Nischal 	[CAM_CC_ICP_TS_CLK] = &cam_cc_icp_ts_clk.clkr,
160978412c26SAmit Nischal 	[CAM_CC_IFE_0_AXI_CLK] = &cam_cc_ife_0_axi_clk.clkr,
161078412c26SAmit Nischal 	[CAM_CC_IFE_0_CLK] = &cam_cc_ife_0_clk.clkr,
161178412c26SAmit Nischal 	[CAM_CC_IFE_0_CLK_SRC] = &cam_cc_ife_0_clk_src.clkr,
161278412c26SAmit Nischal 	[CAM_CC_IFE_0_CPHY_RX_CLK] = &cam_cc_ife_0_cphy_rx_clk.clkr,
161378412c26SAmit Nischal 	[CAM_CC_IFE_0_CSID_CLK] = &cam_cc_ife_0_csid_clk.clkr,
161478412c26SAmit Nischal 	[CAM_CC_IFE_0_CSID_CLK_SRC] = &cam_cc_ife_0_csid_clk_src.clkr,
161578412c26SAmit Nischal 	[CAM_CC_IFE_0_DSP_CLK] = &cam_cc_ife_0_dsp_clk.clkr,
161678412c26SAmit Nischal 	[CAM_CC_IFE_1_AXI_CLK] = &cam_cc_ife_1_axi_clk.clkr,
161778412c26SAmit Nischal 	[CAM_CC_IFE_1_CLK] = &cam_cc_ife_1_clk.clkr,
161878412c26SAmit Nischal 	[CAM_CC_IFE_1_CLK_SRC] = &cam_cc_ife_1_clk_src.clkr,
161978412c26SAmit Nischal 	[CAM_CC_IFE_1_CPHY_RX_CLK] = &cam_cc_ife_1_cphy_rx_clk.clkr,
162078412c26SAmit Nischal 	[CAM_CC_IFE_1_CSID_CLK] = &cam_cc_ife_1_csid_clk.clkr,
162178412c26SAmit Nischal 	[CAM_CC_IFE_1_CSID_CLK_SRC] = &cam_cc_ife_1_csid_clk_src.clkr,
162278412c26SAmit Nischal 	[CAM_CC_IFE_1_DSP_CLK] = &cam_cc_ife_1_dsp_clk.clkr,
162378412c26SAmit Nischal 	[CAM_CC_IFE_LITE_CLK] = &cam_cc_ife_lite_clk.clkr,
162478412c26SAmit Nischal 	[CAM_CC_IFE_LITE_CLK_SRC] = &cam_cc_ife_lite_clk_src.clkr,
162578412c26SAmit Nischal 	[CAM_CC_IFE_LITE_CPHY_RX_CLK] = &cam_cc_ife_lite_cphy_rx_clk.clkr,
162678412c26SAmit Nischal 	[CAM_CC_IFE_LITE_CSID_CLK] = &cam_cc_ife_lite_csid_clk.clkr,
162778412c26SAmit Nischal 	[CAM_CC_IFE_LITE_CSID_CLK_SRC] = &cam_cc_ife_lite_csid_clk_src.clkr,
162878412c26SAmit Nischal 	[CAM_CC_IPE_0_AHB_CLK] = &cam_cc_ipe_0_ahb_clk.clkr,
162978412c26SAmit Nischal 	[CAM_CC_IPE_0_AREG_CLK] = &cam_cc_ipe_0_areg_clk.clkr,
163078412c26SAmit Nischal 	[CAM_CC_IPE_0_AXI_CLK] = &cam_cc_ipe_0_axi_clk.clkr,
163178412c26SAmit Nischal 	[CAM_CC_IPE_0_CLK] = &cam_cc_ipe_0_clk.clkr,
163278412c26SAmit Nischal 	[CAM_CC_IPE_0_CLK_SRC] = &cam_cc_ipe_0_clk_src.clkr,
163378412c26SAmit Nischal 	[CAM_CC_IPE_1_AHB_CLK] = &cam_cc_ipe_1_ahb_clk.clkr,
163478412c26SAmit Nischal 	[CAM_CC_IPE_1_AREG_CLK] = &cam_cc_ipe_1_areg_clk.clkr,
163578412c26SAmit Nischal 	[CAM_CC_IPE_1_AXI_CLK] = &cam_cc_ipe_1_axi_clk.clkr,
163678412c26SAmit Nischal 	[CAM_CC_IPE_1_CLK] = &cam_cc_ipe_1_clk.clkr,
163778412c26SAmit Nischal 	[CAM_CC_IPE_1_CLK_SRC] = &cam_cc_ipe_1_clk_src.clkr,
163878412c26SAmit Nischal 	[CAM_CC_JPEG_CLK] = &cam_cc_jpeg_clk.clkr,
163978412c26SAmit Nischal 	[CAM_CC_JPEG_CLK_SRC] = &cam_cc_jpeg_clk_src.clkr,
164078412c26SAmit Nischal 	[CAM_CC_LRME_CLK] = &cam_cc_lrme_clk.clkr,
164178412c26SAmit Nischal 	[CAM_CC_LRME_CLK_SRC] = &cam_cc_lrme_clk_src.clkr,
164278412c26SAmit Nischal 	[CAM_CC_MCLK0_CLK] = &cam_cc_mclk0_clk.clkr,
164378412c26SAmit Nischal 	[CAM_CC_MCLK0_CLK_SRC] = &cam_cc_mclk0_clk_src.clkr,
164478412c26SAmit Nischal 	[CAM_CC_MCLK1_CLK] = &cam_cc_mclk1_clk.clkr,
164578412c26SAmit Nischal 	[CAM_CC_MCLK1_CLK_SRC] = &cam_cc_mclk1_clk_src.clkr,
164678412c26SAmit Nischal 	[CAM_CC_MCLK2_CLK] = &cam_cc_mclk2_clk.clkr,
164778412c26SAmit Nischal 	[CAM_CC_MCLK2_CLK_SRC] = &cam_cc_mclk2_clk_src.clkr,
164878412c26SAmit Nischal 	[CAM_CC_MCLK3_CLK] = &cam_cc_mclk3_clk.clkr,
164978412c26SAmit Nischal 	[CAM_CC_MCLK3_CLK_SRC] = &cam_cc_mclk3_clk_src.clkr,
165078412c26SAmit Nischal 	[CAM_CC_PLL0] = &cam_cc_pll0.clkr,
165178412c26SAmit Nischal 	[CAM_CC_PLL0_OUT_EVEN] = &cam_cc_pll0_out_even.clkr,
165278412c26SAmit Nischal 	[CAM_CC_PLL1] = &cam_cc_pll1.clkr,
165378412c26SAmit Nischal 	[CAM_CC_PLL1_OUT_EVEN] = &cam_cc_pll1_out_even.clkr,
165478412c26SAmit Nischal 	[CAM_CC_PLL2] = &cam_cc_pll2.clkr,
165578412c26SAmit Nischal 	[CAM_CC_PLL2_OUT_EVEN] = &cam_cc_pll2_out_even.clkr,
165678412c26SAmit Nischal 	[CAM_CC_PLL3] = &cam_cc_pll3.clkr,
165778412c26SAmit Nischal 	[CAM_CC_PLL3_OUT_EVEN] = &cam_cc_pll3_out_even.clkr,
165878412c26SAmit Nischal 	[CAM_CC_SLOW_AHB_CLK_SRC] = &cam_cc_slow_ahb_clk_src.clkr,
165978412c26SAmit Nischal 	[CAM_CC_SOC_AHB_CLK] = &cam_cc_soc_ahb_clk.clkr,
166078412c26SAmit Nischal 	[CAM_CC_SYS_TMR_CLK] = &cam_cc_sys_tmr_clk.clkr,
166178412c26SAmit Nischal };
166278412c26SAmit Nischal 
166378412c26SAmit Nischal static struct gdsc *cam_cc_sdm845_gdscs[] = {
166478412c26SAmit Nischal 	[BPS_GDSC] = &bps_gdsc,
166578412c26SAmit Nischal 	[IPE_0_GDSC] = &ipe_0_gdsc,
166678412c26SAmit Nischal 	[IPE_1_GDSC] = &ipe_1_gdsc,
166778412c26SAmit Nischal 	[IFE_0_GDSC] = &ife_0_gdsc,
166878412c26SAmit Nischal 	[IFE_1_GDSC] = &ife_1_gdsc,
166978412c26SAmit Nischal 	[TITAN_TOP_GDSC] = &titan_top_gdsc,
167078412c26SAmit Nischal };
167178412c26SAmit Nischal 
167278412c26SAmit Nischal static const struct regmap_config cam_cc_sdm845_regmap_config = {
167378412c26SAmit Nischal 	.reg_bits	= 32,
167478412c26SAmit Nischal 	.reg_stride	= 4,
167578412c26SAmit Nischal 	.val_bits	= 32,
167678412c26SAmit Nischal 	.max_register	= 0xd004,
167778412c26SAmit Nischal 	.fast_io	= true,
167878412c26SAmit Nischal };
167978412c26SAmit Nischal 
168078412c26SAmit Nischal static const struct qcom_cc_desc cam_cc_sdm845_desc = {
168178412c26SAmit Nischal 	.config = &cam_cc_sdm845_regmap_config,
168278412c26SAmit Nischal 	.clks = cam_cc_sdm845_clocks,
168378412c26SAmit Nischal 	.num_clks = ARRAY_SIZE(cam_cc_sdm845_clocks),
168478412c26SAmit Nischal 	.gdscs = cam_cc_sdm845_gdscs,
168578412c26SAmit Nischal 	.num_gdscs = ARRAY_SIZE(cam_cc_sdm845_gdscs),
168678412c26SAmit Nischal };
168778412c26SAmit Nischal 
168878412c26SAmit Nischal static const struct of_device_id cam_cc_sdm845_match_table[] = {
168978412c26SAmit Nischal 	{ .compatible = "qcom,sdm845-camcc" },
169078412c26SAmit Nischal 	{ }
169178412c26SAmit Nischal };
169278412c26SAmit Nischal MODULE_DEVICE_TABLE(of, cam_cc_sdm845_match_table);
169378412c26SAmit Nischal 
169478412c26SAmit Nischal static int cam_cc_sdm845_probe(struct platform_device *pdev)
169578412c26SAmit Nischal {
169678412c26SAmit Nischal 	struct regmap *regmap;
169778412c26SAmit Nischal 	struct alpha_pll_config cam_cc_pll_config = { };
169878412c26SAmit Nischal 
169978412c26SAmit Nischal 	regmap = qcom_cc_map(pdev, &cam_cc_sdm845_desc);
170078412c26SAmit Nischal 	if (IS_ERR(regmap))
170178412c26SAmit Nischal 		return PTR_ERR(regmap);
170278412c26SAmit Nischal 
170378412c26SAmit Nischal 	cam_cc_pll_config.l = 0x1f;
170478412c26SAmit Nischal 	cam_cc_pll_config.alpha = 0x4000;
170578412c26SAmit Nischal 	clk_fabia_pll_configure(&cam_cc_pll0, regmap, &cam_cc_pll_config);
170678412c26SAmit Nischal 
170778412c26SAmit Nischal 	cam_cc_pll_config.l = 0x2a;
170878412c26SAmit Nischal 	cam_cc_pll_config.alpha = 0x1556;
170978412c26SAmit Nischal 	clk_fabia_pll_configure(&cam_cc_pll1, regmap, &cam_cc_pll_config);
171078412c26SAmit Nischal 
171178412c26SAmit Nischal 	cam_cc_pll_config.l = 0x32;
171278412c26SAmit Nischal 	cam_cc_pll_config.alpha = 0x0;
171378412c26SAmit Nischal 	clk_fabia_pll_configure(&cam_cc_pll2, regmap, &cam_cc_pll_config);
171478412c26SAmit Nischal 
171578412c26SAmit Nischal 	cam_cc_pll_config.l = 0x14;
171678412c26SAmit Nischal 	clk_fabia_pll_configure(&cam_cc_pll3, regmap, &cam_cc_pll_config);
171778412c26SAmit Nischal 
171878412c26SAmit Nischal 	return qcom_cc_really_probe(pdev, &cam_cc_sdm845_desc, regmap);
171978412c26SAmit Nischal }
172078412c26SAmit Nischal 
172178412c26SAmit Nischal static struct platform_driver cam_cc_sdm845_driver = {
172278412c26SAmit Nischal 	.probe	= cam_cc_sdm845_probe,
172378412c26SAmit Nischal 	.driver	= {
172478412c26SAmit Nischal 		.name = "sdm845-camcc",
172578412c26SAmit Nischal 		.of_match_table = cam_cc_sdm845_match_table,
172678412c26SAmit Nischal 	},
172778412c26SAmit Nischal };
172878412c26SAmit Nischal 
172978412c26SAmit Nischal static int __init cam_cc_sdm845_init(void)
173078412c26SAmit Nischal {
173178412c26SAmit Nischal 	return platform_driver_register(&cam_cc_sdm845_driver);
173278412c26SAmit Nischal }
173378412c26SAmit Nischal subsys_initcall(cam_cc_sdm845_init);
173478412c26SAmit Nischal 
173578412c26SAmit Nischal static void __exit cam_cc_sdm845_exit(void)
173678412c26SAmit Nischal {
173778412c26SAmit Nischal 	platform_driver_unregister(&cam_cc_sdm845_driver);
173878412c26SAmit Nischal }
173978412c26SAmit Nischal module_exit(cam_cc_sdm845_exit);
174078412c26SAmit Nischal 
174178412c26SAmit Nischal MODULE_DESCRIPTION("QTI CAM_CC SDM845 Driver");
174278412c26SAmit Nischal MODULE_LICENSE("GPL v2");
1743