18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Copyright (c) 2019, The Linux Foundation. All rights reserved. 48c2ecf20Sopenharmony_ci */ 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci#include <linux/kernel.h> 78c2ecf20Sopenharmony_ci#include <linux/bitops.h> 88c2ecf20Sopenharmony_ci#include <linux/err.h> 98c2ecf20Sopenharmony_ci#include <linux/platform_device.h> 108c2ecf20Sopenharmony_ci#include <linux/module.h> 118c2ecf20Sopenharmony_ci#include <linux/of.h> 128c2ecf20Sopenharmony_ci#include <linux/of_device.h> 138c2ecf20Sopenharmony_ci#include <linux/clk-provider.h> 148c2ecf20Sopenharmony_ci#include <linux/regmap.h> 158c2ecf20Sopenharmony_ci#include <linux/reset-controller.h> 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_ci#include <dt-bindings/clock/qcom,mmcc-msm8998.h> 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_ci#include "common.h" 208c2ecf20Sopenharmony_ci#include "clk-regmap.h" 218c2ecf20Sopenharmony_ci#include "clk-regmap-divider.h" 228c2ecf20Sopenharmony_ci#include "clk-alpha-pll.h" 238c2ecf20Sopenharmony_ci#include "clk-rcg.h" 248c2ecf20Sopenharmony_ci#include "clk-branch.h" 258c2ecf20Sopenharmony_ci#include "reset.h" 268c2ecf20Sopenharmony_ci#include "gdsc.h" 278c2ecf20Sopenharmony_ci 288c2ecf20Sopenharmony_cienum { 298c2ecf20Sopenharmony_ci P_XO, 308c2ecf20Sopenharmony_ci P_GPLL0, 318c2ecf20Sopenharmony_ci P_GPLL0_DIV, 328c2ecf20Sopenharmony_ci P_MMPLL0_OUT_EVEN, 338c2ecf20Sopenharmony_ci P_MMPLL1_OUT_EVEN, 348c2ecf20Sopenharmony_ci P_MMPLL3_OUT_EVEN, 358c2ecf20Sopenharmony_ci P_MMPLL4_OUT_EVEN, 368c2ecf20Sopenharmony_ci P_MMPLL5_OUT_EVEN, 378c2ecf20Sopenharmony_ci P_MMPLL6_OUT_EVEN, 388c2ecf20Sopenharmony_ci P_MMPLL7_OUT_EVEN, 398c2ecf20Sopenharmony_ci P_MMPLL10_OUT_EVEN, 408c2ecf20Sopenharmony_ci P_DSI0PLL, 418c2ecf20Sopenharmony_ci P_DSI1PLL, 428c2ecf20Sopenharmony_ci P_DSI0PLL_BYTE, 438c2ecf20Sopenharmony_ci P_DSI1PLL_BYTE, 448c2ecf20Sopenharmony_ci P_HDMIPLL, 458c2ecf20Sopenharmony_ci P_DPVCO, 468c2ecf20Sopenharmony_ci P_DPLINK, 478c2ecf20Sopenharmony_ci P_CORE_BI_PLL_TEST_SE, 488c2ecf20Sopenharmony_ci}; 498c2ecf20Sopenharmony_ci 508c2ecf20Sopenharmony_cistatic struct clk_fixed_factor gpll0_div = { 518c2ecf20Sopenharmony_ci .mult = 1, 528c2ecf20Sopenharmony_ci .div = 2, 538c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 548c2ecf20Sopenharmony_ci .name = "mmss_gpll0_div", 558c2ecf20Sopenharmony_ci .parent_data = &(const struct clk_parent_data){ 568c2ecf20Sopenharmony_ci .fw_name = "gpll0", 578c2ecf20Sopenharmony_ci .name = "gpll0" 588c2ecf20Sopenharmony_ci }, 598c2ecf20Sopenharmony_ci .num_parents = 1, 608c2ecf20Sopenharmony_ci .ops = &clk_fixed_factor_ops, 618c2ecf20Sopenharmony_ci }, 628c2ecf20Sopenharmony_ci}; 638c2ecf20Sopenharmony_ci 648c2ecf20Sopenharmony_cistatic const struct clk_div_table post_div_table_fabia_even[] = { 658c2ecf20Sopenharmony_ci { 0x0, 1 }, 668c2ecf20Sopenharmony_ci { 0x1, 2 }, 678c2ecf20Sopenharmony_ci { 0x3, 4 }, 688c2ecf20Sopenharmony_ci { 0x7, 8 }, 698c2ecf20Sopenharmony_ci { } 708c2ecf20Sopenharmony_ci}; 718c2ecf20Sopenharmony_ci 728c2ecf20Sopenharmony_cistatic struct clk_alpha_pll mmpll0 = { 738c2ecf20Sopenharmony_ci .offset = 0xc000, 748c2ecf20Sopenharmony_ci .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], 758c2ecf20Sopenharmony_ci .clkr = { 768c2ecf20Sopenharmony_ci .enable_reg = 0x1e0, 778c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 788c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 798c2ecf20Sopenharmony_ci .name = "mmpll0", 808c2ecf20Sopenharmony_ci .parent_data = &(const struct clk_parent_data){ 818c2ecf20Sopenharmony_ci .fw_name = "xo", 828c2ecf20Sopenharmony_ci .name = "xo" 838c2ecf20Sopenharmony_ci }, 848c2ecf20Sopenharmony_ci .num_parents = 1, 858c2ecf20Sopenharmony_ci .ops = &clk_alpha_pll_fixed_fabia_ops, 868c2ecf20Sopenharmony_ci }, 878c2ecf20Sopenharmony_ci }, 888c2ecf20Sopenharmony_ci}; 898c2ecf20Sopenharmony_ci 908c2ecf20Sopenharmony_cistatic struct clk_alpha_pll_postdiv mmpll0_out_even = { 918c2ecf20Sopenharmony_ci .offset = 0xc000, 928c2ecf20Sopenharmony_ci .post_div_shift = 8, 938c2ecf20Sopenharmony_ci .post_div_table = post_div_table_fabia_even, 948c2ecf20Sopenharmony_ci .num_post_div = ARRAY_SIZE(post_div_table_fabia_even), 958c2ecf20Sopenharmony_ci .width = 4, 968c2ecf20Sopenharmony_ci .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], 978c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 988c2ecf20Sopenharmony_ci .name = "mmpll0_out_even", 998c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &mmpll0.clkr.hw }, 1008c2ecf20Sopenharmony_ci .num_parents = 1, 1018c2ecf20Sopenharmony_ci .ops = &clk_alpha_pll_postdiv_fabia_ops, 1028c2ecf20Sopenharmony_ci }, 1038c2ecf20Sopenharmony_ci}; 1048c2ecf20Sopenharmony_ci 1058c2ecf20Sopenharmony_cistatic struct clk_alpha_pll mmpll1 = { 1068c2ecf20Sopenharmony_ci .offset = 0xc050, 1078c2ecf20Sopenharmony_ci .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], 1088c2ecf20Sopenharmony_ci .clkr = { 1098c2ecf20Sopenharmony_ci .enable_reg = 0x1e0, 1108c2ecf20Sopenharmony_ci .enable_mask = BIT(1), 1118c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 1128c2ecf20Sopenharmony_ci .name = "mmpll1", 1138c2ecf20Sopenharmony_ci .parent_data = &(const struct clk_parent_data){ 1148c2ecf20Sopenharmony_ci .fw_name = "xo", 1158c2ecf20Sopenharmony_ci .name = "xo" 1168c2ecf20Sopenharmony_ci }, 1178c2ecf20Sopenharmony_ci .num_parents = 1, 1188c2ecf20Sopenharmony_ci .ops = &clk_alpha_pll_fixed_fabia_ops, 1198c2ecf20Sopenharmony_ci }, 1208c2ecf20Sopenharmony_ci }, 1218c2ecf20Sopenharmony_ci}; 1228c2ecf20Sopenharmony_ci 1238c2ecf20Sopenharmony_cistatic struct clk_alpha_pll_postdiv mmpll1_out_even = { 1248c2ecf20Sopenharmony_ci .offset = 0xc050, 1258c2ecf20Sopenharmony_ci .post_div_shift = 8, 1268c2ecf20Sopenharmony_ci .post_div_table = post_div_table_fabia_even, 1278c2ecf20Sopenharmony_ci .num_post_div = ARRAY_SIZE(post_div_table_fabia_even), 1288c2ecf20Sopenharmony_ci .width = 4, 1298c2ecf20Sopenharmony_ci .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], 1308c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 1318c2ecf20Sopenharmony_ci .name = "mmpll1_out_even", 1328c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &mmpll1.clkr.hw }, 1338c2ecf20Sopenharmony_ci .num_parents = 1, 1348c2ecf20Sopenharmony_ci .ops = &clk_alpha_pll_postdiv_fabia_ops, 1358c2ecf20Sopenharmony_ci }, 1368c2ecf20Sopenharmony_ci}; 1378c2ecf20Sopenharmony_ci 1388c2ecf20Sopenharmony_cistatic struct clk_alpha_pll mmpll3 = { 1398c2ecf20Sopenharmony_ci .offset = 0x0, 1408c2ecf20Sopenharmony_ci .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], 1418c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 1428c2ecf20Sopenharmony_ci .name = "mmpll3", 1438c2ecf20Sopenharmony_ci .parent_data = &(const struct clk_parent_data){ 1448c2ecf20Sopenharmony_ci .fw_name = "xo", 1458c2ecf20Sopenharmony_ci .name = "xo" 1468c2ecf20Sopenharmony_ci }, 1478c2ecf20Sopenharmony_ci .num_parents = 1, 1488c2ecf20Sopenharmony_ci .ops = &clk_alpha_pll_fixed_fabia_ops, 1498c2ecf20Sopenharmony_ci }, 1508c2ecf20Sopenharmony_ci}; 1518c2ecf20Sopenharmony_ci 1528c2ecf20Sopenharmony_cistatic struct clk_alpha_pll_postdiv mmpll3_out_even = { 1538c2ecf20Sopenharmony_ci .offset = 0x0, 1548c2ecf20Sopenharmony_ci .post_div_shift = 8, 1558c2ecf20Sopenharmony_ci .post_div_table = post_div_table_fabia_even, 1568c2ecf20Sopenharmony_ci .num_post_div = ARRAY_SIZE(post_div_table_fabia_even), 1578c2ecf20Sopenharmony_ci .width = 4, 1588c2ecf20Sopenharmony_ci .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], 1598c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 1608c2ecf20Sopenharmony_ci .name = "mmpll3_out_even", 1618c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &mmpll3.clkr.hw }, 1628c2ecf20Sopenharmony_ci .num_parents = 1, 1638c2ecf20Sopenharmony_ci .ops = &clk_alpha_pll_postdiv_fabia_ops, 1648c2ecf20Sopenharmony_ci }, 1658c2ecf20Sopenharmony_ci}; 1668c2ecf20Sopenharmony_ci 1678c2ecf20Sopenharmony_cistatic struct clk_alpha_pll mmpll4 = { 1688c2ecf20Sopenharmony_ci .offset = 0x50, 1698c2ecf20Sopenharmony_ci .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], 1708c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 1718c2ecf20Sopenharmony_ci .name = "mmpll4", 1728c2ecf20Sopenharmony_ci .parent_data = &(const struct clk_parent_data){ 1738c2ecf20Sopenharmony_ci .fw_name = "xo", 1748c2ecf20Sopenharmony_ci .name = "xo" 1758c2ecf20Sopenharmony_ci }, 1768c2ecf20Sopenharmony_ci .num_parents = 1, 1778c2ecf20Sopenharmony_ci .ops = &clk_alpha_pll_fixed_fabia_ops, 1788c2ecf20Sopenharmony_ci }, 1798c2ecf20Sopenharmony_ci}; 1808c2ecf20Sopenharmony_ci 1818c2ecf20Sopenharmony_cistatic struct clk_alpha_pll_postdiv mmpll4_out_even = { 1828c2ecf20Sopenharmony_ci .offset = 0x50, 1838c2ecf20Sopenharmony_ci .post_div_shift = 8, 1848c2ecf20Sopenharmony_ci .post_div_table = post_div_table_fabia_even, 1858c2ecf20Sopenharmony_ci .num_post_div = ARRAY_SIZE(post_div_table_fabia_even), 1868c2ecf20Sopenharmony_ci .width = 4, 1878c2ecf20Sopenharmony_ci .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], 1888c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 1898c2ecf20Sopenharmony_ci .name = "mmpll4_out_even", 1908c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &mmpll4.clkr.hw }, 1918c2ecf20Sopenharmony_ci .num_parents = 1, 1928c2ecf20Sopenharmony_ci .ops = &clk_alpha_pll_postdiv_fabia_ops, 1938c2ecf20Sopenharmony_ci }, 1948c2ecf20Sopenharmony_ci}; 1958c2ecf20Sopenharmony_ci 1968c2ecf20Sopenharmony_cistatic struct clk_alpha_pll mmpll5 = { 1978c2ecf20Sopenharmony_ci .offset = 0xa0, 1988c2ecf20Sopenharmony_ci .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], 1998c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 2008c2ecf20Sopenharmony_ci .name = "mmpll5", 2018c2ecf20Sopenharmony_ci .parent_data = &(const struct clk_parent_data){ 2028c2ecf20Sopenharmony_ci .fw_name = "xo", 2038c2ecf20Sopenharmony_ci .name = "xo" 2048c2ecf20Sopenharmony_ci }, 2058c2ecf20Sopenharmony_ci .num_parents = 1, 2068c2ecf20Sopenharmony_ci .ops = &clk_alpha_pll_fixed_fabia_ops, 2078c2ecf20Sopenharmony_ci }, 2088c2ecf20Sopenharmony_ci}; 2098c2ecf20Sopenharmony_ci 2108c2ecf20Sopenharmony_cistatic struct clk_alpha_pll_postdiv mmpll5_out_even = { 2118c2ecf20Sopenharmony_ci .offset = 0xa0, 2128c2ecf20Sopenharmony_ci .post_div_shift = 8, 2138c2ecf20Sopenharmony_ci .post_div_table = post_div_table_fabia_even, 2148c2ecf20Sopenharmony_ci .num_post_div = ARRAY_SIZE(post_div_table_fabia_even), 2158c2ecf20Sopenharmony_ci .width = 4, 2168c2ecf20Sopenharmony_ci .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], 2178c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 2188c2ecf20Sopenharmony_ci .name = "mmpll5_out_even", 2198c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &mmpll5.clkr.hw }, 2208c2ecf20Sopenharmony_ci .num_parents = 1, 2218c2ecf20Sopenharmony_ci .ops = &clk_alpha_pll_postdiv_fabia_ops, 2228c2ecf20Sopenharmony_ci }, 2238c2ecf20Sopenharmony_ci}; 2248c2ecf20Sopenharmony_ci 2258c2ecf20Sopenharmony_cistatic struct clk_alpha_pll mmpll6 = { 2268c2ecf20Sopenharmony_ci .offset = 0xf0, 2278c2ecf20Sopenharmony_ci .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], 2288c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 2298c2ecf20Sopenharmony_ci .name = "mmpll6", 2308c2ecf20Sopenharmony_ci .parent_data = &(const struct clk_parent_data){ 2318c2ecf20Sopenharmony_ci .fw_name = "xo", 2328c2ecf20Sopenharmony_ci .name = "xo" 2338c2ecf20Sopenharmony_ci }, 2348c2ecf20Sopenharmony_ci .num_parents = 1, 2358c2ecf20Sopenharmony_ci .ops = &clk_alpha_pll_fixed_fabia_ops, 2368c2ecf20Sopenharmony_ci }, 2378c2ecf20Sopenharmony_ci}; 2388c2ecf20Sopenharmony_ci 2398c2ecf20Sopenharmony_cistatic struct clk_alpha_pll_postdiv mmpll6_out_even = { 2408c2ecf20Sopenharmony_ci .offset = 0xf0, 2418c2ecf20Sopenharmony_ci .post_div_shift = 8, 2428c2ecf20Sopenharmony_ci .post_div_table = post_div_table_fabia_even, 2438c2ecf20Sopenharmony_ci .num_post_div = ARRAY_SIZE(post_div_table_fabia_even), 2448c2ecf20Sopenharmony_ci .width = 4, 2458c2ecf20Sopenharmony_ci .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], 2468c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 2478c2ecf20Sopenharmony_ci .name = "mmpll6_out_even", 2488c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &mmpll6.clkr.hw }, 2498c2ecf20Sopenharmony_ci .num_parents = 1, 2508c2ecf20Sopenharmony_ci .ops = &clk_alpha_pll_postdiv_fabia_ops, 2518c2ecf20Sopenharmony_ci }, 2528c2ecf20Sopenharmony_ci}; 2538c2ecf20Sopenharmony_ci 2548c2ecf20Sopenharmony_cistatic struct clk_alpha_pll mmpll7 = { 2558c2ecf20Sopenharmony_ci .offset = 0x140, 2568c2ecf20Sopenharmony_ci .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], 2578c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 2588c2ecf20Sopenharmony_ci .name = "mmpll7", 2598c2ecf20Sopenharmony_ci .parent_data = &(const struct clk_parent_data){ 2608c2ecf20Sopenharmony_ci .fw_name = "xo", 2618c2ecf20Sopenharmony_ci .name = "xo" 2628c2ecf20Sopenharmony_ci }, 2638c2ecf20Sopenharmony_ci .num_parents = 1, 2648c2ecf20Sopenharmony_ci .ops = &clk_alpha_pll_fixed_fabia_ops, 2658c2ecf20Sopenharmony_ci }, 2668c2ecf20Sopenharmony_ci}; 2678c2ecf20Sopenharmony_ci 2688c2ecf20Sopenharmony_cistatic struct clk_alpha_pll_postdiv mmpll7_out_even = { 2698c2ecf20Sopenharmony_ci .offset = 0x140, 2708c2ecf20Sopenharmony_ci .post_div_shift = 8, 2718c2ecf20Sopenharmony_ci .post_div_table = post_div_table_fabia_even, 2728c2ecf20Sopenharmony_ci .num_post_div = ARRAY_SIZE(post_div_table_fabia_even), 2738c2ecf20Sopenharmony_ci .width = 4, 2748c2ecf20Sopenharmony_ci .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], 2758c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 2768c2ecf20Sopenharmony_ci .name = "mmpll7_out_even", 2778c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &mmpll7.clkr.hw }, 2788c2ecf20Sopenharmony_ci .num_parents = 1, 2798c2ecf20Sopenharmony_ci .ops = &clk_alpha_pll_postdiv_fabia_ops, 2808c2ecf20Sopenharmony_ci }, 2818c2ecf20Sopenharmony_ci}; 2828c2ecf20Sopenharmony_ci 2838c2ecf20Sopenharmony_cistatic struct clk_alpha_pll mmpll10 = { 2848c2ecf20Sopenharmony_ci .offset = 0x190, 2858c2ecf20Sopenharmony_ci .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], 2868c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 2878c2ecf20Sopenharmony_ci .name = "mmpll10", 2888c2ecf20Sopenharmony_ci .parent_data = &(const struct clk_parent_data){ 2898c2ecf20Sopenharmony_ci .fw_name = "xo", 2908c2ecf20Sopenharmony_ci .name = "xo" 2918c2ecf20Sopenharmony_ci }, 2928c2ecf20Sopenharmony_ci .num_parents = 1, 2938c2ecf20Sopenharmony_ci .ops = &clk_alpha_pll_fixed_fabia_ops, 2948c2ecf20Sopenharmony_ci }, 2958c2ecf20Sopenharmony_ci}; 2968c2ecf20Sopenharmony_ci 2978c2ecf20Sopenharmony_cistatic struct clk_alpha_pll_postdiv mmpll10_out_even = { 2988c2ecf20Sopenharmony_ci .offset = 0x190, 2998c2ecf20Sopenharmony_ci .post_div_shift = 8, 3008c2ecf20Sopenharmony_ci .post_div_table = post_div_table_fabia_even, 3018c2ecf20Sopenharmony_ci .num_post_div = ARRAY_SIZE(post_div_table_fabia_even), 3028c2ecf20Sopenharmony_ci .width = 4, 3038c2ecf20Sopenharmony_ci .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], 3048c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 3058c2ecf20Sopenharmony_ci .name = "mmpll10_out_even", 3068c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &mmpll10.clkr.hw }, 3078c2ecf20Sopenharmony_ci .num_parents = 1, 3088c2ecf20Sopenharmony_ci .ops = &clk_alpha_pll_postdiv_fabia_ops, 3098c2ecf20Sopenharmony_ci }, 3108c2ecf20Sopenharmony_ci}; 3118c2ecf20Sopenharmony_ci 3128c2ecf20Sopenharmony_cistatic const struct parent_map mmss_xo_hdmi_map[] = { 3138c2ecf20Sopenharmony_ci { P_XO, 0 }, 3148c2ecf20Sopenharmony_ci { P_HDMIPLL, 1 }, 3158c2ecf20Sopenharmony_ci { P_CORE_BI_PLL_TEST_SE, 7 } 3168c2ecf20Sopenharmony_ci}; 3178c2ecf20Sopenharmony_ci 3188c2ecf20Sopenharmony_cistatic const struct clk_parent_data mmss_xo_hdmi[] = { 3198c2ecf20Sopenharmony_ci { .fw_name = "xo", .name = "xo" }, 3208c2ecf20Sopenharmony_ci { .fw_name = "hdmipll", .name = "hdmipll" }, 3218c2ecf20Sopenharmony_ci { .fw_name = "core_bi_pll_test_se", .name = "core_bi_pll_test_se" }, 3228c2ecf20Sopenharmony_ci}; 3238c2ecf20Sopenharmony_ci 3248c2ecf20Sopenharmony_cistatic const struct parent_map mmss_xo_dsi0pll_dsi1pll_map[] = { 3258c2ecf20Sopenharmony_ci { P_XO, 0 }, 3268c2ecf20Sopenharmony_ci { P_DSI0PLL, 1 }, 3278c2ecf20Sopenharmony_ci { P_DSI1PLL, 2 }, 3288c2ecf20Sopenharmony_ci { P_CORE_BI_PLL_TEST_SE, 7 } 3298c2ecf20Sopenharmony_ci}; 3308c2ecf20Sopenharmony_ci 3318c2ecf20Sopenharmony_cistatic const struct clk_parent_data mmss_xo_dsi0pll_dsi1pll[] = { 3328c2ecf20Sopenharmony_ci { .fw_name = "xo", .name = "xo" }, 3338c2ecf20Sopenharmony_ci { .fw_name = "dsi0dsi", .name = "dsi0dsi" }, 3348c2ecf20Sopenharmony_ci { .fw_name = "dsi1dsi", .name = "dsi1dsi" }, 3358c2ecf20Sopenharmony_ci { .fw_name = "core_bi_pll_test_se", .name = "core_bi_pll_test_se" }, 3368c2ecf20Sopenharmony_ci}; 3378c2ecf20Sopenharmony_ci 3388c2ecf20Sopenharmony_cistatic const struct parent_map mmss_xo_dsibyte_map[] = { 3398c2ecf20Sopenharmony_ci { P_XO, 0 }, 3408c2ecf20Sopenharmony_ci { P_DSI0PLL_BYTE, 1 }, 3418c2ecf20Sopenharmony_ci { P_DSI1PLL_BYTE, 2 }, 3428c2ecf20Sopenharmony_ci { P_CORE_BI_PLL_TEST_SE, 7 } 3438c2ecf20Sopenharmony_ci}; 3448c2ecf20Sopenharmony_ci 3458c2ecf20Sopenharmony_cistatic const struct clk_parent_data mmss_xo_dsibyte[] = { 3468c2ecf20Sopenharmony_ci { .fw_name = "xo", .name = "xo" }, 3478c2ecf20Sopenharmony_ci { .fw_name = "dsi0byte", .name = "dsi0byte" }, 3488c2ecf20Sopenharmony_ci { .fw_name = "dsi1byte", .name = "dsi1byte" }, 3498c2ecf20Sopenharmony_ci { .fw_name = "core_bi_pll_test_se", .name = "core_bi_pll_test_se" }, 3508c2ecf20Sopenharmony_ci}; 3518c2ecf20Sopenharmony_ci 3528c2ecf20Sopenharmony_cistatic const struct parent_map mmss_xo_dp_map[] = { 3538c2ecf20Sopenharmony_ci { P_XO, 0 }, 3548c2ecf20Sopenharmony_ci { P_DPLINK, 1 }, 3558c2ecf20Sopenharmony_ci { P_DPVCO, 2 }, 3568c2ecf20Sopenharmony_ci { P_CORE_BI_PLL_TEST_SE, 7 } 3578c2ecf20Sopenharmony_ci}; 3588c2ecf20Sopenharmony_ci 3598c2ecf20Sopenharmony_cistatic const struct clk_parent_data mmss_xo_dp[] = { 3608c2ecf20Sopenharmony_ci { .fw_name = "xo", .name = "xo" }, 3618c2ecf20Sopenharmony_ci { .fw_name = "dplink", .name = "dplink" }, 3628c2ecf20Sopenharmony_ci { .fw_name = "dpvco", .name = "dpvco" }, 3638c2ecf20Sopenharmony_ci { .fw_name = "core_bi_pll_test_se", .name = "core_bi_pll_test_se" }, 3648c2ecf20Sopenharmony_ci}; 3658c2ecf20Sopenharmony_ci 3668c2ecf20Sopenharmony_cistatic const struct parent_map mmss_xo_gpll0_gpll0_div_map[] = { 3678c2ecf20Sopenharmony_ci { P_XO, 0 }, 3688c2ecf20Sopenharmony_ci { P_GPLL0, 5 }, 3698c2ecf20Sopenharmony_ci { P_GPLL0_DIV, 6 }, 3708c2ecf20Sopenharmony_ci { P_CORE_BI_PLL_TEST_SE, 7 } 3718c2ecf20Sopenharmony_ci}; 3728c2ecf20Sopenharmony_ci 3738c2ecf20Sopenharmony_cistatic const struct clk_parent_data mmss_xo_gpll0_gpll0_div[] = { 3748c2ecf20Sopenharmony_ci { .fw_name = "xo", .name = "xo" }, 3758c2ecf20Sopenharmony_ci { .fw_name = "gpll0", .name = "gpll0" }, 3768c2ecf20Sopenharmony_ci { .hw = &gpll0_div.hw }, 3778c2ecf20Sopenharmony_ci { .fw_name = "core_bi_pll_test_se", .name = "core_bi_pll_test_se" }, 3788c2ecf20Sopenharmony_ci}; 3798c2ecf20Sopenharmony_ci 3808c2ecf20Sopenharmony_cistatic const struct parent_map mmss_xo_mmpll0_gpll0_gpll0_div_map[] = { 3818c2ecf20Sopenharmony_ci { P_XO, 0 }, 3828c2ecf20Sopenharmony_ci { P_MMPLL0_OUT_EVEN, 1 }, 3838c2ecf20Sopenharmony_ci { P_GPLL0, 5 }, 3848c2ecf20Sopenharmony_ci { P_GPLL0_DIV, 6 }, 3858c2ecf20Sopenharmony_ci { P_CORE_BI_PLL_TEST_SE, 7 } 3868c2ecf20Sopenharmony_ci}; 3878c2ecf20Sopenharmony_ci 3888c2ecf20Sopenharmony_cistatic const struct clk_parent_data mmss_xo_mmpll0_gpll0_gpll0_div[] = { 3898c2ecf20Sopenharmony_ci { .fw_name = "xo", .name = "xo" }, 3908c2ecf20Sopenharmony_ci { .hw = &mmpll0_out_even.clkr.hw }, 3918c2ecf20Sopenharmony_ci { .fw_name = "gpll0", .name = "gpll0" }, 3928c2ecf20Sopenharmony_ci { .hw = &gpll0_div.hw }, 3938c2ecf20Sopenharmony_ci { .fw_name = "core_bi_pll_test_se", .name = "core_bi_pll_test_se" }, 3948c2ecf20Sopenharmony_ci}; 3958c2ecf20Sopenharmony_ci 3968c2ecf20Sopenharmony_cistatic const struct parent_map mmss_xo_mmpll0_mmpll1_gpll0_gpll0_div_map[] = { 3978c2ecf20Sopenharmony_ci { P_XO, 0 }, 3988c2ecf20Sopenharmony_ci { P_MMPLL0_OUT_EVEN, 1 }, 3998c2ecf20Sopenharmony_ci { P_MMPLL1_OUT_EVEN, 2 }, 4008c2ecf20Sopenharmony_ci { P_GPLL0, 5 }, 4018c2ecf20Sopenharmony_ci { P_GPLL0_DIV, 6 }, 4028c2ecf20Sopenharmony_ci { P_CORE_BI_PLL_TEST_SE, 7 } 4038c2ecf20Sopenharmony_ci}; 4048c2ecf20Sopenharmony_ci 4058c2ecf20Sopenharmony_cistatic const struct clk_parent_data mmss_xo_mmpll0_mmpll1_gpll0_gpll0_div[] = { 4068c2ecf20Sopenharmony_ci { .fw_name = "xo", .name = "xo" }, 4078c2ecf20Sopenharmony_ci { .hw = &mmpll0_out_even.clkr.hw }, 4088c2ecf20Sopenharmony_ci { .hw = &mmpll1_out_even.clkr.hw }, 4098c2ecf20Sopenharmony_ci { .fw_name = "gpll0", .name = "gpll0" }, 4108c2ecf20Sopenharmony_ci { .hw = &gpll0_div.hw }, 4118c2ecf20Sopenharmony_ci { .fw_name = "core_bi_pll_test_se", .name = "core_bi_pll_test_se" }, 4128c2ecf20Sopenharmony_ci}; 4138c2ecf20Sopenharmony_ci 4148c2ecf20Sopenharmony_cistatic const struct parent_map mmss_xo_mmpll0_mmpll5_gpll0_gpll0_div_map[] = { 4158c2ecf20Sopenharmony_ci { P_XO, 0 }, 4168c2ecf20Sopenharmony_ci { P_MMPLL0_OUT_EVEN, 1 }, 4178c2ecf20Sopenharmony_ci { P_MMPLL5_OUT_EVEN, 2 }, 4188c2ecf20Sopenharmony_ci { P_GPLL0, 5 }, 4198c2ecf20Sopenharmony_ci { P_GPLL0_DIV, 6 }, 4208c2ecf20Sopenharmony_ci { P_CORE_BI_PLL_TEST_SE, 7 } 4218c2ecf20Sopenharmony_ci}; 4228c2ecf20Sopenharmony_ci 4238c2ecf20Sopenharmony_cistatic const struct clk_parent_data mmss_xo_mmpll0_mmpll5_gpll0_gpll0_div[] = { 4248c2ecf20Sopenharmony_ci { .fw_name = "xo", .name = "xo" }, 4258c2ecf20Sopenharmony_ci { .hw = &mmpll0_out_even.clkr.hw }, 4268c2ecf20Sopenharmony_ci { .hw = &mmpll5_out_even.clkr.hw }, 4278c2ecf20Sopenharmony_ci { .fw_name = "gpll0", .name = "gpll0" }, 4288c2ecf20Sopenharmony_ci { .hw = &gpll0_div.hw }, 4298c2ecf20Sopenharmony_ci { .fw_name = "core_bi_pll_test_se", .name = "core_bi_pll_test_se" }, 4308c2ecf20Sopenharmony_ci}; 4318c2ecf20Sopenharmony_ci 4328c2ecf20Sopenharmony_cistatic const struct parent_map mmss_xo_mmpll0_mmpll3_mmpll6_gpll0_gpll0_div_map[] = { 4338c2ecf20Sopenharmony_ci { P_XO, 0 }, 4348c2ecf20Sopenharmony_ci { P_MMPLL0_OUT_EVEN, 1 }, 4358c2ecf20Sopenharmony_ci { P_MMPLL3_OUT_EVEN, 3 }, 4368c2ecf20Sopenharmony_ci { P_MMPLL6_OUT_EVEN, 4 }, 4378c2ecf20Sopenharmony_ci { P_GPLL0, 5 }, 4388c2ecf20Sopenharmony_ci { P_GPLL0_DIV, 6 }, 4398c2ecf20Sopenharmony_ci { P_CORE_BI_PLL_TEST_SE, 7 } 4408c2ecf20Sopenharmony_ci}; 4418c2ecf20Sopenharmony_ci 4428c2ecf20Sopenharmony_cistatic const struct clk_parent_data mmss_xo_mmpll0_mmpll3_mmpll6_gpll0_gpll0_div[] = { 4438c2ecf20Sopenharmony_ci { .fw_name = "xo", .name = "xo" }, 4448c2ecf20Sopenharmony_ci { .hw = &mmpll0_out_even.clkr.hw }, 4458c2ecf20Sopenharmony_ci { .hw = &mmpll3_out_even.clkr.hw }, 4468c2ecf20Sopenharmony_ci { .hw = &mmpll6_out_even.clkr.hw }, 4478c2ecf20Sopenharmony_ci { .fw_name = "gpll0", .name = "gpll0" }, 4488c2ecf20Sopenharmony_ci { .hw = &gpll0_div.hw }, 4498c2ecf20Sopenharmony_ci { .fw_name = "core_bi_pll_test_se", .name = "core_bi_pll_test_se" }, 4508c2ecf20Sopenharmony_ci}; 4518c2ecf20Sopenharmony_ci 4528c2ecf20Sopenharmony_cistatic const struct parent_map mmss_xo_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map[] = { 4538c2ecf20Sopenharmony_ci { P_XO, 0 }, 4548c2ecf20Sopenharmony_ci { P_MMPLL4_OUT_EVEN, 1 }, 4558c2ecf20Sopenharmony_ci { P_MMPLL7_OUT_EVEN, 2 }, 4568c2ecf20Sopenharmony_ci { P_MMPLL10_OUT_EVEN, 3 }, 4578c2ecf20Sopenharmony_ci { P_GPLL0, 5 }, 4588c2ecf20Sopenharmony_ci { P_GPLL0_DIV, 6 }, 4598c2ecf20Sopenharmony_ci { P_CORE_BI_PLL_TEST_SE, 7 } 4608c2ecf20Sopenharmony_ci}; 4618c2ecf20Sopenharmony_ci 4628c2ecf20Sopenharmony_cistatic const struct clk_parent_data mmss_xo_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div[] = { 4638c2ecf20Sopenharmony_ci { .fw_name = "xo", .name = "xo" }, 4648c2ecf20Sopenharmony_ci { .hw = &mmpll4_out_even.clkr.hw }, 4658c2ecf20Sopenharmony_ci { .hw = &mmpll7_out_even.clkr.hw }, 4668c2ecf20Sopenharmony_ci { .hw = &mmpll10_out_even.clkr.hw }, 4678c2ecf20Sopenharmony_ci { .fw_name = "gpll0", .name = "gpll0" }, 4688c2ecf20Sopenharmony_ci { .hw = &gpll0_div.hw }, 4698c2ecf20Sopenharmony_ci { .fw_name = "core_bi_pll_test_se", .name = "core_bi_pll_test_se" }, 4708c2ecf20Sopenharmony_ci}; 4718c2ecf20Sopenharmony_ci 4728c2ecf20Sopenharmony_cistatic const struct parent_map mmss_xo_mmpll0_mmpll7_mmpll10_gpll0_gpll0_div_map[] = { 4738c2ecf20Sopenharmony_ci { P_XO, 0 }, 4748c2ecf20Sopenharmony_ci { P_MMPLL0_OUT_EVEN, 1 }, 4758c2ecf20Sopenharmony_ci { P_MMPLL7_OUT_EVEN, 2 }, 4768c2ecf20Sopenharmony_ci { P_MMPLL10_OUT_EVEN, 3 }, 4778c2ecf20Sopenharmony_ci { P_GPLL0, 5 }, 4788c2ecf20Sopenharmony_ci { P_GPLL0_DIV, 6 }, 4798c2ecf20Sopenharmony_ci { P_CORE_BI_PLL_TEST_SE, 7 } 4808c2ecf20Sopenharmony_ci}; 4818c2ecf20Sopenharmony_ci 4828c2ecf20Sopenharmony_cistatic const struct clk_parent_data mmss_xo_mmpll0_mmpll7_mmpll10_gpll0_gpll0_div[] = { 4838c2ecf20Sopenharmony_ci { .fw_name = "xo", .name = "xo" }, 4848c2ecf20Sopenharmony_ci { .hw = &mmpll0_out_even.clkr.hw }, 4858c2ecf20Sopenharmony_ci { .hw = &mmpll7_out_even.clkr.hw }, 4868c2ecf20Sopenharmony_ci { .hw = &mmpll10_out_even.clkr.hw }, 4878c2ecf20Sopenharmony_ci { .fw_name = "gpll0", .name = "gpll0" }, 4888c2ecf20Sopenharmony_ci { .hw = &gpll0_div.hw }, 4898c2ecf20Sopenharmony_ci { .fw_name = "core_bi_pll_test_se", .name = "core_bi_pll_test_se" }, 4908c2ecf20Sopenharmony_ci}; 4918c2ecf20Sopenharmony_ci 4928c2ecf20Sopenharmony_cistatic const struct parent_map mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map[] = { 4938c2ecf20Sopenharmony_ci { P_XO, 0 }, 4948c2ecf20Sopenharmony_ci { P_MMPLL0_OUT_EVEN, 1 }, 4958c2ecf20Sopenharmony_ci { P_MMPLL4_OUT_EVEN, 2 }, 4968c2ecf20Sopenharmony_ci { P_MMPLL7_OUT_EVEN, 3 }, 4978c2ecf20Sopenharmony_ci { P_MMPLL10_OUT_EVEN, 4 }, 4988c2ecf20Sopenharmony_ci { P_GPLL0, 5 }, 4998c2ecf20Sopenharmony_ci { P_GPLL0_DIV, 6 }, 5008c2ecf20Sopenharmony_ci { P_CORE_BI_PLL_TEST_SE, 7 } 5018c2ecf20Sopenharmony_ci}; 5028c2ecf20Sopenharmony_ci 5038c2ecf20Sopenharmony_cistatic const struct clk_parent_data mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div[] = { 5048c2ecf20Sopenharmony_ci { .fw_name = "xo", .name = "xo" }, 5058c2ecf20Sopenharmony_ci { .hw = &mmpll0_out_even.clkr.hw }, 5068c2ecf20Sopenharmony_ci { .hw = &mmpll4_out_even.clkr.hw }, 5078c2ecf20Sopenharmony_ci { .hw = &mmpll7_out_even.clkr.hw }, 5088c2ecf20Sopenharmony_ci { .hw = &mmpll10_out_even.clkr.hw }, 5098c2ecf20Sopenharmony_ci { .fw_name = "gpll0", .name = "gpll0" }, 5108c2ecf20Sopenharmony_ci { .hw = &gpll0_div.hw }, 5118c2ecf20Sopenharmony_ci { .fw_name = "core_bi_pll_test_se", .name = "core_bi_pll_test_se" }, 5128c2ecf20Sopenharmony_ci}; 5138c2ecf20Sopenharmony_ci 5148c2ecf20Sopenharmony_cistatic struct clk_rcg2 byte0_clk_src = { 5158c2ecf20Sopenharmony_ci .cmd_rcgr = 0x2120, 5168c2ecf20Sopenharmony_ci .hid_width = 5, 5178c2ecf20Sopenharmony_ci .parent_map = mmss_xo_dsibyte_map, 5188c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 5198c2ecf20Sopenharmony_ci .name = "byte0_clk_src", 5208c2ecf20Sopenharmony_ci .parent_data = mmss_xo_dsibyte, 5218c2ecf20Sopenharmony_ci .num_parents = 4, 5228c2ecf20Sopenharmony_ci .ops = &clk_byte2_ops, 5238c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 5248c2ecf20Sopenharmony_ci }, 5258c2ecf20Sopenharmony_ci}; 5268c2ecf20Sopenharmony_ci 5278c2ecf20Sopenharmony_cistatic struct clk_rcg2 byte1_clk_src = { 5288c2ecf20Sopenharmony_ci .cmd_rcgr = 0x2140, 5298c2ecf20Sopenharmony_ci .hid_width = 5, 5308c2ecf20Sopenharmony_ci .parent_map = mmss_xo_dsibyte_map, 5318c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 5328c2ecf20Sopenharmony_ci .name = "byte1_clk_src", 5338c2ecf20Sopenharmony_ci .parent_data = mmss_xo_dsibyte, 5348c2ecf20Sopenharmony_ci .num_parents = 4, 5358c2ecf20Sopenharmony_ci .ops = &clk_byte2_ops, 5368c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 5378c2ecf20Sopenharmony_ci }, 5388c2ecf20Sopenharmony_ci}; 5398c2ecf20Sopenharmony_ci 5408c2ecf20Sopenharmony_cistatic const struct freq_tbl ftbl_cci_clk_src[] = { 5418c2ecf20Sopenharmony_ci F(37500000, P_GPLL0, 16, 0, 0), 5428c2ecf20Sopenharmony_ci F(50000000, P_GPLL0, 12, 0, 0), 5438c2ecf20Sopenharmony_ci F(100000000, P_GPLL0, 6, 0, 0), 5448c2ecf20Sopenharmony_ci { } 5458c2ecf20Sopenharmony_ci}; 5468c2ecf20Sopenharmony_ci 5478c2ecf20Sopenharmony_cistatic struct clk_rcg2 cci_clk_src = { 5488c2ecf20Sopenharmony_ci .cmd_rcgr = 0x3300, 5498c2ecf20Sopenharmony_ci .hid_width = 5, 5508c2ecf20Sopenharmony_ci .parent_map = mmss_xo_mmpll0_mmpll7_mmpll10_gpll0_gpll0_div_map, 5518c2ecf20Sopenharmony_ci .freq_tbl = ftbl_cci_clk_src, 5528c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 5538c2ecf20Sopenharmony_ci .name = "cci_clk_src", 5548c2ecf20Sopenharmony_ci .parent_data = mmss_xo_mmpll0_mmpll7_mmpll10_gpll0_gpll0_div, 5558c2ecf20Sopenharmony_ci .num_parents = 7, 5568c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 5578c2ecf20Sopenharmony_ci }, 5588c2ecf20Sopenharmony_ci}; 5598c2ecf20Sopenharmony_ci 5608c2ecf20Sopenharmony_cistatic const struct freq_tbl ftbl_cpp_clk_src[] = { 5618c2ecf20Sopenharmony_ci F(100000000, P_GPLL0, 6, 0, 0), 5628c2ecf20Sopenharmony_ci F(200000000, P_GPLL0, 3, 0, 0), 5638c2ecf20Sopenharmony_ci F(384000000, P_MMPLL4_OUT_EVEN, 2, 0, 0), 5648c2ecf20Sopenharmony_ci F(404000000, P_MMPLL0_OUT_EVEN, 2, 0, 0), 5658c2ecf20Sopenharmony_ci F(480000000, P_MMPLL7_OUT_EVEN, 2, 0, 0), 5668c2ecf20Sopenharmony_ci F(576000000, P_MMPLL10_OUT_EVEN, 1, 0, 0), 5678c2ecf20Sopenharmony_ci F(600000000, P_GPLL0, 1, 0, 0), 5688c2ecf20Sopenharmony_ci { } 5698c2ecf20Sopenharmony_ci}; 5708c2ecf20Sopenharmony_ci 5718c2ecf20Sopenharmony_cistatic struct clk_rcg2 cpp_clk_src = { 5728c2ecf20Sopenharmony_ci .cmd_rcgr = 0x3640, 5738c2ecf20Sopenharmony_ci .hid_width = 5, 5748c2ecf20Sopenharmony_ci .parent_map = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map, 5758c2ecf20Sopenharmony_ci .freq_tbl = ftbl_cpp_clk_src, 5768c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 5778c2ecf20Sopenharmony_ci .name = "cpp_clk_src", 5788c2ecf20Sopenharmony_ci .parent_data = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div, 5798c2ecf20Sopenharmony_ci .num_parents = 8, 5808c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 5818c2ecf20Sopenharmony_ci }, 5828c2ecf20Sopenharmony_ci}; 5838c2ecf20Sopenharmony_ci 5848c2ecf20Sopenharmony_cistatic const struct freq_tbl ftbl_csi_clk_src[] = { 5858c2ecf20Sopenharmony_ci F(164571429, P_MMPLL10_OUT_EVEN, 3.5, 0, 0), 5868c2ecf20Sopenharmony_ci F(256000000, P_MMPLL4_OUT_EVEN, 3, 0, 0), 5878c2ecf20Sopenharmony_ci F(274290000, P_MMPLL7_OUT_EVEN, 3.5, 0, 0), 5888c2ecf20Sopenharmony_ci F(300000000, P_GPLL0, 2, 0, 0), 5898c2ecf20Sopenharmony_ci F(384000000, P_MMPLL4_OUT_EVEN, 2, 0, 0), 5908c2ecf20Sopenharmony_ci F(576000000, P_MMPLL10_OUT_EVEN, 1, 0, 0), 5918c2ecf20Sopenharmony_ci { } 5928c2ecf20Sopenharmony_ci}; 5938c2ecf20Sopenharmony_ci 5948c2ecf20Sopenharmony_cistatic struct clk_rcg2 csi0_clk_src = { 5958c2ecf20Sopenharmony_ci .cmd_rcgr = 0x3090, 5968c2ecf20Sopenharmony_ci .hid_width = 5, 5978c2ecf20Sopenharmony_ci .parent_map = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map, 5988c2ecf20Sopenharmony_ci .freq_tbl = ftbl_csi_clk_src, 5998c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 6008c2ecf20Sopenharmony_ci .name = "csi0_clk_src", 6018c2ecf20Sopenharmony_ci .parent_data = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div, 6028c2ecf20Sopenharmony_ci .num_parents = 8, 6038c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 6048c2ecf20Sopenharmony_ci }, 6058c2ecf20Sopenharmony_ci}; 6068c2ecf20Sopenharmony_ci 6078c2ecf20Sopenharmony_cistatic struct clk_rcg2 csi1_clk_src = { 6088c2ecf20Sopenharmony_ci .cmd_rcgr = 0x3100, 6098c2ecf20Sopenharmony_ci .hid_width = 5, 6108c2ecf20Sopenharmony_ci .parent_map = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map, 6118c2ecf20Sopenharmony_ci .freq_tbl = ftbl_csi_clk_src, 6128c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 6138c2ecf20Sopenharmony_ci .name = "csi1_clk_src", 6148c2ecf20Sopenharmony_ci .parent_data = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div, 6158c2ecf20Sopenharmony_ci .num_parents = 8, 6168c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 6178c2ecf20Sopenharmony_ci }, 6188c2ecf20Sopenharmony_ci}; 6198c2ecf20Sopenharmony_ci 6208c2ecf20Sopenharmony_cistatic struct clk_rcg2 csi2_clk_src = { 6218c2ecf20Sopenharmony_ci .cmd_rcgr = 0x3160, 6228c2ecf20Sopenharmony_ci .hid_width = 5, 6238c2ecf20Sopenharmony_ci .parent_map = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map, 6248c2ecf20Sopenharmony_ci .freq_tbl = ftbl_csi_clk_src, 6258c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 6268c2ecf20Sopenharmony_ci .name = "csi2_clk_src", 6278c2ecf20Sopenharmony_ci .parent_data = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div, 6288c2ecf20Sopenharmony_ci .num_parents = 8, 6298c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 6308c2ecf20Sopenharmony_ci }, 6318c2ecf20Sopenharmony_ci}; 6328c2ecf20Sopenharmony_ci 6338c2ecf20Sopenharmony_cistatic struct clk_rcg2 csi3_clk_src = { 6348c2ecf20Sopenharmony_ci .cmd_rcgr = 0x31c0, 6358c2ecf20Sopenharmony_ci .hid_width = 5, 6368c2ecf20Sopenharmony_ci .parent_map = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map, 6378c2ecf20Sopenharmony_ci .freq_tbl = ftbl_csi_clk_src, 6388c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 6398c2ecf20Sopenharmony_ci .name = "csi3_clk_src", 6408c2ecf20Sopenharmony_ci .parent_data = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div, 6418c2ecf20Sopenharmony_ci .num_parents = 8, 6428c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 6438c2ecf20Sopenharmony_ci }, 6448c2ecf20Sopenharmony_ci}; 6458c2ecf20Sopenharmony_ci 6468c2ecf20Sopenharmony_cistatic const struct freq_tbl ftbl_csiphy_clk_src[] = { 6478c2ecf20Sopenharmony_ci F(164571429, P_MMPLL10_OUT_EVEN, 3.5, 0, 0), 6488c2ecf20Sopenharmony_ci F(256000000, P_MMPLL4_OUT_EVEN, 3, 0, 0), 6498c2ecf20Sopenharmony_ci F(274290000, P_MMPLL7_OUT_EVEN, 3.5, 0, 0), 6508c2ecf20Sopenharmony_ci F(300000000, P_GPLL0, 2, 0, 0), 6518c2ecf20Sopenharmony_ci F(384000000, P_MMPLL4_OUT_EVEN, 2, 0, 0), 6528c2ecf20Sopenharmony_ci { } 6538c2ecf20Sopenharmony_ci}; 6548c2ecf20Sopenharmony_ci 6558c2ecf20Sopenharmony_cistatic struct clk_rcg2 csiphy_clk_src = { 6568c2ecf20Sopenharmony_ci .cmd_rcgr = 0x3800, 6578c2ecf20Sopenharmony_ci .hid_width = 5, 6588c2ecf20Sopenharmony_ci .parent_map = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map, 6598c2ecf20Sopenharmony_ci .freq_tbl = ftbl_csiphy_clk_src, 6608c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 6618c2ecf20Sopenharmony_ci .name = "csiphy_clk_src", 6628c2ecf20Sopenharmony_ci .parent_data = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div, 6638c2ecf20Sopenharmony_ci .num_parents = 8, 6648c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 6658c2ecf20Sopenharmony_ci }, 6668c2ecf20Sopenharmony_ci}; 6678c2ecf20Sopenharmony_ci 6688c2ecf20Sopenharmony_cistatic const struct freq_tbl ftbl_csiphytimer_clk_src[] = { 6698c2ecf20Sopenharmony_ci F(200000000, P_GPLL0, 3, 0, 0), 6708c2ecf20Sopenharmony_ci F(269333333, P_MMPLL0_OUT_EVEN, 3, 0, 0), 6718c2ecf20Sopenharmony_ci { } 6728c2ecf20Sopenharmony_ci}; 6738c2ecf20Sopenharmony_ci 6748c2ecf20Sopenharmony_cistatic struct clk_rcg2 csi0phytimer_clk_src = { 6758c2ecf20Sopenharmony_ci .cmd_rcgr = 0x3000, 6768c2ecf20Sopenharmony_ci .hid_width = 5, 6778c2ecf20Sopenharmony_ci .parent_map = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map, 6788c2ecf20Sopenharmony_ci .freq_tbl = ftbl_csiphytimer_clk_src, 6798c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 6808c2ecf20Sopenharmony_ci .name = "csi0phytimer_clk_src", 6818c2ecf20Sopenharmony_ci .parent_data = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div, 6828c2ecf20Sopenharmony_ci .num_parents = 8, 6838c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 6848c2ecf20Sopenharmony_ci }, 6858c2ecf20Sopenharmony_ci}; 6868c2ecf20Sopenharmony_ci 6878c2ecf20Sopenharmony_cistatic struct clk_rcg2 csi1phytimer_clk_src = { 6888c2ecf20Sopenharmony_ci .cmd_rcgr = 0x3030, 6898c2ecf20Sopenharmony_ci .hid_width = 5, 6908c2ecf20Sopenharmony_ci .parent_map = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map, 6918c2ecf20Sopenharmony_ci .freq_tbl = ftbl_csiphytimer_clk_src, 6928c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 6938c2ecf20Sopenharmony_ci .name = "csi1phytimer_clk_src", 6948c2ecf20Sopenharmony_ci .parent_data = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div, 6958c2ecf20Sopenharmony_ci .num_parents = 8, 6968c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 6978c2ecf20Sopenharmony_ci }, 6988c2ecf20Sopenharmony_ci}; 6998c2ecf20Sopenharmony_ci 7008c2ecf20Sopenharmony_cistatic struct clk_rcg2 csi2phytimer_clk_src = { 7018c2ecf20Sopenharmony_ci .cmd_rcgr = 0x3060, 7028c2ecf20Sopenharmony_ci .hid_width = 5, 7038c2ecf20Sopenharmony_ci .parent_map = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map, 7048c2ecf20Sopenharmony_ci .freq_tbl = ftbl_csiphytimer_clk_src, 7058c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 7068c2ecf20Sopenharmony_ci .name = "csi2phytimer_clk_src", 7078c2ecf20Sopenharmony_ci .parent_data = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div, 7088c2ecf20Sopenharmony_ci .num_parents = 8, 7098c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 7108c2ecf20Sopenharmony_ci }, 7118c2ecf20Sopenharmony_ci}; 7128c2ecf20Sopenharmony_ci 7138c2ecf20Sopenharmony_cistatic const struct freq_tbl ftbl_dp_aux_clk_src[] = { 7148c2ecf20Sopenharmony_ci F(19200000, P_XO, 1, 0, 0), 7158c2ecf20Sopenharmony_ci { } 7168c2ecf20Sopenharmony_ci}; 7178c2ecf20Sopenharmony_ci 7188c2ecf20Sopenharmony_cistatic struct clk_rcg2 dp_aux_clk_src = { 7198c2ecf20Sopenharmony_ci .cmd_rcgr = 0x2260, 7208c2ecf20Sopenharmony_ci .hid_width = 5, 7218c2ecf20Sopenharmony_ci .parent_map = mmss_xo_gpll0_gpll0_div_map, 7228c2ecf20Sopenharmony_ci .freq_tbl = ftbl_dp_aux_clk_src, 7238c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 7248c2ecf20Sopenharmony_ci .name = "dp_aux_clk_src", 7258c2ecf20Sopenharmony_ci .parent_data = mmss_xo_gpll0_gpll0_div, 7268c2ecf20Sopenharmony_ci .num_parents = 4, 7278c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 7288c2ecf20Sopenharmony_ci }, 7298c2ecf20Sopenharmony_ci}; 7308c2ecf20Sopenharmony_ci 7318c2ecf20Sopenharmony_cistatic const struct freq_tbl ftbl_dp_crypto_clk_src[] = { 7328c2ecf20Sopenharmony_ci F(101250, P_DPLINK, 1, 5, 16), 7338c2ecf20Sopenharmony_ci F(168750, P_DPLINK, 1, 5, 16), 7348c2ecf20Sopenharmony_ci F(337500, P_DPLINK, 1, 5, 16), 7358c2ecf20Sopenharmony_ci { } 7368c2ecf20Sopenharmony_ci}; 7378c2ecf20Sopenharmony_ci 7388c2ecf20Sopenharmony_cistatic struct clk_rcg2 dp_crypto_clk_src = { 7398c2ecf20Sopenharmony_ci .cmd_rcgr = 0x2220, 7408c2ecf20Sopenharmony_ci .hid_width = 5, 7418c2ecf20Sopenharmony_ci .parent_map = mmss_xo_dp_map, 7428c2ecf20Sopenharmony_ci .freq_tbl = ftbl_dp_crypto_clk_src, 7438c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 7448c2ecf20Sopenharmony_ci .name = "dp_crypto_clk_src", 7458c2ecf20Sopenharmony_ci .parent_data = mmss_xo_dp, 7468c2ecf20Sopenharmony_ci .num_parents = 4, 7478c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 7488c2ecf20Sopenharmony_ci }, 7498c2ecf20Sopenharmony_ci}; 7508c2ecf20Sopenharmony_ci 7518c2ecf20Sopenharmony_cistatic const struct freq_tbl ftbl_dp_link_clk_src[] = { 7528c2ecf20Sopenharmony_ci F(162000, P_DPLINK, 2, 0, 0), 7538c2ecf20Sopenharmony_ci F(270000, P_DPLINK, 2, 0, 0), 7548c2ecf20Sopenharmony_ci F(540000, P_DPLINK, 2, 0, 0), 7558c2ecf20Sopenharmony_ci { } 7568c2ecf20Sopenharmony_ci}; 7578c2ecf20Sopenharmony_ci 7588c2ecf20Sopenharmony_cistatic struct clk_rcg2 dp_link_clk_src = { 7598c2ecf20Sopenharmony_ci .cmd_rcgr = 0x2200, 7608c2ecf20Sopenharmony_ci .hid_width = 5, 7618c2ecf20Sopenharmony_ci .parent_map = mmss_xo_dp_map, 7628c2ecf20Sopenharmony_ci .freq_tbl = ftbl_dp_link_clk_src, 7638c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 7648c2ecf20Sopenharmony_ci .name = "dp_link_clk_src", 7658c2ecf20Sopenharmony_ci .parent_data = mmss_xo_dp, 7668c2ecf20Sopenharmony_ci .num_parents = 4, 7678c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 7688c2ecf20Sopenharmony_ci }, 7698c2ecf20Sopenharmony_ci}; 7708c2ecf20Sopenharmony_ci 7718c2ecf20Sopenharmony_cistatic const struct freq_tbl ftbl_dp_pixel_clk_src[] = { 7728c2ecf20Sopenharmony_ci F(154000000, P_DPVCO, 1, 0, 0), 7738c2ecf20Sopenharmony_ci F(337500000, P_DPVCO, 2, 0, 0), 7748c2ecf20Sopenharmony_ci F(675000000, P_DPVCO, 2, 0, 0), 7758c2ecf20Sopenharmony_ci { } 7768c2ecf20Sopenharmony_ci}; 7778c2ecf20Sopenharmony_ci 7788c2ecf20Sopenharmony_cistatic struct clk_rcg2 dp_pixel_clk_src = { 7798c2ecf20Sopenharmony_ci .cmd_rcgr = 0x2240, 7808c2ecf20Sopenharmony_ci .hid_width = 5, 7818c2ecf20Sopenharmony_ci .parent_map = mmss_xo_dp_map, 7828c2ecf20Sopenharmony_ci .freq_tbl = ftbl_dp_pixel_clk_src, 7838c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 7848c2ecf20Sopenharmony_ci .name = "dp_pixel_clk_src", 7858c2ecf20Sopenharmony_ci .parent_data = mmss_xo_dp, 7868c2ecf20Sopenharmony_ci .num_parents = 4, 7878c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 7888c2ecf20Sopenharmony_ci }, 7898c2ecf20Sopenharmony_ci}; 7908c2ecf20Sopenharmony_ci 7918c2ecf20Sopenharmony_cistatic const struct freq_tbl ftbl_esc_clk_src[] = { 7928c2ecf20Sopenharmony_ci F(19200000, P_XO, 1, 0, 0), 7938c2ecf20Sopenharmony_ci { } 7948c2ecf20Sopenharmony_ci}; 7958c2ecf20Sopenharmony_ci 7968c2ecf20Sopenharmony_cistatic struct clk_rcg2 esc0_clk_src = { 7978c2ecf20Sopenharmony_ci .cmd_rcgr = 0x2160, 7988c2ecf20Sopenharmony_ci .hid_width = 5, 7998c2ecf20Sopenharmony_ci .parent_map = mmss_xo_dsibyte_map, 8008c2ecf20Sopenharmony_ci .freq_tbl = ftbl_esc_clk_src, 8018c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 8028c2ecf20Sopenharmony_ci .name = "esc0_clk_src", 8038c2ecf20Sopenharmony_ci .parent_data = mmss_xo_dsibyte, 8048c2ecf20Sopenharmony_ci .num_parents = 4, 8058c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 8068c2ecf20Sopenharmony_ci }, 8078c2ecf20Sopenharmony_ci}; 8088c2ecf20Sopenharmony_ci 8098c2ecf20Sopenharmony_cistatic struct clk_rcg2 esc1_clk_src = { 8108c2ecf20Sopenharmony_ci .cmd_rcgr = 0x2180, 8118c2ecf20Sopenharmony_ci .hid_width = 5, 8128c2ecf20Sopenharmony_ci .parent_map = mmss_xo_dsibyte_map, 8138c2ecf20Sopenharmony_ci .freq_tbl = ftbl_esc_clk_src, 8148c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 8158c2ecf20Sopenharmony_ci .name = "esc1_clk_src", 8168c2ecf20Sopenharmony_ci .parent_data = mmss_xo_dsibyte, 8178c2ecf20Sopenharmony_ci .num_parents = 4, 8188c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 8198c2ecf20Sopenharmony_ci }, 8208c2ecf20Sopenharmony_ci}; 8218c2ecf20Sopenharmony_ci 8228c2ecf20Sopenharmony_cistatic const struct freq_tbl ftbl_extpclk_clk_src[] = { 8238c2ecf20Sopenharmony_ci { .src = P_HDMIPLL }, 8248c2ecf20Sopenharmony_ci { } 8258c2ecf20Sopenharmony_ci}; 8268c2ecf20Sopenharmony_ci 8278c2ecf20Sopenharmony_cistatic struct clk_rcg2 extpclk_clk_src = { 8288c2ecf20Sopenharmony_ci .cmd_rcgr = 0x2060, 8298c2ecf20Sopenharmony_ci .hid_width = 5, 8308c2ecf20Sopenharmony_ci .parent_map = mmss_xo_hdmi_map, 8318c2ecf20Sopenharmony_ci .freq_tbl = ftbl_extpclk_clk_src, 8328c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 8338c2ecf20Sopenharmony_ci .name = "extpclk_clk_src", 8348c2ecf20Sopenharmony_ci .parent_data = mmss_xo_hdmi, 8358c2ecf20Sopenharmony_ci .num_parents = 3, 8368c2ecf20Sopenharmony_ci .ops = &clk_byte_ops, 8378c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 8388c2ecf20Sopenharmony_ci }, 8398c2ecf20Sopenharmony_ci}; 8408c2ecf20Sopenharmony_ci 8418c2ecf20Sopenharmony_cistatic const struct freq_tbl ftbl_fd_core_clk_src[] = { 8428c2ecf20Sopenharmony_ci F(100000000, P_GPLL0, 6, 0, 0), 8438c2ecf20Sopenharmony_ci F(200000000, P_GPLL0, 3, 0, 0), 8448c2ecf20Sopenharmony_ci F(404000000, P_MMPLL0_OUT_EVEN, 2, 0, 0), 8458c2ecf20Sopenharmony_ci F(480000000, P_MMPLL7_OUT_EVEN, 2, 0, 0), 8468c2ecf20Sopenharmony_ci F(576000000, P_MMPLL10_OUT_EVEN, 1, 0, 0), 8478c2ecf20Sopenharmony_ci { } 8488c2ecf20Sopenharmony_ci}; 8498c2ecf20Sopenharmony_ci 8508c2ecf20Sopenharmony_cistatic struct clk_rcg2 fd_core_clk_src = { 8518c2ecf20Sopenharmony_ci .cmd_rcgr = 0x3b00, 8528c2ecf20Sopenharmony_ci .hid_width = 5, 8538c2ecf20Sopenharmony_ci .parent_map = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map, 8548c2ecf20Sopenharmony_ci .freq_tbl = ftbl_fd_core_clk_src, 8558c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 8568c2ecf20Sopenharmony_ci .name = "fd_core_clk_src", 8578c2ecf20Sopenharmony_ci .parent_data = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div, 8588c2ecf20Sopenharmony_ci .num_parents = 8, 8598c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 8608c2ecf20Sopenharmony_ci }, 8618c2ecf20Sopenharmony_ci}; 8628c2ecf20Sopenharmony_ci 8638c2ecf20Sopenharmony_cistatic const struct freq_tbl ftbl_hdmi_clk_src[] = { 8648c2ecf20Sopenharmony_ci F(19200000, P_XO, 1, 0, 0), 8658c2ecf20Sopenharmony_ci { } 8668c2ecf20Sopenharmony_ci}; 8678c2ecf20Sopenharmony_ci 8688c2ecf20Sopenharmony_cistatic struct clk_rcg2 hdmi_clk_src = { 8698c2ecf20Sopenharmony_ci .cmd_rcgr = 0x2100, 8708c2ecf20Sopenharmony_ci .hid_width = 5, 8718c2ecf20Sopenharmony_ci .parent_map = mmss_xo_gpll0_gpll0_div_map, 8728c2ecf20Sopenharmony_ci .freq_tbl = ftbl_hdmi_clk_src, 8738c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 8748c2ecf20Sopenharmony_ci .name = "hdmi_clk_src", 8758c2ecf20Sopenharmony_ci .parent_data = mmss_xo_gpll0_gpll0_div, 8768c2ecf20Sopenharmony_ci .num_parents = 4, 8778c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 8788c2ecf20Sopenharmony_ci }, 8798c2ecf20Sopenharmony_ci}; 8808c2ecf20Sopenharmony_ci 8818c2ecf20Sopenharmony_cistatic const struct freq_tbl ftbl_jpeg0_clk_src[] = { 8828c2ecf20Sopenharmony_ci F(75000000, P_GPLL0, 8, 0, 0), 8838c2ecf20Sopenharmony_ci F(150000000, P_GPLL0, 4, 0, 0), 8848c2ecf20Sopenharmony_ci F(320000000, P_MMPLL7_OUT_EVEN, 3, 0, 0), 8858c2ecf20Sopenharmony_ci F(480000000, P_MMPLL7_OUT_EVEN, 2, 0, 0), 8868c2ecf20Sopenharmony_ci { } 8878c2ecf20Sopenharmony_ci}; 8888c2ecf20Sopenharmony_ci 8898c2ecf20Sopenharmony_cistatic struct clk_rcg2 jpeg0_clk_src = { 8908c2ecf20Sopenharmony_ci .cmd_rcgr = 0x3500, 8918c2ecf20Sopenharmony_ci .hid_width = 5, 8928c2ecf20Sopenharmony_ci .parent_map = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map, 8938c2ecf20Sopenharmony_ci .freq_tbl = ftbl_jpeg0_clk_src, 8948c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 8958c2ecf20Sopenharmony_ci .name = "jpeg0_clk_src", 8968c2ecf20Sopenharmony_ci .parent_data = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div, 8978c2ecf20Sopenharmony_ci .num_parents = 8, 8988c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 8998c2ecf20Sopenharmony_ci }, 9008c2ecf20Sopenharmony_ci}; 9018c2ecf20Sopenharmony_ci 9028c2ecf20Sopenharmony_cistatic const struct freq_tbl ftbl_maxi_clk_src[] = { 9038c2ecf20Sopenharmony_ci F(19200000, P_XO, 1, 0, 0), 9048c2ecf20Sopenharmony_ci F(75000000, P_GPLL0_DIV, 4, 0, 0), 9058c2ecf20Sopenharmony_ci F(171428571, P_GPLL0, 3.5, 0, 0), 9068c2ecf20Sopenharmony_ci F(323200000, P_MMPLL0_OUT_EVEN, 2.5, 0, 0), 9078c2ecf20Sopenharmony_ci F(406000000, P_MMPLL1_OUT_EVEN, 2, 0, 0), 9088c2ecf20Sopenharmony_ci { } 9098c2ecf20Sopenharmony_ci}; 9108c2ecf20Sopenharmony_ci 9118c2ecf20Sopenharmony_cistatic struct clk_rcg2 maxi_clk_src = { 9128c2ecf20Sopenharmony_ci .cmd_rcgr = 0xf020, 9138c2ecf20Sopenharmony_ci .hid_width = 5, 9148c2ecf20Sopenharmony_ci .parent_map = mmss_xo_mmpll0_mmpll1_gpll0_gpll0_div_map, 9158c2ecf20Sopenharmony_ci .freq_tbl = ftbl_maxi_clk_src, 9168c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 9178c2ecf20Sopenharmony_ci .name = "maxi_clk_src", 9188c2ecf20Sopenharmony_ci .parent_data = mmss_xo_mmpll0_mmpll1_gpll0_gpll0_div, 9198c2ecf20Sopenharmony_ci .num_parents = 6, 9208c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 9218c2ecf20Sopenharmony_ci }, 9228c2ecf20Sopenharmony_ci}; 9238c2ecf20Sopenharmony_ci 9248c2ecf20Sopenharmony_cistatic const struct freq_tbl ftbl_mclk_clk_src[] = { 9258c2ecf20Sopenharmony_ci F(4800000, P_XO, 4, 0, 0), 9268c2ecf20Sopenharmony_ci F(6000000, P_GPLL0_DIV, 10, 1, 5), 9278c2ecf20Sopenharmony_ci F(8000000, P_GPLL0_DIV, 1, 2, 75), 9288c2ecf20Sopenharmony_ci F(9600000, P_XO, 2, 0, 0), 9298c2ecf20Sopenharmony_ci F(16666667, P_GPLL0_DIV, 2, 1, 9), 9308c2ecf20Sopenharmony_ci F(19200000, P_XO, 1, 0, 0), 9318c2ecf20Sopenharmony_ci F(24000000, P_GPLL0_DIV, 1, 2, 25), 9328c2ecf20Sopenharmony_ci F(33333333, P_GPLL0_DIV, 1, 2, 9), 9338c2ecf20Sopenharmony_ci F(48000000, P_GPLL0, 1, 2, 25), 9348c2ecf20Sopenharmony_ci F(66666667, P_GPLL0, 1, 2, 9), 9358c2ecf20Sopenharmony_ci { } 9368c2ecf20Sopenharmony_ci}; 9378c2ecf20Sopenharmony_ci 9388c2ecf20Sopenharmony_cistatic struct clk_rcg2 mclk0_clk_src = { 9398c2ecf20Sopenharmony_ci .cmd_rcgr = 0x3360, 9408c2ecf20Sopenharmony_ci .hid_width = 5, 9418c2ecf20Sopenharmony_ci .parent_map = mmss_xo_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map, 9428c2ecf20Sopenharmony_ci .freq_tbl = ftbl_mclk_clk_src, 9438c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 9448c2ecf20Sopenharmony_ci .name = "mclk0_clk_src", 9458c2ecf20Sopenharmony_ci .parent_data = mmss_xo_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div, 9468c2ecf20Sopenharmony_ci .num_parents = 7, 9478c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 9488c2ecf20Sopenharmony_ci }, 9498c2ecf20Sopenharmony_ci}; 9508c2ecf20Sopenharmony_ci 9518c2ecf20Sopenharmony_cistatic struct clk_rcg2 mclk1_clk_src = { 9528c2ecf20Sopenharmony_ci .cmd_rcgr = 0x3390, 9538c2ecf20Sopenharmony_ci .hid_width = 5, 9548c2ecf20Sopenharmony_ci .parent_map = mmss_xo_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map, 9558c2ecf20Sopenharmony_ci .freq_tbl = ftbl_mclk_clk_src, 9568c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 9578c2ecf20Sopenharmony_ci .name = "mclk1_clk_src", 9588c2ecf20Sopenharmony_ci .parent_data = mmss_xo_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div, 9598c2ecf20Sopenharmony_ci .num_parents = 7, 9608c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 9618c2ecf20Sopenharmony_ci }, 9628c2ecf20Sopenharmony_ci}; 9638c2ecf20Sopenharmony_ci 9648c2ecf20Sopenharmony_cistatic struct clk_rcg2 mclk2_clk_src = { 9658c2ecf20Sopenharmony_ci .cmd_rcgr = 0x33c0, 9668c2ecf20Sopenharmony_ci .hid_width = 5, 9678c2ecf20Sopenharmony_ci .parent_map = mmss_xo_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map, 9688c2ecf20Sopenharmony_ci .freq_tbl = ftbl_mclk_clk_src, 9698c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 9708c2ecf20Sopenharmony_ci .name = "mclk2_clk_src", 9718c2ecf20Sopenharmony_ci .parent_data = mmss_xo_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div, 9728c2ecf20Sopenharmony_ci .num_parents = 7, 9738c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 9748c2ecf20Sopenharmony_ci }, 9758c2ecf20Sopenharmony_ci}; 9768c2ecf20Sopenharmony_ci 9778c2ecf20Sopenharmony_cistatic struct clk_rcg2 mclk3_clk_src = { 9788c2ecf20Sopenharmony_ci .cmd_rcgr = 0x33f0, 9798c2ecf20Sopenharmony_ci .hid_width = 5, 9808c2ecf20Sopenharmony_ci .parent_map = mmss_xo_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map, 9818c2ecf20Sopenharmony_ci .freq_tbl = ftbl_mclk_clk_src, 9828c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 9838c2ecf20Sopenharmony_ci .name = "mclk3_clk_src", 9848c2ecf20Sopenharmony_ci .parent_data = mmss_xo_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div, 9858c2ecf20Sopenharmony_ci .num_parents = 7, 9868c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 9878c2ecf20Sopenharmony_ci }, 9888c2ecf20Sopenharmony_ci}; 9898c2ecf20Sopenharmony_ci 9908c2ecf20Sopenharmony_cistatic const struct freq_tbl ftbl_mdp_clk_src[] = { 9918c2ecf20Sopenharmony_ci F(85714286, P_GPLL0, 7, 0, 0), 9928c2ecf20Sopenharmony_ci F(100000000, P_GPLL0, 6, 0, 0), 9938c2ecf20Sopenharmony_ci F(150000000, P_GPLL0, 4, 0, 0), 9948c2ecf20Sopenharmony_ci F(171428571, P_GPLL0, 3.5, 0, 0), 9958c2ecf20Sopenharmony_ci F(200000000, P_GPLL0, 3, 0, 0), 9968c2ecf20Sopenharmony_ci F(275000000, P_MMPLL5_OUT_EVEN, 3, 0, 0), 9978c2ecf20Sopenharmony_ci F(300000000, P_GPLL0, 2, 0, 0), 9988c2ecf20Sopenharmony_ci F(330000000, P_MMPLL5_OUT_EVEN, 2.5, 0, 0), 9998c2ecf20Sopenharmony_ci F(412500000, P_MMPLL5_OUT_EVEN, 2, 0, 0), 10008c2ecf20Sopenharmony_ci { } 10018c2ecf20Sopenharmony_ci}; 10028c2ecf20Sopenharmony_ci 10038c2ecf20Sopenharmony_cistatic struct clk_rcg2 mdp_clk_src = { 10048c2ecf20Sopenharmony_ci .cmd_rcgr = 0x2040, 10058c2ecf20Sopenharmony_ci .hid_width = 5, 10068c2ecf20Sopenharmony_ci .parent_map = mmss_xo_mmpll0_mmpll5_gpll0_gpll0_div_map, 10078c2ecf20Sopenharmony_ci .freq_tbl = ftbl_mdp_clk_src, 10088c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 10098c2ecf20Sopenharmony_ci .name = "mdp_clk_src", 10108c2ecf20Sopenharmony_ci .parent_data = mmss_xo_mmpll0_mmpll5_gpll0_gpll0_div, 10118c2ecf20Sopenharmony_ci .num_parents = 6, 10128c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 10138c2ecf20Sopenharmony_ci }, 10148c2ecf20Sopenharmony_ci}; 10158c2ecf20Sopenharmony_ci 10168c2ecf20Sopenharmony_cistatic const struct freq_tbl ftbl_vsync_clk_src[] = { 10178c2ecf20Sopenharmony_ci F(19200000, P_XO, 1, 0, 0), 10188c2ecf20Sopenharmony_ci { } 10198c2ecf20Sopenharmony_ci}; 10208c2ecf20Sopenharmony_ci 10218c2ecf20Sopenharmony_cistatic struct clk_rcg2 vsync_clk_src = { 10228c2ecf20Sopenharmony_ci .cmd_rcgr = 0x2080, 10238c2ecf20Sopenharmony_ci .hid_width = 5, 10248c2ecf20Sopenharmony_ci .parent_map = mmss_xo_gpll0_gpll0_div_map, 10258c2ecf20Sopenharmony_ci .freq_tbl = ftbl_vsync_clk_src, 10268c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 10278c2ecf20Sopenharmony_ci .name = "vsync_clk_src", 10288c2ecf20Sopenharmony_ci .parent_data = mmss_xo_gpll0_gpll0_div, 10298c2ecf20Sopenharmony_ci .num_parents = 4, 10308c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 10318c2ecf20Sopenharmony_ci }, 10328c2ecf20Sopenharmony_ci}; 10338c2ecf20Sopenharmony_ci 10348c2ecf20Sopenharmony_cistatic const struct freq_tbl ftbl_ahb_clk_src[] = { 10358c2ecf20Sopenharmony_ci F(19200000, P_XO, 1, 0, 0), 10368c2ecf20Sopenharmony_ci F(40000000, P_GPLL0, 15, 0, 0), 10378c2ecf20Sopenharmony_ci F(80800000, P_MMPLL0_OUT_EVEN, 10, 0, 0), 10388c2ecf20Sopenharmony_ci { } 10398c2ecf20Sopenharmony_ci}; 10408c2ecf20Sopenharmony_ci 10418c2ecf20Sopenharmony_cistatic struct clk_rcg2 ahb_clk_src = { 10428c2ecf20Sopenharmony_ci .cmd_rcgr = 0x5000, 10438c2ecf20Sopenharmony_ci .hid_width = 5, 10448c2ecf20Sopenharmony_ci .parent_map = mmss_xo_mmpll0_gpll0_gpll0_div_map, 10458c2ecf20Sopenharmony_ci .freq_tbl = ftbl_ahb_clk_src, 10468c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 10478c2ecf20Sopenharmony_ci .name = "ahb_clk_src", 10488c2ecf20Sopenharmony_ci .parent_data = mmss_xo_mmpll0_gpll0_gpll0_div, 10498c2ecf20Sopenharmony_ci .num_parents = 5, 10508c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 10518c2ecf20Sopenharmony_ci }, 10528c2ecf20Sopenharmony_ci}; 10538c2ecf20Sopenharmony_ci 10548c2ecf20Sopenharmony_cistatic const struct freq_tbl ftbl_axi_clk_src[] = { 10558c2ecf20Sopenharmony_ci F(75000000, P_GPLL0, 8, 0, 0), 10568c2ecf20Sopenharmony_ci F(171428571, P_GPLL0, 3.5, 0, 0), 10578c2ecf20Sopenharmony_ci F(240000000, P_GPLL0, 2.5, 0, 0), 10588c2ecf20Sopenharmony_ci F(323200000, P_MMPLL0_OUT_EVEN, 2.5, 0, 0), 10598c2ecf20Sopenharmony_ci F(406000000, P_MMPLL0_OUT_EVEN, 2, 0, 0), 10608c2ecf20Sopenharmony_ci { } 10618c2ecf20Sopenharmony_ci}; 10628c2ecf20Sopenharmony_ci 10638c2ecf20Sopenharmony_ci/* RO to linux */ 10648c2ecf20Sopenharmony_cistatic struct clk_rcg2 axi_clk_src = { 10658c2ecf20Sopenharmony_ci .cmd_rcgr = 0xd000, 10668c2ecf20Sopenharmony_ci .hid_width = 5, 10678c2ecf20Sopenharmony_ci .parent_map = mmss_xo_mmpll0_mmpll1_gpll0_gpll0_div_map, 10688c2ecf20Sopenharmony_ci .freq_tbl = ftbl_axi_clk_src, 10698c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 10708c2ecf20Sopenharmony_ci .name = "axi_clk_src", 10718c2ecf20Sopenharmony_ci .parent_data = mmss_xo_mmpll0_mmpll1_gpll0_gpll0_div, 10728c2ecf20Sopenharmony_ci .num_parents = 6, 10738c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 10748c2ecf20Sopenharmony_ci }, 10758c2ecf20Sopenharmony_ci}; 10768c2ecf20Sopenharmony_ci 10778c2ecf20Sopenharmony_cistatic struct clk_rcg2 pclk0_clk_src = { 10788c2ecf20Sopenharmony_ci .cmd_rcgr = 0x2000, 10798c2ecf20Sopenharmony_ci .mnd_width = 8, 10808c2ecf20Sopenharmony_ci .hid_width = 5, 10818c2ecf20Sopenharmony_ci .parent_map = mmss_xo_dsi0pll_dsi1pll_map, 10828c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 10838c2ecf20Sopenharmony_ci .name = "pclk0_clk_src", 10848c2ecf20Sopenharmony_ci .parent_data = mmss_xo_dsi0pll_dsi1pll, 10858c2ecf20Sopenharmony_ci .num_parents = 4, 10868c2ecf20Sopenharmony_ci .ops = &clk_pixel_ops, 10878c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 10888c2ecf20Sopenharmony_ci }, 10898c2ecf20Sopenharmony_ci}; 10908c2ecf20Sopenharmony_ci 10918c2ecf20Sopenharmony_cistatic struct clk_rcg2 pclk1_clk_src = { 10928c2ecf20Sopenharmony_ci .cmd_rcgr = 0x2020, 10938c2ecf20Sopenharmony_ci .mnd_width = 8, 10948c2ecf20Sopenharmony_ci .hid_width = 5, 10958c2ecf20Sopenharmony_ci .parent_map = mmss_xo_dsi0pll_dsi1pll_map, 10968c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 10978c2ecf20Sopenharmony_ci .name = "pclk1_clk_src", 10988c2ecf20Sopenharmony_ci .parent_data = mmss_xo_dsi0pll_dsi1pll, 10998c2ecf20Sopenharmony_ci .num_parents = 4, 11008c2ecf20Sopenharmony_ci .ops = &clk_pixel_ops, 11018c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 11028c2ecf20Sopenharmony_ci }, 11038c2ecf20Sopenharmony_ci}; 11048c2ecf20Sopenharmony_ci 11058c2ecf20Sopenharmony_cistatic const struct freq_tbl ftbl_rot_clk_src[] = { 11068c2ecf20Sopenharmony_ci F(171428571, P_GPLL0, 3.5, 0, 0), 11078c2ecf20Sopenharmony_ci F(275000000, P_MMPLL5_OUT_EVEN, 3, 0, 0), 11088c2ecf20Sopenharmony_ci F(330000000, P_MMPLL5_OUT_EVEN, 2.5, 0, 0), 11098c2ecf20Sopenharmony_ci F(412500000, P_MMPLL5_OUT_EVEN, 2, 0, 0), 11108c2ecf20Sopenharmony_ci { } 11118c2ecf20Sopenharmony_ci}; 11128c2ecf20Sopenharmony_ci 11138c2ecf20Sopenharmony_cistatic struct clk_rcg2 rot_clk_src = { 11148c2ecf20Sopenharmony_ci .cmd_rcgr = 0x21a0, 11158c2ecf20Sopenharmony_ci .hid_width = 5, 11168c2ecf20Sopenharmony_ci .parent_map = mmss_xo_mmpll0_mmpll5_gpll0_gpll0_div_map, 11178c2ecf20Sopenharmony_ci .freq_tbl = ftbl_rot_clk_src, 11188c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 11198c2ecf20Sopenharmony_ci .name = "rot_clk_src", 11208c2ecf20Sopenharmony_ci .parent_data = mmss_xo_mmpll0_mmpll5_gpll0_gpll0_div, 11218c2ecf20Sopenharmony_ci .num_parents = 6, 11228c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 11238c2ecf20Sopenharmony_ci }, 11248c2ecf20Sopenharmony_ci}; 11258c2ecf20Sopenharmony_ci 11268c2ecf20Sopenharmony_cistatic const struct freq_tbl ftbl_video_core_clk_src[] = { 11278c2ecf20Sopenharmony_ci F(200000000, P_GPLL0, 3, 0, 0), 11288c2ecf20Sopenharmony_ci F(269330000, P_MMPLL0_OUT_EVEN, 3, 0, 0), 11298c2ecf20Sopenharmony_ci F(355200000, P_MMPLL6_OUT_EVEN, 2.5, 0, 0), 11308c2ecf20Sopenharmony_ci F(444000000, P_MMPLL6_OUT_EVEN, 2, 0, 0), 11318c2ecf20Sopenharmony_ci F(533000000, P_MMPLL3_OUT_EVEN, 2, 0, 0), 11328c2ecf20Sopenharmony_ci { } 11338c2ecf20Sopenharmony_ci}; 11348c2ecf20Sopenharmony_ci 11358c2ecf20Sopenharmony_cistatic struct clk_rcg2 video_core_clk_src = { 11368c2ecf20Sopenharmony_ci .cmd_rcgr = 0x1000, 11378c2ecf20Sopenharmony_ci .hid_width = 5, 11388c2ecf20Sopenharmony_ci .parent_map = mmss_xo_mmpll0_mmpll3_mmpll6_gpll0_gpll0_div_map, 11398c2ecf20Sopenharmony_ci .freq_tbl = ftbl_video_core_clk_src, 11408c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 11418c2ecf20Sopenharmony_ci .name = "video_core_clk_src", 11428c2ecf20Sopenharmony_ci .parent_data = mmss_xo_mmpll0_mmpll3_mmpll6_gpll0_gpll0_div, 11438c2ecf20Sopenharmony_ci .num_parents = 7, 11448c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 11458c2ecf20Sopenharmony_ci }, 11468c2ecf20Sopenharmony_ci}; 11478c2ecf20Sopenharmony_ci 11488c2ecf20Sopenharmony_cistatic struct clk_rcg2 video_subcore0_clk_src = { 11498c2ecf20Sopenharmony_ci .cmd_rcgr = 0x1060, 11508c2ecf20Sopenharmony_ci .hid_width = 5, 11518c2ecf20Sopenharmony_ci .parent_map = mmss_xo_mmpll0_mmpll3_mmpll6_gpll0_gpll0_div_map, 11528c2ecf20Sopenharmony_ci .freq_tbl = ftbl_video_core_clk_src, 11538c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 11548c2ecf20Sopenharmony_ci .name = "video_subcore0_clk_src", 11558c2ecf20Sopenharmony_ci .parent_data = mmss_xo_mmpll0_mmpll3_mmpll6_gpll0_gpll0_div, 11568c2ecf20Sopenharmony_ci .num_parents = 7, 11578c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 11588c2ecf20Sopenharmony_ci }, 11598c2ecf20Sopenharmony_ci}; 11608c2ecf20Sopenharmony_ci 11618c2ecf20Sopenharmony_cistatic struct clk_rcg2 video_subcore1_clk_src = { 11628c2ecf20Sopenharmony_ci .cmd_rcgr = 0x1080, 11638c2ecf20Sopenharmony_ci .hid_width = 5, 11648c2ecf20Sopenharmony_ci .parent_map = mmss_xo_mmpll0_mmpll3_mmpll6_gpll0_gpll0_div_map, 11658c2ecf20Sopenharmony_ci .freq_tbl = ftbl_video_core_clk_src, 11668c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 11678c2ecf20Sopenharmony_ci .name = "video_subcore1_clk_src", 11688c2ecf20Sopenharmony_ci .parent_data = mmss_xo_mmpll0_mmpll3_mmpll6_gpll0_gpll0_div, 11698c2ecf20Sopenharmony_ci .num_parents = 7, 11708c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 11718c2ecf20Sopenharmony_ci }, 11728c2ecf20Sopenharmony_ci}; 11738c2ecf20Sopenharmony_ci 11748c2ecf20Sopenharmony_cistatic const struct freq_tbl ftbl_vfe_clk_src[] = { 11758c2ecf20Sopenharmony_ci F(200000000, P_GPLL0, 3, 0, 0), 11768c2ecf20Sopenharmony_ci F(300000000, P_GPLL0, 2, 0, 0), 11778c2ecf20Sopenharmony_ci F(320000000, P_MMPLL7_OUT_EVEN, 3, 0, 0), 11788c2ecf20Sopenharmony_ci F(384000000, P_MMPLL4_OUT_EVEN, 2, 0, 0), 11798c2ecf20Sopenharmony_ci F(404000000, P_MMPLL0_OUT_EVEN, 2, 0, 0), 11808c2ecf20Sopenharmony_ci F(480000000, P_MMPLL7_OUT_EVEN, 2, 0, 0), 11818c2ecf20Sopenharmony_ci F(576000000, P_MMPLL10_OUT_EVEN, 1, 0, 0), 11828c2ecf20Sopenharmony_ci F(600000000, P_GPLL0, 1, 0, 0), 11838c2ecf20Sopenharmony_ci { } 11848c2ecf20Sopenharmony_ci}; 11858c2ecf20Sopenharmony_ci 11868c2ecf20Sopenharmony_cistatic struct clk_rcg2 vfe0_clk_src = { 11878c2ecf20Sopenharmony_ci .cmd_rcgr = 0x3600, 11888c2ecf20Sopenharmony_ci .hid_width = 5, 11898c2ecf20Sopenharmony_ci .parent_map = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map, 11908c2ecf20Sopenharmony_ci .freq_tbl = ftbl_vfe_clk_src, 11918c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 11928c2ecf20Sopenharmony_ci .name = "vfe0_clk_src", 11938c2ecf20Sopenharmony_ci .parent_data = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div, 11948c2ecf20Sopenharmony_ci .num_parents = 8, 11958c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 11968c2ecf20Sopenharmony_ci }, 11978c2ecf20Sopenharmony_ci}; 11988c2ecf20Sopenharmony_ci 11998c2ecf20Sopenharmony_cistatic struct clk_rcg2 vfe1_clk_src = { 12008c2ecf20Sopenharmony_ci .cmd_rcgr = 0x3620, 12018c2ecf20Sopenharmony_ci .hid_width = 5, 12028c2ecf20Sopenharmony_ci .parent_map = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map, 12038c2ecf20Sopenharmony_ci .freq_tbl = ftbl_vfe_clk_src, 12048c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 12058c2ecf20Sopenharmony_ci .name = "vfe1_clk_src", 12068c2ecf20Sopenharmony_ci .parent_data = mmss_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div, 12078c2ecf20Sopenharmony_ci .num_parents = 8, 12088c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 12098c2ecf20Sopenharmony_ci }, 12108c2ecf20Sopenharmony_ci}; 12118c2ecf20Sopenharmony_ci 12128c2ecf20Sopenharmony_cistatic struct clk_branch misc_ahb_clk = { 12138c2ecf20Sopenharmony_ci .halt_reg = 0x328, 12148c2ecf20Sopenharmony_ci .hwcg_reg = 0x328, 12158c2ecf20Sopenharmony_ci .hwcg_bit = 1, 12168c2ecf20Sopenharmony_ci .clkr = { 12178c2ecf20Sopenharmony_ci .enable_reg = 0x328, 12188c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 12198c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 12208c2ecf20Sopenharmony_ci .name = "misc_ahb_clk", 12218c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw }, 12228c2ecf20Sopenharmony_ci .num_parents = 1, 12238c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 12248c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 12258c2ecf20Sopenharmony_ci }, 12268c2ecf20Sopenharmony_ci }, 12278c2ecf20Sopenharmony_ci}; 12288c2ecf20Sopenharmony_ci 12298c2ecf20Sopenharmony_cistatic struct clk_branch video_core_clk = { 12308c2ecf20Sopenharmony_ci .halt_reg = 0x1028, 12318c2ecf20Sopenharmony_ci .clkr = { 12328c2ecf20Sopenharmony_ci .enable_reg = 0x1028, 12338c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 12348c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 12358c2ecf20Sopenharmony_ci .name = "video_core_clk", 12368c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &video_core_clk_src.clkr.hw }, 12378c2ecf20Sopenharmony_ci .num_parents = 1, 12388c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 12398c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 12408c2ecf20Sopenharmony_ci }, 12418c2ecf20Sopenharmony_ci }, 12428c2ecf20Sopenharmony_ci}; 12438c2ecf20Sopenharmony_ci 12448c2ecf20Sopenharmony_cistatic struct clk_branch video_ahb_clk = { 12458c2ecf20Sopenharmony_ci .halt_reg = 0x1030, 12468c2ecf20Sopenharmony_ci .hwcg_reg = 0x1030, 12478c2ecf20Sopenharmony_ci .hwcg_bit = 1, 12488c2ecf20Sopenharmony_ci .clkr = { 12498c2ecf20Sopenharmony_ci .enable_reg = 0x1030, 12508c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 12518c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 12528c2ecf20Sopenharmony_ci .name = "video_ahb_clk", 12538c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw }, 12548c2ecf20Sopenharmony_ci .num_parents = 1, 12558c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 12568c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 12578c2ecf20Sopenharmony_ci }, 12588c2ecf20Sopenharmony_ci }, 12598c2ecf20Sopenharmony_ci}; 12608c2ecf20Sopenharmony_ci 12618c2ecf20Sopenharmony_cistatic struct clk_branch video_axi_clk = { 12628c2ecf20Sopenharmony_ci .halt_reg = 0x1034, 12638c2ecf20Sopenharmony_ci .clkr = { 12648c2ecf20Sopenharmony_ci .enable_reg = 0x1034, 12658c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 12668c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 12678c2ecf20Sopenharmony_ci .name = "video_axi_clk", 12688c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &axi_clk_src.clkr.hw }, 12698c2ecf20Sopenharmony_ci .num_parents = 1, 12708c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 12718c2ecf20Sopenharmony_ci }, 12728c2ecf20Sopenharmony_ci }, 12738c2ecf20Sopenharmony_ci}; 12748c2ecf20Sopenharmony_ci 12758c2ecf20Sopenharmony_cistatic struct clk_branch video_maxi_clk = { 12768c2ecf20Sopenharmony_ci .halt_reg = 0x1038, 12778c2ecf20Sopenharmony_ci .clkr = { 12788c2ecf20Sopenharmony_ci .enable_reg = 0x1038, 12798c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 12808c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 12818c2ecf20Sopenharmony_ci .name = "video_maxi_clk", 12828c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &maxi_clk_src.clkr.hw }, 12838c2ecf20Sopenharmony_ci .num_parents = 1, 12848c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 12858c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 12868c2ecf20Sopenharmony_ci }, 12878c2ecf20Sopenharmony_ci }, 12888c2ecf20Sopenharmony_ci}; 12898c2ecf20Sopenharmony_ci 12908c2ecf20Sopenharmony_cistatic struct clk_branch video_subcore0_clk = { 12918c2ecf20Sopenharmony_ci .halt_reg = 0x1048, 12928c2ecf20Sopenharmony_ci .clkr = { 12938c2ecf20Sopenharmony_ci .enable_reg = 0x1048, 12948c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 12958c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 12968c2ecf20Sopenharmony_ci .name = "video_subcore0_clk", 12978c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &video_subcore0_clk_src.clkr.hw }, 12988c2ecf20Sopenharmony_ci .num_parents = 1, 12998c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 13008c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 13018c2ecf20Sopenharmony_ci }, 13028c2ecf20Sopenharmony_ci }, 13038c2ecf20Sopenharmony_ci}; 13048c2ecf20Sopenharmony_ci 13058c2ecf20Sopenharmony_cistatic struct clk_branch video_subcore1_clk = { 13068c2ecf20Sopenharmony_ci .halt_reg = 0x104c, 13078c2ecf20Sopenharmony_ci .clkr = { 13088c2ecf20Sopenharmony_ci .enable_reg = 0x104c, 13098c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 13108c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 13118c2ecf20Sopenharmony_ci .name = "video_subcore1_clk", 13128c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &video_subcore1_clk_src.clkr.hw }, 13138c2ecf20Sopenharmony_ci .num_parents = 1, 13148c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 13158c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 13168c2ecf20Sopenharmony_ci }, 13178c2ecf20Sopenharmony_ci }, 13188c2ecf20Sopenharmony_ci}; 13198c2ecf20Sopenharmony_ci 13208c2ecf20Sopenharmony_cistatic struct clk_branch mdss_ahb_clk = { 13218c2ecf20Sopenharmony_ci .halt_reg = 0x2308, 13228c2ecf20Sopenharmony_ci .hwcg_reg = 0x2308, 13238c2ecf20Sopenharmony_ci .hwcg_bit = 1, 13248c2ecf20Sopenharmony_ci .clkr = { 13258c2ecf20Sopenharmony_ci .enable_reg = 0x2308, 13268c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 13278c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 13288c2ecf20Sopenharmony_ci .name = "mdss_ahb_clk", 13298c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw }, 13308c2ecf20Sopenharmony_ci .num_parents = 1, 13318c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 13328c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 13338c2ecf20Sopenharmony_ci }, 13348c2ecf20Sopenharmony_ci }, 13358c2ecf20Sopenharmony_ci}; 13368c2ecf20Sopenharmony_ci 13378c2ecf20Sopenharmony_cistatic struct clk_branch mdss_hdmi_dp_ahb_clk = { 13388c2ecf20Sopenharmony_ci .halt_reg = 0x230c, 13398c2ecf20Sopenharmony_ci .clkr = { 13408c2ecf20Sopenharmony_ci .enable_reg = 0x230c, 13418c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 13428c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 13438c2ecf20Sopenharmony_ci .name = "mdss_hdmi_dp_ahb_clk", 13448c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw }, 13458c2ecf20Sopenharmony_ci .num_parents = 1, 13468c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 13478c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 13488c2ecf20Sopenharmony_ci }, 13498c2ecf20Sopenharmony_ci }, 13508c2ecf20Sopenharmony_ci}; 13518c2ecf20Sopenharmony_ci 13528c2ecf20Sopenharmony_cistatic struct clk_branch mdss_axi_clk = { 13538c2ecf20Sopenharmony_ci .halt_reg = 0x2310, 13548c2ecf20Sopenharmony_ci .clkr = { 13558c2ecf20Sopenharmony_ci .enable_reg = 0x2310, 13568c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 13578c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 13588c2ecf20Sopenharmony_ci .name = "mdss_axi_clk", 13598c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &axi_clk_src.clkr.hw }, 13608c2ecf20Sopenharmony_ci .num_parents = 1, 13618c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 13628c2ecf20Sopenharmony_ci }, 13638c2ecf20Sopenharmony_ci }, 13648c2ecf20Sopenharmony_ci}; 13658c2ecf20Sopenharmony_ci 13668c2ecf20Sopenharmony_cistatic struct clk_branch mdss_pclk0_clk = { 13678c2ecf20Sopenharmony_ci .halt_reg = 0x2314, 13688c2ecf20Sopenharmony_ci .clkr = { 13698c2ecf20Sopenharmony_ci .enable_reg = 0x2314, 13708c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 13718c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 13728c2ecf20Sopenharmony_ci .name = "mdss_pclk0_clk", 13738c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &pclk0_clk_src.clkr.hw }, 13748c2ecf20Sopenharmony_ci .num_parents = 1, 13758c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 13768c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 13778c2ecf20Sopenharmony_ci }, 13788c2ecf20Sopenharmony_ci }, 13798c2ecf20Sopenharmony_ci}; 13808c2ecf20Sopenharmony_ci 13818c2ecf20Sopenharmony_cistatic struct clk_branch mdss_pclk1_clk = { 13828c2ecf20Sopenharmony_ci .halt_reg = 0x2318, 13838c2ecf20Sopenharmony_ci .clkr = { 13848c2ecf20Sopenharmony_ci .enable_reg = 0x2318, 13858c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 13868c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 13878c2ecf20Sopenharmony_ci .name = "mdss_pclk1_clk", 13888c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &pclk1_clk_src.clkr.hw }, 13898c2ecf20Sopenharmony_ci .num_parents = 1, 13908c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 13918c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 13928c2ecf20Sopenharmony_ci }, 13938c2ecf20Sopenharmony_ci }, 13948c2ecf20Sopenharmony_ci}; 13958c2ecf20Sopenharmony_ci 13968c2ecf20Sopenharmony_cistatic struct clk_branch mdss_mdp_clk = { 13978c2ecf20Sopenharmony_ci .halt_reg = 0x231c, 13988c2ecf20Sopenharmony_ci .clkr = { 13998c2ecf20Sopenharmony_ci .enable_reg = 0x231c, 14008c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 14018c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 14028c2ecf20Sopenharmony_ci .name = "mdss_mdp_clk", 14038c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &mdp_clk_src.clkr.hw }, 14048c2ecf20Sopenharmony_ci .num_parents = 1, 14058c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 14068c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 14078c2ecf20Sopenharmony_ci }, 14088c2ecf20Sopenharmony_ci }, 14098c2ecf20Sopenharmony_ci}; 14108c2ecf20Sopenharmony_ci 14118c2ecf20Sopenharmony_cistatic struct clk_branch mdss_mdp_lut_clk = { 14128c2ecf20Sopenharmony_ci .halt_reg = 0x2320, 14138c2ecf20Sopenharmony_ci .clkr = { 14148c2ecf20Sopenharmony_ci .enable_reg = 0x2320, 14158c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 14168c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 14178c2ecf20Sopenharmony_ci .name = "mdss_mdp_lut_clk", 14188c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &mdp_clk_src.clkr.hw }, 14198c2ecf20Sopenharmony_ci .num_parents = 1, 14208c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 14218c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 14228c2ecf20Sopenharmony_ci }, 14238c2ecf20Sopenharmony_ci }, 14248c2ecf20Sopenharmony_ci}; 14258c2ecf20Sopenharmony_ci 14268c2ecf20Sopenharmony_cistatic struct clk_branch mdss_extpclk_clk = { 14278c2ecf20Sopenharmony_ci .halt_reg = 0x2324, 14288c2ecf20Sopenharmony_ci .clkr = { 14298c2ecf20Sopenharmony_ci .enable_reg = 0x2324, 14308c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 14318c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 14328c2ecf20Sopenharmony_ci .name = "mdss_extpclk_clk", 14338c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &extpclk_clk_src.clkr.hw }, 14348c2ecf20Sopenharmony_ci .num_parents = 1, 14358c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 14368c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 14378c2ecf20Sopenharmony_ci }, 14388c2ecf20Sopenharmony_ci }, 14398c2ecf20Sopenharmony_ci}; 14408c2ecf20Sopenharmony_ci 14418c2ecf20Sopenharmony_cistatic struct clk_branch mdss_vsync_clk = { 14428c2ecf20Sopenharmony_ci .halt_reg = 0x2328, 14438c2ecf20Sopenharmony_ci .clkr = { 14448c2ecf20Sopenharmony_ci .enable_reg = 0x2328, 14458c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 14468c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 14478c2ecf20Sopenharmony_ci .name = "mdss_vsync_clk", 14488c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &vsync_clk_src.clkr.hw }, 14498c2ecf20Sopenharmony_ci .num_parents = 1, 14508c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 14518c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 14528c2ecf20Sopenharmony_ci }, 14538c2ecf20Sopenharmony_ci }, 14548c2ecf20Sopenharmony_ci}; 14558c2ecf20Sopenharmony_ci 14568c2ecf20Sopenharmony_cistatic struct clk_branch mdss_hdmi_clk = { 14578c2ecf20Sopenharmony_ci .halt_reg = 0x2338, 14588c2ecf20Sopenharmony_ci .clkr = { 14598c2ecf20Sopenharmony_ci .enable_reg = 0x2338, 14608c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 14618c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 14628c2ecf20Sopenharmony_ci .name = "mdss_hdmi_clk", 14638c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &hdmi_clk_src.clkr.hw }, 14648c2ecf20Sopenharmony_ci .num_parents = 1, 14658c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 14668c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 14678c2ecf20Sopenharmony_ci }, 14688c2ecf20Sopenharmony_ci }, 14698c2ecf20Sopenharmony_ci}; 14708c2ecf20Sopenharmony_ci 14718c2ecf20Sopenharmony_cistatic struct clk_branch mdss_byte0_clk = { 14728c2ecf20Sopenharmony_ci .halt_reg = 0x233c, 14738c2ecf20Sopenharmony_ci .clkr = { 14748c2ecf20Sopenharmony_ci .enable_reg = 0x233c, 14758c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 14768c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 14778c2ecf20Sopenharmony_ci .name = "mdss_byte0_clk", 14788c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &byte0_clk_src.clkr.hw }, 14798c2ecf20Sopenharmony_ci .num_parents = 1, 14808c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 14818c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 14828c2ecf20Sopenharmony_ci }, 14838c2ecf20Sopenharmony_ci }, 14848c2ecf20Sopenharmony_ci}; 14858c2ecf20Sopenharmony_ci 14868c2ecf20Sopenharmony_cistatic struct clk_branch mdss_byte1_clk = { 14878c2ecf20Sopenharmony_ci .halt_reg = 0x2340, 14888c2ecf20Sopenharmony_ci .clkr = { 14898c2ecf20Sopenharmony_ci .enable_reg = 0x2340, 14908c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 14918c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 14928c2ecf20Sopenharmony_ci .name = "mdss_byte1_clk", 14938c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &byte1_clk_src.clkr.hw }, 14948c2ecf20Sopenharmony_ci .num_parents = 1, 14958c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 14968c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 14978c2ecf20Sopenharmony_ci }, 14988c2ecf20Sopenharmony_ci }, 14998c2ecf20Sopenharmony_ci}; 15008c2ecf20Sopenharmony_ci 15018c2ecf20Sopenharmony_cistatic struct clk_branch mdss_esc0_clk = { 15028c2ecf20Sopenharmony_ci .halt_reg = 0x2344, 15038c2ecf20Sopenharmony_ci .clkr = { 15048c2ecf20Sopenharmony_ci .enable_reg = 0x2344, 15058c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 15068c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 15078c2ecf20Sopenharmony_ci .name = "mdss_esc0_clk", 15088c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &esc0_clk_src.clkr.hw }, 15098c2ecf20Sopenharmony_ci .num_parents = 1, 15108c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 15118c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 15128c2ecf20Sopenharmony_ci }, 15138c2ecf20Sopenharmony_ci }, 15148c2ecf20Sopenharmony_ci}; 15158c2ecf20Sopenharmony_ci 15168c2ecf20Sopenharmony_cistatic struct clk_branch mdss_esc1_clk = { 15178c2ecf20Sopenharmony_ci .halt_reg = 0x2348, 15188c2ecf20Sopenharmony_ci .clkr = { 15198c2ecf20Sopenharmony_ci .enable_reg = 0x2348, 15208c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 15218c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 15228c2ecf20Sopenharmony_ci .name = "mdss_esc1_clk", 15238c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &esc1_clk_src.clkr.hw }, 15248c2ecf20Sopenharmony_ci .num_parents = 1, 15258c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 15268c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 15278c2ecf20Sopenharmony_ci }, 15288c2ecf20Sopenharmony_ci }, 15298c2ecf20Sopenharmony_ci}; 15308c2ecf20Sopenharmony_ci 15318c2ecf20Sopenharmony_cistatic struct clk_branch mdss_rot_clk = { 15328c2ecf20Sopenharmony_ci .halt_reg = 0x2350, 15338c2ecf20Sopenharmony_ci .clkr = { 15348c2ecf20Sopenharmony_ci .enable_reg = 0x2350, 15358c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 15368c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 15378c2ecf20Sopenharmony_ci .name = "mdss_rot_clk", 15388c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &rot_clk_src.clkr.hw }, 15398c2ecf20Sopenharmony_ci .num_parents = 1, 15408c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 15418c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 15428c2ecf20Sopenharmony_ci }, 15438c2ecf20Sopenharmony_ci }, 15448c2ecf20Sopenharmony_ci}; 15458c2ecf20Sopenharmony_ci 15468c2ecf20Sopenharmony_cistatic struct clk_branch mdss_dp_link_clk = { 15478c2ecf20Sopenharmony_ci .halt_reg = 0x2354, 15488c2ecf20Sopenharmony_ci .clkr = { 15498c2ecf20Sopenharmony_ci .enable_reg = 0x2354, 15508c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 15518c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 15528c2ecf20Sopenharmony_ci .name = "mdss_dp_link_clk", 15538c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &dp_link_clk_src.clkr.hw }, 15548c2ecf20Sopenharmony_ci .num_parents = 1, 15558c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 15568c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 15578c2ecf20Sopenharmony_ci }, 15588c2ecf20Sopenharmony_ci }, 15598c2ecf20Sopenharmony_ci}; 15608c2ecf20Sopenharmony_ci 15618c2ecf20Sopenharmony_cistatic struct clk_branch mdss_dp_link_intf_clk = { 15628c2ecf20Sopenharmony_ci .halt_reg = 0x2358, 15638c2ecf20Sopenharmony_ci .clkr = { 15648c2ecf20Sopenharmony_ci .enable_reg = 0x2358, 15658c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 15668c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 15678c2ecf20Sopenharmony_ci .name = "mdss_dp_link_intf_clk", 15688c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &dp_link_clk_src.clkr.hw }, 15698c2ecf20Sopenharmony_ci .num_parents = 1, 15708c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 15718c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 15728c2ecf20Sopenharmony_ci }, 15738c2ecf20Sopenharmony_ci }, 15748c2ecf20Sopenharmony_ci}; 15758c2ecf20Sopenharmony_ci 15768c2ecf20Sopenharmony_cistatic struct clk_branch mdss_dp_crypto_clk = { 15778c2ecf20Sopenharmony_ci .halt_reg = 0x235c, 15788c2ecf20Sopenharmony_ci .clkr = { 15798c2ecf20Sopenharmony_ci .enable_reg = 0x235c, 15808c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 15818c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 15828c2ecf20Sopenharmony_ci .name = "mdss_dp_crypto_clk", 15838c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &dp_crypto_clk_src.clkr.hw }, 15848c2ecf20Sopenharmony_ci .num_parents = 1, 15858c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 15868c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 15878c2ecf20Sopenharmony_ci }, 15888c2ecf20Sopenharmony_ci }, 15898c2ecf20Sopenharmony_ci}; 15908c2ecf20Sopenharmony_ci 15918c2ecf20Sopenharmony_cistatic struct clk_branch mdss_dp_pixel_clk = { 15928c2ecf20Sopenharmony_ci .halt_reg = 0x2360, 15938c2ecf20Sopenharmony_ci .clkr = { 15948c2ecf20Sopenharmony_ci .enable_reg = 0x2360, 15958c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 15968c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 15978c2ecf20Sopenharmony_ci .name = "mdss_dp_pixel_clk", 15988c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &dp_pixel_clk_src.clkr.hw }, 15998c2ecf20Sopenharmony_ci .num_parents = 1, 16008c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 16018c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 16028c2ecf20Sopenharmony_ci }, 16038c2ecf20Sopenharmony_ci }, 16048c2ecf20Sopenharmony_ci}; 16058c2ecf20Sopenharmony_ci 16068c2ecf20Sopenharmony_cistatic struct clk_branch mdss_dp_aux_clk = { 16078c2ecf20Sopenharmony_ci .halt_reg = 0x2364, 16088c2ecf20Sopenharmony_ci .clkr = { 16098c2ecf20Sopenharmony_ci .enable_reg = 0x2364, 16108c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 16118c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 16128c2ecf20Sopenharmony_ci .name = "mdss_dp_aux_clk", 16138c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &dp_aux_clk_src.clkr.hw }, 16148c2ecf20Sopenharmony_ci .num_parents = 1, 16158c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 16168c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 16178c2ecf20Sopenharmony_ci }, 16188c2ecf20Sopenharmony_ci }, 16198c2ecf20Sopenharmony_ci}; 16208c2ecf20Sopenharmony_ci 16218c2ecf20Sopenharmony_cistatic struct clk_branch mdss_byte0_intf_clk = { 16228c2ecf20Sopenharmony_ci .halt_reg = 0x2374, 16238c2ecf20Sopenharmony_ci .clkr = { 16248c2ecf20Sopenharmony_ci .enable_reg = 0x2374, 16258c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 16268c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 16278c2ecf20Sopenharmony_ci .name = "mdss_byte0_intf_clk", 16288c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &byte0_clk_src.clkr.hw }, 16298c2ecf20Sopenharmony_ci .num_parents = 1, 16308c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 16318c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 16328c2ecf20Sopenharmony_ci }, 16338c2ecf20Sopenharmony_ci }, 16348c2ecf20Sopenharmony_ci}; 16358c2ecf20Sopenharmony_ci 16368c2ecf20Sopenharmony_cistatic struct clk_branch mdss_byte1_intf_clk = { 16378c2ecf20Sopenharmony_ci .halt_reg = 0x2378, 16388c2ecf20Sopenharmony_ci .clkr = { 16398c2ecf20Sopenharmony_ci .enable_reg = 0x2378, 16408c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 16418c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 16428c2ecf20Sopenharmony_ci .name = "mdss_byte1_intf_clk", 16438c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &byte1_clk_src.clkr.hw }, 16448c2ecf20Sopenharmony_ci .num_parents = 1, 16458c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 16468c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 16478c2ecf20Sopenharmony_ci }, 16488c2ecf20Sopenharmony_ci }, 16498c2ecf20Sopenharmony_ci}; 16508c2ecf20Sopenharmony_ci 16518c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi0phytimer_clk = { 16528c2ecf20Sopenharmony_ci .halt_reg = 0x3024, 16538c2ecf20Sopenharmony_ci .clkr = { 16548c2ecf20Sopenharmony_ci .enable_reg = 0x3024, 16558c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 16568c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 16578c2ecf20Sopenharmony_ci .name = "camss_csi0phytimer_clk", 16588c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &csi0phytimer_clk_src.clkr.hw }, 16598c2ecf20Sopenharmony_ci .num_parents = 1, 16608c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 16618c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 16628c2ecf20Sopenharmony_ci }, 16638c2ecf20Sopenharmony_ci }, 16648c2ecf20Sopenharmony_ci}; 16658c2ecf20Sopenharmony_ci 16668c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi1phytimer_clk = { 16678c2ecf20Sopenharmony_ci .halt_reg = 0x3054, 16688c2ecf20Sopenharmony_ci .clkr = { 16698c2ecf20Sopenharmony_ci .enable_reg = 0x3054, 16708c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 16718c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 16728c2ecf20Sopenharmony_ci .name = "camss_csi1phytimer_clk", 16738c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &csi1phytimer_clk_src.clkr.hw }, 16748c2ecf20Sopenharmony_ci .num_parents = 1, 16758c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 16768c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 16778c2ecf20Sopenharmony_ci }, 16788c2ecf20Sopenharmony_ci }, 16798c2ecf20Sopenharmony_ci}; 16808c2ecf20Sopenharmony_ci 16818c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi2phytimer_clk = { 16828c2ecf20Sopenharmony_ci .halt_reg = 0x3084, 16838c2ecf20Sopenharmony_ci .clkr = { 16848c2ecf20Sopenharmony_ci .enable_reg = 0x3084, 16858c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 16868c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 16878c2ecf20Sopenharmony_ci .name = "camss_csi2phytimer_clk", 16888c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &csi2phytimer_clk_src.clkr.hw }, 16898c2ecf20Sopenharmony_ci .num_parents = 1, 16908c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 16918c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 16928c2ecf20Sopenharmony_ci }, 16938c2ecf20Sopenharmony_ci }, 16948c2ecf20Sopenharmony_ci}; 16958c2ecf20Sopenharmony_ci 16968c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi0_clk = { 16978c2ecf20Sopenharmony_ci .halt_reg = 0x30b4, 16988c2ecf20Sopenharmony_ci .clkr = { 16998c2ecf20Sopenharmony_ci .enable_reg = 0x30b4, 17008c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 17018c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 17028c2ecf20Sopenharmony_ci .name = "camss_csi0_clk", 17038c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &csi0_clk_src.clkr.hw }, 17048c2ecf20Sopenharmony_ci .num_parents = 1, 17058c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 17068c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 17078c2ecf20Sopenharmony_ci }, 17088c2ecf20Sopenharmony_ci }, 17098c2ecf20Sopenharmony_ci}; 17108c2ecf20Sopenharmony_ci 17118c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi0_ahb_clk = { 17128c2ecf20Sopenharmony_ci .halt_reg = 0x30bc, 17138c2ecf20Sopenharmony_ci .clkr = { 17148c2ecf20Sopenharmony_ci .enable_reg = 0x30bc, 17158c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 17168c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 17178c2ecf20Sopenharmony_ci .name = "camss_csi0_ahb_clk", 17188c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw }, 17198c2ecf20Sopenharmony_ci .num_parents = 1, 17208c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 17218c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 17228c2ecf20Sopenharmony_ci }, 17238c2ecf20Sopenharmony_ci }, 17248c2ecf20Sopenharmony_ci}; 17258c2ecf20Sopenharmony_ci 17268c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi0rdi_clk = { 17278c2ecf20Sopenharmony_ci .halt_reg = 0x30d4, 17288c2ecf20Sopenharmony_ci .clkr = { 17298c2ecf20Sopenharmony_ci .enable_reg = 0x30d4, 17308c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 17318c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 17328c2ecf20Sopenharmony_ci .name = "camss_csi0rdi_clk", 17338c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &csi0_clk_src.clkr.hw }, 17348c2ecf20Sopenharmony_ci .num_parents = 1, 17358c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 17368c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 17378c2ecf20Sopenharmony_ci }, 17388c2ecf20Sopenharmony_ci }, 17398c2ecf20Sopenharmony_ci}; 17408c2ecf20Sopenharmony_ci 17418c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi0pix_clk = { 17428c2ecf20Sopenharmony_ci .halt_reg = 0x30e4, 17438c2ecf20Sopenharmony_ci .clkr = { 17448c2ecf20Sopenharmony_ci .enable_reg = 0x30e4, 17458c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 17468c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 17478c2ecf20Sopenharmony_ci .name = "camss_csi0pix_clk", 17488c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &csi0_clk_src.clkr.hw }, 17498c2ecf20Sopenharmony_ci .num_parents = 1, 17508c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 17518c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 17528c2ecf20Sopenharmony_ci }, 17538c2ecf20Sopenharmony_ci }, 17548c2ecf20Sopenharmony_ci}; 17558c2ecf20Sopenharmony_ci 17568c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi1_clk = { 17578c2ecf20Sopenharmony_ci .halt_reg = 0x3124, 17588c2ecf20Sopenharmony_ci .clkr = { 17598c2ecf20Sopenharmony_ci .enable_reg = 0x3124, 17608c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 17618c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 17628c2ecf20Sopenharmony_ci .name = "camss_csi1_clk", 17638c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &csi1_clk_src.clkr.hw }, 17648c2ecf20Sopenharmony_ci .num_parents = 1, 17658c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 17668c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 17678c2ecf20Sopenharmony_ci }, 17688c2ecf20Sopenharmony_ci }, 17698c2ecf20Sopenharmony_ci}; 17708c2ecf20Sopenharmony_ci 17718c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi1_ahb_clk = { 17728c2ecf20Sopenharmony_ci .halt_reg = 0x3128, 17738c2ecf20Sopenharmony_ci .clkr = { 17748c2ecf20Sopenharmony_ci .enable_reg = 0x3128, 17758c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 17768c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 17778c2ecf20Sopenharmony_ci .name = "camss_csi1_ahb_clk", 17788c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw }, 17798c2ecf20Sopenharmony_ci .num_parents = 1, 17808c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 17818c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 17828c2ecf20Sopenharmony_ci }, 17838c2ecf20Sopenharmony_ci }, 17848c2ecf20Sopenharmony_ci}; 17858c2ecf20Sopenharmony_ci 17868c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi1rdi_clk = { 17878c2ecf20Sopenharmony_ci .halt_reg = 0x3144, 17888c2ecf20Sopenharmony_ci .clkr = { 17898c2ecf20Sopenharmony_ci .enable_reg = 0x3144, 17908c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 17918c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 17928c2ecf20Sopenharmony_ci .name = "camss_csi1rdi_clk", 17938c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &csi1_clk_src.clkr.hw }, 17948c2ecf20Sopenharmony_ci .num_parents = 1, 17958c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 17968c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 17978c2ecf20Sopenharmony_ci }, 17988c2ecf20Sopenharmony_ci }, 17998c2ecf20Sopenharmony_ci}; 18008c2ecf20Sopenharmony_ci 18018c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi1pix_clk = { 18028c2ecf20Sopenharmony_ci .halt_reg = 0x3154, 18038c2ecf20Sopenharmony_ci .clkr = { 18048c2ecf20Sopenharmony_ci .enable_reg = 0x3154, 18058c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 18068c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 18078c2ecf20Sopenharmony_ci .name = "camss_csi1pix_clk", 18088c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &csi1_clk_src.clkr.hw }, 18098c2ecf20Sopenharmony_ci .num_parents = 1, 18108c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 18118c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 18128c2ecf20Sopenharmony_ci }, 18138c2ecf20Sopenharmony_ci }, 18148c2ecf20Sopenharmony_ci}; 18158c2ecf20Sopenharmony_ci 18168c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi2_clk = { 18178c2ecf20Sopenharmony_ci .halt_reg = 0x3184, 18188c2ecf20Sopenharmony_ci .clkr = { 18198c2ecf20Sopenharmony_ci .enable_reg = 0x3184, 18208c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 18218c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 18228c2ecf20Sopenharmony_ci .name = "camss_csi2_clk", 18238c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &csi2_clk_src.clkr.hw }, 18248c2ecf20Sopenharmony_ci .num_parents = 1, 18258c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 18268c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 18278c2ecf20Sopenharmony_ci }, 18288c2ecf20Sopenharmony_ci }, 18298c2ecf20Sopenharmony_ci}; 18308c2ecf20Sopenharmony_ci 18318c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi2_ahb_clk = { 18328c2ecf20Sopenharmony_ci .halt_reg = 0x3188, 18338c2ecf20Sopenharmony_ci .clkr = { 18348c2ecf20Sopenharmony_ci .enable_reg = 0x3188, 18358c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 18368c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 18378c2ecf20Sopenharmony_ci .name = "camss_csi2_ahb_clk", 18388c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw }, 18398c2ecf20Sopenharmony_ci .num_parents = 1, 18408c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 18418c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 18428c2ecf20Sopenharmony_ci }, 18438c2ecf20Sopenharmony_ci }, 18448c2ecf20Sopenharmony_ci}; 18458c2ecf20Sopenharmony_ci 18468c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi2rdi_clk = { 18478c2ecf20Sopenharmony_ci .halt_reg = 0x31a4, 18488c2ecf20Sopenharmony_ci .clkr = { 18498c2ecf20Sopenharmony_ci .enable_reg = 0x31a4, 18508c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 18518c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 18528c2ecf20Sopenharmony_ci .name = "camss_csi2rdi_clk", 18538c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &csi2_clk_src.clkr.hw }, 18548c2ecf20Sopenharmony_ci .num_parents = 1, 18558c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 18568c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 18578c2ecf20Sopenharmony_ci }, 18588c2ecf20Sopenharmony_ci }, 18598c2ecf20Sopenharmony_ci}; 18608c2ecf20Sopenharmony_ci 18618c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi2pix_clk = { 18628c2ecf20Sopenharmony_ci .halt_reg = 0x31b4, 18638c2ecf20Sopenharmony_ci .clkr = { 18648c2ecf20Sopenharmony_ci .enable_reg = 0x31b4, 18658c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 18668c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 18678c2ecf20Sopenharmony_ci .name = "camss_csi2pix_clk", 18688c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &csi2_clk_src.clkr.hw }, 18698c2ecf20Sopenharmony_ci .num_parents = 1, 18708c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 18718c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 18728c2ecf20Sopenharmony_ci }, 18738c2ecf20Sopenharmony_ci }, 18748c2ecf20Sopenharmony_ci}; 18758c2ecf20Sopenharmony_ci 18768c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi3_clk = { 18778c2ecf20Sopenharmony_ci .halt_reg = 0x31e4, 18788c2ecf20Sopenharmony_ci .clkr = { 18798c2ecf20Sopenharmony_ci .enable_reg = 0x31e4, 18808c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 18818c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 18828c2ecf20Sopenharmony_ci .name = "camss_csi3_clk", 18838c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &csi3_clk_src.clkr.hw }, 18848c2ecf20Sopenharmony_ci .num_parents = 1, 18858c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 18868c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 18878c2ecf20Sopenharmony_ci }, 18888c2ecf20Sopenharmony_ci }, 18898c2ecf20Sopenharmony_ci}; 18908c2ecf20Sopenharmony_ci 18918c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi3_ahb_clk = { 18928c2ecf20Sopenharmony_ci .halt_reg = 0x31e8, 18938c2ecf20Sopenharmony_ci .clkr = { 18948c2ecf20Sopenharmony_ci .enable_reg = 0x31e8, 18958c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 18968c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 18978c2ecf20Sopenharmony_ci .name = "camss_csi3_ahb_clk", 18988c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw }, 18998c2ecf20Sopenharmony_ci .num_parents = 1, 19008c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 19018c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 19028c2ecf20Sopenharmony_ci }, 19038c2ecf20Sopenharmony_ci }, 19048c2ecf20Sopenharmony_ci}; 19058c2ecf20Sopenharmony_ci 19068c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi3rdi_clk = { 19078c2ecf20Sopenharmony_ci .halt_reg = 0x3204, 19088c2ecf20Sopenharmony_ci .clkr = { 19098c2ecf20Sopenharmony_ci .enable_reg = 0x3204, 19108c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 19118c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 19128c2ecf20Sopenharmony_ci .name = "camss_csi3rdi_clk", 19138c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &csi3_clk_src.clkr.hw }, 19148c2ecf20Sopenharmony_ci .num_parents = 1, 19158c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 19168c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 19178c2ecf20Sopenharmony_ci }, 19188c2ecf20Sopenharmony_ci }, 19198c2ecf20Sopenharmony_ci}; 19208c2ecf20Sopenharmony_ci 19218c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi3pix_clk = { 19228c2ecf20Sopenharmony_ci .halt_reg = 0x3214, 19238c2ecf20Sopenharmony_ci .clkr = { 19248c2ecf20Sopenharmony_ci .enable_reg = 0x3214, 19258c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 19268c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 19278c2ecf20Sopenharmony_ci .name = "camss_csi3pix_clk", 19288c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &csi3_clk_src.clkr.hw }, 19298c2ecf20Sopenharmony_ci .num_parents = 1, 19308c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 19318c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 19328c2ecf20Sopenharmony_ci }, 19338c2ecf20Sopenharmony_ci }, 19348c2ecf20Sopenharmony_ci}; 19358c2ecf20Sopenharmony_ci 19368c2ecf20Sopenharmony_cistatic struct clk_branch camss_ispif_ahb_clk = { 19378c2ecf20Sopenharmony_ci .halt_reg = 0x3224, 19388c2ecf20Sopenharmony_ci .clkr = { 19398c2ecf20Sopenharmony_ci .enable_reg = 0x3224, 19408c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 19418c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 19428c2ecf20Sopenharmony_ci .name = "camss_ispif_ahb_clk", 19438c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw }, 19448c2ecf20Sopenharmony_ci .num_parents = 1, 19458c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 19468c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 19478c2ecf20Sopenharmony_ci }, 19488c2ecf20Sopenharmony_ci }, 19498c2ecf20Sopenharmony_ci}; 19508c2ecf20Sopenharmony_ci 19518c2ecf20Sopenharmony_cistatic struct clk_branch camss_cci_clk = { 19528c2ecf20Sopenharmony_ci .halt_reg = 0x3344, 19538c2ecf20Sopenharmony_ci .clkr = { 19548c2ecf20Sopenharmony_ci .enable_reg = 0x3344, 19558c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 19568c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 19578c2ecf20Sopenharmony_ci .name = "camss_cci_clk", 19588c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &cci_clk_src.clkr.hw }, 19598c2ecf20Sopenharmony_ci .num_parents = 1, 19608c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 19618c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 19628c2ecf20Sopenharmony_ci }, 19638c2ecf20Sopenharmony_ci }, 19648c2ecf20Sopenharmony_ci}; 19658c2ecf20Sopenharmony_ci 19668c2ecf20Sopenharmony_cistatic struct clk_branch camss_cci_ahb_clk = { 19678c2ecf20Sopenharmony_ci .halt_reg = 0x3348, 19688c2ecf20Sopenharmony_ci .clkr = { 19698c2ecf20Sopenharmony_ci .enable_reg = 0x3348, 19708c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 19718c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 19728c2ecf20Sopenharmony_ci .name = "camss_cci_ahb_clk", 19738c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw }, 19748c2ecf20Sopenharmony_ci .num_parents = 1, 19758c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 19768c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 19778c2ecf20Sopenharmony_ci }, 19788c2ecf20Sopenharmony_ci }, 19798c2ecf20Sopenharmony_ci}; 19808c2ecf20Sopenharmony_ci 19818c2ecf20Sopenharmony_cistatic struct clk_branch camss_mclk0_clk = { 19828c2ecf20Sopenharmony_ci .halt_reg = 0x3384, 19838c2ecf20Sopenharmony_ci .clkr = { 19848c2ecf20Sopenharmony_ci .enable_reg = 0x3384, 19858c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 19868c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 19878c2ecf20Sopenharmony_ci .name = "camss_mclk0_clk", 19888c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &mclk0_clk_src.clkr.hw }, 19898c2ecf20Sopenharmony_ci .num_parents = 1, 19908c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 19918c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 19928c2ecf20Sopenharmony_ci }, 19938c2ecf20Sopenharmony_ci }, 19948c2ecf20Sopenharmony_ci}; 19958c2ecf20Sopenharmony_ci 19968c2ecf20Sopenharmony_cistatic struct clk_branch camss_mclk1_clk = { 19978c2ecf20Sopenharmony_ci .halt_reg = 0x33b4, 19988c2ecf20Sopenharmony_ci .clkr = { 19998c2ecf20Sopenharmony_ci .enable_reg = 0x33b4, 20008c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 20018c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 20028c2ecf20Sopenharmony_ci .name = "camss_mclk1_clk", 20038c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &mclk1_clk_src.clkr.hw }, 20048c2ecf20Sopenharmony_ci .num_parents = 1, 20058c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 20068c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 20078c2ecf20Sopenharmony_ci }, 20088c2ecf20Sopenharmony_ci }, 20098c2ecf20Sopenharmony_ci}; 20108c2ecf20Sopenharmony_ci 20118c2ecf20Sopenharmony_cistatic struct clk_branch camss_mclk2_clk = { 20128c2ecf20Sopenharmony_ci .halt_reg = 0x33e4, 20138c2ecf20Sopenharmony_ci .clkr = { 20148c2ecf20Sopenharmony_ci .enable_reg = 0x33e4, 20158c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 20168c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 20178c2ecf20Sopenharmony_ci .name = "camss_mclk2_clk", 20188c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &mclk2_clk_src.clkr.hw }, 20198c2ecf20Sopenharmony_ci .num_parents = 1, 20208c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 20218c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 20228c2ecf20Sopenharmony_ci }, 20238c2ecf20Sopenharmony_ci }, 20248c2ecf20Sopenharmony_ci}; 20258c2ecf20Sopenharmony_ci 20268c2ecf20Sopenharmony_cistatic struct clk_branch camss_mclk3_clk = { 20278c2ecf20Sopenharmony_ci .halt_reg = 0x3414, 20288c2ecf20Sopenharmony_ci .clkr = { 20298c2ecf20Sopenharmony_ci .enable_reg = 0x3414, 20308c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 20318c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 20328c2ecf20Sopenharmony_ci .name = "camss_mclk3_clk", 20338c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &mclk3_clk_src.clkr.hw }, 20348c2ecf20Sopenharmony_ci .num_parents = 1, 20358c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 20368c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 20378c2ecf20Sopenharmony_ci }, 20388c2ecf20Sopenharmony_ci }, 20398c2ecf20Sopenharmony_ci}; 20408c2ecf20Sopenharmony_ci 20418c2ecf20Sopenharmony_cistatic struct clk_branch camss_top_ahb_clk = { 20428c2ecf20Sopenharmony_ci .halt_reg = 0x3484, 20438c2ecf20Sopenharmony_ci .clkr = { 20448c2ecf20Sopenharmony_ci .enable_reg = 0x3484, 20458c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 20468c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 20478c2ecf20Sopenharmony_ci .name = "camss_top_ahb_clk", 20488c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw }, 20498c2ecf20Sopenharmony_ci .num_parents = 1, 20508c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 20518c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 20528c2ecf20Sopenharmony_ci }, 20538c2ecf20Sopenharmony_ci }, 20548c2ecf20Sopenharmony_ci}; 20558c2ecf20Sopenharmony_ci 20568c2ecf20Sopenharmony_cistatic struct clk_branch camss_ahb_clk = { 20578c2ecf20Sopenharmony_ci .halt_reg = 0x348c, 20588c2ecf20Sopenharmony_ci .clkr = { 20598c2ecf20Sopenharmony_ci .enable_reg = 0x348c, 20608c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 20618c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 20628c2ecf20Sopenharmony_ci .name = "camss_ahb_clk", 20638c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw }, 20648c2ecf20Sopenharmony_ci .num_parents = 1, 20658c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 20668c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 20678c2ecf20Sopenharmony_ci }, 20688c2ecf20Sopenharmony_ci }, 20698c2ecf20Sopenharmony_ci}; 20708c2ecf20Sopenharmony_ci 20718c2ecf20Sopenharmony_cistatic struct clk_branch camss_micro_ahb_clk = { 20728c2ecf20Sopenharmony_ci .halt_reg = 0x3494, 20738c2ecf20Sopenharmony_ci .clkr = { 20748c2ecf20Sopenharmony_ci .enable_reg = 0x3494, 20758c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 20768c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 20778c2ecf20Sopenharmony_ci .name = "camss_micro_ahb_clk", 20788c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw }, 20798c2ecf20Sopenharmony_ci .num_parents = 1, 20808c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 20818c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 20828c2ecf20Sopenharmony_ci }, 20838c2ecf20Sopenharmony_ci }, 20848c2ecf20Sopenharmony_ci}; 20858c2ecf20Sopenharmony_ci 20868c2ecf20Sopenharmony_cistatic struct clk_branch camss_jpeg0_clk = { 20878c2ecf20Sopenharmony_ci .halt_reg = 0x35a8, 20888c2ecf20Sopenharmony_ci .clkr = { 20898c2ecf20Sopenharmony_ci .enable_reg = 0x35a8, 20908c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 20918c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 20928c2ecf20Sopenharmony_ci .name = "camss_jpeg0_clk", 20938c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &jpeg0_clk_src.clkr.hw }, 20948c2ecf20Sopenharmony_ci .num_parents = 1, 20958c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 20968c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 20978c2ecf20Sopenharmony_ci }, 20988c2ecf20Sopenharmony_ci }, 20998c2ecf20Sopenharmony_ci}; 21008c2ecf20Sopenharmony_ci 21018c2ecf20Sopenharmony_cistatic struct clk_branch camss_jpeg_ahb_clk = { 21028c2ecf20Sopenharmony_ci .halt_reg = 0x35b4, 21038c2ecf20Sopenharmony_ci .clkr = { 21048c2ecf20Sopenharmony_ci .enable_reg = 0x35b4, 21058c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 21068c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 21078c2ecf20Sopenharmony_ci .name = "camss_jpeg_ahb_clk", 21088c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw }, 21098c2ecf20Sopenharmony_ci .num_parents = 1, 21108c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 21118c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 21128c2ecf20Sopenharmony_ci }, 21138c2ecf20Sopenharmony_ci }, 21148c2ecf20Sopenharmony_ci}; 21158c2ecf20Sopenharmony_ci 21168c2ecf20Sopenharmony_cistatic struct clk_branch camss_jpeg_axi_clk = { 21178c2ecf20Sopenharmony_ci .halt_reg = 0x35b8, 21188c2ecf20Sopenharmony_ci .clkr = { 21198c2ecf20Sopenharmony_ci .enable_reg = 0x35b8, 21208c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 21218c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 21228c2ecf20Sopenharmony_ci .name = "camss_jpeg_axi_clk", 21238c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &axi_clk_src.clkr.hw }, 21248c2ecf20Sopenharmony_ci .num_parents = 1, 21258c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 21268c2ecf20Sopenharmony_ci }, 21278c2ecf20Sopenharmony_ci }, 21288c2ecf20Sopenharmony_ci}; 21298c2ecf20Sopenharmony_ci 21308c2ecf20Sopenharmony_cistatic struct clk_branch camss_vfe0_ahb_clk = { 21318c2ecf20Sopenharmony_ci .halt_reg = 0x3668, 21328c2ecf20Sopenharmony_ci .clkr = { 21338c2ecf20Sopenharmony_ci .enable_reg = 0x3668, 21348c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 21358c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 21368c2ecf20Sopenharmony_ci .name = "camss_vfe0_ahb_clk", 21378c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw }, 21388c2ecf20Sopenharmony_ci .num_parents = 1, 21398c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 21408c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 21418c2ecf20Sopenharmony_ci }, 21428c2ecf20Sopenharmony_ci }, 21438c2ecf20Sopenharmony_ci}; 21448c2ecf20Sopenharmony_ci 21458c2ecf20Sopenharmony_cistatic struct clk_branch camss_vfe1_ahb_clk = { 21468c2ecf20Sopenharmony_ci .halt_reg = 0x3678, 21478c2ecf20Sopenharmony_ci .clkr = { 21488c2ecf20Sopenharmony_ci .enable_reg = 0x3678, 21498c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 21508c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 21518c2ecf20Sopenharmony_ci .name = "camss_vfe1_ahb_clk", 21528c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw }, 21538c2ecf20Sopenharmony_ci .num_parents = 1, 21548c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 21558c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 21568c2ecf20Sopenharmony_ci }, 21578c2ecf20Sopenharmony_ci }, 21588c2ecf20Sopenharmony_ci}; 21598c2ecf20Sopenharmony_ci 21608c2ecf20Sopenharmony_cistatic struct clk_branch camss_vfe0_clk = { 21618c2ecf20Sopenharmony_ci .halt_reg = 0x36a8, 21628c2ecf20Sopenharmony_ci .clkr = { 21638c2ecf20Sopenharmony_ci .enable_reg = 0x36a8, 21648c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 21658c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 21668c2ecf20Sopenharmony_ci .name = "camss_vfe0_clk", 21678c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &vfe0_clk_src.clkr.hw }, 21688c2ecf20Sopenharmony_ci .num_parents = 1, 21698c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 21708c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 21718c2ecf20Sopenharmony_ci }, 21728c2ecf20Sopenharmony_ci }, 21738c2ecf20Sopenharmony_ci}; 21748c2ecf20Sopenharmony_ci 21758c2ecf20Sopenharmony_cistatic struct clk_branch camss_vfe1_clk = { 21768c2ecf20Sopenharmony_ci .halt_reg = 0x36ac, 21778c2ecf20Sopenharmony_ci .clkr = { 21788c2ecf20Sopenharmony_ci .enable_reg = 0x36ac, 21798c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 21808c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 21818c2ecf20Sopenharmony_ci .name = "camss_vfe1_clk", 21828c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &vfe1_clk_src.clkr.hw }, 21838c2ecf20Sopenharmony_ci .num_parents = 1, 21848c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 21858c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 21868c2ecf20Sopenharmony_ci }, 21878c2ecf20Sopenharmony_ci }, 21888c2ecf20Sopenharmony_ci}; 21898c2ecf20Sopenharmony_ci 21908c2ecf20Sopenharmony_cistatic struct clk_branch camss_cpp_clk = { 21918c2ecf20Sopenharmony_ci .halt_reg = 0x36b0, 21928c2ecf20Sopenharmony_ci .clkr = { 21938c2ecf20Sopenharmony_ci .enable_reg = 0x36b0, 21948c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 21958c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 21968c2ecf20Sopenharmony_ci .name = "camss_cpp_clk", 21978c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &cpp_clk_src.clkr.hw }, 21988c2ecf20Sopenharmony_ci .num_parents = 1, 21998c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 22008c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 22018c2ecf20Sopenharmony_ci }, 22028c2ecf20Sopenharmony_ci }, 22038c2ecf20Sopenharmony_ci}; 22048c2ecf20Sopenharmony_ci 22058c2ecf20Sopenharmony_cistatic struct clk_branch camss_cpp_ahb_clk = { 22068c2ecf20Sopenharmony_ci .halt_reg = 0x36b4, 22078c2ecf20Sopenharmony_ci .clkr = { 22088c2ecf20Sopenharmony_ci .enable_reg = 0x36b4, 22098c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 22108c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 22118c2ecf20Sopenharmony_ci .name = "camss_cpp_ahb_clk", 22128c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw }, 22138c2ecf20Sopenharmony_ci .num_parents = 1, 22148c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 22158c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 22168c2ecf20Sopenharmony_ci }, 22178c2ecf20Sopenharmony_ci }, 22188c2ecf20Sopenharmony_ci}; 22198c2ecf20Sopenharmony_ci 22208c2ecf20Sopenharmony_cistatic struct clk_branch camss_vfe_vbif_ahb_clk = { 22218c2ecf20Sopenharmony_ci .halt_reg = 0x36b8, 22228c2ecf20Sopenharmony_ci .clkr = { 22238c2ecf20Sopenharmony_ci .enable_reg = 0x36b8, 22248c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 22258c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 22268c2ecf20Sopenharmony_ci .name = "camss_vfe_vbif_ahb_clk", 22278c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw }, 22288c2ecf20Sopenharmony_ci .num_parents = 1, 22298c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 22308c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 22318c2ecf20Sopenharmony_ci }, 22328c2ecf20Sopenharmony_ci }, 22338c2ecf20Sopenharmony_ci}; 22348c2ecf20Sopenharmony_ci 22358c2ecf20Sopenharmony_cistatic struct clk_branch camss_vfe_vbif_axi_clk = { 22368c2ecf20Sopenharmony_ci .halt_reg = 0x36bc, 22378c2ecf20Sopenharmony_ci .clkr = { 22388c2ecf20Sopenharmony_ci .enable_reg = 0x36bc, 22398c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 22408c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 22418c2ecf20Sopenharmony_ci .name = "camss_vfe_vbif_axi_clk", 22428c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &axi_clk_src.clkr.hw }, 22438c2ecf20Sopenharmony_ci .num_parents = 1, 22448c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 22458c2ecf20Sopenharmony_ci }, 22468c2ecf20Sopenharmony_ci }, 22478c2ecf20Sopenharmony_ci}; 22488c2ecf20Sopenharmony_ci 22498c2ecf20Sopenharmony_cistatic struct clk_branch camss_cpp_axi_clk = { 22508c2ecf20Sopenharmony_ci .halt_reg = 0x36c4, 22518c2ecf20Sopenharmony_ci .clkr = { 22528c2ecf20Sopenharmony_ci .enable_reg = 0x36c4, 22538c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 22548c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 22558c2ecf20Sopenharmony_ci .name = "camss_cpp_axi_clk", 22568c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &axi_clk_src.clkr.hw }, 22578c2ecf20Sopenharmony_ci .num_parents = 1, 22588c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 22598c2ecf20Sopenharmony_ci }, 22608c2ecf20Sopenharmony_ci }, 22618c2ecf20Sopenharmony_ci}; 22628c2ecf20Sopenharmony_ci 22638c2ecf20Sopenharmony_cistatic struct clk_branch camss_cpp_vbif_ahb_clk = { 22648c2ecf20Sopenharmony_ci .halt_reg = 0x36c8, 22658c2ecf20Sopenharmony_ci .clkr = { 22668c2ecf20Sopenharmony_ci .enable_reg = 0x36c8, 22678c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 22688c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 22698c2ecf20Sopenharmony_ci .name = "camss_cpp_vbif_ahb_clk", 22708c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw }, 22718c2ecf20Sopenharmony_ci .num_parents = 1, 22728c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 22738c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 22748c2ecf20Sopenharmony_ci }, 22758c2ecf20Sopenharmony_ci }, 22768c2ecf20Sopenharmony_ci}; 22778c2ecf20Sopenharmony_ci 22788c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi_vfe0_clk = { 22798c2ecf20Sopenharmony_ci .halt_reg = 0x3704, 22808c2ecf20Sopenharmony_ci .clkr = { 22818c2ecf20Sopenharmony_ci .enable_reg = 0x3704, 22828c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 22838c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 22848c2ecf20Sopenharmony_ci .name = "camss_csi_vfe0_clk", 22858c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &vfe0_clk_src.clkr.hw }, 22868c2ecf20Sopenharmony_ci .num_parents = 1, 22878c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 22888c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 22898c2ecf20Sopenharmony_ci }, 22908c2ecf20Sopenharmony_ci }, 22918c2ecf20Sopenharmony_ci}; 22928c2ecf20Sopenharmony_ci 22938c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi_vfe1_clk = { 22948c2ecf20Sopenharmony_ci .halt_reg = 0x3714, 22958c2ecf20Sopenharmony_ci .clkr = { 22968c2ecf20Sopenharmony_ci .enable_reg = 0x3714, 22978c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 22988c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 22998c2ecf20Sopenharmony_ci .name = "camss_csi_vfe1_clk", 23008c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &vfe1_clk_src.clkr.hw }, 23018c2ecf20Sopenharmony_ci .num_parents = 1, 23028c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 23038c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 23048c2ecf20Sopenharmony_ci }, 23058c2ecf20Sopenharmony_ci }, 23068c2ecf20Sopenharmony_ci}; 23078c2ecf20Sopenharmony_ci 23088c2ecf20Sopenharmony_cistatic struct clk_branch camss_vfe0_stream_clk = { 23098c2ecf20Sopenharmony_ci .halt_reg = 0x3720, 23108c2ecf20Sopenharmony_ci .clkr = { 23118c2ecf20Sopenharmony_ci .enable_reg = 0x3720, 23128c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 23138c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 23148c2ecf20Sopenharmony_ci .name = "camss_vfe0_stream_clk", 23158c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &vfe0_clk_src.clkr.hw }, 23168c2ecf20Sopenharmony_ci .num_parents = 1, 23178c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 23188c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 23198c2ecf20Sopenharmony_ci }, 23208c2ecf20Sopenharmony_ci }, 23218c2ecf20Sopenharmony_ci}; 23228c2ecf20Sopenharmony_ci 23238c2ecf20Sopenharmony_cistatic struct clk_branch camss_vfe1_stream_clk = { 23248c2ecf20Sopenharmony_ci .halt_reg = 0x3724, 23258c2ecf20Sopenharmony_ci .clkr = { 23268c2ecf20Sopenharmony_ci .enable_reg = 0x3724, 23278c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 23288c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 23298c2ecf20Sopenharmony_ci .name = "camss_vfe1_stream_clk", 23308c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &vfe1_clk_src.clkr.hw }, 23318c2ecf20Sopenharmony_ci .num_parents = 1, 23328c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 23338c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 23348c2ecf20Sopenharmony_ci }, 23358c2ecf20Sopenharmony_ci }, 23368c2ecf20Sopenharmony_ci}; 23378c2ecf20Sopenharmony_ci 23388c2ecf20Sopenharmony_cistatic struct clk_branch camss_cphy_csid0_clk = { 23398c2ecf20Sopenharmony_ci .halt_reg = 0x3730, 23408c2ecf20Sopenharmony_ci .clkr = { 23418c2ecf20Sopenharmony_ci .enable_reg = 0x3730, 23428c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 23438c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 23448c2ecf20Sopenharmony_ci .name = "camss_cphy_csid0_clk", 23458c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &csiphy_clk_src.clkr.hw }, 23468c2ecf20Sopenharmony_ci .num_parents = 1, 23478c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 23488c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 23498c2ecf20Sopenharmony_ci }, 23508c2ecf20Sopenharmony_ci }, 23518c2ecf20Sopenharmony_ci}; 23528c2ecf20Sopenharmony_ci 23538c2ecf20Sopenharmony_cistatic struct clk_branch camss_cphy_csid1_clk = { 23548c2ecf20Sopenharmony_ci .halt_reg = 0x3734, 23558c2ecf20Sopenharmony_ci .clkr = { 23568c2ecf20Sopenharmony_ci .enable_reg = 0x3734, 23578c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 23588c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 23598c2ecf20Sopenharmony_ci .name = "camss_cphy_csid1_clk", 23608c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &csiphy_clk_src.clkr.hw }, 23618c2ecf20Sopenharmony_ci .num_parents = 1, 23628c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 23638c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 23648c2ecf20Sopenharmony_ci }, 23658c2ecf20Sopenharmony_ci }, 23668c2ecf20Sopenharmony_ci}; 23678c2ecf20Sopenharmony_ci 23688c2ecf20Sopenharmony_cistatic struct clk_branch camss_cphy_csid2_clk = { 23698c2ecf20Sopenharmony_ci .halt_reg = 0x3738, 23708c2ecf20Sopenharmony_ci .clkr = { 23718c2ecf20Sopenharmony_ci .enable_reg = 0x3738, 23728c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 23738c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 23748c2ecf20Sopenharmony_ci .name = "camss_cphy_csid2_clk", 23758c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &csiphy_clk_src.clkr.hw }, 23768c2ecf20Sopenharmony_ci .num_parents = 1, 23778c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 23788c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 23798c2ecf20Sopenharmony_ci }, 23808c2ecf20Sopenharmony_ci }, 23818c2ecf20Sopenharmony_ci}; 23828c2ecf20Sopenharmony_ci 23838c2ecf20Sopenharmony_cistatic struct clk_branch camss_cphy_csid3_clk = { 23848c2ecf20Sopenharmony_ci .halt_reg = 0x373c, 23858c2ecf20Sopenharmony_ci .clkr = { 23868c2ecf20Sopenharmony_ci .enable_reg = 0x373c, 23878c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 23888c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 23898c2ecf20Sopenharmony_ci .name = "camss_cphy_csid3_clk", 23908c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &csiphy_clk_src.clkr.hw }, 23918c2ecf20Sopenharmony_ci .num_parents = 1, 23928c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 23938c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 23948c2ecf20Sopenharmony_ci }, 23958c2ecf20Sopenharmony_ci }, 23968c2ecf20Sopenharmony_ci}; 23978c2ecf20Sopenharmony_ci 23988c2ecf20Sopenharmony_cistatic struct clk_branch camss_csiphy0_clk = { 23998c2ecf20Sopenharmony_ci .halt_reg = 0x3740, 24008c2ecf20Sopenharmony_ci .clkr = { 24018c2ecf20Sopenharmony_ci .enable_reg = 0x3740, 24028c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 24038c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 24048c2ecf20Sopenharmony_ci .name = "camss_csiphy0_clk", 24058c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &csiphy_clk_src.clkr.hw }, 24068c2ecf20Sopenharmony_ci .num_parents = 1, 24078c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 24088c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 24098c2ecf20Sopenharmony_ci }, 24108c2ecf20Sopenharmony_ci }, 24118c2ecf20Sopenharmony_ci}; 24128c2ecf20Sopenharmony_ci 24138c2ecf20Sopenharmony_cistatic struct clk_branch camss_csiphy1_clk = { 24148c2ecf20Sopenharmony_ci .halt_reg = 0x3744, 24158c2ecf20Sopenharmony_ci .clkr = { 24168c2ecf20Sopenharmony_ci .enable_reg = 0x3744, 24178c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 24188c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 24198c2ecf20Sopenharmony_ci .name = "camss_csiphy1_clk", 24208c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &csiphy_clk_src.clkr.hw }, 24218c2ecf20Sopenharmony_ci .num_parents = 1, 24228c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 24238c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 24248c2ecf20Sopenharmony_ci }, 24258c2ecf20Sopenharmony_ci }, 24268c2ecf20Sopenharmony_ci}; 24278c2ecf20Sopenharmony_ci 24288c2ecf20Sopenharmony_cistatic struct clk_branch camss_csiphy2_clk = { 24298c2ecf20Sopenharmony_ci .halt_reg = 0x3748, 24308c2ecf20Sopenharmony_ci .clkr = { 24318c2ecf20Sopenharmony_ci .enable_reg = 0x3748, 24328c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 24338c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 24348c2ecf20Sopenharmony_ci .name = "camss_csiphy2_clk", 24358c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &csiphy_clk_src.clkr.hw }, 24368c2ecf20Sopenharmony_ci .num_parents = 1, 24378c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 24388c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 24398c2ecf20Sopenharmony_ci }, 24408c2ecf20Sopenharmony_ci }, 24418c2ecf20Sopenharmony_ci}; 24428c2ecf20Sopenharmony_ci 24438c2ecf20Sopenharmony_cistatic struct clk_branch fd_core_clk = { 24448c2ecf20Sopenharmony_ci .halt_reg = 0x3b68, 24458c2ecf20Sopenharmony_ci .clkr = { 24468c2ecf20Sopenharmony_ci .enable_reg = 0x3b68, 24478c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 24488c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 24498c2ecf20Sopenharmony_ci .name = "fd_core_clk", 24508c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &fd_core_clk_src.clkr.hw }, 24518c2ecf20Sopenharmony_ci .num_parents = 1, 24528c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 24538c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 24548c2ecf20Sopenharmony_ci }, 24558c2ecf20Sopenharmony_ci }, 24568c2ecf20Sopenharmony_ci}; 24578c2ecf20Sopenharmony_ci 24588c2ecf20Sopenharmony_cistatic struct clk_branch fd_core_uar_clk = { 24598c2ecf20Sopenharmony_ci .halt_reg = 0x3b6c, 24608c2ecf20Sopenharmony_ci .clkr = { 24618c2ecf20Sopenharmony_ci .enable_reg = 0x3b6c, 24628c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 24638c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 24648c2ecf20Sopenharmony_ci .name = "fd_core_uar_clk", 24658c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &fd_core_clk_src.clkr.hw }, 24668c2ecf20Sopenharmony_ci .num_parents = 1, 24678c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 24688c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 24698c2ecf20Sopenharmony_ci }, 24708c2ecf20Sopenharmony_ci }, 24718c2ecf20Sopenharmony_ci}; 24728c2ecf20Sopenharmony_ci 24738c2ecf20Sopenharmony_cistatic struct clk_branch fd_ahb_clk = { 24748c2ecf20Sopenharmony_ci .halt_reg = 0x3b74, 24758c2ecf20Sopenharmony_ci .clkr = { 24768c2ecf20Sopenharmony_ci .enable_reg = 0x3b74, 24778c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 24788c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 24798c2ecf20Sopenharmony_ci .name = "fd_ahb_clk", 24808c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw }, 24818c2ecf20Sopenharmony_ci .num_parents = 1, 24828c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 24838c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 24848c2ecf20Sopenharmony_ci }, 24858c2ecf20Sopenharmony_ci }, 24868c2ecf20Sopenharmony_ci}; 24878c2ecf20Sopenharmony_ci 24888c2ecf20Sopenharmony_cistatic struct clk_branch mnoc_ahb_clk = { 24898c2ecf20Sopenharmony_ci .halt_reg = 0x5024, 24908c2ecf20Sopenharmony_ci .halt_check = BRANCH_HALT_SKIP, 24918c2ecf20Sopenharmony_ci .clkr = { 24928c2ecf20Sopenharmony_ci .enable_reg = 0x5024, 24938c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 24948c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 24958c2ecf20Sopenharmony_ci .name = "mnoc_ahb_clk", 24968c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw }, 24978c2ecf20Sopenharmony_ci .num_parents = 1, 24988c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 24998c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 25008c2ecf20Sopenharmony_ci }, 25018c2ecf20Sopenharmony_ci }, 25028c2ecf20Sopenharmony_ci}; 25038c2ecf20Sopenharmony_ci 25048c2ecf20Sopenharmony_cistatic struct clk_branch bimc_smmu_ahb_clk = { 25058c2ecf20Sopenharmony_ci .halt_reg = 0xe004, 25068c2ecf20Sopenharmony_ci .halt_check = BRANCH_HALT_SKIP, 25078c2ecf20Sopenharmony_ci .hwcg_reg = 0xe004, 25088c2ecf20Sopenharmony_ci .hwcg_bit = 1, 25098c2ecf20Sopenharmony_ci .clkr = { 25108c2ecf20Sopenharmony_ci .enable_reg = 0xe004, 25118c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 25128c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 25138c2ecf20Sopenharmony_ci .name = "bimc_smmu_ahb_clk", 25148c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw }, 25158c2ecf20Sopenharmony_ci .num_parents = 1, 25168c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 25178c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 25188c2ecf20Sopenharmony_ci }, 25198c2ecf20Sopenharmony_ci }, 25208c2ecf20Sopenharmony_ci}; 25218c2ecf20Sopenharmony_ci 25228c2ecf20Sopenharmony_cistatic struct clk_branch bimc_smmu_axi_clk = { 25238c2ecf20Sopenharmony_ci .halt_reg = 0xe008, 25248c2ecf20Sopenharmony_ci .halt_check = BRANCH_HALT_SKIP, 25258c2ecf20Sopenharmony_ci .hwcg_reg = 0xe008, 25268c2ecf20Sopenharmony_ci .hwcg_bit = 1, 25278c2ecf20Sopenharmony_ci .clkr = { 25288c2ecf20Sopenharmony_ci .enable_reg = 0xe008, 25298c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 25308c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 25318c2ecf20Sopenharmony_ci .name = "bimc_smmu_axi_clk", 25328c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &axi_clk_src.clkr.hw }, 25338c2ecf20Sopenharmony_ci .num_parents = 1, 25348c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 25358c2ecf20Sopenharmony_ci }, 25368c2ecf20Sopenharmony_ci }, 25378c2ecf20Sopenharmony_ci}; 25388c2ecf20Sopenharmony_ci 25398c2ecf20Sopenharmony_cistatic struct clk_branch mnoc_maxi_clk = { 25408c2ecf20Sopenharmony_ci .halt_reg = 0xf004, 25418c2ecf20Sopenharmony_ci .clkr = { 25428c2ecf20Sopenharmony_ci .enable_reg = 0xf004, 25438c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 25448c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 25458c2ecf20Sopenharmony_ci .name = "mnoc_maxi_clk", 25468c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &maxi_clk_src.clkr.hw }, 25478c2ecf20Sopenharmony_ci .num_parents = 1, 25488c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 25498c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 25508c2ecf20Sopenharmony_ci }, 25518c2ecf20Sopenharmony_ci }, 25528c2ecf20Sopenharmony_ci}; 25538c2ecf20Sopenharmony_ci 25548c2ecf20Sopenharmony_cistatic struct clk_branch vmem_maxi_clk = { 25558c2ecf20Sopenharmony_ci .halt_reg = 0xf064, 25568c2ecf20Sopenharmony_ci .clkr = { 25578c2ecf20Sopenharmony_ci .enable_reg = 0xf064, 25588c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 25598c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 25608c2ecf20Sopenharmony_ci .name = "vmem_maxi_clk", 25618c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &maxi_clk_src.clkr.hw }, 25628c2ecf20Sopenharmony_ci .num_parents = 1, 25638c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 25648c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 25658c2ecf20Sopenharmony_ci }, 25668c2ecf20Sopenharmony_ci }, 25678c2ecf20Sopenharmony_ci}; 25688c2ecf20Sopenharmony_ci 25698c2ecf20Sopenharmony_cistatic struct clk_branch vmem_ahb_clk = { 25708c2ecf20Sopenharmony_ci .halt_reg = 0xf068, 25718c2ecf20Sopenharmony_ci .clkr = { 25728c2ecf20Sopenharmony_ci .enable_reg = 0xf068, 25738c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 25748c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 25758c2ecf20Sopenharmony_ci .name = "vmem_ahb_clk", 25768c2ecf20Sopenharmony_ci .parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw }, 25778c2ecf20Sopenharmony_ci .num_parents = 1, 25788c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 25798c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 25808c2ecf20Sopenharmony_ci }, 25818c2ecf20Sopenharmony_ci }, 25828c2ecf20Sopenharmony_ci}; 25838c2ecf20Sopenharmony_ci 25848c2ecf20Sopenharmony_cistatic struct clk_hw *mmcc_msm8998_hws[] = { 25858c2ecf20Sopenharmony_ci &gpll0_div.hw, 25868c2ecf20Sopenharmony_ci}; 25878c2ecf20Sopenharmony_ci 25888c2ecf20Sopenharmony_cistatic struct gdsc video_top_gdsc = { 25898c2ecf20Sopenharmony_ci .gdscr = 0x1024, 25908c2ecf20Sopenharmony_ci .pd = { 25918c2ecf20Sopenharmony_ci .name = "video_top", 25928c2ecf20Sopenharmony_ci }, 25938c2ecf20Sopenharmony_ci .pwrsts = PWRSTS_OFF_ON, 25948c2ecf20Sopenharmony_ci}; 25958c2ecf20Sopenharmony_ci 25968c2ecf20Sopenharmony_cistatic struct gdsc video_subcore0_gdsc = { 25978c2ecf20Sopenharmony_ci .gdscr = 0x1040, 25988c2ecf20Sopenharmony_ci .pd = { 25998c2ecf20Sopenharmony_ci .name = "video_subcore0", 26008c2ecf20Sopenharmony_ci }, 26018c2ecf20Sopenharmony_ci .parent = &video_top_gdsc.pd, 26028c2ecf20Sopenharmony_ci .pwrsts = PWRSTS_OFF_ON, 26038c2ecf20Sopenharmony_ci}; 26048c2ecf20Sopenharmony_ci 26058c2ecf20Sopenharmony_cistatic struct gdsc video_subcore1_gdsc = { 26068c2ecf20Sopenharmony_ci .gdscr = 0x1044, 26078c2ecf20Sopenharmony_ci .pd = { 26088c2ecf20Sopenharmony_ci .name = "video_subcore1", 26098c2ecf20Sopenharmony_ci }, 26108c2ecf20Sopenharmony_ci .parent = &video_top_gdsc.pd, 26118c2ecf20Sopenharmony_ci .pwrsts = PWRSTS_OFF_ON, 26128c2ecf20Sopenharmony_ci}; 26138c2ecf20Sopenharmony_ci 26148c2ecf20Sopenharmony_cistatic struct gdsc mdss_gdsc = { 26158c2ecf20Sopenharmony_ci .gdscr = 0x2304, 26168c2ecf20Sopenharmony_ci .cxcs = (unsigned int []){ 0x2310, 0x2350, 0x231c, 0x2320 }, 26178c2ecf20Sopenharmony_ci .cxc_count = 4, 26188c2ecf20Sopenharmony_ci .pd = { 26198c2ecf20Sopenharmony_ci .name = "mdss", 26208c2ecf20Sopenharmony_ci }, 26218c2ecf20Sopenharmony_ci .pwrsts = PWRSTS_OFF_ON, 26228c2ecf20Sopenharmony_ci}; 26238c2ecf20Sopenharmony_ci 26248c2ecf20Sopenharmony_cistatic struct gdsc camss_top_gdsc = { 26258c2ecf20Sopenharmony_ci .gdscr = 0x34a0, 26268c2ecf20Sopenharmony_ci .cxcs = (unsigned int []){ 0x35b8, 0x36c4, 0x3704, 0x3714, 0x3494, 26278c2ecf20Sopenharmony_ci 0x35a8, 0x3868 }, 26288c2ecf20Sopenharmony_ci .cxc_count = 7, 26298c2ecf20Sopenharmony_ci .pd = { 26308c2ecf20Sopenharmony_ci .name = "camss_top", 26318c2ecf20Sopenharmony_ci }, 26328c2ecf20Sopenharmony_ci .pwrsts = PWRSTS_OFF_ON, 26338c2ecf20Sopenharmony_ci}; 26348c2ecf20Sopenharmony_ci 26358c2ecf20Sopenharmony_cistatic struct gdsc camss_vfe0_gdsc = { 26368c2ecf20Sopenharmony_ci .gdscr = 0x3664, 26378c2ecf20Sopenharmony_ci .pd = { 26388c2ecf20Sopenharmony_ci .name = "camss_vfe0", 26398c2ecf20Sopenharmony_ci }, 26408c2ecf20Sopenharmony_ci .parent = &camss_top_gdsc.pd, 26418c2ecf20Sopenharmony_ci .pwrsts = PWRSTS_OFF_ON, 26428c2ecf20Sopenharmony_ci}; 26438c2ecf20Sopenharmony_ci 26448c2ecf20Sopenharmony_cistatic struct gdsc camss_vfe1_gdsc = { 26458c2ecf20Sopenharmony_ci .gdscr = 0x3674, 26468c2ecf20Sopenharmony_ci .pd = { 26478c2ecf20Sopenharmony_ci .name = "camss_vfe1_gdsc", 26488c2ecf20Sopenharmony_ci }, 26498c2ecf20Sopenharmony_ci .parent = &camss_top_gdsc.pd, 26508c2ecf20Sopenharmony_ci .pwrsts = PWRSTS_OFF_ON, 26518c2ecf20Sopenharmony_ci}; 26528c2ecf20Sopenharmony_ci 26538c2ecf20Sopenharmony_cistatic struct gdsc camss_cpp_gdsc = { 26548c2ecf20Sopenharmony_ci .gdscr = 0x36d4, 26558c2ecf20Sopenharmony_ci .pd = { 26568c2ecf20Sopenharmony_ci .name = "camss_cpp", 26578c2ecf20Sopenharmony_ci }, 26588c2ecf20Sopenharmony_ci .parent = &camss_top_gdsc.pd, 26598c2ecf20Sopenharmony_ci .pwrsts = PWRSTS_OFF_ON, 26608c2ecf20Sopenharmony_ci}; 26618c2ecf20Sopenharmony_ci 26628c2ecf20Sopenharmony_cistatic struct gdsc bimc_smmu_gdsc = { 26638c2ecf20Sopenharmony_ci .gdscr = 0xe020, 26648c2ecf20Sopenharmony_ci .gds_hw_ctrl = 0xe024, 26658c2ecf20Sopenharmony_ci .cxcs = (unsigned int []){ 0xe008 }, 26668c2ecf20Sopenharmony_ci .cxc_count = 1, 26678c2ecf20Sopenharmony_ci .pd = { 26688c2ecf20Sopenharmony_ci .name = "bimc_smmu", 26698c2ecf20Sopenharmony_ci }, 26708c2ecf20Sopenharmony_ci .pwrsts = PWRSTS_OFF_ON, 26718c2ecf20Sopenharmony_ci .flags = VOTABLE, 26728c2ecf20Sopenharmony_ci}; 26738c2ecf20Sopenharmony_ci 26748c2ecf20Sopenharmony_cistatic struct clk_regmap *mmcc_msm8998_clocks[] = { 26758c2ecf20Sopenharmony_ci [MMPLL0] = &mmpll0.clkr, 26768c2ecf20Sopenharmony_ci [MMPLL0_OUT_EVEN] = &mmpll0_out_even.clkr, 26778c2ecf20Sopenharmony_ci [MMPLL1] = &mmpll1.clkr, 26788c2ecf20Sopenharmony_ci [MMPLL1_OUT_EVEN] = &mmpll1_out_even.clkr, 26798c2ecf20Sopenharmony_ci [MMPLL3] = &mmpll3.clkr, 26808c2ecf20Sopenharmony_ci [MMPLL3_OUT_EVEN] = &mmpll3_out_even.clkr, 26818c2ecf20Sopenharmony_ci [MMPLL4] = &mmpll4.clkr, 26828c2ecf20Sopenharmony_ci [MMPLL4_OUT_EVEN] = &mmpll4_out_even.clkr, 26838c2ecf20Sopenharmony_ci [MMPLL5] = &mmpll5.clkr, 26848c2ecf20Sopenharmony_ci [MMPLL5_OUT_EVEN] = &mmpll5_out_even.clkr, 26858c2ecf20Sopenharmony_ci [MMPLL6] = &mmpll6.clkr, 26868c2ecf20Sopenharmony_ci [MMPLL6_OUT_EVEN] = &mmpll6_out_even.clkr, 26878c2ecf20Sopenharmony_ci [MMPLL7] = &mmpll7.clkr, 26888c2ecf20Sopenharmony_ci [MMPLL7_OUT_EVEN] = &mmpll7_out_even.clkr, 26898c2ecf20Sopenharmony_ci [MMPLL10] = &mmpll10.clkr, 26908c2ecf20Sopenharmony_ci [MMPLL10_OUT_EVEN] = &mmpll10_out_even.clkr, 26918c2ecf20Sopenharmony_ci [BYTE0_CLK_SRC] = &byte0_clk_src.clkr, 26928c2ecf20Sopenharmony_ci [BYTE1_CLK_SRC] = &byte1_clk_src.clkr, 26938c2ecf20Sopenharmony_ci [CCI_CLK_SRC] = &cci_clk_src.clkr, 26948c2ecf20Sopenharmony_ci [CPP_CLK_SRC] = &cpp_clk_src.clkr, 26958c2ecf20Sopenharmony_ci [CSI0_CLK_SRC] = &csi0_clk_src.clkr, 26968c2ecf20Sopenharmony_ci [CSI1_CLK_SRC] = &csi1_clk_src.clkr, 26978c2ecf20Sopenharmony_ci [CSI2_CLK_SRC] = &csi2_clk_src.clkr, 26988c2ecf20Sopenharmony_ci [CSI3_CLK_SRC] = &csi3_clk_src.clkr, 26998c2ecf20Sopenharmony_ci [CSIPHY_CLK_SRC] = &csiphy_clk_src.clkr, 27008c2ecf20Sopenharmony_ci [CSI0PHYTIMER_CLK_SRC] = &csi0phytimer_clk_src.clkr, 27018c2ecf20Sopenharmony_ci [CSI1PHYTIMER_CLK_SRC] = &csi1phytimer_clk_src.clkr, 27028c2ecf20Sopenharmony_ci [CSI2PHYTIMER_CLK_SRC] = &csi2phytimer_clk_src.clkr, 27038c2ecf20Sopenharmony_ci [DP_AUX_CLK_SRC] = &dp_aux_clk_src.clkr, 27048c2ecf20Sopenharmony_ci [DP_CRYPTO_CLK_SRC] = &dp_crypto_clk_src.clkr, 27058c2ecf20Sopenharmony_ci [DP_LINK_CLK_SRC] = &dp_link_clk_src.clkr, 27068c2ecf20Sopenharmony_ci [DP_PIXEL_CLK_SRC] = &dp_pixel_clk_src.clkr, 27078c2ecf20Sopenharmony_ci [ESC0_CLK_SRC] = &esc0_clk_src.clkr, 27088c2ecf20Sopenharmony_ci [ESC1_CLK_SRC] = &esc1_clk_src.clkr, 27098c2ecf20Sopenharmony_ci [EXTPCLK_CLK_SRC] = &extpclk_clk_src.clkr, 27108c2ecf20Sopenharmony_ci [FD_CORE_CLK_SRC] = &fd_core_clk_src.clkr, 27118c2ecf20Sopenharmony_ci [HDMI_CLK_SRC] = &hdmi_clk_src.clkr, 27128c2ecf20Sopenharmony_ci [JPEG0_CLK_SRC] = &jpeg0_clk_src.clkr, 27138c2ecf20Sopenharmony_ci [MAXI_CLK_SRC] = &maxi_clk_src.clkr, 27148c2ecf20Sopenharmony_ci [MCLK0_CLK_SRC] = &mclk0_clk_src.clkr, 27158c2ecf20Sopenharmony_ci [MCLK1_CLK_SRC] = &mclk1_clk_src.clkr, 27168c2ecf20Sopenharmony_ci [MCLK2_CLK_SRC] = &mclk2_clk_src.clkr, 27178c2ecf20Sopenharmony_ci [MCLK3_CLK_SRC] = &mclk3_clk_src.clkr, 27188c2ecf20Sopenharmony_ci [MDP_CLK_SRC] = &mdp_clk_src.clkr, 27198c2ecf20Sopenharmony_ci [VSYNC_CLK_SRC] = &vsync_clk_src.clkr, 27208c2ecf20Sopenharmony_ci [AHB_CLK_SRC] = &ahb_clk_src.clkr, 27218c2ecf20Sopenharmony_ci [AXI_CLK_SRC] = &axi_clk_src.clkr, 27228c2ecf20Sopenharmony_ci [PCLK0_CLK_SRC] = &pclk0_clk_src.clkr, 27238c2ecf20Sopenharmony_ci [PCLK1_CLK_SRC] = &pclk1_clk_src.clkr, 27248c2ecf20Sopenharmony_ci [ROT_CLK_SRC] = &rot_clk_src.clkr, 27258c2ecf20Sopenharmony_ci [VIDEO_CORE_CLK_SRC] = &video_core_clk_src.clkr, 27268c2ecf20Sopenharmony_ci [VIDEO_SUBCORE0_CLK_SRC] = &video_subcore0_clk_src.clkr, 27278c2ecf20Sopenharmony_ci [VIDEO_SUBCORE1_CLK_SRC] = &video_subcore1_clk_src.clkr, 27288c2ecf20Sopenharmony_ci [VFE0_CLK_SRC] = &vfe0_clk_src.clkr, 27298c2ecf20Sopenharmony_ci [VFE1_CLK_SRC] = &vfe1_clk_src.clkr, 27308c2ecf20Sopenharmony_ci [MISC_AHB_CLK] = &misc_ahb_clk.clkr, 27318c2ecf20Sopenharmony_ci [VIDEO_CORE_CLK] = &video_core_clk.clkr, 27328c2ecf20Sopenharmony_ci [VIDEO_AHB_CLK] = &video_ahb_clk.clkr, 27338c2ecf20Sopenharmony_ci [VIDEO_AXI_CLK] = &video_axi_clk.clkr, 27348c2ecf20Sopenharmony_ci [VIDEO_MAXI_CLK] = &video_maxi_clk.clkr, 27358c2ecf20Sopenharmony_ci [VIDEO_SUBCORE0_CLK] = &video_subcore0_clk.clkr, 27368c2ecf20Sopenharmony_ci [VIDEO_SUBCORE1_CLK] = &video_subcore1_clk.clkr, 27378c2ecf20Sopenharmony_ci [MDSS_AHB_CLK] = &mdss_ahb_clk.clkr, 27388c2ecf20Sopenharmony_ci [MDSS_HDMI_DP_AHB_CLK] = &mdss_hdmi_dp_ahb_clk.clkr, 27398c2ecf20Sopenharmony_ci [MDSS_AXI_CLK] = &mdss_axi_clk.clkr, 27408c2ecf20Sopenharmony_ci [MDSS_PCLK0_CLK] = &mdss_pclk0_clk.clkr, 27418c2ecf20Sopenharmony_ci [MDSS_PCLK1_CLK] = &mdss_pclk1_clk.clkr, 27428c2ecf20Sopenharmony_ci [MDSS_MDP_CLK] = &mdss_mdp_clk.clkr, 27438c2ecf20Sopenharmony_ci [MDSS_MDP_LUT_CLK] = &mdss_mdp_lut_clk.clkr, 27448c2ecf20Sopenharmony_ci [MDSS_EXTPCLK_CLK] = &mdss_extpclk_clk.clkr, 27458c2ecf20Sopenharmony_ci [MDSS_VSYNC_CLK] = &mdss_vsync_clk.clkr, 27468c2ecf20Sopenharmony_ci [MDSS_HDMI_CLK] = &mdss_hdmi_clk.clkr, 27478c2ecf20Sopenharmony_ci [MDSS_BYTE0_CLK] = &mdss_byte0_clk.clkr, 27488c2ecf20Sopenharmony_ci [MDSS_BYTE1_CLK] = &mdss_byte1_clk.clkr, 27498c2ecf20Sopenharmony_ci [MDSS_ESC0_CLK] = &mdss_esc0_clk.clkr, 27508c2ecf20Sopenharmony_ci [MDSS_ESC1_CLK] = &mdss_esc1_clk.clkr, 27518c2ecf20Sopenharmony_ci [MDSS_ROT_CLK] = &mdss_rot_clk.clkr, 27528c2ecf20Sopenharmony_ci [MDSS_DP_LINK_CLK] = &mdss_dp_link_clk.clkr, 27538c2ecf20Sopenharmony_ci [MDSS_DP_LINK_INTF_CLK] = &mdss_dp_link_intf_clk.clkr, 27548c2ecf20Sopenharmony_ci [MDSS_DP_CRYPTO_CLK] = &mdss_dp_crypto_clk.clkr, 27558c2ecf20Sopenharmony_ci [MDSS_DP_PIXEL_CLK] = &mdss_dp_pixel_clk.clkr, 27568c2ecf20Sopenharmony_ci [MDSS_DP_AUX_CLK] = &mdss_dp_aux_clk.clkr, 27578c2ecf20Sopenharmony_ci [MDSS_BYTE0_INTF_CLK] = &mdss_byte0_intf_clk.clkr, 27588c2ecf20Sopenharmony_ci [MDSS_BYTE1_INTF_CLK] = &mdss_byte1_intf_clk.clkr, 27598c2ecf20Sopenharmony_ci [CAMSS_CSI0PHYTIMER_CLK] = &camss_csi0phytimer_clk.clkr, 27608c2ecf20Sopenharmony_ci [CAMSS_CSI1PHYTIMER_CLK] = &camss_csi1phytimer_clk.clkr, 27618c2ecf20Sopenharmony_ci [CAMSS_CSI2PHYTIMER_CLK] = &camss_csi2phytimer_clk.clkr, 27628c2ecf20Sopenharmony_ci [CAMSS_CSI0_CLK] = &camss_csi0_clk.clkr, 27638c2ecf20Sopenharmony_ci [CAMSS_CSI0_AHB_CLK] = &camss_csi0_ahb_clk.clkr, 27648c2ecf20Sopenharmony_ci [CAMSS_CSI0RDI_CLK] = &camss_csi0rdi_clk.clkr, 27658c2ecf20Sopenharmony_ci [CAMSS_CSI0PIX_CLK] = &camss_csi0pix_clk.clkr, 27668c2ecf20Sopenharmony_ci [CAMSS_CSI1_CLK] = &camss_csi1_clk.clkr, 27678c2ecf20Sopenharmony_ci [CAMSS_CSI1_AHB_CLK] = &camss_csi1_ahb_clk.clkr, 27688c2ecf20Sopenharmony_ci [CAMSS_CSI1RDI_CLK] = &camss_csi1rdi_clk.clkr, 27698c2ecf20Sopenharmony_ci [CAMSS_CSI1PIX_CLK] = &camss_csi1pix_clk.clkr, 27708c2ecf20Sopenharmony_ci [CAMSS_CSI2_CLK] = &camss_csi2_clk.clkr, 27718c2ecf20Sopenharmony_ci [CAMSS_CSI2_AHB_CLK] = &camss_csi2_ahb_clk.clkr, 27728c2ecf20Sopenharmony_ci [CAMSS_CSI2RDI_CLK] = &camss_csi2rdi_clk.clkr, 27738c2ecf20Sopenharmony_ci [CAMSS_CSI2PIX_CLK] = &camss_csi2pix_clk.clkr, 27748c2ecf20Sopenharmony_ci [CAMSS_CSI3_CLK] = &camss_csi3_clk.clkr, 27758c2ecf20Sopenharmony_ci [CAMSS_CSI3_AHB_CLK] = &camss_csi3_ahb_clk.clkr, 27768c2ecf20Sopenharmony_ci [CAMSS_CSI3RDI_CLK] = &camss_csi3rdi_clk.clkr, 27778c2ecf20Sopenharmony_ci [CAMSS_CSI3PIX_CLK] = &camss_csi3pix_clk.clkr, 27788c2ecf20Sopenharmony_ci [CAMSS_ISPIF_AHB_CLK] = &camss_ispif_ahb_clk.clkr, 27798c2ecf20Sopenharmony_ci [CAMSS_CCI_CLK] = &camss_cci_clk.clkr, 27808c2ecf20Sopenharmony_ci [CAMSS_CCI_AHB_CLK] = &camss_cci_ahb_clk.clkr, 27818c2ecf20Sopenharmony_ci [CAMSS_MCLK0_CLK] = &camss_mclk0_clk.clkr, 27828c2ecf20Sopenharmony_ci [CAMSS_MCLK1_CLK] = &camss_mclk1_clk.clkr, 27838c2ecf20Sopenharmony_ci [CAMSS_MCLK2_CLK] = &camss_mclk2_clk.clkr, 27848c2ecf20Sopenharmony_ci [CAMSS_MCLK3_CLK] = &camss_mclk3_clk.clkr, 27858c2ecf20Sopenharmony_ci [CAMSS_TOP_AHB_CLK] = &camss_top_ahb_clk.clkr, 27868c2ecf20Sopenharmony_ci [CAMSS_AHB_CLK] = &camss_ahb_clk.clkr, 27878c2ecf20Sopenharmony_ci [CAMSS_MICRO_AHB_CLK] = &camss_micro_ahb_clk.clkr, 27888c2ecf20Sopenharmony_ci [CAMSS_JPEG0_CLK] = &camss_jpeg0_clk.clkr, 27898c2ecf20Sopenharmony_ci [CAMSS_JPEG_AHB_CLK] = &camss_jpeg_ahb_clk.clkr, 27908c2ecf20Sopenharmony_ci [CAMSS_JPEG_AXI_CLK] = &camss_jpeg_axi_clk.clkr, 27918c2ecf20Sopenharmony_ci [CAMSS_VFE0_AHB_CLK] = &camss_vfe0_ahb_clk.clkr, 27928c2ecf20Sopenharmony_ci [CAMSS_VFE1_AHB_CLK] = &camss_vfe1_ahb_clk.clkr, 27938c2ecf20Sopenharmony_ci [CAMSS_VFE0_CLK] = &camss_vfe0_clk.clkr, 27948c2ecf20Sopenharmony_ci [CAMSS_VFE1_CLK] = &camss_vfe1_clk.clkr, 27958c2ecf20Sopenharmony_ci [CAMSS_CPP_CLK] = &camss_cpp_clk.clkr, 27968c2ecf20Sopenharmony_ci [CAMSS_CPP_AHB_CLK] = &camss_cpp_ahb_clk.clkr, 27978c2ecf20Sopenharmony_ci [CAMSS_VFE_VBIF_AHB_CLK] = &camss_vfe_vbif_ahb_clk.clkr, 27988c2ecf20Sopenharmony_ci [CAMSS_VFE_VBIF_AXI_CLK] = &camss_vfe_vbif_axi_clk.clkr, 27998c2ecf20Sopenharmony_ci [CAMSS_CPP_AXI_CLK] = &camss_cpp_axi_clk.clkr, 28008c2ecf20Sopenharmony_ci [CAMSS_CPP_VBIF_AHB_CLK] = &camss_cpp_vbif_ahb_clk.clkr, 28018c2ecf20Sopenharmony_ci [CAMSS_CSI_VFE0_CLK] = &camss_csi_vfe0_clk.clkr, 28028c2ecf20Sopenharmony_ci [CAMSS_CSI_VFE1_CLK] = &camss_csi_vfe1_clk.clkr, 28038c2ecf20Sopenharmony_ci [CAMSS_VFE0_STREAM_CLK] = &camss_vfe0_stream_clk.clkr, 28048c2ecf20Sopenharmony_ci [CAMSS_VFE1_STREAM_CLK] = &camss_vfe1_stream_clk.clkr, 28058c2ecf20Sopenharmony_ci [CAMSS_CPHY_CSID0_CLK] = &camss_cphy_csid0_clk.clkr, 28068c2ecf20Sopenharmony_ci [CAMSS_CPHY_CSID1_CLK] = &camss_cphy_csid1_clk.clkr, 28078c2ecf20Sopenharmony_ci [CAMSS_CPHY_CSID2_CLK] = &camss_cphy_csid2_clk.clkr, 28088c2ecf20Sopenharmony_ci [CAMSS_CPHY_CSID3_CLK] = &camss_cphy_csid3_clk.clkr, 28098c2ecf20Sopenharmony_ci [CAMSS_CSIPHY0_CLK] = &camss_csiphy0_clk.clkr, 28108c2ecf20Sopenharmony_ci [CAMSS_CSIPHY1_CLK] = &camss_csiphy1_clk.clkr, 28118c2ecf20Sopenharmony_ci [CAMSS_CSIPHY2_CLK] = &camss_csiphy2_clk.clkr, 28128c2ecf20Sopenharmony_ci [FD_CORE_CLK] = &fd_core_clk.clkr, 28138c2ecf20Sopenharmony_ci [FD_CORE_UAR_CLK] = &fd_core_uar_clk.clkr, 28148c2ecf20Sopenharmony_ci [FD_AHB_CLK] = &fd_ahb_clk.clkr, 28158c2ecf20Sopenharmony_ci [MNOC_AHB_CLK] = &mnoc_ahb_clk.clkr, 28168c2ecf20Sopenharmony_ci [BIMC_SMMU_AHB_CLK] = &bimc_smmu_ahb_clk.clkr, 28178c2ecf20Sopenharmony_ci [BIMC_SMMU_AXI_CLK] = &bimc_smmu_axi_clk.clkr, 28188c2ecf20Sopenharmony_ci [MNOC_MAXI_CLK] = &mnoc_maxi_clk.clkr, 28198c2ecf20Sopenharmony_ci [VMEM_MAXI_CLK] = &vmem_maxi_clk.clkr, 28208c2ecf20Sopenharmony_ci [VMEM_AHB_CLK] = &vmem_ahb_clk.clkr, 28218c2ecf20Sopenharmony_ci}; 28228c2ecf20Sopenharmony_ci 28238c2ecf20Sopenharmony_cistatic struct gdsc *mmcc_msm8998_gdscs[] = { 28248c2ecf20Sopenharmony_ci [VIDEO_TOP_GDSC] = &video_top_gdsc, 28258c2ecf20Sopenharmony_ci [VIDEO_SUBCORE0_GDSC] = &video_subcore0_gdsc, 28268c2ecf20Sopenharmony_ci [VIDEO_SUBCORE1_GDSC] = &video_subcore1_gdsc, 28278c2ecf20Sopenharmony_ci [MDSS_GDSC] = &mdss_gdsc, 28288c2ecf20Sopenharmony_ci [CAMSS_TOP_GDSC] = &camss_top_gdsc, 28298c2ecf20Sopenharmony_ci [CAMSS_VFE0_GDSC] = &camss_vfe0_gdsc, 28308c2ecf20Sopenharmony_ci [CAMSS_VFE1_GDSC] = &camss_vfe1_gdsc, 28318c2ecf20Sopenharmony_ci [CAMSS_CPP_GDSC] = &camss_cpp_gdsc, 28328c2ecf20Sopenharmony_ci [BIMC_SMMU_GDSC] = &bimc_smmu_gdsc, 28338c2ecf20Sopenharmony_ci}; 28348c2ecf20Sopenharmony_ci 28358c2ecf20Sopenharmony_cistatic const struct qcom_reset_map mmcc_msm8998_resets[] = { 28368c2ecf20Sopenharmony_ci [SPDM_BCR] = { 0x200 }, 28378c2ecf20Sopenharmony_ci [SPDM_RM_BCR] = { 0x300 }, 28388c2ecf20Sopenharmony_ci [MISC_BCR] = { 0x320 }, 28398c2ecf20Sopenharmony_ci [VIDEO_TOP_BCR] = { 0x1020 }, 28408c2ecf20Sopenharmony_ci [THROTTLE_VIDEO_BCR] = { 0x1180 }, 28418c2ecf20Sopenharmony_ci [MDSS_BCR] = { 0x2300 }, 28428c2ecf20Sopenharmony_ci [THROTTLE_MDSS_BCR] = { 0x2460 }, 28438c2ecf20Sopenharmony_ci [CAMSS_PHY0_BCR] = { 0x3020 }, 28448c2ecf20Sopenharmony_ci [CAMSS_PHY1_BCR] = { 0x3050 }, 28458c2ecf20Sopenharmony_ci [CAMSS_PHY2_BCR] = { 0x3080 }, 28468c2ecf20Sopenharmony_ci [CAMSS_CSI0_BCR] = { 0x30b0 }, 28478c2ecf20Sopenharmony_ci [CAMSS_CSI0RDI_BCR] = { 0x30d0 }, 28488c2ecf20Sopenharmony_ci [CAMSS_CSI0PIX_BCR] = { 0x30e0 }, 28498c2ecf20Sopenharmony_ci [CAMSS_CSI1_BCR] = { 0x3120 }, 28508c2ecf20Sopenharmony_ci [CAMSS_CSI1RDI_BCR] = { 0x3140 }, 28518c2ecf20Sopenharmony_ci [CAMSS_CSI1PIX_BCR] = { 0x3150 }, 28528c2ecf20Sopenharmony_ci [CAMSS_CSI2_BCR] = { 0x3180 }, 28538c2ecf20Sopenharmony_ci [CAMSS_CSI2RDI_BCR] = { 0x31a0 }, 28548c2ecf20Sopenharmony_ci [CAMSS_CSI2PIX_BCR] = { 0x31b0 }, 28558c2ecf20Sopenharmony_ci [CAMSS_CSI3_BCR] = { 0x31e0 }, 28568c2ecf20Sopenharmony_ci [CAMSS_CSI3RDI_BCR] = { 0x3200 }, 28578c2ecf20Sopenharmony_ci [CAMSS_CSI3PIX_BCR] = { 0x3210 }, 28588c2ecf20Sopenharmony_ci [CAMSS_ISPIF_BCR] = { 0x3220 }, 28598c2ecf20Sopenharmony_ci [CAMSS_CCI_BCR] = { 0x3340 }, 28608c2ecf20Sopenharmony_ci [CAMSS_TOP_BCR] = { 0x3480 }, 28618c2ecf20Sopenharmony_ci [CAMSS_AHB_BCR] = { 0x3488 }, 28628c2ecf20Sopenharmony_ci [CAMSS_MICRO_BCR] = { 0x3490 }, 28638c2ecf20Sopenharmony_ci [CAMSS_JPEG_BCR] = { 0x35a0 }, 28648c2ecf20Sopenharmony_ci [CAMSS_VFE0_BCR] = { 0x3660 }, 28658c2ecf20Sopenharmony_ci [CAMSS_VFE1_BCR] = { 0x3670 }, 28668c2ecf20Sopenharmony_ci [CAMSS_VFE_VBIF_BCR] = { 0x36a0 }, 28678c2ecf20Sopenharmony_ci [CAMSS_CPP_TOP_BCR] = { 0x36c0 }, 28688c2ecf20Sopenharmony_ci [CAMSS_CPP_BCR] = { 0x36d0 }, 28698c2ecf20Sopenharmony_ci [CAMSS_CSI_VFE0_BCR] = { 0x3700 }, 28708c2ecf20Sopenharmony_ci [CAMSS_CSI_VFE1_BCR] = { 0x3710 }, 28718c2ecf20Sopenharmony_ci [CAMSS_FD_BCR] = { 0x3b60 }, 28728c2ecf20Sopenharmony_ci [THROTTLE_CAMSS_BCR] = { 0x3c30 }, 28738c2ecf20Sopenharmony_ci [MNOCAHB_BCR] = { 0x5020 }, 28748c2ecf20Sopenharmony_ci [MNOCAXI_BCR] = { 0xd020 }, 28758c2ecf20Sopenharmony_ci [BMIC_SMMU_BCR] = { 0xe000 }, 28768c2ecf20Sopenharmony_ci [MNOC_MAXI_BCR] = { 0xf000 }, 28778c2ecf20Sopenharmony_ci [VMEM_BCR] = { 0xf060 }, 28788c2ecf20Sopenharmony_ci [BTO_BCR] = { 0x10004 }, 28798c2ecf20Sopenharmony_ci}; 28808c2ecf20Sopenharmony_ci 28818c2ecf20Sopenharmony_cistatic const struct regmap_config mmcc_msm8998_regmap_config = { 28828c2ecf20Sopenharmony_ci .reg_bits = 32, 28838c2ecf20Sopenharmony_ci .reg_stride = 4, 28848c2ecf20Sopenharmony_ci .val_bits = 32, 28858c2ecf20Sopenharmony_ci .max_register = 0x10004, 28868c2ecf20Sopenharmony_ci .fast_io = true, 28878c2ecf20Sopenharmony_ci}; 28888c2ecf20Sopenharmony_ci 28898c2ecf20Sopenharmony_cistatic const struct qcom_cc_desc mmcc_msm8998_desc = { 28908c2ecf20Sopenharmony_ci .config = &mmcc_msm8998_regmap_config, 28918c2ecf20Sopenharmony_ci .clks = mmcc_msm8998_clocks, 28928c2ecf20Sopenharmony_ci .num_clks = ARRAY_SIZE(mmcc_msm8998_clocks), 28938c2ecf20Sopenharmony_ci .resets = mmcc_msm8998_resets, 28948c2ecf20Sopenharmony_ci .num_resets = ARRAY_SIZE(mmcc_msm8998_resets), 28958c2ecf20Sopenharmony_ci .gdscs = mmcc_msm8998_gdscs, 28968c2ecf20Sopenharmony_ci .num_gdscs = ARRAY_SIZE(mmcc_msm8998_gdscs), 28978c2ecf20Sopenharmony_ci .clk_hws = mmcc_msm8998_hws, 28988c2ecf20Sopenharmony_ci .num_clk_hws = ARRAY_SIZE(mmcc_msm8998_hws), 28998c2ecf20Sopenharmony_ci}; 29008c2ecf20Sopenharmony_ci 29018c2ecf20Sopenharmony_cistatic const struct of_device_id mmcc_msm8998_match_table[] = { 29028c2ecf20Sopenharmony_ci { .compatible = "qcom,mmcc-msm8998" }, 29038c2ecf20Sopenharmony_ci { } 29048c2ecf20Sopenharmony_ci}; 29058c2ecf20Sopenharmony_ciMODULE_DEVICE_TABLE(of, mmcc_msm8998_match_table); 29068c2ecf20Sopenharmony_ci 29078c2ecf20Sopenharmony_cistatic int mmcc_msm8998_probe(struct platform_device *pdev) 29088c2ecf20Sopenharmony_ci{ 29098c2ecf20Sopenharmony_ci struct regmap *regmap; 29108c2ecf20Sopenharmony_ci 29118c2ecf20Sopenharmony_ci regmap = qcom_cc_map(pdev, &mmcc_msm8998_desc); 29128c2ecf20Sopenharmony_ci if (IS_ERR(regmap)) 29138c2ecf20Sopenharmony_ci return PTR_ERR(regmap); 29148c2ecf20Sopenharmony_ci 29158c2ecf20Sopenharmony_ci return qcom_cc_really_probe(pdev, &mmcc_msm8998_desc, regmap); 29168c2ecf20Sopenharmony_ci} 29178c2ecf20Sopenharmony_ci 29188c2ecf20Sopenharmony_cistatic struct platform_driver mmcc_msm8998_driver = { 29198c2ecf20Sopenharmony_ci .probe = mmcc_msm8998_probe, 29208c2ecf20Sopenharmony_ci .driver = { 29218c2ecf20Sopenharmony_ci .name = "mmcc-msm8998", 29228c2ecf20Sopenharmony_ci .of_match_table = mmcc_msm8998_match_table, 29238c2ecf20Sopenharmony_ci }, 29248c2ecf20Sopenharmony_ci}; 29258c2ecf20Sopenharmony_cimodule_platform_driver(mmcc_msm8998_driver); 29268c2ecf20Sopenharmony_ci 29278c2ecf20Sopenharmony_ciMODULE_DESCRIPTION("QCOM MMCC MSM8998 Driver"); 29288c2ecf20Sopenharmony_ciMODULE_LICENSE("GPL v2"); 2929