162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (c) 2021, Konrad Dybcio <konrad.dybcio@somainline.org>
462306a36Sopenharmony_ci */
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci#include <linux/kernel.h>
762306a36Sopenharmony_ci#include <linux/bitops.h>
862306a36Sopenharmony_ci#include <linux/err.h>
962306a36Sopenharmony_ci#include <linux/platform_device.h>
1062306a36Sopenharmony_ci#include <linux/module.h>
1162306a36Sopenharmony_ci#include <linux/of.h>
1262306a36Sopenharmony_ci#include <linux/clk-provider.h>
1362306a36Sopenharmony_ci#include <linux/regmap.h>
1462306a36Sopenharmony_ci#include <linux/reset-controller.h>
1562306a36Sopenharmony_ci#include <linux/clk.h>
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci#include <dt-bindings/clock/qcom,mmcc-msm8994.h>
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci#include "common.h"
2062306a36Sopenharmony_ci#include "clk-regmap.h"
2162306a36Sopenharmony_ci#include "clk-regmap-divider.h"
2262306a36Sopenharmony_ci#include "clk-alpha-pll.h"
2362306a36Sopenharmony_ci#include "clk-rcg.h"
2462306a36Sopenharmony_ci#include "clk-branch.h"
2562306a36Sopenharmony_ci#include "reset.h"
2662306a36Sopenharmony_ci#include "gdsc.h"
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_cienum {
3062306a36Sopenharmony_ci	P_XO,
3162306a36Sopenharmony_ci	P_GPLL0,
3262306a36Sopenharmony_ci	P_MMPLL0,
3362306a36Sopenharmony_ci	P_MMPLL1,
3462306a36Sopenharmony_ci	P_MMPLL3,
3562306a36Sopenharmony_ci	P_MMPLL4,
3662306a36Sopenharmony_ci	P_MMPLL5, /* Is this one even used by anything? Downstream doesn't tell. */
3762306a36Sopenharmony_ci	P_DSI0PLL,
3862306a36Sopenharmony_ci	P_DSI1PLL,
3962306a36Sopenharmony_ci	P_DSI0PLL_BYTE,
4062306a36Sopenharmony_ci	P_DSI1PLL_BYTE,
4162306a36Sopenharmony_ci	P_HDMIPLL,
4262306a36Sopenharmony_ci};
4362306a36Sopenharmony_cistatic const struct parent_map mmcc_xo_gpll0_map[] = {
4462306a36Sopenharmony_ci	{ P_XO, 0 },
4562306a36Sopenharmony_ci	{ P_GPLL0, 5 }
4662306a36Sopenharmony_ci};
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_cistatic const struct clk_parent_data mmcc_xo_gpll0[] = {
4962306a36Sopenharmony_ci	{ .fw_name = "xo" },
5062306a36Sopenharmony_ci	{ .fw_name = "gpll0" },
5162306a36Sopenharmony_ci};
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_cistatic const struct parent_map mmss_xo_hdmi_map[] = {
5462306a36Sopenharmony_ci	{ P_XO, 0 },
5562306a36Sopenharmony_ci	{ P_HDMIPLL, 3 }
5662306a36Sopenharmony_ci};
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_cistatic const struct clk_parent_data mmss_xo_hdmi[] = {
5962306a36Sopenharmony_ci	{ .fw_name = "xo" },
6062306a36Sopenharmony_ci	{ .fw_name = "hdmipll" },
6162306a36Sopenharmony_ci};
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_cistatic const struct parent_map mmcc_xo_dsi0pll_dsi1pll_map[] = {
6462306a36Sopenharmony_ci	{ P_XO, 0 },
6562306a36Sopenharmony_ci	{ P_DSI0PLL, 1 },
6662306a36Sopenharmony_ci	{ P_DSI1PLL, 2 }
6762306a36Sopenharmony_ci};
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_cistatic const struct clk_parent_data mmcc_xo_dsi0pll_dsi1pll[] = {
7062306a36Sopenharmony_ci	{ .fw_name = "xo" },
7162306a36Sopenharmony_ci	{ .fw_name = "dsi0pll" },
7262306a36Sopenharmony_ci	{ .fw_name = "dsi1pll" },
7362306a36Sopenharmony_ci};
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_cistatic const struct parent_map mmcc_xo_dsibyte_map[] = {
7662306a36Sopenharmony_ci	{ P_XO, 0 },
7762306a36Sopenharmony_ci	{ P_DSI0PLL_BYTE, 1 },
7862306a36Sopenharmony_ci	{ P_DSI1PLL_BYTE, 2 }
7962306a36Sopenharmony_ci};
8062306a36Sopenharmony_ci
8162306a36Sopenharmony_cistatic const struct clk_parent_data mmcc_xo_dsibyte[] = {
8262306a36Sopenharmony_ci	{ .fw_name = "xo" },
8362306a36Sopenharmony_ci	{ .fw_name = "dsi0pllbyte" },
8462306a36Sopenharmony_ci	{ .fw_name = "dsi1pllbyte" },
8562306a36Sopenharmony_ci};
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_cistatic struct pll_vco mmpll_p_vco[] = {
8862306a36Sopenharmony_ci	{ 250000000, 500000000, 3 },
8962306a36Sopenharmony_ci	{ 500000000, 1000000000, 2 },
9062306a36Sopenharmony_ci	{ 1000000000, 1500000000, 1 },
9162306a36Sopenharmony_ci	{ 1500000000, 2000000000, 0 },
9262306a36Sopenharmony_ci};
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_cistatic struct pll_vco mmpll_t_vco[] = {
9562306a36Sopenharmony_ci	{ 500000000, 1500000000, 0 },
9662306a36Sopenharmony_ci};
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_cistatic const struct alpha_pll_config mmpll_p_config = {
9962306a36Sopenharmony_ci	.post_div_mask = 0xf00,
10062306a36Sopenharmony_ci};
10162306a36Sopenharmony_ci
10262306a36Sopenharmony_cistatic struct clk_alpha_pll mmpll0_early = {
10362306a36Sopenharmony_ci	.offset = 0x0,
10462306a36Sopenharmony_ci	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
10562306a36Sopenharmony_ci	.vco_table = mmpll_p_vco,
10662306a36Sopenharmony_ci	.num_vco = ARRAY_SIZE(mmpll_p_vco),
10762306a36Sopenharmony_ci	.clkr = {
10862306a36Sopenharmony_ci		.enable_reg = 0x100,
10962306a36Sopenharmony_ci		.enable_mask = BIT(0),
11062306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
11162306a36Sopenharmony_ci			.name = "mmpll0_early",
11262306a36Sopenharmony_ci			.parent_data = &(const struct clk_parent_data){
11362306a36Sopenharmony_ci				.fw_name = "xo",
11462306a36Sopenharmony_ci			},
11562306a36Sopenharmony_ci			.num_parents = 1,
11662306a36Sopenharmony_ci			.ops = &clk_alpha_pll_ops,
11762306a36Sopenharmony_ci		},
11862306a36Sopenharmony_ci	},
11962306a36Sopenharmony_ci};
12062306a36Sopenharmony_ci
12162306a36Sopenharmony_cistatic struct clk_alpha_pll_postdiv mmpll0 = {
12262306a36Sopenharmony_ci	.offset = 0x0,
12362306a36Sopenharmony_ci	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
12462306a36Sopenharmony_ci	.width = 4,
12562306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
12662306a36Sopenharmony_ci		.name = "mmpll0",
12762306a36Sopenharmony_ci		.parent_hws = (const struct clk_hw *[]){ &mmpll0_early.clkr.hw },
12862306a36Sopenharmony_ci		.num_parents = 1,
12962306a36Sopenharmony_ci		.ops = &clk_alpha_pll_postdiv_ops,
13062306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT,
13162306a36Sopenharmony_ci	},
13262306a36Sopenharmony_ci};
13362306a36Sopenharmony_ci
13462306a36Sopenharmony_cistatic struct clk_alpha_pll mmpll1_early = {
13562306a36Sopenharmony_ci	.offset = 0x30,
13662306a36Sopenharmony_ci	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
13762306a36Sopenharmony_ci	.vco_table = mmpll_p_vco,
13862306a36Sopenharmony_ci	.num_vco = ARRAY_SIZE(mmpll_p_vco),
13962306a36Sopenharmony_ci	.clkr = {
14062306a36Sopenharmony_ci		.enable_reg = 0x100,
14162306a36Sopenharmony_ci		.enable_mask = BIT(1),
14262306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
14362306a36Sopenharmony_ci			.name = "mmpll1_early",
14462306a36Sopenharmony_ci			.parent_data = &(const struct clk_parent_data){
14562306a36Sopenharmony_ci				.fw_name = "xo",
14662306a36Sopenharmony_ci			},
14762306a36Sopenharmony_ci			.num_parents = 1,
14862306a36Sopenharmony_ci			.ops = &clk_alpha_pll_ops,
14962306a36Sopenharmony_ci		}
15062306a36Sopenharmony_ci	},
15162306a36Sopenharmony_ci};
15262306a36Sopenharmony_ci
15362306a36Sopenharmony_cistatic struct clk_alpha_pll_postdiv mmpll1 = {
15462306a36Sopenharmony_ci	.offset = 0x30,
15562306a36Sopenharmony_ci	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
15662306a36Sopenharmony_ci	.width = 4,
15762306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
15862306a36Sopenharmony_ci		.name = "mmpll1",
15962306a36Sopenharmony_ci		.parent_hws = (const struct clk_hw *[]){ &mmpll1_early.clkr.hw },
16062306a36Sopenharmony_ci		.num_parents = 1,
16162306a36Sopenharmony_ci		.ops = &clk_alpha_pll_postdiv_ops,
16262306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT,
16362306a36Sopenharmony_ci	},
16462306a36Sopenharmony_ci};
16562306a36Sopenharmony_ci
16662306a36Sopenharmony_cistatic struct clk_alpha_pll mmpll3_early = {
16762306a36Sopenharmony_ci	.offset = 0x60,
16862306a36Sopenharmony_ci	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
16962306a36Sopenharmony_ci	.vco_table = mmpll_p_vco,
17062306a36Sopenharmony_ci	.num_vco = ARRAY_SIZE(mmpll_p_vco),
17162306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
17262306a36Sopenharmony_ci		.name = "mmpll3_early",
17362306a36Sopenharmony_ci		.parent_data = &(const struct clk_parent_data){
17462306a36Sopenharmony_ci				.fw_name = "xo",
17562306a36Sopenharmony_ci		},
17662306a36Sopenharmony_ci		.num_parents = 1,
17762306a36Sopenharmony_ci		.ops = &clk_alpha_pll_ops,
17862306a36Sopenharmony_ci	},
17962306a36Sopenharmony_ci};
18062306a36Sopenharmony_ci
18162306a36Sopenharmony_cistatic struct clk_alpha_pll_postdiv mmpll3 = {
18262306a36Sopenharmony_ci	.offset = 0x60,
18362306a36Sopenharmony_ci	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
18462306a36Sopenharmony_ci	.width = 4,
18562306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
18662306a36Sopenharmony_ci		.name = "mmpll3",
18762306a36Sopenharmony_ci		.parent_hws = (const struct clk_hw *[]){ &mmpll3_early.clkr.hw },
18862306a36Sopenharmony_ci		.num_parents = 1,
18962306a36Sopenharmony_ci		.ops = &clk_alpha_pll_postdiv_ops,
19062306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT,
19162306a36Sopenharmony_ci	},
19262306a36Sopenharmony_ci};
19362306a36Sopenharmony_ci
19462306a36Sopenharmony_cistatic struct clk_alpha_pll mmpll4_early = {
19562306a36Sopenharmony_ci	.offset = 0x90,
19662306a36Sopenharmony_ci	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
19762306a36Sopenharmony_ci	.vco_table = mmpll_t_vco,
19862306a36Sopenharmony_ci	.num_vco = ARRAY_SIZE(mmpll_t_vco),
19962306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
20062306a36Sopenharmony_ci		.name = "mmpll4_early",
20162306a36Sopenharmony_ci		.parent_data = &(const struct clk_parent_data){
20262306a36Sopenharmony_ci				.fw_name = "xo",
20362306a36Sopenharmony_ci		},
20462306a36Sopenharmony_ci		.num_parents = 1,
20562306a36Sopenharmony_ci		.ops = &clk_alpha_pll_ops,
20662306a36Sopenharmony_ci	},
20762306a36Sopenharmony_ci};
20862306a36Sopenharmony_ci
20962306a36Sopenharmony_cistatic struct clk_alpha_pll_postdiv mmpll4 = {
21062306a36Sopenharmony_ci	.offset = 0x90,
21162306a36Sopenharmony_ci	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
21262306a36Sopenharmony_ci	.width = 2,
21362306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
21462306a36Sopenharmony_ci		.name = "mmpll4",
21562306a36Sopenharmony_ci		.parent_hws = (const struct clk_hw *[]){ &mmpll4_early.clkr.hw },
21662306a36Sopenharmony_ci		.num_parents = 1,
21762306a36Sopenharmony_ci		.ops = &clk_alpha_pll_postdiv_ops,
21862306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT,
21962306a36Sopenharmony_ci	},
22062306a36Sopenharmony_ci};
22162306a36Sopenharmony_ci
22262306a36Sopenharmony_cistatic const struct parent_map mmcc_xo_gpll0_mmpll1_map[] = {
22362306a36Sopenharmony_ci	{ P_XO, 0 },
22462306a36Sopenharmony_ci	{ P_GPLL0, 5 },
22562306a36Sopenharmony_ci	{ P_MMPLL1, 2 }
22662306a36Sopenharmony_ci};
22762306a36Sopenharmony_ci
22862306a36Sopenharmony_cistatic const struct clk_parent_data mmcc_xo_gpll0_mmpll1[] = {
22962306a36Sopenharmony_ci	{ .fw_name = "xo" },
23062306a36Sopenharmony_ci	{ .fw_name = "gpll0" },
23162306a36Sopenharmony_ci	{ .hw = &mmpll1.clkr.hw },
23262306a36Sopenharmony_ci};
23362306a36Sopenharmony_ci
23462306a36Sopenharmony_cistatic const struct parent_map mmcc_xo_gpll0_mmpll0_map[] = {
23562306a36Sopenharmony_ci	{ P_XO, 0 },
23662306a36Sopenharmony_ci	{ P_GPLL0, 5 },
23762306a36Sopenharmony_ci	{ P_MMPLL0, 1 }
23862306a36Sopenharmony_ci};
23962306a36Sopenharmony_ci
24062306a36Sopenharmony_cistatic const struct clk_parent_data mmcc_xo_gpll0_mmpll0[] = {
24162306a36Sopenharmony_ci	{ .fw_name = "xo" },
24262306a36Sopenharmony_ci	{ .fw_name = "gpll0" },
24362306a36Sopenharmony_ci	{ .hw = &mmpll0.clkr.hw },
24462306a36Sopenharmony_ci};
24562306a36Sopenharmony_ci
24662306a36Sopenharmony_cistatic const struct parent_map mmcc_xo_gpll0_mmpll0_mmpll3_map[] = {
24762306a36Sopenharmony_ci	{ P_XO, 0 },
24862306a36Sopenharmony_ci	{ P_GPLL0, 5 },
24962306a36Sopenharmony_ci	{ P_MMPLL0, 1 },
25062306a36Sopenharmony_ci	{ P_MMPLL3, 3 }
25162306a36Sopenharmony_ci};
25262306a36Sopenharmony_ci
25362306a36Sopenharmony_cistatic const struct clk_parent_data mmcc_xo_gpll0_mmpll0_mmpll3[] = {
25462306a36Sopenharmony_ci	{ .fw_name = "xo" },
25562306a36Sopenharmony_ci	{ .fw_name = "gpll0" },
25662306a36Sopenharmony_ci	{ .hw = &mmpll0.clkr.hw },
25762306a36Sopenharmony_ci	{ .hw = &mmpll3.clkr.hw },
25862306a36Sopenharmony_ci};
25962306a36Sopenharmony_ci
26062306a36Sopenharmony_cistatic const struct parent_map mmcc_xo_gpll0_mmpll0_mmpll4_map[] = {
26162306a36Sopenharmony_ci	{ P_XO, 0 },
26262306a36Sopenharmony_ci	{ P_GPLL0, 5 },
26362306a36Sopenharmony_ci	{ P_MMPLL0, 1 },
26462306a36Sopenharmony_ci	{ P_MMPLL4, 3 }
26562306a36Sopenharmony_ci};
26662306a36Sopenharmony_ci
26762306a36Sopenharmony_cistatic const struct clk_parent_data mmcc_xo_gpll0_mmpll0_mmpll4[] = {
26862306a36Sopenharmony_ci	{ .fw_name = "xo" },
26962306a36Sopenharmony_ci	{ .fw_name = "gpll0" },
27062306a36Sopenharmony_ci	{ .hw = &mmpll0.clkr.hw },
27162306a36Sopenharmony_ci	{ .hw = &mmpll4.clkr.hw },
27262306a36Sopenharmony_ci};
27362306a36Sopenharmony_ci
27462306a36Sopenharmony_cistatic struct clk_alpha_pll mmpll5_early = {
27562306a36Sopenharmony_ci	.offset = 0xc0,
27662306a36Sopenharmony_ci	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
27762306a36Sopenharmony_ci	.vco_table = mmpll_p_vco,
27862306a36Sopenharmony_ci	.num_vco = ARRAY_SIZE(mmpll_p_vco),
27962306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
28062306a36Sopenharmony_ci		.name = "mmpll5_early",
28162306a36Sopenharmony_ci		.parent_data = &(const struct clk_parent_data){
28262306a36Sopenharmony_ci				.fw_name = "xo",
28362306a36Sopenharmony_ci		},
28462306a36Sopenharmony_ci		.num_parents = 1,
28562306a36Sopenharmony_ci		.ops = &clk_alpha_pll_ops,
28662306a36Sopenharmony_ci	},
28762306a36Sopenharmony_ci};
28862306a36Sopenharmony_ci
28962306a36Sopenharmony_cistatic struct clk_alpha_pll_postdiv mmpll5 = {
29062306a36Sopenharmony_ci	.offset = 0xc0,
29162306a36Sopenharmony_ci	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
29262306a36Sopenharmony_ci	.width = 4,
29362306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
29462306a36Sopenharmony_ci		.name = "mmpll5",
29562306a36Sopenharmony_ci		.parent_hws = (const struct clk_hw *[]){ &mmpll5_early.clkr.hw },
29662306a36Sopenharmony_ci		.num_parents = 1,
29762306a36Sopenharmony_ci		.ops = &clk_alpha_pll_postdiv_ops,
29862306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT,
29962306a36Sopenharmony_ci	},
30062306a36Sopenharmony_ci};
30162306a36Sopenharmony_ci
30262306a36Sopenharmony_cistatic const struct freq_tbl ftbl_ahb_clk_src[] = {
30362306a36Sopenharmony_ci	/* Note: There might be more frequencies desired here. */
30462306a36Sopenharmony_ci	F(19200000, P_XO, 1, 0, 0),
30562306a36Sopenharmony_ci	F(40000000, P_GPLL0, 15, 0, 0),
30662306a36Sopenharmony_ci	F(80000000, P_MMPLL0, 10, 0, 0),
30762306a36Sopenharmony_ci	{ }
30862306a36Sopenharmony_ci};
30962306a36Sopenharmony_ci
31062306a36Sopenharmony_cistatic struct clk_rcg2 ahb_clk_src = {
31162306a36Sopenharmony_ci	.cmd_rcgr = 0x5000,
31262306a36Sopenharmony_ci	.hid_width = 5,
31362306a36Sopenharmony_ci	.parent_map = mmcc_xo_gpll0_mmpll0_map,
31462306a36Sopenharmony_ci	.freq_tbl = ftbl_ahb_clk_src,
31562306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
31662306a36Sopenharmony_ci		.name = "ahb_clk_src",
31762306a36Sopenharmony_ci		.parent_data = mmcc_xo_gpll0_mmpll0,
31862306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_gpll0_mmpll0),
31962306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
32062306a36Sopenharmony_ci	},
32162306a36Sopenharmony_ci};
32262306a36Sopenharmony_ci
32362306a36Sopenharmony_cistatic const struct freq_tbl ftbl_axi_clk_src[] = {
32462306a36Sopenharmony_ci	F(75000000, P_GPLL0, 8, 0, 0),
32562306a36Sopenharmony_ci	F(150000000, P_GPLL0, 4, 0, 0),
32662306a36Sopenharmony_ci	F(333430000, P_MMPLL1, 3.5, 0, 0),
32762306a36Sopenharmony_ci	F(466800000, P_MMPLL1, 2.5, 0, 0),
32862306a36Sopenharmony_ci	{ }
32962306a36Sopenharmony_ci};
33062306a36Sopenharmony_ci
33162306a36Sopenharmony_cistatic const struct freq_tbl ftbl_axi_clk_src_8992[] = {
33262306a36Sopenharmony_ci	F(75000000, P_GPLL0, 8, 0, 0),
33362306a36Sopenharmony_ci	F(150000000, P_GPLL0, 4, 0, 0),
33462306a36Sopenharmony_ci	F(300000000, P_GPLL0, 2, 0, 0),
33562306a36Sopenharmony_ci	F(404000000, P_MMPLL1, 2, 0, 0),
33662306a36Sopenharmony_ci	{ }
33762306a36Sopenharmony_ci};
33862306a36Sopenharmony_ci
33962306a36Sopenharmony_cistatic struct clk_rcg2 axi_clk_src = {
34062306a36Sopenharmony_ci	.cmd_rcgr = 0x5040,
34162306a36Sopenharmony_ci	.hid_width = 5,
34262306a36Sopenharmony_ci	.parent_map = mmcc_xo_gpll0_mmpll1_map,
34362306a36Sopenharmony_ci	.freq_tbl = ftbl_axi_clk_src,
34462306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
34562306a36Sopenharmony_ci		.name = "axi_clk_src",
34662306a36Sopenharmony_ci		.parent_data = mmcc_xo_gpll0_mmpll1,
34762306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_gpll0_mmpll1),
34862306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
34962306a36Sopenharmony_ci	},
35062306a36Sopenharmony_ci};
35162306a36Sopenharmony_ci
35262306a36Sopenharmony_cistatic const struct freq_tbl ftbl_csi0_1_2_3_clk_src[] = {
35362306a36Sopenharmony_ci	F(100000000, P_GPLL0, 6, 0, 0),
35462306a36Sopenharmony_ci	F(240000000, P_GPLL0, 2.5, 0, 0),
35562306a36Sopenharmony_ci	F(266670000, P_MMPLL0, 3, 0, 0),
35662306a36Sopenharmony_ci	{ }
35762306a36Sopenharmony_ci};
35862306a36Sopenharmony_ci
35962306a36Sopenharmony_cistatic const struct freq_tbl ftbl_csi0_1_2_3_clk_src_8992[] = {
36062306a36Sopenharmony_ci	F(100000000, P_GPLL0, 6, 0, 0),
36162306a36Sopenharmony_ci	F(266670000, P_MMPLL0, 3, 0, 0),
36262306a36Sopenharmony_ci	{ }
36362306a36Sopenharmony_ci};
36462306a36Sopenharmony_ci
36562306a36Sopenharmony_cistatic struct clk_rcg2 csi0_clk_src = {
36662306a36Sopenharmony_ci	.cmd_rcgr = 0x3090,
36762306a36Sopenharmony_ci	.hid_width = 5,
36862306a36Sopenharmony_ci	.parent_map = mmcc_xo_gpll0_mmpll0_map,
36962306a36Sopenharmony_ci	.freq_tbl = ftbl_csi0_1_2_3_clk_src,
37062306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
37162306a36Sopenharmony_ci		.name = "csi0_clk_src",
37262306a36Sopenharmony_ci		.parent_data = mmcc_xo_gpll0_mmpll0,
37362306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_gpll0_mmpll0),
37462306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
37562306a36Sopenharmony_ci	},
37662306a36Sopenharmony_ci};
37762306a36Sopenharmony_ci
37862306a36Sopenharmony_cistatic const struct freq_tbl ftbl_vcodec0_clk_src[] = {
37962306a36Sopenharmony_ci	F(66670000, P_GPLL0, 9, 0, 0),
38062306a36Sopenharmony_ci	F(100000000, P_GPLL0, 6, 0, 0),
38162306a36Sopenharmony_ci	F(133330000, P_GPLL0, 4.5, 0, 0),
38262306a36Sopenharmony_ci	F(150000000, P_GPLL0, 4, 0, 0),
38362306a36Sopenharmony_ci	F(200000000, P_MMPLL0, 4, 0, 0),
38462306a36Sopenharmony_ci	F(240000000, P_GPLL0, 2.5, 0, 0),
38562306a36Sopenharmony_ci	F(266670000, P_MMPLL0, 3, 0, 0),
38662306a36Sopenharmony_ci	F(320000000, P_MMPLL0, 2.5, 0, 0),
38762306a36Sopenharmony_ci	F(510000000, P_MMPLL3, 2, 0, 0),
38862306a36Sopenharmony_ci	{ }
38962306a36Sopenharmony_ci};
39062306a36Sopenharmony_ci
39162306a36Sopenharmony_cistatic const struct freq_tbl ftbl_vcodec0_clk_src_8992[] = {
39262306a36Sopenharmony_ci	F(66670000, P_GPLL0, 9, 0, 0),
39362306a36Sopenharmony_ci	F(100000000, P_GPLL0, 6, 0, 0),
39462306a36Sopenharmony_ci	F(133330000, P_GPLL0, 4.5, 0, 0),
39562306a36Sopenharmony_ci	F(200000000, P_MMPLL0, 4, 0, 0),
39662306a36Sopenharmony_ci	F(320000000, P_MMPLL0, 2.5, 0, 0),
39762306a36Sopenharmony_ci	F(510000000, P_MMPLL3, 2, 0, 0),
39862306a36Sopenharmony_ci	{ }
39962306a36Sopenharmony_ci};
40062306a36Sopenharmony_ci
40162306a36Sopenharmony_cistatic struct clk_rcg2 vcodec0_clk_src = {
40262306a36Sopenharmony_ci	.cmd_rcgr = 0x1000,
40362306a36Sopenharmony_ci	.mnd_width = 8,
40462306a36Sopenharmony_ci	.hid_width = 5,
40562306a36Sopenharmony_ci	.parent_map = mmcc_xo_gpll0_mmpll0_mmpll3_map,
40662306a36Sopenharmony_ci	.freq_tbl = ftbl_vcodec0_clk_src,
40762306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
40862306a36Sopenharmony_ci		.name = "vcodec0_clk_src",
40962306a36Sopenharmony_ci		.parent_data = mmcc_xo_gpll0_mmpll0_mmpll3,
41062306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_gpll0_mmpll0_mmpll3),
41162306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
41262306a36Sopenharmony_ci	},
41362306a36Sopenharmony_ci};
41462306a36Sopenharmony_ci
41562306a36Sopenharmony_cistatic struct clk_rcg2 csi1_clk_src = {
41662306a36Sopenharmony_ci	.cmd_rcgr = 0x3100,
41762306a36Sopenharmony_ci	.hid_width = 5,
41862306a36Sopenharmony_ci	.parent_map = mmcc_xo_gpll0_mmpll0_map,
41962306a36Sopenharmony_ci	.freq_tbl = ftbl_csi0_1_2_3_clk_src,
42062306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
42162306a36Sopenharmony_ci		.name = "csi1_clk_src",
42262306a36Sopenharmony_ci		.parent_data = mmcc_xo_gpll0_mmpll0,
42362306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_gpll0_mmpll0),
42462306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
42562306a36Sopenharmony_ci	},
42662306a36Sopenharmony_ci};
42762306a36Sopenharmony_ci
42862306a36Sopenharmony_cistatic struct clk_rcg2 csi2_clk_src = {
42962306a36Sopenharmony_ci	.cmd_rcgr = 0x3160,
43062306a36Sopenharmony_ci	.hid_width = 5,
43162306a36Sopenharmony_ci	.parent_map = mmcc_xo_gpll0_mmpll0_map,
43262306a36Sopenharmony_ci	.freq_tbl = ftbl_csi0_1_2_3_clk_src,
43362306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
43462306a36Sopenharmony_ci		.name = "csi2_clk_src",
43562306a36Sopenharmony_ci		.parent_data = mmcc_xo_gpll0_mmpll0,
43662306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_gpll0_mmpll0),
43762306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
43862306a36Sopenharmony_ci	},
43962306a36Sopenharmony_ci};
44062306a36Sopenharmony_ci
44162306a36Sopenharmony_cistatic struct clk_rcg2 csi3_clk_src = {
44262306a36Sopenharmony_ci	.cmd_rcgr = 0x31c0,
44362306a36Sopenharmony_ci	.hid_width = 5,
44462306a36Sopenharmony_ci	.parent_map = mmcc_xo_gpll0_mmpll0_map,
44562306a36Sopenharmony_ci	.freq_tbl = ftbl_csi0_1_2_3_clk_src,
44662306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
44762306a36Sopenharmony_ci		.name = "csi3_clk_src",
44862306a36Sopenharmony_ci		.parent_data = mmcc_xo_gpll0_mmpll0,
44962306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_gpll0_mmpll0),
45062306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
45162306a36Sopenharmony_ci	},
45262306a36Sopenharmony_ci};
45362306a36Sopenharmony_ci
45462306a36Sopenharmony_cistatic const struct freq_tbl ftbl_vfe0_clk_src[] = {
45562306a36Sopenharmony_ci	F(80000000, P_GPLL0, 7.5, 0, 0),
45662306a36Sopenharmony_ci	F(100000000, P_GPLL0, 6, 0, 0),
45762306a36Sopenharmony_ci	F(200000000, P_GPLL0, 3, 0, 0),
45862306a36Sopenharmony_ci	F(320000000, P_MMPLL0, 2.5, 0, 0),
45962306a36Sopenharmony_ci	F(400000000, P_MMPLL0, 2, 0, 0),
46062306a36Sopenharmony_ci	F(480000000, P_MMPLL4, 2, 0, 0),
46162306a36Sopenharmony_ci	F(533330000, P_MMPLL0, 1.5, 0, 0),
46262306a36Sopenharmony_ci	F(600000000, P_GPLL0, 1, 0, 0),
46362306a36Sopenharmony_ci	{ }
46462306a36Sopenharmony_ci};
46562306a36Sopenharmony_ci
46662306a36Sopenharmony_cistatic const struct freq_tbl ftbl_vfe0_1_clk_src_8992[] = {
46762306a36Sopenharmony_ci	F(80000000, P_GPLL0, 7.5, 0, 0),
46862306a36Sopenharmony_ci	F(100000000, P_GPLL0, 6, 0, 0),
46962306a36Sopenharmony_ci	F(200000000, P_GPLL0, 3, 0, 0),
47062306a36Sopenharmony_ci	F(320000000, P_MMPLL0, 2.5, 0, 0),
47162306a36Sopenharmony_ci	F(480000000, P_MMPLL4, 2, 0, 0),
47262306a36Sopenharmony_ci	F(600000000, P_GPLL0, 1, 0, 0),
47362306a36Sopenharmony_ci	{ }
47462306a36Sopenharmony_ci};
47562306a36Sopenharmony_ci
47662306a36Sopenharmony_cistatic struct clk_rcg2 vfe0_clk_src = {
47762306a36Sopenharmony_ci	.cmd_rcgr = 0x3600,
47862306a36Sopenharmony_ci	.hid_width = 5,
47962306a36Sopenharmony_ci	.parent_map = mmcc_xo_gpll0_mmpll0_mmpll4_map,
48062306a36Sopenharmony_ci	.freq_tbl = ftbl_vfe0_clk_src,
48162306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
48262306a36Sopenharmony_ci		.name = "vfe0_clk_src",
48362306a36Sopenharmony_ci		.parent_data = mmcc_xo_gpll0_mmpll0_mmpll4,
48462306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_gpll0_mmpll0_mmpll4),
48562306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
48662306a36Sopenharmony_ci	},
48762306a36Sopenharmony_ci};
48862306a36Sopenharmony_ci
48962306a36Sopenharmony_cistatic const struct freq_tbl ftbl_vfe1_clk_src[] = {
49062306a36Sopenharmony_ci	F(80000000, P_GPLL0, 7.5, 0, 0),
49162306a36Sopenharmony_ci	F(100000000, P_GPLL0, 6, 0, 0),
49262306a36Sopenharmony_ci	F(200000000, P_GPLL0, 3, 0, 0),
49362306a36Sopenharmony_ci	F(320000000, P_MMPLL0, 2.5, 0, 0),
49462306a36Sopenharmony_ci	F(400000000, P_MMPLL0, 2, 0, 0),
49562306a36Sopenharmony_ci	F(533330000, P_MMPLL0, 1.5, 0, 0),
49662306a36Sopenharmony_ci	{ }
49762306a36Sopenharmony_ci};
49862306a36Sopenharmony_ci
49962306a36Sopenharmony_cistatic struct clk_rcg2 vfe1_clk_src = {
50062306a36Sopenharmony_ci	.cmd_rcgr = 0x3620,
50162306a36Sopenharmony_ci	.hid_width = 5,
50262306a36Sopenharmony_ci	.parent_map = mmcc_xo_gpll0_mmpll0_mmpll4_map,
50362306a36Sopenharmony_ci	.freq_tbl = ftbl_vfe1_clk_src,
50462306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
50562306a36Sopenharmony_ci		.name = "vfe1_clk_src",
50662306a36Sopenharmony_ci		.parent_data = mmcc_xo_gpll0_mmpll0_mmpll4,
50762306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_gpll0_mmpll0_mmpll4),
50862306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
50962306a36Sopenharmony_ci	},
51062306a36Sopenharmony_ci};
51162306a36Sopenharmony_ci
51262306a36Sopenharmony_cistatic const struct freq_tbl ftbl_cpp_clk_src[] = {
51362306a36Sopenharmony_ci	F(100000000, P_GPLL0, 6, 0, 0),
51462306a36Sopenharmony_ci	F(200000000, P_GPLL0, 3, 0, 0),
51562306a36Sopenharmony_ci	F(320000000, P_MMPLL0, 2.5, 0, 0),
51662306a36Sopenharmony_ci	F(480000000, P_MMPLL4, 2, 0, 0),
51762306a36Sopenharmony_ci	F(600000000, P_GPLL0, 1, 0, 0),
51862306a36Sopenharmony_ci	F(640000000, P_MMPLL4, 1.5, 0, 0),
51962306a36Sopenharmony_ci	{ }
52062306a36Sopenharmony_ci};
52162306a36Sopenharmony_ci
52262306a36Sopenharmony_cistatic const struct freq_tbl ftbl_cpp_clk_src_8992[] = {
52362306a36Sopenharmony_ci	F(100000000, P_GPLL0, 6, 0, 0),
52462306a36Sopenharmony_ci	F(200000000, P_GPLL0, 3, 0, 0),
52562306a36Sopenharmony_ci	F(320000000, P_MMPLL0, 2.5, 0, 0),
52662306a36Sopenharmony_ci	F(480000000, P_MMPLL4, 2, 0, 0),
52762306a36Sopenharmony_ci	F(640000000, P_MMPLL4, 1.5, 0, 0),
52862306a36Sopenharmony_ci	{ }
52962306a36Sopenharmony_ci};
53062306a36Sopenharmony_ci
53162306a36Sopenharmony_cistatic struct clk_rcg2 cpp_clk_src = {
53262306a36Sopenharmony_ci	.cmd_rcgr = 0x3640,
53362306a36Sopenharmony_ci	.hid_width = 5,
53462306a36Sopenharmony_ci	.parent_map = mmcc_xo_gpll0_mmpll0_mmpll4_map,
53562306a36Sopenharmony_ci	.freq_tbl = ftbl_cpp_clk_src,
53662306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
53762306a36Sopenharmony_ci		.name = "cpp_clk_src",
53862306a36Sopenharmony_ci		.parent_data = mmcc_xo_gpll0_mmpll0_mmpll4,
53962306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_gpll0_mmpll0_mmpll4),
54062306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
54162306a36Sopenharmony_ci	},
54262306a36Sopenharmony_ci};
54362306a36Sopenharmony_ci
54462306a36Sopenharmony_cistatic const struct freq_tbl ftbl_jpeg0_1_clk_src[] = {
54562306a36Sopenharmony_ci	F(75000000, P_GPLL0, 8, 0, 0),
54662306a36Sopenharmony_ci	F(150000000, P_GPLL0, 4, 0, 0),
54762306a36Sopenharmony_ci	F(228570000, P_MMPLL0, 3.5, 0, 0),
54862306a36Sopenharmony_ci	F(266670000, P_MMPLL0, 3, 0, 0),
54962306a36Sopenharmony_ci	F(320000000, P_MMPLL0, 2.5, 0, 0),
55062306a36Sopenharmony_ci	F(480000000, P_MMPLL4, 2, 0, 0),
55162306a36Sopenharmony_ci	{ }
55262306a36Sopenharmony_ci};
55362306a36Sopenharmony_ci
55462306a36Sopenharmony_cistatic struct clk_rcg2 jpeg1_clk_src = {
55562306a36Sopenharmony_ci	.cmd_rcgr = 0x3520,
55662306a36Sopenharmony_ci	.hid_width = 5,
55762306a36Sopenharmony_ci	.parent_map = mmcc_xo_gpll0_mmpll0_mmpll4_map,
55862306a36Sopenharmony_ci	.freq_tbl = ftbl_jpeg0_1_clk_src,
55962306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
56062306a36Sopenharmony_ci		.name = "jpeg1_clk_src",
56162306a36Sopenharmony_ci		.parent_data = mmcc_xo_gpll0_mmpll0_mmpll4,
56262306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_gpll0_mmpll0_mmpll4),
56362306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
56462306a36Sopenharmony_ci	},
56562306a36Sopenharmony_ci};
56662306a36Sopenharmony_ci
56762306a36Sopenharmony_cistatic const struct freq_tbl ftbl_jpeg2_clk_src[] = {
56862306a36Sopenharmony_ci	F(75000000, P_GPLL0, 8, 0, 0),
56962306a36Sopenharmony_ci	F(133330000, P_GPLL0, 4.5, 0, 0),
57062306a36Sopenharmony_ci	F(150000000, P_GPLL0, 4, 0, 0),
57162306a36Sopenharmony_ci	F(228570000, P_MMPLL0, 3.5, 0, 0),
57262306a36Sopenharmony_ci	F(266670000, P_MMPLL0, 3, 0, 0),
57362306a36Sopenharmony_ci	F(320000000, P_MMPLL0, 2.5, 0, 0),
57462306a36Sopenharmony_ci	{ }
57562306a36Sopenharmony_ci};
57662306a36Sopenharmony_ci
57762306a36Sopenharmony_cistatic struct clk_rcg2 jpeg2_clk_src = {
57862306a36Sopenharmony_ci	.cmd_rcgr = 0x3540,
57962306a36Sopenharmony_ci	.hid_width = 5,
58062306a36Sopenharmony_ci	.parent_map = mmcc_xo_gpll0_mmpll0_map,
58162306a36Sopenharmony_ci	.freq_tbl = ftbl_jpeg2_clk_src,
58262306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
58362306a36Sopenharmony_ci		.name = "jpeg2_clk_src",
58462306a36Sopenharmony_ci		.parent_data = mmcc_xo_gpll0_mmpll0,
58562306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_gpll0_mmpll0),
58662306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
58762306a36Sopenharmony_ci	},
58862306a36Sopenharmony_ci};
58962306a36Sopenharmony_ci
59062306a36Sopenharmony_cistatic const struct freq_tbl ftbl_csi2phytimer_clk_src[] = {
59162306a36Sopenharmony_ci	F(50000000, P_GPLL0, 12, 0, 0),
59262306a36Sopenharmony_ci	F(100000000, P_GPLL0, 6, 0, 0),
59362306a36Sopenharmony_ci	F(200000000, P_MMPLL0, 4, 0, 0),
59462306a36Sopenharmony_ci	{ }
59562306a36Sopenharmony_ci};
59662306a36Sopenharmony_ci
59762306a36Sopenharmony_cistatic struct clk_rcg2 csi2phytimer_clk_src = {
59862306a36Sopenharmony_ci	.cmd_rcgr = 0x3060,
59962306a36Sopenharmony_ci	.hid_width = 5,
60062306a36Sopenharmony_ci	.parent_map = mmcc_xo_gpll0_mmpll0_map,
60162306a36Sopenharmony_ci	.freq_tbl = ftbl_csi2phytimer_clk_src,
60262306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
60362306a36Sopenharmony_ci		.name = "csi2phytimer_clk_src",
60462306a36Sopenharmony_ci		.parent_data = mmcc_xo_gpll0_mmpll0,
60562306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_gpll0_mmpll0),
60662306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
60762306a36Sopenharmony_ci	},
60862306a36Sopenharmony_ci};
60962306a36Sopenharmony_ci
61062306a36Sopenharmony_cistatic const struct freq_tbl ftbl_fd_core_clk_src[] = {
61162306a36Sopenharmony_ci	F(60000000, P_GPLL0, 10, 0, 0),
61262306a36Sopenharmony_ci	F(200000000, P_GPLL0, 3, 0, 0),
61362306a36Sopenharmony_ci	F(320000000, P_MMPLL0, 2.5, 0, 0),
61462306a36Sopenharmony_ci	F(400000000, P_MMPLL0, 2, 0, 0),
61562306a36Sopenharmony_ci	{ }
61662306a36Sopenharmony_ci};
61762306a36Sopenharmony_ci
61862306a36Sopenharmony_cistatic struct clk_rcg2 fd_core_clk_src = {
61962306a36Sopenharmony_ci	.cmd_rcgr = 0x3b00,
62062306a36Sopenharmony_ci	.hid_width = 5,
62162306a36Sopenharmony_ci	.parent_map = mmcc_xo_gpll0_mmpll0_map,
62262306a36Sopenharmony_ci	.freq_tbl = ftbl_fd_core_clk_src,
62362306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
62462306a36Sopenharmony_ci		.name = "fd_core_clk_src",
62562306a36Sopenharmony_ci		.parent_data = mmcc_xo_gpll0_mmpll0,
62662306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_gpll0_mmpll0),
62762306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
62862306a36Sopenharmony_ci	},
62962306a36Sopenharmony_ci};
63062306a36Sopenharmony_ci
63162306a36Sopenharmony_cistatic const struct freq_tbl ftbl_mdp_clk_src[] = {
63262306a36Sopenharmony_ci	F(85710000, P_GPLL0, 7, 0, 0),
63362306a36Sopenharmony_ci	F(100000000, P_GPLL0, 6, 0, 0),
63462306a36Sopenharmony_ci	F(120000000, P_GPLL0, 5, 0, 0),
63562306a36Sopenharmony_ci	F(150000000, P_GPLL0, 4, 0, 0),
63662306a36Sopenharmony_ci	F(171430000, P_GPLL0, 3.5, 0, 0),
63762306a36Sopenharmony_ci	F(200000000, P_GPLL0, 3, 0, 0),
63862306a36Sopenharmony_ci	F(240000000, P_GPLL0, 2.5, 0, 0),
63962306a36Sopenharmony_ci	F(266670000, P_MMPLL0, 3, 0, 0),
64062306a36Sopenharmony_ci	F(300000000, P_GPLL0, 2, 0, 0),
64162306a36Sopenharmony_ci	F(320000000, P_MMPLL0, 2.5, 0, 0),
64262306a36Sopenharmony_ci	F(400000000, P_MMPLL0, 2, 0, 0),
64362306a36Sopenharmony_ci	{ }
64462306a36Sopenharmony_ci};
64562306a36Sopenharmony_ci
64662306a36Sopenharmony_cistatic const struct freq_tbl ftbl_mdp_clk_src_8992[] = {
64762306a36Sopenharmony_ci	F(85710000, P_GPLL0, 7, 0, 0),
64862306a36Sopenharmony_ci	F(171430000, P_GPLL0, 3.5, 0, 0),
64962306a36Sopenharmony_ci	F(200000000, P_GPLL0, 3, 0, 0),
65062306a36Sopenharmony_ci	F(240000000, P_GPLL0, 2.5, 0, 0),
65162306a36Sopenharmony_ci	F(266670000, P_MMPLL0, 3, 0, 0),
65262306a36Sopenharmony_ci	F(320000000, P_MMPLL0, 2.5, 0, 0),
65362306a36Sopenharmony_ci	F(400000000, P_MMPLL0, 2, 0, 0),
65462306a36Sopenharmony_ci	{ }
65562306a36Sopenharmony_ci};
65662306a36Sopenharmony_ci
65762306a36Sopenharmony_cistatic struct clk_rcg2 mdp_clk_src = {
65862306a36Sopenharmony_ci	.cmd_rcgr = 0x2040,
65962306a36Sopenharmony_ci	.hid_width = 5,
66062306a36Sopenharmony_ci	.parent_map = mmcc_xo_gpll0_mmpll0_map,
66162306a36Sopenharmony_ci	.freq_tbl = ftbl_mdp_clk_src,
66262306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
66362306a36Sopenharmony_ci		.name = "mdp_clk_src",
66462306a36Sopenharmony_ci		.parent_data = mmcc_xo_gpll0_mmpll0,
66562306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_gpll0_mmpll0),
66662306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
66762306a36Sopenharmony_ci	},
66862306a36Sopenharmony_ci};
66962306a36Sopenharmony_ci
67062306a36Sopenharmony_cistatic struct clk_rcg2 pclk0_clk_src = {
67162306a36Sopenharmony_ci	.cmd_rcgr = 0x2000,
67262306a36Sopenharmony_ci	.mnd_width = 8,
67362306a36Sopenharmony_ci	.hid_width = 5,
67462306a36Sopenharmony_ci	.parent_map = mmcc_xo_dsi0pll_dsi1pll_map,
67562306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
67662306a36Sopenharmony_ci		.name = "pclk0_clk_src",
67762306a36Sopenharmony_ci		.parent_data = mmcc_xo_dsi0pll_dsi1pll,
67862306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_dsi0pll_dsi1pll),
67962306a36Sopenharmony_ci		.ops = &clk_pixel_ops,
68062306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT | CLK_GET_RATE_NOCACHE,
68162306a36Sopenharmony_ci	},
68262306a36Sopenharmony_ci};
68362306a36Sopenharmony_ci
68462306a36Sopenharmony_cistatic struct clk_rcg2 pclk1_clk_src = {
68562306a36Sopenharmony_ci	.cmd_rcgr = 0x2020,
68662306a36Sopenharmony_ci	.mnd_width = 8,
68762306a36Sopenharmony_ci	.hid_width = 5,
68862306a36Sopenharmony_ci	.parent_map = mmcc_xo_dsi0pll_dsi1pll_map,
68962306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
69062306a36Sopenharmony_ci		.name = "pclk1_clk_src",
69162306a36Sopenharmony_ci		.parent_data = mmcc_xo_dsi0pll_dsi1pll,
69262306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_dsi0pll_dsi1pll),
69362306a36Sopenharmony_ci		.ops = &clk_pixel_ops,
69462306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT | CLK_GET_RATE_NOCACHE,
69562306a36Sopenharmony_ci	},
69662306a36Sopenharmony_ci};
69762306a36Sopenharmony_ci
69862306a36Sopenharmony_cistatic const struct freq_tbl ftbl_ocmemnoc_clk_src[] = {
69962306a36Sopenharmony_ci	F(19200000, P_XO, 1, 0, 0),
70062306a36Sopenharmony_ci	F(75000000, P_GPLL0, 8, 0, 0),
70162306a36Sopenharmony_ci	F(100000000, P_GPLL0, 6, 0, 0),
70262306a36Sopenharmony_ci	F(150000000, P_GPLL0, 4, 0, 0),
70362306a36Sopenharmony_ci	F(228570000, P_MMPLL0, 3.5, 0, 0),
70462306a36Sopenharmony_ci	F(266670000, P_MMPLL0, 3, 0, 0),
70562306a36Sopenharmony_ci	F(320000000, P_MMPLL0, 2.5, 0, 0),
70662306a36Sopenharmony_ci	F(400000000, P_MMPLL0, 2, 0, 0),
70762306a36Sopenharmony_ci	{ }
70862306a36Sopenharmony_ci};
70962306a36Sopenharmony_ci
71062306a36Sopenharmony_cistatic const struct freq_tbl ftbl_ocmemnoc_clk_src_8992[] = {
71162306a36Sopenharmony_ci	F(19200000, P_XO, 1, 0, 0),
71262306a36Sopenharmony_ci	F(75000000, P_GPLL0, 8, 0, 0),
71362306a36Sopenharmony_ci	F(100000000, P_GPLL0, 6, 0, 0),
71462306a36Sopenharmony_ci	F(150000000, P_GPLL0, 4, 0, 0),
71562306a36Sopenharmony_ci	F(320000000, P_MMPLL0, 2.5, 0, 0),
71662306a36Sopenharmony_ci	F(400000000, P_MMPLL0, 2, 0, 0),
71762306a36Sopenharmony_ci	{ }
71862306a36Sopenharmony_ci};
71962306a36Sopenharmony_ci
72062306a36Sopenharmony_cistatic struct clk_rcg2 ocmemnoc_clk_src = {
72162306a36Sopenharmony_ci	.cmd_rcgr = 0x5090,
72262306a36Sopenharmony_ci	.hid_width = 5,
72362306a36Sopenharmony_ci	.parent_map = mmcc_xo_gpll0_mmpll0_map,
72462306a36Sopenharmony_ci	.freq_tbl = ftbl_ocmemnoc_clk_src,
72562306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
72662306a36Sopenharmony_ci		.name = "ocmemnoc_clk_src",
72762306a36Sopenharmony_ci		.parent_data = mmcc_xo_gpll0_mmpll0,
72862306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_gpll0_mmpll0),
72962306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
73062306a36Sopenharmony_ci	},
73162306a36Sopenharmony_ci};
73262306a36Sopenharmony_ci
73362306a36Sopenharmony_cistatic const struct freq_tbl ftbl_cci_clk_src[] = {
73462306a36Sopenharmony_ci	F(19200000, P_XO, 1, 0, 0),
73562306a36Sopenharmony_ci	F(37500000, P_GPLL0, 16, 0, 0),
73662306a36Sopenharmony_ci	F(50000000, P_GPLL0, 12, 0, 0),
73762306a36Sopenharmony_ci	F(100000000, P_GPLL0, 6, 0, 0),
73862306a36Sopenharmony_ci	{ }
73962306a36Sopenharmony_ci};
74062306a36Sopenharmony_ci
74162306a36Sopenharmony_cistatic struct clk_rcg2 cci_clk_src = {
74262306a36Sopenharmony_ci	.cmd_rcgr = 0x3300,
74362306a36Sopenharmony_ci	.mnd_width = 8,
74462306a36Sopenharmony_ci	.hid_width = 5,
74562306a36Sopenharmony_ci	.parent_map = mmcc_xo_gpll0_map,
74662306a36Sopenharmony_ci	.freq_tbl = ftbl_cci_clk_src,
74762306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
74862306a36Sopenharmony_ci		.name = "cci_clk_src",
74962306a36Sopenharmony_ci		.parent_data = mmcc_xo_gpll0,
75062306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_gpll0),
75162306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
75262306a36Sopenharmony_ci	},
75362306a36Sopenharmony_ci};
75462306a36Sopenharmony_ci
75562306a36Sopenharmony_cistatic const struct freq_tbl ftbl_mmss_gp0_1_clk_src[] = {
75662306a36Sopenharmony_ci	F(10000, P_XO, 16, 10, 120),
75762306a36Sopenharmony_ci	F(24000, P_GPLL0, 16, 1, 50),
75862306a36Sopenharmony_ci	F(6000000, P_GPLL0, 10, 1, 10),
75962306a36Sopenharmony_ci	F(12000000, P_GPLL0, 10, 1, 5),
76062306a36Sopenharmony_ci	F(13000000, P_GPLL0, 4, 13, 150),
76162306a36Sopenharmony_ci	F(24000000, P_GPLL0, 5, 1, 5),
76262306a36Sopenharmony_ci	{ }
76362306a36Sopenharmony_ci};
76462306a36Sopenharmony_ci
76562306a36Sopenharmony_cistatic struct clk_rcg2 mmss_gp0_clk_src = {
76662306a36Sopenharmony_ci	.cmd_rcgr = 0x3420,
76762306a36Sopenharmony_ci	.mnd_width = 8,
76862306a36Sopenharmony_ci	.hid_width = 5,
76962306a36Sopenharmony_ci	.parent_map = mmcc_xo_gpll0_map,
77062306a36Sopenharmony_ci	.freq_tbl = ftbl_mmss_gp0_1_clk_src,
77162306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
77262306a36Sopenharmony_ci		.name = "mmss_gp0_clk_src",
77362306a36Sopenharmony_ci		.parent_data = mmcc_xo_gpll0,
77462306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_gpll0),
77562306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
77662306a36Sopenharmony_ci	},
77762306a36Sopenharmony_ci};
77862306a36Sopenharmony_ci
77962306a36Sopenharmony_cistatic struct clk_rcg2 mmss_gp1_clk_src = {
78062306a36Sopenharmony_ci	.cmd_rcgr = 0x3450,
78162306a36Sopenharmony_ci	.mnd_width = 8,
78262306a36Sopenharmony_ci	.hid_width = 5,
78362306a36Sopenharmony_ci	.parent_map = mmcc_xo_gpll0_map,
78462306a36Sopenharmony_ci	.freq_tbl = ftbl_mmss_gp0_1_clk_src,
78562306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
78662306a36Sopenharmony_ci		.name = "mmss_gp1_clk_src",
78762306a36Sopenharmony_ci		.parent_data = mmcc_xo_gpll0,
78862306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_gpll0),
78962306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
79062306a36Sopenharmony_ci	},
79162306a36Sopenharmony_ci};
79262306a36Sopenharmony_ci
79362306a36Sopenharmony_cistatic struct clk_rcg2 jpeg0_clk_src = {
79462306a36Sopenharmony_ci	.cmd_rcgr = 0x3500,
79562306a36Sopenharmony_ci	.hid_width = 5,
79662306a36Sopenharmony_ci	.parent_map = mmcc_xo_gpll0_mmpll0_mmpll4_map,
79762306a36Sopenharmony_ci	.freq_tbl = ftbl_jpeg0_1_clk_src,
79862306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
79962306a36Sopenharmony_ci		.name = "jpeg0_clk_src",
80062306a36Sopenharmony_ci		.parent_data = mmcc_xo_gpll0_mmpll0_mmpll4,
80162306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_gpll0_mmpll0_mmpll4),
80262306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
80362306a36Sopenharmony_ci	},
80462306a36Sopenharmony_ci};
80562306a36Sopenharmony_ci
80662306a36Sopenharmony_cistatic struct clk_rcg2 jpeg_dma_clk_src = {
80762306a36Sopenharmony_ci	.cmd_rcgr = 0x3560,
80862306a36Sopenharmony_ci	.hid_width = 5,
80962306a36Sopenharmony_ci	.parent_map = mmcc_xo_gpll0_mmpll0_mmpll4_map,
81062306a36Sopenharmony_ci	.freq_tbl = ftbl_jpeg0_1_clk_src,
81162306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
81262306a36Sopenharmony_ci		.name = "jpeg_dma_clk_src",
81362306a36Sopenharmony_ci		.parent_data = mmcc_xo_gpll0_mmpll0_mmpll4,
81462306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_gpll0_mmpll0_mmpll4),
81562306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
81662306a36Sopenharmony_ci	},
81762306a36Sopenharmony_ci};
81862306a36Sopenharmony_ci
81962306a36Sopenharmony_cistatic const struct freq_tbl ftbl_mclk0_1_2_3_clk_src[] = {
82062306a36Sopenharmony_ci	F(4800000, P_XO, 4, 0, 0),
82162306a36Sopenharmony_ci	F(6000000, P_GPLL0, 10, 1, 10),
82262306a36Sopenharmony_ci	F(8000000, P_GPLL0, 15, 1, 5),
82362306a36Sopenharmony_ci	F(9600000, P_XO, 2, 0, 0),
82462306a36Sopenharmony_ci	F(16000000, P_MMPLL0, 10, 1, 5),
82562306a36Sopenharmony_ci	F(19200000, P_XO, 1, 0, 0),
82662306a36Sopenharmony_ci	F(24000000, P_GPLL0, 5, 1, 5),
82762306a36Sopenharmony_ci	F(32000000, P_MMPLL0, 5, 1, 5),
82862306a36Sopenharmony_ci	F(48000000, P_GPLL0, 12.5, 0, 0),
82962306a36Sopenharmony_ci	F(64000000, P_MMPLL0, 12.5, 0, 0),
83062306a36Sopenharmony_ci	{ }
83162306a36Sopenharmony_ci};
83262306a36Sopenharmony_ci
83362306a36Sopenharmony_cistatic const struct freq_tbl ftbl_mclk0_clk_src_8992[] = {
83462306a36Sopenharmony_ci	F(4800000, P_XO, 4, 0, 0),
83562306a36Sopenharmony_ci	F(6000000, P_MMPLL4, 10, 1, 16),
83662306a36Sopenharmony_ci	F(8000000, P_MMPLL4, 10, 1, 12),
83762306a36Sopenharmony_ci	F(9600000, P_XO, 2, 0, 0),
83862306a36Sopenharmony_ci	F(12000000, P_MMPLL4, 10, 1, 8),
83962306a36Sopenharmony_ci	F(16000000, P_MMPLL4, 10, 1, 6),
84062306a36Sopenharmony_ci	F(19200000, P_XO, 1, 0, 0),
84162306a36Sopenharmony_ci	F(24000000, P_MMPLL4, 10, 1, 4),
84262306a36Sopenharmony_ci	F(32000000, P_MMPLL4, 10, 1, 3),
84362306a36Sopenharmony_ci	F(48000000, P_MMPLL4, 10, 1, 2),
84462306a36Sopenharmony_ci	F(64000000, P_MMPLL4, 15, 0, 0),
84562306a36Sopenharmony_ci	{ }
84662306a36Sopenharmony_ci};
84762306a36Sopenharmony_ci
84862306a36Sopenharmony_cistatic const struct freq_tbl ftbl_mclk1_2_3_clk_src_8992[] = {
84962306a36Sopenharmony_ci	F(4800000, P_XO, 4, 0, 0),
85062306a36Sopenharmony_ci	F(6000000, P_MMPLL4, 10, 1, 16),
85162306a36Sopenharmony_ci	F(8000000, P_MMPLL4, 10, 1, 12),
85262306a36Sopenharmony_ci	F(9600000, P_XO, 2, 0, 0),
85362306a36Sopenharmony_ci	F(16000000, P_MMPLL4, 10, 1, 6),
85462306a36Sopenharmony_ci	F(19200000, P_XO, 1, 0, 0),
85562306a36Sopenharmony_ci	F(24000000, P_MMPLL4, 10, 1, 4),
85662306a36Sopenharmony_ci	F(32000000, P_MMPLL4, 10, 1, 3),
85762306a36Sopenharmony_ci	F(48000000, P_MMPLL4, 10, 1, 2),
85862306a36Sopenharmony_ci	F(64000000, P_MMPLL4, 15, 0, 0),
85962306a36Sopenharmony_ci	{ }
86062306a36Sopenharmony_ci};
86162306a36Sopenharmony_ci
86262306a36Sopenharmony_cistatic struct clk_rcg2 mclk0_clk_src = {
86362306a36Sopenharmony_ci	.cmd_rcgr = 0x3360,
86462306a36Sopenharmony_ci	.mnd_width = 8,
86562306a36Sopenharmony_ci	.hid_width = 5,
86662306a36Sopenharmony_ci	.parent_map = mmcc_xo_gpll0_mmpll0_map,
86762306a36Sopenharmony_ci	.freq_tbl = ftbl_mclk0_1_2_3_clk_src,
86862306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
86962306a36Sopenharmony_ci		.name = "mclk0_clk_src",
87062306a36Sopenharmony_ci		.parent_data = mmcc_xo_gpll0_mmpll0,
87162306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_gpll0_mmpll0),
87262306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
87362306a36Sopenharmony_ci	},
87462306a36Sopenharmony_ci};
87562306a36Sopenharmony_ci
87662306a36Sopenharmony_cistatic struct clk_rcg2 mclk1_clk_src = {
87762306a36Sopenharmony_ci	.cmd_rcgr = 0x3390,
87862306a36Sopenharmony_ci	.mnd_width = 8,
87962306a36Sopenharmony_ci	.hid_width = 5,
88062306a36Sopenharmony_ci	.parent_map = mmcc_xo_gpll0_mmpll0_map,
88162306a36Sopenharmony_ci	.freq_tbl = ftbl_mclk0_1_2_3_clk_src,
88262306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
88362306a36Sopenharmony_ci		.name = "mclk1_clk_src",
88462306a36Sopenharmony_ci		.parent_data = mmcc_xo_gpll0_mmpll0,
88562306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_gpll0_mmpll0),
88662306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
88762306a36Sopenharmony_ci	},
88862306a36Sopenharmony_ci};
88962306a36Sopenharmony_ci
89062306a36Sopenharmony_cistatic struct clk_rcg2 mclk2_clk_src = {
89162306a36Sopenharmony_ci	.cmd_rcgr = 0x33c0,
89262306a36Sopenharmony_ci	.mnd_width = 8,
89362306a36Sopenharmony_ci	.hid_width = 5,
89462306a36Sopenharmony_ci	.parent_map = mmcc_xo_gpll0_mmpll0_map,
89562306a36Sopenharmony_ci	.freq_tbl = ftbl_mclk0_1_2_3_clk_src,
89662306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
89762306a36Sopenharmony_ci		.name = "mclk2_clk_src",
89862306a36Sopenharmony_ci		.parent_data = mmcc_xo_gpll0_mmpll0,
89962306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_gpll0_mmpll0),
90062306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
90162306a36Sopenharmony_ci	},
90262306a36Sopenharmony_ci};
90362306a36Sopenharmony_ci
90462306a36Sopenharmony_cistatic struct clk_rcg2 mclk3_clk_src = {
90562306a36Sopenharmony_ci	.cmd_rcgr = 0x33f0,
90662306a36Sopenharmony_ci	.mnd_width = 8,
90762306a36Sopenharmony_ci	.hid_width = 5,
90862306a36Sopenharmony_ci	.parent_map = mmcc_xo_gpll0_mmpll0_map,
90962306a36Sopenharmony_ci	.freq_tbl = ftbl_mclk0_1_2_3_clk_src,
91062306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
91162306a36Sopenharmony_ci		.name = "mclk3_clk_src",
91262306a36Sopenharmony_ci		.parent_data = mmcc_xo_gpll0_mmpll0,
91362306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_gpll0_mmpll0),
91462306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
91562306a36Sopenharmony_ci	},
91662306a36Sopenharmony_ci};
91762306a36Sopenharmony_ci
91862306a36Sopenharmony_cistatic const struct freq_tbl ftbl_csi0_1phytimer_clk_src[] = {
91962306a36Sopenharmony_ci	F(50000000, P_GPLL0, 12, 0, 0),
92062306a36Sopenharmony_ci	F(100000000, P_GPLL0, 6, 0, 0),
92162306a36Sopenharmony_ci	F(200000000, P_MMPLL0, 4, 0, 0),
92262306a36Sopenharmony_ci	{ }
92362306a36Sopenharmony_ci};
92462306a36Sopenharmony_ci
92562306a36Sopenharmony_cistatic struct clk_rcg2 csi0phytimer_clk_src = {
92662306a36Sopenharmony_ci	.cmd_rcgr = 0x3000,
92762306a36Sopenharmony_ci	.hid_width = 5,
92862306a36Sopenharmony_ci	.parent_map = mmcc_xo_gpll0_mmpll0_map,
92962306a36Sopenharmony_ci	.freq_tbl = ftbl_csi0_1phytimer_clk_src,
93062306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
93162306a36Sopenharmony_ci		.name = "csi0phytimer_clk_src",
93262306a36Sopenharmony_ci		.parent_data = mmcc_xo_gpll0_mmpll0,
93362306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_gpll0_mmpll0),
93462306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
93562306a36Sopenharmony_ci	},
93662306a36Sopenharmony_ci};
93762306a36Sopenharmony_ci
93862306a36Sopenharmony_cistatic struct clk_rcg2 csi1phytimer_clk_src = {
93962306a36Sopenharmony_ci	.cmd_rcgr = 0x3030,
94062306a36Sopenharmony_ci	.hid_width = 5,
94162306a36Sopenharmony_ci	.parent_map = mmcc_xo_gpll0_mmpll0_map,
94262306a36Sopenharmony_ci	.freq_tbl = ftbl_csi0_1phytimer_clk_src,
94362306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
94462306a36Sopenharmony_ci		.name = "csi1phytimer_clk_src",
94562306a36Sopenharmony_ci		.parent_data = mmcc_xo_gpll0_mmpll0,
94662306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_gpll0_mmpll0),
94762306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
94862306a36Sopenharmony_ci	},
94962306a36Sopenharmony_ci};
95062306a36Sopenharmony_ci
95162306a36Sopenharmony_cistatic struct clk_rcg2 byte0_clk_src = {
95262306a36Sopenharmony_ci	.cmd_rcgr = 0x2120,
95362306a36Sopenharmony_ci	.hid_width = 5,
95462306a36Sopenharmony_ci	.parent_map = mmcc_xo_dsibyte_map,
95562306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
95662306a36Sopenharmony_ci		.name = "byte0_clk_src",
95762306a36Sopenharmony_ci		.parent_data = mmcc_xo_dsibyte,
95862306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_dsibyte),
95962306a36Sopenharmony_ci		.ops = &clk_byte2_ops,
96062306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT | CLK_GET_RATE_NOCACHE,
96162306a36Sopenharmony_ci	},
96262306a36Sopenharmony_ci};
96362306a36Sopenharmony_ci
96462306a36Sopenharmony_cistatic struct clk_rcg2 byte1_clk_src = {
96562306a36Sopenharmony_ci	.cmd_rcgr = 0x2140,
96662306a36Sopenharmony_ci	.hid_width = 5,
96762306a36Sopenharmony_ci	.parent_map = mmcc_xo_dsibyte_map,
96862306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
96962306a36Sopenharmony_ci		.name = "byte1_clk_src",
97062306a36Sopenharmony_ci		.parent_data = mmcc_xo_dsibyte,
97162306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_dsibyte),
97262306a36Sopenharmony_ci		.ops = &clk_byte2_ops,
97362306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT | CLK_GET_RATE_NOCACHE,
97462306a36Sopenharmony_ci	},
97562306a36Sopenharmony_ci};
97662306a36Sopenharmony_ci
97762306a36Sopenharmony_cistatic struct freq_tbl ftbl_mdss_esc0_1_clk[] = {
97862306a36Sopenharmony_ci	F(19200000, P_XO, 1, 0, 0),
97962306a36Sopenharmony_ci	{ }
98062306a36Sopenharmony_ci};
98162306a36Sopenharmony_ci
98262306a36Sopenharmony_cistatic struct clk_rcg2 esc0_clk_src = {
98362306a36Sopenharmony_ci	.cmd_rcgr = 0x2160,
98462306a36Sopenharmony_ci	.hid_width = 5,
98562306a36Sopenharmony_ci	.parent_map = mmcc_xo_dsibyte_map,
98662306a36Sopenharmony_ci	.freq_tbl = ftbl_mdss_esc0_1_clk,
98762306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
98862306a36Sopenharmony_ci		.name = "esc0_clk_src",
98962306a36Sopenharmony_ci		.parent_data = mmcc_xo_dsibyte,
99062306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_dsibyte),
99162306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
99262306a36Sopenharmony_ci	},
99362306a36Sopenharmony_ci};
99462306a36Sopenharmony_ci
99562306a36Sopenharmony_cistatic struct clk_rcg2 esc1_clk_src = {
99662306a36Sopenharmony_ci	.cmd_rcgr = 0x2180,
99762306a36Sopenharmony_ci	.hid_width = 5,
99862306a36Sopenharmony_ci	.parent_map = mmcc_xo_dsibyte_map,
99962306a36Sopenharmony_ci	.freq_tbl = ftbl_mdss_esc0_1_clk,
100062306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
100162306a36Sopenharmony_ci		.name = "esc1_clk_src",
100262306a36Sopenharmony_ci		.parent_data = mmcc_xo_dsibyte,
100362306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_dsibyte),
100462306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
100562306a36Sopenharmony_ci	},
100662306a36Sopenharmony_ci};
100762306a36Sopenharmony_ci
100862306a36Sopenharmony_cistatic struct freq_tbl extpclk_freq_tbl[] = {
100962306a36Sopenharmony_ci	{ .src = P_HDMIPLL },
101062306a36Sopenharmony_ci	{ }
101162306a36Sopenharmony_ci};
101262306a36Sopenharmony_ci
101362306a36Sopenharmony_cistatic struct clk_rcg2 extpclk_clk_src = {
101462306a36Sopenharmony_ci	.cmd_rcgr = 0x2060,
101562306a36Sopenharmony_ci	.hid_width = 5,
101662306a36Sopenharmony_ci	.parent_map = mmss_xo_hdmi_map,
101762306a36Sopenharmony_ci	.freq_tbl = extpclk_freq_tbl,
101862306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
101962306a36Sopenharmony_ci		.name = "extpclk_clk_src",
102062306a36Sopenharmony_ci		.parent_data = mmss_xo_hdmi,
102162306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmss_xo_hdmi),
102262306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
102362306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT,
102462306a36Sopenharmony_ci	},
102562306a36Sopenharmony_ci};
102662306a36Sopenharmony_ci
102762306a36Sopenharmony_cistatic struct freq_tbl ftbl_hdmi_clk_src[] = {
102862306a36Sopenharmony_ci	F(19200000, P_XO, 1, 0, 0),
102962306a36Sopenharmony_ci	{ }
103062306a36Sopenharmony_ci};
103162306a36Sopenharmony_ci
103262306a36Sopenharmony_cistatic struct clk_rcg2 hdmi_clk_src = {
103362306a36Sopenharmony_ci	.cmd_rcgr = 0x2100,
103462306a36Sopenharmony_ci	.hid_width = 5,
103562306a36Sopenharmony_ci	.parent_map = mmcc_xo_gpll0_map,
103662306a36Sopenharmony_ci	.freq_tbl = ftbl_hdmi_clk_src,
103762306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
103862306a36Sopenharmony_ci		.name = "hdmi_clk_src",
103962306a36Sopenharmony_ci		.parent_data = mmcc_xo_gpll0,
104062306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_gpll0),
104162306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
104262306a36Sopenharmony_ci	},
104362306a36Sopenharmony_ci};
104462306a36Sopenharmony_ci
104562306a36Sopenharmony_cistatic struct freq_tbl ftbl_mdss_vsync_clk[] = {
104662306a36Sopenharmony_ci	F(19200000, P_XO, 1, 0, 0),
104762306a36Sopenharmony_ci	{ }
104862306a36Sopenharmony_ci};
104962306a36Sopenharmony_ci
105062306a36Sopenharmony_cistatic struct clk_rcg2 vsync_clk_src = {
105162306a36Sopenharmony_ci	.cmd_rcgr = 0x2080,
105262306a36Sopenharmony_ci	.hid_width = 5,
105362306a36Sopenharmony_ci	.parent_map = mmcc_xo_gpll0_map,
105462306a36Sopenharmony_ci	.freq_tbl = ftbl_mdss_vsync_clk,
105562306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
105662306a36Sopenharmony_ci		.name = "vsync_clk_src",
105762306a36Sopenharmony_ci		.parent_data = mmcc_xo_gpll0,
105862306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_gpll0),
105962306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
106062306a36Sopenharmony_ci	},
106162306a36Sopenharmony_ci};
106262306a36Sopenharmony_ci
106362306a36Sopenharmony_cistatic const struct freq_tbl ftbl_rbbmtimer_clk_src[] = {
106462306a36Sopenharmony_ci	F(19200000, P_XO, 1, 0, 0),
106562306a36Sopenharmony_ci	{ }
106662306a36Sopenharmony_ci};
106762306a36Sopenharmony_ci
106862306a36Sopenharmony_cistatic struct clk_rcg2 rbbmtimer_clk_src = {
106962306a36Sopenharmony_ci	.cmd_rcgr = 0x4090,
107062306a36Sopenharmony_ci	.hid_width = 5,
107162306a36Sopenharmony_ci	.parent_map = mmcc_xo_gpll0_map,
107262306a36Sopenharmony_ci	.freq_tbl = ftbl_rbbmtimer_clk_src,
107362306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
107462306a36Sopenharmony_ci		.name = "rbbmtimer_clk_src",
107562306a36Sopenharmony_ci		.parent_data = mmcc_xo_gpll0,
107662306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_gpll0),
107762306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
107862306a36Sopenharmony_ci	},
107962306a36Sopenharmony_ci};
108062306a36Sopenharmony_ci
108162306a36Sopenharmony_cistatic struct clk_branch camss_ahb_clk = {
108262306a36Sopenharmony_ci	.halt_reg = 0x348c,
108362306a36Sopenharmony_ci	.clkr = {
108462306a36Sopenharmony_ci		.enable_reg = 0x348c,
108562306a36Sopenharmony_ci		.enable_mask = BIT(0),
108662306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
108762306a36Sopenharmony_ci			.name = "camss_ahb_clk",
108862306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
108962306a36Sopenharmony_ci			.num_parents = 1,
109062306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
109162306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
109262306a36Sopenharmony_ci		},
109362306a36Sopenharmony_ci	},
109462306a36Sopenharmony_ci};
109562306a36Sopenharmony_ci
109662306a36Sopenharmony_cistatic struct clk_branch camss_cci_cci_ahb_clk = {
109762306a36Sopenharmony_ci	.halt_reg = 0x3348,
109862306a36Sopenharmony_ci	.clkr = {
109962306a36Sopenharmony_ci		.enable_reg = 0x3348,
110062306a36Sopenharmony_ci		.enable_mask = BIT(0),
110162306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
110262306a36Sopenharmony_ci			.name = "camss_cci_cci_ahb_clk",
110362306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
110462306a36Sopenharmony_ci			.num_parents = 1,
110562306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
110662306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
110762306a36Sopenharmony_ci		},
110862306a36Sopenharmony_ci	},
110962306a36Sopenharmony_ci};
111062306a36Sopenharmony_ci
111162306a36Sopenharmony_cistatic struct clk_branch camss_cci_cci_clk = {
111262306a36Sopenharmony_ci	.halt_reg = 0x3344,
111362306a36Sopenharmony_ci	.clkr = {
111462306a36Sopenharmony_ci		.enable_reg = 0x3344,
111562306a36Sopenharmony_ci		.enable_mask = BIT(0),
111662306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
111762306a36Sopenharmony_ci			.name = "camss_cci_cci_clk",
111862306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &cci_clk_src.clkr.hw },
111962306a36Sopenharmony_ci			.num_parents = 1,
112062306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
112162306a36Sopenharmony_ci		},
112262306a36Sopenharmony_ci	},
112362306a36Sopenharmony_ci};
112462306a36Sopenharmony_ci
112562306a36Sopenharmony_cistatic struct clk_branch camss_vfe_cpp_ahb_clk = {
112662306a36Sopenharmony_ci	.halt_reg = 0x36b4,
112762306a36Sopenharmony_ci	.clkr = {
112862306a36Sopenharmony_ci		.enable_reg = 0x36b4,
112962306a36Sopenharmony_ci		.enable_mask = BIT(0),
113062306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
113162306a36Sopenharmony_ci			.name = "camss_vfe_cpp_ahb_clk",
113262306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
113362306a36Sopenharmony_ci			.num_parents = 1,
113462306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
113562306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
113662306a36Sopenharmony_ci		},
113762306a36Sopenharmony_ci	},
113862306a36Sopenharmony_ci};
113962306a36Sopenharmony_ci
114062306a36Sopenharmony_cistatic struct clk_branch camss_vfe_cpp_axi_clk = {
114162306a36Sopenharmony_ci	.halt_reg = 0x36c4,
114262306a36Sopenharmony_ci	.clkr = {
114362306a36Sopenharmony_ci		.enable_reg = 0x36c4,
114462306a36Sopenharmony_ci		.enable_mask = BIT(0),
114562306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
114662306a36Sopenharmony_ci			.name = "camss_vfe_cpp_axi_clk",
114762306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &axi_clk_src.clkr.hw },
114862306a36Sopenharmony_ci			.num_parents = 1,
114962306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
115062306a36Sopenharmony_ci		},
115162306a36Sopenharmony_ci	},
115262306a36Sopenharmony_ci};
115362306a36Sopenharmony_ci
115462306a36Sopenharmony_cistatic struct clk_branch camss_vfe_cpp_clk = {
115562306a36Sopenharmony_ci	.halt_reg = 0x36b0,
115662306a36Sopenharmony_ci	.clkr = {
115762306a36Sopenharmony_ci		.enable_reg = 0x36b0,
115862306a36Sopenharmony_ci		.enable_mask = BIT(0),
115962306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
116062306a36Sopenharmony_ci			.name = "camss_vfe_cpp_clk",
116162306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &cpp_clk_src.clkr.hw },
116262306a36Sopenharmony_ci			.num_parents = 1,
116362306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
116462306a36Sopenharmony_ci		},
116562306a36Sopenharmony_ci	},
116662306a36Sopenharmony_ci};
116762306a36Sopenharmony_ci
116862306a36Sopenharmony_cistatic struct clk_branch camss_csi0_ahb_clk = {
116962306a36Sopenharmony_ci	.halt_reg = 0x30bc,
117062306a36Sopenharmony_ci	.clkr = {
117162306a36Sopenharmony_ci		.enable_reg = 0x30bc,
117262306a36Sopenharmony_ci		.enable_mask = BIT(0),
117362306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
117462306a36Sopenharmony_ci			.name = "camss_csi0_ahb_clk",
117562306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
117662306a36Sopenharmony_ci			.num_parents = 1,
117762306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
117862306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
117962306a36Sopenharmony_ci		},
118062306a36Sopenharmony_ci	},
118162306a36Sopenharmony_ci};
118262306a36Sopenharmony_ci
118362306a36Sopenharmony_cistatic struct clk_branch camss_csi0_clk = {
118462306a36Sopenharmony_ci	.halt_reg = 0x30b4,
118562306a36Sopenharmony_ci	.clkr = {
118662306a36Sopenharmony_ci		.enable_reg = 0x30b4,
118762306a36Sopenharmony_ci		.enable_mask = BIT(0),
118862306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
118962306a36Sopenharmony_ci			.name = "camss_csi0_clk",
119062306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csi0_clk_src.clkr.hw },
119162306a36Sopenharmony_ci			.num_parents = 1,
119262306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
119362306a36Sopenharmony_ci		},
119462306a36Sopenharmony_ci	},
119562306a36Sopenharmony_ci};
119662306a36Sopenharmony_ci
119762306a36Sopenharmony_cistatic struct clk_branch camss_csi0phy_clk = {
119862306a36Sopenharmony_ci	.halt_reg = 0x30c4,
119962306a36Sopenharmony_ci	.clkr = {
120062306a36Sopenharmony_ci		.enable_reg = 0x30c4,
120162306a36Sopenharmony_ci		.enable_mask = BIT(0),
120262306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
120362306a36Sopenharmony_ci			.name = "camss_csi0phy_clk",
120462306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csi0_clk_src.clkr.hw },
120562306a36Sopenharmony_ci			.num_parents = 1,
120662306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
120762306a36Sopenharmony_ci		},
120862306a36Sopenharmony_ci	},
120962306a36Sopenharmony_ci};
121062306a36Sopenharmony_ci
121162306a36Sopenharmony_cistatic struct clk_branch camss_csi0pix_clk = {
121262306a36Sopenharmony_ci	.halt_reg = 0x30e4,
121362306a36Sopenharmony_ci	.clkr = {
121462306a36Sopenharmony_ci		.enable_reg = 0x30e4,
121562306a36Sopenharmony_ci		.enable_mask = BIT(0),
121662306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
121762306a36Sopenharmony_ci			.name = "camss_csi0pix_clk",
121862306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csi0_clk_src.clkr.hw },
121962306a36Sopenharmony_ci			.num_parents = 1,
122062306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
122162306a36Sopenharmony_ci		},
122262306a36Sopenharmony_ci	},
122362306a36Sopenharmony_ci};
122462306a36Sopenharmony_ci
122562306a36Sopenharmony_cistatic struct clk_branch camss_csi0rdi_clk = {
122662306a36Sopenharmony_ci	.halt_reg = 0x30d4,
122762306a36Sopenharmony_ci	.clkr = {
122862306a36Sopenharmony_ci		.enable_reg = 0x30d4,
122962306a36Sopenharmony_ci		.enable_mask = BIT(0),
123062306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
123162306a36Sopenharmony_ci			.name = "camss_csi0rdi_clk",
123262306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csi0_clk_src.clkr.hw },
123362306a36Sopenharmony_ci			.num_parents = 1,
123462306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
123562306a36Sopenharmony_ci		},
123662306a36Sopenharmony_ci	},
123762306a36Sopenharmony_ci};
123862306a36Sopenharmony_ci
123962306a36Sopenharmony_cistatic struct clk_branch camss_csi1_ahb_clk = {
124062306a36Sopenharmony_ci	.halt_reg = 0x3128,
124162306a36Sopenharmony_ci	.clkr = {
124262306a36Sopenharmony_ci		.enable_reg = 0x3128,
124362306a36Sopenharmony_ci		.enable_mask = BIT(0),
124462306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
124562306a36Sopenharmony_ci			.name = "camss_csi1_ahb_clk",
124662306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
124762306a36Sopenharmony_ci			.num_parents = 1,
124862306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
124962306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
125062306a36Sopenharmony_ci		},
125162306a36Sopenharmony_ci	},
125262306a36Sopenharmony_ci};
125362306a36Sopenharmony_ci
125462306a36Sopenharmony_cistatic struct clk_branch camss_csi1_clk = {
125562306a36Sopenharmony_ci	.halt_reg = 0x3124,
125662306a36Sopenharmony_ci	.clkr = {
125762306a36Sopenharmony_ci		.enable_reg = 0x3124,
125862306a36Sopenharmony_ci		.enable_mask = BIT(0),
125962306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
126062306a36Sopenharmony_ci			.name = "camss_csi1_clk",
126162306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csi1_clk_src.clkr.hw },
126262306a36Sopenharmony_ci			.num_parents = 1,
126362306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
126462306a36Sopenharmony_ci		},
126562306a36Sopenharmony_ci	},
126662306a36Sopenharmony_ci};
126762306a36Sopenharmony_ci
126862306a36Sopenharmony_cistatic struct clk_branch camss_csi1phy_clk = {
126962306a36Sopenharmony_ci	.halt_reg = 0x3134,
127062306a36Sopenharmony_ci	.clkr = {
127162306a36Sopenharmony_ci		.enable_reg = 0x3134,
127262306a36Sopenharmony_ci		.enable_mask = BIT(0),
127362306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
127462306a36Sopenharmony_ci			.name = "camss_csi1phy_clk",
127562306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csi1_clk_src.clkr.hw },
127662306a36Sopenharmony_ci			.num_parents = 1,
127762306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
127862306a36Sopenharmony_ci		},
127962306a36Sopenharmony_ci	},
128062306a36Sopenharmony_ci};
128162306a36Sopenharmony_ci
128262306a36Sopenharmony_cistatic struct clk_branch camss_csi1pix_clk = {
128362306a36Sopenharmony_ci	.halt_reg = 0x3154,
128462306a36Sopenharmony_ci	.clkr = {
128562306a36Sopenharmony_ci		.enable_reg = 0x3154,
128662306a36Sopenharmony_ci		.enable_mask = BIT(0),
128762306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
128862306a36Sopenharmony_ci			.name = "camss_csi1pix_clk",
128962306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csi1_clk_src.clkr.hw },
129062306a36Sopenharmony_ci			.num_parents = 1,
129162306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
129262306a36Sopenharmony_ci		},
129362306a36Sopenharmony_ci	},
129462306a36Sopenharmony_ci};
129562306a36Sopenharmony_ci
129662306a36Sopenharmony_cistatic struct clk_branch camss_csi1rdi_clk = {
129762306a36Sopenharmony_ci	.halt_reg = 0x3144,
129862306a36Sopenharmony_ci	.clkr = {
129962306a36Sopenharmony_ci		.enable_reg = 0x3144,
130062306a36Sopenharmony_ci		.enable_mask = BIT(0),
130162306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
130262306a36Sopenharmony_ci			.name = "camss_csi1rdi_clk",
130362306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csi1_clk_src.clkr.hw },
130462306a36Sopenharmony_ci			.num_parents = 1,
130562306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
130662306a36Sopenharmony_ci		},
130762306a36Sopenharmony_ci	},
130862306a36Sopenharmony_ci};
130962306a36Sopenharmony_ci
131062306a36Sopenharmony_cistatic struct clk_branch camss_csi2_ahb_clk = {
131162306a36Sopenharmony_ci	.halt_reg = 0x3188,
131262306a36Sopenharmony_ci	.clkr = {
131362306a36Sopenharmony_ci		.enable_reg = 0x3188,
131462306a36Sopenharmony_ci		.enable_mask = BIT(0),
131562306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
131662306a36Sopenharmony_ci			.name = "camss_csi2_ahb_clk",
131762306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
131862306a36Sopenharmony_ci			.num_parents = 1,
131962306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
132062306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
132162306a36Sopenharmony_ci		},
132262306a36Sopenharmony_ci	},
132362306a36Sopenharmony_ci};
132462306a36Sopenharmony_ci
132562306a36Sopenharmony_cistatic struct clk_branch camss_csi2_clk = {
132662306a36Sopenharmony_ci	.halt_reg = 0x3184,
132762306a36Sopenharmony_ci	.clkr = {
132862306a36Sopenharmony_ci		.enable_reg = 0x3184,
132962306a36Sopenharmony_ci		.enable_mask = BIT(0),
133062306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
133162306a36Sopenharmony_ci			.name = "camss_csi2_clk",
133262306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csi1_clk_src.clkr.hw },
133362306a36Sopenharmony_ci			.num_parents = 1,
133462306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
133562306a36Sopenharmony_ci		},
133662306a36Sopenharmony_ci	},
133762306a36Sopenharmony_ci};
133862306a36Sopenharmony_ci
133962306a36Sopenharmony_cistatic struct clk_branch camss_csi2phy_clk = {
134062306a36Sopenharmony_ci	.halt_reg = 0x3194,
134162306a36Sopenharmony_ci	.clkr = {
134262306a36Sopenharmony_ci		.enable_reg = 0x3194,
134362306a36Sopenharmony_ci		.enable_mask = BIT(0),
134462306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
134562306a36Sopenharmony_ci			.name = "camss_csi2phy_clk",
134662306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csi1_clk_src.clkr.hw },
134762306a36Sopenharmony_ci			.num_parents = 1,
134862306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
134962306a36Sopenharmony_ci		},
135062306a36Sopenharmony_ci	},
135162306a36Sopenharmony_ci};
135262306a36Sopenharmony_ci
135362306a36Sopenharmony_cistatic struct clk_branch camss_csi2pix_clk = {
135462306a36Sopenharmony_ci	.halt_reg = 0x31b4,
135562306a36Sopenharmony_ci	.clkr = {
135662306a36Sopenharmony_ci		.enable_reg = 0x31b4,
135762306a36Sopenharmony_ci		.enable_mask = BIT(0),
135862306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
135962306a36Sopenharmony_ci			.name = "camss_csi2pix_clk",
136062306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csi1_clk_src.clkr.hw },
136162306a36Sopenharmony_ci			.num_parents = 1,
136262306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
136362306a36Sopenharmony_ci		},
136462306a36Sopenharmony_ci	},
136562306a36Sopenharmony_ci};
136662306a36Sopenharmony_ci
136762306a36Sopenharmony_cistatic struct clk_branch camss_csi2rdi_clk = {
136862306a36Sopenharmony_ci	.halt_reg = 0x31a4,
136962306a36Sopenharmony_ci	.clkr = {
137062306a36Sopenharmony_ci		.enable_reg = 0x31a4,
137162306a36Sopenharmony_ci		.enable_mask = BIT(0),
137262306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
137362306a36Sopenharmony_ci			.name = "camss_csi2rdi_clk",
137462306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csi1_clk_src.clkr.hw },
137562306a36Sopenharmony_ci			.num_parents = 1,
137662306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
137762306a36Sopenharmony_ci		},
137862306a36Sopenharmony_ci	},
137962306a36Sopenharmony_ci};
138062306a36Sopenharmony_ci
138162306a36Sopenharmony_cistatic struct clk_branch camss_csi3_ahb_clk = {
138262306a36Sopenharmony_ci	.halt_reg = 0x31e8,
138362306a36Sopenharmony_ci	.clkr = {
138462306a36Sopenharmony_ci		.enable_reg = 0x31e8,
138562306a36Sopenharmony_ci		.enable_mask = BIT(0),
138662306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
138762306a36Sopenharmony_ci			.name = "camss_csi3_ahb_clk",
138862306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
138962306a36Sopenharmony_ci			.num_parents = 1,
139062306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
139162306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
139262306a36Sopenharmony_ci		},
139362306a36Sopenharmony_ci	},
139462306a36Sopenharmony_ci};
139562306a36Sopenharmony_ci
139662306a36Sopenharmony_cistatic struct clk_branch camss_csi3_clk = {
139762306a36Sopenharmony_ci	.halt_reg = 0x31e4,
139862306a36Sopenharmony_ci	.clkr = {
139962306a36Sopenharmony_ci		.enable_reg = 0x31e4,
140062306a36Sopenharmony_ci		.enable_mask = BIT(0),
140162306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
140262306a36Sopenharmony_ci			.name = "camss_csi3_clk",
140362306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csi1_clk_src.clkr.hw },
140462306a36Sopenharmony_ci			.num_parents = 1,
140562306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
140662306a36Sopenharmony_ci		},
140762306a36Sopenharmony_ci	},
140862306a36Sopenharmony_ci};
140962306a36Sopenharmony_ci
141062306a36Sopenharmony_cistatic struct clk_branch camss_csi3phy_clk = {
141162306a36Sopenharmony_ci	.halt_reg = 0x31f4,
141262306a36Sopenharmony_ci	.clkr = {
141362306a36Sopenharmony_ci		.enable_reg = 0x31f4,
141462306a36Sopenharmony_ci		.enable_mask = BIT(0),
141562306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
141662306a36Sopenharmony_ci			.name = "camss_csi3phy_clk",
141762306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csi1_clk_src.clkr.hw },
141862306a36Sopenharmony_ci			.num_parents = 1,
141962306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
142062306a36Sopenharmony_ci		},
142162306a36Sopenharmony_ci	},
142262306a36Sopenharmony_ci};
142362306a36Sopenharmony_ci
142462306a36Sopenharmony_cistatic struct clk_branch camss_csi3pix_clk = {
142562306a36Sopenharmony_ci	.halt_reg = 0x3214,
142662306a36Sopenharmony_ci	.clkr = {
142762306a36Sopenharmony_ci		.enable_reg = 0x3214,
142862306a36Sopenharmony_ci		.enable_mask = BIT(0),
142962306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
143062306a36Sopenharmony_ci			.name = "camss_csi3pix_clk",
143162306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csi1_clk_src.clkr.hw },
143262306a36Sopenharmony_ci			.num_parents = 1,
143362306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
143462306a36Sopenharmony_ci		},
143562306a36Sopenharmony_ci	},
143662306a36Sopenharmony_ci};
143762306a36Sopenharmony_ci
143862306a36Sopenharmony_cistatic struct clk_branch camss_csi3rdi_clk = {
143962306a36Sopenharmony_ci	.halt_reg = 0x3204,
144062306a36Sopenharmony_ci	.clkr = {
144162306a36Sopenharmony_ci		.enable_reg = 0x3204,
144262306a36Sopenharmony_ci		.enable_mask = BIT(0),
144362306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
144462306a36Sopenharmony_ci			.name = "camss_csi3rdi_clk",
144562306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csi1_clk_src.clkr.hw },
144662306a36Sopenharmony_ci			.num_parents = 1,
144762306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
144862306a36Sopenharmony_ci		},
144962306a36Sopenharmony_ci	},
145062306a36Sopenharmony_ci};
145162306a36Sopenharmony_ci
145262306a36Sopenharmony_cistatic struct clk_branch camss_csi_vfe0_clk = {
145362306a36Sopenharmony_ci	.halt_reg = 0x3704,
145462306a36Sopenharmony_ci	.clkr = {
145562306a36Sopenharmony_ci		.enable_reg = 0x3704,
145662306a36Sopenharmony_ci		.enable_mask = BIT(0),
145762306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
145862306a36Sopenharmony_ci			.name = "camss_csi_vfe0_clk",
145962306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &vfe0_clk_src.clkr.hw },
146062306a36Sopenharmony_ci			.num_parents = 1,
146162306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
146262306a36Sopenharmony_ci		},
146362306a36Sopenharmony_ci	},
146462306a36Sopenharmony_ci};
146562306a36Sopenharmony_ci
146662306a36Sopenharmony_cistatic struct clk_branch camss_csi_vfe1_clk = {
146762306a36Sopenharmony_ci	.halt_reg = 0x3714,
146862306a36Sopenharmony_ci	.clkr = {
146962306a36Sopenharmony_ci		.enable_reg = 0x3714,
147062306a36Sopenharmony_ci		.enable_mask = BIT(0),
147162306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
147262306a36Sopenharmony_ci			.name = "camss_csi_vfe1_clk",
147362306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &vfe1_clk_src.clkr.hw },
147462306a36Sopenharmony_ci			.num_parents = 1,
147562306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
147662306a36Sopenharmony_ci		},
147762306a36Sopenharmony_ci	},
147862306a36Sopenharmony_ci};
147962306a36Sopenharmony_ci
148062306a36Sopenharmony_cistatic struct clk_branch camss_gp0_clk = {
148162306a36Sopenharmony_ci	.halt_reg = 0x3444,
148262306a36Sopenharmony_ci	.clkr = {
148362306a36Sopenharmony_ci		.enable_reg = 0x3444,
148462306a36Sopenharmony_ci		.enable_mask = BIT(0),
148562306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
148662306a36Sopenharmony_ci			.name = "camss_gp0_clk",
148762306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &mmss_gp0_clk_src.clkr.hw },
148862306a36Sopenharmony_ci			.num_parents = 1,
148962306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
149062306a36Sopenharmony_ci		},
149162306a36Sopenharmony_ci	},
149262306a36Sopenharmony_ci};
149362306a36Sopenharmony_ci
149462306a36Sopenharmony_cistatic struct clk_branch camss_gp1_clk = {
149562306a36Sopenharmony_ci	.halt_reg = 0x3474,
149662306a36Sopenharmony_ci	.clkr = {
149762306a36Sopenharmony_ci		.enable_reg = 0x3474,
149862306a36Sopenharmony_ci		.enable_mask = BIT(0),
149962306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
150062306a36Sopenharmony_ci			.name = "camss_gp1_clk",
150162306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &mmss_gp1_clk_src.clkr.hw },
150262306a36Sopenharmony_ci			.num_parents = 1,
150362306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
150462306a36Sopenharmony_ci		},
150562306a36Sopenharmony_ci	},
150662306a36Sopenharmony_ci};
150762306a36Sopenharmony_ci
150862306a36Sopenharmony_cistatic struct clk_branch camss_ispif_ahb_clk = {
150962306a36Sopenharmony_ci	.halt_reg = 0x3224,
151062306a36Sopenharmony_ci	.clkr = {
151162306a36Sopenharmony_ci		.enable_reg = 0x3224,
151262306a36Sopenharmony_ci		.enable_mask = BIT(0),
151362306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
151462306a36Sopenharmony_ci			.name = "camss_ispif_ahb_clk",
151562306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
151662306a36Sopenharmony_ci			.num_parents = 1,
151762306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
151862306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
151962306a36Sopenharmony_ci		},
152062306a36Sopenharmony_ci	},
152162306a36Sopenharmony_ci};
152262306a36Sopenharmony_ci
152362306a36Sopenharmony_cistatic struct clk_branch camss_jpeg_dma_clk = {
152462306a36Sopenharmony_ci	.halt_reg = 0x35c0,
152562306a36Sopenharmony_ci	.clkr = {
152662306a36Sopenharmony_ci		.enable_reg = 0x35c0,
152762306a36Sopenharmony_ci		.enable_mask = BIT(0),
152862306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
152962306a36Sopenharmony_ci			.name = "camss_jpeg_dma_clk",
153062306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &jpeg_dma_clk_src.clkr.hw },
153162306a36Sopenharmony_ci			.num_parents = 1,
153262306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
153362306a36Sopenharmony_ci		},
153462306a36Sopenharmony_ci	},
153562306a36Sopenharmony_ci};
153662306a36Sopenharmony_ci
153762306a36Sopenharmony_cistatic struct clk_branch camss_jpeg_jpeg0_clk = {
153862306a36Sopenharmony_ci	.halt_reg = 0x35a8,
153962306a36Sopenharmony_ci	.clkr = {
154062306a36Sopenharmony_ci		.enable_reg = 0x35a8,
154162306a36Sopenharmony_ci		.enable_mask = BIT(0),
154262306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
154362306a36Sopenharmony_ci			.name = "camss_jpeg_jpeg0_clk",
154462306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &jpeg0_clk_src.clkr.hw },
154562306a36Sopenharmony_ci			.num_parents = 1,
154662306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
154762306a36Sopenharmony_ci		},
154862306a36Sopenharmony_ci	},
154962306a36Sopenharmony_ci};
155062306a36Sopenharmony_ci
155162306a36Sopenharmony_cistatic struct clk_branch camss_jpeg_jpeg1_clk = {
155262306a36Sopenharmony_ci	.halt_reg = 0x35ac,
155362306a36Sopenharmony_ci	.clkr = {
155462306a36Sopenharmony_ci		.enable_reg = 0x35ac,
155562306a36Sopenharmony_ci		.enable_mask = BIT(0),
155662306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
155762306a36Sopenharmony_ci			.name = "camss_jpeg_jpeg1_clk",
155862306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &jpeg1_clk_src.clkr.hw },
155962306a36Sopenharmony_ci			.num_parents = 1,
156062306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
156162306a36Sopenharmony_ci		},
156262306a36Sopenharmony_ci	},
156362306a36Sopenharmony_ci};
156462306a36Sopenharmony_ci
156562306a36Sopenharmony_cistatic struct clk_branch camss_jpeg_jpeg2_clk = {
156662306a36Sopenharmony_ci	.halt_reg = 0x35b0,
156762306a36Sopenharmony_ci	.clkr = {
156862306a36Sopenharmony_ci		.enable_reg = 0x35b0,
156962306a36Sopenharmony_ci		.enable_mask = BIT(0),
157062306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
157162306a36Sopenharmony_ci			.name = "camss_jpeg_jpeg2_clk",
157262306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &jpeg2_clk_src.clkr.hw },
157362306a36Sopenharmony_ci			.num_parents = 1,
157462306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
157562306a36Sopenharmony_ci		},
157662306a36Sopenharmony_ci	},
157762306a36Sopenharmony_ci};
157862306a36Sopenharmony_ci
157962306a36Sopenharmony_cistatic struct clk_branch camss_jpeg_jpeg_ahb_clk = {
158062306a36Sopenharmony_ci	.halt_reg = 0x35b4,
158162306a36Sopenharmony_ci	.clkr = {
158262306a36Sopenharmony_ci		.enable_reg = 0x35b4,
158362306a36Sopenharmony_ci		.enable_mask = BIT(0),
158462306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
158562306a36Sopenharmony_ci			.name = "camss_jpeg_jpeg_ahb_clk",
158662306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
158762306a36Sopenharmony_ci			.num_parents = 1,
158862306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
158962306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
159062306a36Sopenharmony_ci		},
159162306a36Sopenharmony_ci	},
159262306a36Sopenharmony_ci};
159362306a36Sopenharmony_ci
159462306a36Sopenharmony_cistatic struct clk_branch camss_jpeg_jpeg_axi_clk = {
159562306a36Sopenharmony_ci	.halt_reg = 0x35b8,
159662306a36Sopenharmony_ci	.clkr = {
159762306a36Sopenharmony_ci		.enable_reg = 0x35b8,
159862306a36Sopenharmony_ci		.enable_mask = BIT(0),
159962306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
160062306a36Sopenharmony_ci			.name = "camss_jpeg_jpeg_axi_clk",
160162306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &axi_clk_src.clkr.hw },
160262306a36Sopenharmony_ci			.num_parents = 1,
160362306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
160462306a36Sopenharmony_ci		},
160562306a36Sopenharmony_ci	},
160662306a36Sopenharmony_ci};
160762306a36Sopenharmony_ci
160862306a36Sopenharmony_cistatic struct clk_branch camss_mclk0_clk = {
160962306a36Sopenharmony_ci	.halt_reg = 0x3384,
161062306a36Sopenharmony_ci	.clkr = {
161162306a36Sopenharmony_ci		.enable_reg = 0x3384,
161262306a36Sopenharmony_ci		.enable_mask = BIT(0),
161362306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
161462306a36Sopenharmony_ci			.name = "camss_mclk0_clk",
161562306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &mclk0_clk_src.clkr.hw },
161662306a36Sopenharmony_ci			.num_parents = 1,
161762306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
161862306a36Sopenharmony_ci		},
161962306a36Sopenharmony_ci	},
162062306a36Sopenharmony_ci};
162162306a36Sopenharmony_ci
162262306a36Sopenharmony_cistatic struct clk_branch camss_mclk1_clk = {
162362306a36Sopenharmony_ci	.halt_reg = 0x33b4,
162462306a36Sopenharmony_ci	.clkr = {
162562306a36Sopenharmony_ci		.enable_reg = 0x33b4,
162662306a36Sopenharmony_ci		.enable_mask = BIT(0),
162762306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
162862306a36Sopenharmony_ci			.name = "camss_mclk1_clk",
162962306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &mclk1_clk_src.clkr.hw },
163062306a36Sopenharmony_ci			.num_parents = 1,
163162306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
163262306a36Sopenharmony_ci		},
163362306a36Sopenharmony_ci	},
163462306a36Sopenharmony_ci};
163562306a36Sopenharmony_ci
163662306a36Sopenharmony_cistatic struct clk_branch camss_mclk2_clk = {
163762306a36Sopenharmony_ci	.halt_reg = 0x33e4,
163862306a36Sopenharmony_ci	.clkr = {
163962306a36Sopenharmony_ci		.enable_reg = 0x33e4,
164062306a36Sopenharmony_ci		.enable_mask = BIT(0),
164162306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
164262306a36Sopenharmony_ci			.name = "camss_mclk2_clk",
164362306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &mclk2_clk_src.clkr.hw },
164462306a36Sopenharmony_ci			.num_parents = 1,
164562306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
164662306a36Sopenharmony_ci		},
164762306a36Sopenharmony_ci	},
164862306a36Sopenharmony_ci};
164962306a36Sopenharmony_ci
165062306a36Sopenharmony_cistatic struct clk_branch camss_mclk3_clk = {
165162306a36Sopenharmony_ci	.halt_reg = 0x3414,
165262306a36Sopenharmony_ci	.clkr = {
165362306a36Sopenharmony_ci		.enable_reg = 0x3414,
165462306a36Sopenharmony_ci		.enable_mask = BIT(0),
165562306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
165662306a36Sopenharmony_ci			.name = "camss_mclk3_clk",
165762306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &mclk3_clk_src.clkr.hw },
165862306a36Sopenharmony_ci			.num_parents = 1,
165962306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
166062306a36Sopenharmony_ci		},
166162306a36Sopenharmony_ci	},
166262306a36Sopenharmony_ci};
166362306a36Sopenharmony_ci
166462306a36Sopenharmony_cistatic struct clk_branch camss_micro_ahb_clk = {
166562306a36Sopenharmony_ci	.halt_reg = 0x3494,
166662306a36Sopenharmony_ci	.clkr = {
166762306a36Sopenharmony_ci		.enable_reg = 0x3494,
166862306a36Sopenharmony_ci		.enable_mask = BIT(0),
166962306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
167062306a36Sopenharmony_ci			.name = "camss_micro_ahb_clk",
167162306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
167262306a36Sopenharmony_ci			.num_parents = 1,
167362306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
167462306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
167562306a36Sopenharmony_ci		},
167662306a36Sopenharmony_ci	},
167762306a36Sopenharmony_ci};
167862306a36Sopenharmony_ci
167962306a36Sopenharmony_cistatic struct clk_branch camss_phy0_csi0phytimer_clk = {
168062306a36Sopenharmony_ci	.halt_reg = 0x3024,
168162306a36Sopenharmony_ci	.clkr = {
168262306a36Sopenharmony_ci		.enable_reg = 0x3024,
168362306a36Sopenharmony_ci		.enable_mask = BIT(0),
168462306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
168562306a36Sopenharmony_ci			.name = "camss_phy0_csi0phytimer_clk",
168662306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csi0phytimer_clk_src.clkr.hw },
168762306a36Sopenharmony_ci			.num_parents = 1,
168862306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
168962306a36Sopenharmony_ci		},
169062306a36Sopenharmony_ci	},
169162306a36Sopenharmony_ci};
169262306a36Sopenharmony_ci
169362306a36Sopenharmony_cistatic struct clk_branch camss_phy1_csi1phytimer_clk = {
169462306a36Sopenharmony_ci	.halt_reg = 0x3054,
169562306a36Sopenharmony_ci	.clkr = {
169662306a36Sopenharmony_ci		.enable_reg = 0x3054,
169762306a36Sopenharmony_ci		.enable_mask = BIT(0),
169862306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
169962306a36Sopenharmony_ci			.name = "camss_phy1_csi1phytimer_clk",
170062306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csi1phytimer_clk_src.clkr.hw },
170162306a36Sopenharmony_ci			.num_parents = 1,
170262306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
170362306a36Sopenharmony_ci		},
170462306a36Sopenharmony_ci	},
170562306a36Sopenharmony_ci};
170662306a36Sopenharmony_ci
170762306a36Sopenharmony_cistatic struct clk_branch camss_phy2_csi2phytimer_clk = {
170862306a36Sopenharmony_ci	.halt_reg = 0x3084,
170962306a36Sopenharmony_ci	.clkr = {
171062306a36Sopenharmony_ci		.enable_reg = 0x3084,
171162306a36Sopenharmony_ci		.enable_mask = BIT(0),
171262306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
171362306a36Sopenharmony_ci			.name = "camss_phy2_csi2phytimer_clk",
171462306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csi2phytimer_clk_src.clkr.hw },
171562306a36Sopenharmony_ci			.num_parents = 1,
171662306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
171762306a36Sopenharmony_ci		},
171862306a36Sopenharmony_ci	},
171962306a36Sopenharmony_ci};
172062306a36Sopenharmony_ci
172162306a36Sopenharmony_cistatic struct clk_branch camss_top_ahb_clk = {
172262306a36Sopenharmony_ci	.halt_reg = 0x3484,
172362306a36Sopenharmony_ci	.clkr = {
172462306a36Sopenharmony_ci		.enable_reg = 0x3484,
172562306a36Sopenharmony_ci		.enable_mask = BIT(0),
172662306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
172762306a36Sopenharmony_ci			.name = "camss_top_ahb_clk",
172862306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
172962306a36Sopenharmony_ci			.num_parents = 1,
173062306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
173162306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
173262306a36Sopenharmony_ci		},
173362306a36Sopenharmony_ci	},
173462306a36Sopenharmony_ci};
173562306a36Sopenharmony_ci
173662306a36Sopenharmony_cistatic struct clk_branch camss_vfe_vfe0_clk = {
173762306a36Sopenharmony_ci	.halt_reg = 0x36a8,
173862306a36Sopenharmony_ci	.clkr = {
173962306a36Sopenharmony_ci		.enable_reg = 0x36a8,
174062306a36Sopenharmony_ci		.enable_mask = BIT(0),
174162306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
174262306a36Sopenharmony_ci			.name = "camss_vfe_vfe0_clk",
174362306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &vfe0_clk_src.clkr.hw },
174462306a36Sopenharmony_ci			.num_parents = 1,
174562306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
174662306a36Sopenharmony_ci		},
174762306a36Sopenharmony_ci	},
174862306a36Sopenharmony_ci};
174962306a36Sopenharmony_ci
175062306a36Sopenharmony_cistatic struct clk_branch camss_vfe_vfe1_clk = {
175162306a36Sopenharmony_ci	.halt_reg = 0x36ac,
175262306a36Sopenharmony_ci	.clkr = {
175362306a36Sopenharmony_ci		.enable_reg = 0x36ac,
175462306a36Sopenharmony_ci		.enable_mask = BIT(0),
175562306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
175662306a36Sopenharmony_ci			.name = "camss_vfe_vfe1_clk",
175762306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &vfe1_clk_src.clkr.hw },
175862306a36Sopenharmony_ci			.num_parents = 1,
175962306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
176062306a36Sopenharmony_ci		},
176162306a36Sopenharmony_ci	},
176262306a36Sopenharmony_ci};
176362306a36Sopenharmony_ci
176462306a36Sopenharmony_cistatic struct clk_branch camss_vfe_vfe_ahb_clk = {
176562306a36Sopenharmony_ci	.halt_reg = 0x36b8,
176662306a36Sopenharmony_ci	.clkr = {
176762306a36Sopenharmony_ci		.enable_reg = 0x36b8,
176862306a36Sopenharmony_ci		.enable_mask = BIT(0),
176962306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
177062306a36Sopenharmony_ci			.name = "camss_vfe_vfe_ahb_clk",
177162306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
177262306a36Sopenharmony_ci			.num_parents = 1,
177362306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
177462306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
177562306a36Sopenharmony_ci		},
177662306a36Sopenharmony_ci	},
177762306a36Sopenharmony_ci};
177862306a36Sopenharmony_ci
177962306a36Sopenharmony_cistatic struct clk_branch camss_vfe_vfe_axi_clk = {
178062306a36Sopenharmony_ci	.halt_reg = 0x36bc,
178162306a36Sopenharmony_ci	.clkr = {
178262306a36Sopenharmony_ci		.enable_reg = 0x36bc,
178362306a36Sopenharmony_ci		.enable_mask = BIT(0),
178462306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
178562306a36Sopenharmony_ci			.name = "camss_vfe_vfe_axi_clk",
178662306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &axi_clk_src.clkr.hw },
178762306a36Sopenharmony_ci			.num_parents = 1,
178862306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
178962306a36Sopenharmony_ci		},
179062306a36Sopenharmony_ci	},
179162306a36Sopenharmony_ci};
179262306a36Sopenharmony_ci
179362306a36Sopenharmony_cistatic struct clk_branch fd_ahb_clk = {
179462306a36Sopenharmony_ci	.halt_reg = 0x3b74,
179562306a36Sopenharmony_ci	.clkr = {
179662306a36Sopenharmony_ci		.enable_reg = 0x3b74,
179762306a36Sopenharmony_ci		.enable_mask = BIT(0),
179862306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
179962306a36Sopenharmony_ci			.name = "fd_ahb_clk",
180062306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
180162306a36Sopenharmony_ci			.num_parents = 1,
180262306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
180362306a36Sopenharmony_ci		},
180462306a36Sopenharmony_ci	},
180562306a36Sopenharmony_ci};
180662306a36Sopenharmony_ci
180762306a36Sopenharmony_cistatic struct clk_branch fd_axi_clk = {
180862306a36Sopenharmony_ci	.halt_reg = 0x3b70,
180962306a36Sopenharmony_ci	.clkr = {
181062306a36Sopenharmony_ci		.enable_reg = 0x3b70,
181162306a36Sopenharmony_ci		.enable_mask = BIT(0),
181262306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
181362306a36Sopenharmony_ci			.name = "fd_axi_clk",
181462306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &axi_clk_src.clkr.hw },
181562306a36Sopenharmony_ci			.num_parents = 1,
181662306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
181762306a36Sopenharmony_ci		},
181862306a36Sopenharmony_ci	},
181962306a36Sopenharmony_ci};
182062306a36Sopenharmony_ci
182162306a36Sopenharmony_cistatic struct clk_branch fd_core_clk = {
182262306a36Sopenharmony_ci	.halt_reg = 0x3b68,
182362306a36Sopenharmony_ci	.clkr = {
182462306a36Sopenharmony_ci		.enable_reg = 0x3b68,
182562306a36Sopenharmony_ci		.enable_mask = BIT(0),
182662306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
182762306a36Sopenharmony_ci			.name = "fd_core_clk",
182862306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &fd_core_clk_src.clkr.hw },
182962306a36Sopenharmony_ci			.num_parents = 1,
183062306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
183162306a36Sopenharmony_ci		},
183262306a36Sopenharmony_ci	},
183362306a36Sopenharmony_ci};
183462306a36Sopenharmony_ci
183562306a36Sopenharmony_cistatic struct clk_branch fd_core_uar_clk = {
183662306a36Sopenharmony_ci	.halt_reg = 0x3b6c,
183762306a36Sopenharmony_ci	.clkr = {
183862306a36Sopenharmony_ci		.enable_reg = 0x3b6c,
183962306a36Sopenharmony_ci		.enable_mask = BIT(0),
184062306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
184162306a36Sopenharmony_ci			.name = "fd_core_uar_clk",
184262306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &fd_core_clk_src.clkr.hw },
184362306a36Sopenharmony_ci			.num_parents = 1,
184462306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
184562306a36Sopenharmony_ci		},
184662306a36Sopenharmony_ci	},
184762306a36Sopenharmony_ci};
184862306a36Sopenharmony_ci
184962306a36Sopenharmony_cistatic struct clk_branch mdss_ahb_clk = {
185062306a36Sopenharmony_ci	.halt_reg = 0x2308,
185162306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
185262306a36Sopenharmony_ci	.clkr = {
185362306a36Sopenharmony_ci		.enable_reg = 0x2308,
185462306a36Sopenharmony_ci		.enable_mask = BIT(0),
185562306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
185662306a36Sopenharmony_ci			.name = "mdss_ahb_clk",
185762306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
185862306a36Sopenharmony_ci			.num_parents = 1,
185962306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
186062306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
186162306a36Sopenharmony_ci		},
186262306a36Sopenharmony_ci	},
186362306a36Sopenharmony_ci};
186462306a36Sopenharmony_ci
186562306a36Sopenharmony_cistatic struct clk_branch mdss_axi_clk = {
186662306a36Sopenharmony_ci	.halt_reg = 0x2310,
186762306a36Sopenharmony_ci	.clkr = {
186862306a36Sopenharmony_ci		.enable_reg = 0x2310,
186962306a36Sopenharmony_ci		.enable_mask = BIT(0),
187062306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
187162306a36Sopenharmony_ci			.name = "mdss_axi_clk",
187262306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &axi_clk_src.clkr.hw },
187362306a36Sopenharmony_ci			.num_parents = 1,
187462306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
187562306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
187662306a36Sopenharmony_ci		},
187762306a36Sopenharmony_ci	},
187862306a36Sopenharmony_ci};
187962306a36Sopenharmony_ci
188062306a36Sopenharmony_cistatic struct clk_branch mdss_byte0_clk = {
188162306a36Sopenharmony_ci	.halt_reg = 0x233c,
188262306a36Sopenharmony_ci	.clkr = {
188362306a36Sopenharmony_ci		.enable_reg = 0x233c,
188462306a36Sopenharmony_ci		.enable_mask = BIT(0),
188562306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
188662306a36Sopenharmony_ci			.name = "mdss_byte0_clk",
188762306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &byte0_clk_src.clkr.hw },
188862306a36Sopenharmony_ci			.num_parents = 1,
188962306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
189062306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
189162306a36Sopenharmony_ci		},
189262306a36Sopenharmony_ci	},
189362306a36Sopenharmony_ci};
189462306a36Sopenharmony_ci
189562306a36Sopenharmony_cistatic struct clk_branch mdss_byte1_clk = {
189662306a36Sopenharmony_ci	.halt_reg = 0x2340,
189762306a36Sopenharmony_ci	.clkr = {
189862306a36Sopenharmony_ci		.enable_reg = 0x2340,
189962306a36Sopenharmony_ci		.enable_mask = BIT(0),
190062306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
190162306a36Sopenharmony_ci			.name = "mdss_byte1_clk",
190262306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &byte1_clk_src.clkr.hw },
190362306a36Sopenharmony_ci			.num_parents = 1,
190462306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
190562306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
190662306a36Sopenharmony_ci		},
190762306a36Sopenharmony_ci	},
190862306a36Sopenharmony_ci};
190962306a36Sopenharmony_ci
191062306a36Sopenharmony_cistatic struct clk_branch mdss_esc0_clk = {
191162306a36Sopenharmony_ci	.halt_reg = 0x2344,
191262306a36Sopenharmony_ci	.clkr = {
191362306a36Sopenharmony_ci		.enable_reg = 0x2344,
191462306a36Sopenharmony_ci		.enable_mask = BIT(0),
191562306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
191662306a36Sopenharmony_ci			.name = "mdss_esc0_clk",
191762306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &esc0_clk_src.clkr.hw },
191862306a36Sopenharmony_ci			.num_parents = 1,
191962306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
192062306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
192162306a36Sopenharmony_ci		},
192262306a36Sopenharmony_ci	},
192362306a36Sopenharmony_ci};
192462306a36Sopenharmony_ci
192562306a36Sopenharmony_cistatic struct clk_branch mdss_esc1_clk = {
192662306a36Sopenharmony_ci	.halt_reg = 0x2348,
192762306a36Sopenharmony_ci	.clkr = {
192862306a36Sopenharmony_ci		.enable_reg = 0x2348,
192962306a36Sopenharmony_ci		.enable_mask = BIT(0),
193062306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
193162306a36Sopenharmony_ci			.name = "mdss_esc1_clk",
193262306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &esc1_clk_src.clkr.hw },
193362306a36Sopenharmony_ci			.num_parents = 1,
193462306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
193562306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
193662306a36Sopenharmony_ci		},
193762306a36Sopenharmony_ci	},
193862306a36Sopenharmony_ci};
193962306a36Sopenharmony_ci
194062306a36Sopenharmony_cistatic struct clk_branch mdss_extpclk_clk = {
194162306a36Sopenharmony_ci	.halt_reg = 0x2324,
194262306a36Sopenharmony_ci	.clkr = {
194362306a36Sopenharmony_ci		.enable_reg = 0x2324,
194462306a36Sopenharmony_ci		.enable_mask = BIT(0),
194562306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
194662306a36Sopenharmony_ci			.name = "mdss_extpclk_clk",
194762306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &extpclk_clk_src.clkr.hw },
194862306a36Sopenharmony_ci			.num_parents = 1,
194962306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
195062306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
195162306a36Sopenharmony_ci		},
195262306a36Sopenharmony_ci	},
195362306a36Sopenharmony_ci};
195462306a36Sopenharmony_ci
195562306a36Sopenharmony_cistatic struct clk_branch mdss_hdmi_ahb_clk = {
195662306a36Sopenharmony_ci	.halt_reg = 0x230c,
195762306a36Sopenharmony_ci	.clkr = {
195862306a36Sopenharmony_ci		.enable_reg = 0x230c,
195962306a36Sopenharmony_ci		.enable_mask = BIT(0),
196062306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
196162306a36Sopenharmony_ci			.name = "mdss_hdmi_ahb_clk",
196262306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
196362306a36Sopenharmony_ci			.num_parents = 1,
196462306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
196562306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
196662306a36Sopenharmony_ci		},
196762306a36Sopenharmony_ci	},
196862306a36Sopenharmony_ci};
196962306a36Sopenharmony_ci
197062306a36Sopenharmony_cistatic struct clk_branch mdss_hdmi_clk = {
197162306a36Sopenharmony_ci	.halt_reg = 0x2338,
197262306a36Sopenharmony_ci	.clkr = {
197362306a36Sopenharmony_ci		.enable_reg = 0x2338,
197462306a36Sopenharmony_ci		.enable_mask = BIT(0),
197562306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
197662306a36Sopenharmony_ci			.name = "mdss_hdmi_clk",
197762306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &hdmi_clk_src.clkr.hw },
197862306a36Sopenharmony_ci			.num_parents = 1,
197962306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
198062306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
198162306a36Sopenharmony_ci		},
198262306a36Sopenharmony_ci	},
198362306a36Sopenharmony_ci};
198462306a36Sopenharmony_ci
198562306a36Sopenharmony_cistatic struct clk_branch mdss_mdp_clk = {
198662306a36Sopenharmony_ci	.halt_reg = 0x231c,
198762306a36Sopenharmony_ci	.clkr = {
198862306a36Sopenharmony_ci		.enable_reg = 0x231c,
198962306a36Sopenharmony_ci		.enable_mask = BIT(0),
199062306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
199162306a36Sopenharmony_ci			.name = "mdss_mdp_clk",
199262306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &mdp_clk_src.clkr.hw },
199362306a36Sopenharmony_ci			.num_parents = 1,
199462306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
199562306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
199662306a36Sopenharmony_ci		},
199762306a36Sopenharmony_ci	},
199862306a36Sopenharmony_ci};
199962306a36Sopenharmony_ci
200062306a36Sopenharmony_cistatic struct clk_branch mdss_pclk0_clk = {
200162306a36Sopenharmony_ci	.halt_reg = 0x2314,
200262306a36Sopenharmony_ci	.clkr = {
200362306a36Sopenharmony_ci		.enable_reg = 0x2314,
200462306a36Sopenharmony_ci		.enable_mask = BIT(0),
200562306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
200662306a36Sopenharmony_ci			.name = "mdss_pclk0_clk",
200762306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &pclk0_clk_src.clkr.hw },
200862306a36Sopenharmony_ci			.num_parents = 1,
200962306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
201062306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
201162306a36Sopenharmony_ci		},
201262306a36Sopenharmony_ci	},
201362306a36Sopenharmony_ci};
201462306a36Sopenharmony_ci
201562306a36Sopenharmony_cistatic struct clk_branch mdss_pclk1_clk = {
201662306a36Sopenharmony_ci	.halt_reg = 0x2318,
201762306a36Sopenharmony_ci	.clkr = {
201862306a36Sopenharmony_ci		.enable_reg = 0x2318,
201962306a36Sopenharmony_ci		.enable_mask = BIT(0),
202062306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
202162306a36Sopenharmony_ci			.name = "mdss_pclk1_clk",
202262306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &pclk1_clk_src.clkr.hw },
202362306a36Sopenharmony_ci			.num_parents = 1,
202462306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
202562306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
202662306a36Sopenharmony_ci		},
202762306a36Sopenharmony_ci	},
202862306a36Sopenharmony_ci};
202962306a36Sopenharmony_ci
203062306a36Sopenharmony_cistatic struct clk_branch mdss_vsync_clk = {
203162306a36Sopenharmony_ci	.halt_reg = 0x2328,
203262306a36Sopenharmony_ci	.clkr = {
203362306a36Sopenharmony_ci		.enable_reg = 0x2328,
203462306a36Sopenharmony_ci		.enable_mask = BIT(0),
203562306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
203662306a36Sopenharmony_ci			.name = "mdss_vsync_clk",
203762306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &vsync_clk_src.clkr.hw },
203862306a36Sopenharmony_ci			.num_parents = 1,
203962306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
204062306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
204162306a36Sopenharmony_ci		},
204262306a36Sopenharmony_ci	},
204362306a36Sopenharmony_ci};
204462306a36Sopenharmony_ci
204562306a36Sopenharmony_cistatic struct clk_branch mmss_misc_ahb_clk = {
204662306a36Sopenharmony_ci	.halt_reg = 0x502c,
204762306a36Sopenharmony_ci	.clkr = {
204862306a36Sopenharmony_ci		.enable_reg = 0x502c,
204962306a36Sopenharmony_ci		.enable_mask = BIT(0),
205062306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
205162306a36Sopenharmony_ci			.name = "mmss_misc_ahb_clk",
205262306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
205362306a36Sopenharmony_ci			.num_parents = 1,
205462306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
205562306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
205662306a36Sopenharmony_ci		},
205762306a36Sopenharmony_ci	},
205862306a36Sopenharmony_ci};
205962306a36Sopenharmony_ci
206062306a36Sopenharmony_cistatic struct clk_branch mmss_mmssnoc_axi_clk = {
206162306a36Sopenharmony_ci	.halt_reg = 0x506c,
206262306a36Sopenharmony_ci	.clkr = {
206362306a36Sopenharmony_ci		.enable_reg = 0x506c,
206462306a36Sopenharmony_ci		.enable_mask = BIT(0),
206562306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
206662306a36Sopenharmony_ci			.name = "mmss_mmssnoc_axi_clk",
206762306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &axi_clk_src.clkr.hw },
206862306a36Sopenharmony_ci			.num_parents = 1,
206962306a36Sopenharmony_ci			/* Gating this clock will wreck havoc among MMSS! */
207062306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
207162306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
207262306a36Sopenharmony_ci		},
207362306a36Sopenharmony_ci	},
207462306a36Sopenharmony_ci};
207562306a36Sopenharmony_ci
207662306a36Sopenharmony_cistatic struct clk_branch mmss_s0_axi_clk = {
207762306a36Sopenharmony_ci	.halt_reg = 0x5064,
207862306a36Sopenharmony_ci	.clkr = {
207962306a36Sopenharmony_ci		.enable_reg = 0x5064,
208062306a36Sopenharmony_ci		.enable_mask = BIT(0),
208162306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
208262306a36Sopenharmony_ci			.name = "mmss_s0_axi_clk",
208362306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &axi_clk_src.clkr.hw, },
208462306a36Sopenharmony_ci			.num_parents = 1,
208562306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED,
208662306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
208762306a36Sopenharmony_ci		},
208862306a36Sopenharmony_ci	},
208962306a36Sopenharmony_ci};
209062306a36Sopenharmony_ci
209162306a36Sopenharmony_cistatic struct clk_branch ocmemcx_ocmemnoc_clk = {
209262306a36Sopenharmony_ci	.halt_reg = 0x4058,
209362306a36Sopenharmony_ci	.clkr = {
209462306a36Sopenharmony_ci		.enable_reg = 0x4058,
209562306a36Sopenharmony_ci		.enable_mask = BIT(0),
209662306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
209762306a36Sopenharmony_ci			.name = "ocmemcx_ocmemnoc_clk",
209862306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ocmemnoc_clk_src.clkr.hw },
209962306a36Sopenharmony_ci			.num_parents = 1,
210062306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
210162306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
210262306a36Sopenharmony_ci		},
210362306a36Sopenharmony_ci	},
210462306a36Sopenharmony_ci};
210562306a36Sopenharmony_ci
210662306a36Sopenharmony_cistatic struct clk_branch oxili_gfx3d_clk = {
210762306a36Sopenharmony_ci	.halt_reg = 0x4028,
210862306a36Sopenharmony_ci	.clkr = {
210962306a36Sopenharmony_ci		.enable_reg = 0x4028,
211062306a36Sopenharmony_ci		.enable_mask = BIT(0),
211162306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
211262306a36Sopenharmony_ci			.name = "oxili_gfx3d_clk",
211362306a36Sopenharmony_ci			.parent_data = &(const struct clk_parent_data){
211462306a36Sopenharmony_ci				.fw_name = "oxili_gfx3d_clk_src",
211562306a36Sopenharmony_ci				.name = "oxili_gfx3d_clk_src"
211662306a36Sopenharmony_ci			},
211762306a36Sopenharmony_ci			.num_parents = 1,
211862306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
211962306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
212062306a36Sopenharmony_ci		},
212162306a36Sopenharmony_ci	},
212262306a36Sopenharmony_ci};
212362306a36Sopenharmony_ci
212462306a36Sopenharmony_cistatic struct clk_branch oxili_rbbmtimer_clk = {
212562306a36Sopenharmony_ci	.halt_reg = 0x40b0,
212662306a36Sopenharmony_ci	.clkr = {
212762306a36Sopenharmony_ci		.enable_reg = 0x40b0,
212862306a36Sopenharmony_ci		.enable_mask = BIT(0),
212962306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
213062306a36Sopenharmony_ci			.name = "oxili_rbbmtimer_clk",
213162306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &rbbmtimer_clk_src.clkr.hw },
213262306a36Sopenharmony_ci			.num_parents = 1,
213362306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
213462306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
213562306a36Sopenharmony_ci		},
213662306a36Sopenharmony_ci	},
213762306a36Sopenharmony_ci};
213862306a36Sopenharmony_ci
213962306a36Sopenharmony_cistatic struct clk_branch oxilicx_ahb_clk = {
214062306a36Sopenharmony_ci	.halt_reg = 0x403c,
214162306a36Sopenharmony_ci	.clkr = {
214262306a36Sopenharmony_ci		.enable_reg = 0x403c,
214362306a36Sopenharmony_ci		.enable_mask = BIT(0),
214462306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
214562306a36Sopenharmony_ci			.name = "oxilicx_ahb_clk",
214662306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
214762306a36Sopenharmony_ci			.num_parents = 1,
214862306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
214962306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
215062306a36Sopenharmony_ci		},
215162306a36Sopenharmony_ci	},
215262306a36Sopenharmony_ci};
215362306a36Sopenharmony_ci
215462306a36Sopenharmony_cistatic struct clk_branch venus0_ahb_clk = {
215562306a36Sopenharmony_ci	.halt_reg = 0x1030,
215662306a36Sopenharmony_ci	.clkr = {
215762306a36Sopenharmony_ci		.enable_reg = 0x1030,
215862306a36Sopenharmony_ci		.enable_mask = BIT(0),
215962306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
216062306a36Sopenharmony_ci			.name = "venus0_ahb_clk",
216162306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
216262306a36Sopenharmony_ci			.num_parents = 1,
216362306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
216462306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
216562306a36Sopenharmony_ci		},
216662306a36Sopenharmony_ci	},
216762306a36Sopenharmony_ci};
216862306a36Sopenharmony_ci
216962306a36Sopenharmony_cistatic struct clk_branch venus0_axi_clk = {
217062306a36Sopenharmony_ci	.halt_reg = 0x1034,
217162306a36Sopenharmony_ci	.clkr = {
217262306a36Sopenharmony_ci		.enable_reg = 0x1034,
217362306a36Sopenharmony_ci		.enable_mask = BIT(0),
217462306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
217562306a36Sopenharmony_ci			.name = "venus0_axi_clk",
217662306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &axi_clk_src.clkr.hw },
217762306a36Sopenharmony_ci			.num_parents = 1,
217862306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
217962306a36Sopenharmony_ci		},
218062306a36Sopenharmony_ci	},
218162306a36Sopenharmony_ci};
218262306a36Sopenharmony_ci
218362306a36Sopenharmony_cistatic struct clk_branch venus0_ocmemnoc_clk = {
218462306a36Sopenharmony_ci	.halt_reg = 0x1038,
218562306a36Sopenharmony_ci	.clkr = {
218662306a36Sopenharmony_ci		.enable_reg = 0x1038,
218762306a36Sopenharmony_ci		.enable_mask = BIT(0),
218862306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
218962306a36Sopenharmony_ci			.name = "venus0_ocmemnoc_clk",
219062306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ocmemnoc_clk_src.clkr.hw },
219162306a36Sopenharmony_ci			.num_parents = 1,
219262306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
219362306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
219462306a36Sopenharmony_ci		},
219562306a36Sopenharmony_ci	},
219662306a36Sopenharmony_ci};
219762306a36Sopenharmony_ci
219862306a36Sopenharmony_cistatic struct clk_branch venus0_vcodec0_clk = {
219962306a36Sopenharmony_ci	.halt_reg = 0x1028,
220062306a36Sopenharmony_ci	.clkr = {
220162306a36Sopenharmony_ci		.enable_reg = 0x1028,
220262306a36Sopenharmony_ci		.enable_mask = BIT(0),
220362306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
220462306a36Sopenharmony_ci			.name = "venus0_vcodec0_clk",
220562306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &vcodec0_clk_src.clkr.hw },
220662306a36Sopenharmony_ci			.num_parents = 1,
220762306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
220862306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
220962306a36Sopenharmony_ci		},
221062306a36Sopenharmony_ci	},
221162306a36Sopenharmony_ci};
221262306a36Sopenharmony_ci
221362306a36Sopenharmony_cistatic struct clk_branch venus0_core0_vcodec_clk = {
221462306a36Sopenharmony_ci	.halt_reg = 0x1048,
221562306a36Sopenharmony_ci	.clkr = {
221662306a36Sopenharmony_ci		.enable_reg = 0x1048,
221762306a36Sopenharmony_ci		.enable_mask = BIT(0),
221862306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
221962306a36Sopenharmony_ci			.name = "venus0_core0_vcodec_clk",
222062306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &vcodec0_clk_src.clkr.hw },
222162306a36Sopenharmony_ci			.num_parents = 1,
222262306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
222362306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
222462306a36Sopenharmony_ci		},
222562306a36Sopenharmony_ci	},
222662306a36Sopenharmony_ci};
222762306a36Sopenharmony_ci
222862306a36Sopenharmony_cistatic struct clk_branch venus0_core1_vcodec_clk = {
222962306a36Sopenharmony_ci	.halt_reg = 0x104c,
223062306a36Sopenharmony_ci	.clkr = {
223162306a36Sopenharmony_ci		.enable_reg = 0x104c,
223262306a36Sopenharmony_ci		.enable_mask = BIT(0),
223362306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
223462306a36Sopenharmony_ci			.name = "venus0_core1_vcodec_clk",
223562306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &vcodec0_clk_src.clkr.hw },
223662306a36Sopenharmony_ci			.num_parents = 1,
223762306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
223862306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
223962306a36Sopenharmony_ci		},
224062306a36Sopenharmony_ci	},
224162306a36Sopenharmony_ci};
224262306a36Sopenharmony_ci
224362306a36Sopenharmony_cistatic struct clk_branch venus0_core2_vcodec_clk = {
224462306a36Sopenharmony_ci	.halt_reg = 0x1054,
224562306a36Sopenharmony_ci	.clkr = {
224662306a36Sopenharmony_ci		.enable_reg = 0x1054,
224762306a36Sopenharmony_ci		.enable_mask = BIT(0),
224862306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
224962306a36Sopenharmony_ci			.name = "venus0_core2_vcodec_clk",
225062306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &vcodec0_clk_src.clkr.hw },
225162306a36Sopenharmony_ci			.num_parents = 1,
225262306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
225362306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
225462306a36Sopenharmony_ci		},
225562306a36Sopenharmony_ci	},
225662306a36Sopenharmony_ci};
225762306a36Sopenharmony_ci
225862306a36Sopenharmony_cistatic struct gdsc venus_gdsc = {
225962306a36Sopenharmony_ci	.gdscr = 0x1024,
226062306a36Sopenharmony_ci	.cxcs = (unsigned int []){ 0x1038, 0x1034, 0x1048 },
226162306a36Sopenharmony_ci	.cxc_count = 3,
226262306a36Sopenharmony_ci	.pd = {
226362306a36Sopenharmony_ci		.name = "venus_gdsc",
226462306a36Sopenharmony_ci	},
226562306a36Sopenharmony_ci	.pwrsts = PWRSTS_OFF_ON,
226662306a36Sopenharmony_ci};
226762306a36Sopenharmony_ci
226862306a36Sopenharmony_cistatic struct gdsc venus_core0_gdsc = {
226962306a36Sopenharmony_ci	.gdscr = 0x1040,
227062306a36Sopenharmony_ci	.cxcs = (unsigned int []){ 0x1048 },
227162306a36Sopenharmony_ci	.cxc_count = 1,
227262306a36Sopenharmony_ci	.pd = {
227362306a36Sopenharmony_ci		.name = "venus_core0_gdsc",
227462306a36Sopenharmony_ci	},
227562306a36Sopenharmony_ci	.pwrsts = PWRSTS_OFF_ON,
227662306a36Sopenharmony_ci	.flags = HW_CTRL,
227762306a36Sopenharmony_ci};
227862306a36Sopenharmony_ci
227962306a36Sopenharmony_cistatic struct gdsc venus_core1_gdsc = {
228062306a36Sopenharmony_ci	.gdscr = 0x1044,
228162306a36Sopenharmony_ci	.cxcs = (unsigned int []){ 0x104c },
228262306a36Sopenharmony_ci	.cxc_count = 1,
228362306a36Sopenharmony_ci	.pd = {
228462306a36Sopenharmony_ci	.name = "venus_core1_gdsc",
228562306a36Sopenharmony_ci	},
228662306a36Sopenharmony_ci	.pwrsts = PWRSTS_OFF_ON,
228762306a36Sopenharmony_ci	.flags = HW_CTRL,
228862306a36Sopenharmony_ci};
228962306a36Sopenharmony_ci
229062306a36Sopenharmony_cistatic struct gdsc venus_core2_gdsc = {
229162306a36Sopenharmony_ci	.gdscr = 0x1050,
229262306a36Sopenharmony_ci	.cxcs = (unsigned int []){ 0x1054 },
229362306a36Sopenharmony_ci	.cxc_count = 1,
229462306a36Sopenharmony_ci	.pd = {
229562306a36Sopenharmony_ci		.name = "venus_core2_gdsc",
229662306a36Sopenharmony_ci	},
229762306a36Sopenharmony_ci	.pwrsts = PWRSTS_OFF_ON,
229862306a36Sopenharmony_ci	.flags = HW_CTRL,
229962306a36Sopenharmony_ci};
230062306a36Sopenharmony_ci
230162306a36Sopenharmony_cistatic struct gdsc mdss_gdsc = {
230262306a36Sopenharmony_ci	.gdscr = 0x2304,
230362306a36Sopenharmony_ci	.cxcs = (unsigned int []){ 0x2310, 0x231c },
230462306a36Sopenharmony_ci	.cxc_count = 2,
230562306a36Sopenharmony_ci	.pd = {
230662306a36Sopenharmony_ci		.name = "mdss_gdsc",
230762306a36Sopenharmony_ci	},
230862306a36Sopenharmony_ci	.pwrsts = PWRSTS_OFF_ON,
230962306a36Sopenharmony_ci};
231062306a36Sopenharmony_ci
231162306a36Sopenharmony_cistatic struct gdsc camss_top_gdsc = {
231262306a36Sopenharmony_ci	.gdscr = 0x34a0,
231362306a36Sopenharmony_ci	.cxcs = (unsigned int []){ 0x3704, 0x3714, 0x3494 },
231462306a36Sopenharmony_ci	.cxc_count = 3,
231562306a36Sopenharmony_ci	.pd = {
231662306a36Sopenharmony_ci		.name = "camss_top_gdsc",
231762306a36Sopenharmony_ci	},
231862306a36Sopenharmony_ci	.pwrsts = PWRSTS_OFF_ON,
231962306a36Sopenharmony_ci};
232062306a36Sopenharmony_ci
232162306a36Sopenharmony_cistatic struct gdsc jpeg_gdsc = {
232262306a36Sopenharmony_ci	.gdscr = 0x35a4,
232362306a36Sopenharmony_ci	.cxcs = (unsigned int []){ 0x35a8 },
232462306a36Sopenharmony_ci	.cxc_count = 1,
232562306a36Sopenharmony_ci	.pd = {
232662306a36Sopenharmony_ci		.name = "jpeg_gdsc",
232762306a36Sopenharmony_ci	},
232862306a36Sopenharmony_ci	.parent = &camss_top_gdsc.pd,
232962306a36Sopenharmony_ci	.pwrsts = PWRSTS_OFF_ON,
233062306a36Sopenharmony_ci};
233162306a36Sopenharmony_ci
233262306a36Sopenharmony_cistatic struct gdsc vfe_gdsc = {
233362306a36Sopenharmony_ci	.gdscr = 0x36a4,
233462306a36Sopenharmony_ci	.cxcs = (unsigned int []){ 0x36bc },
233562306a36Sopenharmony_ci	.cxc_count = 1,
233662306a36Sopenharmony_ci	.pd = {
233762306a36Sopenharmony_ci		.name = "vfe_gdsc",
233862306a36Sopenharmony_ci	},
233962306a36Sopenharmony_ci	.parent = &camss_top_gdsc.pd,
234062306a36Sopenharmony_ci	.pwrsts = PWRSTS_OFF_ON,
234162306a36Sopenharmony_ci};
234262306a36Sopenharmony_ci
234362306a36Sopenharmony_cistatic struct gdsc cpp_gdsc = {
234462306a36Sopenharmony_ci	.gdscr = 0x36d4,
234562306a36Sopenharmony_ci	.cxcs = (unsigned int []){ 0x36c4, 0x36b0 },
234662306a36Sopenharmony_ci	.cxc_count = 2,
234762306a36Sopenharmony_ci	.pd = {
234862306a36Sopenharmony_ci		.name = "cpp_gdsc",
234962306a36Sopenharmony_ci	},
235062306a36Sopenharmony_ci	.parent = &camss_top_gdsc.pd,
235162306a36Sopenharmony_ci	.pwrsts = PWRSTS_OFF_ON,
235262306a36Sopenharmony_ci};
235362306a36Sopenharmony_ci
235462306a36Sopenharmony_cistatic struct gdsc fd_gdsc = {
235562306a36Sopenharmony_ci	.gdscr = 0x3b64,
235662306a36Sopenharmony_ci	.cxcs = (unsigned int []){ 0x3b70, 0x3b68 },
235762306a36Sopenharmony_ci	.pd = {
235862306a36Sopenharmony_ci		.name = "fd_gdsc",
235962306a36Sopenharmony_ci	},
236062306a36Sopenharmony_ci	.pwrsts = PWRSTS_OFF_ON,
236162306a36Sopenharmony_ci};
236262306a36Sopenharmony_ci
236362306a36Sopenharmony_cistatic struct gdsc oxili_cx_gdsc = {
236462306a36Sopenharmony_ci	.gdscr = 0x4034,
236562306a36Sopenharmony_ci	.pd = {
236662306a36Sopenharmony_ci		.name = "oxili_cx_gdsc",
236762306a36Sopenharmony_ci	},
236862306a36Sopenharmony_ci	.pwrsts = PWRSTS_OFF_ON,
236962306a36Sopenharmony_ci	.flags = VOTABLE,
237062306a36Sopenharmony_ci};
237162306a36Sopenharmony_ci
237262306a36Sopenharmony_cistatic struct gdsc oxili_gx_gdsc = {
237362306a36Sopenharmony_ci	.gdscr = 0x4024,
237462306a36Sopenharmony_ci	.cxcs = (unsigned int []){ 0x4028 },
237562306a36Sopenharmony_ci	.cxc_count = 1,
237662306a36Sopenharmony_ci	.pd = {
237762306a36Sopenharmony_ci		.name = "oxili_gx_gdsc",
237862306a36Sopenharmony_ci	},
237962306a36Sopenharmony_ci	.pwrsts = PWRSTS_OFF_ON,
238062306a36Sopenharmony_ci	.parent = &oxili_cx_gdsc.pd,
238162306a36Sopenharmony_ci	.flags = CLAMP_IO,
238262306a36Sopenharmony_ci	.supply = "VDD_GFX",
238362306a36Sopenharmony_ci};
238462306a36Sopenharmony_ci
238562306a36Sopenharmony_cistatic struct clk_regmap *mmcc_msm8994_clocks[] = {
238662306a36Sopenharmony_ci	[MMPLL0_EARLY] = &mmpll0_early.clkr,
238762306a36Sopenharmony_ci	[MMPLL0_PLL] = &mmpll0.clkr,
238862306a36Sopenharmony_ci	[MMPLL1_EARLY] = &mmpll1_early.clkr,
238962306a36Sopenharmony_ci	[MMPLL1_PLL] = &mmpll1.clkr,
239062306a36Sopenharmony_ci	[MMPLL3_EARLY] = &mmpll3_early.clkr,
239162306a36Sopenharmony_ci	[MMPLL3_PLL] = &mmpll3.clkr,
239262306a36Sopenharmony_ci	[MMPLL4_EARLY] = &mmpll4_early.clkr,
239362306a36Sopenharmony_ci	[MMPLL4_PLL] = &mmpll4.clkr,
239462306a36Sopenharmony_ci	[MMPLL5_EARLY] = &mmpll5_early.clkr,
239562306a36Sopenharmony_ci	[MMPLL5_PLL] = &mmpll5.clkr,
239662306a36Sopenharmony_ci	[AHB_CLK_SRC] = &ahb_clk_src.clkr,
239762306a36Sopenharmony_ci	[AXI_CLK_SRC] = &axi_clk_src.clkr,
239862306a36Sopenharmony_ci	[CSI0_CLK_SRC] = &csi0_clk_src.clkr,
239962306a36Sopenharmony_ci	[CSI1_CLK_SRC] = &csi1_clk_src.clkr,
240062306a36Sopenharmony_ci	[CSI2_CLK_SRC] = &csi2_clk_src.clkr,
240162306a36Sopenharmony_ci	[CSI3_CLK_SRC] = &csi3_clk_src.clkr,
240262306a36Sopenharmony_ci	[VFE0_CLK_SRC] = &vfe0_clk_src.clkr,
240362306a36Sopenharmony_ci	[VFE1_CLK_SRC] = &vfe1_clk_src.clkr,
240462306a36Sopenharmony_ci	[CPP_CLK_SRC] = &cpp_clk_src.clkr,
240562306a36Sopenharmony_ci	[JPEG0_CLK_SRC] = &jpeg0_clk_src.clkr,
240662306a36Sopenharmony_ci	[JPEG1_CLK_SRC] = &jpeg1_clk_src.clkr,
240762306a36Sopenharmony_ci	[JPEG2_CLK_SRC] = &jpeg2_clk_src.clkr,
240862306a36Sopenharmony_ci	[CSI2PHYTIMER_CLK_SRC] = &csi2phytimer_clk_src.clkr,
240962306a36Sopenharmony_ci	[FD_CORE_CLK_SRC] = &fd_core_clk_src.clkr,
241062306a36Sopenharmony_ci	[MDP_CLK_SRC] = &mdp_clk_src.clkr,
241162306a36Sopenharmony_ci	[PCLK0_CLK_SRC] = &pclk0_clk_src.clkr,
241262306a36Sopenharmony_ci	[PCLK1_CLK_SRC] = &pclk1_clk_src.clkr,
241362306a36Sopenharmony_ci	[OCMEMNOC_CLK_SRC] = &ocmemnoc_clk_src.clkr,
241462306a36Sopenharmony_ci	[CCI_CLK_SRC] = &cci_clk_src.clkr,
241562306a36Sopenharmony_ci	[MMSS_GP0_CLK_SRC] = &mmss_gp0_clk_src.clkr,
241662306a36Sopenharmony_ci	[MMSS_GP1_CLK_SRC] = &mmss_gp1_clk_src.clkr,
241762306a36Sopenharmony_ci	[JPEG_DMA_CLK_SRC] = &jpeg_dma_clk_src.clkr,
241862306a36Sopenharmony_ci	[MCLK0_CLK_SRC] = &mclk0_clk_src.clkr,
241962306a36Sopenharmony_ci	[MCLK1_CLK_SRC] = &mclk1_clk_src.clkr,
242062306a36Sopenharmony_ci	[MCLK2_CLK_SRC] = &mclk2_clk_src.clkr,
242162306a36Sopenharmony_ci	[MCLK3_CLK_SRC] = &mclk3_clk_src.clkr,
242262306a36Sopenharmony_ci	[CSI0PHYTIMER_CLK_SRC] = &csi0phytimer_clk_src.clkr,
242362306a36Sopenharmony_ci	[CSI1PHYTIMER_CLK_SRC] = &csi1phytimer_clk_src.clkr,
242462306a36Sopenharmony_ci	[BYTE0_CLK_SRC] = &byte0_clk_src.clkr,
242562306a36Sopenharmony_ci	[BYTE1_CLK_SRC] = &byte1_clk_src.clkr,
242662306a36Sopenharmony_ci	[ESC0_CLK_SRC] = &esc0_clk_src.clkr,
242762306a36Sopenharmony_ci	[ESC1_CLK_SRC] = &esc1_clk_src.clkr,
242862306a36Sopenharmony_ci	[MDSS_ESC0_CLK] = &mdss_esc0_clk.clkr,
242962306a36Sopenharmony_ci	[MDSS_ESC1_CLK] = &mdss_esc1_clk.clkr,
243062306a36Sopenharmony_ci	[EXTPCLK_CLK_SRC] = &extpclk_clk_src.clkr,
243162306a36Sopenharmony_ci	[HDMI_CLK_SRC] = &hdmi_clk_src.clkr,
243262306a36Sopenharmony_ci	[VSYNC_CLK_SRC] = &vsync_clk_src.clkr,
243362306a36Sopenharmony_ci	[RBBMTIMER_CLK_SRC] = &rbbmtimer_clk_src.clkr,
243462306a36Sopenharmony_ci	[CAMSS_AHB_CLK] = &camss_ahb_clk.clkr,
243562306a36Sopenharmony_ci	[CAMSS_CCI_CCI_AHB_CLK] = &camss_cci_cci_ahb_clk.clkr,
243662306a36Sopenharmony_ci	[CAMSS_CCI_CCI_CLK] = &camss_cci_cci_clk.clkr,
243762306a36Sopenharmony_ci	[CAMSS_VFE_CPP_AHB_CLK] = &camss_vfe_cpp_ahb_clk.clkr,
243862306a36Sopenharmony_ci	[CAMSS_VFE_CPP_AXI_CLK] = &camss_vfe_cpp_axi_clk.clkr,
243962306a36Sopenharmony_ci	[CAMSS_VFE_CPP_CLK] = &camss_vfe_cpp_clk.clkr,
244062306a36Sopenharmony_ci	[CAMSS_CSI0_AHB_CLK] = &camss_csi0_ahb_clk.clkr,
244162306a36Sopenharmony_ci	[CAMSS_CSI0_CLK] = &camss_csi0_clk.clkr,
244262306a36Sopenharmony_ci	[CAMSS_CSI0PHY_CLK] = &camss_csi0phy_clk.clkr,
244362306a36Sopenharmony_ci	[CAMSS_CSI0PIX_CLK] = &camss_csi0pix_clk.clkr,
244462306a36Sopenharmony_ci	[CAMSS_CSI0RDI_CLK] = &camss_csi0rdi_clk.clkr,
244562306a36Sopenharmony_ci	[CAMSS_CSI1_AHB_CLK] = &camss_csi1_ahb_clk.clkr,
244662306a36Sopenharmony_ci	[CAMSS_CSI1_CLK] = &camss_csi1_clk.clkr,
244762306a36Sopenharmony_ci	[CAMSS_CSI1PHY_CLK] = &camss_csi1phy_clk.clkr,
244862306a36Sopenharmony_ci	[CAMSS_CSI1PIX_CLK] = &camss_csi1pix_clk.clkr,
244962306a36Sopenharmony_ci	[CAMSS_CSI1RDI_CLK] = &camss_csi1rdi_clk.clkr,
245062306a36Sopenharmony_ci	[CAMSS_CSI2_AHB_CLK] = &camss_csi2_ahb_clk.clkr,
245162306a36Sopenharmony_ci	[CAMSS_CSI2_CLK] = &camss_csi2_clk.clkr,
245262306a36Sopenharmony_ci	[CAMSS_CSI2PHY_CLK] = &camss_csi2phy_clk.clkr,
245362306a36Sopenharmony_ci	[CAMSS_CSI2PIX_CLK] = &camss_csi2pix_clk.clkr,
245462306a36Sopenharmony_ci	[CAMSS_CSI2RDI_CLK] = &camss_csi2rdi_clk.clkr,
245562306a36Sopenharmony_ci	[CAMSS_CSI3_AHB_CLK] = &camss_csi3_ahb_clk.clkr,
245662306a36Sopenharmony_ci	[CAMSS_CSI3_CLK] = &camss_csi3_clk.clkr,
245762306a36Sopenharmony_ci	[CAMSS_CSI3PHY_CLK] = &camss_csi3phy_clk.clkr,
245862306a36Sopenharmony_ci	[CAMSS_CSI3PIX_CLK] = &camss_csi3pix_clk.clkr,
245962306a36Sopenharmony_ci	[CAMSS_CSI3RDI_CLK] = &camss_csi3rdi_clk.clkr,
246062306a36Sopenharmony_ci	[CAMSS_CSI_VFE0_CLK] = &camss_csi_vfe0_clk.clkr,
246162306a36Sopenharmony_ci	[CAMSS_CSI_VFE1_CLK] = &camss_csi_vfe1_clk.clkr,
246262306a36Sopenharmony_ci	[CAMSS_GP0_CLK] = &camss_gp0_clk.clkr,
246362306a36Sopenharmony_ci	[CAMSS_GP1_CLK] = &camss_gp1_clk.clkr,
246462306a36Sopenharmony_ci	[CAMSS_ISPIF_AHB_CLK] = &camss_ispif_ahb_clk.clkr,
246562306a36Sopenharmony_ci	[CAMSS_JPEG_DMA_CLK] = &camss_jpeg_dma_clk.clkr,
246662306a36Sopenharmony_ci	[CAMSS_JPEG_JPEG0_CLK] = &camss_jpeg_jpeg0_clk.clkr,
246762306a36Sopenharmony_ci	[CAMSS_JPEG_JPEG1_CLK] = &camss_jpeg_jpeg1_clk.clkr,
246862306a36Sopenharmony_ci	[CAMSS_JPEG_JPEG2_CLK] = &camss_jpeg_jpeg2_clk.clkr,
246962306a36Sopenharmony_ci	[CAMSS_JPEG_JPEG_AHB_CLK] = &camss_jpeg_jpeg_ahb_clk.clkr,
247062306a36Sopenharmony_ci	[CAMSS_JPEG_JPEG_AXI_CLK] = &camss_jpeg_jpeg_axi_clk.clkr,
247162306a36Sopenharmony_ci	[CAMSS_MCLK0_CLK] = &camss_mclk0_clk.clkr,
247262306a36Sopenharmony_ci	[CAMSS_MCLK1_CLK] = &camss_mclk1_clk.clkr,
247362306a36Sopenharmony_ci	[CAMSS_MCLK2_CLK] = &camss_mclk2_clk.clkr,
247462306a36Sopenharmony_ci	[CAMSS_MCLK3_CLK] = &camss_mclk3_clk.clkr,
247562306a36Sopenharmony_ci	[CAMSS_MICRO_AHB_CLK] = &camss_micro_ahb_clk.clkr,
247662306a36Sopenharmony_ci	[CAMSS_PHY0_CSI0PHYTIMER_CLK] = &camss_phy0_csi0phytimer_clk.clkr,
247762306a36Sopenharmony_ci	[CAMSS_PHY1_CSI1PHYTIMER_CLK] = &camss_phy1_csi1phytimer_clk.clkr,
247862306a36Sopenharmony_ci	[CAMSS_PHY2_CSI2PHYTIMER_CLK] = &camss_phy2_csi2phytimer_clk.clkr,
247962306a36Sopenharmony_ci	[CAMSS_TOP_AHB_CLK] = &camss_top_ahb_clk.clkr,
248062306a36Sopenharmony_ci	[CAMSS_VFE_VFE0_CLK] = &camss_vfe_vfe0_clk.clkr,
248162306a36Sopenharmony_ci	[CAMSS_VFE_VFE1_CLK] = &camss_vfe_vfe1_clk.clkr,
248262306a36Sopenharmony_ci	[CAMSS_VFE_VFE_AHB_CLK] = &camss_vfe_vfe_ahb_clk.clkr,
248362306a36Sopenharmony_ci	[CAMSS_VFE_VFE_AXI_CLK] = &camss_vfe_vfe_axi_clk.clkr,
248462306a36Sopenharmony_ci	[FD_AHB_CLK] = &fd_ahb_clk.clkr,
248562306a36Sopenharmony_ci	[FD_AXI_CLK] = &fd_axi_clk.clkr,
248662306a36Sopenharmony_ci	[FD_CORE_CLK] = &fd_core_clk.clkr,
248762306a36Sopenharmony_ci	[FD_CORE_UAR_CLK] = &fd_core_uar_clk.clkr,
248862306a36Sopenharmony_ci	[MDSS_AHB_CLK] = &mdss_ahb_clk.clkr,
248962306a36Sopenharmony_ci	[MDSS_AXI_CLK] = &mdss_axi_clk.clkr,
249062306a36Sopenharmony_ci	[MDSS_BYTE0_CLK] = &mdss_byte0_clk.clkr,
249162306a36Sopenharmony_ci	[MDSS_BYTE1_CLK] = &mdss_byte1_clk.clkr,
249262306a36Sopenharmony_ci	[MDSS_EXTPCLK_CLK] = &mdss_extpclk_clk.clkr,
249362306a36Sopenharmony_ci	[MDSS_HDMI_AHB_CLK] = &mdss_hdmi_ahb_clk.clkr,
249462306a36Sopenharmony_ci	[MDSS_HDMI_CLK] = &mdss_hdmi_clk.clkr,
249562306a36Sopenharmony_ci	[MDSS_MDP_CLK] = &mdss_mdp_clk.clkr,
249662306a36Sopenharmony_ci	[MDSS_PCLK0_CLK] = &mdss_pclk0_clk.clkr,
249762306a36Sopenharmony_ci	[MDSS_PCLK1_CLK] = &mdss_pclk1_clk.clkr,
249862306a36Sopenharmony_ci	[MDSS_VSYNC_CLK] = &mdss_vsync_clk.clkr,
249962306a36Sopenharmony_ci	[MMSS_MISC_AHB_CLK] = &mmss_misc_ahb_clk.clkr,
250062306a36Sopenharmony_ci	[MMSS_MMSSNOC_AXI_CLK] = &mmss_mmssnoc_axi_clk.clkr,
250162306a36Sopenharmony_ci	[MMSS_S0_AXI_CLK] = &mmss_s0_axi_clk.clkr,
250262306a36Sopenharmony_ci	[OCMEMCX_OCMEMNOC_CLK] = &ocmemcx_ocmemnoc_clk.clkr,
250362306a36Sopenharmony_ci	[OXILI_GFX3D_CLK] = &oxili_gfx3d_clk.clkr,
250462306a36Sopenharmony_ci	[OXILI_RBBMTIMER_CLK] = &oxili_rbbmtimer_clk.clkr,
250562306a36Sopenharmony_ci	[OXILICX_AHB_CLK] = &oxilicx_ahb_clk.clkr,
250662306a36Sopenharmony_ci	[VENUS0_AHB_CLK] = &venus0_ahb_clk.clkr,
250762306a36Sopenharmony_ci	[VENUS0_AXI_CLK] = &venus0_axi_clk.clkr,
250862306a36Sopenharmony_ci	[VENUS0_OCMEMNOC_CLK] = &venus0_ocmemnoc_clk.clkr,
250962306a36Sopenharmony_ci	[VENUS0_VCODEC0_CLK] = &venus0_vcodec0_clk.clkr,
251062306a36Sopenharmony_ci	[VENUS0_CORE0_VCODEC_CLK] = &venus0_core0_vcodec_clk.clkr,
251162306a36Sopenharmony_ci	[VENUS0_CORE1_VCODEC_CLK] = &venus0_core1_vcodec_clk.clkr,
251262306a36Sopenharmony_ci	[VENUS0_CORE2_VCODEC_CLK] = &venus0_core2_vcodec_clk.clkr,
251362306a36Sopenharmony_ci};
251462306a36Sopenharmony_ci
251562306a36Sopenharmony_cistatic struct gdsc *mmcc_msm8994_gdscs[] = {
251662306a36Sopenharmony_ci	[VENUS_GDSC] = &venus_gdsc,
251762306a36Sopenharmony_ci	[VENUS_CORE0_GDSC] = &venus_core0_gdsc,
251862306a36Sopenharmony_ci	[VENUS_CORE1_GDSC] = &venus_core1_gdsc,
251962306a36Sopenharmony_ci	[VENUS_CORE2_GDSC] = &venus_core2_gdsc,
252062306a36Sopenharmony_ci	[CAMSS_TOP_GDSC] = &camss_top_gdsc,
252162306a36Sopenharmony_ci	[MDSS_GDSC] = &mdss_gdsc,
252262306a36Sopenharmony_ci	[JPEG_GDSC] = &jpeg_gdsc,
252362306a36Sopenharmony_ci	[VFE_GDSC] = &vfe_gdsc,
252462306a36Sopenharmony_ci	[CPP_GDSC] = &cpp_gdsc,
252562306a36Sopenharmony_ci	[OXILI_GX_GDSC] = &oxili_gx_gdsc,
252662306a36Sopenharmony_ci	[OXILI_CX_GDSC] = &oxili_cx_gdsc,
252762306a36Sopenharmony_ci	[FD_GDSC] = &fd_gdsc,
252862306a36Sopenharmony_ci};
252962306a36Sopenharmony_ci
253062306a36Sopenharmony_cistatic const struct qcom_reset_map mmcc_msm8994_resets[] = {
253162306a36Sopenharmony_ci	[CAMSS_MICRO_BCR] = { 0x3490 },
253262306a36Sopenharmony_ci};
253362306a36Sopenharmony_ci
253462306a36Sopenharmony_cistatic const struct regmap_config mmcc_msm8994_regmap_config = {
253562306a36Sopenharmony_ci	.reg_bits	= 32,
253662306a36Sopenharmony_ci	.reg_stride	= 4,
253762306a36Sopenharmony_ci	.val_bits	= 32,
253862306a36Sopenharmony_ci	.max_register	= 0x5200,
253962306a36Sopenharmony_ci	.fast_io	= true,
254062306a36Sopenharmony_ci};
254162306a36Sopenharmony_ci
254262306a36Sopenharmony_cistatic const struct qcom_cc_desc mmcc_msm8994_desc = {
254362306a36Sopenharmony_ci	.config = &mmcc_msm8994_regmap_config,
254462306a36Sopenharmony_ci	.clks = mmcc_msm8994_clocks,
254562306a36Sopenharmony_ci	.num_clks = ARRAY_SIZE(mmcc_msm8994_clocks),
254662306a36Sopenharmony_ci	.resets = mmcc_msm8994_resets,
254762306a36Sopenharmony_ci	.num_resets = ARRAY_SIZE(mmcc_msm8994_resets),
254862306a36Sopenharmony_ci	.gdscs = mmcc_msm8994_gdscs,
254962306a36Sopenharmony_ci	.num_gdscs = ARRAY_SIZE(mmcc_msm8994_gdscs),
255062306a36Sopenharmony_ci};
255162306a36Sopenharmony_ci
255262306a36Sopenharmony_cistatic const struct of_device_id mmcc_msm8994_match_table[] = {
255362306a36Sopenharmony_ci	{ .compatible = "qcom,mmcc-msm8992" },
255462306a36Sopenharmony_ci	{ .compatible = "qcom,mmcc-msm8994" }, /* V2 and V2.1 */
255562306a36Sopenharmony_ci	{ }
255662306a36Sopenharmony_ci};
255762306a36Sopenharmony_ciMODULE_DEVICE_TABLE(of, mmcc_msm8994_match_table);
255862306a36Sopenharmony_ci
255962306a36Sopenharmony_cistatic int mmcc_msm8994_probe(struct platform_device *pdev)
256062306a36Sopenharmony_ci{
256162306a36Sopenharmony_ci	struct regmap *regmap;
256262306a36Sopenharmony_ci
256362306a36Sopenharmony_ci	if (of_device_is_compatible(pdev->dev.of_node, "qcom,mmcc-msm8992")) {
256462306a36Sopenharmony_ci		/* MSM8992 features less clocks and some have different freq tables */
256562306a36Sopenharmony_ci		mmcc_msm8994_desc.clks[CAMSS_JPEG_JPEG1_CLK] = NULL;
256662306a36Sopenharmony_ci		mmcc_msm8994_desc.clks[CAMSS_JPEG_JPEG2_CLK] = NULL;
256762306a36Sopenharmony_ci		mmcc_msm8994_desc.clks[FD_CORE_CLK_SRC] = NULL;
256862306a36Sopenharmony_ci		mmcc_msm8994_desc.clks[FD_CORE_CLK] = NULL;
256962306a36Sopenharmony_ci		mmcc_msm8994_desc.clks[FD_CORE_UAR_CLK] = NULL;
257062306a36Sopenharmony_ci		mmcc_msm8994_desc.clks[FD_AXI_CLK] = NULL;
257162306a36Sopenharmony_ci		mmcc_msm8994_desc.clks[FD_AHB_CLK] = NULL;
257262306a36Sopenharmony_ci		mmcc_msm8994_desc.clks[JPEG1_CLK_SRC] = NULL;
257362306a36Sopenharmony_ci		mmcc_msm8994_desc.clks[JPEG2_CLK_SRC] = NULL;
257462306a36Sopenharmony_ci		mmcc_msm8994_desc.clks[VENUS0_CORE2_VCODEC_CLK] = NULL;
257562306a36Sopenharmony_ci
257662306a36Sopenharmony_ci		mmcc_msm8994_desc.gdscs[FD_GDSC] = NULL;
257762306a36Sopenharmony_ci		mmcc_msm8994_desc.gdscs[VENUS_CORE2_GDSC] = NULL;
257862306a36Sopenharmony_ci
257962306a36Sopenharmony_ci		axi_clk_src.freq_tbl = ftbl_axi_clk_src_8992;
258062306a36Sopenharmony_ci		cpp_clk_src.freq_tbl = ftbl_cpp_clk_src_8992;
258162306a36Sopenharmony_ci		csi0_clk_src.freq_tbl = ftbl_csi0_1_2_3_clk_src_8992;
258262306a36Sopenharmony_ci		csi1_clk_src.freq_tbl = ftbl_csi0_1_2_3_clk_src_8992;
258362306a36Sopenharmony_ci		csi2_clk_src.freq_tbl = ftbl_csi0_1_2_3_clk_src_8992;
258462306a36Sopenharmony_ci		csi3_clk_src.freq_tbl = ftbl_csi0_1_2_3_clk_src_8992;
258562306a36Sopenharmony_ci		mclk0_clk_src.freq_tbl = ftbl_mclk0_clk_src_8992;
258662306a36Sopenharmony_ci		mclk1_clk_src.freq_tbl = ftbl_mclk1_2_3_clk_src_8992;
258762306a36Sopenharmony_ci		mclk2_clk_src.freq_tbl = ftbl_mclk1_2_3_clk_src_8992;
258862306a36Sopenharmony_ci		mclk3_clk_src.freq_tbl = ftbl_mclk1_2_3_clk_src_8992;
258962306a36Sopenharmony_ci		mdp_clk_src.freq_tbl = ftbl_mdp_clk_src_8992;
259062306a36Sopenharmony_ci		ocmemnoc_clk_src.freq_tbl = ftbl_ocmemnoc_clk_src_8992;
259162306a36Sopenharmony_ci		vcodec0_clk_src.freq_tbl = ftbl_vcodec0_clk_src_8992;
259262306a36Sopenharmony_ci		vfe0_clk_src.freq_tbl = ftbl_vfe0_1_clk_src_8992;
259362306a36Sopenharmony_ci		vfe1_clk_src.freq_tbl = ftbl_vfe0_1_clk_src_8992;
259462306a36Sopenharmony_ci	}
259562306a36Sopenharmony_ci
259662306a36Sopenharmony_ci	regmap = qcom_cc_map(pdev, &mmcc_msm8994_desc);
259762306a36Sopenharmony_ci	if (IS_ERR(regmap))
259862306a36Sopenharmony_ci		return PTR_ERR(regmap);
259962306a36Sopenharmony_ci
260062306a36Sopenharmony_ci	clk_alpha_pll_configure(&mmpll0_early, regmap, &mmpll_p_config);
260162306a36Sopenharmony_ci	clk_alpha_pll_configure(&mmpll1_early, regmap, &mmpll_p_config);
260262306a36Sopenharmony_ci	clk_alpha_pll_configure(&mmpll3_early, regmap, &mmpll_p_config);
260362306a36Sopenharmony_ci	clk_alpha_pll_configure(&mmpll5_early, regmap, &mmpll_p_config);
260462306a36Sopenharmony_ci
260562306a36Sopenharmony_ci	return qcom_cc_really_probe(pdev, &mmcc_msm8994_desc, regmap);
260662306a36Sopenharmony_ci}
260762306a36Sopenharmony_ci
260862306a36Sopenharmony_cistatic struct platform_driver mmcc_msm8994_driver = {
260962306a36Sopenharmony_ci	.probe		= mmcc_msm8994_probe,
261062306a36Sopenharmony_ci	.driver		= {
261162306a36Sopenharmony_ci		.name	= "mmcc-msm8994",
261262306a36Sopenharmony_ci		.of_match_table = mmcc_msm8994_match_table,
261362306a36Sopenharmony_ci	},
261462306a36Sopenharmony_ci};
261562306a36Sopenharmony_cimodule_platform_driver(mmcc_msm8994_driver);
261662306a36Sopenharmony_ci
261762306a36Sopenharmony_ciMODULE_DESCRIPTION("QCOM MMCC MSM8994 Driver");
261862306a36Sopenharmony_ciMODULE_LICENSE("GPL v2");
261962306a36Sopenharmony_ciMODULE_ALIAS("platform:mmcc-msm8994");
2620