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