18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Copyright (c) 2013, 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-msm8974.h> 188c2ecf20Sopenharmony_ci#include <dt-bindings/reset/qcom,mmcc-msm8974.h> 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_ci#include "common.h" 218c2ecf20Sopenharmony_ci#include "clk-regmap.h" 228c2ecf20Sopenharmony_ci#include "clk-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_MMPLL0, 318c2ecf20Sopenharmony_ci P_EDPLINK, 328c2ecf20Sopenharmony_ci P_MMPLL1, 338c2ecf20Sopenharmony_ci P_HDMIPLL, 348c2ecf20Sopenharmony_ci P_GPLL0, 358c2ecf20Sopenharmony_ci P_EDPVCO, 368c2ecf20Sopenharmony_ci P_GPLL1, 378c2ecf20Sopenharmony_ci P_DSI0PLL, 388c2ecf20Sopenharmony_ci P_DSI0PLL_BYTE, 398c2ecf20Sopenharmony_ci P_MMPLL2, 408c2ecf20Sopenharmony_ci P_MMPLL3, 418c2ecf20Sopenharmony_ci P_DSI1PLL, 428c2ecf20Sopenharmony_ci P_DSI1PLL_BYTE, 438c2ecf20Sopenharmony_ci}; 448c2ecf20Sopenharmony_ci 458c2ecf20Sopenharmony_cistatic const struct parent_map mmcc_xo_mmpll0_mmpll1_gpll0_map[] = { 468c2ecf20Sopenharmony_ci { P_XO, 0 }, 478c2ecf20Sopenharmony_ci { P_MMPLL0, 1 }, 488c2ecf20Sopenharmony_ci { P_MMPLL1, 2 }, 498c2ecf20Sopenharmony_ci { P_GPLL0, 5 } 508c2ecf20Sopenharmony_ci}; 518c2ecf20Sopenharmony_ci 528c2ecf20Sopenharmony_cistatic const char * const mmcc_xo_mmpll0_mmpll1_gpll0[] = { 538c2ecf20Sopenharmony_ci "xo", 548c2ecf20Sopenharmony_ci "mmpll0_vote", 558c2ecf20Sopenharmony_ci "mmpll1_vote", 568c2ecf20Sopenharmony_ci "mmss_gpll0_vote", 578c2ecf20Sopenharmony_ci}; 588c2ecf20Sopenharmony_ci 598c2ecf20Sopenharmony_cistatic const struct parent_map mmcc_xo_mmpll0_dsi_hdmi_gpll0_map[] = { 608c2ecf20Sopenharmony_ci { P_XO, 0 }, 618c2ecf20Sopenharmony_ci { P_MMPLL0, 1 }, 628c2ecf20Sopenharmony_ci { P_HDMIPLL, 4 }, 638c2ecf20Sopenharmony_ci { P_GPLL0, 5 }, 648c2ecf20Sopenharmony_ci { P_DSI0PLL, 2 }, 658c2ecf20Sopenharmony_ci { P_DSI1PLL, 3 } 668c2ecf20Sopenharmony_ci}; 678c2ecf20Sopenharmony_ci 688c2ecf20Sopenharmony_cistatic const char * const mmcc_xo_mmpll0_dsi_hdmi_gpll0[] = { 698c2ecf20Sopenharmony_ci "xo", 708c2ecf20Sopenharmony_ci "mmpll0_vote", 718c2ecf20Sopenharmony_ci "hdmipll", 728c2ecf20Sopenharmony_ci "mmss_gpll0_vote", 738c2ecf20Sopenharmony_ci "dsi0pll", 748c2ecf20Sopenharmony_ci "dsi1pll", 758c2ecf20Sopenharmony_ci}; 768c2ecf20Sopenharmony_ci 778c2ecf20Sopenharmony_cistatic const struct parent_map mmcc_xo_mmpll0_1_2_gpll0_map[] = { 788c2ecf20Sopenharmony_ci { P_XO, 0 }, 798c2ecf20Sopenharmony_ci { P_MMPLL0, 1 }, 808c2ecf20Sopenharmony_ci { P_MMPLL1, 2 }, 818c2ecf20Sopenharmony_ci { P_GPLL0, 5 }, 828c2ecf20Sopenharmony_ci { P_MMPLL2, 3 } 838c2ecf20Sopenharmony_ci}; 848c2ecf20Sopenharmony_ci 858c2ecf20Sopenharmony_cistatic const char * const mmcc_xo_mmpll0_1_2_gpll0[] = { 868c2ecf20Sopenharmony_ci "xo", 878c2ecf20Sopenharmony_ci "mmpll0_vote", 888c2ecf20Sopenharmony_ci "mmpll1_vote", 898c2ecf20Sopenharmony_ci "mmss_gpll0_vote", 908c2ecf20Sopenharmony_ci "mmpll2", 918c2ecf20Sopenharmony_ci}; 928c2ecf20Sopenharmony_ci 938c2ecf20Sopenharmony_cistatic const struct parent_map mmcc_xo_mmpll0_1_3_gpll0_map[] = { 948c2ecf20Sopenharmony_ci { P_XO, 0 }, 958c2ecf20Sopenharmony_ci { P_MMPLL0, 1 }, 968c2ecf20Sopenharmony_ci { P_MMPLL1, 2 }, 978c2ecf20Sopenharmony_ci { P_GPLL0, 5 }, 988c2ecf20Sopenharmony_ci { P_MMPLL3, 3 } 998c2ecf20Sopenharmony_ci}; 1008c2ecf20Sopenharmony_ci 1018c2ecf20Sopenharmony_cistatic const char * const mmcc_xo_mmpll0_1_3_gpll0[] = { 1028c2ecf20Sopenharmony_ci "xo", 1038c2ecf20Sopenharmony_ci "mmpll0_vote", 1048c2ecf20Sopenharmony_ci "mmpll1_vote", 1058c2ecf20Sopenharmony_ci "mmss_gpll0_vote", 1068c2ecf20Sopenharmony_ci "mmpll3", 1078c2ecf20Sopenharmony_ci}; 1088c2ecf20Sopenharmony_ci 1098c2ecf20Sopenharmony_cistatic const struct parent_map mmcc_xo_mmpll0_1_gpll1_0_map[] = { 1108c2ecf20Sopenharmony_ci { P_XO, 0 }, 1118c2ecf20Sopenharmony_ci { P_MMPLL0, 1 }, 1128c2ecf20Sopenharmony_ci { P_MMPLL1, 2 }, 1138c2ecf20Sopenharmony_ci { P_GPLL0, 5 }, 1148c2ecf20Sopenharmony_ci { P_GPLL1, 4 } 1158c2ecf20Sopenharmony_ci}; 1168c2ecf20Sopenharmony_ci 1178c2ecf20Sopenharmony_cistatic const char * const mmcc_xo_mmpll0_1_gpll1_0[] = { 1188c2ecf20Sopenharmony_ci "xo", 1198c2ecf20Sopenharmony_ci "mmpll0_vote", 1208c2ecf20Sopenharmony_ci "mmpll1_vote", 1218c2ecf20Sopenharmony_ci "mmss_gpll0_vote", 1228c2ecf20Sopenharmony_ci "gpll1_vote", 1238c2ecf20Sopenharmony_ci}; 1248c2ecf20Sopenharmony_ci 1258c2ecf20Sopenharmony_cistatic const struct parent_map mmcc_xo_dsi_hdmi_edp_map[] = { 1268c2ecf20Sopenharmony_ci { P_XO, 0 }, 1278c2ecf20Sopenharmony_ci { P_EDPLINK, 4 }, 1288c2ecf20Sopenharmony_ci { P_HDMIPLL, 3 }, 1298c2ecf20Sopenharmony_ci { P_EDPVCO, 5 }, 1308c2ecf20Sopenharmony_ci { P_DSI0PLL, 1 }, 1318c2ecf20Sopenharmony_ci { P_DSI1PLL, 2 } 1328c2ecf20Sopenharmony_ci}; 1338c2ecf20Sopenharmony_ci 1348c2ecf20Sopenharmony_cistatic const char * const mmcc_xo_dsi_hdmi_edp[] = { 1358c2ecf20Sopenharmony_ci "xo", 1368c2ecf20Sopenharmony_ci "edp_link_clk", 1378c2ecf20Sopenharmony_ci "hdmipll", 1388c2ecf20Sopenharmony_ci "edp_vco_div", 1398c2ecf20Sopenharmony_ci "dsi0pll", 1408c2ecf20Sopenharmony_ci "dsi1pll", 1418c2ecf20Sopenharmony_ci}; 1428c2ecf20Sopenharmony_ci 1438c2ecf20Sopenharmony_cistatic const struct parent_map mmcc_xo_dsi_hdmi_edp_gpll0_map[] = { 1448c2ecf20Sopenharmony_ci { P_XO, 0 }, 1458c2ecf20Sopenharmony_ci { P_EDPLINK, 4 }, 1468c2ecf20Sopenharmony_ci { P_HDMIPLL, 3 }, 1478c2ecf20Sopenharmony_ci { P_GPLL0, 5 }, 1488c2ecf20Sopenharmony_ci { P_DSI0PLL, 1 }, 1498c2ecf20Sopenharmony_ci { P_DSI1PLL, 2 } 1508c2ecf20Sopenharmony_ci}; 1518c2ecf20Sopenharmony_ci 1528c2ecf20Sopenharmony_cistatic const char * const mmcc_xo_dsi_hdmi_edp_gpll0[] = { 1538c2ecf20Sopenharmony_ci "xo", 1548c2ecf20Sopenharmony_ci "edp_link_clk", 1558c2ecf20Sopenharmony_ci "hdmipll", 1568c2ecf20Sopenharmony_ci "gpll0_vote", 1578c2ecf20Sopenharmony_ci "dsi0pll", 1588c2ecf20Sopenharmony_ci "dsi1pll", 1598c2ecf20Sopenharmony_ci}; 1608c2ecf20Sopenharmony_ci 1618c2ecf20Sopenharmony_cistatic const struct parent_map mmcc_xo_dsibyte_hdmi_edp_gpll0_map[] = { 1628c2ecf20Sopenharmony_ci { P_XO, 0 }, 1638c2ecf20Sopenharmony_ci { P_EDPLINK, 4 }, 1648c2ecf20Sopenharmony_ci { P_HDMIPLL, 3 }, 1658c2ecf20Sopenharmony_ci { P_GPLL0, 5 }, 1668c2ecf20Sopenharmony_ci { P_DSI0PLL_BYTE, 1 }, 1678c2ecf20Sopenharmony_ci { P_DSI1PLL_BYTE, 2 } 1688c2ecf20Sopenharmony_ci}; 1698c2ecf20Sopenharmony_ci 1708c2ecf20Sopenharmony_cistatic const char * const mmcc_xo_dsibyte_hdmi_edp_gpll0[] = { 1718c2ecf20Sopenharmony_ci "xo", 1728c2ecf20Sopenharmony_ci "edp_link_clk", 1738c2ecf20Sopenharmony_ci "hdmipll", 1748c2ecf20Sopenharmony_ci "gpll0_vote", 1758c2ecf20Sopenharmony_ci "dsi0pllbyte", 1768c2ecf20Sopenharmony_ci "dsi1pllbyte", 1778c2ecf20Sopenharmony_ci}; 1788c2ecf20Sopenharmony_ci 1798c2ecf20Sopenharmony_cistatic struct clk_pll mmpll0 = { 1808c2ecf20Sopenharmony_ci .l_reg = 0x0004, 1818c2ecf20Sopenharmony_ci .m_reg = 0x0008, 1828c2ecf20Sopenharmony_ci .n_reg = 0x000c, 1838c2ecf20Sopenharmony_ci .config_reg = 0x0014, 1848c2ecf20Sopenharmony_ci .mode_reg = 0x0000, 1858c2ecf20Sopenharmony_ci .status_reg = 0x001c, 1868c2ecf20Sopenharmony_ci .status_bit = 17, 1878c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 1888c2ecf20Sopenharmony_ci .name = "mmpll0", 1898c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ "xo" }, 1908c2ecf20Sopenharmony_ci .num_parents = 1, 1918c2ecf20Sopenharmony_ci .ops = &clk_pll_ops, 1928c2ecf20Sopenharmony_ci }, 1938c2ecf20Sopenharmony_ci}; 1948c2ecf20Sopenharmony_ci 1958c2ecf20Sopenharmony_cistatic struct clk_regmap mmpll0_vote = { 1968c2ecf20Sopenharmony_ci .enable_reg = 0x0100, 1978c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 1988c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 1998c2ecf20Sopenharmony_ci .name = "mmpll0_vote", 2008c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ "mmpll0" }, 2018c2ecf20Sopenharmony_ci .num_parents = 1, 2028c2ecf20Sopenharmony_ci .ops = &clk_pll_vote_ops, 2038c2ecf20Sopenharmony_ci }, 2048c2ecf20Sopenharmony_ci}; 2058c2ecf20Sopenharmony_ci 2068c2ecf20Sopenharmony_cistatic struct clk_pll mmpll1 = { 2078c2ecf20Sopenharmony_ci .l_reg = 0x0044, 2088c2ecf20Sopenharmony_ci .m_reg = 0x0048, 2098c2ecf20Sopenharmony_ci .n_reg = 0x004c, 2108c2ecf20Sopenharmony_ci .config_reg = 0x0050, 2118c2ecf20Sopenharmony_ci .mode_reg = 0x0040, 2128c2ecf20Sopenharmony_ci .status_reg = 0x005c, 2138c2ecf20Sopenharmony_ci .status_bit = 17, 2148c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 2158c2ecf20Sopenharmony_ci .name = "mmpll1", 2168c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ "xo" }, 2178c2ecf20Sopenharmony_ci .num_parents = 1, 2188c2ecf20Sopenharmony_ci .ops = &clk_pll_ops, 2198c2ecf20Sopenharmony_ci }, 2208c2ecf20Sopenharmony_ci}; 2218c2ecf20Sopenharmony_ci 2228c2ecf20Sopenharmony_cistatic struct clk_regmap mmpll1_vote = { 2238c2ecf20Sopenharmony_ci .enable_reg = 0x0100, 2248c2ecf20Sopenharmony_ci .enable_mask = BIT(1), 2258c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 2268c2ecf20Sopenharmony_ci .name = "mmpll1_vote", 2278c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ "mmpll1" }, 2288c2ecf20Sopenharmony_ci .num_parents = 1, 2298c2ecf20Sopenharmony_ci .ops = &clk_pll_vote_ops, 2308c2ecf20Sopenharmony_ci }, 2318c2ecf20Sopenharmony_ci}; 2328c2ecf20Sopenharmony_ci 2338c2ecf20Sopenharmony_cistatic struct clk_pll mmpll2 = { 2348c2ecf20Sopenharmony_ci .l_reg = 0x4104, 2358c2ecf20Sopenharmony_ci .m_reg = 0x4108, 2368c2ecf20Sopenharmony_ci .n_reg = 0x410c, 2378c2ecf20Sopenharmony_ci .config_reg = 0x4110, 2388c2ecf20Sopenharmony_ci .mode_reg = 0x4100, 2398c2ecf20Sopenharmony_ci .status_reg = 0x411c, 2408c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 2418c2ecf20Sopenharmony_ci .name = "mmpll2", 2428c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ "xo" }, 2438c2ecf20Sopenharmony_ci .num_parents = 1, 2448c2ecf20Sopenharmony_ci .ops = &clk_pll_ops, 2458c2ecf20Sopenharmony_ci }, 2468c2ecf20Sopenharmony_ci}; 2478c2ecf20Sopenharmony_ci 2488c2ecf20Sopenharmony_cistatic struct clk_pll mmpll3 = { 2498c2ecf20Sopenharmony_ci .l_reg = 0x0084, 2508c2ecf20Sopenharmony_ci .m_reg = 0x0088, 2518c2ecf20Sopenharmony_ci .n_reg = 0x008c, 2528c2ecf20Sopenharmony_ci .config_reg = 0x0090, 2538c2ecf20Sopenharmony_ci .mode_reg = 0x0080, 2548c2ecf20Sopenharmony_ci .status_reg = 0x009c, 2558c2ecf20Sopenharmony_ci .status_bit = 17, 2568c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 2578c2ecf20Sopenharmony_ci .name = "mmpll3", 2588c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ "xo" }, 2598c2ecf20Sopenharmony_ci .num_parents = 1, 2608c2ecf20Sopenharmony_ci .ops = &clk_pll_ops, 2618c2ecf20Sopenharmony_ci }, 2628c2ecf20Sopenharmony_ci}; 2638c2ecf20Sopenharmony_ci 2648c2ecf20Sopenharmony_cistatic struct clk_rcg2 mmss_ahb_clk_src = { 2658c2ecf20Sopenharmony_ci .cmd_rcgr = 0x5000, 2668c2ecf20Sopenharmony_ci .hid_width = 5, 2678c2ecf20Sopenharmony_ci .parent_map = mmcc_xo_mmpll0_mmpll1_gpll0_map, 2688c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 2698c2ecf20Sopenharmony_ci .name = "mmss_ahb_clk_src", 2708c2ecf20Sopenharmony_ci .parent_names = mmcc_xo_mmpll0_mmpll1_gpll0, 2718c2ecf20Sopenharmony_ci .num_parents = 4, 2728c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 2738c2ecf20Sopenharmony_ci }, 2748c2ecf20Sopenharmony_ci}; 2758c2ecf20Sopenharmony_ci 2768c2ecf20Sopenharmony_cistatic struct freq_tbl ftbl_mmss_axi_clk[] = { 2778c2ecf20Sopenharmony_ci F( 19200000, P_XO, 1, 0, 0), 2788c2ecf20Sopenharmony_ci F( 37500000, P_GPLL0, 16, 0, 0), 2798c2ecf20Sopenharmony_ci F( 50000000, P_GPLL0, 12, 0, 0), 2808c2ecf20Sopenharmony_ci F( 75000000, P_GPLL0, 8, 0, 0), 2818c2ecf20Sopenharmony_ci F(100000000, P_GPLL0, 6, 0, 0), 2828c2ecf20Sopenharmony_ci F(150000000, P_GPLL0, 4, 0, 0), 2838c2ecf20Sopenharmony_ci F(291750000, P_MMPLL1, 4, 0, 0), 2848c2ecf20Sopenharmony_ci F(400000000, P_MMPLL0, 2, 0, 0), 2858c2ecf20Sopenharmony_ci F(466800000, P_MMPLL1, 2.5, 0, 0), 2868c2ecf20Sopenharmony_ci}; 2878c2ecf20Sopenharmony_ci 2888c2ecf20Sopenharmony_cistatic struct clk_rcg2 mmss_axi_clk_src = { 2898c2ecf20Sopenharmony_ci .cmd_rcgr = 0x5040, 2908c2ecf20Sopenharmony_ci .hid_width = 5, 2918c2ecf20Sopenharmony_ci .parent_map = mmcc_xo_mmpll0_mmpll1_gpll0_map, 2928c2ecf20Sopenharmony_ci .freq_tbl = ftbl_mmss_axi_clk, 2938c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 2948c2ecf20Sopenharmony_ci .name = "mmss_axi_clk_src", 2958c2ecf20Sopenharmony_ci .parent_names = mmcc_xo_mmpll0_mmpll1_gpll0, 2968c2ecf20Sopenharmony_ci .num_parents = 4, 2978c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 2988c2ecf20Sopenharmony_ci }, 2998c2ecf20Sopenharmony_ci}; 3008c2ecf20Sopenharmony_ci 3018c2ecf20Sopenharmony_cistatic struct freq_tbl ftbl_ocmemnoc_clk[] = { 3028c2ecf20Sopenharmony_ci F( 19200000, P_XO, 1, 0, 0), 3038c2ecf20Sopenharmony_ci F( 37500000, P_GPLL0, 16, 0, 0), 3048c2ecf20Sopenharmony_ci F( 50000000, P_GPLL0, 12, 0, 0), 3058c2ecf20Sopenharmony_ci F( 75000000, P_GPLL0, 8, 0, 0), 3068c2ecf20Sopenharmony_ci F(100000000, P_GPLL0, 6, 0, 0), 3078c2ecf20Sopenharmony_ci F(150000000, P_GPLL0, 4, 0, 0), 3088c2ecf20Sopenharmony_ci F(291750000, P_MMPLL1, 4, 0, 0), 3098c2ecf20Sopenharmony_ci F(400000000, P_MMPLL0, 2, 0, 0), 3108c2ecf20Sopenharmony_ci}; 3118c2ecf20Sopenharmony_ci 3128c2ecf20Sopenharmony_cistatic struct clk_rcg2 ocmemnoc_clk_src = { 3138c2ecf20Sopenharmony_ci .cmd_rcgr = 0x5090, 3148c2ecf20Sopenharmony_ci .hid_width = 5, 3158c2ecf20Sopenharmony_ci .parent_map = mmcc_xo_mmpll0_mmpll1_gpll0_map, 3168c2ecf20Sopenharmony_ci .freq_tbl = ftbl_ocmemnoc_clk, 3178c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 3188c2ecf20Sopenharmony_ci .name = "ocmemnoc_clk_src", 3198c2ecf20Sopenharmony_ci .parent_names = mmcc_xo_mmpll0_mmpll1_gpll0, 3208c2ecf20Sopenharmony_ci .num_parents = 4, 3218c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 3228c2ecf20Sopenharmony_ci }, 3238c2ecf20Sopenharmony_ci}; 3248c2ecf20Sopenharmony_ci 3258c2ecf20Sopenharmony_cistatic struct freq_tbl ftbl_camss_csi0_3_clk[] = { 3268c2ecf20Sopenharmony_ci F(100000000, P_GPLL0, 6, 0, 0), 3278c2ecf20Sopenharmony_ci F(200000000, P_MMPLL0, 4, 0, 0), 3288c2ecf20Sopenharmony_ci { } 3298c2ecf20Sopenharmony_ci}; 3308c2ecf20Sopenharmony_ci 3318c2ecf20Sopenharmony_cistatic struct clk_rcg2 csi0_clk_src = { 3328c2ecf20Sopenharmony_ci .cmd_rcgr = 0x3090, 3338c2ecf20Sopenharmony_ci .hid_width = 5, 3348c2ecf20Sopenharmony_ci .parent_map = mmcc_xo_mmpll0_mmpll1_gpll0_map, 3358c2ecf20Sopenharmony_ci .freq_tbl = ftbl_camss_csi0_3_clk, 3368c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 3378c2ecf20Sopenharmony_ci .name = "csi0_clk_src", 3388c2ecf20Sopenharmony_ci .parent_names = mmcc_xo_mmpll0_mmpll1_gpll0, 3398c2ecf20Sopenharmony_ci .num_parents = 4, 3408c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 3418c2ecf20Sopenharmony_ci }, 3428c2ecf20Sopenharmony_ci}; 3438c2ecf20Sopenharmony_ci 3448c2ecf20Sopenharmony_cistatic struct clk_rcg2 csi1_clk_src = { 3458c2ecf20Sopenharmony_ci .cmd_rcgr = 0x3100, 3468c2ecf20Sopenharmony_ci .hid_width = 5, 3478c2ecf20Sopenharmony_ci .parent_map = mmcc_xo_mmpll0_mmpll1_gpll0_map, 3488c2ecf20Sopenharmony_ci .freq_tbl = ftbl_camss_csi0_3_clk, 3498c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 3508c2ecf20Sopenharmony_ci .name = "csi1_clk_src", 3518c2ecf20Sopenharmony_ci .parent_names = mmcc_xo_mmpll0_mmpll1_gpll0, 3528c2ecf20Sopenharmony_ci .num_parents = 4, 3538c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 3548c2ecf20Sopenharmony_ci }, 3558c2ecf20Sopenharmony_ci}; 3568c2ecf20Sopenharmony_ci 3578c2ecf20Sopenharmony_cistatic struct clk_rcg2 csi2_clk_src = { 3588c2ecf20Sopenharmony_ci .cmd_rcgr = 0x3160, 3598c2ecf20Sopenharmony_ci .hid_width = 5, 3608c2ecf20Sopenharmony_ci .parent_map = mmcc_xo_mmpll0_mmpll1_gpll0_map, 3618c2ecf20Sopenharmony_ci .freq_tbl = ftbl_camss_csi0_3_clk, 3628c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 3638c2ecf20Sopenharmony_ci .name = "csi2_clk_src", 3648c2ecf20Sopenharmony_ci .parent_names = mmcc_xo_mmpll0_mmpll1_gpll0, 3658c2ecf20Sopenharmony_ci .num_parents = 4, 3668c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 3678c2ecf20Sopenharmony_ci }, 3688c2ecf20Sopenharmony_ci}; 3698c2ecf20Sopenharmony_ci 3708c2ecf20Sopenharmony_cistatic struct clk_rcg2 csi3_clk_src = { 3718c2ecf20Sopenharmony_ci .cmd_rcgr = 0x31c0, 3728c2ecf20Sopenharmony_ci .hid_width = 5, 3738c2ecf20Sopenharmony_ci .parent_map = mmcc_xo_mmpll0_mmpll1_gpll0_map, 3748c2ecf20Sopenharmony_ci .freq_tbl = ftbl_camss_csi0_3_clk, 3758c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 3768c2ecf20Sopenharmony_ci .name = "csi3_clk_src", 3778c2ecf20Sopenharmony_ci .parent_names = mmcc_xo_mmpll0_mmpll1_gpll0, 3788c2ecf20Sopenharmony_ci .num_parents = 4, 3798c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 3808c2ecf20Sopenharmony_ci }, 3818c2ecf20Sopenharmony_ci}; 3828c2ecf20Sopenharmony_ci 3838c2ecf20Sopenharmony_cistatic struct freq_tbl ftbl_camss_vfe_vfe0_1_clk[] = { 3848c2ecf20Sopenharmony_ci F(37500000, P_GPLL0, 16, 0, 0), 3858c2ecf20Sopenharmony_ci F(50000000, P_GPLL0, 12, 0, 0), 3868c2ecf20Sopenharmony_ci F(60000000, P_GPLL0, 10, 0, 0), 3878c2ecf20Sopenharmony_ci F(80000000, P_GPLL0, 7.5, 0, 0), 3888c2ecf20Sopenharmony_ci F(100000000, P_GPLL0, 6, 0, 0), 3898c2ecf20Sopenharmony_ci F(109090000, P_GPLL0, 5.5, 0, 0), 3908c2ecf20Sopenharmony_ci F(133330000, P_GPLL0, 4.5, 0, 0), 3918c2ecf20Sopenharmony_ci F(200000000, P_GPLL0, 3, 0, 0), 3928c2ecf20Sopenharmony_ci F(228570000, P_MMPLL0, 3.5, 0, 0), 3938c2ecf20Sopenharmony_ci F(266670000, P_MMPLL0, 3, 0, 0), 3948c2ecf20Sopenharmony_ci F(320000000, P_MMPLL0, 2.5, 0, 0), 3958c2ecf20Sopenharmony_ci F(400000000, P_MMPLL0, 2, 0, 0), 3968c2ecf20Sopenharmony_ci F(465000000, P_MMPLL3, 2, 0, 0), 3978c2ecf20Sopenharmony_ci { } 3988c2ecf20Sopenharmony_ci}; 3998c2ecf20Sopenharmony_ci 4008c2ecf20Sopenharmony_cistatic struct clk_rcg2 vfe0_clk_src = { 4018c2ecf20Sopenharmony_ci .cmd_rcgr = 0x3600, 4028c2ecf20Sopenharmony_ci .hid_width = 5, 4038c2ecf20Sopenharmony_ci .parent_map = mmcc_xo_mmpll0_mmpll1_gpll0_map, 4048c2ecf20Sopenharmony_ci .freq_tbl = ftbl_camss_vfe_vfe0_1_clk, 4058c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 4068c2ecf20Sopenharmony_ci .name = "vfe0_clk_src", 4078c2ecf20Sopenharmony_ci .parent_names = mmcc_xo_mmpll0_mmpll1_gpll0, 4088c2ecf20Sopenharmony_ci .num_parents = 4, 4098c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 4108c2ecf20Sopenharmony_ci }, 4118c2ecf20Sopenharmony_ci}; 4128c2ecf20Sopenharmony_ci 4138c2ecf20Sopenharmony_cistatic struct clk_rcg2 vfe1_clk_src = { 4148c2ecf20Sopenharmony_ci .cmd_rcgr = 0x3620, 4158c2ecf20Sopenharmony_ci .hid_width = 5, 4168c2ecf20Sopenharmony_ci .parent_map = mmcc_xo_mmpll0_mmpll1_gpll0_map, 4178c2ecf20Sopenharmony_ci .freq_tbl = ftbl_camss_vfe_vfe0_1_clk, 4188c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 4198c2ecf20Sopenharmony_ci .name = "vfe1_clk_src", 4208c2ecf20Sopenharmony_ci .parent_names = mmcc_xo_mmpll0_mmpll1_gpll0, 4218c2ecf20Sopenharmony_ci .num_parents = 4, 4228c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 4238c2ecf20Sopenharmony_ci }, 4248c2ecf20Sopenharmony_ci}; 4258c2ecf20Sopenharmony_ci 4268c2ecf20Sopenharmony_cistatic struct freq_tbl ftbl_mdss_mdp_clk[] = { 4278c2ecf20Sopenharmony_ci F(37500000, P_GPLL0, 16, 0, 0), 4288c2ecf20Sopenharmony_ci F(60000000, P_GPLL0, 10, 0, 0), 4298c2ecf20Sopenharmony_ci F(75000000, P_GPLL0, 8, 0, 0), 4308c2ecf20Sopenharmony_ci F(85710000, P_GPLL0, 7, 0, 0), 4318c2ecf20Sopenharmony_ci F(100000000, P_GPLL0, 6, 0, 0), 4328c2ecf20Sopenharmony_ci F(133330000, P_MMPLL0, 6, 0, 0), 4338c2ecf20Sopenharmony_ci F(160000000, P_MMPLL0, 5, 0, 0), 4348c2ecf20Sopenharmony_ci F(200000000, P_MMPLL0, 4, 0, 0), 4358c2ecf20Sopenharmony_ci F(228570000, P_MMPLL0, 3.5, 0, 0), 4368c2ecf20Sopenharmony_ci F(240000000, P_GPLL0, 2.5, 0, 0), 4378c2ecf20Sopenharmony_ci F(266670000, P_MMPLL0, 3, 0, 0), 4388c2ecf20Sopenharmony_ci F(320000000, P_MMPLL0, 2.5, 0, 0), 4398c2ecf20Sopenharmony_ci { } 4408c2ecf20Sopenharmony_ci}; 4418c2ecf20Sopenharmony_ci 4428c2ecf20Sopenharmony_cistatic struct clk_rcg2 mdp_clk_src = { 4438c2ecf20Sopenharmony_ci .cmd_rcgr = 0x2040, 4448c2ecf20Sopenharmony_ci .hid_width = 5, 4458c2ecf20Sopenharmony_ci .parent_map = mmcc_xo_mmpll0_dsi_hdmi_gpll0_map, 4468c2ecf20Sopenharmony_ci .freq_tbl = ftbl_mdss_mdp_clk, 4478c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 4488c2ecf20Sopenharmony_ci .name = "mdp_clk_src", 4498c2ecf20Sopenharmony_ci .parent_names = mmcc_xo_mmpll0_dsi_hdmi_gpll0, 4508c2ecf20Sopenharmony_ci .num_parents = 6, 4518c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 4528c2ecf20Sopenharmony_ci }, 4538c2ecf20Sopenharmony_ci}; 4548c2ecf20Sopenharmony_ci 4558c2ecf20Sopenharmony_cistatic struct freq_tbl ftbl_camss_jpeg_jpeg0_2_clk[] = { 4568c2ecf20Sopenharmony_ci F(75000000, P_GPLL0, 8, 0, 0), 4578c2ecf20Sopenharmony_ci F(133330000, P_GPLL0, 4.5, 0, 0), 4588c2ecf20Sopenharmony_ci F(200000000, P_GPLL0, 3, 0, 0), 4598c2ecf20Sopenharmony_ci F(228570000, P_MMPLL0, 3.5, 0, 0), 4608c2ecf20Sopenharmony_ci F(266670000, P_MMPLL0, 3, 0, 0), 4618c2ecf20Sopenharmony_ci F(320000000, P_MMPLL0, 2.5, 0, 0), 4628c2ecf20Sopenharmony_ci { } 4638c2ecf20Sopenharmony_ci}; 4648c2ecf20Sopenharmony_ci 4658c2ecf20Sopenharmony_cistatic struct clk_rcg2 jpeg0_clk_src = { 4668c2ecf20Sopenharmony_ci .cmd_rcgr = 0x3500, 4678c2ecf20Sopenharmony_ci .hid_width = 5, 4688c2ecf20Sopenharmony_ci .parent_map = mmcc_xo_mmpll0_mmpll1_gpll0_map, 4698c2ecf20Sopenharmony_ci .freq_tbl = ftbl_camss_jpeg_jpeg0_2_clk, 4708c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 4718c2ecf20Sopenharmony_ci .name = "jpeg0_clk_src", 4728c2ecf20Sopenharmony_ci .parent_names = mmcc_xo_mmpll0_mmpll1_gpll0, 4738c2ecf20Sopenharmony_ci .num_parents = 4, 4748c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 4758c2ecf20Sopenharmony_ci }, 4768c2ecf20Sopenharmony_ci}; 4778c2ecf20Sopenharmony_ci 4788c2ecf20Sopenharmony_cistatic struct clk_rcg2 jpeg1_clk_src = { 4798c2ecf20Sopenharmony_ci .cmd_rcgr = 0x3520, 4808c2ecf20Sopenharmony_ci .hid_width = 5, 4818c2ecf20Sopenharmony_ci .parent_map = mmcc_xo_mmpll0_mmpll1_gpll0_map, 4828c2ecf20Sopenharmony_ci .freq_tbl = ftbl_camss_jpeg_jpeg0_2_clk, 4838c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 4848c2ecf20Sopenharmony_ci .name = "jpeg1_clk_src", 4858c2ecf20Sopenharmony_ci .parent_names = mmcc_xo_mmpll0_mmpll1_gpll0, 4868c2ecf20Sopenharmony_ci .num_parents = 4, 4878c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 4888c2ecf20Sopenharmony_ci }, 4898c2ecf20Sopenharmony_ci}; 4908c2ecf20Sopenharmony_ci 4918c2ecf20Sopenharmony_cistatic struct clk_rcg2 jpeg2_clk_src = { 4928c2ecf20Sopenharmony_ci .cmd_rcgr = 0x3540, 4938c2ecf20Sopenharmony_ci .hid_width = 5, 4948c2ecf20Sopenharmony_ci .parent_map = mmcc_xo_mmpll0_mmpll1_gpll0_map, 4958c2ecf20Sopenharmony_ci .freq_tbl = ftbl_camss_jpeg_jpeg0_2_clk, 4968c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 4978c2ecf20Sopenharmony_ci .name = "jpeg2_clk_src", 4988c2ecf20Sopenharmony_ci .parent_names = mmcc_xo_mmpll0_mmpll1_gpll0, 4998c2ecf20Sopenharmony_ci .num_parents = 4, 5008c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 5018c2ecf20Sopenharmony_ci }, 5028c2ecf20Sopenharmony_ci}; 5038c2ecf20Sopenharmony_ci 5048c2ecf20Sopenharmony_cistatic struct clk_rcg2 pclk0_clk_src = { 5058c2ecf20Sopenharmony_ci .cmd_rcgr = 0x2000, 5068c2ecf20Sopenharmony_ci .mnd_width = 8, 5078c2ecf20Sopenharmony_ci .hid_width = 5, 5088c2ecf20Sopenharmony_ci .parent_map = mmcc_xo_dsi_hdmi_edp_gpll0_map, 5098c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 5108c2ecf20Sopenharmony_ci .name = "pclk0_clk_src", 5118c2ecf20Sopenharmony_ci .parent_names = mmcc_xo_dsi_hdmi_edp_gpll0, 5128c2ecf20Sopenharmony_ci .num_parents = 6, 5138c2ecf20Sopenharmony_ci .ops = &clk_pixel_ops, 5148c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 5158c2ecf20Sopenharmony_ci }, 5168c2ecf20Sopenharmony_ci}; 5178c2ecf20Sopenharmony_ci 5188c2ecf20Sopenharmony_cistatic struct clk_rcg2 pclk1_clk_src = { 5198c2ecf20Sopenharmony_ci .cmd_rcgr = 0x2020, 5208c2ecf20Sopenharmony_ci .mnd_width = 8, 5218c2ecf20Sopenharmony_ci .hid_width = 5, 5228c2ecf20Sopenharmony_ci .parent_map = mmcc_xo_dsi_hdmi_edp_gpll0_map, 5238c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 5248c2ecf20Sopenharmony_ci .name = "pclk1_clk_src", 5258c2ecf20Sopenharmony_ci .parent_names = mmcc_xo_dsi_hdmi_edp_gpll0, 5268c2ecf20Sopenharmony_ci .num_parents = 6, 5278c2ecf20Sopenharmony_ci .ops = &clk_pixel_ops, 5288c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 5298c2ecf20Sopenharmony_ci }, 5308c2ecf20Sopenharmony_ci}; 5318c2ecf20Sopenharmony_ci 5328c2ecf20Sopenharmony_cistatic struct freq_tbl ftbl_venus0_vcodec0_clk[] = { 5338c2ecf20Sopenharmony_ci F(50000000, P_GPLL0, 12, 0, 0), 5348c2ecf20Sopenharmony_ci F(100000000, P_GPLL0, 6, 0, 0), 5358c2ecf20Sopenharmony_ci F(133330000, P_MMPLL0, 6, 0, 0), 5368c2ecf20Sopenharmony_ci F(200000000, P_MMPLL0, 4, 0, 0), 5378c2ecf20Sopenharmony_ci F(266670000, P_MMPLL0, 3, 0, 0), 5388c2ecf20Sopenharmony_ci F(465000000, P_MMPLL3, 2, 0, 0), 5398c2ecf20Sopenharmony_ci { } 5408c2ecf20Sopenharmony_ci}; 5418c2ecf20Sopenharmony_ci 5428c2ecf20Sopenharmony_cistatic struct clk_rcg2 vcodec0_clk_src = { 5438c2ecf20Sopenharmony_ci .cmd_rcgr = 0x1000, 5448c2ecf20Sopenharmony_ci .mnd_width = 8, 5458c2ecf20Sopenharmony_ci .hid_width = 5, 5468c2ecf20Sopenharmony_ci .parent_map = mmcc_xo_mmpll0_1_3_gpll0_map, 5478c2ecf20Sopenharmony_ci .freq_tbl = ftbl_venus0_vcodec0_clk, 5488c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 5498c2ecf20Sopenharmony_ci .name = "vcodec0_clk_src", 5508c2ecf20Sopenharmony_ci .parent_names = mmcc_xo_mmpll0_1_3_gpll0, 5518c2ecf20Sopenharmony_ci .num_parents = 5, 5528c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 5538c2ecf20Sopenharmony_ci }, 5548c2ecf20Sopenharmony_ci}; 5558c2ecf20Sopenharmony_ci 5568c2ecf20Sopenharmony_cistatic struct freq_tbl ftbl_camss_cci_cci_clk[] = { 5578c2ecf20Sopenharmony_ci F(19200000, P_XO, 1, 0, 0), 5588c2ecf20Sopenharmony_ci { } 5598c2ecf20Sopenharmony_ci}; 5608c2ecf20Sopenharmony_ci 5618c2ecf20Sopenharmony_cistatic struct clk_rcg2 cci_clk_src = { 5628c2ecf20Sopenharmony_ci .cmd_rcgr = 0x3300, 5638c2ecf20Sopenharmony_ci .hid_width = 5, 5648c2ecf20Sopenharmony_ci .parent_map = mmcc_xo_mmpll0_mmpll1_gpll0_map, 5658c2ecf20Sopenharmony_ci .freq_tbl = ftbl_camss_cci_cci_clk, 5668c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 5678c2ecf20Sopenharmony_ci .name = "cci_clk_src", 5688c2ecf20Sopenharmony_ci .parent_names = mmcc_xo_mmpll0_mmpll1_gpll0, 5698c2ecf20Sopenharmony_ci .num_parents = 4, 5708c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 5718c2ecf20Sopenharmony_ci }, 5728c2ecf20Sopenharmony_ci}; 5738c2ecf20Sopenharmony_ci 5748c2ecf20Sopenharmony_cistatic struct freq_tbl ftbl_camss_gp0_1_clk[] = { 5758c2ecf20Sopenharmony_ci F(10000, P_XO, 16, 1, 120), 5768c2ecf20Sopenharmony_ci F(24000, P_XO, 16, 1, 50), 5778c2ecf20Sopenharmony_ci F(6000000, P_GPLL0, 10, 1, 10), 5788c2ecf20Sopenharmony_ci F(12000000, P_GPLL0, 10, 1, 5), 5798c2ecf20Sopenharmony_ci F(13000000, P_GPLL0, 4, 13, 150), 5808c2ecf20Sopenharmony_ci F(24000000, P_GPLL0, 5, 1, 5), 5818c2ecf20Sopenharmony_ci { } 5828c2ecf20Sopenharmony_ci}; 5838c2ecf20Sopenharmony_ci 5848c2ecf20Sopenharmony_cistatic struct clk_rcg2 camss_gp0_clk_src = { 5858c2ecf20Sopenharmony_ci .cmd_rcgr = 0x3420, 5868c2ecf20Sopenharmony_ci .mnd_width = 8, 5878c2ecf20Sopenharmony_ci .hid_width = 5, 5888c2ecf20Sopenharmony_ci .parent_map = mmcc_xo_mmpll0_1_gpll1_0_map, 5898c2ecf20Sopenharmony_ci .freq_tbl = ftbl_camss_gp0_1_clk, 5908c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 5918c2ecf20Sopenharmony_ci .name = "camss_gp0_clk_src", 5928c2ecf20Sopenharmony_ci .parent_names = mmcc_xo_mmpll0_1_gpll1_0, 5938c2ecf20Sopenharmony_ci .num_parents = 5, 5948c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 5958c2ecf20Sopenharmony_ci }, 5968c2ecf20Sopenharmony_ci}; 5978c2ecf20Sopenharmony_ci 5988c2ecf20Sopenharmony_cistatic struct clk_rcg2 camss_gp1_clk_src = { 5998c2ecf20Sopenharmony_ci .cmd_rcgr = 0x3450, 6008c2ecf20Sopenharmony_ci .mnd_width = 8, 6018c2ecf20Sopenharmony_ci .hid_width = 5, 6028c2ecf20Sopenharmony_ci .parent_map = mmcc_xo_mmpll0_1_gpll1_0_map, 6038c2ecf20Sopenharmony_ci .freq_tbl = ftbl_camss_gp0_1_clk, 6048c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 6058c2ecf20Sopenharmony_ci .name = "camss_gp1_clk_src", 6068c2ecf20Sopenharmony_ci .parent_names = mmcc_xo_mmpll0_1_gpll1_0, 6078c2ecf20Sopenharmony_ci .num_parents = 5, 6088c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 6098c2ecf20Sopenharmony_ci }, 6108c2ecf20Sopenharmony_ci}; 6118c2ecf20Sopenharmony_ci 6128c2ecf20Sopenharmony_cistatic struct freq_tbl ftbl_camss_mclk0_3_clk[] = { 6138c2ecf20Sopenharmony_ci F(4800000, P_XO, 4, 0, 0), 6148c2ecf20Sopenharmony_ci F(6000000, P_GPLL0, 10, 1, 10), 6158c2ecf20Sopenharmony_ci F(8000000, P_GPLL0, 15, 1, 5), 6168c2ecf20Sopenharmony_ci F(9600000, P_XO, 2, 0, 0), 6178c2ecf20Sopenharmony_ci F(16000000, P_GPLL0, 12.5, 1, 3), 6188c2ecf20Sopenharmony_ci F(19200000, P_XO, 1, 0, 0), 6198c2ecf20Sopenharmony_ci F(24000000, P_GPLL0, 5, 1, 5), 6208c2ecf20Sopenharmony_ci F(32000000, P_MMPLL0, 5, 1, 5), 6218c2ecf20Sopenharmony_ci F(48000000, P_GPLL0, 12.5, 0, 0), 6228c2ecf20Sopenharmony_ci F(64000000, P_MMPLL0, 12.5, 0, 0), 6238c2ecf20Sopenharmony_ci F(66670000, P_GPLL0, 9, 0, 0), 6248c2ecf20Sopenharmony_ci { } 6258c2ecf20Sopenharmony_ci}; 6268c2ecf20Sopenharmony_ci 6278c2ecf20Sopenharmony_cistatic struct clk_rcg2 mclk0_clk_src = { 6288c2ecf20Sopenharmony_ci .cmd_rcgr = 0x3360, 6298c2ecf20Sopenharmony_ci .hid_width = 5, 6308c2ecf20Sopenharmony_ci .parent_map = mmcc_xo_mmpll0_mmpll1_gpll0_map, 6318c2ecf20Sopenharmony_ci .freq_tbl = ftbl_camss_mclk0_3_clk, 6328c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 6338c2ecf20Sopenharmony_ci .name = "mclk0_clk_src", 6348c2ecf20Sopenharmony_ci .parent_names = mmcc_xo_mmpll0_mmpll1_gpll0, 6358c2ecf20Sopenharmony_ci .num_parents = 4, 6368c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 6378c2ecf20Sopenharmony_ci }, 6388c2ecf20Sopenharmony_ci}; 6398c2ecf20Sopenharmony_ci 6408c2ecf20Sopenharmony_cistatic struct clk_rcg2 mclk1_clk_src = { 6418c2ecf20Sopenharmony_ci .cmd_rcgr = 0x3390, 6428c2ecf20Sopenharmony_ci .hid_width = 5, 6438c2ecf20Sopenharmony_ci .parent_map = mmcc_xo_mmpll0_mmpll1_gpll0_map, 6448c2ecf20Sopenharmony_ci .freq_tbl = ftbl_camss_mclk0_3_clk, 6458c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 6468c2ecf20Sopenharmony_ci .name = "mclk1_clk_src", 6478c2ecf20Sopenharmony_ci .parent_names = mmcc_xo_mmpll0_mmpll1_gpll0, 6488c2ecf20Sopenharmony_ci .num_parents = 4, 6498c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 6508c2ecf20Sopenharmony_ci }, 6518c2ecf20Sopenharmony_ci}; 6528c2ecf20Sopenharmony_ci 6538c2ecf20Sopenharmony_cistatic struct clk_rcg2 mclk2_clk_src = { 6548c2ecf20Sopenharmony_ci .cmd_rcgr = 0x33c0, 6558c2ecf20Sopenharmony_ci .hid_width = 5, 6568c2ecf20Sopenharmony_ci .parent_map = mmcc_xo_mmpll0_mmpll1_gpll0_map, 6578c2ecf20Sopenharmony_ci .freq_tbl = ftbl_camss_mclk0_3_clk, 6588c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 6598c2ecf20Sopenharmony_ci .name = "mclk2_clk_src", 6608c2ecf20Sopenharmony_ci .parent_names = mmcc_xo_mmpll0_mmpll1_gpll0, 6618c2ecf20Sopenharmony_ci .num_parents = 4, 6628c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 6638c2ecf20Sopenharmony_ci }, 6648c2ecf20Sopenharmony_ci}; 6658c2ecf20Sopenharmony_ci 6668c2ecf20Sopenharmony_cistatic struct clk_rcg2 mclk3_clk_src = { 6678c2ecf20Sopenharmony_ci .cmd_rcgr = 0x33f0, 6688c2ecf20Sopenharmony_ci .hid_width = 5, 6698c2ecf20Sopenharmony_ci .parent_map = mmcc_xo_mmpll0_mmpll1_gpll0_map, 6708c2ecf20Sopenharmony_ci .freq_tbl = ftbl_camss_mclk0_3_clk, 6718c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 6728c2ecf20Sopenharmony_ci .name = "mclk3_clk_src", 6738c2ecf20Sopenharmony_ci .parent_names = mmcc_xo_mmpll0_mmpll1_gpll0, 6748c2ecf20Sopenharmony_ci .num_parents = 4, 6758c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 6768c2ecf20Sopenharmony_ci }, 6778c2ecf20Sopenharmony_ci}; 6788c2ecf20Sopenharmony_ci 6798c2ecf20Sopenharmony_cistatic struct freq_tbl ftbl_camss_phy0_2_csi0_2phytimer_clk[] = { 6808c2ecf20Sopenharmony_ci F(100000000, P_GPLL0, 6, 0, 0), 6818c2ecf20Sopenharmony_ci F(200000000, P_MMPLL0, 4, 0, 0), 6828c2ecf20Sopenharmony_ci { } 6838c2ecf20Sopenharmony_ci}; 6848c2ecf20Sopenharmony_ci 6858c2ecf20Sopenharmony_cistatic struct clk_rcg2 csi0phytimer_clk_src = { 6868c2ecf20Sopenharmony_ci .cmd_rcgr = 0x3000, 6878c2ecf20Sopenharmony_ci .hid_width = 5, 6888c2ecf20Sopenharmony_ci .parent_map = mmcc_xo_mmpll0_mmpll1_gpll0_map, 6898c2ecf20Sopenharmony_ci .freq_tbl = ftbl_camss_phy0_2_csi0_2phytimer_clk, 6908c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 6918c2ecf20Sopenharmony_ci .name = "csi0phytimer_clk_src", 6928c2ecf20Sopenharmony_ci .parent_names = mmcc_xo_mmpll0_mmpll1_gpll0, 6938c2ecf20Sopenharmony_ci .num_parents = 4, 6948c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 6958c2ecf20Sopenharmony_ci }, 6968c2ecf20Sopenharmony_ci}; 6978c2ecf20Sopenharmony_ci 6988c2ecf20Sopenharmony_cistatic struct clk_rcg2 csi1phytimer_clk_src = { 6998c2ecf20Sopenharmony_ci .cmd_rcgr = 0x3030, 7008c2ecf20Sopenharmony_ci .hid_width = 5, 7018c2ecf20Sopenharmony_ci .parent_map = mmcc_xo_mmpll0_mmpll1_gpll0_map, 7028c2ecf20Sopenharmony_ci .freq_tbl = ftbl_camss_phy0_2_csi0_2phytimer_clk, 7038c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 7048c2ecf20Sopenharmony_ci .name = "csi1phytimer_clk_src", 7058c2ecf20Sopenharmony_ci .parent_names = mmcc_xo_mmpll0_mmpll1_gpll0, 7068c2ecf20Sopenharmony_ci .num_parents = 4, 7078c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 7088c2ecf20Sopenharmony_ci }, 7098c2ecf20Sopenharmony_ci}; 7108c2ecf20Sopenharmony_ci 7118c2ecf20Sopenharmony_cistatic struct clk_rcg2 csi2phytimer_clk_src = { 7128c2ecf20Sopenharmony_ci .cmd_rcgr = 0x3060, 7138c2ecf20Sopenharmony_ci .hid_width = 5, 7148c2ecf20Sopenharmony_ci .parent_map = mmcc_xo_mmpll0_mmpll1_gpll0_map, 7158c2ecf20Sopenharmony_ci .freq_tbl = ftbl_camss_phy0_2_csi0_2phytimer_clk, 7168c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 7178c2ecf20Sopenharmony_ci .name = "csi2phytimer_clk_src", 7188c2ecf20Sopenharmony_ci .parent_names = mmcc_xo_mmpll0_mmpll1_gpll0, 7198c2ecf20Sopenharmony_ci .num_parents = 4, 7208c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 7218c2ecf20Sopenharmony_ci }, 7228c2ecf20Sopenharmony_ci}; 7238c2ecf20Sopenharmony_ci 7248c2ecf20Sopenharmony_cistatic struct freq_tbl ftbl_camss_vfe_cpp_clk[] = { 7258c2ecf20Sopenharmony_ci F(133330000, P_GPLL0, 4.5, 0, 0), 7268c2ecf20Sopenharmony_ci F(266670000, P_MMPLL0, 3, 0, 0), 7278c2ecf20Sopenharmony_ci F(320000000, P_MMPLL0, 2.5, 0, 0), 7288c2ecf20Sopenharmony_ci F(400000000, P_MMPLL0, 2, 0, 0), 7298c2ecf20Sopenharmony_ci F(465000000, P_MMPLL3, 2, 0, 0), 7308c2ecf20Sopenharmony_ci { } 7318c2ecf20Sopenharmony_ci}; 7328c2ecf20Sopenharmony_ci 7338c2ecf20Sopenharmony_cistatic struct clk_rcg2 cpp_clk_src = { 7348c2ecf20Sopenharmony_ci .cmd_rcgr = 0x3640, 7358c2ecf20Sopenharmony_ci .hid_width = 5, 7368c2ecf20Sopenharmony_ci .parent_map = mmcc_xo_mmpll0_mmpll1_gpll0_map, 7378c2ecf20Sopenharmony_ci .freq_tbl = ftbl_camss_vfe_cpp_clk, 7388c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 7398c2ecf20Sopenharmony_ci .name = "cpp_clk_src", 7408c2ecf20Sopenharmony_ci .parent_names = mmcc_xo_mmpll0_mmpll1_gpll0, 7418c2ecf20Sopenharmony_ci .num_parents = 4, 7428c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 7438c2ecf20Sopenharmony_ci }, 7448c2ecf20Sopenharmony_ci}; 7458c2ecf20Sopenharmony_ci 7468c2ecf20Sopenharmony_cistatic struct freq_tbl byte_freq_tbl[] = { 7478c2ecf20Sopenharmony_ci { .src = P_DSI0PLL_BYTE }, 7488c2ecf20Sopenharmony_ci { } 7498c2ecf20Sopenharmony_ci}; 7508c2ecf20Sopenharmony_ci 7518c2ecf20Sopenharmony_cistatic struct clk_rcg2 byte0_clk_src = { 7528c2ecf20Sopenharmony_ci .cmd_rcgr = 0x2120, 7538c2ecf20Sopenharmony_ci .hid_width = 5, 7548c2ecf20Sopenharmony_ci .parent_map = mmcc_xo_dsibyte_hdmi_edp_gpll0_map, 7558c2ecf20Sopenharmony_ci .freq_tbl = byte_freq_tbl, 7568c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 7578c2ecf20Sopenharmony_ci .name = "byte0_clk_src", 7588c2ecf20Sopenharmony_ci .parent_names = mmcc_xo_dsibyte_hdmi_edp_gpll0, 7598c2ecf20Sopenharmony_ci .num_parents = 6, 7608c2ecf20Sopenharmony_ci .ops = &clk_byte2_ops, 7618c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 7628c2ecf20Sopenharmony_ci }, 7638c2ecf20Sopenharmony_ci}; 7648c2ecf20Sopenharmony_ci 7658c2ecf20Sopenharmony_cistatic struct clk_rcg2 byte1_clk_src = { 7668c2ecf20Sopenharmony_ci .cmd_rcgr = 0x2140, 7678c2ecf20Sopenharmony_ci .hid_width = 5, 7688c2ecf20Sopenharmony_ci .parent_map = mmcc_xo_dsibyte_hdmi_edp_gpll0_map, 7698c2ecf20Sopenharmony_ci .freq_tbl = byte_freq_tbl, 7708c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 7718c2ecf20Sopenharmony_ci .name = "byte1_clk_src", 7728c2ecf20Sopenharmony_ci .parent_names = mmcc_xo_dsibyte_hdmi_edp_gpll0, 7738c2ecf20Sopenharmony_ci .num_parents = 6, 7748c2ecf20Sopenharmony_ci .ops = &clk_byte2_ops, 7758c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 7768c2ecf20Sopenharmony_ci }, 7778c2ecf20Sopenharmony_ci}; 7788c2ecf20Sopenharmony_ci 7798c2ecf20Sopenharmony_cistatic struct freq_tbl ftbl_mdss_edpaux_clk[] = { 7808c2ecf20Sopenharmony_ci F(19200000, P_XO, 1, 0, 0), 7818c2ecf20Sopenharmony_ci { } 7828c2ecf20Sopenharmony_ci}; 7838c2ecf20Sopenharmony_ci 7848c2ecf20Sopenharmony_cistatic struct clk_rcg2 edpaux_clk_src = { 7858c2ecf20Sopenharmony_ci .cmd_rcgr = 0x20e0, 7868c2ecf20Sopenharmony_ci .hid_width = 5, 7878c2ecf20Sopenharmony_ci .parent_map = mmcc_xo_mmpll0_mmpll1_gpll0_map, 7888c2ecf20Sopenharmony_ci .freq_tbl = ftbl_mdss_edpaux_clk, 7898c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 7908c2ecf20Sopenharmony_ci .name = "edpaux_clk_src", 7918c2ecf20Sopenharmony_ci .parent_names = mmcc_xo_mmpll0_mmpll1_gpll0, 7928c2ecf20Sopenharmony_ci .num_parents = 4, 7938c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 7948c2ecf20Sopenharmony_ci }, 7958c2ecf20Sopenharmony_ci}; 7968c2ecf20Sopenharmony_ci 7978c2ecf20Sopenharmony_cistatic struct freq_tbl ftbl_mdss_edplink_clk[] = { 7988c2ecf20Sopenharmony_ci F(135000000, P_EDPLINK, 2, 0, 0), 7998c2ecf20Sopenharmony_ci F(270000000, P_EDPLINK, 11, 0, 0), 8008c2ecf20Sopenharmony_ci { } 8018c2ecf20Sopenharmony_ci}; 8028c2ecf20Sopenharmony_ci 8038c2ecf20Sopenharmony_cistatic struct clk_rcg2 edplink_clk_src = { 8048c2ecf20Sopenharmony_ci .cmd_rcgr = 0x20c0, 8058c2ecf20Sopenharmony_ci .hid_width = 5, 8068c2ecf20Sopenharmony_ci .parent_map = mmcc_xo_dsi_hdmi_edp_gpll0_map, 8078c2ecf20Sopenharmony_ci .freq_tbl = ftbl_mdss_edplink_clk, 8088c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 8098c2ecf20Sopenharmony_ci .name = "edplink_clk_src", 8108c2ecf20Sopenharmony_ci .parent_names = mmcc_xo_dsi_hdmi_edp_gpll0, 8118c2ecf20Sopenharmony_ci .num_parents = 6, 8128c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 8138c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 8148c2ecf20Sopenharmony_ci }, 8158c2ecf20Sopenharmony_ci}; 8168c2ecf20Sopenharmony_ci 8178c2ecf20Sopenharmony_cistatic struct freq_tbl edp_pixel_freq_tbl[] = { 8188c2ecf20Sopenharmony_ci { .src = P_EDPVCO }, 8198c2ecf20Sopenharmony_ci { } 8208c2ecf20Sopenharmony_ci}; 8218c2ecf20Sopenharmony_ci 8228c2ecf20Sopenharmony_cistatic struct clk_rcg2 edppixel_clk_src = { 8238c2ecf20Sopenharmony_ci .cmd_rcgr = 0x20a0, 8248c2ecf20Sopenharmony_ci .mnd_width = 8, 8258c2ecf20Sopenharmony_ci .hid_width = 5, 8268c2ecf20Sopenharmony_ci .parent_map = mmcc_xo_dsi_hdmi_edp_map, 8278c2ecf20Sopenharmony_ci .freq_tbl = edp_pixel_freq_tbl, 8288c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 8298c2ecf20Sopenharmony_ci .name = "edppixel_clk_src", 8308c2ecf20Sopenharmony_ci .parent_names = mmcc_xo_dsi_hdmi_edp, 8318c2ecf20Sopenharmony_ci .num_parents = 6, 8328c2ecf20Sopenharmony_ci .ops = &clk_edp_pixel_ops, 8338c2ecf20Sopenharmony_ci }, 8348c2ecf20Sopenharmony_ci}; 8358c2ecf20Sopenharmony_ci 8368c2ecf20Sopenharmony_cistatic struct freq_tbl ftbl_mdss_esc0_1_clk[] = { 8378c2ecf20Sopenharmony_ci F(19200000, P_XO, 1, 0, 0), 8388c2ecf20Sopenharmony_ci { } 8398c2ecf20Sopenharmony_ci}; 8408c2ecf20Sopenharmony_ci 8418c2ecf20Sopenharmony_cistatic struct clk_rcg2 esc0_clk_src = { 8428c2ecf20Sopenharmony_ci .cmd_rcgr = 0x2160, 8438c2ecf20Sopenharmony_ci .hid_width = 5, 8448c2ecf20Sopenharmony_ci .parent_map = mmcc_xo_dsibyte_hdmi_edp_gpll0_map, 8458c2ecf20Sopenharmony_ci .freq_tbl = ftbl_mdss_esc0_1_clk, 8468c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 8478c2ecf20Sopenharmony_ci .name = "esc0_clk_src", 8488c2ecf20Sopenharmony_ci .parent_names = mmcc_xo_dsibyte_hdmi_edp_gpll0, 8498c2ecf20Sopenharmony_ci .num_parents = 6, 8508c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 8518c2ecf20Sopenharmony_ci }, 8528c2ecf20Sopenharmony_ci}; 8538c2ecf20Sopenharmony_ci 8548c2ecf20Sopenharmony_cistatic struct clk_rcg2 esc1_clk_src = { 8558c2ecf20Sopenharmony_ci .cmd_rcgr = 0x2180, 8568c2ecf20Sopenharmony_ci .hid_width = 5, 8578c2ecf20Sopenharmony_ci .parent_map = mmcc_xo_dsibyte_hdmi_edp_gpll0_map, 8588c2ecf20Sopenharmony_ci .freq_tbl = ftbl_mdss_esc0_1_clk, 8598c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 8608c2ecf20Sopenharmony_ci .name = "esc1_clk_src", 8618c2ecf20Sopenharmony_ci .parent_names = mmcc_xo_dsibyte_hdmi_edp_gpll0, 8628c2ecf20Sopenharmony_ci .num_parents = 6, 8638c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 8648c2ecf20Sopenharmony_ci }, 8658c2ecf20Sopenharmony_ci}; 8668c2ecf20Sopenharmony_ci 8678c2ecf20Sopenharmony_cistatic struct freq_tbl extpclk_freq_tbl[] = { 8688c2ecf20Sopenharmony_ci { .src = P_HDMIPLL }, 8698c2ecf20Sopenharmony_ci { } 8708c2ecf20Sopenharmony_ci}; 8718c2ecf20Sopenharmony_ci 8728c2ecf20Sopenharmony_cistatic struct clk_rcg2 extpclk_clk_src = { 8738c2ecf20Sopenharmony_ci .cmd_rcgr = 0x2060, 8748c2ecf20Sopenharmony_ci .hid_width = 5, 8758c2ecf20Sopenharmony_ci .parent_map = mmcc_xo_dsi_hdmi_edp_gpll0_map, 8768c2ecf20Sopenharmony_ci .freq_tbl = extpclk_freq_tbl, 8778c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 8788c2ecf20Sopenharmony_ci .name = "extpclk_clk_src", 8798c2ecf20Sopenharmony_ci .parent_names = mmcc_xo_dsi_hdmi_edp_gpll0, 8808c2ecf20Sopenharmony_ci .num_parents = 6, 8818c2ecf20Sopenharmony_ci .ops = &clk_byte_ops, 8828c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 8838c2ecf20Sopenharmony_ci }, 8848c2ecf20Sopenharmony_ci}; 8858c2ecf20Sopenharmony_ci 8868c2ecf20Sopenharmony_cistatic struct freq_tbl ftbl_mdss_hdmi_clk[] = { 8878c2ecf20Sopenharmony_ci F(19200000, P_XO, 1, 0, 0), 8888c2ecf20Sopenharmony_ci { } 8898c2ecf20Sopenharmony_ci}; 8908c2ecf20Sopenharmony_ci 8918c2ecf20Sopenharmony_cistatic struct clk_rcg2 hdmi_clk_src = { 8928c2ecf20Sopenharmony_ci .cmd_rcgr = 0x2100, 8938c2ecf20Sopenharmony_ci .hid_width = 5, 8948c2ecf20Sopenharmony_ci .parent_map = mmcc_xo_mmpll0_mmpll1_gpll0_map, 8958c2ecf20Sopenharmony_ci .freq_tbl = ftbl_mdss_hdmi_clk, 8968c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 8978c2ecf20Sopenharmony_ci .name = "hdmi_clk_src", 8988c2ecf20Sopenharmony_ci .parent_names = mmcc_xo_mmpll0_mmpll1_gpll0, 8998c2ecf20Sopenharmony_ci .num_parents = 4, 9008c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 9018c2ecf20Sopenharmony_ci }, 9028c2ecf20Sopenharmony_ci}; 9038c2ecf20Sopenharmony_ci 9048c2ecf20Sopenharmony_cistatic struct freq_tbl ftbl_mdss_vsync_clk[] = { 9058c2ecf20Sopenharmony_ci F(19200000, P_XO, 1, 0, 0), 9068c2ecf20Sopenharmony_ci { } 9078c2ecf20Sopenharmony_ci}; 9088c2ecf20Sopenharmony_ci 9098c2ecf20Sopenharmony_cistatic struct clk_rcg2 vsync_clk_src = { 9108c2ecf20Sopenharmony_ci .cmd_rcgr = 0x2080, 9118c2ecf20Sopenharmony_ci .hid_width = 5, 9128c2ecf20Sopenharmony_ci .parent_map = mmcc_xo_mmpll0_mmpll1_gpll0_map, 9138c2ecf20Sopenharmony_ci .freq_tbl = ftbl_mdss_vsync_clk, 9148c2ecf20Sopenharmony_ci .clkr.hw.init = &(struct clk_init_data){ 9158c2ecf20Sopenharmony_ci .name = "vsync_clk_src", 9168c2ecf20Sopenharmony_ci .parent_names = mmcc_xo_mmpll0_mmpll1_gpll0, 9178c2ecf20Sopenharmony_ci .num_parents = 4, 9188c2ecf20Sopenharmony_ci .ops = &clk_rcg2_ops, 9198c2ecf20Sopenharmony_ci }, 9208c2ecf20Sopenharmony_ci}; 9218c2ecf20Sopenharmony_ci 9228c2ecf20Sopenharmony_cistatic struct clk_branch camss_cci_cci_ahb_clk = { 9238c2ecf20Sopenharmony_ci .halt_reg = 0x3348, 9248c2ecf20Sopenharmony_ci .clkr = { 9258c2ecf20Sopenharmony_ci .enable_reg = 0x3348, 9268c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 9278c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 9288c2ecf20Sopenharmony_ci .name = "camss_cci_cci_ahb_clk", 9298c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 9308c2ecf20Sopenharmony_ci "mmss_ahb_clk_src", 9318c2ecf20Sopenharmony_ci }, 9328c2ecf20Sopenharmony_ci .num_parents = 1, 9338c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 9348c2ecf20Sopenharmony_ci }, 9358c2ecf20Sopenharmony_ci }, 9368c2ecf20Sopenharmony_ci}; 9378c2ecf20Sopenharmony_ci 9388c2ecf20Sopenharmony_cistatic struct clk_branch camss_cci_cci_clk = { 9398c2ecf20Sopenharmony_ci .halt_reg = 0x3344, 9408c2ecf20Sopenharmony_ci .clkr = { 9418c2ecf20Sopenharmony_ci .enable_reg = 0x3344, 9428c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 9438c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 9448c2ecf20Sopenharmony_ci .name = "camss_cci_cci_clk", 9458c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 9468c2ecf20Sopenharmony_ci "cci_clk_src", 9478c2ecf20Sopenharmony_ci }, 9488c2ecf20Sopenharmony_ci .num_parents = 1, 9498c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 9508c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 9518c2ecf20Sopenharmony_ci }, 9528c2ecf20Sopenharmony_ci }, 9538c2ecf20Sopenharmony_ci}; 9548c2ecf20Sopenharmony_ci 9558c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi0_ahb_clk = { 9568c2ecf20Sopenharmony_ci .halt_reg = 0x30bc, 9578c2ecf20Sopenharmony_ci .clkr = { 9588c2ecf20Sopenharmony_ci .enable_reg = 0x30bc, 9598c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 9608c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 9618c2ecf20Sopenharmony_ci .name = "camss_csi0_ahb_clk", 9628c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 9638c2ecf20Sopenharmony_ci "mmss_ahb_clk_src", 9648c2ecf20Sopenharmony_ci }, 9658c2ecf20Sopenharmony_ci .num_parents = 1, 9668c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 9678c2ecf20Sopenharmony_ci }, 9688c2ecf20Sopenharmony_ci }, 9698c2ecf20Sopenharmony_ci}; 9708c2ecf20Sopenharmony_ci 9718c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi0_clk = { 9728c2ecf20Sopenharmony_ci .halt_reg = 0x30b4, 9738c2ecf20Sopenharmony_ci .clkr = { 9748c2ecf20Sopenharmony_ci .enable_reg = 0x30b4, 9758c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 9768c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 9778c2ecf20Sopenharmony_ci .name = "camss_csi0_clk", 9788c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 9798c2ecf20Sopenharmony_ci "csi0_clk_src", 9808c2ecf20Sopenharmony_ci }, 9818c2ecf20Sopenharmony_ci .num_parents = 1, 9828c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 9838c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 9848c2ecf20Sopenharmony_ci }, 9858c2ecf20Sopenharmony_ci }, 9868c2ecf20Sopenharmony_ci}; 9878c2ecf20Sopenharmony_ci 9888c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi0phy_clk = { 9898c2ecf20Sopenharmony_ci .halt_reg = 0x30c4, 9908c2ecf20Sopenharmony_ci .clkr = { 9918c2ecf20Sopenharmony_ci .enable_reg = 0x30c4, 9928c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 9938c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 9948c2ecf20Sopenharmony_ci .name = "camss_csi0phy_clk", 9958c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 9968c2ecf20Sopenharmony_ci "csi0_clk_src", 9978c2ecf20Sopenharmony_ci }, 9988c2ecf20Sopenharmony_ci .num_parents = 1, 9998c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 10008c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 10018c2ecf20Sopenharmony_ci }, 10028c2ecf20Sopenharmony_ci }, 10038c2ecf20Sopenharmony_ci}; 10048c2ecf20Sopenharmony_ci 10058c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi0pix_clk = { 10068c2ecf20Sopenharmony_ci .halt_reg = 0x30e4, 10078c2ecf20Sopenharmony_ci .clkr = { 10088c2ecf20Sopenharmony_ci .enable_reg = 0x30e4, 10098c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 10108c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 10118c2ecf20Sopenharmony_ci .name = "camss_csi0pix_clk", 10128c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 10138c2ecf20Sopenharmony_ci "csi0_clk_src", 10148c2ecf20Sopenharmony_ci }, 10158c2ecf20Sopenharmony_ci .num_parents = 1, 10168c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 10178c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 10188c2ecf20Sopenharmony_ci }, 10198c2ecf20Sopenharmony_ci }, 10208c2ecf20Sopenharmony_ci}; 10218c2ecf20Sopenharmony_ci 10228c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi0rdi_clk = { 10238c2ecf20Sopenharmony_ci .halt_reg = 0x30d4, 10248c2ecf20Sopenharmony_ci .clkr = { 10258c2ecf20Sopenharmony_ci .enable_reg = 0x30d4, 10268c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 10278c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 10288c2ecf20Sopenharmony_ci .name = "camss_csi0rdi_clk", 10298c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 10308c2ecf20Sopenharmony_ci "csi0_clk_src", 10318c2ecf20Sopenharmony_ci }, 10328c2ecf20Sopenharmony_ci .num_parents = 1, 10338c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 10348c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 10358c2ecf20Sopenharmony_ci }, 10368c2ecf20Sopenharmony_ci }, 10378c2ecf20Sopenharmony_ci}; 10388c2ecf20Sopenharmony_ci 10398c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi1_ahb_clk = { 10408c2ecf20Sopenharmony_ci .halt_reg = 0x3128, 10418c2ecf20Sopenharmony_ci .clkr = { 10428c2ecf20Sopenharmony_ci .enable_reg = 0x3128, 10438c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 10448c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 10458c2ecf20Sopenharmony_ci .name = "camss_csi1_ahb_clk", 10468c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 10478c2ecf20Sopenharmony_ci "mmss_ahb_clk_src", 10488c2ecf20Sopenharmony_ci }, 10498c2ecf20Sopenharmony_ci .num_parents = 1, 10508c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 10518c2ecf20Sopenharmony_ci }, 10528c2ecf20Sopenharmony_ci }, 10538c2ecf20Sopenharmony_ci}; 10548c2ecf20Sopenharmony_ci 10558c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi1_clk = { 10568c2ecf20Sopenharmony_ci .halt_reg = 0x3124, 10578c2ecf20Sopenharmony_ci .clkr = { 10588c2ecf20Sopenharmony_ci .enable_reg = 0x3124, 10598c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 10608c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 10618c2ecf20Sopenharmony_ci .name = "camss_csi1_clk", 10628c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 10638c2ecf20Sopenharmony_ci "csi1_clk_src", 10648c2ecf20Sopenharmony_ci }, 10658c2ecf20Sopenharmony_ci .num_parents = 1, 10668c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 10678c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 10688c2ecf20Sopenharmony_ci }, 10698c2ecf20Sopenharmony_ci }, 10708c2ecf20Sopenharmony_ci}; 10718c2ecf20Sopenharmony_ci 10728c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi1phy_clk = { 10738c2ecf20Sopenharmony_ci .halt_reg = 0x3134, 10748c2ecf20Sopenharmony_ci .clkr = { 10758c2ecf20Sopenharmony_ci .enable_reg = 0x3134, 10768c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 10778c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 10788c2ecf20Sopenharmony_ci .name = "camss_csi1phy_clk", 10798c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 10808c2ecf20Sopenharmony_ci "csi1_clk_src", 10818c2ecf20Sopenharmony_ci }, 10828c2ecf20Sopenharmony_ci .num_parents = 1, 10838c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 10848c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 10858c2ecf20Sopenharmony_ci }, 10868c2ecf20Sopenharmony_ci }, 10878c2ecf20Sopenharmony_ci}; 10888c2ecf20Sopenharmony_ci 10898c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi1pix_clk = { 10908c2ecf20Sopenharmony_ci .halt_reg = 0x3154, 10918c2ecf20Sopenharmony_ci .clkr = { 10928c2ecf20Sopenharmony_ci .enable_reg = 0x3154, 10938c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 10948c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 10958c2ecf20Sopenharmony_ci .name = "camss_csi1pix_clk", 10968c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 10978c2ecf20Sopenharmony_ci "csi1_clk_src", 10988c2ecf20Sopenharmony_ci }, 10998c2ecf20Sopenharmony_ci .num_parents = 1, 11008c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 11018c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 11028c2ecf20Sopenharmony_ci }, 11038c2ecf20Sopenharmony_ci }, 11048c2ecf20Sopenharmony_ci}; 11058c2ecf20Sopenharmony_ci 11068c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi1rdi_clk = { 11078c2ecf20Sopenharmony_ci .halt_reg = 0x3144, 11088c2ecf20Sopenharmony_ci .clkr = { 11098c2ecf20Sopenharmony_ci .enable_reg = 0x3144, 11108c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 11118c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 11128c2ecf20Sopenharmony_ci .name = "camss_csi1rdi_clk", 11138c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 11148c2ecf20Sopenharmony_ci "csi1_clk_src", 11158c2ecf20Sopenharmony_ci }, 11168c2ecf20Sopenharmony_ci .num_parents = 1, 11178c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 11188c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 11198c2ecf20Sopenharmony_ci }, 11208c2ecf20Sopenharmony_ci }, 11218c2ecf20Sopenharmony_ci}; 11228c2ecf20Sopenharmony_ci 11238c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi2_ahb_clk = { 11248c2ecf20Sopenharmony_ci .halt_reg = 0x3188, 11258c2ecf20Sopenharmony_ci .clkr = { 11268c2ecf20Sopenharmony_ci .enable_reg = 0x3188, 11278c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 11288c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 11298c2ecf20Sopenharmony_ci .name = "camss_csi2_ahb_clk", 11308c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 11318c2ecf20Sopenharmony_ci "mmss_ahb_clk_src", 11328c2ecf20Sopenharmony_ci }, 11338c2ecf20Sopenharmony_ci .num_parents = 1, 11348c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 11358c2ecf20Sopenharmony_ci }, 11368c2ecf20Sopenharmony_ci }, 11378c2ecf20Sopenharmony_ci}; 11388c2ecf20Sopenharmony_ci 11398c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi2_clk = { 11408c2ecf20Sopenharmony_ci .halt_reg = 0x3184, 11418c2ecf20Sopenharmony_ci .clkr = { 11428c2ecf20Sopenharmony_ci .enable_reg = 0x3184, 11438c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 11448c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 11458c2ecf20Sopenharmony_ci .name = "camss_csi2_clk", 11468c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 11478c2ecf20Sopenharmony_ci "csi2_clk_src", 11488c2ecf20Sopenharmony_ci }, 11498c2ecf20Sopenharmony_ci .num_parents = 1, 11508c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 11518c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 11528c2ecf20Sopenharmony_ci }, 11538c2ecf20Sopenharmony_ci }, 11548c2ecf20Sopenharmony_ci}; 11558c2ecf20Sopenharmony_ci 11568c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi2phy_clk = { 11578c2ecf20Sopenharmony_ci .halt_reg = 0x3194, 11588c2ecf20Sopenharmony_ci .clkr = { 11598c2ecf20Sopenharmony_ci .enable_reg = 0x3194, 11608c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 11618c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 11628c2ecf20Sopenharmony_ci .name = "camss_csi2phy_clk", 11638c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 11648c2ecf20Sopenharmony_ci "csi2_clk_src", 11658c2ecf20Sopenharmony_ci }, 11668c2ecf20Sopenharmony_ci .num_parents = 1, 11678c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 11688c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 11698c2ecf20Sopenharmony_ci }, 11708c2ecf20Sopenharmony_ci }, 11718c2ecf20Sopenharmony_ci}; 11728c2ecf20Sopenharmony_ci 11738c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi2pix_clk = { 11748c2ecf20Sopenharmony_ci .halt_reg = 0x31b4, 11758c2ecf20Sopenharmony_ci .clkr = { 11768c2ecf20Sopenharmony_ci .enable_reg = 0x31b4, 11778c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 11788c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 11798c2ecf20Sopenharmony_ci .name = "camss_csi2pix_clk", 11808c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 11818c2ecf20Sopenharmony_ci "csi2_clk_src", 11828c2ecf20Sopenharmony_ci }, 11838c2ecf20Sopenharmony_ci .num_parents = 1, 11848c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 11858c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 11868c2ecf20Sopenharmony_ci }, 11878c2ecf20Sopenharmony_ci }, 11888c2ecf20Sopenharmony_ci}; 11898c2ecf20Sopenharmony_ci 11908c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi2rdi_clk = { 11918c2ecf20Sopenharmony_ci .halt_reg = 0x31a4, 11928c2ecf20Sopenharmony_ci .clkr = { 11938c2ecf20Sopenharmony_ci .enable_reg = 0x31a4, 11948c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 11958c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 11968c2ecf20Sopenharmony_ci .name = "camss_csi2rdi_clk", 11978c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 11988c2ecf20Sopenharmony_ci "csi2_clk_src", 11998c2ecf20Sopenharmony_ci }, 12008c2ecf20Sopenharmony_ci .num_parents = 1, 12018c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 12028c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 12038c2ecf20Sopenharmony_ci }, 12048c2ecf20Sopenharmony_ci }, 12058c2ecf20Sopenharmony_ci}; 12068c2ecf20Sopenharmony_ci 12078c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi3_ahb_clk = { 12088c2ecf20Sopenharmony_ci .halt_reg = 0x31e8, 12098c2ecf20Sopenharmony_ci .clkr = { 12108c2ecf20Sopenharmony_ci .enable_reg = 0x31e8, 12118c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 12128c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 12138c2ecf20Sopenharmony_ci .name = "camss_csi3_ahb_clk", 12148c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 12158c2ecf20Sopenharmony_ci "mmss_ahb_clk_src", 12168c2ecf20Sopenharmony_ci }, 12178c2ecf20Sopenharmony_ci .num_parents = 1, 12188c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 12198c2ecf20Sopenharmony_ci }, 12208c2ecf20Sopenharmony_ci }, 12218c2ecf20Sopenharmony_ci}; 12228c2ecf20Sopenharmony_ci 12238c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi3_clk = { 12248c2ecf20Sopenharmony_ci .halt_reg = 0x31e4, 12258c2ecf20Sopenharmony_ci .clkr = { 12268c2ecf20Sopenharmony_ci .enable_reg = 0x31e4, 12278c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 12288c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 12298c2ecf20Sopenharmony_ci .name = "camss_csi3_clk", 12308c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 12318c2ecf20Sopenharmony_ci "csi3_clk_src", 12328c2ecf20Sopenharmony_ci }, 12338c2ecf20Sopenharmony_ci .num_parents = 1, 12348c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 12358c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 12368c2ecf20Sopenharmony_ci }, 12378c2ecf20Sopenharmony_ci }, 12388c2ecf20Sopenharmony_ci}; 12398c2ecf20Sopenharmony_ci 12408c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi3phy_clk = { 12418c2ecf20Sopenharmony_ci .halt_reg = 0x31f4, 12428c2ecf20Sopenharmony_ci .clkr = { 12438c2ecf20Sopenharmony_ci .enable_reg = 0x31f4, 12448c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 12458c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 12468c2ecf20Sopenharmony_ci .name = "camss_csi3phy_clk", 12478c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 12488c2ecf20Sopenharmony_ci "csi3_clk_src", 12498c2ecf20Sopenharmony_ci }, 12508c2ecf20Sopenharmony_ci .num_parents = 1, 12518c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 12528c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 12538c2ecf20Sopenharmony_ci }, 12548c2ecf20Sopenharmony_ci }, 12558c2ecf20Sopenharmony_ci}; 12568c2ecf20Sopenharmony_ci 12578c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi3pix_clk = { 12588c2ecf20Sopenharmony_ci .halt_reg = 0x3214, 12598c2ecf20Sopenharmony_ci .clkr = { 12608c2ecf20Sopenharmony_ci .enable_reg = 0x3214, 12618c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 12628c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 12638c2ecf20Sopenharmony_ci .name = "camss_csi3pix_clk", 12648c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 12658c2ecf20Sopenharmony_ci "csi3_clk_src", 12668c2ecf20Sopenharmony_ci }, 12678c2ecf20Sopenharmony_ci .num_parents = 1, 12688c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 12698c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 12708c2ecf20Sopenharmony_ci }, 12718c2ecf20Sopenharmony_ci }, 12728c2ecf20Sopenharmony_ci}; 12738c2ecf20Sopenharmony_ci 12748c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi3rdi_clk = { 12758c2ecf20Sopenharmony_ci .halt_reg = 0x3204, 12768c2ecf20Sopenharmony_ci .clkr = { 12778c2ecf20Sopenharmony_ci .enable_reg = 0x3204, 12788c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 12798c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 12808c2ecf20Sopenharmony_ci .name = "camss_csi3rdi_clk", 12818c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 12828c2ecf20Sopenharmony_ci "csi3_clk_src", 12838c2ecf20Sopenharmony_ci }, 12848c2ecf20Sopenharmony_ci .num_parents = 1, 12858c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 12868c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 12878c2ecf20Sopenharmony_ci }, 12888c2ecf20Sopenharmony_ci }, 12898c2ecf20Sopenharmony_ci}; 12908c2ecf20Sopenharmony_ci 12918c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi_vfe0_clk = { 12928c2ecf20Sopenharmony_ci .halt_reg = 0x3704, 12938c2ecf20Sopenharmony_ci .clkr = { 12948c2ecf20Sopenharmony_ci .enable_reg = 0x3704, 12958c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 12968c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 12978c2ecf20Sopenharmony_ci .name = "camss_csi_vfe0_clk", 12988c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 12998c2ecf20Sopenharmony_ci "vfe0_clk_src", 13008c2ecf20Sopenharmony_ci }, 13018c2ecf20Sopenharmony_ci .num_parents = 1, 13028c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 13038c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 13048c2ecf20Sopenharmony_ci }, 13058c2ecf20Sopenharmony_ci }, 13068c2ecf20Sopenharmony_ci}; 13078c2ecf20Sopenharmony_ci 13088c2ecf20Sopenharmony_cistatic struct clk_branch camss_csi_vfe1_clk = { 13098c2ecf20Sopenharmony_ci .halt_reg = 0x3714, 13108c2ecf20Sopenharmony_ci .clkr = { 13118c2ecf20Sopenharmony_ci .enable_reg = 0x3714, 13128c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 13138c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 13148c2ecf20Sopenharmony_ci .name = "camss_csi_vfe1_clk", 13158c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 13168c2ecf20Sopenharmony_ci "vfe1_clk_src", 13178c2ecf20Sopenharmony_ci }, 13188c2ecf20Sopenharmony_ci .num_parents = 1, 13198c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 13208c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 13218c2ecf20Sopenharmony_ci }, 13228c2ecf20Sopenharmony_ci }, 13238c2ecf20Sopenharmony_ci}; 13248c2ecf20Sopenharmony_ci 13258c2ecf20Sopenharmony_cistatic struct clk_branch camss_gp0_clk = { 13268c2ecf20Sopenharmony_ci .halt_reg = 0x3444, 13278c2ecf20Sopenharmony_ci .clkr = { 13288c2ecf20Sopenharmony_ci .enable_reg = 0x3444, 13298c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 13308c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 13318c2ecf20Sopenharmony_ci .name = "camss_gp0_clk", 13328c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 13338c2ecf20Sopenharmony_ci "camss_gp0_clk_src", 13348c2ecf20Sopenharmony_ci }, 13358c2ecf20Sopenharmony_ci .num_parents = 1, 13368c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 13378c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 13388c2ecf20Sopenharmony_ci }, 13398c2ecf20Sopenharmony_ci }, 13408c2ecf20Sopenharmony_ci}; 13418c2ecf20Sopenharmony_ci 13428c2ecf20Sopenharmony_cistatic struct clk_branch camss_gp1_clk = { 13438c2ecf20Sopenharmony_ci .halt_reg = 0x3474, 13448c2ecf20Sopenharmony_ci .clkr = { 13458c2ecf20Sopenharmony_ci .enable_reg = 0x3474, 13468c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 13478c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 13488c2ecf20Sopenharmony_ci .name = "camss_gp1_clk", 13498c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 13508c2ecf20Sopenharmony_ci "camss_gp1_clk_src", 13518c2ecf20Sopenharmony_ci }, 13528c2ecf20Sopenharmony_ci .num_parents = 1, 13538c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 13548c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 13558c2ecf20Sopenharmony_ci }, 13568c2ecf20Sopenharmony_ci }, 13578c2ecf20Sopenharmony_ci}; 13588c2ecf20Sopenharmony_ci 13598c2ecf20Sopenharmony_cistatic struct clk_branch camss_ispif_ahb_clk = { 13608c2ecf20Sopenharmony_ci .halt_reg = 0x3224, 13618c2ecf20Sopenharmony_ci .clkr = { 13628c2ecf20Sopenharmony_ci .enable_reg = 0x3224, 13638c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 13648c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 13658c2ecf20Sopenharmony_ci .name = "camss_ispif_ahb_clk", 13668c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 13678c2ecf20Sopenharmony_ci "mmss_ahb_clk_src", 13688c2ecf20Sopenharmony_ci }, 13698c2ecf20Sopenharmony_ci .num_parents = 1, 13708c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 13718c2ecf20Sopenharmony_ci }, 13728c2ecf20Sopenharmony_ci }, 13738c2ecf20Sopenharmony_ci}; 13748c2ecf20Sopenharmony_ci 13758c2ecf20Sopenharmony_cistatic struct clk_branch camss_jpeg_jpeg0_clk = { 13768c2ecf20Sopenharmony_ci .halt_reg = 0x35a8, 13778c2ecf20Sopenharmony_ci .clkr = { 13788c2ecf20Sopenharmony_ci .enable_reg = 0x35a8, 13798c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 13808c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 13818c2ecf20Sopenharmony_ci .name = "camss_jpeg_jpeg0_clk", 13828c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 13838c2ecf20Sopenharmony_ci "jpeg0_clk_src", 13848c2ecf20Sopenharmony_ci }, 13858c2ecf20Sopenharmony_ci .num_parents = 1, 13868c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 13878c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 13888c2ecf20Sopenharmony_ci }, 13898c2ecf20Sopenharmony_ci }, 13908c2ecf20Sopenharmony_ci}; 13918c2ecf20Sopenharmony_ci 13928c2ecf20Sopenharmony_cistatic struct clk_branch camss_jpeg_jpeg1_clk = { 13938c2ecf20Sopenharmony_ci .halt_reg = 0x35ac, 13948c2ecf20Sopenharmony_ci .clkr = { 13958c2ecf20Sopenharmony_ci .enable_reg = 0x35ac, 13968c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 13978c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 13988c2ecf20Sopenharmony_ci .name = "camss_jpeg_jpeg1_clk", 13998c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 14008c2ecf20Sopenharmony_ci "jpeg1_clk_src", 14018c2ecf20Sopenharmony_ci }, 14028c2ecf20Sopenharmony_ci .num_parents = 1, 14038c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 14048c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 14058c2ecf20Sopenharmony_ci }, 14068c2ecf20Sopenharmony_ci }, 14078c2ecf20Sopenharmony_ci}; 14088c2ecf20Sopenharmony_ci 14098c2ecf20Sopenharmony_cistatic struct clk_branch camss_jpeg_jpeg2_clk = { 14108c2ecf20Sopenharmony_ci .halt_reg = 0x35b0, 14118c2ecf20Sopenharmony_ci .clkr = { 14128c2ecf20Sopenharmony_ci .enable_reg = 0x35b0, 14138c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 14148c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 14158c2ecf20Sopenharmony_ci .name = "camss_jpeg_jpeg2_clk", 14168c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 14178c2ecf20Sopenharmony_ci "jpeg2_clk_src", 14188c2ecf20Sopenharmony_ci }, 14198c2ecf20Sopenharmony_ci .num_parents = 1, 14208c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 14218c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 14228c2ecf20Sopenharmony_ci }, 14238c2ecf20Sopenharmony_ci }, 14248c2ecf20Sopenharmony_ci}; 14258c2ecf20Sopenharmony_ci 14268c2ecf20Sopenharmony_cistatic struct clk_branch camss_jpeg_jpeg_ahb_clk = { 14278c2ecf20Sopenharmony_ci .halt_reg = 0x35b4, 14288c2ecf20Sopenharmony_ci .clkr = { 14298c2ecf20Sopenharmony_ci .enable_reg = 0x35b4, 14308c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 14318c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 14328c2ecf20Sopenharmony_ci .name = "camss_jpeg_jpeg_ahb_clk", 14338c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 14348c2ecf20Sopenharmony_ci "mmss_ahb_clk_src", 14358c2ecf20Sopenharmony_ci }, 14368c2ecf20Sopenharmony_ci .num_parents = 1, 14378c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 14388c2ecf20Sopenharmony_ci }, 14398c2ecf20Sopenharmony_ci }, 14408c2ecf20Sopenharmony_ci}; 14418c2ecf20Sopenharmony_ci 14428c2ecf20Sopenharmony_cistatic struct clk_branch camss_jpeg_jpeg_axi_clk = { 14438c2ecf20Sopenharmony_ci .halt_reg = 0x35b8, 14448c2ecf20Sopenharmony_ci .clkr = { 14458c2ecf20Sopenharmony_ci .enable_reg = 0x35b8, 14468c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 14478c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 14488c2ecf20Sopenharmony_ci .name = "camss_jpeg_jpeg_axi_clk", 14498c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 14508c2ecf20Sopenharmony_ci "mmss_axi_clk_src", 14518c2ecf20Sopenharmony_ci }, 14528c2ecf20Sopenharmony_ci .num_parents = 1, 14538c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 14548c2ecf20Sopenharmony_ci }, 14558c2ecf20Sopenharmony_ci }, 14568c2ecf20Sopenharmony_ci}; 14578c2ecf20Sopenharmony_ci 14588c2ecf20Sopenharmony_cistatic struct clk_branch camss_jpeg_jpeg_ocmemnoc_clk = { 14598c2ecf20Sopenharmony_ci .halt_reg = 0x35bc, 14608c2ecf20Sopenharmony_ci .clkr = { 14618c2ecf20Sopenharmony_ci .enable_reg = 0x35bc, 14628c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 14638c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 14648c2ecf20Sopenharmony_ci .name = "camss_jpeg_jpeg_ocmemnoc_clk", 14658c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 14668c2ecf20Sopenharmony_ci "ocmemnoc_clk_src", 14678c2ecf20Sopenharmony_ci }, 14688c2ecf20Sopenharmony_ci .num_parents = 1, 14698c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 14708c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 14718c2ecf20Sopenharmony_ci }, 14728c2ecf20Sopenharmony_ci }, 14738c2ecf20Sopenharmony_ci}; 14748c2ecf20Sopenharmony_ci 14758c2ecf20Sopenharmony_cistatic struct clk_branch camss_mclk0_clk = { 14768c2ecf20Sopenharmony_ci .halt_reg = 0x3384, 14778c2ecf20Sopenharmony_ci .clkr = { 14788c2ecf20Sopenharmony_ci .enable_reg = 0x3384, 14798c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 14808c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 14818c2ecf20Sopenharmony_ci .name = "camss_mclk0_clk", 14828c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 14838c2ecf20Sopenharmony_ci "mclk0_clk_src", 14848c2ecf20Sopenharmony_ci }, 14858c2ecf20Sopenharmony_ci .num_parents = 1, 14868c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 14878c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 14888c2ecf20Sopenharmony_ci }, 14898c2ecf20Sopenharmony_ci }, 14908c2ecf20Sopenharmony_ci}; 14918c2ecf20Sopenharmony_ci 14928c2ecf20Sopenharmony_cistatic struct clk_branch camss_mclk1_clk = { 14938c2ecf20Sopenharmony_ci .halt_reg = 0x33b4, 14948c2ecf20Sopenharmony_ci .clkr = { 14958c2ecf20Sopenharmony_ci .enable_reg = 0x33b4, 14968c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 14978c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 14988c2ecf20Sopenharmony_ci .name = "camss_mclk1_clk", 14998c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 15008c2ecf20Sopenharmony_ci "mclk1_clk_src", 15018c2ecf20Sopenharmony_ci }, 15028c2ecf20Sopenharmony_ci .num_parents = 1, 15038c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 15048c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 15058c2ecf20Sopenharmony_ci }, 15068c2ecf20Sopenharmony_ci }, 15078c2ecf20Sopenharmony_ci}; 15088c2ecf20Sopenharmony_ci 15098c2ecf20Sopenharmony_cistatic struct clk_branch camss_mclk2_clk = { 15108c2ecf20Sopenharmony_ci .halt_reg = 0x33e4, 15118c2ecf20Sopenharmony_ci .clkr = { 15128c2ecf20Sopenharmony_ci .enable_reg = 0x33e4, 15138c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 15148c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 15158c2ecf20Sopenharmony_ci .name = "camss_mclk2_clk", 15168c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 15178c2ecf20Sopenharmony_ci "mclk2_clk_src", 15188c2ecf20Sopenharmony_ci }, 15198c2ecf20Sopenharmony_ci .num_parents = 1, 15208c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 15218c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 15228c2ecf20Sopenharmony_ci }, 15238c2ecf20Sopenharmony_ci }, 15248c2ecf20Sopenharmony_ci}; 15258c2ecf20Sopenharmony_ci 15268c2ecf20Sopenharmony_cistatic struct clk_branch camss_mclk3_clk = { 15278c2ecf20Sopenharmony_ci .halt_reg = 0x3414, 15288c2ecf20Sopenharmony_ci .clkr = { 15298c2ecf20Sopenharmony_ci .enable_reg = 0x3414, 15308c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 15318c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 15328c2ecf20Sopenharmony_ci .name = "camss_mclk3_clk", 15338c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 15348c2ecf20Sopenharmony_ci "mclk3_clk_src", 15358c2ecf20Sopenharmony_ci }, 15368c2ecf20Sopenharmony_ci .num_parents = 1, 15378c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 15388c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 15398c2ecf20Sopenharmony_ci }, 15408c2ecf20Sopenharmony_ci }, 15418c2ecf20Sopenharmony_ci}; 15428c2ecf20Sopenharmony_ci 15438c2ecf20Sopenharmony_cistatic struct clk_branch camss_micro_ahb_clk = { 15448c2ecf20Sopenharmony_ci .halt_reg = 0x3494, 15458c2ecf20Sopenharmony_ci .clkr = { 15468c2ecf20Sopenharmony_ci .enable_reg = 0x3494, 15478c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 15488c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 15498c2ecf20Sopenharmony_ci .name = "camss_micro_ahb_clk", 15508c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 15518c2ecf20Sopenharmony_ci "mmss_ahb_clk_src", 15528c2ecf20Sopenharmony_ci }, 15538c2ecf20Sopenharmony_ci .num_parents = 1, 15548c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 15558c2ecf20Sopenharmony_ci }, 15568c2ecf20Sopenharmony_ci }, 15578c2ecf20Sopenharmony_ci}; 15588c2ecf20Sopenharmony_ci 15598c2ecf20Sopenharmony_cistatic struct clk_branch camss_phy0_csi0phytimer_clk = { 15608c2ecf20Sopenharmony_ci .halt_reg = 0x3024, 15618c2ecf20Sopenharmony_ci .clkr = { 15628c2ecf20Sopenharmony_ci .enable_reg = 0x3024, 15638c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 15648c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 15658c2ecf20Sopenharmony_ci .name = "camss_phy0_csi0phytimer_clk", 15668c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 15678c2ecf20Sopenharmony_ci "csi0phytimer_clk_src", 15688c2ecf20Sopenharmony_ci }, 15698c2ecf20Sopenharmony_ci .num_parents = 1, 15708c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 15718c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 15728c2ecf20Sopenharmony_ci }, 15738c2ecf20Sopenharmony_ci }, 15748c2ecf20Sopenharmony_ci}; 15758c2ecf20Sopenharmony_ci 15768c2ecf20Sopenharmony_cistatic struct clk_branch camss_phy1_csi1phytimer_clk = { 15778c2ecf20Sopenharmony_ci .halt_reg = 0x3054, 15788c2ecf20Sopenharmony_ci .clkr = { 15798c2ecf20Sopenharmony_ci .enable_reg = 0x3054, 15808c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 15818c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 15828c2ecf20Sopenharmony_ci .name = "camss_phy1_csi1phytimer_clk", 15838c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 15848c2ecf20Sopenharmony_ci "csi1phytimer_clk_src", 15858c2ecf20Sopenharmony_ci }, 15868c2ecf20Sopenharmony_ci .num_parents = 1, 15878c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 15888c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 15898c2ecf20Sopenharmony_ci }, 15908c2ecf20Sopenharmony_ci }, 15918c2ecf20Sopenharmony_ci}; 15928c2ecf20Sopenharmony_ci 15938c2ecf20Sopenharmony_cistatic struct clk_branch camss_phy2_csi2phytimer_clk = { 15948c2ecf20Sopenharmony_ci .halt_reg = 0x3084, 15958c2ecf20Sopenharmony_ci .clkr = { 15968c2ecf20Sopenharmony_ci .enable_reg = 0x3084, 15978c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 15988c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 15998c2ecf20Sopenharmony_ci .name = "camss_phy2_csi2phytimer_clk", 16008c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 16018c2ecf20Sopenharmony_ci "csi2phytimer_clk_src", 16028c2ecf20Sopenharmony_ci }, 16038c2ecf20Sopenharmony_ci .num_parents = 1, 16048c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 16058c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 16068c2ecf20Sopenharmony_ci }, 16078c2ecf20Sopenharmony_ci }, 16088c2ecf20Sopenharmony_ci}; 16098c2ecf20Sopenharmony_ci 16108c2ecf20Sopenharmony_cistatic struct clk_branch camss_top_ahb_clk = { 16118c2ecf20Sopenharmony_ci .halt_reg = 0x3484, 16128c2ecf20Sopenharmony_ci .clkr = { 16138c2ecf20Sopenharmony_ci .enable_reg = 0x3484, 16148c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 16158c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 16168c2ecf20Sopenharmony_ci .name = "camss_top_ahb_clk", 16178c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 16188c2ecf20Sopenharmony_ci "mmss_ahb_clk_src", 16198c2ecf20Sopenharmony_ci }, 16208c2ecf20Sopenharmony_ci .num_parents = 1, 16218c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 16228c2ecf20Sopenharmony_ci }, 16238c2ecf20Sopenharmony_ci }, 16248c2ecf20Sopenharmony_ci}; 16258c2ecf20Sopenharmony_ci 16268c2ecf20Sopenharmony_cistatic struct clk_branch camss_vfe_cpp_ahb_clk = { 16278c2ecf20Sopenharmony_ci .halt_reg = 0x36b4, 16288c2ecf20Sopenharmony_ci .clkr = { 16298c2ecf20Sopenharmony_ci .enable_reg = 0x36b4, 16308c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 16318c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 16328c2ecf20Sopenharmony_ci .name = "camss_vfe_cpp_ahb_clk", 16338c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 16348c2ecf20Sopenharmony_ci "mmss_ahb_clk_src", 16358c2ecf20Sopenharmony_ci }, 16368c2ecf20Sopenharmony_ci .num_parents = 1, 16378c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 16388c2ecf20Sopenharmony_ci }, 16398c2ecf20Sopenharmony_ci }, 16408c2ecf20Sopenharmony_ci}; 16418c2ecf20Sopenharmony_ci 16428c2ecf20Sopenharmony_cistatic struct clk_branch camss_vfe_cpp_clk = { 16438c2ecf20Sopenharmony_ci .halt_reg = 0x36b0, 16448c2ecf20Sopenharmony_ci .clkr = { 16458c2ecf20Sopenharmony_ci .enable_reg = 0x36b0, 16468c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 16478c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 16488c2ecf20Sopenharmony_ci .name = "camss_vfe_cpp_clk", 16498c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 16508c2ecf20Sopenharmony_ci "cpp_clk_src", 16518c2ecf20Sopenharmony_ci }, 16528c2ecf20Sopenharmony_ci .num_parents = 1, 16538c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 16548c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 16558c2ecf20Sopenharmony_ci }, 16568c2ecf20Sopenharmony_ci }, 16578c2ecf20Sopenharmony_ci}; 16588c2ecf20Sopenharmony_ci 16598c2ecf20Sopenharmony_cistatic struct clk_branch camss_vfe_vfe0_clk = { 16608c2ecf20Sopenharmony_ci .halt_reg = 0x36a8, 16618c2ecf20Sopenharmony_ci .clkr = { 16628c2ecf20Sopenharmony_ci .enable_reg = 0x36a8, 16638c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 16648c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 16658c2ecf20Sopenharmony_ci .name = "camss_vfe_vfe0_clk", 16668c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 16678c2ecf20Sopenharmony_ci "vfe0_clk_src", 16688c2ecf20Sopenharmony_ci }, 16698c2ecf20Sopenharmony_ci .num_parents = 1, 16708c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 16718c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 16728c2ecf20Sopenharmony_ci }, 16738c2ecf20Sopenharmony_ci }, 16748c2ecf20Sopenharmony_ci}; 16758c2ecf20Sopenharmony_ci 16768c2ecf20Sopenharmony_cistatic struct clk_branch camss_vfe_vfe1_clk = { 16778c2ecf20Sopenharmony_ci .halt_reg = 0x36ac, 16788c2ecf20Sopenharmony_ci .clkr = { 16798c2ecf20Sopenharmony_ci .enable_reg = 0x36ac, 16808c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 16818c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 16828c2ecf20Sopenharmony_ci .name = "camss_vfe_vfe1_clk", 16838c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 16848c2ecf20Sopenharmony_ci "vfe1_clk_src", 16858c2ecf20Sopenharmony_ci }, 16868c2ecf20Sopenharmony_ci .num_parents = 1, 16878c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 16888c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 16898c2ecf20Sopenharmony_ci }, 16908c2ecf20Sopenharmony_ci }, 16918c2ecf20Sopenharmony_ci}; 16928c2ecf20Sopenharmony_ci 16938c2ecf20Sopenharmony_cistatic struct clk_branch camss_vfe_vfe_ahb_clk = { 16948c2ecf20Sopenharmony_ci .halt_reg = 0x36b8, 16958c2ecf20Sopenharmony_ci .clkr = { 16968c2ecf20Sopenharmony_ci .enable_reg = 0x36b8, 16978c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 16988c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 16998c2ecf20Sopenharmony_ci .name = "camss_vfe_vfe_ahb_clk", 17008c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 17018c2ecf20Sopenharmony_ci "mmss_ahb_clk_src", 17028c2ecf20Sopenharmony_ci }, 17038c2ecf20Sopenharmony_ci .num_parents = 1, 17048c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 17058c2ecf20Sopenharmony_ci }, 17068c2ecf20Sopenharmony_ci }, 17078c2ecf20Sopenharmony_ci}; 17088c2ecf20Sopenharmony_ci 17098c2ecf20Sopenharmony_cistatic struct clk_branch camss_vfe_vfe_axi_clk = { 17108c2ecf20Sopenharmony_ci .halt_reg = 0x36bc, 17118c2ecf20Sopenharmony_ci .clkr = { 17128c2ecf20Sopenharmony_ci .enable_reg = 0x36bc, 17138c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 17148c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 17158c2ecf20Sopenharmony_ci .name = "camss_vfe_vfe_axi_clk", 17168c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 17178c2ecf20Sopenharmony_ci "mmss_axi_clk_src", 17188c2ecf20Sopenharmony_ci }, 17198c2ecf20Sopenharmony_ci .num_parents = 1, 17208c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 17218c2ecf20Sopenharmony_ci }, 17228c2ecf20Sopenharmony_ci }, 17238c2ecf20Sopenharmony_ci}; 17248c2ecf20Sopenharmony_ci 17258c2ecf20Sopenharmony_cistatic struct clk_branch camss_vfe_vfe_ocmemnoc_clk = { 17268c2ecf20Sopenharmony_ci .halt_reg = 0x36c0, 17278c2ecf20Sopenharmony_ci .clkr = { 17288c2ecf20Sopenharmony_ci .enable_reg = 0x36c0, 17298c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 17308c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 17318c2ecf20Sopenharmony_ci .name = "camss_vfe_vfe_ocmemnoc_clk", 17328c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 17338c2ecf20Sopenharmony_ci "ocmemnoc_clk_src", 17348c2ecf20Sopenharmony_ci }, 17358c2ecf20Sopenharmony_ci .num_parents = 1, 17368c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 17378c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 17388c2ecf20Sopenharmony_ci }, 17398c2ecf20Sopenharmony_ci }, 17408c2ecf20Sopenharmony_ci}; 17418c2ecf20Sopenharmony_ci 17428c2ecf20Sopenharmony_cistatic struct clk_branch mdss_ahb_clk = { 17438c2ecf20Sopenharmony_ci .halt_reg = 0x2308, 17448c2ecf20Sopenharmony_ci .clkr = { 17458c2ecf20Sopenharmony_ci .enable_reg = 0x2308, 17468c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 17478c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 17488c2ecf20Sopenharmony_ci .name = "mdss_ahb_clk", 17498c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 17508c2ecf20Sopenharmony_ci "mmss_ahb_clk_src", 17518c2ecf20Sopenharmony_ci }, 17528c2ecf20Sopenharmony_ci .num_parents = 1, 17538c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 17548c2ecf20Sopenharmony_ci }, 17558c2ecf20Sopenharmony_ci }, 17568c2ecf20Sopenharmony_ci}; 17578c2ecf20Sopenharmony_ci 17588c2ecf20Sopenharmony_cistatic struct clk_branch mdss_axi_clk = { 17598c2ecf20Sopenharmony_ci .halt_reg = 0x2310, 17608c2ecf20Sopenharmony_ci .clkr = { 17618c2ecf20Sopenharmony_ci .enable_reg = 0x2310, 17628c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 17638c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 17648c2ecf20Sopenharmony_ci .name = "mdss_axi_clk", 17658c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 17668c2ecf20Sopenharmony_ci "mmss_axi_clk_src", 17678c2ecf20Sopenharmony_ci }, 17688c2ecf20Sopenharmony_ci .num_parents = 1, 17698c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 17708c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 17718c2ecf20Sopenharmony_ci }, 17728c2ecf20Sopenharmony_ci }, 17738c2ecf20Sopenharmony_ci}; 17748c2ecf20Sopenharmony_ci 17758c2ecf20Sopenharmony_cistatic struct clk_branch mdss_byte0_clk = { 17768c2ecf20Sopenharmony_ci .halt_reg = 0x233c, 17778c2ecf20Sopenharmony_ci .clkr = { 17788c2ecf20Sopenharmony_ci .enable_reg = 0x233c, 17798c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 17808c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 17818c2ecf20Sopenharmony_ci .name = "mdss_byte0_clk", 17828c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 17838c2ecf20Sopenharmony_ci "byte0_clk_src", 17848c2ecf20Sopenharmony_ci }, 17858c2ecf20Sopenharmony_ci .num_parents = 1, 17868c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 17878c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 17888c2ecf20Sopenharmony_ci }, 17898c2ecf20Sopenharmony_ci }, 17908c2ecf20Sopenharmony_ci}; 17918c2ecf20Sopenharmony_ci 17928c2ecf20Sopenharmony_cistatic struct clk_branch mdss_byte1_clk = { 17938c2ecf20Sopenharmony_ci .halt_reg = 0x2340, 17948c2ecf20Sopenharmony_ci .clkr = { 17958c2ecf20Sopenharmony_ci .enable_reg = 0x2340, 17968c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 17978c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 17988c2ecf20Sopenharmony_ci .name = "mdss_byte1_clk", 17998c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 18008c2ecf20Sopenharmony_ci "byte1_clk_src", 18018c2ecf20Sopenharmony_ci }, 18028c2ecf20Sopenharmony_ci .num_parents = 1, 18038c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 18048c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 18058c2ecf20Sopenharmony_ci }, 18068c2ecf20Sopenharmony_ci }, 18078c2ecf20Sopenharmony_ci}; 18088c2ecf20Sopenharmony_ci 18098c2ecf20Sopenharmony_cistatic struct clk_branch mdss_edpaux_clk = { 18108c2ecf20Sopenharmony_ci .halt_reg = 0x2334, 18118c2ecf20Sopenharmony_ci .clkr = { 18128c2ecf20Sopenharmony_ci .enable_reg = 0x2334, 18138c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 18148c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 18158c2ecf20Sopenharmony_ci .name = "mdss_edpaux_clk", 18168c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 18178c2ecf20Sopenharmony_ci "edpaux_clk_src", 18188c2ecf20Sopenharmony_ci }, 18198c2ecf20Sopenharmony_ci .num_parents = 1, 18208c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 18218c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 18228c2ecf20Sopenharmony_ci }, 18238c2ecf20Sopenharmony_ci }, 18248c2ecf20Sopenharmony_ci}; 18258c2ecf20Sopenharmony_ci 18268c2ecf20Sopenharmony_cistatic struct clk_branch mdss_edplink_clk = { 18278c2ecf20Sopenharmony_ci .halt_reg = 0x2330, 18288c2ecf20Sopenharmony_ci .clkr = { 18298c2ecf20Sopenharmony_ci .enable_reg = 0x2330, 18308c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 18318c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 18328c2ecf20Sopenharmony_ci .name = "mdss_edplink_clk", 18338c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 18348c2ecf20Sopenharmony_ci "edplink_clk_src", 18358c2ecf20Sopenharmony_ci }, 18368c2ecf20Sopenharmony_ci .num_parents = 1, 18378c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 18388c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 18398c2ecf20Sopenharmony_ci }, 18408c2ecf20Sopenharmony_ci }, 18418c2ecf20Sopenharmony_ci}; 18428c2ecf20Sopenharmony_ci 18438c2ecf20Sopenharmony_cistatic struct clk_branch mdss_edppixel_clk = { 18448c2ecf20Sopenharmony_ci .halt_reg = 0x232c, 18458c2ecf20Sopenharmony_ci .clkr = { 18468c2ecf20Sopenharmony_ci .enable_reg = 0x232c, 18478c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 18488c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 18498c2ecf20Sopenharmony_ci .name = "mdss_edppixel_clk", 18508c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 18518c2ecf20Sopenharmony_ci "edppixel_clk_src", 18528c2ecf20Sopenharmony_ci }, 18538c2ecf20Sopenharmony_ci .num_parents = 1, 18548c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 18558c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 18568c2ecf20Sopenharmony_ci }, 18578c2ecf20Sopenharmony_ci }, 18588c2ecf20Sopenharmony_ci}; 18598c2ecf20Sopenharmony_ci 18608c2ecf20Sopenharmony_cistatic struct clk_branch mdss_esc0_clk = { 18618c2ecf20Sopenharmony_ci .halt_reg = 0x2344, 18628c2ecf20Sopenharmony_ci .clkr = { 18638c2ecf20Sopenharmony_ci .enable_reg = 0x2344, 18648c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 18658c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 18668c2ecf20Sopenharmony_ci .name = "mdss_esc0_clk", 18678c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 18688c2ecf20Sopenharmony_ci "esc0_clk_src", 18698c2ecf20Sopenharmony_ci }, 18708c2ecf20Sopenharmony_ci .num_parents = 1, 18718c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 18728c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 18738c2ecf20Sopenharmony_ci }, 18748c2ecf20Sopenharmony_ci }, 18758c2ecf20Sopenharmony_ci}; 18768c2ecf20Sopenharmony_ci 18778c2ecf20Sopenharmony_cistatic struct clk_branch mdss_esc1_clk = { 18788c2ecf20Sopenharmony_ci .halt_reg = 0x2348, 18798c2ecf20Sopenharmony_ci .clkr = { 18808c2ecf20Sopenharmony_ci .enable_reg = 0x2348, 18818c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 18828c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 18838c2ecf20Sopenharmony_ci .name = "mdss_esc1_clk", 18848c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 18858c2ecf20Sopenharmony_ci "esc1_clk_src", 18868c2ecf20Sopenharmony_ci }, 18878c2ecf20Sopenharmony_ci .num_parents = 1, 18888c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 18898c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 18908c2ecf20Sopenharmony_ci }, 18918c2ecf20Sopenharmony_ci }, 18928c2ecf20Sopenharmony_ci}; 18938c2ecf20Sopenharmony_ci 18948c2ecf20Sopenharmony_cistatic struct clk_branch mdss_extpclk_clk = { 18958c2ecf20Sopenharmony_ci .halt_reg = 0x2324, 18968c2ecf20Sopenharmony_ci .clkr = { 18978c2ecf20Sopenharmony_ci .enable_reg = 0x2324, 18988c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 18998c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 19008c2ecf20Sopenharmony_ci .name = "mdss_extpclk_clk", 19018c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 19028c2ecf20Sopenharmony_ci "extpclk_clk_src", 19038c2ecf20Sopenharmony_ci }, 19048c2ecf20Sopenharmony_ci .num_parents = 1, 19058c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 19068c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 19078c2ecf20Sopenharmony_ci }, 19088c2ecf20Sopenharmony_ci }, 19098c2ecf20Sopenharmony_ci}; 19108c2ecf20Sopenharmony_ci 19118c2ecf20Sopenharmony_cistatic struct clk_branch mdss_hdmi_ahb_clk = { 19128c2ecf20Sopenharmony_ci .halt_reg = 0x230c, 19138c2ecf20Sopenharmony_ci .clkr = { 19148c2ecf20Sopenharmony_ci .enable_reg = 0x230c, 19158c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 19168c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 19178c2ecf20Sopenharmony_ci .name = "mdss_hdmi_ahb_clk", 19188c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 19198c2ecf20Sopenharmony_ci "mmss_ahb_clk_src", 19208c2ecf20Sopenharmony_ci }, 19218c2ecf20Sopenharmony_ci .num_parents = 1, 19228c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 19238c2ecf20Sopenharmony_ci }, 19248c2ecf20Sopenharmony_ci }, 19258c2ecf20Sopenharmony_ci}; 19268c2ecf20Sopenharmony_ci 19278c2ecf20Sopenharmony_cistatic struct clk_branch mdss_hdmi_clk = { 19288c2ecf20Sopenharmony_ci .halt_reg = 0x2338, 19298c2ecf20Sopenharmony_ci .clkr = { 19308c2ecf20Sopenharmony_ci .enable_reg = 0x2338, 19318c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 19328c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 19338c2ecf20Sopenharmony_ci .name = "mdss_hdmi_clk", 19348c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 19358c2ecf20Sopenharmony_ci "hdmi_clk_src", 19368c2ecf20Sopenharmony_ci }, 19378c2ecf20Sopenharmony_ci .num_parents = 1, 19388c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 19398c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 19408c2ecf20Sopenharmony_ci }, 19418c2ecf20Sopenharmony_ci }, 19428c2ecf20Sopenharmony_ci}; 19438c2ecf20Sopenharmony_ci 19448c2ecf20Sopenharmony_cistatic struct clk_branch mdss_mdp_clk = { 19458c2ecf20Sopenharmony_ci .halt_reg = 0x231c, 19468c2ecf20Sopenharmony_ci .clkr = { 19478c2ecf20Sopenharmony_ci .enable_reg = 0x231c, 19488c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 19498c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 19508c2ecf20Sopenharmony_ci .name = "mdss_mdp_clk", 19518c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 19528c2ecf20Sopenharmony_ci "mdp_clk_src", 19538c2ecf20Sopenharmony_ci }, 19548c2ecf20Sopenharmony_ci .num_parents = 1, 19558c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 19568c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 19578c2ecf20Sopenharmony_ci }, 19588c2ecf20Sopenharmony_ci }, 19598c2ecf20Sopenharmony_ci}; 19608c2ecf20Sopenharmony_ci 19618c2ecf20Sopenharmony_cistatic struct clk_branch mdss_mdp_lut_clk = { 19628c2ecf20Sopenharmony_ci .halt_reg = 0x2320, 19638c2ecf20Sopenharmony_ci .clkr = { 19648c2ecf20Sopenharmony_ci .enable_reg = 0x2320, 19658c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 19668c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 19678c2ecf20Sopenharmony_ci .name = "mdss_mdp_lut_clk", 19688c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 19698c2ecf20Sopenharmony_ci "mdp_clk_src", 19708c2ecf20Sopenharmony_ci }, 19718c2ecf20Sopenharmony_ci .num_parents = 1, 19728c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 19738c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 19748c2ecf20Sopenharmony_ci }, 19758c2ecf20Sopenharmony_ci }, 19768c2ecf20Sopenharmony_ci}; 19778c2ecf20Sopenharmony_ci 19788c2ecf20Sopenharmony_cistatic struct clk_branch mdss_pclk0_clk = { 19798c2ecf20Sopenharmony_ci .halt_reg = 0x2314, 19808c2ecf20Sopenharmony_ci .clkr = { 19818c2ecf20Sopenharmony_ci .enable_reg = 0x2314, 19828c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 19838c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 19848c2ecf20Sopenharmony_ci .name = "mdss_pclk0_clk", 19858c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 19868c2ecf20Sopenharmony_ci "pclk0_clk_src", 19878c2ecf20Sopenharmony_ci }, 19888c2ecf20Sopenharmony_ci .num_parents = 1, 19898c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 19908c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 19918c2ecf20Sopenharmony_ci }, 19928c2ecf20Sopenharmony_ci }, 19938c2ecf20Sopenharmony_ci}; 19948c2ecf20Sopenharmony_ci 19958c2ecf20Sopenharmony_cistatic struct clk_branch mdss_pclk1_clk = { 19968c2ecf20Sopenharmony_ci .halt_reg = 0x2318, 19978c2ecf20Sopenharmony_ci .clkr = { 19988c2ecf20Sopenharmony_ci .enable_reg = 0x2318, 19998c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 20008c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 20018c2ecf20Sopenharmony_ci .name = "mdss_pclk1_clk", 20028c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 20038c2ecf20Sopenharmony_ci "pclk1_clk_src", 20048c2ecf20Sopenharmony_ci }, 20058c2ecf20Sopenharmony_ci .num_parents = 1, 20068c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 20078c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 20088c2ecf20Sopenharmony_ci }, 20098c2ecf20Sopenharmony_ci }, 20108c2ecf20Sopenharmony_ci}; 20118c2ecf20Sopenharmony_ci 20128c2ecf20Sopenharmony_cistatic struct clk_branch mdss_vsync_clk = { 20138c2ecf20Sopenharmony_ci .halt_reg = 0x2328, 20148c2ecf20Sopenharmony_ci .clkr = { 20158c2ecf20Sopenharmony_ci .enable_reg = 0x2328, 20168c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 20178c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 20188c2ecf20Sopenharmony_ci .name = "mdss_vsync_clk", 20198c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 20208c2ecf20Sopenharmony_ci "vsync_clk_src", 20218c2ecf20Sopenharmony_ci }, 20228c2ecf20Sopenharmony_ci .num_parents = 1, 20238c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 20248c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 20258c2ecf20Sopenharmony_ci }, 20268c2ecf20Sopenharmony_ci }, 20278c2ecf20Sopenharmony_ci}; 20288c2ecf20Sopenharmony_ci 20298c2ecf20Sopenharmony_cistatic struct clk_branch mmss_misc_ahb_clk = { 20308c2ecf20Sopenharmony_ci .halt_reg = 0x502c, 20318c2ecf20Sopenharmony_ci .clkr = { 20328c2ecf20Sopenharmony_ci .enable_reg = 0x502c, 20338c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 20348c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 20358c2ecf20Sopenharmony_ci .name = "mmss_misc_ahb_clk", 20368c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 20378c2ecf20Sopenharmony_ci "mmss_ahb_clk_src", 20388c2ecf20Sopenharmony_ci }, 20398c2ecf20Sopenharmony_ci .num_parents = 1, 20408c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 20418c2ecf20Sopenharmony_ci }, 20428c2ecf20Sopenharmony_ci }, 20438c2ecf20Sopenharmony_ci}; 20448c2ecf20Sopenharmony_ci 20458c2ecf20Sopenharmony_cistatic struct clk_branch mmss_mmssnoc_ahb_clk = { 20468c2ecf20Sopenharmony_ci .halt_reg = 0x5024, 20478c2ecf20Sopenharmony_ci .clkr = { 20488c2ecf20Sopenharmony_ci .enable_reg = 0x5024, 20498c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 20508c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 20518c2ecf20Sopenharmony_ci .name = "mmss_mmssnoc_ahb_clk", 20528c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 20538c2ecf20Sopenharmony_ci "mmss_ahb_clk_src", 20548c2ecf20Sopenharmony_ci }, 20558c2ecf20Sopenharmony_ci .num_parents = 1, 20568c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 20578c2ecf20Sopenharmony_ci .flags = CLK_IGNORE_UNUSED, 20588c2ecf20Sopenharmony_ci }, 20598c2ecf20Sopenharmony_ci }, 20608c2ecf20Sopenharmony_ci}; 20618c2ecf20Sopenharmony_ci 20628c2ecf20Sopenharmony_cistatic struct clk_branch mmss_mmssnoc_bto_ahb_clk = { 20638c2ecf20Sopenharmony_ci .halt_reg = 0x5028, 20648c2ecf20Sopenharmony_ci .clkr = { 20658c2ecf20Sopenharmony_ci .enable_reg = 0x5028, 20668c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 20678c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 20688c2ecf20Sopenharmony_ci .name = "mmss_mmssnoc_bto_ahb_clk", 20698c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 20708c2ecf20Sopenharmony_ci "mmss_ahb_clk_src", 20718c2ecf20Sopenharmony_ci }, 20728c2ecf20Sopenharmony_ci .num_parents = 1, 20738c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 20748c2ecf20Sopenharmony_ci .flags = CLK_IGNORE_UNUSED, 20758c2ecf20Sopenharmony_ci }, 20768c2ecf20Sopenharmony_ci }, 20778c2ecf20Sopenharmony_ci}; 20788c2ecf20Sopenharmony_ci 20798c2ecf20Sopenharmony_cistatic struct clk_branch mmss_mmssnoc_axi_clk = { 20808c2ecf20Sopenharmony_ci .halt_reg = 0x506c, 20818c2ecf20Sopenharmony_ci .clkr = { 20828c2ecf20Sopenharmony_ci .enable_reg = 0x506c, 20838c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 20848c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 20858c2ecf20Sopenharmony_ci .name = "mmss_mmssnoc_axi_clk", 20868c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 20878c2ecf20Sopenharmony_ci "mmss_axi_clk_src", 20888c2ecf20Sopenharmony_ci }, 20898c2ecf20Sopenharmony_ci .num_parents = 1, 20908c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 20918c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 20928c2ecf20Sopenharmony_ci }, 20938c2ecf20Sopenharmony_ci }, 20948c2ecf20Sopenharmony_ci}; 20958c2ecf20Sopenharmony_ci 20968c2ecf20Sopenharmony_cistatic struct clk_branch mmss_s0_axi_clk = { 20978c2ecf20Sopenharmony_ci .halt_reg = 0x5064, 20988c2ecf20Sopenharmony_ci .clkr = { 20998c2ecf20Sopenharmony_ci .enable_reg = 0x5064, 21008c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 21018c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 21028c2ecf20Sopenharmony_ci .name = "mmss_s0_axi_clk", 21038c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 21048c2ecf20Sopenharmony_ci "mmss_axi_clk_src", 21058c2ecf20Sopenharmony_ci }, 21068c2ecf20Sopenharmony_ci .num_parents = 1, 21078c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 21088c2ecf20Sopenharmony_ci .flags = CLK_IGNORE_UNUSED, 21098c2ecf20Sopenharmony_ci }, 21108c2ecf20Sopenharmony_ci }, 21118c2ecf20Sopenharmony_ci}; 21128c2ecf20Sopenharmony_ci 21138c2ecf20Sopenharmony_cistatic struct clk_branch ocmemcx_ahb_clk = { 21148c2ecf20Sopenharmony_ci .halt_reg = 0x405c, 21158c2ecf20Sopenharmony_ci .clkr = { 21168c2ecf20Sopenharmony_ci .enable_reg = 0x405c, 21178c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 21188c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 21198c2ecf20Sopenharmony_ci .name = "ocmemcx_ahb_clk", 21208c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 21218c2ecf20Sopenharmony_ci "mmss_ahb_clk_src", 21228c2ecf20Sopenharmony_ci }, 21238c2ecf20Sopenharmony_ci .num_parents = 1, 21248c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 21258c2ecf20Sopenharmony_ci }, 21268c2ecf20Sopenharmony_ci }, 21278c2ecf20Sopenharmony_ci}; 21288c2ecf20Sopenharmony_ci 21298c2ecf20Sopenharmony_cistatic struct clk_branch ocmemcx_ocmemnoc_clk = { 21308c2ecf20Sopenharmony_ci .halt_reg = 0x4058, 21318c2ecf20Sopenharmony_ci .clkr = { 21328c2ecf20Sopenharmony_ci .enable_reg = 0x4058, 21338c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 21348c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 21358c2ecf20Sopenharmony_ci .name = "ocmemcx_ocmemnoc_clk", 21368c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 21378c2ecf20Sopenharmony_ci "ocmemnoc_clk_src", 21388c2ecf20Sopenharmony_ci }, 21398c2ecf20Sopenharmony_ci .num_parents = 1, 21408c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 21418c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 21428c2ecf20Sopenharmony_ci }, 21438c2ecf20Sopenharmony_ci }, 21448c2ecf20Sopenharmony_ci}; 21458c2ecf20Sopenharmony_ci 21468c2ecf20Sopenharmony_cistatic struct clk_branch oxili_ocmemgx_clk = { 21478c2ecf20Sopenharmony_ci .halt_reg = 0x402c, 21488c2ecf20Sopenharmony_ci .clkr = { 21498c2ecf20Sopenharmony_ci .enable_reg = 0x402c, 21508c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 21518c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 21528c2ecf20Sopenharmony_ci .name = "oxili_ocmemgx_clk", 21538c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 21548c2ecf20Sopenharmony_ci "gfx3d_clk_src", 21558c2ecf20Sopenharmony_ci }, 21568c2ecf20Sopenharmony_ci .num_parents = 1, 21578c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 21588c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 21598c2ecf20Sopenharmony_ci }, 21608c2ecf20Sopenharmony_ci }, 21618c2ecf20Sopenharmony_ci}; 21628c2ecf20Sopenharmony_ci 21638c2ecf20Sopenharmony_cistatic struct clk_branch ocmemnoc_clk = { 21648c2ecf20Sopenharmony_ci .halt_reg = 0x50b4, 21658c2ecf20Sopenharmony_ci .clkr = { 21668c2ecf20Sopenharmony_ci .enable_reg = 0x50b4, 21678c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 21688c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 21698c2ecf20Sopenharmony_ci .name = "ocmemnoc_clk", 21708c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 21718c2ecf20Sopenharmony_ci "ocmemnoc_clk_src", 21728c2ecf20Sopenharmony_ci }, 21738c2ecf20Sopenharmony_ci .num_parents = 1, 21748c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 21758c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 21768c2ecf20Sopenharmony_ci }, 21778c2ecf20Sopenharmony_ci }, 21788c2ecf20Sopenharmony_ci}; 21798c2ecf20Sopenharmony_ci 21808c2ecf20Sopenharmony_cistatic struct clk_branch oxili_gfx3d_clk = { 21818c2ecf20Sopenharmony_ci .halt_reg = 0x4028, 21828c2ecf20Sopenharmony_ci .clkr = { 21838c2ecf20Sopenharmony_ci .enable_reg = 0x4028, 21848c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 21858c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 21868c2ecf20Sopenharmony_ci .name = "oxili_gfx3d_clk", 21878c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 21888c2ecf20Sopenharmony_ci "gfx3d_clk_src", 21898c2ecf20Sopenharmony_ci }, 21908c2ecf20Sopenharmony_ci .num_parents = 1, 21918c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 21928c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 21938c2ecf20Sopenharmony_ci }, 21948c2ecf20Sopenharmony_ci }, 21958c2ecf20Sopenharmony_ci}; 21968c2ecf20Sopenharmony_ci 21978c2ecf20Sopenharmony_cistatic struct clk_branch oxilicx_ahb_clk = { 21988c2ecf20Sopenharmony_ci .halt_reg = 0x403c, 21998c2ecf20Sopenharmony_ci .clkr = { 22008c2ecf20Sopenharmony_ci .enable_reg = 0x403c, 22018c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 22028c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 22038c2ecf20Sopenharmony_ci .name = "oxilicx_ahb_clk", 22048c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 22058c2ecf20Sopenharmony_ci "mmss_ahb_clk_src", 22068c2ecf20Sopenharmony_ci }, 22078c2ecf20Sopenharmony_ci .num_parents = 1, 22088c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 22098c2ecf20Sopenharmony_ci }, 22108c2ecf20Sopenharmony_ci }, 22118c2ecf20Sopenharmony_ci}; 22128c2ecf20Sopenharmony_ci 22138c2ecf20Sopenharmony_cistatic struct clk_branch oxilicx_axi_clk = { 22148c2ecf20Sopenharmony_ci .halt_reg = 0x4038, 22158c2ecf20Sopenharmony_ci .clkr = { 22168c2ecf20Sopenharmony_ci .enable_reg = 0x4038, 22178c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 22188c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 22198c2ecf20Sopenharmony_ci .name = "oxilicx_axi_clk", 22208c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 22218c2ecf20Sopenharmony_ci "mmss_axi_clk_src", 22228c2ecf20Sopenharmony_ci }, 22238c2ecf20Sopenharmony_ci .num_parents = 1, 22248c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 22258c2ecf20Sopenharmony_ci }, 22268c2ecf20Sopenharmony_ci }, 22278c2ecf20Sopenharmony_ci}; 22288c2ecf20Sopenharmony_ci 22298c2ecf20Sopenharmony_cistatic struct clk_branch venus0_ahb_clk = { 22308c2ecf20Sopenharmony_ci .halt_reg = 0x1030, 22318c2ecf20Sopenharmony_ci .clkr = { 22328c2ecf20Sopenharmony_ci .enable_reg = 0x1030, 22338c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 22348c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 22358c2ecf20Sopenharmony_ci .name = "venus0_ahb_clk", 22368c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 22378c2ecf20Sopenharmony_ci "mmss_ahb_clk_src", 22388c2ecf20Sopenharmony_ci }, 22398c2ecf20Sopenharmony_ci .num_parents = 1, 22408c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 22418c2ecf20Sopenharmony_ci }, 22428c2ecf20Sopenharmony_ci }, 22438c2ecf20Sopenharmony_ci}; 22448c2ecf20Sopenharmony_ci 22458c2ecf20Sopenharmony_cistatic struct clk_branch venus0_axi_clk = { 22468c2ecf20Sopenharmony_ci .halt_reg = 0x1034, 22478c2ecf20Sopenharmony_ci .clkr = { 22488c2ecf20Sopenharmony_ci .enable_reg = 0x1034, 22498c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 22508c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 22518c2ecf20Sopenharmony_ci .name = "venus0_axi_clk", 22528c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 22538c2ecf20Sopenharmony_ci "mmss_axi_clk_src", 22548c2ecf20Sopenharmony_ci }, 22558c2ecf20Sopenharmony_ci .num_parents = 1, 22568c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 22578c2ecf20Sopenharmony_ci }, 22588c2ecf20Sopenharmony_ci }, 22598c2ecf20Sopenharmony_ci}; 22608c2ecf20Sopenharmony_ci 22618c2ecf20Sopenharmony_cistatic struct clk_branch venus0_ocmemnoc_clk = { 22628c2ecf20Sopenharmony_ci .halt_reg = 0x1038, 22638c2ecf20Sopenharmony_ci .clkr = { 22648c2ecf20Sopenharmony_ci .enable_reg = 0x1038, 22658c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 22668c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 22678c2ecf20Sopenharmony_ci .name = "venus0_ocmemnoc_clk", 22688c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 22698c2ecf20Sopenharmony_ci "ocmemnoc_clk_src", 22708c2ecf20Sopenharmony_ci }, 22718c2ecf20Sopenharmony_ci .num_parents = 1, 22728c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 22738c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 22748c2ecf20Sopenharmony_ci }, 22758c2ecf20Sopenharmony_ci }, 22768c2ecf20Sopenharmony_ci}; 22778c2ecf20Sopenharmony_ci 22788c2ecf20Sopenharmony_cistatic struct clk_branch venus0_vcodec0_clk = { 22798c2ecf20Sopenharmony_ci .halt_reg = 0x1028, 22808c2ecf20Sopenharmony_ci .clkr = { 22818c2ecf20Sopenharmony_ci .enable_reg = 0x1028, 22828c2ecf20Sopenharmony_ci .enable_mask = BIT(0), 22838c2ecf20Sopenharmony_ci .hw.init = &(struct clk_init_data){ 22848c2ecf20Sopenharmony_ci .name = "venus0_vcodec0_clk", 22858c2ecf20Sopenharmony_ci .parent_names = (const char *[]){ 22868c2ecf20Sopenharmony_ci "vcodec0_clk_src", 22878c2ecf20Sopenharmony_ci }, 22888c2ecf20Sopenharmony_ci .num_parents = 1, 22898c2ecf20Sopenharmony_ci .flags = CLK_SET_RATE_PARENT, 22908c2ecf20Sopenharmony_ci .ops = &clk_branch2_ops, 22918c2ecf20Sopenharmony_ci }, 22928c2ecf20Sopenharmony_ci }, 22938c2ecf20Sopenharmony_ci}; 22948c2ecf20Sopenharmony_ci 22958c2ecf20Sopenharmony_cistatic const struct pll_config mmpll1_config = { 22968c2ecf20Sopenharmony_ci .l = 60, 22978c2ecf20Sopenharmony_ci .m = 25, 22988c2ecf20Sopenharmony_ci .n = 32, 22998c2ecf20Sopenharmony_ci .vco_val = 0x0, 23008c2ecf20Sopenharmony_ci .vco_mask = 0x3 << 20, 23018c2ecf20Sopenharmony_ci .pre_div_val = 0x0, 23028c2ecf20Sopenharmony_ci .pre_div_mask = 0x7 << 12, 23038c2ecf20Sopenharmony_ci .post_div_val = 0x0, 23048c2ecf20Sopenharmony_ci .post_div_mask = 0x3 << 8, 23058c2ecf20Sopenharmony_ci .mn_ena_mask = BIT(24), 23068c2ecf20Sopenharmony_ci .main_output_mask = BIT(0), 23078c2ecf20Sopenharmony_ci}; 23088c2ecf20Sopenharmony_ci 23098c2ecf20Sopenharmony_cistatic struct pll_config mmpll3_config = { 23108c2ecf20Sopenharmony_ci .l = 48, 23118c2ecf20Sopenharmony_ci .m = 7, 23128c2ecf20Sopenharmony_ci .n = 16, 23138c2ecf20Sopenharmony_ci .vco_val = 0x0, 23148c2ecf20Sopenharmony_ci .vco_mask = 0x3 << 20, 23158c2ecf20Sopenharmony_ci .pre_div_val = 0x0, 23168c2ecf20Sopenharmony_ci .pre_div_mask = 0x7 << 12, 23178c2ecf20Sopenharmony_ci .post_div_val = 0x0, 23188c2ecf20Sopenharmony_ci .post_div_mask = 0x3 << 8, 23198c2ecf20Sopenharmony_ci .mn_ena_mask = BIT(24), 23208c2ecf20Sopenharmony_ci .main_output_mask = BIT(0), 23218c2ecf20Sopenharmony_ci .aux_output_mask = BIT(1), 23228c2ecf20Sopenharmony_ci}; 23238c2ecf20Sopenharmony_ci 23248c2ecf20Sopenharmony_cistatic struct gdsc venus0_gdsc = { 23258c2ecf20Sopenharmony_ci .gdscr = 0x1024, 23268c2ecf20Sopenharmony_ci .cxcs = (unsigned int []){ 0x1028 }, 23278c2ecf20Sopenharmony_ci .cxc_count = 1, 23288c2ecf20Sopenharmony_ci .resets = (unsigned int []){ VENUS0_RESET }, 23298c2ecf20Sopenharmony_ci .reset_count = 1, 23308c2ecf20Sopenharmony_ci .pd = { 23318c2ecf20Sopenharmony_ci .name = "venus0", 23328c2ecf20Sopenharmony_ci }, 23338c2ecf20Sopenharmony_ci .pwrsts = PWRSTS_ON, 23348c2ecf20Sopenharmony_ci}; 23358c2ecf20Sopenharmony_ci 23368c2ecf20Sopenharmony_cistatic struct gdsc mdss_gdsc = { 23378c2ecf20Sopenharmony_ci .gdscr = 0x2304, 23388c2ecf20Sopenharmony_ci .cxcs = (unsigned int []){ 0x231c, 0x2320 }, 23398c2ecf20Sopenharmony_ci .cxc_count = 2, 23408c2ecf20Sopenharmony_ci .pd = { 23418c2ecf20Sopenharmony_ci .name = "mdss", 23428c2ecf20Sopenharmony_ci }, 23438c2ecf20Sopenharmony_ci .pwrsts = PWRSTS_RET_ON, 23448c2ecf20Sopenharmony_ci}; 23458c2ecf20Sopenharmony_ci 23468c2ecf20Sopenharmony_cistatic struct gdsc camss_jpeg_gdsc = { 23478c2ecf20Sopenharmony_ci .gdscr = 0x35a4, 23488c2ecf20Sopenharmony_ci .cxcs = (unsigned int []){ 0x35a8, 0x35ac, 0x35b0 }, 23498c2ecf20Sopenharmony_ci .cxc_count = 3, 23508c2ecf20Sopenharmony_ci .pd = { 23518c2ecf20Sopenharmony_ci .name = "camss_jpeg", 23528c2ecf20Sopenharmony_ci }, 23538c2ecf20Sopenharmony_ci .pwrsts = PWRSTS_OFF_ON, 23548c2ecf20Sopenharmony_ci}; 23558c2ecf20Sopenharmony_ci 23568c2ecf20Sopenharmony_cistatic struct gdsc camss_vfe_gdsc = { 23578c2ecf20Sopenharmony_ci .gdscr = 0x36a4, 23588c2ecf20Sopenharmony_ci .cxcs = (unsigned int []){ 0x36a8, 0x36ac, 0x3704, 0x3714, 0x36b0 }, 23598c2ecf20Sopenharmony_ci .cxc_count = 5, 23608c2ecf20Sopenharmony_ci .pd = { 23618c2ecf20Sopenharmony_ci .name = "camss_vfe", 23628c2ecf20Sopenharmony_ci }, 23638c2ecf20Sopenharmony_ci .pwrsts = PWRSTS_OFF_ON, 23648c2ecf20Sopenharmony_ci}; 23658c2ecf20Sopenharmony_ci 23668c2ecf20Sopenharmony_cistatic struct gdsc oxili_gdsc = { 23678c2ecf20Sopenharmony_ci .gdscr = 0x4024, 23688c2ecf20Sopenharmony_ci .cxcs = (unsigned int []){ 0x4028 }, 23698c2ecf20Sopenharmony_ci .cxc_count = 1, 23708c2ecf20Sopenharmony_ci .pd = { 23718c2ecf20Sopenharmony_ci .name = "oxili", 23728c2ecf20Sopenharmony_ci }, 23738c2ecf20Sopenharmony_ci .pwrsts = PWRSTS_OFF_ON, 23748c2ecf20Sopenharmony_ci}; 23758c2ecf20Sopenharmony_ci 23768c2ecf20Sopenharmony_cistatic struct gdsc oxilicx_gdsc = { 23778c2ecf20Sopenharmony_ci .gdscr = 0x4034, 23788c2ecf20Sopenharmony_ci .pd = { 23798c2ecf20Sopenharmony_ci .name = "oxilicx", 23808c2ecf20Sopenharmony_ci }, 23818c2ecf20Sopenharmony_ci .parent = &oxili_gdsc.pd, 23828c2ecf20Sopenharmony_ci .pwrsts = PWRSTS_OFF_ON, 23838c2ecf20Sopenharmony_ci}; 23848c2ecf20Sopenharmony_ci 23858c2ecf20Sopenharmony_cistatic struct clk_regmap *mmcc_msm8974_clocks[] = { 23868c2ecf20Sopenharmony_ci [MMSS_AHB_CLK_SRC] = &mmss_ahb_clk_src.clkr, 23878c2ecf20Sopenharmony_ci [MMSS_AXI_CLK_SRC] = &mmss_axi_clk_src.clkr, 23888c2ecf20Sopenharmony_ci [OCMEMNOC_CLK_SRC] = &ocmemnoc_clk_src.clkr, 23898c2ecf20Sopenharmony_ci [MMPLL0] = &mmpll0.clkr, 23908c2ecf20Sopenharmony_ci [MMPLL0_VOTE] = &mmpll0_vote, 23918c2ecf20Sopenharmony_ci [MMPLL1] = &mmpll1.clkr, 23928c2ecf20Sopenharmony_ci [MMPLL1_VOTE] = &mmpll1_vote, 23938c2ecf20Sopenharmony_ci [MMPLL2] = &mmpll2.clkr, 23948c2ecf20Sopenharmony_ci [MMPLL3] = &mmpll3.clkr, 23958c2ecf20Sopenharmony_ci [CSI0_CLK_SRC] = &csi0_clk_src.clkr, 23968c2ecf20Sopenharmony_ci [CSI1_CLK_SRC] = &csi1_clk_src.clkr, 23978c2ecf20Sopenharmony_ci [CSI2_CLK_SRC] = &csi2_clk_src.clkr, 23988c2ecf20Sopenharmony_ci [CSI3_CLK_SRC] = &csi3_clk_src.clkr, 23998c2ecf20Sopenharmony_ci [VFE0_CLK_SRC] = &vfe0_clk_src.clkr, 24008c2ecf20Sopenharmony_ci [VFE1_CLK_SRC] = &vfe1_clk_src.clkr, 24018c2ecf20Sopenharmony_ci [MDP_CLK_SRC] = &mdp_clk_src.clkr, 24028c2ecf20Sopenharmony_ci [JPEG0_CLK_SRC] = &jpeg0_clk_src.clkr, 24038c2ecf20Sopenharmony_ci [JPEG1_CLK_SRC] = &jpeg1_clk_src.clkr, 24048c2ecf20Sopenharmony_ci [JPEG2_CLK_SRC] = &jpeg2_clk_src.clkr, 24058c2ecf20Sopenharmony_ci [PCLK0_CLK_SRC] = &pclk0_clk_src.clkr, 24068c2ecf20Sopenharmony_ci [PCLK1_CLK_SRC] = &pclk1_clk_src.clkr, 24078c2ecf20Sopenharmony_ci [VCODEC0_CLK_SRC] = &vcodec0_clk_src.clkr, 24088c2ecf20Sopenharmony_ci [CCI_CLK_SRC] = &cci_clk_src.clkr, 24098c2ecf20Sopenharmony_ci [CAMSS_GP0_CLK_SRC] = &camss_gp0_clk_src.clkr, 24108c2ecf20Sopenharmony_ci [CAMSS_GP1_CLK_SRC] = &camss_gp1_clk_src.clkr, 24118c2ecf20Sopenharmony_ci [MCLK0_CLK_SRC] = &mclk0_clk_src.clkr, 24128c2ecf20Sopenharmony_ci [MCLK1_CLK_SRC] = &mclk1_clk_src.clkr, 24138c2ecf20Sopenharmony_ci [MCLK2_CLK_SRC] = &mclk2_clk_src.clkr, 24148c2ecf20Sopenharmony_ci [MCLK3_CLK_SRC] = &mclk3_clk_src.clkr, 24158c2ecf20Sopenharmony_ci [CSI0PHYTIMER_CLK_SRC] = &csi0phytimer_clk_src.clkr, 24168c2ecf20Sopenharmony_ci [CSI1PHYTIMER_CLK_SRC] = &csi1phytimer_clk_src.clkr, 24178c2ecf20Sopenharmony_ci [CSI2PHYTIMER_CLK_SRC] = &csi2phytimer_clk_src.clkr, 24188c2ecf20Sopenharmony_ci [CPP_CLK_SRC] = &cpp_clk_src.clkr, 24198c2ecf20Sopenharmony_ci [BYTE0_CLK_SRC] = &byte0_clk_src.clkr, 24208c2ecf20Sopenharmony_ci [BYTE1_CLK_SRC] = &byte1_clk_src.clkr, 24218c2ecf20Sopenharmony_ci [EDPAUX_CLK_SRC] = &edpaux_clk_src.clkr, 24228c2ecf20Sopenharmony_ci [EDPLINK_CLK_SRC] = &edplink_clk_src.clkr, 24238c2ecf20Sopenharmony_ci [EDPPIXEL_CLK_SRC] = &edppixel_clk_src.clkr, 24248c2ecf20Sopenharmony_ci [ESC0_CLK_SRC] = &esc0_clk_src.clkr, 24258c2ecf20Sopenharmony_ci [ESC1_CLK_SRC] = &esc1_clk_src.clkr, 24268c2ecf20Sopenharmony_ci [EXTPCLK_CLK_SRC] = &extpclk_clk_src.clkr, 24278c2ecf20Sopenharmony_ci [HDMI_CLK_SRC] = &hdmi_clk_src.clkr, 24288c2ecf20Sopenharmony_ci [VSYNC_CLK_SRC] = &vsync_clk_src.clkr, 24298c2ecf20Sopenharmony_ci [CAMSS_CCI_CCI_AHB_CLK] = &camss_cci_cci_ahb_clk.clkr, 24308c2ecf20Sopenharmony_ci [CAMSS_CCI_CCI_CLK] = &camss_cci_cci_clk.clkr, 24318c2ecf20Sopenharmony_ci [CAMSS_CSI0_AHB_CLK] = &camss_csi0_ahb_clk.clkr, 24328c2ecf20Sopenharmony_ci [CAMSS_CSI0_CLK] = &camss_csi0_clk.clkr, 24338c2ecf20Sopenharmony_ci [CAMSS_CSI0PHY_CLK] = &camss_csi0phy_clk.clkr, 24348c2ecf20Sopenharmony_ci [CAMSS_CSI0PIX_CLK] = &camss_csi0pix_clk.clkr, 24358c2ecf20Sopenharmony_ci [CAMSS_CSI0RDI_CLK] = &camss_csi0rdi_clk.clkr, 24368c2ecf20Sopenharmony_ci [CAMSS_CSI1_AHB_CLK] = &camss_csi1_ahb_clk.clkr, 24378c2ecf20Sopenharmony_ci [CAMSS_CSI1_CLK] = &camss_csi1_clk.clkr, 24388c2ecf20Sopenharmony_ci [CAMSS_CSI1PHY_CLK] = &camss_csi1phy_clk.clkr, 24398c2ecf20Sopenharmony_ci [CAMSS_CSI1PIX_CLK] = &camss_csi1pix_clk.clkr, 24408c2ecf20Sopenharmony_ci [CAMSS_CSI1RDI_CLK] = &camss_csi1rdi_clk.clkr, 24418c2ecf20Sopenharmony_ci [CAMSS_CSI2_AHB_CLK] = &camss_csi2_ahb_clk.clkr, 24428c2ecf20Sopenharmony_ci [CAMSS_CSI2_CLK] = &camss_csi2_clk.clkr, 24438c2ecf20Sopenharmony_ci [CAMSS_CSI2PHY_CLK] = &camss_csi2phy_clk.clkr, 24448c2ecf20Sopenharmony_ci [CAMSS_CSI2PIX_CLK] = &camss_csi2pix_clk.clkr, 24458c2ecf20Sopenharmony_ci [CAMSS_CSI2RDI_CLK] = &camss_csi2rdi_clk.clkr, 24468c2ecf20Sopenharmony_ci [CAMSS_CSI3_AHB_CLK] = &camss_csi3_ahb_clk.clkr, 24478c2ecf20Sopenharmony_ci [CAMSS_CSI3_CLK] = &camss_csi3_clk.clkr, 24488c2ecf20Sopenharmony_ci [CAMSS_CSI3PHY_CLK] = &camss_csi3phy_clk.clkr, 24498c2ecf20Sopenharmony_ci [CAMSS_CSI3PIX_CLK] = &camss_csi3pix_clk.clkr, 24508c2ecf20Sopenharmony_ci [CAMSS_CSI3RDI_CLK] = &camss_csi3rdi_clk.clkr, 24518c2ecf20Sopenharmony_ci [CAMSS_CSI_VFE0_CLK] = &camss_csi_vfe0_clk.clkr, 24528c2ecf20Sopenharmony_ci [CAMSS_CSI_VFE1_CLK] = &camss_csi_vfe1_clk.clkr, 24538c2ecf20Sopenharmony_ci [CAMSS_GP0_CLK] = &camss_gp0_clk.clkr, 24548c2ecf20Sopenharmony_ci [CAMSS_GP1_CLK] = &camss_gp1_clk.clkr, 24558c2ecf20Sopenharmony_ci [CAMSS_ISPIF_AHB_CLK] = &camss_ispif_ahb_clk.clkr, 24568c2ecf20Sopenharmony_ci [CAMSS_JPEG_JPEG0_CLK] = &camss_jpeg_jpeg0_clk.clkr, 24578c2ecf20Sopenharmony_ci [CAMSS_JPEG_JPEG1_CLK] = &camss_jpeg_jpeg1_clk.clkr, 24588c2ecf20Sopenharmony_ci [CAMSS_JPEG_JPEG2_CLK] = &camss_jpeg_jpeg2_clk.clkr, 24598c2ecf20Sopenharmony_ci [CAMSS_JPEG_JPEG_AHB_CLK] = &camss_jpeg_jpeg_ahb_clk.clkr, 24608c2ecf20Sopenharmony_ci [CAMSS_JPEG_JPEG_AXI_CLK] = &camss_jpeg_jpeg_axi_clk.clkr, 24618c2ecf20Sopenharmony_ci [CAMSS_JPEG_JPEG_OCMEMNOC_CLK] = &camss_jpeg_jpeg_ocmemnoc_clk.clkr, 24628c2ecf20Sopenharmony_ci [CAMSS_MCLK0_CLK] = &camss_mclk0_clk.clkr, 24638c2ecf20Sopenharmony_ci [CAMSS_MCLK1_CLK] = &camss_mclk1_clk.clkr, 24648c2ecf20Sopenharmony_ci [CAMSS_MCLK2_CLK] = &camss_mclk2_clk.clkr, 24658c2ecf20Sopenharmony_ci [CAMSS_MCLK3_CLK] = &camss_mclk3_clk.clkr, 24668c2ecf20Sopenharmony_ci [CAMSS_MICRO_AHB_CLK] = &camss_micro_ahb_clk.clkr, 24678c2ecf20Sopenharmony_ci [CAMSS_PHY0_CSI0PHYTIMER_CLK] = &camss_phy0_csi0phytimer_clk.clkr, 24688c2ecf20Sopenharmony_ci [CAMSS_PHY1_CSI1PHYTIMER_CLK] = &camss_phy1_csi1phytimer_clk.clkr, 24698c2ecf20Sopenharmony_ci [CAMSS_PHY2_CSI2PHYTIMER_CLK] = &camss_phy2_csi2phytimer_clk.clkr, 24708c2ecf20Sopenharmony_ci [CAMSS_TOP_AHB_CLK] = &camss_top_ahb_clk.clkr, 24718c2ecf20Sopenharmony_ci [CAMSS_VFE_CPP_AHB_CLK] = &camss_vfe_cpp_ahb_clk.clkr, 24728c2ecf20Sopenharmony_ci [CAMSS_VFE_CPP_CLK] = &camss_vfe_cpp_clk.clkr, 24738c2ecf20Sopenharmony_ci [CAMSS_VFE_VFE0_CLK] = &camss_vfe_vfe0_clk.clkr, 24748c2ecf20Sopenharmony_ci [CAMSS_VFE_VFE1_CLK] = &camss_vfe_vfe1_clk.clkr, 24758c2ecf20Sopenharmony_ci [CAMSS_VFE_VFE_AHB_CLK] = &camss_vfe_vfe_ahb_clk.clkr, 24768c2ecf20Sopenharmony_ci [CAMSS_VFE_VFE_AXI_CLK] = &camss_vfe_vfe_axi_clk.clkr, 24778c2ecf20Sopenharmony_ci [CAMSS_VFE_VFE_OCMEMNOC_CLK] = &camss_vfe_vfe_ocmemnoc_clk.clkr, 24788c2ecf20Sopenharmony_ci [MDSS_AHB_CLK] = &mdss_ahb_clk.clkr, 24798c2ecf20Sopenharmony_ci [MDSS_AXI_CLK] = &mdss_axi_clk.clkr, 24808c2ecf20Sopenharmony_ci [MDSS_BYTE0_CLK] = &mdss_byte0_clk.clkr, 24818c2ecf20Sopenharmony_ci [MDSS_BYTE1_CLK] = &mdss_byte1_clk.clkr, 24828c2ecf20Sopenharmony_ci [MDSS_EDPAUX_CLK] = &mdss_edpaux_clk.clkr, 24838c2ecf20Sopenharmony_ci [MDSS_EDPLINK_CLK] = &mdss_edplink_clk.clkr, 24848c2ecf20Sopenharmony_ci [MDSS_EDPPIXEL_CLK] = &mdss_edppixel_clk.clkr, 24858c2ecf20Sopenharmony_ci [MDSS_ESC0_CLK] = &mdss_esc0_clk.clkr, 24868c2ecf20Sopenharmony_ci [MDSS_ESC1_CLK] = &mdss_esc1_clk.clkr, 24878c2ecf20Sopenharmony_ci [MDSS_EXTPCLK_CLK] = &mdss_extpclk_clk.clkr, 24888c2ecf20Sopenharmony_ci [MDSS_HDMI_AHB_CLK] = &mdss_hdmi_ahb_clk.clkr, 24898c2ecf20Sopenharmony_ci [MDSS_HDMI_CLK] = &mdss_hdmi_clk.clkr, 24908c2ecf20Sopenharmony_ci [MDSS_MDP_CLK] = &mdss_mdp_clk.clkr, 24918c2ecf20Sopenharmony_ci [MDSS_MDP_LUT_CLK] = &mdss_mdp_lut_clk.clkr, 24928c2ecf20Sopenharmony_ci [MDSS_PCLK0_CLK] = &mdss_pclk0_clk.clkr, 24938c2ecf20Sopenharmony_ci [MDSS_PCLK1_CLK] = &mdss_pclk1_clk.clkr, 24948c2ecf20Sopenharmony_ci [MDSS_VSYNC_CLK] = &mdss_vsync_clk.clkr, 24958c2ecf20Sopenharmony_ci [MMSS_MISC_AHB_CLK] = &mmss_misc_ahb_clk.clkr, 24968c2ecf20Sopenharmony_ci [MMSS_MMSSNOC_AHB_CLK] = &mmss_mmssnoc_ahb_clk.clkr, 24978c2ecf20Sopenharmony_ci [MMSS_MMSSNOC_BTO_AHB_CLK] = &mmss_mmssnoc_bto_ahb_clk.clkr, 24988c2ecf20Sopenharmony_ci [MMSS_MMSSNOC_AXI_CLK] = &mmss_mmssnoc_axi_clk.clkr, 24998c2ecf20Sopenharmony_ci [MMSS_S0_AXI_CLK] = &mmss_s0_axi_clk.clkr, 25008c2ecf20Sopenharmony_ci [OCMEMCX_AHB_CLK] = &ocmemcx_ahb_clk.clkr, 25018c2ecf20Sopenharmony_ci [OCMEMCX_OCMEMNOC_CLK] = &ocmemcx_ocmemnoc_clk.clkr, 25028c2ecf20Sopenharmony_ci [OXILI_OCMEMGX_CLK] = &oxili_ocmemgx_clk.clkr, 25038c2ecf20Sopenharmony_ci [OCMEMNOC_CLK] = &ocmemnoc_clk.clkr, 25048c2ecf20Sopenharmony_ci [OXILI_GFX3D_CLK] = &oxili_gfx3d_clk.clkr, 25058c2ecf20Sopenharmony_ci [OXILICX_AHB_CLK] = &oxilicx_ahb_clk.clkr, 25068c2ecf20Sopenharmony_ci [OXILICX_AXI_CLK] = &oxilicx_axi_clk.clkr, 25078c2ecf20Sopenharmony_ci [VENUS0_AHB_CLK] = &venus0_ahb_clk.clkr, 25088c2ecf20Sopenharmony_ci [VENUS0_AXI_CLK] = &venus0_axi_clk.clkr, 25098c2ecf20Sopenharmony_ci [VENUS0_OCMEMNOC_CLK] = &venus0_ocmemnoc_clk.clkr, 25108c2ecf20Sopenharmony_ci [VENUS0_VCODEC0_CLK] = &venus0_vcodec0_clk.clkr, 25118c2ecf20Sopenharmony_ci}; 25128c2ecf20Sopenharmony_ci 25138c2ecf20Sopenharmony_cistatic const struct qcom_reset_map mmcc_msm8974_resets[] = { 25148c2ecf20Sopenharmony_ci [SPDM_RESET] = { 0x0200 }, 25158c2ecf20Sopenharmony_ci [SPDM_RM_RESET] = { 0x0300 }, 25168c2ecf20Sopenharmony_ci [VENUS0_RESET] = { 0x1020 }, 25178c2ecf20Sopenharmony_ci [MDSS_RESET] = { 0x2300 }, 25188c2ecf20Sopenharmony_ci [CAMSS_PHY0_RESET] = { 0x3020 }, 25198c2ecf20Sopenharmony_ci [CAMSS_PHY1_RESET] = { 0x3050 }, 25208c2ecf20Sopenharmony_ci [CAMSS_PHY2_RESET] = { 0x3080 }, 25218c2ecf20Sopenharmony_ci [CAMSS_CSI0_RESET] = { 0x30b0 }, 25228c2ecf20Sopenharmony_ci [CAMSS_CSI0PHY_RESET] = { 0x30c0 }, 25238c2ecf20Sopenharmony_ci [CAMSS_CSI0RDI_RESET] = { 0x30d0 }, 25248c2ecf20Sopenharmony_ci [CAMSS_CSI0PIX_RESET] = { 0x30e0 }, 25258c2ecf20Sopenharmony_ci [CAMSS_CSI1_RESET] = { 0x3120 }, 25268c2ecf20Sopenharmony_ci [CAMSS_CSI1PHY_RESET] = { 0x3130 }, 25278c2ecf20Sopenharmony_ci [CAMSS_CSI1RDI_RESET] = { 0x3140 }, 25288c2ecf20Sopenharmony_ci [CAMSS_CSI1PIX_RESET] = { 0x3150 }, 25298c2ecf20Sopenharmony_ci [CAMSS_CSI2_RESET] = { 0x3180 }, 25308c2ecf20Sopenharmony_ci [CAMSS_CSI2PHY_RESET] = { 0x3190 }, 25318c2ecf20Sopenharmony_ci [CAMSS_CSI2RDI_RESET] = { 0x31a0 }, 25328c2ecf20Sopenharmony_ci [CAMSS_CSI2PIX_RESET] = { 0x31b0 }, 25338c2ecf20Sopenharmony_ci [CAMSS_CSI3_RESET] = { 0x31e0 }, 25348c2ecf20Sopenharmony_ci [CAMSS_CSI3PHY_RESET] = { 0x31f0 }, 25358c2ecf20Sopenharmony_ci [CAMSS_CSI3RDI_RESET] = { 0x3200 }, 25368c2ecf20Sopenharmony_ci [CAMSS_CSI3PIX_RESET] = { 0x3210 }, 25378c2ecf20Sopenharmony_ci [CAMSS_ISPIF_RESET] = { 0x3220 }, 25388c2ecf20Sopenharmony_ci [CAMSS_CCI_RESET] = { 0x3340 }, 25398c2ecf20Sopenharmony_ci [CAMSS_MCLK0_RESET] = { 0x3380 }, 25408c2ecf20Sopenharmony_ci [CAMSS_MCLK1_RESET] = { 0x33b0 }, 25418c2ecf20Sopenharmony_ci [CAMSS_MCLK2_RESET] = { 0x33e0 }, 25428c2ecf20Sopenharmony_ci [CAMSS_MCLK3_RESET] = { 0x3410 }, 25438c2ecf20Sopenharmony_ci [CAMSS_GP0_RESET] = { 0x3440 }, 25448c2ecf20Sopenharmony_ci [CAMSS_GP1_RESET] = { 0x3470 }, 25458c2ecf20Sopenharmony_ci [CAMSS_TOP_RESET] = { 0x3480 }, 25468c2ecf20Sopenharmony_ci [CAMSS_MICRO_RESET] = { 0x3490 }, 25478c2ecf20Sopenharmony_ci [CAMSS_JPEG_RESET] = { 0x35a0 }, 25488c2ecf20Sopenharmony_ci [CAMSS_VFE_RESET] = { 0x36a0 }, 25498c2ecf20Sopenharmony_ci [CAMSS_CSI_VFE0_RESET] = { 0x3700 }, 25508c2ecf20Sopenharmony_ci [CAMSS_CSI_VFE1_RESET] = { 0x3710 }, 25518c2ecf20Sopenharmony_ci [OXILI_RESET] = { 0x4020 }, 25528c2ecf20Sopenharmony_ci [OXILICX_RESET] = { 0x4030 }, 25538c2ecf20Sopenharmony_ci [OCMEMCX_RESET] = { 0x4050 }, 25548c2ecf20Sopenharmony_ci [MMSS_RBCRP_RESET] = { 0x4080 }, 25558c2ecf20Sopenharmony_ci [MMSSNOCAHB_RESET] = { 0x5020 }, 25568c2ecf20Sopenharmony_ci [MMSSNOCAXI_RESET] = { 0x5060 }, 25578c2ecf20Sopenharmony_ci [OCMEMNOC_RESET] = { 0x50b0 }, 25588c2ecf20Sopenharmony_ci}; 25598c2ecf20Sopenharmony_ci 25608c2ecf20Sopenharmony_cistatic struct gdsc *mmcc_msm8974_gdscs[] = { 25618c2ecf20Sopenharmony_ci [VENUS0_GDSC] = &venus0_gdsc, 25628c2ecf20Sopenharmony_ci [MDSS_GDSC] = &mdss_gdsc, 25638c2ecf20Sopenharmony_ci [CAMSS_JPEG_GDSC] = &camss_jpeg_gdsc, 25648c2ecf20Sopenharmony_ci [CAMSS_VFE_GDSC] = &camss_vfe_gdsc, 25658c2ecf20Sopenharmony_ci [OXILI_GDSC] = &oxili_gdsc, 25668c2ecf20Sopenharmony_ci [OXILICX_GDSC] = &oxilicx_gdsc, 25678c2ecf20Sopenharmony_ci}; 25688c2ecf20Sopenharmony_ci 25698c2ecf20Sopenharmony_cistatic const struct regmap_config mmcc_msm8974_regmap_config = { 25708c2ecf20Sopenharmony_ci .reg_bits = 32, 25718c2ecf20Sopenharmony_ci .reg_stride = 4, 25728c2ecf20Sopenharmony_ci .val_bits = 32, 25738c2ecf20Sopenharmony_ci .max_register = 0x5104, 25748c2ecf20Sopenharmony_ci .fast_io = true, 25758c2ecf20Sopenharmony_ci}; 25768c2ecf20Sopenharmony_ci 25778c2ecf20Sopenharmony_cistatic const struct qcom_cc_desc mmcc_msm8974_desc = { 25788c2ecf20Sopenharmony_ci .config = &mmcc_msm8974_regmap_config, 25798c2ecf20Sopenharmony_ci .clks = mmcc_msm8974_clocks, 25808c2ecf20Sopenharmony_ci .num_clks = ARRAY_SIZE(mmcc_msm8974_clocks), 25818c2ecf20Sopenharmony_ci .resets = mmcc_msm8974_resets, 25828c2ecf20Sopenharmony_ci .num_resets = ARRAY_SIZE(mmcc_msm8974_resets), 25838c2ecf20Sopenharmony_ci .gdscs = mmcc_msm8974_gdscs, 25848c2ecf20Sopenharmony_ci .num_gdscs = ARRAY_SIZE(mmcc_msm8974_gdscs), 25858c2ecf20Sopenharmony_ci}; 25868c2ecf20Sopenharmony_ci 25878c2ecf20Sopenharmony_cistatic const struct of_device_id mmcc_msm8974_match_table[] = { 25888c2ecf20Sopenharmony_ci { .compatible = "qcom,mmcc-msm8974" }, 25898c2ecf20Sopenharmony_ci { } 25908c2ecf20Sopenharmony_ci}; 25918c2ecf20Sopenharmony_ciMODULE_DEVICE_TABLE(of, mmcc_msm8974_match_table); 25928c2ecf20Sopenharmony_ci 25938c2ecf20Sopenharmony_cistatic int mmcc_msm8974_probe(struct platform_device *pdev) 25948c2ecf20Sopenharmony_ci{ 25958c2ecf20Sopenharmony_ci struct regmap *regmap; 25968c2ecf20Sopenharmony_ci 25978c2ecf20Sopenharmony_ci regmap = qcom_cc_map(pdev, &mmcc_msm8974_desc); 25988c2ecf20Sopenharmony_ci if (IS_ERR(regmap)) 25998c2ecf20Sopenharmony_ci return PTR_ERR(regmap); 26008c2ecf20Sopenharmony_ci 26018c2ecf20Sopenharmony_ci clk_pll_configure_sr_hpm_lp(&mmpll1, regmap, &mmpll1_config, true); 26028c2ecf20Sopenharmony_ci clk_pll_configure_sr_hpm_lp(&mmpll3, regmap, &mmpll3_config, false); 26038c2ecf20Sopenharmony_ci 26048c2ecf20Sopenharmony_ci return qcom_cc_really_probe(pdev, &mmcc_msm8974_desc, regmap); 26058c2ecf20Sopenharmony_ci} 26068c2ecf20Sopenharmony_ci 26078c2ecf20Sopenharmony_cistatic struct platform_driver mmcc_msm8974_driver = { 26088c2ecf20Sopenharmony_ci .probe = mmcc_msm8974_probe, 26098c2ecf20Sopenharmony_ci .driver = { 26108c2ecf20Sopenharmony_ci .name = "mmcc-msm8974", 26118c2ecf20Sopenharmony_ci .of_match_table = mmcc_msm8974_match_table, 26128c2ecf20Sopenharmony_ci }, 26138c2ecf20Sopenharmony_ci}; 26148c2ecf20Sopenharmony_cimodule_platform_driver(mmcc_msm8974_driver); 26158c2ecf20Sopenharmony_ci 26168c2ecf20Sopenharmony_ciMODULE_DESCRIPTION("QCOM MMCC MSM8974 Driver"); 26178c2ecf20Sopenharmony_ciMODULE_LICENSE("GPL v2"); 26188c2ecf20Sopenharmony_ciMODULE_ALIAS("platform:mmcc-msm8974"); 2619