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