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