162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (c) 2020-2021, The Linux Foundation. All rights reserved. 462306a36Sopenharmony_ci */ 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci#include <linux/clk-provider.h> 762306a36Sopenharmony_ci#include <linux/mod_devicetable.h> 862306a36Sopenharmony_ci#include <linux/module.h> 962306a36Sopenharmony_ci#include <linux/platform_device.h> 1062306a36Sopenharmony_ci#include <linux/regmap.h> 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci#include <dt-bindings/clock/qcom,sm8450-camcc.h> 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci#include "clk-alpha-pll.h" 1562306a36Sopenharmony_ci#include "clk-branch.h" 1662306a36Sopenharmony_ci#include "clk-pll.h" 1762306a36Sopenharmony_ci#include "clk-rcg.h" 1862306a36Sopenharmony_ci#include "clk-regmap-divider.h" 1962306a36Sopenharmony_ci#include "clk-regmap-mux.h" 2062306a36Sopenharmony_ci#include "clk-regmap.h" 2162306a36Sopenharmony_ci#include "common.h" 2262306a36Sopenharmony_ci#include "gdsc.h" 2362306a36Sopenharmony_ci#include "reset.h" 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_cienum { 2662306a36Sopenharmony_ci DT_IFACE, 2762306a36Sopenharmony_ci DT_BI_TCXO, 2862306a36Sopenharmony_ci DT_BI_TCXO_AO, 2962306a36Sopenharmony_ci DT_SLEEP_CLK 3062306a36Sopenharmony_ci}; 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_cienum { 3362306a36Sopenharmony_ci P_BI_TCXO, 3462306a36Sopenharmony_ci P_CAM_CC_PLL0_OUT_EVEN, 3562306a36Sopenharmony_ci P_CAM_CC_PLL0_OUT_MAIN, 3662306a36Sopenharmony_ci P_CAM_CC_PLL0_OUT_ODD, 3762306a36Sopenharmony_ci P_CAM_CC_PLL1_OUT_EVEN, 3862306a36Sopenharmony_ci P_CAM_CC_PLL2_OUT_EVEN, 3962306a36Sopenharmony_ci P_CAM_CC_PLL2_OUT_MAIN, 4062306a36Sopenharmony_ci P_CAM_CC_PLL3_OUT_EVEN, 4162306a36Sopenharmony_ci P_CAM_CC_PLL4_OUT_EVEN, 4262306a36Sopenharmony_ci P_CAM_CC_PLL5_OUT_EVEN, 4362306a36Sopenharmony_ci P_CAM_CC_PLL6_OUT_EVEN, 4462306a36Sopenharmony_ci P_CAM_CC_PLL7_OUT_EVEN, 4562306a36Sopenharmony_ci P_CAM_CC_PLL8_OUT_EVEN, 4662306a36Sopenharmony_ci P_SLEEP_CLK, 4762306a36Sopenharmony_ci}; 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_cistatic const struct pll_vco lucid_evo_vco[] = { 5062306a36Sopenharmony_ci { 249600000, 2000000000, 0 }, 5162306a36Sopenharmony_ci}; 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_cistatic const struct pll_vco rivian_evo_vco[] = { 5462306a36Sopenharmony_ci { 864000000, 1056000000, 0 }, 5562306a36Sopenharmony_ci}; 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_cistatic const struct clk_parent_data pll_parent_data_tcxo = { .index = DT_BI_TCXO }; 5862306a36Sopenharmony_ci 5962306a36Sopenharmony_cistatic const struct alpha_pll_config cam_cc_pll0_config = { 6062306a36Sopenharmony_ci .l = 0x3e, 6162306a36Sopenharmony_ci .alpha = 0x8000, 6262306a36Sopenharmony_ci .config_ctl_val = 0x20485699, 6362306a36Sopenharmony_ci .config_ctl_hi_val = 0x00182261, 6462306a36Sopenharmony_ci .config_ctl_hi1_val = 0x32aa299c, 6562306a36Sopenharmony_ci .user_ctl_val = 0x00008400, 6662306a36Sopenharmony_ci .user_ctl_hi_val = 0x00000805, 6762306a36Sopenharmony_ci}; 6862306a36Sopenharmony_ci 6962306a36Sopenharmony_cistatic struct clk_alpha_pll cam_cc_pll0 = { 7062306a36Sopenharmony_ci .offset = 0x0, 7162306a36Sopenharmony_ci .vco_table = lucid_evo_vco, 7262306a36Sopenharmony_ci .num_vco = ARRAY_SIZE(lucid_evo_vco), 7362306a36Sopenharmony_ci .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO], 7462306a36Sopenharmony_ci .clkr = { 7562306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 7662306a36Sopenharmony_ci .name = "cam_cc_pll0", 7762306a36Sopenharmony_ci .parent_data = &pll_parent_data_tcxo, 7862306a36Sopenharmony_ci .num_parents = 1, 7962306a36Sopenharmony_ci .ops = &clk_alpha_pll_lucid_evo_ops, 8062306a36Sopenharmony_ci }, 8162306a36Sopenharmony_ci }, 8262306a36Sopenharmony_ci}; 8362306a36Sopenharmony_ci 8462306a36Sopenharmony_cistatic const struct clk_div_table post_div_table_cam_cc_pll0_out_even[] = { 8562306a36Sopenharmony_ci { 0x1, 2 }, 8662306a36Sopenharmony_ci { } 8762306a36Sopenharmony_ci}; 8862306a36Sopenharmony_ci 8962306a36Sopenharmony_cistatic struct clk_alpha_pll_postdiv cam_cc_pll0_out_even = { 9062306a36Sopenharmony_ci .offset = 0x0, 9162306a36Sopenharmony_ci .post_div_shift = 10, 9262306a36Sopenharmony_ci .post_div_table = post_div_table_cam_cc_pll0_out_even, 9362306a36Sopenharmony_ci .num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll0_out_even), 9462306a36Sopenharmony_ci .width = 4, 9562306a36Sopenharmony_ci .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO], 9662306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 9762306a36Sopenharmony_ci .name = "cam_cc_pll0_out_even", 9862306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 9962306a36Sopenharmony_ci &cam_cc_pll0.clkr.hw, 10062306a36Sopenharmony_ci }, 10162306a36Sopenharmony_ci .num_parents = 1, 10262306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 10362306a36Sopenharmony_ci .ops = &clk_alpha_pll_postdiv_lucid_evo_ops, 10462306a36Sopenharmony_ci }, 10562306a36Sopenharmony_ci}; 10662306a36Sopenharmony_ci 10762306a36Sopenharmony_cistatic const struct clk_div_table post_div_table_cam_cc_pll0_out_odd[] = { 10862306a36Sopenharmony_ci { 0x2, 3 }, 10962306a36Sopenharmony_ci { } 11062306a36Sopenharmony_ci}; 11162306a36Sopenharmony_ci 11262306a36Sopenharmony_cistatic struct clk_alpha_pll_postdiv cam_cc_pll0_out_odd = { 11362306a36Sopenharmony_ci .offset = 0x0, 11462306a36Sopenharmony_ci .post_div_shift = 14, 11562306a36Sopenharmony_ci .post_div_table = post_div_table_cam_cc_pll0_out_odd, 11662306a36Sopenharmony_ci .num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll0_out_odd), 11762306a36Sopenharmony_ci .width = 4, 11862306a36Sopenharmony_ci .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO], 11962306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 12062306a36Sopenharmony_ci .name = "cam_cc_pll0_out_odd", 12162306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 12262306a36Sopenharmony_ci &cam_cc_pll0.clkr.hw, 12362306a36Sopenharmony_ci }, 12462306a36Sopenharmony_ci .num_parents = 1, 12562306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 12662306a36Sopenharmony_ci .ops = &clk_alpha_pll_postdiv_lucid_evo_ops, 12762306a36Sopenharmony_ci }, 12862306a36Sopenharmony_ci}; 12962306a36Sopenharmony_ci 13062306a36Sopenharmony_cistatic const struct alpha_pll_config cam_cc_pll1_config = { 13162306a36Sopenharmony_ci .l = 0x25, 13262306a36Sopenharmony_ci .alpha = 0xeaaa, 13362306a36Sopenharmony_ci .config_ctl_val = 0x20485699, 13462306a36Sopenharmony_ci .config_ctl_hi_val = 0x00182261, 13562306a36Sopenharmony_ci .config_ctl_hi1_val = 0x32aa299c, 13662306a36Sopenharmony_ci .user_ctl_val = 0x00000400, 13762306a36Sopenharmony_ci .user_ctl_hi_val = 0x00000805, 13862306a36Sopenharmony_ci}; 13962306a36Sopenharmony_ci 14062306a36Sopenharmony_cistatic struct clk_alpha_pll cam_cc_pll1 = { 14162306a36Sopenharmony_ci .offset = 0x1000, 14262306a36Sopenharmony_ci .vco_table = lucid_evo_vco, 14362306a36Sopenharmony_ci .num_vco = ARRAY_SIZE(lucid_evo_vco), 14462306a36Sopenharmony_ci .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO], 14562306a36Sopenharmony_ci .clkr = { 14662306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 14762306a36Sopenharmony_ci .name = "cam_cc_pll1", 14862306a36Sopenharmony_ci .parent_data = &pll_parent_data_tcxo, 14962306a36Sopenharmony_ci .num_parents = 1, 15062306a36Sopenharmony_ci .ops = &clk_alpha_pll_lucid_evo_ops, 15162306a36Sopenharmony_ci }, 15262306a36Sopenharmony_ci }, 15362306a36Sopenharmony_ci}; 15462306a36Sopenharmony_ci 15562306a36Sopenharmony_cistatic const struct clk_div_table post_div_table_cam_cc_pll1_out_even[] = { 15662306a36Sopenharmony_ci { 0x1, 2 }, 15762306a36Sopenharmony_ci { } 15862306a36Sopenharmony_ci}; 15962306a36Sopenharmony_ci 16062306a36Sopenharmony_cistatic struct clk_alpha_pll_postdiv cam_cc_pll1_out_even = { 16162306a36Sopenharmony_ci .offset = 0x1000, 16262306a36Sopenharmony_ci .post_div_shift = 10, 16362306a36Sopenharmony_ci .post_div_table = post_div_table_cam_cc_pll1_out_even, 16462306a36Sopenharmony_ci .num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll1_out_even), 16562306a36Sopenharmony_ci .width = 4, 16662306a36Sopenharmony_ci .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO], 16762306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 16862306a36Sopenharmony_ci .name = "cam_cc_pll1_out_even", 16962306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 17062306a36Sopenharmony_ci &cam_cc_pll1.clkr.hw, 17162306a36Sopenharmony_ci }, 17262306a36Sopenharmony_ci .num_parents = 1, 17362306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 17462306a36Sopenharmony_ci .ops = &clk_alpha_pll_postdiv_lucid_evo_ops, 17562306a36Sopenharmony_ci }, 17662306a36Sopenharmony_ci}; 17762306a36Sopenharmony_ci 17862306a36Sopenharmony_cistatic const struct alpha_pll_config cam_cc_pll2_config = { 17962306a36Sopenharmony_ci .l = 0x32, 18062306a36Sopenharmony_ci .alpha = 0x0, 18162306a36Sopenharmony_ci .config_ctl_val = 0x90008820, 18262306a36Sopenharmony_ci .config_ctl_hi_val = 0x00890263, 18362306a36Sopenharmony_ci .config_ctl_hi1_val = 0x00000217, 18462306a36Sopenharmony_ci}; 18562306a36Sopenharmony_ci 18662306a36Sopenharmony_cistatic struct clk_alpha_pll cam_cc_pll2 = { 18762306a36Sopenharmony_ci .offset = 0x2000, 18862306a36Sopenharmony_ci .vco_table = rivian_evo_vco, 18962306a36Sopenharmony_ci .num_vco = ARRAY_SIZE(rivian_evo_vco), 19062306a36Sopenharmony_ci .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_RIVIAN_EVO], 19162306a36Sopenharmony_ci .clkr = { 19262306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 19362306a36Sopenharmony_ci .name = "cam_cc_pll2", 19462306a36Sopenharmony_ci .parent_data = &pll_parent_data_tcxo, 19562306a36Sopenharmony_ci .num_parents = 1, 19662306a36Sopenharmony_ci .ops = &clk_alpha_pll_rivian_evo_ops, 19762306a36Sopenharmony_ci }, 19862306a36Sopenharmony_ci }, 19962306a36Sopenharmony_ci}; 20062306a36Sopenharmony_ci 20162306a36Sopenharmony_cistatic const struct alpha_pll_config cam_cc_pll3_config = { 20262306a36Sopenharmony_ci .l = 0x2d, 20362306a36Sopenharmony_ci .alpha = 0x0, 20462306a36Sopenharmony_ci .config_ctl_val = 0x20485699, 20562306a36Sopenharmony_ci .config_ctl_hi_val = 0x00182261, 20662306a36Sopenharmony_ci .config_ctl_hi1_val = 0x32aa299c, 20762306a36Sopenharmony_ci .user_ctl_val = 0x00000400, 20862306a36Sopenharmony_ci .user_ctl_hi_val = 0x00000805, 20962306a36Sopenharmony_ci}; 21062306a36Sopenharmony_ci 21162306a36Sopenharmony_cistatic struct clk_alpha_pll cam_cc_pll3 = { 21262306a36Sopenharmony_ci .offset = 0x3000, 21362306a36Sopenharmony_ci .vco_table = lucid_evo_vco, 21462306a36Sopenharmony_ci .num_vco = ARRAY_SIZE(lucid_evo_vco), 21562306a36Sopenharmony_ci .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO], 21662306a36Sopenharmony_ci .clkr = { 21762306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 21862306a36Sopenharmony_ci .name = "cam_cc_pll3", 21962306a36Sopenharmony_ci .parent_data = &pll_parent_data_tcxo, 22062306a36Sopenharmony_ci .num_parents = 1, 22162306a36Sopenharmony_ci .ops = &clk_alpha_pll_lucid_evo_ops, 22262306a36Sopenharmony_ci }, 22362306a36Sopenharmony_ci }, 22462306a36Sopenharmony_ci}; 22562306a36Sopenharmony_ci 22662306a36Sopenharmony_cistatic const struct clk_div_table post_div_table_cam_cc_pll3_out_even[] = { 22762306a36Sopenharmony_ci { 0x1, 2 }, 22862306a36Sopenharmony_ci { } 22962306a36Sopenharmony_ci}; 23062306a36Sopenharmony_ci 23162306a36Sopenharmony_cistatic struct clk_alpha_pll_postdiv cam_cc_pll3_out_even = { 23262306a36Sopenharmony_ci .offset = 0x3000, 23362306a36Sopenharmony_ci .post_div_shift = 10, 23462306a36Sopenharmony_ci .post_div_table = post_div_table_cam_cc_pll3_out_even, 23562306a36Sopenharmony_ci .num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll3_out_even), 23662306a36Sopenharmony_ci .width = 4, 23762306a36Sopenharmony_ci .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO], 23862306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 23962306a36Sopenharmony_ci .name = "cam_cc_pll3_out_even", 24062306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 24162306a36Sopenharmony_ci &cam_cc_pll3.clkr.hw, 24262306a36Sopenharmony_ci }, 24362306a36Sopenharmony_ci .num_parents = 1, 24462306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 24562306a36Sopenharmony_ci .ops = &clk_alpha_pll_postdiv_lucid_evo_ops, 24662306a36Sopenharmony_ci }, 24762306a36Sopenharmony_ci}; 24862306a36Sopenharmony_ci 24962306a36Sopenharmony_cistatic const struct alpha_pll_config cam_cc_pll4_config = { 25062306a36Sopenharmony_ci .l = 0x2d, 25162306a36Sopenharmony_ci .alpha = 0x0, 25262306a36Sopenharmony_ci .config_ctl_val = 0x20485699, 25362306a36Sopenharmony_ci .config_ctl_hi_val = 0x00182261, 25462306a36Sopenharmony_ci .config_ctl_hi1_val = 0x32aa299c, 25562306a36Sopenharmony_ci .user_ctl_val = 0x00000400, 25662306a36Sopenharmony_ci .user_ctl_hi_val = 0x00000805, 25762306a36Sopenharmony_ci}; 25862306a36Sopenharmony_ci 25962306a36Sopenharmony_cistatic struct clk_alpha_pll cam_cc_pll4 = { 26062306a36Sopenharmony_ci .offset = 0x4000, 26162306a36Sopenharmony_ci .vco_table = lucid_evo_vco, 26262306a36Sopenharmony_ci .num_vco = ARRAY_SIZE(lucid_evo_vco), 26362306a36Sopenharmony_ci .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO], 26462306a36Sopenharmony_ci .clkr = { 26562306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 26662306a36Sopenharmony_ci .name = "cam_cc_pll4", 26762306a36Sopenharmony_ci .parent_data = &pll_parent_data_tcxo, 26862306a36Sopenharmony_ci .num_parents = 1, 26962306a36Sopenharmony_ci .ops = &clk_alpha_pll_lucid_evo_ops, 27062306a36Sopenharmony_ci }, 27162306a36Sopenharmony_ci }, 27262306a36Sopenharmony_ci}; 27362306a36Sopenharmony_ci 27462306a36Sopenharmony_cistatic const struct clk_div_table post_div_table_cam_cc_pll4_out_even[] = { 27562306a36Sopenharmony_ci { 0x1, 2 }, 27662306a36Sopenharmony_ci { } 27762306a36Sopenharmony_ci}; 27862306a36Sopenharmony_ci 27962306a36Sopenharmony_cistatic struct clk_alpha_pll_postdiv cam_cc_pll4_out_even = { 28062306a36Sopenharmony_ci .offset = 0x4000, 28162306a36Sopenharmony_ci .post_div_shift = 10, 28262306a36Sopenharmony_ci .post_div_table = post_div_table_cam_cc_pll4_out_even, 28362306a36Sopenharmony_ci .num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll4_out_even), 28462306a36Sopenharmony_ci .width = 4, 28562306a36Sopenharmony_ci .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO], 28662306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 28762306a36Sopenharmony_ci .name = "cam_cc_pll4_out_even", 28862306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 28962306a36Sopenharmony_ci &cam_cc_pll4.clkr.hw, 29062306a36Sopenharmony_ci }, 29162306a36Sopenharmony_ci .num_parents = 1, 29262306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 29362306a36Sopenharmony_ci .ops = &clk_alpha_pll_postdiv_lucid_evo_ops, 29462306a36Sopenharmony_ci }, 29562306a36Sopenharmony_ci}; 29662306a36Sopenharmony_ci 29762306a36Sopenharmony_cistatic const struct alpha_pll_config cam_cc_pll5_config = { 29862306a36Sopenharmony_ci .l = 0x2d, 29962306a36Sopenharmony_ci .alpha = 0x0, 30062306a36Sopenharmony_ci .config_ctl_val = 0x20485699, 30162306a36Sopenharmony_ci .config_ctl_hi_val = 0x00182261, 30262306a36Sopenharmony_ci .config_ctl_hi1_val = 0x32aa299c, 30362306a36Sopenharmony_ci .user_ctl_val = 0x00000400, 30462306a36Sopenharmony_ci .user_ctl_hi_val = 0x00000805, 30562306a36Sopenharmony_ci}; 30662306a36Sopenharmony_ci 30762306a36Sopenharmony_cistatic struct clk_alpha_pll cam_cc_pll5 = { 30862306a36Sopenharmony_ci .offset = 0x5000, 30962306a36Sopenharmony_ci .vco_table = lucid_evo_vco, 31062306a36Sopenharmony_ci .num_vco = ARRAY_SIZE(lucid_evo_vco), 31162306a36Sopenharmony_ci .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO], 31262306a36Sopenharmony_ci .clkr = { 31362306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 31462306a36Sopenharmony_ci .name = "cam_cc_pll5", 31562306a36Sopenharmony_ci .parent_data = &pll_parent_data_tcxo, 31662306a36Sopenharmony_ci .num_parents = 1, 31762306a36Sopenharmony_ci .ops = &clk_alpha_pll_lucid_evo_ops, 31862306a36Sopenharmony_ci }, 31962306a36Sopenharmony_ci }, 32062306a36Sopenharmony_ci}; 32162306a36Sopenharmony_ci 32262306a36Sopenharmony_cistatic const struct clk_div_table post_div_table_cam_cc_pll5_out_even[] = { 32362306a36Sopenharmony_ci { 0x1, 2 }, 32462306a36Sopenharmony_ci { } 32562306a36Sopenharmony_ci}; 32662306a36Sopenharmony_ci 32762306a36Sopenharmony_cistatic struct clk_alpha_pll_postdiv cam_cc_pll5_out_even = { 32862306a36Sopenharmony_ci .offset = 0x5000, 32962306a36Sopenharmony_ci .post_div_shift = 10, 33062306a36Sopenharmony_ci .post_div_table = post_div_table_cam_cc_pll5_out_even, 33162306a36Sopenharmony_ci .num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll5_out_even), 33262306a36Sopenharmony_ci .width = 4, 33362306a36Sopenharmony_ci .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO], 33462306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 33562306a36Sopenharmony_ci .name = "cam_cc_pll5_out_even", 33662306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 33762306a36Sopenharmony_ci &cam_cc_pll5.clkr.hw, 33862306a36Sopenharmony_ci }, 33962306a36Sopenharmony_ci .num_parents = 1, 34062306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 34162306a36Sopenharmony_ci .ops = &clk_alpha_pll_postdiv_lucid_evo_ops, 34262306a36Sopenharmony_ci }, 34362306a36Sopenharmony_ci}; 34462306a36Sopenharmony_ci 34562306a36Sopenharmony_cistatic const struct alpha_pll_config cam_cc_pll6_config = { 34662306a36Sopenharmony_ci .l = 0x2d, 34762306a36Sopenharmony_ci .alpha = 0x0, 34862306a36Sopenharmony_ci .config_ctl_val = 0x20485699, 34962306a36Sopenharmony_ci .config_ctl_hi_val = 0x00182261, 35062306a36Sopenharmony_ci .config_ctl_hi1_val = 0x32aa299c, 35162306a36Sopenharmony_ci .user_ctl_val = 0x00000400, 35262306a36Sopenharmony_ci .user_ctl_hi_val = 0x00000805, 35362306a36Sopenharmony_ci}; 35462306a36Sopenharmony_ci 35562306a36Sopenharmony_cistatic struct clk_alpha_pll cam_cc_pll6 = { 35662306a36Sopenharmony_ci .offset = 0x6000, 35762306a36Sopenharmony_ci .vco_table = lucid_evo_vco, 35862306a36Sopenharmony_ci .num_vco = ARRAY_SIZE(lucid_evo_vco), 35962306a36Sopenharmony_ci .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO], 36062306a36Sopenharmony_ci .clkr = { 36162306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 36262306a36Sopenharmony_ci .name = "cam_cc_pll6", 36362306a36Sopenharmony_ci .parent_data = &pll_parent_data_tcxo, 36462306a36Sopenharmony_ci .num_parents = 1, 36562306a36Sopenharmony_ci .ops = &clk_alpha_pll_lucid_evo_ops, 36662306a36Sopenharmony_ci }, 36762306a36Sopenharmony_ci }, 36862306a36Sopenharmony_ci}; 36962306a36Sopenharmony_ci 37062306a36Sopenharmony_cistatic const struct clk_div_table post_div_table_cam_cc_pll6_out_even[] = { 37162306a36Sopenharmony_ci { 0x1, 2 }, 37262306a36Sopenharmony_ci { } 37362306a36Sopenharmony_ci}; 37462306a36Sopenharmony_ci 37562306a36Sopenharmony_cistatic struct clk_alpha_pll_postdiv cam_cc_pll6_out_even = { 37662306a36Sopenharmony_ci .offset = 0x6000, 37762306a36Sopenharmony_ci .post_div_shift = 10, 37862306a36Sopenharmony_ci .post_div_table = post_div_table_cam_cc_pll6_out_even, 37962306a36Sopenharmony_ci .num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll6_out_even), 38062306a36Sopenharmony_ci .width = 4, 38162306a36Sopenharmony_ci .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO], 38262306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 38362306a36Sopenharmony_ci .name = "cam_cc_pll6_out_even", 38462306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 38562306a36Sopenharmony_ci &cam_cc_pll6.clkr.hw, 38662306a36Sopenharmony_ci }, 38762306a36Sopenharmony_ci .num_parents = 1, 38862306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 38962306a36Sopenharmony_ci .ops = &clk_alpha_pll_postdiv_lucid_evo_ops, 39062306a36Sopenharmony_ci }, 39162306a36Sopenharmony_ci}; 39262306a36Sopenharmony_ci 39362306a36Sopenharmony_cistatic const struct alpha_pll_config cam_cc_pll7_config = { 39462306a36Sopenharmony_ci .l = 0x2d, 39562306a36Sopenharmony_ci .alpha = 0x0, 39662306a36Sopenharmony_ci .config_ctl_val = 0x20485699, 39762306a36Sopenharmony_ci .config_ctl_hi_val = 0x00182261, 39862306a36Sopenharmony_ci .config_ctl_hi1_val = 0x32aa299c, 39962306a36Sopenharmony_ci .user_ctl_val = 0x00000400, 40062306a36Sopenharmony_ci .user_ctl_hi_val = 0x00000805, 40162306a36Sopenharmony_ci}; 40262306a36Sopenharmony_ci 40362306a36Sopenharmony_cistatic struct clk_alpha_pll cam_cc_pll7 = { 40462306a36Sopenharmony_ci .offset = 0x7000, 40562306a36Sopenharmony_ci .vco_table = lucid_evo_vco, 40662306a36Sopenharmony_ci .num_vco = ARRAY_SIZE(lucid_evo_vco), 40762306a36Sopenharmony_ci .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO], 40862306a36Sopenharmony_ci .clkr = { 40962306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 41062306a36Sopenharmony_ci .name = "cam_cc_pll7", 41162306a36Sopenharmony_ci .parent_data = &pll_parent_data_tcxo, 41262306a36Sopenharmony_ci .num_parents = 1, 41362306a36Sopenharmony_ci .ops = &clk_alpha_pll_lucid_evo_ops, 41462306a36Sopenharmony_ci }, 41562306a36Sopenharmony_ci }, 41662306a36Sopenharmony_ci}; 41762306a36Sopenharmony_ci 41862306a36Sopenharmony_cistatic const struct clk_div_table post_div_table_cam_cc_pll7_out_even[] = { 41962306a36Sopenharmony_ci { 0x1, 2 }, 42062306a36Sopenharmony_ci { } 42162306a36Sopenharmony_ci}; 42262306a36Sopenharmony_ci 42362306a36Sopenharmony_cistatic struct clk_alpha_pll_postdiv cam_cc_pll7_out_even = { 42462306a36Sopenharmony_ci .offset = 0x7000, 42562306a36Sopenharmony_ci .post_div_shift = 10, 42662306a36Sopenharmony_ci .post_div_table = post_div_table_cam_cc_pll7_out_even, 42762306a36Sopenharmony_ci .num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll7_out_even), 42862306a36Sopenharmony_ci .width = 4, 42962306a36Sopenharmony_ci .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO], 43062306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 43162306a36Sopenharmony_ci .name = "cam_cc_pll7_out_even", 43262306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 43362306a36Sopenharmony_ci &cam_cc_pll7.clkr.hw, 43462306a36Sopenharmony_ci }, 43562306a36Sopenharmony_ci .num_parents = 1, 43662306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 43762306a36Sopenharmony_ci .ops = &clk_alpha_pll_postdiv_lucid_evo_ops, 43862306a36Sopenharmony_ci }, 43962306a36Sopenharmony_ci}; 44062306a36Sopenharmony_ci 44162306a36Sopenharmony_cistatic const struct alpha_pll_config cam_cc_pll8_config = { 44262306a36Sopenharmony_ci .l = 0x32, 44362306a36Sopenharmony_ci .alpha = 0x0, 44462306a36Sopenharmony_ci .config_ctl_val = 0x20485699, 44562306a36Sopenharmony_ci .config_ctl_hi_val = 0x00182261, 44662306a36Sopenharmony_ci .config_ctl_hi1_val = 0x32aa299c, 44762306a36Sopenharmony_ci .user_ctl_val = 0x00000400, 44862306a36Sopenharmony_ci .user_ctl_hi_val = 0x00000805, 44962306a36Sopenharmony_ci}; 45062306a36Sopenharmony_ci 45162306a36Sopenharmony_cistatic struct clk_alpha_pll cam_cc_pll8 = { 45262306a36Sopenharmony_ci .offset = 0x8000, 45362306a36Sopenharmony_ci .vco_table = lucid_evo_vco, 45462306a36Sopenharmony_ci .num_vco = ARRAY_SIZE(lucid_evo_vco), 45562306a36Sopenharmony_ci .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO], 45662306a36Sopenharmony_ci .clkr = { 45762306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 45862306a36Sopenharmony_ci .name = "cam_cc_pll8", 45962306a36Sopenharmony_ci .parent_data = &pll_parent_data_tcxo, 46062306a36Sopenharmony_ci .num_parents = 1, 46162306a36Sopenharmony_ci .ops = &clk_alpha_pll_lucid_evo_ops, 46262306a36Sopenharmony_ci }, 46362306a36Sopenharmony_ci }, 46462306a36Sopenharmony_ci}; 46562306a36Sopenharmony_ci 46662306a36Sopenharmony_cistatic const struct clk_div_table post_div_table_cam_cc_pll8_out_even[] = { 46762306a36Sopenharmony_ci { 0x1, 2 }, 46862306a36Sopenharmony_ci { } 46962306a36Sopenharmony_ci}; 47062306a36Sopenharmony_ci 47162306a36Sopenharmony_cistatic struct clk_alpha_pll_postdiv cam_cc_pll8_out_even = { 47262306a36Sopenharmony_ci .offset = 0x8000, 47362306a36Sopenharmony_ci .post_div_shift = 10, 47462306a36Sopenharmony_ci .post_div_table = post_div_table_cam_cc_pll8_out_even, 47562306a36Sopenharmony_ci .num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll8_out_even), 47662306a36Sopenharmony_ci .width = 4, 47762306a36Sopenharmony_ci .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO], 47862306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 47962306a36Sopenharmony_ci .name = "cam_cc_pll8_out_even", 48062306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 48162306a36Sopenharmony_ci &cam_cc_pll8.clkr.hw, 48262306a36Sopenharmony_ci }, 48362306a36Sopenharmony_ci .num_parents = 1, 48462306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 48562306a36Sopenharmony_ci .ops = &clk_alpha_pll_postdiv_lucid_evo_ops, 48662306a36Sopenharmony_ci }, 48762306a36Sopenharmony_ci}; 48862306a36Sopenharmony_ci 48962306a36Sopenharmony_cistatic const struct parent_map cam_cc_parent_map_0[] = { 49062306a36Sopenharmony_ci { P_BI_TCXO, 0 }, 49162306a36Sopenharmony_ci { P_CAM_CC_PLL0_OUT_MAIN, 1 }, 49262306a36Sopenharmony_ci { P_CAM_CC_PLL0_OUT_EVEN, 2 }, 49362306a36Sopenharmony_ci { P_CAM_CC_PLL0_OUT_ODD, 3 }, 49462306a36Sopenharmony_ci { P_CAM_CC_PLL8_OUT_EVEN, 5 }, 49562306a36Sopenharmony_ci}; 49662306a36Sopenharmony_ci 49762306a36Sopenharmony_cistatic const struct clk_parent_data cam_cc_parent_data_0[] = { 49862306a36Sopenharmony_ci { .index = DT_BI_TCXO }, 49962306a36Sopenharmony_ci { .hw = &cam_cc_pll0.clkr.hw }, 50062306a36Sopenharmony_ci { .hw = &cam_cc_pll0_out_even.clkr.hw }, 50162306a36Sopenharmony_ci { .hw = &cam_cc_pll0_out_odd.clkr.hw }, 50262306a36Sopenharmony_ci { .hw = &cam_cc_pll8_out_even.clkr.hw }, 50362306a36Sopenharmony_ci}; 50462306a36Sopenharmony_ci 50562306a36Sopenharmony_cistatic const struct parent_map cam_cc_parent_map_1[] = { 50662306a36Sopenharmony_ci { P_BI_TCXO, 0 }, 50762306a36Sopenharmony_ci { P_CAM_CC_PLL2_OUT_EVEN, 3 }, 50862306a36Sopenharmony_ci { P_CAM_CC_PLL2_OUT_MAIN, 5 }, 50962306a36Sopenharmony_ci}; 51062306a36Sopenharmony_ci 51162306a36Sopenharmony_cistatic const struct clk_parent_data cam_cc_parent_data_1[] = { 51262306a36Sopenharmony_ci { .index = DT_BI_TCXO }, 51362306a36Sopenharmony_ci { .hw = &cam_cc_pll2.clkr.hw }, 51462306a36Sopenharmony_ci { .hw = &cam_cc_pll2.clkr.hw }, 51562306a36Sopenharmony_ci}; 51662306a36Sopenharmony_ci 51762306a36Sopenharmony_cistatic const struct parent_map cam_cc_parent_map_2[] = { 51862306a36Sopenharmony_ci { P_BI_TCXO, 0 }, 51962306a36Sopenharmony_ci { P_CAM_CC_PLL3_OUT_EVEN, 6 }, 52062306a36Sopenharmony_ci}; 52162306a36Sopenharmony_ci 52262306a36Sopenharmony_cistatic const struct clk_parent_data cam_cc_parent_data_2[] = { 52362306a36Sopenharmony_ci { .index = DT_BI_TCXO }, 52462306a36Sopenharmony_ci { .hw = &cam_cc_pll3_out_even.clkr.hw }, 52562306a36Sopenharmony_ci}; 52662306a36Sopenharmony_ci 52762306a36Sopenharmony_cistatic const struct parent_map cam_cc_parent_map_3[] = { 52862306a36Sopenharmony_ci { P_BI_TCXO, 0 }, 52962306a36Sopenharmony_ci { P_CAM_CC_PLL4_OUT_EVEN, 6 }, 53062306a36Sopenharmony_ci}; 53162306a36Sopenharmony_ci 53262306a36Sopenharmony_cistatic const struct clk_parent_data cam_cc_parent_data_3[] = { 53362306a36Sopenharmony_ci { .index = DT_BI_TCXO }, 53462306a36Sopenharmony_ci { .hw = &cam_cc_pll4_out_even.clkr.hw }, 53562306a36Sopenharmony_ci}; 53662306a36Sopenharmony_ci 53762306a36Sopenharmony_cistatic const struct parent_map cam_cc_parent_map_4[] = { 53862306a36Sopenharmony_ci { P_BI_TCXO, 0 }, 53962306a36Sopenharmony_ci { P_CAM_CC_PLL5_OUT_EVEN, 6 }, 54062306a36Sopenharmony_ci}; 54162306a36Sopenharmony_ci 54262306a36Sopenharmony_cistatic const struct clk_parent_data cam_cc_parent_data_4[] = { 54362306a36Sopenharmony_ci { .index = DT_BI_TCXO }, 54462306a36Sopenharmony_ci { .hw = &cam_cc_pll5_out_even.clkr.hw }, 54562306a36Sopenharmony_ci}; 54662306a36Sopenharmony_ci 54762306a36Sopenharmony_cistatic const struct parent_map cam_cc_parent_map_5[] = { 54862306a36Sopenharmony_ci { P_BI_TCXO, 0 }, 54962306a36Sopenharmony_ci { P_CAM_CC_PLL1_OUT_EVEN, 4 }, 55062306a36Sopenharmony_ci}; 55162306a36Sopenharmony_ci 55262306a36Sopenharmony_cistatic const struct clk_parent_data cam_cc_parent_data_5[] = { 55362306a36Sopenharmony_ci { .index = DT_BI_TCXO }, 55462306a36Sopenharmony_ci { .hw = &cam_cc_pll1_out_even.clkr.hw }, 55562306a36Sopenharmony_ci}; 55662306a36Sopenharmony_ci 55762306a36Sopenharmony_cistatic const struct parent_map cam_cc_parent_map_6[] = { 55862306a36Sopenharmony_ci { P_BI_TCXO, 0 }, 55962306a36Sopenharmony_ci { P_CAM_CC_PLL6_OUT_EVEN, 6 }, 56062306a36Sopenharmony_ci}; 56162306a36Sopenharmony_ci 56262306a36Sopenharmony_cistatic const struct clk_parent_data cam_cc_parent_data_6[] = { 56362306a36Sopenharmony_ci { .index = DT_BI_TCXO }, 56462306a36Sopenharmony_ci { .hw = &cam_cc_pll6_out_even.clkr.hw }, 56562306a36Sopenharmony_ci}; 56662306a36Sopenharmony_ci 56762306a36Sopenharmony_cistatic const struct parent_map cam_cc_parent_map_7[] = { 56862306a36Sopenharmony_ci { P_BI_TCXO, 0 }, 56962306a36Sopenharmony_ci { P_CAM_CC_PLL7_OUT_EVEN, 6 }, 57062306a36Sopenharmony_ci}; 57162306a36Sopenharmony_ci 57262306a36Sopenharmony_cistatic const struct clk_parent_data cam_cc_parent_data_7[] = { 57362306a36Sopenharmony_ci { .index = DT_BI_TCXO }, 57462306a36Sopenharmony_ci { .hw = &cam_cc_pll7_out_even.clkr.hw }, 57562306a36Sopenharmony_ci}; 57662306a36Sopenharmony_ci 57762306a36Sopenharmony_cistatic const struct parent_map cam_cc_parent_map_8[] = { 57862306a36Sopenharmony_ci { P_SLEEP_CLK, 0 }, 57962306a36Sopenharmony_ci}; 58062306a36Sopenharmony_ci 58162306a36Sopenharmony_cistatic const struct clk_parent_data cam_cc_parent_data_8[] = { 58262306a36Sopenharmony_ci { .index = DT_SLEEP_CLK }, 58362306a36Sopenharmony_ci}; 58462306a36Sopenharmony_ci 58562306a36Sopenharmony_cistatic const struct parent_map cam_cc_parent_map_9[] = { 58662306a36Sopenharmony_ci { P_BI_TCXO, 0 }, 58762306a36Sopenharmony_ci}; 58862306a36Sopenharmony_ci 58962306a36Sopenharmony_cistatic const struct clk_parent_data cam_cc_parent_data_9_ao[] = { 59062306a36Sopenharmony_ci { .index = DT_BI_TCXO_AO, .name = "bi_tcxo_ao" }, 59162306a36Sopenharmony_ci}; 59262306a36Sopenharmony_ci 59362306a36Sopenharmony_cistatic const struct freq_tbl ftbl_cam_cc_bps_clk_src[] = { 59462306a36Sopenharmony_ci F(19200000, P_BI_TCXO, 1, 0, 0), 59562306a36Sopenharmony_ci F(200000000, P_CAM_CC_PLL0_OUT_ODD, 2, 0, 0), 59662306a36Sopenharmony_ci F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0), 59762306a36Sopenharmony_ci F(480000000, P_CAM_CC_PLL8_OUT_EVEN, 1, 0, 0), 59862306a36Sopenharmony_ci F(600000000, P_CAM_CC_PLL0_OUT_EVEN, 1, 0, 0), 59962306a36Sopenharmony_ci { } 60062306a36Sopenharmony_ci}; 60162306a36Sopenharmony_ci 60262306a36Sopenharmony_cistatic struct clk_rcg2 cam_cc_bps_clk_src = { 60362306a36Sopenharmony_ci .cmd_rcgr = 0x10050, 60462306a36Sopenharmony_ci .mnd_width = 0, 60562306a36Sopenharmony_ci .hid_width = 5, 60662306a36Sopenharmony_ci .parent_map = cam_cc_parent_map_0, 60762306a36Sopenharmony_ci .freq_tbl = ftbl_cam_cc_bps_clk_src, 60862306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 60962306a36Sopenharmony_ci .name = "cam_cc_bps_clk_src", 61062306a36Sopenharmony_ci .parent_data = cam_cc_parent_data_0, 61162306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 61262306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 61362306a36Sopenharmony_ci .ops = &clk_rcg2_ops, 61462306a36Sopenharmony_ci }, 61562306a36Sopenharmony_ci}; 61662306a36Sopenharmony_ci 61762306a36Sopenharmony_cistatic const struct freq_tbl ftbl_cam_cc_camnoc_axi_clk_src[] = { 61862306a36Sopenharmony_ci F(19200000, P_BI_TCXO, 1, 0, 0), 61962306a36Sopenharmony_ci F(300000000, P_CAM_CC_PLL0_OUT_EVEN, 2, 0, 0), 62062306a36Sopenharmony_ci F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0), 62162306a36Sopenharmony_ci { } 62262306a36Sopenharmony_ci}; 62362306a36Sopenharmony_ci 62462306a36Sopenharmony_cistatic struct clk_rcg2 cam_cc_camnoc_axi_clk_src = { 62562306a36Sopenharmony_ci .cmd_rcgr = 0x13194, 62662306a36Sopenharmony_ci .mnd_width = 0, 62762306a36Sopenharmony_ci .hid_width = 5, 62862306a36Sopenharmony_ci .parent_map = cam_cc_parent_map_0, 62962306a36Sopenharmony_ci .freq_tbl = ftbl_cam_cc_camnoc_axi_clk_src, 63062306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 63162306a36Sopenharmony_ci .name = "cam_cc_camnoc_axi_clk_src", 63262306a36Sopenharmony_ci .parent_data = cam_cc_parent_data_0, 63362306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 63462306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 63562306a36Sopenharmony_ci .ops = &clk_rcg2_ops, 63662306a36Sopenharmony_ci }, 63762306a36Sopenharmony_ci}; 63862306a36Sopenharmony_ci 63962306a36Sopenharmony_cistatic const struct freq_tbl ftbl_cam_cc_cci_0_clk_src[] = { 64062306a36Sopenharmony_ci F(19200000, P_BI_TCXO, 1, 0, 0), 64162306a36Sopenharmony_ci F(37500000, P_CAM_CC_PLL0_OUT_EVEN, 16, 0, 0), 64262306a36Sopenharmony_ci { } 64362306a36Sopenharmony_ci}; 64462306a36Sopenharmony_ci 64562306a36Sopenharmony_cistatic struct clk_rcg2 cam_cc_cci_0_clk_src = { 64662306a36Sopenharmony_ci .cmd_rcgr = 0x1312c, 64762306a36Sopenharmony_ci .mnd_width = 8, 64862306a36Sopenharmony_ci .hid_width = 5, 64962306a36Sopenharmony_ci .parent_map = cam_cc_parent_map_0, 65062306a36Sopenharmony_ci .freq_tbl = ftbl_cam_cc_cci_0_clk_src, 65162306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 65262306a36Sopenharmony_ci .name = "cam_cc_cci_0_clk_src", 65362306a36Sopenharmony_ci .parent_data = cam_cc_parent_data_0, 65462306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 65562306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 65662306a36Sopenharmony_ci .ops = &clk_rcg2_ops, 65762306a36Sopenharmony_ci }, 65862306a36Sopenharmony_ci}; 65962306a36Sopenharmony_ci 66062306a36Sopenharmony_cistatic struct clk_rcg2 cam_cc_cci_1_clk_src = { 66162306a36Sopenharmony_ci .cmd_rcgr = 0x13148, 66262306a36Sopenharmony_ci .mnd_width = 8, 66362306a36Sopenharmony_ci .hid_width = 5, 66462306a36Sopenharmony_ci .parent_map = cam_cc_parent_map_0, 66562306a36Sopenharmony_ci .freq_tbl = ftbl_cam_cc_cci_0_clk_src, 66662306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 66762306a36Sopenharmony_ci .name = "cam_cc_cci_1_clk_src", 66862306a36Sopenharmony_ci .parent_data = cam_cc_parent_data_0, 66962306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 67062306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 67162306a36Sopenharmony_ci .ops = &clk_rcg2_ops, 67262306a36Sopenharmony_ci }, 67362306a36Sopenharmony_ci}; 67462306a36Sopenharmony_ci 67562306a36Sopenharmony_cistatic const struct freq_tbl ftbl_cam_cc_cphy_rx_clk_src[] = { 67662306a36Sopenharmony_ci F(19200000, P_BI_TCXO, 1, 0, 0), 67762306a36Sopenharmony_ci F(400000000, P_CAM_CC_PLL0_OUT_MAIN, 3, 0, 0), 67862306a36Sopenharmony_ci F(480000000, P_CAM_CC_PLL0_OUT_MAIN, 2.5, 0, 0), 67962306a36Sopenharmony_ci { } 68062306a36Sopenharmony_ci}; 68162306a36Sopenharmony_ci 68262306a36Sopenharmony_cistatic struct clk_rcg2 cam_cc_cphy_rx_clk_src = { 68362306a36Sopenharmony_ci .cmd_rcgr = 0x1104c, 68462306a36Sopenharmony_ci .mnd_width = 0, 68562306a36Sopenharmony_ci .hid_width = 5, 68662306a36Sopenharmony_ci .parent_map = cam_cc_parent_map_0, 68762306a36Sopenharmony_ci .freq_tbl = ftbl_cam_cc_cphy_rx_clk_src, 68862306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 68962306a36Sopenharmony_ci .name = "cam_cc_cphy_rx_clk_src", 69062306a36Sopenharmony_ci .parent_data = cam_cc_parent_data_0, 69162306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 69262306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 69362306a36Sopenharmony_ci .ops = &clk_rcg2_ops, 69462306a36Sopenharmony_ci }, 69562306a36Sopenharmony_ci}; 69662306a36Sopenharmony_ci 69762306a36Sopenharmony_cistatic const struct freq_tbl ftbl_cam_cc_csi0phytimer_clk_src[] = { 69862306a36Sopenharmony_ci F(19200000, P_BI_TCXO, 1, 0, 0), 69962306a36Sopenharmony_ci F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0), 70062306a36Sopenharmony_ci { } 70162306a36Sopenharmony_ci}; 70262306a36Sopenharmony_ci 70362306a36Sopenharmony_cistatic struct clk_rcg2 cam_cc_csi0phytimer_clk_src = { 70462306a36Sopenharmony_ci .cmd_rcgr = 0x150e0, 70562306a36Sopenharmony_ci .mnd_width = 0, 70662306a36Sopenharmony_ci .hid_width = 5, 70762306a36Sopenharmony_ci .parent_map = cam_cc_parent_map_0, 70862306a36Sopenharmony_ci .freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src, 70962306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 71062306a36Sopenharmony_ci .name = "cam_cc_csi0phytimer_clk_src", 71162306a36Sopenharmony_ci .parent_data = cam_cc_parent_data_0, 71262306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 71362306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 71462306a36Sopenharmony_ci .ops = &clk_rcg2_ops, 71562306a36Sopenharmony_ci }, 71662306a36Sopenharmony_ci}; 71762306a36Sopenharmony_ci 71862306a36Sopenharmony_cistatic struct clk_rcg2 cam_cc_csi1phytimer_clk_src = { 71962306a36Sopenharmony_ci .cmd_rcgr = 0x15104, 72062306a36Sopenharmony_ci .mnd_width = 0, 72162306a36Sopenharmony_ci .hid_width = 5, 72262306a36Sopenharmony_ci .parent_map = cam_cc_parent_map_0, 72362306a36Sopenharmony_ci .freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src, 72462306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 72562306a36Sopenharmony_ci .name = "cam_cc_csi1phytimer_clk_src", 72662306a36Sopenharmony_ci .parent_data = cam_cc_parent_data_0, 72762306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 72862306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 72962306a36Sopenharmony_ci .ops = &clk_rcg2_ops, 73062306a36Sopenharmony_ci }, 73162306a36Sopenharmony_ci}; 73262306a36Sopenharmony_ci 73362306a36Sopenharmony_cistatic struct clk_rcg2 cam_cc_csi2phytimer_clk_src = { 73462306a36Sopenharmony_ci .cmd_rcgr = 0x15124, 73562306a36Sopenharmony_ci .mnd_width = 0, 73662306a36Sopenharmony_ci .hid_width = 5, 73762306a36Sopenharmony_ci .parent_map = cam_cc_parent_map_0, 73862306a36Sopenharmony_ci .freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src, 73962306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 74062306a36Sopenharmony_ci .name = "cam_cc_csi2phytimer_clk_src", 74162306a36Sopenharmony_ci .parent_data = cam_cc_parent_data_0, 74262306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 74362306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 74462306a36Sopenharmony_ci .ops = &clk_rcg2_ops, 74562306a36Sopenharmony_ci }, 74662306a36Sopenharmony_ci}; 74762306a36Sopenharmony_ci 74862306a36Sopenharmony_cistatic struct clk_rcg2 cam_cc_csi3phytimer_clk_src = { 74962306a36Sopenharmony_ci .cmd_rcgr = 0x1514c, 75062306a36Sopenharmony_ci .mnd_width = 0, 75162306a36Sopenharmony_ci .hid_width = 5, 75262306a36Sopenharmony_ci .parent_map = cam_cc_parent_map_0, 75362306a36Sopenharmony_ci .freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src, 75462306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 75562306a36Sopenharmony_ci .name = "cam_cc_csi3phytimer_clk_src", 75662306a36Sopenharmony_ci .parent_data = cam_cc_parent_data_0, 75762306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 75862306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 75962306a36Sopenharmony_ci .ops = &clk_rcg2_ops, 76062306a36Sopenharmony_ci }, 76162306a36Sopenharmony_ci}; 76262306a36Sopenharmony_ci 76362306a36Sopenharmony_cistatic struct clk_rcg2 cam_cc_csi4phytimer_clk_src = { 76462306a36Sopenharmony_ci .cmd_rcgr = 0x1516c, 76562306a36Sopenharmony_ci .mnd_width = 0, 76662306a36Sopenharmony_ci .hid_width = 5, 76762306a36Sopenharmony_ci .parent_map = cam_cc_parent_map_0, 76862306a36Sopenharmony_ci .freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src, 76962306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 77062306a36Sopenharmony_ci .name = "cam_cc_csi4phytimer_clk_src", 77162306a36Sopenharmony_ci .parent_data = cam_cc_parent_data_0, 77262306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 77362306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 77462306a36Sopenharmony_ci .ops = &clk_rcg2_ops, 77562306a36Sopenharmony_ci }, 77662306a36Sopenharmony_ci}; 77762306a36Sopenharmony_ci 77862306a36Sopenharmony_cistatic struct clk_rcg2 cam_cc_csi5phytimer_clk_src = { 77962306a36Sopenharmony_ci .cmd_rcgr = 0x1518c, 78062306a36Sopenharmony_ci .mnd_width = 0, 78162306a36Sopenharmony_ci .hid_width = 5, 78262306a36Sopenharmony_ci .parent_map = cam_cc_parent_map_0, 78362306a36Sopenharmony_ci .freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src, 78462306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 78562306a36Sopenharmony_ci .name = "cam_cc_csi5phytimer_clk_src", 78662306a36Sopenharmony_ci .parent_data = cam_cc_parent_data_0, 78762306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 78862306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 78962306a36Sopenharmony_ci .ops = &clk_rcg2_ops, 79062306a36Sopenharmony_ci }, 79162306a36Sopenharmony_ci}; 79262306a36Sopenharmony_ci 79362306a36Sopenharmony_cistatic const struct freq_tbl ftbl_cam_cc_csid_clk_src[] = { 79462306a36Sopenharmony_ci F(400000000, P_CAM_CC_PLL0_OUT_MAIN, 3, 0, 0), 79562306a36Sopenharmony_ci F(480000000, P_CAM_CC_PLL0_OUT_MAIN, 2.5, 0, 0), 79662306a36Sopenharmony_ci { } 79762306a36Sopenharmony_ci}; 79862306a36Sopenharmony_ci 79962306a36Sopenharmony_cistatic struct clk_rcg2 cam_cc_csid_clk_src = { 80062306a36Sopenharmony_ci .cmd_rcgr = 0x13174, 80162306a36Sopenharmony_ci .mnd_width = 0, 80262306a36Sopenharmony_ci .hid_width = 5, 80362306a36Sopenharmony_ci .parent_map = cam_cc_parent_map_0, 80462306a36Sopenharmony_ci .freq_tbl = ftbl_cam_cc_csid_clk_src, 80562306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 80662306a36Sopenharmony_ci .name = "cam_cc_csid_clk_src", 80762306a36Sopenharmony_ci .parent_data = cam_cc_parent_data_0, 80862306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 80962306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 81062306a36Sopenharmony_ci .ops = &clk_rcg2_ops, 81162306a36Sopenharmony_ci }, 81262306a36Sopenharmony_ci}; 81362306a36Sopenharmony_ci 81462306a36Sopenharmony_cistatic const struct freq_tbl ftbl_cam_cc_fast_ahb_clk_src[] = { 81562306a36Sopenharmony_ci F(19200000, P_BI_TCXO, 1, 0, 0), 81662306a36Sopenharmony_ci F(100000000, P_CAM_CC_PLL0_OUT_EVEN, 6, 0, 0), 81762306a36Sopenharmony_ci F(200000000, P_CAM_CC_PLL0_OUT_EVEN, 3, 0, 0), 81862306a36Sopenharmony_ci F(300000000, P_CAM_CC_PLL0_OUT_MAIN, 4, 0, 0), 81962306a36Sopenharmony_ci F(400000000, P_CAM_CC_PLL0_OUT_MAIN, 3, 0, 0), 82062306a36Sopenharmony_ci { } 82162306a36Sopenharmony_ci}; 82262306a36Sopenharmony_ci 82362306a36Sopenharmony_cistatic struct clk_rcg2 cam_cc_fast_ahb_clk_src = { 82462306a36Sopenharmony_ci .cmd_rcgr = 0x10018, 82562306a36Sopenharmony_ci .mnd_width = 0, 82662306a36Sopenharmony_ci .hid_width = 5, 82762306a36Sopenharmony_ci .parent_map = cam_cc_parent_map_0, 82862306a36Sopenharmony_ci .freq_tbl = ftbl_cam_cc_fast_ahb_clk_src, 82962306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 83062306a36Sopenharmony_ci .name = "cam_cc_fast_ahb_clk_src", 83162306a36Sopenharmony_ci .parent_data = cam_cc_parent_data_0, 83262306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 83362306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 83462306a36Sopenharmony_ci .ops = &clk_rcg2_ops, 83562306a36Sopenharmony_ci }, 83662306a36Sopenharmony_ci}; 83762306a36Sopenharmony_ci 83862306a36Sopenharmony_cistatic const struct freq_tbl ftbl_cam_cc_icp_clk_src[] = { 83962306a36Sopenharmony_ci F(19200000, P_BI_TCXO, 1, 0, 0), 84062306a36Sopenharmony_ci F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0), 84162306a36Sopenharmony_ci F(480000000, P_CAM_CC_PLL8_OUT_EVEN, 1, 0, 0), 84262306a36Sopenharmony_ci F(600000000, P_CAM_CC_PLL0_OUT_MAIN, 2, 0, 0), 84362306a36Sopenharmony_ci { } 84462306a36Sopenharmony_ci}; 84562306a36Sopenharmony_ci 84662306a36Sopenharmony_cistatic struct clk_rcg2 cam_cc_icp_clk_src = { 84762306a36Sopenharmony_ci .cmd_rcgr = 0x13108, 84862306a36Sopenharmony_ci .mnd_width = 0, 84962306a36Sopenharmony_ci .hid_width = 5, 85062306a36Sopenharmony_ci .parent_map = cam_cc_parent_map_0, 85162306a36Sopenharmony_ci .freq_tbl = ftbl_cam_cc_icp_clk_src, 85262306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 85362306a36Sopenharmony_ci .name = "cam_cc_icp_clk_src", 85462306a36Sopenharmony_ci .parent_data = cam_cc_parent_data_0, 85562306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 85662306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 85762306a36Sopenharmony_ci .ops = &clk_rcg2_ops, 85862306a36Sopenharmony_ci }, 85962306a36Sopenharmony_ci}; 86062306a36Sopenharmony_ci 86162306a36Sopenharmony_cistatic const struct freq_tbl ftbl_cam_cc_ife_0_clk_src[] = { 86262306a36Sopenharmony_ci F(19200000, P_BI_TCXO, 1, 0, 0), 86362306a36Sopenharmony_ci F(432000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0), 86462306a36Sopenharmony_ci F(594000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0), 86562306a36Sopenharmony_ci F(675000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0), 86662306a36Sopenharmony_ci F(727000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0), 86762306a36Sopenharmony_ci { } 86862306a36Sopenharmony_ci}; 86962306a36Sopenharmony_ci 87062306a36Sopenharmony_cistatic struct clk_rcg2 cam_cc_ife_0_clk_src = { 87162306a36Sopenharmony_ci .cmd_rcgr = 0x11018, 87262306a36Sopenharmony_ci .mnd_width = 0, 87362306a36Sopenharmony_ci .hid_width = 5, 87462306a36Sopenharmony_ci .parent_map = cam_cc_parent_map_2, 87562306a36Sopenharmony_ci .freq_tbl = ftbl_cam_cc_ife_0_clk_src, 87662306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 87762306a36Sopenharmony_ci .name = "cam_cc_ife_0_clk_src", 87862306a36Sopenharmony_ci .parent_data = cam_cc_parent_data_2, 87962306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(cam_cc_parent_data_2), 88062306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 88162306a36Sopenharmony_ci .ops = &clk_rcg2_ops, 88262306a36Sopenharmony_ci }, 88362306a36Sopenharmony_ci}; 88462306a36Sopenharmony_ci 88562306a36Sopenharmony_cistatic const struct freq_tbl ftbl_cam_cc_ife_1_clk_src[] = { 88662306a36Sopenharmony_ci F(19200000, P_BI_TCXO, 1, 0, 0), 88762306a36Sopenharmony_ci F(432000000, P_CAM_CC_PLL4_OUT_EVEN, 1, 0, 0), 88862306a36Sopenharmony_ci F(594000000, P_CAM_CC_PLL4_OUT_EVEN, 1, 0, 0), 88962306a36Sopenharmony_ci F(675000000, P_CAM_CC_PLL4_OUT_EVEN, 1, 0, 0), 89062306a36Sopenharmony_ci F(727000000, P_CAM_CC_PLL4_OUT_EVEN, 1, 0, 0), 89162306a36Sopenharmony_ci { } 89262306a36Sopenharmony_ci}; 89362306a36Sopenharmony_ci 89462306a36Sopenharmony_cistatic struct clk_rcg2 cam_cc_ife_1_clk_src = { 89562306a36Sopenharmony_ci .cmd_rcgr = 0x12018, 89662306a36Sopenharmony_ci .mnd_width = 0, 89762306a36Sopenharmony_ci .hid_width = 5, 89862306a36Sopenharmony_ci .parent_map = cam_cc_parent_map_3, 89962306a36Sopenharmony_ci .freq_tbl = ftbl_cam_cc_ife_1_clk_src, 90062306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 90162306a36Sopenharmony_ci .name = "cam_cc_ife_1_clk_src", 90262306a36Sopenharmony_ci .parent_data = cam_cc_parent_data_3, 90362306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(cam_cc_parent_data_3), 90462306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 90562306a36Sopenharmony_ci .ops = &clk_rcg2_ops, 90662306a36Sopenharmony_ci }, 90762306a36Sopenharmony_ci}; 90862306a36Sopenharmony_ci 90962306a36Sopenharmony_cistatic const struct freq_tbl ftbl_cam_cc_ife_2_clk_src[] = { 91062306a36Sopenharmony_ci F(432000000, P_CAM_CC_PLL5_OUT_EVEN, 1, 0, 0), 91162306a36Sopenharmony_ci F(594000000, P_CAM_CC_PLL5_OUT_EVEN, 1, 0, 0), 91262306a36Sopenharmony_ci F(675000000, P_CAM_CC_PLL5_OUT_EVEN, 1, 0, 0), 91362306a36Sopenharmony_ci F(727000000, P_CAM_CC_PLL5_OUT_EVEN, 1, 0, 0), 91462306a36Sopenharmony_ci { } 91562306a36Sopenharmony_ci}; 91662306a36Sopenharmony_ci 91762306a36Sopenharmony_cistatic struct clk_rcg2 cam_cc_ife_2_clk_src = { 91862306a36Sopenharmony_ci .cmd_rcgr = 0x12064, 91962306a36Sopenharmony_ci .mnd_width = 0, 92062306a36Sopenharmony_ci .hid_width = 5, 92162306a36Sopenharmony_ci .parent_map = cam_cc_parent_map_4, 92262306a36Sopenharmony_ci .freq_tbl = ftbl_cam_cc_ife_2_clk_src, 92362306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 92462306a36Sopenharmony_ci .name = "cam_cc_ife_2_clk_src", 92562306a36Sopenharmony_ci .parent_data = cam_cc_parent_data_4, 92662306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(cam_cc_parent_data_4), 92762306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 92862306a36Sopenharmony_ci .ops = &clk_rcg2_ops, 92962306a36Sopenharmony_ci }, 93062306a36Sopenharmony_ci}; 93162306a36Sopenharmony_ci 93262306a36Sopenharmony_cistatic const struct freq_tbl ftbl_cam_cc_ife_lite_clk_src[] = { 93362306a36Sopenharmony_ci F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0), 93462306a36Sopenharmony_ci F(480000000, P_CAM_CC_PLL8_OUT_EVEN, 1, 0, 0), 93562306a36Sopenharmony_ci { } 93662306a36Sopenharmony_ci}; 93762306a36Sopenharmony_ci 93862306a36Sopenharmony_cistatic struct clk_rcg2 cam_cc_ife_lite_clk_src = { 93962306a36Sopenharmony_ci .cmd_rcgr = 0x13000, 94062306a36Sopenharmony_ci .mnd_width = 0, 94162306a36Sopenharmony_ci .hid_width = 5, 94262306a36Sopenharmony_ci .parent_map = cam_cc_parent_map_0, 94362306a36Sopenharmony_ci .freq_tbl = ftbl_cam_cc_ife_lite_clk_src, 94462306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 94562306a36Sopenharmony_ci .name = "cam_cc_ife_lite_clk_src", 94662306a36Sopenharmony_ci .parent_data = cam_cc_parent_data_0, 94762306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 94862306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 94962306a36Sopenharmony_ci .ops = &clk_rcg2_ops, 95062306a36Sopenharmony_ci }, 95162306a36Sopenharmony_ci}; 95262306a36Sopenharmony_ci 95362306a36Sopenharmony_cistatic struct clk_rcg2 cam_cc_ife_lite_csid_clk_src = { 95462306a36Sopenharmony_ci .cmd_rcgr = 0x13024, 95562306a36Sopenharmony_ci .mnd_width = 0, 95662306a36Sopenharmony_ci .hid_width = 5, 95762306a36Sopenharmony_ci .parent_map = cam_cc_parent_map_0, 95862306a36Sopenharmony_ci .freq_tbl = ftbl_cam_cc_ife_lite_clk_src, 95962306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 96062306a36Sopenharmony_ci .name = "cam_cc_ife_lite_csid_clk_src", 96162306a36Sopenharmony_ci .parent_data = cam_cc_parent_data_0, 96262306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 96362306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 96462306a36Sopenharmony_ci .ops = &clk_rcg2_ops, 96562306a36Sopenharmony_ci }, 96662306a36Sopenharmony_ci}; 96762306a36Sopenharmony_ci 96862306a36Sopenharmony_cistatic const struct freq_tbl ftbl_cam_cc_ipe_nps_clk_src[] = { 96962306a36Sopenharmony_ci F(364000000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0), 97062306a36Sopenharmony_ci F(500000000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0), 97162306a36Sopenharmony_ci F(600000000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0), 97262306a36Sopenharmony_ci F(700000000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0), 97362306a36Sopenharmony_ci { } 97462306a36Sopenharmony_ci}; 97562306a36Sopenharmony_ci 97662306a36Sopenharmony_cistatic struct clk_rcg2 cam_cc_ipe_nps_clk_src = { 97762306a36Sopenharmony_ci .cmd_rcgr = 0x1008c, 97862306a36Sopenharmony_ci .mnd_width = 0, 97962306a36Sopenharmony_ci .hid_width = 5, 98062306a36Sopenharmony_ci .parent_map = cam_cc_parent_map_5, 98162306a36Sopenharmony_ci .freq_tbl = ftbl_cam_cc_ipe_nps_clk_src, 98262306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 98362306a36Sopenharmony_ci .name = "cam_cc_ipe_nps_clk_src", 98462306a36Sopenharmony_ci .parent_data = cam_cc_parent_data_5, 98562306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(cam_cc_parent_data_5), 98662306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 98762306a36Sopenharmony_ci .ops = &clk_rcg2_ops, 98862306a36Sopenharmony_ci }, 98962306a36Sopenharmony_ci}; 99062306a36Sopenharmony_ci 99162306a36Sopenharmony_cistatic struct clk_rcg2 cam_cc_jpeg_clk_src = { 99262306a36Sopenharmony_ci .cmd_rcgr = 0x130dc, 99362306a36Sopenharmony_ci .mnd_width = 0, 99462306a36Sopenharmony_ci .hid_width = 5, 99562306a36Sopenharmony_ci .parent_map = cam_cc_parent_map_0, 99662306a36Sopenharmony_ci .freq_tbl = ftbl_cam_cc_bps_clk_src, 99762306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 99862306a36Sopenharmony_ci .name = "cam_cc_jpeg_clk_src", 99962306a36Sopenharmony_ci .parent_data = cam_cc_parent_data_0, 100062306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 100162306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 100262306a36Sopenharmony_ci .ops = &clk_rcg2_ops, 100362306a36Sopenharmony_ci }, 100462306a36Sopenharmony_ci}; 100562306a36Sopenharmony_ci 100662306a36Sopenharmony_cistatic const struct freq_tbl ftbl_cam_cc_mclk0_clk_src[] = { 100762306a36Sopenharmony_ci F(19200000, P_BI_TCXO, 1, 0, 0), 100862306a36Sopenharmony_ci F(24000000, P_CAM_CC_PLL2_OUT_MAIN, 10, 1, 4), 100962306a36Sopenharmony_ci F(68571429, P_CAM_CC_PLL2_OUT_MAIN, 14, 0, 0), 101062306a36Sopenharmony_ci { } 101162306a36Sopenharmony_ci}; 101262306a36Sopenharmony_ci 101362306a36Sopenharmony_cistatic struct clk_rcg2 cam_cc_mclk0_clk_src = { 101462306a36Sopenharmony_ci .cmd_rcgr = 0x15000, 101562306a36Sopenharmony_ci .mnd_width = 8, 101662306a36Sopenharmony_ci .hid_width = 5, 101762306a36Sopenharmony_ci .parent_map = cam_cc_parent_map_1, 101862306a36Sopenharmony_ci .freq_tbl = ftbl_cam_cc_mclk0_clk_src, 101962306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 102062306a36Sopenharmony_ci .name = "cam_cc_mclk0_clk_src", 102162306a36Sopenharmony_ci .parent_data = cam_cc_parent_data_1, 102262306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), 102362306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 102462306a36Sopenharmony_ci .ops = &clk_rcg2_ops, 102562306a36Sopenharmony_ci }, 102662306a36Sopenharmony_ci}; 102762306a36Sopenharmony_ci 102862306a36Sopenharmony_cistatic struct clk_rcg2 cam_cc_mclk1_clk_src = { 102962306a36Sopenharmony_ci .cmd_rcgr = 0x1501c, 103062306a36Sopenharmony_ci .mnd_width = 8, 103162306a36Sopenharmony_ci .hid_width = 5, 103262306a36Sopenharmony_ci .parent_map = cam_cc_parent_map_1, 103362306a36Sopenharmony_ci .freq_tbl = ftbl_cam_cc_mclk0_clk_src, 103462306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 103562306a36Sopenharmony_ci .name = "cam_cc_mclk1_clk_src", 103662306a36Sopenharmony_ci .parent_data = cam_cc_parent_data_1, 103762306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), 103862306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 103962306a36Sopenharmony_ci .ops = &clk_rcg2_ops, 104062306a36Sopenharmony_ci }, 104162306a36Sopenharmony_ci}; 104262306a36Sopenharmony_ci 104362306a36Sopenharmony_cistatic struct clk_rcg2 cam_cc_mclk2_clk_src = { 104462306a36Sopenharmony_ci .cmd_rcgr = 0x15038, 104562306a36Sopenharmony_ci .mnd_width = 8, 104662306a36Sopenharmony_ci .hid_width = 5, 104762306a36Sopenharmony_ci .parent_map = cam_cc_parent_map_1, 104862306a36Sopenharmony_ci .freq_tbl = ftbl_cam_cc_mclk0_clk_src, 104962306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 105062306a36Sopenharmony_ci .name = "cam_cc_mclk2_clk_src", 105162306a36Sopenharmony_ci .parent_data = cam_cc_parent_data_1, 105262306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), 105362306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 105462306a36Sopenharmony_ci .ops = &clk_rcg2_ops, 105562306a36Sopenharmony_ci }, 105662306a36Sopenharmony_ci}; 105762306a36Sopenharmony_ci 105862306a36Sopenharmony_cistatic struct clk_rcg2 cam_cc_mclk3_clk_src = { 105962306a36Sopenharmony_ci .cmd_rcgr = 0x15054, 106062306a36Sopenharmony_ci .mnd_width = 8, 106162306a36Sopenharmony_ci .hid_width = 5, 106262306a36Sopenharmony_ci .parent_map = cam_cc_parent_map_1, 106362306a36Sopenharmony_ci .freq_tbl = ftbl_cam_cc_mclk0_clk_src, 106462306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 106562306a36Sopenharmony_ci .name = "cam_cc_mclk3_clk_src", 106662306a36Sopenharmony_ci .parent_data = cam_cc_parent_data_1, 106762306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), 106862306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 106962306a36Sopenharmony_ci .ops = &clk_rcg2_ops, 107062306a36Sopenharmony_ci }, 107162306a36Sopenharmony_ci}; 107262306a36Sopenharmony_ci 107362306a36Sopenharmony_cistatic struct clk_rcg2 cam_cc_mclk4_clk_src = { 107462306a36Sopenharmony_ci .cmd_rcgr = 0x15070, 107562306a36Sopenharmony_ci .mnd_width = 8, 107662306a36Sopenharmony_ci .hid_width = 5, 107762306a36Sopenharmony_ci .parent_map = cam_cc_parent_map_1, 107862306a36Sopenharmony_ci .freq_tbl = ftbl_cam_cc_mclk0_clk_src, 107962306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 108062306a36Sopenharmony_ci .name = "cam_cc_mclk4_clk_src", 108162306a36Sopenharmony_ci .parent_data = cam_cc_parent_data_1, 108262306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), 108362306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 108462306a36Sopenharmony_ci .ops = &clk_rcg2_ops, 108562306a36Sopenharmony_ci }, 108662306a36Sopenharmony_ci}; 108762306a36Sopenharmony_ci 108862306a36Sopenharmony_cistatic struct clk_rcg2 cam_cc_mclk5_clk_src = { 108962306a36Sopenharmony_ci .cmd_rcgr = 0x1508c, 109062306a36Sopenharmony_ci .mnd_width = 8, 109162306a36Sopenharmony_ci .hid_width = 5, 109262306a36Sopenharmony_ci .parent_map = cam_cc_parent_map_1, 109362306a36Sopenharmony_ci .freq_tbl = ftbl_cam_cc_mclk0_clk_src, 109462306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 109562306a36Sopenharmony_ci .name = "cam_cc_mclk5_clk_src", 109662306a36Sopenharmony_ci .parent_data = cam_cc_parent_data_1, 109762306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), 109862306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 109962306a36Sopenharmony_ci .ops = &clk_rcg2_ops, 110062306a36Sopenharmony_ci }, 110162306a36Sopenharmony_ci}; 110262306a36Sopenharmony_ci 110362306a36Sopenharmony_cistatic struct clk_rcg2 cam_cc_mclk6_clk_src = { 110462306a36Sopenharmony_ci .cmd_rcgr = 0x150a8, 110562306a36Sopenharmony_ci .mnd_width = 8, 110662306a36Sopenharmony_ci .hid_width = 5, 110762306a36Sopenharmony_ci .parent_map = cam_cc_parent_map_1, 110862306a36Sopenharmony_ci .freq_tbl = ftbl_cam_cc_mclk0_clk_src, 110962306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 111062306a36Sopenharmony_ci .name = "cam_cc_mclk6_clk_src", 111162306a36Sopenharmony_ci .parent_data = cam_cc_parent_data_1, 111262306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), 111362306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 111462306a36Sopenharmony_ci .ops = &clk_rcg2_ops, 111562306a36Sopenharmony_ci }, 111662306a36Sopenharmony_ci}; 111762306a36Sopenharmony_ci 111862306a36Sopenharmony_cistatic struct clk_rcg2 cam_cc_mclk7_clk_src = { 111962306a36Sopenharmony_ci .cmd_rcgr = 0x150c4, 112062306a36Sopenharmony_ci .mnd_width = 8, 112162306a36Sopenharmony_ci .hid_width = 5, 112262306a36Sopenharmony_ci .parent_map = cam_cc_parent_map_1, 112362306a36Sopenharmony_ci .freq_tbl = ftbl_cam_cc_mclk0_clk_src, 112462306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 112562306a36Sopenharmony_ci .name = "cam_cc_mclk7_clk_src", 112662306a36Sopenharmony_ci .parent_data = cam_cc_parent_data_1, 112762306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), 112862306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 112962306a36Sopenharmony_ci .ops = &clk_rcg2_ops, 113062306a36Sopenharmony_ci }, 113162306a36Sopenharmony_ci}; 113262306a36Sopenharmony_ci 113362306a36Sopenharmony_cistatic const struct freq_tbl ftbl_cam_cc_qdss_debug_clk_src[] = { 113462306a36Sopenharmony_ci F(19200000, P_BI_TCXO, 1, 0, 0), 113562306a36Sopenharmony_ci F(75000000, P_CAM_CC_PLL0_OUT_EVEN, 8, 0, 0), 113662306a36Sopenharmony_ci F(150000000, P_CAM_CC_PLL0_OUT_EVEN, 4, 0, 0), 113762306a36Sopenharmony_ci F(300000000, P_CAM_CC_PLL0_OUT_MAIN, 4, 0, 0), 113862306a36Sopenharmony_ci { } 113962306a36Sopenharmony_ci}; 114062306a36Sopenharmony_ci 114162306a36Sopenharmony_cistatic struct clk_rcg2 cam_cc_qdss_debug_clk_src = { 114262306a36Sopenharmony_ci .cmd_rcgr = 0x131bc, 114362306a36Sopenharmony_ci .mnd_width = 0, 114462306a36Sopenharmony_ci .hid_width = 5, 114562306a36Sopenharmony_ci .parent_map = cam_cc_parent_map_0, 114662306a36Sopenharmony_ci .freq_tbl = ftbl_cam_cc_qdss_debug_clk_src, 114762306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 114862306a36Sopenharmony_ci .name = "cam_cc_qdss_debug_clk_src", 114962306a36Sopenharmony_ci .parent_data = cam_cc_parent_data_0, 115062306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 115162306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 115262306a36Sopenharmony_ci .ops = &clk_rcg2_ops, 115362306a36Sopenharmony_ci }, 115462306a36Sopenharmony_ci}; 115562306a36Sopenharmony_ci 115662306a36Sopenharmony_cistatic const struct freq_tbl ftbl_cam_cc_sfe_0_clk_src[] = { 115762306a36Sopenharmony_ci F(432000000, P_CAM_CC_PLL6_OUT_EVEN, 1, 0, 0), 115862306a36Sopenharmony_ci F(594000000, P_CAM_CC_PLL6_OUT_EVEN, 1, 0, 0), 115962306a36Sopenharmony_ci F(675000000, P_CAM_CC_PLL6_OUT_EVEN, 1, 0, 0), 116062306a36Sopenharmony_ci F(727000000, P_CAM_CC_PLL6_OUT_EVEN, 1, 0, 0), 116162306a36Sopenharmony_ci { } 116262306a36Sopenharmony_ci}; 116362306a36Sopenharmony_ci 116462306a36Sopenharmony_cistatic struct clk_rcg2 cam_cc_sfe_0_clk_src = { 116562306a36Sopenharmony_ci .cmd_rcgr = 0x13064, 116662306a36Sopenharmony_ci .mnd_width = 0, 116762306a36Sopenharmony_ci .hid_width = 5, 116862306a36Sopenharmony_ci .parent_map = cam_cc_parent_map_6, 116962306a36Sopenharmony_ci .freq_tbl = ftbl_cam_cc_sfe_0_clk_src, 117062306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 117162306a36Sopenharmony_ci .name = "cam_cc_sfe_0_clk_src", 117262306a36Sopenharmony_ci .parent_data = cam_cc_parent_data_6, 117362306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(cam_cc_parent_data_6), 117462306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 117562306a36Sopenharmony_ci .ops = &clk_rcg2_ops, 117662306a36Sopenharmony_ci }, 117762306a36Sopenharmony_ci}; 117862306a36Sopenharmony_ci 117962306a36Sopenharmony_cistatic const struct freq_tbl ftbl_cam_cc_sfe_1_clk_src[] = { 118062306a36Sopenharmony_ci F(432000000, P_CAM_CC_PLL7_OUT_EVEN, 1, 0, 0), 118162306a36Sopenharmony_ci F(594000000, P_CAM_CC_PLL7_OUT_EVEN, 1, 0, 0), 118262306a36Sopenharmony_ci F(675000000, P_CAM_CC_PLL7_OUT_EVEN, 1, 0, 0), 118362306a36Sopenharmony_ci F(727000000, P_CAM_CC_PLL7_OUT_EVEN, 1, 0, 0), 118462306a36Sopenharmony_ci { } 118562306a36Sopenharmony_ci}; 118662306a36Sopenharmony_ci 118762306a36Sopenharmony_cistatic struct clk_rcg2 cam_cc_sfe_1_clk_src = { 118862306a36Sopenharmony_ci .cmd_rcgr = 0x130ac, 118962306a36Sopenharmony_ci .mnd_width = 0, 119062306a36Sopenharmony_ci .hid_width = 5, 119162306a36Sopenharmony_ci .parent_map = cam_cc_parent_map_7, 119262306a36Sopenharmony_ci .freq_tbl = ftbl_cam_cc_sfe_1_clk_src, 119362306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 119462306a36Sopenharmony_ci .name = "cam_cc_sfe_1_clk_src", 119562306a36Sopenharmony_ci .parent_data = cam_cc_parent_data_7, 119662306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(cam_cc_parent_data_7), 119762306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 119862306a36Sopenharmony_ci .ops = &clk_rcg2_ops, 119962306a36Sopenharmony_ci }, 120062306a36Sopenharmony_ci}; 120162306a36Sopenharmony_ci 120262306a36Sopenharmony_cistatic const struct freq_tbl ftbl_cam_cc_sleep_clk_src[] = { 120362306a36Sopenharmony_ci F(32000, P_SLEEP_CLK, 1, 0, 0), 120462306a36Sopenharmony_ci { } 120562306a36Sopenharmony_ci}; 120662306a36Sopenharmony_ci 120762306a36Sopenharmony_cistatic struct clk_rcg2 cam_cc_sleep_clk_src = { 120862306a36Sopenharmony_ci .cmd_rcgr = 0x13210, 120962306a36Sopenharmony_ci .mnd_width = 0, 121062306a36Sopenharmony_ci .hid_width = 5, 121162306a36Sopenharmony_ci .parent_map = cam_cc_parent_map_8, 121262306a36Sopenharmony_ci .freq_tbl = ftbl_cam_cc_sleep_clk_src, 121362306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 121462306a36Sopenharmony_ci .name = "cam_cc_sleep_clk_src", 121562306a36Sopenharmony_ci .parent_data = cam_cc_parent_data_8, 121662306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(cam_cc_parent_data_8), 121762306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 121862306a36Sopenharmony_ci .ops = &clk_rcg2_ops, 121962306a36Sopenharmony_ci }, 122062306a36Sopenharmony_ci}; 122162306a36Sopenharmony_ci 122262306a36Sopenharmony_cistatic const struct freq_tbl ftbl_cam_cc_slow_ahb_clk_src[] = { 122362306a36Sopenharmony_ci F(19200000, P_BI_TCXO, 1, 0, 0), 122462306a36Sopenharmony_ci F(80000000, P_CAM_CC_PLL0_OUT_EVEN, 7.5, 0, 0), 122562306a36Sopenharmony_ci { } 122662306a36Sopenharmony_ci}; 122762306a36Sopenharmony_ci 122862306a36Sopenharmony_cistatic struct clk_rcg2 cam_cc_slow_ahb_clk_src = { 122962306a36Sopenharmony_ci .cmd_rcgr = 0x10034, 123062306a36Sopenharmony_ci .mnd_width = 8, 123162306a36Sopenharmony_ci .hid_width = 5, 123262306a36Sopenharmony_ci .parent_map = cam_cc_parent_map_0, 123362306a36Sopenharmony_ci .freq_tbl = ftbl_cam_cc_slow_ahb_clk_src, 123462306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 123562306a36Sopenharmony_ci .name = "cam_cc_slow_ahb_clk_src", 123662306a36Sopenharmony_ci .parent_data = cam_cc_parent_data_0, 123762306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 123862306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 123962306a36Sopenharmony_ci .ops = &clk_rcg2_ops, 124062306a36Sopenharmony_ci }, 124162306a36Sopenharmony_ci}; 124262306a36Sopenharmony_ci 124362306a36Sopenharmony_cistatic const struct freq_tbl ftbl_cam_cc_xo_clk_src[] = { 124462306a36Sopenharmony_ci F(19200000, P_BI_TCXO, 1, 0, 0), 124562306a36Sopenharmony_ci { } 124662306a36Sopenharmony_ci}; 124762306a36Sopenharmony_ci 124862306a36Sopenharmony_cistatic struct clk_rcg2 cam_cc_xo_clk_src = { 124962306a36Sopenharmony_ci .cmd_rcgr = 0x131f4, 125062306a36Sopenharmony_ci .mnd_width = 0, 125162306a36Sopenharmony_ci .hid_width = 5, 125262306a36Sopenharmony_ci .parent_map = cam_cc_parent_map_9, 125362306a36Sopenharmony_ci .freq_tbl = ftbl_cam_cc_xo_clk_src, 125462306a36Sopenharmony_ci .clkr.hw.init = &(const struct clk_init_data) { 125562306a36Sopenharmony_ci .name = "cam_cc_xo_clk_src", 125662306a36Sopenharmony_ci .parent_data = cam_cc_parent_data_9_ao, 125762306a36Sopenharmony_ci .num_parents = ARRAY_SIZE(cam_cc_parent_data_9_ao), 125862306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 125962306a36Sopenharmony_ci .ops = &clk_rcg2_ops, 126062306a36Sopenharmony_ci }, 126162306a36Sopenharmony_ci}; 126262306a36Sopenharmony_ci 126362306a36Sopenharmony_cistatic struct clk_branch cam_cc_gdsc_clk = { 126462306a36Sopenharmony_ci .halt_reg = 0x1320c, 126562306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 126662306a36Sopenharmony_ci .clkr = { 126762306a36Sopenharmony_ci .enable_reg = 0x1320c, 126862306a36Sopenharmony_ci .enable_mask = BIT(0), 126962306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 127062306a36Sopenharmony_ci .name = "cam_cc_gdsc_clk", 127162306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 127262306a36Sopenharmony_ci &cam_cc_xo_clk_src.clkr.hw, 127362306a36Sopenharmony_ci }, 127462306a36Sopenharmony_ci .num_parents = 1, 127562306a36Sopenharmony_ci .flags = CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 127662306a36Sopenharmony_ci .ops = &clk_branch2_ops, 127762306a36Sopenharmony_ci }, 127862306a36Sopenharmony_ci }, 127962306a36Sopenharmony_ci}; 128062306a36Sopenharmony_ci 128162306a36Sopenharmony_cistatic struct clk_branch cam_cc_bps_ahb_clk = { 128262306a36Sopenharmony_ci .halt_reg = 0x1004c, 128362306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 128462306a36Sopenharmony_ci .clkr = { 128562306a36Sopenharmony_ci .enable_reg = 0x1004c, 128662306a36Sopenharmony_ci .enable_mask = BIT(0), 128762306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 128862306a36Sopenharmony_ci .name = "cam_cc_bps_ahb_clk", 128962306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 129062306a36Sopenharmony_ci &cam_cc_slow_ahb_clk_src.clkr.hw, 129162306a36Sopenharmony_ci }, 129262306a36Sopenharmony_ci .num_parents = 1, 129362306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 129462306a36Sopenharmony_ci .ops = &clk_branch2_ops, 129562306a36Sopenharmony_ci }, 129662306a36Sopenharmony_ci }, 129762306a36Sopenharmony_ci}; 129862306a36Sopenharmony_ci 129962306a36Sopenharmony_cistatic struct clk_branch cam_cc_bps_clk = { 130062306a36Sopenharmony_ci .halt_reg = 0x10068, 130162306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 130262306a36Sopenharmony_ci .clkr = { 130362306a36Sopenharmony_ci .enable_reg = 0x10068, 130462306a36Sopenharmony_ci .enable_mask = BIT(0), 130562306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 130662306a36Sopenharmony_ci .name = "cam_cc_bps_clk", 130762306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 130862306a36Sopenharmony_ci &cam_cc_bps_clk_src.clkr.hw, 130962306a36Sopenharmony_ci }, 131062306a36Sopenharmony_ci .num_parents = 1, 131162306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 131262306a36Sopenharmony_ci .ops = &clk_branch2_ops, 131362306a36Sopenharmony_ci }, 131462306a36Sopenharmony_ci }, 131562306a36Sopenharmony_ci}; 131662306a36Sopenharmony_ci 131762306a36Sopenharmony_cistatic struct clk_branch cam_cc_bps_fast_ahb_clk = { 131862306a36Sopenharmony_ci .halt_reg = 0x10030, 131962306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 132062306a36Sopenharmony_ci .clkr = { 132162306a36Sopenharmony_ci .enable_reg = 0x10030, 132262306a36Sopenharmony_ci .enable_mask = BIT(0), 132362306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 132462306a36Sopenharmony_ci .name = "cam_cc_bps_fast_ahb_clk", 132562306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 132662306a36Sopenharmony_ci &cam_cc_fast_ahb_clk_src.clkr.hw, 132762306a36Sopenharmony_ci }, 132862306a36Sopenharmony_ci .num_parents = 1, 132962306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 133062306a36Sopenharmony_ci .ops = &clk_branch2_ops, 133162306a36Sopenharmony_ci }, 133262306a36Sopenharmony_ci }, 133362306a36Sopenharmony_ci}; 133462306a36Sopenharmony_ci 133562306a36Sopenharmony_cistatic struct clk_branch cam_cc_camnoc_axi_clk = { 133662306a36Sopenharmony_ci .halt_reg = 0x131ac, 133762306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 133862306a36Sopenharmony_ci .clkr = { 133962306a36Sopenharmony_ci .enable_reg = 0x131ac, 134062306a36Sopenharmony_ci .enable_mask = BIT(0), 134162306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 134262306a36Sopenharmony_ci .name = "cam_cc_camnoc_axi_clk", 134362306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 134462306a36Sopenharmony_ci &cam_cc_camnoc_axi_clk_src.clkr.hw, 134562306a36Sopenharmony_ci }, 134662306a36Sopenharmony_ci .num_parents = 1, 134762306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 134862306a36Sopenharmony_ci .ops = &clk_branch2_ops, 134962306a36Sopenharmony_ci }, 135062306a36Sopenharmony_ci }, 135162306a36Sopenharmony_ci}; 135262306a36Sopenharmony_ci 135362306a36Sopenharmony_cistatic struct clk_branch cam_cc_camnoc_dcd_xo_clk = { 135462306a36Sopenharmony_ci .halt_reg = 0x131b4, 135562306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 135662306a36Sopenharmony_ci .clkr = { 135762306a36Sopenharmony_ci .enable_reg = 0x131b4, 135862306a36Sopenharmony_ci .enable_mask = BIT(0), 135962306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 136062306a36Sopenharmony_ci .name = "cam_cc_camnoc_dcd_xo_clk", 136162306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 136262306a36Sopenharmony_ci &cam_cc_xo_clk_src.clkr.hw, 136362306a36Sopenharmony_ci }, 136462306a36Sopenharmony_ci .num_parents = 1, 136562306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 136662306a36Sopenharmony_ci .ops = &clk_branch2_ops, 136762306a36Sopenharmony_ci }, 136862306a36Sopenharmony_ci }, 136962306a36Sopenharmony_ci}; 137062306a36Sopenharmony_ci 137162306a36Sopenharmony_cistatic struct clk_branch cam_cc_cci_0_clk = { 137262306a36Sopenharmony_ci .halt_reg = 0x13144, 137362306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 137462306a36Sopenharmony_ci .clkr = { 137562306a36Sopenharmony_ci .enable_reg = 0x13144, 137662306a36Sopenharmony_ci .enable_mask = BIT(0), 137762306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 137862306a36Sopenharmony_ci .name = "cam_cc_cci_0_clk", 137962306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 138062306a36Sopenharmony_ci &cam_cc_cci_0_clk_src.clkr.hw, 138162306a36Sopenharmony_ci }, 138262306a36Sopenharmony_ci .num_parents = 1, 138362306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 138462306a36Sopenharmony_ci .ops = &clk_branch2_ops, 138562306a36Sopenharmony_ci }, 138662306a36Sopenharmony_ci }, 138762306a36Sopenharmony_ci}; 138862306a36Sopenharmony_ci 138962306a36Sopenharmony_cistatic struct clk_branch cam_cc_cci_1_clk = { 139062306a36Sopenharmony_ci .halt_reg = 0x13160, 139162306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 139262306a36Sopenharmony_ci .clkr = { 139362306a36Sopenharmony_ci .enable_reg = 0x13160, 139462306a36Sopenharmony_ci .enable_mask = BIT(0), 139562306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 139662306a36Sopenharmony_ci .name = "cam_cc_cci_1_clk", 139762306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 139862306a36Sopenharmony_ci &cam_cc_cci_1_clk_src.clkr.hw, 139962306a36Sopenharmony_ci }, 140062306a36Sopenharmony_ci .num_parents = 1, 140162306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 140262306a36Sopenharmony_ci .ops = &clk_branch2_ops, 140362306a36Sopenharmony_ci }, 140462306a36Sopenharmony_ci }, 140562306a36Sopenharmony_ci}; 140662306a36Sopenharmony_ci 140762306a36Sopenharmony_cistatic struct clk_branch cam_cc_core_ahb_clk = { 140862306a36Sopenharmony_ci .halt_reg = 0x131f0, 140962306a36Sopenharmony_ci .halt_check = BRANCH_HALT_DELAY, 141062306a36Sopenharmony_ci .clkr = { 141162306a36Sopenharmony_ci .enable_reg = 0x131f0, 141262306a36Sopenharmony_ci .enable_mask = BIT(0), 141362306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 141462306a36Sopenharmony_ci .name = "cam_cc_core_ahb_clk", 141562306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 141662306a36Sopenharmony_ci &cam_cc_slow_ahb_clk_src.clkr.hw, 141762306a36Sopenharmony_ci }, 141862306a36Sopenharmony_ci .num_parents = 1, 141962306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 142062306a36Sopenharmony_ci .ops = &clk_branch2_ops, 142162306a36Sopenharmony_ci }, 142262306a36Sopenharmony_ci }, 142362306a36Sopenharmony_ci}; 142462306a36Sopenharmony_ci 142562306a36Sopenharmony_cistatic struct clk_branch cam_cc_cpas_ahb_clk = { 142662306a36Sopenharmony_ci .halt_reg = 0x13164, 142762306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 142862306a36Sopenharmony_ci .clkr = { 142962306a36Sopenharmony_ci .enable_reg = 0x13164, 143062306a36Sopenharmony_ci .enable_mask = BIT(0), 143162306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 143262306a36Sopenharmony_ci .name = "cam_cc_cpas_ahb_clk", 143362306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 143462306a36Sopenharmony_ci &cam_cc_slow_ahb_clk_src.clkr.hw, 143562306a36Sopenharmony_ci }, 143662306a36Sopenharmony_ci .num_parents = 1, 143762306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 143862306a36Sopenharmony_ci .ops = &clk_branch2_ops, 143962306a36Sopenharmony_ci }, 144062306a36Sopenharmony_ci }, 144162306a36Sopenharmony_ci}; 144262306a36Sopenharmony_ci 144362306a36Sopenharmony_cistatic struct clk_branch cam_cc_cpas_bps_clk = { 144462306a36Sopenharmony_ci .halt_reg = 0x10070, 144562306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 144662306a36Sopenharmony_ci .clkr = { 144762306a36Sopenharmony_ci .enable_reg = 0x10070, 144862306a36Sopenharmony_ci .enable_mask = BIT(0), 144962306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 145062306a36Sopenharmony_ci .name = "cam_cc_cpas_bps_clk", 145162306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 145262306a36Sopenharmony_ci &cam_cc_bps_clk_src.clkr.hw, 145362306a36Sopenharmony_ci }, 145462306a36Sopenharmony_ci .num_parents = 1, 145562306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 145662306a36Sopenharmony_ci .ops = &clk_branch2_ops, 145762306a36Sopenharmony_ci }, 145862306a36Sopenharmony_ci }, 145962306a36Sopenharmony_ci}; 146062306a36Sopenharmony_ci 146162306a36Sopenharmony_cistatic struct clk_branch cam_cc_cpas_fast_ahb_clk = { 146262306a36Sopenharmony_ci .halt_reg = 0x1316c, 146362306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 146462306a36Sopenharmony_ci .clkr = { 146562306a36Sopenharmony_ci .enable_reg = 0x1316c, 146662306a36Sopenharmony_ci .enable_mask = BIT(0), 146762306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 146862306a36Sopenharmony_ci .name = "cam_cc_cpas_fast_ahb_clk", 146962306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 147062306a36Sopenharmony_ci &cam_cc_fast_ahb_clk_src.clkr.hw, 147162306a36Sopenharmony_ci }, 147262306a36Sopenharmony_ci .num_parents = 1, 147362306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 147462306a36Sopenharmony_ci .ops = &clk_branch2_ops, 147562306a36Sopenharmony_ci }, 147662306a36Sopenharmony_ci }, 147762306a36Sopenharmony_ci}; 147862306a36Sopenharmony_ci 147962306a36Sopenharmony_cistatic struct clk_branch cam_cc_cpas_ife_0_clk = { 148062306a36Sopenharmony_ci .halt_reg = 0x11038, 148162306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 148262306a36Sopenharmony_ci .clkr = { 148362306a36Sopenharmony_ci .enable_reg = 0x11038, 148462306a36Sopenharmony_ci .enable_mask = BIT(0), 148562306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 148662306a36Sopenharmony_ci .name = "cam_cc_cpas_ife_0_clk", 148762306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 148862306a36Sopenharmony_ci &cam_cc_ife_0_clk_src.clkr.hw, 148962306a36Sopenharmony_ci }, 149062306a36Sopenharmony_ci .num_parents = 1, 149162306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 149262306a36Sopenharmony_ci .ops = &clk_branch2_ops, 149362306a36Sopenharmony_ci }, 149462306a36Sopenharmony_ci }, 149562306a36Sopenharmony_ci}; 149662306a36Sopenharmony_ci 149762306a36Sopenharmony_cistatic struct clk_branch cam_cc_cpas_ife_1_clk = { 149862306a36Sopenharmony_ci .halt_reg = 0x12038, 149962306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 150062306a36Sopenharmony_ci .clkr = { 150162306a36Sopenharmony_ci .enable_reg = 0x12038, 150262306a36Sopenharmony_ci .enable_mask = BIT(0), 150362306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 150462306a36Sopenharmony_ci .name = "cam_cc_cpas_ife_1_clk", 150562306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 150662306a36Sopenharmony_ci &cam_cc_ife_1_clk_src.clkr.hw, 150762306a36Sopenharmony_ci }, 150862306a36Sopenharmony_ci .num_parents = 1, 150962306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 151062306a36Sopenharmony_ci .ops = &clk_branch2_ops, 151162306a36Sopenharmony_ci }, 151262306a36Sopenharmony_ci }, 151362306a36Sopenharmony_ci}; 151462306a36Sopenharmony_ci 151562306a36Sopenharmony_cistatic struct clk_branch cam_cc_cpas_ife_2_clk = { 151662306a36Sopenharmony_ci .halt_reg = 0x12084, 151762306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 151862306a36Sopenharmony_ci .clkr = { 151962306a36Sopenharmony_ci .enable_reg = 0x12084, 152062306a36Sopenharmony_ci .enable_mask = BIT(0), 152162306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 152262306a36Sopenharmony_ci .name = "cam_cc_cpas_ife_2_clk", 152362306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 152462306a36Sopenharmony_ci &cam_cc_ife_2_clk_src.clkr.hw, 152562306a36Sopenharmony_ci }, 152662306a36Sopenharmony_ci .num_parents = 1, 152762306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 152862306a36Sopenharmony_ci .ops = &clk_branch2_ops, 152962306a36Sopenharmony_ci }, 153062306a36Sopenharmony_ci }, 153162306a36Sopenharmony_ci}; 153262306a36Sopenharmony_ci 153362306a36Sopenharmony_cistatic struct clk_branch cam_cc_cpas_ife_lite_clk = { 153462306a36Sopenharmony_ci .halt_reg = 0x13020, 153562306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 153662306a36Sopenharmony_ci .clkr = { 153762306a36Sopenharmony_ci .enable_reg = 0x13020, 153862306a36Sopenharmony_ci .enable_mask = BIT(0), 153962306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 154062306a36Sopenharmony_ci .name = "cam_cc_cpas_ife_lite_clk", 154162306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 154262306a36Sopenharmony_ci &cam_cc_ife_lite_clk_src.clkr.hw, 154362306a36Sopenharmony_ci }, 154462306a36Sopenharmony_ci .num_parents = 1, 154562306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 154662306a36Sopenharmony_ci .ops = &clk_branch2_ops, 154762306a36Sopenharmony_ci }, 154862306a36Sopenharmony_ci }, 154962306a36Sopenharmony_ci}; 155062306a36Sopenharmony_ci 155162306a36Sopenharmony_cistatic struct clk_branch cam_cc_cpas_ipe_nps_clk = { 155262306a36Sopenharmony_ci .halt_reg = 0x100ac, 155362306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 155462306a36Sopenharmony_ci .clkr = { 155562306a36Sopenharmony_ci .enable_reg = 0x100ac, 155662306a36Sopenharmony_ci .enable_mask = BIT(0), 155762306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 155862306a36Sopenharmony_ci .name = "cam_cc_cpas_ipe_nps_clk", 155962306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 156062306a36Sopenharmony_ci &cam_cc_ipe_nps_clk_src.clkr.hw, 156162306a36Sopenharmony_ci }, 156262306a36Sopenharmony_ci .num_parents = 1, 156362306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 156462306a36Sopenharmony_ci .ops = &clk_branch2_ops, 156562306a36Sopenharmony_ci }, 156662306a36Sopenharmony_ci }, 156762306a36Sopenharmony_ci}; 156862306a36Sopenharmony_ci 156962306a36Sopenharmony_cistatic struct clk_branch cam_cc_cpas_sbi_clk = { 157062306a36Sopenharmony_ci .halt_reg = 0x100ec, 157162306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 157262306a36Sopenharmony_ci .clkr = { 157362306a36Sopenharmony_ci .enable_reg = 0x100ec, 157462306a36Sopenharmony_ci .enable_mask = BIT(0), 157562306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 157662306a36Sopenharmony_ci .name = "cam_cc_cpas_sbi_clk", 157762306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 157862306a36Sopenharmony_ci &cam_cc_ife_0_clk_src.clkr.hw, 157962306a36Sopenharmony_ci }, 158062306a36Sopenharmony_ci .num_parents = 1, 158162306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 158262306a36Sopenharmony_ci .ops = &clk_branch2_ops, 158362306a36Sopenharmony_ci }, 158462306a36Sopenharmony_ci }, 158562306a36Sopenharmony_ci}; 158662306a36Sopenharmony_ci 158762306a36Sopenharmony_cistatic struct clk_branch cam_cc_cpas_sfe_0_clk = { 158862306a36Sopenharmony_ci .halt_reg = 0x13084, 158962306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 159062306a36Sopenharmony_ci .clkr = { 159162306a36Sopenharmony_ci .enable_reg = 0x13084, 159262306a36Sopenharmony_ci .enable_mask = BIT(0), 159362306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 159462306a36Sopenharmony_ci .name = "cam_cc_cpas_sfe_0_clk", 159562306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 159662306a36Sopenharmony_ci &cam_cc_sfe_0_clk_src.clkr.hw, 159762306a36Sopenharmony_ci }, 159862306a36Sopenharmony_ci .num_parents = 1, 159962306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 160062306a36Sopenharmony_ci .ops = &clk_branch2_ops, 160162306a36Sopenharmony_ci }, 160262306a36Sopenharmony_ci }, 160362306a36Sopenharmony_ci}; 160462306a36Sopenharmony_ci 160562306a36Sopenharmony_cistatic struct clk_branch cam_cc_cpas_sfe_1_clk = { 160662306a36Sopenharmony_ci .halt_reg = 0x130cc, 160762306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 160862306a36Sopenharmony_ci .clkr = { 160962306a36Sopenharmony_ci .enable_reg = 0x130cc, 161062306a36Sopenharmony_ci .enable_mask = BIT(0), 161162306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 161262306a36Sopenharmony_ci .name = "cam_cc_cpas_sfe_1_clk", 161362306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 161462306a36Sopenharmony_ci &cam_cc_sfe_1_clk_src.clkr.hw, 161562306a36Sopenharmony_ci }, 161662306a36Sopenharmony_ci .num_parents = 1, 161762306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 161862306a36Sopenharmony_ci .ops = &clk_branch2_ops, 161962306a36Sopenharmony_ci }, 162062306a36Sopenharmony_ci }, 162162306a36Sopenharmony_ci}; 162262306a36Sopenharmony_ci 162362306a36Sopenharmony_cistatic struct clk_branch cam_cc_csi0phytimer_clk = { 162462306a36Sopenharmony_ci .halt_reg = 0x150f8, 162562306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 162662306a36Sopenharmony_ci .clkr = { 162762306a36Sopenharmony_ci .enable_reg = 0x150f8, 162862306a36Sopenharmony_ci .enable_mask = BIT(0), 162962306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 163062306a36Sopenharmony_ci .name = "cam_cc_csi0phytimer_clk", 163162306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 163262306a36Sopenharmony_ci &cam_cc_csi0phytimer_clk_src.clkr.hw, 163362306a36Sopenharmony_ci }, 163462306a36Sopenharmony_ci .num_parents = 1, 163562306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 163662306a36Sopenharmony_ci .ops = &clk_branch2_ops, 163762306a36Sopenharmony_ci }, 163862306a36Sopenharmony_ci }, 163962306a36Sopenharmony_ci}; 164062306a36Sopenharmony_ci 164162306a36Sopenharmony_cistatic struct clk_branch cam_cc_csi1phytimer_clk = { 164262306a36Sopenharmony_ci .halt_reg = 0x1511c, 164362306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 164462306a36Sopenharmony_ci .clkr = { 164562306a36Sopenharmony_ci .enable_reg = 0x1511c, 164662306a36Sopenharmony_ci .enable_mask = BIT(0), 164762306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 164862306a36Sopenharmony_ci .name = "cam_cc_csi1phytimer_clk", 164962306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 165062306a36Sopenharmony_ci &cam_cc_csi1phytimer_clk_src.clkr.hw, 165162306a36Sopenharmony_ci }, 165262306a36Sopenharmony_ci .num_parents = 1, 165362306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 165462306a36Sopenharmony_ci .ops = &clk_branch2_ops, 165562306a36Sopenharmony_ci }, 165662306a36Sopenharmony_ci }, 165762306a36Sopenharmony_ci}; 165862306a36Sopenharmony_ci 165962306a36Sopenharmony_cistatic struct clk_branch cam_cc_csi2phytimer_clk = { 166062306a36Sopenharmony_ci .halt_reg = 0x1513c, 166162306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 166262306a36Sopenharmony_ci .clkr = { 166362306a36Sopenharmony_ci .enable_reg = 0x1513c, 166462306a36Sopenharmony_ci .enable_mask = BIT(0), 166562306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 166662306a36Sopenharmony_ci .name = "cam_cc_csi2phytimer_clk", 166762306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 166862306a36Sopenharmony_ci &cam_cc_csi2phytimer_clk_src.clkr.hw, 166962306a36Sopenharmony_ci }, 167062306a36Sopenharmony_ci .num_parents = 1, 167162306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 167262306a36Sopenharmony_ci .ops = &clk_branch2_ops, 167362306a36Sopenharmony_ci }, 167462306a36Sopenharmony_ci }, 167562306a36Sopenharmony_ci}; 167662306a36Sopenharmony_ci 167762306a36Sopenharmony_cistatic struct clk_branch cam_cc_csi3phytimer_clk = { 167862306a36Sopenharmony_ci .halt_reg = 0x15164, 167962306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 168062306a36Sopenharmony_ci .clkr = { 168162306a36Sopenharmony_ci .enable_reg = 0x15164, 168262306a36Sopenharmony_ci .enable_mask = BIT(0), 168362306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 168462306a36Sopenharmony_ci .name = "cam_cc_csi3phytimer_clk", 168562306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 168662306a36Sopenharmony_ci &cam_cc_csi3phytimer_clk_src.clkr.hw, 168762306a36Sopenharmony_ci }, 168862306a36Sopenharmony_ci .num_parents = 1, 168962306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 169062306a36Sopenharmony_ci .ops = &clk_branch2_ops, 169162306a36Sopenharmony_ci }, 169262306a36Sopenharmony_ci }, 169362306a36Sopenharmony_ci}; 169462306a36Sopenharmony_ci 169562306a36Sopenharmony_cistatic struct clk_branch cam_cc_csi4phytimer_clk = { 169662306a36Sopenharmony_ci .halt_reg = 0x15184, 169762306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 169862306a36Sopenharmony_ci .clkr = { 169962306a36Sopenharmony_ci .enable_reg = 0x15184, 170062306a36Sopenharmony_ci .enable_mask = BIT(0), 170162306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 170262306a36Sopenharmony_ci .name = "cam_cc_csi4phytimer_clk", 170362306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 170462306a36Sopenharmony_ci &cam_cc_csi4phytimer_clk_src.clkr.hw, 170562306a36Sopenharmony_ci }, 170662306a36Sopenharmony_ci .num_parents = 1, 170762306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 170862306a36Sopenharmony_ci .ops = &clk_branch2_ops, 170962306a36Sopenharmony_ci }, 171062306a36Sopenharmony_ci }, 171162306a36Sopenharmony_ci}; 171262306a36Sopenharmony_ci 171362306a36Sopenharmony_cistatic struct clk_branch cam_cc_csi5phytimer_clk = { 171462306a36Sopenharmony_ci .halt_reg = 0x151a4, 171562306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 171662306a36Sopenharmony_ci .clkr = { 171762306a36Sopenharmony_ci .enable_reg = 0x151a4, 171862306a36Sopenharmony_ci .enable_mask = BIT(0), 171962306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 172062306a36Sopenharmony_ci .name = "cam_cc_csi5phytimer_clk", 172162306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 172262306a36Sopenharmony_ci &cam_cc_csi5phytimer_clk_src.clkr.hw, 172362306a36Sopenharmony_ci }, 172462306a36Sopenharmony_ci .num_parents = 1, 172562306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 172662306a36Sopenharmony_ci .ops = &clk_branch2_ops, 172762306a36Sopenharmony_ci }, 172862306a36Sopenharmony_ci }, 172962306a36Sopenharmony_ci}; 173062306a36Sopenharmony_ci 173162306a36Sopenharmony_cistatic struct clk_branch cam_cc_csid_clk = { 173262306a36Sopenharmony_ci .halt_reg = 0x1318c, 173362306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 173462306a36Sopenharmony_ci .clkr = { 173562306a36Sopenharmony_ci .enable_reg = 0x1318c, 173662306a36Sopenharmony_ci .enable_mask = BIT(0), 173762306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 173862306a36Sopenharmony_ci .name = "cam_cc_csid_clk", 173962306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 174062306a36Sopenharmony_ci &cam_cc_csid_clk_src.clkr.hw, 174162306a36Sopenharmony_ci }, 174262306a36Sopenharmony_ci .num_parents = 1, 174362306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 174462306a36Sopenharmony_ci .ops = &clk_branch2_ops, 174562306a36Sopenharmony_ci }, 174662306a36Sopenharmony_ci }, 174762306a36Sopenharmony_ci}; 174862306a36Sopenharmony_ci 174962306a36Sopenharmony_cistatic struct clk_branch cam_cc_csid_csiphy_rx_clk = { 175062306a36Sopenharmony_ci .halt_reg = 0x15100, 175162306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 175262306a36Sopenharmony_ci .clkr = { 175362306a36Sopenharmony_ci .enable_reg = 0x15100, 175462306a36Sopenharmony_ci .enable_mask = BIT(0), 175562306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 175662306a36Sopenharmony_ci .name = "cam_cc_csid_csiphy_rx_clk", 175762306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 175862306a36Sopenharmony_ci &cam_cc_cphy_rx_clk_src.clkr.hw, 175962306a36Sopenharmony_ci }, 176062306a36Sopenharmony_ci .num_parents = 1, 176162306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 176262306a36Sopenharmony_ci .ops = &clk_branch2_ops, 176362306a36Sopenharmony_ci }, 176462306a36Sopenharmony_ci }, 176562306a36Sopenharmony_ci}; 176662306a36Sopenharmony_ci 176762306a36Sopenharmony_cistatic struct clk_branch cam_cc_csiphy0_clk = { 176862306a36Sopenharmony_ci .halt_reg = 0x150fc, 176962306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 177062306a36Sopenharmony_ci .clkr = { 177162306a36Sopenharmony_ci .enable_reg = 0x150fc, 177262306a36Sopenharmony_ci .enable_mask = BIT(0), 177362306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 177462306a36Sopenharmony_ci .name = "cam_cc_csiphy0_clk", 177562306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 177662306a36Sopenharmony_ci &cam_cc_cphy_rx_clk_src.clkr.hw, 177762306a36Sopenharmony_ci }, 177862306a36Sopenharmony_ci .num_parents = 1, 177962306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 178062306a36Sopenharmony_ci .ops = &clk_branch2_ops, 178162306a36Sopenharmony_ci }, 178262306a36Sopenharmony_ci }, 178362306a36Sopenharmony_ci}; 178462306a36Sopenharmony_ci 178562306a36Sopenharmony_cistatic struct clk_branch cam_cc_csiphy1_clk = { 178662306a36Sopenharmony_ci .halt_reg = 0x15120, 178762306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 178862306a36Sopenharmony_ci .clkr = { 178962306a36Sopenharmony_ci .enable_reg = 0x15120, 179062306a36Sopenharmony_ci .enable_mask = BIT(0), 179162306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 179262306a36Sopenharmony_ci .name = "cam_cc_csiphy1_clk", 179362306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 179462306a36Sopenharmony_ci &cam_cc_cphy_rx_clk_src.clkr.hw, 179562306a36Sopenharmony_ci }, 179662306a36Sopenharmony_ci .num_parents = 1, 179762306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 179862306a36Sopenharmony_ci .ops = &clk_branch2_ops, 179962306a36Sopenharmony_ci }, 180062306a36Sopenharmony_ci }, 180162306a36Sopenharmony_ci}; 180262306a36Sopenharmony_ci 180362306a36Sopenharmony_cistatic struct clk_branch cam_cc_csiphy2_clk = { 180462306a36Sopenharmony_ci .halt_reg = 0x15140, 180562306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 180662306a36Sopenharmony_ci .clkr = { 180762306a36Sopenharmony_ci .enable_reg = 0x15140, 180862306a36Sopenharmony_ci .enable_mask = BIT(0), 180962306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 181062306a36Sopenharmony_ci .name = "cam_cc_csiphy2_clk", 181162306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 181262306a36Sopenharmony_ci &cam_cc_cphy_rx_clk_src.clkr.hw, 181362306a36Sopenharmony_ci }, 181462306a36Sopenharmony_ci .num_parents = 1, 181562306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 181662306a36Sopenharmony_ci .ops = &clk_branch2_ops, 181762306a36Sopenharmony_ci }, 181862306a36Sopenharmony_ci }, 181962306a36Sopenharmony_ci}; 182062306a36Sopenharmony_ci 182162306a36Sopenharmony_cistatic struct clk_branch cam_cc_csiphy3_clk = { 182262306a36Sopenharmony_ci .halt_reg = 0x15168, 182362306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 182462306a36Sopenharmony_ci .clkr = { 182562306a36Sopenharmony_ci .enable_reg = 0x15168, 182662306a36Sopenharmony_ci .enable_mask = BIT(0), 182762306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 182862306a36Sopenharmony_ci .name = "cam_cc_csiphy3_clk", 182962306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 183062306a36Sopenharmony_ci &cam_cc_cphy_rx_clk_src.clkr.hw, 183162306a36Sopenharmony_ci }, 183262306a36Sopenharmony_ci .num_parents = 1, 183362306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 183462306a36Sopenharmony_ci .ops = &clk_branch2_ops, 183562306a36Sopenharmony_ci }, 183662306a36Sopenharmony_ci }, 183762306a36Sopenharmony_ci}; 183862306a36Sopenharmony_ci 183962306a36Sopenharmony_cistatic struct clk_branch cam_cc_csiphy4_clk = { 184062306a36Sopenharmony_ci .halt_reg = 0x15188, 184162306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 184262306a36Sopenharmony_ci .clkr = { 184362306a36Sopenharmony_ci .enable_reg = 0x15188, 184462306a36Sopenharmony_ci .enable_mask = BIT(0), 184562306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 184662306a36Sopenharmony_ci .name = "cam_cc_csiphy4_clk", 184762306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 184862306a36Sopenharmony_ci &cam_cc_cphy_rx_clk_src.clkr.hw, 184962306a36Sopenharmony_ci }, 185062306a36Sopenharmony_ci .num_parents = 1, 185162306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 185262306a36Sopenharmony_ci .ops = &clk_branch2_ops, 185362306a36Sopenharmony_ci }, 185462306a36Sopenharmony_ci }, 185562306a36Sopenharmony_ci}; 185662306a36Sopenharmony_ci 185762306a36Sopenharmony_cistatic struct clk_branch cam_cc_csiphy5_clk = { 185862306a36Sopenharmony_ci .halt_reg = 0x151a8, 185962306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 186062306a36Sopenharmony_ci .clkr = { 186162306a36Sopenharmony_ci .enable_reg = 0x151a8, 186262306a36Sopenharmony_ci .enable_mask = BIT(0), 186362306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 186462306a36Sopenharmony_ci .name = "cam_cc_csiphy5_clk", 186562306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 186662306a36Sopenharmony_ci &cam_cc_cphy_rx_clk_src.clkr.hw, 186762306a36Sopenharmony_ci }, 186862306a36Sopenharmony_ci .num_parents = 1, 186962306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 187062306a36Sopenharmony_ci .ops = &clk_branch2_ops, 187162306a36Sopenharmony_ci }, 187262306a36Sopenharmony_ci }, 187362306a36Sopenharmony_ci}; 187462306a36Sopenharmony_ci 187562306a36Sopenharmony_cistatic struct clk_branch cam_cc_icp_ahb_clk = { 187662306a36Sopenharmony_ci .halt_reg = 0x13128, 187762306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 187862306a36Sopenharmony_ci .clkr = { 187962306a36Sopenharmony_ci .enable_reg = 0x13128, 188062306a36Sopenharmony_ci .enable_mask = BIT(0), 188162306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 188262306a36Sopenharmony_ci .name = "cam_cc_icp_ahb_clk", 188362306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 188462306a36Sopenharmony_ci &cam_cc_slow_ahb_clk_src.clkr.hw, 188562306a36Sopenharmony_ci }, 188662306a36Sopenharmony_ci .num_parents = 1, 188762306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 188862306a36Sopenharmony_ci .ops = &clk_branch2_ops, 188962306a36Sopenharmony_ci }, 189062306a36Sopenharmony_ci }, 189162306a36Sopenharmony_ci}; 189262306a36Sopenharmony_ci 189362306a36Sopenharmony_cistatic struct clk_branch cam_cc_icp_clk = { 189462306a36Sopenharmony_ci .halt_reg = 0x13120, 189562306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 189662306a36Sopenharmony_ci .clkr = { 189762306a36Sopenharmony_ci .enable_reg = 0x13120, 189862306a36Sopenharmony_ci .enable_mask = BIT(0), 189962306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 190062306a36Sopenharmony_ci .name = "cam_cc_icp_clk", 190162306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 190262306a36Sopenharmony_ci &cam_cc_icp_clk_src.clkr.hw, 190362306a36Sopenharmony_ci }, 190462306a36Sopenharmony_ci .num_parents = 1, 190562306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 190662306a36Sopenharmony_ci .ops = &clk_branch2_ops, 190762306a36Sopenharmony_ci }, 190862306a36Sopenharmony_ci }, 190962306a36Sopenharmony_ci}; 191062306a36Sopenharmony_ci 191162306a36Sopenharmony_cistatic struct clk_branch cam_cc_ife_0_clk = { 191262306a36Sopenharmony_ci .halt_reg = 0x11030, 191362306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 191462306a36Sopenharmony_ci .clkr = { 191562306a36Sopenharmony_ci .enable_reg = 0x11030, 191662306a36Sopenharmony_ci .enable_mask = BIT(0), 191762306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 191862306a36Sopenharmony_ci .name = "cam_cc_ife_0_clk", 191962306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 192062306a36Sopenharmony_ci &cam_cc_ife_0_clk_src.clkr.hw, 192162306a36Sopenharmony_ci }, 192262306a36Sopenharmony_ci .num_parents = 1, 192362306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 192462306a36Sopenharmony_ci .ops = &clk_branch2_ops, 192562306a36Sopenharmony_ci }, 192662306a36Sopenharmony_ci }, 192762306a36Sopenharmony_ci}; 192862306a36Sopenharmony_ci 192962306a36Sopenharmony_cistatic struct clk_branch cam_cc_ife_0_dsp_clk = { 193062306a36Sopenharmony_ci .halt_reg = 0x1103c, 193162306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 193262306a36Sopenharmony_ci .clkr = { 193362306a36Sopenharmony_ci .enable_reg = 0x1103c, 193462306a36Sopenharmony_ci .enable_mask = BIT(0), 193562306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 193662306a36Sopenharmony_ci .name = "cam_cc_ife_0_dsp_clk", 193762306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 193862306a36Sopenharmony_ci &cam_cc_ife_0_clk_src.clkr.hw, 193962306a36Sopenharmony_ci }, 194062306a36Sopenharmony_ci .num_parents = 1, 194162306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 194262306a36Sopenharmony_ci .ops = &clk_branch2_ops, 194362306a36Sopenharmony_ci }, 194462306a36Sopenharmony_ci }, 194562306a36Sopenharmony_ci}; 194662306a36Sopenharmony_ci 194762306a36Sopenharmony_cistatic struct clk_branch cam_cc_ife_0_fast_ahb_clk = { 194862306a36Sopenharmony_ci .halt_reg = 0x11048, 194962306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 195062306a36Sopenharmony_ci .clkr = { 195162306a36Sopenharmony_ci .enable_reg = 0x11048, 195262306a36Sopenharmony_ci .enable_mask = BIT(0), 195362306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 195462306a36Sopenharmony_ci .name = "cam_cc_ife_0_fast_ahb_clk", 195562306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 195662306a36Sopenharmony_ci &cam_cc_fast_ahb_clk_src.clkr.hw, 195762306a36Sopenharmony_ci }, 195862306a36Sopenharmony_ci .num_parents = 1, 195962306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 196062306a36Sopenharmony_ci .ops = &clk_branch2_ops, 196162306a36Sopenharmony_ci }, 196262306a36Sopenharmony_ci }, 196362306a36Sopenharmony_ci}; 196462306a36Sopenharmony_ci 196562306a36Sopenharmony_cistatic struct clk_branch cam_cc_ife_1_clk = { 196662306a36Sopenharmony_ci .halt_reg = 0x12030, 196762306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 196862306a36Sopenharmony_ci .clkr = { 196962306a36Sopenharmony_ci .enable_reg = 0x12030, 197062306a36Sopenharmony_ci .enable_mask = BIT(0), 197162306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 197262306a36Sopenharmony_ci .name = "cam_cc_ife_1_clk", 197362306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 197462306a36Sopenharmony_ci &cam_cc_ife_1_clk_src.clkr.hw, 197562306a36Sopenharmony_ci }, 197662306a36Sopenharmony_ci .num_parents = 1, 197762306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 197862306a36Sopenharmony_ci .ops = &clk_branch2_ops, 197962306a36Sopenharmony_ci }, 198062306a36Sopenharmony_ci }, 198162306a36Sopenharmony_ci}; 198262306a36Sopenharmony_ci 198362306a36Sopenharmony_cistatic struct clk_branch cam_cc_ife_1_dsp_clk = { 198462306a36Sopenharmony_ci .halt_reg = 0x1203c, 198562306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 198662306a36Sopenharmony_ci .clkr = { 198762306a36Sopenharmony_ci .enable_reg = 0x1203c, 198862306a36Sopenharmony_ci .enable_mask = BIT(0), 198962306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 199062306a36Sopenharmony_ci .name = "cam_cc_ife_1_dsp_clk", 199162306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 199262306a36Sopenharmony_ci &cam_cc_ife_1_clk_src.clkr.hw, 199362306a36Sopenharmony_ci }, 199462306a36Sopenharmony_ci .num_parents = 1, 199562306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 199662306a36Sopenharmony_ci .ops = &clk_branch2_ops, 199762306a36Sopenharmony_ci }, 199862306a36Sopenharmony_ci }, 199962306a36Sopenharmony_ci}; 200062306a36Sopenharmony_ci 200162306a36Sopenharmony_cistatic struct clk_branch cam_cc_ife_1_fast_ahb_clk = { 200262306a36Sopenharmony_ci .halt_reg = 0x12048, 200362306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 200462306a36Sopenharmony_ci .clkr = { 200562306a36Sopenharmony_ci .enable_reg = 0x12048, 200662306a36Sopenharmony_ci .enable_mask = BIT(0), 200762306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 200862306a36Sopenharmony_ci .name = "cam_cc_ife_1_fast_ahb_clk", 200962306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 201062306a36Sopenharmony_ci &cam_cc_fast_ahb_clk_src.clkr.hw, 201162306a36Sopenharmony_ci }, 201262306a36Sopenharmony_ci .num_parents = 1, 201362306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 201462306a36Sopenharmony_ci .ops = &clk_branch2_ops, 201562306a36Sopenharmony_ci }, 201662306a36Sopenharmony_ci }, 201762306a36Sopenharmony_ci}; 201862306a36Sopenharmony_ci 201962306a36Sopenharmony_cistatic struct clk_branch cam_cc_ife_2_clk = { 202062306a36Sopenharmony_ci .halt_reg = 0x1207c, 202162306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 202262306a36Sopenharmony_ci .clkr = { 202362306a36Sopenharmony_ci .enable_reg = 0x1207c, 202462306a36Sopenharmony_ci .enable_mask = BIT(0), 202562306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 202662306a36Sopenharmony_ci .name = "cam_cc_ife_2_clk", 202762306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 202862306a36Sopenharmony_ci &cam_cc_ife_2_clk_src.clkr.hw, 202962306a36Sopenharmony_ci }, 203062306a36Sopenharmony_ci .num_parents = 1, 203162306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 203262306a36Sopenharmony_ci .ops = &clk_branch2_ops, 203362306a36Sopenharmony_ci }, 203462306a36Sopenharmony_ci }, 203562306a36Sopenharmony_ci}; 203662306a36Sopenharmony_ci 203762306a36Sopenharmony_cistatic struct clk_branch cam_cc_ife_2_dsp_clk = { 203862306a36Sopenharmony_ci .halt_reg = 0x12088, 203962306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 204062306a36Sopenharmony_ci .clkr = { 204162306a36Sopenharmony_ci .enable_reg = 0x12088, 204262306a36Sopenharmony_ci .enable_mask = BIT(0), 204362306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 204462306a36Sopenharmony_ci .name = "cam_cc_ife_2_dsp_clk", 204562306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 204662306a36Sopenharmony_ci &cam_cc_ife_2_clk_src.clkr.hw, 204762306a36Sopenharmony_ci }, 204862306a36Sopenharmony_ci .num_parents = 1, 204962306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 205062306a36Sopenharmony_ci .ops = &clk_branch2_ops, 205162306a36Sopenharmony_ci }, 205262306a36Sopenharmony_ci }, 205362306a36Sopenharmony_ci}; 205462306a36Sopenharmony_ci 205562306a36Sopenharmony_cistatic struct clk_branch cam_cc_ife_2_fast_ahb_clk = { 205662306a36Sopenharmony_ci .halt_reg = 0x12094, 205762306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 205862306a36Sopenharmony_ci .clkr = { 205962306a36Sopenharmony_ci .enable_reg = 0x12094, 206062306a36Sopenharmony_ci .enable_mask = BIT(0), 206162306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 206262306a36Sopenharmony_ci .name = "cam_cc_ife_2_fast_ahb_clk", 206362306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 206462306a36Sopenharmony_ci &cam_cc_fast_ahb_clk_src.clkr.hw, 206562306a36Sopenharmony_ci }, 206662306a36Sopenharmony_ci .num_parents = 1, 206762306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 206862306a36Sopenharmony_ci .ops = &clk_branch2_ops, 206962306a36Sopenharmony_ci }, 207062306a36Sopenharmony_ci }, 207162306a36Sopenharmony_ci}; 207262306a36Sopenharmony_ci 207362306a36Sopenharmony_cistatic struct clk_branch cam_cc_ife_lite_ahb_clk = { 207462306a36Sopenharmony_ci .halt_reg = 0x13048, 207562306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 207662306a36Sopenharmony_ci .clkr = { 207762306a36Sopenharmony_ci .enable_reg = 0x13048, 207862306a36Sopenharmony_ci .enable_mask = BIT(0), 207962306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 208062306a36Sopenharmony_ci .name = "cam_cc_ife_lite_ahb_clk", 208162306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 208262306a36Sopenharmony_ci &cam_cc_slow_ahb_clk_src.clkr.hw, 208362306a36Sopenharmony_ci }, 208462306a36Sopenharmony_ci .num_parents = 1, 208562306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 208662306a36Sopenharmony_ci .ops = &clk_branch2_ops, 208762306a36Sopenharmony_ci }, 208862306a36Sopenharmony_ci }, 208962306a36Sopenharmony_ci}; 209062306a36Sopenharmony_ci 209162306a36Sopenharmony_cistatic struct clk_branch cam_cc_ife_lite_clk = { 209262306a36Sopenharmony_ci .halt_reg = 0x13018, 209362306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 209462306a36Sopenharmony_ci .clkr = { 209562306a36Sopenharmony_ci .enable_reg = 0x13018, 209662306a36Sopenharmony_ci .enable_mask = BIT(0), 209762306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 209862306a36Sopenharmony_ci .name = "cam_cc_ife_lite_clk", 209962306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 210062306a36Sopenharmony_ci &cam_cc_ife_lite_clk_src.clkr.hw, 210162306a36Sopenharmony_ci }, 210262306a36Sopenharmony_ci .num_parents = 1, 210362306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 210462306a36Sopenharmony_ci .ops = &clk_branch2_ops, 210562306a36Sopenharmony_ci }, 210662306a36Sopenharmony_ci }, 210762306a36Sopenharmony_ci}; 210862306a36Sopenharmony_ci 210962306a36Sopenharmony_cistatic struct clk_branch cam_cc_ife_lite_cphy_rx_clk = { 211062306a36Sopenharmony_ci .halt_reg = 0x13044, 211162306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 211262306a36Sopenharmony_ci .clkr = { 211362306a36Sopenharmony_ci .enable_reg = 0x13044, 211462306a36Sopenharmony_ci .enable_mask = BIT(0), 211562306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 211662306a36Sopenharmony_ci .name = "cam_cc_ife_lite_cphy_rx_clk", 211762306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 211862306a36Sopenharmony_ci &cam_cc_cphy_rx_clk_src.clkr.hw, 211962306a36Sopenharmony_ci }, 212062306a36Sopenharmony_ci .num_parents = 1, 212162306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 212262306a36Sopenharmony_ci .ops = &clk_branch2_ops, 212362306a36Sopenharmony_ci }, 212462306a36Sopenharmony_ci }, 212562306a36Sopenharmony_ci}; 212662306a36Sopenharmony_ci 212762306a36Sopenharmony_cistatic struct clk_branch cam_cc_ife_lite_csid_clk = { 212862306a36Sopenharmony_ci .halt_reg = 0x1303c, 212962306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 213062306a36Sopenharmony_ci .clkr = { 213162306a36Sopenharmony_ci .enable_reg = 0x1303c, 213262306a36Sopenharmony_ci .enable_mask = BIT(0), 213362306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 213462306a36Sopenharmony_ci .name = "cam_cc_ife_lite_csid_clk", 213562306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 213662306a36Sopenharmony_ci &cam_cc_ife_lite_csid_clk_src.clkr.hw, 213762306a36Sopenharmony_ci }, 213862306a36Sopenharmony_ci .num_parents = 1, 213962306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 214062306a36Sopenharmony_ci .ops = &clk_branch2_ops, 214162306a36Sopenharmony_ci }, 214262306a36Sopenharmony_ci }, 214362306a36Sopenharmony_ci}; 214462306a36Sopenharmony_ci 214562306a36Sopenharmony_cistatic struct clk_branch cam_cc_ipe_nps_ahb_clk = { 214662306a36Sopenharmony_ci .halt_reg = 0x100c0, 214762306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 214862306a36Sopenharmony_ci .clkr = { 214962306a36Sopenharmony_ci .enable_reg = 0x100c0, 215062306a36Sopenharmony_ci .enable_mask = BIT(0), 215162306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 215262306a36Sopenharmony_ci .name = "cam_cc_ipe_nps_ahb_clk", 215362306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 215462306a36Sopenharmony_ci &cam_cc_slow_ahb_clk_src.clkr.hw, 215562306a36Sopenharmony_ci }, 215662306a36Sopenharmony_ci .num_parents = 1, 215762306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 215862306a36Sopenharmony_ci .ops = &clk_branch2_ops, 215962306a36Sopenharmony_ci }, 216062306a36Sopenharmony_ci }, 216162306a36Sopenharmony_ci}; 216262306a36Sopenharmony_ci 216362306a36Sopenharmony_cistatic struct clk_branch cam_cc_ipe_nps_clk = { 216462306a36Sopenharmony_ci .halt_reg = 0x100a4, 216562306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 216662306a36Sopenharmony_ci .clkr = { 216762306a36Sopenharmony_ci .enable_reg = 0x100a4, 216862306a36Sopenharmony_ci .enable_mask = BIT(0), 216962306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 217062306a36Sopenharmony_ci .name = "cam_cc_ipe_nps_clk", 217162306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 217262306a36Sopenharmony_ci &cam_cc_ipe_nps_clk_src.clkr.hw, 217362306a36Sopenharmony_ci }, 217462306a36Sopenharmony_ci .num_parents = 1, 217562306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 217662306a36Sopenharmony_ci .ops = &clk_branch2_ops, 217762306a36Sopenharmony_ci }, 217862306a36Sopenharmony_ci }, 217962306a36Sopenharmony_ci}; 218062306a36Sopenharmony_ci 218162306a36Sopenharmony_cistatic struct clk_branch cam_cc_ipe_nps_fast_ahb_clk = { 218262306a36Sopenharmony_ci .halt_reg = 0x100c4, 218362306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 218462306a36Sopenharmony_ci .clkr = { 218562306a36Sopenharmony_ci .enable_reg = 0x100c4, 218662306a36Sopenharmony_ci .enable_mask = BIT(0), 218762306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 218862306a36Sopenharmony_ci .name = "cam_cc_ipe_nps_fast_ahb_clk", 218962306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 219062306a36Sopenharmony_ci &cam_cc_fast_ahb_clk_src.clkr.hw, 219162306a36Sopenharmony_ci }, 219262306a36Sopenharmony_ci .num_parents = 1, 219362306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 219462306a36Sopenharmony_ci .ops = &clk_branch2_ops, 219562306a36Sopenharmony_ci }, 219662306a36Sopenharmony_ci }, 219762306a36Sopenharmony_ci}; 219862306a36Sopenharmony_ci 219962306a36Sopenharmony_cistatic struct clk_branch cam_cc_ipe_pps_clk = { 220062306a36Sopenharmony_ci .halt_reg = 0x100b0, 220162306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 220262306a36Sopenharmony_ci .clkr = { 220362306a36Sopenharmony_ci .enable_reg = 0x100b0, 220462306a36Sopenharmony_ci .enable_mask = BIT(0), 220562306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 220662306a36Sopenharmony_ci .name = "cam_cc_ipe_pps_clk", 220762306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 220862306a36Sopenharmony_ci &cam_cc_ipe_nps_clk_src.clkr.hw, 220962306a36Sopenharmony_ci }, 221062306a36Sopenharmony_ci .num_parents = 1, 221162306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 221262306a36Sopenharmony_ci .ops = &clk_branch2_ops, 221362306a36Sopenharmony_ci }, 221462306a36Sopenharmony_ci }, 221562306a36Sopenharmony_ci}; 221662306a36Sopenharmony_ci 221762306a36Sopenharmony_cistatic struct clk_branch cam_cc_ipe_pps_fast_ahb_clk = { 221862306a36Sopenharmony_ci .halt_reg = 0x100c8, 221962306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 222062306a36Sopenharmony_ci .clkr = { 222162306a36Sopenharmony_ci .enable_reg = 0x100c8, 222262306a36Sopenharmony_ci .enable_mask = BIT(0), 222362306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 222462306a36Sopenharmony_ci .name = "cam_cc_ipe_pps_fast_ahb_clk", 222562306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 222662306a36Sopenharmony_ci &cam_cc_fast_ahb_clk_src.clkr.hw, 222762306a36Sopenharmony_ci }, 222862306a36Sopenharmony_ci .num_parents = 1, 222962306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 223062306a36Sopenharmony_ci .ops = &clk_branch2_ops, 223162306a36Sopenharmony_ci }, 223262306a36Sopenharmony_ci }, 223362306a36Sopenharmony_ci}; 223462306a36Sopenharmony_ci 223562306a36Sopenharmony_cistatic struct clk_branch cam_cc_jpeg_clk = { 223662306a36Sopenharmony_ci .halt_reg = 0x130f4, 223762306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 223862306a36Sopenharmony_ci .clkr = { 223962306a36Sopenharmony_ci .enable_reg = 0x130f4, 224062306a36Sopenharmony_ci .enable_mask = BIT(0), 224162306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 224262306a36Sopenharmony_ci .name = "cam_cc_jpeg_clk", 224362306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 224462306a36Sopenharmony_ci &cam_cc_jpeg_clk_src.clkr.hw, 224562306a36Sopenharmony_ci }, 224662306a36Sopenharmony_ci .num_parents = 1, 224762306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 224862306a36Sopenharmony_ci .ops = &clk_branch2_ops, 224962306a36Sopenharmony_ci }, 225062306a36Sopenharmony_ci }, 225162306a36Sopenharmony_ci}; 225262306a36Sopenharmony_ci 225362306a36Sopenharmony_cistatic struct clk_branch cam_cc_mclk0_clk = { 225462306a36Sopenharmony_ci .halt_reg = 0x15018, 225562306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 225662306a36Sopenharmony_ci .clkr = { 225762306a36Sopenharmony_ci .enable_reg = 0x15018, 225862306a36Sopenharmony_ci .enable_mask = BIT(0), 225962306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 226062306a36Sopenharmony_ci .name = "cam_cc_mclk0_clk", 226162306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 226262306a36Sopenharmony_ci &cam_cc_mclk0_clk_src.clkr.hw, 226362306a36Sopenharmony_ci }, 226462306a36Sopenharmony_ci .num_parents = 1, 226562306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 226662306a36Sopenharmony_ci .ops = &clk_branch2_ops, 226762306a36Sopenharmony_ci }, 226862306a36Sopenharmony_ci }, 226962306a36Sopenharmony_ci}; 227062306a36Sopenharmony_ci 227162306a36Sopenharmony_cistatic struct clk_branch cam_cc_mclk1_clk = { 227262306a36Sopenharmony_ci .halt_reg = 0x15034, 227362306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 227462306a36Sopenharmony_ci .clkr = { 227562306a36Sopenharmony_ci .enable_reg = 0x15034, 227662306a36Sopenharmony_ci .enable_mask = BIT(0), 227762306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 227862306a36Sopenharmony_ci .name = "cam_cc_mclk1_clk", 227962306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 228062306a36Sopenharmony_ci &cam_cc_mclk1_clk_src.clkr.hw, 228162306a36Sopenharmony_ci }, 228262306a36Sopenharmony_ci .num_parents = 1, 228362306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 228462306a36Sopenharmony_ci .ops = &clk_branch2_ops, 228562306a36Sopenharmony_ci }, 228662306a36Sopenharmony_ci }, 228762306a36Sopenharmony_ci}; 228862306a36Sopenharmony_ci 228962306a36Sopenharmony_cistatic struct clk_branch cam_cc_mclk2_clk = { 229062306a36Sopenharmony_ci .halt_reg = 0x15050, 229162306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 229262306a36Sopenharmony_ci .clkr = { 229362306a36Sopenharmony_ci .enable_reg = 0x15050, 229462306a36Sopenharmony_ci .enable_mask = BIT(0), 229562306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 229662306a36Sopenharmony_ci .name = "cam_cc_mclk2_clk", 229762306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 229862306a36Sopenharmony_ci &cam_cc_mclk2_clk_src.clkr.hw, 229962306a36Sopenharmony_ci }, 230062306a36Sopenharmony_ci .num_parents = 1, 230162306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 230262306a36Sopenharmony_ci .ops = &clk_branch2_ops, 230362306a36Sopenharmony_ci }, 230462306a36Sopenharmony_ci }, 230562306a36Sopenharmony_ci}; 230662306a36Sopenharmony_ci 230762306a36Sopenharmony_cistatic struct clk_branch cam_cc_mclk3_clk = { 230862306a36Sopenharmony_ci .halt_reg = 0x1506c, 230962306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 231062306a36Sopenharmony_ci .clkr = { 231162306a36Sopenharmony_ci .enable_reg = 0x1506c, 231262306a36Sopenharmony_ci .enable_mask = BIT(0), 231362306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 231462306a36Sopenharmony_ci .name = "cam_cc_mclk3_clk", 231562306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 231662306a36Sopenharmony_ci &cam_cc_mclk3_clk_src.clkr.hw, 231762306a36Sopenharmony_ci }, 231862306a36Sopenharmony_ci .num_parents = 1, 231962306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 232062306a36Sopenharmony_ci .ops = &clk_branch2_ops, 232162306a36Sopenharmony_ci }, 232262306a36Sopenharmony_ci }, 232362306a36Sopenharmony_ci}; 232462306a36Sopenharmony_ci 232562306a36Sopenharmony_cistatic struct clk_branch cam_cc_mclk4_clk = { 232662306a36Sopenharmony_ci .halt_reg = 0x15088, 232762306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 232862306a36Sopenharmony_ci .clkr = { 232962306a36Sopenharmony_ci .enable_reg = 0x15088, 233062306a36Sopenharmony_ci .enable_mask = BIT(0), 233162306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 233262306a36Sopenharmony_ci .name = "cam_cc_mclk4_clk", 233362306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 233462306a36Sopenharmony_ci &cam_cc_mclk4_clk_src.clkr.hw, 233562306a36Sopenharmony_ci }, 233662306a36Sopenharmony_ci .num_parents = 1, 233762306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 233862306a36Sopenharmony_ci .ops = &clk_branch2_ops, 233962306a36Sopenharmony_ci }, 234062306a36Sopenharmony_ci }, 234162306a36Sopenharmony_ci}; 234262306a36Sopenharmony_ci 234362306a36Sopenharmony_cistatic struct clk_branch cam_cc_mclk5_clk = { 234462306a36Sopenharmony_ci .halt_reg = 0x150a4, 234562306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 234662306a36Sopenharmony_ci .clkr = { 234762306a36Sopenharmony_ci .enable_reg = 0x150a4, 234862306a36Sopenharmony_ci .enable_mask = BIT(0), 234962306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 235062306a36Sopenharmony_ci .name = "cam_cc_mclk5_clk", 235162306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 235262306a36Sopenharmony_ci &cam_cc_mclk5_clk_src.clkr.hw, 235362306a36Sopenharmony_ci }, 235462306a36Sopenharmony_ci .num_parents = 1, 235562306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 235662306a36Sopenharmony_ci .ops = &clk_branch2_ops, 235762306a36Sopenharmony_ci }, 235862306a36Sopenharmony_ci }, 235962306a36Sopenharmony_ci}; 236062306a36Sopenharmony_ci 236162306a36Sopenharmony_cistatic struct clk_branch cam_cc_mclk6_clk = { 236262306a36Sopenharmony_ci .halt_reg = 0x150c0, 236362306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 236462306a36Sopenharmony_ci .clkr = { 236562306a36Sopenharmony_ci .enable_reg = 0x150c0, 236662306a36Sopenharmony_ci .enable_mask = BIT(0), 236762306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 236862306a36Sopenharmony_ci .name = "cam_cc_mclk6_clk", 236962306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 237062306a36Sopenharmony_ci &cam_cc_mclk6_clk_src.clkr.hw, 237162306a36Sopenharmony_ci }, 237262306a36Sopenharmony_ci .num_parents = 1, 237362306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 237462306a36Sopenharmony_ci .ops = &clk_branch2_ops, 237562306a36Sopenharmony_ci }, 237662306a36Sopenharmony_ci }, 237762306a36Sopenharmony_ci}; 237862306a36Sopenharmony_ci 237962306a36Sopenharmony_cistatic struct clk_branch cam_cc_mclk7_clk = { 238062306a36Sopenharmony_ci .halt_reg = 0x150dc, 238162306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 238262306a36Sopenharmony_ci .clkr = { 238362306a36Sopenharmony_ci .enable_reg = 0x150dc, 238462306a36Sopenharmony_ci .enable_mask = BIT(0), 238562306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 238662306a36Sopenharmony_ci .name = "cam_cc_mclk7_clk", 238762306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 238862306a36Sopenharmony_ci &cam_cc_mclk7_clk_src.clkr.hw, 238962306a36Sopenharmony_ci }, 239062306a36Sopenharmony_ci .num_parents = 1, 239162306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 239262306a36Sopenharmony_ci .ops = &clk_branch2_ops, 239362306a36Sopenharmony_ci }, 239462306a36Sopenharmony_ci }, 239562306a36Sopenharmony_ci}; 239662306a36Sopenharmony_ci 239762306a36Sopenharmony_cistatic struct clk_branch cam_cc_qdss_debug_clk = { 239862306a36Sopenharmony_ci .halt_reg = 0x131d4, 239962306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 240062306a36Sopenharmony_ci .clkr = { 240162306a36Sopenharmony_ci .enable_reg = 0x131d4, 240262306a36Sopenharmony_ci .enable_mask = BIT(0), 240362306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 240462306a36Sopenharmony_ci .name = "cam_cc_qdss_debug_clk", 240562306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 240662306a36Sopenharmony_ci &cam_cc_qdss_debug_clk_src.clkr.hw, 240762306a36Sopenharmony_ci }, 240862306a36Sopenharmony_ci .num_parents = 1, 240962306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 241062306a36Sopenharmony_ci .ops = &clk_branch2_ops, 241162306a36Sopenharmony_ci }, 241262306a36Sopenharmony_ci }, 241362306a36Sopenharmony_ci}; 241462306a36Sopenharmony_ci 241562306a36Sopenharmony_cistatic struct clk_branch cam_cc_qdss_debug_xo_clk = { 241662306a36Sopenharmony_ci .halt_reg = 0x131d8, 241762306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 241862306a36Sopenharmony_ci .clkr = { 241962306a36Sopenharmony_ci .enable_reg = 0x131d8, 242062306a36Sopenharmony_ci .enable_mask = BIT(0), 242162306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 242262306a36Sopenharmony_ci .name = "cam_cc_qdss_debug_xo_clk", 242362306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 242462306a36Sopenharmony_ci &cam_cc_xo_clk_src.clkr.hw, 242562306a36Sopenharmony_ci }, 242662306a36Sopenharmony_ci .num_parents = 1, 242762306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 242862306a36Sopenharmony_ci .ops = &clk_branch2_ops, 242962306a36Sopenharmony_ci }, 243062306a36Sopenharmony_ci }, 243162306a36Sopenharmony_ci}; 243262306a36Sopenharmony_ci 243362306a36Sopenharmony_cistatic struct clk_branch cam_cc_sbi_ahb_clk = { 243462306a36Sopenharmony_ci .halt_reg = 0x100f0, 243562306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 243662306a36Sopenharmony_ci .clkr = { 243762306a36Sopenharmony_ci .enable_reg = 0x100f0, 243862306a36Sopenharmony_ci .enable_mask = BIT(0), 243962306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 244062306a36Sopenharmony_ci .name = "cam_cc_sbi_ahb_clk", 244162306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 244262306a36Sopenharmony_ci &cam_cc_slow_ahb_clk_src.clkr.hw, 244362306a36Sopenharmony_ci }, 244462306a36Sopenharmony_ci .num_parents = 1, 244562306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 244662306a36Sopenharmony_ci .ops = &clk_branch2_ops, 244762306a36Sopenharmony_ci }, 244862306a36Sopenharmony_ci }, 244962306a36Sopenharmony_ci}; 245062306a36Sopenharmony_ci 245162306a36Sopenharmony_cistatic struct clk_branch cam_cc_sbi_clk = { 245262306a36Sopenharmony_ci .halt_reg = 0x100e4, 245362306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 245462306a36Sopenharmony_ci .clkr = { 245562306a36Sopenharmony_ci .enable_reg = 0x100e4, 245662306a36Sopenharmony_ci .enable_mask = BIT(0), 245762306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 245862306a36Sopenharmony_ci .name = "cam_cc_sbi_clk", 245962306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 246062306a36Sopenharmony_ci &cam_cc_ife_0_clk_src.clkr.hw, 246162306a36Sopenharmony_ci }, 246262306a36Sopenharmony_ci .num_parents = 1, 246362306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 246462306a36Sopenharmony_ci .ops = &clk_branch2_ops, 246562306a36Sopenharmony_ci }, 246662306a36Sopenharmony_ci }, 246762306a36Sopenharmony_ci}; 246862306a36Sopenharmony_ci 246962306a36Sopenharmony_cistatic struct clk_branch cam_cc_sfe_0_clk = { 247062306a36Sopenharmony_ci .halt_reg = 0x1307c, 247162306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 247262306a36Sopenharmony_ci .clkr = { 247362306a36Sopenharmony_ci .enable_reg = 0x1307c, 247462306a36Sopenharmony_ci .enable_mask = BIT(0), 247562306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 247662306a36Sopenharmony_ci .name = "cam_cc_sfe_0_clk", 247762306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 247862306a36Sopenharmony_ci &cam_cc_sfe_0_clk_src.clkr.hw, 247962306a36Sopenharmony_ci }, 248062306a36Sopenharmony_ci .num_parents = 1, 248162306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 248262306a36Sopenharmony_ci .ops = &clk_branch2_ops, 248362306a36Sopenharmony_ci }, 248462306a36Sopenharmony_ci }, 248562306a36Sopenharmony_ci}; 248662306a36Sopenharmony_ci 248762306a36Sopenharmony_cistatic struct clk_branch cam_cc_sfe_0_fast_ahb_clk = { 248862306a36Sopenharmony_ci .halt_reg = 0x13090, 248962306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 249062306a36Sopenharmony_ci .clkr = { 249162306a36Sopenharmony_ci .enable_reg = 0x13090, 249262306a36Sopenharmony_ci .enable_mask = BIT(0), 249362306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 249462306a36Sopenharmony_ci .name = "cam_cc_sfe_0_fast_ahb_clk", 249562306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 249662306a36Sopenharmony_ci &cam_cc_fast_ahb_clk_src.clkr.hw, 249762306a36Sopenharmony_ci }, 249862306a36Sopenharmony_ci .num_parents = 1, 249962306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 250062306a36Sopenharmony_ci .ops = &clk_branch2_ops, 250162306a36Sopenharmony_ci }, 250262306a36Sopenharmony_ci }, 250362306a36Sopenharmony_ci}; 250462306a36Sopenharmony_ci 250562306a36Sopenharmony_cistatic struct clk_branch cam_cc_sfe_1_clk = { 250662306a36Sopenharmony_ci .halt_reg = 0x130c4, 250762306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 250862306a36Sopenharmony_ci .clkr = { 250962306a36Sopenharmony_ci .enable_reg = 0x130c4, 251062306a36Sopenharmony_ci .enable_mask = BIT(0), 251162306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 251262306a36Sopenharmony_ci .name = "cam_cc_sfe_1_clk", 251362306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 251462306a36Sopenharmony_ci &cam_cc_sfe_1_clk_src.clkr.hw, 251562306a36Sopenharmony_ci }, 251662306a36Sopenharmony_ci .num_parents = 1, 251762306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 251862306a36Sopenharmony_ci .ops = &clk_branch2_ops, 251962306a36Sopenharmony_ci }, 252062306a36Sopenharmony_ci }, 252162306a36Sopenharmony_ci}; 252262306a36Sopenharmony_ci 252362306a36Sopenharmony_cistatic struct clk_branch cam_cc_sfe_1_fast_ahb_clk = { 252462306a36Sopenharmony_ci .halt_reg = 0x130d8, 252562306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 252662306a36Sopenharmony_ci .clkr = { 252762306a36Sopenharmony_ci .enable_reg = 0x130d8, 252862306a36Sopenharmony_ci .enable_mask = BIT(0), 252962306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 253062306a36Sopenharmony_ci .name = "cam_cc_sfe_1_fast_ahb_clk", 253162306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 253262306a36Sopenharmony_ci &cam_cc_fast_ahb_clk_src.clkr.hw, 253362306a36Sopenharmony_ci }, 253462306a36Sopenharmony_ci .num_parents = 1, 253562306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 253662306a36Sopenharmony_ci .ops = &clk_branch2_ops, 253762306a36Sopenharmony_ci }, 253862306a36Sopenharmony_ci }, 253962306a36Sopenharmony_ci}; 254062306a36Sopenharmony_ci 254162306a36Sopenharmony_cistatic struct clk_branch cam_cc_sleep_clk = { 254262306a36Sopenharmony_ci .halt_reg = 0x13228, 254362306a36Sopenharmony_ci .halt_check = BRANCH_HALT, 254462306a36Sopenharmony_ci .clkr = { 254562306a36Sopenharmony_ci .enable_reg = 0x13228, 254662306a36Sopenharmony_ci .enable_mask = BIT(0), 254762306a36Sopenharmony_ci .hw.init = &(const struct clk_init_data) { 254862306a36Sopenharmony_ci .name = "cam_cc_sleep_clk", 254962306a36Sopenharmony_ci .parent_hws = (const struct clk_hw*[]) { 255062306a36Sopenharmony_ci &cam_cc_sleep_clk_src.clkr.hw, 255162306a36Sopenharmony_ci }, 255262306a36Sopenharmony_ci .num_parents = 1, 255362306a36Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 255462306a36Sopenharmony_ci .ops = &clk_branch2_ops, 255562306a36Sopenharmony_ci }, 255662306a36Sopenharmony_ci }, 255762306a36Sopenharmony_ci}; 255862306a36Sopenharmony_ci 255962306a36Sopenharmony_cistatic struct clk_regmap *cam_cc_sm8450_clocks[] = { 256062306a36Sopenharmony_ci [CAM_CC_BPS_AHB_CLK] = &cam_cc_bps_ahb_clk.clkr, 256162306a36Sopenharmony_ci [CAM_CC_BPS_CLK] = &cam_cc_bps_clk.clkr, 256262306a36Sopenharmony_ci [CAM_CC_BPS_CLK_SRC] = &cam_cc_bps_clk_src.clkr, 256362306a36Sopenharmony_ci [CAM_CC_BPS_FAST_AHB_CLK] = &cam_cc_bps_fast_ahb_clk.clkr, 256462306a36Sopenharmony_ci [CAM_CC_CAMNOC_AXI_CLK] = &cam_cc_camnoc_axi_clk.clkr, 256562306a36Sopenharmony_ci [CAM_CC_CAMNOC_AXI_CLK_SRC] = &cam_cc_camnoc_axi_clk_src.clkr, 256662306a36Sopenharmony_ci [CAM_CC_CAMNOC_DCD_XO_CLK] = &cam_cc_camnoc_dcd_xo_clk.clkr, 256762306a36Sopenharmony_ci [CAM_CC_CCI_0_CLK] = &cam_cc_cci_0_clk.clkr, 256862306a36Sopenharmony_ci [CAM_CC_CCI_0_CLK_SRC] = &cam_cc_cci_0_clk_src.clkr, 256962306a36Sopenharmony_ci [CAM_CC_CCI_1_CLK] = &cam_cc_cci_1_clk.clkr, 257062306a36Sopenharmony_ci [CAM_CC_CCI_1_CLK_SRC] = &cam_cc_cci_1_clk_src.clkr, 257162306a36Sopenharmony_ci [CAM_CC_CORE_AHB_CLK] = &cam_cc_core_ahb_clk.clkr, 257262306a36Sopenharmony_ci [CAM_CC_CPAS_AHB_CLK] = &cam_cc_cpas_ahb_clk.clkr, 257362306a36Sopenharmony_ci [CAM_CC_CPAS_BPS_CLK] = &cam_cc_cpas_bps_clk.clkr, 257462306a36Sopenharmony_ci [CAM_CC_CPAS_FAST_AHB_CLK] = &cam_cc_cpas_fast_ahb_clk.clkr, 257562306a36Sopenharmony_ci [CAM_CC_CPAS_IFE_0_CLK] = &cam_cc_cpas_ife_0_clk.clkr, 257662306a36Sopenharmony_ci [CAM_CC_CPAS_IFE_1_CLK] = &cam_cc_cpas_ife_1_clk.clkr, 257762306a36Sopenharmony_ci [CAM_CC_CPAS_IFE_2_CLK] = &cam_cc_cpas_ife_2_clk.clkr, 257862306a36Sopenharmony_ci [CAM_CC_CPAS_IFE_LITE_CLK] = &cam_cc_cpas_ife_lite_clk.clkr, 257962306a36Sopenharmony_ci [CAM_CC_CPAS_IPE_NPS_CLK] = &cam_cc_cpas_ipe_nps_clk.clkr, 258062306a36Sopenharmony_ci [CAM_CC_CPAS_SBI_CLK] = &cam_cc_cpas_sbi_clk.clkr, 258162306a36Sopenharmony_ci [CAM_CC_CPAS_SFE_0_CLK] = &cam_cc_cpas_sfe_0_clk.clkr, 258262306a36Sopenharmony_ci [CAM_CC_CPAS_SFE_1_CLK] = &cam_cc_cpas_sfe_1_clk.clkr, 258362306a36Sopenharmony_ci [CAM_CC_CPHY_RX_CLK_SRC] = &cam_cc_cphy_rx_clk_src.clkr, 258462306a36Sopenharmony_ci [CAM_CC_CSI0PHYTIMER_CLK] = &cam_cc_csi0phytimer_clk.clkr, 258562306a36Sopenharmony_ci [CAM_CC_CSI0PHYTIMER_CLK_SRC] = &cam_cc_csi0phytimer_clk_src.clkr, 258662306a36Sopenharmony_ci [CAM_CC_CSI1PHYTIMER_CLK] = &cam_cc_csi1phytimer_clk.clkr, 258762306a36Sopenharmony_ci [CAM_CC_CSI1PHYTIMER_CLK_SRC] = &cam_cc_csi1phytimer_clk_src.clkr, 258862306a36Sopenharmony_ci [CAM_CC_CSI2PHYTIMER_CLK] = &cam_cc_csi2phytimer_clk.clkr, 258962306a36Sopenharmony_ci [CAM_CC_CSI2PHYTIMER_CLK_SRC] = &cam_cc_csi2phytimer_clk_src.clkr, 259062306a36Sopenharmony_ci [CAM_CC_CSI3PHYTIMER_CLK] = &cam_cc_csi3phytimer_clk.clkr, 259162306a36Sopenharmony_ci [CAM_CC_CSI3PHYTIMER_CLK_SRC] = &cam_cc_csi3phytimer_clk_src.clkr, 259262306a36Sopenharmony_ci [CAM_CC_CSI4PHYTIMER_CLK] = &cam_cc_csi4phytimer_clk.clkr, 259362306a36Sopenharmony_ci [CAM_CC_CSI4PHYTIMER_CLK_SRC] = &cam_cc_csi4phytimer_clk_src.clkr, 259462306a36Sopenharmony_ci [CAM_CC_CSI5PHYTIMER_CLK] = &cam_cc_csi5phytimer_clk.clkr, 259562306a36Sopenharmony_ci [CAM_CC_CSI5PHYTIMER_CLK_SRC] = &cam_cc_csi5phytimer_clk_src.clkr, 259662306a36Sopenharmony_ci [CAM_CC_CSID_CLK] = &cam_cc_csid_clk.clkr, 259762306a36Sopenharmony_ci [CAM_CC_CSID_CLK_SRC] = &cam_cc_csid_clk_src.clkr, 259862306a36Sopenharmony_ci [CAM_CC_CSID_CSIPHY_RX_CLK] = &cam_cc_csid_csiphy_rx_clk.clkr, 259962306a36Sopenharmony_ci [CAM_CC_CSIPHY0_CLK] = &cam_cc_csiphy0_clk.clkr, 260062306a36Sopenharmony_ci [CAM_CC_CSIPHY1_CLK] = &cam_cc_csiphy1_clk.clkr, 260162306a36Sopenharmony_ci [CAM_CC_CSIPHY2_CLK] = &cam_cc_csiphy2_clk.clkr, 260262306a36Sopenharmony_ci [CAM_CC_CSIPHY3_CLK] = &cam_cc_csiphy3_clk.clkr, 260362306a36Sopenharmony_ci [CAM_CC_CSIPHY4_CLK] = &cam_cc_csiphy4_clk.clkr, 260462306a36Sopenharmony_ci [CAM_CC_CSIPHY5_CLK] = &cam_cc_csiphy5_clk.clkr, 260562306a36Sopenharmony_ci [CAM_CC_FAST_AHB_CLK_SRC] = &cam_cc_fast_ahb_clk_src.clkr, 260662306a36Sopenharmony_ci [CAM_CC_GDSC_CLK] = &cam_cc_gdsc_clk.clkr, 260762306a36Sopenharmony_ci [CAM_CC_ICP_AHB_CLK] = &cam_cc_icp_ahb_clk.clkr, 260862306a36Sopenharmony_ci [CAM_CC_ICP_CLK] = &cam_cc_icp_clk.clkr, 260962306a36Sopenharmony_ci [CAM_CC_ICP_CLK_SRC] = &cam_cc_icp_clk_src.clkr, 261062306a36Sopenharmony_ci [CAM_CC_IFE_0_CLK] = &cam_cc_ife_0_clk.clkr, 261162306a36Sopenharmony_ci [CAM_CC_IFE_0_CLK_SRC] = &cam_cc_ife_0_clk_src.clkr, 261262306a36Sopenharmony_ci [CAM_CC_IFE_0_DSP_CLK] = &cam_cc_ife_0_dsp_clk.clkr, 261362306a36Sopenharmony_ci [CAM_CC_IFE_0_FAST_AHB_CLK] = &cam_cc_ife_0_fast_ahb_clk.clkr, 261462306a36Sopenharmony_ci [CAM_CC_IFE_1_CLK] = &cam_cc_ife_1_clk.clkr, 261562306a36Sopenharmony_ci [CAM_CC_IFE_1_CLK_SRC] = &cam_cc_ife_1_clk_src.clkr, 261662306a36Sopenharmony_ci [CAM_CC_IFE_1_DSP_CLK] = &cam_cc_ife_1_dsp_clk.clkr, 261762306a36Sopenharmony_ci [CAM_CC_IFE_1_FAST_AHB_CLK] = &cam_cc_ife_1_fast_ahb_clk.clkr, 261862306a36Sopenharmony_ci [CAM_CC_IFE_2_CLK] = &cam_cc_ife_2_clk.clkr, 261962306a36Sopenharmony_ci [CAM_CC_IFE_2_CLK_SRC] = &cam_cc_ife_2_clk_src.clkr, 262062306a36Sopenharmony_ci [CAM_CC_IFE_2_DSP_CLK] = &cam_cc_ife_2_dsp_clk.clkr, 262162306a36Sopenharmony_ci [CAM_CC_IFE_2_FAST_AHB_CLK] = &cam_cc_ife_2_fast_ahb_clk.clkr, 262262306a36Sopenharmony_ci [CAM_CC_IFE_LITE_AHB_CLK] = &cam_cc_ife_lite_ahb_clk.clkr, 262362306a36Sopenharmony_ci [CAM_CC_IFE_LITE_CLK] = &cam_cc_ife_lite_clk.clkr, 262462306a36Sopenharmony_ci [CAM_CC_IFE_LITE_CLK_SRC] = &cam_cc_ife_lite_clk_src.clkr, 262562306a36Sopenharmony_ci [CAM_CC_IFE_LITE_CPHY_RX_CLK] = &cam_cc_ife_lite_cphy_rx_clk.clkr, 262662306a36Sopenharmony_ci [CAM_CC_IFE_LITE_CSID_CLK] = &cam_cc_ife_lite_csid_clk.clkr, 262762306a36Sopenharmony_ci [CAM_CC_IFE_LITE_CSID_CLK_SRC] = &cam_cc_ife_lite_csid_clk_src.clkr, 262862306a36Sopenharmony_ci [CAM_CC_IPE_NPS_AHB_CLK] = &cam_cc_ipe_nps_ahb_clk.clkr, 262962306a36Sopenharmony_ci [CAM_CC_IPE_NPS_CLK] = &cam_cc_ipe_nps_clk.clkr, 263062306a36Sopenharmony_ci [CAM_CC_IPE_NPS_CLK_SRC] = &cam_cc_ipe_nps_clk_src.clkr, 263162306a36Sopenharmony_ci [CAM_CC_IPE_NPS_FAST_AHB_CLK] = &cam_cc_ipe_nps_fast_ahb_clk.clkr, 263262306a36Sopenharmony_ci [CAM_CC_IPE_PPS_CLK] = &cam_cc_ipe_pps_clk.clkr, 263362306a36Sopenharmony_ci [CAM_CC_IPE_PPS_FAST_AHB_CLK] = &cam_cc_ipe_pps_fast_ahb_clk.clkr, 263462306a36Sopenharmony_ci [CAM_CC_JPEG_CLK] = &cam_cc_jpeg_clk.clkr, 263562306a36Sopenharmony_ci [CAM_CC_JPEG_CLK_SRC] = &cam_cc_jpeg_clk_src.clkr, 263662306a36Sopenharmony_ci [CAM_CC_MCLK0_CLK] = &cam_cc_mclk0_clk.clkr, 263762306a36Sopenharmony_ci [CAM_CC_MCLK0_CLK_SRC] = &cam_cc_mclk0_clk_src.clkr, 263862306a36Sopenharmony_ci [CAM_CC_MCLK1_CLK] = &cam_cc_mclk1_clk.clkr, 263962306a36Sopenharmony_ci [CAM_CC_MCLK1_CLK_SRC] = &cam_cc_mclk1_clk_src.clkr, 264062306a36Sopenharmony_ci [CAM_CC_MCLK2_CLK] = &cam_cc_mclk2_clk.clkr, 264162306a36Sopenharmony_ci [CAM_CC_MCLK2_CLK_SRC] = &cam_cc_mclk2_clk_src.clkr, 264262306a36Sopenharmony_ci [CAM_CC_MCLK3_CLK] = &cam_cc_mclk3_clk.clkr, 264362306a36Sopenharmony_ci [CAM_CC_MCLK3_CLK_SRC] = &cam_cc_mclk3_clk_src.clkr, 264462306a36Sopenharmony_ci [CAM_CC_MCLK4_CLK] = &cam_cc_mclk4_clk.clkr, 264562306a36Sopenharmony_ci [CAM_CC_MCLK4_CLK_SRC] = &cam_cc_mclk4_clk_src.clkr, 264662306a36Sopenharmony_ci [CAM_CC_MCLK5_CLK] = &cam_cc_mclk5_clk.clkr, 264762306a36Sopenharmony_ci [CAM_CC_MCLK5_CLK_SRC] = &cam_cc_mclk5_clk_src.clkr, 264862306a36Sopenharmony_ci [CAM_CC_MCLK6_CLK] = &cam_cc_mclk6_clk.clkr, 264962306a36Sopenharmony_ci [CAM_CC_MCLK6_CLK_SRC] = &cam_cc_mclk6_clk_src.clkr, 265062306a36Sopenharmony_ci [CAM_CC_MCLK7_CLK] = &cam_cc_mclk7_clk.clkr, 265162306a36Sopenharmony_ci [CAM_CC_MCLK7_CLK_SRC] = &cam_cc_mclk7_clk_src.clkr, 265262306a36Sopenharmony_ci [CAM_CC_PLL0] = &cam_cc_pll0.clkr, 265362306a36Sopenharmony_ci [CAM_CC_PLL0_OUT_EVEN] = &cam_cc_pll0_out_even.clkr, 265462306a36Sopenharmony_ci [CAM_CC_PLL0_OUT_ODD] = &cam_cc_pll0_out_odd.clkr, 265562306a36Sopenharmony_ci [CAM_CC_PLL1] = &cam_cc_pll1.clkr, 265662306a36Sopenharmony_ci [CAM_CC_PLL1_OUT_EVEN] = &cam_cc_pll1_out_even.clkr, 265762306a36Sopenharmony_ci [CAM_CC_PLL2] = &cam_cc_pll2.clkr, 265862306a36Sopenharmony_ci [CAM_CC_PLL3] = &cam_cc_pll3.clkr, 265962306a36Sopenharmony_ci [CAM_CC_PLL3_OUT_EVEN] = &cam_cc_pll3_out_even.clkr, 266062306a36Sopenharmony_ci [CAM_CC_PLL4] = &cam_cc_pll4.clkr, 266162306a36Sopenharmony_ci [CAM_CC_PLL4_OUT_EVEN] = &cam_cc_pll4_out_even.clkr, 266262306a36Sopenharmony_ci [CAM_CC_PLL5] = &cam_cc_pll5.clkr, 266362306a36Sopenharmony_ci [CAM_CC_PLL5_OUT_EVEN] = &cam_cc_pll5_out_even.clkr, 266462306a36Sopenharmony_ci [CAM_CC_PLL6] = &cam_cc_pll6.clkr, 266562306a36Sopenharmony_ci [CAM_CC_PLL6_OUT_EVEN] = &cam_cc_pll6_out_even.clkr, 266662306a36Sopenharmony_ci [CAM_CC_PLL7] = &cam_cc_pll7.clkr, 266762306a36Sopenharmony_ci [CAM_CC_PLL7_OUT_EVEN] = &cam_cc_pll7_out_even.clkr, 266862306a36Sopenharmony_ci [CAM_CC_PLL8] = &cam_cc_pll8.clkr, 266962306a36Sopenharmony_ci [CAM_CC_PLL8_OUT_EVEN] = &cam_cc_pll8_out_even.clkr, 267062306a36Sopenharmony_ci [CAM_CC_QDSS_DEBUG_CLK] = &cam_cc_qdss_debug_clk.clkr, 267162306a36Sopenharmony_ci [CAM_CC_QDSS_DEBUG_CLK_SRC] = &cam_cc_qdss_debug_clk_src.clkr, 267262306a36Sopenharmony_ci [CAM_CC_QDSS_DEBUG_XO_CLK] = &cam_cc_qdss_debug_xo_clk.clkr, 267362306a36Sopenharmony_ci [CAM_CC_SBI_AHB_CLK] = &cam_cc_sbi_ahb_clk.clkr, 267462306a36Sopenharmony_ci [CAM_CC_SBI_CLK] = &cam_cc_sbi_clk.clkr, 267562306a36Sopenharmony_ci [CAM_CC_SFE_0_CLK] = &cam_cc_sfe_0_clk.clkr, 267662306a36Sopenharmony_ci [CAM_CC_SFE_0_CLK_SRC] = &cam_cc_sfe_0_clk_src.clkr, 267762306a36Sopenharmony_ci [CAM_CC_SFE_0_FAST_AHB_CLK] = &cam_cc_sfe_0_fast_ahb_clk.clkr, 267862306a36Sopenharmony_ci [CAM_CC_SFE_1_CLK] = &cam_cc_sfe_1_clk.clkr, 267962306a36Sopenharmony_ci [CAM_CC_SFE_1_CLK_SRC] = &cam_cc_sfe_1_clk_src.clkr, 268062306a36Sopenharmony_ci [CAM_CC_SFE_1_FAST_AHB_CLK] = &cam_cc_sfe_1_fast_ahb_clk.clkr, 268162306a36Sopenharmony_ci [CAM_CC_SLEEP_CLK] = &cam_cc_sleep_clk.clkr, 268262306a36Sopenharmony_ci [CAM_CC_SLEEP_CLK_SRC] = &cam_cc_sleep_clk_src.clkr, 268362306a36Sopenharmony_ci [CAM_CC_SLOW_AHB_CLK_SRC] = &cam_cc_slow_ahb_clk_src.clkr, 268462306a36Sopenharmony_ci [CAM_CC_XO_CLK_SRC] = &cam_cc_xo_clk_src.clkr, 268562306a36Sopenharmony_ci}; 268662306a36Sopenharmony_ci 268762306a36Sopenharmony_cistatic const struct qcom_reset_map cam_cc_sm8450_resets[] = { 268862306a36Sopenharmony_ci [CAM_CC_BPS_BCR] = { 0x10000 }, 268962306a36Sopenharmony_ci [CAM_CC_ICP_BCR] = { 0x13104 }, 269062306a36Sopenharmony_ci [CAM_CC_IFE_0_BCR] = { 0x11000 }, 269162306a36Sopenharmony_ci [CAM_CC_IFE_1_BCR] = { 0x12000 }, 269262306a36Sopenharmony_ci [CAM_CC_IFE_2_BCR] = { 0x1204c }, 269362306a36Sopenharmony_ci [CAM_CC_IPE_0_BCR] = { 0x10074 }, 269462306a36Sopenharmony_ci [CAM_CC_QDSS_DEBUG_BCR] = { 0x131b8 }, 269562306a36Sopenharmony_ci [CAM_CC_SBI_BCR] = { 0x100cc }, 269662306a36Sopenharmony_ci [CAM_CC_SFE_0_BCR] = { 0x1304c }, 269762306a36Sopenharmony_ci [CAM_CC_SFE_1_BCR] = { 0x13094 }, 269862306a36Sopenharmony_ci}; 269962306a36Sopenharmony_ci 270062306a36Sopenharmony_cistatic const struct regmap_config cam_cc_sm8450_regmap_config = { 270162306a36Sopenharmony_ci .reg_bits = 32, 270262306a36Sopenharmony_ci .reg_stride = 4, 270362306a36Sopenharmony_ci .val_bits = 32, 270462306a36Sopenharmony_ci .max_register = 0x1601c, 270562306a36Sopenharmony_ci .fast_io = true, 270662306a36Sopenharmony_ci}; 270762306a36Sopenharmony_ci 270862306a36Sopenharmony_cistatic struct gdsc titan_top_gdsc; 270962306a36Sopenharmony_ci 271062306a36Sopenharmony_cistatic struct gdsc bps_gdsc = { 271162306a36Sopenharmony_ci .gdscr = 0x10004, 271262306a36Sopenharmony_ci .pd = { 271362306a36Sopenharmony_ci .name = "bps_gdsc", 271462306a36Sopenharmony_ci }, 271562306a36Sopenharmony_ci .flags = HW_CTRL | POLL_CFG_GDSCR, 271662306a36Sopenharmony_ci .pwrsts = PWRSTS_OFF_ON, 271762306a36Sopenharmony_ci}; 271862306a36Sopenharmony_ci 271962306a36Sopenharmony_cistatic struct gdsc ipe_0_gdsc = { 272062306a36Sopenharmony_ci .gdscr = 0x10078, 272162306a36Sopenharmony_ci .pd = { 272262306a36Sopenharmony_ci .name = "ipe_0_gdsc", 272362306a36Sopenharmony_ci }, 272462306a36Sopenharmony_ci .flags = HW_CTRL | POLL_CFG_GDSCR, 272562306a36Sopenharmony_ci .pwrsts = PWRSTS_OFF_ON, 272662306a36Sopenharmony_ci}; 272762306a36Sopenharmony_ci 272862306a36Sopenharmony_cistatic struct gdsc sbi_gdsc = { 272962306a36Sopenharmony_ci .gdscr = 0x100d0, 273062306a36Sopenharmony_ci .pd = { 273162306a36Sopenharmony_ci .name = "sbi_gdsc", 273262306a36Sopenharmony_ci }, 273362306a36Sopenharmony_ci .flags = POLL_CFG_GDSCR, 273462306a36Sopenharmony_ci .pwrsts = PWRSTS_OFF_ON, 273562306a36Sopenharmony_ci}; 273662306a36Sopenharmony_ci 273762306a36Sopenharmony_cistatic struct gdsc ife_0_gdsc = { 273862306a36Sopenharmony_ci .gdscr = 0x11004, 273962306a36Sopenharmony_ci .pd = { 274062306a36Sopenharmony_ci .name = "ife_0_gdsc", 274162306a36Sopenharmony_ci }, 274262306a36Sopenharmony_ci .flags = POLL_CFG_GDSCR, 274362306a36Sopenharmony_ci .parent = &titan_top_gdsc.pd, 274462306a36Sopenharmony_ci .pwrsts = PWRSTS_OFF_ON, 274562306a36Sopenharmony_ci}; 274662306a36Sopenharmony_ci 274762306a36Sopenharmony_cistatic struct gdsc ife_1_gdsc = { 274862306a36Sopenharmony_ci .gdscr = 0x12004, 274962306a36Sopenharmony_ci .pd = { 275062306a36Sopenharmony_ci .name = "ife_1_gdsc", 275162306a36Sopenharmony_ci }, 275262306a36Sopenharmony_ci .flags = POLL_CFG_GDSCR, 275362306a36Sopenharmony_ci .parent = &titan_top_gdsc.pd, 275462306a36Sopenharmony_ci .pwrsts = PWRSTS_OFF_ON, 275562306a36Sopenharmony_ci}; 275662306a36Sopenharmony_ci 275762306a36Sopenharmony_cistatic struct gdsc ife_2_gdsc = { 275862306a36Sopenharmony_ci .gdscr = 0x12050, 275962306a36Sopenharmony_ci .pd = { 276062306a36Sopenharmony_ci .name = "ife_2_gdsc", 276162306a36Sopenharmony_ci }, 276262306a36Sopenharmony_ci .flags = POLL_CFG_GDSCR, 276362306a36Sopenharmony_ci .parent = &titan_top_gdsc.pd, 276462306a36Sopenharmony_ci .pwrsts = PWRSTS_OFF_ON, 276562306a36Sopenharmony_ci}; 276662306a36Sopenharmony_ci 276762306a36Sopenharmony_cistatic struct gdsc sfe_0_gdsc = { 276862306a36Sopenharmony_ci .gdscr = 0x13050, 276962306a36Sopenharmony_ci .pd = { 277062306a36Sopenharmony_ci .name = "sfe_0_gdsc", 277162306a36Sopenharmony_ci }, 277262306a36Sopenharmony_ci .flags = POLL_CFG_GDSCR, 277362306a36Sopenharmony_ci .parent = &titan_top_gdsc.pd, 277462306a36Sopenharmony_ci .pwrsts = PWRSTS_OFF_ON, 277562306a36Sopenharmony_ci}; 277662306a36Sopenharmony_ci 277762306a36Sopenharmony_cistatic struct gdsc sfe_1_gdsc = { 277862306a36Sopenharmony_ci .gdscr = 0x13098, 277962306a36Sopenharmony_ci .pd = { 278062306a36Sopenharmony_ci .name = "sfe_1_gdsc", 278162306a36Sopenharmony_ci }, 278262306a36Sopenharmony_ci .flags = POLL_CFG_GDSCR, 278362306a36Sopenharmony_ci .parent = &titan_top_gdsc.pd, 278462306a36Sopenharmony_ci .pwrsts = PWRSTS_OFF_ON, 278562306a36Sopenharmony_ci}; 278662306a36Sopenharmony_ci 278762306a36Sopenharmony_cistatic struct gdsc titan_top_gdsc = { 278862306a36Sopenharmony_ci .gdscr = 0x131dc, 278962306a36Sopenharmony_ci .pd = { 279062306a36Sopenharmony_ci .name = "titan_top_gdsc", 279162306a36Sopenharmony_ci }, 279262306a36Sopenharmony_ci .flags = POLL_CFG_GDSCR, 279362306a36Sopenharmony_ci .pwrsts = PWRSTS_OFF_ON, 279462306a36Sopenharmony_ci}; 279562306a36Sopenharmony_ci 279662306a36Sopenharmony_cistatic struct gdsc *cam_cc_sm8450_gdscs[] = { 279762306a36Sopenharmony_ci [BPS_GDSC] = &bps_gdsc, 279862306a36Sopenharmony_ci [IPE_0_GDSC] = &ipe_0_gdsc, 279962306a36Sopenharmony_ci [SBI_GDSC] = &sbi_gdsc, 280062306a36Sopenharmony_ci [IFE_0_GDSC] = &ife_0_gdsc, 280162306a36Sopenharmony_ci [IFE_1_GDSC] = &ife_1_gdsc, 280262306a36Sopenharmony_ci [IFE_2_GDSC] = &ife_2_gdsc, 280362306a36Sopenharmony_ci [SFE_0_GDSC] = &sfe_0_gdsc, 280462306a36Sopenharmony_ci [SFE_1_GDSC] = &sfe_1_gdsc, 280562306a36Sopenharmony_ci [TITAN_TOP_GDSC] = &titan_top_gdsc, 280662306a36Sopenharmony_ci}; 280762306a36Sopenharmony_ci 280862306a36Sopenharmony_cistatic const struct qcom_cc_desc cam_cc_sm8450_desc = { 280962306a36Sopenharmony_ci .config = &cam_cc_sm8450_regmap_config, 281062306a36Sopenharmony_ci .clks = cam_cc_sm8450_clocks, 281162306a36Sopenharmony_ci .num_clks = ARRAY_SIZE(cam_cc_sm8450_clocks), 281262306a36Sopenharmony_ci .resets = cam_cc_sm8450_resets, 281362306a36Sopenharmony_ci .num_resets = ARRAY_SIZE(cam_cc_sm8450_resets), 281462306a36Sopenharmony_ci .gdscs = cam_cc_sm8450_gdscs, 281562306a36Sopenharmony_ci .num_gdscs = ARRAY_SIZE(cam_cc_sm8450_gdscs), 281662306a36Sopenharmony_ci}; 281762306a36Sopenharmony_ci 281862306a36Sopenharmony_cistatic const struct of_device_id cam_cc_sm8450_match_table[] = { 281962306a36Sopenharmony_ci { .compatible = "qcom,sm8450-camcc" }, 282062306a36Sopenharmony_ci { } 282162306a36Sopenharmony_ci}; 282262306a36Sopenharmony_ciMODULE_DEVICE_TABLE(of, cam_cc_sm8450_match_table); 282362306a36Sopenharmony_ci 282462306a36Sopenharmony_cistatic int cam_cc_sm8450_probe(struct platform_device *pdev) 282562306a36Sopenharmony_ci{ 282662306a36Sopenharmony_ci struct regmap *regmap; 282762306a36Sopenharmony_ci 282862306a36Sopenharmony_ci regmap = qcom_cc_map(pdev, &cam_cc_sm8450_desc); 282962306a36Sopenharmony_ci if (IS_ERR(regmap)) 283062306a36Sopenharmony_ci return PTR_ERR(regmap); 283162306a36Sopenharmony_ci 283262306a36Sopenharmony_ci clk_lucid_evo_pll_configure(&cam_cc_pll0, regmap, &cam_cc_pll0_config); 283362306a36Sopenharmony_ci clk_lucid_evo_pll_configure(&cam_cc_pll1, regmap, &cam_cc_pll1_config); 283462306a36Sopenharmony_ci clk_rivian_evo_pll_configure(&cam_cc_pll2, regmap, &cam_cc_pll2_config); 283562306a36Sopenharmony_ci clk_lucid_evo_pll_configure(&cam_cc_pll3, regmap, &cam_cc_pll3_config); 283662306a36Sopenharmony_ci clk_lucid_evo_pll_configure(&cam_cc_pll4, regmap, &cam_cc_pll4_config); 283762306a36Sopenharmony_ci clk_lucid_evo_pll_configure(&cam_cc_pll5, regmap, &cam_cc_pll5_config); 283862306a36Sopenharmony_ci clk_lucid_evo_pll_configure(&cam_cc_pll6, regmap, &cam_cc_pll6_config); 283962306a36Sopenharmony_ci clk_lucid_evo_pll_configure(&cam_cc_pll7, regmap, &cam_cc_pll7_config); 284062306a36Sopenharmony_ci clk_lucid_evo_pll_configure(&cam_cc_pll8, regmap, &cam_cc_pll8_config); 284162306a36Sopenharmony_ci 284262306a36Sopenharmony_ci return qcom_cc_really_probe(pdev, &cam_cc_sm8450_desc, regmap); 284362306a36Sopenharmony_ci} 284462306a36Sopenharmony_ci 284562306a36Sopenharmony_cistatic struct platform_driver cam_cc_sm8450_driver = { 284662306a36Sopenharmony_ci .probe = cam_cc_sm8450_probe, 284762306a36Sopenharmony_ci .driver = { 284862306a36Sopenharmony_ci .name = "camcc-sm8450", 284962306a36Sopenharmony_ci .of_match_table = cam_cc_sm8450_match_table, 285062306a36Sopenharmony_ci }, 285162306a36Sopenharmony_ci}; 285262306a36Sopenharmony_ci 285362306a36Sopenharmony_cimodule_platform_driver(cam_cc_sm8450_driver); 285462306a36Sopenharmony_ci 285562306a36Sopenharmony_ciMODULE_DESCRIPTION("QCOM CAMCC SM8450 Driver"); 285662306a36Sopenharmony_ciMODULE_LICENSE("GPL"); 2857