197255eedSJagadeesh Kona // SPDX-License-Identifier: GPL-2.0-only
297255eedSJagadeesh Kona /*
397255eedSJagadeesh Kona * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
497255eedSJagadeesh Kona */
597255eedSJagadeesh Kona
697255eedSJagadeesh Kona #include <linux/clk-provider.h>
797255eedSJagadeesh Kona #include <linux/module.h>
897255eedSJagadeesh Kona #include <linux/platform_device.h>
997255eedSJagadeesh Kona #include <linux/regmap.h>
1097255eedSJagadeesh Kona
1197255eedSJagadeesh Kona #include <dt-bindings/clock/qcom,glymur-camcc.h>
1297255eedSJagadeesh Kona
1397255eedSJagadeesh Kona #include "clk-alpha-pll.h"
1497255eedSJagadeesh Kona #include "clk-branch.h"
1597255eedSJagadeesh Kona #include "clk-rcg.h"
1697255eedSJagadeesh Kona #include "clk-regmap.h"
1797255eedSJagadeesh Kona #include "common.h"
1897255eedSJagadeesh Kona #include "gdsc.h"
1997255eedSJagadeesh Kona #include "reset.h"
2097255eedSJagadeesh Kona
2197255eedSJagadeesh Kona enum {
2297255eedSJagadeesh Kona DT_IFACE,
2397255eedSJagadeesh Kona DT_BI_TCXO,
2497255eedSJagadeesh Kona DT_BI_TCXO_AO,
2597255eedSJagadeesh Kona DT_SLEEP_CLK,
2697255eedSJagadeesh Kona };
2797255eedSJagadeesh Kona
2897255eedSJagadeesh Kona enum {
2997255eedSJagadeesh Kona P_BI_TCXO,
3097255eedSJagadeesh Kona P_BI_TCXO_AO,
3197255eedSJagadeesh Kona P_CAM_CC_PLL0_OUT_EVEN,
3297255eedSJagadeesh Kona P_CAM_CC_PLL0_OUT_MAIN,
3397255eedSJagadeesh Kona P_CAM_CC_PLL0_OUT_ODD,
3497255eedSJagadeesh Kona P_CAM_CC_PLL1_OUT_EVEN,
3597255eedSJagadeesh Kona P_CAM_CC_PLL2_OUT_EVEN,
3697255eedSJagadeesh Kona P_CAM_CC_PLL2_OUT_MAIN,
3797255eedSJagadeesh Kona P_CAM_CC_PLL3_OUT_EVEN,
3897255eedSJagadeesh Kona P_CAM_CC_PLL4_OUT_EVEN,
3997255eedSJagadeesh Kona P_CAM_CC_PLL5_OUT_EVEN,
4097255eedSJagadeesh Kona P_SLEEP_CLK,
4197255eedSJagadeesh Kona };
4297255eedSJagadeesh Kona
4397255eedSJagadeesh Kona static const struct pll_vco rivian_eko_t_vco[] = {
4497255eedSJagadeesh Kona { 883200000, 1171200000, 0 },
4597255eedSJagadeesh Kona };
4697255eedSJagadeesh Kona
4797255eedSJagadeesh Kona static const struct pll_vco taycan_eko_t_vco[] = {
4897255eedSJagadeesh Kona { 249600000, 2500000000, 0 },
4997255eedSJagadeesh Kona };
5097255eedSJagadeesh Kona
5197255eedSJagadeesh Kona /* 1200.0 MHz Configuration */
5297255eedSJagadeesh Kona static const struct alpha_pll_config cam_cc_pll0_config = {
5397255eedSJagadeesh Kona .l = 0x3e,
5497255eedSJagadeesh Kona .alpha = 0x8000,
5597255eedSJagadeesh Kona .config_ctl_val = 0x25c400e7,
5697255eedSJagadeesh Kona .config_ctl_hi_val = 0x0a8060e0,
5797255eedSJagadeesh Kona .config_ctl_hi1_val = 0xf51dea20,
5897255eedSJagadeesh Kona .user_ctl_val = 0x00008408,
5997255eedSJagadeesh Kona .user_ctl_hi_val = 0x00000002,
6097255eedSJagadeesh Kona };
6197255eedSJagadeesh Kona
6297255eedSJagadeesh Kona static struct clk_alpha_pll cam_cc_pll0 = {
6397255eedSJagadeesh Kona .offset = 0x0,
6497255eedSJagadeesh Kona .config = &cam_cc_pll0_config,
6597255eedSJagadeesh Kona .vco_table = taycan_eko_t_vco,
6697255eedSJagadeesh Kona .num_vco = ARRAY_SIZE(taycan_eko_t_vco),
6797255eedSJagadeesh Kona .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EKO_T],
6897255eedSJagadeesh Kona .clkr = {
6997255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
7097255eedSJagadeesh Kona .name = "cam_cc_pll0",
7197255eedSJagadeesh Kona .parent_data = &(const struct clk_parent_data) {
7297255eedSJagadeesh Kona .index = DT_BI_TCXO,
7397255eedSJagadeesh Kona },
7497255eedSJagadeesh Kona .num_parents = 1,
7597255eedSJagadeesh Kona .ops = &clk_alpha_pll_taycan_eko_t_ops,
7697255eedSJagadeesh Kona },
7797255eedSJagadeesh Kona },
7897255eedSJagadeesh Kona };
7997255eedSJagadeesh Kona
8097255eedSJagadeesh Kona static const struct clk_div_table post_div_table_cam_cc_pll0_out_even[] = {
8197255eedSJagadeesh Kona { 0x1, 2 },
8297255eedSJagadeesh Kona { }
8397255eedSJagadeesh Kona };
8497255eedSJagadeesh Kona
8597255eedSJagadeesh Kona static struct clk_alpha_pll_postdiv cam_cc_pll0_out_even = {
8697255eedSJagadeesh Kona .offset = 0x0,
8797255eedSJagadeesh Kona .post_div_shift = 10,
8897255eedSJagadeesh Kona .post_div_table = post_div_table_cam_cc_pll0_out_even,
8997255eedSJagadeesh Kona .num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll0_out_even),
9097255eedSJagadeesh Kona .width = 4,
9197255eedSJagadeesh Kona .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EKO_T],
9297255eedSJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) {
9397255eedSJagadeesh Kona .name = "cam_cc_pll0_out_even",
9497255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
9597255eedSJagadeesh Kona &cam_cc_pll0.clkr.hw,
9697255eedSJagadeesh Kona },
9797255eedSJagadeesh Kona .num_parents = 1,
9897255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
9997255eedSJagadeesh Kona .ops = &clk_alpha_pll_postdiv_taycan_eko_t_ops,
10097255eedSJagadeesh Kona },
10197255eedSJagadeesh Kona };
10297255eedSJagadeesh Kona
10397255eedSJagadeesh Kona static const struct clk_div_table post_div_table_cam_cc_pll0_out_odd[] = {
10497255eedSJagadeesh Kona { 0x2, 3 },
10597255eedSJagadeesh Kona { }
10697255eedSJagadeesh Kona };
10797255eedSJagadeesh Kona
10897255eedSJagadeesh Kona static struct clk_alpha_pll_postdiv cam_cc_pll0_out_odd = {
10997255eedSJagadeesh Kona .offset = 0x0,
11097255eedSJagadeesh Kona .post_div_shift = 14,
11197255eedSJagadeesh Kona .post_div_table = post_div_table_cam_cc_pll0_out_odd,
11297255eedSJagadeesh Kona .num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll0_out_odd),
11397255eedSJagadeesh Kona .width = 4,
11497255eedSJagadeesh Kona .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EKO_T],
11597255eedSJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) {
11697255eedSJagadeesh Kona .name = "cam_cc_pll0_out_odd",
11797255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
11897255eedSJagadeesh Kona &cam_cc_pll0.clkr.hw,
11997255eedSJagadeesh Kona },
12097255eedSJagadeesh Kona .num_parents = 1,
12197255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
12297255eedSJagadeesh Kona .ops = &clk_alpha_pll_postdiv_taycan_eko_t_ops,
12397255eedSJagadeesh Kona },
12497255eedSJagadeesh Kona };
12597255eedSJagadeesh Kona
12697255eedSJagadeesh Kona /* 608.0 MHz Configuration */
12797255eedSJagadeesh Kona static const struct alpha_pll_config cam_cc_pll1_config = {
12897255eedSJagadeesh Kona .l = 0x1f,
12997255eedSJagadeesh Kona .alpha = 0xaaaa,
13097255eedSJagadeesh Kona .config_ctl_val = 0x25c400e7,
13197255eedSJagadeesh Kona .config_ctl_hi_val = 0x0a8060e0,
13297255eedSJagadeesh Kona .config_ctl_hi1_val = 0xf51dea20,
13397255eedSJagadeesh Kona .user_ctl_val = 0x00000408,
13497255eedSJagadeesh Kona .user_ctl_hi_val = 0x00000002,
13597255eedSJagadeesh Kona };
13697255eedSJagadeesh Kona
13797255eedSJagadeesh Kona static struct clk_alpha_pll cam_cc_pll1 = {
13897255eedSJagadeesh Kona .offset = 0x1000,
13997255eedSJagadeesh Kona .config = &cam_cc_pll1_config,
14097255eedSJagadeesh Kona .vco_table = taycan_eko_t_vco,
14197255eedSJagadeesh Kona .num_vco = ARRAY_SIZE(taycan_eko_t_vco),
14297255eedSJagadeesh Kona .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EKO_T],
14397255eedSJagadeesh Kona .clkr = {
14497255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
14597255eedSJagadeesh Kona .name = "cam_cc_pll1",
14697255eedSJagadeesh Kona .parent_data = &(const struct clk_parent_data) {
14797255eedSJagadeesh Kona .index = DT_BI_TCXO,
14897255eedSJagadeesh Kona },
14997255eedSJagadeesh Kona .num_parents = 1,
15097255eedSJagadeesh Kona .ops = &clk_alpha_pll_taycan_eko_t_ops,
15197255eedSJagadeesh Kona },
15297255eedSJagadeesh Kona },
15397255eedSJagadeesh Kona };
15497255eedSJagadeesh Kona
15597255eedSJagadeesh Kona static const struct clk_div_table post_div_table_cam_cc_pll1_out_even[] = {
15697255eedSJagadeesh Kona { 0x1, 2 },
15797255eedSJagadeesh Kona { }
15897255eedSJagadeesh Kona };
15997255eedSJagadeesh Kona
16097255eedSJagadeesh Kona static struct clk_alpha_pll_postdiv cam_cc_pll1_out_even = {
16197255eedSJagadeesh Kona .offset = 0x1000,
16297255eedSJagadeesh Kona .post_div_shift = 10,
16397255eedSJagadeesh Kona .post_div_table = post_div_table_cam_cc_pll1_out_even,
16497255eedSJagadeesh Kona .num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll1_out_even),
16597255eedSJagadeesh Kona .width = 4,
16697255eedSJagadeesh Kona .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EKO_T],
16797255eedSJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) {
16897255eedSJagadeesh Kona .name = "cam_cc_pll1_out_even",
16997255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
17097255eedSJagadeesh Kona &cam_cc_pll1.clkr.hw,
17197255eedSJagadeesh Kona },
17297255eedSJagadeesh Kona .num_parents = 1,
17397255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
17497255eedSJagadeesh Kona .ops = &clk_alpha_pll_postdiv_taycan_eko_t_ops,
17597255eedSJagadeesh Kona },
17697255eedSJagadeesh Kona };
17797255eedSJagadeesh Kona
17897255eedSJagadeesh Kona /* 960.0 MHz Configuration */
17997255eedSJagadeesh Kona static const struct alpha_pll_config cam_cc_pll2_config = {
18097255eedSJagadeesh Kona .l = 0x32,
18197255eedSJagadeesh Kona .alpha = 0x0,
18297255eedSJagadeesh Kona .config_ctl_val = 0x12000000,
18397255eedSJagadeesh Kona .config_ctl_hi_val = 0x00890263,
18497255eedSJagadeesh Kona .config_ctl_hi1_val = 0x1af04237,
18597255eedSJagadeesh Kona .config_ctl_hi2_val = 0x00000000,
18697255eedSJagadeesh Kona };
18797255eedSJagadeesh Kona
18897255eedSJagadeesh Kona static struct clk_alpha_pll cam_cc_pll2 = {
18997255eedSJagadeesh Kona .offset = 0x2000,
19097255eedSJagadeesh Kona .config = &cam_cc_pll2_config,
19197255eedSJagadeesh Kona .vco_table = rivian_eko_t_vco,
19297255eedSJagadeesh Kona .num_vco = ARRAY_SIZE(rivian_eko_t_vco),
19397255eedSJagadeesh Kona .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_RIVIAN_EKO_T],
19497255eedSJagadeesh Kona .clkr = {
19597255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
19697255eedSJagadeesh Kona .name = "cam_cc_pll2",
19797255eedSJagadeesh Kona .parent_data = &(const struct clk_parent_data) {
19897255eedSJagadeesh Kona .index = DT_BI_TCXO,
19997255eedSJagadeesh Kona },
20097255eedSJagadeesh Kona .num_parents = 1,
20197255eedSJagadeesh Kona .ops = &clk_alpha_pll_rivian_eko_t_ops,
20297255eedSJagadeesh Kona },
20397255eedSJagadeesh Kona },
20497255eedSJagadeesh Kona };
20597255eedSJagadeesh Kona
20697255eedSJagadeesh Kona /* 691.2 MHz Configuration */
20797255eedSJagadeesh Kona static const struct alpha_pll_config cam_cc_pll3_config = {
20897255eedSJagadeesh Kona .l = 0x24,
20997255eedSJagadeesh Kona .alpha = 0x0,
21097255eedSJagadeesh Kona .config_ctl_val = 0x25c400e7,
21197255eedSJagadeesh Kona .config_ctl_hi_val = 0x0a8060e0,
21297255eedSJagadeesh Kona .config_ctl_hi1_val = 0xf51dea20,
21397255eedSJagadeesh Kona .user_ctl_val = 0x00000408,
21497255eedSJagadeesh Kona .user_ctl_hi_val = 0x00000002,
21597255eedSJagadeesh Kona };
21697255eedSJagadeesh Kona
21797255eedSJagadeesh Kona static struct clk_alpha_pll cam_cc_pll3 = {
21897255eedSJagadeesh Kona .offset = 0x3000,
21997255eedSJagadeesh Kona .config = &cam_cc_pll3_config,
22097255eedSJagadeesh Kona .vco_table = taycan_eko_t_vco,
22197255eedSJagadeesh Kona .num_vco = ARRAY_SIZE(taycan_eko_t_vco),
22297255eedSJagadeesh Kona .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EKO_T],
22397255eedSJagadeesh Kona .clkr = {
22497255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
22597255eedSJagadeesh Kona .name = "cam_cc_pll3",
22697255eedSJagadeesh Kona .parent_data = &(const struct clk_parent_data) {
22797255eedSJagadeesh Kona .index = DT_BI_TCXO,
22897255eedSJagadeesh Kona },
22997255eedSJagadeesh Kona .num_parents = 1,
23097255eedSJagadeesh Kona .ops = &clk_alpha_pll_taycan_eko_t_ops,
23197255eedSJagadeesh Kona },
23297255eedSJagadeesh Kona },
23397255eedSJagadeesh Kona };
23497255eedSJagadeesh Kona
23597255eedSJagadeesh Kona static const struct clk_div_table post_div_table_cam_cc_pll3_out_even[] = {
23697255eedSJagadeesh Kona { 0x1, 2 },
23797255eedSJagadeesh Kona { }
23897255eedSJagadeesh Kona };
23997255eedSJagadeesh Kona
24097255eedSJagadeesh Kona static struct clk_alpha_pll_postdiv cam_cc_pll3_out_even = {
24197255eedSJagadeesh Kona .offset = 0x3000,
24297255eedSJagadeesh Kona .post_div_shift = 10,
24397255eedSJagadeesh Kona .post_div_table = post_div_table_cam_cc_pll3_out_even,
24497255eedSJagadeesh Kona .num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll3_out_even),
24597255eedSJagadeesh Kona .width = 4,
24697255eedSJagadeesh Kona .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EKO_T],
24797255eedSJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) {
24897255eedSJagadeesh Kona .name = "cam_cc_pll3_out_even",
24997255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
25097255eedSJagadeesh Kona &cam_cc_pll3.clkr.hw,
25197255eedSJagadeesh Kona },
25297255eedSJagadeesh Kona .num_parents = 1,
25397255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
25497255eedSJagadeesh Kona .ops = &clk_alpha_pll_postdiv_taycan_eko_t_ops,
25597255eedSJagadeesh Kona },
25697255eedSJagadeesh Kona };
25797255eedSJagadeesh Kona
25897255eedSJagadeesh Kona /* 691.2 MHz Configuration */
25997255eedSJagadeesh Kona static const struct alpha_pll_config cam_cc_pll4_config = {
26097255eedSJagadeesh Kona .l = 0x24,
26197255eedSJagadeesh Kona .alpha = 0x0,
26297255eedSJagadeesh Kona .config_ctl_val = 0x25c400e7,
26397255eedSJagadeesh Kona .config_ctl_hi_val = 0x0a8060e0,
26497255eedSJagadeesh Kona .config_ctl_hi1_val = 0xf51dea20,
26597255eedSJagadeesh Kona .user_ctl_val = 0x00000408,
26697255eedSJagadeesh Kona .user_ctl_hi_val = 0x00000002,
26797255eedSJagadeesh Kona };
26897255eedSJagadeesh Kona
26997255eedSJagadeesh Kona static struct clk_alpha_pll cam_cc_pll4 = {
27097255eedSJagadeesh Kona .offset = 0x4000,
27197255eedSJagadeesh Kona .config = &cam_cc_pll4_config,
27297255eedSJagadeesh Kona .vco_table = taycan_eko_t_vco,
27397255eedSJagadeesh Kona .num_vco = ARRAY_SIZE(taycan_eko_t_vco),
27497255eedSJagadeesh Kona .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EKO_T],
27597255eedSJagadeesh Kona .clkr = {
27697255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
27797255eedSJagadeesh Kona .name = "cam_cc_pll4",
27897255eedSJagadeesh Kona .parent_data = &(const struct clk_parent_data) {
27997255eedSJagadeesh Kona .index = DT_BI_TCXO,
28097255eedSJagadeesh Kona },
28197255eedSJagadeesh Kona .num_parents = 1,
28297255eedSJagadeesh Kona .ops = &clk_alpha_pll_taycan_eko_t_ops,
28397255eedSJagadeesh Kona },
28497255eedSJagadeesh Kona },
28597255eedSJagadeesh Kona };
28697255eedSJagadeesh Kona
28797255eedSJagadeesh Kona static const struct clk_div_table post_div_table_cam_cc_pll4_out_even[] = {
28897255eedSJagadeesh Kona { 0x1, 2 },
28997255eedSJagadeesh Kona { }
29097255eedSJagadeesh Kona };
29197255eedSJagadeesh Kona
29297255eedSJagadeesh Kona static struct clk_alpha_pll_postdiv cam_cc_pll4_out_even = {
29397255eedSJagadeesh Kona .offset = 0x4000,
29497255eedSJagadeesh Kona .post_div_shift = 10,
29597255eedSJagadeesh Kona .post_div_table = post_div_table_cam_cc_pll4_out_even,
29697255eedSJagadeesh Kona .num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll4_out_even),
29797255eedSJagadeesh Kona .width = 4,
29897255eedSJagadeesh Kona .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EKO_T],
29997255eedSJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) {
30097255eedSJagadeesh Kona .name = "cam_cc_pll4_out_even",
30197255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
30297255eedSJagadeesh Kona &cam_cc_pll4.clkr.hw,
30397255eedSJagadeesh Kona },
30497255eedSJagadeesh Kona .num_parents = 1,
30597255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
30697255eedSJagadeesh Kona .ops = &clk_alpha_pll_postdiv_taycan_eko_t_ops,
30797255eedSJagadeesh Kona },
30897255eedSJagadeesh Kona };
30997255eedSJagadeesh Kona
31097255eedSJagadeesh Kona /* 960.0 MHz Configuration */
31197255eedSJagadeesh Kona static const struct alpha_pll_config cam_cc_pll5_config = {
31297255eedSJagadeesh Kona .l = 0x32,
31397255eedSJagadeesh Kona .alpha = 0x0,
31497255eedSJagadeesh Kona .config_ctl_val = 0x25c400e7,
31597255eedSJagadeesh Kona .config_ctl_hi_val = 0x0a8060e0,
31697255eedSJagadeesh Kona .config_ctl_hi1_val = 0xf51dea20,
31797255eedSJagadeesh Kona .user_ctl_val = 0x00000408,
31897255eedSJagadeesh Kona .user_ctl_hi_val = 0x00000002,
31997255eedSJagadeesh Kona };
32097255eedSJagadeesh Kona
32197255eedSJagadeesh Kona static struct clk_alpha_pll cam_cc_pll5 = {
32297255eedSJagadeesh Kona .offset = 0x5000,
32397255eedSJagadeesh Kona .config = &cam_cc_pll5_config,
32497255eedSJagadeesh Kona .vco_table = taycan_eko_t_vco,
32597255eedSJagadeesh Kona .num_vco = ARRAY_SIZE(taycan_eko_t_vco),
32697255eedSJagadeesh Kona .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EKO_T],
32797255eedSJagadeesh Kona .clkr = {
32897255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
32997255eedSJagadeesh Kona .name = "cam_cc_pll5",
33097255eedSJagadeesh Kona .parent_data = &(const struct clk_parent_data) {
33197255eedSJagadeesh Kona .index = DT_BI_TCXO,
33297255eedSJagadeesh Kona },
33397255eedSJagadeesh Kona .num_parents = 1,
33497255eedSJagadeesh Kona .ops = &clk_alpha_pll_taycan_eko_t_ops,
33597255eedSJagadeesh Kona },
33697255eedSJagadeesh Kona },
33797255eedSJagadeesh Kona };
33897255eedSJagadeesh Kona
33997255eedSJagadeesh Kona static const struct clk_div_table post_div_table_cam_cc_pll5_out_even[] = {
34097255eedSJagadeesh Kona { 0x1, 2 },
34197255eedSJagadeesh Kona { }
34297255eedSJagadeesh Kona };
34397255eedSJagadeesh Kona
34497255eedSJagadeesh Kona static struct clk_alpha_pll_postdiv cam_cc_pll5_out_even = {
34597255eedSJagadeesh Kona .offset = 0x5000,
34697255eedSJagadeesh Kona .post_div_shift = 10,
34797255eedSJagadeesh Kona .post_div_table = post_div_table_cam_cc_pll5_out_even,
34897255eedSJagadeesh Kona .num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll5_out_even),
34997255eedSJagadeesh Kona .width = 4,
35097255eedSJagadeesh Kona .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EKO_T],
35197255eedSJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) {
35297255eedSJagadeesh Kona .name = "cam_cc_pll5_out_even",
35397255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
35497255eedSJagadeesh Kona &cam_cc_pll5.clkr.hw,
35597255eedSJagadeesh Kona },
35697255eedSJagadeesh Kona .num_parents = 1,
35797255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
35897255eedSJagadeesh Kona .ops = &clk_alpha_pll_postdiv_taycan_eko_t_ops,
35997255eedSJagadeesh Kona },
36097255eedSJagadeesh Kona };
36197255eedSJagadeesh Kona
36297255eedSJagadeesh Kona static const struct parent_map cam_cc_parent_map_0[] = {
36397255eedSJagadeesh Kona { P_BI_TCXO, 0 },
36497255eedSJagadeesh Kona { P_CAM_CC_PLL0_OUT_MAIN, 1 },
36597255eedSJagadeesh Kona { P_CAM_CC_PLL0_OUT_EVEN, 2 },
36697255eedSJagadeesh Kona { P_CAM_CC_PLL0_OUT_ODD, 3 },
36797255eedSJagadeesh Kona { P_CAM_CC_PLL5_OUT_EVEN, 5 },
36897255eedSJagadeesh Kona };
36997255eedSJagadeesh Kona
37097255eedSJagadeesh Kona static const struct clk_parent_data cam_cc_parent_data_0[] = {
37197255eedSJagadeesh Kona { .index = DT_BI_TCXO },
37297255eedSJagadeesh Kona { .hw = &cam_cc_pll0.clkr.hw },
37397255eedSJagadeesh Kona { .hw = &cam_cc_pll0_out_even.clkr.hw },
37497255eedSJagadeesh Kona { .hw = &cam_cc_pll0_out_odd.clkr.hw },
37597255eedSJagadeesh Kona { .hw = &cam_cc_pll5_out_even.clkr.hw },
37697255eedSJagadeesh Kona };
37797255eedSJagadeesh Kona
37897255eedSJagadeesh Kona static const struct parent_map cam_cc_parent_map_1[] = {
37997255eedSJagadeesh Kona { P_BI_TCXO, 0 },
38097255eedSJagadeesh Kona { P_CAM_CC_PLL2_OUT_EVEN, 3 },
38197255eedSJagadeesh Kona { P_CAM_CC_PLL2_OUT_MAIN, 5 },
38297255eedSJagadeesh Kona };
38397255eedSJagadeesh Kona
38497255eedSJagadeesh Kona static const struct clk_parent_data cam_cc_parent_data_1[] = {
38597255eedSJagadeesh Kona { .index = DT_BI_TCXO },
38697255eedSJagadeesh Kona { .hw = &cam_cc_pll2.clkr.hw },
38797255eedSJagadeesh Kona { .hw = &cam_cc_pll2.clkr.hw },
38897255eedSJagadeesh Kona };
38997255eedSJagadeesh Kona
39097255eedSJagadeesh Kona static const struct parent_map cam_cc_parent_map_2[] = {
39197255eedSJagadeesh Kona { P_BI_TCXO, 0 },
39297255eedSJagadeesh Kona { P_CAM_CC_PLL3_OUT_EVEN, 6 },
39397255eedSJagadeesh Kona };
39497255eedSJagadeesh Kona
39597255eedSJagadeesh Kona static const struct clk_parent_data cam_cc_parent_data_2[] = {
39697255eedSJagadeesh Kona { .index = DT_BI_TCXO },
39797255eedSJagadeesh Kona { .hw = &cam_cc_pll3_out_even.clkr.hw },
39897255eedSJagadeesh Kona };
39997255eedSJagadeesh Kona
40097255eedSJagadeesh Kona static const struct parent_map cam_cc_parent_map_3[] = {
40197255eedSJagadeesh Kona { P_BI_TCXO, 0 },
40297255eedSJagadeesh Kona { P_CAM_CC_PLL4_OUT_EVEN, 6 },
40397255eedSJagadeesh Kona };
40497255eedSJagadeesh Kona
40597255eedSJagadeesh Kona static const struct clk_parent_data cam_cc_parent_data_3[] = {
40697255eedSJagadeesh Kona { .index = DT_BI_TCXO },
40797255eedSJagadeesh Kona { .hw = &cam_cc_pll4_out_even.clkr.hw },
40897255eedSJagadeesh Kona };
40997255eedSJagadeesh Kona
41097255eedSJagadeesh Kona static const struct parent_map cam_cc_parent_map_4[] = {
41197255eedSJagadeesh Kona { P_BI_TCXO, 0 },
41297255eedSJagadeesh Kona { P_CAM_CC_PLL1_OUT_EVEN, 4 },
41397255eedSJagadeesh Kona };
41497255eedSJagadeesh Kona
41597255eedSJagadeesh Kona static const struct clk_parent_data cam_cc_parent_data_4[] = {
41697255eedSJagadeesh Kona { .index = DT_BI_TCXO },
41797255eedSJagadeesh Kona { .hw = &cam_cc_pll1_out_even.clkr.hw },
41897255eedSJagadeesh Kona };
41997255eedSJagadeesh Kona
42097255eedSJagadeesh Kona static const struct parent_map cam_cc_parent_map_5[] = {
42197255eedSJagadeesh Kona { P_SLEEP_CLK, 0 },
42297255eedSJagadeesh Kona };
42397255eedSJagadeesh Kona
42497255eedSJagadeesh Kona static const struct clk_parent_data cam_cc_parent_data_5[] = {
42597255eedSJagadeesh Kona { .index = DT_SLEEP_CLK },
42697255eedSJagadeesh Kona };
42797255eedSJagadeesh Kona
42897255eedSJagadeesh Kona static const struct parent_map cam_cc_parent_map_6_ao[] = {
42997255eedSJagadeesh Kona { P_BI_TCXO_AO, 0 },
43097255eedSJagadeesh Kona };
43197255eedSJagadeesh Kona
43297255eedSJagadeesh Kona static const struct clk_parent_data cam_cc_parent_data_6_ao[] = {
43397255eedSJagadeesh Kona { .index = DT_BI_TCXO_AO },
43497255eedSJagadeesh Kona };
43597255eedSJagadeesh Kona
43697255eedSJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_bps_clk_src[] = {
43797255eedSJagadeesh Kona F(160000000, P_CAM_CC_PLL0_OUT_ODD, 2.5, 0, 0),
43897255eedSJagadeesh Kona F(200000000, P_CAM_CC_PLL0_OUT_ODD, 2, 0, 0),
43997255eedSJagadeesh Kona F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0),
44097255eedSJagadeesh Kona F(600000000, P_CAM_CC_PLL0_OUT_EVEN, 1, 0, 0),
44197255eedSJagadeesh Kona { }
44297255eedSJagadeesh Kona };
44397255eedSJagadeesh Kona
44497255eedSJagadeesh Kona static struct clk_rcg2 cam_cc_bps_clk_src = {
44597255eedSJagadeesh Kona .cmd_rcgr = 0x10278,
44697255eedSJagadeesh Kona .mnd_width = 0,
44797255eedSJagadeesh Kona .hid_width = 5,
44897255eedSJagadeesh Kona .parent_map = cam_cc_parent_map_0,
44997255eedSJagadeesh Kona .freq_tbl = ftbl_cam_cc_bps_clk_src,
45097255eedSJagadeesh Kona .hw_clk_ctrl = true,
45197255eedSJagadeesh Kona .clkr = {
45297255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
45397255eedSJagadeesh Kona .name = "cam_cc_bps_clk_src",
45497255eedSJagadeesh Kona .parent_data = cam_cc_parent_data_0,
45597255eedSJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
45697255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
45797255eedSJagadeesh Kona .ops = &clk_rcg2_shared_ops,
45897255eedSJagadeesh Kona },
45997255eedSJagadeesh Kona },
46097255eedSJagadeesh Kona };
46197255eedSJagadeesh Kona
46297255eedSJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_camnoc_axi_rt_clk_src[] = {
46397255eedSJagadeesh Kona F(240000000, P_CAM_CC_PLL0_OUT_EVEN, 2.5, 0, 0),
46497255eedSJagadeesh Kona F(300000000, P_CAM_CC_PLL0_OUT_EVEN, 2, 0, 0),
46597255eedSJagadeesh Kona F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0),
46697255eedSJagadeesh Kona { }
46797255eedSJagadeesh Kona };
46897255eedSJagadeesh Kona
46997255eedSJagadeesh Kona static struct clk_rcg2 cam_cc_camnoc_axi_rt_clk_src = {
47097255eedSJagadeesh Kona .cmd_rcgr = 0x137b4,
47197255eedSJagadeesh Kona .mnd_width = 0,
47297255eedSJagadeesh Kona .hid_width = 5,
47397255eedSJagadeesh Kona .parent_map = cam_cc_parent_map_0,
47497255eedSJagadeesh Kona .freq_tbl = ftbl_cam_cc_camnoc_axi_rt_clk_src,
47597255eedSJagadeesh Kona .hw_clk_ctrl = true,
47697255eedSJagadeesh Kona .clkr = {
47797255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
47897255eedSJagadeesh Kona .name = "cam_cc_camnoc_axi_rt_clk_src",
47997255eedSJagadeesh Kona .parent_data = cam_cc_parent_data_0,
48097255eedSJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
48197255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
48297255eedSJagadeesh Kona .ops = &clk_rcg2_shared_ops,
48397255eedSJagadeesh Kona },
48497255eedSJagadeesh Kona },
48597255eedSJagadeesh Kona };
48697255eedSJagadeesh Kona
48797255eedSJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_cci_0_clk_src[] = {
48897255eedSJagadeesh Kona F(30000000, P_CAM_CC_PLL5_OUT_EVEN, 16, 0, 0),
48997255eedSJagadeesh Kona F(37500000, P_CAM_CC_PLL0_OUT_EVEN, 16, 0, 0),
49097255eedSJagadeesh Kona { }
49197255eedSJagadeesh Kona };
49297255eedSJagadeesh Kona
49397255eedSJagadeesh Kona static struct clk_rcg2 cam_cc_cci_0_clk_src = {
49497255eedSJagadeesh Kona .cmd_rcgr = 0x1350c,
49597255eedSJagadeesh Kona .mnd_width = 8,
49697255eedSJagadeesh Kona .hid_width = 5,
49797255eedSJagadeesh Kona .parent_map = cam_cc_parent_map_0,
49897255eedSJagadeesh Kona .freq_tbl = ftbl_cam_cc_cci_0_clk_src,
49997255eedSJagadeesh Kona .hw_clk_ctrl = true,
50097255eedSJagadeesh Kona .clkr = {
50197255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
50297255eedSJagadeesh Kona .name = "cam_cc_cci_0_clk_src",
50397255eedSJagadeesh Kona .parent_data = cam_cc_parent_data_0,
50497255eedSJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
50597255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
50697255eedSJagadeesh Kona .ops = &clk_rcg2_shared_ops,
50797255eedSJagadeesh Kona },
50897255eedSJagadeesh Kona },
50997255eedSJagadeesh Kona };
51097255eedSJagadeesh Kona
51197255eedSJagadeesh Kona static struct clk_rcg2 cam_cc_cci_1_clk_src = {
51297255eedSJagadeesh Kona .cmd_rcgr = 0x1363c,
51397255eedSJagadeesh Kona .mnd_width = 8,
51497255eedSJagadeesh Kona .hid_width = 5,
51597255eedSJagadeesh Kona .parent_map = cam_cc_parent_map_0,
51697255eedSJagadeesh Kona .freq_tbl = ftbl_cam_cc_cci_0_clk_src,
51797255eedSJagadeesh Kona .hw_clk_ctrl = true,
51897255eedSJagadeesh Kona .clkr = {
51997255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
52097255eedSJagadeesh Kona .name = "cam_cc_cci_1_clk_src",
52197255eedSJagadeesh Kona .parent_data = cam_cc_parent_data_0,
52297255eedSJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
52397255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
52497255eedSJagadeesh Kona .ops = &clk_rcg2_shared_ops,
52597255eedSJagadeesh Kona },
52697255eedSJagadeesh Kona },
52797255eedSJagadeesh Kona };
52897255eedSJagadeesh Kona
52997255eedSJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_cphy_rx_clk_src[] = {
53097255eedSJagadeesh Kona F(300000000, P_CAM_CC_PLL0_OUT_MAIN, 4, 0, 0),
53197255eedSJagadeesh Kona F(400000000, P_CAM_CC_PLL0_OUT_MAIN, 3, 0, 0),
53297255eedSJagadeesh Kona F(480000000, P_CAM_CC_PLL0_OUT_MAIN, 2.5, 0, 0),
53397255eedSJagadeesh Kona { }
53497255eedSJagadeesh Kona };
53597255eedSJagadeesh Kona
53697255eedSJagadeesh Kona static struct clk_rcg2 cam_cc_cphy_rx_clk_src = {
53797255eedSJagadeesh Kona .cmd_rcgr = 0x11168,
53897255eedSJagadeesh Kona .mnd_width = 0,
53997255eedSJagadeesh Kona .hid_width = 5,
54097255eedSJagadeesh Kona .parent_map = cam_cc_parent_map_0,
54197255eedSJagadeesh Kona .freq_tbl = ftbl_cam_cc_cphy_rx_clk_src,
54297255eedSJagadeesh Kona .hw_clk_ctrl = true,
54397255eedSJagadeesh Kona .clkr = {
54497255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
54597255eedSJagadeesh Kona .name = "cam_cc_cphy_rx_clk_src",
54697255eedSJagadeesh Kona .parent_data = cam_cc_parent_data_0,
54797255eedSJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
54897255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
54997255eedSJagadeesh Kona .ops = &clk_rcg2_shared_ops,
55097255eedSJagadeesh Kona },
55197255eedSJagadeesh Kona },
55297255eedSJagadeesh Kona };
55397255eedSJagadeesh Kona
55497255eedSJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_csi0phytimer_clk_src[] = {
55597255eedSJagadeesh Kona F(266666667, P_CAM_CC_PLL0_OUT_ODD, 1.5, 0, 0),
55697255eedSJagadeesh Kona F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0),
55797255eedSJagadeesh Kona { }
55897255eedSJagadeesh Kona };
55997255eedSJagadeesh Kona
56097255eedSJagadeesh Kona static struct clk_rcg2 cam_cc_csi0phytimer_clk_src = {
56197255eedSJagadeesh Kona .cmd_rcgr = 0x150e0,
56297255eedSJagadeesh Kona .mnd_width = 0,
56397255eedSJagadeesh Kona .hid_width = 5,
56497255eedSJagadeesh Kona .parent_map = cam_cc_parent_map_0,
56597255eedSJagadeesh Kona .freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src,
56697255eedSJagadeesh Kona .hw_clk_ctrl = true,
56797255eedSJagadeesh Kona .clkr = {
56897255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
56997255eedSJagadeesh Kona .name = "cam_cc_csi0phytimer_clk_src",
57097255eedSJagadeesh Kona .parent_data = cam_cc_parent_data_0,
57197255eedSJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
57297255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
57397255eedSJagadeesh Kona .ops = &clk_rcg2_shared_ops,
57497255eedSJagadeesh Kona },
57597255eedSJagadeesh Kona },
57697255eedSJagadeesh Kona };
57797255eedSJagadeesh Kona
57897255eedSJagadeesh Kona static struct clk_rcg2 cam_cc_csi1phytimer_clk_src = {
57997255eedSJagadeesh Kona .cmd_rcgr = 0x15104,
58097255eedSJagadeesh Kona .mnd_width = 0,
58197255eedSJagadeesh Kona .hid_width = 5,
58297255eedSJagadeesh Kona .parent_map = cam_cc_parent_map_0,
58397255eedSJagadeesh Kona .freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src,
58497255eedSJagadeesh Kona .hw_clk_ctrl = true,
58597255eedSJagadeesh Kona .clkr = {
58697255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
58797255eedSJagadeesh Kona .name = "cam_cc_csi1phytimer_clk_src",
58897255eedSJagadeesh Kona .parent_data = cam_cc_parent_data_0,
58997255eedSJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
59097255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
59197255eedSJagadeesh Kona .ops = &clk_rcg2_shared_ops,
59297255eedSJagadeesh Kona },
59397255eedSJagadeesh Kona },
59497255eedSJagadeesh Kona };
59597255eedSJagadeesh Kona
59697255eedSJagadeesh Kona static struct clk_rcg2 cam_cc_csi4phytimer_clk_src = {
59797255eedSJagadeesh Kona .cmd_rcgr = 0x15124,
59897255eedSJagadeesh Kona .mnd_width = 0,
59997255eedSJagadeesh Kona .hid_width = 5,
60097255eedSJagadeesh Kona .parent_map = cam_cc_parent_map_0,
60197255eedSJagadeesh Kona .freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src,
60297255eedSJagadeesh Kona .hw_clk_ctrl = true,
60397255eedSJagadeesh Kona .clkr = {
60497255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
60597255eedSJagadeesh Kona .name = "cam_cc_csi4phytimer_clk_src",
60697255eedSJagadeesh Kona .parent_data = cam_cc_parent_data_0,
60797255eedSJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
60897255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
60997255eedSJagadeesh Kona .ops = &clk_rcg2_shared_ops,
61097255eedSJagadeesh Kona },
61197255eedSJagadeesh Kona },
61297255eedSJagadeesh Kona };
61397255eedSJagadeesh Kona
61497255eedSJagadeesh Kona static struct clk_rcg2 cam_cc_csid_clk_src = {
61597255eedSJagadeesh Kona .cmd_rcgr = 0x1378c,
61697255eedSJagadeesh Kona .mnd_width = 0,
61797255eedSJagadeesh Kona .hid_width = 5,
61897255eedSJagadeesh Kona .parent_map = cam_cc_parent_map_0,
61997255eedSJagadeesh Kona .freq_tbl = ftbl_cam_cc_cphy_rx_clk_src,
62097255eedSJagadeesh Kona .hw_clk_ctrl = true,
62197255eedSJagadeesh Kona .clkr = {
62297255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
62397255eedSJagadeesh Kona .name = "cam_cc_csid_clk_src",
62497255eedSJagadeesh Kona .parent_data = cam_cc_parent_data_0,
62597255eedSJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
62697255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
62797255eedSJagadeesh Kona .ops = &clk_rcg2_shared_ops,
62897255eedSJagadeesh Kona },
62997255eedSJagadeesh Kona },
63097255eedSJagadeesh Kona };
63197255eedSJagadeesh Kona
63297255eedSJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_fast_ahb_clk_src[] = {
63397255eedSJagadeesh Kona F(80000000, P_CAM_CC_PLL0_OUT_EVEN, 7.5, 0, 0),
63497255eedSJagadeesh Kona F(100000000, P_CAM_CC_PLL0_OUT_EVEN, 6, 0, 0),
63597255eedSJagadeesh Kona F(200000000, P_CAM_CC_PLL0_OUT_EVEN, 3, 0, 0),
63697255eedSJagadeesh Kona F(300000000, P_CAM_CC_PLL0_OUT_MAIN, 4, 0, 0),
63797255eedSJagadeesh Kona F(400000000, P_CAM_CC_PLL0_OUT_MAIN, 3, 0, 0),
63897255eedSJagadeesh Kona { }
63997255eedSJagadeesh Kona };
64097255eedSJagadeesh Kona
64197255eedSJagadeesh Kona static struct clk_rcg2 cam_cc_fast_ahb_clk_src = {
64297255eedSJagadeesh Kona .cmd_rcgr = 0x10018,
64397255eedSJagadeesh Kona .mnd_width = 0,
64497255eedSJagadeesh Kona .hid_width = 5,
64597255eedSJagadeesh Kona .parent_map = cam_cc_parent_map_0,
64697255eedSJagadeesh Kona .freq_tbl = ftbl_cam_cc_fast_ahb_clk_src,
64797255eedSJagadeesh Kona .hw_clk_ctrl = true,
64897255eedSJagadeesh Kona .clkr = {
64997255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
65097255eedSJagadeesh Kona .name = "cam_cc_fast_ahb_clk_src",
65197255eedSJagadeesh Kona .parent_data = cam_cc_parent_data_0,
65297255eedSJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
65397255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
65497255eedSJagadeesh Kona .ops = &clk_rcg2_shared_ops,
65597255eedSJagadeesh Kona },
65697255eedSJagadeesh Kona },
65797255eedSJagadeesh Kona };
65897255eedSJagadeesh Kona
65997255eedSJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_icp_clk_src[] = {
66097255eedSJagadeesh Kona F(300000000, P_CAM_CC_PLL0_OUT_EVEN, 2, 0, 0),
66197255eedSJagadeesh Kona F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0),
66297255eedSJagadeesh Kona F(480000000, P_CAM_CC_PLL5_OUT_EVEN, 1, 0, 0),
66397255eedSJagadeesh Kona F(600000000, P_CAM_CC_PLL0_OUT_MAIN, 2, 0, 0),
66497255eedSJagadeesh Kona { }
66597255eedSJagadeesh Kona };
66697255eedSJagadeesh Kona
66797255eedSJagadeesh Kona static struct clk_rcg2 cam_cc_icp_clk_src = {
66897255eedSJagadeesh Kona .cmd_rcgr = 0x133cc,
66997255eedSJagadeesh Kona .mnd_width = 0,
67097255eedSJagadeesh Kona .hid_width = 5,
67197255eedSJagadeesh Kona .parent_map = cam_cc_parent_map_0,
67297255eedSJagadeesh Kona .freq_tbl = ftbl_cam_cc_icp_clk_src,
67397255eedSJagadeesh Kona .hw_clk_ctrl = true,
67497255eedSJagadeesh Kona .clkr = {
67597255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
67697255eedSJagadeesh Kona .name = "cam_cc_icp_clk_src",
67797255eedSJagadeesh Kona .parent_data = cam_cc_parent_data_0,
67897255eedSJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
67997255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
68097255eedSJagadeesh Kona .ops = &clk_rcg2_shared_ops,
68197255eedSJagadeesh Kona },
68297255eedSJagadeesh Kona },
68397255eedSJagadeesh Kona };
68497255eedSJagadeesh Kona
68597255eedSJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_ife_0_clk_src[] = {
68697255eedSJagadeesh Kona F(345600000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0),
68797255eedSJagadeesh Kona F(432000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0),
68897255eedSJagadeesh Kona F(594000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0),
68997255eedSJagadeesh Kona F(675000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0),
69097255eedSJagadeesh Kona F(727000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0),
69197255eedSJagadeesh Kona { }
69297255eedSJagadeesh Kona };
69397255eedSJagadeesh Kona
69497255eedSJagadeesh Kona static struct clk_rcg2 cam_cc_ife_0_clk_src = {
69597255eedSJagadeesh Kona .cmd_rcgr = 0x11018,
69697255eedSJagadeesh Kona .mnd_width = 0,
69797255eedSJagadeesh Kona .hid_width = 5,
69897255eedSJagadeesh Kona .parent_map = cam_cc_parent_map_2,
69997255eedSJagadeesh Kona .freq_tbl = ftbl_cam_cc_ife_0_clk_src,
70097255eedSJagadeesh Kona .hw_clk_ctrl = true,
70197255eedSJagadeesh Kona .clkr = {
70297255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
70397255eedSJagadeesh Kona .name = "cam_cc_ife_0_clk_src",
70497255eedSJagadeesh Kona .parent_data = cam_cc_parent_data_2,
70597255eedSJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_2),
70697255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
70797255eedSJagadeesh Kona .ops = &clk_rcg2_shared_ops,
70897255eedSJagadeesh Kona },
70997255eedSJagadeesh Kona },
71097255eedSJagadeesh Kona };
71197255eedSJagadeesh Kona
71297255eedSJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_ife_1_clk_src[] = {
71397255eedSJagadeesh Kona F(345600000, P_CAM_CC_PLL4_OUT_EVEN, 1, 0, 0),
71497255eedSJagadeesh Kona F(432000000, P_CAM_CC_PLL4_OUT_EVEN, 1, 0, 0),
71597255eedSJagadeesh Kona F(594000000, P_CAM_CC_PLL4_OUT_EVEN, 1, 0, 0),
71697255eedSJagadeesh Kona F(675000000, P_CAM_CC_PLL4_OUT_EVEN, 1, 0, 0),
71797255eedSJagadeesh Kona F(727000000, P_CAM_CC_PLL4_OUT_EVEN, 1, 0, 0),
71897255eedSJagadeesh Kona { }
71997255eedSJagadeesh Kona };
72097255eedSJagadeesh Kona
72197255eedSJagadeesh Kona static struct clk_rcg2 cam_cc_ife_1_clk_src = {
72297255eedSJagadeesh Kona .cmd_rcgr = 0x12018,
72397255eedSJagadeesh Kona .mnd_width = 0,
72497255eedSJagadeesh Kona .hid_width = 5,
72597255eedSJagadeesh Kona .parent_map = cam_cc_parent_map_3,
72697255eedSJagadeesh Kona .freq_tbl = ftbl_cam_cc_ife_1_clk_src,
72797255eedSJagadeesh Kona .hw_clk_ctrl = true,
72897255eedSJagadeesh Kona .clkr = {
72997255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
73097255eedSJagadeesh Kona .name = "cam_cc_ife_1_clk_src",
73197255eedSJagadeesh Kona .parent_data = cam_cc_parent_data_3,
73297255eedSJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_3),
73397255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
73497255eedSJagadeesh Kona .ops = &clk_rcg2_shared_ops,
73597255eedSJagadeesh Kona },
73697255eedSJagadeesh Kona },
73797255eedSJagadeesh Kona };
73897255eedSJagadeesh Kona
73997255eedSJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_ife_lite_clk_src[] = {
74097255eedSJagadeesh Kona F(266666667, P_CAM_CC_PLL0_OUT_ODD, 1.5, 0, 0),
74197255eedSJagadeesh Kona F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0),
74297255eedSJagadeesh Kona F(480000000, P_CAM_CC_PLL5_OUT_EVEN, 1, 0, 0),
74397255eedSJagadeesh Kona { }
74497255eedSJagadeesh Kona };
74597255eedSJagadeesh Kona
74697255eedSJagadeesh Kona static struct clk_rcg2 cam_cc_ife_lite_clk_src = {
74797255eedSJagadeesh Kona .cmd_rcgr = 0x13000,
74897255eedSJagadeesh Kona .mnd_width = 0,
74997255eedSJagadeesh Kona .hid_width = 5,
75097255eedSJagadeesh Kona .parent_map = cam_cc_parent_map_0,
75197255eedSJagadeesh Kona .freq_tbl = ftbl_cam_cc_ife_lite_clk_src,
75297255eedSJagadeesh Kona .hw_clk_ctrl = true,
75397255eedSJagadeesh Kona .clkr = {
75497255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
75597255eedSJagadeesh Kona .name = "cam_cc_ife_lite_clk_src",
75697255eedSJagadeesh Kona .parent_data = cam_cc_parent_data_0,
75797255eedSJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
75897255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
75997255eedSJagadeesh Kona .ops = &clk_rcg2_shared_ops,
76097255eedSJagadeesh Kona },
76197255eedSJagadeesh Kona },
76297255eedSJagadeesh Kona };
76397255eedSJagadeesh Kona
76497255eedSJagadeesh Kona static struct clk_rcg2 cam_cc_ife_lite_csid_clk_src = {
76597255eedSJagadeesh Kona .cmd_rcgr = 0x13140,
76697255eedSJagadeesh Kona .mnd_width = 0,
76797255eedSJagadeesh Kona .hid_width = 5,
76897255eedSJagadeesh Kona .parent_map = cam_cc_parent_map_0,
76997255eedSJagadeesh Kona .freq_tbl = ftbl_cam_cc_ife_lite_clk_src,
77097255eedSJagadeesh Kona .hw_clk_ctrl = true,
77197255eedSJagadeesh Kona .clkr = {
77297255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
77397255eedSJagadeesh Kona .name = "cam_cc_ife_lite_csid_clk_src",
77497255eedSJagadeesh Kona .parent_data = cam_cc_parent_data_0,
77597255eedSJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
77697255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
77797255eedSJagadeesh Kona .ops = &clk_rcg2_shared_ops,
77897255eedSJagadeesh Kona },
77997255eedSJagadeesh Kona },
78097255eedSJagadeesh Kona };
78197255eedSJagadeesh Kona
78297255eedSJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_ipe_nps_clk_src[] = {
78397255eedSJagadeesh Kona F(304000000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0),
78497255eedSJagadeesh Kona F(364000000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0),
78597255eedSJagadeesh Kona F(500000000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0),
78697255eedSJagadeesh Kona F(600000000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0),
78797255eedSJagadeesh Kona F(700000000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0),
78897255eedSJagadeesh Kona { }
78997255eedSJagadeesh Kona };
79097255eedSJagadeesh Kona
79197255eedSJagadeesh Kona static struct clk_rcg2 cam_cc_ipe_nps_clk_src = {
79297255eedSJagadeesh Kona .cmd_rcgr = 0x103d0,
79397255eedSJagadeesh Kona .mnd_width = 0,
79497255eedSJagadeesh Kona .hid_width = 5,
79597255eedSJagadeesh Kona .parent_map = cam_cc_parent_map_4,
79697255eedSJagadeesh Kona .freq_tbl = ftbl_cam_cc_ipe_nps_clk_src,
79797255eedSJagadeesh Kona .hw_clk_ctrl = true,
79897255eedSJagadeesh Kona .clkr = {
79997255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
80097255eedSJagadeesh Kona .name = "cam_cc_ipe_nps_clk_src",
80197255eedSJagadeesh Kona .parent_data = cam_cc_parent_data_4,
80297255eedSJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_4),
80397255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
80497255eedSJagadeesh Kona .ops = &clk_rcg2_shared_ops,
80597255eedSJagadeesh Kona },
80697255eedSJagadeesh Kona },
80797255eedSJagadeesh Kona };
80897255eedSJagadeesh Kona
80997255eedSJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_jpeg_clk_src[] = {
81097255eedSJagadeesh Kona F(160000000, P_CAM_CC_PLL0_OUT_ODD, 2.5, 0, 0),
81197255eedSJagadeesh Kona F(200000000, P_CAM_CC_PLL0_OUT_ODD, 2, 0, 0),
81297255eedSJagadeesh Kona F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0),
81397255eedSJagadeesh Kona F(480000000, P_CAM_CC_PLL5_OUT_EVEN, 1, 0, 0),
81497255eedSJagadeesh Kona F(600000000, P_CAM_CC_PLL0_OUT_EVEN, 1, 0, 0),
81597255eedSJagadeesh Kona { }
81697255eedSJagadeesh Kona };
81797255eedSJagadeesh Kona
81897255eedSJagadeesh Kona static struct clk_rcg2 cam_cc_jpeg_clk_src = {
81997255eedSJagadeesh Kona .cmd_rcgr = 0x13284,
82097255eedSJagadeesh Kona .mnd_width = 0,
82197255eedSJagadeesh Kona .hid_width = 5,
82297255eedSJagadeesh Kona .parent_map = cam_cc_parent_map_0,
82397255eedSJagadeesh Kona .freq_tbl = ftbl_cam_cc_jpeg_clk_src,
82497255eedSJagadeesh Kona .hw_clk_ctrl = true,
82597255eedSJagadeesh Kona .clkr = {
82697255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
82797255eedSJagadeesh Kona .name = "cam_cc_jpeg_clk_src",
82897255eedSJagadeesh Kona .parent_data = cam_cc_parent_data_0,
82997255eedSJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
83097255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
83197255eedSJagadeesh Kona .ops = &clk_rcg2_shared_ops,
83297255eedSJagadeesh Kona },
83397255eedSJagadeesh Kona },
83497255eedSJagadeesh Kona };
83597255eedSJagadeesh Kona
83697255eedSJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_mclk0_clk_src[] = {
83797255eedSJagadeesh Kona F(19200000, P_BI_TCXO, 1, 0, 0),
83897255eedSJagadeesh Kona F(24000000, P_CAM_CC_PLL2_OUT_MAIN, 10, 1, 4),
83997255eedSJagadeesh Kona F(68571429, P_CAM_CC_PLL2_OUT_MAIN, 14, 0, 0),
84097255eedSJagadeesh Kona { }
84197255eedSJagadeesh Kona };
84297255eedSJagadeesh Kona
84397255eedSJagadeesh Kona static struct clk_rcg2 cam_cc_mclk0_clk_src = {
84497255eedSJagadeesh Kona .cmd_rcgr = 0x15000,
84597255eedSJagadeesh Kona .mnd_width = 8,
84697255eedSJagadeesh Kona .hid_width = 5,
84797255eedSJagadeesh Kona .parent_map = cam_cc_parent_map_1,
84897255eedSJagadeesh Kona .freq_tbl = ftbl_cam_cc_mclk0_clk_src,
84997255eedSJagadeesh Kona .hw_clk_ctrl = true,
85097255eedSJagadeesh Kona .clkr = {
85197255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
85297255eedSJagadeesh Kona .name = "cam_cc_mclk0_clk_src",
85397255eedSJagadeesh Kona .parent_data = cam_cc_parent_data_1,
85497255eedSJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
85597255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
85697255eedSJagadeesh Kona .ops = &clk_rcg2_shared_ops,
85797255eedSJagadeesh Kona },
85897255eedSJagadeesh Kona },
85997255eedSJagadeesh Kona };
86097255eedSJagadeesh Kona
86197255eedSJagadeesh Kona static struct clk_rcg2 cam_cc_mclk1_clk_src = {
86297255eedSJagadeesh Kona .cmd_rcgr = 0x1501c,
86397255eedSJagadeesh Kona .mnd_width = 8,
86497255eedSJagadeesh Kona .hid_width = 5,
86597255eedSJagadeesh Kona .parent_map = cam_cc_parent_map_1,
86697255eedSJagadeesh Kona .freq_tbl = ftbl_cam_cc_mclk0_clk_src,
86797255eedSJagadeesh Kona .hw_clk_ctrl = true,
86897255eedSJagadeesh Kona .clkr = {
86997255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
87097255eedSJagadeesh Kona .name = "cam_cc_mclk1_clk_src",
87197255eedSJagadeesh Kona .parent_data = cam_cc_parent_data_1,
87297255eedSJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
87397255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
87497255eedSJagadeesh Kona .ops = &clk_rcg2_shared_ops,
87597255eedSJagadeesh Kona },
87697255eedSJagadeesh Kona },
87797255eedSJagadeesh Kona };
87897255eedSJagadeesh Kona
87997255eedSJagadeesh Kona static struct clk_rcg2 cam_cc_mclk2_clk_src = {
88097255eedSJagadeesh Kona .cmd_rcgr = 0x15038,
88197255eedSJagadeesh Kona .mnd_width = 8,
88297255eedSJagadeesh Kona .hid_width = 5,
88397255eedSJagadeesh Kona .parent_map = cam_cc_parent_map_1,
88497255eedSJagadeesh Kona .freq_tbl = ftbl_cam_cc_mclk0_clk_src,
88597255eedSJagadeesh Kona .hw_clk_ctrl = true,
88697255eedSJagadeesh Kona .clkr = {
88797255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
88897255eedSJagadeesh Kona .name = "cam_cc_mclk2_clk_src",
88997255eedSJagadeesh Kona .parent_data = cam_cc_parent_data_1,
89097255eedSJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
89197255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
89297255eedSJagadeesh Kona .ops = &clk_rcg2_shared_ops,
89397255eedSJagadeesh Kona },
89497255eedSJagadeesh Kona },
89597255eedSJagadeesh Kona };
89697255eedSJagadeesh Kona
89797255eedSJagadeesh Kona static struct clk_rcg2 cam_cc_mclk3_clk_src = {
89897255eedSJagadeesh Kona .cmd_rcgr = 0x15054,
89997255eedSJagadeesh Kona .mnd_width = 8,
90097255eedSJagadeesh Kona .hid_width = 5,
90197255eedSJagadeesh Kona .parent_map = cam_cc_parent_map_1,
90297255eedSJagadeesh Kona .freq_tbl = ftbl_cam_cc_mclk0_clk_src,
90397255eedSJagadeesh Kona .hw_clk_ctrl = true,
90497255eedSJagadeesh Kona .clkr = {
90597255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
90697255eedSJagadeesh Kona .name = "cam_cc_mclk3_clk_src",
90797255eedSJagadeesh Kona .parent_data = cam_cc_parent_data_1,
90897255eedSJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
90997255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
91097255eedSJagadeesh Kona .ops = &clk_rcg2_shared_ops,
91197255eedSJagadeesh Kona },
91297255eedSJagadeesh Kona },
91397255eedSJagadeesh Kona };
91497255eedSJagadeesh Kona
91597255eedSJagadeesh Kona static struct clk_rcg2 cam_cc_mclk4_clk_src = {
91697255eedSJagadeesh Kona .cmd_rcgr = 0x15070,
91797255eedSJagadeesh Kona .mnd_width = 8,
91897255eedSJagadeesh Kona .hid_width = 5,
91997255eedSJagadeesh Kona .parent_map = cam_cc_parent_map_1,
92097255eedSJagadeesh Kona .freq_tbl = ftbl_cam_cc_mclk0_clk_src,
92197255eedSJagadeesh Kona .hw_clk_ctrl = true,
92297255eedSJagadeesh Kona .clkr = {
92397255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
92497255eedSJagadeesh Kona .name = "cam_cc_mclk4_clk_src",
92597255eedSJagadeesh Kona .parent_data = cam_cc_parent_data_1,
92697255eedSJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
92797255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
92897255eedSJagadeesh Kona .ops = &clk_rcg2_shared_ops,
92997255eedSJagadeesh Kona },
93097255eedSJagadeesh Kona },
93197255eedSJagadeesh Kona };
93297255eedSJagadeesh Kona
93397255eedSJagadeesh Kona static struct clk_rcg2 cam_cc_mclk5_clk_src = {
93497255eedSJagadeesh Kona .cmd_rcgr = 0x1508c,
93597255eedSJagadeesh Kona .mnd_width = 8,
93697255eedSJagadeesh Kona .hid_width = 5,
93797255eedSJagadeesh Kona .parent_map = cam_cc_parent_map_1,
93897255eedSJagadeesh Kona .freq_tbl = ftbl_cam_cc_mclk0_clk_src,
93997255eedSJagadeesh Kona .hw_clk_ctrl = true,
94097255eedSJagadeesh Kona .clkr = {
94197255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
94297255eedSJagadeesh Kona .name = "cam_cc_mclk5_clk_src",
94397255eedSJagadeesh Kona .parent_data = cam_cc_parent_data_1,
94497255eedSJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
94597255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
94697255eedSJagadeesh Kona .ops = &clk_rcg2_shared_ops,
94797255eedSJagadeesh Kona },
94897255eedSJagadeesh Kona },
94997255eedSJagadeesh Kona };
95097255eedSJagadeesh Kona
95197255eedSJagadeesh Kona static struct clk_rcg2 cam_cc_mclk6_clk_src = {
95297255eedSJagadeesh Kona .cmd_rcgr = 0x150a8,
95397255eedSJagadeesh Kona .mnd_width = 8,
95497255eedSJagadeesh Kona .hid_width = 5,
95597255eedSJagadeesh Kona .parent_map = cam_cc_parent_map_1,
95697255eedSJagadeesh Kona .freq_tbl = ftbl_cam_cc_mclk0_clk_src,
95797255eedSJagadeesh Kona .hw_clk_ctrl = true,
95897255eedSJagadeesh Kona .clkr = {
95997255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
96097255eedSJagadeesh Kona .name = "cam_cc_mclk6_clk_src",
96197255eedSJagadeesh Kona .parent_data = cam_cc_parent_data_1,
96297255eedSJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
96397255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
96497255eedSJagadeesh Kona .ops = &clk_rcg2_shared_ops,
96597255eedSJagadeesh Kona },
96697255eedSJagadeesh Kona },
96797255eedSJagadeesh Kona };
96897255eedSJagadeesh Kona
96997255eedSJagadeesh Kona static struct clk_rcg2 cam_cc_mclk7_clk_src = {
97097255eedSJagadeesh Kona .cmd_rcgr = 0x150c4,
97197255eedSJagadeesh Kona .mnd_width = 8,
97297255eedSJagadeesh Kona .hid_width = 5,
97397255eedSJagadeesh Kona .parent_map = cam_cc_parent_map_1,
97497255eedSJagadeesh Kona .freq_tbl = ftbl_cam_cc_mclk0_clk_src,
97597255eedSJagadeesh Kona .hw_clk_ctrl = true,
97697255eedSJagadeesh Kona .clkr = {
97797255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
97897255eedSJagadeesh Kona .name = "cam_cc_mclk7_clk_src",
97997255eedSJagadeesh Kona .parent_data = cam_cc_parent_data_1,
98097255eedSJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
98197255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
98297255eedSJagadeesh Kona .ops = &clk_rcg2_shared_ops,
98397255eedSJagadeesh Kona },
98497255eedSJagadeesh Kona },
98597255eedSJagadeesh Kona };
98697255eedSJagadeesh Kona
98797255eedSJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_qdss_debug_clk_src[] = {
98897255eedSJagadeesh Kona F(60000000, P_CAM_CC_PLL5_OUT_EVEN, 8, 0, 0),
98997255eedSJagadeesh Kona F(75000000, P_CAM_CC_PLL0_OUT_EVEN, 8, 0, 0),
99097255eedSJagadeesh Kona F(150000000, P_CAM_CC_PLL0_OUT_EVEN, 4, 0, 0),
99197255eedSJagadeesh Kona F(300000000, P_CAM_CC_PLL0_OUT_MAIN, 4, 0, 0),
99297255eedSJagadeesh Kona { }
99397255eedSJagadeesh Kona };
99497255eedSJagadeesh Kona
99597255eedSJagadeesh Kona static struct clk_rcg2 cam_cc_qdss_debug_clk_src = {
99697255eedSJagadeesh Kona .cmd_rcgr = 0x137fc,
99797255eedSJagadeesh Kona .mnd_width = 0,
99897255eedSJagadeesh Kona .hid_width = 5,
99997255eedSJagadeesh Kona .parent_map = cam_cc_parent_map_0,
100097255eedSJagadeesh Kona .freq_tbl = ftbl_cam_cc_qdss_debug_clk_src,
100197255eedSJagadeesh Kona .hw_clk_ctrl = true,
100297255eedSJagadeesh Kona .clkr = {
100397255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
100497255eedSJagadeesh Kona .name = "cam_cc_qdss_debug_clk_src",
100597255eedSJagadeesh Kona .parent_data = cam_cc_parent_data_0,
100697255eedSJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
100797255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
100897255eedSJagadeesh Kona .ops = &clk_rcg2_shared_ops,
100997255eedSJagadeesh Kona },
101097255eedSJagadeesh Kona },
101197255eedSJagadeesh Kona };
101297255eedSJagadeesh Kona
101397255eedSJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_sleep_clk_src[] = {
101497255eedSJagadeesh Kona F(32000, P_SLEEP_CLK, 1, 0, 0),
101597255eedSJagadeesh Kona { }
101697255eedSJagadeesh Kona };
101797255eedSJagadeesh Kona
101897255eedSJagadeesh Kona static struct clk_rcg2 cam_cc_sleep_clk_src = {
101997255eedSJagadeesh Kona .cmd_rcgr = 0x13964,
102097255eedSJagadeesh Kona .mnd_width = 0,
102197255eedSJagadeesh Kona .hid_width = 5,
102297255eedSJagadeesh Kona .parent_map = cam_cc_parent_map_5,
102397255eedSJagadeesh Kona .freq_tbl = ftbl_cam_cc_sleep_clk_src,
102497255eedSJagadeesh Kona .clkr = {
102597255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
102697255eedSJagadeesh Kona .name = "cam_cc_sleep_clk_src",
102797255eedSJagadeesh Kona .parent_data = cam_cc_parent_data_5,
102897255eedSJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_5),
102997255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
103097255eedSJagadeesh Kona .ops = &clk_rcg2_shared_ops,
103197255eedSJagadeesh Kona },
103297255eedSJagadeesh Kona },
103397255eedSJagadeesh Kona };
103497255eedSJagadeesh Kona
103597255eedSJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_slow_ahb_clk_src[] = {
103697255eedSJagadeesh Kona F(64000000, P_CAM_CC_PLL5_OUT_EVEN, 7.5, 0, 0),
103797255eedSJagadeesh Kona F(80000000, P_CAM_CC_PLL0_OUT_EVEN, 7.5, 0, 0),
103897255eedSJagadeesh Kona { }
103997255eedSJagadeesh Kona };
104097255eedSJagadeesh Kona
104197255eedSJagadeesh Kona static struct clk_rcg2 cam_cc_slow_ahb_clk_src = {
104297255eedSJagadeesh Kona .cmd_rcgr = 0x10148,
104397255eedSJagadeesh Kona .mnd_width = 8,
104497255eedSJagadeesh Kona .hid_width = 5,
104597255eedSJagadeesh Kona .parent_map = cam_cc_parent_map_0,
104697255eedSJagadeesh Kona .freq_tbl = ftbl_cam_cc_slow_ahb_clk_src,
104797255eedSJagadeesh Kona .hw_clk_ctrl = true,
104897255eedSJagadeesh Kona .clkr = {
104997255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
105097255eedSJagadeesh Kona .name = "cam_cc_slow_ahb_clk_src",
105197255eedSJagadeesh Kona .parent_data = cam_cc_parent_data_0,
105297255eedSJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
105397255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
105497255eedSJagadeesh Kona .ops = &clk_rcg2_shared_ops,
105597255eedSJagadeesh Kona },
105697255eedSJagadeesh Kona },
105797255eedSJagadeesh Kona };
105897255eedSJagadeesh Kona
105997255eedSJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_xo_clk_src[] = {
106097255eedSJagadeesh Kona F(19200000, P_BI_TCXO_AO, 1, 0, 0),
106197255eedSJagadeesh Kona { }
106297255eedSJagadeesh Kona };
106397255eedSJagadeesh Kona
106497255eedSJagadeesh Kona static struct clk_rcg2 cam_cc_xo_clk_src = {
106597255eedSJagadeesh Kona .cmd_rcgr = 0x13948,
106697255eedSJagadeesh Kona .mnd_width = 0,
106797255eedSJagadeesh Kona .hid_width = 5,
106897255eedSJagadeesh Kona .parent_map = cam_cc_parent_map_6_ao,
106997255eedSJagadeesh Kona .freq_tbl = ftbl_cam_cc_xo_clk_src,
107097255eedSJagadeesh Kona .hw_clk_ctrl = true,
107197255eedSJagadeesh Kona .clkr = {
107297255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
107397255eedSJagadeesh Kona .name = "cam_cc_xo_clk_src",
107497255eedSJagadeesh Kona .parent_data = cam_cc_parent_data_6_ao,
107597255eedSJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_6_ao),
107697255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
107797255eedSJagadeesh Kona .ops = &clk_rcg2_shared_ops,
107897255eedSJagadeesh Kona },
107997255eedSJagadeesh Kona },
108097255eedSJagadeesh Kona };
108197255eedSJagadeesh Kona
108297255eedSJagadeesh Kona static struct clk_branch cam_cc_bps_ahb_clk = {
108397255eedSJagadeesh Kona .halt_reg = 0x10274,
108497255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
108597255eedSJagadeesh Kona .clkr = {
108697255eedSJagadeesh Kona .enable_reg = 0x10274,
108797255eedSJagadeesh Kona .enable_mask = BIT(0),
108897255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
108997255eedSJagadeesh Kona .name = "cam_cc_bps_ahb_clk",
109097255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
109197255eedSJagadeesh Kona &cam_cc_slow_ahb_clk_src.clkr.hw,
109297255eedSJagadeesh Kona },
109397255eedSJagadeesh Kona .num_parents = 1,
109497255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
109597255eedSJagadeesh Kona .ops = &clk_branch2_ops,
109697255eedSJagadeesh Kona },
109797255eedSJagadeesh Kona },
109897255eedSJagadeesh Kona };
109997255eedSJagadeesh Kona
110097255eedSJagadeesh Kona static struct clk_branch cam_cc_bps_clk = {
110197255eedSJagadeesh Kona .halt_reg = 0x103a4,
110297255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
110397255eedSJagadeesh Kona .clkr = {
110497255eedSJagadeesh Kona .enable_reg = 0x103a4,
110597255eedSJagadeesh Kona .enable_mask = BIT(0),
110697255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
110797255eedSJagadeesh Kona .name = "cam_cc_bps_clk",
110897255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
110997255eedSJagadeesh Kona &cam_cc_bps_clk_src.clkr.hw,
111097255eedSJagadeesh Kona },
111197255eedSJagadeesh Kona .num_parents = 1,
111297255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
111397255eedSJagadeesh Kona .ops = &clk_branch2_ops,
111497255eedSJagadeesh Kona },
111597255eedSJagadeesh Kona },
111697255eedSJagadeesh Kona };
111797255eedSJagadeesh Kona
111897255eedSJagadeesh Kona static struct clk_branch cam_cc_bps_fast_ahb_clk = {
111997255eedSJagadeesh Kona .halt_reg = 0x10144,
112097255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
112197255eedSJagadeesh Kona .clkr = {
112297255eedSJagadeesh Kona .enable_reg = 0x10144,
112397255eedSJagadeesh Kona .enable_mask = BIT(0),
112497255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
112597255eedSJagadeesh Kona .name = "cam_cc_bps_fast_ahb_clk",
112697255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
112797255eedSJagadeesh Kona &cam_cc_fast_ahb_clk_src.clkr.hw,
112897255eedSJagadeesh Kona },
112997255eedSJagadeesh Kona .num_parents = 1,
113097255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
113197255eedSJagadeesh Kona .ops = &clk_branch2_ops,
113297255eedSJagadeesh Kona },
113397255eedSJagadeesh Kona },
113497255eedSJagadeesh Kona };
113597255eedSJagadeesh Kona
113697255eedSJagadeesh Kona static struct clk_branch cam_cc_camnoc_axi_nrt_clk = {
113797255eedSJagadeesh Kona .halt_reg = 0x137e0,
113897255eedSJagadeesh Kona .halt_check = BRANCH_HALT_VOTED,
113997255eedSJagadeesh Kona .hwcg_reg = 0x137e0,
114097255eedSJagadeesh Kona .hwcg_bit = 1,
114197255eedSJagadeesh Kona .clkr = {
114297255eedSJagadeesh Kona .enable_reg = 0x137e0,
114397255eedSJagadeesh Kona .enable_mask = BIT(0),
114497255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
114597255eedSJagadeesh Kona .name = "cam_cc_camnoc_axi_nrt_clk",
114697255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
114797255eedSJagadeesh Kona &cam_cc_camnoc_axi_rt_clk_src.clkr.hw,
114897255eedSJagadeesh Kona },
114997255eedSJagadeesh Kona .num_parents = 1,
115097255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
115197255eedSJagadeesh Kona .ops = &clk_branch2_ops,
115297255eedSJagadeesh Kona },
115397255eedSJagadeesh Kona },
115497255eedSJagadeesh Kona };
115597255eedSJagadeesh Kona
115697255eedSJagadeesh Kona static struct clk_branch cam_cc_camnoc_axi_rt_clk = {
115797255eedSJagadeesh Kona .halt_reg = 0x137cc,
115897255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
115997255eedSJagadeesh Kona .clkr = {
116097255eedSJagadeesh Kona .enable_reg = 0x137cc,
116197255eedSJagadeesh Kona .enable_mask = BIT(0),
116297255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
116397255eedSJagadeesh Kona .name = "cam_cc_camnoc_axi_rt_clk",
116497255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
116597255eedSJagadeesh Kona &cam_cc_camnoc_axi_rt_clk_src.clkr.hw,
116697255eedSJagadeesh Kona },
116797255eedSJagadeesh Kona .num_parents = 1,
116897255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
116997255eedSJagadeesh Kona .ops = &clk_branch2_ops,
117097255eedSJagadeesh Kona },
117197255eedSJagadeesh Kona },
117297255eedSJagadeesh Kona };
117397255eedSJagadeesh Kona
117497255eedSJagadeesh Kona static struct clk_branch cam_cc_camnoc_dcd_xo_clk = {
117597255eedSJagadeesh Kona .halt_reg = 0x137f0,
117697255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
117797255eedSJagadeesh Kona .clkr = {
117897255eedSJagadeesh Kona .enable_reg = 0x137f0,
117997255eedSJagadeesh Kona .enable_mask = BIT(0),
118097255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
118197255eedSJagadeesh Kona .name = "cam_cc_camnoc_dcd_xo_clk",
118297255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
118397255eedSJagadeesh Kona &cam_cc_xo_clk_src.clkr.hw,
118497255eedSJagadeesh Kona },
118597255eedSJagadeesh Kona .num_parents = 1,
118697255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
118797255eedSJagadeesh Kona .ops = &clk_branch2_ops,
118897255eedSJagadeesh Kona },
118997255eedSJagadeesh Kona },
119097255eedSJagadeesh Kona };
119197255eedSJagadeesh Kona
119297255eedSJagadeesh Kona static struct clk_branch cam_cc_camnoc_xo_clk = {
119397255eedSJagadeesh Kona .halt_reg = 0x137f4,
119497255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
119597255eedSJagadeesh Kona .clkr = {
119697255eedSJagadeesh Kona .enable_reg = 0x137f4,
119797255eedSJagadeesh Kona .enable_mask = BIT(0),
119897255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
119997255eedSJagadeesh Kona .name = "cam_cc_camnoc_xo_clk",
120097255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
120197255eedSJagadeesh Kona &cam_cc_xo_clk_src.clkr.hw,
120297255eedSJagadeesh Kona },
120397255eedSJagadeesh Kona .num_parents = 1,
120497255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
120597255eedSJagadeesh Kona .ops = &clk_branch2_ops,
120697255eedSJagadeesh Kona },
120797255eedSJagadeesh Kona },
120897255eedSJagadeesh Kona };
120997255eedSJagadeesh Kona
121097255eedSJagadeesh Kona static struct clk_branch cam_cc_cci_0_clk = {
121197255eedSJagadeesh Kona .halt_reg = 0x13638,
121297255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
121397255eedSJagadeesh Kona .clkr = {
121497255eedSJagadeesh Kona .enable_reg = 0x13638,
121597255eedSJagadeesh Kona .enable_mask = BIT(0),
121697255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
121797255eedSJagadeesh Kona .name = "cam_cc_cci_0_clk",
121897255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
121997255eedSJagadeesh Kona &cam_cc_cci_0_clk_src.clkr.hw,
122097255eedSJagadeesh Kona },
122197255eedSJagadeesh Kona .num_parents = 1,
122297255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
122397255eedSJagadeesh Kona .ops = &clk_branch2_ops,
122497255eedSJagadeesh Kona },
122597255eedSJagadeesh Kona },
122697255eedSJagadeesh Kona };
122797255eedSJagadeesh Kona
122897255eedSJagadeesh Kona static struct clk_branch cam_cc_cci_1_clk = {
122997255eedSJagadeesh Kona .halt_reg = 0x13768,
123097255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
123197255eedSJagadeesh Kona .clkr = {
123297255eedSJagadeesh Kona .enable_reg = 0x13768,
123397255eedSJagadeesh Kona .enable_mask = BIT(0),
123497255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
123597255eedSJagadeesh Kona .name = "cam_cc_cci_1_clk",
123697255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
123797255eedSJagadeesh Kona &cam_cc_cci_1_clk_src.clkr.hw,
123897255eedSJagadeesh Kona },
123997255eedSJagadeesh Kona .num_parents = 1,
124097255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
124197255eedSJagadeesh Kona .ops = &clk_branch2_ops,
124297255eedSJagadeesh Kona },
124397255eedSJagadeesh Kona },
124497255eedSJagadeesh Kona };
124597255eedSJagadeesh Kona
124697255eedSJagadeesh Kona static struct clk_branch cam_cc_core_ahb_clk = {
124797255eedSJagadeesh Kona .halt_reg = 0x13944,
124897255eedSJagadeesh Kona .halt_check = BRANCH_HALT_DELAY,
124997255eedSJagadeesh Kona .clkr = {
125097255eedSJagadeesh Kona .enable_reg = 0x13944,
125197255eedSJagadeesh Kona .enable_mask = BIT(0),
125297255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
125397255eedSJagadeesh Kona .name = "cam_cc_core_ahb_clk",
125497255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
125597255eedSJagadeesh Kona &cam_cc_slow_ahb_clk_src.clkr.hw,
125697255eedSJagadeesh Kona },
125797255eedSJagadeesh Kona .num_parents = 1,
125897255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
125997255eedSJagadeesh Kona .ops = &clk_branch2_ops,
126097255eedSJagadeesh Kona },
126197255eedSJagadeesh Kona },
126297255eedSJagadeesh Kona };
126397255eedSJagadeesh Kona
126497255eedSJagadeesh Kona static struct clk_branch cam_cc_cpas_ahb_clk = {
126597255eedSJagadeesh Kona .halt_reg = 0x1376c,
126697255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
126797255eedSJagadeesh Kona .clkr = {
126897255eedSJagadeesh Kona .enable_reg = 0x1376c,
126997255eedSJagadeesh Kona .enable_mask = BIT(0),
127097255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
127197255eedSJagadeesh Kona .name = "cam_cc_cpas_ahb_clk",
127297255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
127397255eedSJagadeesh Kona &cam_cc_slow_ahb_clk_src.clkr.hw,
127497255eedSJagadeesh Kona },
127597255eedSJagadeesh Kona .num_parents = 1,
127697255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
127797255eedSJagadeesh Kona .ops = &clk_branch2_ops,
127897255eedSJagadeesh Kona },
127997255eedSJagadeesh Kona },
128097255eedSJagadeesh Kona };
128197255eedSJagadeesh Kona
128297255eedSJagadeesh Kona static struct clk_branch cam_cc_cpas_bps_clk = {
128397255eedSJagadeesh Kona .halt_reg = 0x103b4,
128497255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
128597255eedSJagadeesh Kona .clkr = {
128697255eedSJagadeesh Kona .enable_reg = 0x103b4,
128797255eedSJagadeesh Kona .enable_mask = BIT(0),
128897255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
128997255eedSJagadeesh Kona .name = "cam_cc_cpas_bps_clk",
129097255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
129197255eedSJagadeesh Kona &cam_cc_bps_clk_src.clkr.hw,
129297255eedSJagadeesh Kona },
129397255eedSJagadeesh Kona .num_parents = 1,
129497255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
129597255eedSJagadeesh Kona .ops = &clk_branch2_ops,
129697255eedSJagadeesh Kona },
129797255eedSJagadeesh Kona },
129897255eedSJagadeesh Kona };
129997255eedSJagadeesh Kona
130097255eedSJagadeesh Kona static struct clk_branch cam_cc_cpas_fast_ahb_clk = {
130197255eedSJagadeesh Kona .halt_reg = 0x1377c,
130297255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
130397255eedSJagadeesh Kona .clkr = {
130497255eedSJagadeesh Kona .enable_reg = 0x1377c,
130597255eedSJagadeesh Kona .enable_mask = BIT(0),
130697255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
130797255eedSJagadeesh Kona .name = "cam_cc_cpas_fast_ahb_clk",
130897255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
130997255eedSJagadeesh Kona &cam_cc_fast_ahb_clk_src.clkr.hw,
131097255eedSJagadeesh Kona },
131197255eedSJagadeesh Kona .num_parents = 1,
131297255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
131397255eedSJagadeesh Kona .ops = &clk_branch2_ops,
131497255eedSJagadeesh Kona },
131597255eedSJagadeesh Kona },
131697255eedSJagadeesh Kona };
131797255eedSJagadeesh Kona
131897255eedSJagadeesh Kona static struct clk_branch cam_cc_cpas_ife_0_clk = {
131997255eedSJagadeesh Kona .halt_reg = 0x11154,
132097255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
132197255eedSJagadeesh Kona .clkr = {
132297255eedSJagadeesh Kona .enable_reg = 0x11154,
132397255eedSJagadeesh Kona .enable_mask = BIT(0),
132497255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
132597255eedSJagadeesh Kona .name = "cam_cc_cpas_ife_0_clk",
132697255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
132797255eedSJagadeesh Kona &cam_cc_ife_0_clk_src.clkr.hw,
132897255eedSJagadeesh Kona },
132997255eedSJagadeesh Kona .num_parents = 1,
133097255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
133197255eedSJagadeesh Kona .ops = &clk_branch2_ops,
133297255eedSJagadeesh Kona },
133397255eedSJagadeesh Kona },
133497255eedSJagadeesh Kona };
133597255eedSJagadeesh Kona
133697255eedSJagadeesh Kona static struct clk_branch cam_cc_cpas_ife_1_clk = {
133797255eedSJagadeesh Kona .halt_reg = 0x12040,
133897255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
133997255eedSJagadeesh Kona .clkr = {
134097255eedSJagadeesh Kona .enable_reg = 0x12040,
134197255eedSJagadeesh Kona .enable_mask = BIT(0),
134297255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
134397255eedSJagadeesh Kona .name = "cam_cc_cpas_ife_1_clk",
134497255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
134597255eedSJagadeesh Kona &cam_cc_ife_1_clk_src.clkr.hw,
134697255eedSJagadeesh Kona },
134797255eedSJagadeesh Kona .num_parents = 1,
134897255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
134997255eedSJagadeesh Kona .ops = &clk_branch2_ops,
135097255eedSJagadeesh Kona },
135197255eedSJagadeesh Kona },
135297255eedSJagadeesh Kona };
135397255eedSJagadeesh Kona
135497255eedSJagadeesh Kona static struct clk_branch cam_cc_cpas_ife_lite_clk = {
135597255eedSJagadeesh Kona .halt_reg = 0x1313c,
135697255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
135797255eedSJagadeesh Kona .clkr = {
135897255eedSJagadeesh Kona .enable_reg = 0x1313c,
135997255eedSJagadeesh Kona .enable_mask = BIT(0),
136097255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
136197255eedSJagadeesh Kona .name = "cam_cc_cpas_ife_lite_clk",
136297255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
136397255eedSJagadeesh Kona &cam_cc_ife_lite_clk_src.clkr.hw,
136497255eedSJagadeesh Kona },
136597255eedSJagadeesh Kona .num_parents = 1,
136697255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
136797255eedSJagadeesh Kona .ops = &clk_branch2_ops,
136897255eedSJagadeesh Kona },
136997255eedSJagadeesh Kona },
137097255eedSJagadeesh Kona };
137197255eedSJagadeesh Kona
137297255eedSJagadeesh Kona static struct clk_branch cam_cc_cpas_ipe_nps_clk = {
137397255eedSJagadeesh Kona .halt_reg = 0x1050c,
137497255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
137597255eedSJagadeesh Kona .clkr = {
137697255eedSJagadeesh Kona .enable_reg = 0x1050c,
137797255eedSJagadeesh Kona .enable_mask = BIT(0),
137897255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
137997255eedSJagadeesh Kona .name = "cam_cc_cpas_ipe_nps_clk",
138097255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
138197255eedSJagadeesh Kona &cam_cc_ipe_nps_clk_src.clkr.hw,
138297255eedSJagadeesh Kona },
138397255eedSJagadeesh Kona .num_parents = 1,
138497255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
138597255eedSJagadeesh Kona .ops = &clk_branch2_ops,
138697255eedSJagadeesh Kona },
138797255eedSJagadeesh Kona },
138897255eedSJagadeesh Kona };
138997255eedSJagadeesh Kona
139097255eedSJagadeesh Kona static struct clk_branch cam_cc_csi0phytimer_clk = {
139197255eedSJagadeesh Kona .halt_reg = 0x150f8,
139297255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
139397255eedSJagadeesh Kona .clkr = {
139497255eedSJagadeesh Kona .enable_reg = 0x150f8,
139597255eedSJagadeesh Kona .enable_mask = BIT(0),
139697255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
139797255eedSJagadeesh Kona .name = "cam_cc_csi0phytimer_clk",
139897255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
139997255eedSJagadeesh Kona &cam_cc_csi0phytimer_clk_src.clkr.hw,
140097255eedSJagadeesh Kona },
140197255eedSJagadeesh Kona .num_parents = 1,
140297255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
140397255eedSJagadeesh Kona .ops = &clk_branch2_ops,
140497255eedSJagadeesh Kona },
140597255eedSJagadeesh Kona },
140697255eedSJagadeesh Kona };
140797255eedSJagadeesh Kona
140897255eedSJagadeesh Kona static struct clk_branch cam_cc_csi1phytimer_clk = {
140997255eedSJagadeesh Kona .halt_reg = 0x1511c,
141097255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
141197255eedSJagadeesh Kona .clkr = {
141297255eedSJagadeesh Kona .enable_reg = 0x1511c,
141397255eedSJagadeesh Kona .enable_mask = BIT(0),
141497255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
141597255eedSJagadeesh Kona .name = "cam_cc_csi1phytimer_clk",
141697255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
141797255eedSJagadeesh Kona &cam_cc_csi1phytimer_clk_src.clkr.hw,
141897255eedSJagadeesh Kona },
141997255eedSJagadeesh Kona .num_parents = 1,
142097255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
142197255eedSJagadeesh Kona .ops = &clk_branch2_ops,
142297255eedSJagadeesh Kona },
142397255eedSJagadeesh Kona },
142497255eedSJagadeesh Kona };
142597255eedSJagadeesh Kona
142697255eedSJagadeesh Kona static struct clk_branch cam_cc_csi4phytimer_clk = {
142797255eedSJagadeesh Kona .halt_reg = 0x15250,
142897255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
142997255eedSJagadeesh Kona .clkr = {
143097255eedSJagadeesh Kona .enable_reg = 0x15250,
143197255eedSJagadeesh Kona .enable_mask = BIT(0),
143297255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
143397255eedSJagadeesh Kona .name = "cam_cc_csi4phytimer_clk",
143497255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
143597255eedSJagadeesh Kona &cam_cc_csi4phytimer_clk_src.clkr.hw,
143697255eedSJagadeesh Kona },
143797255eedSJagadeesh Kona .num_parents = 1,
143897255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
143997255eedSJagadeesh Kona .ops = &clk_branch2_ops,
144097255eedSJagadeesh Kona },
144197255eedSJagadeesh Kona },
144297255eedSJagadeesh Kona };
144397255eedSJagadeesh Kona
144497255eedSJagadeesh Kona static struct clk_branch cam_cc_csid_clk = {
144597255eedSJagadeesh Kona .halt_reg = 0x137a4,
144697255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
144797255eedSJagadeesh Kona .clkr = {
144897255eedSJagadeesh Kona .enable_reg = 0x137a4,
144997255eedSJagadeesh Kona .enable_mask = BIT(0),
145097255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
145197255eedSJagadeesh Kona .name = "cam_cc_csid_clk",
145297255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
145397255eedSJagadeesh Kona &cam_cc_csid_clk_src.clkr.hw,
145497255eedSJagadeesh Kona },
145597255eedSJagadeesh Kona .num_parents = 1,
145697255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
145797255eedSJagadeesh Kona .ops = &clk_branch2_ops,
145897255eedSJagadeesh Kona },
145997255eedSJagadeesh Kona },
146097255eedSJagadeesh Kona };
146197255eedSJagadeesh Kona
146297255eedSJagadeesh Kona static struct clk_branch cam_cc_csid_csiphy_rx_clk = {
146397255eedSJagadeesh Kona .halt_reg = 0x15100,
146497255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
146597255eedSJagadeesh Kona .clkr = {
146697255eedSJagadeesh Kona .enable_reg = 0x15100,
146797255eedSJagadeesh Kona .enable_mask = BIT(0),
146897255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
146997255eedSJagadeesh Kona .name = "cam_cc_csid_csiphy_rx_clk",
147097255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
147197255eedSJagadeesh Kona &cam_cc_cphy_rx_clk_src.clkr.hw,
147297255eedSJagadeesh Kona },
147397255eedSJagadeesh Kona .num_parents = 1,
147497255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
147597255eedSJagadeesh Kona .ops = &clk_branch2_ops,
147697255eedSJagadeesh Kona },
147797255eedSJagadeesh Kona },
147897255eedSJagadeesh Kona };
147997255eedSJagadeesh Kona
148097255eedSJagadeesh Kona static struct clk_branch cam_cc_csiphy0_clk = {
148197255eedSJagadeesh Kona .halt_reg = 0x150fc,
148297255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
148397255eedSJagadeesh Kona .clkr = {
148497255eedSJagadeesh Kona .enable_reg = 0x150fc,
148597255eedSJagadeesh Kona .enable_mask = BIT(0),
148697255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
148797255eedSJagadeesh Kona .name = "cam_cc_csiphy0_clk",
148897255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
148997255eedSJagadeesh Kona &cam_cc_cphy_rx_clk_src.clkr.hw,
149097255eedSJagadeesh Kona },
149197255eedSJagadeesh Kona .num_parents = 1,
149297255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
149397255eedSJagadeesh Kona .ops = &clk_branch2_ops,
149497255eedSJagadeesh Kona },
149597255eedSJagadeesh Kona },
149697255eedSJagadeesh Kona };
149797255eedSJagadeesh Kona
149897255eedSJagadeesh Kona static struct clk_branch cam_cc_csiphy1_clk = {
149997255eedSJagadeesh Kona .halt_reg = 0x15120,
150097255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
150197255eedSJagadeesh Kona .clkr = {
150297255eedSJagadeesh Kona .enable_reg = 0x15120,
150397255eedSJagadeesh Kona .enable_mask = BIT(0),
150497255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
150597255eedSJagadeesh Kona .name = "cam_cc_csiphy1_clk",
150697255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
150797255eedSJagadeesh Kona &cam_cc_cphy_rx_clk_src.clkr.hw,
150897255eedSJagadeesh Kona },
150997255eedSJagadeesh Kona .num_parents = 1,
151097255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
151197255eedSJagadeesh Kona .ops = &clk_branch2_ops,
151297255eedSJagadeesh Kona },
151397255eedSJagadeesh Kona },
151497255eedSJagadeesh Kona };
151597255eedSJagadeesh Kona
151697255eedSJagadeesh Kona static struct clk_branch cam_cc_csiphy4_clk = {
151797255eedSJagadeesh Kona .halt_reg = 0x15254,
151897255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
151997255eedSJagadeesh Kona .clkr = {
152097255eedSJagadeesh Kona .enable_reg = 0x15254,
152197255eedSJagadeesh Kona .enable_mask = BIT(0),
152297255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
152397255eedSJagadeesh Kona .name = "cam_cc_csiphy4_clk",
152497255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
152597255eedSJagadeesh Kona &cam_cc_cphy_rx_clk_src.clkr.hw,
152697255eedSJagadeesh Kona },
152797255eedSJagadeesh Kona .num_parents = 1,
152897255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
152997255eedSJagadeesh Kona .ops = &clk_branch2_ops,
153097255eedSJagadeesh Kona },
153197255eedSJagadeesh Kona },
153297255eedSJagadeesh Kona };
153397255eedSJagadeesh Kona
153497255eedSJagadeesh Kona static struct clk_branch cam_cc_icp_ahb_clk = {
153597255eedSJagadeesh Kona .halt_reg = 0x13508,
153697255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
153797255eedSJagadeesh Kona .clkr = {
153897255eedSJagadeesh Kona .enable_reg = 0x13508,
153997255eedSJagadeesh Kona .enable_mask = BIT(0),
154097255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
154197255eedSJagadeesh Kona .name = "cam_cc_icp_ahb_clk",
154297255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
154397255eedSJagadeesh Kona &cam_cc_slow_ahb_clk_src.clkr.hw,
154497255eedSJagadeesh Kona },
154597255eedSJagadeesh Kona .num_parents = 1,
154697255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
154797255eedSJagadeesh Kona .ops = &clk_branch2_ops,
154897255eedSJagadeesh Kona },
154997255eedSJagadeesh Kona },
155097255eedSJagadeesh Kona };
155197255eedSJagadeesh Kona
155297255eedSJagadeesh Kona static struct clk_branch cam_cc_icp_clk = {
155397255eedSJagadeesh Kona .halt_reg = 0x134f8,
155497255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
155597255eedSJagadeesh Kona .clkr = {
155697255eedSJagadeesh Kona .enable_reg = 0x134f8,
155797255eedSJagadeesh Kona .enable_mask = BIT(0),
155897255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
155997255eedSJagadeesh Kona .name = "cam_cc_icp_clk",
156097255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
156197255eedSJagadeesh Kona &cam_cc_icp_clk_src.clkr.hw,
156297255eedSJagadeesh Kona },
156397255eedSJagadeesh Kona .num_parents = 1,
156497255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
156597255eedSJagadeesh Kona .ops = &clk_branch2_ops,
156697255eedSJagadeesh Kona },
156797255eedSJagadeesh Kona },
156897255eedSJagadeesh Kona };
156997255eedSJagadeesh Kona
157097255eedSJagadeesh Kona static struct clk_branch cam_cc_ife_0_clk = {
157197255eedSJagadeesh Kona .halt_reg = 0x11144,
157297255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
157397255eedSJagadeesh Kona .clkr = {
157497255eedSJagadeesh Kona .enable_reg = 0x11144,
157597255eedSJagadeesh Kona .enable_mask = BIT(0),
157697255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
157797255eedSJagadeesh Kona .name = "cam_cc_ife_0_clk",
157897255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
157997255eedSJagadeesh Kona &cam_cc_ife_0_clk_src.clkr.hw,
158097255eedSJagadeesh Kona },
158197255eedSJagadeesh Kona .num_parents = 1,
158297255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
158397255eedSJagadeesh Kona .ops = &clk_branch2_ops,
158497255eedSJagadeesh Kona },
158597255eedSJagadeesh Kona },
158697255eedSJagadeesh Kona };
158797255eedSJagadeesh Kona
158897255eedSJagadeesh Kona static struct clk_branch cam_cc_ife_0_dsp_clk = {
158997255eedSJagadeesh Kona .halt_reg = 0x11158,
159097255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
159197255eedSJagadeesh Kona .clkr = {
159297255eedSJagadeesh Kona .enable_reg = 0x11158,
159397255eedSJagadeesh Kona .enable_mask = BIT(0),
159497255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
159597255eedSJagadeesh Kona .name = "cam_cc_ife_0_dsp_clk",
159697255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
159797255eedSJagadeesh Kona &cam_cc_ife_0_clk_src.clkr.hw,
159897255eedSJagadeesh Kona },
159997255eedSJagadeesh Kona .num_parents = 1,
160097255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
160197255eedSJagadeesh Kona .ops = &clk_branch2_ops,
160297255eedSJagadeesh Kona },
160397255eedSJagadeesh Kona },
160497255eedSJagadeesh Kona };
160597255eedSJagadeesh Kona
160697255eedSJagadeesh Kona static struct clk_branch cam_cc_ife_0_fast_ahb_clk = {
160797255eedSJagadeesh Kona .halt_reg = 0x11164,
160897255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
160997255eedSJagadeesh Kona .clkr = {
161097255eedSJagadeesh Kona .enable_reg = 0x11164,
161197255eedSJagadeesh Kona .enable_mask = BIT(0),
161297255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
161397255eedSJagadeesh Kona .name = "cam_cc_ife_0_fast_ahb_clk",
161497255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
161597255eedSJagadeesh Kona &cam_cc_fast_ahb_clk_src.clkr.hw,
161697255eedSJagadeesh Kona },
161797255eedSJagadeesh Kona .num_parents = 1,
161897255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
161997255eedSJagadeesh Kona .ops = &clk_branch2_ops,
162097255eedSJagadeesh Kona },
162197255eedSJagadeesh Kona },
162297255eedSJagadeesh Kona };
162397255eedSJagadeesh Kona
162497255eedSJagadeesh Kona static struct clk_branch cam_cc_ife_1_clk = {
162597255eedSJagadeesh Kona .halt_reg = 0x12030,
162697255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
162797255eedSJagadeesh Kona .clkr = {
162897255eedSJagadeesh Kona .enable_reg = 0x12030,
162997255eedSJagadeesh Kona .enable_mask = BIT(0),
163097255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
163197255eedSJagadeesh Kona .name = "cam_cc_ife_1_clk",
163297255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
163397255eedSJagadeesh Kona &cam_cc_ife_1_clk_src.clkr.hw,
163497255eedSJagadeesh Kona },
163597255eedSJagadeesh Kona .num_parents = 1,
163697255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
163797255eedSJagadeesh Kona .ops = &clk_branch2_ops,
163897255eedSJagadeesh Kona },
163997255eedSJagadeesh Kona },
164097255eedSJagadeesh Kona };
164197255eedSJagadeesh Kona
164297255eedSJagadeesh Kona static struct clk_branch cam_cc_ife_1_dsp_clk = {
164397255eedSJagadeesh Kona .halt_reg = 0x12044,
164497255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
164597255eedSJagadeesh Kona .clkr = {
164697255eedSJagadeesh Kona .enable_reg = 0x12044,
164797255eedSJagadeesh Kona .enable_mask = BIT(0),
164897255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
164997255eedSJagadeesh Kona .name = "cam_cc_ife_1_dsp_clk",
165097255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
165197255eedSJagadeesh Kona &cam_cc_ife_1_clk_src.clkr.hw,
165297255eedSJagadeesh Kona },
165397255eedSJagadeesh Kona .num_parents = 1,
165497255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
165597255eedSJagadeesh Kona .ops = &clk_branch2_ops,
165697255eedSJagadeesh Kona },
165797255eedSJagadeesh Kona },
165897255eedSJagadeesh Kona };
165997255eedSJagadeesh Kona
166097255eedSJagadeesh Kona static struct clk_branch cam_cc_ife_1_fast_ahb_clk = {
166197255eedSJagadeesh Kona .halt_reg = 0x12050,
166297255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
166397255eedSJagadeesh Kona .clkr = {
166497255eedSJagadeesh Kona .enable_reg = 0x12050,
166597255eedSJagadeesh Kona .enable_mask = BIT(0),
166697255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
166797255eedSJagadeesh Kona .name = "cam_cc_ife_1_fast_ahb_clk",
166897255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
166997255eedSJagadeesh Kona &cam_cc_fast_ahb_clk_src.clkr.hw,
167097255eedSJagadeesh Kona },
167197255eedSJagadeesh Kona .num_parents = 1,
167297255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
167397255eedSJagadeesh Kona .ops = &clk_branch2_ops,
167497255eedSJagadeesh Kona },
167597255eedSJagadeesh Kona },
167697255eedSJagadeesh Kona };
167797255eedSJagadeesh Kona
167897255eedSJagadeesh Kona static struct clk_branch cam_cc_ife_lite_ahb_clk = {
167997255eedSJagadeesh Kona .halt_reg = 0x13280,
168097255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
168197255eedSJagadeesh Kona .clkr = {
168297255eedSJagadeesh Kona .enable_reg = 0x13280,
168397255eedSJagadeesh Kona .enable_mask = BIT(0),
168497255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
168597255eedSJagadeesh Kona .name = "cam_cc_ife_lite_ahb_clk",
168697255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
168797255eedSJagadeesh Kona &cam_cc_slow_ahb_clk_src.clkr.hw,
168897255eedSJagadeesh Kona },
168997255eedSJagadeesh Kona .num_parents = 1,
169097255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
169197255eedSJagadeesh Kona .ops = &clk_branch2_ops,
169297255eedSJagadeesh Kona },
169397255eedSJagadeesh Kona },
169497255eedSJagadeesh Kona };
169597255eedSJagadeesh Kona
169697255eedSJagadeesh Kona static struct clk_branch cam_cc_ife_lite_clk = {
169797255eedSJagadeesh Kona .halt_reg = 0x1312c,
169897255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
169997255eedSJagadeesh Kona .clkr = {
170097255eedSJagadeesh Kona .enable_reg = 0x1312c,
170197255eedSJagadeesh Kona .enable_mask = BIT(0),
170297255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
170397255eedSJagadeesh Kona .name = "cam_cc_ife_lite_clk",
170497255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
170597255eedSJagadeesh Kona &cam_cc_ife_lite_clk_src.clkr.hw,
170697255eedSJagadeesh Kona },
170797255eedSJagadeesh Kona .num_parents = 1,
170897255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
170997255eedSJagadeesh Kona .ops = &clk_branch2_ops,
171097255eedSJagadeesh Kona },
171197255eedSJagadeesh Kona },
171297255eedSJagadeesh Kona };
171397255eedSJagadeesh Kona
171497255eedSJagadeesh Kona static struct clk_branch cam_cc_ife_lite_cphy_rx_clk = {
171597255eedSJagadeesh Kona .halt_reg = 0x1327c,
171697255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
171797255eedSJagadeesh Kona .clkr = {
171897255eedSJagadeesh Kona .enable_reg = 0x1327c,
171997255eedSJagadeesh Kona .enable_mask = BIT(0),
172097255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
172197255eedSJagadeesh Kona .name = "cam_cc_ife_lite_cphy_rx_clk",
172297255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
172397255eedSJagadeesh Kona &cam_cc_cphy_rx_clk_src.clkr.hw,
172497255eedSJagadeesh Kona },
172597255eedSJagadeesh Kona .num_parents = 1,
172697255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
172797255eedSJagadeesh Kona .ops = &clk_branch2_ops,
172897255eedSJagadeesh Kona },
172997255eedSJagadeesh Kona },
173097255eedSJagadeesh Kona };
173197255eedSJagadeesh Kona
173297255eedSJagadeesh Kona static struct clk_branch cam_cc_ife_lite_csid_clk = {
173397255eedSJagadeesh Kona .halt_reg = 0x1326c,
173497255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
173597255eedSJagadeesh Kona .clkr = {
173697255eedSJagadeesh Kona .enable_reg = 0x1326c,
173797255eedSJagadeesh Kona .enable_mask = BIT(0),
173897255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
173997255eedSJagadeesh Kona .name = "cam_cc_ife_lite_csid_clk",
174097255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
174197255eedSJagadeesh Kona &cam_cc_ife_lite_csid_clk_src.clkr.hw,
174297255eedSJagadeesh Kona },
174397255eedSJagadeesh Kona .num_parents = 1,
174497255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
174597255eedSJagadeesh Kona .ops = &clk_branch2_ops,
174697255eedSJagadeesh Kona },
174797255eedSJagadeesh Kona },
174897255eedSJagadeesh Kona };
174997255eedSJagadeesh Kona
175097255eedSJagadeesh Kona static struct clk_branch cam_cc_ipe_nps_ahb_clk = {
175197255eedSJagadeesh Kona .halt_reg = 0x10528,
175297255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
175397255eedSJagadeesh Kona .clkr = {
175497255eedSJagadeesh Kona .enable_reg = 0x10528,
175597255eedSJagadeesh Kona .enable_mask = BIT(0),
175697255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
175797255eedSJagadeesh Kona .name = "cam_cc_ipe_nps_ahb_clk",
175897255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
175997255eedSJagadeesh Kona &cam_cc_slow_ahb_clk_src.clkr.hw,
176097255eedSJagadeesh Kona },
176197255eedSJagadeesh Kona .num_parents = 1,
176297255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
176397255eedSJagadeesh Kona .ops = &clk_branch2_ops,
176497255eedSJagadeesh Kona },
176597255eedSJagadeesh Kona },
176697255eedSJagadeesh Kona };
176797255eedSJagadeesh Kona
176897255eedSJagadeesh Kona static struct clk_branch cam_cc_ipe_nps_clk = {
176997255eedSJagadeesh Kona .halt_reg = 0x104fc,
177097255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
177197255eedSJagadeesh Kona .clkr = {
177297255eedSJagadeesh Kona .enable_reg = 0x104fc,
177397255eedSJagadeesh Kona .enable_mask = BIT(0),
177497255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
177597255eedSJagadeesh Kona .name = "cam_cc_ipe_nps_clk",
177697255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
177797255eedSJagadeesh Kona &cam_cc_ipe_nps_clk_src.clkr.hw,
177897255eedSJagadeesh Kona },
177997255eedSJagadeesh Kona .num_parents = 1,
178097255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
178197255eedSJagadeesh Kona .ops = &clk_branch2_ops,
178297255eedSJagadeesh Kona },
178397255eedSJagadeesh Kona },
178497255eedSJagadeesh Kona };
178597255eedSJagadeesh Kona
178697255eedSJagadeesh Kona static struct clk_branch cam_cc_ipe_nps_fast_ahb_clk = {
178797255eedSJagadeesh Kona .halt_reg = 0x1052c,
178897255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
178997255eedSJagadeesh Kona .clkr = {
179097255eedSJagadeesh Kona .enable_reg = 0x1052c,
179197255eedSJagadeesh Kona .enable_mask = BIT(0),
179297255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
179397255eedSJagadeesh Kona .name = "cam_cc_ipe_nps_fast_ahb_clk",
179497255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
179597255eedSJagadeesh Kona &cam_cc_fast_ahb_clk_src.clkr.hw,
179697255eedSJagadeesh Kona },
179797255eedSJagadeesh Kona .num_parents = 1,
179897255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
179997255eedSJagadeesh Kona .ops = &clk_branch2_ops,
180097255eedSJagadeesh Kona },
180197255eedSJagadeesh Kona },
180297255eedSJagadeesh Kona };
180397255eedSJagadeesh Kona
180497255eedSJagadeesh Kona static struct clk_branch cam_cc_ipe_pps_clk = {
180597255eedSJagadeesh Kona .halt_reg = 0x10510,
180697255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
180797255eedSJagadeesh Kona .clkr = {
180897255eedSJagadeesh Kona .enable_reg = 0x10510,
180997255eedSJagadeesh Kona .enable_mask = BIT(0),
181097255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
181197255eedSJagadeesh Kona .name = "cam_cc_ipe_pps_clk",
181297255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
181397255eedSJagadeesh Kona &cam_cc_ipe_nps_clk_src.clkr.hw,
181497255eedSJagadeesh Kona },
181597255eedSJagadeesh Kona .num_parents = 1,
181697255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
181797255eedSJagadeesh Kona .ops = &clk_branch2_ops,
181897255eedSJagadeesh Kona },
181997255eedSJagadeesh Kona },
182097255eedSJagadeesh Kona };
182197255eedSJagadeesh Kona
182297255eedSJagadeesh Kona static struct clk_branch cam_cc_ipe_pps_fast_ahb_clk = {
182397255eedSJagadeesh Kona .halt_reg = 0x10530,
182497255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
182597255eedSJagadeesh Kona .clkr = {
182697255eedSJagadeesh Kona .enable_reg = 0x10530,
182797255eedSJagadeesh Kona .enable_mask = BIT(0),
182897255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
182997255eedSJagadeesh Kona .name = "cam_cc_ipe_pps_fast_ahb_clk",
183097255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
183197255eedSJagadeesh Kona &cam_cc_fast_ahb_clk_src.clkr.hw,
183297255eedSJagadeesh Kona },
183397255eedSJagadeesh Kona .num_parents = 1,
183497255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
183597255eedSJagadeesh Kona .ops = &clk_branch2_ops,
183697255eedSJagadeesh Kona },
183797255eedSJagadeesh Kona },
183897255eedSJagadeesh Kona };
183997255eedSJagadeesh Kona
184097255eedSJagadeesh Kona static struct clk_branch cam_cc_jpeg_clk = {
184197255eedSJagadeesh Kona .halt_reg = 0x133b0,
184297255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
184397255eedSJagadeesh Kona .clkr = {
184497255eedSJagadeesh Kona .enable_reg = 0x133b0,
184597255eedSJagadeesh Kona .enable_mask = BIT(0),
184697255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
184797255eedSJagadeesh Kona .name = "cam_cc_jpeg_clk",
184897255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
184997255eedSJagadeesh Kona &cam_cc_jpeg_clk_src.clkr.hw,
185097255eedSJagadeesh Kona },
185197255eedSJagadeesh Kona .num_parents = 1,
185297255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
185397255eedSJagadeesh Kona .ops = &clk_branch2_ops,
185497255eedSJagadeesh Kona },
185597255eedSJagadeesh Kona },
185697255eedSJagadeesh Kona };
185797255eedSJagadeesh Kona
185897255eedSJagadeesh Kona static struct clk_branch cam_cc_mclk0_clk = {
185997255eedSJagadeesh Kona .halt_reg = 0x15018,
186097255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
186197255eedSJagadeesh Kona .clkr = {
186297255eedSJagadeesh Kona .enable_reg = 0x15018,
186397255eedSJagadeesh Kona .enable_mask = BIT(0),
186497255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
186597255eedSJagadeesh Kona .name = "cam_cc_mclk0_clk",
186697255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
186797255eedSJagadeesh Kona &cam_cc_mclk0_clk_src.clkr.hw,
186897255eedSJagadeesh Kona },
186997255eedSJagadeesh Kona .num_parents = 1,
187097255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
187197255eedSJagadeesh Kona .ops = &clk_branch2_ops,
187297255eedSJagadeesh Kona },
187397255eedSJagadeesh Kona },
187497255eedSJagadeesh Kona };
187597255eedSJagadeesh Kona
187697255eedSJagadeesh Kona static struct clk_branch cam_cc_mclk1_clk = {
187797255eedSJagadeesh Kona .halt_reg = 0x15034,
187897255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
187997255eedSJagadeesh Kona .clkr = {
188097255eedSJagadeesh Kona .enable_reg = 0x15034,
188197255eedSJagadeesh Kona .enable_mask = BIT(0),
188297255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
188397255eedSJagadeesh Kona .name = "cam_cc_mclk1_clk",
188497255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
188597255eedSJagadeesh Kona &cam_cc_mclk1_clk_src.clkr.hw,
188697255eedSJagadeesh Kona },
188797255eedSJagadeesh Kona .num_parents = 1,
188897255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
188997255eedSJagadeesh Kona .ops = &clk_branch2_ops,
189097255eedSJagadeesh Kona },
189197255eedSJagadeesh Kona },
189297255eedSJagadeesh Kona };
189397255eedSJagadeesh Kona
189497255eedSJagadeesh Kona static struct clk_branch cam_cc_mclk2_clk = {
189597255eedSJagadeesh Kona .halt_reg = 0x15050,
189697255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
189797255eedSJagadeesh Kona .clkr = {
189897255eedSJagadeesh Kona .enable_reg = 0x15050,
189997255eedSJagadeesh Kona .enable_mask = BIT(0),
190097255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
190197255eedSJagadeesh Kona .name = "cam_cc_mclk2_clk",
190297255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
190397255eedSJagadeesh Kona &cam_cc_mclk2_clk_src.clkr.hw,
190497255eedSJagadeesh Kona },
190597255eedSJagadeesh Kona .num_parents = 1,
190697255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
190797255eedSJagadeesh Kona .ops = &clk_branch2_ops,
190897255eedSJagadeesh Kona },
190997255eedSJagadeesh Kona },
191097255eedSJagadeesh Kona };
191197255eedSJagadeesh Kona
191297255eedSJagadeesh Kona static struct clk_branch cam_cc_mclk3_clk = {
191397255eedSJagadeesh Kona .halt_reg = 0x1506c,
191497255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
191597255eedSJagadeesh Kona .clkr = {
191697255eedSJagadeesh Kona .enable_reg = 0x1506c,
191797255eedSJagadeesh Kona .enable_mask = BIT(0),
191897255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
191997255eedSJagadeesh Kona .name = "cam_cc_mclk3_clk",
192097255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
192197255eedSJagadeesh Kona &cam_cc_mclk3_clk_src.clkr.hw,
192297255eedSJagadeesh Kona },
192397255eedSJagadeesh Kona .num_parents = 1,
192497255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
192597255eedSJagadeesh Kona .ops = &clk_branch2_ops,
192697255eedSJagadeesh Kona },
192797255eedSJagadeesh Kona },
192897255eedSJagadeesh Kona };
192997255eedSJagadeesh Kona
193097255eedSJagadeesh Kona static struct clk_branch cam_cc_mclk4_clk = {
193197255eedSJagadeesh Kona .halt_reg = 0x15088,
193297255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
193397255eedSJagadeesh Kona .clkr = {
193497255eedSJagadeesh Kona .enable_reg = 0x15088,
193597255eedSJagadeesh Kona .enable_mask = BIT(0),
193697255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
193797255eedSJagadeesh Kona .name = "cam_cc_mclk4_clk",
193897255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
193997255eedSJagadeesh Kona &cam_cc_mclk4_clk_src.clkr.hw,
194097255eedSJagadeesh Kona },
194197255eedSJagadeesh Kona .num_parents = 1,
194297255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
194397255eedSJagadeesh Kona .ops = &clk_branch2_ops,
194497255eedSJagadeesh Kona },
194597255eedSJagadeesh Kona },
194697255eedSJagadeesh Kona };
194797255eedSJagadeesh Kona
194897255eedSJagadeesh Kona static struct clk_branch cam_cc_mclk5_clk = {
194997255eedSJagadeesh Kona .halt_reg = 0x150a4,
195097255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
195197255eedSJagadeesh Kona .clkr = {
195297255eedSJagadeesh Kona .enable_reg = 0x150a4,
195397255eedSJagadeesh Kona .enable_mask = BIT(0),
195497255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
195597255eedSJagadeesh Kona .name = "cam_cc_mclk5_clk",
195697255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
195797255eedSJagadeesh Kona &cam_cc_mclk5_clk_src.clkr.hw,
195897255eedSJagadeesh Kona },
195997255eedSJagadeesh Kona .num_parents = 1,
196097255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
196197255eedSJagadeesh Kona .ops = &clk_branch2_ops,
196297255eedSJagadeesh Kona },
196397255eedSJagadeesh Kona },
196497255eedSJagadeesh Kona };
196597255eedSJagadeesh Kona
196697255eedSJagadeesh Kona static struct clk_branch cam_cc_mclk6_clk = {
196797255eedSJagadeesh Kona .halt_reg = 0x150c0,
196897255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
196997255eedSJagadeesh Kona .clkr = {
197097255eedSJagadeesh Kona .enable_reg = 0x150c0,
197197255eedSJagadeesh Kona .enable_mask = BIT(0),
197297255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
197397255eedSJagadeesh Kona .name = "cam_cc_mclk6_clk",
197497255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
197597255eedSJagadeesh Kona &cam_cc_mclk6_clk_src.clkr.hw,
197697255eedSJagadeesh Kona },
197797255eedSJagadeesh Kona .num_parents = 1,
197897255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
197997255eedSJagadeesh Kona .ops = &clk_branch2_ops,
198097255eedSJagadeesh Kona },
198197255eedSJagadeesh Kona },
198297255eedSJagadeesh Kona };
198397255eedSJagadeesh Kona
198497255eedSJagadeesh Kona static struct clk_branch cam_cc_mclk7_clk = {
198597255eedSJagadeesh Kona .halt_reg = 0x150dc,
198697255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
198797255eedSJagadeesh Kona .clkr = {
198897255eedSJagadeesh Kona .enable_reg = 0x150dc,
198997255eedSJagadeesh Kona .enable_mask = BIT(0),
199097255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
199197255eedSJagadeesh Kona .name = "cam_cc_mclk7_clk",
199297255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
199397255eedSJagadeesh Kona &cam_cc_mclk7_clk_src.clkr.hw,
199497255eedSJagadeesh Kona },
199597255eedSJagadeesh Kona .num_parents = 1,
199697255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
199797255eedSJagadeesh Kona .ops = &clk_branch2_ops,
199897255eedSJagadeesh Kona },
199997255eedSJagadeesh Kona },
200097255eedSJagadeesh Kona };
200197255eedSJagadeesh Kona
200297255eedSJagadeesh Kona static struct clk_branch cam_cc_qdss_debug_clk = {
200397255eedSJagadeesh Kona .halt_reg = 0x13928,
200497255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
200597255eedSJagadeesh Kona .clkr = {
200697255eedSJagadeesh Kona .enable_reg = 0x13928,
200797255eedSJagadeesh Kona .enable_mask = BIT(0),
200897255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
200997255eedSJagadeesh Kona .name = "cam_cc_qdss_debug_clk",
201097255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
201197255eedSJagadeesh Kona &cam_cc_qdss_debug_clk_src.clkr.hw,
201297255eedSJagadeesh Kona },
201397255eedSJagadeesh Kona .num_parents = 1,
201497255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
201597255eedSJagadeesh Kona .ops = &clk_branch2_ops,
201697255eedSJagadeesh Kona },
201797255eedSJagadeesh Kona },
201897255eedSJagadeesh Kona };
201997255eedSJagadeesh Kona
202097255eedSJagadeesh Kona static struct clk_branch cam_cc_qdss_debug_xo_clk = {
202197255eedSJagadeesh Kona .halt_reg = 0x1392c,
202297255eedSJagadeesh Kona .halt_check = BRANCH_HALT,
202397255eedSJagadeesh Kona .clkr = {
202497255eedSJagadeesh Kona .enable_reg = 0x1392c,
202597255eedSJagadeesh Kona .enable_mask = BIT(0),
202697255eedSJagadeesh Kona .hw.init = &(const struct clk_init_data) {
202797255eedSJagadeesh Kona .name = "cam_cc_qdss_debug_xo_clk",
202897255eedSJagadeesh Kona .parent_hws = (const struct clk_hw*[]) {
202997255eedSJagadeesh Kona &cam_cc_xo_clk_src.clkr.hw,
203097255eedSJagadeesh Kona },
203197255eedSJagadeesh Kona .num_parents = 1,
203297255eedSJagadeesh Kona .flags = CLK_SET_RATE_PARENT,
203397255eedSJagadeesh Kona .ops = &clk_branch2_ops,
203497255eedSJagadeesh Kona },
203597255eedSJagadeesh Kona },
203697255eedSJagadeesh Kona };
203797255eedSJagadeesh Kona
203897255eedSJagadeesh Kona static struct gdsc cam_cc_titan_top_gdsc = {
203997255eedSJagadeesh Kona .gdscr = 0x13930,
204097255eedSJagadeesh Kona .en_rest_wait_val = 0x2,
204197255eedSJagadeesh Kona .en_few_wait_val = 0x2,
204297255eedSJagadeesh Kona .clk_dis_wait_val = 0xf,
204397255eedSJagadeesh Kona .pd = {
204497255eedSJagadeesh Kona .name = "cam_cc_titan_top_gdsc",
204597255eedSJagadeesh Kona },
204697255eedSJagadeesh Kona .pwrsts = PWRSTS_OFF_ON,
204797255eedSJagadeesh Kona .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
204897255eedSJagadeesh Kona };
204997255eedSJagadeesh Kona
205097255eedSJagadeesh Kona static struct gdsc cam_cc_bps_gdsc = {
205197255eedSJagadeesh Kona .gdscr = 0x10004,
205297255eedSJagadeesh Kona .en_rest_wait_val = 0x2,
205397255eedSJagadeesh Kona .en_few_wait_val = 0x2,
205497255eedSJagadeesh Kona .clk_dis_wait_val = 0xf,
205597255eedSJagadeesh Kona .pd = {
205697255eedSJagadeesh Kona .name = "cam_cc_bps_gdsc",
205797255eedSJagadeesh Kona },
205897255eedSJagadeesh Kona .pwrsts = PWRSTS_OFF_ON,
205997255eedSJagadeesh Kona .parent = &cam_cc_titan_top_gdsc.pd,
206097255eedSJagadeesh Kona .flags = HW_CTRL_TRIGGER | POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
206197255eedSJagadeesh Kona };
206297255eedSJagadeesh Kona
206397255eedSJagadeesh Kona static struct gdsc cam_cc_ife_0_gdsc = {
206497255eedSJagadeesh Kona .gdscr = 0x11004,
206597255eedSJagadeesh Kona .en_rest_wait_val = 0x2,
206697255eedSJagadeesh Kona .en_few_wait_val = 0x2,
206797255eedSJagadeesh Kona .clk_dis_wait_val = 0xf,
206897255eedSJagadeesh Kona .pd = {
206997255eedSJagadeesh Kona .name = "cam_cc_ife_0_gdsc",
207097255eedSJagadeesh Kona },
207197255eedSJagadeesh Kona .pwrsts = PWRSTS_OFF_ON,
207297255eedSJagadeesh Kona .parent = &cam_cc_titan_top_gdsc.pd,
207397255eedSJagadeesh Kona .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
207497255eedSJagadeesh Kona };
207597255eedSJagadeesh Kona
207697255eedSJagadeesh Kona static struct gdsc cam_cc_ife_1_gdsc = {
207797255eedSJagadeesh Kona .gdscr = 0x12004,
207897255eedSJagadeesh Kona .en_rest_wait_val = 0x2,
207997255eedSJagadeesh Kona .en_few_wait_val = 0x2,
208097255eedSJagadeesh Kona .clk_dis_wait_val = 0xf,
208197255eedSJagadeesh Kona .pd = {
208297255eedSJagadeesh Kona .name = "cam_cc_ife_1_gdsc",
208397255eedSJagadeesh Kona },
208497255eedSJagadeesh Kona .pwrsts = PWRSTS_OFF_ON,
208597255eedSJagadeesh Kona .parent = &cam_cc_titan_top_gdsc.pd,
208697255eedSJagadeesh Kona .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
208797255eedSJagadeesh Kona };
208897255eedSJagadeesh Kona
208997255eedSJagadeesh Kona static struct gdsc cam_cc_ipe_0_gdsc = {
209097255eedSJagadeesh Kona .gdscr = 0x103bc,
209197255eedSJagadeesh Kona .en_rest_wait_val = 0x2,
209297255eedSJagadeesh Kona .en_few_wait_val = 0x2,
209397255eedSJagadeesh Kona .clk_dis_wait_val = 0xf,
209497255eedSJagadeesh Kona .pd = {
209597255eedSJagadeesh Kona .name = "cam_cc_ipe_0_gdsc",
209697255eedSJagadeesh Kona },
209797255eedSJagadeesh Kona .pwrsts = PWRSTS_OFF_ON,
209897255eedSJagadeesh Kona .parent = &cam_cc_titan_top_gdsc.pd,
209997255eedSJagadeesh Kona .flags = HW_CTRL_TRIGGER | POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
210097255eedSJagadeesh Kona };
210197255eedSJagadeesh Kona
210297255eedSJagadeesh Kona static struct clk_regmap *cam_cc_glymur_clocks[] = {
210397255eedSJagadeesh Kona [CAM_CC_BPS_AHB_CLK] = &cam_cc_bps_ahb_clk.clkr,
210497255eedSJagadeesh Kona [CAM_CC_BPS_CLK] = &cam_cc_bps_clk.clkr,
210597255eedSJagadeesh Kona [CAM_CC_BPS_CLK_SRC] = &cam_cc_bps_clk_src.clkr,
210697255eedSJagadeesh Kona [CAM_CC_BPS_FAST_AHB_CLK] = &cam_cc_bps_fast_ahb_clk.clkr,
210797255eedSJagadeesh Kona [CAM_CC_CAMNOC_AXI_NRT_CLK] = &cam_cc_camnoc_axi_nrt_clk.clkr,
210897255eedSJagadeesh Kona [CAM_CC_CAMNOC_AXI_RT_CLK] = &cam_cc_camnoc_axi_rt_clk.clkr,
210997255eedSJagadeesh Kona [CAM_CC_CAMNOC_AXI_RT_CLK_SRC] = &cam_cc_camnoc_axi_rt_clk_src.clkr,
211097255eedSJagadeesh Kona [CAM_CC_CAMNOC_DCD_XO_CLK] = &cam_cc_camnoc_dcd_xo_clk.clkr,
211197255eedSJagadeesh Kona [CAM_CC_CAMNOC_XO_CLK] = &cam_cc_camnoc_xo_clk.clkr,
211297255eedSJagadeesh Kona [CAM_CC_CCI_0_CLK] = &cam_cc_cci_0_clk.clkr,
211397255eedSJagadeesh Kona [CAM_CC_CCI_0_CLK_SRC] = &cam_cc_cci_0_clk_src.clkr,
211497255eedSJagadeesh Kona [CAM_CC_CCI_1_CLK] = &cam_cc_cci_1_clk.clkr,
211597255eedSJagadeesh Kona [CAM_CC_CCI_1_CLK_SRC] = &cam_cc_cci_1_clk_src.clkr,
211697255eedSJagadeesh Kona [CAM_CC_CORE_AHB_CLK] = &cam_cc_core_ahb_clk.clkr,
211797255eedSJagadeesh Kona [CAM_CC_CPAS_AHB_CLK] = &cam_cc_cpas_ahb_clk.clkr,
211897255eedSJagadeesh Kona [CAM_CC_CPAS_BPS_CLK] = &cam_cc_cpas_bps_clk.clkr,
211997255eedSJagadeesh Kona [CAM_CC_CPAS_FAST_AHB_CLK] = &cam_cc_cpas_fast_ahb_clk.clkr,
212097255eedSJagadeesh Kona [CAM_CC_CPAS_IFE_0_CLK] = &cam_cc_cpas_ife_0_clk.clkr,
212197255eedSJagadeesh Kona [CAM_CC_CPAS_IFE_1_CLK] = &cam_cc_cpas_ife_1_clk.clkr,
212297255eedSJagadeesh Kona [CAM_CC_CPAS_IFE_LITE_CLK] = &cam_cc_cpas_ife_lite_clk.clkr,
212397255eedSJagadeesh Kona [CAM_CC_CPAS_IPE_NPS_CLK] = &cam_cc_cpas_ipe_nps_clk.clkr,
212497255eedSJagadeesh Kona [CAM_CC_CPHY_RX_CLK_SRC] = &cam_cc_cphy_rx_clk_src.clkr,
212597255eedSJagadeesh Kona [CAM_CC_CSI0PHYTIMER_CLK] = &cam_cc_csi0phytimer_clk.clkr,
212697255eedSJagadeesh Kona [CAM_CC_CSI0PHYTIMER_CLK_SRC] = &cam_cc_csi0phytimer_clk_src.clkr,
212797255eedSJagadeesh Kona [CAM_CC_CSI1PHYTIMER_CLK] = &cam_cc_csi1phytimer_clk.clkr,
212897255eedSJagadeesh Kona [CAM_CC_CSI1PHYTIMER_CLK_SRC] = &cam_cc_csi1phytimer_clk_src.clkr,
212997255eedSJagadeesh Kona [CAM_CC_CSI4PHYTIMER_CLK] = &cam_cc_csi4phytimer_clk.clkr,
213097255eedSJagadeesh Kona [CAM_CC_CSI4PHYTIMER_CLK_SRC] = &cam_cc_csi4phytimer_clk_src.clkr,
213197255eedSJagadeesh Kona [CAM_CC_CSID_CLK] = &cam_cc_csid_clk.clkr,
213297255eedSJagadeesh Kona [CAM_CC_CSID_CLK_SRC] = &cam_cc_csid_clk_src.clkr,
213397255eedSJagadeesh Kona [CAM_CC_CSID_CSIPHY_RX_CLK] = &cam_cc_csid_csiphy_rx_clk.clkr,
213497255eedSJagadeesh Kona [CAM_CC_CSIPHY0_CLK] = &cam_cc_csiphy0_clk.clkr,
213597255eedSJagadeesh Kona [CAM_CC_CSIPHY1_CLK] = &cam_cc_csiphy1_clk.clkr,
213697255eedSJagadeesh Kona [CAM_CC_CSIPHY4_CLK] = &cam_cc_csiphy4_clk.clkr,
213797255eedSJagadeesh Kona [CAM_CC_FAST_AHB_CLK_SRC] = &cam_cc_fast_ahb_clk_src.clkr,
213897255eedSJagadeesh Kona [CAM_CC_ICP_AHB_CLK] = &cam_cc_icp_ahb_clk.clkr,
213997255eedSJagadeesh Kona [CAM_CC_ICP_CLK] = &cam_cc_icp_clk.clkr,
214097255eedSJagadeesh Kona [CAM_CC_ICP_CLK_SRC] = &cam_cc_icp_clk_src.clkr,
214197255eedSJagadeesh Kona [CAM_CC_IFE_0_CLK] = &cam_cc_ife_0_clk.clkr,
214297255eedSJagadeesh Kona [CAM_CC_IFE_0_CLK_SRC] = &cam_cc_ife_0_clk_src.clkr,
214397255eedSJagadeesh Kona [CAM_CC_IFE_0_DSP_CLK] = &cam_cc_ife_0_dsp_clk.clkr,
214497255eedSJagadeesh Kona [CAM_CC_IFE_0_FAST_AHB_CLK] = &cam_cc_ife_0_fast_ahb_clk.clkr,
214597255eedSJagadeesh Kona [CAM_CC_IFE_1_CLK] = &cam_cc_ife_1_clk.clkr,
214697255eedSJagadeesh Kona [CAM_CC_IFE_1_CLK_SRC] = &cam_cc_ife_1_clk_src.clkr,
214797255eedSJagadeesh Kona [CAM_CC_IFE_1_DSP_CLK] = &cam_cc_ife_1_dsp_clk.clkr,
214897255eedSJagadeesh Kona [CAM_CC_IFE_1_FAST_AHB_CLK] = &cam_cc_ife_1_fast_ahb_clk.clkr,
214997255eedSJagadeesh Kona [CAM_CC_IFE_LITE_AHB_CLK] = &cam_cc_ife_lite_ahb_clk.clkr,
215097255eedSJagadeesh Kona [CAM_CC_IFE_LITE_CLK] = &cam_cc_ife_lite_clk.clkr,
215197255eedSJagadeesh Kona [CAM_CC_IFE_LITE_CLK_SRC] = &cam_cc_ife_lite_clk_src.clkr,
215297255eedSJagadeesh Kona [CAM_CC_IFE_LITE_CPHY_RX_CLK] = &cam_cc_ife_lite_cphy_rx_clk.clkr,
215397255eedSJagadeesh Kona [CAM_CC_IFE_LITE_CSID_CLK] = &cam_cc_ife_lite_csid_clk.clkr,
215497255eedSJagadeesh Kona [CAM_CC_IFE_LITE_CSID_CLK_SRC] = &cam_cc_ife_lite_csid_clk_src.clkr,
215597255eedSJagadeesh Kona [CAM_CC_IPE_NPS_AHB_CLK] = &cam_cc_ipe_nps_ahb_clk.clkr,
215697255eedSJagadeesh Kona [CAM_CC_IPE_NPS_CLK] = &cam_cc_ipe_nps_clk.clkr,
215797255eedSJagadeesh Kona [CAM_CC_IPE_NPS_CLK_SRC] = &cam_cc_ipe_nps_clk_src.clkr,
215897255eedSJagadeesh Kona [CAM_CC_IPE_NPS_FAST_AHB_CLK] = &cam_cc_ipe_nps_fast_ahb_clk.clkr,
215997255eedSJagadeesh Kona [CAM_CC_IPE_PPS_CLK] = &cam_cc_ipe_pps_clk.clkr,
216097255eedSJagadeesh Kona [CAM_CC_IPE_PPS_FAST_AHB_CLK] = &cam_cc_ipe_pps_fast_ahb_clk.clkr,
216197255eedSJagadeesh Kona [CAM_CC_JPEG_CLK] = &cam_cc_jpeg_clk.clkr,
216297255eedSJagadeesh Kona [CAM_CC_JPEG_CLK_SRC] = &cam_cc_jpeg_clk_src.clkr,
216397255eedSJagadeesh Kona [CAM_CC_MCLK0_CLK] = &cam_cc_mclk0_clk.clkr,
216497255eedSJagadeesh Kona [CAM_CC_MCLK0_CLK_SRC] = &cam_cc_mclk0_clk_src.clkr,
216597255eedSJagadeesh Kona [CAM_CC_MCLK1_CLK] = &cam_cc_mclk1_clk.clkr,
216697255eedSJagadeesh Kona [CAM_CC_MCLK1_CLK_SRC] = &cam_cc_mclk1_clk_src.clkr,
216797255eedSJagadeesh Kona [CAM_CC_MCLK2_CLK] = &cam_cc_mclk2_clk.clkr,
216897255eedSJagadeesh Kona [CAM_CC_MCLK2_CLK_SRC] = &cam_cc_mclk2_clk_src.clkr,
216997255eedSJagadeesh Kona [CAM_CC_MCLK3_CLK] = &cam_cc_mclk3_clk.clkr,
217097255eedSJagadeesh Kona [CAM_CC_MCLK3_CLK_SRC] = &cam_cc_mclk3_clk_src.clkr,
217197255eedSJagadeesh Kona [CAM_CC_MCLK4_CLK] = &cam_cc_mclk4_clk.clkr,
217297255eedSJagadeesh Kona [CAM_CC_MCLK4_CLK_SRC] = &cam_cc_mclk4_clk_src.clkr,
217397255eedSJagadeesh Kona [CAM_CC_MCLK5_CLK] = &cam_cc_mclk5_clk.clkr,
217497255eedSJagadeesh Kona [CAM_CC_MCLK5_CLK_SRC] = &cam_cc_mclk5_clk_src.clkr,
217597255eedSJagadeesh Kona [CAM_CC_MCLK6_CLK] = &cam_cc_mclk6_clk.clkr,
217697255eedSJagadeesh Kona [CAM_CC_MCLK6_CLK_SRC] = &cam_cc_mclk6_clk_src.clkr,
217797255eedSJagadeesh Kona [CAM_CC_MCLK7_CLK] = &cam_cc_mclk7_clk.clkr,
217897255eedSJagadeesh Kona [CAM_CC_MCLK7_CLK_SRC] = &cam_cc_mclk7_clk_src.clkr,
217997255eedSJagadeesh Kona [CAM_CC_PLL0] = &cam_cc_pll0.clkr,
218097255eedSJagadeesh Kona [CAM_CC_PLL0_OUT_EVEN] = &cam_cc_pll0_out_even.clkr,
218197255eedSJagadeesh Kona [CAM_CC_PLL0_OUT_ODD] = &cam_cc_pll0_out_odd.clkr,
218297255eedSJagadeesh Kona [CAM_CC_PLL1] = &cam_cc_pll1.clkr,
218397255eedSJagadeesh Kona [CAM_CC_PLL1_OUT_EVEN] = &cam_cc_pll1_out_even.clkr,
218497255eedSJagadeesh Kona [CAM_CC_PLL2] = &cam_cc_pll2.clkr,
218597255eedSJagadeesh Kona [CAM_CC_PLL3] = &cam_cc_pll3.clkr,
218697255eedSJagadeesh Kona [CAM_CC_PLL3_OUT_EVEN] = &cam_cc_pll3_out_even.clkr,
218797255eedSJagadeesh Kona [CAM_CC_PLL4] = &cam_cc_pll4.clkr,
218897255eedSJagadeesh Kona [CAM_CC_PLL4_OUT_EVEN] = &cam_cc_pll4_out_even.clkr,
218997255eedSJagadeesh Kona [CAM_CC_PLL5] = &cam_cc_pll5.clkr,
219097255eedSJagadeesh Kona [CAM_CC_PLL5_OUT_EVEN] = &cam_cc_pll5_out_even.clkr,
219197255eedSJagadeesh Kona [CAM_CC_QDSS_DEBUG_CLK] = &cam_cc_qdss_debug_clk.clkr,
219297255eedSJagadeesh Kona [CAM_CC_QDSS_DEBUG_CLK_SRC] = &cam_cc_qdss_debug_clk_src.clkr,
219397255eedSJagadeesh Kona [CAM_CC_QDSS_DEBUG_XO_CLK] = &cam_cc_qdss_debug_xo_clk.clkr,
219497255eedSJagadeesh Kona [CAM_CC_SLEEP_CLK_SRC] = &cam_cc_sleep_clk_src.clkr,
219597255eedSJagadeesh Kona [CAM_CC_SLOW_AHB_CLK_SRC] = &cam_cc_slow_ahb_clk_src.clkr,
219697255eedSJagadeesh Kona [CAM_CC_XO_CLK_SRC] = &cam_cc_xo_clk_src.clkr,
219797255eedSJagadeesh Kona };
219897255eedSJagadeesh Kona
219997255eedSJagadeesh Kona static struct gdsc *cam_cc_glymur_gdscs[] = {
220097255eedSJagadeesh Kona [CAM_CC_BPS_GDSC] = &cam_cc_bps_gdsc,
220197255eedSJagadeesh Kona [CAM_CC_IFE_0_GDSC] = &cam_cc_ife_0_gdsc,
220297255eedSJagadeesh Kona [CAM_CC_IFE_1_GDSC] = &cam_cc_ife_1_gdsc,
220397255eedSJagadeesh Kona [CAM_CC_IPE_0_GDSC] = &cam_cc_ipe_0_gdsc,
220497255eedSJagadeesh Kona [CAM_CC_TITAN_TOP_GDSC] = &cam_cc_titan_top_gdsc,
220597255eedSJagadeesh Kona };
220697255eedSJagadeesh Kona
220797255eedSJagadeesh Kona static const struct qcom_reset_map cam_cc_glymur_resets[] = {
220897255eedSJagadeesh Kona [CAM_CC_BPS_BCR] = { 0x10000 },
220997255eedSJagadeesh Kona [CAM_CC_ICP_BCR] = { 0x133c8 },
221097255eedSJagadeesh Kona [CAM_CC_IFE_0_BCR] = { 0x11000 },
221197255eedSJagadeesh Kona [CAM_CC_IFE_1_BCR] = { 0x12000 },
221297255eedSJagadeesh Kona [CAM_CC_IPE_0_BCR] = { 0x103b8 },
221397255eedSJagadeesh Kona [CAM_CC_QDSS_DEBUG_BCR] = { 0x137f8 },
221497255eedSJagadeesh Kona };
221597255eedSJagadeesh Kona
221697255eedSJagadeesh Kona static struct clk_alpha_pll *cam_cc_glymur_plls[] = {
221797255eedSJagadeesh Kona &cam_cc_pll0,
221897255eedSJagadeesh Kona &cam_cc_pll1,
221997255eedSJagadeesh Kona &cam_cc_pll2,
222097255eedSJagadeesh Kona &cam_cc_pll3,
222197255eedSJagadeesh Kona &cam_cc_pll4,
222297255eedSJagadeesh Kona &cam_cc_pll5,
222397255eedSJagadeesh Kona };
222497255eedSJagadeesh Kona
2225*a9954d40SJagadeesh Kona static const u32 cam_cc_glymur_critical_cbcrs[] = {
222697255eedSJagadeesh Kona 0x13960, /* CAM_CC_GDSC_CLK */
222797255eedSJagadeesh Kona 0x1397c, /* CAM_CC_SLEEP_CLK */
222897255eedSJagadeesh Kona };
222997255eedSJagadeesh Kona
223097255eedSJagadeesh Kona static const struct regmap_config cam_cc_glymur_regmap_config = {
223197255eedSJagadeesh Kona .reg_bits = 32,
223297255eedSJagadeesh Kona .reg_stride = 4,
223397255eedSJagadeesh Kona .val_bits = 32,
223497255eedSJagadeesh Kona .max_register = 0x1603c,
223597255eedSJagadeesh Kona .fast_io = true,
223697255eedSJagadeesh Kona };
223797255eedSJagadeesh Kona
2238*a9954d40SJagadeesh Kona static const struct qcom_cc_driver_data cam_cc_glymur_driver_data = {
223997255eedSJagadeesh Kona .alpha_plls = cam_cc_glymur_plls,
224097255eedSJagadeesh Kona .num_alpha_plls = ARRAY_SIZE(cam_cc_glymur_plls),
224197255eedSJagadeesh Kona .clk_cbcrs = cam_cc_glymur_critical_cbcrs,
224297255eedSJagadeesh Kona .num_clk_cbcrs = ARRAY_SIZE(cam_cc_glymur_critical_cbcrs),
224397255eedSJagadeesh Kona };
224497255eedSJagadeesh Kona
224597255eedSJagadeesh Kona static const struct qcom_cc_desc cam_cc_glymur_desc = {
224697255eedSJagadeesh Kona .config = &cam_cc_glymur_regmap_config,
224797255eedSJagadeesh Kona .clks = cam_cc_glymur_clocks,
224897255eedSJagadeesh Kona .num_clks = ARRAY_SIZE(cam_cc_glymur_clocks),
224997255eedSJagadeesh Kona .resets = cam_cc_glymur_resets,
225097255eedSJagadeesh Kona .num_resets = ARRAY_SIZE(cam_cc_glymur_resets),
225197255eedSJagadeesh Kona .gdscs = cam_cc_glymur_gdscs,
225297255eedSJagadeesh Kona .num_gdscs = ARRAY_SIZE(cam_cc_glymur_gdscs),
225397255eedSJagadeesh Kona .use_rpm = true,
225497255eedSJagadeesh Kona .driver_data = &cam_cc_glymur_driver_data,
225597255eedSJagadeesh Kona };
225697255eedSJagadeesh Kona
225797255eedSJagadeesh Kona static const struct of_device_id cam_cc_glymur_match_table[] = {
225897255eedSJagadeesh Kona { .compatible = "qcom,glymur-camcc" },
225997255eedSJagadeesh Kona { }
226097255eedSJagadeesh Kona };
226197255eedSJagadeesh Kona MODULE_DEVICE_TABLE(of, cam_cc_glymur_match_table);
226297255eedSJagadeesh Kona
cam_cc_glymur_probe(struct platform_device * pdev)226397255eedSJagadeesh Kona static int cam_cc_glymur_probe(struct platform_device *pdev)
226497255eedSJagadeesh Kona {
226597255eedSJagadeesh Kona return qcom_cc_probe(pdev, &cam_cc_glymur_desc);
226697255eedSJagadeesh Kona }
226797255eedSJagadeesh Kona
226897255eedSJagadeesh Kona static struct platform_driver cam_cc_glymur_driver = {
226997255eedSJagadeesh Kona .probe = cam_cc_glymur_probe,
227097255eedSJagadeesh Kona .driver = {
227197255eedSJagadeesh Kona .name = "camcc-glymur",
227297255eedSJagadeesh Kona .of_match_table = cam_cc_glymur_match_table,
227397255eedSJagadeesh Kona },
227497255eedSJagadeesh Kona };
227597255eedSJagadeesh Kona
227697255eedSJagadeesh Kona module_platform_driver(cam_cc_glymur_driver);
227797255eedSJagadeesh Kona
227897255eedSJagadeesh Kona MODULE_DESCRIPTION("QTI CAMCC GLYMUR Driver");
227997255eedSJagadeesh Kona MODULE_LICENSE("GPL");
2280