xref: /linux/drivers/clk/qcom/gcc-ipq9650.c (revision 8c04c1292dca29a57ea82c6a44348be49749fc22)
1*76fc060dSKathiravan Thirumoorthy // SPDX-License-Identifier: GPL-2.0-only
2*76fc060dSKathiravan Thirumoorthy /*
3*76fc060dSKathiravan Thirumoorthy  * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
4*76fc060dSKathiravan Thirumoorthy  */
5*76fc060dSKathiravan Thirumoorthy 
6*76fc060dSKathiravan Thirumoorthy #include <linux/clk-provider.h>
7*76fc060dSKathiravan Thirumoorthy #include <linux/module.h>
8*76fc060dSKathiravan Thirumoorthy #include <linux/platform_device.h>
9*76fc060dSKathiravan Thirumoorthy #include <linux/regmap.h>
10*76fc060dSKathiravan Thirumoorthy 
11*76fc060dSKathiravan Thirumoorthy #include <dt-bindings/clock/qcom,ipq9650-gcc.h>
12*76fc060dSKathiravan Thirumoorthy #include <dt-bindings/reset/qcom,ipq9650-gcc.h>
13*76fc060dSKathiravan Thirumoorthy 
14*76fc060dSKathiravan Thirumoorthy #include "clk-alpha-pll.h"
15*76fc060dSKathiravan Thirumoorthy #include "clk-branch.h"
16*76fc060dSKathiravan Thirumoorthy #include "clk-rcg.h"
17*76fc060dSKathiravan Thirumoorthy #include "clk-regmap.h"
18*76fc060dSKathiravan Thirumoorthy #include "clk-regmap-divider.h"
19*76fc060dSKathiravan Thirumoorthy #include "clk-regmap-mux.h"
20*76fc060dSKathiravan Thirumoorthy #include "clk-regmap-phy-mux.h"
21*76fc060dSKathiravan Thirumoorthy #include "reset.h"
22*76fc060dSKathiravan Thirumoorthy 
23*76fc060dSKathiravan Thirumoorthy enum {
24*76fc060dSKathiravan Thirumoorthy 	DT_XO,
25*76fc060dSKathiravan Thirumoorthy 	DT_SLEEP_CLK,
26*76fc060dSKathiravan Thirumoorthy 	DT_PCIE30_PHY0_PIPE_CLK,
27*76fc060dSKathiravan Thirumoorthy 	DT_PCIE30_PHY1_PIPE_CLK,
28*76fc060dSKathiravan Thirumoorthy 	DT_PCIE30_PHY2_PIPE_CLK,
29*76fc060dSKathiravan Thirumoorthy 	DT_PCIE30_PHY3_PIPE_CLK,
30*76fc060dSKathiravan Thirumoorthy 	DT_PCIE30_PHY4_PIPE_CLK,
31*76fc060dSKathiravan Thirumoorthy 	DT_USB3_PHY0_CC_PIPE_CLK,
32*76fc060dSKathiravan Thirumoorthy 	DT_NSS_CMN_CLK,
33*76fc060dSKathiravan Thirumoorthy };
34*76fc060dSKathiravan Thirumoorthy 
35*76fc060dSKathiravan Thirumoorthy enum {
36*76fc060dSKathiravan Thirumoorthy 	P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC,
37*76fc060dSKathiravan Thirumoorthy 	P_GPLL0_OUT_MAIN,
38*76fc060dSKathiravan Thirumoorthy 	P_GPLL0_OUT_ODD,
39*76fc060dSKathiravan Thirumoorthy 	P_GPLL2_OUT_AUX,
40*76fc060dSKathiravan Thirumoorthy 	P_GPLL2_OUT_MAIN,
41*76fc060dSKathiravan Thirumoorthy 	P_GPLL4_OUT_MAIN,
42*76fc060dSKathiravan Thirumoorthy 	P_GPLL4_OUT_ODD,
43*76fc060dSKathiravan Thirumoorthy 	P_NSS_CMN_CLK,
44*76fc060dSKathiravan Thirumoorthy 	P_SLEEP_CLK,
45*76fc060dSKathiravan Thirumoorthy 	P_XO,
46*76fc060dSKathiravan Thirumoorthy };
47*76fc060dSKathiravan Thirumoorthy 
48*76fc060dSKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_xo = { .index = DT_XO };
49*76fc060dSKathiravan Thirumoorthy 
50*76fc060dSKathiravan Thirumoorthy static struct clk_alpha_pll gpll0_main = {
51*76fc060dSKathiravan Thirumoorthy 	.offset = 0x20000,
52*76fc060dSKathiravan Thirumoorthy 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
53*76fc060dSKathiravan Thirumoorthy 	.clkr = {
54*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0xb000,
55*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
56*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
57*76fc060dSKathiravan Thirumoorthy 			.name = "gpll0_main",
58*76fc060dSKathiravan Thirumoorthy 			.parent_data = &gcc_parent_data_xo,
59*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
60*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_alpha_pll_fixed_lucid_ops,
61*76fc060dSKathiravan Thirumoorthy 		},
62*76fc060dSKathiravan Thirumoorthy 	},
63*76fc060dSKathiravan Thirumoorthy };
64*76fc060dSKathiravan Thirumoorthy 
65*76fc060dSKathiravan Thirumoorthy static struct clk_fixed_factor gpll0_div2 = {
66*76fc060dSKathiravan Thirumoorthy 	.mult = 1,
67*76fc060dSKathiravan Thirumoorthy 	.div = 2,
68*76fc060dSKathiravan Thirumoorthy 	.hw.init = &(const struct clk_init_data) {
69*76fc060dSKathiravan Thirumoorthy 		.name = "gpll0_div2",
70*76fc060dSKathiravan Thirumoorthy 		.parent_hws = (const struct clk_hw *[]) {
71*76fc060dSKathiravan Thirumoorthy 			&gpll0_main.clkr.hw
72*76fc060dSKathiravan Thirumoorthy 		},
73*76fc060dSKathiravan Thirumoorthy 		.num_parents = 1,
74*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_fixed_factor_ops,
75*76fc060dSKathiravan Thirumoorthy 	},
76*76fc060dSKathiravan Thirumoorthy };
77*76fc060dSKathiravan Thirumoorthy 
78*76fc060dSKathiravan Thirumoorthy static struct clk_alpha_pll_postdiv gpll0 = {
79*76fc060dSKathiravan Thirumoorthy 	.offset = 0x20000,
80*76fc060dSKathiravan Thirumoorthy 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
81*76fc060dSKathiravan Thirumoorthy 	.width = 4,
82*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
83*76fc060dSKathiravan Thirumoorthy 		.name = "gpll0",
84*76fc060dSKathiravan Thirumoorthy 		.parent_hws = (const struct clk_hw *[]) {
85*76fc060dSKathiravan Thirumoorthy 			       &gpll0_main.clkr.hw },
86*76fc060dSKathiravan Thirumoorthy 		.num_parents = 1,
87*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_alpha_pll_postdiv_ro_ops,
88*76fc060dSKathiravan Thirumoorthy 	},
89*76fc060dSKathiravan Thirumoorthy };
90*76fc060dSKathiravan Thirumoorthy 
91*76fc060dSKathiravan Thirumoorthy static struct clk_alpha_pll gpll2 = {
92*76fc060dSKathiravan Thirumoorthy 	.offset = 0x21000,
93*76fc060dSKathiravan Thirumoorthy 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_ZONDA],
94*76fc060dSKathiravan Thirumoorthy 	.clkr = {
95*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0xb000,
96*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(1),
97*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
98*76fc060dSKathiravan Thirumoorthy 			.name = "gpll2",
99*76fc060dSKathiravan Thirumoorthy 			.parent_data = &gcc_parent_data_xo,
100*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
101*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_alpha_pll_zonda_ops,
102*76fc060dSKathiravan Thirumoorthy 		},
103*76fc060dSKathiravan Thirumoorthy 	},
104*76fc060dSKathiravan Thirumoorthy };
105*76fc060dSKathiravan Thirumoorthy 
106*76fc060dSKathiravan Thirumoorthy static const struct clk_div_table post_div_table_gpll2_out_main[] = {
107*76fc060dSKathiravan Thirumoorthy 	{ 0x1, 2 },
108*76fc060dSKathiravan Thirumoorthy 	{ }
109*76fc060dSKathiravan Thirumoorthy };
110*76fc060dSKathiravan Thirumoorthy 
111*76fc060dSKathiravan Thirumoorthy static struct clk_alpha_pll_postdiv gpll2_out_main = {
112*76fc060dSKathiravan Thirumoorthy 	.offset = 0x21000,
113*76fc060dSKathiravan Thirumoorthy 	.post_div_shift = 8,
114*76fc060dSKathiravan Thirumoorthy 	.post_div_table = post_div_table_gpll2_out_main,
115*76fc060dSKathiravan Thirumoorthy 	.num_post_div = ARRAY_SIZE(post_div_table_gpll2_out_main),
116*76fc060dSKathiravan Thirumoorthy 	.width = 2,
117*76fc060dSKathiravan Thirumoorthy 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_ZONDA],
118*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
119*76fc060dSKathiravan Thirumoorthy 		.name = "gpll2_out_main",
120*76fc060dSKathiravan Thirumoorthy 		.parent_hws = (const struct clk_hw*[]) {
121*76fc060dSKathiravan Thirumoorthy 			&gpll2.clkr.hw,
122*76fc060dSKathiravan Thirumoorthy 		},
123*76fc060dSKathiravan Thirumoorthy 		.num_parents = 1,
124*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_alpha_pll_postdiv_zonda_ops,
125*76fc060dSKathiravan Thirumoorthy 	},
126*76fc060dSKathiravan Thirumoorthy };
127*76fc060dSKathiravan Thirumoorthy 
128*76fc060dSKathiravan Thirumoorthy static struct clk_alpha_pll gpll4 = {
129*76fc060dSKathiravan Thirumoorthy 	.offset = 0x22000,
130*76fc060dSKathiravan Thirumoorthy 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID],
131*76fc060dSKathiravan Thirumoorthy 	.clkr = {
132*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0xb000,
133*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(2),
134*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
135*76fc060dSKathiravan Thirumoorthy 			.name = "gpll4",
136*76fc060dSKathiravan Thirumoorthy 			.parent_data = &gcc_parent_data_xo,
137*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
138*76fc060dSKathiravan Thirumoorthy 			/*
139*76fc060dSKathiravan Thirumoorthy 			 * There are no consumers for this GPLL in kernel yet,
140*76fc060dSKathiravan Thirumoorthy 			 * (will be added soon), so the clock framework
141*76fc060dSKathiravan Thirumoorthy 			 * disables this source. But some of the clocks
142*76fc060dSKathiravan Thirumoorthy 			 * initialized by boot loaders uses this source. So we
143*76fc060dSKathiravan Thirumoorthy 			 * need to keep this clock ON. Add the
144*76fc060dSKathiravan Thirumoorthy 			 * CLK_IGNORE_UNUSED flag so the clock will not be
145*76fc060dSKathiravan Thirumoorthy 			 * disabled. Once the consumer in kernel is added, we
146*76fc060dSKathiravan Thirumoorthy 			 * can get rid of this flag.
147*76fc060dSKathiravan Thirumoorthy 			 */
148*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_IS_CRITICAL,
149*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_alpha_pll_fixed_lucid_ops,
150*76fc060dSKathiravan Thirumoorthy 		},
151*76fc060dSKathiravan Thirumoorthy 	},
152*76fc060dSKathiravan Thirumoorthy };
153*76fc060dSKathiravan Thirumoorthy 
154*76fc060dSKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_xo[] = {
155*76fc060dSKathiravan Thirumoorthy 	{ P_XO, 0 },
156*76fc060dSKathiravan Thirumoorthy };
157*76fc060dSKathiravan Thirumoorthy 
158*76fc060dSKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_0[] = {
159*76fc060dSKathiravan Thirumoorthy 	{ P_XO, 0 },
160*76fc060dSKathiravan Thirumoorthy 	{ P_GPLL0_OUT_MAIN, 1 },
161*76fc060dSKathiravan Thirumoorthy 	{ P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 4 },
162*76fc060dSKathiravan Thirumoorthy };
163*76fc060dSKathiravan Thirumoorthy 
164*76fc060dSKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_0[] = {
165*76fc060dSKathiravan Thirumoorthy 	{ .index = DT_XO },
166*76fc060dSKathiravan Thirumoorthy 	{ .hw = &gpll0.clkr.hw },
167*76fc060dSKathiravan Thirumoorthy 	{ .hw = &gpll0_div2.hw },
168*76fc060dSKathiravan Thirumoorthy };
169*76fc060dSKathiravan Thirumoorthy 
170*76fc060dSKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_1[] = {
171*76fc060dSKathiravan Thirumoorthy 	{ P_XO, 0 },
172*76fc060dSKathiravan Thirumoorthy 	{ P_GPLL0_OUT_MAIN, 1 },
173*76fc060dSKathiravan Thirumoorthy 	{ P_GPLL4_OUT_MAIN, 2 },
174*76fc060dSKathiravan Thirumoorthy };
175*76fc060dSKathiravan Thirumoorthy 
176*76fc060dSKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_1[] = {
177*76fc060dSKathiravan Thirumoorthy 	{ .index = DT_XO },
178*76fc060dSKathiravan Thirumoorthy 	{ .hw = &gpll0.clkr.hw },
179*76fc060dSKathiravan Thirumoorthy 	{ .hw = &gpll4.clkr.hw },
180*76fc060dSKathiravan Thirumoorthy };
181*76fc060dSKathiravan Thirumoorthy 
182*76fc060dSKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_2[] = {
183*76fc060dSKathiravan Thirumoorthy 	{ P_XO, 0 },
184*76fc060dSKathiravan Thirumoorthy 	{ P_GPLL0_OUT_MAIN, 1 },
185*76fc060dSKathiravan Thirumoorthy };
186*76fc060dSKathiravan Thirumoorthy 
187*76fc060dSKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_2[] = {
188*76fc060dSKathiravan Thirumoorthy 	{ .index = DT_XO },
189*76fc060dSKathiravan Thirumoorthy 	{ .hw = &gpll0.clkr.hw },
190*76fc060dSKathiravan Thirumoorthy };
191*76fc060dSKathiravan Thirumoorthy 
192*76fc060dSKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_3[] = {
193*76fc060dSKathiravan Thirumoorthy 	{ P_XO, 0 },
194*76fc060dSKathiravan Thirumoorthy };
195*76fc060dSKathiravan Thirumoorthy 
196*76fc060dSKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_3[] = {
197*76fc060dSKathiravan Thirumoorthy 	{ .index = DT_XO },
198*76fc060dSKathiravan Thirumoorthy };
199*76fc060dSKathiravan Thirumoorthy 
200*76fc060dSKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_4[] = {
201*76fc060dSKathiravan Thirumoorthy 	{ P_XO, 0 },
202*76fc060dSKathiravan Thirumoorthy 	{ P_GPLL4_OUT_MAIN, 1 },
203*76fc060dSKathiravan Thirumoorthy 	{ P_GPLL0_OUT_ODD, 2 },
204*76fc060dSKathiravan Thirumoorthy 	{ P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 4 },
205*76fc060dSKathiravan Thirumoorthy };
206*76fc060dSKathiravan Thirumoorthy 
207*76fc060dSKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_4[] = {
208*76fc060dSKathiravan Thirumoorthy 	{ .index = DT_XO },
209*76fc060dSKathiravan Thirumoorthy 	{ .hw = &gpll4.clkr.hw },
210*76fc060dSKathiravan Thirumoorthy 	{ .hw = &gpll0.clkr.hw },
211*76fc060dSKathiravan Thirumoorthy 	{ .hw = &gpll0_div2.hw },
212*76fc060dSKathiravan Thirumoorthy };
213*76fc060dSKathiravan Thirumoorthy 
214*76fc060dSKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_5[] = {
215*76fc060dSKathiravan Thirumoorthy 	{ P_XO, 0 },
216*76fc060dSKathiravan Thirumoorthy 	{ P_GPLL0_OUT_MAIN, 1 },
217*76fc060dSKathiravan Thirumoorthy 	{ P_GPLL2_OUT_AUX, 2 },
218*76fc060dSKathiravan Thirumoorthy };
219*76fc060dSKathiravan Thirumoorthy 
220*76fc060dSKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_5[] = {
221*76fc060dSKathiravan Thirumoorthy 	{ .index = DT_XO },
222*76fc060dSKathiravan Thirumoorthy 	{ .hw = &gpll0.clkr.hw },
223*76fc060dSKathiravan Thirumoorthy 	{ .hw = &gpll2.clkr.hw },
224*76fc060dSKathiravan Thirumoorthy };
225*76fc060dSKathiravan Thirumoorthy 
226*76fc060dSKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_6[] = {
227*76fc060dSKathiravan Thirumoorthy 	{ P_XO, 0 },
228*76fc060dSKathiravan Thirumoorthy 	{ P_GPLL4_OUT_ODD, 1 },
229*76fc060dSKathiravan Thirumoorthy 	{ P_GPLL0_OUT_MAIN, 3 },
230*76fc060dSKathiravan Thirumoorthy 	{ P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 4 },
231*76fc060dSKathiravan Thirumoorthy };
232*76fc060dSKathiravan Thirumoorthy 
233*76fc060dSKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_6[] = {
234*76fc060dSKathiravan Thirumoorthy 	{ .index = DT_XO },
235*76fc060dSKathiravan Thirumoorthy 	{ .hw = &gpll4.clkr.hw },
236*76fc060dSKathiravan Thirumoorthy 	{ .hw = &gpll0.clkr.hw },
237*76fc060dSKathiravan Thirumoorthy 	{ .hw = &gpll0_div2.hw },
238*76fc060dSKathiravan Thirumoorthy };
239*76fc060dSKathiravan Thirumoorthy 
240*76fc060dSKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_7[] = {
241*76fc060dSKathiravan Thirumoorthy 	{ P_XO, 0 },
242*76fc060dSKathiravan Thirumoorthy 	{ P_NSS_CMN_CLK, 1 },
243*76fc060dSKathiravan Thirumoorthy 	{ P_GPLL0_OUT_ODD, 2 },
244*76fc060dSKathiravan Thirumoorthy 	{ P_GPLL2_OUT_AUX, 3 },
245*76fc060dSKathiravan Thirumoorthy };
246*76fc060dSKathiravan Thirumoorthy 
247*76fc060dSKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_7[] = {
248*76fc060dSKathiravan Thirumoorthy 	{ .index = DT_XO },
249*76fc060dSKathiravan Thirumoorthy 	{ .index = DT_NSS_CMN_CLK },
250*76fc060dSKathiravan Thirumoorthy 	{ .hw = &gpll0.clkr.hw },
251*76fc060dSKathiravan Thirumoorthy 	{ .hw = &gpll2.clkr.hw },
252*76fc060dSKathiravan Thirumoorthy };
253*76fc060dSKathiravan Thirumoorthy 
254*76fc060dSKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_8[] = {
255*76fc060dSKathiravan Thirumoorthy 	{ P_XO, 0 },
256*76fc060dSKathiravan Thirumoorthy 	{ P_GPLL0_OUT_MAIN, 1 },
257*76fc060dSKathiravan Thirumoorthy 	{ P_GPLL0_OUT_ODD, 2 },
258*76fc060dSKathiravan Thirumoorthy 	{ P_SLEEP_CLK, 6 },
259*76fc060dSKathiravan Thirumoorthy };
260*76fc060dSKathiravan Thirumoorthy 
261*76fc060dSKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_8[] = {
262*76fc060dSKathiravan Thirumoorthy 	{ .index = DT_XO },
263*76fc060dSKathiravan Thirumoorthy 	{ .hw = &gpll0.clkr.hw },
264*76fc060dSKathiravan Thirumoorthy 	{ .hw = &gpll0.clkr.hw },
265*76fc060dSKathiravan Thirumoorthy 	{ .index = DT_SLEEP_CLK },
266*76fc060dSKathiravan Thirumoorthy };
267*76fc060dSKathiravan Thirumoorthy 
268*76fc060dSKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_9[] = {
269*76fc060dSKathiravan Thirumoorthy 	{ P_XO, 0 },
270*76fc060dSKathiravan Thirumoorthy 	{ P_GPLL0_OUT_MAIN, 1 },
271*76fc060dSKathiravan Thirumoorthy 	{ P_GPLL2_OUT_MAIN, 2 },
272*76fc060dSKathiravan Thirumoorthy 	{ P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 4 },
273*76fc060dSKathiravan Thirumoorthy };
274*76fc060dSKathiravan Thirumoorthy 
275*76fc060dSKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_9[] = {
276*76fc060dSKathiravan Thirumoorthy 	{ .index = DT_XO },
277*76fc060dSKathiravan Thirumoorthy 	{ .hw = &gpll0.clkr.hw },
278*76fc060dSKathiravan Thirumoorthy 	{ .hw = &gpll2_out_main.clkr.hw },
279*76fc060dSKathiravan Thirumoorthy 	{ .hw = &gpll0_div2.hw },
280*76fc060dSKathiravan Thirumoorthy };
281*76fc060dSKathiravan Thirumoorthy 
282*76fc060dSKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_10[] = {
283*76fc060dSKathiravan Thirumoorthy 	{ P_XO, 0 },
284*76fc060dSKathiravan Thirumoorthy 	{ P_GPLL0_OUT_MAIN, 1 },
285*76fc060dSKathiravan Thirumoorthy 	{ P_GPLL4_OUT_MAIN, 2 },
286*76fc060dSKathiravan Thirumoorthy 	{ P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 4 },
287*76fc060dSKathiravan Thirumoorthy };
288*76fc060dSKathiravan Thirumoorthy 
289*76fc060dSKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_10[] = {
290*76fc060dSKathiravan Thirumoorthy 	{ .index = DT_XO },
291*76fc060dSKathiravan Thirumoorthy 	{ .hw = &gpll0.clkr.hw },
292*76fc060dSKathiravan Thirumoorthy 	{ .hw = &gpll4.clkr.hw },
293*76fc060dSKathiravan Thirumoorthy 	{ .hw = &gpll0_div2.hw },
294*76fc060dSKathiravan Thirumoorthy };
295*76fc060dSKathiravan Thirumoorthy 
296*76fc060dSKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_11[] = {
297*76fc060dSKathiravan Thirumoorthy 	{ P_XO, 0 },
298*76fc060dSKathiravan Thirumoorthy 	{ P_GPLL0_OUT_ODD, 2 },
299*76fc060dSKathiravan Thirumoorthy 	{ P_SLEEP_CLK, 6 },
300*76fc060dSKathiravan Thirumoorthy };
301*76fc060dSKathiravan Thirumoorthy 
302*76fc060dSKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_11[] = {
303*76fc060dSKathiravan Thirumoorthy 	{ .index = DT_XO },
304*76fc060dSKathiravan Thirumoorthy 	{ .hw = &gpll0.clkr.hw },
305*76fc060dSKathiravan Thirumoorthy 	{ .index = DT_SLEEP_CLK },
306*76fc060dSKathiravan Thirumoorthy };
307*76fc060dSKathiravan Thirumoorthy 
308*76fc060dSKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_12[] = {
309*76fc060dSKathiravan Thirumoorthy 	{ P_SLEEP_CLK, 6 },
310*76fc060dSKathiravan Thirumoorthy };
311*76fc060dSKathiravan Thirumoorthy 
312*76fc060dSKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_12[] = {
313*76fc060dSKathiravan Thirumoorthy 	{ .index = DT_SLEEP_CLK },
314*76fc060dSKathiravan Thirumoorthy };
315*76fc060dSKathiravan Thirumoorthy 
316*76fc060dSKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_13[] = {
317*76fc060dSKathiravan Thirumoorthy 	{ P_XO, 0 },
318*76fc060dSKathiravan Thirumoorthy 	{ P_GPLL0_OUT_MAIN, 1 },
319*76fc060dSKathiravan Thirumoorthy 	{ P_GPLL4_OUT_MAIN, 2 },
320*76fc060dSKathiravan Thirumoorthy 	{ P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 3 },
321*76fc060dSKathiravan Thirumoorthy };
322*76fc060dSKathiravan Thirumoorthy 
323*76fc060dSKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_13[] = {
324*76fc060dSKathiravan Thirumoorthy 	{ .index = DT_XO },
325*76fc060dSKathiravan Thirumoorthy 	{ .hw = &gpll0.clkr.hw },
326*76fc060dSKathiravan Thirumoorthy 	{ .hw = &gpll4.clkr.hw },
327*76fc060dSKathiravan Thirumoorthy 	{ .hw = &gpll0_div2.hw },
328*76fc060dSKathiravan Thirumoorthy };
329*76fc060dSKathiravan Thirumoorthy 
330*76fc060dSKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_adss_pwm_clk_src[] = {
331*76fc060dSKathiravan Thirumoorthy 	F(100000000, P_GPLL0_OUT_MAIN, 8, 0, 0),
332*76fc060dSKathiravan Thirumoorthy 	{ }
333*76fc060dSKathiravan Thirumoorthy };
334*76fc060dSKathiravan Thirumoorthy 
335*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_adss_pwm_clk_src = {
336*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x1c004,
337*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 0,
338*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
339*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_2,
340*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_adss_pwm_clk_src,
341*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
342*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_adss_pwm_clk_src",
343*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_2,
344*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
345*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
346*76fc060dSKathiravan Thirumoorthy 	},
347*76fc060dSKathiravan Thirumoorthy };
348*76fc060dSKathiravan Thirumoorthy 
349*76fc060dSKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_gemnoc_anoc_pcie_clk_src[] = {
350*76fc060dSKathiravan Thirumoorthy 	F(200000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
351*76fc060dSKathiravan Thirumoorthy 	{ }
352*76fc060dSKathiravan Thirumoorthy };
353*76fc060dSKathiravan Thirumoorthy 
354*76fc060dSKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_nss_ts_clk_src[] = {
355*76fc060dSKathiravan Thirumoorthy 	F(24000000, P_XO, 1, 0, 0),
356*76fc060dSKathiravan Thirumoorthy 	{ }
357*76fc060dSKathiravan Thirumoorthy };
358*76fc060dSKathiravan Thirumoorthy 
359*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_xo_clk_src = {
360*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x34004,
361*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 0,
362*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
363*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_xo,
364*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_nss_ts_clk_src,
365*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
366*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_xo_clk_src",
367*76fc060dSKathiravan Thirumoorthy 		.parent_data = &gcc_parent_data_xo,
368*76fc060dSKathiravan Thirumoorthy 		.num_parents = 1,
369*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
370*76fc060dSKathiravan Thirumoorthy 	},
371*76fc060dSKathiravan Thirumoorthy };
372*76fc060dSKathiravan Thirumoorthy 
373*76fc060dSKathiravan Thirumoorthy static struct clk_fixed_factor gcc_xo_div4_clk_src = {
374*76fc060dSKathiravan Thirumoorthy 	.mult = 1,
375*76fc060dSKathiravan Thirumoorthy 	.div = 4,
376*76fc060dSKathiravan Thirumoorthy 	.hw.init = &(const struct clk_init_data) {
377*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_xo_div4_clk_src",
378*76fc060dSKathiravan Thirumoorthy 		.parent_hws = (const struct clk_hw *[]) {
379*76fc060dSKathiravan Thirumoorthy 			&gcc_xo_clk_src.clkr.hw
380*76fc060dSKathiravan Thirumoorthy 		},
381*76fc060dSKathiravan Thirumoorthy 		.num_parents = 1,
382*76fc060dSKathiravan Thirumoorthy 		.flags = CLK_SET_RATE_PARENT,
383*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_fixed_factor_ops,
384*76fc060dSKathiravan Thirumoorthy 	},
385*76fc060dSKathiravan Thirumoorthy };
386*76fc060dSKathiravan Thirumoorthy 
387*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_nss_ts_clk_src = {
388*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x17088,
389*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 0,
390*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
391*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_3,
392*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_nss_ts_clk_src,
393*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
394*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_nss_ts_clk_src",
395*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_3,
396*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_3),
397*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
398*76fc060dSKathiravan Thirumoorthy 	},
399*76fc060dSKathiravan Thirumoorthy };
400*76fc060dSKathiravan Thirumoorthy 
401*76fc060dSKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_nssnoc_memnoc_bfdcd_clk_src[] = {
402*76fc060dSKathiravan Thirumoorthy 	F(462000000, P_NSS_CMN_CLK, 1, 0, 0),
403*76fc060dSKathiravan Thirumoorthy 	{ }
404*76fc060dSKathiravan Thirumoorthy };
405*76fc060dSKathiravan Thirumoorthy 
406*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_nssnoc_memnoc_bfdcd_clk_src = {
407*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x17004,
408*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 0,
409*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
410*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_7,
411*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_nssnoc_memnoc_bfdcd_clk_src,
412*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
413*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_nssnoc_memnoc_bfdcd_clk_src",
414*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_7,
415*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_7),
416*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
417*76fc060dSKathiravan Thirumoorthy 	},
418*76fc060dSKathiravan Thirumoorthy };
419*76fc060dSKathiravan Thirumoorthy 
420*76fc060dSKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_system_noc_bfdcd_clk_src[] = {
421*76fc060dSKathiravan Thirumoorthy 	F(24000000, P_XO, 1, 0, 0),
422*76fc060dSKathiravan Thirumoorthy 	F(133333333, P_GPLL0_OUT_MAIN, 6, 0, 0),
423*76fc060dSKathiravan Thirumoorthy 	F(200000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
424*76fc060dSKathiravan Thirumoorthy 	F(266666667, P_GPLL4_OUT_MAIN, 4.5, 0, 0),
425*76fc060dSKathiravan Thirumoorthy 	{ }
426*76fc060dSKathiravan Thirumoorthy };
427*76fc060dSKathiravan Thirumoorthy 
428*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_system_noc_bfdcd_clk_src = {
429*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x2e004,
430*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_system_noc_bfdcd_clk_src,
431*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
432*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_13,
433*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
434*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_system_noc_bfdcd_clk_src",
435*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_13,
436*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_13),
437*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
438*76fc060dSKathiravan Thirumoorthy 	},
439*76fc060dSKathiravan Thirumoorthy };
440*76fc060dSKathiravan Thirumoorthy 
441*76fc060dSKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_pcnoc_bfdcd_clk_src[] = {
442*76fc060dSKathiravan Thirumoorthy 	F(24000000, P_XO, 1, 0, 0),
443*76fc060dSKathiravan Thirumoorthy 	F(50000000, P_GPLL0_OUT_MAIN, 16, 0, 0),
444*76fc060dSKathiravan Thirumoorthy 	F(100000000, P_GPLL0_OUT_MAIN, 8, 0, 0),
445*76fc060dSKathiravan Thirumoorthy 	{ }
446*76fc060dSKathiravan Thirumoorthy };
447*76fc060dSKathiravan Thirumoorthy 
448*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_pcnoc_bfdcd_clk_src = {
449*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x31004,
450*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 0,
451*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
452*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_0,
453*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_pcnoc_bfdcd_clk_src,
454*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
455*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_pcnoc_bfdcd_clk_src",
456*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_0,
457*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
458*76fc060dSKathiravan Thirumoorthy 		/*
459*76fc060dSKathiravan Thirumoorthy 		 * There are no consumers for this source in kernel yet,
460*76fc060dSKathiravan Thirumoorthy 		 * (will be added soon), so the clock framework
461*76fc060dSKathiravan Thirumoorthy 		 * disables this source. But some of the clocks
462*76fc060dSKathiravan Thirumoorthy 		 * initialized by boot loaders uses this source. So we
463*76fc060dSKathiravan Thirumoorthy 		 * need to keep this clock ON. Add the
464*76fc060dSKathiravan Thirumoorthy 		 * CLK_IGNORE_UNUSED flag so the clock will not be
465*76fc060dSKathiravan Thirumoorthy 		 * disabled. Once the consumer in kernel is added, we
466*76fc060dSKathiravan Thirumoorthy 		 * can get rid of this flag.
467*76fc060dSKathiravan Thirumoorthy 		 */
468*76fc060dSKathiravan Thirumoorthy 		.flags = CLK_IS_CRITICAL,
469*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
470*76fc060dSKathiravan Thirumoorthy 	},
471*76fc060dSKathiravan Thirumoorthy };
472*76fc060dSKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_pcie0_axi_m_clk_src[] = {
473*76fc060dSKathiravan Thirumoorthy 	F(200000000, P_GPLL4_OUT_MAIN, 6, 0, 0),
474*76fc060dSKathiravan Thirumoorthy 	{ }
475*76fc060dSKathiravan Thirumoorthy };
476*76fc060dSKathiravan Thirumoorthy 
477*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_pcie0_axi_m_clk_src = {
478*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x28018,
479*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 0,
480*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
481*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_1,
482*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_pcie0_axi_m_clk_src,
483*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
484*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_pcie0_axi_m_clk_src",
485*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_1,
486*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_1),
487*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
488*76fc060dSKathiravan Thirumoorthy 	},
489*76fc060dSKathiravan Thirumoorthy };
490*76fc060dSKathiravan Thirumoorthy 
491*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_pcie0_axi_s_clk_src = {
492*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x28020,
493*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 0,
494*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
495*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_1,
496*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_pcie0_axi_m_clk_src,
497*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
498*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_pcie0_axi_s_clk_src",
499*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_1,
500*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_1),
501*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
502*76fc060dSKathiravan Thirumoorthy 	},
503*76fc060dSKathiravan Thirumoorthy };
504*76fc060dSKathiravan Thirumoorthy 
505*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_pcie0_rchng_clk_src = {
506*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x28028,
507*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 0,
508*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
509*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_2,
510*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_adss_pwm_clk_src,
511*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
512*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_pcie0_rchng_clk_src",
513*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_2,
514*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
515*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
516*76fc060dSKathiravan Thirumoorthy 	},
517*76fc060dSKathiravan Thirumoorthy };
518*76fc060dSKathiravan Thirumoorthy 
519*76fc060dSKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_pcie1_axi_m_clk_src[] = {
520*76fc060dSKathiravan Thirumoorthy 	F(266666667, P_GPLL4_OUT_MAIN, 4.5, 0, 0),
521*76fc060dSKathiravan Thirumoorthy 	{ }
522*76fc060dSKathiravan Thirumoorthy };
523*76fc060dSKathiravan Thirumoorthy 
524*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_pcie1_axi_m_clk_src = {
525*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x29018,
526*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 0,
527*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
528*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_1,
529*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_pcie1_axi_m_clk_src,
530*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
531*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_pcie1_axi_m_clk_src",
532*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_1,
533*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_1),
534*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
535*76fc060dSKathiravan Thirumoorthy 	},
536*76fc060dSKathiravan Thirumoorthy };
537*76fc060dSKathiravan Thirumoorthy 
538*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_pcie1_axi_s_clk_src = {
539*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x29020,
540*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 0,
541*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
542*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_1,
543*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_pcie0_axi_m_clk_src,
544*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
545*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_pcie1_axi_s_clk_src",
546*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_1,
547*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_1),
548*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
549*76fc060dSKathiravan Thirumoorthy 	},
550*76fc060dSKathiravan Thirumoorthy };
551*76fc060dSKathiravan Thirumoorthy 
552*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_pcie1_rchng_clk_src = {
553*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x29028,
554*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 0,
555*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
556*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_2,
557*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_adss_pwm_clk_src,
558*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
559*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_pcie1_rchng_clk_src",
560*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_2,
561*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
562*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
563*76fc060dSKathiravan Thirumoorthy 	},
564*76fc060dSKathiravan Thirumoorthy };
565*76fc060dSKathiravan Thirumoorthy 
566*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_pcie2_axi_m_clk_src = {
567*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x2a018,
568*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 0,
569*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
570*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_1,
571*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_pcie1_axi_m_clk_src,
572*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
573*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_pcie2_axi_m_clk_src",
574*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_1,
575*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_1),
576*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
577*76fc060dSKathiravan Thirumoorthy 	},
578*76fc060dSKathiravan Thirumoorthy };
579*76fc060dSKathiravan Thirumoorthy 
580*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_pcie2_axi_s_clk_src = {
581*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x2a020,
582*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 0,
583*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
584*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_1,
585*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_pcie0_axi_m_clk_src,
586*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
587*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_pcie2_axi_s_clk_src",
588*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_1,
589*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_1),
590*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
591*76fc060dSKathiravan Thirumoorthy 	},
592*76fc060dSKathiravan Thirumoorthy };
593*76fc060dSKathiravan Thirumoorthy 
594*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_pcie2_rchng_clk_src = {
595*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x2a028,
596*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 0,
597*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
598*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_2,
599*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_adss_pwm_clk_src,
600*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
601*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_pcie2_rchng_clk_src",
602*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_2,
603*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
604*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
605*76fc060dSKathiravan Thirumoorthy 	},
606*76fc060dSKathiravan Thirumoorthy };
607*76fc060dSKathiravan Thirumoorthy 
608*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_pcie3_axi_m_clk_src = {
609*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x2b018,
610*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 0,
611*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
612*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_1,
613*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_pcie1_axi_m_clk_src,
614*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
615*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_pcie3_axi_m_clk_src",
616*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_1,
617*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_1),
618*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
619*76fc060dSKathiravan Thirumoorthy 	},
620*76fc060dSKathiravan Thirumoorthy };
621*76fc060dSKathiravan Thirumoorthy 
622*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_pcie3_axi_s_clk_src = {
623*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x2b020,
624*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 0,
625*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
626*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_1,
627*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_pcie0_axi_m_clk_src,
628*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
629*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_pcie3_axi_s_clk_src",
630*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_1,
631*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_1),
632*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
633*76fc060dSKathiravan Thirumoorthy 	},
634*76fc060dSKathiravan Thirumoorthy };
635*76fc060dSKathiravan Thirumoorthy 
636*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_pcie3_rchng_clk_src = {
637*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x2b028,
638*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 0,
639*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
640*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_2,
641*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_adss_pwm_clk_src,
642*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
643*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_pcie3_rchng_clk_src",
644*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_2,
645*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
646*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
647*76fc060dSKathiravan Thirumoorthy 	},
648*76fc060dSKathiravan Thirumoorthy };
649*76fc060dSKathiravan Thirumoorthy 
650*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_pcie4_axi_m_clk_src = {
651*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x25004,
652*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 0,
653*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
654*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_1,
655*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_pcie0_axi_m_clk_src,
656*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
657*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_pcie4_axi_m_clk_src",
658*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_1,
659*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_1),
660*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
661*76fc060dSKathiravan Thirumoorthy 	},
662*76fc060dSKathiravan Thirumoorthy };
663*76fc060dSKathiravan Thirumoorthy 
664*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_pcie4_axi_s_clk_src = {
665*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x2500c,
666*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 0,
667*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
668*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_1,
669*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_pcie0_axi_m_clk_src,
670*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
671*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_pcie4_axi_s_clk_src",
672*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_1,
673*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_1),
674*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
675*76fc060dSKathiravan Thirumoorthy 	},
676*76fc060dSKathiravan Thirumoorthy };
677*76fc060dSKathiravan Thirumoorthy 
678*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_pcie4_rchng_clk_src = {
679*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x25014,
680*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 0,
681*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
682*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_2,
683*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_adss_pwm_clk_src,
684*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
685*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_pcie4_rchng_clk_src",
686*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_2,
687*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
688*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
689*76fc060dSKathiravan Thirumoorthy 	},
690*76fc060dSKathiravan Thirumoorthy };
691*76fc060dSKathiravan Thirumoorthy 
692*76fc060dSKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_pcie_aux_clk_src[] = {
693*76fc060dSKathiravan Thirumoorthy 	F(20000000, P_GPLL0_OUT_MAIN, 10, 1, 4),
694*76fc060dSKathiravan Thirumoorthy 	{ }
695*76fc060dSKathiravan Thirumoorthy };
696*76fc060dSKathiravan Thirumoorthy 
697*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_pcie_aux_clk_src = {
698*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x28004,
699*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 16,
700*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
701*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_8,
702*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_pcie_aux_clk_src,
703*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
704*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_pcie_aux_clk_src",
705*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_8,
706*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_8),
707*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
708*76fc060dSKathiravan Thirumoorthy 	},
709*76fc060dSKathiravan Thirumoorthy };
710*76fc060dSKathiravan Thirumoorthy 
711*76fc060dSKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_qdss_at_clk_src[] = {
712*76fc060dSKathiravan Thirumoorthy 	F(240000000, P_GPLL4_OUT_MAIN, 5, 0, 0),
713*76fc060dSKathiravan Thirumoorthy 	{ }
714*76fc060dSKathiravan Thirumoorthy };
715*76fc060dSKathiravan Thirumoorthy 
716*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_qdss_at_clk_src = {
717*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x2d004,
718*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 0,
719*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
720*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_4,
721*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_qdss_at_clk_src,
722*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
723*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_qdss_at_clk_src",
724*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_4,
725*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_4),
726*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
727*76fc060dSKathiravan Thirumoorthy 	},
728*76fc060dSKathiravan Thirumoorthy };
729*76fc060dSKathiravan Thirumoorthy 
730*76fc060dSKathiravan Thirumoorthy static struct clk_fixed_factor gcc_eud_at_div_clk_src = {
731*76fc060dSKathiravan Thirumoorthy 	.mult = 1,
732*76fc060dSKathiravan Thirumoorthy 	.div = 6,
733*76fc060dSKathiravan Thirumoorthy 	.hw.init = &(const struct clk_init_data) {
734*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_eud_at_div_clk_src",
735*76fc060dSKathiravan Thirumoorthy 		.parent_hws = (const struct clk_hw *[]) {
736*76fc060dSKathiravan Thirumoorthy 			&gcc_qdss_at_clk_src.clkr.hw },
737*76fc060dSKathiravan Thirumoorthy 		.num_parents = 1,
738*76fc060dSKathiravan Thirumoorthy 		.flags = CLK_SET_RATE_PARENT,
739*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_fixed_factor_ops,
740*76fc060dSKathiravan Thirumoorthy 	},
741*76fc060dSKathiravan Thirumoorthy };
742*76fc060dSKathiravan Thirumoorthy 
743*76fc060dSKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_qdss_tsctr_clk_src[] = {
744*76fc060dSKathiravan Thirumoorthy 	F(600000000, P_GPLL4_OUT_MAIN, 2, 0, 0),
745*76fc060dSKathiravan Thirumoorthy 	{ }
746*76fc060dSKathiravan Thirumoorthy };
747*76fc060dSKathiravan Thirumoorthy 
748*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_qdss_tsctr_clk_src = {
749*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x2d01c,
750*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 0,
751*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
752*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_4,
753*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_qdss_tsctr_clk_src,
754*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
755*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_qdss_tsctr_clk_src",
756*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_4,
757*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_4),
758*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
759*76fc060dSKathiravan Thirumoorthy 	},
760*76fc060dSKathiravan Thirumoorthy };
761*76fc060dSKathiravan Thirumoorthy 
762*76fc060dSKathiravan Thirumoorthy static struct clk_fixed_factor gcc_qdss_dap_sync_clk_src = {
763*76fc060dSKathiravan Thirumoorthy 	.mult = 1,
764*76fc060dSKathiravan Thirumoorthy 	.div = 4,
765*76fc060dSKathiravan Thirumoorthy 	.hw.init = &(const struct clk_init_data) {
766*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_qdss_dap_sync_clk_src",
767*76fc060dSKathiravan Thirumoorthy 		.parent_hws = (const struct clk_hw *[]) {
768*76fc060dSKathiravan Thirumoorthy 			&gcc_qdss_tsctr_clk_src.clkr.hw
769*76fc060dSKathiravan Thirumoorthy 		},
770*76fc060dSKathiravan Thirumoorthy 		.num_parents = 1,
771*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_fixed_factor_ops,
772*76fc060dSKathiravan Thirumoorthy 	},
773*76fc060dSKathiravan Thirumoorthy };
774*76fc060dSKathiravan Thirumoorthy 
775*76fc060dSKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_sleep_clk_src[] = {
776*76fc060dSKathiravan Thirumoorthy 	F(32000, P_SLEEP_CLK, 1, 0, 0),
777*76fc060dSKathiravan Thirumoorthy 	{ }
778*76fc060dSKathiravan Thirumoorthy };
779*76fc060dSKathiravan Thirumoorthy 
780*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_sleep_clk_src = {
781*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x3400c,
782*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 0,
783*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
784*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_12,
785*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_sleep_clk_src,
786*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
787*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_sleep_clk_src",
788*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_12,
789*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_12),
790*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
791*76fc060dSKathiravan Thirumoorthy 	},
792*76fc060dSKathiravan Thirumoorthy };
793*76fc060dSKathiravan Thirumoorthy 
794*76fc060dSKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_qpic_io_macro_clk_src[] = {
795*76fc060dSKathiravan Thirumoorthy 	F(24000000, P_XO, 1, 0, 0),
796*76fc060dSKathiravan Thirumoorthy 	F(100000000, P_GPLL0_OUT_MAIN, 8, 0, 0),
797*76fc060dSKathiravan Thirumoorthy 	F(200000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
798*76fc060dSKathiravan Thirumoorthy 	F(320000000, P_GPLL0_OUT_MAIN, 2.5, 0, 0),
799*76fc060dSKathiravan Thirumoorthy 	F(400000000, P_GPLL0_OUT_MAIN, 2, 0, 0),
800*76fc060dSKathiravan Thirumoorthy 	{ }
801*76fc060dSKathiravan Thirumoorthy };
802*76fc060dSKathiravan Thirumoorthy 
803*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_qpic_clk_src = {
804*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x32020,
805*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 0,
806*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
807*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_5,
808*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_qpic_io_macro_clk_src,
809*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
810*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_qpic_clk_src",
811*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_5,
812*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_5),
813*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
814*76fc060dSKathiravan Thirumoorthy 	},
815*76fc060dSKathiravan Thirumoorthy };
816*76fc060dSKathiravan Thirumoorthy 
817*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_qpic_io_macro_clk_src = {
818*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x32004,
819*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 0,
820*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
821*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_5,
822*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_qpic_io_macro_clk_src,
823*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
824*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_qpic_io_macro_clk_src",
825*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_5,
826*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_5),
827*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
828*76fc060dSKathiravan Thirumoorthy 	},
829*76fc060dSKathiravan Thirumoorthy };
830*76fc060dSKathiravan Thirumoorthy 
831*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_qupv3_2x_core_clk_src = {
832*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x100c,
833*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 0,
834*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
835*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_0,
836*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_gemnoc_anoc_pcie_clk_src,
837*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
838*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_qupv3_2x_core_clk_src",
839*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_0,
840*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
841*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
842*76fc060dSKathiravan Thirumoorthy 	},
843*76fc060dSKathiravan Thirumoorthy };
844*76fc060dSKathiravan Thirumoorthy 
845*76fc060dSKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_qupv3_wrap_se0_clk_src[] = {
846*76fc060dSKathiravan Thirumoorthy 	F(960000, P_XO, 10, 2, 5),
847*76fc060dSKathiravan Thirumoorthy 	F(3686636, P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 1, 2, 217),
848*76fc060dSKathiravan Thirumoorthy 	F(4800000, P_XO, 5, 0, 0),
849*76fc060dSKathiravan Thirumoorthy 	F(7373272, P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 1, 4, 217),
850*76fc060dSKathiravan Thirumoorthy 	F(9600000, P_XO, 2.5, 0, 0),
851*76fc060dSKathiravan Thirumoorthy 	F(14746544, P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 1, 8, 217),
852*76fc060dSKathiravan Thirumoorthy 	F(16000000, P_GPLL0_OUT_MAIN, 10, 1, 5),
853*76fc060dSKathiravan Thirumoorthy 	F(24000000, P_XO, 1, 0, 0),
854*76fc060dSKathiravan Thirumoorthy 	F(25000000, P_GPLL0_OUT_MAIN, 16, 1, 2),
855*76fc060dSKathiravan Thirumoorthy 	F(32000000, P_GPLL0_OUT_MAIN, 1, 1, 25),
856*76fc060dSKathiravan Thirumoorthy 	F(40000000, P_GPLL0_OUT_MAIN, 1, 1, 20),
857*76fc060dSKathiravan Thirumoorthy 	F(46400000, P_GPLL0_OUT_MAIN, 2, 29, 250),
858*76fc060dSKathiravan Thirumoorthy 	F(48000000, P_GPLL0_OUT_MAIN, 1, 3, 50),
859*76fc060dSKathiravan Thirumoorthy 	F(50000000, P_GPLL0_OUT_MAIN, 16, 0, 0),
860*76fc060dSKathiravan Thirumoorthy 	F(51200000, P_GPLL0_OUT_MAIN, 1, 8, 125),
861*76fc060dSKathiravan Thirumoorthy 	F(56000000, P_GPLL0_OUT_MAIN, 1, 7, 100),
862*76fc060dSKathiravan Thirumoorthy 	F(58986175, P_GPLL0_OUT_MAIN, 1, 16, 217),
863*76fc060dSKathiravan Thirumoorthy 	F(60000000, P_GPLL0_OUT_MAIN, 1, 3, 40),
864*76fc060dSKathiravan Thirumoorthy 	F(64000000, P_GPLL0_OUT_MAIN, 12.5, 0, 0),
865*76fc060dSKathiravan Thirumoorthy 	{ }
866*76fc060dSKathiravan Thirumoorthy };
867*76fc060dSKathiravan Thirumoorthy 
868*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_qupv3_wrap_se0_clk_src = {
869*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x2018,
870*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 8,
871*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
872*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_0,
873*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_qupv3_wrap_se0_clk_src,
874*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
875*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_qupv3_wrap_se0_clk_src",
876*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_0,
877*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
878*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
879*76fc060dSKathiravan Thirumoorthy 	},
880*76fc060dSKathiravan Thirumoorthy };
881*76fc060dSKathiravan Thirumoorthy 
882*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_qupv3_wrap_se1_clk_src = {
883*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x3018,
884*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 8,
885*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
886*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_0,
887*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_qupv3_wrap_se0_clk_src,
888*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
889*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_qupv3_wrap_se1_clk_src",
890*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_0,
891*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
892*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
893*76fc060dSKathiravan Thirumoorthy 	},
894*76fc060dSKathiravan Thirumoorthy };
895*76fc060dSKathiravan Thirumoorthy 
896*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_qupv3_wrap_se2_clk_src = {
897*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x3034,
898*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 8,
899*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
900*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_0,
901*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_qupv3_wrap_se0_clk_src,
902*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
903*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_qupv3_wrap_se2_clk_src",
904*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_0,
905*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
906*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
907*76fc060dSKathiravan Thirumoorthy 	},
908*76fc060dSKathiravan Thirumoorthy };
909*76fc060dSKathiravan Thirumoorthy 
910*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_qupv3_wrap_se3_clk_src = {
911*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x3050,
912*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 8,
913*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
914*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_0,
915*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_qupv3_wrap_se0_clk_src,
916*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
917*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_qupv3_wrap_se3_clk_src",
918*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_0,
919*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
920*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
921*76fc060dSKathiravan Thirumoorthy 	},
922*76fc060dSKathiravan Thirumoorthy };
923*76fc060dSKathiravan Thirumoorthy 
924*76fc060dSKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_qupv3_wrap_se4_clk_src[] = {
925*76fc060dSKathiravan Thirumoorthy 	F(960000, P_XO, 10, 2, 5),
926*76fc060dSKathiravan Thirumoorthy 	F(3686636, P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 1, 2, 217),
927*76fc060dSKathiravan Thirumoorthy 	F(4800000, P_XO, 5, 0, 0),
928*76fc060dSKathiravan Thirumoorthy 	F(7373272, P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 1, 4, 217),
929*76fc060dSKathiravan Thirumoorthy 	F(9600000, P_XO, 2.5, 0, 0),
930*76fc060dSKathiravan Thirumoorthy 	F(14746544, P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 1, 8, 217),
931*76fc060dSKathiravan Thirumoorthy 	F(16000000, P_GPLL0_OUT_MAIN, 10, 1, 5),
932*76fc060dSKathiravan Thirumoorthy 	F(24000000, P_XO, 1, 0, 0),
933*76fc060dSKathiravan Thirumoorthy 	F(25000000, P_GPLL0_OUT_MAIN, 16, 1, 2),
934*76fc060dSKathiravan Thirumoorthy 	F(32000000, P_GPLL0_OUT_MAIN, 1, 1, 25),
935*76fc060dSKathiravan Thirumoorthy 	F(40000000, P_GPLL0_OUT_MAIN, 1, 1, 20),
936*76fc060dSKathiravan Thirumoorthy 	F(46400000, P_GPLL0_OUT_MAIN, 2, 29, 250),
937*76fc060dSKathiravan Thirumoorthy 	F(48000000, P_GPLL0_OUT_MAIN, 1, 3, 50),
938*76fc060dSKathiravan Thirumoorthy 	F(50000000, P_GPLL0_OUT_MAIN, 16, 0, 0),
939*76fc060dSKathiravan Thirumoorthy 	F(51200000, P_GPLL0_OUT_MAIN, 1, 8, 125),
940*76fc060dSKathiravan Thirumoorthy 	F(56000000, P_GPLL0_OUT_MAIN, 1, 7, 100),
941*76fc060dSKathiravan Thirumoorthy 	F(58986175, P_GPLL0_OUT_MAIN, 1, 16, 217),
942*76fc060dSKathiravan Thirumoorthy 	F(60000000, P_GPLL0_OUT_MAIN, 1, 3, 40),
943*76fc060dSKathiravan Thirumoorthy 	F(64000000, P_GPLL0_OUT_MAIN, 12.5, 0, 0),
944*76fc060dSKathiravan Thirumoorthy 	F(100000000, P_GPLL0_OUT_MAIN, 8, 0, 0),
945*76fc060dSKathiravan Thirumoorthy 	{ }
946*76fc060dSKathiravan Thirumoorthy };
947*76fc060dSKathiravan Thirumoorthy 
948*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_qupv3_wrap_se4_clk_src = {
949*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x306c,
950*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 8,
951*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
952*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_0,
953*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_qupv3_wrap_se4_clk_src,
954*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
955*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_qupv3_wrap_se4_clk_src",
956*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_0,
957*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
958*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
959*76fc060dSKathiravan Thirumoorthy 	},
960*76fc060dSKathiravan Thirumoorthy };
961*76fc060dSKathiravan Thirumoorthy 
962*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_qupv3_wrap_se5_clk_src = {
963*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x3090,
964*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 8,
965*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
966*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_0,
967*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_qupv3_wrap_se4_clk_src,
968*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
969*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_qupv3_wrap_se5_clk_src",
970*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_0,
971*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
972*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
973*76fc060dSKathiravan Thirumoorthy 	},
974*76fc060dSKathiravan Thirumoorthy };
975*76fc060dSKathiravan Thirumoorthy 
976*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_qupv3_wrap_se6_clk_src = {
977*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x4004,
978*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 8,
979*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
980*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_0,
981*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_qupv3_wrap_se0_clk_src,
982*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
983*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_qupv3_wrap_se6_clk_src",
984*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_0,
985*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
986*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
987*76fc060dSKathiravan Thirumoorthy 	},
988*76fc060dSKathiravan Thirumoorthy };
989*76fc060dSKathiravan Thirumoorthy 
990*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_qupv3_wrap_se7_clk_src = {
991*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x4020,
992*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 8,
993*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
994*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_0,
995*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_qupv3_wrap_se0_clk_src,
996*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
997*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_qupv3_wrap_se7_clk_src",
998*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_0,
999*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1000*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
1001*76fc060dSKathiravan Thirumoorthy 	},
1002*76fc060dSKathiravan Thirumoorthy };
1003*76fc060dSKathiravan Thirumoorthy 
1004*76fc060dSKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_sdcc1_apps_clk_src[] = {
1005*76fc060dSKathiravan Thirumoorthy 	F(144000, P_XO, 16, 12, 125),
1006*76fc060dSKathiravan Thirumoorthy 	F(400000, P_XO, 12, 1, 5),
1007*76fc060dSKathiravan Thirumoorthy 	F(24000000, P_GPLL2_OUT_MAIN, 12, 1, 2),
1008*76fc060dSKathiravan Thirumoorthy 	F(48000000, P_GPLL2_OUT_MAIN, 12, 0, 0),
1009*76fc060dSKathiravan Thirumoorthy 	F(96000000, P_GPLL2_OUT_MAIN, 6, 0, 0),
1010*76fc060dSKathiravan Thirumoorthy 	F(177777778, P_GPLL0_OUT_MAIN, 4.5, 0, 0),
1011*76fc060dSKathiravan Thirumoorthy 	F(192000000, P_GPLL2_OUT_MAIN, 3, 0, 0),
1012*76fc060dSKathiravan Thirumoorthy 	F(200000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
1013*76fc060dSKathiravan Thirumoorthy 	{ }
1014*76fc060dSKathiravan Thirumoorthy };
1015*76fc060dSKathiravan Thirumoorthy 
1016*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_sdcc1_apps_clk_src = {
1017*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x33004,
1018*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 8,
1019*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
1020*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_9,
1021*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_sdcc1_apps_clk_src,
1022*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
1023*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_sdcc1_apps_clk_src",
1024*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_9,
1025*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_9),
1026*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_floor_ops,
1027*76fc060dSKathiravan Thirumoorthy 	},
1028*76fc060dSKathiravan Thirumoorthy };
1029*76fc060dSKathiravan Thirumoorthy 
1030*76fc060dSKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_sdcc1_ice_core_clk_src[] = {
1031*76fc060dSKathiravan Thirumoorthy 	F(300000000, P_GPLL4_OUT_MAIN, 4, 0, 0),
1032*76fc060dSKathiravan Thirumoorthy 	{ }
1033*76fc060dSKathiravan Thirumoorthy };
1034*76fc060dSKathiravan Thirumoorthy 
1035*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_sdcc1_ice_core_clk_src = {
1036*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x33018,
1037*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 8,
1038*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
1039*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_10,
1040*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_sdcc1_ice_core_clk_src,
1041*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
1042*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_sdcc1_ice_core_clk_src",
1043*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_10,
1044*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_10),
1045*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_floor_ops,
1046*76fc060dSKathiravan Thirumoorthy 	},
1047*76fc060dSKathiravan Thirumoorthy };
1048*76fc060dSKathiravan Thirumoorthy 
1049*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_uniphy_sys_clk_src = {
1050*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x17090,
1051*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 0,
1052*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
1053*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_3,
1054*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_nss_ts_clk_src,
1055*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
1056*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_uniphy_sys_clk_src",
1057*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_3,
1058*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_3),
1059*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
1060*76fc060dSKathiravan Thirumoorthy 	},
1061*76fc060dSKathiravan Thirumoorthy };
1062*76fc060dSKathiravan Thirumoorthy 
1063*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_usb0_aux_clk_src = {
1064*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x2c018,
1065*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 16,
1066*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
1067*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_11,
1068*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_nss_ts_clk_src,
1069*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
1070*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_usb0_aux_clk_src",
1071*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_11,
1072*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_11),
1073*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
1074*76fc060dSKathiravan Thirumoorthy 	},
1075*76fc060dSKathiravan Thirumoorthy };
1076*76fc060dSKathiravan Thirumoorthy 
1077*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_usb0_master_clk_src = {
1078*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x2c004,
1079*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 8,
1080*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
1081*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_0,
1082*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_gemnoc_anoc_pcie_clk_src,
1083*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
1084*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_usb0_master_clk_src",
1085*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_0,
1086*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1087*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
1088*76fc060dSKathiravan Thirumoorthy 	},
1089*76fc060dSKathiravan Thirumoorthy };
1090*76fc060dSKathiravan Thirumoorthy 
1091*76fc060dSKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_usb0_mock_utmi_clk_src[] = {
1092*76fc060dSKathiravan Thirumoorthy 	F(24000000, P_XO, 1, 0, 0),
1093*76fc060dSKathiravan Thirumoorthy 	F(60000000, P_GPLL4_OUT_ODD, 10, 1, 2),
1094*76fc060dSKathiravan Thirumoorthy 	{ }
1095*76fc060dSKathiravan Thirumoorthy };
1096*76fc060dSKathiravan Thirumoorthy 
1097*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_usb0_mock_utmi_clk_src = {
1098*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x2c02c,
1099*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 8,
1100*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
1101*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_6,
1102*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_usb0_mock_utmi_clk_src,
1103*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
1104*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_usb0_mock_utmi_clk_src",
1105*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_6,
1106*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_6),
1107*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
1108*76fc060dSKathiravan Thirumoorthy 	},
1109*76fc060dSKathiravan Thirumoorthy };
1110*76fc060dSKathiravan Thirumoorthy 
1111*76fc060dSKathiravan Thirumoorthy static struct clk_rcg2 gcc_usb1_mock_utmi_clk_src = {
1112*76fc060dSKathiravan Thirumoorthy 	.cmd_rcgr = 0x3c004,
1113*76fc060dSKathiravan Thirumoorthy 	.mnd_width = 8,
1114*76fc060dSKathiravan Thirumoorthy 	.hid_width = 5,
1115*76fc060dSKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_6,
1116*76fc060dSKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_usb0_mock_utmi_clk_src,
1117*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
1118*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_usb1_mock_utmi_clk_src",
1119*76fc060dSKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_6,
1120*76fc060dSKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_6),
1121*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
1122*76fc060dSKathiravan Thirumoorthy 	},
1123*76fc060dSKathiravan Thirumoorthy };
1124*76fc060dSKathiravan Thirumoorthy 
1125*76fc060dSKathiravan Thirumoorthy static struct clk_regmap_div gcc_nssnoc_memnoc_div_clk_src = {
1126*76fc060dSKathiravan Thirumoorthy 	.reg = 0x1700c,
1127*76fc060dSKathiravan Thirumoorthy 	.shift = 0,
1128*76fc060dSKathiravan Thirumoorthy 	.width = 4,
1129*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
1130*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_nssnoc_memnoc_div_clk_src",
1131*76fc060dSKathiravan Thirumoorthy 		.parent_hws = (const struct clk_hw*[]) {
1132*76fc060dSKathiravan Thirumoorthy 			&gcc_nssnoc_memnoc_bfdcd_clk_src.clkr.hw,
1133*76fc060dSKathiravan Thirumoorthy 		},
1134*76fc060dSKathiravan Thirumoorthy 		.num_parents = 1,
1135*76fc060dSKathiravan Thirumoorthy 		.flags = CLK_SET_RATE_PARENT,
1136*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_regmap_div_ro_ops,
1137*76fc060dSKathiravan Thirumoorthy 	},
1138*76fc060dSKathiravan Thirumoorthy };
1139*76fc060dSKathiravan Thirumoorthy 
1140*76fc060dSKathiravan Thirumoorthy static struct clk_regmap_div gcc_usb0_mock_utmi_div_clk_src = {
1141*76fc060dSKathiravan Thirumoorthy 	.reg = 0x2c040,
1142*76fc060dSKathiravan Thirumoorthy 	.shift = 0,
1143*76fc060dSKathiravan Thirumoorthy 	.width = 2,
1144*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
1145*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_usb0_mock_utmi_div_clk_src",
1146*76fc060dSKathiravan Thirumoorthy 		.parent_hws = (const struct clk_hw*[]) {
1147*76fc060dSKathiravan Thirumoorthy 			&gcc_usb0_mock_utmi_clk_src.clkr.hw,
1148*76fc060dSKathiravan Thirumoorthy 		},
1149*76fc060dSKathiravan Thirumoorthy 		.num_parents = 1,
1150*76fc060dSKathiravan Thirumoorthy 		.flags = CLK_SET_RATE_PARENT,
1151*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_regmap_div_ro_ops,
1152*76fc060dSKathiravan Thirumoorthy 	},
1153*76fc060dSKathiravan Thirumoorthy };
1154*76fc060dSKathiravan Thirumoorthy 
1155*76fc060dSKathiravan Thirumoorthy static struct clk_regmap_div gcc_usb1_mock_utmi_div_clk_src = {
1156*76fc060dSKathiravan Thirumoorthy 	.reg = 0x3c018,
1157*76fc060dSKathiravan Thirumoorthy 	.shift = 0,
1158*76fc060dSKathiravan Thirumoorthy 	.width = 2,
1159*76fc060dSKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
1160*76fc060dSKathiravan Thirumoorthy 		.name = "gcc_usb1_mock_utmi_div_clk_src",
1161*76fc060dSKathiravan Thirumoorthy 		.parent_hws = (const struct clk_hw*[]) {
1162*76fc060dSKathiravan Thirumoorthy 			&gcc_usb1_mock_utmi_clk_src.clkr.hw,
1163*76fc060dSKathiravan Thirumoorthy 		},
1164*76fc060dSKathiravan Thirumoorthy 		.num_parents = 1,
1165*76fc060dSKathiravan Thirumoorthy 		.flags = CLK_SET_RATE_PARENT,
1166*76fc060dSKathiravan Thirumoorthy 		.ops = &clk_regmap_div_ro_ops,
1167*76fc060dSKathiravan Thirumoorthy 	},
1168*76fc060dSKathiravan Thirumoorthy };
1169*76fc060dSKathiravan Thirumoorthy 
1170*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_adss_pwm_clk = {
1171*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x1c00c,
1172*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1173*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1174*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x1c00c,
1175*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1176*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1177*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_adss_pwm_clk",
1178*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1179*76fc060dSKathiravan Thirumoorthy 				&gcc_adss_pwm_clk_src.clkr.hw,
1180*76fc060dSKathiravan Thirumoorthy 			},
1181*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1182*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1183*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1184*76fc060dSKathiravan Thirumoorthy 		},
1185*76fc060dSKathiravan Thirumoorthy 	},
1186*76fc060dSKathiravan Thirumoorthy };
1187*76fc060dSKathiravan Thirumoorthy 
1188*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_anoc_pcie0_1lane_m_clk = {
1189*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x2e07c,
1190*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1191*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1192*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x2e07c,
1193*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1194*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1195*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_anoc_pcie0_1lane_m_clk",
1196*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1197*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie0_axi_m_clk_src.clkr.hw,
1198*76fc060dSKathiravan Thirumoorthy 			},
1199*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1200*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1201*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1202*76fc060dSKathiravan Thirumoorthy 		},
1203*76fc060dSKathiravan Thirumoorthy 	},
1204*76fc060dSKathiravan Thirumoorthy };
1205*76fc060dSKathiravan Thirumoorthy 
1206*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_anoc_pcie0_1lane_s_clk = {
1207*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x2e0cc,
1208*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1209*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1210*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x2e0cc,
1211*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1212*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1213*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_anoc_pcie0_1lane_s_clk",
1214*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1215*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie0_axi_s_clk_src.clkr.hw,
1216*76fc060dSKathiravan Thirumoorthy 			},
1217*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1218*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1219*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1220*76fc060dSKathiravan Thirumoorthy 		},
1221*76fc060dSKathiravan Thirumoorthy 	},
1222*76fc060dSKathiravan Thirumoorthy };
1223*76fc060dSKathiravan Thirumoorthy 
1224*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_anoc_pcie1_2lane_m_clk = {
1225*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x2e084,
1226*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1227*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1228*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x2e084,
1229*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1230*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1231*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_anoc_pcie1_2lane_m_clk",
1232*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1233*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie1_axi_m_clk_src.clkr.hw,
1234*76fc060dSKathiravan Thirumoorthy 			},
1235*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1236*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1237*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1238*76fc060dSKathiravan Thirumoorthy 		},
1239*76fc060dSKathiravan Thirumoorthy 	},
1240*76fc060dSKathiravan Thirumoorthy };
1241*76fc060dSKathiravan Thirumoorthy 
1242*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_anoc_pcie1_2lane_s_clk = {
1243*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x2e0d0,
1244*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1245*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1246*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x2e0d0,
1247*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1248*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1249*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_anoc_pcie1_2lane_s_clk",
1250*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1251*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie1_axi_s_clk_src.clkr.hw,
1252*76fc060dSKathiravan Thirumoorthy 			},
1253*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1254*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1255*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1256*76fc060dSKathiravan Thirumoorthy 		},
1257*76fc060dSKathiravan Thirumoorthy 	},
1258*76fc060dSKathiravan Thirumoorthy };
1259*76fc060dSKathiravan Thirumoorthy 
1260*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_anoc_pcie2_2lane_m_clk = {
1261*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x2e080,
1262*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1263*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1264*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x2e080,
1265*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1266*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1267*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_anoc_pcie2_2lane_m_clk",
1268*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1269*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie2_axi_m_clk_src.clkr.hw,
1270*76fc060dSKathiravan Thirumoorthy 			},
1271*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1272*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1273*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1274*76fc060dSKathiravan Thirumoorthy 		},
1275*76fc060dSKathiravan Thirumoorthy 	},
1276*76fc060dSKathiravan Thirumoorthy };
1277*76fc060dSKathiravan Thirumoorthy 
1278*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_anoc_pcie2_2lane_s_clk = {
1279*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x2e0d4,
1280*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1281*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1282*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x2e0d4,
1283*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1284*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1285*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_anoc_pcie2_2lane_s_clk",
1286*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1287*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie2_axi_s_clk_src.clkr.hw,
1288*76fc060dSKathiravan Thirumoorthy 			},
1289*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1290*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1291*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1292*76fc060dSKathiravan Thirumoorthy 		},
1293*76fc060dSKathiravan Thirumoorthy 	},
1294*76fc060dSKathiravan Thirumoorthy };
1295*76fc060dSKathiravan Thirumoorthy 
1296*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_anoc_pcie3_2lane_m_clk = {
1297*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x2e0bc,
1298*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1299*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1300*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x2e0bc,
1301*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1302*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1303*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_anoc_pcie3_2lane_m_clk",
1304*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1305*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie3_axi_m_clk_src.clkr.hw,
1306*76fc060dSKathiravan Thirumoorthy 			},
1307*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1308*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1309*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1310*76fc060dSKathiravan Thirumoorthy 		},
1311*76fc060dSKathiravan Thirumoorthy 	},
1312*76fc060dSKathiravan Thirumoorthy };
1313*76fc060dSKathiravan Thirumoorthy 
1314*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_anoc_pcie3_2lane_s_clk = {
1315*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x2e0d8,
1316*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1317*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1318*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x2e0d8,
1319*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1320*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1321*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_anoc_pcie3_2lane_s_clk",
1322*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1323*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie3_axi_s_clk_src.clkr.hw,
1324*76fc060dSKathiravan Thirumoorthy 			},
1325*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1326*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1327*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1328*76fc060dSKathiravan Thirumoorthy 		},
1329*76fc060dSKathiravan Thirumoorthy 	},
1330*76fc060dSKathiravan Thirumoorthy };
1331*76fc060dSKathiravan Thirumoorthy 
1332*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_anoc_pcie4_1lane_m_clk = {
1333*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x2e0c0,
1334*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1335*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1336*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x2e0c0,
1337*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1338*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1339*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_anoc_pcie4_1lane_m_clk",
1340*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1341*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie4_axi_m_clk_src.clkr.hw,
1342*76fc060dSKathiravan Thirumoorthy 			},
1343*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1344*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1345*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1346*76fc060dSKathiravan Thirumoorthy 		},
1347*76fc060dSKathiravan Thirumoorthy 	},
1348*76fc060dSKathiravan Thirumoorthy };
1349*76fc060dSKathiravan Thirumoorthy 
1350*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_anoc_pcie4_1lane_s_clk = {
1351*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x2e0dc,
1352*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1353*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1354*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x2e0dc,
1355*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1356*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1357*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_anoc_pcie4_1lane_s_clk",
1358*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1359*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie4_axi_s_clk_src.clkr.hw,
1360*76fc060dSKathiravan Thirumoorthy 			},
1361*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1362*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1363*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1364*76fc060dSKathiravan Thirumoorthy 		},
1365*76fc060dSKathiravan Thirumoorthy 	},
1366*76fc060dSKathiravan Thirumoorthy };
1367*76fc060dSKathiravan Thirumoorthy 
1368*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_cmn_12gpll_ahb_clk = {
1369*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x3a004,
1370*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1371*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1372*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x3a004,
1373*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1374*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1375*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_cmn_12gpll_ahb_clk",
1376*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1377*76fc060dSKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1378*76fc060dSKathiravan Thirumoorthy 			},
1379*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1380*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1381*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1382*76fc060dSKathiravan Thirumoorthy 		},
1383*76fc060dSKathiravan Thirumoorthy 	},
1384*76fc060dSKathiravan Thirumoorthy };
1385*76fc060dSKathiravan Thirumoorthy 
1386*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_cmn_12gpll_sys_clk = {
1387*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x3a008,
1388*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT_VOTED,
1389*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1390*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x3a008,
1391*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1392*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1393*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_cmn_12gpll_sys_clk",
1394*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1395*76fc060dSKathiravan Thirumoorthy 				&gcc_uniphy_sys_clk_src.clkr.hw,
1396*76fc060dSKathiravan Thirumoorthy 			},
1397*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1398*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1399*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1400*76fc060dSKathiravan Thirumoorthy 		},
1401*76fc060dSKathiravan Thirumoorthy 	},
1402*76fc060dSKathiravan Thirumoorthy };
1403*76fc060dSKathiravan Thirumoorthy 
1404*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_mdio_ahb_clk = {
1405*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x17040,
1406*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1407*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1408*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x17040,
1409*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1410*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1411*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_mdio_ahb_clk",
1412*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1413*76fc060dSKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1414*76fc060dSKathiravan Thirumoorthy 			},
1415*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1416*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1417*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1418*76fc060dSKathiravan Thirumoorthy 		},
1419*76fc060dSKathiravan Thirumoorthy 	},
1420*76fc060dSKathiravan Thirumoorthy };
1421*76fc060dSKathiravan Thirumoorthy 
1422*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_nss_ts_clk = {
1423*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x17018,
1424*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT_VOTED,
1425*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1426*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x17018,
1427*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1428*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1429*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_nss_ts_clk",
1430*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1431*76fc060dSKathiravan Thirumoorthy 				&gcc_nss_ts_clk_src.clkr.hw,
1432*76fc060dSKathiravan Thirumoorthy 			},
1433*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1434*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1435*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1436*76fc060dSKathiravan Thirumoorthy 		},
1437*76fc060dSKathiravan Thirumoorthy 	},
1438*76fc060dSKathiravan Thirumoorthy };
1439*76fc060dSKathiravan Thirumoorthy 
1440*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_nsscc_clk = {
1441*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x17034,
1442*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1443*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1444*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x17034,
1445*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1446*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1447*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_nsscc_clk",
1448*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1449*76fc060dSKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1450*76fc060dSKathiravan Thirumoorthy 			},
1451*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1452*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1453*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1454*76fc060dSKathiravan Thirumoorthy 		},
1455*76fc060dSKathiravan Thirumoorthy 	},
1456*76fc060dSKathiravan Thirumoorthy };
1457*76fc060dSKathiravan Thirumoorthy 
1458*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_nsscfg_clk = {
1459*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x1702c,
1460*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1461*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1462*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x1702c,
1463*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1464*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1465*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_nsscfg_clk",
1466*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1467*76fc060dSKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1468*76fc060dSKathiravan Thirumoorthy 			},
1469*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1470*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1471*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1472*76fc060dSKathiravan Thirumoorthy 		},
1473*76fc060dSKathiravan Thirumoorthy 	},
1474*76fc060dSKathiravan Thirumoorthy };
1475*76fc060dSKathiravan Thirumoorthy 
1476*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_nssnoc_atb_clk = {
1477*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x17014,
1478*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT_VOTED,
1479*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1480*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x17014,
1481*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1482*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1483*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_nssnoc_atb_clk",
1484*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1485*76fc060dSKathiravan Thirumoorthy 				&gcc_qdss_at_clk_src.clkr.hw,
1486*76fc060dSKathiravan Thirumoorthy 			},
1487*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1488*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1489*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1490*76fc060dSKathiravan Thirumoorthy 		},
1491*76fc060dSKathiravan Thirumoorthy 	},
1492*76fc060dSKathiravan Thirumoorthy };
1493*76fc060dSKathiravan Thirumoorthy 
1494*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_nssnoc_memnoc_1_clk = {
1495*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x17084,
1496*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1497*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1498*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x17084,
1499*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1500*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1501*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_nssnoc_memnoc_1_clk",
1502*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1503*76fc060dSKathiravan Thirumoorthy 				&gcc_nssnoc_memnoc_div_clk_src.clkr.hw,
1504*76fc060dSKathiravan Thirumoorthy 			},
1505*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1506*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1507*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1508*76fc060dSKathiravan Thirumoorthy 		},
1509*76fc060dSKathiravan Thirumoorthy 	},
1510*76fc060dSKathiravan Thirumoorthy };
1511*76fc060dSKathiravan Thirumoorthy 
1512*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_nssnoc_memnoc_clk = {
1513*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x17024,
1514*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1515*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1516*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x17024,
1517*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1518*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1519*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_nssnoc_memnoc_clk",
1520*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1521*76fc060dSKathiravan Thirumoorthy 				&gcc_nssnoc_memnoc_div_clk_src.clkr.hw,
1522*76fc060dSKathiravan Thirumoorthy 			},
1523*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1524*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1525*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1526*76fc060dSKathiravan Thirumoorthy 		},
1527*76fc060dSKathiravan Thirumoorthy 	},
1528*76fc060dSKathiravan Thirumoorthy };
1529*76fc060dSKathiravan Thirumoorthy 
1530*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_nssnoc_nsscc_clk = {
1531*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x17030,
1532*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1533*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1534*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x17030,
1535*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1536*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1537*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_nssnoc_nsscc_clk",
1538*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1539*76fc060dSKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1540*76fc060dSKathiravan Thirumoorthy 			},
1541*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1542*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1543*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1544*76fc060dSKathiravan Thirumoorthy 		},
1545*76fc060dSKathiravan Thirumoorthy 	},
1546*76fc060dSKathiravan Thirumoorthy };
1547*76fc060dSKathiravan Thirumoorthy 
1548*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_nssnoc_pcnoc_1_clk = {
1549*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x17080,
1550*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1551*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1552*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x17080,
1553*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1554*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1555*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_nssnoc_pcnoc_1_clk",
1556*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1557*76fc060dSKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1558*76fc060dSKathiravan Thirumoorthy 			},
1559*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1560*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1561*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1562*76fc060dSKathiravan Thirumoorthy 		},
1563*76fc060dSKathiravan Thirumoorthy 	},
1564*76fc060dSKathiravan Thirumoorthy };
1565*76fc060dSKathiravan Thirumoorthy 
1566*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_nssnoc_qosgen_ref_clk = {
1567*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x1701c,
1568*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1569*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1570*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x1701c,
1571*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1572*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1573*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_nssnoc_qosgen_ref_clk",
1574*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw *[]) {
1575*76fc060dSKathiravan Thirumoorthy 				&gcc_xo_div4_clk_src.hw
1576*76fc060dSKathiravan Thirumoorthy 			},
1577*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1578*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1579*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1580*76fc060dSKathiravan Thirumoorthy 		},
1581*76fc060dSKathiravan Thirumoorthy 	},
1582*76fc060dSKathiravan Thirumoorthy };
1583*76fc060dSKathiravan Thirumoorthy 
1584*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_nssnoc_snoc_1_clk = {
1585*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x1707c,
1586*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1587*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1588*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x1707c,
1589*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1590*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1591*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_nssnoc_snoc_1_clk",
1592*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1593*76fc060dSKathiravan Thirumoorthy 				&gcc_system_noc_bfdcd_clk_src.clkr.hw
1594*76fc060dSKathiravan Thirumoorthy 			},
1595*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1596*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1597*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1598*76fc060dSKathiravan Thirumoorthy 		},
1599*76fc060dSKathiravan Thirumoorthy 	},
1600*76fc060dSKathiravan Thirumoorthy };
1601*76fc060dSKathiravan Thirumoorthy 
1602*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_nssnoc_snoc_clk = {
1603*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x17028,
1604*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1605*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1606*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x17028,
1607*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1608*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1609*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_nssnoc_snoc_clk",
1610*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1611*76fc060dSKathiravan Thirumoorthy 				&gcc_system_noc_bfdcd_clk_src.clkr.hw
1612*76fc060dSKathiravan Thirumoorthy 			},
1613*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1614*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1615*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1616*76fc060dSKathiravan Thirumoorthy 		},
1617*76fc060dSKathiravan Thirumoorthy 	},
1618*76fc060dSKathiravan Thirumoorthy };
1619*76fc060dSKathiravan Thirumoorthy 
1620*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_nssnoc_timeout_ref_clk = {
1621*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x17020,
1622*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1623*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1624*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x17020,
1625*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1626*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1627*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_nssnoc_timeout_ref_clk",
1628*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1629*76fc060dSKathiravan Thirumoorthy 				&gcc_xo_div4_clk_src.hw,
1630*76fc060dSKathiravan Thirumoorthy 			},
1631*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1632*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1633*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1634*76fc060dSKathiravan Thirumoorthy 		},
1635*76fc060dSKathiravan Thirumoorthy 	},
1636*76fc060dSKathiravan Thirumoorthy };
1637*76fc060dSKathiravan Thirumoorthy 
1638*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_nssnoc_xo_dcd_clk = {
1639*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x17074,
1640*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1641*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1642*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x17074,
1643*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1644*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1645*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_nssnoc_xo_dcd_clk",
1646*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1647*76fc060dSKathiravan Thirumoorthy 				&gcc_xo_clk_src.clkr.hw,
1648*76fc060dSKathiravan Thirumoorthy 			},
1649*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1650*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1651*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1652*76fc060dSKathiravan Thirumoorthy 		},
1653*76fc060dSKathiravan Thirumoorthy 	},
1654*76fc060dSKathiravan Thirumoorthy };
1655*76fc060dSKathiravan Thirumoorthy 
1656*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_pcie0_ahb_clk = {
1657*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x28030,
1658*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1659*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1660*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x28030,
1661*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1662*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1663*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_pcie0_ahb_clk",
1664*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1665*76fc060dSKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1666*76fc060dSKathiravan Thirumoorthy 			},
1667*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1668*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1669*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1670*76fc060dSKathiravan Thirumoorthy 		},
1671*76fc060dSKathiravan Thirumoorthy 	},
1672*76fc060dSKathiravan Thirumoorthy };
1673*76fc060dSKathiravan Thirumoorthy 
1674*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_pcie0_aux_clk = {
1675*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x28070,
1676*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1677*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1678*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x28070,
1679*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1680*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1681*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_pcie0_aux_clk",
1682*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1683*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie_aux_clk_src.clkr.hw,
1684*76fc060dSKathiravan Thirumoorthy 			},
1685*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1686*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1687*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1688*76fc060dSKathiravan Thirumoorthy 		},
1689*76fc060dSKathiravan Thirumoorthy 	},
1690*76fc060dSKathiravan Thirumoorthy };
1691*76fc060dSKathiravan Thirumoorthy 
1692*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_pcie0_axi_m_clk = {
1693*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x28038,
1694*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1695*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1696*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x28038,
1697*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1698*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1699*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_pcie0_axi_m_clk",
1700*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1701*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie0_axi_m_clk_src.clkr.hw,
1702*76fc060dSKathiravan Thirumoorthy 			},
1703*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1704*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1705*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1706*76fc060dSKathiravan Thirumoorthy 		},
1707*76fc060dSKathiravan Thirumoorthy 	},
1708*76fc060dSKathiravan Thirumoorthy };
1709*76fc060dSKathiravan Thirumoorthy 
1710*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_pcie0_axi_s_bridge_clk = {
1711*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x28048,
1712*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1713*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1714*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x28048,
1715*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1716*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1717*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_pcie0_axi_s_bridge_clk",
1718*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1719*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie0_axi_s_clk_src.clkr.hw,
1720*76fc060dSKathiravan Thirumoorthy 			},
1721*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1722*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1723*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1724*76fc060dSKathiravan Thirumoorthy 		},
1725*76fc060dSKathiravan Thirumoorthy 	},
1726*76fc060dSKathiravan Thirumoorthy };
1727*76fc060dSKathiravan Thirumoorthy 
1728*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_pcie0_axi_s_clk = {
1729*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x28040,
1730*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1731*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1732*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x28040,
1733*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1734*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1735*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_pcie0_axi_s_clk",
1736*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1737*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie0_axi_s_clk_src.clkr.hw,
1738*76fc060dSKathiravan Thirumoorthy 			},
1739*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1740*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1741*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1742*76fc060dSKathiravan Thirumoorthy 		},
1743*76fc060dSKathiravan Thirumoorthy 	},
1744*76fc060dSKathiravan Thirumoorthy };
1745*76fc060dSKathiravan Thirumoorthy 
1746*76fc060dSKathiravan Thirumoorthy static struct clk_regmap_phy_mux gcc_pcie0_pipe_clk_src = {
1747*76fc060dSKathiravan Thirumoorthy 	.reg = 0x28064,
1748*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1749*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1750*76fc060dSKathiravan Thirumoorthy 			.name = "pcie0_pipe_clk_src",
1751*76fc060dSKathiravan Thirumoorthy 			.parent_data = &(const struct clk_parent_data) {
1752*76fc060dSKathiravan Thirumoorthy 				.index = DT_PCIE30_PHY0_PIPE_CLK,
1753*76fc060dSKathiravan Thirumoorthy 			},
1754*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1755*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_regmap_phy_mux_ops,
1756*76fc060dSKathiravan Thirumoorthy 		},
1757*76fc060dSKathiravan Thirumoorthy 	},
1758*76fc060dSKathiravan Thirumoorthy };
1759*76fc060dSKathiravan Thirumoorthy 
1760*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_pcie0_pipe_clk = {
1761*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x28068,
1762*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT_DELAY,
1763*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1764*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x28068,
1765*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1766*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1767*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_pcie0_pipe_clk",
1768*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw *[]) {
1769*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie0_pipe_clk_src.clkr.hw
1770*76fc060dSKathiravan Thirumoorthy 			},
1771*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1772*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1773*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1774*76fc060dSKathiravan Thirumoorthy 		},
1775*76fc060dSKathiravan Thirumoorthy 	},
1776*76fc060dSKathiravan Thirumoorthy };
1777*76fc060dSKathiravan Thirumoorthy 
1778*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_pcie1_ahb_clk = {
1779*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x29030,
1780*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1781*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1782*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x29030,
1783*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1784*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1785*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_pcie1_ahb_clk",
1786*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1787*76fc060dSKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1788*76fc060dSKathiravan Thirumoorthy 			},
1789*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1790*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1791*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1792*76fc060dSKathiravan Thirumoorthy 		},
1793*76fc060dSKathiravan Thirumoorthy 	},
1794*76fc060dSKathiravan Thirumoorthy };
1795*76fc060dSKathiravan Thirumoorthy 
1796*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_pcie1_aux_clk = {
1797*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x29074,
1798*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1799*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1800*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x29074,
1801*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1802*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1803*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_pcie1_aux_clk",
1804*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1805*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie_aux_clk_src.clkr.hw,
1806*76fc060dSKathiravan Thirumoorthy 			},
1807*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1808*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1809*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1810*76fc060dSKathiravan Thirumoorthy 		},
1811*76fc060dSKathiravan Thirumoorthy 	},
1812*76fc060dSKathiravan Thirumoorthy };
1813*76fc060dSKathiravan Thirumoorthy 
1814*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_pcie1_axi_m_clk = {
1815*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x29038,
1816*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1817*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1818*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x29038,
1819*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1820*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1821*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_pcie1_axi_m_clk",
1822*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1823*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie1_axi_m_clk_src.clkr.hw,
1824*76fc060dSKathiravan Thirumoorthy 			},
1825*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1826*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1827*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1828*76fc060dSKathiravan Thirumoorthy 		},
1829*76fc060dSKathiravan Thirumoorthy 	},
1830*76fc060dSKathiravan Thirumoorthy };
1831*76fc060dSKathiravan Thirumoorthy 
1832*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_pcie1_axi_s_bridge_clk = {
1833*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x29048,
1834*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1835*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1836*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x29048,
1837*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1838*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1839*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_pcie1_axi_s_bridge_clk",
1840*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1841*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie1_axi_s_clk_src.clkr.hw,
1842*76fc060dSKathiravan Thirumoorthy 			},
1843*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1844*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1845*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1846*76fc060dSKathiravan Thirumoorthy 		},
1847*76fc060dSKathiravan Thirumoorthy 	},
1848*76fc060dSKathiravan Thirumoorthy };
1849*76fc060dSKathiravan Thirumoorthy 
1850*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_pcie1_axi_s_clk = {
1851*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x29040,
1852*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1853*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1854*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x29040,
1855*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1856*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1857*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_pcie1_axi_s_clk",
1858*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1859*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie1_axi_s_clk_src.clkr.hw,
1860*76fc060dSKathiravan Thirumoorthy 			},
1861*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1862*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1863*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1864*76fc060dSKathiravan Thirumoorthy 		},
1865*76fc060dSKathiravan Thirumoorthy 	},
1866*76fc060dSKathiravan Thirumoorthy };
1867*76fc060dSKathiravan Thirumoorthy 
1868*76fc060dSKathiravan Thirumoorthy static struct clk_regmap_phy_mux gcc_pcie1_pipe_clk_src = {
1869*76fc060dSKathiravan Thirumoorthy 	.reg = 0x29064,
1870*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1871*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1872*76fc060dSKathiravan Thirumoorthy 			.name = "pcie1_pipe_clk_src",
1873*76fc060dSKathiravan Thirumoorthy 			.parent_data = &(const struct clk_parent_data) {
1874*76fc060dSKathiravan Thirumoorthy 				.index = DT_PCIE30_PHY1_PIPE_CLK,
1875*76fc060dSKathiravan Thirumoorthy 			},
1876*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1877*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_regmap_phy_mux_ops,
1878*76fc060dSKathiravan Thirumoorthy 		},
1879*76fc060dSKathiravan Thirumoorthy 	},
1880*76fc060dSKathiravan Thirumoorthy };
1881*76fc060dSKathiravan Thirumoorthy 
1882*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_pcie1_pipe_clk = {
1883*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x29068,
1884*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT_DELAY,
1885*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1886*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x29068,
1887*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1888*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1889*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_pcie1_pipe_clk",
1890*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw *[]) {
1891*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie1_pipe_clk_src.clkr.hw
1892*76fc060dSKathiravan Thirumoorthy 			},
1893*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1894*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1895*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1896*76fc060dSKathiravan Thirumoorthy 		},
1897*76fc060dSKathiravan Thirumoorthy 	},
1898*76fc060dSKathiravan Thirumoorthy };
1899*76fc060dSKathiravan Thirumoorthy 
1900*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_pcie2_ahb_clk = {
1901*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x2a030,
1902*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1903*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1904*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x2a030,
1905*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1906*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1907*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_pcie2_ahb_clk",
1908*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1909*76fc060dSKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1910*76fc060dSKathiravan Thirumoorthy 			},
1911*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1912*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1913*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1914*76fc060dSKathiravan Thirumoorthy 		},
1915*76fc060dSKathiravan Thirumoorthy 	},
1916*76fc060dSKathiravan Thirumoorthy };
1917*76fc060dSKathiravan Thirumoorthy 
1918*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_pcie2_aux_clk = {
1919*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x2a078,
1920*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1921*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1922*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x2a078,
1923*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1924*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1925*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_pcie2_aux_clk",
1926*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1927*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie_aux_clk_src.clkr.hw,
1928*76fc060dSKathiravan Thirumoorthy 			},
1929*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1930*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1931*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1932*76fc060dSKathiravan Thirumoorthy 		},
1933*76fc060dSKathiravan Thirumoorthy 	},
1934*76fc060dSKathiravan Thirumoorthy };
1935*76fc060dSKathiravan Thirumoorthy 
1936*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_pcie2_axi_m_clk = {
1937*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x2a038,
1938*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1939*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1940*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x2a038,
1941*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1942*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1943*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_pcie2_axi_m_clk",
1944*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1945*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie2_axi_m_clk_src.clkr.hw,
1946*76fc060dSKathiravan Thirumoorthy 			},
1947*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1948*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1949*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1950*76fc060dSKathiravan Thirumoorthy 		},
1951*76fc060dSKathiravan Thirumoorthy 	},
1952*76fc060dSKathiravan Thirumoorthy };
1953*76fc060dSKathiravan Thirumoorthy 
1954*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_pcie2_axi_s_bridge_clk = {
1955*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x2a048,
1956*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1957*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1958*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x2a048,
1959*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1960*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1961*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_pcie2_axi_s_bridge_clk",
1962*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1963*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie2_axi_s_clk_src.clkr.hw,
1964*76fc060dSKathiravan Thirumoorthy 			},
1965*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1966*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1967*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1968*76fc060dSKathiravan Thirumoorthy 		},
1969*76fc060dSKathiravan Thirumoorthy 	},
1970*76fc060dSKathiravan Thirumoorthy };
1971*76fc060dSKathiravan Thirumoorthy 
1972*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_pcie2_axi_s_clk = {
1973*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x2a040,
1974*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1975*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1976*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x2a040,
1977*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1978*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1979*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_pcie2_axi_s_clk",
1980*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1981*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie2_axi_s_clk_src.clkr.hw,
1982*76fc060dSKathiravan Thirumoorthy 			},
1983*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1984*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1985*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1986*76fc060dSKathiravan Thirumoorthy 		},
1987*76fc060dSKathiravan Thirumoorthy 	},
1988*76fc060dSKathiravan Thirumoorthy };
1989*76fc060dSKathiravan Thirumoorthy 
1990*76fc060dSKathiravan Thirumoorthy static struct clk_regmap_phy_mux gcc_pcie2_pipe_clk_src = {
1991*76fc060dSKathiravan Thirumoorthy 	.reg = 0x2a064,
1992*76fc060dSKathiravan Thirumoorthy 	.clkr = {
1993*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1994*76fc060dSKathiravan Thirumoorthy 			.name = "pcie2_pipe_clk_src",
1995*76fc060dSKathiravan Thirumoorthy 			.parent_data = &(const struct clk_parent_data) {
1996*76fc060dSKathiravan Thirumoorthy 				.index = DT_PCIE30_PHY2_PIPE_CLK,
1997*76fc060dSKathiravan Thirumoorthy 			},
1998*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
1999*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_regmap_phy_mux_ops,
2000*76fc060dSKathiravan Thirumoorthy 		},
2001*76fc060dSKathiravan Thirumoorthy 	},
2002*76fc060dSKathiravan Thirumoorthy };
2003*76fc060dSKathiravan Thirumoorthy 
2004*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_pcie2_pipe_clk = {
2005*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x2a068,
2006*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT_DELAY,
2007*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2008*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x2a068,
2009*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2010*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2011*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_pcie2_pipe_clk",
2012*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw *[]) {
2013*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie2_pipe_clk_src.clkr.hw
2014*76fc060dSKathiravan Thirumoorthy 			},
2015*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2016*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2017*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2018*76fc060dSKathiravan Thirumoorthy 		},
2019*76fc060dSKathiravan Thirumoorthy 	},
2020*76fc060dSKathiravan Thirumoorthy };
2021*76fc060dSKathiravan Thirumoorthy 
2022*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_pcie3_ahb_clk = {
2023*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x2b030,
2024*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2025*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2026*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x2b030,
2027*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2028*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2029*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_pcie3_ahb_clk",
2030*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2031*76fc060dSKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2032*76fc060dSKathiravan Thirumoorthy 			},
2033*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2034*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2035*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2036*76fc060dSKathiravan Thirumoorthy 		},
2037*76fc060dSKathiravan Thirumoorthy 	},
2038*76fc060dSKathiravan Thirumoorthy };
2039*76fc060dSKathiravan Thirumoorthy 
2040*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_pcie3_aux_clk = {
2041*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x2b07c,
2042*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2043*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2044*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x2b07c,
2045*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2046*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2047*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_pcie3_aux_clk",
2048*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2049*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie_aux_clk_src.clkr.hw,
2050*76fc060dSKathiravan Thirumoorthy 			},
2051*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2052*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2053*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2054*76fc060dSKathiravan Thirumoorthy 		},
2055*76fc060dSKathiravan Thirumoorthy 	},
2056*76fc060dSKathiravan Thirumoorthy };
2057*76fc060dSKathiravan Thirumoorthy 
2058*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_pcie3_axi_m_clk = {
2059*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x2b038,
2060*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2061*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2062*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x2b038,
2063*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2064*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2065*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_pcie3_axi_m_clk",
2066*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2067*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie3_axi_m_clk_src.clkr.hw,
2068*76fc060dSKathiravan Thirumoorthy 			},
2069*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2070*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2071*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2072*76fc060dSKathiravan Thirumoorthy 		},
2073*76fc060dSKathiravan Thirumoorthy 	},
2074*76fc060dSKathiravan Thirumoorthy };
2075*76fc060dSKathiravan Thirumoorthy 
2076*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_pcie3_axi_s_bridge_clk = {
2077*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x2b048,
2078*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2079*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2080*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x2b048,
2081*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2082*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2083*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_pcie3_axi_s_bridge_clk",
2084*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2085*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie3_axi_s_clk_src.clkr.hw,
2086*76fc060dSKathiravan Thirumoorthy 			},
2087*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2088*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2089*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2090*76fc060dSKathiravan Thirumoorthy 		},
2091*76fc060dSKathiravan Thirumoorthy 	},
2092*76fc060dSKathiravan Thirumoorthy };
2093*76fc060dSKathiravan Thirumoorthy 
2094*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_pcie3_axi_s_clk = {
2095*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x2b040,
2096*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2097*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2098*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x2b040,
2099*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2100*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2101*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_pcie3_axi_s_clk",
2102*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2103*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie3_axi_s_clk_src.clkr.hw,
2104*76fc060dSKathiravan Thirumoorthy 			},
2105*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2106*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2107*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2108*76fc060dSKathiravan Thirumoorthy 		},
2109*76fc060dSKathiravan Thirumoorthy 	},
2110*76fc060dSKathiravan Thirumoorthy };
2111*76fc060dSKathiravan Thirumoorthy 
2112*76fc060dSKathiravan Thirumoorthy static struct clk_regmap_phy_mux gcc_pcie3_pipe_clk_src = {
2113*76fc060dSKathiravan Thirumoorthy 	.reg = 0x2b064,
2114*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2115*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2116*76fc060dSKathiravan Thirumoorthy 			.name = "pcie3_pipe_clk_src",
2117*76fc060dSKathiravan Thirumoorthy 			.parent_data = &(const struct clk_parent_data) {
2118*76fc060dSKathiravan Thirumoorthy 				.index = DT_PCIE30_PHY3_PIPE_CLK,
2119*76fc060dSKathiravan Thirumoorthy 			},
2120*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2121*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_regmap_phy_mux_ops,
2122*76fc060dSKathiravan Thirumoorthy 		},
2123*76fc060dSKathiravan Thirumoorthy 	},
2124*76fc060dSKathiravan Thirumoorthy };
2125*76fc060dSKathiravan Thirumoorthy 
2126*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_pcie3_pipe_clk = {
2127*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x2b068,
2128*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT_DELAY,
2129*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2130*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x2b068,
2131*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2132*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2133*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_pcie3_pipe_clk",
2134*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw *[]) {
2135*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie3_pipe_clk_src.clkr.hw
2136*76fc060dSKathiravan Thirumoorthy 			},
2137*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2138*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2139*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2140*76fc060dSKathiravan Thirumoorthy 		},
2141*76fc060dSKathiravan Thirumoorthy 	},
2142*76fc060dSKathiravan Thirumoorthy };
2143*76fc060dSKathiravan Thirumoorthy 
2144*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_pcie4_ahb_clk = {
2145*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x2501c,
2146*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2147*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2148*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x2501c,
2149*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2150*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2151*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_pcie4_ahb_clk",
2152*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2153*76fc060dSKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2154*76fc060dSKathiravan Thirumoorthy 			},
2155*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2156*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2157*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2158*76fc060dSKathiravan Thirumoorthy 		},
2159*76fc060dSKathiravan Thirumoorthy 	},
2160*76fc060dSKathiravan Thirumoorthy };
2161*76fc060dSKathiravan Thirumoorthy 
2162*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_pcie4_aux_clk = {
2163*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x25020,
2164*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2165*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2166*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x25020,
2167*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2168*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2169*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_pcie4_aux_clk",
2170*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2171*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie_aux_clk_src.clkr.hw,
2172*76fc060dSKathiravan Thirumoorthy 			},
2173*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2174*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2175*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2176*76fc060dSKathiravan Thirumoorthy 		},
2177*76fc060dSKathiravan Thirumoorthy 	},
2178*76fc060dSKathiravan Thirumoorthy };
2179*76fc060dSKathiravan Thirumoorthy 
2180*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_pcie4_axi_m_clk = {
2181*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x25028,
2182*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2183*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2184*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x25028,
2185*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2186*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2187*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_pcie4_axi_m_clk",
2188*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2189*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie4_axi_m_clk_src.clkr.hw,
2190*76fc060dSKathiravan Thirumoorthy 			},
2191*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2192*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2193*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2194*76fc060dSKathiravan Thirumoorthy 		},
2195*76fc060dSKathiravan Thirumoorthy 	},
2196*76fc060dSKathiravan Thirumoorthy };
2197*76fc060dSKathiravan Thirumoorthy 
2198*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_pcie4_axi_s_bridge_clk = {
2199*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x25038,
2200*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2201*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2202*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x25038,
2203*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2204*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2205*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_pcie4_axi_s_bridge_clk",
2206*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2207*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie4_axi_s_clk_src.clkr.hw,
2208*76fc060dSKathiravan Thirumoorthy 			},
2209*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2210*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2211*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2212*76fc060dSKathiravan Thirumoorthy 		},
2213*76fc060dSKathiravan Thirumoorthy 	},
2214*76fc060dSKathiravan Thirumoorthy };
2215*76fc060dSKathiravan Thirumoorthy 
2216*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_pcie4_axi_s_clk = {
2217*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x25030,
2218*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2219*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2220*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x25030,
2221*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2222*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2223*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_pcie4_axi_s_clk",
2224*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2225*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie4_axi_s_clk_src.clkr.hw,
2226*76fc060dSKathiravan Thirumoorthy 			},
2227*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2228*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2229*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2230*76fc060dSKathiravan Thirumoorthy 		},
2231*76fc060dSKathiravan Thirumoorthy 	},
2232*76fc060dSKathiravan Thirumoorthy };
2233*76fc060dSKathiravan Thirumoorthy 
2234*76fc060dSKathiravan Thirumoorthy static struct clk_regmap_phy_mux gcc_pcie4_pipe_clk_src = {
2235*76fc060dSKathiravan Thirumoorthy 	.reg = 0x25058,
2236*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2237*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2238*76fc060dSKathiravan Thirumoorthy 			.name = "pcie4_pipe_clk_src",
2239*76fc060dSKathiravan Thirumoorthy 			.parent_data = &(const struct clk_parent_data) {
2240*76fc060dSKathiravan Thirumoorthy 				.index = DT_PCIE30_PHY4_PIPE_CLK,
2241*76fc060dSKathiravan Thirumoorthy 			},
2242*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2243*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_regmap_phy_mux_ops,
2244*76fc060dSKathiravan Thirumoorthy 		},
2245*76fc060dSKathiravan Thirumoorthy 	},
2246*76fc060dSKathiravan Thirumoorthy };
2247*76fc060dSKathiravan Thirumoorthy 
2248*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_pcie4_pipe_clk = {
2249*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x2503c,
2250*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT_DELAY,
2251*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2252*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x2503c,
2253*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2254*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2255*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_pcie4_pipe_clk",
2256*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw *[]) {
2257*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie4_pipe_clk_src.clkr.hw
2258*76fc060dSKathiravan Thirumoorthy 			},
2259*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2260*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2261*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2262*76fc060dSKathiravan Thirumoorthy 		},
2263*76fc060dSKathiravan Thirumoorthy 	},
2264*76fc060dSKathiravan Thirumoorthy };
2265*76fc060dSKathiravan Thirumoorthy 
2266*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_pcie0_rchng_clk = {
2267*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x28028,
2268*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2269*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x28028,
2270*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(1),
2271*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2272*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_pcie0_rchng_clk",
2273*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw *[]) {
2274*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie0_rchng_clk_src.clkr.hw
2275*76fc060dSKathiravan Thirumoorthy 			},
2276*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2277*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2278*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2279*76fc060dSKathiravan Thirumoorthy 		},
2280*76fc060dSKathiravan Thirumoorthy 	},
2281*76fc060dSKathiravan Thirumoorthy };
2282*76fc060dSKathiravan Thirumoorthy 
2283*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_pcie1_rchng_clk = {
2284*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x29028,
2285*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2286*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x29028,
2287*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(1),
2288*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2289*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_pcie1_rchng_clk",
2290*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw *[]) {
2291*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie1_rchng_clk_src.clkr.hw
2292*76fc060dSKathiravan Thirumoorthy 			},
2293*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2294*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2295*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2296*76fc060dSKathiravan Thirumoorthy 		},
2297*76fc060dSKathiravan Thirumoorthy 	},
2298*76fc060dSKathiravan Thirumoorthy };
2299*76fc060dSKathiravan Thirumoorthy 
2300*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_pcie2_rchng_clk = {
2301*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x2a028,
2302*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2303*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x2a028,
2304*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(1),
2305*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2306*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_pcie2_rchng_clk",
2307*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw *[]) {
2308*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie2_rchng_clk_src.clkr.hw
2309*76fc060dSKathiravan Thirumoorthy 			},
2310*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2311*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2312*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2313*76fc060dSKathiravan Thirumoorthy 		},
2314*76fc060dSKathiravan Thirumoorthy 	},
2315*76fc060dSKathiravan Thirumoorthy };
2316*76fc060dSKathiravan Thirumoorthy 
2317*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_pcie3_rchng_clk = {
2318*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x2b028,
2319*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2320*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x2b028,
2321*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(1),
2322*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2323*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_pcie3_rchng_clk",
2324*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw *[]) {
2325*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie3_rchng_clk_src.clkr.hw
2326*76fc060dSKathiravan Thirumoorthy 			},
2327*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2328*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2329*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2330*76fc060dSKathiravan Thirumoorthy 		},
2331*76fc060dSKathiravan Thirumoorthy 	},
2332*76fc060dSKathiravan Thirumoorthy };
2333*76fc060dSKathiravan Thirumoorthy 
2334*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_pcie4_rchng_clk = {
2335*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x25014,
2336*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2337*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x25014,
2338*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(1),
2339*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2340*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_pcie4_rchng_clk",
2341*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw *[]) {
2342*76fc060dSKathiravan Thirumoorthy 				&gcc_pcie4_rchng_clk_src.clkr.hw
2343*76fc060dSKathiravan Thirumoorthy 			},
2344*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2345*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2346*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2347*76fc060dSKathiravan Thirumoorthy 		},
2348*76fc060dSKathiravan Thirumoorthy 	},
2349*76fc060dSKathiravan Thirumoorthy };
2350*76fc060dSKathiravan Thirumoorthy 
2351*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_qdss_at_clk = {
2352*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x2d034,
2353*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT_VOTED,
2354*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2355*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x2d034,
2356*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2357*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2358*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_qdss_at_clk",
2359*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2360*76fc060dSKathiravan Thirumoorthy 				&gcc_qdss_at_clk_src.clkr.hw,
2361*76fc060dSKathiravan Thirumoorthy 			},
2362*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2363*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2364*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2365*76fc060dSKathiravan Thirumoorthy 		},
2366*76fc060dSKathiravan Thirumoorthy 	},
2367*76fc060dSKathiravan Thirumoorthy };
2368*76fc060dSKathiravan Thirumoorthy 
2369*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_qdss_dap_clk = {
2370*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x2d058,
2371*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT_VOTED,
2372*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2373*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0xb004,
2374*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(2),
2375*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2376*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_qdss_dap_clk",
2377*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2378*76fc060dSKathiravan Thirumoorthy 				&gcc_qdss_dap_sync_clk_src.hw
2379*76fc060dSKathiravan Thirumoorthy 			},
2380*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2381*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2382*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2383*76fc060dSKathiravan Thirumoorthy 		},
2384*76fc060dSKathiravan Thirumoorthy 	},
2385*76fc060dSKathiravan Thirumoorthy };
2386*76fc060dSKathiravan Thirumoorthy 
2387*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_qpic_ahb_clk = {
2388*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x32010,
2389*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2390*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2391*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x32010,
2392*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2393*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2394*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_qpic_ahb_clk",
2395*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2396*76fc060dSKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2397*76fc060dSKathiravan Thirumoorthy 			},
2398*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2399*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2400*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2401*76fc060dSKathiravan Thirumoorthy 		},
2402*76fc060dSKathiravan Thirumoorthy 	},
2403*76fc060dSKathiravan Thirumoorthy };
2404*76fc060dSKathiravan Thirumoorthy 
2405*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_qpic_clk = {
2406*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x32028,
2407*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2408*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2409*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x32028,
2410*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2411*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2412*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_qpic_clk",
2413*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2414*76fc060dSKathiravan Thirumoorthy 				&gcc_qpic_clk_src.clkr.hw,
2415*76fc060dSKathiravan Thirumoorthy 			},
2416*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2417*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2418*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2419*76fc060dSKathiravan Thirumoorthy 		},
2420*76fc060dSKathiravan Thirumoorthy 	},
2421*76fc060dSKathiravan Thirumoorthy };
2422*76fc060dSKathiravan Thirumoorthy 
2423*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_qpic_io_macro_clk = {
2424*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x3200c,
2425*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2426*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2427*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x3200c,
2428*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2429*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2430*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_qpic_io_macro_clk",
2431*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2432*76fc060dSKathiravan Thirumoorthy 				&gcc_qpic_io_macro_clk_src.clkr.hw,
2433*76fc060dSKathiravan Thirumoorthy 			},
2434*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2435*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2436*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2437*76fc060dSKathiravan Thirumoorthy 		},
2438*76fc060dSKathiravan Thirumoorthy 	},
2439*76fc060dSKathiravan Thirumoorthy };
2440*76fc060dSKathiravan Thirumoorthy 
2441*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_qpic_sleep_clk = {
2442*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x32018,
2443*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2444*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2445*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x32018,
2446*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2447*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2448*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_qpic_sleep_clk",
2449*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2450*76fc060dSKathiravan Thirumoorthy 		},
2451*76fc060dSKathiravan Thirumoorthy 	},
2452*76fc060dSKathiravan Thirumoorthy };
2453*76fc060dSKathiravan Thirumoorthy 
2454*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_qupv3_ahb_mst_clk = {
2455*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x1014,
2456*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT_VOTED,
2457*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2458*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0xb004,
2459*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(14),
2460*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2461*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_qupv3_ahb_mst_clk",
2462*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2463*76fc060dSKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2464*76fc060dSKathiravan Thirumoorthy 			},
2465*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2466*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2467*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2468*76fc060dSKathiravan Thirumoorthy 		},
2469*76fc060dSKathiravan Thirumoorthy 	},
2470*76fc060dSKathiravan Thirumoorthy };
2471*76fc060dSKathiravan Thirumoorthy 
2472*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_qupv3_ahb_slv_clk = {
2473*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x102c,
2474*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT_VOTED,
2475*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2476*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0xb004,
2477*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(4),
2478*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2479*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_qupv3_ahb_slv_clk",
2480*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2481*76fc060dSKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2482*76fc060dSKathiravan Thirumoorthy 			},
2483*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2484*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2485*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2486*76fc060dSKathiravan Thirumoorthy 		},
2487*76fc060dSKathiravan Thirumoorthy 	},
2488*76fc060dSKathiravan Thirumoorthy };
2489*76fc060dSKathiravan Thirumoorthy 
2490*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_qupv3_wrap_se0_clk = {
2491*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x202c,
2492*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2493*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2494*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x202c,
2495*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2496*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2497*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_qupv3_wrap_se0_clk",
2498*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2499*76fc060dSKathiravan Thirumoorthy 				&gcc_qupv3_wrap_se0_clk_src.clkr.hw,
2500*76fc060dSKathiravan Thirumoorthy 			},
2501*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2502*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2503*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2504*76fc060dSKathiravan Thirumoorthy 		},
2505*76fc060dSKathiravan Thirumoorthy 	},
2506*76fc060dSKathiravan Thirumoorthy };
2507*76fc060dSKathiravan Thirumoorthy 
2508*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_qupv3_wrap_se1_clk = {
2509*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x302c,
2510*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2511*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2512*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x302c,
2513*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2514*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2515*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_qupv3_wrap_se1_clk",
2516*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2517*76fc060dSKathiravan Thirumoorthy 				&gcc_qupv3_wrap_se1_clk_src.clkr.hw,
2518*76fc060dSKathiravan Thirumoorthy 			},
2519*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2520*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2521*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2522*76fc060dSKathiravan Thirumoorthy 		},
2523*76fc060dSKathiravan Thirumoorthy 	},
2524*76fc060dSKathiravan Thirumoorthy };
2525*76fc060dSKathiravan Thirumoorthy 
2526*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_qupv3_wrap_se2_clk = {
2527*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x3048,
2528*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2529*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2530*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x3048,
2531*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2532*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2533*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_qupv3_wrap_se2_clk",
2534*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2535*76fc060dSKathiravan Thirumoorthy 				&gcc_qupv3_wrap_se2_clk_src.clkr.hw,
2536*76fc060dSKathiravan Thirumoorthy 			},
2537*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2538*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2539*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2540*76fc060dSKathiravan Thirumoorthy 		},
2541*76fc060dSKathiravan Thirumoorthy 	},
2542*76fc060dSKathiravan Thirumoorthy };
2543*76fc060dSKathiravan Thirumoorthy 
2544*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_qupv3_wrap_se3_clk = {
2545*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x3064,
2546*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2547*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2548*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x3064,
2549*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2550*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2551*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_qupv3_wrap_se3_clk",
2552*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2553*76fc060dSKathiravan Thirumoorthy 				&gcc_qupv3_wrap_se3_clk_src.clkr.hw,
2554*76fc060dSKathiravan Thirumoorthy 			},
2555*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2556*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2557*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2558*76fc060dSKathiravan Thirumoorthy 		},
2559*76fc060dSKathiravan Thirumoorthy 	},
2560*76fc060dSKathiravan Thirumoorthy };
2561*76fc060dSKathiravan Thirumoorthy 
2562*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_qupv3_wrap_se4_clk = {
2563*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x3080,
2564*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2565*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2566*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x3080,
2567*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2568*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2569*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_qupv3_wrap_se4_clk",
2570*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2571*76fc060dSKathiravan Thirumoorthy 				&gcc_qupv3_wrap_se4_clk_src.clkr.hw,
2572*76fc060dSKathiravan Thirumoorthy 			},
2573*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2574*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2575*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2576*76fc060dSKathiravan Thirumoorthy 		},
2577*76fc060dSKathiravan Thirumoorthy 	},
2578*76fc060dSKathiravan Thirumoorthy };
2579*76fc060dSKathiravan Thirumoorthy 
2580*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_qupv3_wrap_se5_clk = {
2581*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x30a4,
2582*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2583*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2584*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x30a4,
2585*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2586*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2587*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_qupv3_wrap_se5_clk",
2588*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2589*76fc060dSKathiravan Thirumoorthy 				&gcc_qupv3_wrap_se5_clk_src.clkr.hw,
2590*76fc060dSKathiravan Thirumoorthy 			},
2591*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2592*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2593*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2594*76fc060dSKathiravan Thirumoorthy 		},
2595*76fc060dSKathiravan Thirumoorthy 	},
2596*76fc060dSKathiravan Thirumoorthy };
2597*76fc060dSKathiravan Thirumoorthy 
2598*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_qupv3_wrap_se6_clk = {
2599*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x4018,
2600*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2601*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2602*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x4018,
2603*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2604*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2605*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_qupv3_wrap_se6_clk",
2606*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2607*76fc060dSKathiravan Thirumoorthy 				&gcc_qupv3_wrap_se6_clk_src.clkr.hw,
2608*76fc060dSKathiravan Thirumoorthy 			},
2609*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2610*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2611*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2612*76fc060dSKathiravan Thirumoorthy 		},
2613*76fc060dSKathiravan Thirumoorthy 	},
2614*76fc060dSKathiravan Thirumoorthy };
2615*76fc060dSKathiravan Thirumoorthy 
2616*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_qupv3_wrap_se7_clk = {
2617*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x4034,
2618*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2619*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2620*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x4034,
2621*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2622*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2623*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_qupv3_wrap_se7_clk",
2624*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2625*76fc060dSKathiravan Thirumoorthy 				&gcc_qupv3_wrap_se7_clk_src.clkr.hw,
2626*76fc060dSKathiravan Thirumoorthy 			},
2627*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2628*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2629*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2630*76fc060dSKathiravan Thirumoorthy 		},
2631*76fc060dSKathiravan Thirumoorthy 	},
2632*76fc060dSKathiravan Thirumoorthy };
2633*76fc060dSKathiravan Thirumoorthy 
2634*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_sdcc1_ahb_clk = {
2635*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x3303c,
2636*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2637*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2638*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x3303c,
2639*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2640*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2641*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_sdcc1_ahb_clk",
2642*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2643*76fc060dSKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2644*76fc060dSKathiravan Thirumoorthy 			},
2645*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2646*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2647*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2648*76fc060dSKathiravan Thirumoorthy 		},
2649*76fc060dSKathiravan Thirumoorthy 	},
2650*76fc060dSKathiravan Thirumoorthy };
2651*76fc060dSKathiravan Thirumoorthy 
2652*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_sdcc1_apps_clk = {
2653*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x3302c,
2654*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2655*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2656*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x3302c,
2657*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2658*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2659*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_sdcc1_apps_clk",
2660*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2661*76fc060dSKathiravan Thirumoorthy 				&gcc_sdcc1_apps_clk_src.clkr.hw,
2662*76fc060dSKathiravan Thirumoorthy 			},
2663*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2664*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2665*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2666*76fc060dSKathiravan Thirumoorthy 		},
2667*76fc060dSKathiravan Thirumoorthy 	},
2668*76fc060dSKathiravan Thirumoorthy };
2669*76fc060dSKathiravan Thirumoorthy 
2670*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_sdcc1_ice_core_clk = {
2671*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x33034,
2672*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2673*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2674*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x33034,
2675*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2676*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2677*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_sdcc1_ice_core_clk",
2678*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2679*76fc060dSKathiravan Thirumoorthy 				&gcc_sdcc1_ice_core_clk_src.clkr.hw,
2680*76fc060dSKathiravan Thirumoorthy 			},
2681*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2682*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2683*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2684*76fc060dSKathiravan Thirumoorthy 		},
2685*76fc060dSKathiravan Thirumoorthy 	},
2686*76fc060dSKathiravan Thirumoorthy };
2687*76fc060dSKathiravan Thirumoorthy 
2688*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_snoc_usb_clk = {
2689*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x2e0c4,
2690*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2691*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2692*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x2e0c4,
2693*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2694*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2695*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_snoc_usb_clk",
2696*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2697*76fc060dSKathiravan Thirumoorthy 				&gcc_usb0_master_clk_src.clkr.hw,
2698*76fc060dSKathiravan Thirumoorthy 			},
2699*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2700*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2701*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2702*76fc060dSKathiravan Thirumoorthy 		},
2703*76fc060dSKathiravan Thirumoorthy 	},
2704*76fc060dSKathiravan Thirumoorthy };
2705*76fc060dSKathiravan Thirumoorthy 
2706*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_uniphy0_ahb_clk = {
2707*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x1704c,
2708*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2709*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2710*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x1704c,
2711*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2712*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2713*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_uniphy0_ahb_clk",
2714*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2715*76fc060dSKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2716*76fc060dSKathiravan Thirumoorthy 			},
2717*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2718*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2719*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2720*76fc060dSKathiravan Thirumoorthy 		},
2721*76fc060dSKathiravan Thirumoorthy 	},
2722*76fc060dSKathiravan Thirumoorthy };
2723*76fc060dSKathiravan Thirumoorthy 
2724*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_uniphy0_sys_clk = {
2725*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x17048,
2726*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT_VOTED,
2727*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2728*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x17048,
2729*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2730*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2731*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_uniphy0_sys_clk",
2732*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2733*76fc060dSKathiravan Thirumoorthy 				&gcc_uniphy_sys_clk_src.clkr.hw,
2734*76fc060dSKathiravan Thirumoorthy 			},
2735*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2736*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2737*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2738*76fc060dSKathiravan Thirumoorthy 		},
2739*76fc060dSKathiravan Thirumoorthy 	},
2740*76fc060dSKathiravan Thirumoorthy };
2741*76fc060dSKathiravan Thirumoorthy 
2742*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_uniphy1_ahb_clk = {
2743*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x1705c,
2744*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2745*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2746*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x1705c,
2747*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2748*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2749*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_uniphy1_ahb_clk",
2750*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2751*76fc060dSKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2752*76fc060dSKathiravan Thirumoorthy 			},
2753*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2754*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2755*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2756*76fc060dSKathiravan Thirumoorthy 		},
2757*76fc060dSKathiravan Thirumoorthy 	},
2758*76fc060dSKathiravan Thirumoorthy };
2759*76fc060dSKathiravan Thirumoorthy 
2760*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_uniphy1_sys_clk = {
2761*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x17058,
2762*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT_VOTED,
2763*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2764*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x17058,
2765*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2766*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2767*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_uniphy1_sys_clk",
2768*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2769*76fc060dSKathiravan Thirumoorthy 				&gcc_uniphy_sys_clk_src.clkr.hw,
2770*76fc060dSKathiravan Thirumoorthy 			},
2771*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2772*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2773*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2774*76fc060dSKathiravan Thirumoorthy 		},
2775*76fc060dSKathiravan Thirumoorthy 	},
2776*76fc060dSKathiravan Thirumoorthy };
2777*76fc060dSKathiravan Thirumoorthy 
2778*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_uniphy2_ahb_clk = {
2779*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x1706c,
2780*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2781*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2782*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x1706c,
2783*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2784*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2785*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_uniphy2_ahb_clk",
2786*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2787*76fc060dSKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2788*76fc060dSKathiravan Thirumoorthy 			},
2789*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2790*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2791*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2792*76fc060dSKathiravan Thirumoorthy 		},
2793*76fc060dSKathiravan Thirumoorthy 	},
2794*76fc060dSKathiravan Thirumoorthy };
2795*76fc060dSKathiravan Thirumoorthy 
2796*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_uniphy2_sys_clk = {
2797*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x17068,
2798*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT_VOTED,
2799*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2800*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x17068,
2801*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2802*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2803*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_uniphy2_sys_clk",
2804*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2805*76fc060dSKathiravan Thirumoorthy 				&gcc_uniphy_sys_clk_src.clkr.hw,
2806*76fc060dSKathiravan Thirumoorthy 			},
2807*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2808*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2809*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2810*76fc060dSKathiravan Thirumoorthy 		},
2811*76fc060dSKathiravan Thirumoorthy 	},
2812*76fc060dSKathiravan Thirumoorthy };
2813*76fc060dSKathiravan Thirumoorthy 
2814*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_usb0_aux_clk = {
2815*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x2c04c,
2816*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT_VOTED,
2817*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2818*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x2c04c,
2819*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2820*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2821*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_usb0_aux_clk",
2822*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2823*76fc060dSKathiravan Thirumoorthy 				&gcc_usb0_aux_clk_src.clkr.hw,
2824*76fc060dSKathiravan Thirumoorthy 			},
2825*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2826*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2827*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2828*76fc060dSKathiravan Thirumoorthy 		},
2829*76fc060dSKathiravan Thirumoorthy 	},
2830*76fc060dSKathiravan Thirumoorthy };
2831*76fc060dSKathiravan Thirumoorthy 
2832*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_usb0_eud_at_clk = {
2833*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x30004,
2834*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT_VOTED,
2835*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2836*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x30004,
2837*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2838*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2839*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_usb0_eud_at_clk",
2840*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2841*76fc060dSKathiravan Thirumoorthy 				&gcc_eud_at_div_clk_src.hw,
2842*76fc060dSKathiravan Thirumoorthy 			},
2843*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2844*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2845*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2846*76fc060dSKathiravan Thirumoorthy 		},
2847*76fc060dSKathiravan Thirumoorthy 	},
2848*76fc060dSKathiravan Thirumoorthy };
2849*76fc060dSKathiravan Thirumoorthy 
2850*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_usb0_master_clk = {
2851*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x2c044,
2852*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT_VOTED,
2853*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2854*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x2c044,
2855*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2856*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2857*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_usb0_master_clk",
2858*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2859*76fc060dSKathiravan Thirumoorthy 				&gcc_usb0_master_clk_src.clkr.hw,
2860*76fc060dSKathiravan Thirumoorthy 			},
2861*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2862*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2863*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2864*76fc060dSKathiravan Thirumoorthy 		},
2865*76fc060dSKathiravan Thirumoorthy 	},
2866*76fc060dSKathiravan Thirumoorthy };
2867*76fc060dSKathiravan Thirumoorthy 
2868*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_usb0_mock_utmi_clk = {
2869*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x2c050,
2870*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT_VOTED,
2871*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2872*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x2c050,
2873*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2874*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2875*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_usb0_mock_utmi_clk",
2876*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2877*76fc060dSKathiravan Thirumoorthy 				&gcc_usb0_mock_utmi_div_clk_src.clkr.hw,
2878*76fc060dSKathiravan Thirumoorthy 			},
2879*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2880*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2881*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2882*76fc060dSKathiravan Thirumoorthy 		},
2883*76fc060dSKathiravan Thirumoorthy 	},
2884*76fc060dSKathiravan Thirumoorthy };
2885*76fc060dSKathiravan Thirumoorthy 
2886*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_usb0_phy_cfg_ahb_clk = {
2887*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x2c05c,
2888*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT_VOTED,
2889*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2890*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x2c05c,
2891*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2892*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2893*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_usb0_phy_cfg_ahb_clk",
2894*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2895*76fc060dSKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2896*76fc060dSKathiravan Thirumoorthy 			},
2897*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2898*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2899*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2900*76fc060dSKathiravan Thirumoorthy 		},
2901*76fc060dSKathiravan Thirumoorthy 	},
2902*76fc060dSKathiravan Thirumoorthy };
2903*76fc060dSKathiravan Thirumoorthy 
2904*76fc060dSKathiravan Thirumoorthy static struct clk_regmap_phy_mux gcc_usb0_pipe_clk_src = {
2905*76fc060dSKathiravan Thirumoorthy 	.reg = 0x2c074,
2906*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2907*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2908*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_usb0_pipe_clk_src",
2909*76fc060dSKathiravan Thirumoorthy 			.parent_data = &(const struct clk_parent_data) {
2910*76fc060dSKathiravan Thirumoorthy 				.index = DT_USB3_PHY0_CC_PIPE_CLK,
2911*76fc060dSKathiravan Thirumoorthy 			},
2912*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2913*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_regmap_phy_mux_ops,
2914*76fc060dSKathiravan Thirumoorthy 		},
2915*76fc060dSKathiravan Thirumoorthy 	},
2916*76fc060dSKathiravan Thirumoorthy };
2917*76fc060dSKathiravan Thirumoorthy 
2918*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_usb0_pipe_clk = {
2919*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x2c054,
2920*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT_DELAY,
2921*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2922*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x2c054,
2923*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2924*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2925*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_usb0_pipe_clk",
2926*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw *[]) {
2927*76fc060dSKathiravan Thirumoorthy 				&gcc_usb0_pipe_clk_src.clkr.hw
2928*76fc060dSKathiravan Thirumoorthy 			},
2929*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2930*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2931*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2932*76fc060dSKathiravan Thirumoorthy 		},
2933*76fc060dSKathiravan Thirumoorthy 	},
2934*76fc060dSKathiravan Thirumoorthy };
2935*76fc060dSKathiravan Thirumoorthy 
2936*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_usb0_sleep_clk = {
2937*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x2c058,
2938*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT_VOTED,
2939*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2940*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x2c058,
2941*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2942*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2943*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_usb0_sleep_clk",
2944*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2945*76fc060dSKathiravan Thirumoorthy 				&gcc_sleep_clk_src.clkr.hw,
2946*76fc060dSKathiravan Thirumoorthy 			},
2947*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2948*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2949*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2950*76fc060dSKathiravan Thirumoorthy 		},
2951*76fc060dSKathiravan Thirumoorthy 	},
2952*76fc060dSKathiravan Thirumoorthy };
2953*76fc060dSKathiravan Thirumoorthy 
2954*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_usb1_master_clk = {
2955*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x3c028,
2956*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2957*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2958*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x3c028,
2959*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2960*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2961*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_usb1_master_clk",
2962*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2963*76fc060dSKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2964*76fc060dSKathiravan Thirumoorthy 			},
2965*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2966*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2967*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2968*76fc060dSKathiravan Thirumoorthy 		},
2969*76fc060dSKathiravan Thirumoorthy 	},
2970*76fc060dSKathiravan Thirumoorthy };
2971*76fc060dSKathiravan Thirumoorthy 
2972*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_usb1_mock_utmi_clk = {
2973*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x3c024,
2974*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2975*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2976*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x3c024,
2977*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2978*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2979*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_usb1_mock_utmi_clk",
2980*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2981*76fc060dSKathiravan Thirumoorthy 				&gcc_usb1_mock_utmi_div_clk_src.clkr.hw,
2982*76fc060dSKathiravan Thirumoorthy 			},
2983*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
2984*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2985*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2986*76fc060dSKathiravan Thirumoorthy 		},
2987*76fc060dSKathiravan Thirumoorthy 	},
2988*76fc060dSKathiravan Thirumoorthy };
2989*76fc060dSKathiravan Thirumoorthy 
2990*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_usb1_phy_cfg_ahb_clk = {
2991*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x3c01c,
2992*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT_VOTED,
2993*76fc060dSKathiravan Thirumoorthy 	.clkr = {
2994*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x3c01c,
2995*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2996*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2997*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_usb1_phy_cfg_ahb_clk",
2998*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2999*76fc060dSKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
3000*76fc060dSKathiravan Thirumoorthy 			},
3001*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
3002*76fc060dSKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
3003*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
3004*76fc060dSKathiravan Thirumoorthy 		},
3005*76fc060dSKathiravan Thirumoorthy 	},
3006*76fc060dSKathiravan Thirumoorthy };
3007*76fc060dSKathiravan Thirumoorthy 
3008*76fc060dSKathiravan Thirumoorthy static struct clk_branch gcc_usb1_sleep_clk = {
3009*76fc060dSKathiravan Thirumoorthy 	.halt_reg = 0x3c020,
3010*76fc060dSKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
3011*76fc060dSKathiravan Thirumoorthy 	.clkr = {
3012*76fc060dSKathiravan Thirumoorthy 		.enable_reg = 0x3c020,
3013*76fc060dSKathiravan Thirumoorthy 		.enable_mask = BIT(0),
3014*76fc060dSKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
3015*76fc060dSKathiravan Thirumoorthy 			.name = "gcc_usb1_sleep_clk",
3016*76fc060dSKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
3017*76fc060dSKathiravan Thirumoorthy 				&gcc_sleep_clk_src.clkr.hw,
3018*76fc060dSKathiravan Thirumoorthy 			},
3019*76fc060dSKathiravan Thirumoorthy 			.num_parents = 1,
3020*76fc060dSKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
3021*76fc060dSKathiravan Thirumoorthy 		},
3022*76fc060dSKathiravan Thirumoorthy 	},
3023*76fc060dSKathiravan Thirumoorthy };
3024*76fc060dSKathiravan Thirumoorthy 
3025*76fc060dSKathiravan Thirumoorthy static struct clk_regmap *gcc_ipq9650_clocks[] = {
3026*76fc060dSKathiravan Thirumoorthy 	[GCC_ADSS_PWM_CLK] = &gcc_adss_pwm_clk.clkr,
3027*76fc060dSKathiravan Thirumoorthy 	[GCC_ADSS_PWM_CLK_SRC] = &gcc_adss_pwm_clk_src.clkr,
3028*76fc060dSKathiravan Thirumoorthy 	[GCC_ANOC_PCIE0_1LANE_M_CLK] = &gcc_anoc_pcie0_1lane_m_clk.clkr,
3029*76fc060dSKathiravan Thirumoorthy 	[GCC_ANOC_PCIE0_1LANE_S_CLK] = &gcc_anoc_pcie0_1lane_s_clk.clkr,
3030*76fc060dSKathiravan Thirumoorthy 	[GCC_ANOC_PCIE1_2LANE_M_CLK] = &gcc_anoc_pcie1_2lane_m_clk.clkr,
3031*76fc060dSKathiravan Thirumoorthy 	[GCC_ANOC_PCIE1_2LANE_S_CLK] = &gcc_anoc_pcie1_2lane_s_clk.clkr,
3032*76fc060dSKathiravan Thirumoorthy 	[GCC_ANOC_PCIE2_2LANE_M_CLK] = &gcc_anoc_pcie2_2lane_m_clk.clkr,
3033*76fc060dSKathiravan Thirumoorthy 	[GCC_ANOC_PCIE2_2LANE_S_CLK] = &gcc_anoc_pcie2_2lane_s_clk.clkr,
3034*76fc060dSKathiravan Thirumoorthy 	[GCC_ANOC_PCIE3_2LANE_M_CLK] = &gcc_anoc_pcie3_2lane_m_clk.clkr,
3035*76fc060dSKathiravan Thirumoorthy 	[GCC_ANOC_PCIE3_2LANE_S_CLK] = &gcc_anoc_pcie3_2lane_s_clk.clkr,
3036*76fc060dSKathiravan Thirumoorthy 	[GCC_ANOC_PCIE4_1LANE_M_CLK] = &gcc_anoc_pcie4_1lane_m_clk.clkr,
3037*76fc060dSKathiravan Thirumoorthy 	[GCC_ANOC_PCIE4_1LANE_S_CLK] = &gcc_anoc_pcie4_1lane_s_clk.clkr,
3038*76fc060dSKathiravan Thirumoorthy 	[GCC_CMN_12GPLL_AHB_CLK] = &gcc_cmn_12gpll_ahb_clk.clkr,
3039*76fc060dSKathiravan Thirumoorthy 	[GCC_CMN_12GPLL_SYS_CLK] = &gcc_cmn_12gpll_sys_clk.clkr,
3040*76fc060dSKathiravan Thirumoorthy 	[GCC_MDIO_AHB_CLK] = &gcc_mdio_ahb_clk.clkr,
3041*76fc060dSKathiravan Thirumoorthy 	[GCC_NSS_TS_CLK] = &gcc_nss_ts_clk.clkr,
3042*76fc060dSKathiravan Thirumoorthy 	[GCC_NSS_TS_CLK_SRC] = &gcc_nss_ts_clk_src.clkr,
3043*76fc060dSKathiravan Thirumoorthy 	[GCC_NSSCC_CLK] = &gcc_nsscc_clk.clkr,
3044*76fc060dSKathiravan Thirumoorthy 	[GCC_NSSCFG_CLK] = &gcc_nsscfg_clk.clkr,
3045*76fc060dSKathiravan Thirumoorthy 	[GCC_NSSNOC_ATB_CLK] = &gcc_nssnoc_atb_clk.clkr,
3046*76fc060dSKathiravan Thirumoorthy 	[GCC_NSSNOC_MEMNOC_1_CLK] = &gcc_nssnoc_memnoc_1_clk.clkr,
3047*76fc060dSKathiravan Thirumoorthy 	[GCC_NSSNOC_MEMNOC_BFDCD_CLK_SRC] = &gcc_nssnoc_memnoc_bfdcd_clk_src.clkr,
3048*76fc060dSKathiravan Thirumoorthy 	[GCC_NSSNOC_MEMNOC_CLK] = &gcc_nssnoc_memnoc_clk.clkr,
3049*76fc060dSKathiravan Thirumoorthy 	[GCC_NSSNOC_MEMNOC_DIV_CLK_SRC] = &gcc_nssnoc_memnoc_div_clk_src.clkr,
3050*76fc060dSKathiravan Thirumoorthy 	[GCC_NSSNOC_NSSCC_CLK] = &gcc_nssnoc_nsscc_clk.clkr,
3051*76fc060dSKathiravan Thirumoorthy 	[GCC_NSSNOC_PCNOC_1_CLK] = &gcc_nssnoc_pcnoc_1_clk.clkr,
3052*76fc060dSKathiravan Thirumoorthy 	[GCC_NSSNOC_QOSGEN_REF_CLK] = &gcc_nssnoc_qosgen_ref_clk.clkr,
3053*76fc060dSKathiravan Thirumoorthy 	[GCC_NSSNOC_SNOC_1_CLK] = &gcc_nssnoc_snoc_1_clk.clkr,
3054*76fc060dSKathiravan Thirumoorthy 	[GCC_NSSNOC_SNOC_CLK] = &gcc_nssnoc_snoc_clk.clkr,
3055*76fc060dSKathiravan Thirumoorthy 	[GCC_NSSNOC_TIMEOUT_REF_CLK] = &gcc_nssnoc_timeout_ref_clk.clkr,
3056*76fc060dSKathiravan Thirumoorthy 	[GCC_NSSNOC_XO_DCD_CLK] = &gcc_nssnoc_xo_dcd_clk.clkr,
3057*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE0_AHB_CLK] = &gcc_pcie0_ahb_clk.clkr,
3058*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE0_AUX_CLK] = &gcc_pcie0_aux_clk.clkr,
3059*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE0_AXI_M_CLK] = &gcc_pcie0_axi_m_clk.clkr,
3060*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE0_AXI_M_CLK_SRC] = &gcc_pcie0_axi_m_clk_src.clkr,
3061*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE0_AXI_S_BRIDGE_CLK] = &gcc_pcie0_axi_s_bridge_clk.clkr,
3062*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE0_AXI_S_CLK] = &gcc_pcie0_axi_s_clk.clkr,
3063*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE0_AXI_S_CLK_SRC] = &gcc_pcie0_axi_s_clk_src.clkr,
3064*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE0_PIPE_CLK] = &gcc_pcie0_pipe_clk.clkr,
3065*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE0_PIPE_CLK_SRC] = &gcc_pcie0_pipe_clk_src.clkr,
3066*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE0_RCHNG_CLK_SRC] = &gcc_pcie0_rchng_clk_src.clkr,
3067*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE0_RCHNG_CLK] = &gcc_pcie0_rchng_clk.clkr,
3068*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE1_AHB_CLK] = &gcc_pcie1_ahb_clk.clkr,
3069*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE1_AUX_CLK] = &gcc_pcie1_aux_clk.clkr,
3070*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE1_AXI_M_CLK] = &gcc_pcie1_axi_m_clk.clkr,
3071*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE1_AXI_M_CLK_SRC] = &gcc_pcie1_axi_m_clk_src.clkr,
3072*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE1_AXI_S_BRIDGE_CLK] = &gcc_pcie1_axi_s_bridge_clk.clkr,
3073*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE1_AXI_S_CLK] = &gcc_pcie1_axi_s_clk.clkr,
3074*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE1_AXI_S_CLK_SRC] = &gcc_pcie1_axi_s_clk_src.clkr,
3075*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE1_PIPE_CLK] = &gcc_pcie1_pipe_clk.clkr,
3076*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE1_PIPE_CLK_SRC] = &gcc_pcie1_pipe_clk_src.clkr,
3077*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE1_RCHNG_CLK_SRC] = &gcc_pcie1_rchng_clk_src.clkr,
3078*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE1_RCHNG_CLK] = &gcc_pcie1_rchng_clk.clkr,
3079*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE2_AHB_CLK] = &gcc_pcie2_ahb_clk.clkr,
3080*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE2_AUX_CLK] = &gcc_pcie2_aux_clk.clkr,
3081*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE2_AXI_M_CLK] = &gcc_pcie2_axi_m_clk.clkr,
3082*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE2_AXI_M_CLK_SRC] = &gcc_pcie2_axi_m_clk_src.clkr,
3083*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE2_AXI_S_BRIDGE_CLK] = &gcc_pcie2_axi_s_bridge_clk.clkr,
3084*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE2_AXI_S_CLK] = &gcc_pcie2_axi_s_clk.clkr,
3085*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE2_AXI_S_CLK_SRC] = &gcc_pcie2_axi_s_clk_src.clkr,
3086*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE2_PIPE_CLK] = &gcc_pcie2_pipe_clk.clkr,
3087*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE2_PIPE_CLK_SRC] = &gcc_pcie2_pipe_clk_src.clkr,
3088*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE2_RCHNG_CLK_SRC] = &gcc_pcie2_rchng_clk_src.clkr,
3089*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE2_RCHNG_CLK] = &gcc_pcie2_rchng_clk.clkr,
3090*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE3_AHB_CLK] = &gcc_pcie3_ahb_clk.clkr,
3091*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE3_AUX_CLK] = &gcc_pcie3_aux_clk.clkr,
3092*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE3_AXI_M_CLK] = &gcc_pcie3_axi_m_clk.clkr,
3093*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE3_AXI_M_CLK_SRC] = &gcc_pcie3_axi_m_clk_src.clkr,
3094*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE3_AXI_S_BRIDGE_CLK] = &gcc_pcie3_axi_s_bridge_clk.clkr,
3095*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE3_AXI_S_CLK] = &gcc_pcie3_axi_s_clk.clkr,
3096*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE3_AXI_S_CLK_SRC] = &gcc_pcie3_axi_s_clk_src.clkr,
3097*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE3_PIPE_CLK] = &gcc_pcie3_pipe_clk.clkr,
3098*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE3_PIPE_CLK_SRC] = &gcc_pcie3_pipe_clk_src.clkr,
3099*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE3_RCHNG_CLK_SRC] = &gcc_pcie3_rchng_clk_src.clkr,
3100*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE3_RCHNG_CLK] = &gcc_pcie3_rchng_clk.clkr,
3101*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE4_AHB_CLK] = &gcc_pcie4_ahb_clk.clkr,
3102*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE4_AUX_CLK] = &gcc_pcie4_aux_clk.clkr,
3103*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE4_AXI_M_CLK] = &gcc_pcie4_axi_m_clk.clkr,
3104*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE4_AXI_M_CLK_SRC] = &gcc_pcie4_axi_m_clk_src.clkr,
3105*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE4_AXI_S_BRIDGE_CLK] = &gcc_pcie4_axi_s_bridge_clk.clkr,
3106*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE4_AXI_S_CLK] = &gcc_pcie4_axi_s_clk.clkr,
3107*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE4_AXI_S_CLK_SRC] = &gcc_pcie4_axi_s_clk_src.clkr,
3108*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE4_PIPE_CLK] = &gcc_pcie4_pipe_clk.clkr,
3109*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE4_PIPE_CLK_SRC] = &gcc_pcie4_pipe_clk_src.clkr,
3110*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE4_RCHNG_CLK_SRC] = &gcc_pcie4_rchng_clk_src.clkr,
3111*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE4_RCHNG_CLK] = &gcc_pcie4_rchng_clk.clkr,
3112*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE_AUX_CLK_SRC] = &gcc_pcie_aux_clk_src.clkr,
3113*76fc060dSKathiravan Thirumoorthy 	[GCC_PCNOC_BFDCD_CLK_SRC] = &gcc_pcnoc_bfdcd_clk_src.clkr,
3114*76fc060dSKathiravan Thirumoorthy 	[GCC_QDSS_AT_CLK] = &gcc_qdss_at_clk.clkr,
3115*76fc060dSKathiravan Thirumoorthy 	[GCC_QDSS_AT_CLK_SRC] = &gcc_qdss_at_clk_src.clkr,
3116*76fc060dSKathiravan Thirumoorthy 	[GCC_QDSS_DAP_CLK] = &gcc_qdss_dap_clk.clkr,
3117*76fc060dSKathiravan Thirumoorthy 	[GCC_QDSS_TSCTR_CLK_SRC] = &gcc_qdss_tsctr_clk_src.clkr,
3118*76fc060dSKathiravan Thirumoorthy 	[GCC_QPIC_AHB_CLK] = &gcc_qpic_ahb_clk.clkr,
3119*76fc060dSKathiravan Thirumoorthy 	[GCC_QPIC_CLK] = &gcc_qpic_clk.clkr,
3120*76fc060dSKathiravan Thirumoorthy 	[GCC_QPIC_CLK_SRC] = &gcc_qpic_clk_src.clkr,
3121*76fc060dSKathiravan Thirumoorthy 	[GCC_QPIC_IO_MACRO_CLK] = &gcc_qpic_io_macro_clk.clkr,
3122*76fc060dSKathiravan Thirumoorthy 	[GCC_QPIC_IO_MACRO_CLK_SRC] = &gcc_qpic_io_macro_clk_src.clkr,
3123*76fc060dSKathiravan Thirumoorthy 	[GCC_QPIC_SLEEP_CLK] = &gcc_qpic_sleep_clk.clkr,
3124*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_2X_CORE_CLK_SRC] = &gcc_qupv3_2x_core_clk_src.clkr,
3125*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_AHB_MST_CLK] = &gcc_qupv3_ahb_mst_clk.clkr,
3126*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_AHB_SLV_CLK] = &gcc_qupv3_ahb_slv_clk.clkr,
3127*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE0_CLK] = &gcc_qupv3_wrap_se0_clk.clkr,
3128*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE0_CLK_SRC] = &gcc_qupv3_wrap_se0_clk_src.clkr,
3129*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE1_CLK] = &gcc_qupv3_wrap_se1_clk.clkr,
3130*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE1_CLK_SRC] = &gcc_qupv3_wrap_se1_clk_src.clkr,
3131*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE2_CLK] = &gcc_qupv3_wrap_se2_clk.clkr,
3132*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE2_CLK_SRC] = &gcc_qupv3_wrap_se2_clk_src.clkr,
3133*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE3_CLK] = &gcc_qupv3_wrap_se3_clk.clkr,
3134*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE3_CLK_SRC] = &gcc_qupv3_wrap_se3_clk_src.clkr,
3135*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE4_CLK] = &gcc_qupv3_wrap_se4_clk.clkr,
3136*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE4_CLK_SRC] = &gcc_qupv3_wrap_se4_clk_src.clkr,
3137*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE5_CLK] = &gcc_qupv3_wrap_se5_clk.clkr,
3138*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE5_CLK_SRC] = &gcc_qupv3_wrap_se5_clk_src.clkr,
3139*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE6_CLK] = &gcc_qupv3_wrap_se6_clk.clkr,
3140*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE6_CLK_SRC] = &gcc_qupv3_wrap_se6_clk_src.clkr,
3141*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE7_CLK] = &gcc_qupv3_wrap_se7_clk.clkr,
3142*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE7_CLK_SRC] = &gcc_qupv3_wrap_se7_clk_src.clkr,
3143*76fc060dSKathiravan Thirumoorthy 	[GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
3144*76fc060dSKathiravan Thirumoorthy 	[GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
3145*76fc060dSKathiravan Thirumoorthy 	[GCC_SDCC1_APPS_CLK_SRC] = &gcc_sdcc1_apps_clk_src.clkr,
3146*76fc060dSKathiravan Thirumoorthy 	[GCC_SDCC1_ICE_CORE_CLK] = &gcc_sdcc1_ice_core_clk.clkr,
3147*76fc060dSKathiravan Thirumoorthy 	[GCC_SDCC1_ICE_CORE_CLK_SRC] = &gcc_sdcc1_ice_core_clk_src.clkr,
3148*76fc060dSKathiravan Thirumoorthy 	[GCC_SLEEP_CLK_SRC] = &gcc_sleep_clk_src.clkr,
3149*76fc060dSKathiravan Thirumoorthy 	[GCC_SNOC_USB_CLK] = &gcc_snoc_usb_clk.clkr,
3150*76fc060dSKathiravan Thirumoorthy 	[GCC_SYSTEM_NOC_BFDCD_CLK_SRC] = &gcc_system_noc_bfdcd_clk_src.clkr,
3151*76fc060dSKathiravan Thirumoorthy 	[GCC_UNIPHY0_AHB_CLK] = &gcc_uniphy0_ahb_clk.clkr,
3152*76fc060dSKathiravan Thirumoorthy 	[GCC_UNIPHY0_SYS_CLK] = &gcc_uniphy0_sys_clk.clkr,
3153*76fc060dSKathiravan Thirumoorthy 	[GCC_UNIPHY1_AHB_CLK] = &gcc_uniphy1_ahb_clk.clkr,
3154*76fc060dSKathiravan Thirumoorthy 	[GCC_UNIPHY1_SYS_CLK] = &gcc_uniphy1_sys_clk.clkr,
3155*76fc060dSKathiravan Thirumoorthy 	[GCC_UNIPHY2_AHB_CLK] = &gcc_uniphy2_ahb_clk.clkr,
3156*76fc060dSKathiravan Thirumoorthy 	[GCC_UNIPHY2_SYS_CLK] = &gcc_uniphy2_sys_clk.clkr,
3157*76fc060dSKathiravan Thirumoorthy 	[GCC_UNIPHY_SYS_CLK_SRC] = &gcc_uniphy_sys_clk_src.clkr,
3158*76fc060dSKathiravan Thirumoorthy 	[GCC_USB0_AUX_CLK] = &gcc_usb0_aux_clk.clkr,
3159*76fc060dSKathiravan Thirumoorthy 	[GCC_USB0_AUX_CLK_SRC] = &gcc_usb0_aux_clk_src.clkr,
3160*76fc060dSKathiravan Thirumoorthy 	[GCC_USB0_EUD_AT_CLK] = &gcc_usb0_eud_at_clk.clkr,
3161*76fc060dSKathiravan Thirumoorthy 	[GCC_USB0_MASTER_CLK] = &gcc_usb0_master_clk.clkr,
3162*76fc060dSKathiravan Thirumoorthy 	[GCC_USB0_MASTER_CLK_SRC] = &gcc_usb0_master_clk_src.clkr,
3163*76fc060dSKathiravan Thirumoorthy 	[GCC_USB0_MOCK_UTMI_CLK] = &gcc_usb0_mock_utmi_clk.clkr,
3164*76fc060dSKathiravan Thirumoorthy 	[GCC_USB0_MOCK_UTMI_CLK_SRC] = &gcc_usb0_mock_utmi_clk_src.clkr,
3165*76fc060dSKathiravan Thirumoorthy 	[GCC_USB0_MOCK_UTMI_DIV_CLK_SRC] = &gcc_usb0_mock_utmi_div_clk_src.clkr,
3166*76fc060dSKathiravan Thirumoorthy 	[GCC_USB0_PHY_CFG_AHB_CLK] = &gcc_usb0_phy_cfg_ahb_clk.clkr,
3167*76fc060dSKathiravan Thirumoorthy 	[GCC_USB0_PIPE_CLK] = &gcc_usb0_pipe_clk.clkr,
3168*76fc060dSKathiravan Thirumoorthy 	[GCC_USB0_PIPE_CLK_SRC] = &gcc_usb0_pipe_clk_src.clkr,
3169*76fc060dSKathiravan Thirumoorthy 	[GCC_USB0_SLEEP_CLK] = &gcc_usb0_sleep_clk.clkr,
3170*76fc060dSKathiravan Thirumoorthy 	[GCC_USB1_MASTER_CLK] = &gcc_usb1_master_clk.clkr,
3171*76fc060dSKathiravan Thirumoorthy 	[GCC_USB1_MOCK_UTMI_CLK] = &gcc_usb1_mock_utmi_clk.clkr,
3172*76fc060dSKathiravan Thirumoorthy 	[GCC_USB1_MOCK_UTMI_CLK_SRC] = &gcc_usb1_mock_utmi_clk_src.clkr,
3173*76fc060dSKathiravan Thirumoorthy 	[GCC_USB1_MOCK_UTMI_DIV_CLK_SRC] = &gcc_usb1_mock_utmi_div_clk_src.clkr,
3174*76fc060dSKathiravan Thirumoorthy 	[GCC_USB1_PHY_CFG_AHB_CLK] = &gcc_usb1_phy_cfg_ahb_clk.clkr,
3175*76fc060dSKathiravan Thirumoorthy 	[GCC_USB1_SLEEP_CLK] = &gcc_usb1_sleep_clk.clkr,
3176*76fc060dSKathiravan Thirumoorthy 	[GCC_XO_CLK_SRC] = &gcc_xo_clk_src.clkr,
3177*76fc060dSKathiravan Thirumoorthy 	[GPLL0_MAIN] = &gpll0_main.clkr,
3178*76fc060dSKathiravan Thirumoorthy 	[GPLL0] = &gpll0.clkr,
3179*76fc060dSKathiravan Thirumoorthy 	[GPLL2] = &gpll2.clkr,
3180*76fc060dSKathiravan Thirumoorthy 	[GPLL2_OUT_MAIN] = &gpll2_out_main.clkr,
3181*76fc060dSKathiravan Thirumoorthy 	[GPLL4] = &gpll4.clkr,
3182*76fc060dSKathiravan Thirumoorthy };
3183*76fc060dSKathiravan Thirumoorthy 
3184*76fc060dSKathiravan Thirumoorthy static const struct qcom_reset_map gcc_ipq9650_resets[] = {
3185*76fc060dSKathiravan Thirumoorthy 	[GCC_ADSS_BCR] = { 0x1c000 },
3186*76fc060dSKathiravan Thirumoorthy 	[GCC_ADSS_PWM_CLK_ARES] = { 0x1c00c, 2 },
3187*76fc060dSKathiravan Thirumoorthy 	[GCC_APC0_VOLTAGE_DROOP_DETECTOR_BCR] = { 0x38000 },
3188*76fc060dSKathiravan Thirumoorthy 	[GCC_APC0_VOLTAGE_DROOP_DETECTOR_GPLL0_CLK_ARES] = { 0x3800c, 2 },
3189*76fc060dSKathiravan Thirumoorthy 	[GCC_APSS_AHB_CLK_ARES] = { 0x24014, 2 },
3190*76fc060dSKathiravan Thirumoorthy 	[GCC_APSS_ATB_CLK_ARES] = { 0x24034, 2 },
3191*76fc060dSKathiravan Thirumoorthy 	[GCC_APSS_AXI_CLK_ARES] = { 0x24018, 2 },
3192*76fc060dSKathiravan Thirumoorthy 	[GCC_APSS_TS_CLK_ARES] = { 0x24030, 2 },
3193*76fc060dSKathiravan Thirumoorthy 	[GCC_BOOT_ROM_AHB_CLK_ARES] = { 0x1302c, 2 },
3194*76fc060dSKathiravan Thirumoorthy 	[GCC_BOOT_ROM_BCR] = { 0x13028 },
3195*76fc060dSKathiravan Thirumoorthy 	[GCC_CPUSS_TRIG_CLK_ARES] = { 0x2401c, 2 },
3196*76fc060dSKathiravan Thirumoorthy 	[GCC_GP1_CLK_ARES] = { 0x8018, 2 },
3197*76fc060dSKathiravan Thirumoorthy 	[GCC_GP2_CLK_ARES] = { 0x8030, 2 },
3198*76fc060dSKathiravan Thirumoorthy 	[GCC_GP3_CLK_ARES] = { 0x8048, 2 },
3199*76fc060dSKathiravan Thirumoorthy 	[GCC_MDIO_AHB_CLK_ARES] = { 0x17040, 2 },
3200*76fc060dSKathiravan Thirumoorthy 	[GCC_MDIO_BCR] = { 0x1703c },
3201*76fc060dSKathiravan Thirumoorthy 	[GCC_NSS_BCR] = { 0x17000 },
3202*76fc060dSKathiravan Thirumoorthy 	[GCC_NSS_TS_CLK_ARES] = { 0x17018, 2 },
3203*76fc060dSKathiravan Thirumoorthy 	[GCC_NSSCC_CLK_ARES] = { 0x17034, 2 },
3204*76fc060dSKathiravan Thirumoorthy 	[GCC_NSSCFG_CLK_ARES] = { 0x1702c, 2 },
3205*76fc060dSKathiravan Thirumoorthy 	[GCC_NSSNOC_ATB_CLK_ARES] = { 0x17014, 2 },
3206*76fc060dSKathiravan Thirumoorthy 	[GCC_NSSNOC_MEMNOC_1_CLK_ARES] = { 0x17084, 2 },
3207*76fc060dSKathiravan Thirumoorthy 	[GCC_NSSNOC_MEMNOC_CLK_ARES] = { 0x17024, 2 },
3208*76fc060dSKathiravan Thirumoorthy 	[GCC_NSSNOC_NSSCC_CLK_ARES] = { 0x17030, 2 },
3209*76fc060dSKathiravan Thirumoorthy 	[GCC_NSSNOC_PCNOC_1_CLK_ARES] = { 0x17080, 2 },
3210*76fc060dSKathiravan Thirumoorthy 	[GCC_NSSNOC_QOSGEN_REF_CLK_ARES] = { 0x1701c, 2 },
3211*76fc060dSKathiravan Thirumoorthy 	[GCC_NSSNOC_SNOC_1_CLK_ARES] = { 0x1707c, 2 },
3212*76fc060dSKathiravan Thirumoorthy 	[GCC_NSSNOC_SNOC_CLK_ARES] = { 0x17028, 2 },
3213*76fc060dSKathiravan Thirumoorthy 	[GCC_NSSNOC_TIMEOUT_REF_CLK_ARES] = { 0x17020, 2 },
3214*76fc060dSKathiravan Thirumoorthy 	[GCC_NSSNOC_XO_DCD_CLK_ARES] = { 0x17074, 2 },
3215*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE0_AHB_CLK_ARES] = { 0x28030, 2 },
3216*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE0_AUX_CLK_ARES] = { 0x28070, 2 },
3217*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE0_AXI_M_CLK_ARES] = { 0x28038, 2 },
3218*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE0_AXI_S_BRIDGE_CLK_ARES] = { 0x28048, 2 },
3219*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE0_AXI_S_CLK_ARES] = { 0x28040, 2 },
3220*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE0_BCR] = { 0x28000 },
3221*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE0_LINK_DOWN_BCR] = { 0x28054 },
3222*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE0_PHY_BCR] = { 0x28060 },
3223*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE0_PIPE_CLK_ARES] = { 0x28068, 2 },
3224*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE0PHY_PHY_BCR] = { 0x2805c },
3225*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE0_PIPE_RESET] = { 0x28058, 0 },
3226*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE0_CORE_STICKY_RESET] = { 0x28058, 1 },
3227*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE0_AXI_S_STICKY_RESET] = { 0x28058, 2 },
3228*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE0_AXI_S_RESET] = { 0x28058, 3 },
3229*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE0_AXI_M_STICKY_RESET] = { 0x28058, 4 },
3230*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE0_AXI_M_RESET] = { 0x28058, 5 },
3231*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE0_AUX_RESET] = { 0x28058, 6 },
3232*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE0_AHB_RESET] = { 0x28058, 7 },
3233*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE1_AHB_CLK_ARES] = { 0x29030, 2 },
3234*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE1_AUX_CLK_ARES] = { 0x29074, 2 },
3235*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE1_AXI_M_CLK_ARES] = { 0x29038, 2 },
3236*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE1_AXI_S_BRIDGE_CLK_ARES] = { 0x29048, 2 },
3237*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE1_AXI_S_CLK_ARES] = { 0x29040, 2 },
3238*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE1_BCR] = { 0x29000 },
3239*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE1_LINK_DOWN_BCR] = { 0x29054 },
3240*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE1_PHY_BCR] = { 0x29060 },
3241*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE1_PIPE_CLK_ARES] = { 0x29068, 2 },
3242*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE1PHY_PHY_BCR] = { 0x2905c },
3243*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE1_PIPE_RESET] = { 0x29058, 0 },
3244*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE1_CORE_STICKY_RESET] = { 0x29058, 1 },
3245*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE1_AXI_S_STICKY_RESET] = { 0x29058, 2 },
3246*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE1_AXI_S_RESET] = { 0x29058, 3 },
3247*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE1_AXI_M_STICKY_RESET] = { 0x29058, 4 },
3248*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE1_AXI_M_RESET] = { 0x29058, 5 },
3249*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE1_AUX_RESET] = { 0x29058, 6 },
3250*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE1_AHB_RESET] = { 0x29058, 7 },
3251*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE2_AHB_CLK_ARES] = { 0x2a030, 2 },
3252*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE2_AUX_CLK_ARES] = { 0x2a078, 2 },
3253*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE2_AXI_M_CLK_ARES] = { 0x2a038, 2 },
3254*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE2_AXI_S_BRIDGE_CLK_ARES] = { 0x2a048, 2 },
3255*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE2_AXI_S_CLK_ARES] = { 0x2a040, 2 },
3256*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE2_BCR] = { 0x2a000 },
3257*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE2_LINK_DOWN_BCR] = { 0x2a054 },
3258*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE2_PHY_BCR] = { 0x2a060 },
3259*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE2_PIPE_CLK_ARES] = { 0x2a068, 2 },
3260*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE2PHY_PHY_BCR] = { 0x2a05c },
3261*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE2_PIPE_RESET] = { 0x2a058, 0 },
3262*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE2_CORE_STICKY_RESET] = { 0x2a058, 1 },
3263*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE2_AXI_S_STICKY_RESET] = { 0x2a058, 2 },
3264*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE2_AXI_S_RESET] = { 0x2a058, 3 },
3265*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE2_AXI_M_STICKY_RESET] = { 0x2a058, 4 },
3266*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE2_AXI_M_RESET] = { 0x2a058, 5 },
3267*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE2_AUX_RESET] = { 0x2a058, 6 },
3268*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE2_AHB_RESET] = { 0x2a058, 7 },
3269*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE3_AHB_CLK_ARES] = { 0x2b030, 2 },
3270*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE3_AUX_CLK_ARES] = { 0x2b07c, 2 },
3271*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE3_AXI_M_CLK_ARES] = { 0x2b038, 2 },
3272*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE3_AXI_S_BRIDGE_CLK_ARES] = { 0x2b048, 2 },
3273*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE3_AXI_S_CLK_ARES] = { 0x2b040, 2 },
3274*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE3_BCR] = { 0x2b000 },
3275*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE3_LINK_DOWN_BCR] = { 0x2b054 },
3276*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE3_PHY_BCR] = { 0x2b060 },
3277*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE3_PIPE_CLK_ARES] = { 0x2b068, 2 },
3278*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE3PHY_PHY_BCR] = { 0x2b05c },
3279*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE3_PIPE_RESET] = { 0x2b058, 0 },
3280*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE3_CORE_STICKY_RESET] = { 0x2b058, 1 },
3281*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE3_AXI_S_STICKY_RESET] = { 0x2b058, 2 },
3282*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE3_AXI_S_RESET] = { 0x2b058, 3 },
3283*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE3_AXI_M_STICKY_RESET] = { 0x2b058, 4 },
3284*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE3_AXI_M_RESET] = { 0x2b058, 5 },
3285*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE3_AUX_RESET] = { 0x2b058, 6 },
3286*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE3_AHB_RESET] = { 0x2b058, 7 },
3287*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE4_AHB_CLK_ARES] = { 0x2501c, 2 },
3288*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE4_AUX_CLK_ARES] = { 0x25020, 2 },
3289*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE4_AXI_M_CLK_ARES] = { 0x25028, 2 },
3290*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE4_AXI_S_BRIDGE_CLK_ARES] = { 0x25038, 2 },
3291*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE4_AXI_S_CLK_ARES] = { 0x25030, 2 },
3292*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE4_BCR] = { 0x25000 },
3293*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE4_LINK_DOWN_BCR] = { 0x25044 },
3294*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE4_PHY_BCR] = { 0x2504c },
3295*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE4_PIPE_CLK_ARES] = { 0x2503c, 2 },
3296*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE4_PIPE_RESET] = { 0x25054, 0 },
3297*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE4_CORE_STICKY_RESET] = { 0x25054, 1 },
3298*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE4_AXI_S_STICKY_RESET] = { 0x25054, 2 },
3299*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE4_AXI_S_RESET] = { 0x25054, 3 },
3300*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE4_AXI_M_STICKY_RESET] = { 0x25054, 4 },
3301*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE4_AXI_M_RESET] = { 0x25054, 5 },
3302*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE4_AUX_RESET] = { 0x25054, 6 },
3303*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE4_AHB_RESET] = { 0x25054, 7 },
3304*76fc060dSKathiravan Thirumoorthy 	[GCC_PCIE4PHY_PHY_BCR] = { 0x25048 },
3305*76fc060dSKathiravan Thirumoorthy 	[GCC_QDSS_APB2JTAG_CLK_ARES] = { 0x2d05c, 2 },
3306*76fc060dSKathiravan Thirumoorthy 	[GCC_QDSS_AT_CLK_ARES] = { 0x2d034, 2 },
3307*76fc060dSKathiravan Thirumoorthy 	[GCC_QDSS_BCR] = { 0x2d000 },
3308*76fc060dSKathiravan Thirumoorthy 	[GCC_QDSS_CFG_AHB_CLK_ARES] = { 0x2d068, 2 },
3309*76fc060dSKathiravan Thirumoorthy 	[GCC_QDSS_DAP_AHB_CLK_ARES] = { 0x2d064, 2 },
3310*76fc060dSKathiravan Thirumoorthy 	[GCC_QDSS_DAP_CLK_ARES] = { 0x2d058, 2 },
3311*76fc060dSKathiravan Thirumoorthy 	[GCC_QDSS_ETR_USB_CLK_ARES] = { 0x2d060, 2 },
3312*76fc060dSKathiravan Thirumoorthy 	[GCC_QDSS_EUD_AT_CLK_ARES] = { 0x2d06c, 2 },
3313*76fc060dSKathiravan Thirumoorthy 	[GCC_QDSS_STM_CLK_ARES] = { 0x2d03c, 2 },
3314*76fc060dSKathiravan Thirumoorthy 	[GCC_QDSS_TRACECLKIN_CLK_ARES] = { 0x2d040, 2 },
3315*76fc060dSKathiravan Thirumoorthy 	[GCC_QDSS_TS_CLK_ARES] = { 0x2d078, 2 },
3316*76fc060dSKathiravan Thirumoorthy 	[GCC_QDSS_TSCTR_DIV16_CLK_ARES] = { 0x2d054, 2 },
3317*76fc060dSKathiravan Thirumoorthy 	[GCC_QDSS_TSCTR_DIV2_CLK_ARES] = { 0x2d044, 2 },
3318*76fc060dSKathiravan Thirumoorthy 	[GCC_QDSS_TSCTR_DIV3_CLK_ARES] = { 0x2d048, 2 },
3319*76fc060dSKathiravan Thirumoorthy 	[GCC_QDSS_TSCTR_DIV4_CLK_ARES] = { 0x2d04c, 2 },
3320*76fc060dSKathiravan Thirumoorthy 	[GCC_QDSS_TSCTR_DIV8_CLK_ARES] = { 0x2d050, 2 },
3321*76fc060dSKathiravan Thirumoorthy 	[GCC_QPIC_AHB_CLK_ARES] = { 0x32010, 2 },
3322*76fc060dSKathiravan Thirumoorthy 	[GCC_QPIC_CLK_ARES] = { 0x32028, 2 },
3323*76fc060dSKathiravan Thirumoorthy 	[GCC_QPIC_BCR] = { 0x32000 },
3324*76fc060dSKathiravan Thirumoorthy 	[GCC_QPIC_IO_MACRO_CLK_ARES] = { 0x3200c, 2 },
3325*76fc060dSKathiravan Thirumoorthy 	[GCC_QPIC_SLEEP_CLK_ARES] = { 0x32018, 2 },
3326*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_2X_CORE_CLK_ARES] = { 0x1020, 2 },
3327*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_AHB_MST_CLK_ARES] = { 0x1014, 2 },
3328*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_AHB_SLV_CLK_ARES] = { 0x102c, 2 },
3329*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_BCR] = { 0x1000 },
3330*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_CORE_CLK_ARES] = { 0x1018, 2 },
3331*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE0_CLK_ARES] = { 0x202c, 2 },
3332*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE0_BCR] = { 0x2000 },
3333*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE1_CLK_ARES] = { 0x302c, 2 },
3334*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE1_BCR] = { 0x3000 },
3335*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE2_CLK_ARES] = { 0x3048, 2 },
3336*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE2_BCR] = { 0x3030 },
3337*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE3_CLK_ARES] = { 0x3064, 2 },
3338*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE3_BCR] = { 0x304c },
3339*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE4_CLK_ARES] = { 0x3080, 2 },
3340*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE4_BCR] = { 0x3068 },
3341*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE5_CLK_ARES] = { 0x30a4, 2 },
3342*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE5_BCR] = { 0x308c },
3343*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE6_CLK_ARES] = { 0x4018, 2 },
3344*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE6_BCR] = { 0x4000 },
3345*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE7_CLK_ARES] = { 0x4034, 2 },
3346*76fc060dSKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE7_BCR] = { 0x401c },
3347*76fc060dSKathiravan Thirumoorthy 	[GCC_QUSB2_0_PHY_BCR] = { 0x2c068 },
3348*76fc060dSKathiravan Thirumoorthy 	[GCC_QUSB2_1_PHY_BCR] = { 0x3c030 },
3349*76fc060dSKathiravan Thirumoorthy 	[GCC_SDCC1_APPS_CLK_ARES] = { 0x3302c, 2 },
3350*76fc060dSKathiravan Thirumoorthy 	[GCC_SDCC1_ICE_CORE_CLK_ARES] = { 0x33034, 2 },
3351*76fc060dSKathiravan Thirumoorthy 	[GCC_SDCC_BCR] = { 0x33000 },
3352*76fc060dSKathiravan Thirumoorthy 	[GCC_TLMM_AHB_CLK_ARES] = { 0x3e004, 2 },
3353*76fc060dSKathiravan Thirumoorthy 	[GCC_TLMM_CLK_ARES] = { 0x3e008, 2 },
3354*76fc060dSKathiravan Thirumoorthy 	[GCC_TLMM_BCR] = { 0x3e000 },
3355*76fc060dSKathiravan Thirumoorthy 	[GCC_UNIPHY0_AHB_CLK_ARES] = { 0x1704c, 2 },
3356*76fc060dSKathiravan Thirumoorthy 	[GCC_UNIPHY0_BCR] = { 0x17044 },
3357*76fc060dSKathiravan Thirumoorthy 	[GCC_UNIPHY0_PMA_BCR] = { 0x17098 },
3358*76fc060dSKathiravan Thirumoorthy 	[GCC_UNIPHY0_SYS_CLK_ARES] = { 0x17048, 2 },
3359*76fc060dSKathiravan Thirumoorthy 	[GCC_UNIPHY1_AHB_CLK_ARES] = { 0x1705c, 2 },
3360*76fc060dSKathiravan Thirumoorthy 	[GCC_UNIPHY1_BCR] = { 0x17054 },
3361*76fc060dSKathiravan Thirumoorthy 	[GCC_UNIPHY1_PMA_BCR] = { 0x1709c },
3362*76fc060dSKathiravan Thirumoorthy 	[GCC_UNIPHY1_SYS_CLK_ARES] = { 0x17058, 2 },
3363*76fc060dSKathiravan Thirumoorthy 	[GCC_UNIPHY2_AHB_CLK_ARES] = { 0x1706c, 2 },
3364*76fc060dSKathiravan Thirumoorthy 	[GCC_UNIPHY2_BCR] = { 0x17064 },
3365*76fc060dSKathiravan Thirumoorthy 	[GCC_UNIPHY2_PMA_BCR] = { 0x170a0 },
3366*76fc060dSKathiravan Thirumoorthy 	[GCC_UNIPHY2_SYS_CLK_ARES] = { 0x17068, 2 },
3367*76fc060dSKathiravan Thirumoorthy 	[GCC_UNIPHY0_XPCS_ARES] = { 0x17050, 2 },
3368*76fc060dSKathiravan Thirumoorthy 	[GCC_UNIPHY1_XLGPCS_ARES] = { 0x17060, 1 },
3369*76fc060dSKathiravan Thirumoorthy 	[GCC_UNIPHY1_XPCS_ARES] = { 0x17060, 2 },
3370*76fc060dSKathiravan Thirumoorthy 	[GCC_UNIPHY2_XLGPCS_ARES] = { 0x17070, 1 },
3371*76fc060dSKathiravan Thirumoorthy 	[GCC_UNIPHY2_XPCS_ARES] = { 0x17070, 2 },
3372*76fc060dSKathiravan Thirumoorthy 	[GCC_USB0_AUX_CLK_ARES] = { 0x2c04c, 2 },
3373*76fc060dSKathiravan Thirumoorthy 	[GCC_USB0_MASTER_CLK_ARES] = { 0x2c044, 2 },
3374*76fc060dSKathiravan Thirumoorthy 	[GCC_USB0_MOCK_UTMI_CLK_ARES] = { 0x2c050, 2 },
3375*76fc060dSKathiravan Thirumoorthy 	[GCC_USB0_PHY_BCR] = { 0x2c06c },
3376*76fc060dSKathiravan Thirumoorthy 	[GCC_USB0_PHY_CFG_AHB_CLK_ARES] = { 0x2c05c, 2 },
3377*76fc060dSKathiravan Thirumoorthy 	[GCC_USB0_PIPE_CLK_ARES] = { 0x2c054, 2 },
3378*76fc060dSKathiravan Thirumoorthy 	[GCC_USB0_SLEEP_CLK_ARES] = { 0x2c058, 2 },
3379*76fc060dSKathiravan Thirumoorthy 	[GCC_USB1_BCR] = { 0x3c000 },
3380*76fc060dSKathiravan Thirumoorthy 	[GCC_USB1_MASTER_CLK_ARES] = { 0x3c028, 2 },
3381*76fc060dSKathiravan Thirumoorthy 	[GCC_USB1_MOCK_UTMI_CLK_ARES] = { 0x3c024, 2 },
3382*76fc060dSKathiravan Thirumoorthy 	[GCC_USB1_PHY_CFG_AHB_CLK_ARES] = { 0x3c01c, 2 },
3383*76fc060dSKathiravan Thirumoorthy 	[GCC_USB1_SLEEP_CLK_ARES] = { 0x3c020, 2 },
3384*76fc060dSKathiravan Thirumoorthy 	[GCC_USB3PHY_0_PHY_BCR] = { 0x2c070 },
3385*76fc060dSKathiravan Thirumoorthy 	[GCC_USB_BCR] = { 0x2c000 },
3386*76fc060dSKathiravan Thirumoorthy };
3387*76fc060dSKathiravan Thirumoorthy 
3388*76fc060dSKathiravan Thirumoorthy static const struct of_device_id gcc_ipq9650_match_table[] = {
3389*76fc060dSKathiravan Thirumoorthy 	{ .compatible = "qcom,ipq9650-gcc" },
3390*76fc060dSKathiravan Thirumoorthy 	{ }
3391*76fc060dSKathiravan Thirumoorthy };
3392*76fc060dSKathiravan Thirumoorthy MODULE_DEVICE_TABLE(of, gcc_ipq9650_match_table);
3393*76fc060dSKathiravan Thirumoorthy 
3394*76fc060dSKathiravan Thirumoorthy static const struct regmap_config gcc_ipq9650_regmap_config = {
3395*76fc060dSKathiravan Thirumoorthy 	.reg_bits       = 32,
3396*76fc060dSKathiravan Thirumoorthy 	.reg_stride     = 4,
3397*76fc060dSKathiravan Thirumoorthy 	.val_bits       = 32,
3398*76fc060dSKathiravan Thirumoorthy 	.max_register   = 0x3f024,
3399*76fc060dSKathiravan Thirumoorthy 	.fast_io        = true,
3400*76fc060dSKathiravan Thirumoorthy };
3401*76fc060dSKathiravan Thirumoorthy 
3402*76fc060dSKathiravan Thirumoorthy static struct clk_hw *gcc_ipq9650_hws[] = {
3403*76fc060dSKathiravan Thirumoorthy 	&gpll0_div2.hw,
3404*76fc060dSKathiravan Thirumoorthy 	&gcc_xo_div4_clk_src.hw,
3405*76fc060dSKathiravan Thirumoorthy 	&gcc_qdss_dap_sync_clk_src.hw,
3406*76fc060dSKathiravan Thirumoorthy 	&gcc_eud_at_div_clk_src.hw,
3407*76fc060dSKathiravan Thirumoorthy };
3408*76fc060dSKathiravan Thirumoorthy 
3409*76fc060dSKathiravan Thirumoorthy static const struct qcom_cc_desc gcc_ipq9650_desc = {
3410*76fc060dSKathiravan Thirumoorthy 	.config = &gcc_ipq9650_regmap_config,
3411*76fc060dSKathiravan Thirumoorthy 	.clks = gcc_ipq9650_clocks,
3412*76fc060dSKathiravan Thirumoorthy 	.num_clks = ARRAY_SIZE(gcc_ipq9650_clocks),
3413*76fc060dSKathiravan Thirumoorthy 	.resets = gcc_ipq9650_resets,
3414*76fc060dSKathiravan Thirumoorthy 	.num_resets = ARRAY_SIZE(gcc_ipq9650_resets),
3415*76fc060dSKathiravan Thirumoorthy 	.clk_hws = gcc_ipq9650_hws,
3416*76fc060dSKathiravan Thirumoorthy 	.num_clk_hws = ARRAY_SIZE(gcc_ipq9650_hws),
3417*76fc060dSKathiravan Thirumoorthy };
3418*76fc060dSKathiravan Thirumoorthy 
3419*76fc060dSKathiravan Thirumoorthy static int gcc_ipq9650_probe(struct platform_device *pdev)
3420*76fc060dSKathiravan Thirumoorthy {
3421*76fc060dSKathiravan Thirumoorthy 	return qcom_cc_probe(pdev, &gcc_ipq9650_desc);
3422*76fc060dSKathiravan Thirumoorthy }
3423*76fc060dSKathiravan Thirumoorthy 
3424*76fc060dSKathiravan Thirumoorthy static struct platform_driver gcc_ipq9650_driver = {
3425*76fc060dSKathiravan Thirumoorthy 	.probe = gcc_ipq9650_probe,
3426*76fc060dSKathiravan Thirumoorthy 	.driver = {
3427*76fc060dSKathiravan Thirumoorthy 		.name   = "qcom,gcc-ipq9650",
3428*76fc060dSKathiravan Thirumoorthy 		.of_match_table = gcc_ipq9650_match_table,
3429*76fc060dSKathiravan Thirumoorthy 	},
3430*76fc060dSKathiravan Thirumoorthy };
3431*76fc060dSKathiravan Thirumoorthy 
3432*76fc060dSKathiravan Thirumoorthy static int __init gcc_ipq9650_init(void)
3433*76fc060dSKathiravan Thirumoorthy {
3434*76fc060dSKathiravan Thirumoorthy 	return platform_driver_register(&gcc_ipq9650_driver);
3435*76fc060dSKathiravan Thirumoorthy }
3436*76fc060dSKathiravan Thirumoorthy core_initcall(gcc_ipq9650_init);
3437*76fc060dSKathiravan Thirumoorthy 
3438*76fc060dSKathiravan Thirumoorthy static void __exit gcc_ipq9650_exit(void)
3439*76fc060dSKathiravan Thirumoorthy {
3440*76fc060dSKathiravan Thirumoorthy 	platform_driver_unregister(&gcc_ipq9650_driver);
3441*76fc060dSKathiravan Thirumoorthy }
3442*76fc060dSKathiravan Thirumoorthy module_exit(gcc_ipq9650_exit);
3443*76fc060dSKathiravan Thirumoorthy 
3444*76fc060dSKathiravan Thirumoorthy MODULE_DESCRIPTION("QTI GCC IPQ9650 Driver");
3445*76fc060dSKathiravan Thirumoorthy MODULE_LICENSE("GPL");
3446