xref: /linux/drivers/clk/qcom/gcc-hawi.c (revision 8c04c1292dca29a57ea82c6a44348be49749fc22)
1*67121dadSVivek Aknurwar // SPDX-License-Identifier: GPL-2.0-only
2*67121dadSVivek Aknurwar /*
3*67121dadSVivek Aknurwar  * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
4*67121dadSVivek Aknurwar  */
5*67121dadSVivek Aknurwar 
6*67121dadSVivek Aknurwar #include <linux/clk-provider.h>
7*67121dadSVivek Aknurwar #include <linux/mod_devicetable.h>
8*67121dadSVivek Aknurwar #include <linux/module.h>
9*67121dadSVivek Aknurwar #include <linux/of.h>
10*67121dadSVivek Aknurwar #include <linux/platform_device.h>
11*67121dadSVivek Aknurwar #include <linux/regmap.h>
12*67121dadSVivek Aknurwar 
13*67121dadSVivek Aknurwar #include <dt-bindings/clock/qcom,hawi-gcc.h>
14*67121dadSVivek Aknurwar 
15*67121dadSVivek Aknurwar #include "clk-alpha-pll.h"
16*67121dadSVivek Aknurwar #include "clk-branch.h"
17*67121dadSVivek Aknurwar #include "clk-pll.h"
18*67121dadSVivek Aknurwar #include "clk-rcg.h"
19*67121dadSVivek Aknurwar #include "clk-regmap.h"
20*67121dadSVivek Aknurwar #include "clk-regmap-divider.h"
21*67121dadSVivek Aknurwar #include "clk-regmap-mux.h"
22*67121dadSVivek Aknurwar #include "clk-regmap-phy-mux.h"
23*67121dadSVivek Aknurwar #include "common.h"
24*67121dadSVivek Aknurwar #include "gdsc.h"
25*67121dadSVivek Aknurwar #include "reset.h"
26*67121dadSVivek Aknurwar 
27*67121dadSVivek Aknurwar enum {
28*67121dadSVivek Aknurwar 	DT_BI_TCXO,
29*67121dadSVivek Aknurwar 	DT_BI_TCXO_AO,
30*67121dadSVivek Aknurwar 	DT_SLEEP_CLK,
31*67121dadSVivek Aknurwar 	DT_PCIE_0_PIPE_CLK,
32*67121dadSVivek Aknurwar 	DT_PCIE_1_PIPE_CLK,
33*67121dadSVivek Aknurwar 	DT_UFS_PHY_RX_SYMBOL_0_CLK,
34*67121dadSVivek Aknurwar 	DT_UFS_PHY_RX_SYMBOL_1_CLK,
35*67121dadSVivek Aknurwar 	DT_UFS_PHY_TX_SYMBOL_0_CLK,
36*67121dadSVivek Aknurwar 	DT_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK,
37*67121dadSVivek Aknurwar };
38*67121dadSVivek Aknurwar 
39*67121dadSVivek Aknurwar enum {
40*67121dadSVivek Aknurwar 	P_BI_TCXO,
41*67121dadSVivek Aknurwar 	P_GCC_GPLL0_OUT_EVEN,
42*67121dadSVivek Aknurwar 	P_GCC_GPLL0_OUT_MAIN,
43*67121dadSVivek Aknurwar 	P_GCC_GPLL4_OUT_MAIN,
44*67121dadSVivek Aknurwar 	P_GCC_GPLL5_OUT_MAIN,
45*67121dadSVivek Aknurwar 	P_GCC_GPLL7_OUT_MAIN,
46*67121dadSVivek Aknurwar 	P_GCC_GPLL9_OUT_MAIN,
47*67121dadSVivek Aknurwar 	P_PCIE_0_PIPE_CLK,
48*67121dadSVivek Aknurwar 	P_PCIE_1_PIPE_CLK,
49*67121dadSVivek Aknurwar 	P_SLEEP_CLK,
50*67121dadSVivek Aknurwar 	P_UFS_PHY_RX_SYMBOL_0_CLK,
51*67121dadSVivek Aknurwar 	P_UFS_PHY_RX_SYMBOL_1_CLK,
52*67121dadSVivek Aknurwar 	P_UFS_PHY_TX_SYMBOL_0_CLK,
53*67121dadSVivek Aknurwar 	P_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK,
54*67121dadSVivek Aknurwar };
55*67121dadSVivek Aknurwar 
56*67121dadSVivek Aknurwar static struct clk_alpha_pll gcc_gpll0 = {
57*67121dadSVivek Aknurwar 	.offset = 0x0,
58*67121dadSVivek Aknurwar 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EHA_T],
59*67121dadSVivek Aknurwar 	.clkr = {
60*67121dadSVivek Aknurwar 		.enable_reg = 0x52028,
61*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
62*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
63*67121dadSVivek Aknurwar 			.name = "gcc_gpll0",
64*67121dadSVivek Aknurwar 			.parent_data = &(const struct clk_parent_data) {
65*67121dadSVivek Aknurwar 				.index = DT_BI_TCXO,
66*67121dadSVivek Aknurwar 			},
67*67121dadSVivek Aknurwar 			.num_parents = 1,
68*67121dadSVivek Aknurwar 			.ops = &clk_alpha_pll_fixed_taycan_eha_t_ops,
69*67121dadSVivek Aknurwar 		},
70*67121dadSVivek Aknurwar 	},
71*67121dadSVivek Aknurwar };
72*67121dadSVivek Aknurwar 
73*67121dadSVivek Aknurwar static const struct clk_div_table post_div_table_gcc_gpll0_out_even[] = {
74*67121dadSVivek Aknurwar 	{ 0x1, 2 },
75*67121dadSVivek Aknurwar 	{ }
76*67121dadSVivek Aknurwar };
77*67121dadSVivek Aknurwar 
78*67121dadSVivek Aknurwar static struct clk_alpha_pll_postdiv gcc_gpll0_out_even = {
79*67121dadSVivek Aknurwar 	.offset = 0x0,
80*67121dadSVivek Aknurwar 	.post_div_shift = 10,
81*67121dadSVivek Aknurwar 	.post_div_table = post_div_table_gcc_gpll0_out_even,
82*67121dadSVivek Aknurwar 	.num_post_div = ARRAY_SIZE(post_div_table_gcc_gpll0_out_even),
83*67121dadSVivek Aknurwar 	.width = 4,
84*67121dadSVivek Aknurwar 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EHA_T],
85*67121dadSVivek Aknurwar 	.clkr.hw.init = &(const struct clk_init_data) {
86*67121dadSVivek Aknurwar 		.name = "gcc_gpll0_out_even",
87*67121dadSVivek Aknurwar 		.parent_hws = (const struct clk_hw*[]) {
88*67121dadSVivek Aknurwar 			&gcc_gpll0.clkr.hw,
89*67121dadSVivek Aknurwar 		},
90*67121dadSVivek Aknurwar 		.num_parents = 1,
91*67121dadSVivek Aknurwar 		.ops = &clk_alpha_pll_postdiv_taycan_eha_t_ops,
92*67121dadSVivek Aknurwar 	},
93*67121dadSVivek Aknurwar };
94*67121dadSVivek Aknurwar 
95*67121dadSVivek Aknurwar static struct clk_alpha_pll gcc_gpll4 = {
96*67121dadSVivek Aknurwar 	.offset = 0x4000,
97*67121dadSVivek Aknurwar 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EHA_T],
98*67121dadSVivek Aknurwar 	.clkr = {
99*67121dadSVivek Aknurwar 		.enable_reg = 0x52028,
100*67121dadSVivek Aknurwar 		.enable_mask = BIT(4),
101*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
102*67121dadSVivek Aknurwar 			.name = "gcc_gpll4",
103*67121dadSVivek Aknurwar 			.parent_data = &(const struct clk_parent_data) {
104*67121dadSVivek Aknurwar 				.index = DT_BI_TCXO,
105*67121dadSVivek Aknurwar 			},
106*67121dadSVivek Aknurwar 			.num_parents = 1,
107*67121dadSVivek Aknurwar 			.ops = &clk_alpha_pll_fixed_taycan_eha_t_ops,
108*67121dadSVivek Aknurwar 		},
109*67121dadSVivek Aknurwar 	},
110*67121dadSVivek Aknurwar };
111*67121dadSVivek Aknurwar 
112*67121dadSVivek Aknurwar static struct clk_alpha_pll gcc_gpll5 = {
113*67121dadSVivek Aknurwar 	.offset = 0x5000,
114*67121dadSVivek Aknurwar 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EHA_T],
115*67121dadSVivek Aknurwar 	.clkr = {
116*67121dadSVivek Aknurwar 		.enable_reg = 0x52028,
117*67121dadSVivek Aknurwar 		.enable_mask = BIT(5),
118*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
119*67121dadSVivek Aknurwar 			.name = "gcc_gpll5",
120*67121dadSVivek Aknurwar 			.parent_data = &(const struct clk_parent_data) {
121*67121dadSVivek Aknurwar 				.index = DT_BI_TCXO,
122*67121dadSVivek Aknurwar 			},
123*67121dadSVivek Aknurwar 			.num_parents = 1,
124*67121dadSVivek Aknurwar 			.ops = &clk_alpha_pll_fixed_taycan_eha_t_ops,
125*67121dadSVivek Aknurwar 		},
126*67121dadSVivek Aknurwar 	},
127*67121dadSVivek Aknurwar };
128*67121dadSVivek Aknurwar 
129*67121dadSVivek Aknurwar static struct clk_alpha_pll gcc_gpll7 = {
130*67121dadSVivek Aknurwar 	.offset = 0x7000,
131*67121dadSVivek Aknurwar 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EHA_T],
132*67121dadSVivek Aknurwar 	.clkr = {
133*67121dadSVivek Aknurwar 		.enable_reg = 0x52028,
134*67121dadSVivek Aknurwar 		.enable_mask = BIT(7),
135*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
136*67121dadSVivek Aknurwar 			.name = "gcc_gpll7",
137*67121dadSVivek Aknurwar 			.parent_data = &(const struct clk_parent_data) {
138*67121dadSVivek Aknurwar 				.index = DT_BI_TCXO,
139*67121dadSVivek Aknurwar 			},
140*67121dadSVivek Aknurwar 			.num_parents = 1,
141*67121dadSVivek Aknurwar 			.ops = &clk_alpha_pll_fixed_taycan_eha_t_ops,
142*67121dadSVivek Aknurwar 		},
143*67121dadSVivek Aknurwar 	},
144*67121dadSVivek Aknurwar };
145*67121dadSVivek Aknurwar 
146*67121dadSVivek Aknurwar static struct clk_alpha_pll gcc_gpll9 = {
147*67121dadSVivek Aknurwar 	.offset = 0x9000,
148*67121dadSVivek Aknurwar 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EHA_T],
149*67121dadSVivek Aknurwar 	.clkr = {
150*67121dadSVivek Aknurwar 		.enable_reg = 0x52028,
151*67121dadSVivek Aknurwar 		.enable_mask = BIT(9),
152*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
153*67121dadSVivek Aknurwar 			.name = "gcc_gpll9",
154*67121dadSVivek Aknurwar 			.parent_data = &(const struct clk_parent_data) {
155*67121dadSVivek Aknurwar 				.index = DT_BI_TCXO,
156*67121dadSVivek Aknurwar 			},
157*67121dadSVivek Aknurwar 			.num_parents = 1,
158*67121dadSVivek Aknurwar 			.ops = &clk_alpha_pll_fixed_taycan_eha_t_ops,
159*67121dadSVivek Aknurwar 		},
160*67121dadSVivek Aknurwar 	},
161*67121dadSVivek Aknurwar };
162*67121dadSVivek Aknurwar 
163*67121dadSVivek Aknurwar static const struct parent_map gcc_parent_map_0[] = {
164*67121dadSVivek Aknurwar 	{ P_BI_TCXO, 0 },
165*67121dadSVivek Aknurwar 	{ P_GCC_GPLL0_OUT_MAIN, 1 },
166*67121dadSVivek Aknurwar 	{ P_GCC_GPLL0_OUT_EVEN, 6 },
167*67121dadSVivek Aknurwar };
168*67121dadSVivek Aknurwar 
169*67121dadSVivek Aknurwar static const struct clk_parent_data gcc_parent_data_0[] = {
170*67121dadSVivek Aknurwar 	{ .index = DT_BI_TCXO },
171*67121dadSVivek Aknurwar 	{ .hw = &gcc_gpll0.clkr.hw },
172*67121dadSVivek Aknurwar 	{ .hw = &gcc_gpll0_out_even.clkr.hw },
173*67121dadSVivek Aknurwar };
174*67121dadSVivek Aknurwar 
175*67121dadSVivek Aknurwar static const struct parent_map gcc_parent_map_1[] = {
176*67121dadSVivek Aknurwar 	{ P_BI_TCXO, 0 },
177*67121dadSVivek Aknurwar 	{ P_GCC_GPLL0_OUT_MAIN, 1 },
178*67121dadSVivek Aknurwar 	{ P_GCC_GPLL7_OUT_MAIN, 2 },
179*67121dadSVivek Aknurwar 	{ P_GCC_GPLL0_OUT_EVEN, 6 },
180*67121dadSVivek Aknurwar };
181*67121dadSVivek Aknurwar 
182*67121dadSVivek Aknurwar static const struct clk_parent_data gcc_parent_data_1[] = {
183*67121dadSVivek Aknurwar 	{ .index = DT_BI_TCXO },
184*67121dadSVivek Aknurwar 	{ .hw = &gcc_gpll0.clkr.hw },
185*67121dadSVivek Aknurwar 	{ .hw = &gcc_gpll7.clkr.hw },
186*67121dadSVivek Aknurwar 	{ .hw = &gcc_gpll0_out_even.clkr.hw },
187*67121dadSVivek Aknurwar };
188*67121dadSVivek Aknurwar 
189*67121dadSVivek Aknurwar static const struct parent_map gcc_parent_map_2[] = {
190*67121dadSVivek Aknurwar 	{ P_BI_TCXO, 0 },
191*67121dadSVivek Aknurwar 	{ P_GCC_GPLL0_OUT_MAIN, 1 },
192*67121dadSVivek Aknurwar 	{ P_SLEEP_CLK, 5 },
193*67121dadSVivek Aknurwar 	{ P_GCC_GPLL0_OUT_EVEN, 6 },
194*67121dadSVivek Aknurwar };
195*67121dadSVivek Aknurwar 
196*67121dadSVivek Aknurwar static const struct clk_parent_data gcc_parent_data_2[] = {
197*67121dadSVivek Aknurwar 	{ .index = DT_BI_TCXO },
198*67121dadSVivek Aknurwar 	{ .hw = &gcc_gpll0.clkr.hw },
199*67121dadSVivek Aknurwar 	{ .index = DT_SLEEP_CLK },
200*67121dadSVivek Aknurwar 	{ .hw = &gcc_gpll0_out_even.clkr.hw },
201*67121dadSVivek Aknurwar };
202*67121dadSVivek Aknurwar 
203*67121dadSVivek Aknurwar static const struct parent_map gcc_parent_map_3[] = {
204*67121dadSVivek Aknurwar 	{ P_BI_TCXO, 0 },
205*67121dadSVivek Aknurwar };
206*67121dadSVivek Aknurwar 
207*67121dadSVivek Aknurwar static const struct clk_parent_data gcc_parent_data_3[] = {
208*67121dadSVivek Aknurwar 	{ .index = DT_BI_TCXO },
209*67121dadSVivek Aknurwar };
210*67121dadSVivek Aknurwar 
211*67121dadSVivek Aknurwar static const struct parent_map gcc_parent_map_4[] = {
212*67121dadSVivek Aknurwar 	{ P_BI_TCXO, 0 },
213*67121dadSVivek Aknurwar 	{ P_SLEEP_CLK, 5 },
214*67121dadSVivek Aknurwar };
215*67121dadSVivek Aknurwar 
216*67121dadSVivek Aknurwar static const struct clk_parent_data gcc_parent_data_4[] = {
217*67121dadSVivek Aknurwar 	{ .index = DT_BI_TCXO },
218*67121dadSVivek Aknurwar 	{ .index = DT_SLEEP_CLK },
219*67121dadSVivek Aknurwar };
220*67121dadSVivek Aknurwar 
221*67121dadSVivek Aknurwar static const struct parent_map gcc_parent_map_5[] = {
222*67121dadSVivek Aknurwar 	{ P_BI_TCXO, 0 },
223*67121dadSVivek Aknurwar 	{ P_GCC_GPLL0_OUT_MAIN, 1 },
224*67121dadSVivek Aknurwar 	{ P_GCC_GPLL5_OUT_MAIN, 3 },
225*67121dadSVivek Aknurwar 	{ P_GCC_GPLL4_OUT_MAIN, 5 },
226*67121dadSVivek Aknurwar 	{ P_GCC_GPLL0_OUT_EVEN, 6 },
227*67121dadSVivek Aknurwar };
228*67121dadSVivek Aknurwar 
229*67121dadSVivek Aknurwar static const struct clk_parent_data gcc_parent_data_5[] = {
230*67121dadSVivek Aknurwar 	{ .index = DT_BI_TCXO },
231*67121dadSVivek Aknurwar 	{ .hw = &gcc_gpll0.clkr.hw },
232*67121dadSVivek Aknurwar 	{ .hw = &gcc_gpll5.clkr.hw },
233*67121dadSVivek Aknurwar 	{ .hw = &gcc_gpll4.clkr.hw },
234*67121dadSVivek Aknurwar 	{ .hw = &gcc_gpll0_out_even.clkr.hw },
235*67121dadSVivek Aknurwar };
236*67121dadSVivek Aknurwar 
237*67121dadSVivek Aknurwar static const struct parent_map gcc_parent_map_8[] = {
238*67121dadSVivek Aknurwar 	{ P_BI_TCXO, 0 },
239*67121dadSVivek Aknurwar 	{ P_GCC_GPLL0_OUT_MAIN, 1 },
240*67121dadSVivek Aknurwar 	{ P_GCC_GPLL9_OUT_MAIN, 2 },
241*67121dadSVivek Aknurwar 	{ P_GCC_GPLL4_OUT_MAIN, 5 },
242*67121dadSVivek Aknurwar 	{ P_GCC_GPLL0_OUT_EVEN, 6 },
243*67121dadSVivek Aknurwar };
244*67121dadSVivek Aknurwar 
245*67121dadSVivek Aknurwar static const struct clk_parent_data gcc_parent_data_8[] = {
246*67121dadSVivek Aknurwar 	{ .index = DT_BI_TCXO },
247*67121dadSVivek Aknurwar 	{ .hw = &gcc_gpll0.clkr.hw },
248*67121dadSVivek Aknurwar 	{ .hw = &gcc_gpll9.clkr.hw },
249*67121dadSVivek Aknurwar 	{ .hw = &gcc_gpll4.clkr.hw },
250*67121dadSVivek Aknurwar 	{ .hw = &gcc_gpll0_out_even.clkr.hw },
251*67121dadSVivek Aknurwar };
252*67121dadSVivek Aknurwar 
253*67121dadSVivek Aknurwar static struct clk_regmap_phy_mux gcc_pcie_0_pipe_clk_src = {
254*67121dadSVivek Aknurwar 	.reg = 0x6b0a8,
255*67121dadSVivek Aknurwar 	.clkr = {
256*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
257*67121dadSVivek Aknurwar 			.name = "gcc_pcie_0_pipe_clk_src",
258*67121dadSVivek Aknurwar 			.parent_data = &(const struct clk_parent_data){
259*67121dadSVivek Aknurwar 				.index = DT_PCIE_0_PIPE_CLK,
260*67121dadSVivek Aknurwar 			},
261*67121dadSVivek Aknurwar 			.num_parents = 1,
262*67121dadSVivek Aknurwar 			.ops = &clk_regmap_phy_mux_ops,
263*67121dadSVivek Aknurwar 		},
264*67121dadSVivek Aknurwar 	},
265*67121dadSVivek Aknurwar };
266*67121dadSVivek Aknurwar 
267*67121dadSVivek Aknurwar static struct clk_regmap_phy_mux gcc_pcie_1_pipe_clk_src = {
268*67121dadSVivek Aknurwar 	.reg = 0x670a4,
269*67121dadSVivek Aknurwar 	.clkr = {
270*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
271*67121dadSVivek Aknurwar 			.name = "gcc_pcie_1_pipe_clk_src",
272*67121dadSVivek Aknurwar 			.parent_data = &(const struct clk_parent_data){
273*67121dadSVivek Aknurwar 				.index = DT_PCIE_1_PIPE_CLK,
274*67121dadSVivek Aknurwar 			},
275*67121dadSVivek Aknurwar 			.num_parents = 1,
276*67121dadSVivek Aknurwar 			.ops = &clk_regmap_phy_mux_ops,
277*67121dadSVivek Aknurwar 		},
278*67121dadSVivek Aknurwar 	},
279*67121dadSVivek Aknurwar };
280*67121dadSVivek Aknurwar 
281*67121dadSVivek Aknurwar static struct clk_regmap_phy_mux gcc_ufs_phy_rx_symbol_0_clk_src = {
282*67121dadSVivek Aknurwar 	.reg = 0x77068,
283*67121dadSVivek Aknurwar 	.clkr = {
284*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
285*67121dadSVivek Aknurwar 			.name = "gcc_ufs_phy_rx_symbol_0_clk_src",
286*67121dadSVivek Aknurwar 			.parent_data = &(const struct clk_parent_data){
287*67121dadSVivek Aknurwar 				.index = DT_UFS_PHY_RX_SYMBOL_0_CLK,
288*67121dadSVivek Aknurwar 			},
289*67121dadSVivek Aknurwar 			.num_parents = 1,
290*67121dadSVivek Aknurwar 			.ops = &clk_regmap_phy_mux_ops,
291*67121dadSVivek Aknurwar 		},
292*67121dadSVivek Aknurwar 	},
293*67121dadSVivek Aknurwar };
294*67121dadSVivek Aknurwar 
295*67121dadSVivek Aknurwar static struct clk_regmap_phy_mux gcc_ufs_phy_rx_symbol_1_clk_src = {
296*67121dadSVivek Aknurwar 	.reg = 0x770ec,
297*67121dadSVivek Aknurwar 	.clkr = {
298*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
299*67121dadSVivek Aknurwar 			.name = "gcc_ufs_phy_rx_symbol_1_clk_src",
300*67121dadSVivek Aknurwar 			.parent_data = &(const struct clk_parent_data){
301*67121dadSVivek Aknurwar 				.index = DT_UFS_PHY_RX_SYMBOL_1_CLK,
302*67121dadSVivek Aknurwar 			},
303*67121dadSVivek Aknurwar 			.num_parents = 1,
304*67121dadSVivek Aknurwar 			.ops = &clk_regmap_phy_mux_ops,
305*67121dadSVivek Aknurwar 		},
306*67121dadSVivek Aknurwar 	},
307*67121dadSVivek Aknurwar };
308*67121dadSVivek Aknurwar 
309*67121dadSVivek Aknurwar static struct clk_regmap_phy_mux gcc_ufs_phy_tx_symbol_0_clk_src = {
310*67121dadSVivek Aknurwar 	.reg = 0x77058,
311*67121dadSVivek Aknurwar 	.clkr = {
312*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
313*67121dadSVivek Aknurwar 			.name = "gcc_ufs_phy_tx_symbol_0_clk_src",
314*67121dadSVivek Aknurwar 			.parent_data = &(const struct clk_parent_data){
315*67121dadSVivek Aknurwar 				.index = DT_UFS_PHY_TX_SYMBOL_0_CLK,
316*67121dadSVivek Aknurwar 			},
317*67121dadSVivek Aknurwar 			.num_parents = 1,
318*67121dadSVivek Aknurwar 			.ops = &clk_regmap_phy_mux_ops,
319*67121dadSVivek Aknurwar 		},
320*67121dadSVivek Aknurwar 	},
321*67121dadSVivek Aknurwar };
322*67121dadSVivek Aknurwar 
323*67121dadSVivek Aknurwar static struct clk_regmap_phy_mux gcc_usb3_prim_phy_pipe_clk_src = {
324*67121dadSVivek Aknurwar 	.reg = 0x39074,
325*67121dadSVivek Aknurwar 	.clkr = {
326*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
327*67121dadSVivek Aknurwar 			.name = "gcc_usb3_prim_phy_pipe_clk_src",
328*67121dadSVivek Aknurwar 			.parent_data = &(const struct clk_parent_data){
329*67121dadSVivek Aknurwar 				.index = DT_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK,
330*67121dadSVivek Aknurwar 			},
331*67121dadSVivek Aknurwar 			.num_parents = 1,
332*67121dadSVivek Aknurwar 			.ops = &clk_regmap_phy_mux_ops,
333*67121dadSVivek Aknurwar 		},
334*67121dadSVivek Aknurwar 	},
335*67121dadSVivek Aknurwar };
336*67121dadSVivek Aknurwar 
337*67121dadSVivek Aknurwar static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = {
338*67121dadSVivek Aknurwar 	F(50000000, P_GCC_GPLL0_OUT_EVEN, 6, 0, 0),
339*67121dadSVivek Aknurwar 	F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
340*67121dadSVivek Aknurwar 	F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0),
341*67121dadSVivek Aknurwar 	{ }
342*67121dadSVivek Aknurwar };
343*67121dadSVivek Aknurwar 
344*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_gp1_clk_src = {
345*67121dadSVivek Aknurwar 	.cmd_rcgr = 0x64004,
346*67121dadSVivek Aknurwar 	.mnd_width = 16,
347*67121dadSVivek Aknurwar 	.hid_width = 5,
348*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_2,
349*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_gp1_clk_src,
350*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
351*67121dadSVivek Aknurwar 	.clkr.hw.init = &(const struct clk_init_data) {
352*67121dadSVivek Aknurwar 		.name = "gcc_gp1_clk_src",
353*67121dadSVivek Aknurwar 		.parent_data = gcc_parent_data_2,
354*67121dadSVivek Aknurwar 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
355*67121dadSVivek Aknurwar 		.flags = CLK_SET_RATE_PARENT,
356*67121dadSVivek Aknurwar 		.ops = &clk_rcg2_shared_no_init_park_ops,
357*67121dadSVivek Aknurwar 	},
358*67121dadSVivek Aknurwar };
359*67121dadSVivek Aknurwar 
360*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_gp2_clk_src = {
361*67121dadSVivek Aknurwar 	.cmd_rcgr = 0x65004,
362*67121dadSVivek Aknurwar 	.mnd_width = 16,
363*67121dadSVivek Aknurwar 	.hid_width = 5,
364*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_2,
365*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_gp1_clk_src,
366*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
367*67121dadSVivek Aknurwar 	.clkr.hw.init = &(const struct clk_init_data) {
368*67121dadSVivek Aknurwar 		.name = "gcc_gp2_clk_src",
369*67121dadSVivek Aknurwar 		.parent_data = gcc_parent_data_2,
370*67121dadSVivek Aknurwar 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
371*67121dadSVivek Aknurwar 		.flags = CLK_SET_RATE_PARENT,
372*67121dadSVivek Aknurwar 		.ops = &clk_rcg2_shared_no_init_park_ops,
373*67121dadSVivek Aknurwar 	},
374*67121dadSVivek Aknurwar };
375*67121dadSVivek Aknurwar 
376*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_gp3_clk_src = {
377*67121dadSVivek Aknurwar 	.cmd_rcgr = 0x66004,
378*67121dadSVivek Aknurwar 	.mnd_width = 16,
379*67121dadSVivek Aknurwar 	.hid_width = 5,
380*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_2,
381*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_gp1_clk_src,
382*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
383*67121dadSVivek Aknurwar 	.clkr.hw.init = &(const struct clk_init_data) {
384*67121dadSVivek Aknurwar 		.name = "gcc_gp3_clk_src",
385*67121dadSVivek Aknurwar 		.parent_data = gcc_parent_data_2,
386*67121dadSVivek Aknurwar 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
387*67121dadSVivek Aknurwar 		.flags = CLK_SET_RATE_PARENT,
388*67121dadSVivek Aknurwar 		.ops = &clk_rcg2_shared_no_init_park_ops,
389*67121dadSVivek Aknurwar 	},
390*67121dadSVivek Aknurwar };
391*67121dadSVivek Aknurwar 
392*67121dadSVivek Aknurwar static const struct freq_tbl ftbl_gcc_pcie_0_aux_clk_src[] = {
393*67121dadSVivek Aknurwar 	F(19200000, P_BI_TCXO, 1, 0, 0),
394*67121dadSVivek Aknurwar 	{ }
395*67121dadSVivek Aknurwar };
396*67121dadSVivek Aknurwar 
397*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_pcie_0_aux_clk_src = {
398*67121dadSVivek Aknurwar 	.cmd_rcgr = 0x6b0ac,
399*67121dadSVivek Aknurwar 	.mnd_width = 16,
400*67121dadSVivek Aknurwar 	.hid_width = 5,
401*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_4,
402*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
403*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
404*67121dadSVivek Aknurwar 	.clkr.hw.init = &(const struct clk_init_data) {
405*67121dadSVivek Aknurwar 		.name = "gcc_pcie_0_aux_clk_src",
406*67121dadSVivek Aknurwar 		.parent_data = gcc_parent_data_4,
407*67121dadSVivek Aknurwar 		.num_parents = ARRAY_SIZE(gcc_parent_data_4),
408*67121dadSVivek Aknurwar 		.flags = CLK_SET_RATE_PARENT,
409*67121dadSVivek Aknurwar 		.ops = &clk_rcg2_shared_no_init_park_ops,
410*67121dadSVivek Aknurwar 	},
411*67121dadSVivek Aknurwar };
412*67121dadSVivek Aknurwar 
413*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_pcie_0_phy_aux_clk_src = {
414*67121dadSVivek Aknurwar 	.cmd_rcgr = 0x6b0c4,
415*67121dadSVivek Aknurwar 	.mnd_width = 0,
416*67121dadSVivek Aknurwar 	.hid_width = 5,
417*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_0,
418*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
419*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
420*67121dadSVivek Aknurwar 	.clkr.hw.init = &(const struct clk_init_data) {
421*67121dadSVivek Aknurwar 		.name = "gcc_pcie_0_phy_aux_clk_src",
422*67121dadSVivek Aknurwar 		.parent_data = gcc_parent_data_0,
423*67121dadSVivek Aknurwar 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
424*67121dadSVivek Aknurwar 		.flags = CLK_SET_RATE_PARENT,
425*67121dadSVivek Aknurwar 		.ops = &clk_rcg2_shared_no_init_park_ops,
426*67121dadSVivek Aknurwar 	},
427*67121dadSVivek Aknurwar };
428*67121dadSVivek Aknurwar 
429*67121dadSVivek Aknurwar static const struct freq_tbl ftbl_gcc_pcie_0_phy_rchng_clk_src[] = {
430*67121dadSVivek Aknurwar 	F(19200000, P_BI_TCXO, 1, 0, 0),
431*67121dadSVivek Aknurwar 	F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0),
432*67121dadSVivek Aknurwar 	{ }
433*67121dadSVivek Aknurwar };
434*67121dadSVivek Aknurwar 
435*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_pcie_0_phy_rchng_clk_src = {
436*67121dadSVivek Aknurwar 	.cmd_rcgr = 0x6b08c,
437*67121dadSVivek Aknurwar 	.mnd_width = 0,
438*67121dadSVivek Aknurwar 	.hid_width = 5,
439*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_0,
440*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,
441*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
442*67121dadSVivek Aknurwar 	.clkr.hw.init = &(const struct clk_init_data) {
443*67121dadSVivek Aknurwar 		.name = "gcc_pcie_0_phy_rchng_clk_src",
444*67121dadSVivek Aknurwar 		.parent_data = gcc_parent_data_0,
445*67121dadSVivek Aknurwar 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
446*67121dadSVivek Aknurwar 		.flags = CLK_SET_RATE_PARENT,
447*67121dadSVivek Aknurwar 		.ops = &clk_rcg2_shared_no_init_park_ops,
448*67121dadSVivek Aknurwar 	},
449*67121dadSVivek Aknurwar };
450*67121dadSVivek Aknurwar 
451*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_pcie_1_aux_clk_src = {
452*67121dadSVivek Aknurwar 	.cmd_rcgr = 0x670a8,
453*67121dadSVivek Aknurwar 	.mnd_width = 16,
454*67121dadSVivek Aknurwar 	.hid_width = 5,
455*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_4,
456*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
457*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
458*67121dadSVivek Aknurwar 	.clkr.hw.init = &(const struct clk_init_data) {
459*67121dadSVivek Aknurwar 		.name = "gcc_pcie_1_aux_clk_src",
460*67121dadSVivek Aknurwar 		.parent_data = gcc_parent_data_4,
461*67121dadSVivek Aknurwar 		.num_parents = ARRAY_SIZE(gcc_parent_data_4),
462*67121dadSVivek Aknurwar 		.flags = CLK_SET_RATE_PARENT,
463*67121dadSVivek Aknurwar 		.ops = &clk_rcg2_shared_no_init_park_ops,
464*67121dadSVivek Aknurwar 	},
465*67121dadSVivek Aknurwar };
466*67121dadSVivek Aknurwar 
467*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_pcie_1_phy_aux_clk_src = {
468*67121dadSVivek Aknurwar 	.cmd_rcgr = 0x670c0,
469*67121dadSVivek Aknurwar 	.mnd_width = 0,
470*67121dadSVivek Aknurwar 	.hid_width = 5,
471*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_0,
472*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
473*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
474*67121dadSVivek Aknurwar 	.clkr.hw.init = &(const struct clk_init_data) {
475*67121dadSVivek Aknurwar 		.name = "gcc_pcie_1_phy_aux_clk_src",
476*67121dadSVivek Aknurwar 		.parent_data = gcc_parent_data_0,
477*67121dadSVivek Aknurwar 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
478*67121dadSVivek Aknurwar 		.flags = CLK_SET_RATE_PARENT,
479*67121dadSVivek Aknurwar 		.ops = &clk_rcg2_shared_no_init_park_ops,
480*67121dadSVivek Aknurwar 	},
481*67121dadSVivek Aknurwar };
482*67121dadSVivek Aknurwar 
483*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_pcie_1_phy_rchng_clk_src = {
484*67121dadSVivek Aknurwar 	.cmd_rcgr = 0x67088,
485*67121dadSVivek Aknurwar 	.mnd_width = 0,
486*67121dadSVivek Aknurwar 	.hid_width = 5,
487*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_0,
488*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,
489*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
490*67121dadSVivek Aknurwar 	.clkr.hw.init = &(const struct clk_init_data) {
491*67121dadSVivek Aknurwar 		.name = "gcc_pcie_1_phy_rchng_clk_src",
492*67121dadSVivek Aknurwar 		.parent_data = gcc_parent_data_0,
493*67121dadSVivek Aknurwar 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
494*67121dadSVivek Aknurwar 		.flags = CLK_SET_RATE_PARENT,
495*67121dadSVivek Aknurwar 		.ops = &clk_rcg2_shared_no_init_park_ops,
496*67121dadSVivek Aknurwar 	},
497*67121dadSVivek Aknurwar };
498*67121dadSVivek Aknurwar 
499*67121dadSVivek Aknurwar static const struct freq_tbl ftbl_gcc_pdm2_clk_src[] = {
500*67121dadSVivek Aknurwar 	F(60000000, P_GCC_GPLL0_OUT_MAIN, 10, 0, 0),
501*67121dadSVivek Aknurwar 	{ }
502*67121dadSVivek Aknurwar };
503*67121dadSVivek Aknurwar 
504*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_pdm2_clk_src = {
505*67121dadSVivek Aknurwar 	.cmd_rcgr = 0x33010,
506*67121dadSVivek Aknurwar 	.mnd_width = 0,
507*67121dadSVivek Aknurwar 	.hid_width = 5,
508*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_0,
509*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_pdm2_clk_src,
510*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
511*67121dadSVivek Aknurwar 	.clkr.hw.init = &(const struct clk_init_data) {
512*67121dadSVivek Aknurwar 		.name = "gcc_pdm2_clk_src",
513*67121dadSVivek Aknurwar 		.parent_data = gcc_parent_data_0,
514*67121dadSVivek Aknurwar 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
515*67121dadSVivek Aknurwar 		.flags = CLK_SET_RATE_PARENT,
516*67121dadSVivek Aknurwar 		.ops = &clk_rcg2_shared_no_init_park_ops,
517*67121dadSVivek Aknurwar 	},
518*67121dadSVivek Aknurwar };
519*67121dadSVivek Aknurwar 
520*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_i2c_s0_clk_src = {
521*67121dadSVivek Aknurwar 	.cmd_rcgr = 0x17008,
522*67121dadSVivek Aknurwar 	.mnd_width = 0,
523*67121dadSVivek Aknurwar 	.hid_width = 5,
524*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_0,
525*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
526*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
527*67121dadSVivek Aknurwar 	.clkr.hw.init = &(const struct clk_init_data) {
528*67121dadSVivek Aknurwar 		.name = "gcc_qupv3_i2c_s0_clk_src",
529*67121dadSVivek Aknurwar 		.parent_data = gcc_parent_data_0,
530*67121dadSVivek Aknurwar 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
531*67121dadSVivek Aknurwar 		.flags = CLK_SET_RATE_PARENT,
532*67121dadSVivek Aknurwar 		.ops = &clk_rcg2_shared_no_init_park_ops,
533*67121dadSVivek Aknurwar 	},
534*67121dadSVivek Aknurwar };
535*67121dadSVivek Aknurwar 
536*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_i2c_s1_clk_src = {
537*67121dadSVivek Aknurwar 	.cmd_rcgr = 0x17024,
538*67121dadSVivek Aknurwar 	.mnd_width = 0,
539*67121dadSVivek Aknurwar 	.hid_width = 5,
540*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_0,
541*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
542*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
543*67121dadSVivek Aknurwar 	.clkr.hw.init = &(const struct clk_init_data) {
544*67121dadSVivek Aknurwar 		.name = "gcc_qupv3_i2c_s1_clk_src",
545*67121dadSVivek Aknurwar 		.parent_data = gcc_parent_data_0,
546*67121dadSVivek Aknurwar 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
547*67121dadSVivek Aknurwar 		.flags = CLK_SET_RATE_PARENT,
548*67121dadSVivek Aknurwar 		.ops = &clk_rcg2_shared_no_init_park_ops,
549*67121dadSVivek Aknurwar 	},
550*67121dadSVivek Aknurwar };
551*67121dadSVivek Aknurwar 
552*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_i2c_s2_clk_src = {
553*67121dadSVivek Aknurwar 	.cmd_rcgr = 0x17040,
554*67121dadSVivek Aknurwar 	.mnd_width = 0,
555*67121dadSVivek Aknurwar 	.hid_width = 5,
556*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_0,
557*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
558*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
559*67121dadSVivek Aknurwar 	.clkr.hw.init = &(const struct clk_init_data) {
560*67121dadSVivek Aknurwar 		.name = "gcc_qupv3_i2c_s2_clk_src",
561*67121dadSVivek Aknurwar 		.parent_data = gcc_parent_data_0,
562*67121dadSVivek Aknurwar 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
563*67121dadSVivek Aknurwar 		.flags = CLK_SET_RATE_PARENT,
564*67121dadSVivek Aknurwar 		.ops = &clk_rcg2_shared_no_init_park_ops,
565*67121dadSVivek Aknurwar 	},
566*67121dadSVivek Aknurwar };
567*67121dadSVivek Aknurwar 
568*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_i2c_s3_clk_src = {
569*67121dadSVivek Aknurwar 	.cmd_rcgr = 0x1705c,
570*67121dadSVivek Aknurwar 	.mnd_width = 0,
571*67121dadSVivek Aknurwar 	.hid_width = 5,
572*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_0,
573*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
574*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
575*67121dadSVivek Aknurwar 	.clkr.hw.init = &(const struct clk_init_data) {
576*67121dadSVivek Aknurwar 		.name = "gcc_qupv3_i2c_s3_clk_src",
577*67121dadSVivek Aknurwar 		.parent_data = gcc_parent_data_0,
578*67121dadSVivek Aknurwar 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
579*67121dadSVivek Aknurwar 		.flags = CLK_SET_RATE_PARENT,
580*67121dadSVivek Aknurwar 		.ops = &clk_rcg2_shared_no_init_park_ops,
581*67121dadSVivek Aknurwar 	},
582*67121dadSVivek Aknurwar };
583*67121dadSVivek Aknurwar 
584*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_i2c_s4_clk_src = {
585*67121dadSVivek Aknurwar 	.cmd_rcgr = 0x17078,
586*67121dadSVivek Aknurwar 	.mnd_width = 0,
587*67121dadSVivek Aknurwar 	.hid_width = 5,
588*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_0,
589*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
590*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
591*67121dadSVivek Aknurwar 	.clkr.hw.init = &(const struct clk_init_data) {
592*67121dadSVivek Aknurwar 		.name = "gcc_qupv3_i2c_s4_clk_src",
593*67121dadSVivek Aknurwar 		.parent_data = gcc_parent_data_0,
594*67121dadSVivek Aknurwar 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
595*67121dadSVivek Aknurwar 		.flags = CLK_SET_RATE_PARENT,
596*67121dadSVivek Aknurwar 		.ops = &clk_rcg2_shared_no_init_park_ops,
597*67121dadSVivek Aknurwar 	},
598*67121dadSVivek Aknurwar };
599*67121dadSVivek Aknurwar 
600*67121dadSVivek Aknurwar static const struct freq_tbl ftbl_gcc_qupv3_wrap1_qspi_ref_clk_src[] = {
601*67121dadSVivek Aknurwar 	F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),
602*67121dadSVivek Aknurwar 	F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),
603*67121dadSVivek Aknurwar 	F(19200000, P_BI_TCXO, 1, 0, 0),
604*67121dadSVivek Aknurwar 	F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),
605*67121dadSVivek Aknurwar 	F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),
606*67121dadSVivek Aknurwar 	F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),
607*67121dadSVivek Aknurwar 	F(51200000, P_GCC_GPLL0_OUT_EVEN, 1, 64, 375),
608*67121dadSVivek Aknurwar 	F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),
609*67121dadSVivek Aknurwar 	F(66666667, P_GCC_GPLL0_OUT_MAIN, 9, 0, 0),
610*67121dadSVivek Aknurwar 	F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
611*67121dadSVivek Aknurwar 	F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),
612*67121dadSVivek Aknurwar 	F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),
613*67121dadSVivek Aknurwar 	F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
614*67121dadSVivek Aknurwar 	F(102400000, P_GCC_GPLL0_OUT_EVEN, 1, 128, 375),
615*67121dadSVivek Aknurwar 	F(112000000, P_GCC_GPLL0_OUT_EVEN, 1, 28, 75),
616*67121dadSVivek Aknurwar 	F(117964800, P_GCC_GPLL0_OUT_EVEN, 1, 6144, 15625),
617*67121dadSVivek Aknurwar 	F(120000000, P_GCC_GPLL0_OUT_EVEN, 2.5, 0, 0),
618*67121dadSVivek Aknurwar 	F(150000000, P_GCC_GPLL0_OUT_EVEN, 2, 0, 0),
619*67121dadSVivek Aknurwar 	F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0),
620*67121dadSVivek Aknurwar 	{ }
621*67121dadSVivek Aknurwar };
622*67121dadSVivek Aknurwar 
623*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap1_qspi_ref_clk_src_init = {
624*67121dadSVivek Aknurwar 	.name = "gcc_qupv3_wrap1_qspi_ref_clk_src",
625*67121dadSVivek Aknurwar 	.parent_data = gcc_parent_data_0,
626*67121dadSVivek Aknurwar 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
627*67121dadSVivek Aknurwar 	.flags = CLK_SET_RATE_PARENT,
628*67121dadSVivek Aknurwar 	.ops = &clk_rcg2_shared_no_init_park_ops,
629*67121dadSVivek Aknurwar };
630*67121dadSVivek Aknurwar 
631*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap1_qspi_ref_clk_src = {
632*67121dadSVivek Aknurwar 	.cmd_rcgr = 0x188c0,
633*67121dadSVivek Aknurwar 	.mnd_width = 16,
634*67121dadSVivek Aknurwar 	.hid_width = 5,
635*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_0,
636*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_qupv3_wrap1_qspi_ref_clk_src,
637*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
638*67121dadSVivek Aknurwar 	.clkr.hw.init = &gcc_qupv3_wrap1_qspi_ref_clk_src_init,
639*67121dadSVivek Aknurwar };
640*67121dadSVivek Aknurwar 
641*67121dadSVivek Aknurwar static const struct freq_tbl ftbl_gcc_qupv3_wrap1_s0_clk_src[] = {
642*67121dadSVivek Aknurwar 	F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),
643*67121dadSVivek Aknurwar 	F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),
644*67121dadSVivek Aknurwar 	F(19200000, P_BI_TCXO, 1, 0, 0),
645*67121dadSVivek Aknurwar 	F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),
646*67121dadSVivek Aknurwar 	F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),
647*67121dadSVivek Aknurwar 	F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),
648*67121dadSVivek Aknurwar 	F(51200000, P_GCC_GPLL0_OUT_EVEN, 1, 64, 375),
649*67121dadSVivek Aknurwar 	F(60000000, P_GCC_GPLL0_OUT_EVEN, 5, 0, 0),
650*67121dadSVivek Aknurwar 	F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),
651*67121dadSVivek Aknurwar 	F(66666667, P_GCC_GPLL0_OUT_MAIN, 9, 0, 0),
652*67121dadSVivek Aknurwar 	F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
653*67121dadSVivek Aknurwar 	F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),
654*67121dadSVivek Aknurwar 	F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),
655*67121dadSVivek Aknurwar 	F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
656*67121dadSVivek Aknurwar 	{ }
657*67121dadSVivek Aknurwar };
658*67121dadSVivek Aknurwar 
659*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap1_s0_clk_src_init = {
660*67121dadSVivek Aknurwar 	.name = "gcc_qupv3_wrap1_s0_clk_src",
661*67121dadSVivek Aknurwar 	.parent_data = gcc_parent_data_0,
662*67121dadSVivek Aknurwar 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
663*67121dadSVivek Aknurwar 	.flags = CLK_SET_RATE_PARENT,
664*67121dadSVivek Aknurwar 	.ops = &clk_rcg2_shared_no_init_park_ops,
665*67121dadSVivek Aknurwar };
666*67121dadSVivek Aknurwar 
667*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap1_s0_clk_src = {
668*67121dadSVivek Aknurwar 	.cmd_rcgr = 0x18014,
669*67121dadSVivek Aknurwar 	.mnd_width = 16,
670*67121dadSVivek Aknurwar 	.hid_width = 5,
671*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_0,
672*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,
673*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
674*67121dadSVivek Aknurwar 	.clkr.hw.init = &gcc_qupv3_wrap1_s0_clk_src_init,
675*67121dadSVivek Aknurwar };
676*67121dadSVivek Aknurwar 
677*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap1_s1_clk_src_init = {
678*67121dadSVivek Aknurwar 	.name = "gcc_qupv3_wrap1_s1_clk_src",
679*67121dadSVivek Aknurwar 	.parent_data = gcc_parent_data_0,
680*67121dadSVivek Aknurwar 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
681*67121dadSVivek Aknurwar 	.flags = CLK_SET_RATE_PARENT,
682*67121dadSVivek Aknurwar 	.ops = &clk_rcg2_shared_no_init_park_ops,
683*67121dadSVivek Aknurwar };
684*67121dadSVivek Aknurwar 
685*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap1_s1_clk_src = {
686*67121dadSVivek Aknurwar 	.cmd_rcgr = 0x18150,
687*67121dadSVivek Aknurwar 	.mnd_width = 16,
688*67121dadSVivek Aknurwar 	.hid_width = 5,
689*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_0,
690*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,
691*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
692*67121dadSVivek Aknurwar 	.clkr.hw.init = &gcc_qupv3_wrap1_s1_clk_src_init,
693*67121dadSVivek Aknurwar };
694*67121dadSVivek Aknurwar 
695*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap1_s3_clk_src_init = {
696*67121dadSVivek Aknurwar 	.name = "gcc_qupv3_wrap1_s3_clk_src",
697*67121dadSVivek Aknurwar 	.parent_data = gcc_parent_data_0,
698*67121dadSVivek Aknurwar 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
699*67121dadSVivek Aknurwar 	.flags = CLK_SET_RATE_PARENT,
700*67121dadSVivek Aknurwar 	.ops = &clk_rcg2_shared_no_init_park_ops,
701*67121dadSVivek Aknurwar };
702*67121dadSVivek Aknurwar 
703*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap1_s3_clk_src = {
704*67121dadSVivek Aknurwar 	.cmd_rcgr = 0x182a0,
705*67121dadSVivek Aknurwar 	.mnd_width = 16,
706*67121dadSVivek Aknurwar 	.hid_width = 5,
707*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_0,
708*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,
709*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
710*67121dadSVivek Aknurwar 	.clkr.hw.init = &gcc_qupv3_wrap1_s3_clk_src_init,
711*67121dadSVivek Aknurwar };
712*67121dadSVivek Aknurwar 
713*67121dadSVivek Aknurwar static const struct freq_tbl ftbl_gcc_qupv3_wrap1_s4_clk_src[] = {
714*67121dadSVivek Aknurwar 	F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),
715*67121dadSVivek Aknurwar 	F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),
716*67121dadSVivek Aknurwar 	F(19200000, P_BI_TCXO, 1, 0, 0),
717*67121dadSVivek Aknurwar 	F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),
718*67121dadSVivek Aknurwar 	F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),
719*67121dadSVivek Aknurwar 	F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),
720*67121dadSVivek Aknurwar 	F(51200000, P_GCC_GPLL0_OUT_EVEN, 1, 64, 375),
721*67121dadSVivek Aknurwar 	F(60000000, P_GCC_GPLL0_OUT_EVEN, 5, 0, 0),
722*67121dadSVivek Aknurwar 	F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),
723*67121dadSVivek Aknurwar 	F(66666667, P_GCC_GPLL0_OUT_MAIN, 9, 0, 0),
724*67121dadSVivek Aknurwar 	F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
725*67121dadSVivek Aknurwar 	F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),
726*67121dadSVivek Aknurwar 	F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),
727*67121dadSVivek Aknurwar 	F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
728*67121dadSVivek Aknurwar 	F(102400000, P_GCC_GPLL0_OUT_EVEN, 1, 128, 375),
729*67121dadSVivek Aknurwar 	F(112000000, P_GCC_GPLL0_OUT_EVEN, 1, 28, 75),
730*67121dadSVivek Aknurwar 	F(117964800, P_GCC_GPLL0_OUT_EVEN, 1, 6144, 15625),
731*67121dadSVivek Aknurwar 	F(120000000, P_GCC_GPLL0_OUT_MAIN, 5, 0, 0),
732*67121dadSVivek Aknurwar 	{ }
733*67121dadSVivek Aknurwar };
734*67121dadSVivek Aknurwar 
735*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap1_s4_clk_src_init = {
736*67121dadSVivek Aknurwar 	.name = "gcc_qupv3_wrap1_s4_clk_src",
737*67121dadSVivek Aknurwar 	.parent_data = gcc_parent_data_0,
738*67121dadSVivek Aknurwar 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
739*67121dadSVivek Aknurwar 	.flags = CLK_SET_RATE_PARENT,
740*67121dadSVivek Aknurwar 	.ops = &clk_rcg2_shared_no_init_park_ops,
741*67121dadSVivek Aknurwar };
742*67121dadSVivek Aknurwar 
743*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap1_s4_clk_src = {
744*67121dadSVivek Aknurwar 	.cmd_rcgr = 0x183dc,
745*67121dadSVivek Aknurwar 	.mnd_width = 16,
746*67121dadSVivek Aknurwar 	.hid_width = 5,
747*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_0,
748*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s4_clk_src,
749*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
750*67121dadSVivek Aknurwar 	.clkr.hw.init = &gcc_qupv3_wrap1_s4_clk_src_init,
751*67121dadSVivek Aknurwar };
752*67121dadSVivek Aknurwar 
753*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap1_s5_clk_src_init = {
754*67121dadSVivek Aknurwar 	.name = "gcc_qupv3_wrap1_s5_clk_src",
755*67121dadSVivek Aknurwar 	.parent_data = gcc_parent_data_0,
756*67121dadSVivek Aknurwar 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
757*67121dadSVivek Aknurwar 	.flags = CLK_SET_RATE_PARENT,
758*67121dadSVivek Aknurwar 	.ops = &clk_rcg2_shared_no_init_park_ops,
759*67121dadSVivek Aknurwar };
760*67121dadSVivek Aknurwar 
761*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap1_s5_clk_src = {
762*67121dadSVivek Aknurwar 	.cmd_rcgr = 0x18518,
763*67121dadSVivek Aknurwar 	.mnd_width = 16,
764*67121dadSVivek Aknurwar 	.hid_width = 5,
765*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_0,
766*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,
767*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
768*67121dadSVivek Aknurwar 	.clkr.hw.init = &gcc_qupv3_wrap1_s5_clk_src_init,
769*67121dadSVivek Aknurwar };
770*67121dadSVivek Aknurwar 
771*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap1_s6_clk_src_init = {
772*67121dadSVivek Aknurwar 	.name = "gcc_qupv3_wrap1_s6_clk_src",
773*67121dadSVivek Aknurwar 	.parent_data = gcc_parent_data_0,
774*67121dadSVivek Aknurwar 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
775*67121dadSVivek Aknurwar 	.flags = CLK_SET_RATE_PARENT,
776*67121dadSVivek Aknurwar 	.ops = &clk_rcg2_shared_no_init_park_ops,
777*67121dadSVivek Aknurwar };
778*67121dadSVivek Aknurwar 
779*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap1_s6_clk_src = {
780*67121dadSVivek Aknurwar 	.cmd_rcgr = 0x18654,
781*67121dadSVivek Aknurwar 	.mnd_width = 16,
782*67121dadSVivek Aknurwar 	.hid_width = 5,
783*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_0,
784*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,
785*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
786*67121dadSVivek Aknurwar 	.clkr.hw.init = &gcc_qupv3_wrap1_s6_clk_src_init,
787*67121dadSVivek Aknurwar };
788*67121dadSVivek Aknurwar 
789*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap1_s7_clk_src_init = {
790*67121dadSVivek Aknurwar 	.name = "gcc_qupv3_wrap1_s7_clk_src",
791*67121dadSVivek Aknurwar 	.parent_data = gcc_parent_data_0,
792*67121dadSVivek Aknurwar 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
793*67121dadSVivek Aknurwar 	.flags = CLK_SET_RATE_PARENT,
794*67121dadSVivek Aknurwar 	.ops = &clk_rcg2_shared_no_init_park_ops,
795*67121dadSVivek Aknurwar };
796*67121dadSVivek Aknurwar 
797*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap1_s7_clk_src = {
798*67121dadSVivek Aknurwar 	.cmd_rcgr = 0x18790,
799*67121dadSVivek Aknurwar 	.mnd_width = 16,
800*67121dadSVivek Aknurwar 	.hid_width = 5,
801*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_0,
802*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s4_clk_src,
803*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
804*67121dadSVivek Aknurwar 	.clkr.hw.init = &gcc_qupv3_wrap1_s7_clk_src_init,
805*67121dadSVivek Aknurwar };
806*67121dadSVivek Aknurwar 
807*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap2_s0_clk_src_init = {
808*67121dadSVivek Aknurwar 	.name = "gcc_qupv3_wrap2_s0_clk_src",
809*67121dadSVivek Aknurwar 	.parent_data = gcc_parent_data_1,
810*67121dadSVivek Aknurwar 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
811*67121dadSVivek Aknurwar 	.flags = CLK_SET_RATE_PARENT,
812*67121dadSVivek Aknurwar 	.ops = &clk_rcg2_shared_no_init_park_ops,
813*67121dadSVivek Aknurwar };
814*67121dadSVivek Aknurwar 
815*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap2_s0_clk_src = {
816*67121dadSVivek Aknurwar 	.cmd_rcgr = 0x1e01c,
817*67121dadSVivek Aknurwar 	.mnd_width = 16,
818*67121dadSVivek Aknurwar 	.hid_width = 5,
819*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_1,
820*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s4_clk_src,
821*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
822*67121dadSVivek Aknurwar 	.clkr.hw.init = &gcc_qupv3_wrap2_s0_clk_src_init,
823*67121dadSVivek Aknurwar };
824*67121dadSVivek Aknurwar 
825*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap2_s1_clk_src_init = {
826*67121dadSVivek Aknurwar 	.name = "gcc_qupv3_wrap2_s1_clk_src",
827*67121dadSVivek Aknurwar 	.parent_data = gcc_parent_data_1,
828*67121dadSVivek Aknurwar 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
829*67121dadSVivek Aknurwar 	.flags = CLK_SET_RATE_PARENT,
830*67121dadSVivek Aknurwar 	.ops = &clk_rcg2_shared_no_init_park_ops,
831*67121dadSVivek Aknurwar };
832*67121dadSVivek Aknurwar 
833*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap2_s1_clk_src = {
834*67121dadSVivek Aknurwar 	.cmd_rcgr = 0x1e160,
835*67121dadSVivek Aknurwar 	.mnd_width = 16,
836*67121dadSVivek Aknurwar 	.hid_width = 5,
837*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_1,
838*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s4_clk_src,
839*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
840*67121dadSVivek Aknurwar 	.clkr.hw.init = &gcc_qupv3_wrap2_s1_clk_src_init,
841*67121dadSVivek Aknurwar };
842*67121dadSVivek Aknurwar 
843*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap2_s2_clk_src_init = {
844*67121dadSVivek Aknurwar 	.name = "gcc_qupv3_wrap2_s2_clk_src",
845*67121dadSVivek Aknurwar 	.parent_data = gcc_parent_data_0,
846*67121dadSVivek Aknurwar 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
847*67121dadSVivek Aknurwar 	.flags = CLK_SET_RATE_PARENT,
848*67121dadSVivek Aknurwar 	.ops = &clk_rcg2_shared_no_init_park_ops,
849*67121dadSVivek Aknurwar };
850*67121dadSVivek Aknurwar 
851*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap2_s2_clk_src = {
852*67121dadSVivek Aknurwar 	.cmd_rcgr = 0x1e29c,
853*67121dadSVivek Aknurwar 	.mnd_width = 16,
854*67121dadSVivek Aknurwar 	.hid_width = 5,
855*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_0,
856*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s4_clk_src,
857*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
858*67121dadSVivek Aknurwar 	.clkr.hw.init = &gcc_qupv3_wrap2_s2_clk_src_init,
859*67121dadSVivek Aknurwar };
860*67121dadSVivek Aknurwar 
861*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap2_s3_clk_src_init = {
862*67121dadSVivek Aknurwar 	.name = "gcc_qupv3_wrap2_s3_clk_src",
863*67121dadSVivek Aknurwar 	.parent_data = gcc_parent_data_0,
864*67121dadSVivek Aknurwar 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
865*67121dadSVivek Aknurwar 	.flags = CLK_SET_RATE_PARENT,
866*67121dadSVivek Aknurwar 	.ops = &clk_rcg2_shared_no_init_park_ops,
867*67121dadSVivek Aknurwar };
868*67121dadSVivek Aknurwar 
869*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap2_s3_clk_src = {
870*67121dadSVivek Aknurwar 	.cmd_rcgr = 0x1e3d8,
871*67121dadSVivek Aknurwar 	.mnd_width = 16,
872*67121dadSVivek Aknurwar 	.hid_width = 5,
873*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_0,
874*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,
875*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
876*67121dadSVivek Aknurwar 	.clkr.hw.init = &gcc_qupv3_wrap2_s3_clk_src_init,
877*67121dadSVivek Aknurwar };
878*67121dadSVivek Aknurwar 
879*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap2_s4_clk_src_init = {
880*67121dadSVivek Aknurwar 	.name = "gcc_qupv3_wrap2_s4_clk_src",
881*67121dadSVivek Aknurwar 	.parent_data = gcc_parent_data_0,
882*67121dadSVivek Aknurwar 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
883*67121dadSVivek Aknurwar 	.flags = CLK_SET_RATE_PARENT,
884*67121dadSVivek Aknurwar 	.ops = &clk_rcg2_shared_no_init_park_ops,
885*67121dadSVivek Aknurwar };
886*67121dadSVivek Aknurwar 
887*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap2_s4_clk_src = {
888*67121dadSVivek Aknurwar 	.cmd_rcgr = 0x1e514,
889*67121dadSVivek Aknurwar 	.mnd_width = 16,
890*67121dadSVivek Aknurwar 	.hid_width = 5,
891*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_0,
892*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,
893*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
894*67121dadSVivek Aknurwar 	.clkr.hw.init = &gcc_qupv3_wrap2_s4_clk_src_init,
895*67121dadSVivek Aknurwar };
896*67121dadSVivek Aknurwar 
897*67121dadSVivek Aknurwar static const struct freq_tbl ftbl_gcc_qupv3_wrap3_qspi_ref_clk_src[] = {
898*67121dadSVivek Aknurwar 	F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),
899*67121dadSVivek Aknurwar 	F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),
900*67121dadSVivek Aknurwar 	F(19200000, P_BI_TCXO, 1, 0, 0),
901*67121dadSVivek Aknurwar 	F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),
902*67121dadSVivek Aknurwar 	F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),
903*67121dadSVivek Aknurwar 	F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),
904*67121dadSVivek Aknurwar 	F(51200000, P_GCC_GPLL0_OUT_EVEN, 1, 64, 375),
905*67121dadSVivek Aknurwar 	F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),
906*67121dadSVivek Aknurwar 	F(66666667, P_GCC_GPLL0_OUT_MAIN, 9, 0, 0),
907*67121dadSVivek Aknurwar 	F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
908*67121dadSVivek Aknurwar 	F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),
909*67121dadSVivek Aknurwar 	F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),
910*67121dadSVivek Aknurwar 	F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
911*67121dadSVivek Aknurwar 	F(102400000, P_GCC_GPLL0_OUT_EVEN, 1, 128, 375),
912*67121dadSVivek Aknurwar 	F(112000000, P_GCC_GPLL0_OUT_EVEN, 1, 28, 75),
913*67121dadSVivek Aknurwar 	F(117964800, P_GCC_GPLL0_OUT_EVEN, 1, 6144, 15625),
914*67121dadSVivek Aknurwar 	F(120000000, P_GCC_GPLL0_OUT_EVEN, 2.5, 0, 0),
915*67121dadSVivek Aknurwar 	F(150000000, P_GCC_GPLL0_OUT_EVEN, 2, 0, 0),
916*67121dadSVivek Aknurwar 	F(240000000, P_GCC_GPLL0_OUT_MAIN, 2.5, 0, 0),
917*67121dadSVivek Aknurwar 	{ }
918*67121dadSVivek Aknurwar };
919*67121dadSVivek Aknurwar 
920*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap3_qspi_ref_clk_src_init = {
921*67121dadSVivek Aknurwar 	.name = "gcc_qupv3_wrap3_qspi_ref_clk_src",
922*67121dadSVivek Aknurwar 	.parent_data = gcc_parent_data_1,
923*67121dadSVivek Aknurwar 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
924*67121dadSVivek Aknurwar 	.flags = CLK_SET_RATE_PARENT,
925*67121dadSVivek Aknurwar 	.ops = &clk_rcg2_shared_no_init_park_ops,
926*67121dadSVivek Aknurwar };
927*67121dadSVivek Aknurwar 
928*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap3_qspi_ref_clk_src = {
929*67121dadSVivek Aknurwar 	.cmd_rcgr = 0xa8650,
930*67121dadSVivek Aknurwar 	.mnd_width = 16,
931*67121dadSVivek Aknurwar 	.hid_width = 5,
932*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_1,
933*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_qupv3_wrap3_qspi_ref_clk_src,
934*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
935*67121dadSVivek Aknurwar 	.clkr.hw.init = &gcc_qupv3_wrap3_qspi_ref_clk_src_init,
936*67121dadSVivek Aknurwar };
937*67121dadSVivek Aknurwar 
938*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap3_s0_clk_src_init = {
939*67121dadSVivek Aknurwar 	.name = "gcc_qupv3_wrap3_s0_clk_src",
940*67121dadSVivek Aknurwar 	.parent_data = gcc_parent_data_0,
941*67121dadSVivek Aknurwar 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
942*67121dadSVivek Aknurwar 	.flags = CLK_SET_RATE_PARENT,
943*67121dadSVivek Aknurwar 	.ops = &clk_rcg2_shared_no_init_park_ops,
944*67121dadSVivek Aknurwar };
945*67121dadSVivek Aknurwar 
946*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap3_s0_clk_src = {
947*67121dadSVivek Aknurwar 	.cmd_rcgr = 0xa8014,
948*67121dadSVivek Aknurwar 	.mnd_width = 16,
949*67121dadSVivek Aknurwar 	.hid_width = 5,
950*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_0,
951*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,
952*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
953*67121dadSVivek Aknurwar 	.clkr.hw.init = &gcc_qupv3_wrap3_s0_clk_src_init,
954*67121dadSVivek Aknurwar };
955*67121dadSVivek Aknurwar 
956*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap3_s2_clk_src_init = {
957*67121dadSVivek Aknurwar 	.name = "gcc_qupv3_wrap3_s2_clk_src",
958*67121dadSVivek Aknurwar 	.parent_data = gcc_parent_data_0,
959*67121dadSVivek Aknurwar 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
960*67121dadSVivek Aknurwar 	.flags = CLK_SET_RATE_PARENT,
961*67121dadSVivek Aknurwar 	.ops = &clk_rcg2_shared_no_init_park_ops,
962*67121dadSVivek Aknurwar };
963*67121dadSVivek Aknurwar 
964*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap3_s2_clk_src = {
965*67121dadSVivek Aknurwar 	.cmd_rcgr = 0xa8168,
966*67121dadSVivek Aknurwar 	.mnd_width = 16,
967*67121dadSVivek Aknurwar 	.hid_width = 5,
968*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_0,
969*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s4_clk_src,
970*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
971*67121dadSVivek Aknurwar 	.clkr.hw.init = &gcc_qupv3_wrap3_s2_clk_src_init,
972*67121dadSVivek Aknurwar };
973*67121dadSVivek Aknurwar 
974*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap3_s3_clk_src_init = {
975*67121dadSVivek Aknurwar 	.name = "gcc_qupv3_wrap3_s3_clk_src",
976*67121dadSVivek Aknurwar 	.parent_data = gcc_parent_data_0,
977*67121dadSVivek Aknurwar 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
978*67121dadSVivek Aknurwar 	.flags = CLK_SET_RATE_PARENT,
979*67121dadSVivek Aknurwar 	.ops = &clk_rcg2_shared_no_init_park_ops,
980*67121dadSVivek Aknurwar };
981*67121dadSVivek Aknurwar 
982*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap3_s3_clk_src = {
983*67121dadSVivek Aknurwar 	.cmd_rcgr = 0xa82a4,
984*67121dadSVivek Aknurwar 	.mnd_width = 16,
985*67121dadSVivek Aknurwar 	.hid_width = 5,
986*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_0,
987*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,
988*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
989*67121dadSVivek Aknurwar 	.clkr.hw.init = &gcc_qupv3_wrap3_s3_clk_src_init,
990*67121dadSVivek Aknurwar };
991*67121dadSVivek Aknurwar 
992*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap3_s4_clk_src_init = {
993*67121dadSVivek Aknurwar 	.name = "gcc_qupv3_wrap3_s4_clk_src",
994*67121dadSVivek Aknurwar 	.parent_data = gcc_parent_data_0,
995*67121dadSVivek Aknurwar 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
996*67121dadSVivek Aknurwar 	.flags = CLK_SET_RATE_PARENT,
997*67121dadSVivek Aknurwar 	.ops = &clk_rcg2_shared_no_init_park_ops,
998*67121dadSVivek Aknurwar };
999*67121dadSVivek Aknurwar 
1000*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap3_s4_clk_src = {
1001*67121dadSVivek Aknurwar 	.cmd_rcgr = 0xa83e0,
1002*67121dadSVivek Aknurwar 	.mnd_width = 16,
1003*67121dadSVivek Aknurwar 	.hid_width = 5,
1004*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_0,
1005*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,
1006*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
1007*67121dadSVivek Aknurwar 	.clkr.hw.init = &gcc_qupv3_wrap3_s4_clk_src_init,
1008*67121dadSVivek Aknurwar };
1009*67121dadSVivek Aknurwar 
1010*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap3_s5_clk_src_init = {
1011*67121dadSVivek Aknurwar 	.name = "gcc_qupv3_wrap3_s5_clk_src",
1012*67121dadSVivek Aknurwar 	.parent_data = gcc_parent_data_0,
1013*67121dadSVivek Aknurwar 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1014*67121dadSVivek Aknurwar 	.flags = CLK_SET_RATE_PARENT,
1015*67121dadSVivek Aknurwar 	.ops = &clk_rcg2_shared_no_init_park_ops,
1016*67121dadSVivek Aknurwar };
1017*67121dadSVivek Aknurwar 
1018*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap3_s5_clk_src = {
1019*67121dadSVivek Aknurwar 	.cmd_rcgr = 0xa851c,
1020*67121dadSVivek Aknurwar 	.mnd_width = 16,
1021*67121dadSVivek Aknurwar 	.hid_width = 5,
1022*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_0,
1023*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s4_clk_src,
1024*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
1025*67121dadSVivek Aknurwar 	.clkr.hw.init = &gcc_qupv3_wrap3_s5_clk_src_init,
1026*67121dadSVivek Aknurwar };
1027*67121dadSVivek Aknurwar 
1028*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap4_s0_clk_src_init = {
1029*67121dadSVivek Aknurwar 	.name = "gcc_qupv3_wrap4_s0_clk_src",
1030*67121dadSVivek Aknurwar 	.parent_data = gcc_parent_data_1,
1031*67121dadSVivek Aknurwar 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
1032*67121dadSVivek Aknurwar 	.flags = CLK_SET_RATE_PARENT,
1033*67121dadSVivek Aknurwar 	.ops = &clk_rcg2_shared_no_init_park_ops,
1034*67121dadSVivek Aknurwar };
1035*67121dadSVivek Aknurwar 
1036*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap4_s0_clk_src = {
1037*67121dadSVivek Aknurwar 	.cmd_rcgr = 0xa9014,
1038*67121dadSVivek Aknurwar 	.mnd_width = 16,
1039*67121dadSVivek Aknurwar 	.hid_width = 5,
1040*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_1,
1041*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s4_clk_src,
1042*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
1043*67121dadSVivek Aknurwar 	.clkr.hw.init = &gcc_qupv3_wrap4_s0_clk_src_init,
1044*67121dadSVivek Aknurwar };
1045*67121dadSVivek Aknurwar 
1046*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap4_s1_clk_src_init = {
1047*67121dadSVivek Aknurwar 	.name = "gcc_qupv3_wrap4_s1_clk_src",
1048*67121dadSVivek Aknurwar 	.parent_data = gcc_parent_data_1,
1049*67121dadSVivek Aknurwar 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
1050*67121dadSVivek Aknurwar 	.flags = CLK_SET_RATE_PARENT,
1051*67121dadSVivek Aknurwar 	.ops = &clk_rcg2_shared_no_init_park_ops,
1052*67121dadSVivek Aknurwar };
1053*67121dadSVivek Aknurwar 
1054*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap4_s1_clk_src = {
1055*67121dadSVivek Aknurwar 	.cmd_rcgr = 0xa9150,
1056*67121dadSVivek Aknurwar 	.mnd_width = 16,
1057*67121dadSVivek Aknurwar 	.hid_width = 5,
1058*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_1,
1059*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s4_clk_src,
1060*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
1061*67121dadSVivek Aknurwar 	.clkr.hw.init = &gcc_qupv3_wrap4_s1_clk_src_init,
1062*67121dadSVivek Aknurwar };
1063*67121dadSVivek Aknurwar 
1064*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap4_s2_clk_src_init = {
1065*67121dadSVivek Aknurwar 	.name = "gcc_qupv3_wrap4_s2_clk_src",
1066*67121dadSVivek Aknurwar 	.parent_data = gcc_parent_data_1,
1067*67121dadSVivek Aknurwar 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
1068*67121dadSVivek Aknurwar 	.flags = CLK_SET_RATE_PARENT,
1069*67121dadSVivek Aknurwar 	.ops = &clk_rcg2_shared_no_init_park_ops,
1070*67121dadSVivek Aknurwar };
1071*67121dadSVivek Aknurwar 
1072*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap4_s2_clk_src = {
1073*67121dadSVivek Aknurwar 	.cmd_rcgr = 0xa928c,
1074*67121dadSVivek Aknurwar 	.mnd_width = 16,
1075*67121dadSVivek Aknurwar 	.hid_width = 5,
1076*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_1,
1077*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s4_clk_src,
1078*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
1079*67121dadSVivek Aknurwar 	.clkr.hw.init = &gcc_qupv3_wrap4_s2_clk_src_init,
1080*67121dadSVivek Aknurwar };
1081*67121dadSVivek Aknurwar 
1082*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap4_s3_clk_src_init = {
1083*67121dadSVivek Aknurwar 	.name = "gcc_qupv3_wrap4_s3_clk_src",
1084*67121dadSVivek Aknurwar 	.parent_data = gcc_parent_data_1,
1085*67121dadSVivek Aknurwar 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
1086*67121dadSVivek Aknurwar 	.flags = CLK_SET_RATE_PARENT,
1087*67121dadSVivek Aknurwar 	.ops = &clk_rcg2_shared_no_init_park_ops,
1088*67121dadSVivek Aknurwar };
1089*67121dadSVivek Aknurwar 
1090*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap4_s3_clk_src = {
1091*67121dadSVivek Aknurwar 	.cmd_rcgr = 0xa93c8,
1092*67121dadSVivek Aknurwar 	.mnd_width = 16,
1093*67121dadSVivek Aknurwar 	.hid_width = 5,
1094*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_1,
1095*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,
1096*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
1097*67121dadSVivek Aknurwar 	.clkr.hw.init = &gcc_qupv3_wrap4_s3_clk_src_init,
1098*67121dadSVivek Aknurwar };
1099*67121dadSVivek Aknurwar 
1100*67121dadSVivek Aknurwar static struct clk_init_data gcc_qupv3_wrap4_s4_clk_src_init = {
1101*67121dadSVivek Aknurwar 	.name = "gcc_qupv3_wrap4_s4_clk_src",
1102*67121dadSVivek Aknurwar 	.parent_data = gcc_parent_data_1,
1103*67121dadSVivek Aknurwar 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
1104*67121dadSVivek Aknurwar 	.flags = CLK_SET_RATE_PARENT,
1105*67121dadSVivek Aknurwar 	.ops = &clk_rcg2_shared_no_init_park_ops,
1106*67121dadSVivek Aknurwar };
1107*67121dadSVivek Aknurwar 
1108*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_qupv3_wrap4_s4_clk_src = {
1109*67121dadSVivek Aknurwar 	.cmd_rcgr = 0xa9504,
1110*67121dadSVivek Aknurwar 	.mnd_width = 16,
1111*67121dadSVivek Aknurwar 	.hid_width = 5,
1112*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_1,
1113*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,
1114*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
1115*67121dadSVivek Aknurwar 	.clkr.hw.init = &gcc_qupv3_wrap4_s4_clk_src_init,
1116*67121dadSVivek Aknurwar };
1117*67121dadSVivek Aknurwar 
1118*67121dadSVivek Aknurwar static const struct freq_tbl ftbl_gcc_sdcc2_apps_clk_src[] = {
1119*67121dadSVivek Aknurwar 	F(400000, P_BI_TCXO, 12, 1, 4),
1120*67121dadSVivek Aknurwar 	F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),
1121*67121dadSVivek Aknurwar 	F(37500000, P_GCC_GPLL0_OUT_EVEN, 8, 0, 0),
1122*67121dadSVivek Aknurwar 	F(50000000, P_GCC_GPLL0_OUT_EVEN, 6, 0, 0),
1123*67121dadSVivek Aknurwar 	F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
1124*67121dadSVivek Aknurwar 	F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0),
1125*67121dadSVivek Aknurwar 	F(202000000, P_GCC_GPLL9_OUT_MAIN, 4, 0, 0),
1126*67121dadSVivek Aknurwar 	{ }
1127*67121dadSVivek Aknurwar };
1128*67121dadSVivek Aknurwar 
1129*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_sdcc2_apps_clk_src = {
1130*67121dadSVivek Aknurwar 	.cmd_rcgr = 0x1401c,
1131*67121dadSVivek Aknurwar 	.mnd_width = 8,
1132*67121dadSVivek Aknurwar 	.hid_width = 5,
1133*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_8,
1134*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_sdcc2_apps_clk_src,
1135*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
1136*67121dadSVivek Aknurwar 	.clkr.hw.init = &(const struct clk_init_data) {
1137*67121dadSVivek Aknurwar 		.name = "gcc_sdcc2_apps_clk_src",
1138*67121dadSVivek Aknurwar 		.parent_data = gcc_parent_data_8,
1139*67121dadSVivek Aknurwar 		.num_parents = ARRAY_SIZE(gcc_parent_data_8),
1140*67121dadSVivek Aknurwar 		.flags = CLK_SET_RATE_PARENT,
1141*67121dadSVivek Aknurwar 		.ops = &clk_rcg2_shared_floor_ops,
1142*67121dadSVivek Aknurwar 	},
1143*67121dadSVivek Aknurwar };
1144*67121dadSVivek Aknurwar 
1145*67121dadSVivek Aknurwar static const struct freq_tbl ftbl_gcc_sdcc4_apps_clk_src[] = {
1146*67121dadSVivek Aknurwar 	F(400000, P_BI_TCXO, 12, 1, 4),
1147*67121dadSVivek Aknurwar 	F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),
1148*67121dadSVivek Aknurwar 	F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
1149*67121dadSVivek Aknurwar 	{ }
1150*67121dadSVivek Aknurwar };
1151*67121dadSVivek Aknurwar 
1152*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_sdcc4_apps_clk_src = {
1153*67121dadSVivek Aknurwar 	.cmd_rcgr = 0x1601c,
1154*67121dadSVivek Aknurwar 	.mnd_width = 8,
1155*67121dadSVivek Aknurwar 	.hid_width = 5,
1156*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_0,
1157*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_sdcc4_apps_clk_src,
1158*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
1159*67121dadSVivek Aknurwar 	.clkr.hw.init = &(const struct clk_init_data) {
1160*67121dadSVivek Aknurwar 		.name = "gcc_sdcc4_apps_clk_src",
1161*67121dadSVivek Aknurwar 		.parent_data = gcc_parent_data_0,
1162*67121dadSVivek Aknurwar 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1163*67121dadSVivek Aknurwar 		.flags = CLK_SET_RATE_PARENT,
1164*67121dadSVivek Aknurwar 		.ops = &clk_rcg2_shared_floor_ops,
1165*67121dadSVivek Aknurwar 	},
1166*67121dadSVivek Aknurwar };
1167*67121dadSVivek Aknurwar 
1168*67121dadSVivek Aknurwar static const struct freq_tbl ftbl_gcc_ufs_phy_axi_clk_src[] = {
1169*67121dadSVivek Aknurwar 	F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),
1170*67121dadSVivek Aknurwar 	F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0),
1171*67121dadSVivek Aknurwar 	F(225000000, P_GCC_GPLL5_OUT_MAIN, 4, 0, 0),
1172*67121dadSVivek Aknurwar 	F(450000000, P_GCC_GPLL5_OUT_MAIN, 2, 0, 0),
1173*67121dadSVivek Aknurwar 	{ }
1174*67121dadSVivek Aknurwar };
1175*67121dadSVivek Aknurwar 
1176*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_ufs_phy_axi_clk_src = {
1177*67121dadSVivek Aknurwar 	.cmd_rcgr = 0x77034,
1178*67121dadSVivek Aknurwar 	.mnd_width = 8,
1179*67121dadSVivek Aknurwar 	.hid_width = 5,
1180*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_5,
1181*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_ufs_phy_axi_clk_src,
1182*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
1183*67121dadSVivek Aknurwar 	.clkr.hw.init = &(const struct clk_init_data) {
1184*67121dadSVivek Aknurwar 		.name = "gcc_ufs_phy_axi_clk_src",
1185*67121dadSVivek Aknurwar 		.parent_data = gcc_parent_data_5,
1186*67121dadSVivek Aknurwar 		.num_parents = ARRAY_SIZE(gcc_parent_data_5),
1187*67121dadSVivek Aknurwar 		.flags = CLK_SET_RATE_PARENT,
1188*67121dadSVivek Aknurwar 		.ops = &clk_rcg2_shared_ops,
1189*67121dadSVivek Aknurwar 	},
1190*67121dadSVivek Aknurwar };
1191*67121dadSVivek Aknurwar 
1192*67121dadSVivek Aknurwar static const struct freq_tbl ftbl_gcc_ufs_phy_ice_core_clk_src[] = {
1193*67121dadSVivek Aknurwar 	F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0),
1194*67121dadSVivek Aknurwar 	F(225000000, P_GCC_GPLL5_OUT_MAIN, 4, 0, 0),
1195*67121dadSVivek Aknurwar 	F(450000000, P_GCC_GPLL5_OUT_MAIN, 2, 0, 0),
1196*67121dadSVivek Aknurwar 	{ }
1197*67121dadSVivek Aknurwar };
1198*67121dadSVivek Aknurwar 
1199*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src = {
1200*67121dadSVivek Aknurwar 	.cmd_rcgr = 0x7708c,
1201*67121dadSVivek Aknurwar 	.mnd_width = 0,
1202*67121dadSVivek Aknurwar 	.hid_width = 5,
1203*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_5,
1204*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_ufs_phy_ice_core_clk_src,
1205*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
1206*67121dadSVivek Aknurwar 	.clkr.hw.init = &(const struct clk_init_data) {
1207*67121dadSVivek Aknurwar 		.name = "gcc_ufs_phy_ice_core_clk_src",
1208*67121dadSVivek Aknurwar 		.parent_data = gcc_parent_data_5,
1209*67121dadSVivek Aknurwar 		.num_parents = ARRAY_SIZE(gcc_parent_data_5),
1210*67121dadSVivek Aknurwar 		.flags = CLK_SET_RATE_PARENT,
1211*67121dadSVivek Aknurwar 		.ops = &clk_rcg2_shared_ops,
1212*67121dadSVivek Aknurwar 	},
1213*67121dadSVivek Aknurwar };
1214*67121dadSVivek Aknurwar 
1215*67121dadSVivek Aknurwar static const struct freq_tbl ftbl_gcc_ufs_phy_phy_aux_clk_src[] = {
1216*67121dadSVivek Aknurwar 	F(9600000, P_BI_TCXO, 2, 0, 0),
1217*67121dadSVivek Aknurwar 	F(19200000, P_BI_TCXO, 1, 0, 0),
1218*67121dadSVivek Aknurwar 	{ }
1219*67121dadSVivek Aknurwar };
1220*67121dadSVivek Aknurwar 
1221*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src = {
1222*67121dadSVivek Aknurwar 	.cmd_rcgr = 0x770c0,
1223*67121dadSVivek Aknurwar 	.mnd_width = 0,
1224*67121dadSVivek Aknurwar 	.hid_width = 5,
1225*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_3,
1226*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_ufs_phy_phy_aux_clk_src,
1227*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
1228*67121dadSVivek Aknurwar 	.clkr.hw.init = &(const struct clk_init_data) {
1229*67121dadSVivek Aknurwar 		.name = "gcc_ufs_phy_phy_aux_clk_src",
1230*67121dadSVivek Aknurwar 		.parent_data = gcc_parent_data_3,
1231*67121dadSVivek Aknurwar 		.num_parents = ARRAY_SIZE(gcc_parent_data_3),
1232*67121dadSVivek Aknurwar 		.flags = CLK_SET_RATE_PARENT,
1233*67121dadSVivek Aknurwar 		.ops = &clk_rcg2_shared_ops,
1234*67121dadSVivek Aknurwar 	},
1235*67121dadSVivek Aknurwar };
1236*67121dadSVivek Aknurwar 
1237*67121dadSVivek Aknurwar static const struct freq_tbl ftbl_gcc_ufs_phy_unipro_5_core_clk_src[] = {
1238*67121dadSVivek Aknurwar 	F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
1239*67121dadSVivek Aknurwar 	F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0),
1240*67121dadSVivek Aknurwar 	F(201500000, P_GCC_GPLL4_OUT_MAIN, 4, 0, 0),
1241*67121dadSVivek Aknurwar 	F(403000000, P_GCC_GPLL4_OUT_MAIN, 2, 0, 0),
1242*67121dadSVivek Aknurwar 	{ }
1243*67121dadSVivek Aknurwar };
1244*67121dadSVivek Aknurwar 
1245*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_ufs_phy_unipro_5_core_clk_src = {
1246*67121dadSVivek Aknurwar 	.cmd_rcgr = 0x770a4,
1247*67121dadSVivek Aknurwar 	.mnd_width = 0,
1248*67121dadSVivek Aknurwar 	.hid_width = 5,
1249*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_5,
1250*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_ufs_phy_unipro_5_core_clk_src,
1251*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
1252*67121dadSVivek Aknurwar 	.clkr.hw.init = &(const struct clk_init_data) {
1253*67121dadSVivek Aknurwar 		.name = "gcc_ufs_phy_unipro_5_core_clk_src",
1254*67121dadSVivek Aknurwar 		.parent_data = gcc_parent_data_5,
1255*67121dadSVivek Aknurwar 		.num_parents = ARRAY_SIZE(gcc_parent_data_5),
1256*67121dadSVivek Aknurwar 		.flags = CLK_SET_RATE_PARENT,
1257*67121dadSVivek Aknurwar 		.ops = &clk_rcg2_shared_ops,
1258*67121dadSVivek Aknurwar 	},
1259*67121dadSVivek Aknurwar };
1260*67121dadSVivek Aknurwar 
1261*67121dadSVivek Aknurwar static const struct freq_tbl ftbl_gcc_usb30_prim_master_clk_src[] = {
1262*67121dadSVivek Aknurwar 	F(66666667, P_GCC_GPLL0_OUT_EVEN, 4.5, 0, 0),
1263*67121dadSVivek Aknurwar 	F(133333333, P_GCC_GPLL0_OUT_MAIN, 4.5, 0, 0),
1264*67121dadSVivek Aknurwar 	F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0),
1265*67121dadSVivek Aknurwar 	F(240000000, P_GCC_GPLL0_OUT_MAIN, 2.5, 0, 0),
1266*67121dadSVivek Aknurwar 	{ }
1267*67121dadSVivek Aknurwar };
1268*67121dadSVivek Aknurwar 
1269*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_usb30_prim_master_clk_src = {
1270*67121dadSVivek Aknurwar 	.cmd_rcgr = 0x39034,
1271*67121dadSVivek Aknurwar 	.mnd_width = 8,
1272*67121dadSVivek Aknurwar 	.hid_width = 5,
1273*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_0,
1274*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_usb30_prim_master_clk_src,
1275*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
1276*67121dadSVivek Aknurwar 	.clkr.hw.init = &(const struct clk_init_data) {
1277*67121dadSVivek Aknurwar 		.name = "gcc_usb30_prim_master_clk_src",
1278*67121dadSVivek Aknurwar 		.parent_data = gcc_parent_data_0,
1279*67121dadSVivek Aknurwar 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1280*67121dadSVivek Aknurwar 		.flags = CLK_SET_RATE_PARENT,
1281*67121dadSVivek Aknurwar 		.ops = &clk_rcg2_shared_no_init_park_ops,
1282*67121dadSVivek Aknurwar 	},
1283*67121dadSVivek Aknurwar };
1284*67121dadSVivek Aknurwar 
1285*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src = {
1286*67121dadSVivek Aknurwar 	.cmd_rcgr = 0x3904c,
1287*67121dadSVivek Aknurwar 	.mnd_width = 0,
1288*67121dadSVivek Aknurwar 	.hid_width = 5,
1289*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_0,
1290*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
1291*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
1292*67121dadSVivek Aknurwar 	.clkr.hw.init = &(const struct clk_init_data) {
1293*67121dadSVivek Aknurwar 		.name = "gcc_usb30_prim_mock_utmi_clk_src",
1294*67121dadSVivek Aknurwar 		.parent_data = gcc_parent_data_0,
1295*67121dadSVivek Aknurwar 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1296*67121dadSVivek Aknurwar 		.flags = CLK_SET_RATE_PARENT,
1297*67121dadSVivek Aknurwar 		.ops = &clk_rcg2_shared_no_init_park_ops,
1298*67121dadSVivek Aknurwar 	},
1299*67121dadSVivek Aknurwar };
1300*67121dadSVivek Aknurwar 
1301*67121dadSVivek Aknurwar static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src = {
1302*67121dadSVivek Aknurwar 	.cmd_rcgr = 0x39078,
1303*67121dadSVivek Aknurwar 	.mnd_width = 0,
1304*67121dadSVivek Aknurwar 	.hid_width = 5,
1305*67121dadSVivek Aknurwar 	.parent_map = gcc_parent_map_4,
1306*67121dadSVivek Aknurwar 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
1307*67121dadSVivek Aknurwar 	.hw_clk_ctrl = true,
1308*67121dadSVivek Aknurwar 	.clkr.hw.init = &(const struct clk_init_data) {
1309*67121dadSVivek Aknurwar 		.name = "gcc_usb3_prim_phy_aux_clk_src",
1310*67121dadSVivek Aknurwar 		.parent_data = gcc_parent_data_4,
1311*67121dadSVivek Aknurwar 		.num_parents = ARRAY_SIZE(gcc_parent_data_4),
1312*67121dadSVivek Aknurwar 		.flags = CLK_SET_RATE_PARENT,
1313*67121dadSVivek Aknurwar 		.ops = &clk_rcg2_shared_no_init_park_ops,
1314*67121dadSVivek Aknurwar 	},
1315*67121dadSVivek Aknurwar };
1316*67121dadSVivek Aknurwar 
1317*67121dadSVivek Aknurwar static struct clk_regmap_div gcc_pcie_0_pipe_div_clk_src = {
1318*67121dadSVivek Aknurwar 	.reg = 0x6b0a4,
1319*67121dadSVivek Aknurwar 	.shift = 0,
1320*67121dadSVivek Aknurwar 	.width = 4,
1321*67121dadSVivek Aknurwar 	.clkr.hw.init = &(const struct clk_init_data) {
1322*67121dadSVivek Aknurwar 		.name = "gcc_pcie_0_pipe_div_clk_src",
1323*67121dadSVivek Aknurwar 		.parent_hws = (const struct clk_hw*[]) {
1324*67121dadSVivek Aknurwar 			&gcc_pcie_0_pipe_clk_src.clkr.hw,
1325*67121dadSVivek Aknurwar 		},
1326*67121dadSVivek Aknurwar 		.num_parents = 1,
1327*67121dadSVivek Aknurwar 		.flags = CLK_SET_RATE_PARENT,
1328*67121dadSVivek Aknurwar 		.ops = &clk_regmap_div_ro_ops,
1329*67121dadSVivek Aknurwar 	},
1330*67121dadSVivek Aknurwar };
1331*67121dadSVivek Aknurwar 
1332*67121dadSVivek Aknurwar static struct clk_regmap_div gcc_pcie_1_pipe_div_clk_src = {
1333*67121dadSVivek Aknurwar 	.reg = 0x670a0,
1334*67121dadSVivek Aknurwar 	.shift = 0,
1335*67121dadSVivek Aknurwar 	.width = 4,
1336*67121dadSVivek Aknurwar 	.clkr.hw.init = &(const struct clk_init_data) {
1337*67121dadSVivek Aknurwar 		.name = "gcc_pcie_1_pipe_div_clk_src",
1338*67121dadSVivek Aknurwar 		.parent_hws = (const struct clk_hw*[]) {
1339*67121dadSVivek Aknurwar 			&gcc_pcie_1_pipe_clk_src.clkr.hw,
1340*67121dadSVivek Aknurwar 		},
1341*67121dadSVivek Aknurwar 		.num_parents = 1,
1342*67121dadSVivek Aknurwar 		.flags = CLK_SET_RATE_PARENT,
1343*67121dadSVivek Aknurwar 		.ops = &clk_regmap_div_ro_ops,
1344*67121dadSVivek Aknurwar 	},
1345*67121dadSVivek Aknurwar };
1346*67121dadSVivek Aknurwar 
1347*67121dadSVivek Aknurwar static struct clk_regmap_div gcc_qupv3_wrap1_s2_clk_src = {
1348*67121dadSVivek Aknurwar 	.reg = 0x1828c,
1349*67121dadSVivek Aknurwar 	.shift = 0,
1350*67121dadSVivek Aknurwar 	.width = 4,
1351*67121dadSVivek Aknurwar 	.clkr.hw.init = &(const struct clk_init_data) {
1352*67121dadSVivek Aknurwar 		.name = "gcc_qupv3_wrap1_s2_clk_src",
1353*67121dadSVivek Aknurwar 		.parent_hws = (const struct clk_hw*[]) {
1354*67121dadSVivek Aknurwar 			&gcc_qupv3_wrap1_qspi_ref_clk_src.clkr.hw,
1355*67121dadSVivek Aknurwar 		},
1356*67121dadSVivek Aknurwar 		.num_parents = 1,
1357*67121dadSVivek Aknurwar 		.flags = CLK_SET_RATE_PARENT,
1358*67121dadSVivek Aknurwar 		.ops = &clk_regmap_div_ro_ops,
1359*67121dadSVivek Aknurwar 	},
1360*67121dadSVivek Aknurwar };
1361*67121dadSVivek Aknurwar 
1362*67121dadSVivek Aknurwar static struct clk_regmap_div gcc_qupv3_wrap3_s1_clk_src = {
1363*67121dadSVivek Aknurwar 	.reg = 0xa8154,
1364*67121dadSVivek Aknurwar 	.shift = 0,
1365*67121dadSVivek Aknurwar 	.width = 4,
1366*67121dadSVivek Aknurwar 	.clkr.hw.init = &(const struct clk_init_data) {
1367*67121dadSVivek Aknurwar 		.name = "gcc_qupv3_wrap3_s1_clk_src",
1368*67121dadSVivek Aknurwar 		.parent_hws = (const struct clk_hw*[]) {
1369*67121dadSVivek Aknurwar 			&gcc_qupv3_wrap3_qspi_ref_clk_src.clkr.hw,
1370*67121dadSVivek Aknurwar 		},
1371*67121dadSVivek Aknurwar 		.num_parents = 1,
1372*67121dadSVivek Aknurwar 		.flags = CLK_SET_RATE_PARENT,
1373*67121dadSVivek Aknurwar 		.ops = &clk_regmap_div_ro_ops,
1374*67121dadSVivek Aknurwar 	},
1375*67121dadSVivek Aknurwar };
1376*67121dadSVivek Aknurwar 
1377*67121dadSVivek Aknurwar static struct clk_regmap_div gcc_usb30_prim_mock_utmi_postdiv_clk_src = {
1378*67121dadSVivek Aknurwar 	.reg = 0x39064,
1379*67121dadSVivek Aknurwar 	.shift = 0,
1380*67121dadSVivek Aknurwar 	.width = 4,
1381*67121dadSVivek Aknurwar 	.clkr.hw.init = &(const struct clk_init_data) {
1382*67121dadSVivek Aknurwar 		.name = "gcc_usb30_prim_mock_utmi_postdiv_clk_src",
1383*67121dadSVivek Aknurwar 		.parent_hws = (const struct clk_hw*[]) {
1384*67121dadSVivek Aknurwar 			&gcc_usb30_prim_mock_utmi_clk_src.clkr.hw,
1385*67121dadSVivek Aknurwar 		},
1386*67121dadSVivek Aknurwar 		.num_parents = 1,
1387*67121dadSVivek Aknurwar 		.flags = CLK_SET_RATE_PARENT,
1388*67121dadSVivek Aknurwar 		.ops = &clk_regmap_div_ro_ops,
1389*67121dadSVivek Aknurwar 	},
1390*67121dadSVivek Aknurwar };
1391*67121dadSVivek Aknurwar 
1392*67121dadSVivek Aknurwar static struct clk_branch gcc_aggre_noc_pcie_axi_clk = {
1393*67121dadSVivek Aknurwar 	.halt_reg = 0x10068,
1394*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_SKIP,
1395*67121dadSVivek Aknurwar 	.hwcg_reg = 0x10068,
1396*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
1397*67121dadSVivek Aknurwar 	.clkr = {
1398*67121dadSVivek Aknurwar 		.enable_reg = 0x52000,
1399*67121dadSVivek Aknurwar 		.enable_mask = BIT(24),
1400*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
1401*67121dadSVivek Aknurwar 			.name = "gcc_aggre_noc_pcie_axi_clk",
1402*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
1403*67121dadSVivek Aknurwar 		},
1404*67121dadSVivek Aknurwar 	},
1405*67121dadSVivek Aknurwar };
1406*67121dadSVivek Aknurwar 
1407*67121dadSVivek Aknurwar static struct clk_branch gcc_aggre_stardustnoc_usb3_prim_axi_clk = {
1408*67121dadSVivek Aknurwar 	.halt_reg = 0x39094,
1409*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
1410*67121dadSVivek Aknurwar 	.hwcg_reg = 0x39094,
1411*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
1412*67121dadSVivek Aknurwar 	.clkr = {
1413*67121dadSVivek Aknurwar 		.enable_reg = 0x39094,
1414*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
1415*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
1416*67121dadSVivek Aknurwar 			.name = "gcc_aggre_stardustnoc_usb3_prim_axi_clk",
1417*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
1418*67121dadSVivek Aknurwar 				&gcc_usb30_prim_master_clk_src.clkr.hw,
1419*67121dadSVivek Aknurwar 			},
1420*67121dadSVivek Aknurwar 			.num_parents = 1,
1421*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
1422*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
1423*67121dadSVivek Aknurwar 		},
1424*67121dadSVivek Aknurwar 	},
1425*67121dadSVivek Aknurwar };
1426*67121dadSVivek Aknurwar 
1427*67121dadSVivek Aknurwar static struct clk_branch gcc_aggre_ufs_phy_axi_clk = {
1428*67121dadSVivek Aknurwar 	.halt_reg = 0x770f0,
1429*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
1430*67121dadSVivek Aknurwar 	.hwcg_reg = 0x770f0,
1431*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
1432*67121dadSVivek Aknurwar 	.clkr = {
1433*67121dadSVivek Aknurwar 		.enable_reg = 0x770f0,
1434*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
1435*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
1436*67121dadSVivek Aknurwar 			.name = "gcc_aggre_ufs_phy_axi_clk",
1437*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
1438*67121dadSVivek Aknurwar 				&gcc_ufs_phy_axi_clk_src.clkr.hw,
1439*67121dadSVivek Aknurwar 			},
1440*67121dadSVivek Aknurwar 			.num_parents = 1,
1441*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
1442*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
1443*67121dadSVivek Aknurwar 		},
1444*67121dadSVivek Aknurwar 	},
1445*67121dadSVivek Aknurwar };
1446*67121dadSVivek Aknurwar 
1447*67121dadSVivek Aknurwar static struct clk_branch gcc_boot_rom_ahb_clk = {
1448*67121dadSVivek Aknurwar 	.halt_reg = 0x38004,
1449*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
1450*67121dadSVivek Aknurwar 	.hwcg_reg = 0x38004,
1451*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
1452*67121dadSVivek Aknurwar 	.clkr = {
1453*67121dadSVivek Aknurwar 		.enable_reg = 0x52010,
1454*67121dadSVivek Aknurwar 		.enable_mask = BIT(18),
1455*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
1456*67121dadSVivek Aknurwar 			.name = "gcc_boot_rom_ahb_clk",
1457*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
1458*67121dadSVivek Aknurwar 		},
1459*67121dadSVivek Aknurwar 	},
1460*67121dadSVivek Aknurwar };
1461*67121dadSVivek Aknurwar 
1462*67121dadSVivek Aknurwar static struct clk_branch gcc_camera_hf_axi_clk = {
1463*67121dadSVivek Aknurwar 	.halt_reg = 0x26014,
1464*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_SKIP,
1465*67121dadSVivek Aknurwar 	.hwcg_reg = 0x26014,
1466*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
1467*67121dadSVivek Aknurwar 	.clkr = {
1468*67121dadSVivek Aknurwar 		.enable_reg = 0x26014,
1469*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
1470*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
1471*67121dadSVivek Aknurwar 			.name = "gcc_camera_hf_axi_clk",
1472*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
1473*67121dadSVivek Aknurwar 		},
1474*67121dadSVivek Aknurwar 	},
1475*67121dadSVivek Aknurwar };
1476*67121dadSVivek Aknurwar 
1477*67121dadSVivek Aknurwar static struct clk_branch gcc_camera_sf_axi_clk = {
1478*67121dadSVivek Aknurwar 	.halt_reg = 0x2601c,
1479*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_SKIP,
1480*67121dadSVivek Aknurwar 	.hwcg_reg = 0x2601c,
1481*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
1482*67121dadSVivek Aknurwar 	.clkr = {
1483*67121dadSVivek Aknurwar 		.enable_reg = 0x2601c,
1484*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
1485*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
1486*67121dadSVivek Aknurwar 			.name = "gcc_camera_sf_axi_clk",
1487*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
1488*67121dadSVivek Aknurwar 		},
1489*67121dadSVivek Aknurwar 	},
1490*67121dadSVivek Aknurwar };
1491*67121dadSVivek Aknurwar 
1492*67121dadSVivek Aknurwar static struct clk_branch gcc_cfg_noc_pcie_anoc_ahb_clk = {
1493*67121dadSVivek Aknurwar 	.halt_reg = 0x10050,
1494*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_SKIP,
1495*67121dadSVivek Aknurwar 	.hwcg_reg = 0x10050,
1496*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
1497*67121dadSVivek Aknurwar 	.clkr = {
1498*67121dadSVivek Aknurwar 		.enable_reg = 0x52000,
1499*67121dadSVivek Aknurwar 		.enable_mask = BIT(20),
1500*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
1501*67121dadSVivek Aknurwar 			.name = "gcc_cfg_noc_pcie_anoc_ahb_clk",
1502*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
1503*67121dadSVivek Aknurwar 		},
1504*67121dadSVivek Aknurwar 	},
1505*67121dadSVivek Aknurwar };
1506*67121dadSVivek Aknurwar 
1507*67121dadSVivek Aknurwar static struct clk_branch gcc_cfg_noc_usb3_prim_axi_clk = {
1508*67121dadSVivek Aknurwar 	.halt_reg = 0x39090,
1509*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
1510*67121dadSVivek Aknurwar 	.hwcg_reg = 0x39090,
1511*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
1512*67121dadSVivek Aknurwar 	.clkr = {
1513*67121dadSVivek Aknurwar 		.enable_reg = 0x39090,
1514*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
1515*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
1516*67121dadSVivek Aknurwar 			.name = "gcc_cfg_noc_usb3_prim_axi_clk",
1517*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
1518*67121dadSVivek Aknurwar 				&gcc_usb30_prim_master_clk_src.clkr.hw,
1519*67121dadSVivek Aknurwar 			},
1520*67121dadSVivek Aknurwar 			.num_parents = 1,
1521*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
1522*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
1523*67121dadSVivek Aknurwar 		},
1524*67121dadSVivek Aknurwar 	},
1525*67121dadSVivek Aknurwar };
1526*67121dadSVivek Aknurwar 
1527*67121dadSVivek Aknurwar static struct clk_branch gcc_cnoc_pcie_sf_axi_clk = {
1528*67121dadSVivek Aknurwar 	.halt_reg = 0x10058,
1529*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
1530*67121dadSVivek Aknurwar 	.clkr = {
1531*67121dadSVivek Aknurwar 		.enable_reg = 0x52008,
1532*67121dadSVivek Aknurwar 		.enable_mask = BIT(6),
1533*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
1534*67121dadSVivek Aknurwar 			.name = "gcc_cnoc_pcie_sf_axi_clk",
1535*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
1536*67121dadSVivek Aknurwar 		},
1537*67121dadSVivek Aknurwar 	},
1538*67121dadSVivek Aknurwar };
1539*67121dadSVivek Aknurwar 
1540*67121dadSVivek Aknurwar static struct clk_branch gcc_eva_axi0_clk = {
1541*67121dadSVivek Aknurwar 	.halt_reg = 0x9f008,
1542*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_SKIP,
1543*67121dadSVivek Aknurwar 	.hwcg_reg = 0x9f008,
1544*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
1545*67121dadSVivek Aknurwar 	.clkr = {
1546*67121dadSVivek Aknurwar 		.enable_reg = 0x9f008,
1547*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
1548*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
1549*67121dadSVivek Aknurwar 			.name = "gcc_eva_axi0_clk",
1550*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
1551*67121dadSVivek Aknurwar 		},
1552*67121dadSVivek Aknurwar 	},
1553*67121dadSVivek Aknurwar };
1554*67121dadSVivek Aknurwar 
1555*67121dadSVivek Aknurwar static struct clk_branch gcc_eva_axi0c_clk = {
1556*67121dadSVivek Aknurwar 	.halt_reg = 0x9f010,
1557*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_SKIP,
1558*67121dadSVivek Aknurwar 	.hwcg_reg = 0x9f010,
1559*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
1560*67121dadSVivek Aknurwar 	.clkr = {
1561*67121dadSVivek Aknurwar 		.enable_reg = 0x9f010,
1562*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
1563*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
1564*67121dadSVivek Aknurwar 			.name = "gcc_eva_axi0c_clk",
1565*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
1566*67121dadSVivek Aknurwar 		},
1567*67121dadSVivek Aknurwar 	},
1568*67121dadSVivek Aknurwar };
1569*67121dadSVivek Aknurwar 
1570*67121dadSVivek Aknurwar static struct clk_branch gcc_gp1_clk = {
1571*67121dadSVivek Aknurwar 	.halt_reg = 0x64000,
1572*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT,
1573*67121dadSVivek Aknurwar 	.clkr = {
1574*67121dadSVivek Aknurwar 		.enable_reg = 0x64000,
1575*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
1576*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
1577*67121dadSVivek Aknurwar 			.name = "gcc_gp1_clk",
1578*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
1579*67121dadSVivek Aknurwar 				&gcc_gp1_clk_src.clkr.hw,
1580*67121dadSVivek Aknurwar 			},
1581*67121dadSVivek Aknurwar 			.num_parents = 1,
1582*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
1583*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
1584*67121dadSVivek Aknurwar 		},
1585*67121dadSVivek Aknurwar 	},
1586*67121dadSVivek Aknurwar };
1587*67121dadSVivek Aknurwar 
1588*67121dadSVivek Aknurwar static struct clk_branch gcc_gp2_clk = {
1589*67121dadSVivek Aknurwar 	.halt_reg = 0x65000,
1590*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT,
1591*67121dadSVivek Aknurwar 	.clkr = {
1592*67121dadSVivek Aknurwar 		.enable_reg = 0x65000,
1593*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
1594*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
1595*67121dadSVivek Aknurwar 			.name = "gcc_gp2_clk",
1596*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
1597*67121dadSVivek Aknurwar 				&gcc_gp2_clk_src.clkr.hw,
1598*67121dadSVivek Aknurwar 			},
1599*67121dadSVivek Aknurwar 			.num_parents = 1,
1600*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
1601*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
1602*67121dadSVivek Aknurwar 		},
1603*67121dadSVivek Aknurwar 	},
1604*67121dadSVivek Aknurwar };
1605*67121dadSVivek Aknurwar 
1606*67121dadSVivek Aknurwar static struct clk_branch gcc_gp3_clk = {
1607*67121dadSVivek Aknurwar 	.halt_reg = 0x66000,
1608*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT,
1609*67121dadSVivek Aknurwar 	.clkr = {
1610*67121dadSVivek Aknurwar 		.enable_reg = 0x66000,
1611*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
1612*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
1613*67121dadSVivek Aknurwar 			.name = "gcc_gp3_clk",
1614*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
1615*67121dadSVivek Aknurwar 				&gcc_gp3_clk_src.clkr.hw,
1616*67121dadSVivek Aknurwar 			},
1617*67121dadSVivek Aknurwar 			.num_parents = 1,
1618*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
1619*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
1620*67121dadSVivek Aknurwar 		},
1621*67121dadSVivek Aknurwar 	},
1622*67121dadSVivek Aknurwar };
1623*67121dadSVivek Aknurwar 
1624*67121dadSVivek Aknurwar static struct clk_branch gcc_gpu_gemnoc_gfx_clk = {
1625*67121dadSVivek Aknurwar 	.halt_reg = 0x71010,
1626*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
1627*67121dadSVivek Aknurwar 	.hwcg_reg = 0x71010,
1628*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
1629*67121dadSVivek Aknurwar 	.clkr = {
1630*67121dadSVivek Aknurwar 		.enable_reg = 0x71010,
1631*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
1632*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
1633*67121dadSVivek Aknurwar 			.name = "gcc_gpu_gemnoc_gfx_clk",
1634*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
1635*67121dadSVivek Aknurwar 		},
1636*67121dadSVivek Aknurwar 	},
1637*67121dadSVivek Aknurwar };
1638*67121dadSVivek Aknurwar 
1639*67121dadSVivek Aknurwar static struct clk_branch gcc_gpu_gpll0_clk_src = {
1640*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_DELAY,
1641*67121dadSVivek Aknurwar 	.clkr = {
1642*67121dadSVivek Aknurwar 		.enable_reg = 0x52000,
1643*67121dadSVivek Aknurwar 		.enable_mask = BIT(15),
1644*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
1645*67121dadSVivek Aknurwar 			.name = "gcc_gpu_gpll0_clk_src",
1646*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
1647*67121dadSVivek Aknurwar 				&gcc_gpll0.clkr.hw,
1648*67121dadSVivek Aknurwar 			},
1649*67121dadSVivek Aknurwar 			.num_parents = 1,
1650*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
1651*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
1652*67121dadSVivek Aknurwar 		},
1653*67121dadSVivek Aknurwar 	},
1654*67121dadSVivek Aknurwar };
1655*67121dadSVivek Aknurwar 
1656*67121dadSVivek Aknurwar static struct clk_branch gcc_gpu_gpll0_div_clk_src = {
1657*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_DELAY,
1658*67121dadSVivek Aknurwar 	.clkr = {
1659*67121dadSVivek Aknurwar 		.enable_reg = 0x52000,
1660*67121dadSVivek Aknurwar 		.enable_mask = BIT(16),
1661*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
1662*67121dadSVivek Aknurwar 			.name = "gcc_gpu_gpll0_div_clk_src",
1663*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
1664*67121dadSVivek Aknurwar 				&gcc_gpll0_out_even.clkr.hw,
1665*67121dadSVivek Aknurwar 			},
1666*67121dadSVivek Aknurwar 			.num_parents = 1,
1667*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
1668*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
1669*67121dadSVivek Aknurwar 		},
1670*67121dadSVivek Aknurwar 	},
1671*67121dadSVivek Aknurwar };
1672*67121dadSVivek Aknurwar 
1673*67121dadSVivek Aknurwar static struct clk_branch gcc_gpu_smmu_vote_clk = {
1674*67121dadSVivek Aknurwar 	.halt_reg = 0x7d000,
1675*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
1676*67121dadSVivek Aknurwar 	.clkr = {
1677*67121dadSVivek Aknurwar 		.enable_reg = 0x7d000,
1678*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
1679*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
1680*67121dadSVivek Aknurwar 			.name = "gcc_gpu_smmu_vote_clk",
1681*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
1682*67121dadSVivek Aknurwar 		},
1683*67121dadSVivek Aknurwar 	},
1684*67121dadSVivek Aknurwar };
1685*67121dadSVivek Aknurwar 
1686*67121dadSVivek Aknurwar static struct clk_branch gcc_mmu_tcu_vote_clk = {
1687*67121dadSVivek Aknurwar 	.halt_reg = 0x7d02c,
1688*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
1689*67121dadSVivek Aknurwar 	.clkr = {
1690*67121dadSVivek Aknurwar 		.enable_reg = 0x7d02c,
1691*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
1692*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
1693*67121dadSVivek Aknurwar 			.name = "gcc_mmu_tcu_vote_clk",
1694*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
1695*67121dadSVivek Aknurwar 		},
1696*67121dadSVivek Aknurwar 	},
1697*67121dadSVivek Aknurwar };
1698*67121dadSVivek Aknurwar 
1699*67121dadSVivek Aknurwar static struct clk_branch gcc_pcie_0_aux_clk = {
1700*67121dadSVivek Aknurwar 	.halt_reg = 0x6b044,
1701*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
1702*67121dadSVivek Aknurwar 	.hwcg_reg = 0x6b044,
1703*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
1704*67121dadSVivek Aknurwar 	.clkr = {
1705*67121dadSVivek Aknurwar 		.enable_reg = 0x52020,
1706*67121dadSVivek Aknurwar 		.enable_mask = BIT(4),
1707*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
1708*67121dadSVivek Aknurwar 			.name = "gcc_pcie_0_aux_clk",
1709*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
1710*67121dadSVivek Aknurwar 				&gcc_pcie_0_aux_clk_src.clkr.hw,
1711*67121dadSVivek Aknurwar 			},
1712*67121dadSVivek Aknurwar 			.num_parents = 1,
1713*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
1714*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
1715*67121dadSVivek Aknurwar 		},
1716*67121dadSVivek Aknurwar 	},
1717*67121dadSVivek Aknurwar };
1718*67121dadSVivek Aknurwar 
1719*67121dadSVivek Aknurwar static struct clk_branch gcc_pcie_0_cfg_ahb_clk = {
1720*67121dadSVivek Aknurwar 	.halt_reg = 0x6b040,
1721*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
1722*67121dadSVivek Aknurwar 	.hwcg_reg = 0x6b040,
1723*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
1724*67121dadSVivek Aknurwar 	.clkr = {
1725*67121dadSVivek Aknurwar 		.enable_reg = 0x52020,
1726*67121dadSVivek Aknurwar 		.enable_mask = BIT(3),
1727*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
1728*67121dadSVivek Aknurwar 			.name = "gcc_pcie_0_cfg_ahb_clk",
1729*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
1730*67121dadSVivek Aknurwar 		},
1731*67121dadSVivek Aknurwar 	},
1732*67121dadSVivek Aknurwar };
1733*67121dadSVivek Aknurwar 
1734*67121dadSVivek Aknurwar static struct clk_branch gcc_pcie_0_mstr_axi_clk = {
1735*67121dadSVivek Aknurwar 	.halt_reg = 0x6b030,
1736*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_SKIP,
1737*67121dadSVivek Aknurwar 	.hwcg_reg = 0x6b030,
1738*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
1739*67121dadSVivek Aknurwar 	.clkr = {
1740*67121dadSVivek Aknurwar 		.enable_reg = 0x52020,
1741*67121dadSVivek Aknurwar 		.enable_mask = BIT(2),
1742*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
1743*67121dadSVivek Aknurwar 			.name = "gcc_pcie_0_mstr_axi_clk",
1744*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
1745*67121dadSVivek Aknurwar 		},
1746*67121dadSVivek Aknurwar 	},
1747*67121dadSVivek Aknurwar };
1748*67121dadSVivek Aknurwar 
1749*67121dadSVivek Aknurwar static struct clk_branch gcc_pcie_0_phy_aux_clk = {
1750*67121dadSVivek Aknurwar 	.halt_reg = 0x6b054,
1751*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
1752*67121dadSVivek Aknurwar 	.hwcg_reg = 0x6b054,
1753*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
1754*67121dadSVivek Aknurwar 	.clkr = {
1755*67121dadSVivek Aknurwar 		.enable_reg = 0x52020,
1756*67121dadSVivek Aknurwar 		.enable_mask = BIT(5),
1757*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
1758*67121dadSVivek Aknurwar 			.name = "gcc_pcie_0_phy_aux_clk",
1759*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
1760*67121dadSVivek Aknurwar 				&gcc_pcie_0_phy_aux_clk_src.clkr.hw,
1761*67121dadSVivek Aknurwar 			},
1762*67121dadSVivek Aknurwar 			.num_parents = 1,
1763*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
1764*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
1765*67121dadSVivek Aknurwar 		},
1766*67121dadSVivek Aknurwar 	},
1767*67121dadSVivek Aknurwar };
1768*67121dadSVivek Aknurwar 
1769*67121dadSVivek Aknurwar static struct clk_branch gcc_pcie_0_phy_rchng_clk = {
1770*67121dadSVivek Aknurwar 	.halt_reg = 0x6b084,
1771*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
1772*67121dadSVivek Aknurwar 	.hwcg_reg = 0x6b084,
1773*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
1774*67121dadSVivek Aknurwar 	.clkr = {
1775*67121dadSVivek Aknurwar 		.enable_reg = 0x52020,
1776*67121dadSVivek Aknurwar 		.enable_mask = BIT(8),
1777*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
1778*67121dadSVivek Aknurwar 			.name = "gcc_pcie_0_phy_rchng_clk",
1779*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
1780*67121dadSVivek Aknurwar 				&gcc_pcie_0_phy_rchng_clk_src.clkr.hw,
1781*67121dadSVivek Aknurwar 			},
1782*67121dadSVivek Aknurwar 			.num_parents = 1,
1783*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
1784*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
1785*67121dadSVivek Aknurwar 		},
1786*67121dadSVivek Aknurwar 	},
1787*67121dadSVivek Aknurwar };
1788*67121dadSVivek Aknurwar 
1789*67121dadSVivek Aknurwar static struct clk_branch gcc_pcie_0_pipe_clk = {
1790*67121dadSVivek Aknurwar 	.halt_reg = 0x6b074,
1791*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_SKIP,
1792*67121dadSVivek Aknurwar 	.hwcg_reg = 0x6b074,
1793*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
1794*67121dadSVivek Aknurwar 	.clkr = {
1795*67121dadSVivek Aknurwar 		.enable_reg = 0x52020,
1796*67121dadSVivek Aknurwar 		.enable_mask = BIT(7),
1797*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
1798*67121dadSVivek Aknurwar 			.name = "gcc_pcie_0_pipe_clk",
1799*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
1800*67121dadSVivek Aknurwar 				&gcc_pcie_0_pipe_clk_src.clkr.hw,
1801*67121dadSVivek Aknurwar 			},
1802*67121dadSVivek Aknurwar 			.num_parents = 1,
1803*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
1804*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
1805*67121dadSVivek Aknurwar 		},
1806*67121dadSVivek Aknurwar 	},
1807*67121dadSVivek Aknurwar };
1808*67121dadSVivek Aknurwar 
1809*67121dadSVivek Aknurwar static struct clk_branch gcc_pcie_0_pipe_div2_clk = {
1810*67121dadSVivek Aknurwar 	.halt_reg = 0x6b064,
1811*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_SKIP,
1812*67121dadSVivek Aknurwar 	.hwcg_reg = 0x6b064,
1813*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
1814*67121dadSVivek Aknurwar 	.clkr = {
1815*67121dadSVivek Aknurwar 		.enable_reg = 0x52020,
1816*67121dadSVivek Aknurwar 		.enable_mask = BIT(6),
1817*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
1818*67121dadSVivek Aknurwar 			.name = "gcc_pcie_0_pipe_div2_clk",
1819*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
1820*67121dadSVivek Aknurwar 				&gcc_pcie_0_pipe_div_clk_src.clkr.hw,
1821*67121dadSVivek Aknurwar 			},
1822*67121dadSVivek Aknurwar 			.num_parents = 1,
1823*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
1824*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
1825*67121dadSVivek Aknurwar 		},
1826*67121dadSVivek Aknurwar 	},
1827*67121dadSVivek Aknurwar };
1828*67121dadSVivek Aknurwar 
1829*67121dadSVivek Aknurwar static struct clk_branch gcc_pcie_0_slv_axi_clk = {
1830*67121dadSVivek Aknurwar 	.halt_reg = 0x6b020,
1831*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
1832*67121dadSVivek Aknurwar 	.hwcg_reg = 0x6b020,
1833*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
1834*67121dadSVivek Aknurwar 	.clkr = {
1835*67121dadSVivek Aknurwar 		.enable_reg = 0x52020,
1836*67121dadSVivek Aknurwar 		.enable_mask = BIT(1),
1837*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
1838*67121dadSVivek Aknurwar 			.name = "gcc_pcie_0_slv_axi_clk",
1839*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
1840*67121dadSVivek Aknurwar 		},
1841*67121dadSVivek Aknurwar 	},
1842*67121dadSVivek Aknurwar };
1843*67121dadSVivek Aknurwar 
1844*67121dadSVivek Aknurwar static struct clk_branch gcc_pcie_0_slv_q2a_axi_clk = {
1845*67121dadSVivek Aknurwar 	.halt_reg = 0x6b01c,
1846*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
1847*67121dadSVivek Aknurwar 	.hwcg_reg = 0x6b01c,
1848*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
1849*67121dadSVivek Aknurwar 	.clkr = {
1850*67121dadSVivek Aknurwar 		.enable_reg = 0x52020,
1851*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
1852*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
1853*67121dadSVivek Aknurwar 			.name = "gcc_pcie_0_slv_q2a_axi_clk",
1854*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
1855*67121dadSVivek Aknurwar 		},
1856*67121dadSVivek Aknurwar 	},
1857*67121dadSVivek Aknurwar };
1858*67121dadSVivek Aknurwar 
1859*67121dadSVivek Aknurwar static struct clk_branch gcc_pcie_1_aux_clk = {
1860*67121dadSVivek Aknurwar 	.halt_reg = 0x67040,
1861*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
1862*67121dadSVivek Aknurwar 	.clkr = {
1863*67121dadSVivek Aknurwar 		.enable_reg = 0x52010,
1864*67121dadSVivek Aknurwar 		.enable_mask = BIT(10),
1865*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
1866*67121dadSVivek Aknurwar 			.name = "gcc_pcie_1_aux_clk",
1867*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
1868*67121dadSVivek Aknurwar 				&gcc_pcie_1_aux_clk_src.clkr.hw,
1869*67121dadSVivek Aknurwar 			},
1870*67121dadSVivek Aknurwar 			.num_parents = 1,
1871*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
1872*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
1873*67121dadSVivek Aknurwar 		},
1874*67121dadSVivek Aknurwar 	},
1875*67121dadSVivek Aknurwar };
1876*67121dadSVivek Aknurwar 
1877*67121dadSVivek Aknurwar static struct clk_branch gcc_pcie_1_cfg_ahb_clk = {
1878*67121dadSVivek Aknurwar 	.halt_reg = 0x6703c,
1879*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
1880*67121dadSVivek Aknurwar 	.hwcg_reg = 0x6703c,
1881*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
1882*67121dadSVivek Aknurwar 	.clkr = {
1883*67121dadSVivek Aknurwar 		.enable_reg = 0x52010,
1884*67121dadSVivek Aknurwar 		.enable_mask = BIT(9),
1885*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
1886*67121dadSVivek Aknurwar 			.name = "gcc_pcie_1_cfg_ahb_clk",
1887*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
1888*67121dadSVivek Aknurwar 		},
1889*67121dadSVivek Aknurwar 	},
1890*67121dadSVivek Aknurwar };
1891*67121dadSVivek Aknurwar 
1892*67121dadSVivek Aknurwar static struct clk_branch gcc_pcie_1_mstr_axi_clk = {
1893*67121dadSVivek Aknurwar 	.halt_reg = 0x6702c,
1894*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_SKIP,
1895*67121dadSVivek Aknurwar 	.hwcg_reg = 0x6702c,
1896*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
1897*67121dadSVivek Aknurwar 	.clkr = {
1898*67121dadSVivek Aknurwar 		.enable_reg = 0x52008,
1899*67121dadSVivek Aknurwar 		.enable_mask = BIT(17),
1900*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
1901*67121dadSVivek Aknurwar 			.name = "gcc_pcie_1_mstr_axi_clk",
1902*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
1903*67121dadSVivek Aknurwar 		},
1904*67121dadSVivek Aknurwar 	},
1905*67121dadSVivek Aknurwar };
1906*67121dadSVivek Aknurwar 
1907*67121dadSVivek Aknurwar static struct clk_branch gcc_pcie_1_phy_aux_clk = {
1908*67121dadSVivek Aknurwar 	.halt_reg = 0x67050,
1909*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
1910*67121dadSVivek Aknurwar 	.clkr = {
1911*67121dadSVivek Aknurwar 		.enable_reg = 0x52010,
1912*67121dadSVivek Aknurwar 		.enable_mask = BIT(14),
1913*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
1914*67121dadSVivek Aknurwar 			.name = "gcc_pcie_1_phy_aux_clk",
1915*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
1916*67121dadSVivek Aknurwar 				&gcc_pcie_1_phy_aux_clk_src.clkr.hw,
1917*67121dadSVivek Aknurwar 			},
1918*67121dadSVivek Aknurwar 			.num_parents = 1,
1919*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
1920*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
1921*67121dadSVivek Aknurwar 		},
1922*67121dadSVivek Aknurwar 	},
1923*67121dadSVivek Aknurwar };
1924*67121dadSVivek Aknurwar 
1925*67121dadSVivek Aknurwar static struct clk_branch gcc_pcie_1_phy_rchng_clk = {
1926*67121dadSVivek Aknurwar 	.halt_reg = 0x67080,
1927*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
1928*67121dadSVivek Aknurwar 	.clkr = {
1929*67121dadSVivek Aknurwar 		.enable_reg = 0x52010,
1930*67121dadSVivek Aknurwar 		.enable_mask = BIT(26),
1931*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
1932*67121dadSVivek Aknurwar 			.name = "gcc_pcie_1_phy_rchng_clk",
1933*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
1934*67121dadSVivek Aknurwar 				&gcc_pcie_1_phy_rchng_clk_src.clkr.hw,
1935*67121dadSVivek Aknurwar 			},
1936*67121dadSVivek Aknurwar 			.num_parents = 1,
1937*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
1938*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
1939*67121dadSVivek Aknurwar 		},
1940*67121dadSVivek Aknurwar 	},
1941*67121dadSVivek Aknurwar };
1942*67121dadSVivek Aknurwar 
1943*67121dadSVivek Aknurwar static struct clk_branch gcc_pcie_1_pipe_clk = {
1944*67121dadSVivek Aknurwar 	.halt_reg = 0x67070,
1945*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_SKIP,
1946*67121dadSVivek Aknurwar 	.clkr = {
1947*67121dadSVivek Aknurwar 		.enable_reg = 0x52010,
1948*67121dadSVivek Aknurwar 		.enable_mask = BIT(17),
1949*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
1950*67121dadSVivek Aknurwar 			.name = "gcc_pcie_1_pipe_clk",
1951*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
1952*67121dadSVivek Aknurwar 				&gcc_pcie_1_pipe_clk_src.clkr.hw,
1953*67121dadSVivek Aknurwar 			},
1954*67121dadSVivek Aknurwar 			.num_parents = 1,
1955*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
1956*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
1957*67121dadSVivek Aknurwar 		},
1958*67121dadSVivek Aknurwar 	},
1959*67121dadSVivek Aknurwar };
1960*67121dadSVivek Aknurwar 
1961*67121dadSVivek Aknurwar static struct clk_branch gcc_pcie_1_pipe_div2_clk = {
1962*67121dadSVivek Aknurwar 	.halt_reg = 0x67060,
1963*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_SKIP,
1964*67121dadSVivek Aknurwar 	.clkr = {
1965*67121dadSVivek Aknurwar 		.enable_reg = 0x52010,
1966*67121dadSVivek Aknurwar 		.enable_mask = BIT(15),
1967*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
1968*67121dadSVivek Aknurwar 			.name = "gcc_pcie_1_pipe_div2_clk",
1969*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
1970*67121dadSVivek Aknurwar 				&gcc_pcie_1_pipe_div_clk_src.clkr.hw,
1971*67121dadSVivek Aknurwar 			},
1972*67121dadSVivek Aknurwar 			.num_parents = 1,
1973*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
1974*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
1975*67121dadSVivek Aknurwar 		},
1976*67121dadSVivek Aknurwar 	},
1977*67121dadSVivek Aknurwar };
1978*67121dadSVivek Aknurwar 
1979*67121dadSVivek Aknurwar static struct clk_branch gcc_pcie_1_slv_axi_clk = {
1980*67121dadSVivek Aknurwar 	.halt_reg = 0x6701c,
1981*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
1982*67121dadSVivek Aknurwar 	.hwcg_reg = 0x6701c,
1983*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
1984*67121dadSVivek Aknurwar 	.clkr = {
1985*67121dadSVivek Aknurwar 		.enable_reg = 0x52008,
1986*67121dadSVivek Aknurwar 		.enable_mask = BIT(16),
1987*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
1988*67121dadSVivek Aknurwar 			.name = "gcc_pcie_1_slv_axi_clk",
1989*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
1990*67121dadSVivek Aknurwar 		},
1991*67121dadSVivek Aknurwar 	},
1992*67121dadSVivek Aknurwar };
1993*67121dadSVivek Aknurwar 
1994*67121dadSVivek Aknurwar static struct clk_branch gcc_pcie_1_slv_q2a_axi_clk = {
1995*67121dadSVivek Aknurwar 	.halt_reg = 0x67018,
1996*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
1997*67121dadSVivek Aknurwar 	.clkr = {
1998*67121dadSVivek Aknurwar 		.enable_reg = 0x52008,
1999*67121dadSVivek Aknurwar 		.enable_mask = BIT(15),
2000*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2001*67121dadSVivek Aknurwar 			.name = "gcc_pcie_1_slv_q2a_axi_clk",
2002*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2003*67121dadSVivek Aknurwar 		},
2004*67121dadSVivek Aknurwar 	},
2005*67121dadSVivek Aknurwar };
2006*67121dadSVivek Aknurwar 
2007*67121dadSVivek Aknurwar static struct clk_branch gcc_pdm2_clk = {
2008*67121dadSVivek Aknurwar 	.halt_reg = 0x3300c,
2009*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT,
2010*67121dadSVivek Aknurwar 	.clkr = {
2011*67121dadSVivek Aknurwar 		.enable_reg = 0x3300c,
2012*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
2013*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2014*67121dadSVivek Aknurwar 			.name = "gcc_pdm2_clk",
2015*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
2016*67121dadSVivek Aknurwar 				&gcc_pdm2_clk_src.clkr.hw,
2017*67121dadSVivek Aknurwar 			},
2018*67121dadSVivek Aknurwar 			.num_parents = 1,
2019*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
2020*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2021*67121dadSVivek Aknurwar 		},
2022*67121dadSVivek Aknurwar 	},
2023*67121dadSVivek Aknurwar };
2024*67121dadSVivek Aknurwar 
2025*67121dadSVivek Aknurwar static struct clk_branch gcc_pdm_ahb_clk = {
2026*67121dadSVivek Aknurwar 	.halt_reg = 0x33004,
2027*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2028*67121dadSVivek Aknurwar 	.hwcg_reg = 0x33004,
2029*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
2030*67121dadSVivek Aknurwar 	.clkr = {
2031*67121dadSVivek Aknurwar 		.enable_reg = 0x33004,
2032*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
2033*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2034*67121dadSVivek Aknurwar 			.name = "gcc_pdm_ahb_clk",
2035*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2036*67121dadSVivek Aknurwar 		},
2037*67121dadSVivek Aknurwar 	},
2038*67121dadSVivek Aknurwar };
2039*67121dadSVivek Aknurwar 
2040*67121dadSVivek Aknurwar static struct clk_branch gcc_pdm_xo4_clk = {
2041*67121dadSVivek Aknurwar 	.halt_reg = 0x33008,
2042*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT,
2043*67121dadSVivek Aknurwar 	.clkr = {
2044*67121dadSVivek Aknurwar 		.enable_reg = 0x33008,
2045*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
2046*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2047*67121dadSVivek Aknurwar 			.name = "gcc_pdm_xo4_clk",
2048*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2049*67121dadSVivek Aknurwar 		},
2050*67121dadSVivek Aknurwar 	},
2051*67121dadSVivek Aknurwar };
2052*67121dadSVivek Aknurwar 
2053*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_i2c_core_clk = {
2054*67121dadSVivek Aknurwar 	.halt_reg = 0x23004,
2055*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2056*67121dadSVivek Aknurwar 	.clkr = {
2057*67121dadSVivek Aknurwar 		.enable_reg = 0x52008,
2058*67121dadSVivek Aknurwar 		.enable_mask = BIT(8),
2059*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2060*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_i2c_core_clk",
2061*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2062*67121dadSVivek Aknurwar 		},
2063*67121dadSVivek Aknurwar 	},
2064*67121dadSVivek Aknurwar };
2065*67121dadSVivek Aknurwar 
2066*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_i2c_s0_clk = {
2067*67121dadSVivek Aknurwar 	.halt_reg = 0x17004,
2068*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2069*67121dadSVivek Aknurwar 	.clkr = {
2070*67121dadSVivek Aknurwar 		.enable_reg = 0x52008,
2071*67121dadSVivek Aknurwar 		.enable_mask = BIT(10),
2072*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2073*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_i2c_s0_clk",
2074*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
2075*67121dadSVivek Aknurwar 				&gcc_qupv3_i2c_s0_clk_src.clkr.hw,
2076*67121dadSVivek Aknurwar 			},
2077*67121dadSVivek Aknurwar 			.num_parents = 1,
2078*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
2079*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2080*67121dadSVivek Aknurwar 		},
2081*67121dadSVivek Aknurwar 	},
2082*67121dadSVivek Aknurwar };
2083*67121dadSVivek Aknurwar 
2084*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_i2c_s1_clk = {
2085*67121dadSVivek Aknurwar 	.halt_reg = 0x17020,
2086*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2087*67121dadSVivek Aknurwar 	.clkr = {
2088*67121dadSVivek Aknurwar 		.enable_reg = 0x52008,
2089*67121dadSVivek Aknurwar 		.enable_mask = BIT(11),
2090*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2091*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_i2c_s1_clk",
2092*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
2093*67121dadSVivek Aknurwar 				&gcc_qupv3_i2c_s1_clk_src.clkr.hw,
2094*67121dadSVivek Aknurwar 			},
2095*67121dadSVivek Aknurwar 			.num_parents = 1,
2096*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
2097*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2098*67121dadSVivek Aknurwar 		},
2099*67121dadSVivek Aknurwar 	},
2100*67121dadSVivek Aknurwar };
2101*67121dadSVivek Aknurwar 
2102*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_i2c_s2_clk = {
2103*67121dadSVivek Aknurwar 	.halt_reg = 0x1703c,
2104*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2105*67121dadSVivek Aknurwar 	.clkr = {
2106*67121dadSVivek Aknurwar 		.enable_reg = 0x52008,
2107*67121dadSVivek Aknurwar 		.enable_mask = BIT(12),
2108*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2109*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_i2c_s2_clk",
2110*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
2111*67121dadSVivek Aknurwar 				&gcc_qupv3_i2c_s2_clk_src.clkr.hw,
2112*67121dadSVivek Aknurwar 			},
2113*67121dadSVivek Aknurwar 			.num_parents = 1,
2114*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
2115*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2116*67121dadSVivek Aknurwar 		},
2117*67121dadSVivek Aknurwar 	},
2118*67121dadSVivek Aknurwar };
2119*67121dadSVivek Aknurwar 
2120*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_i2c_s3_clk = {
2121*67121dadSVivek Aknurwar 	.halt_reg = 0x17058,
2122*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2123*67121dadSVivek Aknurwar 	.clkr = {
2124*67121dadSVivek Aknurwar 		.enable_reg = 0x52008,
2125*67121dadSVivek Aknurwar 		.enable_mask = BIT(13),
2126*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2127*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_i2c_s3_clk",
2128*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
2129*67121dadSVivek Aknurwar 				&gcc_qupv3_i2c_s3_clk_src.clkr.hw,
2130*67121dadSVivek Aknurwar 			},
2131*67121dadSVivek Aknurwar 			.num_parents = 1,
2132*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
2133*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2134*67121dadSVivek Aknurwar 		},
2135*67121dadSVivek Aknurwar 	},
2136*67121dadSVivek Aknurwar };
2137*67121dadSVivek Aknurwar 
2138*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_i2c_s4_clk = {
2139*67121dadSVivek Aknurwar 	.halt_reg = 0x17074,
2140*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2141*67121dadSVivek Aknurwar 	.clkr = {
2142*67121dadSVivek Aknurwar 		.enable_reg = 0x52008,
2143*67121dadSVivek Aknurwar 		.enable_mask = BIT(14),
2144*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2145*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_i2c_s4_clk",
2146*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
2147*67121dadSVivek Aknurwar 				&gcc_qupv3_i2c_s4_clk_src.clkr.hw,
2148*67121dadSVivek Aknurwar 			},
2149*67121dadSVivek Aknurwar 			.num_parents = 1,
2150*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
2151*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2152*67121dadSVivek Aknurwar 		},
2153*67121dadSVivek Aknurwar 	},
2154*67121dadSVivek Aknurwar };
2155*67121dadSVivek Aknurwar 
2156*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_i2c_s_ahb_clk = {
2157*67121dadSVivek Aknurwar 	.halt_reg = 0x23000,
2158*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2159*67121dadSVivek Aknurwar 	.hwcg_reg = 0x23000,
2160*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
2161*67121dadSVivek Aknurwar 	.clkr = {
2162*67121dadSVivek Aknurwar 		.enable_reg = 0x52008,
2163*67121dadSVivek Aknurwar 		.enable_mask = BIT(7),
2164*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2165*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_i2c_s_ahb_clk",
2166*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2167*67121dadSVivek Aknurwar 		},
2168*67121dadSVivek Aknurwar 	},
2169*67121dadSVivek Aknurwar };
2170*67121dadSVivek Aknurwar 
2171*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap1_core_2x_clk = {
2172*67121dadSVivek Aknurwar 	.halt_reg = 0x2315c,
2173*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2174*67121dadSVivek Aknurwar 	.clkr = {
2175*67121dadSVivek Aknurwar 		.enable_reg = 0x52008,
2176*67121dadSVivek Aknurwar 		.enable_mask = BIT(18),
2177*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2178*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap1_core_2x_clk",
2179*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2180*67121dadSVivek Aknurwar 		},
2181*67121dadSVivek Aknurwar 	},
2182*67121dadSVivek Aknurwar };
2183*67121dadSVivek Aknurwar 
2184*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap1_core_clk = {
2185*67121dadSVivek Aknurwar 	.halt_reg = 0x23148,
2186*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2187*67121dadSVivek Aknurwar 	.clkr = {
2188*67121dadSVivek Aknurwar 		.enable_reg = 0x52008,
2189*67121dadSVivek Aknurwar 		.enable_mask = BIT(19),
2190*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2191*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap1_core_clk",
2192*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2193*67121dadSVivek Aknurwar 		},
2194*67121dadSVivek Aknurwar 	},
2195*67121dadSVivek Aknurwar };
2196*67121dadSVivek Aknurwar 
2197*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap1_qspi_ref_clk = {
2198*67121dadSVivek Aknurwar 	.halt_reg = 0x188bc,
2199*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2200*67121dadSVivek Aknurwar 	.clkr = {
2201*67121dadSVivek Aknurwar 		.enable_reg = 0x52010,
2202*67121dadSVivek Aknurwar 		.enable_mask = BIT(29),
2203*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2204*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap1_qspi_ref_clk",
2205*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
2206*67121dadSVivek Aknurwar 				&gcc_qupv3_wrap1_qspi_ref_clk_src.clkr.hw,
2207*67121dadSVivek Aknurwar 			},
2208*67121dadSVivek Aknurwar 			.num_parents = 1,
2209*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
2210*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2211*67121dadSVivek Aknurwar 		},
2212*67121dadSVivek Aknurwar 	},
2213*67121dadSVivek Aknurwar };
2214*67121dadSVivek Aknurwar 
2215*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap1_s0_clk = {
2216*67121dadSVivek Aknurwar 	.halt_reg = 0x18004,
2217*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2218*67121dadSVivek Aknurwar 	.clkr = {
2219*67121dadSVivek Aknurwar 		.enable_reg = 0x52008,
2220*67121dadSVivek Aknurwar 		.enable_mask = BIT(22),
2221*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2222*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap1_s0_clk",
2223*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
2224*67121dadSVivek Aknurwar 				&gcc_qupv3_wrap1_s0_clk_src.clkr.hw,
2225*67121dadSVivek Aknurwar 			},
2226*67121dadSVivek Aknurwar 			.num_parents = 1,
2227*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
2228*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2229*67121dadSVivek Aknurwar 		},
2230*67121dadSVivek Aknurwar 	},
2231*67121dadSVivek Aknurwar };
2232*67121dadSVivek Aknurwar 
2233*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap1_s1_clk = {
2234*67121dadSVivek Aknurwar 	.halt_reg = 0x18140,
2235*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2236*67121dadSVivek Aknurwar 	.clkr = {
2237*67121dadSVivek Aknurwar 		.enable_reg = 0x52008,
2238*67121dadSVivek Aknurwar 		.enable_mask = BIT(23),
2239*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2240*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap1_s1_clk",
2241*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
2242*67121dadSVivek Aknurwar 				&gcc_qupv3_wrap1_s1_clk_src.clkr.hw,
2243*67121dadSVivek Aknurwar 			},
2244*67121dadSVivek Aknurwar 			.num_parents = 1,
2245*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
2246*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2247*67121dadSVivek Aknurwar 		},
2248*67121dadSVivek Aknurwar 	},
2249*67121dadSVivek Aknurwar };
2250*67121dadSVivek Aknurwar 
2251*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap1_s2_clk = {
2252*67121dadSVivek Aknurwar 	.halt_reg = 0x1827c,
2253*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2254*67121dadSVivek Aknurwar 	.clkr = {
2255*67121dadSVivek Aknurwar 		.enable_reg = 0x52008,
2256*67121dadSVivek Aknurwar 		.enable_mask = BIT(24),
2257*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2258*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap1_s2_clk",
2259*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
2260*67121dadSVivek Aknurwar 				&gcc_qupv3_wrap1_s2_clk_src.clkr.hw,
2261*67121dadSVivek Aknurwar 			},
2262*67121dadSVivek Aknurwar 			.num_parents = 1,
2263*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
2264*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2265*67121dadSVivek Aknurwar 		},
2266*67121dadSVivek Aknurwar 	},
2267*67121dadSVivek Aknurwar };
2268*67121dadSVivek Aknurwar 
2269*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap1_s3_clk = {
2270*67121dadSVivek Aknurwar 	.halt_reg = 0x18290,
2271*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2272*67121dadSVivek Aknurwar 	.clkr = {
2273*67121dadSVivek Aknurwar 		.enable_reg = 0x52008,
2274*67121dadSVivek Aknurwar 		.enable_mask = BIT(25),
2275*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2276*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap1_s3_clk",
2277*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
2278*67121dadSVivek Aknurwar 				&gcc_qupv3_wrap1_s3_clk_src.clkr.hw,
2279*67121dadSVivek Aknurwar 			},
2280*67121dadSVivek Aknurwar 			.num_parents = 1,
2281*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
2282*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2283*67121dadSVivek Aknurwar 		},
2284*67121dadSVivek Aknurwar 	},
2285*67121dadSVivek Aknurwar };
2286*67121dadSVivek Aknurwar 
2287*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap1_s4_clk = {
2288*67121dadSVivek Aknurwar 	.halt_reg = 0x183cc,
2289*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2290*67121dadSVivek Aknurwar 	.clkr = {
2291*67121dadSVivek Aknurwar 		.enable_reg = 0x52008,
2292*67121dadSVivek Aknurwar 		.enable_mask = BIT(26),
2293*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2294*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap1_s4_clk",
2295*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
2296*67121dadSVivek Aknurwar 				&gcc_qupv3_wrap1_s4_clk_src.clkr.hw,
2297*67121dadSVivek Aknurwar 			},
2298*67121dadSVivek Aknurwar 			.num_parents = 1,
2299*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
2300*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2301*67121dadSVivek Aknurwar 		},
2302*67121dadSVivek Aknurwar 	},
2303*67121dadSVivek Aknurwar };
2304*67121dadSVivek Aknurwar 
2305*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap1_s5_clk = {
2306*67121dadSVivek Aknurwar 	.halt_reg = 0x18508,
2307*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2308*67121dadSVivek Aknurwar 	.clkr = {
2309*67121dadSVivek Aknurwar 		.enable_reg = 0x52008,
2310*67121dadSVivek Aknurwar 		.enable_mask = BIT(27),
2311*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2312*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap1_s5_clk",
2313*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
2314*67121dadSVivek Aknurwar 				&gcc_qupv3_wrap1_s5_clk_src.clkr.hw,
2315*67121dadSVivek Aknurwar 			},
2316*67121dadSVivek Aknurwar 			.num_parents = 1,
2317*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
2318*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2319*67121dadSVivek Aknurwar 		},
2320*67121dadSVivek Aknurwar 	},
2321*67121dadSVivek Aknurwar };
2322*67121dadSVivek Aknurwar 
2323*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap1_s6_clk = {
2324*67121dadSVivek Aknurwar 	.halt_reg = 0x18644,
2325*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2326*67121dadSVivek Aknurwar 	.clkr = {
2327*67121dadSVivek Aknurwar 		.enable_reg = 0x52008,
2328*67121dadSVivek Aknurwar 		.enable_mask = BIT(28),
2329*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2330*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap1_s6_clk",
2331*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
2332*67121dadSVivek Aknurwar 				&gcc_qupv3_wrap1_s6_clk_src.clkr.hw,
2333*67121dadSVivek Aknurwar 			},
2334*67121dadSVivek Aknurwar 			.num_parents = 1,
2335*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
2336*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2337*67121dadSVivek Aknurwar 		},
2338*67121dadSVivek Aknurwar 	},
2339*67121dadSVivek Aknurwar };
2340*67121dadSVivek Aknurwar 
2341*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap1_s7_clk = {
2342*67121dadSVivek Aknurwar 	.halt_reg = 0x18780,
2343*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2344*67121dadSVivek Aknurwar 	.clkr = {
2345*67121dadSVivek Aknurwar 		.enable_reg = 0x52010,
2346*67121dadSVivek Aknurwar 		.enable_mask = BIT(16),
2347*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2348*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap1_s7_clk",
2349*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
2350*67121dadSVivek Aknurwar 				&gcc_qupv3_wrap1_s7_clk_src.clkr.hw,
2351*67121dadSVivek Aknurwar 			},
2352*67121dadSVivek Aknurwar 			.num_parents = 1,
2353*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
2354*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2355*67121dadSVivek Aknurwar 		},
2356*67121dadSVivek Aknurwar 	},
2357*67121dadSVivek Aknurwar };
2358*67121dadSVivek Aknurwar 
2359*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap2_core_2x_clk = {
2360*67121dadSVivek Aknurwar 	.halt_reg = 0x232b4,
2361*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2362*67121dadSVivek Aknurwar 	.clkr = {
2363*67121dadSVivek Aknurwar 		.enable_reg = 0x52010,
2364*67121dadSVivek Aknurwar 		.enable_mask = BIT(3),
2365*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2366*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap2_core_2x_clk",
2367*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2368*67121dadSVivek Aknurwar 		},
2369*67121dadSVivek Aknurwar 	},
2370*67121dadSVivek Aknurwar };
2371*67121dadSVivek Aknurwar 
2372*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap2_core_clk = {
2373*67121dadSVivek Aknurwar 	.halt_reg = 0x232a0,
2374*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2375*67121dadSVivek Aknurwar 	.clkr = {
2376*67121dadSVivek Aknurwar 		.enable_reg = 0x52010,
2377*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
2378*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2379*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap2_core_clk",
2380*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2381*67121dadSVivek Aknurwar 		},
2382*67121dadSVivek Aknurwar 	},
2383*67121dadSVivek Aknurwar };
2384*67121dadSVivek Aknurwar 
2385*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap2_s0_clk = {
2386*67121dadSVivek Aknurwar 	.halt_reg = 0x1e004,
2387*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2388*67121dadSVivek Aknurwar 	.clkr = {
2389*67121dadSVivek Aknurwar 		.enable_reg = 0x52010,
2390*67121dadSVivek Aknurwar 		.enable_mask = BIT(4),
2391*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2392*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap2_s0_clk",
2393*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
2394*67121dadSVivek Aknurwar 				&gcc_qupv3_wrap2_s0_clk_src.clkr.hw,
2395*67121dadSVivek Aknurwar 			},
2396*67121dadSVivek Aknurwar 			.num_parents = 1,
2397*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
2398*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2399*67121dadSVivek Aknurwar 		},
2400*67121dadSVivek Aknurwar 	},
2401*67121dadSVivek Aknurwar };
2402*67121dadSVivek Aknurwar 
2403*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap2_s1_clk = {
2404*67121dadSVivek Aknurwar 	.halt_reg = 0x1e148,
2405*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2406*67121dadSVivek Aknurwar 	.clkr = {
2407*67121dadSVivek Aknurwar 		.enable_reg = 0x52010,
2408*67121dadSVivek Aknurwar 		.enable_mask = BIT(5),
2409*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2410*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap2_s1_clk",
2411*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
2412*67121dadSVivek Aknurwar 				&gcc_qupv3_wrap2_s1_clk_src.clkr.hw,
2413*67121dadSVivek Aknurwar 			},
2414*67121dadSVivek Aknurwar 			.num_parents = 1,
2415*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
2416*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2417*67121dadSVivek Aknurwar 		},
2418*67121dadSVivek Aknurwar 	},
2419*67121dadSVivek Aknurwar };
2420*67121dadSVivek Aknurwar 
2421*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap2_s2_clk = {
2422*67121dadSVivek Aknurwar 	.halt_reg = 0x1e28c,
2423*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2424*67121dadSVivek Aknurwar 	.clkr = {
2425*67121dadSVivek Aknurwar 		.enable_reg = 0x52010,
2426*67121dadSVivek Aknurwar 		.enable_mask = BIT(6),
2427*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2428*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap2_s2_clk",
2429*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
2430*67121dadSVivek Aknurwar 				&gcc_qupv3_wrap2_s2_clk_src.clkr.hw,
2431*67121dadSVivek Aknurwar 			},
2432*67121dadSVivek Aknurwar 			.num_parents = 1,
2433*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
2434*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2435*67121dadSVivek Aknurwar 		},
2436*67121dadSVivek Aknurwar 	},
2437*67121dadSVivek Aknurwar };
2438*67121dadSVivek Aknurwar 
2439*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap2_s3_clk = {
2440*67121dadSVivek Aknurwar 	.halt_reg = 0x1e3c8,
2441*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2442*67121dadSVivek Aknurwar 	.clkr = {
2443*67121dadSVivek Aknurwar 		.enable_reg = 0x52010,
2444*67121dadSVivek Aknurwar 		.enable_mask = BIT(7),
2445*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2446*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap2_s3_clk",
2447*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
2448*67121dadSVivek Aknurwar 				&gcc_qupv3_wrap2_s3_clk_src.clkr.hw,
2449*67121dadSVivek Aknurwar 			},
2450*67121dadSVivek Aknurwar 			.num_parents = 1,
2451*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
2452*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2453*67121dadSVivek Aknurwar 		},
2454*67121dadSVivek Aknurwar 	},
2455*67121dadSVivek Aknurwar };
2456*67121dadSVivek Aknurwar 
2457*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap2_s4_clk = {
2458*67121dadSVivek Aknurwar 	.halt_reg = 0x1e504,
2459*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2460*67121dadSVivek Aknurwar 	.clkr = {
2461*67121dadSVivek Aknurwar 		.enable_reg = 0x52010,
2462*67121dadSVivek Aknurwar 		.enable_mask = BIT(8),
2463*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2464*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap2_s4_clk",
2465*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
2466*67121dadSVivek Aknurwar 				&gcc_qupv3_wrap2_s4_clk_src.clkr.hw,
2467*67121dadSVivek Aknurwar 			},
2468*67121dadSVivek Aknurwar 			.num_parents = 1,
2469*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
2470*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2471*67121dadSVivek Aknurwar 		},
2472*67121dadSVivek Aknurwar 	},
2473*67121dadSVivek Aknurwar };
2474*67121dadSVivek Aknurwar 
2475*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap3_core_2x_clk = {
2476*67121dadSVivek Aknurwar 	.halt_reg = 0x2340c,
2477*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2478*67121dadSVivek Aknurwar 	.clkr = {
2479*67121dadSVivek Aknurwar 		.enable_reg = 0x52018,
2480*67121dadSVivek Aknurwar 		.enable_mask = BIT(11),
2481*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2482*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap3_core_2x_clk",
2483*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2484*67121dadSVivek Aknurwar 		},
2485*67121dadSVivek Aknurwar 	},
2486*67121dadSVivek Aknurwar };
2487*67121dadSVivek Aknurwar 
2488*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap3_core_clk = {
2489*67121dadSVivek Aknurwar 	.halt_reg = 0x233f8,
2490*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2491*67121dadSVivek Aknurwar 	.clkr = {
2492*67121dadSVivek Aknurwar 		.enable_reg = 0x52018,
2493*67121dadSVivek Aknurwar 		.enable_mask = BIT(10),
2494*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2495*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap3_core_clk",
2496*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2497*67121dadSVivek Aknurwar 		},
2498*67121dadSVivek Aknurwar 	},
2499*67121dadSVivek Aknurwar };
2500*67121dadSVivek Aknurwar 
2501*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap3_qspi_ref_clk = {
2502*67121dadSVivek Aknurwar 	.halt_reg = 0xa8648,
2503*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2504*67121dadSVivek Aknurwar 	.clkr = {
2505*67121dadSVivek Aknurwar 		.enable_reg = 0x52010,
2506*67121dadSVivek Aknurwar 		.enable_mask = BIT(25),
2507*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2508*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap3_qspi_ref_clk",
2509*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
2510*67121dadSVivek Aknurwar 				&gcc_qupv3_wrap3_qspi_ref_clk_src.clkr.hw,
2511*67121dadSVivek Aknurwar 			},
2512*67121dadSVivek Aknurwar 			.num_parents = 1,
2513*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
2514*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2515*67121dadSVivek Aknurwar 		},
2516*67121dadSVivek Aknurwar 	},
2517*67121dadSVivek Aknurwar };
2518*67121dadSVivek Aknurwar 
2519*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap3_s0_clk = {
2520*67121dadSVivek Aknurwar 	.halt_reg = 0xa8004,
2521*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2522*67121dadSVivek Aknurwar 	.clkr = {
2523*67121dadSVivek Aknurwar 		.enable_reg = 0x52018,
2524*67121dadSVivek Aknurwar 		.enable_mask = BIT(12),
2525*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2526*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap3_s0_clk",
2527*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
2528*67121dadSVivek Aknurwar 				&gcc_qupv3_wrap3_s0_clk_src.clkr.hw,
2529*67121dadSVivek Aknurwar 			},
2530*67121dadSVivek Aknurwar 			.num_parents = 1,
2531*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
2532*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2533*67121dadSVivek Aknurwar 		},
2534*67121dadSVivek Aknurwar 	},
2535*67121dadSVivek Aknurwar };
2536*67121dadSVivek Aknurwar 
2537*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap3_s1_clk = {
2538*67121dadSVivek Aknurwar 	.halt_reg = 0xa8140,
2539*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2540*67121dadSVivek Aknurwar 	.clkr = {
2541*67121dadSVivek Aknurwar 		.enable_reg = 0x52018,
2542*67121dadSVivek Aknurwar 		.enable_mask = BIT(13),
2543*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2544*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap3_s1_clk",
2545*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
2546*67121dadSVivek Aknurwar 				&gcc_qupv3_wrap3_s1_clk_src.clkr.hw,
2547*67121dadSVivek Aknurwar 			},
2548*67121dadSVivek Aknurwar 			.num_parents = 1,
2549*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
2550*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2551*67121dadSVivek Aknurwar 		},
2552*67121dadSVivek Aknurwar 	},
2553*67121dadSVivek Aknurwar };
2554*67121dadSVivek Aknurwar 
2555*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap3_s2_clk = {
2556*67121dadSVivek Aknurwar 	.halt_reg = 0xa8158,
2557*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2558*67121dadSVivek Aknurwar 	.clkr = {
2559*67121dadSVivek Aknurwar 		.enable_reg = 0x52018,
2560*67121dadSVivek Aknurwar 		.enable_mask = BIT(14),
2561*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2562*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap3_s2_clk",
2563*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
2564*67121dadSVivek Aknurwar 				&gcc_qupv3_wrap3_s2_clk_src.clkr.hw,
2565*67121dadSVivek Aknurwar 			},
2566*67121dadSVivek Aknurwar 			.num_parents = 1,
2567*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
2568*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2569*67121dadSVivek Aknurwar 		},
2570*67121dadSVivek Aknurwar 	},
2571*67121dadSVivek Aknurwar };
2572*67121dadSVivek Aknurwar 
2573*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap3_s3_clk = {
2574*67121dadSVivek Aknurwar 	.halt_reg = 0xa8294,
2575*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2576*67121dadSVivek Aknurwar 	.clkr = {
2577*67121dadSVivek Aknurwar 		.enable_reg = 0x52018,
2578*67121dadSVivek Aknurwar 		.enable_mask = BIT(15),
2579*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2580*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap3_s3_clk",
2581*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
2582*67121dadSVivek Aknurwar 				&gcc_qupv3_wrap3_s3_clk_src.clkr.hw,
2583*67121dadSVivek Aknurwar 			},
2584*67121dadSVivek Aknurwar 			.num_parents = 1,
2585*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
2586*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2587*67121dadSVivek Aknurwar 		},
2588*67121dadSVivek Aknurwar 	},
2589*67121dadSVivek Aknurwar };
2590*67121dadSVivek Aknurwar 
2591*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap3_s4_clk = {
2592*67121dadSVivek Aknurwar 	.halt_reg = 0xa83d0,
2593*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2594*67121dadSVivek Aknurwar 	.clkr = {
2595*67121dadSVivek Aknurwar 		.enable_reg = 0x52018,
2596*67121dadSVivek Aknurwar 		.enable_mask = BIT(16),
2597*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2598*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap3_s4_clk",
2599*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
2600*67121dadSVivek Aknurwar 				&gcc_qupv3_wrap3_s4_clk_src.clkr.hw,
2601*67121dadSVivek Aknurwar 			},
2602*67121dadSVivek Aknurwar 			.num_parents = 1,
2603*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
2604*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2605*67121dadSVivek Aknurwar 		},
2606*67121dadSVivek Aknurwar 	},
2607*67121dadSVivek Aknurwar };
2608*67121dadSVivek Aknurwar 
2609*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap3_s5_clk = {
2610*67121dadSVivek Aknurwar 	.halt_reg = 0xa850c,
2611*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2612*67121dadSVivek Aknurwar 	.clkr = {
2613*67121dadSVivek Aknurwar 		.enable_reg = 0x52018,
2614*67121dadSVivek Aknurwar 		.enable_mask = BIT(17),
2615*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2616*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap3_s5_clk",
2617*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
2618*67121dadSVivek Aknurwar 				&gcc_qupv3_wrap3_s5_clk_src.clkr.hw,
2619*67121dadSVivek Aknurwar 			},
2620*67121dadSVivek Aknurwar 			.num_parents = 1,
2621*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
2622*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2623*67121dadSVivek Aknurwar 		},
2624*67121dadSVivek Aknurwar 	},
2625*67121dadSVivek Aknurwar };
2626*67121dadSVivek Aknurwar 
2627*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap4_core_2x_clk = {
2628*67121dadSVivek Aknurwar 	.halt_reg = 0x23564,
2629*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2630*67121dadSVivek Aknurwar 	.clkr = {
2631*67121dadSVivek Aknurwar 		.enable_reg = 0x52018,
2632*67121dadSVivek Aknurwar 		.enable_mask = BIT(25),
2633*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2634*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap4_core_2x_clk",
2635*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2636*67121dadSVivek Aknurwar 		},
2637*67121dadSVivek Aknurwar 	},
2638*67121dadSVivek Aknurwar };
2639*67121dadSVivek Aknurwar 
2640*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap4_core_clk = {
2641*67121dadSVivek Aknurwar 	.halt_reg = 0x23550,
2642*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2643*67121dadSVivek Aknurwar 	.clkr = {
2644*67121dadSVivek Aknurwar 		.enable_reg = 0x52018,
2645*67121dadSVivek Aknurwar 		.enable_mask = BIT(24),
2646*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2647*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap4_core_clk",
2648*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2649*67121dadSVivek Aknurwar 		},
2650*67121dadSVivek Aknurwar 	},
2651*67121dadSVivek Aknurwar };
2652*67121dadSVivek Aknurwar 
2653*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap4_s0_clk = {
2654*67121dadSVivek Aknurwar 	.halt_reg = 0xa9004,
2655*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2656*67121dadSVivek Aknurwar 	.clkr = {
2657*67121dadSVivek Aknurwar 		.enable_reg = 0x52018,
2658*67121dadSVivek Aknurwar 		.enable_mask = BIT(26),
2659*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2660*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap4_s0_clk",
2661*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
2662*67121dadSVivek Aknurwar 				&gcc_qupv3_wrap4_s0_clk_src.clkr.hw,
2663*67121dadSVivek Aknurwar 			},
2664*67121dadSVivek Aknurwar 			.num_parents = 1,
2665*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
2666*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2667*67121dadSVivek Aknurwar 		},
2668*67121dadSVivek Aknurwar 	},
2669*67121dadSVivek Aknurwar };
2670*67121dadSVivek Aknurwar 
2671*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap4_s1_clk = {
2672*67121dadSVivek Aknurwar 	.halt_reg = 0xa9140,
2673*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2674*67121dadSVivek Aknurwar 	.clkr = {
2675*67121dadSVivek Aknurwar 		.enable_reg = 0x52018,
2676*67121dadSVivek Aknurwar 		.enable_mask = BIT(27),
2677*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2678*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap4_s1_clk",
2679*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
2680*67121dadSVivek Aknurwar 				&gcc_qupv3_wrap4_s1_clk_src.clkr.hw,
2681*67121dadSVivek Aknurwar 			},
2682*67121dadSVivek Aknurwar 			.num_parents = 1,
2683*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
2684*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2685*67121dadSVivek Aknurwar 		},
2686*67121dadSVivek Aknurwar 	},
2687*67121dadSVivek Aknurwar };
2688*67121dadSVivek Aknurwar 
2689*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap4_s2_clk = {
2690*67121dadSVivek Aknurwar 	.halt_reg = 0xa927c,
2691*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2692*67121dadSVivek Aknurwar 	.clkr = {
2693*67121dadSVivek Aknurwar 		.enable_reg = 0x52018,
2694*67121dadSVivek Aknurwar 		.enable_mask = BIT(28),
2695*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2696*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap4_s2_clk",
2697*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
2698*67121dadSVivek Aknurwar 				&gcc_qupv3_wrap4_s2_clk_src.clkr.hw,
2699*67121dadSVivek Aknurwar 			},
2700*67121dadSVivek Aknurwar 			.num_parents = 1,
2701*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
2702*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2703*67121dadSVivek Aknurwar 		},
2704*67121dadSVivek Aknurwar 	},
2705*67121dadSVivek Aknurwar };
2706*67121dadSVivek Aknurwar 
2707*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap4_s3_clk = {
2708*67121dadSVivek Aknurwar 	.halt_reg = 0xa93b8,
2709*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2710*67121dadSVivek Aknurwar 	.clkr = {
2711*67121dadSVivek Aknurwar 		.enable_reg = 0x52018,
2712*67121dadSVivek Aknurwar 		.enable_mask = BIT(29),
2713*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2714*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap4_s3_clk",
2715*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
2716*67121dadSVivek Aknurwar 				&gcc_qupv3_wrap4_s3_clk_src.clkr.hw,
2717*67121dadSVivek Aknurwar 			},
2718*67121dadSVivek Aknurwar 			.num_parents = 1,
2719*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
2720*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2721*67121dadSVivek Aknurwar 		},
2722*67121dadSVivek Aknurwar 	},
2723*67121dadSVivek Aknurwar };
2724*67121dadSVivek Aknurwar 
2725*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap4_s4_clk = {
2726*67121dadSVivek Aknurwar 	.halt_reg = 0xa94f4,
2727*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2728*67121dadSVivek Aknurwar 	.clkr = {
2729*67121dadSVivek Aknurwar 		.enable_reg = 0x52018,
2730*67121dadSVivek Aknurwar 		.enable_mask = BIT(30),
2731*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2732*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap4_s4_clk",
2733*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
2734*67121dadSVivek Aknurwar 				&gcc_qupv3_wrap4_s4_clk_src.clkr.hw,
2735*67121dadSVivek Aknurwar 			},
2736*67121dadSVivek Aknurwar 			.num_parents = 1,
2737*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
2738*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2739*67121dadSVivek Aknurwar 		},
2740*67121dadSVivek Aknurwar 	},
2741*67121dadSVivek Aknurwar };
2742*67121dadSVivek Aknurwar 
2743*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap_1_m_axi_clk = {
2744*67121dadSVivek Aknurwar 	.halt_reg = 0x23140,
2745*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2746*67121dadSVivek Aknurwar 	.hwcg_reg = 0x23140,
2747*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
2748*67121dadSVivek Aknurwar 	.clkr = {
2749*67121dadSVivek Aknurwar 		.enable_reg = 0x52008,
2750*67121dadSVivek Aknurwar 		.enable_mask = BIT(20),
2751*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2752*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap_1_m_axi_clk",
2753*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2754*67121dadSVivek Aknurwar 		},
2755*67121dadSVivek Aknurwar 	},
2756*67121dadSVivek Aknurwar };
2757*67121dadSVivek Aknurwar 
2758*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap_1_s_ahb_clk = {
2759*67121dadSVivek Aknurwar 	.halt_reg = 0x23144,
2760*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2761*67121dadSVivek Aknurwar 	.hwcg_reg = 0x23144,
2762*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
2763*67121dadSVivek Aknurwar 	.clkr = {
2764*67121dadSVivek Aknurwar 		.enable_reg = 0x52008,
2765*67121dadSVivek Aknurwar 		.enable_mask = BIT(21),
2766*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2767*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap_1_s_ahb_clk",
2768*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2769*67121dadSVivek Aknurwar 		},
2770*67121dadSVivek Aknurwar 	},
2771*67121dadSVivek Aknurwar };
2772*67121dadSVivek Aknurwar 
2773*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap_2_m_ahb_clk = {
2774*67121dadSVivek Aknurwar 	.halt_reg = 0x23298,
2775*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2776*67121dadSVivek Aknurwar 	.hwcg_reg = 0x23298,
2777*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
2778*67121dadSVivek Aknurwar 	.clkr = {
2779*67121dadSVivek Aknurwar 		.enable_reg = 0x52010,
2780*67121dadSVivek Aknurwar 		.enable_mask = BIT(2),
2781*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2782*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap_2_m_ahb_clk",
2783*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2784*67121dadSVivek Aknurwar 		},
2785*67121dadSVivek Aknurwar 	},
2786*67121dadSVivek Aknurwar };
2787*67121dadSVivek Aknurwar 
2788*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap_2_s_ahb_clk = {
2789*67121dadSVivek Aknurwar 	.halt_reg = 0x2329c,
2790*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2791*67121dadSVivek Aknurwar 	.hwcg_reg = 0x2329c,
2792*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
2793*67121dadSVivek Aknurwar 	.clkr = {
2794*67121dadSVivek Aknurwar 		.enable_reg = 0x52010,
2795*67121dadSVivek Aknurwar 		.enable_mask = BIT(1),
2796*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2797*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap_2_s_ahb_clk",
2798*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2799*67121dadSVivek Aknurwar 		},
2800*67121dadSVivek Aknurwar 	},
2801*67121dadSVivek Aknurwar };
2802*67121dadSVivek Aknurwar 
2803*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap_3_m_ahb_clk = {
2804*67121dadSVivek Aknurwar 	.halt_reg = 0x233f0,
2805*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2806*67121dadSVivek Aknurwar 	.hwcg_reg = 0x233f0,
2807*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
2808*67121dadSVivek Aknurwar 	.clkr = {
2809*67121dadSVivek Aknurwar 		.enable_reg = 0x52018,
2810*67121dadSVivek Aknurwar 		.enable_mask = BIT(8),
2811*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2812*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap_3_m_ahb_clk",
2813*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2814*67121dadSVivek Aknurwar 		},
2815*67121dadSVivek Aknurwar 	},
2816*67121dadSVivek Aknurwar };
2817*67121dadSVivek Aknurwar 
2818*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap_3_s_ahb_clk = {
2819*67121dadSVivek Aknurwar 	.halt_reg = 0x233f4,
2820*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2821*67121dadSVivek Aknurwar 	.hwcg_reg = 0x233f4,
2822*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
2823*67121dadSVivek Aknurwar 	.clkr = {
2824*67121dadSVivek Aknurwar 		.enable_reg = 0x52018,
2825*67121dadSVivek Aknurwar 		.enable_mask = BIT(9),
2826*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2827*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap_3_s_ahb_clk",
2828*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2829*67121dadSVivek Aknurwar 		},
2830*67121dadSVivek Aknurwar 	},
2831*67121dadSVivek Aknurwar };
2832*67121dadSVivek Aknurwar 
2833*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap_4_m_ahb_clk = {
2834*67121dadSVivek Aknurwar 	.halt_reg = 0x23548,
2835*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2836*67121dadSVivek Aknurwar 	.hwcg_reg = 0x23548,
2837*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
2838*67121dadSVivek Aknurwar 	.clkr = {
2839*67121dadSVivek Aknurwar 		.enable_reg = 0x52018,
2840*67121dadSVivek Aknurwar 		.enable_mask = BIT(22),
2841*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2842*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap_4_m_ahb_clk",
2843*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2844*67121dadSVivek Aknurwar 		},
2845*67121dadSVivek Aknurwar 	},
2846*67121dadSVivek Aknurwar };
2847*67121dadSVivek Aknurwar 
2848*67121dadSVivek Aknurwar static struct clk_branch gcc_qupv3_wrap_4_s_ahb_clk = {
2849*67121dadSVivek Aknurwar 	.halt_reg = 0x2354c,
2850*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2851*67121dadSVivek Aknurwar 	.hwcg_reg = 0x2354c,
2852*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
2853*67121dadSVivek Aknurwar 	.clkr = {
2854*67121dadSVivek Aknurwar 		.enable_reg = 0x52018,
2855*67121dadSVivek Aknurwar 		.enable_mask = BIT(23),
2856*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2857*67121dadSVivek Aknurwar 			.name = "gcc_qupv3_wrap_4_s_ahb_clk",
2858*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2859*67121dadSVivek Aknurwar 		},
2860*67121dadSVivek Aknurwar 	},
2861*67121dadSVivek Aknurwar };
2862*67121dadSVivek Aknurwar 
2863*67121dadSVivek Aknurwar static struct clk_branch gcc_sdcc2_ahb_clk = {
2864*67121dadSVivek Aknurwar 	.halt_reg = 0x14014,
2865*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT,
2866*67121dadSVivek Aknurwar 	.clkr = {
2867*67121dadSVivek Aknurwar 		.enable_reg = 0x14014,
2868*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
2869*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2870*67121dadSVivek Aknurwar 			.name = "gcc_sdcc2_ahb_clk",
2871*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2872*67121dadSVivek Aknurwar 		},
2873*67121dadSVivek Aknurwar 	},
2874*67121dadSVivek Aknurwar };
2875*67121dadSVivek Aknurwar 
2876*67121dadSVivek Aknurwar static struct clk_branch gcc_sdcc2_apps_clk = {
2877*67121dadSVivek Aknurwar 	.halt_reg = 0x14004,
2878*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT,
2879*67121dadSVivek Aknurwar 	.clkr = {
2880*67121dadSVivek Aknurwar 		.enable_reg = 0x14004,
2881*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
2882*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2883*67121dadSVivek Aknurwar 			.name = "gcc_sdcc2_apps_clk",
2884*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
2885*67121dadSVivek Aknurwar 				&gcc_sdcc2_apps_clk_src.clkr.hw,
2886*67121dadSVivek Aknurwar 			},
2887*67121dadSVivek Aknurwar 			.num_parents = 1,
2888*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
2889*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2890*67121dadSVivek Aknurwar 		},
2891*67121dadSVivek Aknurwar 	},
2892*67121dadSVivek Aknurwar };
2893*67121dadSVivek Aknurwar 
2894*67121dadSVivek Aknurwar static struct clk_branch gcc_sdcc4_ahb_clk = {
2895*67121dadSVivek Aknurwar 	.halt_reg = 0x16014,
2896*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT,
2897*67121dadSVivek Aknurwar 	.clkr = {
2898*67121dadSVivek Aknurwar 		.enable_reg = 0x16014,
2899*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
2900*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2901*67121dadSVivek Aknurwar 			.name = "gcc_sdcc4_ahb_clk",
2902*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2903*67121dadSVivek Aknurwar 		},
2904*67121dadSVivek Aknurwar 	},
2905*67121dadSVivek Aknurwar };
2906*67121dadSVivek Aknurwar 
2907*67121dadSVivek Aknurwar static struct clk_branch gcc_sdcc4_apps_clk = {
2908*67121dadSVivek Aknurwar 	.halt_reg = 0x16004,
2909*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT,
2910*67121dadSVivek Aknurwar 	.clkr = {
2911*67121dadSVivek Aknurwar 		.enable_reg = 0x16004,
2912*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
2913*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2914*67121dadSVivek Aknurwar 			.name = "gcc_sdcc4_apps_clk",
2915*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
2916*67121dadSVivek Aknurwar 				&gcc_sdcc4_apps_clk_src.clkr.hw,
2917*67121dadSVivek Aknurwar 			},
2918*67121dadSVivek Aknurwar 			.num_parents = 1,
2919*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
2920*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2921*67121dadSVivek Aknurwar 		},
2922*67121dadSVivek Aknurwar 	},
2923*67121dadSVivek Aknurwar };
2924*67121dadSVivek Aknurwar 
2925*67121dadSVivek Aknurwar static struct clk_branch gcc_ufs_phy_ahb_clk = {
2926*67121dadSVivek Aknurwar 	.halt_reg = 0x77028,
2927*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2928*67121dadSVivek Aknurwar 	.hwcg_reg = 0x77028,
2929*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
2930*67121dadSVivek Aknurwar 	.clkr = {
2931*67121dadSVivek Aknurwar 		.enable_reg = 0x77028,
2932*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
2933*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2934*67121dadSVivek Aknurwar 			.name = "gcc_ufs_phy_ahb_clk",
2935*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2936*67121dadSVivek Aknurwar 		},
2937*67121dadSVivek Aknurwar 	},
2938*67121dadSVivek Aknurwar };
2939*67121dadSVivek Aknurwar 
2940*67121dadSVivek Aknurwar static struct clk_branch gcc_ufs_phy_axi_clk = {
2941*67121dadSVivek Aknurwar 	.halt_reg = 0x77018,
2942*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2943*67121dadSVivek Aknurwar 	.hwcg_reg = 0x77018,
2944*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
2945*67121dadSVivek Aknurwar 	.clkr = {
2946*67121dadSVivek Aknurwar 		.enable_reg = 0x77018,
2947*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
2948*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2949*67121dadSVivek Aknurwar 			.name = "gcc_ufs_phy_axi_clk",
2950*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
2951*67121dadSVivek Aknurwar 				&gcc_ufs_phy_axi_clk_src.clkr.hw,
2952*67121dadSVivek Aknurwar 			},
2953*67121dadSVivek Aknurwar 			.num_parents = 1,
2954*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
2955*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2956*67121dadSVivek Aknurwar 		},
2957*67121dadSVivek Aknurwar 	},
2958*67121dadSVivek Aknurwar };
2959*67121dadSVivek Aknurwar 
2960*67121dadSVivek Aknurwar static struct clk_branch gcc_ufs_phy_ice_core_clk = {
2961*67121dadSVivek Aknurwar 	.halt_reg = 0x7707c,
2962*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2963*67121dadSVivek Aknurwar 	.hwcg_reg = 0x7707c,
2964*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
2965*67121dadSVivek Aknurwar 	.clkr = {
2966*67121dadSVivek Aknurwar 		.enable_reg = 0x7707c,
2967*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
2968*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2969*67121dadSVivek Aknurwar 			.name = "gcc_ufs_phy_ice_core_clk",
2970*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
2971*67121dadSVivek Aknurwar 				&gcc_ufs_phy_ice_core_clk_src.clkr.hw,
2972*67121dadSVivek Aknurwar 			},
2973*67121dadSVivek Aknurwar 			.num_parents = 1,
2974*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
2975*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2976*67121dadSVivek Aknurwar 		},
2977*67121dadSVivek Aknurwar 	},
2978*67121dadSVivek Aknurwar };
2979*67121dadSVivek Aknurwar 
2980*67121dadSVivek Aknurwar static struct clk_branch gcc_ufs_phy_phy_aux_clk = {
2981*67121dadSVivek Aknurwar 	.halt_reg = 0x770bc,
2982*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
2983*67121dadSVivek Aknurwar 	.hwcg_reg = 0x770bc,
2984*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
2985*67121dadSVivek Aknurwar 	.clkr = {
2986*67121dadSVivek Aknurwar 		.enable_reg = 0x770bc,
2987*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
2988*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
2989*67121dadSVivek Aknurwar 			.name = "gcc_ufs_phy_phy_aux_clk",
2990*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
2991*67121dadSVivek Aknurwar 				&gcc_ufs_phy_phy_aux_clk_src.clkr.hw,
2992*67121dadSVivek Aknurwar 			},
2993*67121dadSVivek Aknurwar 			.num_parents = 1,
2994*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
2995*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
2996*67121dadSVivek Aknurwar 		},
2997*67121dadSVivek Aknurwar 	},
2998*67121dadSVivek Aknurwar };
2999*67121dadSVivek Aknurwar 
3000*67121dadSVivek Aknurwar static struct clk_branch gcc_ufs_phy_rx_symbol_0_clk = {
3001*67121dadSVivek Aknurwar 	.halt_reg = 0x77030,
3002*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_DELAY,
3003*67121dadSVivek Aknurwar 	.clkr = {
3004*67121dadSVivek Aknurwar 		.enable_reg = 0x77030,
3005*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
3006*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
3007*67121dadSVivek Aknurwar 			.name = "gcc_ufs_phy_rx_symbol_0_clk",
3008*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
3009*67121dadSVivek Aknurwar 				&gcc_ufs_phy_rx_symbol_0_clk_src.clkr.hw,
3010*67121dadSVivek Aknurwar 			},
3011*67121dadSVivek Aknurwar 			.num_parents = 1,
3012*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
3013*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
3014*67121dadSVivek Aknurwar 		},
3015*67121dadSVivek Aknurwar 	},
3016*67121dadSVivek Aknurwar };
3017*67121dadSVivek Aknurwar 
3018*67121dadSVivek Aknurwar static struct clk_branch gcc_ufs_phy_rx_symbol_1_clk = {
3019*67121dadSVivek Aknurwar 	.halt_reg = 0x770d8,
3020*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_DELAY,
3021*67121dadSVivek Aknurwar 	.clkr = {
3022*67121dadSVivek Aknurwar 		.enable_reg = 0x770d8,
3023*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
3024*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
3025*67121dadSVivek Aknurwar 			.name = "gcc_ufs_phy_rx_symbol_1_clk",
3026*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
3027*67121dadSVivek Aknurwar 				&gcc_ufs_phy_rx_symbol_1_clk_src.clkr.hw,
3028*67121dadSVivek Aknurwar 			},
3029*67121dadSVivek Aknurwar 			.num_parents = 1,
3030*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
3031*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
3032*67121dadSVivek Aknurwar 		},
3033*67121dadSVivek Aknurwar 	},
3034*67121dadSVivek Aknurwar };
3035*67121dadSVivek Aknurwar 
3036*67121dadSVivek Aknurwar static struct clk_branch gcc_ufs_phy_tx_symbol_0_clk = {
3037*67121dadSVivek Aknurwar 	.halt_reg = 0x7702c,
3038*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_DELAY,
3039*67121dadSVivek Aknurwar 	.clkr = {
3040*67121dadSVivek Aknurwar 		.enable_reg = 0x7702c,
3041*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
3042*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
3043*67121dadSVivek Aknurwar 			.name = "gcc_ufs_phy_tx_symbol_0_clk",
3044*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
3045*67121dadSVivek Aknurwar 				&gcc_ufs_phy_tx_symbol_0_clk_src.clkr.hw,
3046*67121dadSVivek Aknurwar 			},
3047*67121dadSVivek Aknurwar 			.num_parents = 1,
3048*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
3049*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
3050*67121dadSVivek Aknurwar 		},
3051*67121dadSVivek Aknurwar 	},
3052*67121dadSVivek Aknurwar };
3053*67121dadSVivek Aknurwar 
3054*67121dadSVivek Aknurwar static struct clk_branch gcc_ufs_phy_unipro_5_core_clk = {
3055*67121dadSVivek Aknurwar 	.halt_reg = 0x7706c,
3056*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_VOTED,
3057*67121dadSVivek Aknurwar 	.hwcg_reg = 0x7706c,
3058*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
3059*67121dadSVivek Aknurwar 	.clkr = {
3060*67121dadSVivek Aknurwar 		.enable_reg = 0x7706c,
3061*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
3062*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
3063*67121dadSVivek Aknurwar 			.name = "gcc_ufs_phy_unipro_5_core_clk",
3064*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
3065*67121dadSVivek Aknurwar 				&gcc_ufs_phy_unipro_5_core_clk_src.clkr.hw,
3066*67121dadSVivek Aknurwar 			},
3067*67121dadSVivek Aknurwar 			.num_parents = 1,
3068*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
3069*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
3070*67121dadSVivek Aknurwar 		},
3071*67121dadSVivek Aknurwar 	},
3072*67121dadSVivek Aknurwar };
3073*67121dadSVivek Aknurwar 
3074*67121dadSVivek Aknurwar static struct clk_branch gcc_usb30_prim_master_clk = {
3075*67121dadSVivek Aknurwar 	.halt_reg = 0x39018,
3076*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT,
3077*67121dadSVivek Aknurwar 	.clkr = {
3078*67121dadSVivek Aknurwar 		.enable_reg = 0x39018,
3079*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
3080*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
3081*67121dadSVivek Aknurwar 			.name = "gcc_usb30_prim_master_clk",
3082*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
3083*67121dadSVivek Aknurwar 				&gcc_usb30_prim_master_clk_src.clkr.hw,
3084*67121dadSVivek Aknurwar 			},
3085*67121dadSVivek Aknurwar 			.num_parents = 1,
3086*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
3087*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
3088*67121dadSVivek Aknurwar 		},
3089*67121dadSVivek Aknurwar 	},
3090*67121dadSVivek Aknurwar };
3091*67121dadSVivek Aknurwar 
3092*67121dadSVivek Aknurwar static struct clk_branch gcc_usb30_prim_mock_utmi_clk = {
3093*67121dadSVivek Aknurwar 	.halt_reg = 0x3902c,
3094*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT,
3095*67121dadSVivek Aknurwar 	.clkr = {
3096*67121dadSVivek Aknurwar 		.enable_reg = 0x3902c,
3097*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
3098*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
3099*67121dadSVivek Aknurwar 			.name = "gcc_usb30_prim_mock_utmi_clk",
3100*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
3101*67121dadSVivek Aknurwar 				&gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr.hw,
3102*67121dadSVivek Aknurwar 			},
3103*67121dadSVivek Aknurwar 			.num_parents = 1,
3104*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
3105*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
3106*67121dadSVivek Aknurwar 		},
3107*67121dadSVivek Aknurwar 	},
3108*67121dadSVivek Aknurwar };
3109*67121dadSVivek Aknurwar 
3110*67121dadSVivek Aknurwar static struct clk_branch gcc_usb30_prim_sleep_clk = {
3111*67121dadSVivek Aknurwar 	.halt_reg = 0x39028,
3112*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT,
3113*67121dadSVivek Aknurwar 	.clkr = {
3114*67121dadSVivek Aknurwar 		.enable_reg = 0x39028,
3115*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
3116*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
3117*67121dadSVivek Aknurwar 			.name = "gcc_usb30_prim_sleep_clk",
3118*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
3119*67121dadSVivek Aknurwar 		},
3120*67121dadSVivek Aknurwar 	},
3121*67121dadSVivek Aknurwar };
3122*67121dadSVivek Aknurwar 
3123*67121dadSVivek Aknurwar static struct clk_branch gcc_usb3_prim_phy_aux_clk = {
3124*67121dadSVivek Aknurwar 	.halt_reg = 0x39068,
3125*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT,
3126*67121dadSVivek Aknurwar 	.clkr = {
3127*67121dadSVivek Aknurwar 		.enable_reg = 0x39068,
3128*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
3129*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
3130*67121dadSVivek Aknurwar 			.name = "gcc_usb3_prim_phy_aux_clk",
3131*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
3132*67121dadSVivek Aknurwar 				&gcc_usb3_prim_phy_aux_clk_src.clkr.hw,
3133*67121dadSVivek Aknurwar 			},
3134*67121dadSVivek Aknurwar 			.num_parents = 1,
3135*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
3136*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
3137*67121dadSVivek Aknurwar 		},
3138*67121dadSVivek Aknurwar 	},
3139*67121dadSVivek Aknurwar };
3140*67121dadSVivek Aknurwar 
3141*67121dadSVivek Aknurwar static struct clk_branch gcc_usb3_prim_phy_com_aux_clk = {
3142*67121dadSVivek Aknurwar 	.halt_reg = 0x3906c,
3143*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT,
3144*67121dadSVivek Aknurwar 	.clkr = {
3145*67121dadSVivek Aknurwar 		.enable_reg = 0x3906c,
3146*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
3147*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
3148*67121dadSVivek Aknurwar 			.name = "gcc_usb3_prim_phy_com_aux_clk",
3149*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
3150*67121dadSVivek Aknurwar 				&gcc_usb3_prim_phy_aux_clk_src.clkr.hw,
3151*67121dadSVivek Aknurwar 			},
3152*67121dadSVivek Aknurwar 			.num_parents = 1,
3153*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
3154*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
3155*67121dadSVivek Aknurwar 		},
3156*67121dadSVivek Aknurwar 	},
3157*67121dadSVivek Aknurwar };
3158*67121dadSVivek Aknurwar 
3159*67121dadSVivek Aknurwar static struct clk_branch gcc_usb3_prim_phy_pipe_clk = {
3160*67121dadSVivek Aknurwar 	.halt_reg = 0x39070,
3161*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_DELAY,
3162*67121dadSVivek Aknurwar 	.hwcg_reg = 0x39070,
3163*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
3164*67121dadSVivek Aknurwar 	.clkr = {
3165*67121dadSVivek Aknurwar 		.enable_reg = 0x39070,
3166*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
3167*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
3168*67121dadSVivek Aknurwar 			.name = "gcc_usb3_prim_phy_pipe_clk",
3169*67121dadSVivek Aknurwar 			.parent_hws = (const struct clk_hw*[]) {
3170*67121dadSVivek Aknurwar 				&gcc_usb3_prim_phy_pipe_clk_src.clkr.hw,
3171*67121dadSVivek Aknurwar 			},
3172*67121dadSVivek Aknurwar 			.num_parents = 1,
3173*67121dadSVivek Aknurwar 			.flags = CLK_SET_RATE_PARENT,
3174*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
3175*67121dadSVivek Aknurwar 		},
3176*67121dadSVivek Aknurwar 	},
3177*67121dadSVivek Aknurwar };
3178*67121dadSVivek Aknurwar 
3179*67121dadSVivek Aknurwar static struct clk_branch gcc_video_axi0_clk = {
3180*67121dadSVivek Aknurwar 	.halt_reg = 0x32018,
3181*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_SKIP,
3182*67121dadSVivek Aknurwar 	.hwcg_reg = 0x32018,
3183*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
3184*67121dadSVivek Aknurwar 	.clkr = {
3185*67121dadSVivek Aknurwar 		.enable_reg = 0x32018,
3186*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
3187*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
3188*67121dadSVivek Aknurwar 			.name = "gcc_video_axi0_clk",
3189*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
3190*67121dadSVivek Aknurwar 		},
3191*67121dadSVivek Aknurwar 	},
3192*67121dadSVivek Aknurwar };
3193*67121dadSVivek Aknurwar 
3194*67121dadSVivek Aknurwar static struct clk_branch gcc_video_axi0c_clk = {
3195*67121dadSVivek Aknurwar 	.halt_reg = 0x32020,
3196*67121dadSVivek Aknurwar 	.halt_check = BRANCH_HALT_SKIP,
3197*67121dadSVivek Aknurwar 	.hwcg_reg = 0x32020,
3198*67121dadSVivek Aknurwar 	.hwcg_bit = 1,
3199*67121dadSVivek Aknurwar 	.clkr = {
3200*67121dadSVivek Aknurwar 		.enable_reg = 0x32020,
3201*67121dadSVivek Aknurwar 		.enable_mask = BIT(0),
3202*67121dadSVivek Aknurwar 		.hw.init = &(const struct clk_init_data) {
3203*67121dadSVivek Aknurwar 			.name = "gcc_video_axi0c_clk",
3204*67121dadSVivek Aknurwar 			.ops = &clk_branch2_ops,
3205*67121dadSVivek Aknurwar 		},
3206*67121dadSVivek Aknurwar 	},
3207*67121dadSVivek Aknurwar };
3208*67121dadSVivek Aknurwar 
3209*67121dadSVivek Aknurwar static struct gdsc gcc_pcie_0_gdsc = {
3210*67121dadSVivek Aknurwar 	.gdscr = 0x6b004,
3211*67121dadSVivek Aknurwar 	.en_rest_wait_val = 0x2,
3212*67121dadSVivek Aknurwar 	.en_few_wait_val = 0x2,
3213*67121dadSVivek Aknurwar 	.clk_dis_wait_val = 0xf,
3214*67121dadSVivek Aknurwar 	.collapse_ctrl = 0x52154,
3215*67121dadSVivek Aknurwar 	.collapse_mask = BIT(0),
3216*67121dadSVivek Aknurwar 	.pd = {
3217*67121dadSVivek Aknurwar 		.name = "gcc_pcie_0_gdsc",
3218*67121dadSVivek Aknurwar 	},
3219*67121dadSVivek Aknurwar 	.pwrsts = PWRSTS_OFF_ON,
3220*67121dadSVivek Aknurwar 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | VOTABLE,
3221*67121dadSVivek Aknurwar };
3222*67121dadSVivek Aknurwar 
3223*67121dadSVivek Aknurwar static struct gdsc gcc_pcie_0_phy_gdsc = {
3224*67121dadSVivek Aknurwar 	.gdscr = 0x6c000,
3225*67121dadSVivek Aknurwar 	.en_rest_wait_val = 0x2,
3226*67121dadSVivek Aknurwar 	.en_few_wait_val = 0x2,
3227*67121dadSVivek Aknurwar 	.clk_dis_wait_val = 0x2,
3228*67121dadSVivek Aknurwar 	.collapse_ctrl = 0x52154,
3229*67121dadSVivek Aknurwar 	.collapse_mask = BIT(1),
3230*67121dadSVivek Aknurwar 	.pd = {
3231*67121dadSVivek Aknurwar 		.name = "gcc_pcie_0_phy_gdsc",
3232*67121dadSVivek Aknurwar 	},
3233*67121dadSVivek Aknurwar 	.pwrsts = PWRSTS_OFF_ON,
3234*67121dadSVivek Aknurwar 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | VOTABLE,
3235*67121dadSVivek Aknurwar };
3236*67121dadSVivek Aknurwar 
3237*67121dadSVivek Aknurwar static struct gdsc gcc_pcie_1_gdsc = {
3238*67121dadSVivek Aknurwar 	.gdscr = 0x67004,
3239*67121dadSVivek Aknurwar 	.en_rest_wait_val = 0x2,
3240*67121dadSVivek Aknurwar 	.en_few_wait_val = 0x2,
3241*67121dadSVivek Aknurwar 	.clk_dis_wait_val = 0xf,
3242*67121dadSVivek Aknurwar 	.collapse_ctrl = 0x5214c,
3243*67121dadSVivek Aknurwar 	.collapse_mask = BIT(2),
3244*67121dadSVivek Aknurwar 	.pd = {
3245*67121dadSVivek Aknurwar 		.name = "gcc_pcie_1_gdsc",
3246*67121dadSVivek Aknurwar 	},
3247*67121dadSVivek Aknurwar 	.pwrsts = PWRSTS_OFF_ON,
3248*67121dadSVivek Aknurwar 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | VOTABLE,
3249*67121dadSVivek Aknurwar };
3250*67121dadSVivek Aknurwar 
3251*67121dadSVivek Aknurwar static struct gdsc gcc_pcie_1_phy_gdsc = {
3252*67121dadSVivek Aknurwar 	.gdscr = 0x68000,
3253*67121dadSVivek Aknurwar 	.en_rest_wait_val = 0x2,
3254*67121dadSVivek Aknurwar 	.en_few_wait_val = 0x2,
3255*67121dadSVivek Aknurwar 	.clk_dis_wait_val = 0x2,
3256*67121dadSVivek Aknurwar 	.collapse_ctrl = 0x5214c,
3257*67121dadSVivek Aknurwar 	.collapse_mask = BIT(3),
3258*67121dadSVivek Aknurwar 	.pd = {
3259*67121dadSVivek Aknurwar 		.name = "gcc_pcie_1_phy_gdsc",
3260*67121dadSVivek Aknurwar 	},
3261*67121dadSVivek Aknurwar 	.pwrsts = PWRSTS_OFF_ON,
3262*67121dadSVivek Aknurwar 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | VOTABLE,
3263*67121dadSVivek Aknurwar };
3264*67121dadSVivek Aknurwar 
3265*67121dadSVivek Aknurwar static struct gdsc gcc_ufs_mem_phy_gdsc = {
3266*67121dadSVivek Aknurwar 	.gdscr = 0x9e000,
3267*67121dadSVivek Aknurwar 	.en_rest_wait_val = 0x2,
3268*67121dadSVivek Aknurwar 	.en_few_wait_val = 0x2,
3269*67121dadSVivek Aknurwar 	.clk_dis_wait_val = 0x2,
3270*67121dadSVivek Aknurwar 	.pd = {
3271*67121dadSVivek Aknurwar 		.name = "gcc_ufs_mem_phy_gdsc",
3272*67121dadSVivek Aknurwar 	},
3273*67121dadSVivek Aknurwar 	.pwrsts = PWRSTS_OFF_ON,
3274*67121dadSVivek Aknurwar 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
3275*67121dadSVivek Aknurwar };
3276*67121dadSVivek Aknurwar 
3277*67121dadSVivek Aknurwar static struct gdsc gcc_ufs_phy_gdsc = {
3278*67121dadSVivek Aknurwar 	.gdscr = 0x77004,
3279*67121dadSVivek Aknurwar 	.en_rest_wait_val = 0x2,
3280*67121dadSVivek Aknurwar 	.en_few_wait_val = 0x2,
3281*67121dadSVivek Aknurwar 	.clk_dis_wait_val = 0xf,
3282*67121dadSVivek Aknurwar 	.pd = {
3283*67121dadSVivek Aknurwar 		.name = "gcc_ufs_phy_gdsc",
3284*67121dadSVivek Aknurwar 	},
3285*67121dadSVivek Aknurwar 	.pwrsts = PWRSTS_OFF_ON,
3286*67121dadSVivek Aknurwar 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
3287*67121dadSVivek Aknurwar };
3288*67121dadSVivek Aknurwar 
3289*67121dadSVivek Aknurwar static struct gdsc gcc_usb30_prim_gdsc = {
3290*67121dadSVivek Aknurwar 	.gdscr = 0x39004,
3291*67121dadSVivek Aknurwar 	.en_rest_wait_val = 0x2,
3292*67121dadSVivek Aknurwar 	.en_few_wait_val = 0x2,
3293*67121dadSVivek Aknurwar 	.clk_dis_wait_val = 0xf,
3294*67121dadSVivek Aknurwar 	.pd = {
3295*67121dadSVivek Aknurwar 		.name = "gcc_usb30_prim_gdsc",
3296*67121dadSVivek Aknurwar 	},
3297*67121dadSVivek Aknurwar 	.pwrsts = PWRSTS_OFF_ON,
3298*67121dadSVivek Aknurwar 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
3299*67121dadSVivek Aknurwar };
3300*67121dadSVivek Aknurwar 
3301*67121dadSVivek Aknurwar static struct gdsc gcc_usb3_phy_gdsc = {
3302*67121dadSVivek Aknurwar 	.gdscr = 0x50018,
3303*67121dadSVivek Aknurwar 	.en_rest_wait_val = 0x2,
3304*67121dadSVivek Aknurwar 	.en_few_wait_val = 0x2,
3305*67121dadSVivek Aknurwar 	.clk_dis_wait_val = 0x2,
3306*67121dadSVivek Aknurwar 	.pd = {
3307*67121dadSVivek Aknurwar 		.name = "gcc_usb3_phy_gdsc",
3308*67121dadSVivek Aknurwar 	},
3309*67121dadSVivek Aknurwar 	.pwrsts = PWRSTS_OFF_ON,
3310*67121dadSVivek Aknurwar 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
3311*67121dadSVivek Aknurwar };
3312*67121dadSVivek Aknurwar 
3313*67121dadSVivek Aknurwar static struct clk_regmap *gcc_hawi_clocks[] = {
3314*67121dadSVivek Aknurwar 	[GCC_AGGRE_NOC_PCIE_AXI_CLK] = &gcc_aggre_noc_pcie_axi_clk.clkr,
3315*67121dadSVivek Aknurwar 	[GCC_AGGRE_STARDUSTNOC_USB3_PRIM_AXI_CLK] = &gcc_aggre_stardustnoc_usb3_prim_axi_clk.clkr,
3316*67121dadSVivek Aknurwar 	[GCC_AGGRE_UFS_PHY_AXI_CLK] = &gcc_aggre_ufs_phy_axi_clk.clkr,
3317*67121dadSVivek Aknurwar 	[GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
3318*67121dadSVivek Aknurwar 	[GCC_CAMERA_HF_AXI_CLK] = &gcc_camera_hf_axi_clk.clkr,
3319*67121dadSVivek Aknurwar 	[GCC_CAMERA_SF_AXI_CLK] = &gcc_camera_sf_axi_clk.clkr,
3320*67121dadSVivek Aknurwar 	[GCC_CFG_NOC_PCIE_ANOC_AHB_CLK] = &gcc_cfg_noc_pcie_anoc_ahb_clk.clkr,
3321*67121dadSVivek Aknurwar 	[GCC_CFG_NOC_USB3_PRIM_AXI_CLK] = &gcc_cfg_noc_usb3_prim_axi_clk.clkr,
3322*67121dadSVivek Aknurwar 	[GCC_CNOC_PCIE_SF_AXI_CLK] = &gcc_cnoc_pcie_sf_axi_clk.clkr,
3323*67121dadSVivek Aknurwar 	[GCC_EVA_AXI0_CLK] = &gcc_eva_axi0_clk.clkr,
3324*67121dadSVivek Aknurwar 	[GCC_EVA_AXI0C_CLK] = &gcc_eva_axi0c_clk.clkr,
3325*67121dadSVivek Aknurwar 	[GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
3326*67121dadSVivek Aknurwar 	[GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr,
3327*67121dadSVivek Aknurwar 	[GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
3328*67121dadSVivek Aknurwar 	[GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr,
3329*67121dadSVivek Aknurwar 	[GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
3330*67121dadSVivek Aknurwar 	[GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr,
3331*67121dadSVivek Aknurwar 	[GCC_GPLL0] = &gcc_gpll0.clkr,
3332*67121dadSVivek Aknurwar 	[GCC_GPLL0_OUT_EVEN] = &gcc_gpll0_out_even.clkr,
3333*67121dadSVivek Aknurwar 	[GCC_GPLL4] = &gcc_gpll4.clkr,
3334*67121dadSVivek Aknurwar 	[GCC_GPLL5] = &gcc_gpll5.clkr,
3335*67121dadSVivek Aknurwar 	[GCC_GPLL7] = &gcc_gpll7.clkr,
3336*67121dadSVivek Aknurwar 	[GCC_GPLL9] = &gcc_gpll9.clkr,
3337*67121dadSVivek Aknurwar 	[GCC_GPU_GEMNOC_GFX_CLK] = &gcc_gpu_gemnoc_gfx_clk.clkr,
3338*67121dadSVivek Aknurwar 	[GCC_GPU_GPLL0_CLK_SRC] = &gcc_gpu_gpll0_clk_src.clkr,
3339*67121dadSVivek Aknurwar 	[GCC_GPU_GPLL0_DIV_CLK_SRC] = &gcc_gpu_gpll0_div_clk_src.clkr,
3340*67121dadSVivek Aknurwar 	[GCC_GPU_SMMU_VOTE_CLK] = &gcc_gpu_smmu_vote_clk.clkr,
3341*67121dadSVivek Aknurwar 	[GCC_MMU_TCU_VOTE_CLK] = &gcc_mmu_tcu_vote_clk.clkr,
3342*67121dadSVivek Aknurwar 	[GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,
3343*67121dadSVivek Aknurwar 	[GCC_PCIE_0_AUX_CLK_SRC] = &gcc_pcie_0_aux_clk_src.clkr,
3344*67121dadSVivek Aknurwar 	[GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr,
3345*67121dadSVivek Aknurwar 	[GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr,
3346*67121dadSVivek Aknurwar 	[GCC_PCIE_0_PHY_AUX_CLK] = &gcc_pcie_0_phy_aux_clk.clkr,
3347*67121dadSVivek Aknurwar 	[GCC_PCIE_0_PHY_AUX_CLK_SRC] = &gcc_pcie_0_phy_aux_clk_src.clkr,
3348*67121dadSVivek Aknurwar 	[GCC_PCIE_0_PHY_RCHNG_CLK] = &gcc_pcie_0_phy_rchng_clk.clkr,
3349*67121dadSVivek Aknurwar 	[GCC_PCIE_0_PHY_RCHNG_CLK_SRC] = &gcc_pcie_0_phy_rchng_clk_src.clkr,
3350*67121dadSVivek Aknurwar 	[GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,
3351*67121dadSVivek Aknurwar 	[GCC_PCIE_0_PIPE_CLK_SRC] = &gcc_pcie_0_pipe_clk_src.clkr,
3352*67121dadSVivek Aknurwar 	[GCC_PCIE_0_PIPE_DIV2_CLK] = &gcc_pcie_0_pipe_div2_clk.clkr,
3353*67121dadSVivek Aknurwar 	[GCC_PCIE_0_PIPE_DIV_CLK_SRC] = &gcc_pcie_0_pipe_div_clk_src.clkr,
3354*67121dadSVivek Aknurwar 	[GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr,
3355*67121dadSVivek Aknurwar 	[GCC_PCIE_0_SLV_Q2A_AXI_CLK] = &gcc_pcie_0_slv_q2a_axi_clk.clkr,
3356*67121dadSVivek Aknurwar 	[GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,
3357*67121dadSVivek Aknurwar 	[GCC_PCIE_1_AUX_CLK_SRC] = &gcc_pcie_1_aux_clk_src.clkr,
3358*67121dadSVivek Aknurwar 	[GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr,
3359*67121dadSVivek Aknurwar 	[GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr,
3360*67121dadSVivek Aknurwar 	[GCC_PCIE_1_PHY_AUX_CLK] = &gcc_pcie_1_phy_aux_clk.clkr,
3361*67121dadSVivek Aknurwar 	[GCC_PCIE_1_PHY_AUX_CLK_SRC] = &gcc_pcie_1_phy_aux_clk_src.clkr,
3362*67121dadSVivek Aknurwar 	[GCC_PCIE_1_PHY_RCHNG_CLK] = &gcc_pcie_1_phy_rchng_clk.clkr,
3363*67121dadSVivek Aknurwar 	[GCC_PCIE_1_PHY_RCHNG_CLK_SRC] = &gcc_pcie_1_phy_rchng_clk_src.clkr,
3364*67121dadSVivek Aknurwar 	[GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,
3365*67121dadSVivek Aknurwar 	[GCC_PCIE_1_PIPE_CLK_SRC] = &gcc_pcie_1_pipe_clk_src.clkr,
3366*67121dadSVivek Aknurwar 	[GCC_PCIE_1_PIPE_DIV2_CLK] = &gcc_pcie_1_pipe_div2_clk.clkr,
3367*67121dadSVivek Aknurwar 	[GCC_PCIE_1_PIPE_DIV_CLK_SRC] = &gcc_pcie_1_pipe_div_clk_src.clkr,
3368*67121dadSVivek Aknurwar 	[GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr,
3369*67121dadSVivek Aknurwar 	[GCC_PCIE_1_SLV_Q2A_AXI_CLK] = &gcc_pcie_1_slv_q2a_axi_clk.clkr,
3370*67121dadSVivek Aknurwar 	[GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
3371*67121dadSVivek Aknurwar 	[GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr,
3372*67121dadSVivek Aknurwar 	[GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
3373*67121dadSVivek Aknurwar 	[GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr,
3374*67121dadSVivek Aknurwar 	[GCC_QUPV3_I2C_CORE_CLK] = &gcc_qupv3_i2c_core_clk.clkr,
3375*67121dadSVivek Aknurwar 	[GCC_QUPV3_I2C_S0_CLK] = &gcc_qupv3_i2c_s0_clk.clkr,
3376*67121dadSVivek Aknurwar 	[GCC_QUPV3_I2C_S0_CLK_SRC] = &gcc_qupv3_i2c_s0_clk_src.clkr,
3377*67121dadSVivek Aknurwar 	[GCC_QUPV3_I2C_S1_CLK] = &gcc_qupv3_i2c_s1_clk.clkr,
3378*67121dadSVivek Aknurwar 	[GCC_QUPV3_I2C_S1_CLK_SRC] = &gcc_qupv3_i2c_s1_clk_src.clkr,
3379*67121dadSVivek Aknurwar 	[GCC_QUPV3_I2C_S2_CLK] = &gcc_qupv3_i2c_s2_clk.clkr,
3380*67121dadSVivek Aknurwar 	[GCC_QUPV3_I2C_S2_CLK_SRC] = &gcc_qupv3_i2c_s2_clk_src.clkr,
3381*67121dadSVivek Aknurwar 	[GCC_QUPV3_I2C_S3_CLK] = &gcc_qupv3_i2c_s3_clk.clkr,
3382*67121dadSVivek Aknurwar 	[GCC_QUPV3_I2C_S3_CLK_SRC] = &gcc_qupv3_i2c_s3_clk_src.clkr,
3383*67121dadSVivek Aknurwar 	[GCC_QUPV3_I2C_S4_CLK] = &gcc_qupv3_i2c_s4_clk.clkr,
3384*67121dadSVivek Aknurwar 	[GCC_QUPV3_I2C_S4_CLK_SRC] = &gcc_qupv3_i2c_s4_clk_src.clkr,
3385*67121dadSVivek Aknurwar 	[GCC_QUPV3_I2C_S_AHB_CLK] = &gcc_qupv3_i2c_s_ahb_clk.clkr,
3386*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP1_CORE_2X_CLK] = &gcc_qupv3_wrap1_core_2x_clk.clkr,
3387*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP1_CORE_CLK] = &gcc_qupv3_wrap1_core_clk.clkr,
3388*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP1_QSPI_REF_CLK] = &gcc_qupv3_wrap1_qspi_ref_clk.clkr,
3389*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP1_QSPI_REF_CLK_SRC] = &gcc_qupv3_wrap1_qspi_ref_clk_src.clkr,
3390*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP1_S0_CLK] = &gcc_qupv3_wrap1_s0_clk.clkr,
3391*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP1_S0_CLK_SRC] = &gcc_qupv3_wrap1_s0_clk_src.clkr,
3392*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP1_S1_CLK] = &gcc_qupv3_wrap1_s1_clk.clkr,
3393*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP1_S1_CLK_SRC] = &gcc_qupv3_wrap1_s1_clk_src.clkr,
3394*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP1_S2_CLK] = &gcc_qupv3_wrap1_s2_clk.clkr,
3395*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP1_S2_CLK_SRC] = &gcc_qupv3_wrap1_s2_clk_src.clkr,
3396*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP1_S3_CLK] = &gcc_qupv3_wrap1_s3_clk.clkr,
3397*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP1_S3_CLK_SRC] = &gcc_qupv3_wrap1_s3_clk_src.clkr,
3398*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP1_S4_CLK] = &gcc_qupv3_wrap1_s4_clk.clkr,
3399*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP1_S4_CLK_SRC] = &gcc_qupv3_wrap1_s4_clk_src.clkr,
3400*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP1_S5_CLK] = &gcc_qupv3_wrap1_s5_clk.clkr,
3401*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP1_S5_CLK_SRC] = &gcc_qupv3_wrap1_s5_clk_src.clkr,
3402*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP1_S6_CLK] = &gcc_qupv3_wrap1_s6_clk.clkr,
3403*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP1_S6_CLK_SRC] = &gcc_qupv3_wrap1_s6_clk_src.clkr,
3404*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP1_S7_CLK] = &gcc_qupv3_wrap1_s7_clk.clkr,
3405*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP1_S7_CLK_SRC] = &gcc_qupv3_wrap1_s7_clk_src.clkr,
3406*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP2_CORE_2X_CLK] = &gcc_qupv3_wrap2_core_2x_clk.clkr,
3407*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP2_CORE_CLK] = &gcc_qupv3_wrap2_core_clk.clkr,
3408*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP2_S0_CLK] = &gcc_qupv3_wrap2_s0_clk.clkr,
3409*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP2_S0_CLK_SRC] = &gcc_qupv3_wrap2_s0_clk_src.clkr,
3410*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP2_S1_CLK] = &gcc_qupv3_wrap2_s1_clk.clkr,
3411*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP2_S1_CLK_SRC] = &gcc_qupv3_wrap2_s1_clk_src.clkr,
3412*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP2_S2_CLK] = &gcc_qupv3_wrap2_s2_clk.clkr,
3413*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP2_S2_CLK_SRC] = &gcc_qupv3_wrap2_s2_clk_src.clkr,
3414*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP2_S3_CLK] = &gcc_qupv3_wrap2_s3_clk.clkr,
3415*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP2_S3_CLK_SRC] = &gcc_qupv3_wrap2_s3_clk_src.clkr,
3416*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP2_S4_CLK] = &gcc_qupv3_wrap2_s4_clk.clkr,
3417*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP2_S4_CLK_SRC] = &gcc_qupv3_wrap2_s4_clk_src.clkr,
3418*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP3_CORE_2X_CLK] = &gcc_qupv3_wrap3_core_2x_clk.clkr,
3419*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP3_CORE_CLK] = &gcc_qupv3_wrap3_core_clk.clkr,
3420*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP3_QSPI_REF_CLK] = &gcc_qupv3_wrap3_qspi_ref_clk.clkr,
3421*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP3_QSPI_REF_CLK_SRC] = &gcc_qupv3_wrap3_qspi_ref_clk_src.clkr,
3422*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP3_S0_CLK] = &gcc_qupv3_wrap3_s0_clk.clkr,
3423*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP3_S0_CLK_SRC] = &gcc_qupv3_wrap3_s0_clk_src.clkr,
3424*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP3_S1_CLK] = &gcc_qupv3_wrap3_s1_clk.clkr,
3425*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP3_S1_CLK_SRC] = &gcc_qupv3_wrap3_s1_clk_src.clkr,
3426*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP3_S2_CLK] = &gcc_qupv3_wrap3_s2_clk.clkr,
3427*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP3_S2_CLK_SRC] = &gcc_qupv3_wrap3_s2_clk_src.clkr,
3428*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP3_S3_CLK] = &gcc_qupv3_wrap3_s3_clk.clkr,
3429*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP3_S3_CLK_SRC] = &gcc_qupv3_wrap3_s3_clk_src.clkr,
3430*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP3_S4_CLK] = &gcc_qupv3_wrap3_s4_clk.clkr,
3431*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP3_S4_CLK_SRC] = &gcc_qupv3_wrap3_s4_clk_src.clkr,
3432*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP3_S5_CLK] = &gcc_qupv3_wrap3_s5_clk.clkr,
3433*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP3_S5_CLK_SRC] = &gcc_qupv3_wrap3_s5_clk_src.clkr,
3434*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP4_CORE_2X_CLK] = &gcc_qupv3_wrap4_core_2x_clk.clkr,
3435*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP4_CORE_CLK] = &gcc_qupv3_wrap4_core_clk.clkr,
3436*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP4_S0_CLK] = &gcc_qupv3_wrap4_s0_clk.clkr,
3437*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP4_S0_CLK_SRC] = &gcc_qupv3_wrap4_s0_clk_src.clkr,
3438*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP4_S1_CLK] = &gcc_qupv3_wrap4_s1_clk.clkr,
3439*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP4_S1_CLK_SRC] = &gcc_qupv3_wrap4_s1_clk_src.clkr,
3440*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP4_S2_CLK] = &gcc_qupv3_wrap4_s2_clk.clkr,
3441*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP4_S2_CLK_SRC] = &gcc_qupv3_wrap4_s2_clk_src.clkr,
3442*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP4_S3_CLK] = &gcc_qupv3_wrap4_s3_clk.clkr,
3443*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP4_S3_CLK_SRC] = &gcc_qupv3_wrap4_s3_clk_src.clkr,
3444*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP4_S4_CLK] = &gcc_qupv3_wrap4_s4_clk.clkr,
3445*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP4_S4_CLK_SRC] = &gcc_qupv3_wrap4_s4_clk_src.clkr,
3446*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP_1_M_AXI_CLK] = &gcc_qupv3_wrap_1_m_axi_clk.clkr,
3447*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP_1_S_AHB_CLK] = &gcc_qupv3_wrap_1_s_ahb_clk.clkr,
3448*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP_2_M_AHB_CLK] = &gcc_qupv3_wrap_2_m_ahb_clk.clkr,
3449*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP_2_S_AHB_CLK] = &gcc_qupv3_wrap_2_s_ahb_clk.clkr,
3450*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP_3_M_AHB_CLK] = &gcc_qupv3_wrap_3_m_ahb_clk.clkr,
3451*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP_3_S_AHB_CLK] = &gcc_qupv3_wrap_3_s_ahb_clk.clkr,
3452*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP_4_M_AHB_CLK] = &gcc_qupv3_wrap_4_m_ahb_clk.clkr,
3453*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAP_4_S_AHB_CLK] = &gcc_qupv3_wrap_4_s_ahb_clk.clkr,
3454*67121dadSVivek Aknurwar 	[GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
3455*67121dadSVivek Aknurwar 	[GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
3456*67121dadSVivek Aknurwar 	[GCC_SDCC2_APPS_CLK_SRC] = &gcc_sdcc2_apps_clk_src.clkr,
3457*67121dadSVivek Aknurwar 	[GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr,
3458*67121dadSVivek Aknurwar 	[GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr,
3459*67121dadSVivek Aknurwar 	[GCC_SDCC4_APPS_CLK_SRC] = &gcc_sdcc4_apps_clk_src.clkr,
3460*67121dadSVivek Aknurwar 	[GCC_UFS_PHY_AHB_CLK] = &gcc_ufs_phy_ahb_clk.clkr,
3461*67121dadSVivek Aknurwar 	[GCC_UFS_PHY_AXI_CLK] = &gcc_ufs_phy_axi_clk.clkr,
3462*67121dadSVivek Aknurwar 	[GCC_UFS_PHY_AXI_CLK_SRC] = &gcc_ufs_phy_axi_clk_src.clkr,
3463*67121dadSVivek Aknurwar 	[GCC_UFS_PHY_ICE_CORE_CLK] = &gcc_ufs_phy_ice_core_clk.clkr,
3464*67121dadSVivek Aknurwar 	[GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &gcc_ufs_phy_ice_core_clk_src.clkr,
3465*67121dadSVivek Aknurwar 	[GCC_UFS_PHY_PHY_AUX_CLK] = &gcc_ufs_phy_phy_aux_clk.clkr,
3466*67121dadSVivek Aknurwar 	[GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &gcc_ufs_phy_phy_aux_clk_src.clkr,
3467*67121dadSVivek Aknurwar 	[GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &gcc_ufs_phy_rx_symbol_0_clk.clkr,
3468*67121dadSVivek Aknurwar 	[GCC_UFS_PHY_RX_SYMBOL_0_CLK_SRC] = &gcc_ufs_phy_rx_symbol_0_clk_src.clkr,
3469*67121dadSVivek Aknurwar 	[GCC_UFS_PHY_RX_SYMBOL_1_CLK] = &gcc_ufs_phy_rx_symbol_1_clk.clkr,
3470*67121dadSVivek Aknurwar 	[GCC_UFS_PHY_RX_SYMBOL_1_CLK_SRC] = &gcc_ufs_phy_rx_symbol_1_clk_src.clkr,
3471*67121dadSVivek Aknurwar 	[GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &gcc_ufs_phy_tx_symbol_0_clk.clkr,
3472*67121dadSVivek Aknurwar 	[GCC_UFS_PHY_TX_SYMBOL_0_CLK_SRC] = &gcc_ufs_phy_tx_symbol_0_clk_src.clkr,
3473*67121dadSVivek Aknurwar 	[GCC_UFS_PHY_UNIPRO_5_CORE_CLK] = &gcc_ufs_phy_unipro_5_core_clk.clkr,
3474*67121dadSVivek Aknurwar 	[GCC_UFS_PHY_UNIPRO_5_CORE_CLK_SRC] = &gcc_ufs_phy_unipro_5_core_clk_src.clkr,
3475*67121dadSVivek Aknurwar 	[GCC_USB30_PRIM_MASTER_CLK] = &gcc_usb30_prim_master_clk.clkr,
3476*67121dadSVivek Aknurwar 	[GCC_USB30_PRIM_MASTER_CLK_SRC] = &gcc_usb30_prim_master_clk_src.clkr,
3477*67121dadSVivek Aknurwar 	[GCC_USB30_PRIM_MOCK_UTMI_CLK] = &gcc_usb30_prim_mock_utmi_clk.clkr,
3478*67121dadSVivek Aknurwar 	[GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC] = &gcc_usb30_prim_mock_utmi_clk_src.clkr,
3479*67121dadSVivek Aknurwar 	[GCC_USB30_PRIM_MOCK_UTMI_POSTDIV_CLK_SRC] = &gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr,
3480*67121dadSVivek Aknurwar 	[GCC_USB30_PRIM_SLEEP_CLK] = &gcc_usb30_prim_sleep_clk.clkr,
3481*67121dadSVivek Aknurwar 	[GCC_USB3_PRIM_PHY_AUX_CLK] = &gcc_usb3_prim_phy_aux_clk.clkr,
3482*67121dadSVivek Aknurwar 	[GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &gcc_usb3_prim_phy_aux_clk_src.clkr,
3483*67121dadSVivek Aknurwar 	[GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &gcc_usb3_prim_phy_com_aux_clk.clkr,
3484*67121dadSVivek Aknurwar 	[GCC_USB3_PRIM_PHY_PIPE_CLK] = &gcc_usb3_prim_phy_pipe_clk.clkr,
3485*67121dadSVivek Aknurwar 	[GCC_USB3_PRIM_PHY_PIPE_CLK_SRC] = &gcc_usb3_prim_phy_pipe_clk_src.clkr,
3486*67121dadSVivek Aknurwar 	[GCC_VIDEO_AXI0_CLK] = &gcc_video_axi0_clk.clkr,
3487*67121dadSVivek Aknurwar 	[GCC_VIDEO_AXI0C_CLK] = &gcc_video_axi0c_clk.clkr,
3488*67121dadSVivek Aknurwar };
3489*67121dadSVivek Aknurwar 
3490*67121dadSVivek Aknurwar static struct gdsc *gcc_hawi_gdscs[] = {
3491*67121dadSVivek Aknurwar 	[GCC_PCIE_0_GDSC] = &gcc_pcie_0_gdsc,
3492*67121dadSVivek Aknurwar 	[GCC_PCIE_0_PHY_GDSC] = &gcc_pcie_0_phy_gdsc,
3493*67121dadSVivek Aknurwar 	[GCC_PCIE_1_GDSC] = &gcc_pcie_1_gdsc,
3494*67121dadSVivek Aknurwar 	[GCC_PCIE_1_PHY_GDSC] = &gcc_pcie_1_phy_gdsc,
3495*67121dadSVivek Aknurwar 	[GCC_UFS_MEM_PHY_GDSC] = &gcc_ufs_mem_phy_gdsc,
3496*67121dadSVivek Aknurwar 	[GCC_UFS_PHY_GDSC] = &gcc_ufs_phy_gdsc,
3497*67121dadSVivek Aknurwar 	[GCC_USB30_PRIM_GDSC] = &gcc_usb30_prim_gdsc,
3498*67121dadSVivek Aknurwar 	[GCC_USB3_PHY_GDSC] = &gcc_usb3_phy_gdsc,
3499*67121dadSVivek Aknurwar };
3500*67121dadSVivek Aknurwar 
3501*67121dadSVivek Aknurwar static const struct qcom_reset_map gcc_hawi_resets[] = {
3502*67121dadSVivek Aknurwar 	[GCC_CAMERA_BCR] = { 0x26000 },
3503*67121dadSVivek Aknurwar 	[GCC_EVA_AXI0_CLK_ARES] = { 0x9f008, 2 },
3504*67121dadSVivek Aknurwar 	[GCC_EVA_AXI0C_CLK_ARES] = { 0x9f010, 2 },
3505*67121dadSVivek Aknurwar 	[GCC_EVA_BCR] = { 0x9f000 },
3506*67121dadSVivek Aknurwar 	[GCC_GPU_BCR] = { 0x71000 },
3507*67121dadSVivek Aknurwar 	[GCC_PCIE_0_BCR] = { 0x6b000 },
3508*67121dadSVivek Aknurwar 	[GCC_PCIE_0_LINK_DOWN_BCR] = { 0x6c014 },
3509*67121dadSVivek Aknurwar 	[GCC_PCIE_0_NOCSR_COM_PHY_BCR] = { 0x6c020 },
3510*67121dadSVivek Aknurwar 	[GCC_PCIE_0_PHY_BCR] = { 0x6c01c },
3511*67121dadSVivek Aknurwar 	[GCC_PCIE_0_PHY_NOCSR_COM_PHY_BCR] = { 0x6c028 },
3512*67121dadSVivek Aknurwar 	[GCC_PCIE_1_BCR] = { 0x67000 },
3513*67121dadSVivek Aknurwar 	[GCC_PCIE_1_LINK_DOWN_BCR] = { 0x8e014 },
3514*67121dadSVivek Aknurwar 	[GCC_PCIE_1_NOCSR_COM_PHY_BCR] = { 0x8e020 },
3515*67121dadSVivek Aknurwar 	[GCC_PCIE_1_PHY_BCR] = { 0x8e01c },
3516*67121dadSVivek Aknurwar 	[GCC_PCIE_1_PHY_NOCSR_COM_PHY_BCR] = { 0x8e024 },
3517*67121dadSVivek Aknurwar 	[GCC_PCIE_PHY_BCR] = { 0x6f000 },
3518*67121dadSVivek Aknurwar 	[GCC_PCIE_PHY_CFG_AHB_BCR] = { 0x6f00c },
3519*67121dadSVivek Aknurwar 	[GCC_PCIE_PHY_COM_BCR] = { 0x6f010 },
3520*67121dadSVivek Aknurwar 	[GCC_PCIE_RSCC_BCR] = { 0x11000 },
3521*67121dadSVivek Aknurwar 	[GCC_PDM_BCR] = { 0x33000 },
3522*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAPPER_1_BCR] = { 0x18000 },
3523*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAPPER_2_BCR] = { 0x1e000 },
3524*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAPPER_3_BCR] = { 0xa8000 },
3525*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAPPER_4_BCR] = { 0xa9000 },
3526*67121dadSVivek Aknurwar 	[GCC_QUPV3_WRAPPER_I2C_BCR] = { 0x17000 },
3527*67121dadSVivek Aknurwar 	[GCC_QUSB2PHY_PRIM_BCR] = { 0x12000 },
3528*67121dadSVivek Aknurwar 	[GCC_QUSB2PHY_SEC_BCR] = { 0x12004 },
3529*67121dadSVivek Aknurwar 	[GCC_SDCC2_BCR] = { 0x14000 },
3530*67121dadSVivek Aknurwar 	[GCC_SDCC4_BCR] = { 0x16000 },
3531*67121dadSVivek Aknurwar 	[GCC_TCSR_PCIE_BCR] = { 0x6f018 },
3532*67121dadSVivek Aknurwar 	[GCC_UFS_PHY_BCR] = { 0x77000 },
3533*67121dadSVivek Aknurwar 	[GCC_USB30_PRIM_BCR] = { 0x39000 },
3534*67121dadSVivek Aknurwar 	[GCC_USB3_DP_PHY_PRIM_BCR] = { 0x50008 },
3535*67121dadSVivek Aknurwar 	[GCC_USB3_DP_PHY_SEC_BCR] = { 0x50014 },
3536*67121dadSVivek Aknurwar 	[GCC_USB3_PHY_PRIM_BCR] = { 0x50000 },
3537*67121dadSVivek Aknurwar 	[GCC_USB3_PHY_SEC_BCR] = { 0x5000c },
3538*67121dadSVivek Aknurwar 	[GCC_USB3PHY_PHY_PRIM_BCR] = { 0x50004 },
3539*67121dadSVivek Aknurwar 	[GCC_USB3PHY_PHY_SEC_BCR] = { 0x50010 },
3540*67121dadSVivek Aknurwar 	[GCC_VIDEO_AXI0_CLK_ARES] = { 0x32018, 2 },
3541*67121dadSVivek Aknurwar 	[GCC_VIDEO_AXI0C_CLK_ARES] = { 0x32020, 2 },
3542*67121dadSVivek Aknurwar 	[GCC_VIDEO_BCR] = { 0x32000 },
3543*67121dadSVivek Aknurwar 	[GCC_VIDEO_XO_CLK_ARES] = { 0x32028, 2 },
3544*67121dadSVivek Aknurwar };
3545*67121dadSVivek Aknurwar 
3546*67121dadSVivek Aknurwar static const u32 gcc_hawi_critical_cbcrs[] = {
3547*67121dadSVivek Aknurwar 	0xa0004, /* GCC_CAM_BIST_MCLK_AHB_CLK */
3548*67121dadSVivek Aknurwar 	0x26004, /* GCC_CAMERA_AHB_CLK */
3549*67121dadSVivek Aknurwar 	0x26028, /* GCC_CAMERA_RSC_CORE_CLK */
3550*67121dadSVivek Aknurwar 	0x26024, /* GCC_CAMERA_XO_CLK */
3551*67121dadSVivek Aknurwar 	0x9f004, /* GCC_EVA_AHB_CLK */
3552*67121dadSVivek Aknurwar 	0x9f018, /* GCC_EVA_XO_CLK */
3553*67121dadSVivek Aknurwar 	0x71004, /* GCC_GPU_CFG_AHB_CLK */
3554*67121dadSVivek Aknurwar 	0x7101c, /* GCC_GPU_RSC_CORE_CLK */
3555*67121dadSVivek Aknurwar 	0x67084, /* GCC_PCIE_1_RSC_CORE_CLK */
3556*67121dadSVivek Aknurwar 	0x43014, /* GCC_PCIE_LINK_XO_CLK */
3557*67121dadSVivek Aknurwar 	0x6b088, /* GCC_PCIE_RSC_CORE_CLK */
3558*67121dadSVivek Aknurwar 	0x52010, /* GCC_PCIE_RSCC_CFG_AHB_CLK */
3559*67121dadSVivek Aknurwar 	0x52010, /* GCC_PCIE_RSCC_XO_CLK */
3560*67121dadSVivek Aknurwar 	0x32004, /* GCC_VIDEO_AHB_CLK */
3561*67121dadSVivek Aknurwar 	0x32028, /* GCC_VIDEO_XO_CLK */
3562*67121dadSVivek Aknurwar };
3563*67121dadSVivek Aknurwar 
3564*67121dadSVivek Aknurwar static const struct clk_rcg_dfs_data gcc_hawi_dfs_clocks[] = {
3565*67121dadSVivek Aknurwar 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_qspi_ref_clk_src),
3566*67121dadSVivek Aknurwar 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s0_clk_src),
3567*67121dadSVivek Aknurwar 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s1_clk_src),
3568*67121dadSVivek Aknurwar 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s3_clk_src),
3569*67121dadSVivek Aknurwar 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s4_clk_src),
3570*67121dadSVivek Aknurwar 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s5_clk_src),
3571*67121dadSVivek Aknurwar 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s6_clk_src),
3572*67121dadSVivek Aknurwar 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s7_clk_src),
3573*67121dadSVivek Aknurwar 	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s0_clk_src),
3574*67121dadSVivek Aknurwar 	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s1_clk_src),
3575*67121dadSVivek Aknurwar 	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s2_clk_src),
3576*67121dadSVivek Aknurwar 	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s3_clk_src),
3577*67121dadSVivek Aknurwar 	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s4_clk_src),
3578*67121dadSVivek Aknurwar 	DEFINE_RCG_DFS(gcc_qupv3_wrap3_qspi_ref_clk_src),
3579*67121dadSVivek Aknurwar 	DEFINE_RCG_DFS(gcc_qupv3_wrap3_s0_clk_src),
3580*67121dadSVivek Aknurwar 	DEFINE_RCG_DFS(gcc_qupv3_wrap3_s2_clk_src),
3581*67121dadSVivek Aknurwar 	DEFINE_RCG_DFS(gcc_qupv3_wrap3_s3_clk_src),
3582*67121dadSVivek Aknurwar 	DEFINE_RCG_DFS(gcc_qupv3_wrap3_s4_clk_src),
3583*67121dadSVivek Aknurwar 	DEFINE_RCG_DFS(gcc_qupv3_wrap3_s5_clk_src),
3584*67121dadSVivek Aknurwar 	DEFINE_RCG_DFS(gcc_qupv3_wrap4_s0_clk_src),
3585*67121dadSVivek Aknurwar 	DEFINE_RCG_DFS(gcc_qupv3_wrap4_s1_clk_src),
3586*67121dadSVivek Aknurwar 	DEFINE_RCG_DFS(gcc_qupv3_wrap4_s2_clk_src),
3587*67121dadSVivek Aknurwar 	DEFINE_RCG_DFS(gcc_qupv3_wrap4_s3_clk_src),
3588*67121dadSVivek Aknurwar 	DEFINE_RCG_DFS(gcc_qupv3_wrap4_s4_clk_src),
3589*67121dadSVivek Aknurwar };
3590*67121dadSVivek Aknurwar 
3591*67121dadSVivek Aknurwar static const struct regmap_config gcc_hawi_regmap_config = {
3592*67121dadSVivek Aknurwar 	.reg_bits = 32,
3593*67121dadSVivek Aknurwar 	.reg_stride = 4,
3594*67121dadSVivek Aknurwar 	.val_bits = 32,
3595*67121dadSVivek Aknurwar 	.max_register = 0x1f41f4,
3596*67121dadSVivek Aknurwar 	.fast_io = true,
3597*67121dadSVivek Aknurwar };
3598*67121dadSVivek Aknurwar 
3599*67121dadSVivek Aknurwar static void clk_hawi_regs_configure(struct device *dev, struct regmap *regmap)
3600*67121dadSVivek Aknurwar {
3601*67121dadSVivek Aknurwar 	/* FORCE_MEM_CORE_ON for ufs phy ice core clocks */
3602*67121dadSVivek Aknurwar 	qcom_branch_set_force_mem_core(regmap, gcc_ufs_phy_ice_core_clk, true);
3603*67121dadSVivek Aknurwar }
3604*67121dadSVivek Aknurwar 
3605*67121dadSVivek Aknurwar static const struct qcom_cc_driver_data gcc_hawi_driver_data = {
3606*67121dadSVivek Aknurwar 	.clk_cbcrs = gcc_hawi_critical_cbcrs,
3607*67121dadSVivek Aknurwar 	.num_clk_cbcrs = ARRAY_SIZE(gcc_hawi_critical_cbcrs),
3608*67121dadSVivek Aknurwar 	.dfs_rcgs = gcc_hawi_dfs_clocks,
3609*67121dadSVivek Aknurwar 	.num_dfs_rcgs = ARRAY_SIZE(gcc_hawi_dfs_clocks),
3610*67121dadSVivek Aknurwar 	.clk_regs_configure = clk_hawi_regs_configure,
3611*67121dadSVivek Aknurwar };
3612*67121dadSVivek Aknurwar 
3613*67121dadSVivek Aknurwar static const struct qcom_cc_desc gcc_hawi_desc = {
3614*67121dadSVivek Aknurwar 	.config = &gcc_hawi_regmap_config,
3615*67121dadSVivek Aknurwar 	.clks = gcc_hawi_clocks,
3616*67121dadSVivek Aknurwar 	.num_clks = ARRAY_SIZE(gcc_hawi_clocks),
3617*67121dadSVivek Aknurwar 	.resets = gcc_hawi_resets,
3618*67121dadSVivek Aknurwar 	.num_resets = ARRAY_SIZE(gcc_hawi_resets),
3619*67121dadSVivek Aknurwar 	.gdscs = gcc_hawi_gdscs,
3620*67121dadSVivek Aknurwar 	.num_gdscs = ARRAY_SIZE(gcc_hawi_gdscs),
3621*67121dadSVivek Aknurwar 	.use_rpm = true,
3622*67121dadSVivek Aknurwar 	.driver_data = &gcc_hawi_driver_data,
3623*67121dadSVivek Aknurwar };
3624*67121dadSVivek Aknurwar 
3625*67121dadSVivek Aknurwar static const struct of_device_id gcc_hawi_match_table[] = {
3626*67121dadSVivek Aknurwar 	{ .compatible = "qcom,hawi-gcc" },
3627*67121dadSVivek Aknurwar 	{ }
3628*67121dadSVivek Aknurwar };
3629*67121dadSVivek Aknurwar MODULE_DEVICE_TABLE(of, gcc_hawi_match_table);
3630*67121dadSVivek Aknurwar 
3631*67121dadSVivek Aknurwar static int gcc_hawi_probe(struct platform_device *pdev)
3632*67121dadSVivek Aknurwar {
3633*67121dadSVivek Aknurwar 	return qcom_cc_probe(pdev, &gcc_hawi_desc);
3634*67121dadSVivek Aknurwar }
3635*67121dadSVivek Aknurwar 
3636*67121dadSVivek Aknurwar static struct platform_driver gcc_hawi_driver = {
3637*67121dadSVivek Aknurwar 	.probe = gcc_hawi_probe,
3638*67121dadSVivek Aknurwar 	.driver = {
3639*67121dadSVivek Aknurwar 		.name = "gcc-hawi",
3640*67121dadSVivek Aknurwar 		.of_match_table = gcc_hawi_match_table,
3641*67121dadSVivek Aknurwar 	},
3642*67121dadSVivek Aknurwar };
3643*67121dadSVivek Aknurwar 
3644*67121dadSVivek Aknurwar static int __init gcc_hawi_init(void)
3645*67121dadSVivek Aknurwar {
3646*67121dadSVivek Aknurwar 	return platform_driver_register(&gcc_hawi_driver);
3647*67121dadSVivek Aknurwar }
3648*67121dadSVivek Aknurwar subsys_initcall(gcc_hawi_init);
3649*67121dadSVivek Aknurwar 
3650*67121dadSVivek Aknurwar static void __exit gcc_hawi_exit(void)
3651*67121dadSVivek Aknurwar {
3652*67121dadSVivek Aknurwar 	platform_driver_unregister(&gcc_hawi_driver);
3653*67121dadSVivek Aknurwar }
3654*67121dadSVivek Aknurwar module_exit(gcc_hawi_exit);
3655*67121dadSVivek Aknurwar 
3656*67121dadSVivek Aknurwar MODULE_DESCRIPTION("QTI GCC HAWI Driver");
3657*67121dadSVivek Aknurwar MODULE_LICENSE("GPL");
3658