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