162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (c) 2020, The Linux Foundation. All rights reserved.
462306a36Sopenharmony_ci * Copyright (c) 2020, Martin Botka <martin.botka@somainline.org>
562306a36Sopenharmony_ci * Copyright (c) 2020, Konrad Dybcio <konrad.dybcio@somainline.org>
662306a36Sopenharmony_ci */
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci#include <linux/kernel.h>
962306a36Sopenharmony_ci#include <linux/bitops.h>
1062306a36Sopenharmony_ci#include <linux/err.h>
1162306a36Sopenharmony_ci#include <linux/platform_device.h>
1262306a36Sopenharmony_ci#include <linux/module.h>
1362306a36Sopenharmony_ci#include <linux/of.h>
1462306a36Sopenharmony_ci#include <linux/of_device.h>
1562306a36Sopenharmony_ci#include <linux/clk-provider.h>
1662306a36Sopenharmony_ci#include <linux/regmap.h>
1762306a36Sopenharmony_ci#include <linux/reset-controller.h>
1862306a36Sopenharmony_ci#include <linux/clk.h>
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci#include <dt-bindings/clock/qcom,mmcc-sdm660.h>
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci#include "common.h"
2462306a36Sopenharmony_ci#include "clk-regmap.h"
2562306a36Sopenharmony_ci#include "clk-regmap-divider.h"
2662306a36Sopenharmony_ci#include "clk-alpha-pll.h"
2762306a36Sopenharmony_ci#include "clk-rcg.h"
2862306a36Sopenharmony_ci#include "clk-branch.h"
2962306a36Sopenharmony_ci#include "reset.h"
3062306a36Sopenharmony_ci#include "gdsc.h"
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_cienum {
3362306a36Sopenharmony_ci	P_XO,
3462306a36Sopenharmony_ci	P_DSI0PLL_BYTE,
3562306a36Sopenharmony_ci	P_DSI0PLL,
3662306a36Sopenharmony_ci	P_DSI1PLL_BYTE,
3762306a36Sopenharmony_ci	P_DSI1PLL,
3862306a36Sopenharmony_ci	P_GPLL0,
3962306a36Sopenharmony_ci	P_GPLL0_DIV,
4062306a36Sopenharmony_ci	P_MMPLL0,
4162306a36Sopenharmony_ci	P_MMPLL10,
4262306a36Sopenharmony_ci	P_MMPLL3,
4362306a36Sopenharmony_ci	P_MMPLL4,
4462306a36Sopenharmony_ci	P_MMPLL5,
4562306a36Sopenharmony_ci	P_MMPLL6,
4662306a36Sopenharmony_ci	P_MMPLL7,
4762306a36Sopenharmony_ci	P_MMPLL8,
4862306a36Sopenharmony_ci	P_SLEEP_CLK,
4962306a36Sopenharmony_ci	P_DP_PHY_PLL_LINK_CLK,
5062306a36Sopenharmony_ci	P_DP_PHY_PLL_VCO_DIV,
5162306a36Sopenharmony_ci};
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_cistatic const struct parent_map mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll8_gpll0_gpll0_div_map[] = {
5462306a36Sopenharmony_ci	{ P_XO, 0 },
5562306a36Sopenharmony_ci	{ P_MMPLL0, 1 },
5662306a36Sopenharmony_ci	{ P_MMPLL4, 2 },
5762306a36Sopenharmony_ci	{ P_MMPLL7, 3 },
5862306a36Sopenharmony_ci	{ P_MMPLL8, 4 },
5962306a36Sopenharmony_ci	{ P_GPLL0, 5 },
6062306a36Sopenharmony_ci	{ P_GPLL0_DIV, 6 },
6162306a36Sopenharmony_ci};
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci/* Voteable PLL */
6462306a36Sopenharmony_cistatic struct clk_alpha_pll mmpll0 = {
6562306a36Sopenharmony_ci	.offset = 0xc000,
6662306a36Sopenharmony_ci	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
6762306a36Sopenharmony_ci	.clkr = {
6862306a36Sopenharmony_ci		.enable_reg = 0x1f0,
6962306a36Sopenharmony_ci		.enable_mask = BIT(0),
7062306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
7162306a36Sopenharmony_ci			.name = "mmpll0",
7262306a36Sopenharmony_ci			.parent_data = &(const struct clk_parent_data){
7362306a36Sopenharmony_ci				.fw_name = "xo",
7462306a36Sopenharmony_ci			},
7562306a36Sopenharmony_ci			.num_parents = 1,
7662306a36Sopenharmony_ci			.ops = &clk_alpha_pll_ops,
7762306a36Sopenharmony_ci		},
7862306a36Sopenharmony_ci	},
7962306a36Sopenharmony_ci};
8062306a36Sopenharmony_ci
8162306a36Sopenharmony_cistatic struct clk_alpha_pll mmpll6 =  {
8262306a36Sopenharmony_ci	.offset = 0xf0,
8362306a36Sopenharmony_ci	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
8462306a36Sopenharmony_ci	.clkr = {
8562306a36Sopenharmony_ci		.enable_reg = 0x1f0,
8662306a36Sopenharmony_ci		.enable_mask = BIT(2),
8762306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
8862306a36Sopenharmony_ci			.name = "mmpll6",
8962306a36Sopenharmony_ci			.parent_data = &(const struct clk_parent_data){
9062306a36Sopenharmony_ci				.fw_name = "xo",
9162306a36Sopenharmony_ci			},
9262306a36Sopenharmony_ci			.num_parents = 1,
9362306a36Sopenharmony_ci			.ops = &clk_alpha_pll_ops,
9462306a36Sopenharmony_ci		},
9562306a36Sopenharmony_ci	},
9662306a36Sopenharmony_ci};
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ci/* APSS controlled PLLs */
9962306a36Sopenharmony_cistatic struct pll_vco vco[] = {
10062306a36Sopenharmony_ci	{ 1000000000, 2000000000, 0 },
10162306a36Sopenharmony_ci	{ 750000000, 1500000000, 1 },
10262306a36Sopenharmony_ci	{ 500000000, 1000000000, 2 },
10362306a36Sopenharmony_ci	{ 250000000, 500000000, 3 },
10462306a36Sopenharmony_ci};
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_cistatic struct pll_vco mmpll3_vco[] = {
10762306a36Sopenharmony_ci	{ 750000000, 1500000000, 1 },
10862306a36Sopenharmony_ci};
10962306a36Sopenharmony_ci
11062306a36Sopenharmony_cistatic const struct alpha_pll_config mmpll10_config = {
11162306a36Sopenharmony_ci	.l = 0x1e,
11262306a36Sopenharmony_ci	.config_ctl_val = 0x00004289,
11362306a36Sopenharmony_ci	.main_output_mask = 0x1,
11462306a36Sopenharmony_ci};
11562306a36Sopenharmony_ci
11662306a36Sopenharmony_cistatic struct clk_alpha_pll mmpll10 = {
11762306a36Sopenharmony_ci	.offset = 0x190,
11862306a36Sopenharmony_ci	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
11962306a36Sopenharmony_ci	.clkr = {
12062306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
12162306a36Sopenharmony_ci			.name = "mmpll10",
12262306a36Sopenharmony_ci			.parent_data = &(const struct clk_parent_data){
12362306a36Sopenharmony_ci				.fw_name = "xo",
12462306a36Sopenharmony_ci			},
12562306a36Sopenharmony_ci			.num_parents = 1,
12662306a36Sopenharmony_ci			.ops = &clk_alpha_pll_ops,
12762306a36Sopenharmony_ci		},
12862306a36Sopenharmony_ci	},
12962306a36Sopenharmony_ci};
13062306a36Sopenharmony_ci
13162306a36Sopenharmony_cistatic const struct alpha_pll_config mmpll3_config = {
13262306a36Sopenharmony_ci	.l = 0x2e,
13362306a36Sopenharmony_ci	.config_ctl_val = 0x4001055b,
13462306a36Sopenharmony_ci	.vco_val = 0x1 << 20,
13562306a36Sopenharmony_ci	.vco_mask = 0x3 << 20,
13662306a36Sopenharmony_ci	.main_output_mask = 0x1,
13762306a36Sopenharmony_ci};
13862306a36Sopenharmony_ci
13962306a36Sopenharmony_cistatic struct clk_alpha_pll mmpll3 = {
14062306a36Sopenharmony_ci	.offset = 0x0,
14162306a36Sopenharmony_ci	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
14262306a36Sopenharmony_ci	.vco_table = mmpll3_vco,
14362306a36Sopenharmony_ci	.num_vco = ARRAY_SIZE(mmpll3_vco),
14462306a36Sopenharmony_ci	.clkr = {
14562306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
14662306a36Sopenharmony_ci			.name = "mmpll3",
14762306a36Sopenharmony_ci			.parent_data = &(const struct clk_parent_data){
14862306a36Sopenharmony_ci				.fw_name = "xo",
14962306a36Sopenharmony_ci			},
15062306a36Sopenharmony_ci			.num_parents = 1,
15162306a36Sopenharmony_ci			.ops = &clk_alpha_pll_ops,
15262306a36Sopenharmony_ci		},
15362306a36Sopenharmony_ci	},
15462306a36Sopenharmony_ci};
15562306a36Sopenharmony_ci
15662306a36Sopenharmony_cistatic const struct alpha_pll_config mmpll4_config = {
15762306a36Sopenharmony_ci	.l = 0x28,
15862306a36Sopenharmony_ci	.config_ctl_val = 0x4001055b,
15962306a36Sopenharmony_ci	.vco_val = 0x2 << 20,
16062306a36Sopenharmony_ci	.vco_mask = 0x3 << 20,
16162306a36Sopenharmony_ci	.main_output_mask = 0x1,
16262306a36Sopenharmony_ci};
16362306a36Sopenharmony_ci
16462306a36Sopenharmony_cistatic struct clk_alpha_pll mmpll4 = {
16562306a36Sopenharmony_ci	.offset = 0x50,
16662306a36Sopenharmony_ci	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
16762306a36Sopenharmony_ci	.vco_table = vco,
16862306a36Sopenharmony_ci	.num_vco = ARRAY_SIZE(vco),
16962306a36Sopenharmony_ci	.clkr = {
17062306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
17162306a36Sopenharmony_ci			.name = "mmpll4",
17262306a36Sopenharmony_ci			.parent_data = &(const struct clk_parent_data){
17362306a36Sopenharmony_ci				.fw_name = "xo",
17462306a36Sopenharmony_ci			},
17562306a36Sopenharmony_ci			.num_parents = 1,
17662306a36Sopenharmony_ci			.ops = &clk_alpha_pll_ops,
17762306a36Sopenharmony_ci		},
17862306a36Sopenharmony_ci	},
17962306a36Sopenharmony_ci};
18062306a36Sopenharmony_ci
18162306a36Sopenharmony_cistatic const struct alpha_pll_config mmpll5_config = {
18262306a36Sopenharmony_ci	.l = 0x2a,
18362306a36Sopenharmony_ci	.config_ctl_val = 0x4001055b,
18462306a36Sopenharmony_ci	.alpha_hi = 0xf8,
18562306a36Sopenharmony_ci	.alpha_en_mask = BIT(24),
18662306a36Sopenharmony_ci	.vco_val = 0x2 << 20,
18762306a36Sopenharmony_ci	.vco_mask = 0x3 << 20,
18862306a36Sopenharmony_ci	.main_output_mask = 0x1,
18962306a36Sopenharmony_ci};
19062306a36Sopenharmony_ci
19162306a36Sopenharmony_cistatic struct clk_alpha_pll mmpll5 = {
19262306a36Sopenharmony_ci	.offset = 0xa0,
19362306a36Sopenharmony_ci	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
19462306a36Sopenharmony_ci	.vco_table = vco,
19562306a36Sopenharmony_ci	.num_vco = ARRAY_SIZE(vco),
19662306a36Sopenharmony_ci	.clkr = {
19762306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
19862306a36Sopenharmony_ci			.name = "mmpll5",
19962306a36Sopenharmony_ci			.parent_data = &(const struct clk_parent_data){
20062306a36Sopenharmony_ci				.fw_name = "xo",
20162306a36Sopenharmony_ci			},
20262306a36Sopenharmony_ci			.num_parents = 1,
20362306a36Sopenharmony_ci			.ops = &clk_alpha_pll_ops,
20462306a36Sopenharmony_ci		},
20562306a36Sopenharmony_ci	},
20662306a36Sopenharmony_ci};
20762306a36Sopenharmony_ci
20862306a36Sopenharmony_cistatic const struct alpha_pll_config mmpll7_config = {
20962306a36Sopenharmony_ci	.l = 0x32,
21062306a36Sopenharmony_ci	.config_ctl_val = 0x4001055b,
21162306a36Sopenharmony_ci	.vco_val = 0x2 << 20,
21262306a36Sopenharmony_ci	.vco_mask = 0x3 << 20,
21362306a36Sopenharmony_ci	.main_output_mask = 0x1,
21462306a36Sopenharmony_ci};
21562306a36Sopenharmony_ci
21662306a36Sopenharmony_cistatic struct clk_alpha_pll mmpll7 = {
21762306a36Sopenharmony_ci	.offset = 0x140,
21862306a36Sopenharmony_ci	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
21962306a36Sopenharmony_ci	.vco_table = vco,
22062306a36Sopenharmony_ci	.num_vco = ARRAY_SIZE(vco),
22162306a36Sopenharmony_ci	.clkr = {
22262306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
22362306a36Sopenharmony_ci			.name = "mmpll7",
22462306a36Sopenharmony_ci			.parent_data = &(const struct clk_parent_data){
22562306a36Sopenharmony_ci				.fw_name = "xo",
22662306a36Sopenharmony_ci			},
22762306a36Sopenharmony_ci			.num_parents = 1,
22862306a36Sopenharmony_ci			.ops = &clk_alpha_pll_ops,
22962306a36Sopenharmony_ci		},
23062306a36Sopenharmony_ci	},
23162306a36Sopenharmony_ci};
23262306a36Sopenharmony_ci
23362306a36Sopenharmony_cistatic const struct alpha_pll_config mmpll8_config = {
23462306a36Sopenharmony_ci	.l = 0x30,
23562306a36Sopenharmony_ci	.alpha_hi = 0x70,
23662306a36Sopenharmony_ci	.alpha_en_mask = BIT(24),
23762306a36Sopenharmony_ci	.config_ctl_val = 0x4001055b,
23862306a36Sopenharmony_ci	.vco_val = 0x2 << 20,
23962306a36Sopenharmony_ci	.vco_mask = 0x3 << 20,
24062306a36Sopenharmony_ci	.main_output_mask = 0x1,
24162306a36Sopenharmony_ci};
24262306a36Sopenharmony_ci
24362306a36Sopenharmony_cistatic struct clk_alpha_pll mmpll8 = {
24462306a36Sopenharmony_ci	.offset = 0x1c0,
24562306a36Sopenharmony_ci	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
24662306a36Sopenharmony_ci	.vco_table = vco,
24762306a36Sopenharmony_ci	.num_vco = ARRAY_SIZE(vco),
24862306a36Sopenharmony_ci	.clkr = {
24962306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
25062306a36Sopenharmony_ci			.name = "mmpll8",
25162306a36Sopenharmony_ci			.parent_data = &(const struct clk_parent_data){
25262306a36Sopenharmony_ci				.fw_name = "xo",
25362306a36Sopenharmony_ci			},
25462306a36Sopenharmony_ci			.num_parents = 1,
25562306a36Sopenharmony_ci			.ops = &clk_alpha_pll_ops,
25662306a36Sopenharmony_ci		},
25762306a36Sopenharmony_ci	},
25862306a36Sopenharmony_ci};
25962306a36Sopenharmony_ci
26062306a36Sopenharmony_cistatic const struct clk_parent_data mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll8_gpll0_gpll0_div[] = {
26162306a36Sopenharmony_ci	{ .fw_name = "xo" },
26262306a36Sopenharmony_ci	{ .hw = &mmpll0.clkr.hw },
26362306a36Sopenharmony_ci	{ .hw = &mmpll4.clkr.hw },
26462306a36Sopenharmony_ci	{ .hw = &mmpll7.clkr.hw },
26562306a36Sopenharmony_ci	{ .hw = &mmpll8.clkr.hw },
26662306a36Sopenharmony_ci	{ .fw_name = "gpll0" },
26762306a36Sopenharmony_ci	{ .fw_name = "gpll0_div" },
26862306a36Sopenharmony_ci};
26962306a36Sopenharmony_ci
27062306a36Sopenharmony_cistatic const struct parent_map mmcc_xo_dsibyte_map[] = {
27162306a36Sopenharmony_ci	{ P_XO, 0 },
27262306a36Sopenharmony_ci	{ P_DSI0PLL_BYTE, 1 },
27362306a36Sopenharmony_ci	{ P_DSI1PLL_BYTE, 2 },
27462306a36Sopenharmony_ci};
27562306a36Sopenharmony_ci
27662306a36Sopenharmony_cistatic const struct clk_parent_data mmcc_xo_dsibyte[] = {
27762306a36Sopenharmony_ci	{ .fw_name = "xo" },
27862306a36Sopenharmony_ci	{ .fw_name = "dsi0pllbyte" },
27962306a36Sopenharmony_ci	{ .fw_name = "dsi1pllbyte" },
28062306a36Sopenharmony_ci};
28162306a36Sopenharmony_ci
28262306a36Sopenharmony_cistatic const struct parent_map mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map[] = {
28362306a36Sopenharmony_ci	{ P_XO, 0 },
28462306a36Sopenharmony_ci	{ P_MMPLL0, 1 },
28562306a36Sopenharmony_ci	{ P_MMPLL4, 2 },
28662306a36Sopenharmony_ci	{ P_MMPLL7, 3 },
28762306a36Sopenharmony_ci	{ P_MMPLL10, 4 },
28862306a36Sopenharmony_ci	{ P_GPLL0, 5 },
28962306a36Sopenharmony_ci	{ P_GPLL0_DIV, 6 },
29062306a36Sopenharmony_ci};
29162306a36Sopenharmony_ci
29262306a36Sopenharmony_cistatic const struct clk_parent_data mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div[] = {
29362306a36Sopenharmony_ci	{ .fw_name = "xo" },
29462306a36Sopenharmony_ci	{ .hw = &mmpll0.clkr.hw },
29562306a36Sopenharmony_ci	{ .hw = &mmpll4.clkr.hw },
29662306a36Sopenharmony_ci	{ .hw = &mmpll7.clkr.hw },
29762306a36Sopenharmony_ci	{ .hw = &mmpll10.clkr.hw },
29862306a36Sopenharmony_ci	{ .fw_name = "gpll0" },
29962306a36Sopenharmony_ci	{ .fw_name = "gpll0_div" },
30062306a36Sopenharmony_ci};
30162306a36Sopenharmony_ci
30262306a36Sopenharmony_cistatic const struct parent_map mmcc_xo_mmpll4_mmpll7_mmpll10_sleep_gpll0_gpll0_div_map[] = {
30362306a36Sopenharmony_ci	{ P_XO, 0 },
30462306a36Sopenharmony_ci	{ P_MMPLL4, 1 },
30562306a36Sopenharmony_ci	{ P_MMPLL7, 2 },
30662306a36Sopenharmony_ci	{ P_MMPLL10, 3 },
30762306a36Sopenharmony_ci	{ P_SLEEP_CLK, 4 },
30862306a36Sopenharmony_ci	{ P_GPLL0, 5 },
30962306a36Sopenharmony_ci	{ P_GPLL0_DIV, 6 },
31062306a36Sopenharmony_ci};
31162306a36Sopenharmony_ci
31262306a36Sopenharmony_cistatic const struct clk_parent_data mmcc_xo_mmpll4_mmpll7_mmpll10_sleep_gpll0_gpll0_div[] = {
31362306a36Sopenharmony_ci	{ .fw_name = "xo" },
31462306a36Sopenharmony_ci	{ .hw = &mmpll4.clkr.hw },
31562306a36Sopenharmony_ci	{ .hw = &mmpll7.clkr.hw },
31662306a36Sopenharmony_ci	{ .hw = &mmpll10.clkr.hw },
31762306a36Sopenharmony_ci	{ .fw_name = "sleep_clk" },
31862306a36Sopenharmony_ci	{ .fw_name = "gpll0" },
31962306a36Sopenharmony_ci	{ .fw_name = "gpll0_div" },
32062306a36Sopenharmony_ci};
32162306a36Sopenharmony_ci
32262306a36Sopenharmony_cistatic const struct parent_map mmcc_xo_mmpll0_mmpll7_mmpll10_sleep_gpll0_gpll0_div_map[] = {
32362306a36Sopenharmony_ci	{ P_XO, 0 },
32462306a36Sopenharmony_ci	{ P_MMPLL0, 1 },
32562306a36Sopenharmony_ci	{ P_MMPLL7, 2 },
32662306a36Sopenharmony_ci	{ P_MMPLL10, 3 },
32762306a36Sopenharmony_ci	{ P_SLEEP_CLK, 4 },
32862306a36Sopenharmony_ci	{ P_GPLL0, 5 },
32962306a36Sopenharmony_ci	{ P_GPLL0_DIV, 6 },
33062306a36Sopenharmony_ci};
33162306a36Sopenharmony_ci
33262306a36Sopenharmony_cistatic const struct clk_parent_data mmcc_xo_mmpll0_mmpll7_mmpll10_sleep_gpll0_gpll0_div[] = {
33362306a36Sopenharmony_ci	{ .fw_name = "xo" },
33462306a36Sopenharmony_ci	{ .hw = &mmpll0.clkr.hw },
33562306a36Sopenharmony_ci	{ .hw = &mmpll7.clkr.hw },
33662306a36Sopenharmony_ci	{ .hw = &mmpll10.clkr.hw },
33762306a36Sopenharmony_ci	{ .fw_name = "sleep_clk" },
33862306a36Sopenharmony_ci	{ .fw_name = "gpll0" },
33962306a36Sopenharmony_ci	{ .fw_name = "gpll0_div" },
34062306a36Sopenharmony_ci};
34162306a36Sopenharmony_ci
34262306a36Sopenharmony_cistatic const struct parent_map mmcc_xo_gpll0_gpll0_div_map[] = {
34362306a36Sopenharmony_ci	{ P_XO, 0 },
34462306a36Sopenharmony_ci	{ P_GPLL0, 5 },
34562306a36Sopenharmony_ci	{ P_GPLL0_DIV, 6 },
34662306a36Sopenharmony_ci};
34762306a36Sopenharmony_ci
34862306a36Sopenharmony_cistatic const struct clk_parent_data mmcc_xo_gpll0_gpll0_div[] = {
34962306a36Sopenharmony_ci	{ .fw_name = "xo" },
35062306a36Sopenharmony_ci	{ .fw_name = "gpll0" },
35162306a36Sopenharmony_ci	{ .fw_name = "gpll0_div" },
35262306a36Sopenharmony_ci};
35362306a36Sopenharmony_ci
35462306a36Sopenharmony_cistatic const struct parent_map mmcc_xo_dplink_dpvco_map[] = {
35562306a36Sopenharmony_ci	{ P_XO, 0 },
35662306a36Sopenharmony_ci	{ P_DP_PHY_PLL_LINK_CLK, 1 },
35762306a36Sopenharmony_ci	{ P_DP_PHY_PLL_VCO_DIV, 2 },
35862306a36Sopenharmony_ci};
35962306a36Sopenharmony_ci
36062306a36Sopenharmony_cistatic const struct clk_parent_data mmcc_xo_dplink_dpvco[] = {
36162306a36Sopenharmony_ci	{ .fw_name = "xo" },
36262306a36Sopenharmony_ci	{ .fw_name = "dp_link_2x_clk_divsel_five" },
36362306a36Sopenharmony_ci	{ .fw_name = "dp_vco_divided_clk_src_mux" },
36462306a36Sopenharmony_ci};
36562306a36Sopenharmony_ci
36662306a36Sopenharmony_cistatic const struct parent_map mmcc_xo_mmpll0_mmpll5_mmpll7_gpll0_gpll0_div_map[] = {
36762306a36Sopenharmony_ci	{ P_XO, 0 },
36862306a36Sopenharmony_ci	{ P_MMPLL0, 1 },
36962306a36Sopenharmony_ci	{ P_MMPLL5, 2 },
37062306a36Sopenharmony_ci	{ P_MMPLL7, 3 },
37162306a36Sopenharmony_ci	{ P_GPLL0, 5 },
37262306a36Sopenharmony_ci	{ P_GPLL0_DIV, 6 },
37362306a36Sopenharmony_ci};
37462306a36Sopenharmony_ci
37562306a36Sopenharmony_cistatic const struct clk_parent_data mmcc_xo_mmpll0_mmpll5_mmpll7_gpll0_gpll0_div[] = {
37662306a36Sopenharmony_ci	{ .fw_name = "xo" },
37762306a36Sopenharmony_ci	{ .hw = &mmpll0.clkr.hw },
37862306a36Sopenharmony_ci	{ .hw = &mmpll5.clkr.hw },
37962306a36Sopenharmony_ci	{ .hw = &mmpll7.clkr.hw },
38062306a36Sopenharmony_ci	{ .fw_name = "gpll0" },
38162306a36Sopenharmony_ci	{ .fw_name = "gpll0_div" },
38262306a36Sopenharmony_ci};
38362306a36Sopenharmony_ci
38462306a36Sopenharmony_cistatic const struct parent_map mmcc_xo_dsi0pll_dsi1pll_map[] = {
38562306a36Sopenharmony_ci	{ P_XO, 0 },
38662306a36Sopenharmony_ci	{ P_DSI0PLL, 1 },
38762306a36Sopenharmony_ci	{ P_DSI1PLL, 2 },
38862306a36Sopenharmony_ci};
38962306a36Sopenharmony_ci
39062306a36Sopenharmony_cistatic const struct clk_parent_data mmcc_xo_dsi0pll_dsi1pll[] = {
39162306a36Sopenharmony_ci	{ .fw_name = "xo" },
39262306a36Sopenharmony_ci	{ .fw_name = "dsi0pll" },
39362306a36Sopenharmony_ci	{ .fw_name = "dsi1pll" },
39462306a36Sopenharmony_ci};
39562306a36Sopenharmony_ci
39662306a36Sopenharmony_cistatic const struct parent_map mmcc_mmpll0_mmpll4_mmpll7_mmpll10_mmpll6_gpll0_map[] = {
39762306a36Sopenharmony_ci	{ P_XO, 0 },
39862306a36Sopenharmony_ci	{ P_MMPLL0, 1 },
39962306a36Sopenharmony_ci	{ P_MMPLL4, 2 },
40062306a36Sopenharmony_ci	{ P_MMPLL7, 3 },
40162306a36Sopenharmony_ci	{ P_MMPLL10, 4 },
40262306a36Sopenharmony_ci	{ P_MMPLL6, 5 },
40362306a36Sopenharmony_ci	{ P_GPLL0, 6 },
40462306a36Sopenharmony_ci};
40562306a36Sopenharmony_ci
40662306a36Sopenharmony_cistatic const struct clk_parent_data mmcc_mmpll0_mmpll4_mmpll7_mmpll10_mmpll6_gpll0[] = {
40762306a36Sopenharmony_ci	{ .fw_name = "xo" },
40862306a36Sopenharmony_ci	{ .hw = &mmpll0.clkr.hw },
40962306a36Sopenharmony_ci	{ .hw = &mmpll4.clkr.hw },
41062306a36Sopenharmony_ci	{ .hw = &mmpll7.clkr.hw },
41162306a36Sopenharmony_ci	{ .hw = &mmpll10.clkr.hw },
41262306a36Sopenharmony_ci	{ .hw = &mmpll6.clkr.hw },
41362306a36Sopenharmony_ci	{ .fw_name = "gpll0" },
41462306a36Sopenharmony_ci};
41562306a36Sopenharmony_ci
41662306a36Sopenharmony_cistatic const struct parent_map mmcc_xo_mmpll0_gpll0_gpll0_div_map[] = {
41762306a36Sopenharmony_ci	{ P_XO, 0 },
41862306a36Sopenharmony_ci	{ P_MMPLL0, 1 },
41962306a36Sopenharmony_ci	{ P_GPLL0, 5 },
42062306a36Sopenharmony_ci	{ P_GPLL0_DIV, 6 },
42162306a36Sopenharmony_ci};
42262306a36Sopenharmony_ci
42362306a36Sopenharmony_cistatic const struct clk_parent_data mmcc_xo_mmpll0_gpll0_gpll0_div[] = {
42462306a36Sopenharmony_ci	{ .fw_name = "xo" },
42562306a36Sopenharmony_ci	{ .hw = &mmpll0.clkr.hw },
42662306a36Sopenharmony_ci	{ .fw_name = "gpll0" },
42762306a36Sopenharmony_ci	{ .fw_name = "gpll0_div" },
42862306a36Sopenharmony_ci};
42962306a36Sopenharmony_ci
43062306a36Sopenharmony_cistatic const struct parent_map mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_mmpll6_map[] = {
43162306a36Sopenharmony_ci	{ P_XO, 0 },
43262306a36Sopenharmony_ci	{ P_MMPLL0, 1 },
43362306a36Sopenharmony_ci	{ P_MMPLL4, 2 },
43462306a36Sopenharmony_ci	{ P_MMPLL7, 3 },
43562306a36Sopenharmony_ci	{ P_MMPLL10, 4 },
43662306a36Sopenharmony_ci	{ P_GPLL0, 5 },
43762306a36Sopenharmony_ci	{ P_MMPLL6, 6 },
43862306a36Sopenharmony_ci};
43962306a36Sopenharmony_ci
44062306a36Sopenharmony_cistatic const struct clk_parent_data mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_mmpll6[] = {
44162306a36Sopenharmony_ci	{ .fw_name = "xo" },
44262306a36Sopenharmony_ci	{ .hw = &mmpll0.clkr.hw },
44362306a36Sopenharmony_ci	{ .hw = &mmpll4.clkr.hw },
44462306a36Sopenharmony_ci	{ .hw = &mmpll7.clkr.hw },
44562306a36Sopenharmony_ci	{ .hw = &mmpll10.clkr.hw },
44662306a36Sopenharmony_ci	{ .fw_name = "gpll0" },
44762306a36Sopenharmony_ci	{ .hw = &mmpll6.clkr.hw },
44862306a36Sopenharmony_ci};
44962306a36Sopenharmony_ci
45062306a36Sopenharmony_cistatic const struct parent_map mmcc_xo_mmpll0_mmpll8_mmpll3_mmpll6_gpll0_mmpll7_map[] = {
45162306a36Sopenharmony_ci	{ P_XO, 0 },
45262306a36Sopenharmony_ci	{ P_MMPLL0, 1 },
45362306a36Sopenharmony_ci	{ P_MMPLL8, 2 },
45462306a36Sopenharmony_ci	{ P_MMPLL3, 3 },
45562306a36Sopenharmony_ci	{ P_MMPLL6, 4 },
45662306a36Sopenharmony_ci	{ P_GPLL0, 5 },
45762306a36Sopenharmony_ci	{ P_MMPLL7, 6 },
45862306a36Sopenharmony_ci};
45962306a36Sopenharmony_ci
46062306a36Sopenharmony_cistatic const struct clk_parent_data mmcc_xo_mmpll0_mmpll8_mmpll3_mmpll6_gpll0_mmpll7[] = {
46162306a36Sopenharmony_ci	{ .fw_name = "xo" },
46262306a36Sopenharmony_ci	{ .hw = &mmpll0.clkr.hw },
46362306a36Sopenharmony_ci	{ .hw = &mmpll8.clkr.hw },
46462306a36Sopenharmony_ci	{ .hw = &mmpll3.clkr.hw },
46562306a36Sopenharmony_ci	{ .hw = &mmpll6.clkr.hw },
46662306a36Sopenharmony_ci	{ .fw_name = "gpll0" },
46762306a36Sopenharmony_ci	{ .hw = &mmpll7.clkr.hw },
46862306a36Sopenharmony_ci};
46962306a36Sopenharmony_ci
47062306a36Sopenharmony_cistatic const struct freq_tbl ftbl_ahb_clk_src[] = {
47162306a36Sopenharmony_ci	F(19200000, P_XO, 1, 0, 0),
47262306a36Sopenharmony_ci	F(40000000, P_GPLL0_DIV, 7.5, 0, 0),
47362306a36Sopenharmony_ci	F(80800000, P_MMPLL0, 10, 0, 0),
47462306a36Sopenharmony_ci	{ }
47562306a36Sopenharmony_ci};
47662306a36Sopenharmony_ci
47762306a36Sopenharmony_cistatic struct clk_rcg2 ahb_clk_src = {
47862306a36Sopenharmony_ci	.cmd_rcgr = 0x5000,
47962306a36Sopenharmony_ci	.mnd_width = 0,
48062306a36Sopenharmony_ci	.hid_width = 5,
48162306a36Sopenharmony_ci	.parent_map = mmcc_xo_mmpll0_gpll0_gpll0_div_map,
48262306a36Sopenharmony_ci	.freq_tbl = ftbl_ahb_clk_src,
48362306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
48462306a36Sopenharmony_ci		.name = "ahb_clk_src",
48562306a36Sopenharmony_ci		.parent_data = mmcc_xo_mmpll0_gpll0_gpll0_div,
48662306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_gpll0_gpll0_div),
48762306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
48862306a36Sopenharmony_ci	},
48962306a36Sopenharmony_ci};
49062306a36Sopenharmony_ci
49162306a36Sopenharmony_cistatic struct clk_rcg2 byte0_clk_src = {
49262306a36Sopenharmony_ci	.cmd_rcgr = 0x2120,
49362306a36Sopenharmony_ci	.mnd_width = 0,
49462306a36Sopenharmony_ci	.hid_width = 5,
49562306a36Sopenharmony_ci	.parent_map = mmcc_xo_dsibyte_map,
49662306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
49762306a36Sopenharmony_ci		.name = "byte0_clk_src",
49862306a36Sopenharmony_ci		.parent_data = mmcc_xo_dsibyte,
49962306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_dsibyte),
50062306a36Sopenharmony_ci		.ops = &clk_byte2_ops,
50162306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT | CLK_GET_RATE_NOCACHE,
50262306a36Sopenharmony_ci	},
50362306a36Sopenharmony_ci};
50462306a36Sopenharmony_ci
50562306a36Sopenharmony_cistatic struct clk_rcg2 byte1_clk_src = {
50662306a36Sopenharmony_ci	.cmd_rcgr = 0x2140,
50762306a36Sopenharmony_ci	.mnd_width = 0,
50862306a36Sopenharmony_ci	.hid_width = 5,
50962306a36Sopenharmony_ci	.parent_map = mmcc_xo_dsibyte_map,
51062306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
51162306a36Sopenharmony_ci		.name = "byte1_clk_src",
51262306a36Sopenharmony_ci		.parent_data = mmcc_xo_dsibyte,
51362306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_dsibyte),
51462306a36Sopenharmony_ci		.ops = &clk_byte2_ops,
51562306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT | CLK_GET_RATE_NOCACHE,
51662306a36Sopenharmony_ci	},
51762306a36Sopenharmony_ci};
51862306a36Sopenharmony_ci
51962306a36Sopenharmony_cistatic const struct freq_tbl ftbl_camss_gp0_clk_src[] = {
52062306a36Sopenharmony_ci	F(10000, P_XO, 16, 1, 120),
52162306a36Sopenharmony_ci	F(24000, P_XO, 16, 1, 50),
52262306a36Sopenharmony_ci	F(6000000, P_GPLL0_DIV, 10, 1, 5),
52362306a36Sopenharmony_ci	F(12000000, P_GPLL0_DIV, 10, 2, 5),
52462306a36Sopenharmony_ci	F(13043478, P_GPLL0_DIV, 1, 1, 23),
52562306a36Sopenharmony_ci	F(24000000, P_GPLL0_DIV, 1, 2, 25),
52662306a36Sopenharmony_ci	F(50000000, P_GPLL0_DIV, 6, 0, 0),
52762306a36Sopenharmony_ci	F(100000000, P_GPLL0_DIV, 3, 0, 0),
52862306a36Sopenharmony_ci	F(200000000, P_GPLL0, 3, 0, 0),
52962306a36Sopenharmony_ci	{ }
53062306a36Sopenharmony_ci};
53162306a36Sopenharmony_ci
53262306a36Sopenharmony_cistatic struct clk_rcg2 camss_gp0_clk_src = {
53362306a36Sopenharmony_ci	.cmd_rcgr = 0x3420,
53462306a36Sopenharmony_ci	.mnd_width = 8,
53562306a36Sopenharmony_ci	.hid_width = 5,
53662306a36Sopenharmony_ci	.parent_map = mmcc_xo_mmpll0_mmpll7_mmpll10_sleep_gpll0_gpll0_div_map,
53762306a36Sopenharmony_ci	.freq_tbl = ftbl_camss_gp0_clk_src,
53862306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
53962306a36Sopenharmony_ci		.name = "camss_gp0_clk_src",
54062306a36Sopenharmony_ci		.parent_data = mmcc_xo_mmpll0_mmpll7_mmpll10_sleep_gpll0_gpll0_div,
54162306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_mmpll7_mmpll10_sleep_gpll0_gpll0_div),
54262306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
54362306a36Sopenharmony_ci	},
54462306a36Sopenharmony_ci};
54562306a36Sopenharmony_ci
54662306a36Sopenharmony_cistatic struct clk_rcg2 camss_gp1_clk_src = {
54762306a36Sopenharmony_ci	.cmd_rcgr = 0x3450,
54862306a36Sopenharmony_ci	.mnd_width = 8,
54962306a36Sopenharmony_ci	.hid_width = 5,
55062306a36Sopenharmony_ci	.parent_map = mmcc_xo_mmpll0_mmpll7_mmpll10_sleep_gpll0_gpll0_div_map,
55162306a36Sopenharmony_ci	.freq_tbl = ftbl_camss_gp0_clk_src,
55262306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
55362306a36Sopenharmony_ci		.name = "camss_gp1_clk_src",
55462306a36Sopenharmony_ci		.parent_data = mmcc_xo_mmpll0_mmpll7_mmpll10_sleep_gpll0_gpll0_div,
55562306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_mmpll7_mmpll10_sleep_gpll0_gpll0_div),
55662306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
55762306a36Sopenharmony_ci	},
55862306a36Sopenharmony_ci};
55962306a36Sopenharmony_ci
56062306a36Sopenharmony_cistatic const struct freq_tbl ftbl_cci_clk_src[] = {
56162306a36Sopenharmony_ci	F(37500000, P_GPLL0_DIV, 8, 0, 0),
56262306a36Sopenharmony_ci	F(50000000, P_GPLL0_DIV, 6, 0, 0),
56362306a36Sopenharmony_ci	F(100000000, P_GPLL0, 6, 0, 0),
56462306a36Sopenharmony_ci	{ }
56562306a36Sopenharmony_ci};
56662306a36Sopenharmony_ci
56762306a36Sopenharmony_cistatic struct clk_rcg2 cci_clk_src = {
56862306a36Sopenharmony_ci	.cmd_rcgr = 0x3300,
56962306a36Sopenharmony_ci	.mnd_width = 8,
57062306a36Sopenharmony_ci	.hid_width = 5,
57162306a36Sopenharmony_ci	.parent_map = mmcc_xo_mmpll0_mmpll7_mmpll10_sleep_gpll0_gpll0_div_map,
57262306a36Sopenharmony_ci	.freq_tbl = ftbl_cci_clk_src,
57362306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
57462306a36Sopenharmony_ci		.name = "cci_clk_src",
57562306a36Sopenharmony_ci		.parent_data = mmcc_xo_mmpll0_mmpll7_mmpll10_sleep_gpll0_gpll0_div,
57662306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_mmpll7_mmpll10_sleep_gpll0_gpll0_div),
57762306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
57862306a36Sopenharmony_ci	},
57962306a36Sopenharmony_ci};
58062306a36Sopenharmony_ci
58162306a36Sopenharmony_cistatic const struct freq_tbl ftbl_cpp_clk_src[] = {
58262306a36Sopenharmony_ci	F(120000000, P_GPLL0, 5, 0, 0),
58362306a36Sopenharmony_ci	F(256000000, P_MMPLL4, 3, 0, 0),
58462306a36Sopenharmony_ci	F(384000000, P_MMPLL4, 2, 0, 0),
58562306a36Sopenharmony_ci	F(480000000, P_MMPLL7, 2, 0, 0),
58662306a36Sopenharmony_ci	F(540000000, P_MMPLL6, 2, 0, 0),
58762306a36Sopenharmony_ci	F(576000000, P_MMPLL10, 1, 0, 0),
58862306a36Sopenharmony_ci	{ }
58962306a36Sopenharmony_ci};
59062306a36Sopenharmony_ci
59162306a36Sopenharmony_cistatic struct clk_rcg2 cpp_clk_src = {
59262306a36Sopenharmony_ci	.cmd_rcgr = 0x3640,
59362306a36Sopenharmony_ci	.mnd_width = 0,
59462306a36Sopenharmony_ci	.hid_width = 5,
59562306a36Sopenharmony_ci	.parent_map = mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_mmpll6_map,
59662306a36Sopenharmony_ci	.freq_tbl = ftbl_cpp_clk_src,
59762306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
59862306a36Sopenharmony_ci		.name = "cpp_clk_src",
59962306a36Sopenharmony_ci		.parent_data = mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_mmpll6,
60062306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_mmpll6),
60162306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
60262306a36Sopenharmony_ci	},
60362306a36Sopenharmony_ci};
60462306a36Sopenharmony_ci
60562306a36Sopenharmony_cistatic const struct freq_tbl ftbl_csi0_clk_src[] = {
60662306a36Sopenharmony_ci	F(100000000, P_GPLL0_DIV, 3, 0, 0),
60762306a36Sopenharmony_ci	F(200000000, P_GPLL0, 3, 0, 0),
60862306a36Sopenharmony_ci	F(310000000, P_MMPLL8, 3, 0, 0),
60962306a36Sopenharmony_ci	F(404000000, P_MMPLL0, 2, 0, 0),
61062306a36Sopenharmony_ci	F(465000000, P_MMPLL8, 2, 0, 0),
61162306a36Sopenharmony_ci	{ }
61262306a36Sopenharmony_ci};
61362306a36Sopenharmony_ci
61462306a36Sopenharmony_cistatic struct clk_rcg2 csi0_clk_src = {
61562306a36Sopenharmony_ci	.cmd_rcgr = 0x3090,
61662306a36Sopenharmony_ci	.mnd_width = 0,
61762306a36Sopenharmony_ci	.hid_width = 5,
61862306a36Sopenharmony_ci	.parent_map = mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll8_gpll0_gpll0_div_map,
61962306a36Sopenharmony_ci	.freq_tbl = ftbl_csi0_clk_src,
62062306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
62162306a36Sopenharmony_ci		.name = "csi0_clk_src",
62262306a36Sopenharmony_ci		.parent_data = mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll8_gpll0_gpll0_div,
62362306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll8_gpll0_gpll0_div),
62462306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
62562306a36Sopenharmony_ci	},
62662306a36Sopenharmony_ci};
62762306a36Sopenharmony_ci
62862306a36Sopenharmony_cistatic const struct freq_tbl ftbl_csi0phytimer_clk_src[] = {
62962306a36Sopenharmony_ci	F(100000000, P_GPLL0_DIV, 3, 0, 0),
63062306a36Sopenharmony_ci	F(200000000, P_GPLL0, 3, 0, 0),
63162306a36Sopenharmony_ci	F(269333333, P_MMPLL0, 3, 0, 0),
63262306a36Sopenharmony_ci	{ }
63362306a36Sopenharmony_ci};
63462306a36Sopenharmony_ci
63562306a36Sopenharmony_cistatic struct clk_rcg2 csi0phytimer_clk_src = {
63662306a36Sopenharmony_ci	.cmd_rcgr = 0x3000,
63762306a36Sopenharmony_ci	.mnd_width = 0,
63862306a36Sopenharmony_ci	.hid_width = 5,
63962306a36Sopenharmony_ci	.parent_map = mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map,
64062306a36Sopenharmony_ci	.freq_tbl = ftbl_csi0phytimer_clk_src,
64162306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
64262306a36Sopenharmony_ci		.name = "csi0phytimer_clk_src",
64362306a36Sopenharmony_ci		.parent_data = mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div,
64462306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div),
64562306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
64662306a36Sopenharmony_ci	},
64762306a36Sopenharmony_ci};
64862306a36Sopenharmony_ci
64962306a36Sopenharmony_cistatic struct clk_rcg2 csi1_clk_src = {
65062306a36Sopenharmony_ci	.cmd_rcgr = 0x3100,
65162306a36Sopenharmony_ci	.mnd_width = 0,
65262306a36Sopenharmony_ci	.hid_width = 5,
65362306a36Sopenharmony_ci	.parent_map = mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll8_gpll0_gpll0_div_map,
65462306a36Sopenharmony_ci	.freq_tbl = ftbl_csi0_clk_src,
65562306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
65662306a36Sopenharmony_ci		.name = "csi1_clk_src",
65762306a36Sopenharmony_ci		.parent_data = mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll8_gpll0_gpll0_div,
65862306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll8_gpll0_gpll0_div),
65962306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
66062306a36Sopenharmony_ci	},
66162306a36Sopenharmony_ci};
66262306a36Sopenharmony_ci
66362306a36Sopenharmony_cistatic struct clk_rcg2 csi1phytimer_clk_src = {
66462306a36Sopenharmony_ci	.cmd_rcgr = 0x3030,
66562306a36Sopenharmony_ci	.mnd_width = 0,
66662306a36Sopenharmony_ci	.hid_width = 5,
66762306a36Sopenharmony_ci	.parent_map = mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map,
66862306a36Sopenharmony_ci	.freq_tbl = ftbl_csi0phytimer_clk_src,
66962306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
67062306a36Sopenharmony_ci		.name = "csi1phytimer_clk_src",
67162306a36Sopenharmony_ci		.parent_data = mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div,
67262306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div),
67362306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
67462306a36Sopenharmony_ci	},
67562306a36Sopenharmony_ci};
67662306a36Sopenharmony_ci
67762306a36Sopenharmony_cistatic struct clk_rcg2 csi2_clk_src = {
67862306a36Sopenharmony_ci	.cmd_rcgr = 0x3160,
67962306a36Sopenharmony_ci	.mnd_width = 0,
68062306a36Sopenharmony_ci	.hid_width = 5,
68162306a36Sopenharmony_ci	.parent_map = mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll8_gpll0_gpll0_div_map,
68262306a36Sopenharmony_ci	.freq_tbl = ftbl_csi0_clk_src,
68362306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
68462306a36Sopenharmony_ci		.name = "csi2_clk_src",
68562306a36Sopenharmony_ci		.parent_data = mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll8_gpll0_gpll0_div,
68662306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll8_gpll0_gpll0_div),
68762306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
68862306a36Sopenharmony_ci	},
68962306a36Sopenharmony_ci};
69062306a36Sopenharmony_ci
69162306a36Sopenharmony_cistatic struct clk_rcg2 csi2phytimer_clk_src = {
69262306a36Sopenharmony_ci	.cmd_rcgr = 0x3060,
69362306a36Sopenharmony_ci	.mnd_width = 0,
69462306a36Sopenharmony_ci	.hid_width = 5,
69562306a36Sopenharmony_ci	.parent_map = mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map,
69662306a36Sopenharmony_ci	.freq_tbl = ftbl_csi0phytimer_clk_src,
69762306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
69862306a36Sopenharmony_ci		.name = "csi2phytimer_clk_src",
69962306a36Sopenharmony_ci		.parent_data = mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div,
70062306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div),
70162306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
70262306a36Sopenharmony_ci	},
70362306a36Sopenharmony_ci};
70462306a36Sopenharmony_ci
70562306a36Sopenharmony_cistatic struct clk_rcg2 csi3_clk_src = {
70662306a36Sopenharmony_ci	.cmd_rcgr = 0x31c0,
70762306a36Sopenharmony_ci	.mnd_width = 0,
70862306a36Sopenharmony_ci	.hid_width = 5,
70962306a36Sopenharmony_ci	.parent_map = mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll8_gpll0_gpll0_div_map,
71062306a36Sopenharmony_ci	.freq_tbl = ftbl_csi0_clk_src,
71162306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
71262306a36Sopenharmony_ci		.name = "csi3_clk_src",
71362306a36Sopenharmony_ci		.parent_data = mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll8_gpll0_gpll0_div,
71462306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll8_gpll0_gpll0_div),
71562306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
71662306a36Sopenharmony_ci	},
71762306a36Sopenharmony_ci};
71862306a36Sopenharmony_ci
71962306a36Sopenharmony_cistatic const struct freq_tbl ftbl_csiphy_clk_src[] = {
72062306a36Sopenharmony_ci	F(100000000, P_GPLL0_DIV, 3, 0, 0),
72162306a36Sopenharmony_ci	F(200000000, P_GPLL0, 3, 0, 0),
72262306a36Sopenharmony_ci	F(269333333, P_MMPLL0, 3, 0, 0),
72362306a36Sopenharmony_ci	F(320000000, P_MMPLL7, 3, 0, 0),
72462306a36Sopenharmony_ci	{ }
72562306a36Sopenharmony_ci};
72662306a36Sopenharmony_ci
72762306a36Sopenharmony_cistatic struct clk_rcg2 csiphy_clk_src = {
72862306a36Sopenharmony_ci	.cmd_rcgr = 0x3800,
72962306a36Sopenharmony_ci	.mnd_width = 0,
73062306a36Sopenharmony_ci	.hid_width = 5,
73162306a36Sopenharmony_ci	.parent_map = mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll8_gpll0_gpll0_div_map,
73262306a36Sopenharmony_ci	.freq_tbl = ftbl_csiphy_clk_src,
73362306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
73462306a36Sopenharmony_ci		.name = "csiphy_clk_src",
73562306a36Sopenharmony_ci		.parent_data = mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll8_gpll0_gpll0_div,
73662306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll8_gpll0_gpll0_div),
73762306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
73862306a36Sopenharmony_ci	},
73962306a36Sopenharmony_ci};
74062306a36Sopenharmony_ci
74162306a36Sopenharmony_cistatic const struct freq_tbl ftbl_dp_aux_clk_src[] = {
74262306a36Sopenharmony_ci	F(19200000, P_XO, 1, 0, 0),
74362306a36Sopenharmony_ci	{ }
74462306a36Sopenharmony_ci};
74562306a36Sopenharmony_ci
74662306a36Sopenharmony_cistatic struct clk_rcg2 dp_aux_clk_src = {
74762306a36Sopenharmony_ci	.cmd_rcgr = 0x2260,
74862306a36Sopenharmony_ci	.mnd_width = 0,
74962306a36Sopenharmony_ci	.hid_width = 5,
75062306a36Sopenharmony_ci	.parent_map = mmcc_xo_gpll0_gpll0_div_map,
75162306a36Sopenharmony_ci	.freq_tbl = ftbl_dp_aux_clk_src,
75262306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
75362306a36Sopenharmony_ci		.name = "dp_aux_clk_src",
75462306a36Sopenharmony_ci		.parent_data = mmcc_xo_gpll0_gpll0_div,
75562306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_gpll0_gpll0_div),
75662306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
75762306a36Sopenharmony_ci	},
75862306a36Sopenharmony_ci};
75962306a36Sopenharmony_ci
76062306a36Sopenharmony_cistatic const struct freq_tbl ftbl_dp_crypto_clk_src[] = {
76162306a36Sopenharmony_ci	F(101250000, P_DP_PHY_PLL_VCO_DIV, 4, 0, 0),
76262306a36Sopenharmony_ci	F(168750000, P_DP_PHY_PLL_VCO_DIV, 4, 0, 0),
76362306a36Sopenharmony_ci	F(337500000, P_DP_PHY_PLL_VCO_DIV, 4, 0, 0),
76462306a36Sopenharmony_ci	{ }
76562306a36Sopenharmony_ci};
76662306a36Sopenharmony_ci
76762306a36Sopenharmony_cistatic struct clk_rcg2 dp_crypto_clk_src = {
76862306a36Sopenharmony_ci	.cmd_rcgr = 0x2220,
76962306a36Sopenharmony_ci	.mnd_width = 8,
77062306a36Sopenharmony_ci	.hid_width = 5,
77162306a36Sopenharmony_ci	.parent_map = mmcc_xo_dplink_dpvco_map,
77262306a36Sopenharmony_ci	.freq_tbl = ftbl_dp_crypto_clk_src,
77362306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
77462306a36Sopenharmony_ci		.name = "dp_crypto_clk_src",
77562306a36Sopenharmony_ci		.parent_data = mmcc_xo_dplink_dpvco,
77662306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_dplink_dpvco),
77762306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
77862306a36Sopenharmony_ci	},
77962306a36Sopenharmony_ci};
78062306a36Sopenharmony_ci
78162306a36Sopenharmony_cistatic const struct freq_tbl ftbl_dp_gtc_clk_src[] = {
78262306a36Sopenharmony_ci	F(40000000, P_GPLL0_DIV, 7.5, 0, 0),
78362306a36Sopenharmony_ci	F(60000000, P_GPLL0, 10, 0, 0),
78462306a36Sopenharmony_ci	{ }
78562306a36Sopenharmony_ci};
78662306a36Sopenharmony_ci
78762306a36Sopenharmony_cistatic struct clk_rcg2 dp_gtc_clk_src = {
78862306a36Sopenharmony_ci	.cmd_rcgr = 0x2280,
78962306a36Sopenharmony_ci	.mnd_width = 0,
79062306a36Sopenharmony_ci	.hid_width = 5,
79162306a36Sopenharmony_ci	.parent_map = mmcc_xo_gpll0_gpll0_div_map,
79262306a36Sopenharmony_ci	.freq_tbl = ftbl_dp_gtc_clk_src,
79362306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
79462306a36Sopenharmony_ci		.name = "dp_gtc_clk_src",
79562306a36Sopenharmony_ci		.parent_data = mmcc_xo_gpll0_gpll0_div,
79662306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_gpll0_gpll0_div),
79762306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
79862306a36Sopenharmony_ci	},
79962306a36Sopenharmony_ci};
80062306a36Sopenharmony_ci
80162306a36Sopenharmony_cistatic const struct freq_tbl ftbl_dp_link_clk_src[] = {
80262306a36Sopenharmony_ci	F(162000000, P_DP_PHY_PLL_LINK_CLK, 2, 0, 0),
80362306a36Sopenharmony_ci	F(270000000, P_DP_PHY_PLL_LINK_CLK, 2, 0, 0),
80462306a36Sopenharmony_ci	F(540000000, P_DP_PHY_PLL_LINK_CLK, 2, 0, 0),
80562306a36Sopenharmony_ci	{ }
80662306a36Sopenharmony_ci};
80762306a36Sopenharmony_ci
80862306a36Sopenharmony_cistatic struct clk_rcg2 dp_link_clk_src = {
80962306a36Sopenharmony_ci	.cmd_rcgr = 0x2200,
81062306a36Sopenharmony_ci	.mnd_width = 0,
81162306a36Sopenharmony_ci	.hid_width = 5,
81262306a36Sopenharmony_ci	.parent_map = mmcc_xo_dplink_dpvco_map,
81362306a36Sopenharmony_ci	.freq_tbl = ftbl_dp_link_clk_src,
81462306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
81562306a36Sopenharmony_ci		.name = "dp_link_clk_src",
81662306a36Sopenharmony_ci		.parent_data = mmcc_xo_dplink_dpvco,
81762306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_dplink_dpvco),
81862306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
81962306a36Sopenharmony_ci		.flags = CLK_GET_RATE_NOCACHE | CLK_SET_RATE_PARENT,
82062306a36Sopenharmony_ci	},
82162306a36Sopenharmony_ci};
82262306a36Sopenharmony_ci
82362306a36Sopenharmony_cistatic struct clk_rcg2 dp_pixel_clk_src = {
82462306a36Sopenharmony_ci	.cmd_rcgr = 0x2240,
82562306a36Sopenharmony_ci	.mnd_width = 16,
82662306a36Sopenharmony_ci	.hid_width = 5,
82762306a36Sopenharmony_ci	.parent_map = mmcc_xo_dplink_dpvco_map,
82862306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
82962306a36Sopenharmony_ci		.name = "dp_pixel_clk_src",
83062306a36Sopenharmony_ci		.parent_data = mmcc_xo_dplink_dpvco,
83162306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_dplink_dpvco),
83262306a36Sopenharmony_ci		.ops = &clk_dp_ops,
83362306a36Sopenharmony_ci		.flags = CLK_GET_RATE_NOCACHE | CLK_SET_RATE_PARENT,
83462306a36Sopenharmony_ci	},
83562306a36Sopenharmony_ci};
83662306a36Sopenharmony_ci
83762306a36Sopenharmony_cistatic struct clk_rcg2 esc0_clk_src = {
83862306a36Sopenharmony_ci	.cmd_rcgr = 0x2160,
83962306a36Sopenharmony_ci	.mnd_width = 0,
84062306a36Sopenharmony_ci	.hid_width = 5,
84162306a36Sopenharmony_ci	.parent_map = mmcc_xo_dsibyte_map,
84262306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
84362306a36Sopenharmony_ci		.name = "esc0_clk_src",
84462306a36Sopenharmony_ci		.parent_data = mmcc_xo_dsibyte,
84562306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_dsibyte),
84662306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
84762306a36Sopenharmony_ci	},
84862306a36Sopenharmony_ci};
84962306a36Sopenharmony_ci
85062306a36Sopenharmony_cistatic struct clk_rcg2 esc1_clk_src = {
85162306a36Sopenharmony_ci	.cmd_rcgr = 0x2180,
85262306a36Sopenharmony_ci	.mnd_width = 0,
85362306a36Sopenharmony_ci	.hid_width = 5,
85462306a36Sopenharmony_ci	.parent_map = mmcc_xo_dsibyte_map,
85562306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
85662306a36Sopenharmony_ci		.name = "esc1_clk_src",
85762306a36Sopenharmony_ci		.parent_data = mmcc_xo_dsibyte,
85862306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_dsibyte),
85962306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
86062306a36Sopenharmony_ci	},
86162306a36Sopenharmony_ci};
86262306a36Sopenharmony_ci
86362306a36Sopenharmony_cistatic const struct freq_tbl ftbl_jpeg0_clk_src[] = {
86462306a36Sopenharmony_ci	F(66666667, P_GPLL0_DIV, 4.5, 0, 0),
86562306a36Sopenharmony_ci	F(133333333, P_GPLL0, 4.5, 0, 0),
86662306a36Sopenharmony_ci	F(219428571, P_MMPLL4, 3.5, 0, 0),
86762306a36Sopenharmony_ci	F(320000000, P_MMPLL7, 3, 0, 0),
86862306a36Sopenharmony_ci	F(480000000, P_MMPLL7, 2, 0, 0),
86962306a36Sopenharmony_ci	{ }
87062306a36Sopenharmony_ci};
87162306a36Sopenharmony_ci
87262306a36Sopenharmony_cistatic struct clk_rcg2 jpeg0_clk_src = {
87362306a36Sopenharmony_ci	.cmd_rcgr = 0x3500,
87462306a36Sopenharmony_ci	.mnd_width = 0,
87562306a36Sopenharmony_ci	.hid_width = 5,
87662306a36Sopenharmony_ci	.parent_map = mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map,
87762306a36Sopenharmony_ci	.freq_tbl = ftbl_jpeg0_clk_src,
87862306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
87962306a36Sopenharmony_ci		.name = "jpeg0_clk_src",
88062306a36Sopenharmony_ci		.parent_data = mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div,
88162306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div),
88262306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
88362306a36Sopenharmony_ci	},
88462306a36Sopenharmony_ci};
88562306a36Sopenharmony_ci
88662306a36Sopenharmony_cistatic const struct freq_tbl ftbl_mclk0_clk_src[] = {
88762306a36Sopenharmony_ci	F(4800000, P_XO, 4, 0, 0),
88862306a36Sopenharmony_ci	F(6000000, P_GPLL0_DIV, 10, 1, 5),
88962306a36Sopenharmony_ci	F(8000000, P_GPLL0_DIV, 1, 2, 75),
89062306a36Sopenharmony_ci	F(9600000, P_XO, 2, 0, 0),
89162306a36Sopenharmony_ci	F(16666667, P_GPLL0_DIV, 2, 1, 9),
89262306a36Sopenharmony_ci	F(19200000, P_XO, 1, 0, 0),
89362306a36Sopenharmony_ci	F(24000000, P_MMPLL10, 1, 1, 24),
89462306a36Sopenharmony_ci	F(33333333, P_GPLL0_DIV, 1, 1, 9),
89562306a36Sopenharmony_ci	F(48000000, P_GPLL0, 1, 2, 25),
89662306a36Sopenharmony_ci	F(66666667, P_GPLL0, 1, 1, 9),
89762306a36Sopenharmony_ci	{ }
89862306a36Sopenharmony_ci};
89962306a36Sopenharmony_ci
90062306a36Sopenharmony_cistatic struct clk_rcg2 mclk0_clk_src = {
90162306a36Sopenharmony_ci	.cmd_rcgr = 0x3360,
90262306a36Sopenharmony_ci	.mnd_width = 8,
90362306a36Sopenharmony_ci	.hid_width = 5,
90462306a36Sopenharmony_ci	.parent_map = mmcc_xo_mmpll4_mmpll7_mmpll10_sleep_gpll0_gpll0_div_map,
90562306a36Sopenharmony_ci	.freq_tbl = ftbl_mclk0_clk_src,
90662306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
90762306a36Sopenharmony_ci		.name = "mclk0_clk_src",
90862306a36Sopenharmony_ci		.parent_data = mmcc_xo_mmpll4_mmpll7_mmpll10_sleep_gpll0_gpll0_div,
90962306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_mmpll4_mmpll7_mmpll10_sleep_gpll0_gpll0_div),
91062306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
91162306a36Sopenharmony_ci	},
91262306a36Sopenharmony_ci};
91362306a36Sopenharmony_ci
91462306a36Sopenharmony_cistatic struct clk_rcg2 mclk1_clk_src = {
91562306a36Sopenharmony_ci	.cmd_rcgr = 0x3390,
91662306a36Sopenharmony_ci	.mnd_width = 8,
91762306a36Sopenharmony_ci	.hid_width = 5,
91862306a36Sopenharmony_ci	.parent_map = mmcc_xo_mmpll4_mmpll7_mmpll10_sleep_gpll0_gpll0_div_map,
91962306a36Sopenharmony_ci	.freq_tbl = ftbl_mclk0_clk_src,
92062306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
92162306a36Sopenharmony_ci		.name = "mclk1_clk_src",
92262306a36Sopenharmony_ci		.parent_data = mmcc_xo_mmpll4_mmpll7_mmpll10_sleep_gpll0_gpll0_div,
92362306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_mmpll4_mmpll7_mmpll10_sleep_gpll0_gpll0_div),
92462306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
92562306a36Sopenharmony_ci	},
92662306a36Sopenharmony_ci};
92762306a36Sopenharmony_ci
92862306a36Sopenharmony_cistatic struct clk_rcg2 mclk2_clk_src = {
92962306a36Sopenharmony_ci	.cmd_rcgr = 0x33c0,
93062306a36Sopenharmony_ci	.mnd_width = 8,
93162306a36Sopenharmony_ci	.hid_width = 5,
93262306a36Sopenharmony_ci	.parent_map = mmcc_xo_mmpll4_mmpll7_mmpll10_sleep_gpll0_gpll0_div_map,
93362306a36Sopenharmony_ci	.freq_tbl = ftbl_mclk0_clk_src,
93462306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
93562306a36Sopenharmony_ci		.name = "mclk2_clk_src",
93662306a36Sopenharmony_ci		.parent_data = mmcc_xo_mmpll4_mmpll7_mmpll10_sleep_gpll0_gpll0_div,
93762306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_mmpll4_mmpll7_mmpll10_sleep_gpll0_gpll0_div),
93862306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
93962306a36Sopenharmony_ci	},
94062306a36Sopenharmony_ci};
94162306a36Sopenharmony_ci
94262306a36Sopenharmony_cistatic struct clk_rcg2 mclk3_clk_src = {
94362306a36Sopenharmony_ci	.cmd_rcgr = 0x33f0,
94462306a36Sopenharmony_ci	.mnd_width = 8,
94562306a36Sopenharmony_ci	.hid_width = 5,
94662306a36Sopenharmony_ci	.parent_map = mmcc_xo_mmpll4_mmpll7_mmpll10_sleep_gpll0_gpll0_div_map,
94762306a36Sopenharmony_ci	.freq_tbl = ftbl_mclk0_clk_src,
94862306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
94962306a36Sopenharmony_ci		.name = "mclk3_clk_src",
95062306a36Sopenharmony_ci		.parent_data = mmcc_xo_mmpll4_mmpll7_mmpll10_sleep_gpll0_gpll0_div,
95162306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_mmpll4_mmpll7_mmpll10_sleep_gpll0_gpll0_div),
95262306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
95362306a36Sopenharmony_ci	},
95462306a36Sopenharmony_ci};
95562306a36Sopenharmony_ci
95662306a36Sopenharmony_cistatic const struct freq_tbl ftbl_mdp_clk_src[] = {
95762306a36Sopenharmony_ci	F(100000000, P_GPLL0_DIV, 3, 0, 0),
95862306a36Sopenharmony_ci	F(150000000, P_GPLL0_DIV, 2, 0, 0),
95962306a36Sopenharmony_ci	F(171428571, P_GPLL0, 3.5, 0, 0),
96062306a36Sopenharmony_ci	F(200000000, P_GPLL0, 3, 0, 0),
96162306a36Sopenharmony_ci	F(275000000, P_MMPLL5, 3, 0, 0),
96262306a36Sopenharmony_ci	F(300000000, P_GPLL0, 2, 0, 0),
96362306a36Sopenharmony_ci	F(330000000, P_MMPLL5, 2.5, 0, 0),
96462306a36Sopenharmony_ci	F(412500000, P_MMPLL5, 2, 0, 0),
96562306a36Sopenharmony_ci	{ }
96662306a36Sopenharmony_ci};
96762306a36Sopenharmony_ci
96862306a36Sopenharmony_cistatic struct clk_rcg2 mdp_clk_src = {
96962306a36Sopenharmony_ci	.cmd_rcgr = 0x2040,
97062306a36Sopenharmony_ci	.mnd_width = 0,
97162306a36Sopenharmony_ci	.hid_width = 5,
97262306a36Sopenharmony_ci	.parent_map = mmcc_xo_mmpll0_mmpll5_mmpll7_gpll0_gpll0_div_map,
97362306a36Sopenharmony_ci	.freq_tbl = ftbl_mdp_clk_src,
97462306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
97562306a36Sopenharmony_ci		.name = "mdp_clk_src",
97662306a36Sopenharmony_ci		.parent_data = mmcc_xo_mmpll0_mmpll5_mmpll7_gpll0_gpll0_div,
97762306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_mmpll5_mmpll7_gpll0_gpll0_div),
97862306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
97962306a36Sopenharmony_ci	},
98062306a36Sopenharmony_ci};
98162306a36Sopenharmony_ci
98262306a36Sopenharmony_cistatic struct clk_rcg2 pclk0_clk_src = {
98362306a36Sopenharmony_ci	.cmd_rcgr = 0x2000,
98462306a36Sopenharmony_ci	.mnd_width = 8,
98562306a36Sopenharmony_ci	.hid_width = 5,
98662306a36Sopenharmony_ci	.parent_map = mmcc_xo_dsi0pll_dsi1pll_map,
98762306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
98862306a36Sopenharmony_ci		.name = "pclk0_clk_src",
98962306a36Sopenharmony_ci		.parent_data = mmcc_xo_dsi0pll_dsi1pll,
99062306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_dsi0pll_dsi1pll),
99162306a36Sopenharmony_ci		.ops = &clk_pixel_ops,
99262306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT | CLK_GET_RATE_NOCACHE,
99362306a36Sopenharmony_ci	},
99462306a36Sopenharmony_ci};
99562306a36Sopenharmony_ci
99662306a36Sopenharmony_cistatic struct clk_rcg2 pclk1_clk_src = {
99762306a36Sopenharmony_ci	.cmd_rcgr = 0x2020,
99862306a36Sopenharmony_ci	.mnd_width = 8,
99962306a36Sopenharmony_ci	.hid_width = 5,
100062306a36Sopenharmony_ci	.parent_map = mmcc_xo_dsi0pll_dsi1pll_map,
100162306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
100262306a36Sopenharmony_ci		.name = "pclk1_clk_src",
100362306a36Sopenharmony_ci		.parent_data = mmcc_xo_dsi0pll_dsi1pll,
100462306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_dsi0pll_dsi1pll),
100562306a36Sopenharmony_ci		.ops = &clk_pixel_ops,
100662306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT | CLK_GET_RATE_NOCACHE,
100762306a36Sopenharmony_ci	},
100862306a36Sopenharmony_ci};
100962306a36Sopenharmony_ci
101062306a36Sopenharmony_cistatic const struct freq_tbl ftbl_rot_clk_src[] = {
101162306a36Sopenharmony_ci	F(171428571, P_GPLL0, 3.5, 0, 0),
101262306a36Sopenharmony_ci	F(275000000, P_MMPLL5, 3, 0, 0),
101362306a36Sopenharmony_ci	F(300000000, P_GPLL0, 2, 0, 0),
101462306a36Sopenharmony_ci	F(330000000, P_MMPLL5, 2.5, 0, 0),
101562306a36Sopenharmony_ci	F(412500000, P_MMPLL5, 2, 0, 0),
101662306a36Sopenharmony_ci	{ }
101762306a36Sopenharmony_ci};
101862306a36Sopenharmony_ci
101962306a36Sopenharmony_cistatic struct clk_rcg2 rot_clk_src = {
102062306a36Sopenharmony_ci	.cmd_rcgr = 0x21a0,
102162306a36Sopenharmony_ci	.mnd_width = 0,
102262306a36Sopenharmony_ci	.hid_width = 5,
102362306a36Sopenharmony_ci	.parent_map = mmcc_xo_mmpll0_mmpll5_mmpll7_gpll0_gpll0_div_map,
102462306a36Sopenharmony_ci	.freq_tbl = ftbl_rot_clk_src,
102562306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
102662306a36Sopenharmony_ci		.name = "rot_clk_src",
102762306a36Sopenharmony_ci		.parent_data = mmcc_xo_mmpll0_mmpll5_mmpll7_gpll0_gpll0_div,
102862306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_mmpll5_mmpll7_gpll0_gpll0_div),
102962306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
103062306a36Sopenharmony_ci	},
103162306a36Sopenharmony_ci};
103262306a36Sopenharmony_ci
103362306a36Sopenharmony_cistatic const struct freq_tbl ftbl_vfe0_clk_src[] = {
103462306a36Sopenharmony_ci	F(120000000, P_GPLL0, 5, 0, 0),
103562306a36Sopenharmony_ci	F(200000000, P_GPLL0, 3, 0, 0),
103662306a36Sopenharmony_ci	F(256000000, P_MMPLL4, 3, 0, 0),
103762306a36Sopenharmony_ci	F(300000000, P_GPLL0, 2, 0, 0),
103862306a36Sopenharmony_ci	F(404000000, P_MMPLL0, 2, 0, 0),
103962306a36Sopenharmony_ci	F(480000000, P_MMPLL7, 2, 0, 0),
104062306a36Sopenharmony_ci	F(540000000, P_MMPLL6, 2, 0, 0),
104162306a36Sopenharmony_ci	F(576000000, P_MMPLL10, 1, 0, 0),
104262306a36Sopenharmony_ci	{ }
104362306a36Sopenharmony_ci};
104462306a36Sopenharmony_ci
104562306a36Sopenharmony_cistatic struct clk_rcg2 vfe0_clk_src = {
104662306a36Sopenharmony_ci	.cmd_rcgr = 0x3600,
104762306a36Sopenharmony_ci	.mnd_width = 0,
104862306a36Sopenharmony_ci	.hid_width = 5,
104962306a36Sopenharmony_ci	.parent_map = mmcc_mmpll0_mmpll4_mmpll7_mmpll10_mmpll6_gpll0_map,
105062306a36Sopenharmony_ci	.freq_tbl = ftbl_vfe0_clk_src,
105162306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
105262306a36Sopenharmony_ci		.name = "vfe0_clk_src",
105362306a36Sopenharmony_ci		.parent_data = mmcc_mmpll0_mmpll4_mmpll7_mmpll10_mmpll6_gpll0,
105462306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_mmpll0_mmpll4_mmpll7_mmpll10_mmpll6_gpll0),
105562306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
105662306a36Sopenharmony_ci	},
105762306a36Sopenharmony_ci};
105862306a36Sopenharmony_ci
105962306a36Sopenharmony_cistatic struct clk_rcg2 vfe1_clk_src = {
106062306a36Sopenharmony_ci	.cmd_rcgr = 0x3620,
106162306a36Sopenharmony_ci	.mnd_width = 0,
106262306a36Sopenharmony_ci	.hid_width = 5,
106362306a36Sopenharmony_ci	.parent_map = mmcc_mmpll0_mmpll4_mmpll7_mmpll10_mmpll6_gpll0_map,
106462306a36Sopenharmony_ci	.freq_tbl = ftbl_vfe0_clk_src,
106562306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
106662306a36Sopenharmony_ci		.name = "vfe1_clk_src",
106762306a36Sopenharmony_ci		.parent_data = mmcc_mmpll0_mmpll4_mmpll7_mmpll10_mmpll6_gpll0,
106862306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_mmpll0_mmpll4_mmpll7_mmpll10_mmpll6_gpll0),
106962306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
107062306a36Sopenharmony_ci	},
107162306a36Sopenharmony_ci};
107262306a36Sopenharmony_ci
107362306a36Sopenharmony_cistatic const struct freq_tbl ftbl_video_core_clk_src[] = {
107462306a36Sopenharmony_ci	F(133333333, P_GPLL0, 4.5, 0, 0),
107562306a36Sopenharmony_ci	F(269333333, P_MMPLL0, 3, 0, 0),
107662306a36Sopenharmony_ci	F(320000000, P_MMPLL7, 3, 0, 0),
107762306a36Sopenharmony_ci	F(404000000, P_MMPLL0, 2, 0, 0),
107862306a36Sopenharmony_ci	F(441600000, P_MMPLL3, 2, 0, 0),
107962306a36Sopenharmony_ci	F(518400000, P_MMPLL3, 2, 0, 0),
108062306a36Sopenharmony_ci	{ }
108162306a36Sopenharmony_ci};
108262306a36Sopenharmony_ci
108362306a36Sopenharmony_cistatic struct clk_rcg2 video_core_clk_src = {
108462306a36Sopenharmony_ci	.cmd_rcgr = 0x1000,
108562306a36Sopenharmony_ci	.mnd_width = 0,
108662306a36Sopenharmony_ci	.hid_width = 5,
108762306a36Sopenharmony_ci	.parent_map = mmcc_xo_mmpll0_mmpll8_mmpll3_mmpll6_gpll0_mmpll7_map,
108862306a36Sopenharmony_ci	.freq_tbl = ftbl_video_core_clk_src,
108962306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
109062306a36Sopenharmony_ci		.name = "video_core_clk_src",
109162306a36Sopenharmony_ci		.parent_data = mmcc_xo_mmpll0_mmpll8_mmpll3_mmpll6_gpll0_mmpll7,
109262306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_mmpll8_mmpll3_mmpll6_gpll0_mmpll7),
109362306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
109462306a36Sopenharmony_ci		.flags = CLK_IS_CRITICAL,
109562306a36Sopenharmony_ci	},
109662306a36Sopenharmony_ci};
109762306a36Sopenharmony_ci
109862306a36Sopenharmony_cistatic struct clk_rcg2 vsync_clk_src = {
109962306a36Sopenharmony_ci	.cmd_rcgr = 0x2080,
110062306a36Sopenharmony_ci	.mnd_width = 0,
110162306a36Sopenharmony_ci	.hid_width = 5,
110262306a36Sopenharmony_ci	.parent_map = mmcc_xo_gpll0_gpll0_div_map,
110362306a36Sopenharmony_ci	.freq_tbl = ftbl_dp_aux_clk_src,
110462306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
110562306a36Sopenharmony_ci		.name = "vsync_clk_src",
110662306a36Sopenharmony_ci		.parent_data = mmcc_xo_gpll0_gpll0_div,
110762306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_gpll0_gpll0_div),
110862306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
110962306a36Sopenharmony_ci	},
111062306a36Sopenharmony_ci};
111162306a36Sopenharmony_ci
111262306a36Sopenharmony_cistatic struct clk_branch bimc_smmu_ahb_clk = {
111362306a36Sopenharmony_ci	.halt_reg = 0xe004,
111462306a36Sopenharmony_ci	.halt_check = BRANCH_VOTED,
111562306a36Sopenharmony_ci	.hwcg_reg = 0xe004,
111662306a36Sopenharmony_ci	.hwcg_bit = 1,
111762306a36Sopenharmony_ci	.clkr = {
111862306a36Sopenharmony_ci		.enable_reg = 0xe004,
111962306a36Sopenharmony_ci		.enable_mask = BIT(0),
112062306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
112162306a36Sopenharmony_ci			.name = "bimc_smmu_ahb_clk",
112262306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
112362306a36Sopenharmony_ci			.num_parents = 1,
112462306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
112562306a36Sopenharmony_ci		},
112662306a36Sopenharmony_ci	},
112762306a36Sopenharmony_ci};
112862306a36Sopenharmony_ci
112962306a36Sopenharmony_cistatic struct clk_branch bimc_smmu_axi_clk = {
113062306a36Sopenharmony_ci	.halt_reg = 0xe008,
113162306a36Sopenharmony_ci	.halt_check = BRANCH_VOTED,
113262306a36Sopenharmony_ci	.hwcg_reg = 0xe008,
113362306a36Sopenharmony_ci	.hwcg_bit = 1,
113462306a36Sopenharmony_ci	.clkr = {
113562306a36Sopenharmony_ci		.enable_reg = 0xe008,
113662306a36Sopenharmony_ci		.enable_mask = BIT(0),
113762306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
113862306a36Sopenharmony_ci			.name = "bimc_smmu_axi_clk",
113962306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
114062306a36Sopenharmony_ci		},
114162306a36Sopenharmony_ci	},
114262306a36Sopenharmony_ci};
114362306a36Sopenharmony_ci
114462306a36Sopenharmony_cistatic struct clk_branch camss_ahb_clk = {
114562306a36Sopenharmony_ci	.halt_reg = 0x348c,
114662306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
114762306a36Sopenharmony_ci	.hwcg_reg = 0x348c,
114862306a36Sopenharmony_ci	.hwcg_bit = 1,
114962306a36Sopenharmony_ci	.clkr = {
115062306a36Sopenharmony_ci		.enable_reg = 0x348c,
115162306a36Sopenharmony_ci		.enable_mask = BIT(0),
115262306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
115362306a36Sopenharmony_ci			.name = "camss_ahb_clk",
115462306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
115562306a36Sopenharmony_ci			.num_parents = 1,
115662306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
115762306a36Sopenharmony_ci		},
115862306a36Sopenharmony_ci	},
115962306a36Sopenharmony_ci};
116062306a36Sopenharmony_ci
116162306a36Sopenharmony_cistatic struct clk_branch camss_cci_ahb_clk = {
116262306a36Sopenharmony_ci	.halt_reg = 0x3348,
116362306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
116462306a36Sopenharmony_ci	.clkr = {
116562306a36Sopenharmony_ci		.enable_reg = 0x3348,
116662306a36Sopenharmony_ci		.enable_mask = BIT(0),
116762306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
116862306a36Sopenharmony_ci			.name = "camss_cci_ahb_clk",
116962306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
117062306a36Sopenharmony_ci			.num_parents = 1,
117162306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
117262306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
117362306a36Sopenharmony_ci		},
117462306a36Sopenharmony_ci	},
117562306a36Sopenharmony_ci};
117662306a36Sopenharmony_ci
117762306a36Sopenharmony_cistatic struct clk_branch camss_cci_clk = {
117862306a36Sopenharmony_ci	.halt_reg = 0x3344,
117962306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
118062306a36Sopenharmony_ci	.clkr = {
118162306a36Sopenharmony_ci		.enable_reg = 0x3344,
118262306a36Sopenharmony_ci		.enable_mask = BIT(0),
118362306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
118462306a36Sopenharmony_ci			.name = "camss_cci_clk",
118562306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &cci_clk_src.clkr.hw },
118662306a36Sopenharmony_ci			.num_parents = 1,
118762306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
118862306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
118962306a36Sopenharmony_ci		},
119062306a36Sopenharmony_ci	},
119162306a36Sopenharmony_ci};
119262306a36Sopenharmony_ci
119362306a36Sopenharmony_cistatic struct clk_branch camss_cpp_ahb_clk = {
119462306a36Sopenharmony_ci	.halt_reg = 0x36b4,
119562306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
119662306a36Sopenharmony_ci	.clkr = {
119762306a36Sopenharmony_ci		.enable_reg = 0x36b4,
119862306a36Sopenharmony_ci		.enable_mask = BIT(0),
119962306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
120062306a36Sopenharmony_ci			.name = "camss_cpp_ahb_clk",
120162306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
120262306a36Sopenharmony_ci			.num_parents = 1,
120362306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
120462306a36Sopenharmony_ci		},
120562306a36Sopenharmony_ci	},
120662306a36Sopenharmony_ci};
120762306a36Sopenharmony_ci
120862306a36Sopenharmony_cistatic struct clk_branch camss_cpp_axi_clk = {
120962306a36Sopenharmony_ci	.halt_reg = 0x36c4,
121062306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
121162306a36Sopenharmony_ci	.clkr = {
121262306a36Sopenharmony_ci		.enable_reg = 0x36c4,
121362306a36Sopenharmony_ci		.enable_mask = BIT(0),
121462306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
121562306a36Sopenharmony_ci			.name = "camss_cpp_axi_clk",
121662306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
121762306a36Sopenharmony_ci		},
121862306a36Sopenharmony_ci	},
121962306a36Sopenharmony_ci};
122062306a36Sopenharmony_ci
122162306a36Sopenharmony_cistatic struct clk_branch camss_cpp_clk = {
122262306a36Sopenharmony_ci	.halt_reg = 0x36b0,
122362306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
122462306a36Sopenharmony_ci	.clkr = {
122562306a36Sopenharmony_ci		.enable_reg = 0x36b0,
122662306a36Sopenharmony_ci		.enable_mask = BIT(0),
122762306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
122862306a36Sopenharmony_ci			.name = "camss_cpp_clk",
122962306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &cpp_clk_src.clkr.hw },
123062306a36Sopenharmony_ci			.num_parents = 1,
123162306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
123262306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
123362306a36Sopenharmony_ci		},
123462306a36Sopenharmony_ci	},
123562306a36Sopenharmony_ci};
123662306a36Sopenharmony_ci
123762306a36Sopenharmony_cistatic struct clk_branch camss_cpp_vbif_ahb_clk = {
123862306a36Sopenharmony_ci	.halt_reg = 0x36c8,
123962306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
124062306a36Sopenharmony_ci	.clkr = {
124162306a36Sopenharmony_ci		.enable_reg = 0x36c8,
124262306a36Sopenharmony_ci		.enable_mask = BIT(0),
124362306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
124462306a36Sopenharmony_ci			.name = "camss_cpp_vbif_ahb_clk",
124562306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
124662306a36Sopenharmony_ci			.num_parents = 1,
124762306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
124862306a36Sopenharmony_ci		},
124962306a36Sopenharmony_ci	},
125062306a36Sopenharmony_ci};
125162306a36Sopenharmony_ci
125262306a36Sopenharmony_cistatic struct clk_branch camss_csi0_ahb_clk = {
125362306a36Sopenharmony_ci	.halt_reg = 0x30bc,
125462306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
125562306a36Sopenharmony_ci	.clkr = {
125662306a36Sopenharmony_ci		.enable_reg = 0x30bc,
125762306a36Sopenharmony_ci		.enable_mask = BIT(0),
125862306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
125962306a36Sopenharmony_ci			.name = "camss_csi0_ahb_clk",
126062306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
126162306a36Sopenharmony_ci			.num_parents = 1,
126262306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
126362306a36Sopenharmony_ci		},
126462306a36Sopenharmony_ci	},
126562306a36Sopenharmony_ci};
126662306a36Sopenharmony_ci
126762306a36Sopenharmony_cistatic struct clk_branch camss_csi0_clk = {
126862306a36Sopenharmony_ci	.halt_reg = 0x30b4,
126962306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
127062306a36Sopenharmony_ci	.clkr = {
127162306a36Sopenharmony_ci		.enable_reg = 0x30b4,
127262306a36Sopenharmony_ci		.enable_mask = BIT(0),
127362306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
127462306a36Sopenharmony_ci			.name = "camss_csi0_clk",
127562306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csi0_clk_src.clkr.hw },
127662306a36Sopenharmony_ci			.num_parents = 1,
127762306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
127862306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
127962306a36Sopenharmony_ci		},
128062306a36Sopenharmony_ci	},
128162306a36Sopenharmony_ci};
128262306a36Sopenharmony_ci
128362306a36Sopenharmony_cistatic struct clk_branch camss_csi0phytimer_clk = {
128462306a36Sopenharmony_ci	.halt_reg = 0x3024,
128562306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
128662306a36Sopenharmony_ci	.clkr = {
128762306a36Sopenharmony_ci		.enable_reg = 0x3024,
128862306a36Sopenharmony_ci		.enable_mask = BIT(0),
128962306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
129062306a36Sopenharmony_ci			.name = "camss_csi0phytimer_clk",
129162306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csi0phytimer_clk_src.clkr.hw },
129262306a36Sopenharmony_ci			.num_parents = 1,
129362306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
129462306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
129562306a36Sopenharmony_ci		},
129662306a36Sopenharmony_ci	},
129762306a36Sopenharmony_ci};
129862306a36Sopenharmony_ci
129962306a36Sopenharmony_cistatic struct clk_branch camss_csi0pix_clk = {
130062306a36Sopenharmony_ci	.halt_reg = 0x30e4,
130162306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
130262306a36Sopenharmony_ci	.clkr = {
130362306a36Sopenharmony_ci		.enable_reg = 0x30e4,
130462306a36Sopenharmony_ci		.enable_mask = BIT(0),
130562306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
130662306a36Sopenharmony_ci			.name = "camss_csi0pix_clk",
130762306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csi0_clk_src.clkr.hw },
130862306a36Sopenharmony_ci			.num_parents = 1,
130962306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
131062306a36Sopenharmony_ci		},
131162306a36Sopenharmony_ci	},
131262306a36Sopenharmony_ci};
131362306a36Sopenharmony_ci
131462306a36Sopenharmony_cistatic struct clk_branch camss_csi0rdi_clk = {
131562306a36Sopenharmony_ci	.halt_reg = 0x30d4,
131662306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
131762306a36Sopenharmony_ci	.clkr = {
131862306a36Sopenharmony_ci		.enable_reg = 0x30d4,
131962306a36Sopenharmony_ci		.enable_mask = BIT(0),
132062306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
132162306a36Sopenharmony_ci			.name = "camss_csi0rdi_clk",
132262306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csi0_clk_src.clkr.hw },
132362306a36Sopenharmony_ci			.num_parents = 1,
132462306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
132562306a36Sopenharmony_ci		},
132662306a36Sopenharmony_ci	},
132762306a36Sopenharmony_ci};
132862306a36Sopenharmony_ci
132962306a36Sopenharmony_cistatic struct clk_branch camss_csi1_ahb_clk = {
133062306a36Sopenharmony_ci	.halt_reg = 0x3128,
133162306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
133262306a36Sopenharmony_ci	.clkr = {
133362306a36Sopenharmony_ci		.enable_reg = 0x3128,
133462306a36Sopenharmony_ci		.enable_mask = BIT(0),
133562306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
133662306a36Sopenharmony_ci			.name = "camss_csi1_ahb_clk",
133762306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
133862306a36Sopenharmony_ci			.num_parents = 1,
133962306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
134062306a36Sopenharmony_ci		},
134162306a36Sopenharmony_ci	},
134262306a36Sopenharmony_ci};
134362306a36Sopenharmony_ci
134462306a36Sopenharmony_cistatic struct clk_branch camss_csi1_clk = {
134562306a36Sopenharmony_ci	.halt_reg = 0x3124,
134662306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
134762306a36Sopenharmony_ci	.clkr = {
134862306a36Sopenharmony_ci		.enable_reg = 0x3124,
134962306a36Sopenharmony_ci		.enable_mask = BIT(0),
135062306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
135162306a36Sopenharmony_ci			.name = "camss_csi1_clk",
135262306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csi1_clk_src.clkr.hw },
135362306a36Sopenharmony_ci			.num_parents = 1,
135462306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
135562306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
135662306a36Sopenharmony_ci		},
135762306a36Sopenharmony_ci	},
135862306a36Sopenharmony_ci};
135962306a36Sopenharmony_ci
136062306a36Sopenharmony_cistatic struct clk_branch camss_csi1phytimer_clk = {
136162306a36Sopenharmony_ci	.halt_reg = 0x3054,
136262306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
136362306a36Sopenharmony_ci	.clkr = {
136462306a36Sopenharmony_ci		.enable_reg = 0x3054,
136562306a36Sopenharmony_ci		.enable_mask = BIT(0),
136662306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
136762306a36Sopenharmony_ci			.name = "camss_csi1phytimer_clk",
136862306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csi1phytimer_clk_src.clkr.hw },
136962306a36Sopenharmony_ci			.num_parents = 1,
137062306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
137162306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
137262306a36Sopenharmony_ci		},
137362306a36Sopenharmony_ci	},
137462306a36Sopenharmony_ci};
137562306a36Sopenharmony_ci
137662306a36Sopenharmony_cistatic struct clk_branch camss_csi1pix_clk = {
137762306a36Sopenharmony_ci	.halt_reg = 0x3154,
137862306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
137962306a36Sopenharmony_ci	.clkr = {
138062306a36Sopenharmony_ci		.enable_reg = 0x3154,
138162306a36Sopenharmony_ci		.enable_mask = BIT(0),
138262306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
138362306a36Sopenharmony_ci			.name = "camss_csi1pix_clk",
138462306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csi1_clk_src.clkr.hw },
138562306a36Sopenharmony_ci			.num_parents = 1,
138662306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
138762306a36Sopenharmony_ci		},
138862306a36Sopenharmony_ci	},
138962306a36Sopenharmony_ci};
139062306a36Sopenharmony_ci
139162306a36Sopenharmony_cistatic struct clk_branch camss_csi1rdi_clk = {
139262306a36Sopenharmony_ci	.halt_reg = 0x3144,
139362306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
139462306a36Sopenharmony_ci	.clkr = {
139562306a36Sopenharmony_ci		.enable_reg = 0x3144,
139662306a36Sopenharmony_ci		.enable_mask = BIT(0),
139762306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
139862306a36Sopenharmony_ci			.name = "camss_csi1rdi_clk",
139962306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csi1_clk_src.clkr.hw },
140062306a36Sopenharmony_ci			.num_parents = 1,
140162306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
140262306a36Sopenharmony_ci		},
140362306a36Sopenharmony_ci	},
140462306a36Sopenharmony_ci};
140562306a36Sopenharmony_ci
140662306a36Sopenharmony_cistatic struct clk_branch camss_csi2_ahb_clk = {
140762306a36Sopenharmony_ci	.halt_reg = 0x3188,
140862306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
140962306a36Sopenharmony_ci	.clkr = {
141062306a36Sopenharmony_ci		.enable_reg = 0x3188,
141162306a36Sopenharmony_ci		.enable_mask = BIT(0),
141262306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
141362306a36Sopenharmony_ci			.name = "camss_csi2_ahb_clk",
141462306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
141562306a36Sopenharmony_ci			.num_parents = 1,
141662306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
141762306a36Sopenharmony_ci		},
141862306a36Sopenharmony_ci	},
141962306a36Sopenharmony_ci};
142062306a36Sopenharmony_ci
142162306a36Sopenharmony_cistatic struct clk_branch camss_csi2_clk = {
142262306a36Sopenharmony_ci	.halt_reg = 0x3184,
142362306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
142462306a36Sopenharmony_ci	.clkr = {
142562306a36Sopenharmony_ci		.enable_reg = 0x3184,
142662306a36Sopenharmony_ci		.enable_mask = BIT(0),
142762306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
142862306a36Sopenharmony_ci			.name = "camss_csi2_clk",
142962306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csi2_clk_src.clkr.hw },
143062306a36Sopenharmony_ci			.num_parents = 1,
143162306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
143262306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
143362306a36Sopenharmony_ci		},
143462306a36Sopenharmony_ci	},
143562306a36Sopenharmony_ci};
143662306a36Sopenharmony_ci
143762306a36Sopenharmony_cistatic struct clk_branch camss_csi2phytimer_clk = {
143862306a36Sopenharmony_ci	.halt_reg = 0x3084,
143962306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
144062306a36Sopenharmony_ci	.clkr = {
144162306a36Sopenharmony_ci		.enable_reg = 0x3084,
144262306a36Sopenharmony_ci		.enable_mask = BIT(0),
144362306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
144462306a36Sopenharmony_ci			.name = "camss_csi2phytimer_clk",
144562306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csi2phytimer_clk_src.clkr.hw },
144662306a36Sopenharmony_ci			.num_parents = 1,
144762306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
144862306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
144962306a36Sopenharmony_ci		},
145062306a36Sopenharmony_ci	},
145162306a36Sopenharmony_ci};
145262306a36Sopenharmony_ci
145362306a36Sopenharmony_cistatic struct clk_branch camss_csi2pix_clk = {
145462306a36Sopenharmony_ci	.halt_reg = 0x31b4,
145562306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
145662306a36Sopenharmony_ci	.clkr = {
145762306a36Sopenharmony_ci		.enable_reg = 0x31b4,
145862306a36Sopenharmony_ci		.enable_mask = BIT(0),
145962306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
146062306a36Sopenharmony_ci			.name = "camss_csi2pix_clk",
146162306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csi2_clk_src.clkr.hw },
146262306a36Sopenharmony_ci			.num_parents = 1,
146362306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
146462306a36Sopenharmony_ci		},
146562306a36Sopenharmony_ci	},
146662306a36Sopenharmony_ci};
146762306a36Sopenharmony_ci
146862306a36Sopenharmony_cistatic struct clk_branch camss_csi2rdi_clk = {
146962306a36Sopenharmony_ci	.halt_reg = 0x31a4,
147062306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
147162306a36Sopenharmony_ci	.clkr = {
147262306a36Sopenharmony_ci		.enable_reg = 0x31a4,
147362306a36Sopenharmony_ci		.enable_mask = BIT(0),
147462306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
147562306a36Sopenharmony_ci			.name = "camss_csi2rdi_clk",
147662306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csi2_clk_src.clkr.hw },
147762306a36Sopenharmony_ci			.num_parents = 1,
147862306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
147962306a36Sopenharmony_ci		},
148062306a36Sopenharmony_ci	},
148162306a36Sopenharmony_ci};
148262306a36Sopenharmony_ci
148362306a36Sopenharmony_cistatic struct clk_branch camss_csi3_ahb_clk = {
148462306a36Sopenharmony_ci	.halt_reg = 0x31e8,
148562306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
148662306a36Sopenharmony_ci	.clkr = {
148762306a36Sopenharmony_ci		.enable_reg = 0x31e8,
148862306a36Sopenharmony_ci		.enable_mask = BIT(0),
148962306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
149062306a36Sopenharmony_ci			.name = "camss_csi3_ahb_clk",
149162306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
149262306a36Sopenharmony_ci			.num_parents = 1,
149362306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
149462306a36Sopenharmony_ci		},
149562306a36Sopenharmony_ci	},
149662306a36Sopenharmony_ci};
149762306a36Sopenharmony_ci
149862306a36Sopenharmony_cistatic struct clk_branch camss_csi3_clk = {
149962306a36Sopenharmony_ci	.halt_reg = 0x31e4,
150062306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
150162306a36Sopenharmony_ci	.clkr = {
150262306a36Sopenharmony_ci		.enable_reg = 0x31e4,
150362306a36Sopenharmony_ci		.enable_mask = BIT(0),
150462306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
150562306a36Sopenharmony_ci			.name = "camss_csi3_clk",
150662306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csi3_clk_src.clkr.hw },
150762306a36Sopenharmony_ci			.num_parents = 1,
150862306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
150962306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
151062306a36Sopenharmony_ci		},
151162306a36Sopenharmony_ci	},
151262306a36Sopenharmony_ci};
151362306a36Sopenharmony_ci
151462306a36Sopenharmony_cistatic struct clk_branch camss_csi3pix_clk = {
151562306a36Sopenharmony_ci	.halt_reg = 0x3214,
151662306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
151762306a36Sopenharmony_ci	.clkr = {
151862306a36Sopenharmony_ci		.enable_reg = 0x3214,
151962306a36Sopenharmony_ci		.enable_mask = BIT(0),
152062306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
152162306a36Sopenharmony_ci			.name = "camss_csi3pix_clk",
152262306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csi3_clk_src.clkr.hw },
152362306a36Sopenharmony_ci			.num_parents = 1,
152462306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
152562306a36Sopenharmony_ci		},
152662306a36Sopenharmony_ci	},
152762306a36Sopenharmony_ci};
152862306a36Sopenharmony_ci
152962306a36Sopenharmony_cistatic struct clk_branch camss_csi3rdi_clk = {
153062306a36Sopenharmony_ci	.halt_reg = 0x3204,
153162306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
153262306a36Sopenharmony_ci	.clkr = {
153362306a36Sopenharmony_ci		.enable_reg = 0x3204,
153462306a36Sopenharmony_ci		.enable_mask = BIT(0),
153562306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
153662306a36Sopenharmony_ci			.name = "camss_csi3rdi_clk",
153762306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csi3_clk_src.clkr.hw },
153862306a36Sopenharmony_ci			.num_parents = 1,
153962306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
154062306a36Sopenharmony_ci		},
154162306a36Sopenharmony_ci	},
154262306a36Sopenharmony_ci};
154362306a36Sopenharmony_ci
154462306a36Sopenharmony_cistatic struct clk_branch camss_csi_vfe0_clk = {
154562306a36Sopenharmony_ci	.halt_reg = 0x3704,
154662306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
154762306a36Sopenharmony_ci	.clkr = {
154862306a36Sopenharmony_ci		.enable_reg = 0x3704,
154962306a36Sopenharmony_ci		.enable_mask = BIT(0),
155062306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
155162306a36Sopenharmony_ci			.name = "camss_csi_vfe0_clk",
155262306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &vfe0_clk_src.clkr.hw },
155362306a36Sopenharmony_ci			.num_parents = 1,
155462306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
155562306a36Sopenharmony_ci		},
155662306a36Sopenharmony_ci	},
155762306a36Sopenharmony_ci};
155862306a36Sopenharmony_ci
155962306a36Sopenharmony_cistatic struct clk_branch camss_csi_vfe1_clk = {
156062306a36Sopenharmony_ci	.halt_reg = 0x3714,
156162306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
156262306a36Sopenharmony_ci	.clkr = {
156362306a36Sopenharmony_ci		.enable_reg = 0x3714,
156462306a36Sopenharmony_ci		.enable_mask = BIT(0),
156562306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
156662306a36Sopenharmony_ci			.name = "camss_csi_vfe1_clk",
156762306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &vfe1_clk_src.clkr.hw },
156862306a36Sopenharmony_ci			.num_parents = 1,
156962306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
157062306a36Sopenharmony_ci		},
157162306a36Sopenharmony_ci	},
157262306a36Sopenharmony_ci};
157362306a36Sopenharmony_ci
157462306a36Sopenharmony_cistatic struct clk_branch camss_csiphy0_clk = {
157562306a36Sopenharmony_ci	.halt_reg = 0x3740,
157662306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
157762306a36Sopenharmony_ci	.clkr = {
157862306a36Sopenharmony_ci		.enable_reg = 0x3740,
157962306a36Sopenharmony_ci		.enable_mask = BIT(0),
158062306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
158162306a36Sopenharmony_ci			.name = "camss_csiphy0_clk",
158262306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csiphy_clk_src.clkr.hw },
158362306a36Sopenharmony_ci			.num_parents = 1,
158462306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
158562306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
158662306a36Sopenharmony_ci		},
158762306a36Sopenharmony_ci	},
158862306a36Sopenharmony_ci};
158962306a36Sopenharmony_ci
159062306a36Sopenharmony_cistatic struct clk_branch camss_csiphy1_clk = {
159162306a36Sopenharmony_ci	.halt_reg = 0x3744,
159262306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
159362306a36Sopenharmony_ci	.clkr = {
159462306a36Sopenharmony_ci		.enable_reg = 0x3744,
159562306a36Sopenharmony_ci		.enable_mask = BIT(0),
159662306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
159762306a36Sopenharmony_ci			.name = "camss_csiphy1_clk",
159862306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csiphy_clk_src.clkr.hw },
159962306a36Sopenharmony_ci			.num_parents = 1,
160062306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
160162306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
160262306a36Sopenharmony_ci		},
160362306a36Sopenharmony_ci	},
160462306a36Sopenharmony_ci};
160562306a36Sopenharmony_ci
160662306a36Sopenharmony_cistatic struct clk_branch camss_csiphy2_clk = {
160762306a36Sopenharmony_ci	.halt_reg = 0x3748,
160862306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
160962306a36Sopenharmony_ci	.clkr = {
161062306a36Sopenharmony_ci		.enable_reg = 0x3748,
161162306a36Sopenharmony_ci		.enable_mask = BIT(0),
161262306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
161362306a36Sopenharmony_ci			.name = "camss_csiphy2_clk",
161462306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csiphy_clk_src.clkr.hw },
161562306a36Sopenharmony_ci			.num_parents = 1,
161662306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
161762306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
161862306a36Sopenharmony_ci		},
161962306a36Sopenharmony_ci	},
162062306a36Sopenharmony_ci};
162162306a36Sopenharmony_ci
162262306a36Sopenharmony_ci
162362306a36Sopenharmony_cistatic struct clk_branch camss_cphy_csid0_clk = {
162462306a36Sopenharmony_ci	.halt_reg = 0x3730,
162562306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
162662306a36Sopenharmony_ci	.clkr = {
162762306a36Sopenharmony_ci		.enable_reg = 0x3730,
162862306a36Sopenharmony_ci		.enable_mask = BIT(0),
162962306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
163062306a36Sopenharmony_ci			.name = "camss_cphy_csid0_clk",
163162306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &camss_csiphy0_clk.clkr.hw },
163262306a36Sopenharmony_ci			.num_parents = 1,
163362306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
163462306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
163562306a36Sopenharmony_ci		},
163662306a36Sopenharmony_ci	},
163762306a36Sopenharmony_ci};
163862306a36Sopenharmony_ci
163962306a36Sopenharmony_cistatic struct clk_branch camss_cphy_csid1_clk = {
164062306a36Sopenharmony_ci	.halt_reg = 0x3734,
164162306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
164262306a36Sopenharmony_ci	.clkr = {
164362306a36Sopenharmony_ci		.enable_reg = 0x3734,
164462306a36Sopenharmony_ci		.enable_mask = BIT(0),
164562306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
164662306a36Sopenharmony_ci			.name = "camss_cphy_csid1_clk",
164762306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &camss_csiphy1_clk.clkr.hw },
164862306a36Sopenharmony_ci			.num_parents = 1,
164962306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
165062306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
165162306a36Sopenharmony_ci		},
165262306a36Sopenharmony_ci	},
165362306a36Sopenharmony_ci};
165462306a36Sopenharmony_ci
165562306a36Sopenharmony_cistatic struct clk_branch camss_cphy_csid2_clk = {
165662306a36Sopenharmony_ci	.halt_reg = 0x3738,
165762306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
165862306a36Sopenharmony_ci	.clkr = {
165962306a36Sopenharmony_ci		.enable_reg = 0x3738,
166062306a36Sopenharmony_ci		.enable_mask = BIT(0),
166162306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
166262306a36Sopenharmony_ci			.name = "camss_cphy_csid2_clk",
166362306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &camss_csiphy2_clk.clkr.hw },
166462306a36Sopenharmony_ci			.num_parents = 1,
166562306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
166662306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
166762306a36Sopenharmony_ci		},
166862306a36Sopenharmony_ci	},
166962306a36Sopenharmony_ci};
167062306a36Sopenharmony_ci
167162306a36Sopenharmony_cistatic struct clk_branch camss_cphy_csid3_clk = {
167262306a36Sopenharmony_ci	.halt_reg = 0x373c,
167362306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
167462306a36Sopenharmony_ci	.clkr = {
167562306a36Sopenharmony_ci		.enable_reg = 0x373c,
167662306a36Sopenharmony_ci		.enable_mask = BIT(0),
167762306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
167862306a36Sopenharmony_ci			.name = "camss_cphy_csid3_clk",
167962306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &csiphy_clk_src.clkr.hw },
168062306a36Sopenharmony_ci			.num_parents = 1,
168162306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
168262306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
168362306a36Sopenharmony_ci		},
168462306a36Sopenharmony_ci	},
168562306a36Sopenharmony_ci};
168662306a36Sopenharmony_ci
168762306a36Sopenharmony_cistatic struct clk_branch camss_gp0_clk = {
168862306a36Sopenharmony_ci	.halt_reg = 0x3444,
168962306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
169062306a36Sopenharmony_ci	.clkr = {
169162306a36Sopenharmony_ci		.enable_reg = 0x3444,
169262306a36Sopenharmony_ci		.enable_mask = BIT(0),
169362306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
169462306a36Sopenharmony_ci			.name = "camss_gp0_clk",
169562306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &camss_gp0_clk_src.clkr.hw },
169662306a36Sopenharmony_ci			.num_parents = 1,
169762306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
169862306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
169962306a36Sopenharmony_ci		},
170062306a36Sopenharmony_ci	},
170162306a36Sopenharmony_ci};
170262306a36Sopenharmony_ci
170362306a36Sopenharmony_cistatic struct clk_branch camss_gp1_clk = {
170462306a36Sopenharmony_ci	.halt_reg = 0x3474,
170562306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
170662306a36Sopenharmony_ci	.clkr = {
170762306a36Sopenharmony_ci		.enable_reg = 0x3474,
170862306a36Sopenharmony_ci		.enable_mask = BIT(0),
170962306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
171062306a36Sopenharmony_ci			.name = "camss_gp1_clk",
171162306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &camss_gp1_clk_src.clkr.hw },
171262306a36Sopenharmony_ci			.num_parents = 1,
171362306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
171462306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
171562306a36Sopenharmony_ci		},
171662306a36Sopenharmony_ci	},
171762306a36Sopenharmony_ci};
171862306a36Sopenharmony_ci
171962306a36Sopenharmony_cistatic struct clk_branch camss_ispif_ahb_clk = {
172062306a36Sopenharmony_ci	.halt_reg = 0x3224,
172162306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
172262306a36Sopenharmony_ci	.clkr = {
172362306a36Sopenharmony_ci		.enable_reg = 0x3224,
172462306a36Sopenharmony_ci		.enable_mask = BIT(0),
172562306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
172662306a36Sopenharmony_ci			.name = "camss_ispif_ahb_clk",
172762306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
172862306a36Sopenharmony_ci			.num_parents = 1,
172962306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
173062306a36Sopenharmony_ci		},
173162306a36Sopenharmony_ci	},
173262306a36Sopenharmony_ci};
173362306a36Sopenharmony_ci
173462306a36Sopenharmony_cistatic struct clk_branch camss_jpeg0_clk = {
173562306a36Sopenharmony_ci	.halt_reg = 0x35a8,
173662306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
173762306a36Sopenharmony_ci	.clkr = {
173862306a36Sopenharmony_ci		.enable_reg = 0x35a8,
173962306a36Sopenharmony_ci		.enable_mask = BIT(0),
174062306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
174162306a36Sopenharmony_ci			.name = "camss_jpeg0_clk",
174262306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &jpeg0_clk_src.clkr.hw },
174362306a36Sopenharmony_ci			.num_parents = 1,
174462306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
174562306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
174662306a36Sopenharmony_ci		},
174762306a36Sopenharmony_ci	},
174862306a36Sopenharmony_ci};
174962306a36Sopenharmony_ci
175062306a36Sopenharmony_cistatic struct clk_branch camss_jpeg_ahb_clk = {
175162306a36Sopenharmony_ci	.halt_reg = 0x35b4,
175262306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
175362306a36Sopenharmony_ci	.clkr = {
175462306a36Sopenharmony_ci		.enable_reg = 0x35b4,
175562306a36Sopenharmony_ci		.enable_mask = BIT(0),
175662306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
175762306a36Sopenharmony_ci			.name = "camss_jpeg_ahb_clk",
175862306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
175962306a36Sopenharmony_ci			.num_parents = 1,
176062306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
176162306a36Sopenharmony_ci		},
176262306a36Sopenharmony_ci	},
176362306a36Sopenharmony_ci};
176462306a36Sopenharmony_ci
176562306a36Sopenharmony_cistatic struct clk_branch camss_jpeg_axi_clk = {
176662306a36Sopenharmony_ci	.halt_reg = 0x35b8,
176762306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
176862306a36Sopenharmony_ci	.clkr = {
176962306a36Sopenharmony_ci		.enable_reg = 0x35b8,
177062306a36Sopenharmony_ci		.enable_mask = BIT(0),
177162306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
177262306a36Sopenharmony_ci			.name = "camss_jpeg_axi_clk",
177362306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
177462306a36Sopenharmony_ci		},
177562306a36Sopenharmony_ci	},
177662306a36Sopenharmony_ci};
177762306a36Sopenharmony_ci
177862306a36Sopenharmony_cistatic struct clk_branch throttle_camss_axi_clk = {
177962306a36Sopenharmony_ci	.halt_reg = 0x3c3c,
178062306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
178162306a36Sopenharmony_ci	.clkr = {
178262306a36Sopenharmony_ci		.enable_reg = 0x3c3c,
178362306a36Sopenharmony_ci		.enable_mask = BIT(0),
178462306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
178562306a36Sopenharmony_ci			.name = "throttle_camss_axi_clk",
178662306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
178762306a36Sopenharmony_ci		},
178862306a36Sopenharmony_ci	},
178962306a36Sopenharmony_ci};
179062306a36Sopenharmony_ci
179162306a36Sopenharmony_cistatic struct clk_branch camss_mclk0_clk = {
179262306a36Sopenharmony_ci	.halt_reg = 0x3384,
179362306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
179462306a36Sopenharmony_ci	.clkr = {
179562306a36Sopenharmony_ci		.enable_reg = 0x3384,
179662306a36Sopenharmony_ci		.enable_mask = BIT(0),
179762306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
179862306a36Sopenharmony_ci			.name = "camss_mclk0_clk",
179962306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &mclk0_clk_src.clkr.hw },
180062306a36Sopenharmony_ci			.num_parents = 1,
180162306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
180262306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
180362306a36Sopenharmony_ci		},
180462306a36Sopenharmony_ci	},
180562306a36Sopenharmony_ci};
180662306a36Sopenharmony_ci
180762306a36Sopenharmony_cistatic struct clk_branch camss_mclk1_clk = {
180862306a36Sopenharmony_ci	.halt_reg = 0x33b4,
180962306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
181062306a36Sopenharmony_ci	.clkr = {
181162306a36Sopenharmony_ci		.enable_reg = 0x33b4,
181262306a36Sopenharmony_ci		.enable_mask = BIT(0),
181362306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
181462306a36Sopenharmony_ci			.name = "camss_mclk1_clk",
181562306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &mclk1_clk_src.clkr.hw },
181662306a36Sopenharmony_ci			.num_parents = 1,
181762306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
181862306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
181962306a36Sopenharmony_ci		},
182062306a36Sopenharmony_ci	},
182162306a36Sopenharmony_ci};
182262306a36Sopenharmony_ci
182362306a36Sopenharmony_cistatic struct clk_branch camss_mclk2_clk = {
182462306a36Sopenharmony_ci	.halt_reg = 0x33e4,
182562306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
182662306a36Sopenharmony_ci	.clkr = {
182762306a36Sopenharmony_ci		.enable_reg = 0x33e4,
182862306a36Sopenharmony_ci		.enable_mask = BIT(0),
182962306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
183062306a36Sopenharmony_ci			.name = "camss_mclk2_clk",
183162306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &mclk2_clk_src.clkr.hw },
183262306a36Sopenharmony_ci			.num_parents = 1,
183362306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
183462306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
183562306a36Sopenharmony_ci		},
183662306a36Sopenharmony_ci	},
183762306a36Sopenharmony_ci};
183862306a36Sopenharmony_ci
183962306a36Sopenharmony_cistatic struct clk_branch camss_mclk3_clk = {
184062306a36Sopenharmony_ci	.halt_reg = 0x3414,
184162306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
184262306a36Sopenharmony_ci	.clkr = {
184362306a36Sopenharmony_ci		.enable_reg = 0x3414,
184462306a36Sopenharmony_ci		.enable_mask = BIT(0),
184562306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
184662306a36Sopenharmony_ci			.name = "camss_mclk3_clk",
184762306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &mclk3_clk_src.clkr.hw },
184862306a36Sopenharmony_ci			.num_parents = 1,
184962306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
185062306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
185162306a36Sopenharmony_ci		},
185262306a36Sopenharmony_ci	},
185362306a36Sopenharmony_ci};
185462306a36Sopenharmony_ci
185562306a36Sopenharmony_cistatic struct clk_branch camss_micro_ahb_clk = {
185662306a36Sopenharmony_ci	.halt_reg = 0x3494,
185762306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
185862306a36Sopenharmony_ci	.clkr = {
185962306a36Sopenharmony_ci		.enable_reg = 0x3494,
186062306a36Sopenharmony_ci		.enable_mask = BIT(0),
186162306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
186262306a36Sopenharmony_ci			.name = "camss_micro_ahb_clk",
186362306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
186462306a36Sopenharmony_ci			.num_parents = 1,
186562306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
186662306a36Sopenharmony_ci		},
186762306a36Sopenharmony_ci	},
186862306a36Sopenharmony_ci};
186962306a36Sopenharmony_ci
187062306a36Sopenharmony_cistatic struct clk_branch camss_top_ahb_clk = {
187162306a36Sopenharmony_ci	.halt_reg = 0x3484,
187262306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
187362306a36Sopenharmony_ci	.clkr = {
187462306a36Sopenharmony_ci		.enable_reg = 0x3484,
187562306a36Sopenharmony_ci		.enable_mask = BIT(0),
187662306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
187762306a36Sopenharmony_ci			.name = "camss_top_ahb_clk",
187862306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
187962306a36Sopenharmony_ci			.num_parents = 1,
188062306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
188162306a36Sopenharmony_ci		},
188262306a36Sopenharmony_ci	},
188362306a36Sopenharmony_ci};
188462306a36Sopenharmony_ci
188562306a36Sopenharmony_cistatic struct clk_branch camss_vfe0_ahb_clk = {
188662306a36Sopenharmony_ci	.halt_reg = 0x3668,
188762306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
188862306a36Sopenharmony_ci	.clkr = {
188962306a36Sopenharmony_ci		.enable_reg = 0x3668,
189062306a36Sopenharmony_ci		.enable_mask = BIT(0),
189162306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
189262306a36Sopenharmony_ci			.name = "camss_vfe0_ahb_clk",
189362306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
189462306a36Sopenharmony_ci			.num_parents = 1,
189562306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
189662306a36Sopenharmony_ci		},
189762306a36Sopenharmony_ci	},
189862306a36Sopenharmony_ci};
189962306a36Sopenharmony_ci
190062306a36Sopenharmony_cistatic struct clk_branch camss_vfe0_clk = {
190162306a36Sopenharmony_ci	.halt_reg = 0x36a8,
190262306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
190362306a36Sopenharmony_ci	.clkr = {
190462306a36Sopenharmony_ci		.enable_reg = 0x36a8,
190562306a36Sopenharmony_ci		.enable_mask = BIT(0),
190662306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
190762306a36Sopenharmony_ci			.name = "camss_vfe0_clk",
190862306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &vfe0_clk_src.clkr.hw },
190962306a36Sopenharmony_ci			.num_parents = 1,
191062306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
191162306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
191262306a36Sopenharmony_ci		},
191362306a36Sopenharmony_ci	},
191462306a36Sopenharmony_ci};
191562306a36Sopenharmony_ci
191662306a36Sopenharmony_cistatic struct clk_branch camss_vfe0_stream_clk = {
191762306a36Sopenharmony_ci	.halt_reg = 0x3720,
191862306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
191962306a36Sopenharmony_ci	.clkr = {
192062306a36Sopenharmony_ci		.enable_reg = 0x3720,
192162306a36Sopenharmony_ci		.enable_mask = BIT(0),
192262306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
192362306a36Sopenharmony_ci			.name = "camss_vfe0_stream_clk",
192462306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &vfe0_clk_src.clkr.hw },
192562306a36Sopenharmony_ci			.num_parents = 1,
192662306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
192762306a36Sopenharmony_ci		},
192862306a36Sopenharmony_ci	},
192962306a36Sopenharmony_ci};
193062306a36Sopenharmony_ci
193162306a36Sopenharmony_cistatic struct clk_branch camss_vfe1_ahb_clk = {
193262306a36Sopenharmony_ci	.halt_reg = 0x3678,
193362306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
193462306a36Sopenharmony_ci	.clkr = {
193562306a36Sopenharmony_ci		.enable_reg = 0x3678,
193662306a36Sopenharmony_ci		.enable_mask = BIT(0),
193762306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
193862306a36Sopenharmony_ci			.name = "camss_vfe1_ahb_clk",
193962306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
194062306a36Sopenharmony_ci			.num_parents = 1,
194162306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
194262306a36Sopenharmony_ci		},
194362306a36Sopenharmony_ci	},
194462306a36Sopenharmony_ci};
194562306a36Sopenharmony_ci
194662306a36Sopenharmony_cistatic struct clk_branch camss_vfe1_clk = {
194762306a36Sopenharmony_ci	.halt_reg = 0x36ac,
194862306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
194962306a36Sopenharmony_ci	.clkr = {
195062306a36Sopenharmony_ci		.enable_reg = 0x36ac,
195162306a36Sopenharmony_ci		.enable_mask = BIT(0),
195262306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
195362306a36Sopenharmony_ci			.name = "camss_vfe1_clk",
195462306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &vfe1_clk_src.clkr.hw },
195562306a36Sopenharmony_ci			.num_parents = 1,
195662306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
195762306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
195862306a36Sopenharmony_ci		},
195962306a36Sopenharmony_ci	},
196062306a36Sopenharmony_ci};
196162306a36Sopenharmony_ci
196262306a36Sopenharmony_cistatic struct clk_branch camss_vfe1_stream_clk = {
196362306a36Sopenharmony_ci	.halt_reg = 0x3724,
196462306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
196562306a36Sopenharmony_ci	.clkr = {
196662306a36Sopenharmony_ci		.enable_reg = 0x3724,
196762306a36Sopenharmony_ci		.enable_mask = BIT(0),
196862306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
196962306a36Sopenharmony_ci			.name = "camss_vfe1_stream_clk",
197062306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &vfe1_clk_src.clkr.hw },
197162306a36Sopenharmony_ci			.num_parents = 1,
197262306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
197362306a36Sopenharmony_ci		},
197462306a36Sopenharmony_ci	},
197562306a36Sopenharmony_ci};
197662306a36Sopenharmony_ci
197762306a36Sopenharmony_cistatic struct clk_branch camss_vfe_vbif_ahb_clk = {
197862306a36Sopenharmony_ci	.halt_reg = 0x36b8,
197962306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
198062306a36Sopenharmony_ci	.clkr = {
198162306a36Sopenharmony_ci		.enable_reg = 0x36b8,
198262306a36Sopenharmony_ci		.enable_mask = BIT(0),
198362306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
198462306a36Sopenharmony_ci			.name = "camss_vfe_vbif_ahb_clk",
198562306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
198662306a36Sopenharmony_ci			.num_parents = 1,
198762306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
198862306a36Sopenharmony_ci		},
198962306a36Sopenharmony_ci	},
199062306a36Sopenharmony_ci};
199162306a36Sopenharmony_ci
199262306a36Sopenharmony_cistatic struct clk_branch camss_vfe_vbif_axi_clk = {
199362306a36Sopenharmony_ci	.halt_reg = 0x36bc,
199462306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
199562306a36Sopenharmony_ci	.clkr = {
199662306a36Sopenharmony_ci		.enable_reg = 0x36bc,
199762306a36Sopenharmony_ci		.enable_mask = BIT(0),
199862306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
199962306a36Sopenharmony_ci			.name = "camss_vfe_vbif_axi_clk",
200062306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
200162306a36Sopenharmony_ci		},
200262306a36Sopenharmony_ci	},
200362306a36Sopenharmony_ci};
200462306a36Sopenharmony_ci
200562306a36Sopenharmony_cistatic struct clk_branch csiphy_ahb2crif_clk = {
200662306a36Sopenharmony_ci	.halt_reg = 0x374c,
200762306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
200862306a36Sopenharmony_ci	.hwcg_reg = 0x374c,
200962306a36Sopenharmony_ci	.hwcg_bit = 1,
201062306a36Sopenharmony_ci	.clkr = {
201162306a36Sopenharmony_ci		.enable_reg = 0x374c,
201262306a36Sopenharmony_ci		.enable_mask = BIT(0),
201362306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
201462306a36Sopenharmony_ci			.name = "csiphy_ahb2crif_clk",
201562306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
201662306a36Sopenharmony_ci			.num_parents = 1,
201762306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
201862306a36Sopenharmony_ci		},
201962306a36Sopenharmony_ci	},
202062306a36Sopenharmony_ci};
202162306a36Sopenharmony_ci
202262306a36Sopenharmony_cistatic struct clk_branch mdss_ahb_clk = {
202362306a36Sopenharmony_ci	.halt_reg = 0x2308,
202462306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
202562306a36Sopenharmony_ci	.hwcg_reg = 0x8a004,
202662306a36Sopenharmony_ci	.hwcg_bit = 1,
202762306a36Sopenharmony_ci	.clkr = {
202862306a36Sopenharmony_ci		.enable_reg = 0x2308,
202962306a36Sopenharmony_ci		.enable_mask = BIT(0),
203062306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
203162306a36Sopenharmony_ci			.name = "mdss_ahb_clk",
203262306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
203362306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
203462306a36Sopenharmony_ci			.num_parents = 1,
203562306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
203662306a36Sopenharmony_ci		},
203762306a36Sopenharmony_ci	},
203862306a36Sopenharmony_ci};
203962306a36Sopenharmony_ci
204062306a36Sopenharmony_cistatic const struct freq_tbl ftbl_axi_clk_src[] = {
204162306a36Sopenharmony_ci		F(75000000, P_GPLL0, 8, 0, 0),
204262306a36Sopenharmony_ci		F(171428571, P_GPLL0, 3.5, 0, 0),
204362306a36Sopenharmony_ci		F(240000000, P_GPLL0, 2.5, 0, 0),
204462306a36Sopenharmony_ci		F(323200000, P_MMPLL0, 2.5, 0, 0),
204562306a36Sopenharmony_ci		F(406000000, P_MMPLL0, 2, 0, 0),
204662306a36Sopenharmony_ci		{ }
204762306a36Sopenharmony_ci};
204862306a36Sopenharmony_ci
204962306a36Sopenharmony_ci/* RO to linux */
205062306a36Sopenharmony_cistatic struct clk_rcg2 axi_clk_src = {
205162306a36Sopenharmony_ci	.cmd_rcgr = 0xd000,
205262306a36Sopenharmony_ci	.hid_width = 5,
205362306a36Sopenharmony_ci	.parent_map = mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div_map,
205462306a36Sopenharmony_ci	.freq_tbl = ftbl_axi_clk_src,
205562306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
205662306a36Sopenharmony_ci		.name = "axi_clk_src",
205762306a36Sopenharmony_ci		.parent_data = mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div,
205862306a36Sopenharmony_ci		.num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_mmpll4_mmpll7_mmpll10_gpll0_gpll0_div),
205962306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
206062306a36Sopenharmony_ci	},
206162306a36Sopenharmony_ci};
206262306a36Sopenharmony_ci
206362306a36Sopenharmony_cistatic struct clk_branch mdss_axi_clk = {
206462306a36Sopenharmony_ci	.halt_reg = 0x2310,
206562306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
206662306a36Sopenharmony_ci	.clkr = {
206762306a36Sopenharmony_ci		.enable_reg = 0x2310,
206862306a36Sopenharmony_ci		.enable_mask = BIT(0),
206962306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
207062306a36Sopenharmony_ci			.name = "mdss_axi_clk",
207162306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &axi_clk_src.clkr.hw },
207262306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
207362306a36Sopenharmony_ci		},
207462306a36Sopenharmony_ci	},
207562306a36Sopenharmony_ci};
207662306a36Sopenharmony_ci
207762306a36Sopenharmony_cistatic struct clk_branch throttle_mdss_axi_clk = {
207862306a36Sopenharmony_ci	.halt_reg = 0x246c,
207962306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
208062306a36Sopenharmony_ci	.hwcg_reg = 0x246c,
208162306a36Sopenharmony_ci	.hwcg_bit = 1,
208262306a36Sopenharmony_ci	.clkr = {
208362306a36Sopenharmony_ci		.enable_reg = 0x246c,
208462306a36Sopenharmony_ci		.enable_mask = BIT(0),
208562306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
208662306a36Sopenharmony_ci			.name = "throttle_mdss_axi_clk",
208762306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
208862306a36Sopenharmony_ci		},
208962306a36Sopenharmony_ci	},
209062306a36Sopenharmony_ci};
209162306a36Sopenharmony_ci
209262306a36Sopenharmony_cistatic struct clk_branch mdss_byte0_clk = {
209362306a36Sopenharmony_ci	.halt_reg = 0x233c,
209462306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
209562306a36Sopenharmony_ci	.clkr = {
209662306a36Sopenharmony_ci		.enable_reg = 0x233c,
209762306a36Sopenharmony_ci		.enable_mask = BIT(0),
209862306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
209962306a36Sopenharmony_ci			.name = "mdss_byte0_clk",
210062306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &byte0_clk_src.clkr.hw },
210162306a36Sopenharmony_ci			.num_parents = 1,
210262306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
210362306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
210462306a36Sopenharmony_ci		},
210562306a36Sopenharmony_ci	},
210662306a36Sopenharmony_ci};
210762306a36Sopenharmony_ci
210862306a36Sopenharmony_cistatic struct clk_regmap_div mdss_byte0_intf_div_clk = {
210962306a36Sopenharmony_ci	.reg = 0x237c,
211062306a36Sopenharmony_ci	.shift = 0,
211162306a36Sopenharmony_ci	.width = 2,
211262306a36Sopenharmony_ci	/*
211362306a36Sopenharmony_ci	 * NOTE: Op does not work for div-3. Current assumption is that div-3
211462306a36Sopenharmony_ci	 * is not a recommended setting for this divider.
211562306a36Sopenharmony_ci	 */
211662306a36Sopenharmony_ci	.clkr = {
211762306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
211862306a36Sopenharmony_ci			.name = "mdss_byte0_intf_div_clk",
211962306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &byte0_clk_src.clkr.hw },
212062306a36Sopenharmony_ci			.num_parents = 1,
212162306a36Sopenharmony_ci			.ops = &clk_regmap_div_ops,
212262306a36Sopenharmony_ci			.flags = CLK_GET_RATE_NOCACHE,
212362306a36Sopenharmony_ci		},
212462306a36Sopenharmony_ci	},
212562306a36Sopenharmony_ci};
212662306a36Sopenharmony_ci
212762306a36Sopenharmony_cistatic struct clk_branch mdss_byte0_intf_clk = {
212862306a36Sopenharmony_ci	.halt_reg = 0x2374,
212962306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
213062306a36Sopenharmony_ci	.clkr = {
213162306a36Sopenharmony_ci		.enable_reg = 0x2374,
213262306a36Sopenharmony_ci		.enable_mask = BIT(0),
213362306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
213462306a36Sopenharmony_ci			.name = "mdss_byte0_intf_clk",
213562306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &mdss_byte0_intf_div_clk.clkr.hw },
213662306a36Sopenharmony_ci			.num_parents = 1,
213762306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT | CLK_GET_RATE_NOCACHE,
213862306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
213962306a36Sopenharmony_ci		},
214062306a36Sopenharmony_ci	},
214162306a36Sopenharmony_ci};
214262306a36Sopenharmony_ci
214362306a36Sopenharmony_cistatic struct clk_branch mdss_byte1_clk = {
214462306a36Sopenharmony_ci	.halt_reg = 0x2340,
214562306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
214662306a36Sopenharmony_ci	.clkr = {
214762306a36Sopenharmony_ci		.enable_reg = 0x2340,
214862306a36Sopenharmony_ci		.enable_mask = BIT(0),
214962306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
215062306a36Sopenharmony_ci			.name = "mdss_byte1_clk",
215162306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &byte1_clk_src.clkr.hw },
215262306a36Sopenharmony_ci			.num_parents = 1,
215362306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
215462306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
215562306a36Sopenharmony_ci		},
215662306a36Sopenharmony_ci	},
215762306a36Sopenharmony_ci};
215862306a36Sopenharmony_ci
215962306a36Sopenharmony_cistatic struct clk_regmap_div mdss_byte1_intf_div_clk = {
216062306a36Sopenharmony_ci	.reg = 0x2380,
216162306a36Sopenharmony_ci	.shift = 0,
216262306a36Sopenharmony_ci	.width = 2,
216362306a36Sopenharmony_ci	/*
216462306a36Sopenharmony_ci	 * NOTE: Op does not work for div-3. Current assumption is that div-3
216562306a36Sopenharmony_ci	 * is not a recommended setting for this divider.
216662306a36Sopenharmony_ci	 */
216762306a36Sopenharmony_ci	.clkr = {
216862306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
216962306a36Sopenharmony_ci			.name = "mdss_byte1_intf_div_clk",
217062306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &byte1_clk_src.clkr.hw },
217162306a36Sopenharmony_ci			.num_parents = 1,
217262306a36Sopenharmony_ci			.ops = &clk_regmap_div_ops,
217362306a36Sopenharmony_ci			.flags = CLK_GET_RATE_NOCACHE,
217462306a36Sopenharmony_ci		},
217562306a36Sopenharmony_ci	},
217662306a36Sopenharmony_ci};
217762306a36Sopenharmony_ci
217862306a36Sopenharmony_cistatic struct clk_branch mdss_byte1_intf_clk = {
217962306a36Sopenharmony_ci	.halt_reg = 0x2378,
218062306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
218162306a36Sopenharmony_ci	.clkr = {
218262306a36Sopenharmony_ci		.enable_reg = 0x2378,
218362306a36Sopenharmony_ci		.enable_mask = BIT(0),
218462306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
218562306a36Sopenharmony_ci			.name = "mdss_byte1_intf_clk",
218662306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &mdss_byte1_intf_div_clk.clkr.hw },
218762306a36Sopenharmony_ci			.num_parents = 1,
218862306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT | CLK_GET_RATE_NOCACHE,
218962306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
219062306a36Sopenharmony_ci		},
219162306a36Sopenharmony_ci	},
219262306a36Sopenharmony_ci};
219362306a36Sopenharmony_ci
219462306a36Sopenharmony_cistatic struct clk_branch mdss_dp_aux_clk = {
219562306a36Sopenharmony_ci	.halt_reg = 0x2364,
219662306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
219762306a36Sopenharmony_ci	.clkr = {
219862306a36Sopenharmony_ci		.enable_reg = 0x2364,
219962306a36Sopenharmony_ci		.enable_mask = BIT(0),
220062306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
220162306a36Sopenharmony_ci			.name = "mdss_dp_aux_clk",
220262306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &dp_aux_clk_src.clkr.hw },
220362306a36Sopenharmony_ci			.num_parents = 1,
220462306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
220562306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
220662306a36Sopenharmony_ci		},
220762306a36Sopenharmony_ci	},
220862306a36Sopenharmony_ci};
220962306a36Sopenharmony_ci
221062306a36Sopenharmony_cistatic struct clk_branch mdss_dp_crypto_clk = {
221162306a36Sopenharmony_ci	.halt_reg = 0x235c,
221262306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
221362306a36Sopenharmony_ci	.clkr = {
221462306a36Sopenharmony_ci		.enable_reg = 0x235c,
221562306a36Sopenharmony_ci		.enable_mask = BIT(0),
221662306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
221762306a36Sopenharmony_ci			.name = "mdss_dp_crypto_clk",
221862306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &dp_crypto_clk_src.clkr.hw },
221962306a36Sopenharmony_ci			.num_parents = 1,
222062306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
222162306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
222262306a36Sopenharmony_ci		},
222362306a36Sopenharmony_ci	},
222462306a36Sopenharmony_ci};
222562306a36Sopenharmony_ci
222662306a36Sopenharmony_cistatic struct clk_branch mdss_dp_gtc_clk = {
222762306a36Sopenharmony_ci	.halt_reg = 0x2368,
222862306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
222962306a36Sopenharmony_ci	.clkr = {
223062306a36Sopenharmony_ci		.enable_reg = 0x2368,
223162306a36Sopenharmony_ci		.enable_mask = BIT(0),
223262306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
223362306a36Sopenharmony_ci			.name = "mdss_dp_gtc_clk",
223462306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &dp_gtc_clk_src.clkr.hw },
223562306a36Sopenharmony_ci			.num_parents = 1,
223662306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
223762306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
223862306a36Sopenharmony_ci		},
223962306a36Sopenharmony_ci	},
224062306a36Sopenharmony_ci};
224162306a36Sopenharmony_ci
224262306a36Sopenharmony_cistatic struct clk_branch mdss_dp_link_clk = {
224362306a36Sopenharmony_ci	.halt_reg = 0x2354,
224462306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
224562306a36Sopenharmony_ci	.clkr = {
224662306a36Sopenharmony_ci		.enable_reg = 0x2354,
224762306a36Sopenharmony_ci		.enable_mask = BIT(0),
224862306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
224962306a36Sopenharmony_ci			.name = "mdss_dp_link_clk",
225062306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &dp_link_clk_src.clkr.hw },
225162306a36Sopenharmony_ci			.num_parents = 1,
225262306a36Sopenharmony_ci			.flags = CLK_GET_RATE_NOCACHE | CLK_SET_RATE_PARENT,
225362306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
225462306a36Sopenharmony_ci		},
225562306a36Sopenharmony_ci	},
225662306a36Sopenharmony_ci};
225762306a36Sopenharmony_ci
225862306a36Sopenharmony_ci/* Reset state of MDSS_DP_LINK_INTF_DIV is 0x3 (div-4) */
225962306a36Sopenharmony_cistatic struct clk_branch mdss_dp_link_intf_clk = {
226062306a36Sopenharmony_ci	.halt_reg = 0x2358,
226162306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
226262306a36Sopenharmony_ci	.clkr = {
226362306a36Sopenharmony_ci		.enable_reg = 0x2358,
226462306a36Sopenharmony_ci		.enable_mask = BIT(0),
226562306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
226662306a36Sopenharmony_ci			.name = "mdss_dp_link_intf_clk",
226762306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &dp_link_clk_src.clkr.hw },
226862306a36Sopenharmony_ci			.num_parents = 1,
226962306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
227062306a36Sopenharmony_ci		},
227162306a36Sopenharmony_ci	},
227262306a36Sopenharmony_ci};
227362306a36Sopenharmony_ci
227462306a36Sopenharmony_cistatic struct clk_branch mdss_dp_pixel_clk = {
227562306a36Sopenharmony_ci	.halt_reg = 0x2360,
227662306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
227762306a36Sopenharmony_ci	.clkr = {
227862306a36Sopenharmony_ci		.enable_reg = 0x2360,
227962306a36Sopenharmony_ci		.enable_mask = BIT(0),
228062306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
228162306a36Sopenharmony_ci			.name = "mdss_dp_pixel_clk",
228262306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &dp_pixel_clk_src.clkr.hw },
228362306a36Sopenharmony_ci			.num_parents = 1,
228462306a36Sopenharmony_ci			.flags = CLK_GET_RATE_NOCACHE | CLK_SET_RATE_PARENT,
228562306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
228662306a36Sopenharmony_ci		},
228762306a36Sopenharmony_ci	},
228862306a36Sopenharmony_ci};
228962306a36Sopenharmony_ci
229062306a36Sopenharmony_cistatic struct clk_branch mdss_esc0_clk = {
229162306a36Sopenharmony_ci	.halt_reg = 0x2344,
229262306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
229362306a36Sopenharmony_ci	.clkr = {
229462306a36Sopenharmony_ci		.enable_reg = 0x2344,
229562306a36Sopenharmony_ci		.enable_mask = BIT(0),
229662306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
229762306a36Sopenharmony_ci			.name = "mdss_esc0_clk",
229862306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &esc0_clk_src.clkr.hw },
229962306a36Sopenharmony_ci			.num_parents = 1,
230062306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
230162306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
230262306a36Sopenharmony_ci		},
230362306a36Sopenharmony_ci	},
230462306a36Sopenharmony_ci};
230562306a36Sopenharmony_ci
230662306a36Sopenharmony_cistatic struct clk_branch mdss_esc1_clk = {
230762306a36Sopenharmony_ci	.halt_reg = 0x2348,
230862306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
230962306a36Sopenharmony_ci	.clkr = {
231062306a36Sopenharmony_ci		.enable_reg = 0x2348,
231162306a36Sopenharmony_ci		.enable_mask = BIT(0),
231262306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
231362306a36Sopenharmony_ci			.name = "mdss_esc1_clk",
231462306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &esc1_clk_src.clkr.hw },
231562306a36Sopenharmony_ci			.num_parents = 1,
231662306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
231762306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
231862306a36Sopenharmony_ci		},
231962306a36Sopenharmony_ci	},
232062306a36Sopenharmony_ci};
232162306a36Sopenharmony_ci
232262306a36Sopenharmony_cistatic struct clk_branch mdss_hdmi_dp_ahb_clk = {
232362306a36Sopenharmony_ci	.halt_reg = 0x230c,
232462306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
232562306a36Sopenharmony_ci	.clkr = {
232662306a36Sopenharmony_ci		.enable_reg = 0x230c,
232762306a36Sopenharmony_ci		.enable_mask = BIT(0),
232862306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
232962306a36Sopenharmony_ci			.name = "mdss_hdmi_dp_ahb_clk",
233062306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
233162306a36Sopenharmony_ci			.num_parents = 1,
233262306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
233362306a36Sopenharmony_ci		},
233462306a36Sopenharmony_ci	},
233562306a36Sopenharmony_ci};
233662306a36Sopenharmony_ci
233762306a36Sopenharmony_cistatic struct clk_branch mdss_mdp_clk = {
233862306a36Sopenharmony_ci	.halt_reg = 0x231c,
233962306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
234062306a36Sopenharmony_ci	.clkr = {
234162306a36Sopenharmony_ci		.enable_reg = 0x231c,
234262306a36Sopenharmony_ci		.enable_mask = BIT(0),
234362306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
234462306a36Sopenharmony_ci			.name = "mdss_mdp_clk",
234562306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &mdp_clk_src.clkr.hw },
234662306a36Sopenharmony_ci			.num_parents = 1,
234762306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
234862306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
234962306a36Sopenharmony_ci		},
235062306a36Sopenharmony_ci	},
235162306a36Sopenharmony_ci};
235262306a36Sopenharmony_ci
235362306a36Sopenharmony_cistatic struct clk_branch mdss_pclk0_clk = {
235462306a36Sopenharmony_ci	.halt_reg = 0x2314,
235562306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
235662306a36Sopenharmony_ci	.clkr = {
235762306a36Sopenharmony_ci		.enable_reg = 0x2314,
235862306a36Sopenharmony_ci		.enable_mask = BIT(0),
235962306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
236062306a36Sopenharmony_ci			.name = "mdss_pclk0_clk",
236162306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &pclk0_clk_src.clkr.hw },
236262306a36Sopenharmony_ci			.num_parents = 1,
236362306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
236462306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
236562306a36Sopenharmony_ci		},
236662306a36Sopenharmony_ci	},
236762306a36Sopenharmony_ci};
236862306a36Sopenharmony_ci
236962306a36Sopenharmony_cistatic struct clk_branch mdss_pclk1_clk = {
237062306a36Sopenharmony_ci	.halt_reg = 0x2318,
237162306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
237262306a36Sopenharmony_ci	.clkr = {
237362306a36Sopenharmony_ci		.enable_reg = 0x2318,
237462306a36Sopenharmony_ci		.enable_mask = BIT(0),
237562306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
237662306a36Sopenharmony_ci			.name = "mdss_pclk1_clk",
237762306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &pclk1_clk_src.clkr.hw },
237862306a36Sopenharmony_ci			.num_parents = 1,
237962306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
238062306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
238162306a36Sopenharmony_ci		},
238262306a36Sopenharmony_ci	},
238362306a36Sopenharmony_ci};
238462306a36Sopenharmony_ci
238562306a36Sopenharmony_cistatic struct clk_branch mdss_rot_clk = {
238662306a36Sopenharmony_ci	.halt_reg = 0x2350,
238762306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
238862306a36Sopenharmony_ci	.clkr = {
238962306a36Sopenharmony_ci		.enable_reg = 0x2350,
239062306a36Sopenharmony_ci		.enable_mask = BIT(0),
239162306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
239262306a36Sopenharmony_ci			.name = "mdss_rot_clk",
239362306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &rot_clk_src.clkr.hw },
239462306a36Sopenharmony_ci			.num_parents = 1,
239562306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
239662306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
239762306a36Sopenharmony_ci		},
239862306a36Sopenharmony_ci	},
239962306a36Sopenharmony_ci};
240062306a36Sopenharmony_ci
240162306a36Sopenharmony_cistatic struct clk_branch mdss_vsync_clk = {
240262306a36Sopenharmony_ci	.halt_reg = 0x2328,
240362306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
240462306a36Sopenharmony_ci	.clkr = {
240562306a36Sopenharmony_ci		.enable_reg = 0x2328,
240662306a36Sopenharmony_ci		.enable_mask = BIT(0),
240762306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
240862306a36Sopenharmony_ci			.name = "mdss_vsync_clk",
240962306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &vsync_clk_src.clkr.hw },
241062306a36Sopenharmony_ci			.num_parents = 1,
241162306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
241262306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
241362306a36Sopenharmony_ci		},
241462306a36Sopenharmony_ci	},
241562306a36Sopenharmony_ci};
241662306a36Sopenharmony_ci
241762306a36Sopenharmony_cistatic struct clk_branch mnoc_ahb_clk = {
241862306a36Sopenharmony_ci	.halt_reg = 0x5024,
241962306a36Sopenharmony_ci	.halt_check = BRANCH_VOTED,
242062306a36Sopenharmony_ci	.clkr = {
242162306a36Sopenharmony_ci		.enable_reg = 0x5024,
242262306a36Sopenharmony_ci		.enable_mask = BIT(0),
242362306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
242462306a36Sopenharmony_ci			.name = "mnoc_ahb_clk",
242562306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
242662306a36Sopenharmony_ci			.num_parents = 1,
242762306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
242862306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
242962306a36Sopenharmony_ci		},
243062306a36Sopenharmony_ci	},
243162306a36Sopenharmony_ci};
243262306a36Sopenharmony_ci
243362306a36Sopenharmony_cistatic struct clk_branch misc_ahb_clk = {
243462306a36Sopenharmony_ci	.halt_reg = 0x328,
243562306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
243662306a36Sopenharmony_ci	.hwcg_reg = 0x328,
243762306a36Sopenharmony_ci	.hwcg_bit = 1,
243862306a36Sopenharmony_ci	.clkr = {
243962306a36Sopenharmony_ci		.enable_reg = 0x328,
244062306a36Sopenharmony_ci		.enable_mask = BIT(0),
244162306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
244262306a36Sopenharmony_ci			.name = "misc_ahb_clk",
244362306a36Sopenharmony_ci			/*
244462306a36Sopenharmony_ci			 * Dependency to be enabled before the branch is
244562306a36Sopenharmony_ci			 * enabled.
244662306a36Sopenharmony_ci			 */
244762306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &mnoc_ahb_clk.clkr.hw },
244862306a36Sopenharmony_ci			.num_parents = 1,
244962306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
245062306a36Sopenharmony_ci		},
245162306a36Sopenharmony_ci	},
245262306a36Sopenharmony_ci};
245362306a36Sopenharmony_ci
245462306a36Sopenharmony_cistatic struct clk_branch misc_cxo_clk = {
245562306a36Sopenharmony_ci	.halt_reg = 0x324,
245662306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
245762306a36Sopenharmony_ci	.clkr = {
245862306a36Sopenharmony_ci		.enable_reg = 0x324,
245962306a36Sopenharmony_ci		.enable_mask = BIT(0),
246062306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
246162306a36Sopenharmony_ci			.name = "misc_cxo_clk",
246262306a36Sopenharmony_ci			.parent_data = &(const struct clk_parent_data){
246362306a36Sopenharmony_ci				.fw_name = "xo",
246462306a36Sopenharmony_ci			},
246562306a36Sopenharmony_ci			.num_parents = 1,
246662306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
246762306a36Sopenharmony_ci		},
246862306a36Sopenharmony_ci	},
246962306a36Sopenharmony_ci};
247062306a36Sopenharmony_ci
247162306a36Sopenharmony_cistatic struct clk_branch snoc_dvm_axi_clk = {
247262306a36Sopenharmony_ci	.halt_reg = 0xe040,
247362306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
247462306a36Sopenharmony_ci	.clkr = {
247562306a36Sopenharmony_ci		.enable_reg = 0xe040,
247662306a36Sopenharmony_ci		.enable_mask = BIT(0),
247762306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
247862306a36Sopenharmony_ci			.name = "snoc_dvm_axi_clk",
247962306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
248062306a36Sopenharmony_ci		},
248162306a36Sopenharmony_ci	},
248262306a36Sopenharmony_ci};
248362306a36Sopenharmony_ci
248462306a36Sopenharmony_cistatic struct clk_branch video_ahb_clk = {
248562306a36Sopenharmony_ci	.halt_reg = 0x1030,
248662306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
248762306a36Sopenharmony_ci	.hwcg_reg = 0x1030,
248862306a36Sopenharmony_ci	.hwcg_bit = 1,
248962306a36Sopenharmony_ci	.clkr = {
249062306a36Sopenharmony_ci		.enable_reg = 0x1030,
249162306a36Sopenharmony_ci		.enable_mask = BIT(0),
249262306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
249362306a36Sopenharmony_ci			.name = "video_ahb_clk",
249462306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &ahb_clk_src.clkr.hw },
249562306a36Sopenharmony_ci			.num_parents = 1,
249662306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
249762306a36Sopenharmony_ci		},
249862306a36Sopenharmony_ci	},
249962306a36Sopenharmony_ci};
250062306a36Sopenharmony_ci
250162306a36Sopenharmony_cistatic struct clk_branch video_axi_clk = {
250262306a36Sopenharmony_ci	.halt_reg = 0x1034,
250362306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
250462306a36Sopenharmony_ci	.clkr = {
250562306a36Sopenharmony_ci		.enable_reg = 0x1034,
250662306a36Sopenharmony_ci		.enable_mask = BIT(0),
250762306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
250862306a36Sopenharmony_ci			.name = "video_axi_clk",
250962306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
251062306a36Sopenharmony_ci		},
251162306a36Sopenharmony_ci	},
251262306a36Sopenharmony_ci};
251362306a36Sopenharmony_ci
251462306a36Sopenharmony_cistatic struct clk_branch throttle_video_axi_clk = {
251562306a36Sopenharmony_ci	.halt_reg = 0x118c,
251662306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
251762306a36Sopenharmony_ci	.hwcg_reg = 0x118c,
251862306a36Sopenharmony_ci	.hwcg_bit = 1,
251962306a36Sopenharmony_ci	.clkr = {
252062306a36Sopenharmony_ci		.enable_reg = 0x118c,
252162306a36Sopenharmony_ci		.enable_mask = BIT(0),
252262306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
252362306a36Sopenharmony_ci			.name = "throttle_video_axi_clk",
252462306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
252562306a36Sopenharmony_ci		},
252662306a36Sopenharmony_ci	},
252762306a36Sopenharmony_ci};
252862306a36Sopenharmony_ci
252962306a36Sopenharmony_cistatic struct clk_branch video_core_clk = {
253062306a36Sopenharmony_ci	.halt_reg = 0x1028,
253162306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
253262306a36Sopenharmony_ci	.clkr = {
253362306a36Sopenharmony_ci		.enable_reg = 0x1028,
253462306a36Sopenharmony_ci		.enable_mask = BIT(0),
253562306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
253662306a36Sopenharmony_ci			.name = "video_core_clk",
253762306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &video_core_clk_src.clkr.hw },
253862306a36Sopenharmony_ci			.num_parents = 1,
253962306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
254062306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
254162306a36Sopenharmony_ci		},
254262306a36Sopenharmony_ci	},
254362306a36Sopenharmony_ci};
254462306a36Sopenharmony_ci
254562306a36Sopenharmony_cistatic struct clk_branch video_subcore0_clk = {
254662306a36Sopenharmony_ci	.halt_reg = 0x1048,
254762306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
254862306a36Sopenharmony_ci	.clkr = {
254962306a36Sopenharmony_ci		.enable_reg = 0x1048,
255062306a36Sopenharmony_ci		.enable_mask = BIT(0),
255162306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
255262306a36Sopenharmony_ci			.name = "video_subcore0_clk",
255362306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw *[]){ &video_core_clk_src.clkr.hw },
255462306a36Sopenharmony_ci			.num_parents = 1,
255562306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT | CLK_GET_RATE_NOCACHE,
255662306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
255762306a36Sopenharmony_ci		},
255862306a36Sopenharmony_ci	},
255962306a36Sopenharmony_ci};
256062306a36Sopenharmony_ci
256162306a36Sopenharmony_cistatic struct gdsc venus_gdsc = {
256262306a36Sopenharmony_ci	.gdscr = 0x1024,
256362306a36Sopenharmony_ci	.cxcs = (unsigned int[]){ 0x1028, 0x1034, 0x1048 },
256462306a36Sopenharmony_ci	.cxc_count = 3,
256562306a36Sopenharmony_ci	.pd = {
256662306a36Sopenharmony_ci		.name = "venus",
256762306a36Sopenharmony_ci	},
256862306a36Sopenharmony_ci	.pwrsts = PWRSTS_OFF_ON,
256962306a36Sopenharmony_ci};
257062306a36Sopenharmony_ci
257162306a36Sopenharmony_cistatic struct gdsc venus_core0_gdsc = {
257262306a36Sopenharmony_ci	.gdscr = 0x1040,
257362306a36Sopenharmony_ci	.pd = {
257462306a36Sopenharmony_ci		.name = "venus_core0",
257562306a36Sopenharmony_ci	},
257662306a36Sopenharmony_ci	.parent = &venus_gdsc.pd,
257762306a36Sopenharmony_ci	.pwrsts = PWRSTS_OFF_ON,
257862306a36Sopenharmony_ci	.flags = HW_CTRL,
257962306a36Sopenharmony_ci};
258062306a36Sopenharmony_ci
258162306a36Sopenharmony_cistatic struct gdsc mdss_gdsc = {
258262306a36Sopenharmony_ci	.gdscr = 0x2304,
258362306a36Sopenharmony_ci	.pd = {
258462306a36Sopenharmony_ci		.name = "mdss",
258562306a36Sopenharmony_ci	},
258662306a36Sopenharmony_ci	.cxcs = (unsigned int []){ 0x2040 },
258762306a36Sopenharmony_ci	.cxc_count = 1,
258862306a36Sopenharmony_ci	.pwrsts = PWRSTS_OFF_ON,
258962306a36Sopenharmony_ci};
259062306a36Sopenharmony_ci
259162306a36Sopenharmony_cistatic struct gdsc camss_top_gdsc = {
259262306a36Sopenharmony_ci	.gdscr = 0x34a0,
259362306a36Sopenharmony_ci	.pd = {
259462306a36Sopenharmony_ci		.name = "camss_top",
259562306a36Sopenharmony_ci	},
259662306a36Sopenharmony_ci	.pwrsts = PWRSTS_OFF_ON,
259762306a36Sopenharmony_ci};
259862306a36Sopenharmony_ci
259962306a36Sopenharmony_cistatic struct gdsc camss_vfe0_gdsc = {
260062306a36Sopenharmony_ci	.gdscr = 0x3664,
260162306a36Sopenharmony_ci	.pd = {
260262306a36Sopenharmony_ci		.name = "camss_vfe0",
260362306a36Sopenharmony_ci	},
260462306a36Sopenharmony_ci	.parent = &camss_top_gdsc.pd,
260562306a36Sopenharmony_ci	.pwrsts = PWRSTS_OFF_ON,
260662306a36Sopenharmony_ci};
260762306a36Sopenharmony_ci
260862306a36Sopenharmony_cistatic struct gdsc camss_vfe1_gdsc = {
260962306a36Sopenharmony_ci	.gdscr = 0x3674,
261062306a36Sopenharmony_ci	.pd = {
261162306a36Sopenharmony_ci		.name = "camss_vfe1_gdsc",
261262306a36Sopenharmony_ci	},
261362306a36Sopenharmony_ci	.parent = &camss_top_gdsc.pd,
261462306a36Sopenharmony_ci	.pwrsts = PWRSTS_OFF_ON,
261562306a36Sopenharmony_ci};
261662306a36Sopenharmony_ci
261762306a36Sopenharmony_cistatic struct gdsc camss_cpp_gdsc = {
261862306a36Sopenharmony_ci	.gdscr = 0x36d4,
261962306a36Sopenharmony_ci	.pd = {
262062306a36Sopenharmony_ci		.name = "camss_cpp",
262162306a36Sopenharmony_ci	},
262262306a36Sopenharmony_ci	.parent = &camss_top_gdsc.pd,
262362306a36Sopenharmony_ci	.pwrsts = PWRSTS_OFF_ON,
262462306a36Sopenharmony_ci};
262562306a36Sopenharmony_ci
262662306a36Sopenharmony_ci/* This GDSC seems to hang the whole multimedia subsystem.
262762306a36Sopenharmony_cistatic struct gdsc bimc_smmu_gdsc = {
262862306a36Sopenharmony_ci	.gdscr = 0xe020,
262962306a36Sopenharmony_ci	.gds_hw_ctrl = 0xe024,
263062306a36Sopenharmony_ci	.pd = {
263162306a36Sopenharmony_ci		.name = "bimc_smmu",
263262306a36Sopenharmony_ci	},
263362306a36Sopenharmony_ci	.pwrsts = PWRSTS_OFF_ON,
263462306a36Sopenharmony_ci	.parent = &bimc_smmu_gdsc.pd,
263562306a36Sopenharmony_ci	.flags = HW_CTRL,
263662306a36Sopenharmony_ci};
263762306a36Sopenharmony_ci*/
263862306a36Sopenharmony_ci
263962306a36Sopenharmony_cistatic struct clk_regmap *mmcc_660_clocks[] = {
264062306a36Sopenharmony_ci	[AHB_CLK_SRC] = &ahb_clk_src.clkr,
264162306a36Sopenharmony_ci	[BYTE0_CLK_SRC] = &byte0_clk_src.clkr,
264262306a36Sopenharmony_ci	[BYTE1_CLK_SRC] = &byte1_clk_src.clkr,
264362306a36Sopenharmony_ci	[CAMSS_GP0_CLK_SRC] = &camss_gp0_clk_src.clkr,
264462306a36Sopenharmony_ci	[CAMSS_GP1_CLK_SRC] = &camss_gp1_clk_src.clkr,
264562306a36Sopenharmony_ci	[CCI_CLK_SRC] = &cci_clk_src.clkr,
264662306a36Sopenharmony_ci	[CPP_CLK_SRC] = &cpp_clk_src.clkr,
264762306a36Sopenharmony_ci	[CSI0_CLK_SRC] = &csi0_clk_src.clkr,
264862306a36Sopenharmony_ci	[CSI0PHYTIMER_CLK_SRC] = &csi0phytimer_clk_src.clkr,
264962306a36Sopenharmony_ci	[CSI1_CLK_SRC] = &csi1_clk_src.clkr,
265062306a36Sopenharmony_ci	[CSI1PHYTIMER_CLK_SRC] = &csi1phytimer_clk_src.clkr,
265162306a36Sopenharmony_ci	[CSI2_CLK_SRC] = &csi2_clk_src.clkr,
265262306a36Sopenharmony_ci	[CSI2PHYTIMER_CLK_SRC] = &csi2phytimer_clk_src.clkr,
265362306a36Sopenharmony_ci	[CSI3_CLK_SRC] = &csi3_clk_src.clkr,
265462306a36Sopenharmony_ci	[CSIPHY_CLK_SRC] = &csiphy_clk_src.clkr,
265562306a36Sopenharmony_ci	[DP_AUX_CLK_SRC] = &dp_aux_clk_src.clkr,
265662306a36Sopenharmony_ci	[DP_CRYPTO_CLK_SRC] = &dp_crypto_clk_src.clkr,
265762306a36Sopenharmony_ci	[DP_GTC_CLK_SRC] = &dp_gtc_clk_src.clkr,
265862306a36Sopenharmony_ci	[DP_LINK_CLK_SRC] = &dp_link_clk_src.clkr,
265962306a36Sopenharmony_ci	[DP_PIXEL_CLK_SRC] = &dp_pixel_clk_src.clkr,
266062306a36Sopenharmony_ci	[ESC0_CLK_SRC] = &esc0_clk_src.clkr,
266162306a36Sopenharmony_ci	[ESC1_CLK_SRC] = &esc1_clk_src.clkr,
266262306a36Sopenharmony_ci	[JPEG0_CLK_SRC] = &jpeg0_clk_src.clkr,
266362306a36Sopenharmony_ci	[MCLK0_CLK_SRC] = &mclk0_clk_src.clkr,
266462306a36Sopenharmony_ci	[MCLK1_CLK_SRC] = &mclk1_clk_src.clkr,
266562306a36Sopenharmony_ci	[MCLK2_CLK_SRC] = &mclk2_clk_src.clkr,
266662306a36Sopenharmony_ci	[MCLK3_CLK_SRC] = &mclk3_clk_src.clkr,
266762306a36Sopenharmony_ci	[MDP_CLK_SRC] = &mdp_clk_src.clkr,
266862306a36Sopenharmony_ci	[MMPLL0_PLL] = &mmpll0.clkr,
266962306a36Sopenharmony_ci	[MMPLL10_PLL] = &mmpll10.clkr,
267062306a36Sopenharmony_ci	[MMPLL3_PLL] = &mmpll3.clkr,
267162306a36Sopenharmony_ci	[MMPLL4_PLL] = &mmpll4.clkr,
267262306a36Sopenharmony_ci	[MMPLL5_PLL] = &mmpll5.clkr,
267362306a36Sopenharmony_ci	[MMPLL6_PLL] = &mmpll6.clkr,
267462306a36Sopenharmony_ci	[MMPLL7_PLL] = &mmpll7.clkr,
267562306a36Sopenharmony_ci	[MMPLL8_PLL] = &mmpll8.clkr,
267662306a36Sopenharmony_ci	[BIMC_SMMU_AHB_CLK] = &bimc_smmu_ahb_clk.clkr,
267762306a36Sopenharmony_ci	[BIMC_SMMU_AXI_CLK] = &bimc_smmu_axi_clk.clkr,
267862306a36Sopenharmony_ci	[CAMSS_AHB_CLK] = &camss_ahb_clk.clkr,
267962306a36Sopenharmony_ci	[CAMSS_CCI_AHB_CLK] = &camss_cci_ahb_clk.clkr,
268062306a36Sopenharmony_ci	[CAMSS_CCI_CLK] = &camss_cci_clk.clkr,
268162306a36Sopenharmony_ci	[CAMSS_CPHY_CSID0_CLK] = &camss_cphy_csid0_clk.clkr,
268262306a36Sopenharmony_ci	[CAMSS_CPHY_CSID1_CLK] = &camss_cphy_csid1_clk.clkr,
268362306a36Sopenharmony_ci	[CAMSS_CPHY_CSID2_CLK] = &camss_cphy_csid2_clk.clkr,
268462306a36Sopenharmony_ci	[CAMSS_CPHY_CSID3_CLK] = &camss_cphy_csid3_clk.clkr,
268562306a36Sopenharmony_ci	[CAMSS_CPP_AHB_CLK] = &camss_cpp_ahb_clk.clkr,
268662306a36Sopenharmony_ci	[CAMSS_CPP_AXI_CLK] = &camss_cpp_axi_clk.clkr,
268762306a36Sopenharmony_ci	[CAMSS_CPP_CLK] = &camss_cpp_clk.clkr,
268862306a36Sopenharmony_ci	[CAMSS_CPP_VBIF_AHB_CLK] = &camss_cpp_vbif_ahb_clk.clkr,
268962306a36Sopenharmony_ci	[CAMSS_CSI0_AHB_CLK] = &camss_csi0_ahb_clk.clkr,
269062306a36Sopenharmony_ci	[CAMSS_CSI0_CLK] = &camss_csi0_clk.clkr,
269162306a36Sopenharmony_ci	[CAMSS_CSI0PHYTIMER_CLK] = &camss_csi0phytimer_clk.clkr,
269262306a36Sopenharmony_ci	[CAMSS_CSI0PIX_CLK] = &camss_csi0pix_clk.clkr,
269362306a36Sopenharmony_ci	[CAMSS_CSI0RDI_CLK] = &camss_csi0rdi_clk.clkr,
269462306a36Sopenharmony_ci	[CAMSS_CSI1_AHB_CLK] = &camss_csi1_ahb_clk.clkr,
269562306a36Sopenharmony_ci	[CAMSS_CSI1_CLK] = &camss_csi1_clk.clkr,
269662306a36Sopenharmony_ci	[CAMSS_CSI1PHYTIMER_CLK] = &camss_csi1phytimer_clk.clkr,
269762306a36Sopenharmony_ci	[CAMSS_CSI1PIX_CLK] = &camss_csi1pix_clk.clkr,
269862306a36Sopenharmony_ci	[CAMSS_CSI1RDI_CLK] = &camss_csi1rdi_clk.clkr,
269962306a36Sopenharmony_ci	[CAMSS_CSI2_AHB_CLK] = &camss_csi2_ahb_clk.clkr,
270062306a36Sopenharmony_ci	[CAMSS_CSI2_CLK] = &camss_csi2_clk.clkr,
270162306a36Sopenharmony_ci	[CAMSS_CSI2PHYTIMER_CLK] = &camss_csi2phytimer_clk.clkr,
270262306a36Sopenharmony_ci	[CAMSS_CSI2PIX_CLK] = &camss_csi2pix_clk.clkr,
270362306a36Sopenharmony_ci	[CAMSS_CSI2RDI_CLK] = &camss_csi2rdi_clk.clkr,
270462306a36Sopenharmony_ci	[CAMSS_CSI3_AHB_CLK] = &camss_csi3_ahb_clk.clkr,
270562306a36Sopenharmony_ci	[CAMSS_CSI3_CLK] = &camss_csi3_clk.clkr,
270662306a36Sopenharmony_ci	[CAMSS_CSI3PIX_CLK] = &camss_csi3pix_clk.clkr,
270762306a36Sopenharmony_ci	[CAMSS_CSI3RDI_CLK] = &camss_csi3rdi_clk.clkr,
270862306a36Sopenharmony_ci	[CAMSS_CSI_VFE0_CLK] = &camss_csi_vfe0_clk.clkr,
270962306a36Sopenharmony_ci	[CAMSS_CSI_VFE1_CLK] = &camss_csi_vfe1_clk.clkr,
271062306a36Sopenharmony_ci	[CAMSS_CSIPHY0_CLK] = &camss_csiphy0_clk.clkr,
271162306a36Sopenharmony_ci	[CAMSS_CSIPHY1_CLK] = &camss_csiphy1_clk.clkr,
271262306a36Sopenharmony_ci	[CAMSS_CSIPHY2_CLK] = &camss_csiphy2_clk.clkr,
271362306a36Sopenharmony_ci	[CAMSS_GP0_CLK] = &camss_gp0_clk.clkr,
271462306a36Sopenharmony_ci	[CAMSS_GP1_CLK] = &camss_gp1_clk.clkr,
271562306a36Sopenharmony_ci	[CAMSS_ISPIF_AHB_CLK] = &camss_ispif_ahb_clk.clkr,
271662306a36Sopenharmony_ci	[CAMSS_JPEG0_CLK] = &camss_jpeg0_clk.clkr,
271762306a36Sopenharmony_ci	[CAMSS_JPEG_AHB_CLK] = &camss_jpeg_ahb_clk.clkr,
271862306a36Sopenharmony_ci	[CAMSS_JPEG_AXI_CLK] = &camss_jpeg_axi_clk.clkr,
271962306a36Sopenharmony_ci	[CAMSS_MCLK0_CLK] = &camss_mclk0_clk.clkr,
272062306a36Sopenharmony_ci	[CAMSS_MCLK1_CLK] = &camss_mclk1_clk.clkr,
272162306a36Sopenharmony_ci	[CAMSS_MCLK2_CLK] = &camss_mclk2_clk.clkr,
272262306a36Sopenharmony_ci	[CAMSS_MCLK3_CLK] = &camss_mclk3_clk.clkr,
272362306a36Sopenharmony_ci	[CAMSS_MICRO_AHB_CLK] = &camss_micro_ahb_clk.clkr,
272462306a36Sopenharmony_ci	[CAMSS_TOP_AHB_CLK] = &camss_top_ahb_clk.clkr,
272562306a36Sopenharmony_ci	[CAMSS_VFE0_AHB_CLK] = &camss_vfe0_ahb_clk.clkr,
272662306a36Sopenharmony_ci	[CAMSS_VFE0_CLK] = &camss_vfe0_clk.clkr,
272762306a36Sopenharmony_ci	[CAMSS_VFE0_STREAM_CLK] = &camss_vfe0_stream_clk.clkr,
272862306a36Sopenharmony_ci	[CAMSS_VFE1_AHB_CLK] = &camss_vfe1_ahb_clk.clkr,
272962306a36Sopenharmony_ci	[CAMSS_VFE1_CLK] = &camss_vfe1_clk.clkr,
273062306a36Sopenharmony_ci	[CAMSS_VFE1_STREAM_CLK] = &camss_vfe1_stream_clk.clkr,
273162306a36Sopenharmony_ci	[CAMSS_VFE_VBIF_AHB_CLK] = &camss_vfe_vbif_ahb_clk.clkr,
273262306a36Sopenharmony_ci	[CAMSS_VFE_VBIF_AXI_CLK] = &camss_vfe_vbif_axi_clk.clkr,
273362306a36Sopenharmony_ci	[CSIPHY_AHB2CRIF_CLK] = &csiphy_ahb2crif_clk.clkr,
273462306a36Sopenharmony_ci	[MDSS_AHB_CLK] = &mdss_ahb_clk.clkr,
273562306a36Sopenharmony_ci	[MDSS_AXI_CLK] = &mdss_axi_clk.clkr,
273662306a36Sopenharmony_ci	[MDSS_BYTE0_CLK] = &mdss_byte0_clk.clkr,
273762306a36Sopenharmony_ci	[MDSS_BYTE0_INTF_CLK] = &mdss_byte0_intf_clk.clkr,
273862306a36Sopenharmony_ci	[MDSS_BYTE0_INTF_DIV_CLK] = &mdss_byte0_intf_div_clk.clkr,
273962306a36Sopenharmony_ci	[MDSS_BYTE1_CLK] = &mdss_byte1_clk.clkr,
274062306a36Sopenharmony_ci	[MDSS_BYTE1_INTF_CLK] = &mdss_byte1_intf_clk.clkr,
274162306a36Sopenharmony_ci	[MDSS_DP_AUX_CLK] = &mdss_dp_aux_clk.clkr,
274262306a36Sopenharmony_ci	[MDSS_DP_CRYPTO_CLK] = &mdss_dp_crypto_clk.clkr,
274362306a36Sopenharmony_ci	[MDSS_DP_GTC_CLK] = &mdss_dp_gtc_clk.clkr,
274462306a36Sopenharmony_ci	[MDSS_DP_LINK_CLK] = &mdss_dp_link_clk.clkr,
274562306a36Sopenharmony_ci	[MDSS_DP_LINK_INTF_CLK] = &mdss_dp_link_intf_clk.clkr,
274662306a36Sopenharmony_ci	[MDSS_DP_PIXEL_CLK] = &mdss_dp_pixel_clk.clkr,
274762306a36Sopenharmony_ci	[MDSS_ESC0_CLK] = &mdss_esc0_clk.clkr,
274862306a36Sopenharmony_ci	[MDSS_ESC1_CLK] = &mdss_esc1_clk.clkr,
274962306a36Sopenharmony_ci	[MDSS_HDMI_DP_AHB_CLK] = &mdss_hdmi_dp_ahb_clk.clkr,
275062306a36Sopenharmony_ci	[MDSS_MDP_CLK] = &mdss_mdp_clk.clkr,
275162306a36Sopenharmony_ci	[MDSS_PCLK0_CLK] = &mdss_pclk0_clk.clkr,
275262306a36Sopenharmony_ci	[MDSS_PCLK1_CLK] = &mdss_pclk1_clk.clkr,
275362306a36Sopenharmony_ci	[MDSS_ROT_CLK] = &mdss_rot_clk.clkr,
275462306a36Sopenharmony_ci	[MDSS_VSYNC_CLK] = &mdss_vsync_clk.clkr,
275562306a36Sopenharmony_ci	[MISC_AHB_CLK] = &misc_ahb_clk.clkr,
275662306a36Sopenharmony_ci	[MISC_CXO_CLK] = &misc_cxo_clk.clkr,
275762306a36Sopenharmony_ci	[MNOC_AHB_CLK] = &mnoc_ahb_clk.clkr,
275862306a36Sopenharmony_ci	[SNOC_DVM_AXI_CLK] = &snoc_dvm_axi_clk.clkr,
275962306a36Sopenharmony_ci	[THROTTLE_CAMSS_AXI_CLK] = &throttle_camss_axi_clk.clkr,
276062306a36Sopenharmony_ci	[THROTTLE_MDSS_AXI_CLK] = &throttle_mdss_axi_clk.clkr,
276162306a36Sopenharmony_ci	[THROTTLE_VIDEO_AXI_CLK] = &throttle_video_axi_clk.clkr,
276262306a36Sopenharmony_ci	[VIDEO_AHB_CLK] = &video_ahb_clk.clkr,
276362306a36Sopenharmony_ci	[VIDEO_AXI_CLK] = &video_axi_clk.clkr,
276462306a36Sopenharmony_ci	[VIDEO_CORE_CLK] = &video_core_clk.clkr,
276562306a36Sopenharmony_ci	[VIDEO_SUBCORE0_CLK] = &video_subcore0_clk.clkr,
276662306a36Sopenharmony_ci	[PCLK0_CLK_SRC] = &pclk0_clk_src.clkr,
276762306a36Sopenharmony_ci	[PCLK1_CLK_SRC] = &pclk1_clk_src.clkr,
276862306a36Sopenharmony_ci	[ROT_CLK_SRC] = &rot_clk_src.clkr,
276962306a36Sopenharmony_ci	[VFE0_CLK_SRC] = &vfe0_clk_src.clkr,
277062306a36Sopenharmony_ci	[VFE1_CLK_SRC] = &vfe1_clk_src.clkr,
277162306a36Sopenharmony_ci	[VIDEO_CORE_CLK_SRC] = &video_core_clk_src.clkr,
277262306a36Sopenharmony_ci	[VSYNC_CLK_SRC] = &vsync_clk_src.clkr,
277362306a36Sopenharmony_ci	[MDSS_BYTE1_INTF_DIV_CLK] = &mdss_byte1_intf_div_clk.clkr,
277462306a36Sopenharmony_ci	[AXI_CLK_SRC] = &axi_clk_src.clkr,
277562306a36Sopenharmony_ci};
277662306a36Sopenharmony_ci
277762306a36Sopenharmony_cistatic struct gdsc *mmcc_sdm660_gdscs[] = {
277862306a36Sopenharmony_ci	[VENUS_GDSC] = &venus_gdsc,
277962306a36Sopenharmony_ci	[VENUS_CORE0_GDSC] = &venus_core0_gdsc,
278062306a36Sopenharmony_ci	[MDSS_GDSC] = &mdss_gdsc,
278162306a36Sopenharmony_ci	[CAMSS_TOP_GDSC] = &camss_top_gdsc,
278262306a36Sopenharmony_ci	[CAMSS_VFE0_GDSC] = &camss_vfe0_gdsc,
278362306a36Sopenharmony_ci	[CAMSS_VFE1_GDSC] = &camss_vfe1_gdsc,
278462306a36Sopenharmony_ci	[CAMSS_CPP_GDSC] = &camss_cpp_gdsc,
278562306a36Sopenharmony_ci};
278662306a36Sopenharmony_ci
278762306a36Sopenharmony_cistatic const struct qcom_reset_map mmcc_660_resets[] = {
278862306a36Sopenharmony_ci	[CAMSS_MICRO_BCR] = { 0x3490 },
278962306a36Sopenharmony_ci};
279062306a36Sopenharmony_ci
279162306a36Sopenharmony_cistatic const struct regmap_config mmcc_660_regmap_config = {
279262306a36Sopenharmony_ci	.reg_bits	= 32,
279362306a36Sopenharmony_ci	.reg_stride	= 4,
279462306a36Sopenharmony_ci	.val_bits	= 32,
279562306a36Sopenharmony_ci	.max_register	= 0x40000,
279662306a36Sopenharmony_ci	.fast_io	= true,
279762306a36Sopenharmony_ci};
279862306a36Sopenharmony_ci
279962306a36Sopenharmony_cistatic const struct qcom_cc_desc mmcc_660_desc = {
280062306a36Sopenharmony_ci	.config = &mmcc_660_regmap_config,
280162306a36Sopenharmony_ci	.clks = mmcc_660_clocks,
280262306a36Sopenharmony_ci	.num_clks = ARRAY_SIZE(mmcc_660_clocks),
280362306a36Sopenharmony_ci	.resets = mmcc_660_resets,
280462306a36Sopenharmony_ci	.num_resets = ARRAY_SIZE(mmcc_660_resets),
280562306a36Sopenharmony_ci	.gdscs = mmcc_sdm660_gdscs,
280662306a36Sopenharmony_ci	.num_gdscs = ARRAY_SIZE(mmcc_sdm660_gdscs),
280762306a36Sopenharmony_ci};
280862306a36Sopenharmony_ci
280962306a36Sopenharmony_cistatic const struct of_device_id mmcc_660_match_table[] = {
281062306a36Sopenharmony_ci	{ .compatible = "qcom,mmcc-sdm660" },
281162306a36Sopenharmony_ci	{ .compatible = "qcom,mmcc-sdm630", .data = (void *)1UL },
281262306a36Sopenharmony_ci	{ }
281362306a36Sopenharmony_ci};
281462306a36Sopenharmony_ciMODULE_DEVICE_TABLE(of, mmcc_660_match_table);
281562306a36Sopenharmony_ci
281662306a36Sopenharmony_cistatic void sdm630_clock_override(void)
281762306a36Sopenharmony_ci{
281862306a36Sopenharmony_ci	/* SDM630 has only one DSI */
281962306a36Sopenharmony_ci	mmcc_660_desc.clks[BYTE1_CLK_SRC] = NULL;
282062306a36Sopenharmony_ci	mmcc_660_desc.clks[MDSS_BYTE1_CLK] = NULL;
282162306a36Sopenharmony_ci	mmcc_660_desc.clks[MDSS_BYTE1_INTF_DIV_CLK] = NULL;
282262306a36Sopenharmony_ci	mmcc_660_desc.clks[MDSS_BYTE1_INTF_CLK] = NULL;
282362306a36Sopenharmony_ci	mmcc_660_desc.clks[ESC1_CLK_SRC] = NULL;
282462306a36Sopenharmony_ci	mmcc_660_desc.clks[MDSS_ESC1_CLK] = NULL;
282562306a36Sopenharmony_ci	mmcc_660_desc.clks[PCLK1_CLK_SRC] = NULL;
282662306a36Sopenharmony_ci	mmcc_660_desc.clks[MDSS_PCLK1_CLK] = NULL;
282762306a36Sopenharmony_ci}
282862306a36Sopenharmony_ci
282962306a36Sopenharmony_cistatic int mmcc_660_probe(struct platform_device *pdev)
283062306a36Sopenharmony_ci{
283162306a36Sopenharmony_ci	const struct of_device_id *id;
283262306a36Sopenharmony_ci	struct regmap *regmap;
283362306a36Sopenharmony_ci	bool is_sdm630;
283462306a36Sopenharmony_ci
283562306a36Sopenharmony_ci	id = of_match_device(mmcc_660_match_table, &pdev->dev);
283662306a36Sopenharmony_ci	if (!id)
283762306a36Sopenharmony_ci		return -ENODEV;
283862306a36Sopenharmony_ci	is_sdm630 = !!(id->data);
283962306a36Sopenharmony_ci
284062306a36Sopenharmony_ci	regmap = qcom_cc_map(pdev, &mmcc_660_desc);
284162306a36Sopenharmony_ci	if (IS_ERR(regmap))
284262306a36Sopenharmony_ci		return PTR_ERR(regmap);
284362306a36Sopenharmony_ci
284462306a36Sopenharmony_ci	if (is_sdm630)
284562306a36Sopenharmony_ci		sdm630_clock_override();
284662306a36Sopenharmony_ci
284762306a36Sopenharmony_ci	clk_alpha_pll_configure(&mmpll3, regmap, &mmpll3_config);
284862306a36Sopenharmony_ci	clk_alpha_pll_configure(&mmpll4, regmap, &mmpll4_config);
284962306a36Sopenharmony_ci	clk_alpha_pll_configure(&mmpll5, regmap, &mmpll5_config);
285062306a36Sopenharmony_ci	clk_alpha_pll_configure(&mmpll7, regmap, &mmpll7_config);
285162306a36Sopenharmony_ci	clk_alpha_pll_configure(&mmpll8, regmap, &mmpll8_config);
285262306a36Sopenharmony_ci	clk_alpha_pll_configure(&mmpll10, regmap, &mmpll10_config);
285362306a36Sopenharmony_ci
285462306a36Sopenharmony_ci	return qcom_cc_really_probe(pdev, &mmcc_660_desc, regmap);
285562306a36Sopenharmony_ci}
285662306a36Sopenharmony_ci
285762306a36Sopenharmony_cistatic struct platform_driver mmcc_660_driver = {
285862306a36Sopenharmony_ci	.probe		= mmcc_660_probe,
285962306a36Sopenharmony_ci	.driver		= {
286062306a36Sopenharmony_ci		.name	= "mmcc-sdm660",
286162306a36Sopenharmony_ci		.of_match_table = mmcc_660_match_table,
286262306a36Sopenharmony_ci	},
286362306a36Sopenharmony_ci};
286462306a36Sopenharmony_cimodule_platform_driver(mmcc_660_driver);
286562306a36Sopenharmony_ci
286662306a36Sopenharmony_ciMODULE_DESCRIPTION("Qualcomm SDM630/SDM660 MMCC driver");
286762306a36Sopenharmony_ciMODULE_LICENSE("GPL v2");
2868