xref: /linux/drivers/clk/qcom/gcc-ipq5210.c (revision 0fc8f6200d2313278fbf4539bbab74677c685531)
1*844be6e2SKathiravan Thirumoorthy // SPDX-License-Identifier: GPL-2.0-only
2*844be6e2SKathiravan Thirumoorthy /*
3*844be6e2SKathiravan Thirumoorthy  * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
4*844be6e2SKathiravan Thirumoorthy  */
5*844be6e2SKathiravan Thirumoorthy 
6*844be6e2SKathiravan Thirumoorthy #include <linux/clk-provider.h>
7*844be6e2SKathiravan Thirumoorthy #include <linux/module.h>
8*844be6e2SKathiravan Thirumoorthy #include <linux/platform_device.h>
9*844be6e2SKathiravan Thirumoorthy #include <linux/regmap.h>
10*844be6e2SKathiravan Thirumoorthy 
11*844be6e2SKathiravan Thirumoorthy #include <dt-bindings/clock/qcom,ipq5210-gcc.h>
12*844be6e2SKathiravan Thirumoorthy #include <dt-bindings/reset/qcom,ipq5210-gcc.h>
13*844be6e2SKathiravan Thirumoorthy 
14*844be6e2SKathiravan Thirumoorthy #include "clk-alpha-pll.h"
15*844be6e2SKathiravan Thirumoorthy #include "clk-branch.h"
16*844be6e2SKathiravan Thirumoorthy #include "clk-rcg.h"
17*844be6e2SKathiravan Thirumoorthy #include "clk-regmap.h"
18*844be6e2SKathiravan Thirumoorthy #include "clk-regmap-divider.h"
19*844be6e2SKathiravan Thirumoorthy #include "clk-regmap-mux.h"
20*844be6e2SKathiravan Thirumoorthy #include "clk-regmap-phy-mux.h"
21*844be6e2SKathiravan Thirumoorthy #include "reset.h"
22*844be6e2SKathiravan Thirumoorthy 
23*844be6e2SKathiravan Thirumoorthy enum {
24*844be6e2SKathiravan Thirumoorthy 	DT_XO,
25*844be6e2SKathiravan Thirumoorthy 	DT_SLEEP_CLK,
26*844be6e2SKathiravan Thirumoorthy 	DT_PCIE30_PHY0_PIPE_CLK,
27*844be6e2SKathiravan Thirumoorthy 	DT_PCIE30_PHY1_PIPE_CLK,
28*844be6e2SKathiravan Thirumoorthy 	DT_USB3_PHY0_CC_PIPE_CLK,
29*844be6e2SKathiravan Thirumoorthy 	DT_NSS_CMN_CLK,
30*844be6e2SKathiravan Thirumoorthy };
31*844be6e2SKathiravan Thirumoorthy 
32*844be6e2SKathiravan Thirumoorthy enum {
33*844be6e2SKathiravan Thirumoorthy 	P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC,
34*844be6e2SKathiravan Thirumoorthy 	P_GPLL0_OUT_AUX,
35*844be6e2SKathiravan Thirumoorthy 	P_GPLL0_OUT_MAIN,
36*844be6e2SKathiravan Thirumoorthy 	P_GPLL2_OUT_AUX,
37*844be6e2SKathiravan Thirumoorthy 	P_GPLL2_OUT_MAIN,
38*844be6e2SKathiravan Thirumoorthy 	P_GPLL4_OUT_AUX,
39*844be6e2SKathiravan Thirumoorthy 	P_GPLL4_OUT_MAIN,
40*844be6e2SKathiravan Thirumoorthy 	P_NSS_CMN_CLK,
41*844be6e2SKathiravan Thirumoorthy 	P_SLEEP_CLK,
42*844be6e2SKathiravan Thirumoorthy 	P_USB3PHY_0_PIPE,
43*844be6e2SKathiravan Thirumoorthy 	P_XO,
44*844be6e2SKathiravan Thirumoorthy };
45*844be6e2SKathiravan Thirumoorthy 
46*844be6e2SKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_xo = { .index = DT_XO };
47*844be6e2SKathiravan Thirumoorthy 
48*844be6e2SKathiravan Thirumoorthy static struct clk_alpha_pll gpll0_main = {
49*844be6e2SKathiravan Thirumoorthy 	.offset = 0x20000,
50*844be6e2SKathiravan Thirumoorthy 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO],
51*844be6e2SKathiravan Thirumoorthy 	.clkr = {
52*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0xb000,
53*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
54*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
55*844be6e2SKathiravan Thirumoorthy 			.name = "gpll0_main",
56*844be6e2SKathiravan Thirumoorthy 			.parent_data = &gcc_parent_data_xo,
57*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
58*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_alpha_pll_ops,
59*844be6e2SKathiravan Thirumoorthy 		},
60*844be6e2SKathiravan Thirumoorthy 	},
61*844be6e2SKathiravan Thirumoorthy };
62*844be6e2SKathiravan Thirumoorthy 
63*844be6e2SKathiravan Thirumoorthy static struct clk_fixed_factor gpll0_div2 = {
64*844be6e2SKathiravan Thirumoorthy 	.mult = 1,
65*844be6e2SKathiravan Thirumoorthy 	.div = 2,
66*844be6e2SKathiravan Thirumoorthy 	.hw.init = &(const struct clk_init_data) {
67*844be6e2SKathiravan Thirumoorthy 		.name = "gpll0_div2",
68*844be6e2SKathiravan Thirumoorthy 		.parent_hws = (const struct clk_hw *[]) {
69*844be6e2SKathiravan Thirumoorthy 			&gpll0_main.clkr.hw
70*844be6e2SKathiravan Thirumoorthy 		},
71*844be6e2SKathiravan Thirumoorthy 		.num_parents = 1,
72*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_fixed_factor_ops,
73*844be6e2SKathiravan Thirumoorthy 	},
74*844be6e2SKathiravan Thirumoorthy };
75*844be6e2SKathiravan Thirumoorthy 
76*844be6e2SKathiravan Thirumoorthy static struct clk_alpha_pll_postdiv gpll0 = {
77*844be6e2SKathiravan Thirumoorthy 	.offset = 0x20000,
78*844be6e2SKathiravan Thirumoorthy 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO],
79*844be6e2SKathiravan Thirumoorthy 	.width = 4,
80*844be6e2SKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
81*844be6e2SKathiravan Thirumoorthy 		.name = "gpll0",
82*844be6e2SKathiravan Thirumoorthy 		.parent_hws = (const struct clk_hw *[]) {
83*844be6e2SKathiravan Thirumoorthy 			&gpll0_main.clkr.hw
84*844be6e2SKathiravan Thirumoorthy 		},
85*844be6e2SKathiravan Thirumoorthy 		.num_parents = 1,
86*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_alpha_pll_postdiv_ro_ops,
87*844be6e2SKathiravan Thirumoorthy 	},
88*844be6e2SKathiravan Thirumoorthy };
89*844be6e2SKathiravan Thirumoorthy 
90*844be6e2SKathiravan Thirumoorthy static struct clk_alpha_pll gpll2_main = {
91*844be6e2SKathiravan Thirumoorthy 	.offset = 0x21000,
92*844be6e2SKathiravan Thirumoorthy 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO],
93*844be6e2SKathiravan Thirumoorthy 	.clkr = {
94*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0xb000,
95*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(1),
96*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
97*844be6e2SKathiravan Thirumoorthy 			.name = "gpll2_main",
98*844be6e2SKathiravan Thirumoorthy 			.parent_data = &gcc_parent_data_xo,
99*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
100*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_alpha_pll_ops,
101*844be6e2SKathiravan Thirumoorthy 		},
102*844be6e2SKathiravan Thirumoorthy 	},
103*844be6e2SKathiravan Thirumoorthy };
104*844be6e2SKathiravan Thirumoorthy 
105*844be6e2SKathiravan Thirumoorthy static const struct clk_div_table post_div_table_gpll2[] = {
106*844be6e2SKathiravan Thirumoorthy 	{ 0x1, 2 },
107*844be6e2SKathiravan Thirumoorthy 	{ }
108*844be6e2SKathiravan Thirumoorthy };
109*844be6e2SKathiravan Thirumoorthy 
110*844be6e2SKathiravan Thirumoorthy static struct clk_alpha_pll_postdiv gpll2 = {
111*844be6e2SKathiravan Thirumoorthy 	.offset = 0x21000,
112*844be6e2SKathiravan Thirumoorthy 	.post_div_table = post_div_table_gpll2,
113*844be6e2SKathiravan Thirumoorthy 	.num_post_div = ARRAY_SIZE(post_div_table_gpll2),
114*844be6e2SKathiravan Thirumoorthy 	.width = 4,
115*844be6e2SKathiravan Thirumoorthy 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO],
116*844be6e2SKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
117*844be6e2SKathiravan Thirumoorthy 		.name = "gpll2",
118*844be6e2SKathiravan Thirumoorthy 		.parent_hws = (const struct clk_hw*[]) {
119*844be6e2SKathiravan Thirumoorthy 			&gpll2_main.clkr.hw,
120*844be6e2SKathiravan Thirumoorthy 		},
121*844be6e2SKathiravan Thirumoorthy 		.num_parents = 1,
122*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_alpha_pll_postdiv_ro_ops,
123*844be6e2SKathiravan Thirumoorthy 	},
124*844be6e2SKathiravan Thirumoorthy };
125*844be6e2SKathiravan Thirumoorthy 
126*844be6e2SKathiravan Thirumoorthy static struct clk_alpha_pll gpll4_main = {
127*844be6e2SKathiravan Thirumoorthy 	.offset = 0x22000,
128*844be6e2SKathiravan Thirumoorthy 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT_EVO],
129*844be6e2SKathiravan Thirumoorthy 	.clkr = {
130*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0xb000,
131*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(2),
132*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
133*844be6e2SKathiravan Thirumoorthy 			.name = "gpll4_main",
134*844be6e2SKathiravan Thirumoorthy 			.parent_data = &gcc_parent_data_xo,
135*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
136*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_alpha_pll_ops,
137*844be6e2SKathiravan Thirumoorthy 			/*
138*844be6e2SKathiravan Thirumoorthy 			 * There are no consumers for this GPLL in kernel yet,
139*844be6e2SKathiravan Thirumoorthy 			 * (will be added soon), so the clock framework
140*844be6e2SKathiravan Thirumoorthy 			 * disables this source. But some of the clocks
141*844be6e2SKathiravan Thirumoorthy 			 * initialized by boot loaders uses this source. So we
142*844be6e2SKathiravan Thirumoorthy 			 * need to keep this clock ON. Add the
143*844be6e2SKathiravan Thirumoorthy 			 * CLK_IGNORE_UNUSED flag so the clock will not be
144*844be6e2SKathiravan Thirumoorthy 			 * disabled. Once the consumer in kernel is added, we
145*844be6e2SKathiravan Thirumoorthy 			 * can get rid of this flag.
146*844be6e2SKathiravan Thirumoorthy 			 */
147*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_IS_CRITICAL,
148*844be6e2SKathiravan Thirumoorthy 		},
149*844be6e2SKathiravan Thirumoorthy 	},
150*844be6e2SKathiravan Thirumoorthy };
151*844be6e2SKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_xo[] = {
152*844be6e2SKathiravan Thirumoorthy 	{ P_XO, 0 },
153*844be6e2SKathiravan Thirumoorthy };
154*844be6e2SKathiravan Thirumoorthy 
155*844be6e2SKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_0[] = {
156*844be6e2SKathiravan Thirumoorthy 	{ P_XO, 0 },
157*844be6e2SKathiravan Thirumoorthy 	{ P_GPLL0_OUT_MAIN, 1 },
158*844be6e2SKathiravan Thirumoorthy 	{ P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 4 },
159*844be6e2SKathiravan Thirumoorthy };
160*844be6e2SKathiravan Thirumoorthy 
161*844be6e2SKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_0[] = {
162*844be6e2SKathiravan Thirumoorthy 	{ .index = DT_XO },
163*844be6e2SKathiravan Thirumoorthy 	{ .hw = &gpll0.clkr.hw },
164*844be6e2SKathiravan Thirumoorthy 	{ .hw = &gpll0_div2.hw },
165*844be6e2SKathiravan Thirumoorthy };
166*844be6e2SKathiravan Thirumoorthy 
167*844be6e2SKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_1[] = {
168*844be6e2SKathiravan Thirumoorthy 	{ P_XO, 0 },
169*844be6e2SKathiravan Thirumoorthy 	{ P_GPLL0_OUT_MAIN, 1 },
170*844be6e2SKathiravan Thirumoorthy };
171*844be6e2SKathiravan Thirumoorthy 
172*844be6e2SKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_1[] = {
173*844be6e2SKathiravan Thirumoorthy 	{ .index = DT_XO },
174*844be6e2SKathiravan Thirumoorthy 	{ .hw = &gpll0.clkr.hw },
175*844be6e2SKathiravan Thirumoorthy };
176*844be6e2SKathiravan Thirumoorthy 
177*844be6e2SKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_2[] = {
178*844be6e2SKathiravan Thirumoorthy 	{ P_XO, 0 },
179*844be6e2SKathiravan Thirumoorthy 	{ P_GPLL0_OUT_MAIN, 1 },
180*844be6e2SKathiravan Thirumoorthy 	{ P_GPLL4_OUT_MAIN, 2 },
181*844be6e2SKathiravan Thirumoorthy };
182*844be6e2SKathiravan Thirumoorthy 
183*844be6e2SKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_2[] = {
184*844be6e2SKathiravan Thirumoorthy 	{ .index = DT_XO },
185*844be6e2SKathiravan Thirumoorthy 	{ .hw = &gpll0.clkr.hw },
186*844be6e2SKathiravan Thirumoorthy 	{ .hw = &gpll4_main.clkr.hw },
187*844be6e2SKathiravan Thirumoorthy };
188*844be6e2SKathiravan Thirumoorthy 
189*844be6e2SKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_3[] = {
190*844be6e2SKathiravan Thirumoorthy 	{ P_XO, 0 },
191*844be6e2SKathiravan Thirumoorthy };
192*844be6e2SKathiravan Thirumoorthy 
193*844be6e2SKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_3[] = {
194*844be6e2SKathiravan Thirumoorthy 	{ .index = DT_XO },
195*844be6e2SKathiravan Thirumoorthy };
196*844be6e2SKathiravan Thirumoorthy 
197*844be6e2SKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_4[] = {
198*844be6e2SKathiravan Thirumoorthy 	{ P_XO, 0 },
199*844be6e2SKathiravan Thirumoorthy 	{ P_NSS_CMN_CLK, 1 },
200*844be6e2SKathiravan Thirumoorthy 	{ P_GPLL0_OUT_AUX, 2 },
201*844be6e2SKathiravan Thirumoorthy 	{ P_GPLL2_OUT_AUX, 3 },
202*844be6e2SKathiravan Thirumoorthy };
203*844be6e2SKathiravan Thirumoorthy 
204*844be6e2SKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_4[] = {
205*844be6e2SKathiravan Thirumoorthy 	{ .index = DT_XO },
206*844be6e2SKathiravan Thirumoorthy 	{ .index = DT_NSS_CMN_CLK },
207*844be6e2SKathiravan Thirumoorthy 	{ .hw = &gpll0.clkr.hw },
208*844be6e2SKathiravan Thirumoorthy 	{ .hw = &gpll2_main.clkr.hw },
209*844be6e2SKathiravan Thirumoorthy };
210*844be6e2SKathiravan Thirumoorthy 
211*844be6e2SKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_5[] = {
212*844be6e2SKathiravan Thirumoorthy 	{ P_XO, 0 },
213*844be6e2SKathiravan Thirumoorthy 	{ P_GPLL0_OUT_MAIN, 1 },
214*844be6e2SKathiravan Thirumoorthy 	{ P_GPLL0_OUT_AUX, 2 },
215*844be6e2SKathiravan Thirumoorthy 	{ P_SLEEP_CLK, 6 },
216*844be6e2SKathiravan Thirumoorthy };
217*844be6e2SKathiravan Thirumoorthy 
218*844be6e2SKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_5[] = {
219*844be6e2SKathiravan Thirumoorthy 	{ .index = DT_XO },
220*844be6e2SKathiravan Thirumoorthy 	{ .hw = &gpll0.clkr.hw },
221*844be6e2SKathiravan Thirumoorthy 	{ .hw = &gpll0.clkr.hw },
222*844be6e2SKathiravan Thirumoorthy 	{ .index = DT_SLEEP_CLK },
223*844be6e2SKathiravan Thirumoorthy };
224*844be6e2SKathiravan Thirumoorthy 
225*844be6e2SKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_6[] = {
226*844be6e2SKathiravan Thirumoorthy 	{ P_XO, 0 },
227*844be6e2SKathiravan Thirumoorthy 	{ P_GPLL0_OUT_MAIN, 1 },
228*844be6e2SKathiravan Thirumoorthy 	{ P_GPLL2_OUT_MAIN, 2 },
229*844be6e2SKathiravan Thirumoorthy 	{ P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 4 },
230*844be6e2SKathiravan Thirumoorthy };
231*844be6e2SKathiravan Thirumoorthy 
232*844be6e2SKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_6[] = {
233*844be6e2SKathiravan Thirumoorthy 	{ .index = DT_XO },
234*844be6e2SKathiravan Thirumoorthy 	{ .hw = &gpll0.clkr.hw },
235*844be6e2SKathiravan Thirumoorthy 	{ .hw = &gpll2.clkr.hw },
236*844be6e2SKathiravan Thirumoorthy 	{ .hw = &gpll0_div2.hw },
237*844be6e2SKathiravan Thirumoorthy };
238*844be6e2SKathiravan Thirumoorthy 
239*844be6e2SKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_7[] = {
240*844be6e2SKathiravan Thirumoorthy 	{ P_XO, 0 },
241*844be6e2SKathiravan Thirumoorthy 	{ P_GPLL0_OUT_MAIN, 1 },
242*844be6e2SKathiravan Thirumoorthy 	{ P_GPLL4_OUT_MAIN, 2 },
243*844be6e2SKathiravan Thirumoorthy 	{ P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 4 },
244*844be6e2SKathiravan Thirumoorthy };
245*844be6e2SKathiravan Thirumoorthy 
246*844be6e2SKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_7[] = {
247*844be6e2SKathiravan Thirumoorthy 	{ .index = DT_XO },
248*844be6e2SKathiravan Thirumoorthy 	{ .hw = &gpll0.clkr.hw },
249*844be6e2SKathiravan Thirumoorthy 	{ .hw = &gpll4_main.clkr.hw },
250*844be6e2SKathiravan Thirumoorthy 	{ .hw = &gpll0_div2.hw },
251*844be6e2SKathiravan Thirumoorthy };
252*844be6e2SKathiravan Thirumoorthy 
253*844be6e2SKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_8[] = {
254*844be6e2SKathiravan Thirumoorthy 	{ P_XO, 0 },
255*844be6e2SKathiravan Thirumoorthy 	{ P_GPLL0_OUT_AUX, 2 },
256*844be6e2SKathiravan Thirumoorthy 	{ P_SLEEP_CLK, 6 },
257*844be6e2SKathiravan Thirumoorthy };
258*844be6e2SKathiravan Thirumoorthy 
259*844be6e2SKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_8[] = {
260*844be6e2SKathiravan Thirumoorthy 	{ .index = DT_XO },
261*844be6e2SKathiravan Thirumoorthy 	{ .hw = &gpll0.clkr.hw },
262*844be6e2SKathiravan Thirumoorthy 	{ .index = DT_SLEEP_CLK },
263*844be6e2SKathiravan Thirumoorthy };
264*844be6e2SKathiravan Thirumoorthy 
265*844be6e2SKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_9[] = {
266*844be6e2SKathiravan Thirumoorthy 	{ P_XO, 0 },
267*844be6e2SKathiravan Thirumoorthy 	{ P_GPLL4_OUT_AUX, 1 },
268*844be6e2SKathiravan Thirumoorthy 	{ P_GPLL0_OUT_MAIN, 3 },
269*844be6e2SKathiravan Thirumoorthy 	{ P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 4 },
270*844be6e2SKathiravan Thirumoorthy };
271*844be6e2SKathiravan Thirumoorthy 
272*844be6e2SKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_9[] = {
273*844be6e2SKathiravan Thirumoorthy 	{ .index = DT_XO },
274*844be6e2SKathiravan Thirumoorthy 	{ .hw = &gpll4_main.clkr.hw },
275*844be6e2SKathiravan Thirumoorthy 	{ .hw = &gpll0.clkr.hw },
276*844be6e2SKathiravan Thirumoorthy 	{ .hw = &gpll0_div2.hw },
277*844be6e2SKathiravan Thirumoorthy };
278*844be6e2SKathiravan Thirumoorthy 
279*844be6e2SKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_10[] = {
280*844be6e2SKathiravan Thirumoorthy 	{ P_XO, 0 },
281*844be6e2SKathiravan Thirumoorthy 	{ P_GPLL4_OUT_MAIN, 1 },
282*844be6e2SKathiravan Thirumoorthy 	{ P_GPLL0_OUT_AUX, 2 },
283*844be6e2SKathiravan Thirumoorthy 	{ P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 4 },
284*844be6e2SKathiravan Thirumoorthy };
285*844be6e2SKathiravan Thirumoorthy 
286*844be6e2SKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_10[] = {
287*844be6e2SKathiravan Thirumoorthy 	{ .index = DT_XO },
288*844be6e2SKathiravan Thirumoorthy 	{ .hw = &gpll4_main.clkr.hw },
289*844be6e2SKathiravan Thirumoorthy 	{ .hw = &gpll0.clkr.hw },
290*844be6e2SKathiravan Thirumoorthy 	{ .hw = &gpll0_div2.hw },
291*844be6e2SKathiravan Thirumoorthy };
292*844be6e2SKathiravan Thirumoorthy 
293*844be6e2SKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_11[] = {
294*844be6e2SKathiravan Thirumoorthy 	{ P_XO, 0 },
295*844be6e2SKathiravan Thirumoorthy 	{ P_GPLL4_OUT_MAIN, 1 },
296*844be6e2SKathiravan Thirumoorthy 	{ P_GPLL0_OUT_AUX, 2 },
297*844be6e2SKathiravan Thirumoorthy 	{ P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 4 },
298*844be6e2SKathiravan Thirumoorthy };
299*844be6e2SKathiravan Thirumoorthy 
300*844be6e2SKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_11[] = {
301*844be6e2SKathiravan Thirumoorthy 	{ .index = DT_XO },
302*844be6e2SKathiravan Thirumoorthy 	{ .hw = &gpll4_main.clkr.hw },
303*844be6e2SKathiravan Thirumoorthy 	{ .hw = &gpll0.clkr.hw },
304*844be6e2SKathiravan Thirumoorthy 	{ .hw = &gpll0_div2.hw },
305*844be6e2SKathiravan Thirumoorthy };
306*844be6e2SKathiravan Thirumoorthy 
307*844be6e2SKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_12[] = {
308*844be6e2SKathiravan Thirumoorthy 	{ P_XO, 0 },
309*844be6e2SKathiravan Thirumoorthy 	{ P_GPLL0_OUT_MAIN, 1 },
310*844be6e2SKathiravan Thirumoorthy 	{ P_GPLL2_OUT_AUX, 2 },
311*844be6e2SKathiravan Thirumoorthy };
312*844be6e2SKathiravan Thirumoorthy 
313*844be6e2SKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_12[] = {
314*844be6e2SKathiravan Thirumoorthy 	{ .index = DT_XO },
315*844be6e2SKathiravan Thirumoorthy 	{ .hw = &gpll0.clkr.hw },
316*844be6e2SKathiravan Thirumoorthy 	{ .hw = &gpll2_main.clkr.hw },
317*844be6e2SKathiravan Thirumoorthy };
318*844be6e2SKathiravan Thirumoorthy 
319*844be6e2SKathiravan Thirumoorthy static const struct parent_map gcc_parent_map_13[] = {
320*844be6e2SKathiravan Thirumoorthy 	{ P_SLEEP_CLK, 6 },
321*844be6e2SKathiravan Thirumoorthy };
322*844be6e2SKathiravan Thirumoorthy 
323*844be6e2SKathiravan Thirumoorthy static const struct clk_parent_data gcc_parent_data_13[] = {
324*844be6e2SKathiravan Thirumoorthy 	{ .index = DT_SLEEP_CLK },
325*844be6e2SKathiravan Thirumoorthy };
326*844be6e2SKathiravan Thirumoorthy 
327*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_adss_pwm_clk_src[] = {
328*844be6e2SKathiravan Thirumoorthy 	F(24000000, P_XO, 1, 0, 0),
329*844be6e2SKathiravan Thirumoorthy 	F(100000000, P_GPLL0_OUT_MAIN, 8, 0, 0),
330*844be6e2SKathiravan Thirumoorthy 	{ }
331*844be6e2SKathiravan Thirumoorthy };
332*844be6e2SKathiravan Thirumoorthy 
333*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_adss_pwm_clk_src = {
334*844be6e2SKathiravan Thirumoorthy 	.cmd_rcgr = 0x1c004,
335*844be6e2SKathiravan Thirumoorthy 	.mnd_width = 0,
336*844be6e2SKathiravan Thirumoorthy 	.hid_width = 5,
337*844be6e2SKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_1,
338*844be6e2SKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_adss_pwm_clk_src,
339*844be6e2SKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
340*844be6e2SKathiravan Thirumoorthy 		.name = "gcc_adss_pwm_clk_src",
341*844be6e2SKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_1,
342*844be6e2SKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_1),
343*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
344*844be6e2SKathiravan Thirumoorthy 	},
345*844be6e2SKathiravan Thirumoorthy };
346*844be6e2SKathiravan Thirumoorthy 
347*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_nss_ts_clk_src[] = {
348*844be6e2SKathiravan Thirumoorthy 	F(24000000, P_XO, 1, 0, 0),
349*844be6e2SKathiravan Thirumoorthy 	{ }
350*844be6e2SKathiravan Thirumoorthy };
351*844be6e2SKathiravan Thirumoorthy 
352*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_nss_ts_clk_src = {
353*844be6e2SKathiravan Thirumoorthy 	.cmd_rcgr = 0x17088,
354*844be6e2SKathiravan Thirumoorthy 	.mnd_width = 0,
355*844be6e2SKathiravan Thirumoorthy 	.hid_width = 5,
356*844be6e2SKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_3,
357*844be6e2SKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_nss_ts_clk_src,
358*844be6e2SKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
359*844be6e2SKathiravan Thirumoorthy 		.name = "gcc_nss_ts_clk_src",
360*844be6e2SKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_3,
361*844be6e2SKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_3),
362*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
363*844be6e2SKathiravan Thirumoorthy 	},
364*844be6e2SKathiravan Thirumoorthy };
365*844be6e2SKathiravan Thirumoorthy 
366*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_system_noc_bfdcd_clk_src[] = {
367*844be6e2SKathiravan Thirumoorthy 	F(24000000, P_XO, 1, 0, 0),
368*844be6e2SKathiravan Thirumoorthy 	F(133333333, P_GPLL0_OUT_MAIN, 6, 0, 0),
369*844be6e2SKathiravan Thirumoorthy 	F(200000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
370*844be6e2SKathiravan Thirumoorthy 	F(266666667, P_GPLL4_OUT_MAIN, 4.5, 0, 0),
371*844be6e2SKathiravan Thirumoorthy 	{ }
372*844be6e2SKathiravan Thirumoorthy };
373*844be6e2SKathiravan Thirumoorthy 
374*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_system_noc_bfdcd_clk_src = {
375*844be6e2SKathiravan Thirumoorthy 	.cmd_rcgr = 0x2e004,
376*844be6e2SKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_system_noc_bfdcd_clk_src,
377*844be6e2SKathiravan Thirumoorthy 	.hid_width = 5,
378*844be6e2SKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_7,
379*844be6e2SKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
380*844be6e2SKathiravan Thirumoorthy 		.name = "gcc_system_noc_bfdcd_clk_src",
381*844be6e2SKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_7,
382*844be6e2SKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_7),
383*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
384*844be6e2SKathiravan Thirumoorthy 	},
385*844be6e2SKathiravan Thirumoorthy };
386*844be6e2SKathiravan Thirumoorthy 
387*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_nssnoc_memnoc_bfdcd_clk_src[] = {
388*844be6e2SKathiravan Thirumoorthy 	F(429000000, P_NSS_CMN_CLK, 1, 0, 0),
389*844be6e2SKathiravan Thirumoorthy 	{ }
390*844be6e2SKathiravan Thirumoorthy };
391*844be6e2SKathiravan Thirumoorthy 
392*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_nssnoc_memnoc_bfdcd_clk_src = {
393*844be6e2SKathiravan Thirumoorthy 	.cmd_rcgr = 0x17004,
394*844be6e2SKathiravan Thirumoorthy 	.mnd_width = 0,
395*844be6e2SKathiravan Thirumoorthy 	.hid_width = 5,
396*844be6e2SKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_4,
397*844be6e2SKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_nssnoc_memnoc_bfdcd_clk_src,
398*844be6e2SKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
399*844be6e2SKathiravan Thirumoorthy 		.name = "gcc_nssnoc_memnoc_bfdcd_clk_src",
400*844be6e2SKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_4,
401*844be6e2SKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_4),
402*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
403*844be6e2SKathiravan Thirumoorthy 	},
404*844be6e2SKathiravan Thirumoorthy };
405*844be6e2SKathiravan Thirumoorthy 
406*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_pcie0_axi_m_clk_src[] = {
407*844be6e2SKathiravan Thirumoorthy 	F(200000000, P_GPLL4_OUT_MAIN, 6, 0, 0),
408*844be6e2SKathiravan Thirumoorthy 	{ }
409*844be6e2SKathiravan Thirumoorthy };
410*844be6e2SKathiravan Thirumoorthy 
411*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_pcie0_axi_m_clk_src = {
412*844be6e2SKathiravan Thirumoorthy 	.cmd_rcgr = 0x28018,
413*844be6e2SKathiravan Thirumoorthy 	.mnd_width = 0,
414*844be6e2SKathiravan Thirumoorthy 	.hid_width = 5,
415*844be6e2SKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_2,
416*844be6e2SKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_pcie0_axi_m_clk_src,
417*844be6e2SKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
418*844be6e2SKathiravan Thirumoorthy 		.name = "gcc_pcie0_axi_m_clk_src",
419*844be6e2SKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_2,
420*844be6e2SKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
421*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
422*844be6e2SKathiravan Thirumoorthy 	},
423*844be6e2SKathiravan Thirumoorthy };
424*844be6e2SKathiravan Thirumoorthy 
425*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_pcie0_axi_s_clk_src = {
426*844be6e2SKathiravan Thirumoorthy 	.cmd_rcgr = 0x28020,
427*844be6e2SKathiravan Thirumoorthy 	.mnd_width = 0,
428*844be6e2SKathiravan Thirumoorthy 	.hid_width = 5,
429*844be6e2SKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_2,
430*844be6e2SKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_pcie0_axi_m_clk_src,
431*844be6e2SKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
432*844be6e2SKathiravan Thirumoorthy 		.name = "gcc_pcie0_axi_s_clk_src",
433*844be6e2SKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_2,
434*844be6e2SKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
435*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
436*844be6e2SKathiravan Thirumoorthy 	},
437*844be6e2SKathiravan Thirumoorthy };
438*844be6e2SKathiravan Thirumoorthy 
439*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_pcie0_rchng_clk_src = {
440*844be6e2SKathiravan Thirumoorthy 	.cmd_rcgr = 0x28028,
441*844be6e2SKathiravan Thirumoorthy 	.mnd_width = 0,
442*844be6e2SKathiravan Thirumoorthy 	.hid_width = 5,
443*844be6e2SKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_1,
444*844be6e2SKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_adss_pwm_clk_src,
445*844be6e2SKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
446*844be6e2SKathiravan Thirumoorthy 		.name = "gcc_pcie0_rchng_clk_src",
447*844be6e2SKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_1,
448*844be6e2SKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_1),
449*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
450*844be6e2SKathiravan Thirumoorthy 	},
451*844be6e2SKathiravan Thirumoorthy };
452*844be6e2SKathiravan Thirumoorthy 
453*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_pcie1_axi_m_clk_src[] = {
454*844be6e2SKathiravan Thirumoorthy 	F(266666667, P_GPLL4_OUT_MAIN, 4.5, 0, 0),
455*844be6e2SKathiravan Thirumoorthy 	{ }
456*844be6e2SKathiravan Thirumoorthy };
457*844be6e2SKathiravan Thirumoorthy 
458*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_pcie1_axi_m_clk_src = {
459*844be6e2SKathiravan Thirumoorthy 	.cmd_rcgr = 0x29018,
460*844be6e2SKathiravan Thirumoorthy 	.mnd_width = 0,
461*844be6e2SKathiravan Thirumoorthy 	.hid_width = 5,
462*844be6e2SKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_2,
463*844be6e2SKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_pcie1_axi_m_clk_src,
464*844be6e2SKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
465*844be6e2SKathiravan Thirumoorthy 		.name = "gcc_pcie1_axi_m_clk_src",
466*844be6e2SKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_2,
467*844be6e2SKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
468*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
469*844be6e2SKathiravan Thirumoorthy 	},
470*844be6e2SKathiravan Thirumoorthy };
471*844be6e2SKathiravan Thirumoorthy 
472*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_pcie1_axi_s_clk_src = {
473*844be6e2SKathiravan Thirumoorthy 	.cmd_rcgr = 0x29020,
474*844be6e2SKathiravan Thirumoorthy 	.mnd_width = 0,
475*844be6e2SKathiravan Thirumoorthy 	.hid_width = 5,
476*844be6e2SKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_2,
477*844be6e2SKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_pcie0_axi_m_clk_src,
478*844be6e2SKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
479*844be6e2SKathiravan Thirumoorthy 		.name = "gcc_pcie1_axi_s_clk_src",
480*844be6e2SKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_2,
481*844be6e2SKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
482*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
483*844be6e2SKathiravan Thirumoorthy 	},
484*844be6e2SKathiravan Thirumoorthy };
485*844be6e2SKathiravan Thirumoorthy 
486*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_pcie1_rchng_clk_src = {
487*844be6e2SKathiravan Thirumoorthy 	.cmd_rcgr = 0x29028,
488*844be6e2SKathiravan Thirumoorthy 	.mnd_width = 0,
489*844be6e2SKathiravan Thirumoorthy 	.hid_width = 5,
490*844be6e2SKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_1,
491*844be6e2SKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_adss_pwm_clk_src,
492*844be6e2SKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
493*844be6e2SKathiravan Thirumoorthy 		.name = "gcc_pcie1_rchng_clk_src",
494*844be6e2SKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_1,
495*844be6e2SKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_1),
496*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
497*844be6e2SKathiravan Thirumoorthy 	},
498*844be6e2SKathiravan Thirumoorthy };
499*844be6e2SKathiravan Thirumoorthy 
500*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_pcie_aux_clk_src[] = {
501*844be6e2SKathiravan Thirumoorthy 	F(20000000, P_GPLL0_OUT_MAIN, 10, 1, 4),
502*844be6e2SKathiravan Thirumoorthy 	{ }
503*844be6e2SKathiravan Thirumoorthy };
504*844be6e2SKathiravan Thirumoorthy 
505*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_pcie_aux_clk_src = {
506*844be6e2SKathiravan Thirumoorthy 	.cmd_rcgr = 0x28004,
507*844be6e2SKathiravan Thirumoorthy 	.mnd_width = 16,
508*844be6e2SKathiravan Thirumoorthy 	.hid_width = 5,
509*844be6e2SKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_5,
510*844be6e2SKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_pcie_aux_clk_src,
511*844be6e2SKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
512*844be6e2SKathiravan Thirumoorthy 		.name = "gcc_pcie_aux_clk_src",
513*844be6e2SKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_5,
514*844be6e2SKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_5),
515*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
516*844be6e2SKathiravan Thirumoorthy 	},
517*844be6e2SKathiravan Thirumoorthy };
518*844be6e2SKathiravan Thirumoorthy 
519*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_qupv3_wrap_se0_clk_src[] = {
520*844be6e2SKathiravan Thirumoorthy 	F(960000, P_XO, 10, 2, 5),
521*844be6e2SKathiravan Thirumoorthy 	F(3686636, P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 1, 2, 217),
522*844be6e2SKathiravan Thirumoorthy 	F(4800000, P_XO, 5, 0, 0),
523*844be6e2SKathiravan Thirumoorthy 	F(7373272, P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 1, 4, 217),
524*844be6e2SKathiravan Thirumoorthy 	F(9600000, P_XO, 2.5, 0, 0),
525*844be6e2SKathiravan Thirumoorthy 	F(14746544, P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 1, 8, 217),
526*844be6e2SKathiravan Thirumoorthy 	F(16000000, P_GPLL0_OUT_MAIN, 10, 1, 5),
527*844be6e2SKathiravan Thirumoorthy 	F(24000000, P_XO, 1, 0, 0),
528*844be6e2SKathiravan Thirumoorthy 	F(25000000, P_GPLL0_OUT_MAIN, 16, 1, 2),
529*844be6e2SKathiravan Thirumoorthy 	F(32000000, P_GPLL0_OUT_MAIN, 1, 1, 25),
530*844be6e2SKathiravan Thirumoorthy 	F(40000000, P_GPLL0_OUT_MAIN, 1, 1, 20),
531*844be6e2SKathiravan Thirumoorthy 	F(46400000, P_GPLL0_OUT_MAIN, 2, 29, 250),
532*844be6e2SKathiravan Thirumoorthy 	F(48000000, P_GPLL0_OUT_MAIN, 1, 3, 50),
533*844be6e2SKathiravan Thirumoorthy 	F(50000000, P_GPLL0_OUT_MAIN, 16, 0, 0),
534*844be6e2SKathiravan Thirumoorthy 	F(51200000, P_GPLL0_OUT_MAIN, 1, 8, 125),
535*844be6e2SKathiravan Thirumoorthy 	F(56000000, P_GPLL0_OUT_MAIN, 1, 7, 100),
536*844be6e2SKathiravan Thirumoorthy 	F(58986175, P_GPLL0_OUT_MAIN, 1, 16, 217),
537*844be6e2SKathiravan Thirumoorthy 	F(60000000, P_GPLL0_OUT_MAIN, 1, 3, 40),
538*844be6e2SKathiravan Thirumoorthy 	F(64000000, P_GPLL0_OUT_MAIN, 12.5, 0, 0),
539*844be6e2SKathiravan Thirumoorthy 	{ }
540*844be6e2SKathiravan Thirumoorthy };
541*844be6e2SKathiravan Thirumoorthy 
542*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_qupv3_wrap_se0_clk_src = {
543*844be6e2SKathiravan Thirumoorthy 	.cmd_rcgr = 0x4004,
544*844be6e2SKathiravan Thirumoorthy 	.mnd_width = 8,
545*844be6e2SKathiravan Thirumoorthy 	.hid_width = 5,
546*844be6e2SKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_0,
547*844be6e2SKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_qupv3_wrap_se0_clk_src,
548*844be6e2SKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
549*844be6e2SKathiravan Thirumoorthy 		.name = "gcc_qupv3_wrap_se0_clk_src",
550*844be6e2SKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_0,
551*844be6e2SKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
552*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
553*844be6e2SKathiravan Thirumoorthy 	},
554*844be6e2SKathiravan Thirumoorthy };
555*844be6e2SKathiravan Thirumoorthy 
556*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_qupv3_wrap_se1_clk_src = {
557*844be6e2SKathiravan Thirumoorthy 	.cmd_rcgr = 0x5004,
558*844be6e2SKathiravan Thirumoorthy 	.mnd_width = 8,
559*844be6e2SKathiravan Thirumoorthy 	.hid_width = 5,
560*844be6e2SKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_0,
561*844be6e2SKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_qupv3_wrap_se0_clk_src,
562*844be6e2SKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
563*844be6e2SKathiravan Thirumoorthy 		.name = "gcc_qupv3_wrap_se1_clk_src",
564*844be6e2SKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_0,
565*844be6e2SKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
566*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
567*844be6e2SKathiravan Thirumoorthy 	},
568*844be6e2SKathiravan Thirumoorthy };
569*844be6e2SKathiravan Thirumoorthy 
570*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_qupv3_wrap_se2_clk_src = {
571*844be6e2SKathiravan Thirumoorthy 	.cmd_rcgr = 0x2018,
572*844be6e2SKathiravan Thirumoorthy 	.mnd_width = 8,
573*844be6e2SKathiravan Thirumoorthy 	.hid_width = 5,
574*844be6e2SKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_0,
575*844be6e2SKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_qupv3_wrap_se0_clk_src,
576*844be6e2SKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
577*844be6e2SKathiravan Thirumoorthy 		.name = "gcc_qupv3_wrap_se2_clk_src",
578*844be6e2SKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_0,
579*844be6e2SKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
580*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
581*844be6e2SKathiravan Thirumoorthy 	},
582*844be6e2SKathiravan Thirumoorthy };
583*844be6e2SKathiravan Thirumoorthy 
584*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_qupv3_wrap_se3_clk_src = {
585*844be6e2SKathiravan Thirumoorthy 	.cmd_rcgr = 0x2034,
586*844be6e2SKathiravan Thirumoorthy 	.mnd_width = 8,
587*844be6e2SKathiravan Thirumoorthy 	.hid_width = 5,
588*844be6e2SKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_0,
589*844be6e2SKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_qupv3_wrap_se0_clk_src,
590*844be6e2SKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
591*844be6e2SKathiravan Thirumoorthy 		.name = "gcc_qupv3_wrap_se3_clk_src",
592*844be6e2SKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_0,
593*844be6e2SKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
594*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
595*844be6e2SKathiravan Thirumoorthy 	},
596*844be6e2SKathiravan Thirumoorthy };
597*844be6e2SKathiravan Thirumoorthy 
598*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_qupv3_wrap_se4_clk_src = {
599*844be6e2SKathiravan Thirumoorthy 	.cmd_rcgr = 0x3018,
600*844be6e2SKathiravan Thirumoorthy 	.mnd_width = 8,
601*844be6e2SKathiravan Thirumoorthy 	.hid_width = 5,
602*844be6e2SKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_0,
603*844be6e2SKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_qupv3_wrap_se0_clk_src,
604*844be6e2SKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
605*844be6e2SKathiravan Thirumoorthy 		.name = "gcc_qupv3_wrap_se4_clk_src",
606*844be6e2SKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_0,
607*844be6e2SKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
608*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
609*844be6e2SKathiravan Thirumoorthy 	},
610*844be6e2SKathiravan Thirumoorthy };
611*844be6e2SKathiravan Thirumoorthy 
612*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_qupv3_wrap_se5_clk_src = {
613*844be6e2SKathiravan Thirumoorthy 	.cmd_rcgr = 0x3034,
614*844be6e2SKathiravan Thirumoorthy 	.mnd_width = 8,
615*844be6e2SKathiravan Thirumoorthy 	.hid_width = 5,
616*844be6e2SKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_0,
617*844be6e2SKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_qupv3_wrap_se0_clk_src,
618*844be6e2SKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
619*844be6e2SKathiravan Thirumoorthy 		.name = "gcc_qupv3_wrap_se5_clk_src",
620*844be6e2SKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_0,
621*844be6e2SKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
622*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
623*844be6e2SKathiravan Thirumoorthy 	},
624*844be6e2SKathiravan Thirumoorthy };
625*844be6e2SKathiravan Thirumoorthy 
626*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_sdcc1_apps_clk_src[] = {
627*844be6e2SKathiravan Thirumoorthy 	F(144000, P_XO, 16, 12, 125),
628*844be6e2SKathiravan Thirumoorthy 	F(400000, P_XO, 12, 1, 5),
629*844be6e2SKathiravan Thirumoorthy 	F(24000000, P_GPLL2_OUT_MAIN, 12, 1, 2),
630*844be6e2SKathiravan Thirumoorthy 	F(48000000, P_GPLL2_OUT_MAIN, 12, 0, 0),
631*844be6e2SKathiravan Thirumoorthy 	F(96000000, P_GPLL2_OUT_MAIN, 6, 0, 0),
632*844be6e2SKathiravan Thirumoorthy 	F(177777778, P_GPLL0_OUT_MAIN, 4.5, 0, 0),
633*844be6e2SKathiravan Thirumoorthy 	F(192000000, P_GPLL2_OUT_MAIN, 3, 0, 0),
634*844be6e2SKathiravan Thirumoorthy 	F(200000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
635*844be6e2SKathiravan Thirumoorthy 	{ }
636*844be6e2SKathiravan Thirumoorthy };
637*844be6e2SKathiravan Thirumoorthy 
638*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_sdcc1_apps_clk_src = {
639*844be6e2SKathiravan Thirumoorthy 	.cmd_rcgr = 0x33004,
640*844be6e2SKathiravan Thirumoorthy 	.mnd_width = 8,
641*844be6e2SKathiravan Thirumoorthy 	.hid_width = 5,
642*844be6e2SKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_6,
643*844be6e2SKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_sdcc1_apps_clk_src,
644*844be6e2SKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
645*844be6e2SKathiravan Thirumoorthy 		.name = "gcc_sdcc1_apps_clk_src",
646*844be6e2SKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_6,
647*844be6e2SKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_6),
648*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_rcg2_floor_ops,
649*844be6e2SKathiravan Thirumoorthy 	},
650*844be6e2SKathiravan Thirumoorthy };
651*844be6e2SKathiravan Thirumoorthy 
652*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_sdcc1_ice_core_clk_src[] = {
653*844be6e2SKathiravan Thirumoorthy 	F(300000000, P_GPLL4_OUT_MAIN, 4, 0, 0),
654*844be6e2SKathiravan Thirumoorthy 	{ }
655*844be6e2SKathiravan Thirumoorthy };
656*844be6e2SKathiravan Thirumoorthy 
657*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_sdcc1_ice_core_clk_src = {
658*844be6e2SKathiravan Thirumoorthy 	.cmd_rcgr = 0x33018,
659*844be6e2SKathiravan Thirumoorthy 	.mnd_width = 8,
660*844be6e2SKathiravan Thirumoorthy 	.hid_width = 5,
661*844be6e2SKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_7,
662*844be6e2SKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_sdcc1_ice_core_clk_src,
663*844be6e2SKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
664*844be6e2SKathiravan Thirumoorthy 		.name = "gcc_sdcc1_ice_core_clk_src",
665*844be6e2SKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_7,
666*844be6e2SKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_7),
667*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_rcg2_floor_ops,
668*844be6e2SKathiravan Thirumoorthy 	},
669*844be6e2SKathiravan Thirumoorthy };
670*844be6e2SKathiravan Thirumoorthy 
671*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_uniphy_sys_clk_src = {
672*844be6e2SKathiravan Thirumoorthy 	.cmd_rcgr = 0x17090,
673*844be6e2SKathiravan Thirumoorthy 	.mnd_width = 0,
674*844be6e2SKathiravan Thirumoorthy 	.hid_width = 5,
675*844be6e2SKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_3,
676*844be6e2SKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_nss_ts_clk_src,
677*844be6e2SKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
678*844be6e2SKathiravan Thirumoorthy 		.name = "gcc_uniphy_sys_clk_src",
679*844be6e2SKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_3,
680*844be6e2SKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_3),
681*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
682*844be6e2SKathiravan Thirumoorthy 	},
683*844be6e2SKathiravan Thirumoorthy };
684*844be6e2SKathiravan Thirumoorthy 
685*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_usb0_aux_clk_src = {
686*844be6e2SKathiravan Thirumoorthy 	.cmd_rcgr = 0x2c018,
687*844be6e2SKathiravan Thirumoorthy 	.mnd_width = 16,
688*844be6e2SKathiravan Thirumoorthy 	.hid_width = 5,
689*844be6e2SKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_8,
690*844be6e2SKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_nss_ts_clk_src,
691*844be6e2SKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
692*844be6e2SKathiravan Thirumoorthy 		.name = "gcc_usb0_aux_clk_src",
693*844be6e2SKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_8,
694*844be6e2SKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_8),
695*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
696*844be6e2SKathiravan Thirumoorthy 	},
697*844be6e2SKathiravan Thirumoorthy };
698*844be6e2SKathiravan Thirumoorthy 
699*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_usb0_master_clk_src[] = {
700*844be6e2SKathiravan Thirumoorthy 	F(200000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
701*844be6e2SKathiravan Thirumoorthy 	{ }
702*844be6e2SKathiravan Thirumoorthy };
703*844be6e2SKathiravan Thirumoorthy 
704*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_usb0_master_clk_src = {
705*844be6e2SKathiravan Thirumoorthy 	.cmd_rcgr = 0x2c004,
706*844be6e2SKathiravan Thirumoorthy 	.mnd_width = 8,
707*844be6e2SKathiravan Thirumoorthy 	.hid_width = 5,
708*844be6e2SKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_0,
709*844be6e2SKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_usb0_master_clk_src,
710*844be6e2SKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
711*844be6e2SKathiravan Thirumoorthy 		.name = "gcc_usb0_master_clk_src",
712*844be6e2SKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_0,
713*844be6e2SKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
714*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
715*844be6e2SKathiravan Thirumoorthy 	},
716*844be6e2SKathiravan Thirumoorthy };
717*844be6e2SKathiravan Thirumoorthy 
718*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_usb0_mock_utmi_clk_src[] = {
719*844be6e2SKathiravan Thirumoorthy 	F(60000000, P_GPLL4_OUT_AUX, 10, 1, 2),
720*844be6e2SKathiravan Thirumoorthy 	{ }
721*844be6e2SKathiravan Thirumoorthy };
722*844be6e2SKathiravan Thirumoorthy 
723*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_usb0_mock_utmi_clk_src = {
724*844be6e2SKathiravan Thirumoorthy 	.cmd_rcgr = 0x2c02c,
725*844be6e2SKathiravan Thirumoorthy 	.mnd_width = 8,
726*844be6e2SKathiravan Thirumoorthy 	.hid_width = 5,
727*844be6e2SKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_9,
728*844be6e2SKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_usb0_mock_utmi_clk_src,
729*844be6e2SKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
730*844be6e2SKathiravan Thirumoorthy 		.name = "gcc_usb0_mock_utmi_clk_src",
731*844be6e2SKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_9,
732*844be6e2SKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_9),
733*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
734*844be6e2SKathiravan Thirumoorthy 	},
735*844be6e2SKathiravan Thirumoorthy };
736*844be6e2SKathiravan Thirumoorthy 
737*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_qdss_at_clk_src[] = {
738*844be6e2SKathiravan Thirumoorthy 	F(240000000, P_GPLL4_OUT_MAIN, 5, 0, 0),
739*844be6e2SKathiravan Thirumoorthy 	{ }
740*844be6e2SKathiravan Thirumoorthy };
741*844be6e2SKathiravan Thirumoorthy 
742*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_qdss_at_clk_src = {
743*844be6e2SKathiravan Thirumoorthy 	.cmd_rcgr = 0x2d004,
744*844be6e2SKathiravan Thirumoorthy 	.mnd_width = 0,
745*844be6e2SKathiravan Thirumoorthy 	.hid_width = 5,
746*844be6e2SKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_10,
747*844be6e2SKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_qdss_at_clk_src,
748*844be6e2SKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
749*844be6e2SKathiravan Thirumoorthy 		.name = "gcc_qdss_at_clk_src",
750*844be6e2SKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_10,
751*844be6e2SKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_10),
752*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
753*844be6e2SKathiravan Thirumoorthy 	},
754*844be6e2SKathiravan Thirumoorthy };
755*844be6e2SKathiravan Thirumoorthy 
756*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_qdss_tsctr_clk_src[] = {
757*844be6e2SKathiravan Thirumoorthy 	F(600000000, P_GPLL4_OUT_MAIN, 2, 0, 0),
758*844be6e2SKathiravan Thirumoorthy 	{ }
759*844be6e2SKathiravan Thirumoorthy };
760*844be6e2SKathiravan Thirumoorthy 
761*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_qdss_tsctr_clk_src = {
762*844be6e2SKathiravan Thirumoorthy 	.cmd_rcgr = 0x2d01c,
763*844be6e2SKathiravan Thirumoorthy 	.mnd_width = 0,
764*844be6e2SKathiravan Thirumoorthy 	.hid_width = 5,
765*844be6e2SKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_10,
766*844be6e2SKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_qdss_tsctr_clk_src,
767*844be6e2SKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
768*844be6e2SKathiravan Thirumoorthy 		.name = "gcc_qdss_tsctr_clk_src",
769*844be6e2SKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_10,
770*844be6e2SKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_10),
771*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
772*844be6e2SKathiravan Thirumoorthy 	},
773*844be6e2SKathiravan Thirumoorthy };
774*844be6e2SKathiravan Thirumoorthy 
775*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_pcnoc_bfdcd_clk_src[] = {
776*844be6e2SKathiravan Thirumoorthy 	F(24000000, P_XO, 1, 0, 0),
777*844be6e2SKathiravan Thirumoorthy 	F(50000000, P_GPLL0_OUT_MAIN, 16, 0, 0),
778*844be6e2SKathiravan Thirumoorthy 	F(100000000, P_GPLL0_OUT_MAIN, 8, 0, 0),
779*844be6e2SKathiravan Thirumoorthy 	{ }
780*844be6e2SKathiravan Thirumoorthy };
781*844be6e2SKathiravan Thirumoorthy 
782*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_pcnoc_bfdcd_clk_src = {
783*844be6e2SKathiravan Thirumoorthy 	.cmd_rcgr = 0x31004,
784*844be6e2SKathiravan Thirumoorthy 	.mnd_width = 0,
785*844be6e2SKathiravan Thirumoorthy 	.hid_width = 5,
786*844be6e2SKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_0,
787*844be6e2SKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_pcnoc_bfdcd_clk_src,
788*844be6e2SKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
789*844be6e2SKathiravan Thirumoorthy 		.name = "gcc_pcnoc_bfdcd_clk_src",
790*844be6e2SKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_0,
791*844be6e2SKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
792*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
793*844be6e2SKathiravan Thirumoorthy 		/*
794*844be6e2SKathiravan Thirumoorthy 		 * There are no consumers for this source in kernel yet,
795*844be6e2SKathiravan Thirumoorthy 		 * (will be added soon), so the clock framework
796*844be6e2SKathiravan Thirumoorthy 		 * disables this source. But some of the clocks
797*844be6e2SKathiravan Thirumoorthy 		 * initialized by boot loaders uses this source. So we
798*844be6e2SKathiravan Thirumoorthy 		 * need to keep this clock ON. Add the
799*844be6e2SKathiravan Thirumoorthy 		 * CLK_IGNORE_UNUSED flag so the clock will not be
800*844be6e2SKathiravan Thirumoorthy 		 * disabled. Once the consumer in kernel is added, we
801*844be6e2SKathiravan Thirumoorthy 		 * can get rid of this flag.
802*844be6e2SKathiravan Thirumoorthy 		 */
803*844be6e2SKathiravan Thirumoorthy 		.flags = CLK_IS_CRITICAL,
804*844be6e2SKathiravan Thirumoorthy 	},
805*844be6e2SKathiravan Thirumoorthy };
806*844be6e2SKathiravan Thirumoorthy 
807*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_qpic_io_macro_clk_src[] = {
808*844be6e2SKathiravan Thirumoorthy 	F(24000000, P_XO, 1, 0, 0),
809*844be6e2SKathiravan Thirumoorthy 	F(100000000, P_GPLL0_OUT_MAIN, 8, 0, 0),
810*844be6e2SKathiravan Thirumoorthy 	F(200000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
811*844be6e2SKathiravan Thirumoorthy 	F(320000000, P_GPLL0_OUT_MAIN, 2.5, 0, 0),
812*844be6e2SKathiravan Thirumoorthy 	F(400000000, P_GPLL0_OUT_MAIN, 2, 0, 0),
813*844be6e2SKathiravan Thirumoorthy 	{ }
814*844be6e2SKathiravan Thirumoorthy };
815*844be6e2SKathiravan Thirumoorthy 
816*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_qpic_io_macro_clk_src = {
817*844be6e2SKathiravan Thirumoorthy 	.cmd_rcgr = 0x32004,
818*844be6e2SKathiravan Thirumoorthy 	.mnd_width = 0,
819*844be6e2SKathiravan Thirumoorthy 	.hid_width = 5,
820*844be6e2SKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_12,
821*844be6e2SKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_qpic_io_macro_clk_src,
822*844be6e2SKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
823*844be6e2SKathiravan Thirumoorthy 		.name = "gcc_qpic_io_macro_clk_src",
824*844be6e2SKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_12,
825*844be6e2SKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_12),
826*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
827*844be6e2SKathiravan Thirumoorthy 	},
828*844be6e2SKathiravan Thirumoorthy };
829*844be6e2SKathiravan Thirumoorthy 
830*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_qpic_clk_src[] = {
831*844be6e2SKathiravan Thirumoorthy 	F(24000000, P_XO, 1, 0, 0),
832*844be6e2SKathiravan Thirumoorthy 	F(100000000, P_GPLL0_OUT_MAIN, 8, 0, 0),
833*844be6e2SKathiravan Thirumoorthy 	F(200000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
834*844be6e2SKathiravan Thirumoorthy 	{ }
835*844be6e2SKathiravan Thirumoorthy };
836*844be6e2SKathiravan Thirumoorthy 
837*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_qpic_clk_src = {
838*844be6e2SKathiravan Thirumoorthy 	.cmd_rcgr = 0x32020,
839*844be6e2SKathiravan Thirumoorthy 	.mnd_width = 0,
840*844be6e2SKathiravan Thirumoorthy 	.hid_width = 5,
841*844be6e2SKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_12,
842*844be6e2SKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_qpic_clk_src,
843*844be6e2SKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
844*844be6e2SKathiravan Thirumoorthy 		.name = "gcc_qpic_clk_src",
845*844be6e2SKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_12,
846*844be6e2SKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_12),
847*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
848*844be6e2SKathiravan Thirumoorthy 	},
849*844be6e2SKathiravan Thirumoorthy };
850*844be6e2SKathiravan Thirumoorthy 
851*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_pon_tm2x_clk_src[] = {
852*844be6e2SKathiravan Thirumoorthy 	F(342860000, P_GPLL4_OUT_MAIN, 3.5, 0, 0),
853*844be6e2SKathiravan Thirumoorthy 	{ }
854*844be6e2SKathiravan Thirumoorthy };
855*844be6e2SKathiravan Thirumoorthy 
856*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_pon_tm2x_clk_src = {
857*844be6e2SKathiravan Thirumoorthy 	.cmd_rcgr = 0x3c004,
858*844be6e2SKathiravan Thirumoorthy 	.mnd_width = 0,
859*844be6e2SKathiravan Thirumoorthy 	.hid_width = 5,
860*844be6e2SKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_11,
861*844be6e2SKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_pon_tm2x_clk_src,
862*844be6e2SKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
863*844be6e2SKathiravan Thirumoorthy 		.name = "gcc_pon_tm2x_clk_src",
864*844be6e2SKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_11,
865*844be6e2SKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_11),
866*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
867*844be6e2SKathiravan Thirumoorthy 	},
868*844be6e2SKathiravan Thirumoorthy };
869*844be6e2SKathiravan Thirumoorthy 
870*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_sleep_clk_src[] = {
871*844be6e2SKathiravan Thirumoorthy 	F(32000, P_SLEEP_CLK, 1, 0, 0),
872*844be6e2SKathiravan Thirumoorthy 	{ }
873*844be6e2SKathiravan Thirumoorthy };
874*844be6e2SKathiravan Thirumoorthy 
875*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_sleep_clk_src = {
876*844be6e2SKathiravan Thirumoorthy 	.cmd_rcgr = 0x3400c,
877*844be6e2SKathiravan Thirumoorthy 	.mnd_width = 0,
878*844be6e2SKathiravan Thirumoorthy 	.hid_width = 5,
879*844be6e2SKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_13,
880*844be6e2SKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_sleep_clk_src,
881*844be6e2SKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
882*844be6e2SKathiravan Thirumoorthy 		.name = "gcc_sleep_clk_src",
883*844be6e2SKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_13,
884*844be6e2SKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_13),
885*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
886*844be6e2SKathiravan Thirumoorthy 	},
887*844be6e2SKathiravan Thirumoorthy };
888*844be6e2SKathiravan Thirumoorthy 
889*844be6e2SKathiravan Thirumoorthy static const struct freq_tbl ftbl_gcc_lpass_sway_clk_src[] = {
890*844be6e2SKathiravan Thirumoorthy 	F(133333333, P_GPLL0_OUT_MAIN, 6, 0, 0),
891*844be6e2SKathiravan Thirumoorthy 	{ }
892*844be6e2SKathiravan Thirumoorthy };
893*844be6e2SKathiravan Thirumoorthy 
894*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_lpass_sway_clk_src = {
895*844be6e2SKathiravan Thirumoorthy 	.cmd_rcgr = 0x27004,
896*844be6e2SKathiravan Thirumoorthy 	.mnd_width = 0,
897*844be6e2SKathiravan Thirumoorthy 	.hid_width = 5,
898*844be6e2SKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_1,
899*844be6e2SKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_lpass_sway_clk_src,
900*844be6e2SKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
901*844be6e2SKathiravan Thirumoorthy 		.name = "gcc_lpass_sway_clk_src",
902*844be6e2SKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_1,
903*844be6e2SKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_1),
904*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
905*844be6e2SKathiravan Thirumoorthy 	},
906*844be6e2SKathiravan Thirumoorthy };
907*844be6e2SKathiravan Thirumoorthy 
908*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_lpass_axim_clk_src = {
909*844be6e2SKathiravan Thirumoorthy 	.cmd_rcgr = 0x2700c,
910*844be6e2SKathiravan Thirumoorthy 	.mnd_width = 0,
911*844be6e2SKathiravan Thirumoorthy 	.hid_width = 5,
912*844be6e2SKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_1,
913*844be6e2SKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_lpass_sway_clk_src,
914*844be6e2SKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
915*844be6e2SKathiravan Thirumoorthy 		.name = "gcc_lpass_axim_clk_src",
916*844be6e2SKathiravan Thirumoorthy 		.parent_data = gcc_parent_data_1,
917*844be6e2SKathiravan Thirumoorthy 		.num_parents = ARRAY_SIZE(gcc_parent_data_1),
918*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
919*844be6e2SKathiravan Thirumoorthy 	},
920*844be6e2SKathiravan Thirumoorthy };
921*844be6e2SKathiravan Thirumoorthy 
922*844be6e2SKathiravan Thirumoorthy static struct clk_regmap_div gcc_nssnoc_memnoc_div_clk_src = {
923*844be6e2SKathiravan Thirumoorthy 	.reg = 0x1700c,
924*844be6e2SKathiravan Thirumoorthy 	.shift = 0,
925*844be6e2SKathiravan Thirumoorthy 	.width = 4,
926*844be6e2SKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
927*844be6e2SKathiravan Thirumoorthy 		.name = "gcc_nssnoc_memnoc_div_clk_src",
928*844be6e2SKathiravan Thirumoorthy 		.parent_hws = (const struct clk_hw*[]) {
929*844be6e2SKathiravan Thirumoorthy 			&gcc_nssnoc_memnoc_bfdcd_clk_src.clkr.hw,
930*844be6e2SKathiravan Thirumoorthy 		},
931*844be6e2SKathiravan Thirumoorthy 		.num_parents = 1,
932*844be6e2SKathiravan Thirumoorthy 		.flags = CLK_SET_RATE_PARENT,
933*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_regmap_div_ro_ops,
934*844be6e2SKathiravan Thirumoorthy 	},
935*844be6e2SKathiravan Thirumoorthy };
936*844be6e2SKathiravan Thirumoorthy 
937*844be6e2SKathiravan Thirumoorthy static struct clk_regmap_div gcc_usb0_mock_utmi_div_clk_src = {
938*844be6e2SKathiravan Thirumoorthy 	.reg = 0x2c040,
939*844be6e2SKathiravan Thirumoorthy 	.shift = 0,
940*844be6e2SKathiravan Thirumoorthy 	.width = 2,
941*844be6e2SKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
942*844be6e2SKathiravan Thirumoorthy 		.name = "gcc_usb0_mock_utmi_div_clk_src",
943*844be6e2SKathiravan Thirumoorthy 		.parent_hws = (const struct clk_hw*[]) {
944*844be6e2SKathiravan Thirumoorthy 			&gcc_usb0_mock_utmi_clk_src.clkr.hw,
945*844be6e2SKathiravan Thirumoorthy 		},
946*844be6e2SKathiravan Thirumoorthy 		.num_parents = 1,
947*844be6e2SKathiravan Thirumoorthy 		.flags = CLK_SET_RATE_PARENT,
948*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_regmap_div_ro_ops,
949*844be6e2SKathiravan Thirumoorthy 	},
950*844be6e2SKathiravan Thirumoorthy };
951*844be6e2SKathiravan Thirumoorthy 
952*844be6e2SKathiravan Thirumoorthy static struct clk_fixed_factor gcc_pon_tm_div_clk_src = {
953*844be6e2SKathiravan Thirumoorthy 	.mult = 1,
954*844be6e2SKathiravan Thirumoorthy 	.div = 2,
955*844be6e2SKathiravan Thirumoorthy 	.hw.init = &(const struct clk_init_data) {
956*844be6e2SKathiravan Thirumoorthy 		.name = "gcc_pon_tm_div_clk_src",
957*844be6e2SKathiravan Thirumoorthy 		.parent_hws = (const struct clk_hw *[]) {
958*844be6e2SKathiravan Thirumoorthy 			&gcc_pon_tm2x_clk_src.clkr.hw
959*844be6e2SKathiravan Thirumoorthy 		},
960*844be6e2SKathiravan Thirumoorthy 		.num_parents = 1,
961*844be6e2SKathiravan Thirumoorthy 		.flags = CLK_SET_RATE_PARENT,
962*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_fixed_factor_ops,
963*844be6e2SKathiravan Thirumoorthy 	},
964*844be6e2SKathiravan Thirumoorthy };
965*844be6e2SKathiravan Thirumoorthy 
966*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_adss_pwm_clk = {
967*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x1c00c,
968*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
969*844be6e2SKathiravan Thirumoorthy 	.clkr = {
970*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x1c00c,
971*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
972*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
973*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_adss_pwm_clk",
974*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
975*844be6e2SKathiravan Thirumoorthy 				&gcc_adss_pwm_clk_src.clkr.hw,
976*844be6e2SKathiravan Thirumoorthy 			},
977*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
978*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
979*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
980*844be6e2SKathiravan Thirumoorthy 		},
981*844be6e2SKathiravan Thirumoorthy 	},
982*844be6e2SKathiravan Thirumoorthy };
983*844be6e2SKathiravan Thirumoorthy 
984*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_cnoc_pcie0_1lane_s_clk = {
985*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x31088,
986*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
987*844be6e2SKathiravan Thirumoorthy 	.clkr = {
988*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x31088,
989*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
990*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
991*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_cnoc_pcie0_1lane_s_clk",
992*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
993*844be6e2SKathiravan Thirumoorthy 				&gcc_pcie0_axi_s_clk_src.clkr.hw,
994*844be6e2SKathiravan Thirumoorthy 			},
995*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
996*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
997*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
998*844be6e2SKathiravan Thirumoorthy 		},
999*844be6e2SKathiravan Thirumoorthy 	},
1000*844be6e2SKathiravan Thirumoorthy };
1001*844be6e2SKathiravan Thirumoorthy 
1002*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_cnoc_pcie1_2lane_s_clk = {
1003*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x3108c,
1004*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1005*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1006*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x3108c,
1007*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1008*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1009*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_cnoc_pcie1_2lane_s_clk",
1010*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1011*844be6e2SKathiravan Thirumoorthy 				&gcc_pcie1_axi_s_clk_src.clkr.hw,
1012*844be6e2SKathiravan Thirumoorthy 			},
1013*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1014*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1015*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1016*844be6e2SKathiravan Thirumoorthy 		},
1017*844be6e2SKathiravan Thirumoorthy 	},
1018*844be6e2SKathiravan Thirumoorthy };
1019*844be6e2SKathiravan Thirumoorthy 
1020*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_cnoc_usb_clk = {
1021*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x310a8,
1022*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1023*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1024*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x310a8,
1025*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1026*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1027*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_cnoc_usb_clk",
1028*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1029*844be6e2SKathiravan Thirumoorthy 				&gcc_usb0_master_clk_src.clkr.hw,
1030*844be6e2SKathiravan Thirumoorthy 			},
1031*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1032*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1033*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1034*844be6e2SKathiravan Thirumoorthy 		},
1035*844be6e2SKathiravan Thirumoorthy 	},
1036*844be6e2SKathiravan Thirumoorthy };
1037*844be6e2SKathiravan Thirumoorthy 
1038*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_mdio_ahb_clk = {
1039*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x17040,
1040*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1041*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1042*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x17040,
1043*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1044*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1045*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_mdio_ahb_clk",
1046*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1047*844be6e2SKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1048*844be6e2SKathiravan Thirumoorthy 			},
1049*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1050*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1051*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1052*844be6e2SKathiravan Thirumoorthy 		},
1053*844be6e2SKathiravan Thirumoorthy 	},
1054*844be6e2SKathiravan Thirumoorthy };
1055*844be6e2SKathiravan Thirumoorthy 
1056*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_mdio_gephy_ahb_clk = {
1057*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x17098,
1058*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1059*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1060*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x17098,
1061*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1062*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1063*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_mdio_gephy_ahb_clk",
1064*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1065*844be6e2SKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1066*844be6e2SKathiravan Thirumoorthy 			},
1067*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1068*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1069*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1070*844be6e2SKathiravan Thirumoorthy 		},
1071*844be6e2SKathiravan Thirumoorthy 	},
1072*844be6e2SKathiravan Thirumoorthy };
1073*844be6e2SKathiravan Thirumoorthy 
1074*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_nss_ts_clk = {
1075*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x17018,
1076*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1077*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1078*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x17018,
1079*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1080*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1081*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_nss_ts_clk",
1082*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1083*844be6e2SKathiravan Thirumoorthy 				&gcc_nss_ts_clk_src.clkr.hw,
1084*844be6e2SKathiravan Thirumoorthy 			},
1085*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1086*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1087*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1088*844be6e2SKathiravan Thirumoorthy 		},
1089*844be6e2SKathiravan Thirumoorthy 	},
1090*844be6e2SKathiravan Thirumoorthy };
1091*844be6e2SKathiravan Thirumoorthy 
1092*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_nsscc_clk = {
1093*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x17034,
1094*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1095*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1096*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x17034,
1097*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1098*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1099*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_nsscc_clk",
1100*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1101*844be6e2SKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1102*844be6e2SKathiravan Thirumoorthy 			},
1103*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1104*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1105*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1106*844be6e2SKathiravan Thirumoorthy 		},
1107*844be6e2SKathiravan Thirumoorthy 	},
1108*844be6e2SKathiravan Thirumoorthy };
1109*844be6e2SKathiravan Thirumoorthy 
1110*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_nsscfg_clk = {
1111*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x1702c,
1112*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1113*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1114*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x1702c,
1115*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1116*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1117*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_nsscfg_clk",
1118*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1119*844be6e2SKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1120*844be6e2SKathiravan Thirumoorthy 			},
1121*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1122*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1123*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1124*844be6e2SKathiravan Thirumoorthy 		},
1125*844be6e2SKathiravan Thirumoorthy 	},
1126*844be6e2SKathiravan Thirumoorthy };
1127*844be6e2SKathiravan Thirumoorthy 
1128*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_nssnoc_atb_clk = {
1129*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x17014,
1130*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1131*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1132*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x17014,
1133*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1134*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1135*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_nssnoc_atb_clk",
1136*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1137*844be6e2SKathiravan Thirumoorthy 				&gcc_qdss_at_clk_src.clkr.hw,
1138*844be6e2SKathiravan Thirumoorthy 			},
1139*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1140*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1141*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1142*844be6e2SKathiravan Thirumoorthy 		},
1143*844be6e2SKathiravan Thirumoorthy 	},
1144*844be6e2SKathiravan Thirumoorthy };
1145*844be6e2SKathiravan Thirumoorthy 
1146*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_nssnoc_memnoc_1_clk = {
1147*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x17084,
1148*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1149*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1150*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x17084,
1151*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1152*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1153*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_nssnoc_memnoc_1_clk",
1154*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1155*844be6e2SKathiravan Thirumoorthy 				&gcc_nssnoc_memnoc_div_clk_src.clkr.hw,
1156*844be6e2SKathiravan Thirumoorthy 			},
1157*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1158*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1159*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1160*844be6e2SKathiravan Thirumoorthy 		},
1161*844be6e2SKathiravan Thirumoorthy 	},
1162*844be6e2SKathiravan Thirumoorthy };
1163*844be6e2SKathiravan Thirumoorthy 
1164*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_nssnoc_memnoc_clk = {
1165*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x17024,
1166*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1167*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1168*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x17024,
1169*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1170*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1171*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_nssnoc_memnoc_clk",
1172*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1173*844be6e2SKathiravan Thirumoorthy 				&gcc_nssnoc_memnoc_div_clk_src.clkr.hw,
1174*844be6e2SKathiravan Thirumoorthy 			},
1175*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1176*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1177*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1178*844be6e2SKathiravan Thirumoorthy 		},
1179*844be6e2SKathiravan Thirumoorthy 	},
1180*844be6e2SKathiravan Thirumoorthy };
1181*844be6e2SKathiravan Thirumoorthy 
1182*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_nssnoc_nsscc_clk = {
1183*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x17030,
1184*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1185*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1186*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x17030,
1187*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1188*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1189*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_nssnoc_nsscc_clk",
1190*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1191*844be6e2SKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1192*844be6e2SKathiravan Thirumoorthy 			},
1193*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1194*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1195*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1196*844be6e2SKathiravan Thirumoorthy 		},
1197*844be6e2SKathiravan Thirumoorthy 	},
1198*844be6e2SKathiravan Thirumoorthy };
1199*844be6e2SKathiravan Thirumoorthy 
1200*844be6e2SKathiravan Thirumoorthy static struct clk_rcg2 gcc_xo_clk_src = {
1201*844be6e2SKathiravan Thirumoorthy 	.cmd_rcgr = 0x34004,
1202*844be6e2SKathiravan Thirumoorthy 	.mnd_width = 0,
1203*844be6e2SKathiravan Thirumoorthy 	.hid_width = 5,
1204*844be6e2SKathiravan Thirumoorthy 	.parent_map = gcc_parent_map_xo,
1205*844be6e2SKathiravan Thirumoorthy 	.freq_tbl = ftbl_gcc_nss_ts_clk_src,
1206*844be6e2SKathiravan Thirumoorthy 	.clkr.hw.init = &(const struct clk_init_data) {
1207*844be6e2SKathiravan Thirumoorthy 		.name = "gcc_xo_clk_src",
1208*844be6e2SKathiravan Thirumoorthy 		.parent_data = &gcc_parent_data_xo,
1209*844be6e2SKathiravan Thirumoorthy 		.num_parents = 1,
1210*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_rcg2_ops,
1211*844be6e2SKathiravan Thirumoorthy 	},
1212*844be6e2SKathiravan Thirumoorthy };
1213*844be6e2SKathiravan Thirumoorthy 
1214*844be6e2SKathiravan Thirumoorthy static struct clk_fixed_factor gcc_xo_div4_clk_src = {
1215*844be6e2SKathiravan Thirumoorthy 	.mult = 1,
1216*844be6e2SKathiravan Thirumoorthy 	.div = 4,
1217*844be6e2SKathiravan Thirumoorthy 	.hw.init = &(const struct clk_init_data) {
1218*844be6e2SKathiravan Thirumoorthy 		.name = "gcc_xo_div4_clk_src",
1219*844be6e2SKathiravan Thirumoorthy 		.parent_hws = (const struct clk_hw *[]) {
1220*844be6e2SKathiravan Thirumoorthy 			&gcc_xo_clk_src.clkr.hw
1221*844be6e2SKathiravan Thirumoorthy 		},
1222*844be6e2SKathiravan Thirumoorthy 		.num_parents = 1,
1223*844be6e2SKathiravan Thirumoorthy 		.flags = CLK_SET_RATE_PARENT,
1224*844be6e2SKathiravan Thirumoorthy 		.ops = &clk_fixed_factor_ops,
1225*844be6e2SKathiravan Thirumoorthy 	},
1226*844be6e2SKathiravan Thirumoorthy };
1227*844be6e2SKathiravan Thirumoorthy 
1228*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_gephy_sys_clk = {
1229*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x2a004,
1230*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1231*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1232*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x2a004,
1233*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1234*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1235*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_gephy_sys_clk",
1236*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1237*844be6e2SKathiravan Thirumoorthy 				&gcc_xo_clk_src.clkr.hw,
1238*844be6e2SKathiravan Thirumoorthy 			},
1239*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1240*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1241*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1242*844be6e2SKathiravan Thirumoorthy 		},
1243*844be6e2SKathiravan Thirumoorthy 	},
1244*844be6e2SKathiravan Thirumoorthy };
1245*844be6e2SKathiravan Thirumoorthy 
1246*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_nssnoc_pcnoc_1_clk = {
1247*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x17080,
1248*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1249*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1250*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x17080,
1251*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1252*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1253*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_nssnoc_pcnoc_1_clk",
1254*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1255*844be6e2SKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw
1256*844be6e2SKathiravan Thirumoorthy 			},
1257*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1258*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1259*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1260*844be6e2SKathiravan Thirumoorthy 		},
1261*844be6e2SKathiravan Thirumoorthy 	},
1262*844be6e2SKathiravan Thirumoorthy };
1263*844be6e2SKathiravan Thirumoorthy 
1264*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_nssnoc_qosgen_ref_clk = {
1265*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x1701c,
1266*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1267*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1268*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x1701c,
1269*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1270*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1271*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_nssnoc_qosgen_ref_clk",
1272*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw *[]){
1273*844be6e2SKathiravan Thirumoorthy 				&gcc_xo_div4_clk_src.hw
1274*844be6e2SKathiravan Thirumoorthy 			},
1275*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1276*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1277*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1278*844be6e2SKathiravan Thirumoorthy 		},
1279*844be6e2SKathiravan Thirumoorthy 	},
1280*844be6e2SKathiravan Thirumoorthy };
1281*844be6e2SKathiravan Thirumoorthy 
1282*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_nssnoc_snoc_1_clk = {
1283*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x1707c,
1284*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1285*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1286*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x1707c,
1287*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1288*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1289*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_nssnoc_snoc_1_clk",
1290*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1291*844be6e2SKathiravan Thirumoorthy 				&gcc_system_noc_bfdcd_clk_src.clkr.hw
1292*844be6e2SKathiravan Thirumoorthy 			},
1293*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1294*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1295*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1296*844be6e2SKathiravan Thirumoorthy 		},
1297*844be6e2SKathiravan Thirumoorthy 	},
1298*844be6e2SKathiravan Thirumoorthy };
1299*844be6e2SKathiravan Thirumoorthy 
1300*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_nssnoc_snoc_clk = {
1301*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x17028,
1302*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1303*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1304*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x17028,
1305*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1306*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1307*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_nssnoc_snoc_clk",
1308*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1309*844be6e2SKathiravan Thirumoorthy 				&gcc_system_noc_bfdcd_clk_src.clkr.hw,
1310*844be6e2SKathiravan Thirumoorthy 			},
1311*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1312*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1313*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1314*844be6e2SKathiravan Thirumoorthy 		},
1315*844be6e2SKathiravan Thirumoorthy 	},
1316*844be6e2SKathiravan Thirumoorthy };
1317*844be6e2SKathiravan Thirumoorthy 
1318*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_nssnoc_timeout_ref_clk = {
1319*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x17020,
1320*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1321*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1322*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x17020,
1323*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1324*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1325*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_nssnoc_timeout_ref_clk",
1326*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1327*844be6e2SKathiravan Thirumoorthy 				&gcc_xo_div4_clk_src.hw,
1328*844be6e2SKathiravan Thirumoorthy 			},
1329*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1330*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1331*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1332*844be6e2SKathiravan Thirumoorthy 		},
1333*844be6e2SKathiravan Thirumoorthy 	},
1334*844be6e2SKathiravan Thirumoorthy };
1335*844be6e2SKathiravan Thirumoorthy 
1336*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_nssnoc_xo_dcd_clk = {
1337*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x17074,
1338*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1339*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1340*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x17074,
1341*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1342*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1343*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_nssnoc_xo_dcd_clk",
1344*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1345*844be6e2SKathiravan Thirumoorthy 				&gcc_xo_clk_src.clkr.hw,
1346*844be6e2SKathiravan Thirumoorthy 			},
1347*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1348*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1349*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1350*844be6e2SKathiravan Thirumoorthy 		},
1351*844be6e2SKathiravan Thirumoorthy 	},
1352*844be6e2SKathiravan Thirumoorthy };
1353*844be6e2SKathiravan Thirumoorthy 
1354*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_pcie0_ahb_clk = {
1355*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x28030,
1356*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1357*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1358*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x28030,
1359*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1360*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1361*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_pcie0_ahb_clk",
1362*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1363*844be6e2SKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1364*844be6e2SKathiravan Thirumoorthy 			},
1365*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1366*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1367*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1368*844be6e2SKathiravan Thirumoorthy 		},
1369*844be6e2SKathiravan Thirumoorthy 	},
1370*844be6e2SKathiravan Thirumoorthy };
1371*844be6e2SKathiravan Thirumoorthy 
1372*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_pcie0_aux_clk = {
1373*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x28070,
1374*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1375*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1376*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x28070,
1377*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1378*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1379*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_pcie0_aux_clk",
1380*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1381*844be6e2SKathiravan Thirumoorthy 				&gcc_pcie_aux_clk_src.clkr.hw,
1382*844be6e2SKathiravan Thirumoorthy 			},
1383*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1384*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1385*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1386*844be6e2SKathiravan Thirumoorthy 		},
1387*844be6e2SKathiravan Thirumoorthy 	},
1388*844be6e2SKathiravan Thirumoorthy };
1389*844be6e2SKathiravan Thirumoorthy 
1390*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_pcie0_axi_m_clk = {
1391*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x28038,
1392*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1393*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1394*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x28038,
1395*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1396*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1397*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_pcie0_axi_m_clk",
1398*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1399*844be6e2SKathiravan Thirumoorthy 				&gcc_pcie0_axi_m_clk_src.clkr.hw,
1400*844be6e2SKathiravan Thirumoorthy 			},
1401*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1402*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1403*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1404*844be6e2SKathiravan Thirumoorthy 		},
1405*844be6e2SKathiravan Thirumoorthy 	},
1406*844be6e2SKathiravan Thirumoorthy };
1407*844be6e2SKathiravan Thirumoorthy 
1408*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_pcie0_axi_s_bridge_clk = {
1409*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x28048,
1410*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1411*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1412*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x28048,
1413*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1414*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1415*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_pcie0_axi_s_bridge_clk",
1416*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1417*844be6e2SKathiravan Thirumoorthy 				&gcc_pcie0_axi_s_clk_src.clkr.hw,
1418*844be6e2SKathiravan Thirumoorthy 			},
1419*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1420*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1421*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1422*844be6e2SKathiravan Thirumoorthy 		},
1423*844be6e2SKathiravan Thirumoorthy 	},
1424*844be6e2SKathiravan Thirumoorthy };
1425*844be6e2SKathiravan Thirumoorthy 
1426*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_pcie0_axi_s_clk = {
1427*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x28040,
1428*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1429*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1430*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x28040,
1431*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1432*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1433*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_pcie0_axi_s_clk",
1434*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1435*844be6e2SKathiravan Thirumoorthy 				&gcc_pcie0_axi_s_clk_src.clkr.hw,
1436*844be6e2SKathiravan Thirumoorthy 			},
1437*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1438*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1439*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1440*844be6e2SKathiravan Thirumoorthy 		},
1441*844be6e2SKathiravan Thirumoorthy 	},
1442*844be6e2SKathiravan Thirumoorthy };
1443*844be6e2SKathiravan Thirumoorthy 
1444*844be6e2SKathiravan Thirumoorthy static struct clk_regmap_phy_mux gcc_pcie0_pipe_clk_src = {
1445*844be6e2SKathiravan Thirumoorthy 	.reg = 0x28064,
1446*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1447*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1448*844be6e2SKathiravan Thirumoorthy 			.name = "pcie0_pipe_clk_src",
1449*844be6e2SKathiravan Thirumoorthy 			.parent_data = &(const struct clk_parent_data) {
1450*844be6e2SKathiravan Thirumoorthy 				.index = DT_PCIE30_PHY0_PIPE_CLK,
1451*844be6e2SKathiravan Thirumoorthy 			},
1452*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1453*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_regmap_phy_mux_ops,
1454*844be6e2SKathiravan Thirumoorthy 		},
1455*844be6e2SKathiravan Thirumoorthy 	},
1456*844be6e2SKathiravan Thirumoorthy };
1457*844be6e2SKathiravan Thirumoorthy 
1458*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_pcie0_pipe_clk = {
1459*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x28068,
1460*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT_DELAY,
1461*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1462*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x28068,
1463*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1464*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1465*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_pcie0_pipe_clk",
1466*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw *[]) {
1467*844be6e2SKathiravan Thirumoorthy 				&gcc_pcie0_pipe_clk_src.clkr.hw
1468*844be6e2SKathiravan Thirumoorthy 			},
1469*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1470*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1471*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1472*844be6e2SKathiravan Thirumoorthy 		},
1473*844be6e2SKathiravan Thirumoorthy 	},
1474*844be6e2SKathiravan Thirumoorthy };
1475*844be6e2SKathiravan Thirumoorthy 
1476*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_pcie1_ahb_clk = {
1477*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x29030,
1478*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1479*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1480*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x29030,
1481*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1482*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1483*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_pcie1_ahb_clk",
1484*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1485*844be6e2SKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1486*844be6e2SKathiravan Thirumoorthy 			},
1487*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1488*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1489*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1490*844be6e2SKathiravan Thirumoorthy 		},
1491*844be6e2SKathiravan Thirumoorthy 	},
1492*844be6e2SKathiravan Thirumoorthy };
1493*844be6e2SKathiravan Thirumoorthy 
1494*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_pcie1_aux_clk = {
1495*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x29074,
1496*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1497*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1498*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x29074,
1499*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1500*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1501*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_pcie1_aux_clk",
1502*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1503*844be6e2SKathiravan Thirumoorthy 				&gcc_pcie_aux_clk_src.clkr.hw,
1504*844be6e2SKathiravan Thirumoorthy 			},
1505*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1506*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1507*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1508*844be6e2SKathiravan Thirumoorthy 		},
1509*844be6e2SKathiravan Thirumoorthy 	},
1510*844be6e2SKathiravan Thirumoorthy };
1511*844be6e2SKathiravan Thirumoorthy 
1512*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_pcie1_axi_m_clk = {
1513*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x29038,
1514*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1515*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1516*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x29038,
1517*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1518*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1519*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_pcie1_axi_m_clk",
1520*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1521*844be6e2SKathiravan Thirumoorthy 				&gcc_pcie1_axi_m_clk_src.clkr.hw,
1522*844be6e2SKathiravan Thirumoorthy 			},
1523*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1524*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1525*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1526*844be6e2SKathiravan Thirumoorthy 		},
1527*844be6e2SKathiravan Thirumoorthy 	},
1528*844be6e2SKathiravan Thirumoorthy };
1529*844be6e2SKathiravan Thirumoorthy 
1530*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_pcie1_axi_s_bridge_clk = {
1531*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x29048,
1532*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1533*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1534*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x29048,
1535*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1536*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1537*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_pcie1_axi_s_bridge_clk",
1538*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1539*844be6e2SKathiravan Thirumoorthy 				&gcc_pcie1_axi_s_clk_src.clkr.hw,
1540*844be6e2SKathiravan Thirumoorthy 			},
1541*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1542*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1543*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1544*844be6e2SKathiravan Thirumoorthy 		},
1545*844be6e2SKathiravan Thirumoorthy 	},
1546*844be6e2SKathiravan Thirumoorthy };
1547*844be6e2SKathiravan Thirumoorthy 
1548*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_pcie1_axi_s_clk = {
1549*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x29040,
1550*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1551*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1552*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x29040,
1553*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1554*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1555*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_pcie1_axi_s_clk",
1556*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1557*844be6e2SKathiravan Thirumoorthy 				&gcc_pcie1_axi_s_clk_src.clkr.hw,
1558*844be6e2SKathiravan Thirumoorthy 			},
1559*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1560*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1561*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1562*844be6e2SKathiravan Thirumoorthy 		},
1563*844be6e2SKathiravan Thirumoorthy 	},
1564*844be6e2SKathiravan Thirumoorthy };
1565*844be6e2SKathiravan Thirumoorthy 
1566*844be6e2SKathiravan Thirumoorthy static struct clk_regmap_phy_mux gcc_pcie1_pipe_clk_src = {
1567*844be6e2SKathiravan Thirumoorthy 	.reg = 0x29064,
1568*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1569*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1570*844be6e2SKathiravan Thirumoorthy 			.name = "pcie1_pipe_clk_src",
1571*844be6e2SKathiravan Thirumoorthy 			.parent_data = &(const struct clk_parent_data) {
1572*844be6e2SKathiravan Thirumoorthy 				.index = DT_PCIE30_PHY1_PIPE_CLK,
1573*844be6e2SKathiravan Thirumoorthy 			},
1574*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1575*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_regmap_phy_mux_ops,
1576*844be6e2SKathiravan Thirumoorthy 		},
1577*844be6e2SKathiravan Thirumoorthy 	},
1578*844be6e2SKathiravan Thirumoorthy };
1579*844be6e2SKathiravan Thirumoorthy 
1580*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_pcie1_pipe_clk = {
1581*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x29068,
1582*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT_DELAY,
1583*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1584*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x29068,
1585*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1586*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1587*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_pcie1_pipe_clk",
1588*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw *[]) {
1589*844be6e2SKathiravan Thirumoorthy 				&gcc_pcie1_pipe_clk_src.clkr.hw
1590*844be6e2SKathiravan Thirumoorthy 			},
1591*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1592*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1593*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1594*844be6e2SKathiravan Thirumoorthy 		},
1595*844be6e2SKathiravan Thirumoorthy 	},
1596*844be6e2SKathiravan Thirumoorthy };
1597*844be6e2SKathiravan Thirumoorthy 
1598*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_qrng_ahb_clk = {
1599*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x13024,
1600*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT_VOTED,
1601*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1602*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0xb004,
1603*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(10),
1604*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1605*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_qrng_ahb_clk",
1606*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1607*844be6e2SKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1608*844be6e2SKathiravan Thirumoorthy 			},
1609*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1610*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1611*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1612*844be6e2SKathiravan Thirumoorthy 		},
1613*844be6e2SKathiravan Thirumoorthy 	},
1614*844be6e2SKathiravan Thirumoorthy };
1615*844be6e2SKathiravan Thirumoorthy 
1616*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_qupv3_ahb_mst_clk = {
1617*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x1014,
1618*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT_VOTED,
1619*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1620*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0xb004,
1621*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(14),
1622*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1623*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_qupv3_ahb_mst_clk",
1624*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1625*844be6e2SKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1626*844be6e2SKathiravan Thirumoorthy 			},
1627*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1628*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1629*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1630*844be6e2SKathiravan Thirumoorthy 		},
1631*844be6e2SKathiravan Thirumoorthy 	},
1632*844be6e2SKathiravan Thirumoorthy };
1633*844be6e2SKathiravan Thirumoorthy 
1634*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_qupv3_ahb_slv_clk = {
1635*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x102c,
1636*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT_VOTED,
1637*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1638*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0xb004,
1639*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(4),
1640*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1641*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_qupv3_ahb_slv_clk",
1642*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1643*844be6e2SKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1644*844be6e2SKathiravan Thirumoorthy 			},
1645*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1646*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1647*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1648*844be6e2SKathiravan Thirumoorthy 		},
1649*844be6e2SKathiravan Thirumoorthy 	},
1650*844be6e2SKathiravan Thirumoorthy };
1651*844be6e2SKathiravan Thirumoorthy 
1652*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_qupv3_wrap_se0_clk = {
1653*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x4020,
1654*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1655*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1656*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x4020,
1657*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1658*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1659*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_qupv3_wrap_se0_clk",
1660*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1661*844be6e2SKathiravan Thirumoorthy 				&gcc_qupv3_wrap_se0_clk_src.clkr.hw,
1662*844be6e2SKathiravan Thirumoorthy 			},
1663*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1664*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1665*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1666*844be6e2SKathiravan Thirumoorthy 		},
1667*844be6e2SKathiravan Thirumoorthy 	},
1668*844be6e2SKathiravan Thirumoorthy };
1669*844be6e2SKathiravan Thirumoorthy 
1670*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_qupv3_wrap_se1_clk = {
1671*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x5020,
1672*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1673*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1674*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x5020,
1675*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1676*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1677*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_qupv3_wrap_se1_clk",
1678*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1679*844be6e2SKathiravan Thirumoorthy 				&gcc_qupv3_wrap_se1_clk_src.clkr.hw,
1680*844be6e2SKathiravan Thirumoorthy 			},
1681*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1682*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1683*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1684*844be6e2SKathiravan Thirumoorthy 		},
1685*844be6e2SKathiravan Thirumoorthy 	},
1686*844be6e2SKathiravan Thirumoorthy };
1687*844be6e2SKathiravan Thirumoorthy 
1688*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_qupv3_wrap_se2_clk = {
1689*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x202c,
1690*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1691*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1692*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x202c,
1693*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1694*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1695*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_qupv3_wrap_se2_clk",
1696*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1697*844be6e2SKathiravan Thirumoorthy 				&gcc_qupv3_wrap_se2_clk_src.clkr.hw,
1698*844be6e2SKathiravan Thirumoorthy 			},
1699*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1700*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1701*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1702*844be6e2SKathiravan Thirumoorthy 		},
1703*844be6e2SKathiravan Thirumoorthy 	},
1704*844be6e2SKathiravan Thirumoorthy };
1705*844be6e2SKathiravan Thirumoorthy 
1706*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_qupv3_wrap_se3_clk = {
1707*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x2048,
1708*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1709*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1710*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x2048,
1711*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1712*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1713*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_qupv3_wrap_se3_clk",
1714*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1715*844be6e2SKathiravan Thirumoorthy 				&gcc_qupv3_wrap_se3_clk_src.clkr.hw,
1716*844be6e2SKathiravan Thirumoorthy 			},
1717*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1718*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1719*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1720*844be6e2SKathiravan Thirumoorthy 		},
1721*844be6e2SKathiravan Thirumoorthy 	},
1722*844be6e2SKathiravan Thirumoorthy };
1723*844be6e2SKathiravan Thirumoorthy 
1724*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_qupv3_wrap_se4_clk = {
1725*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x302c,
1726*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1727*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1728*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x302c,
1729*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1730*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1731*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_qupv3_wrap_se4_clk",
1732*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1733*844be6e2SKathiravan Thirumoorthy 				&gcc_qupv3_wrap_se4_clk_src.clkr.hw,
1734*844be6e2SKathiravan Thirumoorthy 			},
1735*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1736*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1737*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1738*844be6e2SKathiravan Thirumoorthy 		},
1739*844be6e2SKathiravan Thirumoorthy 	},
1740*844be6e2SKathiravan Thirumoorthy };
1741*844be6e2SKathiravan Thirumoorthy 
1742*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_qupv3_wrap_se5_clk = {
1743*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x3048,
1744*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1745*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1746*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x3048,
1747*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1748*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1749*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_qupv3_wrap_se5_clk",
1750*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1751*844be6e2SKathiravan Thirumoorthy 				&gcc_qupv3_wrap_se5_clk_src.clkr.hw,
1752*844be6e2SKathiravan Thirumoorthy 			},
1753*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1754*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1755*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1756*844be6e2SKathiravan Thirumoorthy 		},
1757*844be6e2SKathiravan Thirumoorthy 	},
1758*844be6e2SKathiravan Thirumoorthy };
1759*844be6e2SKathiravan Thirumoorthy 
1760*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_sdcc1_ahb_clk = {
1761*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x3303c,
1762*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1763*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1764*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x3303c,
1765*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1766*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1767*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_sdcc1_ahb_clk",
1768*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1769*844be6e2SKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw
1770*844be6e2SKathiravan Thirumoorthy 			},
1771*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1772*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1773*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1774*844be6e2SKathiravan Thirumoorthy 		},
1775*844be6e2SKathiravan Thirumoorthy 	},
1776*844be6e2SKathiravan Thirumoorthy };
1777*844be6e2SKathiravan Thirumoorthy 
1778*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_sdcc1_apps_clk = {
1779*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x3302c,
1780*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1781*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1782*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x3302c,
1783*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1784*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1785*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_sdcc1_apps_clk",
1786*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1787*844be6e2SKathiravan Thirumoorthy 				&gcc_sdcc1_apps_clk_src.clkr.hw,
1788*844be6e2SKathiravan Thirumoorthy 			},
1789*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1790*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1791*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1792*844be6e2SKathiravan Thirumoorthy 		},
1793*844be6e2SKathiravan Thirumoorthy 	},
1794*844be6e2SKathiravan Thirumoorthy };
1795*844be6e2SKathiravan Thirumoorthy 
1796*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_sdcc1_ice_core_clk = {
1797*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x33034,
1798*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1799*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1800*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x33034,
1801*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1802*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1803*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_sdcc1_ice_core_clk",
1804*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1805*844be6e2SKathiravan Thirumoorthy 				&gcc_sdcc1_ice_core_clk_src.clkr.hw,
1806*844be6e2SKathiravan Thirumoorthy 			},
1807*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1808*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1809*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1810*844be6e2SKathiravan Thirumoorthy 		},
1811*844be6e2SKathiravan Thirumoorthy 	},
1812*844be6e2SKathiravan Thirumoorthy };
1813*844be6e2SKathiravan Thirumoorthy 
1814*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_snoc_pcie0_axi_m_clk = {
1815*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x2e04c,
1816*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1817*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1818*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x2e04c,
1819*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1820*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1821*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_snoc_pcie0_axi_m_clk",
1822*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1823*844be6e2SKathiravan Thirumoorthy 				&gcc_pcie0_axi_m_clk_src.clkr.hw,
1824*844be6e2SKathiravan Thirumoorthy 			},
1825*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1826*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1827*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1828*844be6e2SKathiravan Thirumoorthy 		},
1829*844be6e2SKathiravan Thirumoorthy 	},
1830*844be6e2SKathiravan Thirumoorthy };
1831*844be6e2SKathiravan Thirumoorthy 
1832*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_snoc_pcie1_axi_m_clk = {
1833*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x2e050,
1834*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1835*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1836*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x2e050,
1837*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1838*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1839*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_snoc_pcie1_axi_m_clk",
1840*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1841*844be6e2SKathiravan Thirumoorthy 				&gcc_pcie1_axi_m_clk_src.clkr.hw,
1842*844be6e2SKathiravan Thirumoorthy 			},
1843*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1844*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1845*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1846*844be6e2SKathiravan Thirumoorthy 		},
1847*844be6e2SKathiravan Thirumoorthy 	},
1848*844be6e2SKathiravan Thirumoorthy };
1849*844be6e2SKathiravan Thirumoorthy 
1850*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_uniphy0_ahb_clk = {
1851*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x1704c,
1852*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1853*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1854*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x1704c,
1855*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1856*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1857*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_uniphy0_ahb_clk",
1858*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1859*844be6e2SKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1860*844be6e2SKathiravan Thirumoorthy 			},
1861*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1862*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1863*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1864*844be6e2SKathiravan Thirumoorthy 		},
1865*844be6e2SKathiravan Thirumoorthy 	},
1866*844be6e2SKathiravan Thirumoorthy };
1867*844be6e2SKathiravan Thirumoorthy 
1868*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_uniphy0_sys_clk = {
1869*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x17048,
1870*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1871*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1872*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x17048,
1873*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1874*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1875*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_uniphy0_sys_clk",
1876*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1877*844be6e2SKathiravan Thirumoorthy 				&gcc_uniphy_sys_clk_src.clkr.hw,
1878*844be6e2SKathiravan Thirumoorthy 			},
1879*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1880*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1881*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1882*844be6e2SKathiravan Thirumoorthy 		},
1883*844be6e2SKathiravan Thirumoorthy 	},
1884*844be6e2SKathiravan Thirumoorthy };
1885*844be6e2SKathiravan Thirumoorthy 
1886*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_uniphy1_ahb_clk = {
1887*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x1705c,
1888*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1889*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1890*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x1705c,
1891*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1892*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1893*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_uniphy1_ahb_clk",
1894*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1895*844be6e2SKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1896*844be6e2SKathiravan Thirumoorthy 			},
1897*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1898*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1899*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1900*844be6e2SKathiravan Thirumoorthy 		},
1901*844be6e2SKathiravan Thirumoorthy 	},
1902*844be6e2SKathiravan Thirumoorthy };
1903*844be6e2SKathiravan Thirumoorthy 
1904*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_uniphy1_sys_clk = {
1905*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x17058,
1906*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1907*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1908*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x17058,
1909*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1910*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1911*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_uniphy1_sys_clk",
1912*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1913*844be6e2SKathiravan Thirumoorthy 				&gcc_uniphy_sys_clk_src.clkr.hw,
1914*844be6e2SKathiravan Thirumoorthy 			},
1915*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1916*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1917*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1918*844be6e2SKathiravan Thirumoorthy 		},
1919*844be6e2SKathiravan Thirumoorthy 	},
1920*844be6e2SKathiravan Thirumoorthy };
1921*844be6e2SKathiravan Thirumoorthy 
1922*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_uniphy2_ahb_clk = {
1923*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x1706c,
1924*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1925*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1926*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x1706c,
1927*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1928*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1929*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_uniphy2_ahb_clk",
1930*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1931*844be6e2SKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1932*844be6e2SKathiravan Thirumoorthy 			},
1933*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1934*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1935*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1936*844be6e2SKathiravan Thirumoorthy 		},
1937*844be6e2SKathiravan Thirumoorthy 	},
1938*844be6e2SKathiravan Thirumoorthy };
1939*844be6e2SKathiravan Thirumoorthy 
1940*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_uniphy2_sys_clk = {
1941*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x17068,
1942*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1943*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1944*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x17068,
1945*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1946*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1947*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_uniphy2_sys_clk",
1948*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1949*844be6e2SKathiravan Thirumoorthy 				&gcc_uniphy_sys_clk_src.clkr.hw,
1950*844be6e2SKathiravan Thirumoorthy 			},
1951*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1952*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1953*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1954*844be6e2SKathiravan Thirumoorthy 		},
1955*844be6e2SKathiravan Thirumoorthy 	},
1956*844be6e2SKathiravan Thirumoorthy };
1957*844be6e2SKathiravan Thirumoorthy 
1958*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_usb0_aux_clk = {
1959*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x2c04c,
1960*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1961*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1962*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x2c04c,
1963*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1964*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1965*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_usb0_aux_clk",
1966*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1967*844be6e2SKathiravan Thirumoorthy 				&gcc_usb0_aux_clk_src.clkr.hw,
1968*844be6e2SKathiravan Thirumoorthy 			},
1969*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1970*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1971*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1972*844be6e2SKathiravan Thirumoorthy 		},
1973*844be6e2SKathiravan Thirumoorthy 	},
1974*844be6e2SKathiravan Thirumoorthy };
1975*844be6e2SKathiravan Thirumoorthy 
1976*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_usb0_master_clk = {
1977*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x2c044,
1978*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1979*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1980*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x2c044,
1981*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
1982*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
1983*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_usb0_master_clk",
1984*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
1985*844be6e2SKathiravan Thirumoorthy 				&gcc_usb0_master_clk_src.clkr.hw,
1986*844be6e2SKathiravan Thirumoorthy 			},
1987*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
1988*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
1989*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
1990*844be6e2SKathiravan Thirumoorthy 		},
1991*844be6e2SKathiravan Thirumoorthy 	},
1992*844be6e2SKathiravan Thirumoorthy };
1993*844be6e2SKathiravan Thirumoorthy 
1994*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_usb0_mock_utmi_clk = {
1995*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x2c050,
1996*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
1997*844be6e2SKathiravan Thirumoorthy 	.clkr = {
1998*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x2c050,
1999*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2000*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2001*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_usb0_mock_utmi_clk",
2002*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2003*844be6e2SKathiravan Thirumoorthy 				&gcc_usb0_mock_utmi_div_clk_src.clkr.hw,
2004*844be6e2SKathiravan Thirumoorthy 			},
2005*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
2006*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2007*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2008*844be6e2SKathiravan Thirumoorthy 		},
2009*844be6e2SKathiravan Thirumoorthy 	},
2010*844be6e2SKathiravan Thirumoorthy };
2011*844be6e2SKathiravan Thirumoorthy 
2012*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_usb0_phy_cfg_ahb_clk = {
2013*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x2c05c,
2014*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2015*844be6e2SKathiravan Thirumoorthy 	.clkr = {
2016*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x2c05c,
2017*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2018*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2019*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_usb0_phy_cfg_ahb_clk",
2020*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2021*844be6e2SKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2022*844be6e2SKathiravan Thirumoorthy 			},
2023*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
2024*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2025*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2026*844be6e2SKathiravan Thirumoorthy 		},
2027*844be6e2SKathiravan Thirumoorthy 	},
2028*844be6e2SKathiravan Thirumoorthy };
2029*844be6e2SKathiravan Thirumoorthy 
2030*844be6e2SKathiravan Thirumoorthy static struct clk_regmap_phy_mux gcc_usb0_pipe_clk_src = {
2031*844be6e2SKathiravan Thirumoorthy 	.reg = 0x2c074,
2032*844be6e2SKathiravan Thirumoorthy 	.clkr = {
2033*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2034*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_usb0_pipe_clk_src",
2035*844be6e2SKathiravan Thirumoorthy 			.parent_data = &(const struct clk_parent_data) {
2036*844be6e2SKathiravan Thirumoorthy 				.index = DT_USB3_PHY0_CC_PIPE_CLK,
2037*844be6e2SKathiravan Thirumoorthy 			},
2038*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
2039*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_regmap_phy_mux_ops,
2040*844be6e2SKathiravan Thirumoorthy 		},
2041*844be6e2SKathiravan Thirumoorthy 	},
2042*844be6e2SKathiravan Thirumoorthy };
2043*844be6e2SKathiravan Thirumoorthy 
2044*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_usb0_pipe_clk = {
2045*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x2c054,
2046*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT_DELAY,
2047*844be6e2SKathiravan Thirumoorthy 	.clkr = {
2048*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x2c054,
2049*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2050*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2051*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_usb0_pipe_clk",
2052*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw *[]) {
2053*844be6e2SKathiravan Thirumoorthy 				&gcc_usb0_pipe_clk_src.clkr.hw
2054*844be6e2SKathiravan Thirumoorthy 			},
2055*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
2056*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2057*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2058*844be6e2SKathiravan Thirumoorthy 		},
2059*844be6e2SKathiravan Thirumoorthy 	},
2060*844be6e2SKathiravan Thirumoorthy };
2061*844be6e2SKathiravan Thirumoorthy 
2062*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_usb0_sleep_clk = {
2063*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x2c058,
2064*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2065*844be6e2SKathiravan Thirumoorthy 	.clkr = {
2066*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x2c058,
2067*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2068*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2069*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_usb0_sleep_clk",
2070*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2071*844be6e2SKathiravan Thirumoorthy 				&gcc_sleep_clk_src.clkr.hw,
2072*844be6e2SKathiravan Thirumoorthy 			},
2073*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
2074*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2075*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2076*844be6e2SKathiravan Thirumoorthy 		},
2077*844be6e2SKathiravan Thirumoorthy 	},
2078*844be6e2SKathiravan Thirumoorthy };
2079*844be6e2SKathiravan Thirumoorthy 
2080*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_pcie0_rchng_clk = {
2081*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x28028,
2082*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2083*844be6e2SKathiravan Thirumoorthy 	.clkr = {
2084*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x28028,
2085*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(1),
2086*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2087*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_pcie0_rchng_clk",
2088*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw *[]) {
2089*844be6e2SKathiravan Thirumoorthy 				&gcc_pcie0_rchng_clk_src.clkr.hw
2090*844be6e2SKathiravan Thirumoorthy 			},
2091*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
2092*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2093*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2094*844be6e2SKathiravan Thirumoorthy 		},
2095*844be6e2SKathiravan Thirumoorthy 	},
2096*844be6e2SKathiravan Thirumoorthy };
2097*844be6e2SKathiravan Thirumoorthy 
2098*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_pcie1_rchng_clk = {
2099*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x29028,
2100*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2101*844be6e2SKathiravan Thirumoorthy 	.clkr = {
2102*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x29028,
2103*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(1),
2104*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2105*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_pcie1_rchng_clk",
2106*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw *[]) {
2107*844be6e2SKathiravan Thirumoorthy 				&gcc_pcie1_rchng_clk_src.clkr.hw
2108*844be6e2SKathiravan Thirumoorthy 			},
2109*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
2110*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2111*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2112*844be6e2SKathiravan Thirumoorthy 		},
2113*844be6e2SKathiravan Thirumoorthy 	},
2114*844be6e2SKathiravan Thirumoorthy };
2115*844be6e2SKathiravan Thirumoorthy 
2116*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_qpic_ahb_clk = {
2117*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x32010,
2118*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2119*844be6e2SKathiravan Thirumoorthy 	.clkr = {
2120*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x32010,
2121*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2122*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2123*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_qpic_ahb_clk",
2124*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2125*844be6e2SKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2126*844be6e2SKathiravan Thirumoorthy 			},
2127*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
2128*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2129*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2130*844be6e2SKathiravan Thirumoorthy 		},
2131*844be6e2SKathiravan Thirumoorthy 	},
2132*844be6e2SKathiravan Thirumoorthy };
2133*844be6e2SKathiravan Thirumoorthy 
2134*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_qpic_clk = {
2135*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x32028,
2136*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2137*844be6e2SKathiravan Thirumoorthy 	.clkr = {
2138*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x32028,
2139*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2140*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2141*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_qpic_clk",
2142*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2143*844be6e2SKathiravan Thirumoorthy 				&gcc_qpic_clk_src.clkr.hw,
2144*844be6e2SKathiravan Thirumoorthy 			},
2145*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
2146*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2147*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2148*844be6e2SKathiravan Thirumoorthy 		},
2149*844be6e2SKathiravan Thirumoorthy 	},
2150*844be6e2SKathiravan Thirumoorthy };
2151*844be6e2SKathiravan Thirumoorthy 
2152*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_qpic_io_macro_clk = {
2153*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x3200c,
2154*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2155*844be6e2SKathiravan Thirumoorthy 	.clkr = {
2156*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x3200c,
2157*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2158*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2159*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_qpic_io_macro_clk",
2160*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2161*844be6e2SKathiravan Thirumoorthy 				&gcc_qpic_io_macro_clk_src.clkr.hw,
2162*844be6e2SKathiravan Thirumoorthy 			},
2163*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
2164*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2165*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2166*844be6e2SKathiravan Thirumoorthy 		},
2167*844be6e2SKathiravan Thirumoorthy 	},
2168*844be6e2SKathiravan Thirumoorthy };
2169*844be6e2SKathiravan Thirumoorthy 
2170*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_cmn_12gpll_ahb_clk = {
2171*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x3a004,
2172*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2173*844be6e2SKathiravan Thirumoorthy 	.clkr = {
2174*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x3a004,
2175*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2176*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2177*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_cmn_12gpll_ahb_clk",
2178*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2179*844be6e2SKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2180*844be6e2SKathiravan Thirumoorthy 			},
2181*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
2182*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2183*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2184*844be6e2SKathiravan Thirumoorthy 		},
2185*844be6e2SKathiravan Thirumoorthy 	},
2186*844be6e2SKathiravan Thirumoorthy };
2187*844be6e2SKathiravan Thirumoorthy 
2188*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_cmn_12gpll_sys_clk = {
2189*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x3a008,
2190*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2191*844be6e2SKathiravan Thirumoorthy 	.clkr = {
2192*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x3a008,
2193*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2194*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2195*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_cmn_12gpll_sys_clk",
2196*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2197*844be6e2SKathiravan Thirumoorthy 				&gcc_uniphy_sys_clk_src.clkr.hw,
2198*844be6e2SKathiravan Thirumoorthy 			},
2199*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
2200*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2201*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2202*844be6e2SKathiravan Thirumoorthy 		},
2203*844be6e2SKathiravan Thirumoorthy 	},
2204*844be6e2SKathiravan Thirumoorthy };
2205*844be6e2SKathiravan Thirumoorthy 
2206*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_qdss_at_clk = {
2207*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x2d034,
2208*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2209*844be6e2SKathiravan Thirumoorthy 	.clkr = {
2210*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x2d034,
2211*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2212*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2213*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_qdss_at_clk",
2214*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2215*844be6e2SKathiravan Thirumoorthy 				&gcc_qdss_at_clk_src.clkr.hw,
2216*844be6e2SKathiravan Thirumoorthy 			},
2217*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
2218*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2219*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2220*844be6e2SKathiravan Thirumoorthy 		},
2221*844be6e2SKathiravan Thirumoorthy 	},
2222*844be6e2SKathiravan Thirumoorthy };
2223*844be6e2SKathiravan Thirumoorthy 
2224*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_qdss_dap_clk = {
2225*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x2d058,
2226*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT_VOTED,
2227*844be6e2SKathiravan Thirumoorthy 	.clkr = {
2228*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0xb004,
2229*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(2),
2230*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2231*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_qdss_dap_clk",
2232*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2233*844be6e2SKathiravan Thirumoorthy 				&gcc_qdss_tsctr_clk_src.clkr.hw,
2234*844be6e2SKathiravan Thirumoorthy 			},
2235*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
2236*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2237*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2238*844be6e2SKathiravan Thirumoorthy 		},
2239*844be6e2SKathiravan Thirumoorthy 	},
2240*844be6e2SKathiravan Thirumoorthy };
2241*844be6e2SKathiravan Thirumoorthy 
2242*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_pon_apb_clk = {
2243*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x3c01c,
2244*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2245*844be6e2SKathiravan Thirumoorthy 	.clkr = {
2246*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x3c01c,
2247*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2248*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2249*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_pon_apb_clk",
2250*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2251*844be6e2SKathiravan Thirumoorthy 				&gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2252*844be6e2SKathiravan Thirumoorthy 			},
2253*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
2254*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2255*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2256*844be6e2SKathiravan Thirumoorthy 		},
2257*844be6e2SKathiravan Thirumoorthy 	},
2258*844be6e2SKathiravan Thirumoorthy };
2259*844be6e2SKathiravan Thirumoorthy 
2260*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_pon_tm_clk = {
2261*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x3c014,
2262*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2263*844be6e2SKathiravan Thirumoorthy 	.clkr = {
2264*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x3c014,
2265*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2266*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2267*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_pon_tm_clk",
2268*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2269*844be6e2SKathiravan Thirumoorthy 				&gcc_pon_tm_div_clk_src.hw,
2270*844be6e2SKathiravan Thirumoorthy 			},
2271*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
2272*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2273*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2274*844be6e2SKathiravan Thirumoorthy 		},
2275*844be6e2SKathiravan Thirumoorthy 	},
2276*844be6e2SKathiravan Thirumoorthy };
2277*844be6e2SKathiravan Thirumoorthy 
2278*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_pon_tm2x_clk = {
2279*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x3c00c,
2280*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2281*844be6e2SKathiravan Thirumoorthy 	.clkr = {
2282*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x3c00c,
2283*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2284*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2285*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_pon_tm2x_clk",
2286*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2287*844be6e2SKathiravan Thirumoorthy 				&gcc_pon_tm2x_clk_src.clkr.hw,
2288*844be6e2SKathiravan Thirumoorthy 			},
2289*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
2290*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2291*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2292*844be6e2SKathiravan Thirumoorthy 		},
2293*844be6e2SKathiravan Thirumoorthy 	},
2294*844be6e2SKathiravan Thirumoorthy };
2295*844be6e2SKathiravan Thirumoorthy 
2296*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_snoc_lpass_clk = {
2297*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x2e028,
2298*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2299*844be6e2SKathiravan Thirumoorthy 	.clkr = {
2300*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x2e028,
2301*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2302*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2303*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_snoc_lpass_clk",
2304*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2305*844be6e2SKathiravan Thirumoorthy 				&gcc_lpass_axim_clk_src.clkr.hw,
2306*844be6e2SKathiravan Thirumoorthy 			},
2307*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
2308*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2309*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2310*844be6e2SKathiravan Thirumoorthy 		},
2311*844be6e2SKathiravan Thirumoorthy 	},
2312*844be6e2SKathiravan Thirumoorthy };
2313*844be6e2SKathiravan Thirumoorthy 
2314*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_lpass_sway_clk = {
2315*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x27014,
2316*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2317*844be6e2SKathiravan Thirumoorthy 	.clkr = {
2318*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x27014,
2319*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2320*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2321*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_lpass_sway_clk",
2322*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2323*844be6e2SKathiravan Thirumoorthy 				&gcc_lpass_sway_clk_src.clkr.hw,
2324*844be6e2SKathiravan Thirumoorthy 			},
2325*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
2326*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2327*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2328*844be6e2SKathiravan Thirumoorthy 		},
2329*844be6e2SKathiravan Thirumoorthy 	},
2330*844be6e2SKathiravan Thirumoorthy };
2331*844be6e2SKathiravan Thirumoorthy 
2332*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_cnoc_lpass_cfg_clk = {
2333*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x31020,
2334*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2335*844be6e2SKathiravan Thirumoorthy 	.clkr = {
2336*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x31020,
2337*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2338*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2339*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_cnoc_lpass_cfg_clk",
2340*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2341*844be6e2SKathiravan Thirumoorthy 				&gcc_lpass_sway_clk_src.clkr.hw,
2342*844be6e2SKathiravan Thirumoorthy 			},
2343*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
2344*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2345*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2346*844be6e2SKathiravan Thirumoorthy 		},
2347*844be6e2SKathiravan Thirumoorthy 	},
2348*844be6e2SKathiravan Thirumoorthy };
2349*844be6e2SKathiravan Thirumoorthy 
2350*844be6e2SKathiravan Thirumoorthy static struct clk_branch gcc_lpass_core_axim_clk = {
2351*844be6e2SKathiravan Thirumoorthy 	.halt_reg = 0x27018,
2352*844be6e2SKathiravan Thirumoorthy 	.halt_check = BRANCH_HALT,
2353*844be6e2SKathiravan Thirumoorthy 	.clkr = {
2354*844be6e2SKathiravan Thirumoorthy 		.enable_reg = 0x27018,
2355*844be6e2SKathiravan Thirumoorthy 		.enable_mask = BIT(0),
2356*844be6e2SKathiravan Thirumoorthy 		.hw.init = &(const struct clk_init_data) {
2357*844be6e2SKathiravan Thirumoorthy 			.name = "gcc_lpass_core_axim_clk",
2358*844be6e2SKathiravan Thirumoorthy 			.parent_hws = (const struct clk_hw*[]) {
2359*844be6e2SKathiravan Thirumoorthy 				&gcc_lpass_axim_clk_src.clkr.hw,
2360*844be6e2SKathiravan Thirumoorthy 			},
2361*844be6e2SKathiravan Thirumoorthy 			.num_parents = 1,
2362*844be6e2SKathiravan Thirumoorthy 			.flags = CLK_SET_RATE_PARENT,
2363*844be6e2SKathiravan Thirumoorthy 			.ops = &clk_branch2_ops,
2364*844be6e2SKathiravan Thirumoorthy 		},
2365*844be6e2SKathiravan Thirumoorthy 	},
2366*844be6e2SKathiravan Thirumoorthy };
2367*844be6e2SKathiravan Thirumoorthy 
2368*844be6e2SKathiravan Thirumoorthy static __maybe_unused struct clk_regmap *gcc_ipq5210_clocks[] = {
2369*844be6e2SKathiravan Thirumoorthy 	[GCC_ADSS_PWM_CLK] = &gcc_adss_pwm_clk.clkr,
2370*844be6e2SKathiravan Thirumoorthy 	[GCC_ADSS_PWM_CLK_SRC] = &gcc_adss_pwm_clk_src.clkr,
2371*844be6e2SKathiravan Thirumoorthy 	[GCC_CMN_12GPLL_AHB_CLK] = &gcc_cmn_12gpll_ahb_clk.clkr,
2372*844be6e2SKathiravan Thirumoorthy 	[GCC_CMN_12GPLL_SYS_CLK] = &gcc_cmn_12gpll_sys_clk.clkr,
2373*844be6e2SKathiravan Thirumoorthy 	[GCC_CNOC_LPASS_CFG_CLK] = &gcc_cnoc_lpass_cfg_clk.clkr,
2374*844be6e2SKathiravan Thirumoorthy 	[GCC_CNOC_PCIE0_1LANE_S_CLK] = &gcc_cnoc_pcie0_1lane_s_clk.clkr,
2375*844be6e2SKathiravan Thirumoorthy 	[GCC_CNOC_PCIE1_2LANE_S_CLK] = &gcc_cnoc_pcie1_2lane_s_clk.clkr,
2376*844be6e2SKathiravan Thirumoorthy 	[GCC_CNOC_USB_CLK] = &gcc_cnoc_usb_clk.clkr,
2377*844be6e2SKathiravan Thirumoorthy 	[GCC_GEPHY_SYS_CLK] = &gcc_gephy_sys_clk.clkr,
2378*844be6e2SKathiravan Thirumoorthy 	[GCC_LPASS_AXIM_CLK_SRC] = &gcc_lpass_axim_clk_src.clkr,
2379*844be6e2SKathiravan Thirumoorthy 	[GCC_LPASS_CORE_AXIM_CLK] = &gcc_lpass_core_axim_clk.clkr,
2380*844be6e2SKathiravan Thirumoorthy 	[GCC_LPASS_SWAY_CLK] = &gcc_lpass_sway_clk.clkr,
2381*844be6e2SKathiravan Thirumoorthy 	[GCC_LPASS_SWAY_CLK_SRC] = &gcc_lpass_sway_clk_src.clkr,
2382*844be6e2SKathiravan Thirumoorthy 	[GCC_MDIO_AHB_CLK] = &gcc_mdio_ahb_clk.clkr,
2383*844be6e2SKathiravan Thirumoorthy 	[GCC_MDIO_GEPHY_AHB_CLK] = &gcc_mdio_gephy_ahb_clk.clkr,
2384*844be6e2SKathiravan Thirumoorthy 	[GCC_NSS_TS_CLK] = &gcc_nss_ts_clk.clkr,
2385*844be6e2SKathiravan Thirumoorthy 	[GCC_NSS_TS_CLK_SRC] = &gcc_nss_ts_clk_src.clkr,
2386*844be6e2SKathiravan Thirumoorthy 	[GCC_NSSCC_CLK] = &gcc_nsscc_clk.clkr,
2387*844be6e2SKathiravan Thirumoorthy 	[GCC_NSSCFG_CLK] = &gcc_nsscfg_clk.clkr,
2388*844be6e2SKathiravan Thirumoorthy 	[GCC_NSSNOC_ATB_CLK] = &gcc_nssnoc_atb_clk.clkr,
2389*844be6e2SKathiravan Thirumoorthy 	[GCC_NSSNOC_MEMNOC_1_CLK] = &gcc_nssnoc_memnoc_1_clk.clkr,
2390*844be6e2SKathiravan Thirumoorthy 	[GCC_NSSNOC_MEMNOC_BFDCD_CLK_SRC] = &gcc_nssnoc_memnoc_bfdcd_clk_src.clkr,
2391*844be6e2SKathiravan Thirumoorthy 	[GCC_NSSNOC_MEMNOC_CLK] = &gcc_nssnoc_memnoc_clk.clkr,
2392*844be6e2SKathiravan Thirumoorthy 	[GCC_NSSNOC_MEMNOC_DIV_CLK_SRC] = &gcc_nssnoc_memnoc_div_clk_src.clkr,
2393*844be6e2SKathiravan Thirumoorthy 	[GCC_NSSNOC_NSSCC_CLK] = &gcc_nssnoc_nsscc_clk.clkr,
2394*844be6e2SKathiravan Thirumoorthy 	[GCC_NSSNOC_PCNOC_1_CLK] = &gcc_nssnoc_pcnoc_1_clk.clkr,
2395*844be6e2SKathiravan Thirumoorthy 	[GCC_NSSNOC_QOSGEN_REF_CLK] = &gcc_nssnoc_qosgen_ref_clk.clkr,
2396*844be6e2SKathiravan Thirumoorthy 	[GCC_NSSNOC_SNOC_1_CLK] = &gcc_nssnoc_snoc_1_clk.clkr,
2397*844be6e2SKathiravan Thirumoorthy 	[GCC_NSSNOC_SNOC_CLK] = &gcc_nssnoc_snoc_clk.clkr,
2398*844be6e2SKathiravan Thirumoorthy 	[GCC_NSSNOC_TIMEOUT_REF_CLK] = &gcc_nssnoc_timeout_ref_clk.clkr,
2399*844be6e2SKathiravan Thirumoorthy 	[GCC_NSSNOC_XO_DCD_CLK] = &gcc_nssnoc_xo_dcd_clk.clkr,
2400*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE0_AHB_CLK] = &gcc_pcie0_ahb_clk.clkr,
2401*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE0_AUX_CLK] = &gcc_pcie0_aux_clk.clkr,
2402*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE0_AXI_M_CLK] = &gcc_pcie0_axi_m_clk.clkr,
2403*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE0_AXI_M_CLK_SRC] = &gcc_pcie0_axi_m_clk_src.clkr,
2404*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE0_AXI_S_BRIDGE_CLK] = &gcc_pcie0_axi_s_bridge_clk.clkr,
2405*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE0_AXI_S_CLK] = &gcc_pcie0_axi_s_clk.clkr,
2406*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE0_AXI_S_CLK_SRC] = &gcc_pcie0_axi_s_clk_src.clkr,
2407*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE0_PIPE_CLK] = &gcc_pcie0_pipe_clk.clkr,
2408*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE0_PIPE_CLK_SRC] = &gcc_pcie0_pipe_clk_src.clkr,
2409*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE0_RCHNG_CLK] = &gcc_pcie0_rchng_clk.clkr,
2410*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE0_RCHNG_CLK_SRC] = &gcc_pcie0_rchng_clk_src.clkr,
2411*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE1_AHB_CLK] = &gcc_pcie1_ahb_clk.clkr,
2412*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE1_AUX_CLK] = &gcc_pcie1_aux_clk.clkr,
2413*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE1_AXI_M_CLK] = &gcc_pcie1_axi_m_clk.clkr,
2414*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE1_AXI_M_CLK_SRC] = &gcc_pcie1_axi_m_clk_src.clkr,
2415*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE1_AXI_S_BRIDGE_CLK] = &gcc_pcie1_axi_s_bridge_clk.clkr,
2416*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE1_AXI_S_CLK] = &gcc_pcie1_axi_s_clk.clkr,
2417*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE1_AXI_S_CLK_SRC] = &gcc_pcie1_axi_s_clk_src.clkr,
2418*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE1_PIPE_CLK] = &gcc_pcie1_pipe_clk.clkr,
2419*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE1_PIPE_CLK_SRC] = &gcc_pcie1_pipe_clk_src.clkr,
2420*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE1_RCHNG_CLK] = &gcc_pcie1_rchng_clk.clkr,
2421*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE1_RCHNG_CLK_SRC] = &gcc_pcie1_rchng_clk_src.clkr,
2422*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE_AUX_CLK_SRC] = &gcc_pcie_aux_clk_src.clkr,
2423*844be6e2SKathiravan Thirumoorthy 	[GCC_PCNOC_BFDCD_CLK_SRC] = &gcc_pcnoc_bfdcd_clk_src.clkr,
2424*844be6e2SKathiravan Thirumoorthy 	[GCC_PON_APB_CLK] = &gcc_pon_apb_clk.clkr,
2425*844be6e2SKathiravan Thirumoorthy 	[GCC_PON_TM_CLK] = &gcc_pon_tm_clk.clkr,
2426*844be6e2SKathiravan Thirumoorthy 	[GCC_PON_TM2X_CLK] = &gcc_pon_tm2x_clk.clkr,
2427*844be6e2SKathiravan Thirumoorthy 	[GCC_PON_TM2X_CLK_SRC] = &gcc_pon_tm2x_clk_src.clkr,
2428*844be6e2SKathiravan Thirumoorthy 	[GCC_QDSS_AT_CLK] = &gcc_qdss_at_clk.clkr,
2429*844be6e2SKathiravan Thirumoorthy 	[GCC_QDSS_AT_CLK_SRC] = &gcc_qdss_at_clk_src.clkr,
2430*844be6e2SKathiravan Thirumoorthy 	[GCC_QDSS_DAP_CLK] = &gcc_qdss_dap_clk.clkr,
2431*844be6e2SKathiravan Thirumoorthy 	[GCC_QDSS_TSCTR_CLK_SRC] = &gcc_qdss_tsctr_clk_src.clkr,
2432*844be6e2SKathiravan Thirumoorthy 	[GCC_QPIC_AHB_CLK] = &gcc_qpic_ahb_clk.clkr,
2433*844be6e2SKathiravan Thirumoorthy 	[GCC_QPIC_CLK] = &gcc_qpic_clk.clkr,
2434*844be6e2SKathiravan Thirumoorthy 	[GCC_QPIC_CLK_SRC] = &gcc_qpic_clk_src.clkr,
2435*844be6e2SKathiravan Thirumoorthy 	[GCC_QPIC_IO_MACRO_CLK] = &gcc_qpic_io_macro_clk.clkr,
2436*844be6e2SKathiravan Thirumoorthy 	[GCC_QPIC_IO_MACRO_CLK_SRC] = &gcc_qpic_io_macro_clk_src.clkr,
2437*844be6e2SKathiravan Thirumoorthy 	[GCC_QRNG_AHB_CLK] = &gcc_qrng_ahb_clk.clkr,
2438*844be6e2SKathiravan Thirumoorthy 	[GCC_QUPV3_AHB_MST_CLK] = &gcc_qupv3_ahb_mst_clk.clkr,
2439*844be6e2SKathiravan Thirumoorthy 	[GCC_QUPV3_AHB_SLV_CLK] = &gcc_qupv3_ahb_slv_clk.clkr,
2440*844be6e2SKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE0_CLK] = &gcc_qupv3_wrap_se0_clk.clkr,
2441*844be6e2SKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE0_CLK_SRC] = &gcc_qupv3_wrap_se0_clk_src.clkr,
2442*844be6e2SKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE1_CLK] = &gcc_qupv3_wrap_se1_clk.clkr,
2443*844be6e2SKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE1_CLK_SRC] = &gcc_qupv3_wrap_se1_clk_src.clkr,
2444*844be6e2SKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE2_CLK] = &gcc_qupv3_wrap_se2_clk.clkr,
2445*844be6e2SKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE2_CLK_SRC] = &gcc_qupv3_wrap_se2_clk_src.clkr,
2446*844be6e2SKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE3_CLK] = &gcc_qupv3_wrap_se3_clk.clkr,
2447*844be6e2SKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE3_CLK_SRC] = &gcc_qupv3_wrap_se3_clk_src.clkr,
2448*844be6e2SKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE4_CLK] = &gcc_qupv3_wrap_se4_clk.clkr,
2449*844be6e2SKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE4_CLK_SRC] = &gcc_qupv3_wrap_se4_clk_src.clkr,
2450*844be6e2SKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE5_CLK] = &gcc_qupv3_wrap_se5_clk.clkr,
2451*844be6e2SKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE5_CLK_SRC] = &gcc_qupv3_wrap_se5_clk_src.clkr,
2452*844be6e2SKathiravan Thirumoorthy 	[GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
2453*844be6e2SKathiravan Thirumoorthy 	[GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
2454*844be6e2SKathiravan Thirumoorthy 	[GCC_SDCC1_APPS_CLK_SRC] = &gcc_sdcc1_apps_clk_src.clkr,
2455*844be6e2SKathiravan Thirumoorthy 	[GCC_SDCC1_ICE_CORE_CLK] = &gcc_sdcc1_ice_core_clk.clkr,
2456*844be6e2SKathiravan Thirumoorthy 	[GCC_SDCC1_ICE_CORE_CLK_SRC] = &gcc_sdcc1_ice_core_clk_src.clkr,
2457*844be6e2SKathiravan Thirumoorthy 	[GCC_SLEEP_CLK_SRC] = &gcc_sleep_clk_src.clkr,
2458*844be6e2SKathiravan Thirumoorthy 	[GCC_SNOC_LPASS_CLK] = &gcc_snoc_lpass_clk.clkr,
2459*844be6e2SKathiravan Thirumoorthy 	[GCC_SNOC_PCIE0_AXI_M_CLK] = &gcc_snoc_pcie0_axi_m_clk.clkr,
2460*844be6e2SKathiravan Thirumoorthy 	[GCC_SNOC_PCIE1_AXI_M_CLK] = &gcc_snoc_pcie1_axi_m_clk.clkr,
2461*844be6e2SKathiravan Thirumoorthy 	[GCC_SYSTEM_NOC_BFDCD_CLK_SRC] = &gcc_system_noc_bfdcd_clk_src.clkr,
2462*844be6e2SKathiravan Thirumoorthy 	[GCC_UNIPHY0_AHB_CLK] = &gcc_uniphy0_ahb_clk.clkr,
2463*844be6e2SKathiravan Thirumoorthy 	[GCC_UNIPHY0_SYS_CLK] = &gcc_uniphy0_sys_clk.clkr,
2464*844be6e2SKathiravan Thirumoorthy 	[GCC_UNIPHY1_AHB_CLK] = &gcc_uniphy1_ahb_clk.clkr,
2465*844be6e2SKathiravan Thirumoorthy 	[GCC_UNIPHY1_SYS_CLK] = &gcc_uniphy1_sys_clk.clkr,
2466*844be6e2SKathiravan Thirumoorthy 	[GCC_UNIPHY2_AHB_CLK] = &gcc_uniphy2_ahb_clk.clkr,
2467*844be6e2SKathiravan Thirumoorthy 	[GCC_UNIPHY2_SYS_CLK] = &gcc_uniphy2_sys_clk.clkr,
2468*844be6e2SKathiravan Thirumoorthy 	[GCC_UNIPHY_SYS_CLK_SRC] = &gcc_uniphy_sys_clk_src.clkr,
2469*844be6e2SKathiravan Thirumoorthy 	[GCC_USB0_AUX_CLK] = &gcc_usb0_aux_clk.clkr,
2470*844be6e2SKathiravan Thirumoorthy 	[GCC_USB0_AUX_CLK_SRC] = &gcc_usb0_aux_clk_src.clkr,
2471*844be6e2SKathiravan Thirumoorthy 	[GCC_USB0_MASTER_CLK] = &gcc_usb0_master_clk.clkr,
2472*844be6e2SKathiravan Thirumoorthy 	[GCC_USB0_MASTER_CLK_SRC] = &gcc_usb0_master_clk_src.clkr,
2473*844be6e2SKathiravan Thirumoorthy 	[GCC_USB0_MOCK_UTMI_CLK] = &gcc_usb0_mock_utmi_clk.clkr,
2474*844be6e2SKathiravan Thirumoorthy 	[GCC_USB0_MOCK_UTMI_CLK_SRC] = &gcc_usb0_mock_utmi_clk_src.clkr,
2475*844be6e2SKathiravan Thirumoorthy 	[GCC_USB0_MOCK_UTMI_DIV_CLK_SRC] = &gcc_usb0_mock_utmi_div_clk_src.clkr,
2476*844be6e2SKathiravan Thirumoorthy 	[GCC_USB0_PHY_CFG_AHB_CLK] = &gcc_usb0_phy_cfg_ahb_clk.clkr,
2477*844be6e2SKathiravan Thirumoorthy 	[GCC_USB0_PIPE_CLK] = &gcc_usb0_pipe_clk.clkr,
2478*844be6e2SKathiravan Thirumoorthy 	[GCC_USB0_PIPE_CLK_SRC] = &gcc_usb0_pipe_clk_src.clkr,
2479*844be6e2SKathiravan Thirumoorthy 	[GCC_USB0_SLEEP_CLK] = &gcc_usb0_sleep_clk.clkr,
2480*844be6e2SKathiravan Thirumoorthy 	[GCC_XO_CLK_SRC] = &gcc_xo_clk_src.clkr,
2481*844be6e2SKathiravan Thirumoorthy 	[GPLL0_MAIN] = &gpll0_main.clkr,
2482*844be6e2SKathiravan Thirumoorthy 	[GPLL0] = &gpll0.clkr,
2483*844be6e2SKathiravan Thirumoorthy 	[GPLL2_MAIN] = &gpll2_main.clkr,
2484*844be6e2SKathiravan Thirumoorthy 	[GPLL2] = &gpll2.clkr,
2485*844be6e2SKathiravan Thirumoorthy 	[GPLL4_MAIN] = &gpll4_main.clkr,
2486*844be6e2SKathiravan Thirumoorthy };
2487*844be6e2SKathiravan Thirumoorthy 
2488*844be6e2SKathiravan Thirumoorthy static const struct qcom_reset_map gcc_ipq5210_resets[] = {
2489*844be6e2SKathiravan Thirumoorthy 	[GCC_ADSS_BCR] = { 0x1c000 },
2490*844be6e2SKathiravan Thirumoorthy 	[GCC_ADSS_PWM_ARES] = { 0x1c00c, 2 },
2491*844be6e2SKathiravan Thirumoorthy 	[GCC_APC0_VOLTAGE_DROOP_DETECTOR_BCR] = { 0x38000 },
2492*844be6e2SKathiravan Thirumoorthy 	[GCC_APC0_VOLTAGE_DROOP_DETECTOR_GPLL0_ARES] = { 0x3800c, 2 },
2493*844be6e2SKathiravan Thirumoorthy 	[GCC_APSS_AHB_ARES] = { 0x24014, 2 },
2494*844be6e2SKathiravan Thirumoorthy 	[GCC_APSS_ATB_ARES] = { 0x24034, 2 },
2495*844be6e2SKathiravan Thirumoorthy 	[GCC_APSS_AXI_ARES] = { 0x24018, 2 },
2496*844be6e2SKathiravan Thirumoorthy 	[GCC_APSS_TS_ARES] = { 0x24030, 2 },
2497*844be6e2SKathiravan Thirumoorthy 	[GCC_BOOT_ROM_AHB_ARES] = { 0x1302c, 2 },
2498*844be6e2SKathiravan Thirumoorthy 	[GCC_BOOT_ROM_BCR] = { 0x13028 },
2499*844be6e2SKathiravan Thirumoorthy 	[GCC_GEPHY_BCR] = { 0x2a000 },
2500*844be6e2SKathiravan Thirumoorthy 	[GCC_GEPHY_SYS_ARES] = { 0x2a004, 2 },
2501*844be6e2SKathiravan Thirumoorthy 	[GCC_GP1_ARES] = { 0x8018, 2 },
2502*844be6e2SKathiravan Thirumoorthy 	[GCC_GP2_ARES] = { 0x9018, 2 },
2503*844be6e2SKathiravan Thirumoorthy 	[GCC_GP3_ARES] = { 0xa018, 2 },
2504*844be6e2SKathiravan Thirumoorthy 	[GCC_MDIO_AHB_ARES] = { 0x17040, 2 },
2505*844be6e2SKathiravan Thirumoorthy 	[GCC_MDIO_BCR] = { 0x1703c },
2506*844be6e2SKathiravan Thirumoorthy 	[GCC_MDIO_GEPHY_AHB_ARES] = { 0x17098, 2 },
2507*844be6e2SKathiravan Thirumoorthy 	[GCC_NSS_BCR] = { 0x17000 },
2508*844be6e2SKathiravan Thirumoorthy 	[GCC_NSS_TS_ARES] = { 0x17018, 2 },
2509*844be6e2SKathiravan Thirumoorthy 	[GCC_NSSCC_ARES] = { 0x17034, 2 },
2510*844be6e2SKathiravan Thirumoorthy 	[GCC_NSSCFG_ARES] = { 0x1702c, 2 },
2511*844be6e2SKathiravan Thirumoorthy 	[GCC_NSSNOC_ATB_ARES] = { 0x17014, 2 },
2512*844be6e2SKathiravan Thirumoorthy 	[GCC_NSSNOC_MEMNOC_1_ARES] = { 0x17084, 2 },
2513*844be6e2SKathiravan Thirumoorthy 	[GCC_NSSNOC_MEMNOC_ARES] = { 0x17024, 2 },
2514*844be6e2SKathiravan Thirumoorthy 	[GCC_NSSNOC_NSSCC_ARES] = { 0x17030, 2 },
2515*844be6e2SKathiravan Thirumoorthy 	[GCC_NSSNOC_PCNOC_1_ARES] = { 0x17080, 2 },
2516*844be6e2SKathiravan Thirumoorthy 	[GCC_NSSNOC_QOSGEN_REF_ARES] = { 0x1701c, 2 },
2517*844be6e2SKathiravan Thirumoorthy 	[GCC_NSSNOC_SNOC_1_ARES] = { 0x1707c, 2 },
2518*844be6e2SKathiravan Thirumoorthy 	[GCC_NSSNOC_SNOC_ARES] = { 0x17028, 2 },
2519*844be6e2SKathiravan Thirumoorthy 	[GCC_NSSNOC_TIMEOUT_REF_ARES] = { 0x17020, 2 },
2520*844be6e2SKathiravan Thirumoorthy 	[GCC_NSSNOC_XO_DCD_ARES] = { 0x17074, 2 },
2521*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE0_AHB_ARES] = { 0x28030, 2 },
2522*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE0_AUX_ARES] = { 0x28070, 2 },
2523*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE0_AXI_M_ARES] = { 0x28038, 2 },
2524*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE0_AXI_S_BRIDGE_ARES] = { 0x28048, 2 },
2525*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE0_AXI_S_ARES] = { 0x28040, 2 },
2526*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE0_BCR] = { 0x28000 },
2527*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE0_LINK_DOWN_BCR] = { 0x28054 },
2528*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE0_PIPE_RESET] = { 0x28058, 0 },
2529*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE0_CORE_STICKY_RESET] = { 0x28058, 1 },
2530*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE0_AXI_S_STICKY_RESET] = { 0x28058, 2 },
2531*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE0_AXI_S_RESET] = { 0x28058, 3 },
2532*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE0_AXI_M_STICKY_RESET] = { 0x28058, 4 },
2533*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE0_AXI_M_RESET] = { 0x28058, 5 },
2534*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE0_AUX_RESET] = { 0x28058, 6 },
2535*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE0_AHB_RESET] = { 0x28058, 7 },
2536*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE0_PHY_BCR] = { 0x28060 },
2537*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE0_PIPE_ARES] = { 0x28068, 2 },
2538*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE0PHY_PHY_BCR] = { 0x2805c },
2539*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE1_AHB_ARES] = { 0x29030, 2 },
2540*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE1_AUX_ARES] = { 0x29074, 2 },
2541*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE1_AXI_M_ARES] = { 0x29038, 2 },
2542*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE1_AXI_S_BRIDGE_ARES] = { 0x29048, 2 },
2543*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE1_AXI_S_ARES] = { 0x29040, 2 },
2544*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE1_BCR] = { 0x29000 },
2545*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE1_LINK_DOWN_BCR] = { 0x29054 },
2546*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE1_PIPE_RESET] = { 0x29058, 0 },
2547*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE1_CORE_STICKY_RESET] = { 0x29058, 1 },
2548*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE1_AXI_S_STICKY_RESET] = { 0x29058, 2 },
2549*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE1_AXI_S_RESET] = { 0x29058, 3 },
2550*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE1_AXI_M_STICKY_RESET] = { 0x29058, 4 },
2551*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE1_AXI_M_RESET] = { 0x29058, 5 },
2552*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE1_AUX_RESET] = { 0x29058, 6 },
2553*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE1_AHB_RESET] = { 0x29058, 7 },
2554*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE1_PHY_BCR] = { 0x29060 },
2555*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE1_PIPE_ARES] = { 0x29068, 2 },
2556*844be6e2SKathiravan Thirumoorthy 	[GCC_PCIE1PHY_PHY_BCR] = { 0x2905c },
2557*844be6e2SKathiravan Thirumoorthy 	[GCC_QRNG_AHB_ARES] = { 0x13024, 2 },
2558*844be6e2SKathiravan Thirumoorthy 	[GCC_QRNG_BCR] = { 0x13020 },
2559*844be6e2SKathiravan Thirumoorthy 	[GCC_QUPV3_2X_CORE_ARES] = { 0x1020, 2 },
2560*844be6e2SKathiravan Thirumoorthy 	[GCC_QUPV3_AHB_MST_ARES] = { 0x1014, 2 },
2561*844be6e2SKathiravan Thirumoorthy 	[GCC_QUPV3_AHB_SLV_ARES] = { 0x102c, 2 },
2562*844be6e2SKathiravan Thirumoorthy 	[GCC_QUPV3_BCR] = { 0x1000 },
2563*844be6e2SKathiravan Thirumoorthy 	[GCC_QUPV3_CORE_ARES] = { 0x1018, 2 },
2564*844be6e2SKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE0_ARES] = { 0x4020, 2 },
2565*844be6e2SKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE0_BCR] = { 0x4000 },
2566*844be6e2SKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE1_ARES] = { 0x5020, 2 },
2567*844be6e2SKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE1_BCR] = { 0x5000 },
2568*844be6e2SKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE2_ARES] = { 0x202c, 2 },
2569*844be6e2SKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE2_BCR] = { 0x2000 },
2570*844be6e2SKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE3_ARES] = { 0x2048, 2 },
2571*844be6e2SKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE3_BCR] = { 0x2030 },
2572*844be6e2SKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE4_ARES] = { 0x302c, 2 },
2573*844be6e2SKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE4_BCR] = { 0x3000 },
2574*844be6e2SKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE5_ARES] = { 0x3048, 2 },
2575*844be6e2SKathiravan Thirumoorthy 	[GCC_QUPV3_WRAP_SE5_BCR] = { 0x3030 },
2576*844be6e2SKathiravan Thirumoorthy 	[GCC_QUSB2_0_PHY_BCR] = { 0x2c068 },
2577*844be6e2SKathiravan Thirumoorthy 	[GCC_SDCC1_AHB_ARES] = { 0x3303c, 2 },
2578*844be6e2SKathiravan Thirumoorthy 	[GCC_SDCC1_APPS_ARES] = { 0x3302c, 2 },
2579*844be6e2SKathiravan Thirumoorthy 	[GCC_SDCC1_ICE_CORE_ARES] = { 0x33034, 2 },
2580*844be6e2SKathiravan Thirumoorthy 	[GCC_SDCC_BCR] = { 0x33000 },
2581*844be6e2SKathiravan Thirumoorthy 	[GCC_TLMM_AHB_ARES] = { 0x3e004, 2 },
2582*844be6e2SKathiravan Thirumoorthy 	[GCC_TLMM_ARES] = { 0x3e008, 2 },
2583*844be6e2SKathiravan Thirumoorthy 	[GCC_TLMM_BCR] = { 0x3e000 },
2584*844be6e2SKathiravan Thirumoorthy 	[GCC_UNIPHY0_AHB_ARES] = { 0x1704c, 2 },
2585*844be6e2SKathiravan Thirumoorthy 	[GCC_UNIPHY0_BCR] = { 0x17044 },
2586*844be6e2SKathiravan Thirumoorthy 	[GCC_UNIPHY0_SYS_ARES] = { 0x17048, 2 },
2587*844be6e2SKathiravan Thirumoorthy 	[GCC_UNIPHY1_AHB_ARES] = { 0x1705c, 2 },
2588*844be6e2SKathiravan Thirumoorthy 	[GCC_UNIPHY1_BCR] = { 0x17054 },
2589*844be6e2SKathiravan Thirumoorthy 	[GCC_UNIPHY1_SYS_ARES] = { 0x17058, 2 },
2590*844be6e2SKathiravan Thirumoorthy 	[GCC_UNIPHY2_AHB_ARES] = { 0x1706c, 2 },
2591*844be6e2SKathiravan Thirumoorthy 	[GCC_UNIPHY2_BCR] = { 0x17064 },
2592*844be6e2SKathiravan Thirumoorthy 	[GCC_UNIPHY2_SYS_ARES] = { 0x17068, 2 },
2593*844be6e2SKathiravan Thirumoorthy 	[GCC_USB0_AUX_ARES] = { 0x2c04c, 2 },
2594*844be6e2SKathiravan Thirumoorthy 	[GCC_USB0_MASTER_ARES] = { 0x2c044, 2 },
2595*844be6e2SKathiravan Thirumoorthy 	[GCC_USB0_MOCK_UTMI_ARES] = { 0x2c050, 2 },
2596*844be6e2SKathiravan Thirumoorthy 	[GCC_USB0_PHY_BCR] = { 0x2c06c },
2597*844be6e2SKathiravan Thirumoorthy 	[GCC_USB0_PHY_CFG_AHB_ARES] = { 0x2c05c, 2 },
2598*844be6e2SKathiravan Thirumoorthy 	[GCC_USB0_PIPE_ARES] = { 0x2c054, 2 },
2599*844be6e2SKathiravan Thirumoorthy 	[GCC_USB0_SLEEP_ARES] = { 0x2c058, 2 },
2600*844be6e2SKathiravan Thirumoorthy 	[GCC_USB3PHY_0_PHY_BCR] = { 0x2c070 },
2601*844be6e2SKathiravan Thirumoorthy 	[GCC_USB_BCR] = { 0x2c000 },
2602*844be6e2SKathiravan Thirumoorthy 	[GCC_QDSS_BCR] = { 0x2d000 },
2603*844be6e2SKathiravan Thirumoorthy };
2604*844be6e2SKathiravan Thirumoorthy 
2605*844be6e2SKathiravan Thirumoorthy static const struct of_device_id gcc_ipq5210_match_table[] = {
2606*844be6e2SKathiravan Thirumoorthy 	{ .compatible = "qcom,ipq5210-gcc" },
2607*844be6e2SKathiravan Thirumoorthy 	{ }
2608*844be6e2SKathiravan Thirumoorthy };
2609*844be6e2SKathiravan Thirumoorthy MODULE_DEVICE_TABLE(of, gcc_ipq5210_match_table);
2610*844be6e2SKathiravan Thirumoorthy 
2611*844be6e2SKathiravan Thirumoorthy static const struct regmap_config gcc_ipq5210_regmap_config = {
2612*844be6e2SKathiravan Thirumoorthy 	.reg_bits       = 32,
2613*844be6e2SKathiravan Thirumoorthy 	.reg_stride     = 4,
2614*844be6e2SKathiravan Thirumoorthy 	.val_bits       = 32,
2615*844be6e2SKathiravan Thirumoorthy 	.max_register   = 0x3f024,
2616*844be6e2SKathiravan Thirumoorthy 	.fast_io        = true,
2617*844be6e2SKathiravan Thirumoorthy };
2618*844be6e2SKathiravan Thirumoorthy 
2619*844be6e2SKathiravan Thirumoorthy static struct clk_hw *gcc_ipq5210_hws[] = {
2620*844be6e2SKathiravan Thirumoorthy 	&gpll0_div2.hw,
2621*844be6e2SKathiravan Thirumoorthy 	&gcc_xo_div4_clk_src.hw,
2622*844be6e2SKathiravan Thirumoorthy 	&gcc_pon_tm_div_clk_src.hw,
2623*844be6e2SKathiravan Thirumoorthy };
2624*844be6e2SKathiravan Thirumoorthy 
2625*844be6e2SKathiravan Thirumoorthy static const struct qcom_cc_desc gcc_ipq5210_desc = {
2626*844be6e2SKathiravan Thirumoorthy 	.config = &gcc_ipq5210_regmap_config,
2627*844be6e2SKathiravan Thirumoorthy 	.clks = gcc_ipq5210_clocks,
2628*844be6e2SKathiravan Thirumoorthy 	.num_clks = ARRAY_SIZE(gcc_ipq5210_clocks),
2629*844be6e2SKathiravan Thirumoorthy 	.resets = gcc_ipq5210_resets,
2630*844be6e2SKathiravan Thirumoorthy 	.num_resets = ARRAY_SIZE(gcc_ipq5210_resets),
2631*844be6e2SKathiravan Thirumoorthy 	.clk_hws = gcc_ipq5210_hws,
2632*844be6e2SKathiravan Thirumoorthy 	.num_clk_hws = ARRAY_SIZE(gcc_ipq5210_hws),
2633*844be6e2SKathiravan Thirumoorthy };
2634*844be6e2SKathiravan Thirumoorthy 
2635*844be6e2SKathiravan Thirumoorthy static int gcc_ipq5210_probe(struct platform_device *pdev)
2636*844be6e2SKathiravan Thirumoorthy {
2637*844be6e2SKathiravan Thirumoorthy 	return qcom_cc_probe(pdev, &gcc_ipq5210_desc);
2638*844be6e2SKathiravan Thirumoorthy }
2639*844be6e2SKathiravan Thirumoorthy 
2640*844be6e2SKathiravan Thirumoorthy static struct platform_driver gcc_ipq5210_driver = {
2641*844be6e2SKathiravan Thirumoorthy 	.probe = gcc_ipq5210_probe,
2642*844be6e2SKathiravan Thirumoorthy 	.driver = {
2643*844be6e2SKathiravan Thirumoorthy 		.name   = "qcom,gcc-ipq5210",
2644*844be6e2SKathiravan Thirumoorthy 		.of_match_table = gcc_ipq5210_match_table,
2645*844be6e2SKathiravan Thirumoorthy 	},
2646*844be6e2SKathiravan Thirumoorthy };
2647*844be6e2SKathiravan Thirumoorthy 
2648*844be6e2SKathiravan Thirumoorthy static int __init gcc_ipq5210_init(void)
2649*844be6e2SKathiravan Thirumoorthy {
2650*844be6e2SKathiravan Thirumoorthy 	return platform_driver_register(&gcc_ipq5210_driver);
2651*844be6e2SKathiravan Thirumoorthy }
2652*844be6e2SKathiravan Thirumoorthy core_initcall(gcc_ipq5210_init);
2653*844be6e2SKathiravan Thirumoorthy 
2654*844be6e2SKathiravan Thirumoorthy static void __exit gcc_ipq5210_exit(void)
2655*844be6e2SKathiravan Thirumoorthy {
2656*844be6e2SKathiravan Thirumoorthy 	platform_driver_unregister(&gcc_ipq5210_driver);
2657*844be6e2SKathiravan Thirumoorthy }
2658*844be6e2SKathiravan Thirumoorthy module_exit(gcc_ipq5210_exit);
2659*844be6e2SKathiravan Thirumoorthy 
2660*844be6e2SKathiravan Thirumoorthy MODULE_DESCRIPTION("QTI GCC IPQ5210 Driver");
2661*844be6e2SKathiravan Thirumoorthy MODULE_LICENSE("GPL");
2662