162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (c) 2021, Qualcomm Innovation Center, Inc. All rights reserved.
462306a36Sopenharmony_ci */
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci#include <linux/clk-provider.h>
762306a36Sopenharmony_ci#include <linux/err.h>
862306a36Sopenharmony_ci#include <linux/kernel.h>
962306a36Sopenharmony_ci#include <linux/module.h>
1062306a36Sopenharmony_ci#include <linux/of.h>
1162306a36Sopenharmony_ci#include <linux/platform_device.h>
1262306a36Sopenharmony_ci#include <linux/regmap.h>
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci#include <dt-bindings/clock/qcom,gcc-sdx65.h>
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci#include "clk-alpha-pll.h"
1762306a36Sopenharmony_ci#include "clk-branch.h"
1862306a36Sopenharmony_ci#include "clk-rcg.h"
1962306a36Sopenharmony_ci#include "clk-regmap.h"
2062306a36Sopenharmony_ci#include "clk-regmap-divider.h"
2162306a36Sopenharmony_ci#include "clk-regmap-mux.h"
2262306a36Sopenharmony_ci#include "common.h"
2362306a36Sopenharmony_ci#include "gdsc.h"
2462306a36Sopenharmony_ci#include "reset.h"
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_cienum {
2762306a36Sopenharmony_ci	P_BI_TCXO,
2862306a36Sopenharmony_ci	P_GPLL0_OUT_EVEN,
2962306a36Sopenharmony_ci	P_GPLL0_OUT_MAIN,
3062306a36Sopenharmony_ci	P_PCIE_PIPE_CLK,
3162306a36Sopenharmony_ci	P_SLEEP_CLK,
3262306a36Sopenharmony_ci	P_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK,
3362306a36Sopenharmony_ci};
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_cistatic struct clk_alpha_pll gpll0 = {
3662306a36Sopenharmony_ci	.offset = 0x0,
3762306a36Sopenharmony_ci	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
3862306a36Sopenharmony_ci	.clkr = {
3962306a36Sopenharmony_ci		.enable_reg = 0x6d000,
4062306a36Sopenharmony_ci		.enable_mask = BIT(0),
4162306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
4262306a36Sopenharmony_ci			.name = "gpll0",
4362306a36Sopenharmony_ci			.parent_data = &(const struct clk_parent_data){
4462306a36Sopenharmony_ci				.fw_name = "bi_tcxo",
4562306a36Sopenharmony_ci			},
4662306a36Sopenharmony_ci			.num_parents = 1,
4762306a36Sopenharmony_ci			.ops = &clk_alpha_pll_fixed_lucid_evo_ops,
4862306a36Sopenharmony_ci		},
4962306a36Sopenharmony_ci	},
5062306a36Sopenharmony_ci};
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_cistatic const struct clk_div_table post_div_table_gpll0_out_even[] = {
5362306a36Sopenharmony_ci	{ 0x1, 2 },
5462306a36Sopenharmony_ci	{ }
5562306a36Sopenharmony_ci};
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_cistatic struct clk_alpha_pll_postdiv gpll0_out_even = {
5862306a36Sopenharmony_ci	.offset = 0x0,
5962306a36Sopenharmony_ci	.post_div_shift = 10,
6062306a36Sopenharmony_ci	.post_div_table = post_div_table_gpll0_out_even,
6162306a36Sopenharmony_ci	.num_post_div = ARRAY_SIZE(post_div_table_gpll0_out_even),
6262306a36Sopenharmony_ci	.width = 4,
6362306a36Sopenharmony_ci	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
6462306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
6562306a36Sopenharmony_ci		.name = "gpll0_out_even",
6662306a36Sopenharmony_ci		.parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw },
6762306a36Sopenharmony_ci		.num_parents = 1,
6862306a36Sopenharmony_ci		.ops = &clk_alpha_pll_postdiv_lucid_evo_ops,
6962306a36Sopenharmony_ci	},
7062306a36Sopenharmony_ci};
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_cistatic const struct parent_map gcc_parent_map_0[] = {
7362306a36Sopenharmony_ci	{ P_BI_TCXO, 0 },
7462306a36Sopenharmony_ci	{ P_GPLL0_OUT_MAIN, 1 },
7562306a36Sopenharmony_ci	{ P_GPLL0_OUT_EVEN, 6 },
7662306a36Sopenharmony_ci};
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_cistatic const struct clk_parent_data gcc_parent_data_0[] = {
7962306a36Sopenharmony_ci	{ .fw_name = "bi_tcxo" },
8062306a36Sopenharmony_ci	{ .hw = &gpll0.clkr.hw },
8162306a36Sopenharmony_ci	{ .hw = &gpll0_out_even.clkr.hw },
8262306a36Sopenharmony_ci};
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_cistatic const struct clk_parent_data gcc_parent_data_0_ao[] = {
8562306a36Sopenharmony_ci	{ .fw_name = "bi_tcxo_ao" },
8662306a36Sopenharmony_ci	{ .hw = &gpll0.clkr.hw },
8762306a36Sopenharmony_ci	{ .hw = &gpll0_out_even.clkr.hw },
8862306a36Sopenharmony_ci};
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_cistatic const struct parent_map gcc_parent_map_2[] = {
9162306a36Sopenharmony_ci	{ P_BI_TCXO, 0 },
9262306a36Sopenharmony_ci	{ P_GPLL0_OUT_MAIN, 1 },
9362306a36Sopenharmony_ci	{ P_SLEEP_CLK, 5 },
9462306a36Sopenharmony_ci	{ P_GPLL0_OUT_EVEN, 6 },
9562306a36Sopenharmony_ci};
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_cistatic const struct clk_parent_data gcc_parent_data_2[] = {
9862306a36Sopenharmony_ci	{ .fw_name = "bi_tcxo" },
9962306a36Sopenharmony_ci	{ .hw = &gpll0.clkr.hw },
10062306a36Sopenharmony_ci	{ .fw_name = "sleep_clk" },
10162306a36Sopenharmony_ci	{ .hw = &gpll0_out_even.clkr.hw },
10262306a36Sopenharmony_ci};
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_cistatic const struct parent_map gcc_parent_map_3[] = {
10562306a36Sopenharmony_ci	{ P_BI_TCXO, 0 },
10662306a36Sopenharmony_ci	{ P_SLEEP_CLK, 5 },
10762306a36Sopenharmony_ci};
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_cistatic const struct clk_parent_data gcc_parent_data_3[] = {
11062306a36Sopenharmony_ci	{ .fw_name = "bi_tcxo" },
11162306a36Sopenharmony_ci	{ .fw_name = "sleep_clk" },
11262306a36Sopenharmony_ci};
11362306a36Sopenharmony_ci
11462306a36Sopenharmony_cistatic const struct parent_map gcc_parent_map_4[] = {
11562306a36Sopenharmony_ci	{ P_BI_TCXO, 2 },
11662306a36Sopenharmony_ci};
11762306a36Sopenharmony_ci
11862306a36Sopenharmony_cistatic const struct parent_map gcc_parent_map_5[] = {
11962306a36Sopenharmony_ci	{ P_PCIE_PIPE_CLK, 0 },
12062306a36Sopenharmony_ci	{ P_BI_TCXO, 2 },
12162306a36Sopenharmony_ci};
12262306a36Sopenharmony_ci
12362306a36Sopenharmony_cistatic const struct clk_parent_data gcc_parent_data_5[] = {
12462306a36Sopenharmony_ci	{ .fw_name = "pcie_pipe_clk"},
12562306a36Sopenharmony_ci	{ .fw_name = "bi_tcxo"},
12662306a36Sopenharmony_ci};
12762306a36Sopenharmony_ci
12862306a36Sopenharmony_cistatic const struct parent_map gcc_parent_map_6[] = {
12962306a36Sopenharmony_ci	{ P_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK, 0 },
13062306a36Sopenharmony_ci	{ P_BI_TCXO, 2 },
13162306a36Sopenharmony_ci};
13262306a36Sopenharmony_ci
13362306a36Sopenharmony_cistatic const struct clk_parent_data gcc_parent_data_6[] = {
13462306a36Sopenharmony_ci	{ .fw_name = "usb3_phy_wrapper_gcc_usb30_pipe_clk"},
13562306a36Sopenharmony_ci	{ .fw_name = "bi_tcxo"},
13662306a36Sopenharmony_ci};
13762306a36Sopenharmony_ci
13862306a36Sopenharmony_cistatic struct clk_regmap_mux gcc_pcie_aux_clk_src = {
13962306a36Sopenharmony_ci	.reg = 0x43060,
14062306a36Sopenharmony_ci	.shift = 0,
14162306a36Sopenharmony_ci	.width = 2,
14262306a36Sopenharmony_ci	.parent_map = gcc_parent_map_4,
14362306a36Sopenharmony_ci	.clkr = {
14462306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
14562306a36Sopenharmony_ci			.name = "gcc_pcie_aux_clk_src",
14662306a36Sopenharmony_ci			.parent_data = &(const struct clk_parent_data){
14762306a36Sopenharmony_ci				.fw_name = "bi_tcxo",
14862306a36Sopenharmony_ci			},
14962306a36Sopenharmony_ci			.num_parents = 1,
15062306a36Sopenharmony_ci			.ops = &clk_regmap_mux_closest_ops,
15162306a36Sopenharmony_ci		},
15262306a36Sopenharmony_ci	},
15362306a36Sopenharmony_ci};
15462306a36Sopenharmony_ci
15562306a36Sopenharmony_cistatic struct clk_regmap_mux gcc_pcie_pipe_clk_src = {
15662306a36Sopenharmony_ci	.reg = 0x43044,
15762306a36Sopenharmony_ci	.shift = 0,
15862306a36Sopenharmony_ci	.width = 2,
15962306a36Sopenharmony_ci	.parent_map = gcc_parent_map_5,
16062306a36Sopenharmony_ci	.clkr = {
16162306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
16262306a36Sopenharmony_ci			.name = "gcc_pcie_pipe_clk_src",
16362306a36Sopenharmony_ci			.parent_data = gcc_parent_data_5,
16462306a36Sopenharmony_ci			.num_parents = 2,
16562306a36Sopenharmony_ci			.ops = &clk_regmap_mux_closest_ops,
16662306a36Sopenharmony_ci		},
16762306a36Sopenharmony_ci	},
16862306a36Sopenharmony_ci};
16962306a36Sopenharmony_ci
17062306a36Sopenharmony_cistatic struct clk_regmap_mux gcc_usb3_phy_pipe_clk_src = {
17162306a36Sopenharmony_ci	.reg = 0x1706c,
17262306a36Sopenharmony_ci	.shift = 0,
17362306a36Sopenharmony_ci	.width = 2,
17462306a36Sopenharmony_ci	.parent_map = gcc_parent_map_6,
17562306a36Sopenharmony_ci	.clkr = {
17662306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
17762306a36Sopenharmony_ci			.name = "gcc_usb3_phy_pipe_clk_src",
17862306a36Sopenharmony_ci			.parent_data = gcc_parent_data_6,
17962306a36Sopenharmony_ci			.num_parents = 2,
18062306a36Sopenharmony_ci			.ops = &clk_regmap_mux_closest_ops,
18162306a36Sopenharmony_ci		},
18262306a36Sopenharmony_ci	},
18362306a36Sopenharmony_ci};
18462306a36Sopenharmony_ci
18562306a36Sopenharmony_cistatic const struct freq_tbl ftbl_gcc_blsp1_qup1_i2c_apps_clk_src[] = {
18662306a36Sopenharmony_ci	F(9600000, P_BI_TCXO, 2, 0, 0),
18762306a36Sopenharmony_ci	F(19200000, P_BI_TCXO, 1, 0, 0),
18862306a36Sopenharmony_ci	F(50000000, P_GPLL0_OUT_MAIN, 12, 0, 0),
18962306a36Sopenharmony_ci	{ }
19062306a36Sopenharmony_ci};
19162306a36Sopenharmony_ci
19262306a36Sopenharmony_cistatic struct clk_rcg2 gcc_blsp1_qup1_i2c_apps_clk_src = {
19362306a36Sopenharmony_ci	.cmd_rcgr = 0x1c024,
19462306a36Sopenharmony_ci	.mnd_width = 8,
19562306a36Sopenharmony_ci	.hid_width = 5,
19662306a36Sopenharmony_ci	.parent_map = gcc_parent_map_0,
19762306a36Sopenharmony_ci	.freq_tbl = ftbl_gcc_blsp1_qup1_i2c_apps_clk_src,
19862306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
19962306a36Sopenharmony_ci		.name = "gcc_blsp1_qup1_i2c_apps_clk_src",
20062306a36Sopenharmony_ci		.parent_data = gcc_parent_data_0,
20162306a36Sopenharmony_ci		.num_parents = 3,
20262306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT,
20362306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
20462306a36Sopenharmony_ci	},
20562306a36Sopenharmony_ci};
20662306a36Sopenharmony_ci
20762306a36Sopenharmony_cistatic const struct freq_tbl ftbl_gcc_blsp1_qup1_spi_apps_clk_src[] = {
20862306a36Sopenharmony_ci	F(960000, P_BI_TCXO, 10, 1, 2),
20962306a36Sopenharmony_ci	F(4800000, P_BI_TCXO, 4, 0, 0),
21062306a36Sopenharmony_ci	F(9600000, P_BI_TCXO, 2, 0, 0),
21162306a36Sopenharmony_ci	F(15000000, P_GPLL0_OUT_EVEN, 5, 1, 4),
21262306a36Sopenharmony_ci	F(19200000, P_BI_TCXO, 1, 0, 0),
21362306a36Sopenharmony_ci	F(24000000, P_GPLL0_OUT_MAIN, 12.5, 1, 2),
21462306a36Sopenharmony_ci	F(25000000, P_GPLL0_OUT_MAIN, 12, 1, 2),
21562306a36Sopenharmony_ci	F(50000000, P_GPLL0_OUT_MAIN, 12, 0, 0),
21662306a36Sopenharmony_ci	{ }
21762306a36Sopenharmony_ci};
21862306a36Sopenharmony_ci
21962306a36Sopenharmony_cistatic struct clk_rcg2 gcc_blsp1_qup1_spi_apps_clk_src = {
22062306a36Sopenharmony_ci	.cmd_rcgr = 0x1c00c,
22162306a36Sopenharmony_ci	.mnd_width = 8,
22262306a36Sopenharmony_ci	.hid_width = 5,
22362306a36Sopenharmony_ci	.parent_map = gcc_parent_map_0,
22462306a36Sopenharmony_ci	.freq_tbl = ftbl_gcc_blsp1_qup1_spi_apps_clk_src,
22562306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
22662306a36Sopenharmony_ci		.name = "gcc_blsp1_qup1_spi_apps_clk_src",
22762306a36Sopenharmony_ci		.parent_data = gcc_parent_data_0,
22862306a36Sopenharmony_ci		.num_parents = 3,
22962306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT,
23062306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
23162306a36Sopenharmony_ci	},
23262306a36Sopenharmony_ci};
23362306a36Sopenharmony_ci
23462306a36Sopenharmony_cistatic struct clk_rcg2 gcc_blsp1_qup2_i2c_apps_clk_src = {
23562306a36Sopenharmony_ci	.cmd_rcgr = 0x1e024,
23662306a36Sopenharmony_ci	.mnd_width = 8,
23762306a36Sopenharmony_ci	.hid_width = 5,
23862306a36Sopenharmony_ci	.parent_map = gcc_parent_map_0,
23962306a36Sopenharmony_ci	.freq_tbl = ftbl_gcc_blsp1_qup1_i2c_apps_clk_src,
24062306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
24162306a36Sopenharmony_ci		.name = "gcc_blsp1_qup2_i2c_apps_clk_src",
24262306a36Sopenharmony_ci		.parent_data = gcc_parent_data_0,
24362306a36Sopenharmony_ci		.num_parents = 3,
24462306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT,
24562306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
24662306a36Sopenharmony_ci	},
24762306a36Sopenharmony_ci};
24862306a36Sopenharmony_ci
24962306a36Sopenharmony_cistatic struct clk_rcg2 gcc_blsp1_qup2_spi_apps_clk_src = {
25062306a36Sopenharmony_ci	.cmd_rcgr = 0x1e00c,
25162306a36Sopenharmony_ci	.mnd_width = 8,
25262306a36Sopenharmony_ci	.hid_width = 5,
25362306a36Sopenharmony_ci	.parent_map = gcc_parent_map_0,
25462306a36Sopenharmony_ci	.freq_tbl = ftbl_gcc_blsp1_qup1_spi_apps_clk_src,
25562306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
25662306a36Sopenharmony_ci		.name = "gcc_blsp1_qup2_spi_apps_clk_src",
25762306a36Sopenharmony_ci		.parent_data = gcc_parent_data_0,
25862306a36Sopenharmony_ci		.num_parents = 3,
25962306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT,
26062306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
26162306a36Sopenharmony_ci	},
26262306a36Sopenharmony_ci};
26362306a36Sopenharmony_ci
26462306a36Sopenharmony_cistatic struct clk_rcg2 gcc_blsp1_qup3_i2c_apps_clk_src = {
26562306a36Sopenharmony_ci	.cmd_rcgr = 0x20024,
26662306a36Sopenharmony_ci	.mnd_width = 8,
26762306a36Sopenharmony_ci	.hid_width = 5,
26862306a36Sopenharmony_ci	.parent_map = gcc_parent_map_0,
26962306a36Sopenharmony_ci	.freq_tbl = ftbl_gcc_blsp1_qup1_i2c_apps_clk_src,
27062306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
27162306a36Sopenharmony_ci		.name = "gcc_blsp1_qup3_i2c_apps_clk_src",
27262306a36Sopenharmony_ci		.parent_data = gcc_parent_data_0,
27362306a36Sopenharmony_ci		.num_parents = 3,
27462306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT,
27562306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
27662306a36Sopenharmony_ci	},
27762306a36Sopenharmony_ci};
27862306a36Sopenharmony_ci
27962306a36Sopenharmony_cistatic struct clk_rcg2 gcc_blsp1_qup3_spi_apps_clk_src = {
28062306a36Sopenharmony_ci	.cmd_rcgr = 0x2000c,
28162306a36Sopenharmony_ci	.mnd_width = 8,
28262306a36Sopenharmony_ci	.hid_width = 5,
28362306a36Sopenharmony_ci	.parent_map = gcc_parent_map_0,
28462306a36Sopenharmony_ci	.freq_tbl = ftbl_gcc_blsp1_qup1_spi_apps_clk_src,
28562306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
28662306a36Sopenharmony_ci		.name = "gcc_blsp1_qup3_spi_apps_clk_src",
28762306a36Sopenharmony_ci		.parent_data = gcc_parent_data_0,
28862306a36Sopenharmony_ci		.num_parents = 3,
28962306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT,
29062306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
29162306a36Sopenharmony_ci	},
29262306a36Sopenharmony_ci};
29362306a36Sopenharmony_ci
29462306a36Sopenharmony_cistatic struct clk_rcg2 gcc_blsp1_qup4_i2c_apps_clk_src = {
29562306a36Sopenharmony_ci	.cmd_rcgr = 0x22024,
29662306a36Sopenharmony_ci	.mnd_width = 8,
29762306a36Sopenharmony_ci	.hid_width = 5,
29862306a36Sopenharmony_ci	.parent_map = gcc_parent_map_0,
29962306a36Sopenharmony_ci	.freq_tbl = ftbl_gcc_blsp1_qup1_i2c_apps_clk_src,
30062306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
30162306a36Sopenharmony_ci		.name = "gcc_blsp1_qup4_i2c_apps_clk_src",
30262306a36Sopenharmony_ci		.parent_data = gcc_parent_data_0,
30362306a36Sopenharmony_ci		.num_parents = 3,
30462306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT,
30562306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
30662306a36Sopenharmony_ci	},
30762306a36Sopenharmony_ci};
30862306a36Sopenharmony_ci
30962306a36Sopenharmony_cistatic struct clk_rcg2 gcc_blsp1_qup4_spi_apps_clk_src = {
31062306a36Sopenharmony_ci	.cmd_rcgr = 0x2200c,
31162306a36Sopenharmony_ci	.mnd_width = 8,
31262306a36Sopenharmony_ci	.hid_width = 5,
31362306a36Sopenharmony_ci	.parent_map = gcc_parent_map_0,
31462306a36Sopenharmony_ci	.freq_tbl = ftbl_gcc_blsp1_qup1_spi_apps_clk_src,
31562306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
31662306a36Sopenharmony_ci		.name = "gcc_blsp1_qup4_spi_apps_clk_src",
31762306a36Sopenharmony_ci		.parent_data = gcc_parent_data_0,
31862306a36Sopenharmony_ci		.num_parents = 3,
31962306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT,
32062306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
32162306a36Sopenharmony_ci	},
32262306a36Sopenharmony_ci};
32362306a36Sopenharmony_ci
32462306a36Sopenharmony_cistatic const struct freq_tbl ftbl_gcc_blsp1_uart1_apps_clk_src[] = {
32562306a36Sopenharmony_ci	F(3686400, P_GPLL0_OUT_EVEN, 1, 192, 15625),
32662306a36Sopenharmony_ci	F(7372800, P_GPLL0_OUT_EVEN, 1, 384, 15625),
32762306a36Sopenharmony_ci	F(9600000, P_BI_TCXO, 2, 0, 0),
32862306a36Sopenharmony_ci	F(14745600, P_GPLL0_OUT_EVEN, 1, 768, 15625),
32962306a36Sopenharmony_ci	F(16000000, P_GPLL0_OUT_EVEN, 1, 4, 75),
33062306a36Sopenharmony_ci	F(19200000, P_BI_TCXO, 1, 0, 0),
33162306a36Sopenharmony_ci	F(19354839, P_GPLL0_OUT_MAIN, 15.5, 1, 2),
33262306a36Sopenharmony_ci	F(20000000, P_GPLL0_OUT_MAIN, 15, 1, 2),
33362306a36Sopenharmony_ci	F(20689655, P_GPLL0_OUT_MAIN, 14.5, 1, 2),
33462306a36Sopenharmony_ci	F(21428571, P_GPLL0_OUT_MAIN, 14, 1, 2),
33562306a36Sopenharmony_ci	F(22222222, P_GPLL0_OUT_MAIN, 13.5, 1, 2),
33662306a36Sopenharmony_ci	F(23076923, P_GPLL0_OUT_MAIN, 13, 1, 2),
33762306a36Sopenharmony_ci	F(24000000, P_GPLL0_OUT_MAIN, 5, 1, 5),
33862306a36Sopenharmony_ci	F(25000000, P_GPLL0_OUT_MAIN, 12, 1, 2),
33962306a36Sopenharmony_ci	F(26086957, P_GPLL0_OUT_MAIN, 11.5, 1, 2),
34062306a36Sopenharmony_ci	F(27272727, P_GPLL0_OUT_MAIN, 11, 1, 2),
34162306a36Sopenharmony_ci	F(28571429, P_GPLL0_OUT_MAIN, 10.5, 1, 2),
34262306a36Sopenharmony_ci	F(32000000, P_GPLL0_OUT_MAIN, 1, 4, 75),
34362306a36Sopenharmony_ci	F(40000000, P_GPLL0_OUT_MAIN, 15, 0, 0),
34462306a36Sopenharmony_ci	F(46400000, P_GPLL0_OUT_MAIN, 1, 29, 375),
34562306a36Sopenharmony_ci	F(48000000, P_GPLL0_OUT_MAIN, 12.5, 0, 0),
34662306a36Sopenharmony_ci	F(51200000, P_GPLL0_OUT_MAIN, 1, 32, 375),
34762306a36Sopenharmony_ci	F(56000000, P_GPLL0_OUT_MAIN, 1, 7, 75),
34862306a36Sopenharmony_ci	F(58982400, P_GPLL0_OUT_MAIN, 1, 1536, 15625),
34962306a36Sopenharmony_ci	F(60000000, P_GPLL0_OUT_MAIN, 10, 0, 0),
35062306a36Sopenharmony_ci	F(63157895, P_GPLL0_OUT_MAIN, 9.5, 0, 0),
35162306a36Sopenharmony_ci	{ }
35262306a36Sopenharmony_ci};
35362306a36Sopenharmony_ci
35462306a36Sopenharmony_cistatic struct clk_rcg2 gcc_blsp1_uart1_apps_clk_src = {
35562306a36Sopenharmony_ci	.cmd_rcgr = 0x1d00c,
35662306a36Sopenharmony_ci	.mnd_width = 16,
35762306a36Sopenharmony_ci	.hid_width = 5,
35862306a36Sopenharmony_ci	.parent_map = gcc_parent_map_0,
35962306a36Sopenharmony_ci	.freq_tbl = ftbl_gcc_blsp1_uart1_apps_clk_src,
36062306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
36162306a36Sopenharmony_ci		.name = "gcc_blsp1_uart1_apps_clk_src",
36262306a36Sopenharmony_ci		.parent_data = gcc_parent_data_0,
36362306a36Sopenharmony_ci		.num_parents = 3,
36462306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT,
36562306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
36662306a36Sopenharmony_ci	},
36762306a36Sopenharmony_ci};
36862306a36Sopenharmony_ci
36962306a36Sopenharmony_cistatic struct clk_rcg2 gcc_blsp1_uart2_apps_clk_src = {
37062306a36Sopenharmony_ci	.cmd_rcgr = 0x1f00c,
37162306a36Sopenharmony_ci	.mnd_width = 16,
37262306a36Sopenharmony_ci	.hid_width = 5,
37362306a36Sopenharmony_ci	.parent_map = gcc_parent_map_0,
37462306a36Sopenharmony_ci	.freq_tbl = ftbl_gcc_blsp1_uart1_apps_clk_src,
37562306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
37662306a36Sopenharmony_ci		.name = "gcc_blsp1_uart2_apps_clk_src",
37762306a36Sopenharmony_ci		.parent_data = gcc_parent_data_0,
37862306a36Sopenharmony_ci		.num_parents = 3,
37962306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT,
38062306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
38162306a36Sopenharmony_ci	},
38262306a36Sopenharmony_ci};
38362306a36Sopenharmony_ci
38462306a36Sopenharmony_cistatic struct clk_rcg2 gcc_blsp1_uart3_apps_clk_src = {
38562306a36Sopenharmony_ci	.cmd_rcgr = 0x2100c,
38662306a36Sopenharmony_ci	.mnd_width = 16,
38762306a36Sopenharmony_ci	.hid_width = 5,
38862306a36Sopenharmony_ci	.parent_map = gcc_parent_map_0,
38962306a36Sopenharmony_ci	.freq_tbl = ftbl_gcc_blsp1_uart1_apps_clk_src,
39062306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
39162306a36Sopenharmony_ci		.name = "gcc_blsp1_uart3_apps_clk_src",
39262306a36Sopenharmony_ci		.parent_data = gcc_parent_data_0,
39362306a36Sopenharmony_ci		.num_parents = 3,
39462306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT,
39562306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
39662306a36Sopenharmony_ci	},
39762306a36Sopenharmony_ci};
39862306a36Sopenharmony_ci
39962306a36Sopenharmony_cistatic struct clk_rcg2 gcc_blsp1_uart4_apps_clk_src = {
40062306a36Sopenharmony_ci	.cmd_rcgr = 0x2300c,
40162306a36Sopenharmony_ci	.mnd_width = 16,
40262306a36Sopenharmony_ci	.hid_width = 5,
40362306a36Sopenharmony_ci	.parent_map = gcc_parent_map_0,
40462306a36Sopenharmony_ci	.freq_tbl = ftbl_gcc_blsp1_uart1_apps_clk_src,
40562306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
40662306a36Sopenharmony_ci		.name = "gcc_blsp1_uart4_apps_clk_src",
40762306a36Sopenharmony_ci		.parent_data = gcc_parent_data_0,
40862306a36Sopenharmony_ci		.num_parents = 3,
40962306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT,
41062306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
41162306a36Sopenharmony_ci	},
41262306a36Sopenharmony_ci};
41362306a36Sopenharmony_ci
41462306a36Sopenharmony_cistatic const struct freq_tbl ftbl_gcc_cpuss_ahb_clk_src[] = {
41562306a36Sopenharmony_ci	F(19200000, P_BI_TCXO, 1, 0, 0),
41662306a36Sopenharmony_ci	F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
41762306a36Sopenharmony_ci	F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
41862306a36Sopenharmony_ci	F(133333333, P_GPLL0_OUT_MAIN, 4.5, 0, 0),
41962306a36Sopenharmony_ci	{ }
42062306a36Sopenharmony_ci};
42162306a36Sopenharmony_ci
42262306a36Sopenharmony_cistatic struct clk_rcg2 gcc_cpuss_ahb_clk_src = {
42362306a36Sopenharmony_ci	.cmd_rcgr = 0x3000c,
42462306a36Sopenharmony_ci	.mnd_width = 0,
42562306a36Sopenharmony_ci	.hid_width = 5,
42662306a36Sopenharmony_ci	.parent_map = gcc_parent_map_0,
42762306a36Sopenharmony_ci	.freq_tbl = ftbl_gcc_cpuss_ahb_clk_src,
42862306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
42962306a36Sopenharmony_ci		.name = "gcc_cpuss_ahb_clk_src",
43062306a36Sopenharmony_ci		.parent_data = gcc_parent_data_0_ao,
43162306a36Sopenharmony_ci		.num_parents = 3,
43262306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT,
43362306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
43462306a36Sopenharmony_ci	},
43562306a36Sopenharmony_ci};
43662306a36Sopenharmony_ci
43762306a36Sopenharmony_cistatic const struct freq_tbl ftbl_gcc_gp1_clk_src[] = {
43862306a36Sopenharmony_ci	F(19200000, P_BI_TCXO, 1, 0, 0),
43962306a36Sopenharmony_ci	F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
44062306a36Sopenharmony_ci	F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
44162306a36Sopenharmony_ci	F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),
44262306a36Sopenharmony_ci	{ }
44362306a36Sopenharmony_ci};
44462306a36Sopenharmony_ci
44562306a36Sopenharmony_cistatic struct clk_rcg2 gcc_gp1_clk_src = {
44662306a36Sopenharmony_ci	.cmd_rcgr = 0x37004,
44762306a36Sopenharmony_ci	.mnd_width = 16,
44862306a36Sopenharmony_ci	.hid_width = 5,
44962306a36Sopenharmony_ci	.parent_map = gcc_parent_map_2,
45062306a36Sopenharmony_ci	.freq_tbl = ftbl_gcc_gp1_clk_src,
45162306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
45262306a36Sopenharmony_ci		.name = "gcc_gp1_clk_src",
45362306a36Sopenharmony_ci		.parent_data = gcc_parent_data_2,
45462306a36Sopenharmony_ci		.num_parents = 4,
45562306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT,
45662306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
45762306a36Sopenharmony_ci	},
45862306a36Sopenharmony_ci};
45962306a36Sopenharmony_ci
46062306a36Sopenharmony_cistatic struct clk_rcg2 gcc_gp2_clk_src = {
46162306a36Sopenharmony_ci	.cmd_rcgr = 0x38004,
46262306a36Sopenharmony_ci	.mnd_width = 16,
46362306a36Sopenharmony_ci	.hid_width = 5,
46462306a36Sopenharmony_ci	.parent_map = gcc_parent_map_2,
46562306a36Sopenharmony_ci	.freq_tbl = ftbl_gcc_gp1_clk_src,
46662306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
46762306a36Sopenharmony_ci		.name = "gcc_gp2_clk_src",
46862306a36Sopenharmony_ci		.parent_data = gcc_parent_data_2,
46962306a36Sopenharmony_ci		.num_parents = 4,
47062306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT,
47162306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
47262306a36Sopenharmony_ci	},
47362306a36Sopenharmony_ci};
47462306a36Sopenharmony_ci
47562306a36Sopenharmony_cistatic struct clk_rcg2 gcc_gp3_clk_src = {
47662306a36Sopenharmony_ci	.cmd_rcgr = 0x39004,
47762306a36Sopenharmony_ci	.mnd_width = 16,
47862306a36Sopenharmony_ci	.hid_width = 5,
47962306a36Sopenharmony_ci	.parent_map = gcc_parent_map_2,
48062306a36Sopenharmony_ci	.freq_tbl = ftbl_gcc_gp1_clk_src,
48162306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
48262306a36Sopenharmony_ci		.name = "gcc_gp3_clk_src",
48362306a36Sopenharmony_ci		.parent_data = gcc_parent_data_2,
48462306a36Sopenharmony_ci		.num_parents = 4,
48562306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT,
48662306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
48762306a36Sopenharmony_ci	},
48862306a36Sopenharmony_ci};
48962306a36Sopenharmony_ci
49062306a36Sopenharmony_cistatic const struct freq_tbl ftbl_gcc_pcie_aux_phy_clk_src[] = {
49162306a36Sopenharmony_ci	F(19200000, P_BI_TCXO, 1, 0, 0),
49262306a36Sopenharmony_ci	{ }
49362306a36Sopenharmony_ci};
49462306a36Sopenharmony_ci
49562306a36Sopenharmony_cistatic struct clk_rcg2 gcc_pcie_aux_phy_clk_src = {
49662306a36Sopenharmony_ci	.cmd_rcgr = 0x43048,
49762306a36Sopenharmony_ci	.mnd_width = 16,
49862306a36Sopenharmony_ci	.hid_width = 5,
49962306a36Sopenharmony_ci	.parent_map = gcc_parent_map_3,
50062306a36Sopenharmony_ci	.freq_tbl = ftbl_gcc_pcie_aux_phy_clk_src,
50162306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
50262306a36Sopenharmony_ci		.name = "gcc_pcie_aux_phy_clk_src",
50362306a36Sopenharmony_ci		.parent_data = gcc_parent_data_3,
50462306a36Sopenharmony_ci		.num_parents = 2,
50562306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT,
50662306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
50762306a36Sopenharmony_ci	},
50862306a36Sopenharmony_ci};
50962306a36Sopenharmony_ci
51062306a36Sopenharmony_cistatic const struct freq_tbl ftbl_gcc_pcie_rchng_phy_clk_src[] = {
51162306a36Sopenharmony_ci	F(100000000, P_GPLL0_OUT_EVEN, 3, 0, 0),
51262306a36Sopenharmony_ci	{ }
51362306a36Sopenharmony_ci};
51462306a36Sopenharmony_ci
51562306a36Sopenharmony_cistatic struct clk_rcg2 gcc_pcie_rchng_phy_clk_src = {
51662306a36Sopenharmony_ci	.cmd_rcgr = 0x43064,
51762306a36Sopenharmony_ci	.mnd_width = 0,
51862306a36Sopenharmony_ci	.hid_width = 5,
51962306a36Sopenharmony_ci	.parent_map = gcc_parent_map_2,
52062306a36Sopenharmony_ci	.freq_tbl = ftbl_gcc_pcie_rchng_phy_clk_src,
52162306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
52262306a36Sopenharmony_ci		.name = "gcc_pcie_rchng_phy_clk_src",
52362306a36Sopenharmony_ci		.parent_data = gcc_parent_data_2,
52462306a36Sopenharmony_ci		.num_parents = 4,
52562306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT,
52662306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
52762306a36Sopenharmony_ci	},
52862306a36Sopenharmony_ci};
52962306a36Sopenharmony_ci
53062306a36Sopenharmony_cistatic const struct freq_tbl ftbl_gcc_pdm2_clk_src[] = {
53162306a36Sopenharmony_ci	F(19200000, P_BI_TCXO, 1, 0, 0),
53262306a36Sopenharmony_ci	F(60000000, P_GPLL0_OUT_MAIN, 10, 0, 0),
53362306a36Sopenharmony_ci	{ }
53462306a36Sopenharmony_ci};
53562306a36Sopenharmony_ci
53662306a36Sopenharmony_cistatic struct clk_rcg2 gcc_pdm2_clk_src = {
53762306a36Sopenharmony_ci	.cmd_rcgr = 0x24010,
53862306a36Sopenharmony_ci	.mnd_width = 0,
53962306a36Sopenharmony_ci	.hid_width = 5,
54062306a36Sopenharmony_ci	.parent_map = gcc_parent_map_0,
54162306a36Sopenharmony_ci	.freq_tbl = ftbl_gcc_pdm2_clk_src,
54262306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
54362306a36Sopenharmony_ci		.name = "gcc_pdm2_clk_src",
54462306a36Sopenharmony_ci		.parent_data = gcc_parent_data_0,
54562306a36Sopenharmony_ci		.num_parents = 3,
54662306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT,
54762306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
54862306a36Sopenharmony_ci	},
54962306a36Sopenharmony_ci};
55062306a36Sopenharmony_ci
55162306a36Sopenharmony_cistatic const struct freq_tbl ftbl_gcc_sdcc1_apps_clk_src[] = {
55262306a36Sopenharmony_ci	F(400000, P_BI_TCXO, 12, 1, 4),
55362306a36Sopenharmony_ci	F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),
55462306a36Sopenharmony_ci	F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
55562306a36Sopenharmony_ci	F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
55662306a36Sopenharmony_ci	F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),
55762306a36Sopenharmony_ci	{ }
55862306a36Sopenharmony_ci};
55962306a36Sopenharmony_ci
56062306a36Sopenharmony_cistatic struct clk_rcg2 gcc_sdcc1_apps_clk_src = {
56162306a36Sopenharmony_ci	.cmd_rcgr = 0x1a010,
56262306a36Sopenharmony_ci	.mnd_width = 8,
56362306a36Sopenharmony_ci	.hid_width = 5,
56462306a36Sopenharmony_ci	.parent_map = gcc_parent_map_0,
56562306a36Sopenharmony_ci	.freq_tbl = ftbl_gcc_sdcc1_apps_clk_src,
56662306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
56762306a36Sopenharmony_ci		.name = "gcc_sdcc1_apps_clk_src",
56862306a36Sopenharmony_ci		.parent_data = gcc_parent_data_0,
56962306a36Sopenharmony_ci		.num_parents = 3,
57062306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT,
57162306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
57262306a36Sopenharmony_ci	},
57362306a36Sopenharmony_ci};
57462306a36Sopenharmony_ci
57562306a36Sopenharmony_cistatic const struct freq_tbl ftbl_gcc_usb30_master_clk_src[] = {
57662306a36Sopenharmony_ci	F(200000000, P_GPLL0_OUT_EVEN, 1.5, 0, 0),
57762306a36Sopenharmony_ci	{ }
57862306a36Sopenharmony_ci};
57962306a36Sopenharmony_ci
58062306a36Sopenharmony_cistatic struct clk_rcg2 gcc_usb30_master_clk_src = {
58162306a36Sopenharmony_ci	.cmd_rcgr = 0x17030,
58262306a36Sopenharmony_ci	.mnd_width = 8,
58362306a36Sopenharmony_ci	.hid_width = 5,
58462306a36Sopenharmony_ci	.parent_map = gcc_parent_map_0,
58562306a36Sopenharmony_ci	.freq_tbl = ftbl_gcc_usb30_master_clk_src,
58662306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
58762306a36Sopenharmony_ci		.name = "gcc_usb30_master_clk_src",
58862306a36Sopenharmony_ci		.parent_data = gcc_parent_data_0,
58962306a36Sopenharmony_ci		.num_parents = 3,
59062306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT,
59162306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
59262306a36Sopenharmony_ci	},
59362306a36Sopenharmony_ci};
59462306a36Sopenharmony_ci
59562306a36Sopenharmony_cistatic struct clk_rcg2 gcc_usb30_mock_utmi_clk_src = {
59662306a36Sopenharmony_ci	.cmd_rcgr = 0x17048,
59762306a36Sopenharmony_ci	.mnd_width = 0,
59862306a36Sopenharmony_ci	.hid_width = 5,
59962306a36Sopenharmony_ci	.parent_map = gcc_parent_map_0,
60062306a36Sopenharmony_ci	.freq_tbl = ftbl_gcc_pcie_aux_phy_clk_src,
60162306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
60262306a36Sopenharmony_ci		.name = "gcc_usb30_mock_utmi_clk_src",
60362306a36Sopenharmony_ci		.parent_data = gcc_parent_data_0,
60462306a36Sopenharmony_ci		.num_parents = 3,
60562306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT,
60662306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
60762306a36Sopenharmony_ci	},
60862306a36Sopenharmony_ci};
60962306a36Sopenharmony_ci
61062306a36Sopenharmony_cistatic const struct freq_tbl ftbl_gcc_usb3_phy_aux_clk_src[] = {
61162306a36Sopenharmony_ci	F(1000000, P_BI_TCXO, 1, 5, 96),
61262306a36Sopenharmony_ci	F(19200000, P_BI_TCXO, 1, 0, 0),
61362306a36Sopenharmony_ci	{ }
61462306a36Sopenharmony_ci};
61562306a36Sopenharmony_ci
61662306a36Sopenharmony_cistatic struct clk_rcg2 gcc_usb3_phy_aux_clk_src = {
61762306a36Sopenharmony_ci	.cmd_rcgr = 0x17070,
61862306a36Sopenharmony_ci	.mnd_width = 16,
61962306a36Sopenharmony_ci	.hid_width = 5,
62062306a36Sopenharmony_ci	.parent_map = gcc_parent_map_3,
62162306a36Sopenharmony_ci	.freq_tbl = ftbl_gcc_usb3_phy_aux_clk_src,
62262306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data){
62362306a36Sopenharmony_ci		.name = "gcc_usb3_phy_aux_clk_src",
62462306a36Sopenharmony_ci		.parent_data = gcc_parent_data_3,
62562306a36Sopenharmony_ci		.num_parents = 2,
62662306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT,
62762306a36Sopenharmony_ci		.ops = &clk_rcg2_ops,
62862306a36Sopenharmony_ci	},
62962306a36Sopenharmony_ci};
63062306a36Sopenharmony_ci
63162306a36Sopenharmony_cistatic struct clk_regmap_div gcc_cpuss_ahb_postdiv_clk_src = {
63262306a36Sopenharmony_ci	.reg = 0x30024,
63362306a36Sopenharmony_ci	.shift = 0,
63462306a36Sopenharmony_ci	.width = 4,
63562306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data) {
63662306a36Sopenharmony_ci		.name = "gcc_cpuss_ahb_postdiv_clk_src",
63762306a36Sopenharmony_ci		.parent_hws = (const struct clk_hw*[]) {
63862306a36Sopenharmony_ci			&gcc_cpuss_ahb_clk_src.clkr.hw,
63962306a36Sopenharmony_ci		},
64062306a36Sopenharmony_ci		.num_parents = 1,
64162306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT,
64262306a36Sopenharmony_ci		.ops = &clk_regmap_div_ro_ops,
64362306a36Sopenharmony_ci	},
64462306a36Sopenharmony_ci};
64562306a36Sopenharmony_ci
64662306a36Sopenharmony_cistatic struct clk_regmap_div gcc_usb30_mock_utmi_postdiv_clk_src = {
64762306a36Sopenharmony_ci	.reg = 0x17060,
64862306a36Sopenharmony_ci	.shift = 0,
64962306a36Sopenharmony_ci	.width = 4,
65062306a36Sopenharmony_ci	.clkr.hw.init = &(struct clk_init_data) {
65162306a36Sopenharmony_ci		.name = "gcc_usb30_mock_utmi_postdiv_clk_src",
65262306a36Sopenharmony_ci		.parent_hws = (const struct clk_hw*[]) {
65362306a36Sopenharmony_ci			&gcc_usb30_mock_utmi_clk_src.clkr.hw,
65462306a36Sopenharmony_ci		},
65562306a36Sopenharmony_ci		.num_parents = 1,
65662306a36Sopenharmony_ci		.flags = CLK_SET_RATE_PARENT,
65762306a36Sopenharmony_ci		.ops = &clk_regmap_div_ro_ops,
65862306a36Sopenharmony_ci	},
65962306a36Sopenharmony_ci};
66062306a36Sopenharmony_ci
66162306a36Sopenharmony_cistatic struct clk_branch gcc_ahb_pcie_link_clk = {
66262306a36Sopenharmony_ci	.halt_reg = 0x2e004,
66362306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
66462306a36Sopenharmony_ci	.clkr = {
66562306a36Sopenharmony_ci		.enable_reg = 0x2e004,
66662306a36Sopenharmony_ci		.enable_mask = BIT(0),
66762306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
66862306a36Sopenharmony_ci			.name = "gcc_ahb_pcie_link_clk",
66962306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
67062306a36Sopenharmony_ci		},
67162306a36Sopenharmony_ci	},
67262306a36Sopenharmony_ci};
67362306a36Sopenharmony_ci
67462306a36Sopenharmony_cistatic struct clk_branch gcc_blsp1_ahb_clk = {
67562306a36Sopenharmony_ci	.halt_reg = 0x1b004,
67662306a36Sopenharmony_ci	.halt_check = BRANCH_HALT_VOTED,
67762306a36Sopenharmony_ci	.clkr = {
67862306a36Sopenharmony_ci		.enable_reg = 0x6d008,
67962306a36Sopenharmony_ci		.enable_mask = BIT(14),
68062306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
68162306a36Sopenharmony_ci			.name = "gcc_blsp1_ahb_clk",
68262306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
68362306a36Sopenharmony_ci		},
68462306a36Sopenharmony_ci	},
68562306a36Sopenharmony_ci};
68662306a36Sopenharmony_ci
68762306a36Sopenharmony_cistatic struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = {
68862306a36Sopenharmony_ci	.halt_reg = 0x1c008,
68962306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
69062306a36Sopenharmony_ci	.clkr = {
69162306a36Sopenharmony_ci		.enable_reg = 0x1c008,
69262306a36Sopenharmony_ci		.enable_mask = BIT(0),
69362306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
69462306a36Sopenharmony_ci			.name = "gcc_blsp1_qup1_i2c_apps_clk",
69562306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw*[]) {
69662306a36Sopenharmony_ci				&gcc_blsp1_qup1_i2c_apps_clk_src.clkr.hw,
69762306a36Sopenharmony_ci			},
69862306a36Sopenharmony_ci			.num_parents = 1,
69962306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
70062306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
70162306a36Sopenharmony_ci		},
70262306a36Sopenharmony_ci	},
70362306a36Sopenharmony_ci};
70462306a36Sopenharmony_ci
70562306a36Sopenharmony_cistatic struct clk_branch gcc_blsp1_qup1_spi_apps_clk = {
70662306a36Sopenharmony_ci	.halt_reg = 0x1c004,
70762306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
70862306a36Sopenharmony_ci	.clkr = {
70962306a36Sopenharmony_ci		.enable_reg = 0x1c004,
71062306a36Sopenharmony_ci		.enable_mask = BIT(0),
71162306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
71262306a36Sopenharmony_ci			.name = "gcc_blsp1_qup1_spi_apps_clk",
71362306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw*[]) {
71462306a36Sopenharmony_ci				&gcc_blsp1_qup1_spi_apps_clk_src.clkr.hw,
71562306a36Sopenharmony_ci			},
71662306a36Sopenharmony_ci			.num_parents = 1,
71762306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
71862306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
71962306a36Sopenharmony_ci		},
72062306a36Sopenharmony_ci	},
72162306a36Sopenharmony_ci};
72262306a36Sopenharmony_ci
72362306a36Sopenharmony_cistatic struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = {
72462306a36Sopenharmony_ci	.halt_reg = 0x1e008,
72562306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
72662306a36Sopenharmony_ci	.clkr = {
72762306a36Sopenharmony_ci		.enable_reg = 0x1e008,
72862306a36Sopenharmony_ci		.enable_mask = BIT(0),
72962306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
73062306a36Sopenharmony_ci			.name = "gcc_blsp1_qup2_i2c_apps_clk",
73162306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw*[]) {
73262306a36Sopenharmony_ci				&gcc_blsp1_qup2_i2c_apps_clk_src.clkr.hw,
73362306a36Sopenharmony_ci			},
73462306a36Sopenharmony_ci			.num_parents = 1,
73562306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
73662306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
73762306a36Sopenharmony_ci		},
73862306a36Sopenharmony_ci	},
73962306a36Sopenharmony_ci};
74062306a36Sopenharmony_ci
74162306a36Sopenharmony_cistatic struct clk_branch gcc_blsp1_qup2_spi_apps_clk = {
74262306a36Sopenharmony_ci	.halt_reg = 0x1e004,
74362306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
74462306a36Sopenharmony_ci	.clkr = {
74562306a36Sopenharmony_ci		.enable_reg = 0x1e004,
74662306a36Sopenharmony_ci		.enable_mask = BIT(0),
74762306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
74862306a36Sopenharmony_ci			.name = "gcc_blsp1_qup2_spi_apps_clk",
74962306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw*[]) {
75062306a36Sopenharmony_ci				&gcc_blsp1_qup2_spi_apps_clk_src.clkr.hw,
75162306a36Sopenharmony_ci			},
75262306a36Sopenharmony_ci			.num_parents = 1,
75362306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
75462306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
75562306a36Sopenharmony_ci		},
75662306a36Sopenharmony_ci	},
75762306a36Sopenharmony_ci};
75862306a36Sopenharmony_ci
75962306a36Sopenharmony_cistatic struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = {
76062306a36Sopenharmony_ci	.halt_reg = 0x20008,
76162306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
76262306a36Sopenharmony_ci	.clkr = {
76362306a36Sopenharmony_ci		.enable_reg = 0x20008,
76462306a36Sopenharmony_ci		.enable_mask = BIT(0),
76562306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
76662306a36Sopenharmony_ci			.name = "gcc_blsp1_qup3_i2c_apps_clk",
76762306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw*[]) {
76862306a36Sopenharmony_ci				&gcc_blsp1_qup3_i2c_apps_clk_src.clkr.hw,
76962306a36Sopenharmony_ci			},
77062306a36Sopenharmony_ci			.num_parents = 1,
77162306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
77262306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
77362306a36Sopenharmony_ci		},
77462306a36Sopenharmony_ci	},
77562306a36Sopenharmony_ci};
77662306a36Sopenharmony_ci
77762306a36Sopenharmony_cistatic struct clk_branch gcc_blsp1_qup3_spi_apps_clk = {
77862306a36Sopenharmony_ci	.halt_reg = 0x20004,
77962306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
78062306a36Sopenharmony_ci	.clkr = {
78162306a36Sopenharmony_ci		.enable_reg = 0x20004,
78262306a36Sopenharmony_ci		.enable_mask = BIT(0),
78362306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
78462306a36Sopenharmony_ci			.name = "gcc_blsp1_qup3_spi_apps_clk",
78562306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw*[]) {
78662306a36Sopenharmony_ci				&gcc_blsp1_qup3_spi_apps_clk_src.clkr.hw,
78762306a36Sopenharmony_ci			},
78862306a36Sopenharmony_ci			.num_parents = 1,
78962306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
79062306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
79162306a36Sopenharmony_ci		},
79262306a36Sopenharmony_ci	},
79362306a36Sopenharmony_ci};
79462306a36Sopenharmony_ci
79562306a36Sopenharmony_cistatic struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = {
79662306a36Sopenharmony_ci	.halt_reg = 0x22008,
79762306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
79862306a36Sopenharmony_ci	.clkr = {
79962306a36Sopenharmony_ci		.enable_reg = 0x22008,
80062306a36Sopenharmony_ci		.enable_mask = BIT(0),
80162306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
80262306a36Sopenharmony_ci			.name = "gcc_blsp1_qup4_i2c_apps_clk",
80362306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw*[]) {
80462306a36Sopenharmony_ci				&gcc_blsp1_qup4_i2c_apps_clk_src.clkr.hw,
80562306a36Sopenharmony_ci			},
80662306a36Sopenharmony_ci			.num_parents = 1,
80762306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
80862306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
80962306a36Sopenharmony_ci		},
81062306a36Sopenharmony_ci	},
81162306a36Sopenharmony_ci};
81262306a36Sopenharmony_ci
81362306a36Sopenharmony_cistatic struct clk_branch gcc_blsp1_qup4_spi_apps_clk = {
81462306a36Sopenharmony_ci	.halt_reg = 0x22004,
81562306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
81662306a36Sopenharmony_ci	.clkr = {
81762306a36Sopenharmony_ci		.enable_reg = 0x22004,
81862306a36Sopenharmony_ci		.enable_mask = BIT(0),
81962306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
82062306a36Sopenharmony_ci			.name = "gcc_blsp1_qup4_spi_apps_clk",
82162306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw*[]) {
82262306a36Sopenharmony_ci				&gcc_blsp1_qup4_spi_apps_clk_src.clkr.hw,
82362306a36Sopenharmony_ci			},
82462306a36Sopenharmony_ci			.num_parents = 1,
82562306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
82662306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
82762306a36Sopenharmony_ci		},
82862306a36Sopenharmony_ci	},
82962306a36Sopenharmony_ci};
83062306a36Sopenharmony_ci
83162306a36Sopenharmony_cistatic struct clk_branch gcc_blsp1_sleep_clk = {
83262306a36Sopenharmony_ci	.halt_reg = 0x1b00c,
83362306a36Sopenharmony_ci	.halt_check = BRANCH_HALT_VOTED,
83462306a36Sopenharmony_ci	.clkr = {
83562306a36Sopenharmony_ci		.enable_reg = 0x6d008,
83662306a36Sopenharmony_ci		.enable_mask = BIT(15),
83762306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
83862306a36Sopenharmony_ci			.name = "gcc_blsp1_sleep_clk",
83962306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
84062306a36Sopenharmony_ci		},
84162306a36Sopenharmony_ci	},
84262306a36Sopenharmony_ci};
84362306a36Sopenharmony_ci
84462306a36Sopenharmony_cistatic struct clk_branch gcc_blsp1_uart1_apps_clk = {
84562306a36Sopenharmony_ci	.halt_reg = 0x1d004,
84662306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
84762306a36Sopenharmony_ci	.clkr = {
84862306a36Sopenharmony_ci		.enable_reg = 0x1d004,
84962306a36Sopenharmony_ci		.enable_mask = BIT(0),
85062306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
85162306a36Sopenharmony_ci			.name = "gcc_blsp1_uart1_apps_clk",
85262306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw*[]) {
85362306a36Sopenharmony_ci				&gcc_blsp1_uart1_apps_clk_src.clkr.hw,
85462306a36Sopenharmony_ci			},
85562306a36Sopenharmony_ci			.num_parents = 1,
85662306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
85762306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
85862306a36Sopenharmony_ci		},
85962306a36Sopenharmony_ci	},
86062306a36Sopenharmony_ci};
86162306a36Sopenharmony_ci
86262306a36Sopenharmony_cistatic struct clk_branch gcc_blsp1_uart2_apps_clk = {
86362306a36Sopenharmony_ci	.halt_reg = 0x1f004,
86462306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
86562306a36Sopenharmony_ci	.clkr = {
86662306a36Sopenharmony_ci		.enable_reg = 0x1f004,
86762306a36Sopenharmony_ci		.enable_mask = BIT(0),
86862306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
86962306a36Sopenharmony_ci			.name = "gcc_blsp1_uart2_apps_clk",
87062306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw*[]) {
87162306a36Sopenharmony_ci				&gcc_blsp1_uart2_apps_clk_src.clkr.hw,
87262306a36Sopenharmony_ci			},
87362306a36Sopenharmony_ci			.num_parents = 1,
87462306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
87562306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
87662306a36Sopenharmony_ci		},
87762306a36Sopenharmony_ci	},
87862306a36Sopenharmony_ci};
87962306a36Sopenharmony_ci
88062306a36Sopenharmony_cistatic struct clk_branch gcc_blsp1_uart3_apps_clk = {
88162306a36Sopenharmony_ci	.halt_reg = 0x21004,
88262306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
88362306a36Sopenharmony_ci	.clkr = {
88462306a36Sopenharmony_ci		.enable_reg = 0x21004,
88562306a36Sopenharmony_ci		.enable_mask = BIT(0),
88662306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
88762306a36Sopenharmony_ci			.name = "gcc_blsp1_uart3_apps_clk",
88862306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw*[]) {
88962306a36Sopenharmony_ci				&gcc_blsp1_uart3_apps_clk_src.clkr.hw,
89062306a36Sopenharmony_ci			},
89162306a36Sopenharmony_ci			.num_parents = 1,
89262306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
89362306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
89462306a36Sopenharmony_ci		},
89562306a36Sopenharmony_ci	},
89662306a36Sopenharmony_ci};
89762306a36Sopenharmony_ci
89862306a36Sopenharmony_cistatic struct clk_branch gcc_blsp1_uart4_apps_clk = {
89962306a36Sopenharmony_ci	.halt_reg = 0x23004,
90062306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
90162306a36Sopenharmony_ci	.clkr = {
90262306a36Sopenharmony_ci		.enable_reg = 0x23004,
90362306a36Sopenharmony_ci		.enable_mask = BIT(0),
90462306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
90562306a36Sopenharmony_ci			.name = "gcc_blsp1_uart4_apps_clk",
90662306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw*[]) {
90762306a36Sopenharmony_ci				&gcc_blsp1_uart4_apps_clk_src.clkr.hw,
90862306a36Sopenharmony_ci			},
90962306a36Sopenharmony_ci			.num_parents = 1,
91062306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
91162306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
91262306a36Sopenharmony_ci		},
91362306a36Sopenharmony_ci	},
91462306a36Sopenharmony_ci};
91562306a36Sopenharmony_ci
91662306a36Sopenharmony_cistatic struct clk_branch gcc_boot_rom_ahb_clk = {
91762306a36Sopenharmony_ci	.halt_reg = 0x27004,
91862306a36Sopenharmony_ci	.halt_check = BRANCH_HALT_VOTED,
91962306a36Sopenharmony_ci	.hwcg_reg = 0x27004,
92062306a36Sopenharmony_ci	.hwcg_bit = 1,
92162306a36Sopenharmony_ci	.clkr = {
92262306a36Sopenharmony_ci		.enable_reg = 0x6d008,
92362306a36Sopenharmony_ci		.enable_mask = BIT(10),
92462306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
92562306a36Sopenharmony_ci			.name = "gcc_boot_rom_ahb_clk",
92662306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
92762306a36Sopenharmony_ci		},
92862306a36Sopenharmony_ci	},
92962306a36Sopenharmony_ci};
93062306a36Sopenharmony_ci
93162306a36Sopenharmony_cistatic struct clk_branch gcc_gp1_clk = {
93262306a36Sopenharmony_ci	.halt_reg = 0x37000,
93362306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
93462306a36Sopenharmony_ci	.clkr = {
93562306a36Sopenharmony_ci		.enable_reg = 0x37000,
93662306a36Sopenharmony_ci		.enable_mask = BIT(0),
93762306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
93862306a36Sopenharmony_ci			.name = "gcc_gp1_clk",
93962306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw*[]) {
94062306a36Sopenharmony_ci				&gcc_gp1_clk_src.clkr.hw,
94162306a36Sopenharmony_ci			},
94262306a36Sopenharmony_ci			.num_parents = 1,
94362306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
94462306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
94562306a36Sopenharmony_ci		},
94662306a36Sopenharmony_ci	},
94762306a36Sopenharmony_ci};
94862306a36Sopenharmony_ci
94962306a36Sopenharmony_cistatic struct clk_branch gcc_gp2_clk = {
95062306a36Sopenharmony_ci	.halt_reg = 0x38000,
95162306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
95262306a36Sopenharmony_ci	.clkr = {
95362306a36Sopenharmony_ci		.enable_reg = 0x38000,
95462306a36Sopenharmony_ci		.enable_mask = BIT(0),
95562306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
95662306a36Sopenharmony_ci			.name = "gcc_gp2_clk",
95762306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw*[]) {
95862306a36Sopenharmony_ci				&gcc_gp2_clk_src.clkr.hw,
95962306a36Sopenharmony_ci			},
96062306a36Sopenharmony_ci			.num_parents = 1,
96162306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
96262306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
96362306a36Sopenharmony_ci		},
96462306a36Sopenharmony_ci	},
96562306a36Sopenharmony_ci};
96662306a36Sopenharmony_ci
96762306a36Sopenharmony_cistatic struct clk_branch gcc_gp3_clk = {
96862306a36Sopenharmony_ci	.halt_reg = 0x39000,
96962306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
97062306a36Sopenharmony_ci	.clkr = {
97162306a36Sopenharmony_ci		.enable_reg = 0x39000,
97262306a36Sopenharmony_ci		.enable_mask = BIT(0),
97362306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
97462306a36Sopenharmony_ci			.name = "gcc_gp3_clk",
97562306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw*[]) {
97662306a36Sopenharmony_ci				&gcc_gp3_clk_src.clkr.hw,
97762306a36Sopenharmony_ci			},
97862306a36Sopenharmony_ci			.num_parents = 1,
97962306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
98062306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
98162306a36Sopenharmony_ci		},
98262306a36Sopenharmony_ci	},
98362306a36Sopenharmony_ci};
98462306a36Sopenharmony_ci
98562306a36Sopenharmony_cistatic struct clk_branch gcc_pcie_0_clkref_en = {
98662306a36Sopenharmony_ci	.halt_reg = 0x88004,
98762306a36Sopenharmony_ci	/*
98862306a36Sopenharmony_ci	 * The clock controller does not handle the status bit for
98962306a36Sopenharmony_ci	 * the clocks with gdscs(powerdomains) in hw controlled mode
99062306a36Sopenharmony_ci	 * and hence avoid checking for the status bit of those clocks
99162306a36Sopenharmony_ci	 * by setting the BRANCH_HALT_DELAY flag
99262306a36Sopenharmony_ci	 */
99362306a36Sopenharmony_ci	.halt_check = BRANCH_HALT_DELAY,
99462306a36Sopenharmony_ci	.clkr = {
99562306a36Sopenharmony_ci		.enable_reg = 0x88004,
99662306a36Sopenharmony_ci		.enable_mask = BIT(0),
99762306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
99862306a36Sopenharmony_ci			.name = "gcc_pcie_0_clkref_en",
99962306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
100062306a36Sopenharmony_ci		},
100162306a36Sopenharmony_ci	},
100262306a36Sopenharmony_ci};
100362306a36Sopenharmony_ci
100462306a36Sopenharmony_cistatic struct clk_branch gcc_pcie_aux_clk = {
100562306a36Sopenharmony_ci	.halt_reg = 0x43034,
100662306a36Sopenharmony_ci	/*
100762306a36Sopenharmony_ci	 * The clock controller does not handle the status bit for
100862306a36Sopenharmony_ci	 * the clocks with gdscs(powerdomains) in hw controlled mode
100962306a36Sopenharmony_ci	 * and hence avoid checking for the status bit of those clocks
101062306a36Sopenharmony_ci	 * by setting the BRANCH_HALT_DELAY flag
101162306a36Sopenharmony_ci	 */
101262306a36Sopenharmony_ci	.halt_check = BRANCH_HALT_DELAY,
101362306a36Sopenharmony_ci	.hwcg_reg = 0x43034,
101462306a36Sopenharmony_ci	.hwcg_bit = 1,
101562306a36Sopenharmony_ci	.clkr = {
101662306a36Sopenharmony_ci		.enable_reg = 0x6d010,
101762306a36Sopenharmony_ci		.enable_mask = BIT(3),
101862306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
101962306a36Sopenharmony_ci			.name = "gcc_pcie_aux_clk",
102062306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw*[]) {
102162306a36Sopenharmony_ci				&gcc_pcie_aux_clk_src.clkr.hw,
102262306a36Sopenharmony_ci			},
102362306a36Sopenharmony_ci			.num_parents = 1,
102462306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
102562306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
102662306a36Sopenharmony_ci		},
102762306a36Sopenharmony_ci	},
102862306a36Sopenharmony_ci};
102962306a36Sopenharmony_ci
103062306a36Sopenharmony_cistatic struct clk_branch gcc_pcie_cfg_ahb_clk = {
103162306a36Sopenharmony_ci	.halt_reg = 0x4302c,
103262306a36Sopenharmony_ci	.halt_check = BRANCH_HALT_VOTED,
103362306a36Sopenharmony_ci	.hwcg_reg = 0x4302c,
103462306a36Sopenharmony_ci	.hwcg_bit = 1,
103562306a36Sopenharmony_ci	.clkr = {
103662306a36Sopenharmony_ci		.enable_reg = 0x6d010,
103762306a36Sopenharmony_ci		.enable_mask = BIT(2),
103862306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
103962306a36Sopenharmony_ci			.name = "gcc_pcie_cfg_ahb_clk",
104062306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
104162306a36Sopenharmony_ci		},
104262306a36Sopenharmony_ci	},
104362306a36Sopenharmony_ci};
104462306a36Sopenharmony_ci
104562306a36Sopenharmony_cistatic struct clk_branch gcc_pcie_mstr_axi_clk = {
104662306a36Sopenharmony_ci	.halt_reg = 0x43024,
104762306a36Sopenharmony_ci	.halt_check = BRANCH_HALT_VOTED,
104862306a36Sopenharmony_ci	.hwcg_reg = 0x43024,
104962306a36Sopenharmony_ci	.hwcg_bit = 1,
105062306a36Sopenharmony_ci	.clkr = {
105162306a36Sopenharmony_ci		.enable_reg = 0x6d010,
105262306a36Sopenharmony_ci		.enable_mask = BIT(1),
105362306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
105462306a36Sopenharmony_ci			.name = "gcc_pcie_mstr_axi_clk",
105562306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
105662306a36Sopenharmony_ci		},
105762306a36Sopenharmony_ci	},
105862306a36Sopenharmony_ci};
105962306a36Sopenharmony_ci
106062306a36Sopenharmony_cistatic struct clk_branch gcc_pcie_pipe_clk = {
106162306a36Sopenharmony_ci	.halt_reg = 0x4303c,
106262306a36Sopenharmony_ci	/*
106362306a36Sopenharmony_ci	 * The clock controller does not handle the status bit for
106462306a36Sopenharmony_ci	 * the clocks with gdscs(powerdomains) in hw controlled mode
106562306a36Sopenharmony_ci	 * and hence avoid checking for the status bit of those clocks
106662306a36Sopenharmony_ci	 * by setting the BRANCH_HALT_DELAY flag
106762306a36Sopenharmony_ci	 */
106862306a36Sopenharmony_ci	.halt_check = BRANCH_HALT_DELAY,
106962306a36Sopenharmony_ci	.hwcg_reg = 0x4303c,
107062306a36Sopenharmony_ci	.hwcg_bit = 1,
107162306a36Sopenharmony_ci	.clkr = {
107262306a36Sopenharmony_ci		.enable_reg = 0x6d010,
107362306a36Sopenharmony_ci		.enable_mask = BIT(4),
107462306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
107562306a36Sopenharmony_ci			.name = "gcc_pcie_pipe_clk",
107662306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw*[]) {
107762306a36Sopenharmony_ci				&gcc_pcie_pipe_clk_src.clkr.hw,
107862306a36Sopenharmony_ci			},
107962306a36Sopenharmony_ci			.num_parents = 1,
108062306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
108162306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
108262306a36Sopenharmony_ci		},
108362306a36Sopenharmony_ci	},
108462306a36Sopenharmony_ci};
108562306a36Sopenharmony_ci
108662306a36Sopenharmony_cistatic struct clk_branch gcc_pcie_rchng_phy_clk = {
108762306a36Sopenharmony_ci	.halt_reg = 0x43030,
108862306a36Sopenharmony_ci	.halt_check = BRANCH_HALT_VOTED,
108962306a36Sopenharmony_ci	.hwcg_reg = 0x43030,
109062306a36Sopenharmony_ci	.hwcg_bit = 1,
109162306a36Sopenharmony_ci	.clkr = {
109262306a36Sopenharmony_ci		.enable_reg = 0x6d010,
109362306a36Sopenharmony_ci		.enable_mask = BIT(7),
109462306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
109562306a36Sopenharmony_ci			.name = "gcc_pcie_rchng_phy_clk",
109662306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw*[]) {
109762306a36Sopenharmony_ci				&gcc_pcie_rchng_phy_clk_src.clkr.hw,
109862306a36Sopenharmony_ci			},
109962306a36Sopenharmony_ci			.num_parents = 1,
110062306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
110162306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
110262306a36Sopenharmony_ci		},
110362306a36Sopenharmony_ci	},
110462306a36Sopenharmony_ci};
110562306a36Sopenharmony_ci
110662306a36Sopenharmony_cistatic struct clk_branch gcc_pcie_sleep_clk = {
110762306a36Sopenharmony_ci	.halt_reg = 0x43038,
110862306a36Sopenharmony_ci	.halt_check = BRANCH_HALT_VOTED,
110962306a36Sopenharmony_ci	.hwcg_reg = 0x43038,
111062306a36Sopenharmony_ci	.hwcg_bit = 1,
111162306a36Sopenharmony_ci	.clkr = {
111262306a36Sopenharmony_ci		.enable_reg = 0x6d010,
111362306a36Sopenharmony_ci		.enable_mask = BIT(6),
111462306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
111562306a36Sopenharmony_ci			.name = "gcc_pcie_sleep_clk",
111662306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw*[]) {
111762306a36Sopenharmony_ci				&gcc_pcie_aux_phy_clk_src.clkr.hw,
111862306a36Sopenharmony_ci			},
111962306a36Sopenharmony_ci			.num_parents = 1,
112062306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
112162306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
112262306a36Sopenharmony_ci		},
112362306a36Sopenharmony_ci	},
112462306a36Sopenharmony_ci};
112562306a36Sopenharmony_ci
112662306a36Sopenharmony_cistatic struct clk_branch gcc_pcie_slv_axi_clk = {
112762306a36Sopenharmony_ci	.halt_reg = 0x4301c,
112862306a36Sopenharmony_ci	.halt_check = BRANCH_HALT_VOTED,
112962306a36Sopenharmony_ci	.hwcg_reg = 0x4301c,
113062306a36Sopenharmony_ci	.hwcg_bit = 1,
113162306a36Sopenharmony_ci	.clkr = {
113262306a36Sopenharmony_ci		.enable_reg = 0x6d010,
113362306a36Sopenharmony_ci		.enable_mask = BIT(0),
113462306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
113562306a36Sopenharmony_ci			.name = "gcc_pcie_slv_axi_clk",
113662306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
113762306a36Sopenharmony_ci		},
113862306a36Sopenharmony_ci	},
113962306a36Sopenharmony_ci};
114062306a36Sopenharmony_ci
114162306a36Sopenharmony_cistatic struct clk_branch gcc_pcie_slv_q2a_axi_clk = {
114262306a36Sopenharmony_ci	.halt_reg = 0x43018,
114362306a36Sopenharmony_ci	.halt_check = BRANCH_HALT_VOTED,
114462306a36Sopenharmony_ci	.hwcg_reg = 0x43018,
114562306a36Sopenharmony_ci	.hwcg_bit = 1,
114662306a36Sopenharmony_ci	.clkr = {
114762306a36Sopenharmony_ci		.enable_reg = 0x6d010,
114862306a36Sopenharmony_ci		.enable_mask = BIT(5),
114962306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
115062306a36Sopenharmony_ci			.name = "gcc_pcie_slv_q2a_axi_clk",
115162306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
115262306a36Sopenharmony_ci		},
115362306a36Sopenharmony_ci	},
115462306a36Sopenharmony_ci};
115562306a36Sopenharmony_ci
115662306a36Sopenharmony_cistatic struct clk_branch gcc_pdm2_clk = {
115762306a36Sopenharmony_ci	.halt_reg = 0x2400c,
115862306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
115962306a36Sopenharmony_ci	.clkr = {
116062306a36Sopenharmony_ci		.enable_reg = 0x2400c,
116162306a36Sopenharmony_ci		.enable_mask = BIT(0),
116262306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
116362306a36Sopenharmony_ci			.name = "gcc_pdm2_clk",
116462306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw*[]) {
116562306a36Sopenharmony_ci				&gcc_pdm2_clk_src.clkr.hw,
116662306a36Sopenharmony_ci			},
116762306a36Sopenharmony_ci			.num_parents = 1,
116862306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
116962306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
117062306a36Sopenharmony_ci		},
117162306a36Sopenharmony_ci	},
117262306a36Sopenharmony_ci};
117362306a36Sopenharmony_ci
117462306a36Sopenharmony_cistatic struct clk_branch gcc_pdm_ahb_clk = {
117562306a36Sopenharmony_ci	.halt_reg = 0x24004,
117662306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
117762306a36Sopenharmony_ci	.hwcg_reg = 0x24004,
117862306a36Sopenharmony_ci	.hwcg_bit = 1,
117962306a36Sopenharmony_ci	.clkr = {
118062306a36Sopenharmony_ci		.enable_reg = 0x24004,
118162306a36Sopenharmony_ci		.enable_mask = BIT(0),
118262306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
118362306a36Sopenharmony_ci			.name = "gcc_pdm_ahb_clk",
118462306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
118562306a36Sopenharmony_ci		},
118662306a36Sopenharmony_ci	},
118762306a36Sopenharmony_ci};
118862306a36Sopenharmony_ci
118962306a36Sopenharmony_cistatic struct clk_branch gcc_pdm_xo4_clk = {
119062306a36Sopenharmony_ci	.halt_reg = 0x24008,
119162306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
119262306a36Sopenharmony_ci	.clkr = {
119362306a36Sopenharmony_ci		.enable_reg = 0x24008,
119462306a36Sopenharmony_ci		.enable_mask = BIT(0),
119562306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
119662306a36Sopenharmony_ci			.name = "gcc_pdm_xo4_clk",
119762306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
119862306a36Sopenharmony_ci		},
119962306a36Sopenharmony_ci	},
120062306a36Sopenharmony_ci};
120162306a36Sopenharmony_ci
120262306a36Sopenharmony_cistatic struct clk_branch gcc_rx1_usb2_clkref_en = {
120362306a36Sopenharmony_ci	.halt_reg = 0x88008,
120462306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
120562306a36Sopenharmony_ci	.clkr = {
120662306a36Sopenharmony_ci		.enable_reg = 0x88008,
120762306a36Sopenharmony_ci		.enable_mask = BIT(0),
120862306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
120962306a36Sopenharmony_ci			.name = "gcc_rx1_usb2_clkref_en",
121062306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
121162306a36Sopenharmony_ci		},
121262306a36Sopenharmony_ci	},
121362306a36Sopenharmony_ci};
121462306a36Sopenharmony_ci
121562306a36Sopenharmony_cistatic struct clk_branch gcc_sdcc1_ahb_clk = {
121662306a36Sopenharmony_ci	.halt_reg = 0x1a00c,
121762306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
121862306a36Sopenharmony_ci	.clkr = {
121962306a36Sopenharmony_ci		.enable_reg = 0x1a00c,
122062306a36Sopenharmony_ci		.enable_mask = BIT(0),
122162306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
122262306a36Sopenharmony_ci			.name = "gcc_sdcc1_ahb_clk",
122362306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
122462306a36Sopenharmony_ci		},
122562306a36Sopenharmony_ci	},
122662306a36Sopenharmony_ci};
122762306a36Sopenharmony_ci
122862306a36Sopenharmony_cistatic struct clk_branch gcc_sdcc1_apps_clk = {
122962306a36Sopenharmony_ci	.halt_reg = 0x1a004,
123062306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
123162306a36Sopenharmony_ci	.clkr = {
123262306a36Sopenharmony_ci		.enable_reg = 0x1a004,
123362306a36Sopenharmony_ci		.enable_mask = BIT(0),
123462306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
123562306a36Sopenharmony_ci			.name = "gcc_sdcc1_apps_clk",
123662306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw*[]) {
123762306a36Sopenharmony_ci				&gcc_sdcc1_apps_clk_src.clkr.hw,
123862306a36Sopenharmony_ci			},
123962306a36Sopenharmony_ci			.num_parents = 1,
124062306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
124162306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
124262306a36Sopenharmony_ci		},
124362306a36Sopenharmony_ci	},
124462306a36Sopenharmony_ci};
124562306a36Sopenharmony_ci
124662306a36Sopenharmony_cistatic struct clk_branch gcc_usb30_master_clk = {
124762306a36Sopenharmony_ci	.halt_reg = 0x17018,
124862306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
124962306a36Sopenharmony_ci	.clkr = {
125062306a36Sopenharmony_ci		.enable_reg = 0x17018,
125162306a36Sopenharmony_ci		.enable_mask = BIT(0),
125262306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
125362306a36Sopenharmony_ci			.name = "gcc_usb30_master_clk",
125462306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw*[]) {
125562306a36Sopenharmony_ci				&gcc_usb30_master_clk_src.clkr.hw,
125662306a36Sopenharmony_ci			},
125762306a36Sopenharmony_ci			.num_parents = 1,
125862306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
125962306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
126062306a36Sopenharmony_ci		},
126162306a36Sopenharmony_ci	},
126262306a36Sopenharmony_ci};
126362306a36Sopenharmony_ci
126462306a36Sopenharmony_cistatic struct clk_branch gcc_usb30_mock_utmi_clk = {
126562306a36Sopenharmony_ci	.halt_reg = 0x1702c,
126662306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
126762306a36Sopenharmony_ci	.clkr = {
126862306a36Sopenharmony_ci		.enable_reg = 0x1702c,
126962306a36Sopenharmony_ci		.enable_mask = BIT(0),
127062306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
127162306a36Sopenharmony_ci			.name = "gcc_usb30_mock_utmi_clk",
127262306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw*[]) {
127362306a36Sopenharmony_ci				&gcc_usb30_mock_utmi_postdiv_clk_src.clkr.hw,
127462306a36Sopenharmony_ci			},
127562306a36Sopenharmony_ci			.num_parents = 1,
127662306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
127762306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
127862306a36Sopenharmony_ci		},
127962306a36Sopenharmony_ci	},
128062306a36Sopenharmony_ci};
128162306a36Sopenharmony_ci
128262306a36Sopenharmony_cistatic struct clk_branch gcc_usb30_mstr_axi_clk = {
128362306a36Sopenharmony_ci	.halt_reg = 0x17020,
128462306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
128562306a36Sopenharmony_ci	.clkr = {
128662306a36Sopenharmony_ci		.enable_reg = 0x17020,
128762306a36Sopenharmony_ci		.enable_mask = BIT(0),
128862306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
128962306a36Sopenharmony_ci			.name = "gcc_usb30_mstr_axi_clk",
129062306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
129162306a36Sopenharmony_ci		},
129262306a36Sopenharmony_ci	},
129362306a36Sopenharmony_ci};
129462306a36Sopenharmony_ci
129562306a36Sopenharmony_cistatic struct clk_branch gcc_usb30_sleep_clk = {
129662306a36Sopenharmony_ci	.halt_reg = 0x17028,
129762306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
129862306a36Sopenharmony_ci	.clkr = {
129962306a36Sopenharmony_ci		.enable_reg = 0x17028,
130062306a36Sopenharmony_ci		.enable_mask = BIT(0),
130162306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
130262306a36Sopenharmony_ci			.name = "gcc_usb30_sleep_clk",
130362306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
130462306a36Sopenharmony_ci		},
130562306a36Sopenharmony_ci	},
130662306a36Sopenharmony_ci};
130762306a36Sopenharmony_ci
130862306a36Sopenharmony_cistatic struct clk_branch gcc_usb30_slv_ahb_clk = {
130962306a36Sopenharmony_ci	.halt_reg = 0x17024,
131062306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
131162306a36Sopenharmony_ci	.clkr = {
131262306a36Sopenharmony_ci		.enable_reg = 0x17024,
131362306a36Sopenharmony_ci		.enable_mask = BIT(0),
131462306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
131562306a36Sopenharmony_ci			.name = "gcc_usb30_slv_ahb_clk",
131662306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
131762306a36Sopenharmony_ci		},
131862306a36Sopenharmony_ci	},
131962306a36Sopenharmony_ci};
132062306a36Sopenharmony_ci
132162306a36Sopenharmony_cistatic struct clk_branch gcc_usb3_phy_aux_clk = {
132262306a36Sopenharmony_ci	.halt_reg = 0x17064,
132362306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
132462306a36Sopenharmony_ci	.clkr = {
132562306a36Sopenharmony_ci		.enable_reg = 0x17064,
132662306a36Sopenharmony_ci		.enable_mask = BIT(0),
132762306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
132862306a36Sopenharmony_ci			.name = "gcc_usb3_phy_aux_clk",
132962306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw*[]) {
133062306a36Sopenharmony_ci				&gcc_usb3_phy_aux_clk_src.clkr.hw,
133162306a36Sopenharmony_ci			},
133262306a36Sopenharmony_ci			.num_parents = 1,
133362306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
133462306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
133562306a36Sopenharmony_ci		},
133662306a36Sopenharmony_ci	},
133762306a36Sopenharmony_ci};
133862306a36Sopenharmony_ci
133962306a36Sopenharmony_cistatic struct gdsc usb30_gdsc = {
134062306a36Sopenharmony_ci	.gdscr = 0x17004,
134162306a36Sopenharmony_ci	.pd = {
134262306a36Sopenharmony_ci		.name = "usb30_gdsc",
134362306a36Sopenharmony_ci	},
134462306a36Sopenharmony_ci	.pwrsts = PWRSTS_OFF_ON,
134562306a36Sopenharmony_ci};
134662306a36Sopenharmony_ci
134762306a36Sopenharmony_cistatic struct gdsc pcie_gdsc = {
134862306a36Sopenharmony_ci	.gdscr = 0x43004,
134962306a36Sopenharmony_ci	.pd = {
135062306a36Sopenharmony_ci		.name = "pcie_gdsc",
135162306a36Sopenharmony_ci	},
135262306a36Sopenharmony_ci	.pwrsts = PWRSTS_OFF_ON,
135362306a36Sopenharmony_ci};
135462306a36Sopenharmony_ci
135562306a36Sopenharmony_cistatic struct clk_branch gcc_usb3_phy_pipe_clk = {
135662306a36Sopenharmony_ci	.halt_reg = 0x17068,
135762306a36Sopenharmony_ci	/*
135862306a36Sopenharmony_ci	 * The clock controller does not handle the status bit for
135962306a36Sopenharmony_ci	 * the clocks with gdscs(powerdomains) in hw controlled mode
136062306a36Sopenharmony_ci	 * and hence avoid checking for the status bit of those clocks
136162306a36Sopenharmony_ci	 * by setting the BRANCH_HALT_DELAY flag
136262306a36Sopenharmony_ci	 */
136362306a36Sopenharmony_ci	.halt_check = BRANCH_HALT_DELAY,
136462306a36Sopenharmony_ci	.hwcg_reg = 0x17068,
136562306a36Sopenharmony_ci	.hwcg_bit = 1,
136662306a36Sopenharmony_ci	.clkr = {
136762306a36Sopenharmony_ci		.enable_reg = 0x17068,
136862306a36Sopenharmony_ci		.enable_mask = BIT(0),
136962306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
137062306a36Sopenharmony_ci			.name = "gcc_usb3_phy_pipe_clk",
137162306a36Sopenharmony_ci			.parent_hws = (const struct clk_hw*[]) {
137262306a36Sopenharmony_ci				&gcc_usb3_phy_pipe_clk_src.clkr.hw,
137362306a36Sopenharmony_ci			},
137462306a36Sopenharmony_ci			.num_parents = 1,
137562306a36Sopenharmony_ci			.flags = CLK_SET_RATE_PARENT,
137662306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
137762306a36Sopenharmony_ci		},
137862306a36Sopenharmony_ci	},
137962306a36Sopenharmony_ci};
138062306a36Sopenharmony_ci
138162306a36Sopenharmony_cistatic struct clk_branch gcc_usb3_prim_clkref_en = {
138262306a36Sopenharmony_ci	.halt_reg = 0x88000,
138362306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
138462306a36Sopenharmony_ci	.clkr = {
138562306a36Sopenharmony_ci		.enable_reg = 0x88000,
138662306a36Sopenharmony_ci		.enable_mask = BIT(0),
138762306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
138862306a36Sopenharmony_ci			.name = "gcc_usb3_prim_clkref_en",
138962306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
139062306a36Sopenharmony_ci		},
139162306a36Sopenharmony_ci	},
139262306a36Sopenharmony_ci};
139362306a36Sopenharmony_ci
139462306a36Sopenharmony_cistatic struct clk_branch gcc_usb_phy_cfg_ahb2phy_clk = {
139562306a36Sopenharmony_ci	.halt_reg = 0x19008,
139662306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
139762306a36Sopenharmony_ci	.hwcg_reg = 0x19008,
139862306a36Sopenharmony_ci	.hwcg_bit = 1,
139962306a36Sopenharmony_ci	.clkr = {
140062306a36Sopenharmony_ci		.enable_reg = 0x19008,
140162306a36Sopenharmony_ci		.enable_mask = BIT(0),
140262306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
140362306a36Sopenharmony_ci			.name = "gcc_usb_phy_cfg_ahb2phy_clk",
140462306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
140562306a36Sopenharmony_ci		},
140662306a36Sopenharmony_ci	},
140762306a36Sopenharmony_ci};
140862306a36Sopenharmony_ci
140962306a36Sopenharmony_cistatic struct clk_branch gcc_xo_div4_clk = {
141062306a36Sopenharmony_ci	.halt_reg = 0x2e010,
141162306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
141262306a36Sopenharmony_ci	.clkr = {
141362306a36Sopenharmony_ci		.enable_reg = 0x2e010,
141462306a36Sopenharmony_ci		.enable_mask = BIT(0),
141562306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
141662306a36Sopenharmony_ci			.name = "gcc_xo_div4_clk",
141762306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
141862306a36Sopenharmony_ci		},
141962306a36Sopenharmony_ci	},
142062306a36Sopenharmony_ci};
142162306a36Sopenharmony_ci
142262306a36Sopenharmony_cistatic struct clk_branch gcc_xo_pcie_link_clk = {
142362306a36Sopenharmony_ci	.halt_reg = 0x2e008,
142462306a36Sopenharmony_ci	.halt_check = BRANCH_HALT,
142562306a36Sopenharmony_ci	.hwcg_reg = 0x2e008,
142662306a36Sopenharmony_ci	.hwcg_bit = 1,
142762306a36Sopenharmony_ci	.clkr = {
142862306a36Sopenharmony_ci		.enable_reg = 0x2e008,
142962306a36Sopenharmony_ci		.enable_mask = BIT(0),
143062306a36Sopenharmony_ci		.hw.init = &(struct clk_init_data){
143162306a36Sopenharmony_ci			.name = "gcc_xo_pcie_link_clk",
143262306a36Sopenharmony_ci			.ops = &clk_branch2_ops,
143362306a36Sopenharmony_ci		},
143462306a36Sopenharmony_ci	},
143562306a36Sopenharmony_ci};
143662306a36Sopenharmony_ci
143762306a36Sopenharmony_cistatic struct clk_regmap *gcc_sdx65_clocks[] = {
143862306a36Sopenharmony_ci	[GCC_AHB_PCIE_LINK_CLK] = &gcc_ahb_pcie_link_clk.clkr,
143962306a36Sopenharmony_ci	[GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr,
144062306a36Sopenharmony_ci	[GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr,
144162306a36Sopenharmony_ci	[GCC_BLSP1_QUP1_I2C_APPS_CLK_SRC] = &gcc_blsp1_qup1_i2c_apps_clk_src.clkr,
144262306a36Sopenharmony_ci	[GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr,
144362306a36Sopenharmony_ci	[GCC_BLSP1_QUP1_SPI_APPS_CLK_SRC] = &gcc_blsp1_qup1_spi_apps_clk_src.clkr,
144462306a36Sopenharmony_ci	[GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr,
144562306a36Sopenharmony_ci	[GCC_BLSP1_QUP2_I2C_APPS_CLK_SRC] = &gcc_blsp1_qup2_i2c_apps_clk_src.clkr,
144662306a36Sopenharmony_ci	[GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr,
144762306a36Sopenharmony_ci	[GCC_BLSP1_QUP2_SPI_APPS_CLK_SRC] = &gcc_blsp1_qup2_spi_apps_clk_src.clkr,
144862306a36Sopenharmony_ci	[GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr,
144962306a36Sopenharmony_ci	[GCC_BLSP1_QUP3_I2C_APPS_CLK_SRC] = &gcc_blsp1_qup3_i2c_apps_clk_src.clkr,
145062306a36Sopenharmony_ci	[GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr,
145162306a36Sopenharmony_ci	[GCC_BLSP1_QUP3_SPI_APPS_CLK_SRC] = &gcc_blsp1_qup3_spi_apps_clk_src.clkr,
145262306a36Sopenharmony_ci	[GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr,
145362306a36Sopenharmony_ci	[GCC_BLSP1_QUP4_I2C_APPS_CLK_SRC] = &gcc_blsp1_qup4_i2c_apps_clk_src.clkr,
145462306a36Sopenharmony_ci	[GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr,
145562306a36Sopenharmony_ci	[GCC_BLSP1_QUP4_SPI_APPS_CLK_SRC] = &gcc_blsp1_qup4_spi_apps_clk_src.clkr,
145662306a36Sopenharmony_ci	[GCC_BLSP1_SLEEP_CLK] = &gcc_blsp1_sleep_clk.clkr,
145762306a36Sopenharmony_ci	[GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr,
145862306a36Sopenharmony_ci	[GCC_BLSP1_UART1_APPS_CLK_SRC] = &gcc_blsp1_uart1_apps_clk_src.clkr,
145962306a36Sopenharmony_ci	[GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr,
146062306a36Sopenharmony_ci	[GCC_BLSP1_UART2_APPS_CLK_SRC] = &gcc_blsp1_uart2_apps_clk_src.clkr,
146162306a36Sopenharmony_ci	[GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr,
146262306a36Sopenharmony_ci	[GCC_BLSP1_UART3_APPS_CLK_SRC] = &gcc_blsp1_uart3_apps_clk_src.clkr,
146362306a36Sopenharmony_ci	[GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr,
146462306a36Sopenharmony_ci	[GCC_BLSP1_UART4_APPS_CLK_SRC] = &gcc_blsp1_uart4_apps_clk_src.clkr,
146562306a36Sopenharmony_ci	[GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
146662306a36Sopenharmony_ci	[GCC_CPUSS_AHB_CLK_SRC] = &gcc_cpuss_ahb_clk_src.clkr,
146762306a36Sopenharmony_ci	[GCC_CPUSS_AHB_POSTDIV_CLK_SRC] = &gcc_cpuss_ahb_postdiv_clk_src.clkr,
146862306a36Sopenharmony_ci	[GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
146962306a36Sopenharmony_ci	[GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr,
147062306a36Sopenharmony_ci	[GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
147162306a36Sopenharmony_ci	[GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr,
147262306a36Sopenharmony_ci	[GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
147362306a36Sopenharmony_ci	[GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr,
147462306a36Sopenharmony_ci	[GCC_PCIE_0_CLKREF_EN] = &gcc_pcie_0_clkref_en.clkr,
147562306a36Sopenharmony_ci	[GCC_PCIE_AUX_CLK] = &gcc_pcie_aux_clk.clkr,
147662306a36Sopenharmony_ci	[GCC_PCIE_AUX_CLK_SRC] = &gcc_pcie_aux_clk_src.clkr,
147762306a36Sopenharmony_ci	[GCC_PCIE_AUX_PHY_CLK_SRC] = &gcc_pcie_aux_phy_clk_src.clkr,
147862306a36Sopenharmony_ci	[GCC_PCIE_CFG_AHB_CLK] = &gcc_pcie_cfg_ahb_clk.clkr,
147962306a36Sopenharmony_ci	[GCC_PCIE_MSTR_AXI_CLK] = &gcc_pcie_mstr_axi_clk.clkr,
148062306a36Sopenharmony_ci	[GCC_PCIE_PIPE_CLK] = &gcc_pcie_pipe_clk.clkr,
148162306a36Sopenharmony_ci	[GCC_PCIE_PIPE_CLK_SRC] = &gcc_pcie_pipe_clk_src.clkr,
148262306a36Sopenharmony_ci	[GCC_PCIE_RCHNG_PHY_CLK] = &gcc_pcie_rchng_phy_clk.clkr,
148362306a36Sopenharmony_ci	[GCC_PCIE_RCHNG_PHY_CLK_SRC] = &gcc_pcie_rchng_phy_clk_src.clkr,
148462306a36Sopenharmony_ci	[GCC_PCIE_SLEEP_CLK] = &gcc_pcie_sleep_clk.clkr,
148562306a36Sopenharmony_ci	[GCC_PCIE_SLV_AXI_CLK] = &gcc_pcie_slv_axi_clk.clkr,
148662306a36Sopenharmony_ci	[GCC_PCIE_SLV_Q2A_AXI_CLK] = &gcc_pcie_slv_q2a_axi_clk.clkr,
148762306a36Sopenharmony_ci	[GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
148862306a36Sopenharmony_ci	[GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr,
148962306a36Sopenharmony_ci	[GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
149062306a36Sopenharmony_ci	[GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr,
149162306a36Sopenharmony_ci	[GCC_RX1_USB2_CLKREF_EN] = &gcc_rx1_usb2_clkref_en.clkr,
149262306a36Sopenharmony_ci	[GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
149362306a36Sopenharmony_ci	[GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
149462306a36Sopenharmony_ci	[GCC_SDCC1_APPS_CLK_SRC] = &gcc_sdcc1_apps_clk_src.clkr,
149562306a36Sopenharmony_ci	[GCC_USB30_MASTER_CLK] = &gcc_usb30_master_clk.clkr,
149662306a36Sopenharmony_ci	[GCC_USB30_MASTER_CLK_SRC] = &gcc_usb30_master_clk_src.clkr,
149762306a36Sopenharmony_ci	[GCC_USB30_MOCK_UTMI_CLK] = &gcc_usb30_mock_utmi_clk.clkr,
149862306a36Sopenharmony_ci	[GCC_USB30_MOCK_UTMI_CLK_SRC] = &gcc_usb30_mock_utmi_clk_src.clkr,
149962306a36Sopenharmony_ci	[GCC_USB30_MOCK_UTMI_POSTDIV_CLK_SRC] =	&gcc_usb30_mock_utmi_postdiv_clk_src.clkr,
150062306a36Sopenharmony_ci	[GCC_USB30_MSTR_AXI_CLK] = &gcc_usb30_mstr_axi_clk.clkr,
150162306a36Sopenharmony_ci	[GCC_USB30_SLEEP_CLK] = &gcc_usb30_sleep_clk.clkr,
150262306a36Sopenharmony_ci	[GCC_USB30_SLV_AHB_CLK] = &gcc_usb30_slv_ahb_clk.clkr,
150362306a36Sopenharmony_ci	[GCC_USB3_PHY_AUX_CLK] = &gcc_usb3_phy_aux_clk.clkr,
150462306a36Sopenharmony_ci	[GCC_USB3_PHY_AUX_CLK_SRC] = &gcc_usb3_phy_aux_clk_src.clkr,
150562306a36Sopenharmony_ci	[GCC_USB3_PHY_PIPE_CLK] = &gcc_usb3_phy_pipe_clk.clkr,
150662306a36Sopenharmony_ci	[GCC_USB3_PHY_PIPE_CLK_SRC] = &gcc_usb3_phy_pipe_clk_src.clkr,
150762306a36Sopenharmony_ci	[GCC_USB3_PRIM_CLKREF_EN] = &gcc_usb3_prim_clkref_en.clkr,
150862306a36Sopenharmony_ci	[GCC_USB_PHY_CFG_AHB2PHY_CLK] = &gcc_usb_phy_cfg_ahb2phy_clk.clkr,
150962306a36Sopenharmony_ci	[GCC_XO_DIV4_CLK] = &gcc_xo_div4_clk.clkr,
151062306a36Sopenharmony_ci	[GCC_XO_PCIE_LINK_CLK] = &gcc_xo_pcie_link_clk.clkr,
151162306a36Sopenharmony_ci	[GPLL0] = &gpll0.clkr,
151262306a36Sopenharmony_ci	[GPLL0_OUT_EVEN] = &gpll0_out_even.clkr,
151362306a36Sopenharmony_ci};
151462306a36Sopenharmony_ci
151562306a36Sopenharmony_cistatic const struct qcom_reset_map gcc_sdx65_resets[] = {
151662306a36Sopenharmony_ci	[GCC_BLSP1_QUP1_BCR] = { 0x1c000 },
151762306a36Sopenharmony_ci	[GCC_BLSP1_QUP2_BCR] = { 0x1e000 },
151862306a36Sopenharmony_ci	[GCC_BLSP1_QUP3_BCR] = { 0x20000 },
151962306a36Sopenharmony_ci	[GCC_BLSP1_QUP4_BCR] = { 0x22000 },
152062306a36Sopenharmony_ci	[GCC_BLSP1_UART1_BCR] = { 0x1d000 },
152162306a36Sopenharmony_ci	[GCC_BLSP1_UART2_BCR] = { 0x1f000 },
152262306a36Sopenharmony_ci	[GCC_BLSP1_UART3_BCR] = { 0x21000 },
152362306a36Sopenharmony_ci	[GCC_BLSP1_UART4_BCR] = { 0x23000 },
152462306a36Sopenharmony_ci	[GCC_PCIE_BCR] = { 0x43000 },
152562306a36Sopenharmony_ci	[GCC_PCIE_LINK_DOWN_BCR] = { 0x77000 },
152662306a36Sopenharmony_ci	[GCC_PCIE_NOCSR_COM_PHY_BCR] = { 0x78008 },
152762306a36Sopenharmony_ci	[GCC_PCIE_PHY_BCR] = { 0x44000 },
152862306a36Sopenharmony_ci	[GCC_PCIE_PHY_CFG_AHB_BCR] = { 0x78000 },
152962306a36Sopenharmony_ci	[GCC_PCIE_PHY_COM_BCR] = { 0x78004 },
153062306a36Sopenharmony_ci	[GCC_PCIE_PHY_NOCSR_COM_PHY_BCR] = { 0x7800c },
153162306a36Sopenharmony_ci	[GCC_PDM_BCR] = { 0x24000 },
153262306a36Sopenharmony_ci	[GCC_QUSB2PHY_BCR] = { 0x19000 },
153362306a36Sopenharmony_ci	[GCC_SDCC1_BCR] = { 0x1a000 },
153462306a36Sopenharmony_ci	[GCC_TCSR_PCIE_BCR] = { 0x57000 },
153562306a36Sopenharmony_ci	[GCC_USB30_BCR] = { 0x17000 },
153662306a36Sopenharmony_ci	[GCC_USB3_PHY_BCR] = { 0x18000 },
153762306a36Sopenharmony_ci	[GCC_USB3PHY_PHY_BCR] = { 0x18004 },
153862306a36Sopenharmony_ci	[GCC_USB_PHY_CFG_AHB2PHY_BCR] = { 0x19004 },
153962306a36Sopenharmony_ci};
154062306a36Sopenharmony_ci
154162306a36Sopenharmony_cistatic struct gdsc *gcc_sdx65_gdscs[] = {
154262306a36Sopenharmony_ci	[USB30_GDSC] = &usb30_gdsc,
154362306a36Sopenharmony_ci	[PCIE_GDSC] = &pcie_gdsc,
154462306a36Sopenharmony_ci};
154562306a36Sopenharmony_ci
154662306a36Sopenharmony_cistatic const struct regmap_config gcc_sdx65_regmap_config = {
154762306a36Sopenharmony_ci	.reg_bits = 32,
154862306a36Sopenharmony_ci	.reg_stride = 4,
154962306a36Sopenharmony_ci	.val_bits = 32,
155062306a36Sopenharmony_ci	.max_register = 0x1f101c,
155162306a36Sopenharmony_ci	.fast_io = true,
155262306a36Sopenharmony_ci};
155362306a36Sopenharmony_ci
155462306a36Sopenharmony_cistatic const struct qcom_cc_desc gcc_sdx65_desc = {
155562306a36Sopenharmony_ci	.config = &gcc_sdx65_regmap_config,
155662306a36Sopenharmony_ci	.clks = gcc_sdx65_clocks,
155762306a36Sopenharmony_ci	.num_clks = ARRAY_SIZE(gcc_sdx65_clocks),
155862306a36Sopenharmony_ci	.resets = gcc_sdx65_resets,
155962306a36Sopenharmony_ci	.num_resets = ARRAY_SIZE(gcc_sdx65_resets),
156062306a36Sopenharmony_ci	.gdscs = gcc_sdx65_gdscs,
156162306a36Sopenharmony_ci	.num_gdscs = ARRAY_SIZE(gcc_sdx65_gdscs),
156262306a36Sopenharmony_ci};
156362306a36Sopenharmony_ci
156462306a36Sopenharmony_cistatic const struct of_device_id gcc_sdx65_match_table[] = {
156562306a36Sopenharmony_ci	{ .compatible = "qcom,gcc-sdx65" },
156662306a36Sopenharmony_ci	{ }
156762306a36Sopenharmony_ci};
156862306a36Sopenharmony_ciMODULE_DEVICE_TABLE(of, gcc_sdx65_match_table);
156962306a36Sopenharmony_ci
157062306a36Sopenharmony_cistatic int gcc_sdx65_probe(struct platform_device *pdev)
157162306a36Sopenharmony_ci{
157262306a36Sopenharmony_ci	struct regmap *regmap;
157362306a36Sopenharmony_ci
157462306a36Sopenharmony_ci	regmap = qcom_cc_map(pdev, &gcc_sdx65_desc);
157562306a36Sopenharmony_ci	if (IS_ERR(regmap))
157662306a36Sopenharmony_ci		return PTR_ERR(regmap);
157762306a36Sopenharmony_ci	/*
157862306a36Sopenharmony_ci	 * Keep the clocks always-ON as they are critical to the functioning
157962306a36Sopenharmony_ci	 * of the system:
158062306a36Sopenharmony_ci	 * GCC_SYS_NOC_CPUSS_AHB_CLK, GCC_CPUSS_AHB_CLK, GCC_CPUSS_GNOC_CLK
158162306a36Sopenharmony_ci	 */
158262306a36Sopenharmony_ci	regmap_update_bits(regmap, 0x6d008, BIT(0), BIT(0));
158362306a36Sopenharmony_ci	regmap_update_bits(regmap, 0x6d008, BIT(21), BIT(21));
158462306a36Sopenharmony_ci	regmap_update_bits(regmap, 0x6d008, BIT(22), BIT(22));
158562306a36Sopenharmony_ci
158662306a36Sopenharmony_ci	return qcom_cc_really_probe(pdev, &gcc_sdx65_desc, regmap);
158762306a36Sopenharmony_ci}
158862306a36Sopenharmony_ci
158962306a36Sopenharmony_cistatic struct platform_driver gcc_sdx65_driver = {
159062306a36Sopenharmony_ci	.probe = gcc_sdx65_probe,
159162306a36Sopenharmony_ci	.driver = {
159262306a36Sopenharmony_ci		.name = "gcc-sdx65",
159362306a36Sopenharmony_ci		.of_match_table = gcc_sdx65_match_table,
159462306a36Sopenharmony_ci	},
159562306a36Sopenharmony_ci};
159662306a36Sopenharmony_ci
159762306a36Sopenharmony_cistatic int __init gcc_sdx65_init(void)
159862306a36Sopenharmony_ci{
159962306a36Sopenharmony_ci	return platform_driver_register(&gcc_sdx65_driver);
160062306a36Sopenharmony_ci}
160162306a36Sopenharmony_cisubsys_initcall(gcc_sdx65_init);
160262306a36Sopenharmony_ci
160362306a36Sopenharmony_cistatic void __exit gcc_sdx65_exit(void)
160462306a36Sopenharmony_ci{
160562306a36Sopenharmony_ci	platform_driver_unregister(&gcc_sdx65_driver);
160662306a36Sopenharmony_ci}
160762306a36Sopenharmony_cimodule_exit(gcc_sdx65_exit);
160862306a36Sopenharmony_ci
160962306a36Sopenharmony_ciMODULE_DESCRIPTION("QTI GCC SDX65 Driver");
161062306a36Sopenharmony_ciMODULE_LICENSE("GPL v2");
1611