xref: /openbmc/linux/drivers/clk/qcom/gcc-sdx75.c (revision a96cbb14)
1108cdc09SImran Shaik // SPDX-License-Identifier: GPL-2.0-only
2108cdc09SImran Shaik /*
3108cdc09SImran Shaik  * Copyright (c) 2022-2023, Qualcomm Innovation Center, Inc. All rights reserved.
4108cdc09SImran Shaik  */
5108cdc09SImran Shaik 
6108cdc09SImran Shaik #include <linux/clk-provider.h>
7*a96cbb14SRob Herring #include <linux/mod_devicetable.h>
8108cdc09SImran Shaik #include <linux/module.h>
9*a96cbb14SRob Herring #include <linux/platform_device.h>
10108cdc09SImran Shaik #include <linux/regmap.h>
11108cdc09SImran Shaik 
12108cdc09SImran Shaik #include <dt-bindings/clock/qcom,sdx75-gcc.h>
13108cdc09SImran Shaik 
14108cdc09SImran Shaik #include "clk-alpha-pll.h"
15108cdc09SImran Shaik #include "clk-branch.h"
16108cdc09SImran Shaik #include "clk-rcg.h"
17108cdc09SImran Shaik #include "clk-regmap.h"
18108cdc09SImran Shaik #include "clk-regmap-divider.h"
19108cdc09SImran Shaik #include "clk-regmap-mux.h"
20108cdc09SImran Shaik #include "clk-regmap-phy-mux.h"
21108cdc09SImran Shaik #include "gdsc.h"
22108cdc09SImran Shaik #include "reset.h"
23108cdc09SImran Shaik 
24108cdc09SImran Shaik enum {
25108cdc09SImran Shaik 	DT_BI_TCXO,
26108cdc09SImran Shaik 	DT_SLEEP_CLK,
27108cdc09SImran Shaik 	DT_EMAC0_SGMIIPHY_MAC_RCLK,
28108cdc09SImran Shaik 	DT_EMAC0_SGMIIPHY_MAC_TCLK,
29108cdc09SImran Shaik 	DT_EMAC0_SGMIIPHY_RCLK,
30108cdc09SImran Shaik 	DT_EMAC0_SGMIIPHY_TCLK,
31108cdc09SImran Shaik 	DT_EMAC1_SGMIIPHY_MAC_RCLK,
32108cdc09SImran Shaik 	DT_EMAC1_SGMIIPHY_MAC_TCLK,
33108cdc09SImran Shaik 	DT_EMAC1_SGMIIPHY_RCLK,
34108cdc09SImran Shaik 	DT_EMAC1_SGMIIPHY_TCLK,
35108cdc09SImran Shaik 	DT_PCIE20_PHY_AUX_CLK,
36108cdc09SImran Shaik 	DT_PCIE_1_PIPE_CLK,
37108cdc09SImran Shaik 	DT_PCIE_2_PIPE_CLK,
38108cdc09SImran Shaik 	DT_PCIE_PIPE_CLK,
39108cdc09SImran Shaik 	DT_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK,
40108cdc09SImran Shaik };
41108cdc09SImran Shaik 
42108cdc09SImran Shaik enum {
43108cdc09SImran Shaik 	P_BI_TCXO,
44108cdc09SImran Shaik 	P_EMAC0_SGMIIPHY_MAC_RCLK,
45108cdc09SImran Shaik 	P_EMAC0_SGMIIPHY_MAC_TCLK,
46108cdc09SImran Shaik 	P_EMAC0_SGMIIPHY_RCLK,
47108cdc09SImran Shaik 	P_EMAC0_SGMIIPHY_TCLK,
48108cdc09SImran Shaik 	P_EMAC1_SGMIIPHY_MAC_RCLK,
49108cdc09SImran Shaik 	P_EMAC1_SGMIIPHY_MAC_TCLK,
50108cdc09SImran Shaik 	P_EMAC1_SGMIIPHY_RCLK,
51108cdc09SImran Shaik 	P_EMAC1_SGMIIPHY_TCLK,
52108cdc09SImran Shaik 	P_GPLL0_OUT_EVEN,
53108cdc09SImran Shaik 	P_GPLL0_OUT_MAIN,
54108cdc09SImran Shaik 	P_GPLL4_OUT_MAIN,
55108cdc09SImran Shaik 	P_GPLL5_OUT_MAIN,
56108cdc09SImran Shaik 	P_GPLL6_OUT_MAIN,
57108cdc09SImran Shaik 	P_GPLL8_OUT_MAIN,
58108cdc09SImran Shaik 	P_PCIE20_PHY_AUX_CLK,
59108cdc09SImran Shaik 	P_PCIE_1_PIPE_CLK,
60108cdc09SImran Shaik 	P_PCIE_2_PIPE_CLK,
61108cdc09SImran Shaik 	P_PCIE_PIPE_CLK,
62108cdc09SImran Shaik 	P_SLEEP_CLK,
63108cdc09SImran Shaik 	P_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK,
64108cdc09SImran Shaik };
65108cdc09SImran Shaik 
66108cdc09SImran Shaik static struct clk_alpha_pll gpll0 = {
67108cdc09SImran Shaik 	.offset = 0x0,
68108cdc09SImran Shaik 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
69108cdc09SImran Shaik 	.clkr = {
70108cdc09SImran Shaik 		.enable_reg = 0x7d000,
71108cdc09SImran Shaik 		.enable_mask = BIT(0),
72108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
73108cdc09SImran Shaik 			.name = "gpll0",
74108cdc09SImran Shaik 			.parent_data = &(const struct clk_parent_data) {
75108cdc09SImran Shaik 				.index = DT_BI_TCXO,
76108cdc09SImran Shaik 			},
77108cdc09SImran Shaik 			.num_parents = 1,
78108cdc09SImran Shaik 			.ops = &clk_alpha_pll_fixed_lucid_ole_ops,
79108cdc09SImran Shaik 		},
80108cdc09SImran Shaik 	},
81108cdc09SImran Shaik };
82108cdc09SImran Shaik 
83108cdc09SImran Shaik static const struct clk_div_table post_div_table_gpll0_out_even[] = {
84108cdc09SImran Shaik 	{ 0x1, 2 },
85108cdc09SImran Shaik 	{ }
86108cdc09SImran Shaik };
87108cdc09SImran Shaik 
88108cdc09SImran Shaik static struct clk_alpha_pll_postdiv gpll0_out_even = {
89108cdc09SImran Shaik 	.offset = 0x0,
90108cdc09SImran Shaik 	.post_div_shift = 10,
91108cdc09SImran Shaik 	.post_div_table = post_div_table_gpll0_out_even,
92108cdc09SImran Shaik 	.num_post_div = ARRAY_SIZE(post_div_table_gpll0_out_even),
93108cdc09SImran Shaik 	.width = 4,
94108cdc09SImran Shaik 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
95108cdc09SImran Shaik 	.clkr.hw.init = &(const struct clk_init_data) {
96108cdc09SImran Shaik 		.name = "gpll0_out_even",
97108cdc09SImran Shaik 		.parent_hws = (const struct clk_hw*[]) {
98108cdc09SImran Shaik 			&gpll0.clkr.hw,
99108cdc09SImran Shaik 		},
100108cdc09SImran Shaik 		.num_parents = 1,
101108cdc09SImran Shaik 		.ops = &clk_alpha_pll_postdiv_lucid_ole_ops,
102108cdc09SImran Shaik 	},
103108cdc09SImran Shaik };
104108cdc09SImran Shaik 
105108cdc09SImran Shaik static struct clk_alpha_pll gpll4 = {
106108cdc09SImran Shaik 	.offset = 0x4000,
107108cdc09SImran Shaik 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
108108cdc09SImran Shaik 	.clkr = {
109108cdc09SImran Shaik 		.enable_reg = 0x7d000,
110108cdc09SImran Shaik 		.enable_mask = BIT(4),
111108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
112108cdc09SImran Shaik 			.name = "gpll4",
113108cdc09SImran Shaik 			.parent_data = &(const struct clk_parent_data) {
114108cdc09SImran Shaik 				.index = DT_BI_TCXO,
115108cdc09SImran Shaik 			},
116108cdc09SImran Shaik 			.num_parents = 1,
117108cdc09SImran Shaik 			.ops = &clk_alpha_pll_fixed_lucid_ole_ops,
118108cdc09SImran Shaik 		},
119108cdc09SImran Shaik 	},
120108cdc09SImran Shaik };
121108cdc09SImran Shaik 
122108cdc09SImran Shaik static struct clk_alpha_pll gpll5 = {
123108cdc09SImran Shaik 	.offset = 0x5000,
124108cdc09SImran Shaik 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
125108cdc09SImran Shaik 	.clkr = {
126108cdc09SImran Shaik 		.enable_reg = 0x7d000,
127108cdc09SImran Shaik 		.enable_mask = BIT(5),
128108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
129108cdc09SImran Shaik 			.name = "gpll5",
130108cdc09SImran Shaik 			.parent_data = &(const struct clk_parent_data) {
131108cdc09SImran Shaik 				.index = DT_BI_TCXO,
132108cdc09SImran Shaik 			},
133108cdc09SImran Shaik 			.num_parents = 1,
134108cdc09SImran Shaik 			.ops = &clk_alpha_pll_fixed_lucid_ole_ops,
135108cdc09SImran Shaik 		},
136108cdc09SImran Shaik 	},
137108cdc09SImran Shaik };
138108cdc09SImran Shaik 
139108cdc09SImran Shaik static struct clk_alpha_pll gpll6 = {
140108cdc09SImran Shaik 	.offset = 0x6000,
141108cdc09SImran Shaik 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
142108cdc09SImran Shaik 	.clkr = {
143108cdc09SImran Shaik 		.enable_reg = 0x7d000,
144108cdc09SImran Shaik 		.enable_mask = BIT(6),
145108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
146108cdc09SImran Shaik 			.name = "gpll6",
147108cdc09SImran Shaik 			.parent_data = &(const struct clk_parent_data) {
148108cdc09SImran Shaik 				.index = DT_BI_TCXO,
149108cdc09SImran Shaik 			},
150108cdc09SImran Shaik 			.num_parents = 1,
151108cdc09SImran Shaik 			.ops = &clk_alpha_pll_fixed_lucid_ole_ops,
152108cdc09SImran Shaik 		},
153108cdc09SImran Shaik 	},
154108cdc09SImran Shaik };
155108cdc09SImran Shaik 
156108cdc09SImran Shaik static struct clk_alpha_pll gpll8 = {
157108cdc09SImran Shaik 	.offset = 0x8000,
158108cdc09SImran Shaik 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
159108cdc09SImran Shaik 	.clkr = {
160108cdc09SImran Shaik 		.enable_reg = 0x7d000,
161108cdc09SImran Shaik 		.enable_mask = BIT(8),
162108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
163108cdc09SImran Shaik 			.name = "gpll8",
164108cdc09SImran Shaik 			.parent_data = &(const struct clk_parent_data) {
165108cdc09SImran Shaik 				.index = DT_BI_TCXO,
166108cdc09SImran Shaik 			},
167108cdc09SImran Shaik 			.num_parents = 1,
168108cdc09SImran Shaik 			.ops = &clk_alpha_pll_fixed_lucid_ole_ops,
169108cdc09SImran Shaik 		},
170108cdc09SImran Shaik 	},
171108cdc09SImran Shaik };
172108cdc09SImran Shaik 
173108cdc09SImran Shaik static const struct parent_map gcc_parent_map_0[] = {
174108cdc09SImran Shaik 	{ P_BI_TCXO, 0 },
175108cdc09SImran Shaik 	{ P_GPLL0_OUT_MAIN, 1 },
176108cdc09SImran Shaik 	{ P_GPLL0_OUT_EVEN, 6 },
177108cdc09SImran Shaik };
178108cdc09SImran Shaik 
179108cdc09SImran Shaik static const struct clk_parent_data gcc_parent_data_0[] = {
180108cdc09SImran Shaik 	{ .index = DT_BI_TCXO },
181108cdc09SImran Shaik 	{ .hw = &gpll0.clkr.hw },
182108cdc09SImran Shaik 	{ .hw = &gpll0_out_even.clkr.hw },
183108cdc09SImran Shaik };
184108cdc09SImran Shaik 
185108cdc09SImran Shaik static const struct parent_map gcc_parent_map_1[] = {
186108cdc09SImran Shaik 	{ P_BI_TCXO, 0 },
187108cdc09SImran Shaik 	{ P_GPLL0_OUT_MAIN, 1 },
188108cdc09SImran Shaik 	{ P_GPLL4_OUT_MAIN, 2 },
189108cdc09SImran Shaik 	{ P_GPLL5_OUT_MAIN, 5 },
190108cdc09SImran Shaik 	{ P_GPLL0_OUT_EVEN, 6 },
191108cdc09SImran Shaik };
192108cdc09SImran Shaik 
193108cdc09SImran Shaik static const struct clk_parent_data gcc_parent_data_1[] = {
194108cdc09SImran Shaik 	{ .index = DT_BI_TCXO },
195108cdc09SImran Shaik 	{ .hw = &gpll0.clkr.hw },
196108cdc09SImran Shaik 	{ .hw = &gpll4.clkr.hw },
197108cdc09SImran Shaik 	{ .hw = &gpll5.clkr.hw },
198108cdc09SImran Shaik 	{ .hw = &gpll0_out_even.clkr.hw },
199108cdc09SImran Shaik };
200108cdc09SImran Shaik 
201108cdc09SImran Shaik static const struct parent_map gcc_parent_map_2[] = {
202108cdc09SImran Shaik 	{ P_BI_TCXO, 0 },
203108cdc09SImran Shaik 	{ P_GPLL0_OUT_MAIN, 1 },
204108cdc09SImran Shaik 	{ P_SLEEP_CLK, 5 },
205108cdc09SImran Shaik 	{ P_GPLL0_OUT_EVEN, 6 },
206108cdc09SImran Shaik };
207108cdc09SImran Shaik 
208108cdc09SImran Shaik static const struct clk_parent_data gcc_parent_data_2[] = {
209108cdc09SImran Shaik 	{ .index = DT_BI_TCXO },
210108cdc09SImran Shaik 	{ .hw = &gpll0.clkr.hw },
211108cdc09SImran Shaik 	{ .index = DT_SLEEP_CLK },
212108cdc09SImran Shaik 	{ .hw = &gpll0_out_even.clkr.hw },
213108cdc09SImran Shaik };
214108cdc09SImran Shaik 
215108cdc09SImran Shaik static const struct parent_map gcc_parent_map_3[] = {
216108cdc09SImran Shaik 	{ P_BI_TCXO, 0 },
217108cdc09SImran Shaik 	{ P_SLEEP_CLK, 5 },
218108cdc09SImran Shaik };
219108cdc09SImran Shaik 
220108cdc09SImran Shaik static const struct clk_parent_data gcc_parent_data_3[] = {
221108cdc09SImran Shaik 	{ .index = DT_BI_TCXO },
222108cdc09SImran Shaik 	{ .index = DT_SLEEP_CLK },
223108cdc09SImran Shaik };
224108cdc09SImran Shaik 
225108cdc09SImran Shaik static const struct parent_map gcc_parent_map_4[] = {
226108cdc09SImran Shaik 	{ P_BI_TCXO, 0 },
227108cdc09SImran Shaik 	{ P_GPLL0_OUT_MAIN, 1 },
228108cdc09SImran Shaik 	{ P_SLEEP_CLK, 5 },
229108cdc09SImran Shaik };
230108cdc09SImran Shaik 
231108cdc09SImran Shaik static const struct clk_parent_data gcc_parent_data_4[] = {
232108cdc09SImran Shaik 	{ .index = DT_BI_TCXO },
233108cdc09SImran Shaik 	{ .hw = &gpll0.clkr.hw },
234108cdc09SImran Shaik 	{ .index = DT_SLEEP_CLK },
235108cdc09SImran Shaik };
236108cdc09SImran Shaik 
237108cdc09SImran Shaik static const struct parent_map gcc_parent_map_5[] = {
238108cdc09SImran Shaik 	{ P_EMAC0_SGMIIPHY_RCLK, 0 },
239108cdc09SImran Shaik 	{ P_BI_TCXO, 2 },
240108cdc09SImran Shaik };
241108cdc09SImran Shaik 
242108cdc09SImran Shaik static const struct clk_parent_data gcc_parent_data_5[] = {
243108cdc09SImran Shaik 	{ .index = DT_EMAC0_SGMIIPHY_RCLK },
244108cdc09SImran Shaik 	{ .index = DT_BI_TCXO },
245108cdc09SImran Shaik };
246108cdc09SImran Shaik 
247108cdc09SImran Shaik static const struct parent_map gcc_parent_map_6[] = {
248108cdc09SImran Shaik 	{ P_EMAC0_SGMIIPHY_TCLK, 0 },
249108cdc09SImran Shaik 	{ P_BI_TCXO, 2 },
250108cdc09SImran Shaik };
251108cdc09SImran Shaik 
252108cdc09SImran Shaik static const struct clk_parent_data gcc_parent_data_6[] = {
253108cdc09SImran Shaik 	{ .index = DT_EMAC0_SGMIIPHY_TCLK },
254108cdc09SImran Shaik 	{ .index = DT_BI_TCXO },
255108cdc09SImran Shaik };
256108cdc09SImran Shaik 
257108cdc09SImran Shaik static const struct parent_map gcc_parent_map_7[] = {
258108cdc09SImran Shaik 	{ P_EMAC0_SGMIIPHY_MAC_RCLK, 0 },
259108cdc09SImran Shaik 	{ P_BI_TCXO, 2 },
260108cdc09SImran Shaik };
261108cdc09SImran Shaik 
262108cdc09SImran Shaik static const struct clk_parent_data gcc_parent_data_7[] = {
263108cdc09SImran Shaik 	{ .index = DT_EMAC0_SGMIIPHY_MAC_RCLK },
264108cdc09SImran Shaik 	{ .index = DT_BI_TCXO },
265108cdc09SImran Shaik };
266108cdc09SImran Shaik 
267108cdc09SImran Shaik static const struct parent_map gcc_parent_map_8[] = {
268108cdc09SImran Shaik 	{ P_EMAC0_SGMIIPHY_MAC_TCLK, 0 },
269108cdc09SImran Shaik 	{ P_BI_TCXO, 2 },
270108cdc09SImran Shaik };
271108cdc09SImran Shaik 
272108cdc09SImran Shaik static const struct clk_parent_data gcc_parent_data_8[] = {
273108cdc09SImran Shaik 	{ .index = DT_EMAC0_SGMIIPHY_MAC_TCLK },
274108cdc09SImran Shaik 	{ .index = DT_BI_TCXO },
275108cdc09SImran Shaik };
276108cdc09SImran Shaik 
277108cdc09SImran Shaik static const struct parent_map gcc_parent_map_9[] = {
278108cdc09SImran Shaik 	{ P_EMAC1_SGMIIPHY_RCLK, 0 },
279108cdc09SImran Shaik 	{ P_BI_TCXO, 2 },
280108cdc09SImran Shaik };
281108cdc09SImran Shaik 
282108cdc09SImran Shaik static const struct clk_parent_data gcc_parent_data_9[] = {
283108cdc09SImran Shaik 	{ .index = DT_EMAC1_SGMIIPHY_RCLK },
284108cdc09SImran Shaik 	{ .index = DT_BI_TCXO },
285108cdc09SImran Shaik };
286108cdc09SImran Shaik 
287108cdc09SImran Shaik static const struct parent_map gcc_parent_map_10[] = {
288108cdc09SImran Shaik 	{ P_EMAC1_SGMIIPHY_TCLK, 0 },
289108cdc09SImran Shaik 	{ P_BI_TCXO, 2 },
290108cdc09SImran Shaik };
291108cdc09SImran Shaik 
292108cdc09SImran Shaik static const struct clk_parent_data gcc_parent_data_10[] = {
293108cdc09SImran Shaik 	{ .index = DT_EMAC1_SGMIIPHY_TCLK },
294108cdc09SImran Shaik 	{ .index = DT_BI_TCXO },
295108cdc09SImran Shaik };
296108cdc09SImran Shaik 
297108cdc09SImran Shaik static const struct parent_map gcc_parent_map_11[] = {
298108cdc09SImran Shaik 	{ P_EMAC1_SGMIIPHY_MAC_RCLK, 0 },
299108cdc09SImran Shaik 	{ P_BI_TCXO, 2 },
300108cdc09SImran Shaik };
301108cdc09SImran Shaik 
302108cdc09SImran Shaik static const struct clk_parent_data gcc_parent_data_11[] = {
303108cdc09SImran Shaik 	{ .index = DT_EMAC1_SGMIIPHY_MAC_RCLK },
304108cdc09SImran Shaik 	{ .index = DT_BI_TCXO },
305108cdc09SImran Shaik };
306108cdc09SImran Shaik 
307108cdc09SImran Shaik static const struct parent_map gcc_parent_map_12[] = {
308108cdc09SImran Shaik 	{ P_EMAC1_SGMIIPHY_MAC_TCLK, 0 },
309108cdc09SImran Shaik 	{ P_BI_TCXO, 2 },
310108cdc09SImran Shaik };
311108cdc09SImran Shaik 
312108cdc09SImran Shaik static const struct clk_parent_data gcc_parent_data_12[] = {
313108cdc09SImran Shaik 	{ .index = DT_EMAC1_SGMIIPHY_MAC_TCLK },
314108cdc09SImran Shaik 	{ .index = DT_BI_TCXO },
315108cdc09SImran Shaik };
316108cdc09SImran Shaik 
317108cdc09SImran Shaik static const struct parent_map gcc_parent_map_15[] = {
318108cdc09SImran Shaik 	{ P_PCIE20_PHY_AUX_CLK, 0 },
319108cdc09SImran Shaik 	{ P_BI_TCXO, 2 },
320108cdc09SImran Shaik };
321108cdc09SImran Shaik 
322108cdc09SImran Shaik static const struct clk_parent_data gcc_parent_data_15[] = {
323108cdc09SImran Shaik 	{ .index = DT_PCIE20_PHY_AUX_CLK },
324108cdc09SImran Shaik 	{ .index = DT_BI_TCXO },
325108cdc09SImran Shaik };
326108cdc09SImran Shaik 
327108cdc09SImran Shaik static const struct parent_map gcc_parent_map_17[] = {
328108cdc09SImran Shaik 	{ P_BI_TCXO, 0 },
329108cdc09SImran Shaik 	{ P_GPLL0_OUT_MAIN, 1 },
330108cdc09SImran Shaik 	{ P_GPLL6_OUT_MAIN, 2 },
331108cdc09SImran Shaik 	{ P_GPLL0_OUT_EVEN, 6 },
332108cdc09SImran Shaik };
333108cdc09SImran Shaik 
334108cdc09SImran Shaik static const struct clk_parent_data gcc_parent_data_17[] = {
335108cdc09SImran Shaik 	{ .index = DT_BI_TCXO },
336108cdc09SImran Shaik 	{ .hw = &gpll0.clkr.hw },
337108cdc09SImran Shaik 	{ .hw = &gpll6.clkr.hw },
338108cdc09SImran Shaik 	{ .hw = &gpll0_out_even.clkr.hw },
339108cdc09SImran Shaik };
340108cdc09SImran Shaik 
341108cdc09SImran Shaik static const struct parent_map gcc_parent_map_18[] = {
342108cdc09SImran Shaik 	{ P_BI_TCXO, 0 },
343108cdc09SImran Shaik 	{ P_GPLL0_OUT_MAIN, 1 },
344108cdc09SImran Shaik 	{ P_GPLL8_OUT_MAIN, 2 },
345108cdc09SImran Shaik 	{ P_GPLL0_OUT_EVEN, 6 },
346108cdc09SImran Shaik };
347108cdc09SImran Shaik 
348108cdc09SImran Shaik static const struct clk_parent_data gcc_parent_data_18[] = {
349108cdc09SImran Shaik 	{ .index = DT_BI_TCXO },
350108cdc09SImran Shaik 	{ .hw = &gpll0.clkr.hw },
351108cdc09SImran Shaik 	{ .hw = &gpll8.clkr.hw },
352108cdc09SImran Shaik 	{ .hw = &gpll0_out_even.clkr.hw },
353108cdc09SImran Shaik };
354108cdc09SImran Shaik 
355108cdc09SImran Shaik static const struct parent_map gcc_parent_map_19[] = {
356108cdc09SImran Shaik 	{ P_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK, 0 },
357108cdc09SImran Shaik 	{ P_BI_TCXO, 2 },
358108cdc09SImran Shaik };
359108cdc09SImran Shaik 
360108cdc09SImran Shaik static const struct clk_parent_data gcc_parent_data_19[] = {
361108cdc09SImran Shaik 	{ .index = DT_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK },
362108cdc09SImran Shaik 	{ .index = DT_BI_TCXO },
363108cdc09SImran Shaik };
364108cdc09SImran Shaik 
365108cdc09SImran Shaik static struct clk_regmap_mux gcc_emac0_cc_sgmiiphy_rx_clk_src = {
366108cdc09SImran Shaik 	.reg = 0x71060,
367108cdc09SImran Shaik 	.shift = 0,
368108cdc09SImran Shaik 	.width = 2,
369108cdc09SImran Shaik 	.parent_map = gcc_parent_map_5,
370108cdc09SImran Shaik 	.clkr = {
371108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
372108cdc09SImran Shaik 			.name = "gcc_emac0_cc_sgmiiphy_rx_clk_src",
373108cdc09SImran Shaik 			.parent_data = gcc_parent_data_5,
374108cdc09SImran Shaik 			.num_parents = ARRAY_SIZE(gcc_parent_data_5),
375108cdc09SImran Shaik 			.ops = &clk_regmap_mux_closest_ops,
376108cdc09SImran Shaik 		},
377108cdc09SImran Shaik 	},
378108cdc09SImran Shaik };
379108cdc09SImran Shaik 
380108cdc09SImran Shaik static struct clk_regmap_mux gcc_emac0_cc_sgmiiphy_tx_clk_src = {
381108cdc09SImran Shaik 	.reg = 0x71058,
382108cdc09SImran Shaik 	.shift = 0,
383108cdc09SImran Shaik 	.width = 2,
384108cdc09SImran Shaik 	.parent_map = gcc_parent_map_6,
385108cdc09SImran Shaik 	.clkr = {
386108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
387108cdc09SImran Shaik 			.name = "gcc_emac0_cc_sgmiiphy_tx_clk_src",
388108cdc09SImran Shaik 			.parent_data = gcc_parent_data_6,
389108cdc09SImran Shaik 			.num_parents = ARRAY_SIZE(gcc_parent_data_6),
390108cdc09SImran Shaik 			.ops = &clk_regmap_mux_closest_ops,
391108cdc09SImran Shaik 		},
392108cdc09SImran Shaik 	},
393108cdc09SImran Shaik };
394108cdc09SImran Shaik 
395108cdc09SImran Shaik static struct clk_regmap_mux gcc_emac0_sgmiiphy_mac_rclk_src = {
396108cdc09SImran Shaik 	.reg = 0x71098,
397108cdc09SImran Shaik 	.shift = 0,
398108cdc09SImran Shaik 	.width = 2,
399108cdc09SImran Shaik 	.parent_map = gcc_parent_map_7,
400108cdc09SImran Shaik 	.clkr = {
401108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
402108cdc09SImran Shaik 			.name = "gcc_emac0_sgmiiphy_mac_rclk_src",
403108cdc09SImran Shaik 			.parent_data = gcc_parent_data_7,
404108cdc09SImran Shaik 			.num_parents = ARRAY_SIZE(gcc_parent_data_7),
405108cdc09SImran Shaik 			.ops = &clk_regmap_mux_closest_ops,
406108cdc09SImran Shaik 		},
407108cdc09SImran Shaik 	},
408108cdc09SImran Shaik };
409108cdc09SImran Shaik 
410108cdc09SImran Shaik static struct clk_regmap_mux gcc_emac0_sgmiiphy_mac_tclk_src = {
411108cdc09SImran Shaik 	.reg = 0x71094,
412108cdc09SImran Shaik 	.shift = 0,
413108cdc09SImran Shaik 	.width = 2,
414108cdc09SImran Shaik 	.parent_map = gcc_parent_map_8,
415108cdc09SImran Shaik 	.clkr = {
416108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
417108cdc09SImran Shaik 			.name = "gcc_emac0_sgmiiphy_mac_tclk_src",
418108cdc09SImran Shaik 			.parent_data = gcc_parent_data_8,
419108cdc09SImran Shaik 			.num_parents = ARRAY_SIZE(gcc_parent_data_8),
420108cdc09SImran Shaik 			.ops = &clk_regmap_mux_closest_ops,
421108cdc09SImran Shaik 		},
422108cdc09SImran Shaik 	},
423108cdc09SImran Shaik };
424108cdc09SImran Shaik 
425108cdc09SImran Shaik static struct clk_regmap_mux gcc_emac1_cc_sgmiiphy_rx_clk_src = {
426108cdc09SImran Shaik 	.reg = 0x72060,
427108cdc09SImran Shaik 	.shift = 0,
428108cdc09SImran Shaik 	.width = 2,
429108cdc09SImran Shaik 	.parent_map = gcc_parent_map_9,
430108cdc09SImran Shaik 	.clkr = {
431108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
432108cdc09SImran Shaik 			.name = "gcc_emac1_cc_sgmiiphy_rx_clk_src",
433108cdc09SImran Shaik 			.parent_data = gcc_parent_data_9,
434108cdc09SImran Shaik 			.num_parents = ARRAY_SIZE(gcc_parent_data_9),
435108cdc09SImran Shaik 			.ops = &clk_regmap_mux_closest_ops,
436108cdc09SImran Shaik 		},
437108cdc09SImran Shaik 	},
438108cdc09SImran Shaik };
439108cdc09SImran Shaik 
440108cdc09SImran Shaik static struct clk_regmap_mux gcc_emac1_cc_sgmiiphy_tx_clk_src = {
441108cdc09SImran Shaik 	.reg = 0x72058,
442108cdc09SImran Shaik 	.shift = 0,
443108cdc09SImran Shaik 	.width = 2,
444108cdc09SImran Shaik 	.parent_map = gcc_parent_map_10,
445108cdc09SImran Shaik 	.clkr = {
446108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
447108cdc09SImran Shaik 			.name = "gcc_emac1_cc_sgmiiphy_tx_clk_src",
448108cdc09SImran Shaik 			.parent_data = gcc_parent_data_10,
449108cdc09SImran Shaik 			.num_parents = ARRAY_SIZE(gcc_parent_data_10),
450108cdc09SImran Shaik 			.ops = &clk_regmap_mux_closest_ops,
451108cdc09SImran Shaik 		},
452108cdc09SImran Shaik 	},
453108cdc09SImran Shaik };
454108cdc09SImran Shaik 
455108cdc09SImran Shaik static struct clk_regmap_mux gcc_emac1_sgmiiphy_mac_rclk_src = {
456108cdc09SImran Shaik 	.reg = 0x72098,
457108cdc09SImran Shaik 	.shift = 0,
458108cdc09SImran Shaik 	.width = 2,
459108cdc09SImran Shaik 	.parent_map = gcc_parent_map_11,
460108cdc09SImran Shaik 	.clkr = {
461108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
462108cdc09SImran Shaik 			.name = "gcc_emac1_sgmiiphy_mac_rclk_src",
463108cdc09SImran Shaik 			.parent_data = gcc_parent_data_11,
464108cdc09SImran Shaik 			.num_parents = ARRAY_SIZE(gcc_parent_data_11),
465108cdc09SImran Shaik 			.ops = &clk_regmap_mux_closest_ops,
466108cdc09SImran Shaik 		},
467108cdc09SImran Shaik 	},
468108cdc09SImran Shaik };
469108cdc09SImran Shaik 
470108cdc09SImran Shaik static struct clk_regmap_mux gcc_emac1_sgmiiphy_mac_tclk_src = {
471108cdc09SImran Shaik 	.reg = 0x72094,
472108cdc09SImran Shaik 	.shift = 0,
473108cdc09SImran Shaik 	.width = 2,
474108cdc09SImran Shaik 	.parent_map = gcc_parent_map_12,
475108cdc09SImran Shaik 	.clkr = {
476108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
477108cdc09SImran Shaik 			.name = "gcc_emac1_sgmiiphy_mac_tclk_src",
478108cdc09SImran Shaik 			.parent_data = gcc_parent_data_12,
479108cdc09SImran Shaik 			.num_parents = ARRAY_SIZE(gcc_parent_data_12),
480108cdc09SImran Shaik 			.ops = &clk_regmap_mux_closest_ops,
481108cdc09SImran Shaik 		},
482108cdc09SImran Shaik 	},
483108cdc09SImran Shaik };
484108cdc09SImran Shaik 
485108cdc09SImran Shaik static struct clk_regmap_phy_mux gcc_pcie_1_pipe_clk_src = {
486108cdc09SImran Shaik 	.reg = 0x67084,
487108cdc09SImran Shaik 	.clkr = {
488108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
489108cdc09SImran Shaik 			.name = "gcc_pcie_1_pipe_clk_src",
490108cdc09SImran Shaik 			.parent_data = &(const struct clk_parent_data) {
491108cdc09SImran Shaik 				.index = DT_PCIE_1_PIPE_CLK,
492108cdc09SImran Shaik 			},
493108cdc09SImran Shaik 			.num_parents = 1,
494108cdc09SImran Shaik 			.ops = &clk_regmap_phy_mux_ops,
495108cdc09SImran Shaik 		},
496108cdc09SImran Shaik 	},
497108cdc09SImran Shaik };
498108cdc09SImran Shaik 
499108cdc09SImran Shaik static struct clk_regmap_phy_mux gcc_pcie_2_pipe_clk_src = {
500108cdc09SImran Shaik 	.reg = 0x68050,
501108cdc09SImran Shaik 	.clkr = {
502108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
503108cdc09SImran Shaik 			.name = "gcc_pcie_2_pipe_clk_src",
504108cdc09SImran Shaik 			.parent_data = &(const struct clk_parent_data) {
505108cdc09SImran Shaik 				.index = DT_PCIE_2_PIPE_CLK,
506108cdc09SImran Shaik 			},
507108cdc09SImran Shaik 			.num_parents = 1,
508108cdc09SImran Shaik 			.ops = &clk_regmap_phy_mux_ops,
509108cdc09SImran Shaik 		},
510108cdc09SImran Shaik 	},
511108cdc09SImran Shaik };
512108cdc09SImran Shaik 
513108cdc09SImran Shaik static struct clk_regmap_mux gcc_pcie_aux_clk_src = {
514108cdc09SImran Shaik 	.reg = 0x53074,
515108cdc09SImran Shaik 	.shift = 0,
516108cdc09SImran Shaik 	.width = 2,
517108cdc09SImran Shaik 	.parent_map = gcc_parent_map_15,
518108cdc09SImran Shaik 	.clkr = {
519108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
520108cdc09SImran Shaik 			.name = "gcc_pcie_aux_clk_src",
521108cdc09SImran Shaik 			.parent_data = gcc_parent_data_15,
522108cdc09SImran Shaik 			.num_parents = ARRAY_SIZE(gcc_parent_data_15),
523108cdc09SImran Shaik 			.ops = &clk_regmap_mux_closest_ops,
524108cdc09SImran Shaik 		},
525108cdc09SImran Shaik 	},
526108cdc09SImran Shaik };
527108cdc09SImran Shaik 
528108cdc09SImran Shaik static struct clk_regmap_phy_mux gcc_pcie_pipe_clk_src = {
529108cdc09SImran Shaik 	.reg = 0x53058,
530108cdc09SImran Shaik 	.clkr = {
531108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
532108cdc09SImran Shaik 			.name = "gcc_pcie_pipe_clk_src",
533108cdc09SImran Shaik 			.parent_data = &(const struct clk_parent_data) {
534108cdc09SImran Shaik 				.index = DT_PCIE_PIPE_CLK,
535108cdc09SImran Shaik 			},
536108cdc09SImran Shaik 			.num_parents = 1,
537108cdc09SImran Shaik 			.ops = &clk_regmap_phy_mux_ops,
538108cdc09SImran Shaik 		},
539108cdc09SImran Shaik 	},
540108cdc09SImran Shaik };
541108cdc09SImran Shaik 
542108cdc09SImran Shaik static struct clk_regmap_mux gcc_usb3_phy_pipe_clk_src = {
543108cdc09SImran Shaik 	.reg = 0x27070,
544108cdc09SImran Shaik 	.shift = 0,
545108cdc09SImran Shaik 	.width = 2,
546108cdc09SImran Shaik 	.parent_map = gcc_parent_map_19,
547108cdc09SImran Shaik 	.clkr = {
548108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
549108cdc09SImran Shaik 			.name = "gcc_usb3_phy_pipe_clk_src",
550108cdc09SImran Shaik 			.parent_data = gcc_parent_data_19,
551108cdc09SImran Shaik 			.num_parents = ARRAY_SIZE(gcc_parent_data_19),
552108cdc09SImran Shaik 			.ops = &clk_regmap_mux_closest_ops,
553108cdc09SImran Shaik 		},
554108cdc09SImran Shaik 	},
555108cdc09SImran Shaik };
556108cdc09SImran Shaik 
557108cdc09SImran Shaik static const struct freq_tbl ftbl_gcc_eee_emac0_clk_src[] = {
558108cdc09SImran Shaik 	F(100000000, P_GPLL0_OUT_EVEN, 3, 0, 0),
559108cdc09SImran Shaik 	{ }
560108cdc09SImran Shaik };
561108cdc09SImran Shaik 
562108cdc09SImran Shaik static struct clk_rcg2 gcc_eee_emac0_clk_src = {
563108cdc09SImran Shaik 	.cmd_rcgr = 0x710b0,
564108cdc09SImran Shaik 	.mnd_width = 16,
565108cdc09SImran Shaik 	.hid_width = 5,
566108cdc09SImran Shaik 	.parent_map = gcc_parent_map_2,
567108cdc09SImran Shaik 	.freq_tbl = ftbl_gcc_eee_emac0_clk_src,
568108cdc09SImran Shaik 	.clkr.hw.init = &(const struct clk_init_data) {
569108cdc09SImran Shaik 		.name = "gcc_eee_emac0_clk_src",
570108cdc09SImran Shaik 		.parent_data = gcc_parent_data_2,
571108cdc09SImran Shaik 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
572108cdc09SImran Shaik 		.ops = &clk_rcg2_shared_ops,
573108cdc09SImran Shaik 	},
574108cdc09SImran Shaik };
575108cdc09SImran Shaik 
576108cdc09SImran Shaik static struct clk_rcg2 gcc_eee_emac1_clk_src = {
577108cdc09SImran Shaik 	.cmd_rcgr = 0x720b0,
578108cdc09SImran Shaik 	.mnd_width = 16,
579108cdc09SImran Shaik 	.hid_width = 5,
580108cdc09SImran Shaik 	.parent_map = gcc_parent_map_2,
581108cdc09SImran Shaik 	.freq_tbl = ftbl_gcc_eee_emac0_clk_src,
582108cdc09SImran Shaik 	.clkr.hw.init = &(const struct clk_init_data) {
583108cdc09SImran Shaik 		.name = "gcc_eee_emac1_clk_src",
584108cdc09SImran Shaik 		.parent_data = gcc_parent_data_2,
585108cdc09SImran Shaik 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
586108cdc09SImran Shaik 		.ops = &clk_rcg2_shared_ops,
587108cdc09SImran Shaik 	},
588108cdc09SImran Shaik };
589108cdc09SImran Shaik 
590108cdc09SImran Shaik static const struct freq_tbl ftbl_gcc_emac0_phy_aux_clk_src[] = {
591108cdc09SImran Shaik 	F(19200000, P_BI_TCXO, 1, 0, 0),
592108cdc09SImran Shaik 	{ }
593108cdc09SImran Shaik };
594108cdc09SImran Shaik 
595108cdc09SImran Shaik static struct clk_rcg2 gcc_emac0_phy_aux_clk_src = {
596108cdc09SImran Shaik 	.cmd_rcgr = 0x7102c,
597108cdc09SImran Shaik 	.mnd_width = 0,
598108cdc09SImran Shaik 	.hid_width = 5,
599108cdc09SImran Shaik 	.parent_map = gcc_parent_map_4,
600108cdc09SImran Shaik 	.freq_tbl = ftbl_gcc_emac0_phy_aux_clk_src,
601108cdc09SImran Shaik 	.clkr.hw.init = &(const struct clk_init_data) {
602108cdc09SImran Shaik 		.name = "gcc_emac0_phy_aux_clk_src",
603108cdc09SImran Shaik 		.parent_data = gcc_parent_data_4,
604108cdc09SImran Shaik 		.num_parents = ARRAY_SIZE(gcc_parent_data_4),
605108cdc09SImran Shaik 		.ops = &clk_rcg2_shared_ops,
606108cdc09SImran Shaik 	},
607108cdc09SImran Shaik };
608108cdc09SImran Shaik 
609108cdc09SImran Shaik static const struct freq_tbl ftbl_gcc_emac0_ptp_clk_src[] = {
610108cdc09SImran Shaik 	F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0),
611108cdc09SImran Shaik 	F(125000000, P_GPLL4_OUT_MAIN, 4, 0, 0),
612108cdc09SImran Shaik 	F(230400000, P_GPLL5_OUT_MAIN, 3.5, 0, 0),
613108cdc09SImran Shaik 	{ }
614108cdc09SImran Shaik };
615108cdc09SImran Shaik 
616108cdc09SImran Shaik static struct clk_rcg2 gcc_emac0_ptp_clk_src = {
617108cdc09SImran Shaik 	.cmd_rcgr = 0x7107c,
618108cdc09SImran Shaik 	.mnd_width = 16,
619108cdc09SImran Shaik 	.hid_width = 5,
620108cdc09SImran Shaik 	.parent_map = gcc_parent_map_1,
621108cdc09SImran Shaik 	.freq_tbl = ftbl_gcc_emac0_ptp_clk_src,
622108cdc09SImran Shaik 	.clkr.hw.init = &(const struct clk_init_data) {
623108cdc09SImran Shaik 		.name = "gcc_emac0_ptp_clk_src",
624108cdc09SImran Shaik 		.parent_data = gcc_parent_data_1,
625108cdc09SImran Shaik 		.num_parents = ARRAY_SIZE(gcc_parent_data_1),
626108cdc09SImran Shaik 		.ops = &clk_rcg2_shared_ops,
627108cdc09SImran Shaik 	},
628108cdc09SImran Shaik };
629108cdc09SImran Shaik 
630108cdc09SImran Shaik static const struct freq_tbl ftbl_gcc_emac0_rgmii_clk_src[] = {
631108cdc09SImran Shaik 	F(5000000, P_GPLL0_OUT_EVEN, 10, 1, 6),
632108cdc09SImran Shaik 	F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
633108cdc09SImran Shaik 	F(125000000, P_GPLL4_OUT_MAIN, 4, 0, 0),
634108cdc09SImran Shaik 	F(250000000, P_GPLL4_OUT_MAIN, 2, 0, 0),
635108cdc09SImran Shaik 	{ }
636108cdc09SImran Shaik };
637108cdc09SImran Shaik 
638108cdc09SImran Shaik static struct clk_rcg2 gcc_emac0_rgmii_clk_src = {
639108cdc09SImran Shaik 	.cmd_rcgr = 0x71064,
640108cdc09SImran Shaik 	.mnd_width = 16,
641108cdc09SImran Shaik 	.hid_width = 5,
642108cdc09SImran Shaik 	.parent_map = gcc_parent_map_1,
643108cdc09SImran Shaik 	.freq_tbl = ftbl_gcc_emac0_rgmii_clk_src,
644108cdc09SImran Shaik 	.clkr.hw.init = &(const struct clk_init_data) {
645108cdc09SImran Shaik 		.name = "gcc_emac0_rgmii_clk_src",
646108cdc09SImran Shaik 		.parent_data = gcc_parent_data_1,
647108cdc09SImran Shaik 		.num_parents = ARRAY_SIZE(gcc_parent_data_1),
648108cdc09SImran Shaik 		.ops = &clk_rcg2_shared_ops,
649108cdc09SImran Shaik 	},
650108cdc09SImran Shaik };
651108cdc09SImran Shaik 
652108cdc09SImran Shaik static struct clk_rcg2 gcc_emac1_phy_aux_clk_src = {
653108cdc09SImran Shaik 	.cmd_rcgr = 0x7202c,
654108cdc09SImran Shaik 	.mnd_width = 0,
655108cdc09SImran Shaik 	.hid_width = 5,
656108cdc09SImran Shaik 	.parent_map = gcc_parent_map_4,
657108cdc09SImran Shaik 	.freq_tbl = ftbl_gcc_emac0_phy_aux_clk_src,
658108cdc09SImran Shaik 	.clkr.hw.init = &(const struct clk_init_data) {
659108cdc09SImran Shaik 		.name = "gcc_emac1_phy_aux_clk_src",
660108cdc09SImran Shaik 		.parent_data = gcc_parent_data_4,
661108cdc09SImran Shaik 		.num_parents = ARRAY_SIZE(gcc_parent_data_4),
662108cdc09SImran Shaik 		.ops = &clk_rcg2_shared_ops,
663108cdc09SImran Shaik 	},
664108cdc09SImran Shaik };
665108cdc09SImran Shaik 
666108cdc09SImran Shaik static struct clk_rcg2 gcc_emac1_ptp_clk_src = {
667108cdc09SImran Shaik 	.cmd_rcgr = 0x7207c,
668108cdc09SImran Shaik 	.mnd_width = 16,
669108cdc09SImran Shaik 	.hid_width = 5,
670108cdc09SImran Shaik 	.parent_map = gcc_parent_map_1,
671108cdc09SImran Shaik 	.freq_tbl = ftbl_gcc_emac0_ptp_clk_src,
672108cdc09SImran Shaik 	.clkr.hw.init = &(const struct clk_init_data) {
673108cdc09SImran Shaik 		.name = "gcc_emac1_ptp_clk_src",
674108cdc09SImran Shaik 		.parent_data = gcc_parent_data_1,
675108cdc09SImran Shaik 		.num_parents = ARRAY_SIZE(gcc_parent_data_1),
676108cdc09SImran Shaik 		.ops = &clk_rcg2_shared_ops,
677108cdc09SImran Shaik 	},
678108cdc09SImran Shaik };
679108cdc09SImran Shaik 
680108cdc09SImran Shaik static struct clk_rcg2 gcc_emac1_rgmii_clk_src = {
681108cdc09SImran Shaik 	.cmd_rcgr = 0x72064,
682108cdc09SImran Shaik 	.mnd_width = 16,
683108cdc09SImran Shaik 	.hid_width = 5,
684108cdc09SImran Shaik 	.parent_map = gcc_parent_map_1,
685108cdc09SImran Shaik 	.freq_tbl = ftbl_gcc_emac0_rgmii_clk_src,
686108cdc09SImran Shaik 	.clkr.hw.init = &(const struct clk_init_data) {
687108cdc09SImran Shaik 		.name = "gcc_emac1_rgmii_clk_src",
688108cdc09SImran Shaik 		.parent_data = gcc_parent_data_1,
689108cdc09SImran Shaik 		.num_parents = ARRAY_SIZE(gcc_parent_data_1),
690108cdc09SImran Shaik 		.ops = &clk_rcg2_shared_ops,
691108cdc09SImran Shaik 	},
692108cdc09SImran Shaik };
693108cdc09SImran Shaik 
694108cdc09SImran Shaik static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = {
695108cdc09SImran Shaik 	F(19200000, P_BI_TCXO, 1, 0, 0),
696108cdc09SImran Shaik 	F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
697108cdc09SImran Shaik 	F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
698108cdc09SImran Shaik 	F(200000000, P_GPLL0_OUT_MAIN, 3, 0, 0),
699108cdc09SImran Shaik 	{ }
700108cdc09SImran Shaik };
701108cdc09SImran Shaik 
702108cdc09SImran Shaik static struct clk_rcg2 gcc_gp1_clk_src = {
703108cdc09SImran Shaik 	.cmd_rcgr = 0x47004,
704108cdc09SImran Shaik 	.mnd_width = 16,
705108cdc09SImran Shaik 	.hid_width = 5,
706108cdc09SImran Shaik 	.parent_map = gcc_parent_map_2,
707108cdc09SImran Shaik 	.freq_tbl = ftbl_gcc_gp1_clk_src,
708108cdc09SImran Shaik 	.clkr.hw.init = &(const struct clk_init_data) {
709108cdc09SImran Shaik 		.name = "gcc_gp1_clk_src",
710108cdc09SImran Shaik 		.parent_data = gcc_parent_data_2,
711108cdc09SImran Shaik 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
712108cdc09SImran Shaik 		.ops = &clk_rcg2_shared_ops,
713108cdc09SImran Shaik 	},
714108cdc09SImran Shaik };
715108cdc09SImran Shaik 
716108cdc09SImran Shaik static struct clk_rcg2 gcc_gp2_clk_src = {
717108cdc09SImran Shaik 	.cmd_rcgr = 0x48004,
718108cdc09SImran Shaik 	.mnd_width = 16,
719108cdc09SImran Shaik 	.hid_width = 5,
720108cdc09SImran Shaik 	.parent_map = gcc_parent_map_2,
721108cdc09SImran Shaik 	.freq_tbl = ftbl_gcc_gp1_clk_src,
722108cdc09SImran Shaik 	.clkr.hw.init = &(const struct clk_init_data) {
723108cdc09SImran Shaik 		.name = "gcc_gp2_clk_src",
724108cdc09SImran Shaik 		.parent_data = gcc_parent_data_2,
725108cdc09SImran Shaik 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
726108cdc09SImran Shaik 		.ops = &clk_rcg2_shared_ops,
727108cdc09SImran Shaik 	},
728108cdc09SImran Shaik };
729108cdc09SImran Shaik 
730108cdc09SImran Shaik static struct clk_rcg2 gcc_gp3_clk_src = {
731108cdc09SImran Shaik 	.cmd_rcgr = 0x49004,
732108cdc09SImran Shaik 	.mnd_width = 16,
733108cdc09SImran Shaik 	.hid_width = 5,
734108cdc09SImran Shaik 	.parent_map = gcc_parent_map_2,
735108cdc09SImran Shaik 	.freq_tbl = ftbl_gcc_gp1_clk_src,
736108cdc09SImran Shaik 	.clkr.hw.init = &(const struct clk_init_data) {
737108cdc09SImran Shaik 		.name = "gcc_gp3_clk_src",
738108cdc09SImran Shaik 		.parent_data = gcc_parent_data_2,
739108cdc09SImran Shaik 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
740108cdc09SImran Shaik 		.ops = &clk_rcg2_shared_ops,
741108cdc09SImran Shaik 	},
742108cdc09SImran Shaik };
743108cdc09SImran Shaik 
744108cdc09SImran Shaik static struct clk_rcg2 gcc_pcie_1_aux_phy_clk_src = {
745108cdc09SImran Shaik 	.cmd_rcgr = 0x67044,
746108cdc09SImran Shaik 	.mnd_width = 16,
747108cdc09SImran Shaik 	.hid_width = 5,
748108cdc09SImran Shaik 	.parent_map = gcc_parent_map_3,
749108cdc09SImran Shaik 	.freq_tbl = ftbl_gcc_emac0_phy_aux_clk_src,
750108cdc09SImran Shaik 	.clkr.hw.init = &(const struct clk_init_data) {
751108cdc09SImran Shaik 		.name = "gcc_pcie_1_aux_phy_clk_src",
752108cdc09SImran Shaik 		.parent_data = gcc_parent_data_3,
753108cdc09SImran Shaik 		.num_parents = ARRAY_SIZE(gcc_parent_data_3),
754108cdc09SImran Shaik 		.ops = &clk_rcg2_shared_ops,
755108cdc09SImran Shaik 	},
756108cdc09SImran Shaik };
757108cdc09SImran Shaik 
758108cdc09SImran Shaik static const struct freq_tbl ftbl_gcc_pcie_1_phy_rchng_clk_src[] = {
759108cdc09SImran Shaik 	F(19200000, P_BI_TCXO, 1, 0, 0),
760108cdc09SImran Shaik 	F(100000000, P_GPLL0_OUT_EVEN, 3, 0, 0),
761108cdc09SImran Shaik 	{ }
762108cdc09SImran Shaik };
763108cdc09SImran Shaik 
764108cdc09SImran Shaik static struct clk_rcg2 gcc_pcie_1_phy_rchng_clk_src = {
765108cdc09SImran Shaik 	.cmd_rcgr = 0x6706c,
766108cdc09SImran Shaik 	.mnd_width = 0,
767108cdc09SImran Shaik 	.hid_width = 5,
768108cdc09SImran Shaik 	.parent_map = gcc_parent_map_2,
769108cdc09SImran Shaik 	.freq_tbl = ftbl_gcc_pcie_1_phy_rchng_clk_src,
770108cdc09SImran Shaik 	.clkr.hw.init = &(const struct clk_init_data) {
771108cdc09SImran Shaik 		.name = "gcc_pcie_1_phy_rchng_clk_src",
772108cdc09SImran Shaik 		.parent_data = gcc_parent_data_2,
773108cdc09SImran Shaik 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
774108cdc09SImran Shaik 		.ops = &clk_rcg2_shared_ops,
775108cdc09SImran Shaik 	},
776108cdc09SImran Shaik };
777108cdc09SImran Shaik 
778108cdc09SImran Shaik static struct clk_rcg2 gcc_pcie_2_aux_phy_clk_src = {
779108cdc09SImran Shaik 	.cmd_rcgr = 0x68064,
780108cdc09SImran Shaik 	.mnd_width = 16,
781108cdc09SImran Shaik 	.hid_width = 5,
782108cdc09SImran Shaik 	.parent_map = gcc_parent_map_3,
783108cdc09SImran Shaik 	.freq_tbl = ftbl_gcc_emac0_phy_aux_clk_src,
784108cdc09SImran Shaik 	.clkr.hw.init = &(const struct clk_init_data) {
785108cdc09SImran Shaik 		.name = "gcc_pcie_2_aux_phy_clk_src",
786108cdc09SImran Shaik 		.parent_data = gcc_parent_data_3,
787108cdc09SImran Shaik 		.num_parents = ARRAY_SIZE(gcc_parent_data_3),
788108cdc09SImran Shaik 		.ops = &clk_rcg2_shared_ops,
789108cdc09SImran Shaik 	},
790108cdc09SImran Shaik };
791108cdc09SImran Shaik 
792108cdc09SImran Shaik static struct clk_rcg2 gcc_pcie_2_phy_rchng_clk_src = {
793108cdc09SImran Shaik 	.cmd_rcgr = 0x68038,
794108cdc09SImran Shaik 	.mnd_width = 0,
795108cdc09SImran Shaik 	.hid_width = 5,
796108cdc09SImran Shaik 	.parent_map = gcc_parent_map_2,
797108cdc09SImran Shaik 	.freq_tbl = ftbl_gcc_pcie_1_phy_rchng_clk_src,
798108cdc09SImran Shaik 	.clkr.hw.init = &(const struct clk_init_data) {
799108cdc09SImran Shaik 		.name = "gcc_pcie_2_phy_rchng_clk_src",
800108cdc09SImran Shaik 		.parent_data = gcc_parent_data_2,
801108cdc09SImran Shaik 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
802108cdc09SImran Shaik 		.ops = &clk_rcg2_shared_ops,
803108cdc09SImran Shaik 	},
804108cdc09SImran Shaik };
805108cdc09SImran Shaik 
806108cdc09SImran Shaik static struct clk_rcg2 gcc_pcie_aux_phy_clk_src = {
807108cdc09SImran Shaik 	.cmd_rcgr = 0x5305c,
808108cdc09SImran Shaik 	.mnd_width = 16,
809108cdc09SImran Shaik 	.hid_width = 5,
810108cdc09SImran Shaik 	.parent_map = gcc_parent_map_3,
811108cdc09SImran Shaik 	.freq_tbl = ftbl_gcc_emac0_phy_aux_clk_src,
812108cdc09SImran Shaik 	.clkr.hw.init = &(const struct clk_init_data) {
813108cdc09SImran Shaik 		.name = "gcc_pcie_aux_phy_clk_src",
814108cdc09SImran Shaik 		.parent_data = gcc_parent_data_3,
815108cdc09SImran Shaik 		.num_parents = ARRAY_SIZE(gcc_parent_data_3),
816108cdc09SImran Shaik 		.ops = &clk_rcg2_shared_ops,
817108cdc09SImran Shaik 	},
818108cdc09SImran Shaik };
819108cdc09SImran Shaik 
820108cdc09SImran Shaik static struct clk_rcg2 gcc_pcie_rchng_phy_clk_src = {
821108cdc09SImran Shaik 	.cmd_rcgr = 0x53078,
822108cdc09SImran Shaik 	.mnd_width = 0,
823108cdc09SImran Shaik 	.hid_width = 5,
824108cdc09SImran Shaik 	.parent_map = gcc_parent_map_2,
825108cdc09SImran Shaik 	.freq_tbl = ftbl_gcc_pcie_1_phy_rchng_clk_src,
826108cdc09SImran Shaik 	.clkr.hw.init = &(const struct clk_init_data) {
827108cdc09SImran Shaik 		.name = "gcc_pcie_rchng_phy_clk_src",
828108cdc09SImran Shaik 		.parent_data = gcc_parent_data_2,
829108cdc09SImran Shaik 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
830108cdc09SImran Shaik 		.ops = &clk_rcg2_shared_ops,
831108cdc09SImran Shaik 	},
832108cdc09SImran Shaik };
833108cdc09SImran Shaik 
834108cdc09SImran Shaik static const struct freq_tbl ftbl_gcc_pdm2_clk_src[] = {
835108cdc09SImran Shaik 	F(19200000, P_BI_TCXO, 1, 0, 0),
836108cdc09SImran Shaik 	F(60000000, P_GPLL0_OUT_MAIN, 10, 0, 0),
837108cdc09SImran Shaik 	{ }
838108cdc09SImran Shaik };
839108cdc09SImran Shaik 
840108cdc09SImran Shaik static struct clk_rcg2 gcc_pdm2_clk_src = {
841108cdc09SImran Shaik 	.cmd_rcgr = 0x34010,
842108cdc09SImran Shaik 	.mnd_width = 0,
843108cdc09SImran Shaik 	.hid_width = 5,
844108cdc09SImran Shaik 	.parent_map = gcc_parent_map_0,
845108cdc09SImran Shaik 	.freq_tbl = ftbl_gcc_pdm2_clk_src,
846108cdc09SImran Shaik 	.clkr.hw.init = &(const struct clk_init_data) {
847108cdc09SImran Shaik 		.name = "gcc_pdm2_clk_src",
848108cdc09SImran Shaik 		.parent_data = gcc_parent_data_0,
849108cdc09SImran Shaik 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
850108cdc09SImran Shaik 		.ops = &clk_rcg2_shared_ops,
851108cdc09SImran Shaik 	},
852108cdc09SImran Shaik };
853108cdc09SImran Shaik 
854108cdc09SImran Shaik static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s0_clk_src[] = {
855108cdc09SImran Shaik 	F(7372800, P_GPLL0_OUT_EVEN, 1, 384, 15625),
856108cdc09SImran Shaik 	F(14745600, P_GPLL0_OUT_EVEN, 1, 768, 15625),
857108cdc09SImran Shaik 	F(19200000, P_BI_TCXO, 1, 0, 0),
858108cdc09SImran Shaik 	F(29491200, P_GPLL0_OUT_EVEN, 1, 1536, 15625),
859108cdc09SImran Shaik 	F(32000000, P_GPLL0_OUT_EVEN, 1, 8, 75),
860108cdc09SImran Shaik 	F(48000000, P_GPLL0_OUT_EVEN, 1, 4, 25),
861108cdc09SImran Shaik 	F(64000000, P_GPLL0_OUT_EVEN, 1, 16, 75),
862108cdc09SImran Shaik 	F(75000000, P_GPLL0_OUT_EVEN, 4, 0, 0),
863108cdc09SImran Shaik 	F(80000000, P_GPLL0_OUT_EVEN, 1, 4, 15),
864108cdc09SImran Shaik 	F(96000000, P_GPLL0_OUT_EVEN, 1, 8, 25),
865108cdc09SImran Shaik 	F(100000000, P_GPLL0_OUT_MAIN, 6, 0, 0),
866108cdc09SImran Shaik 	{ }
867108cdc09SImran Shaik };
868108cdc09SImran Shaik 
869108cdc09SImran Shaik static struct clk_init_data gcc_qupv3_wrap0_s0_clk_src_init = {
870108cdc09SImran Shaik 	.name = "gcc_qupv3_wrap0_s0_clk_src",
871108cdc09SImran Shaik 	.parent_data = gcc_parent_data_0,
872108cdc09SImran Shaik 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
873108cdc09SImran Shaik 	.ops = &clk_rcg2_shared_ops,
874108cdc09SImran Shaik };
875108cdc09SImran Shaik 
876108cdc09SImran Shaik static struct clk_rcg2 gcc_qupv3_wrap0_s0_clk_src = {
877108cdc09SImran Shaik 	.cmd_rcgr = 0x6c010,
878108cdc09SImran Shaik 	.mnd_width = 16,
879108cdc09SImran Shaik 	.hid_width = 5,
880108cdc09SImran Shaik 	.parent_map = gcc_parent_map_0,
881108cdc09SImran Shaik 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
882108cdc09SImran Shaik 	.clkr.hw.init = &gcc_qupv3_wrap0_s0_clk_src_init,
883108cdc09SImran Shaik };
884108cdc09SImran Shaik 
885108cdc09SImran Shaik static struct clk_init_data gcc_qupv3_wrap0_s1_clk_src_init = {
886108cdc09SImran Shaik 	.name = "gcc_qupv3_wrap0_s1_clk_src",
887108cdc09SImran Shaik 	.parent_data = gcc_parent_data_0,
888108cdc09SImran Shaik 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
889108cdc09SImran Shaik 	.ops = &clk_rcg2_shared_ops,
890108cdc09SImran Shaik };
891108cdc09SImran Shaik 
892108cdc09SImran Shaik static struct clk_rcg2 gcc_qupv3_wrap0_s1_clk_src = {
893108cdc09SImran Shaik 	.cmd_rcgr = 0x6c148,
894108cdc09SImran Shaik 	.mnd_width = 16,
895108cdc09SImran Shaik 	.hid_width = 5,
896108cdc09SImran Shaik 	.parent_map = gcc_parent_map_0,
897108cdc09SImran Shaik 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
898108cdc09SImran Shaik 	.clkr.hw.init = &gcc_qupv3_wrap0_s1_clk_src_init,
899108cdc09SImran Shaik };
900108cdc09SImran Shaik 
901108cdc09SImran Shaik static struct clk_init_data gcc_qupv3_wrap0_s2_clk_src_init = {
902108cdc09SImran Shaik 	.name = "gcc_qupv3_wrap0_s2_clk_src",
903108cdc09SImran Shaik 	.parent_data = gcc_parent_data_0,
904108cdc09SImran Shaik 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
905108cdc09SImran Shaik 	.ops = &clk_rcg2_shared_ops,
906108cdc09SImran Shaik };
907108cdc09SImran Shaik 
908108cdc09SImran Shaik static struct clk_rcg2 gcc_qupv3_wrap0_s2_clk_src = {
909108cdc09SImran Shaik 	.cmd_rcgr = 0x6c280,
910108cdc09SImran Shaik 	.mnd_width = 16,
911108cdc09SImran Shaik 	.hid_width = 5,
912108cdc09SImran Shaik 	.parent_map = gcc_parent_map_0,
913108cdc09SImran Shaik 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
914108cdc09SImran Shaik 	.clkr.hw.init = &gcc_qupv3_wrap0_s2_clk_src_init,
915108cdc09SImran Shaik };
916108cdc09SImran Shaik 
917108cdc09SImran Shaik static struct clk_init_data gcc_qupv3_wrap0_s3_clk_src_init = {
918108cdc09SImran Shaik 	.name = "gcc_qupv3_wrap0_s3_clk_src",
919108cdc09SImran Shaik 	.parent_data = gcc_parent_data_0,
920108cdc09SImran Shaik 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
921108cdc09SImran Shaik 	.ops = &clk_rcg2_shared_ops,
922108cdc09SImran Shaik };
923108cdc09SImran Shaik 
924108cdc09SImran Shaik static struct clk_rcg2 gcc_qupv3_wrap0_s3_clk_src = {
925108cdc09SImran Shaik 	.cmd_rcgr = 0x6c3b8,
926108cdc09SImran Shaik 	.mnd_width = 16,
927108cdc09SImran Shaik 	.hid_width = 5,
928108cdc09SImran Shaik 	.parent_map = gcc_parent_map_0,
929108cdc09SImran Shaik 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
930108cdc09SImran Shaik 	.clkr.hw.init = &gcc_qupv3_wrap0_s3_clk_src_init,
931108cdc09SImran Shaik };
932108cdc09SImran Shaik 
933108cdc09SImran Shaik static struct clk_init_data gcc_qupv3_wrap0_s4_clk_src_init = {
934108cdc09SImran Shaik 	.name = "gcc_qupv3_wrap0_s4_clk_src",
935108cdc09SImran Shaik 	.parent_data = gcc_parent_data_0,
936108cdc09SImran Shaik 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
937108cdc09SImran Shaik 	.ops = &clk_rcg2_shared_ops,
938108cdc09SImran Shaik };
939108cdc09SImran Shaik 
940108cdc09SImran Shaik static struct clk_rcg2 gcc_qupv3_wrap0_s4_clk_src = {
941108cdc09SImran Shaik 	.cmd_rcgr = 0x6c4f0,
942108cdc09SImran Shaik 	.mnd_width = 16,
943108cdc09SImran Shaik 	.hid_width = 5,
944108cdc09SImran Shaik 	.parent_map = gcc_parent_map_0,
945108cdc09SImran Shaik 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
946108cdc09SImran Shaik 	.clkr.hw.init = &gcc_qupv3_wrap0_s4_clk_src_init,
947108cdc09SImran Shaik };
948108cdc09SImran Shaik 
949108cdc09SImran Shaik static struct clk_init_data gcc_qupv3_wrap0_s5_clk_src_init = {
950108cdc09SImran Shaik 	.name = "gcc_qupv3_wrap0_s5_clk_src",
951108cdc09SImran Shaik 	.parent_data = gcc_parent_data_0,
952108cdc09SImran Shaik 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
953108cdc09SImran Shaik 	.ops = &clk_rcg2_shared_ops,
954108cdc09SImran Shaik };
955108cdc09SImran Shaik 
956108cdc09SImran Shaik static struct clk_rcg2 gcc_qupv3_wrap0_s5_clk_src = {
957108cdc09SImran Shaik 	.cmd_rcgr = 0x6c628,
958108cdc09SImran Shaik 	.mnd_width = 16,
959108cdc09SImran Shaik 	.hid_width = 5,
960108cdc09SImran Shaik 	.parent_map = gcc_parent_map_0,
961108cdc09SImran Shaik 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
962108cdc09SImran Shaik 	.clkr.hw.init = &gcc_qupv3_wrap0_s5_clk_src_init,
963108cdc09SImran Shaik };
964108cdc09SImran Shaik 
965108cdc09SImran Shaik static struct clk_init_data gcc_qupv3_wrap0_s6_clk_src_init = {
966108cdc09SImran Shaik 	.name = "gcc_qupv3_wrap0_s6_clk_src",
967108cdc09SImran Shaik 	.parent_data = gcc_parent_data_0,
968108cdc09SImran Shaik 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
969108cdc09SImran Shaik 	.ops = &clk_rcg2_shared_ops,
970108cdc09SImran Shaik };
971108cdc09SImran Shaik 
972108cdc09SImran Shaik static struct clk_rcg2 gcc_qupv3_wrap0_s6_clk_src = {
973108cdc09SImran Shaik 	.cmd_rcgr = 0x6c760,
974108cdc09SImran Shaik 	.mnd_width = 16,
975108cdc09SImran Shaik 	.hid_width = 5,
976108cdc09SImran Shaik 	.parent_map = gcc_parent_map_0,
977108cdc09SImran Shaik 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
978108cdc09SImran Shaik 	.clkr.hw.init = &gcc_qupv3_wrap0_s6_clk_src_init,
979108cdc09SImran Shaik };
980108cdc09SImran Shaik 
981108cdc09SImran Shaik static struct clk_init_data gcc_qupv3_wrap0_s7_clk_src_init = {
982108cdc09SImran Shaik 	.name = "gcc_qupv3_wrap0_s7_clk_src",
983108cdc09SImran Shaik 	.parent_data = gcc_parent_data_0,
984108cdc09SImran Shaik 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
985108cdc09SImran Shaik 	.ops = &clk_rcg2_shared_ops,
986108cdc09SImran Shaik };
987108cdc09SImran Shaik 
988108cdc09SImran Shaik static struct clk_rcg2 gcc_qupv3_wrap0_s7_clk_src = {
989108cdc09SImran Shaik 	.cmd_rcgr = 0x6c898,
990108cdc09SImran Shaik 	.mnd_width = 16,
991108cdc09SImran Shaik 	.hid_width = 5,
992108cdc09SImran Shaik 	.parent_map = gcc_parent_map_0,
993108cdc09SImran Shaik 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
994108cdc09SImran Shaik 	.clkr.hw.init = &gcc_qupv3_wrap0_s7_clk_src_init,
995108cdc09SImran Shaik };
996108cdc09SImran Shaik 
997108cdc09SImran Shaik static struct clk_init_data gcc_qupv3_wrap0_s8_clk_src_init = {
998108cdc09SImran Shaik 	.name = "gcc_qupv3_wrap0_s8_clk_src",
999108cdc09SImran Shaik 	.parent_data = gcc_parent_data_0,
1000108cdc09SImran Shaik 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1001108cdc09SImran Shaik 	.ops = &clk_rcg2_shared_ops,
1002108cdc09SImran Shaik };
1003108cdc09SImran Shaik 
1004108cdc09SImran Shaik static struct clk_rcg2 gcc_qupv3_wrap0_s8_clk_src = {
1005108cdc09SImran Shaik 	.cmd_rcgr = 0x6c9d0,
1006108cdc09SImran Shaik 	.mnd_width = 16,
1007108cdc09SImran Shaik 	.hid_width = 5,
1008108cdc09SImran Shaik 	.parent_map = gcc_parent_map_0,
1009108cdc09SImran Shaik 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1010108cdc09SImran Shaik 	.clkr.hw.init = &gcc_qupv3_wrap0_s8_clk_src_init,
1011108cdc09SImran Shaik };
1012108cdc09SImran Shaik 
1013108cdc09SImran Shaik static const struct freq_tbl ftbl_gcc_sdcc1_apps_clk_src[] = {
1014108cdc09SImran Shaik 	F(144000, P_BI_TCXO, 16, 3, 25),
1015108cdc09SImran Shaik 	F(400000, P_BI_TCXO, 12, 1, 4),
1016108cdc09SImran Shaik 	F(19200000, P_BI_TCXO, 1, 0, 0),
1017108cdc09SImran Shaik 	F(20000000, P_GPLL0_OUT_EVEN, 5, 1, 3),
1018108cdc09SImran Shaik 	F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),
1019108cdc09SImran Shaik 	F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
1020108cdc09SImran Shaik 	F(100000000, P_GPLL0_OUT_EVEN, 3, 0, 0),
1021108cdc09SImran Shaik 	F(192000000, P_GPLL6_OUT_MAIN, 2, 0, 0),
1022108cdc09SImran Shaik 	F(384000000, P_GPLL6_OUT_MAIN, 1, 0, 0),
1023108cdc09SImran Shaik 	{ }
1024108cdc09SImran Shaik };
1025108cdc09SImran Shaik 
1026108cdc09SImran Shaik static struct clk_rcg2 gcc_sdcc1_apps_clk_src = {
1027108cdc09SImran Shaik 	.cmd_rcgr = 0x6b014,
1028108cdc09SImran Shaik 	.mnd_width = 8,
1029108cdc09SImran Shaik 	.hid_width = 5,
1030108cdc09SImran Shaik 	.parent_map = gcc_parent_map_17,
1031108cdc09SImran Shaik 	.freq_tbl = ftbl_gcc_sdcc1_apps_clk_src,
1032108cdc09SImran Shaik 	.clkr.hw.init = &(const struct clk_init_data) {
1033108cdc09SImran Shaik 		.name = "gcc_sdcc1_apps_clk_src",
1034108cdc09SImran Shaik 		.parent_data = gcc_parent_data_17,
1035108cdc09SImran Shaik 		.num_parents = ARRAY_SIZE(gcc_parent_data_17),
1036108cdc09SImran Shaik 		.ops = &clk_rcg2_floor_ops,
1037108cdc09SImran Shaik 	},
1038108cdc09SImran Shaik };
1039108cdc09SImran Shaik 
1040108cdc09SImran Shaik static const struct freq_tbl ftbl_gcc_sdcc2_apps_clk_src[] = {
1041108cdc09SImran Shaik 	F(400000, P_BI_TCXO, 12, 1, 4),
1042108cdc09SImran Shaik 	F(19200000, P_BI_TCXO, 1, 0, 0),
1043108cdc09SImran Shaik 	F(25000000, P_GPLL0_OUT_EVEN, 12, 0, 0),
1044108cdc09SImran Shaik 	F(50000000, P_GPLL0_OUT_EVEN, 6, 0, 0),
1045108cdc09SImran Shaik 	F(100000000, P_GPLL0_OUT_EVEN, 3, 0, 0),
1046108cdc09SImran Shaik 	F(202000000, P_GPLL8_OUT_MAIN, 4, 0, 0),
1047108cdc09SImran Shaik 	{ }
1048108cdc09SImran Shaik };
1049108cdc09SImran Shaik 
1050108cdc09SImran Shaik static struct clk_rcg2 gcc_sdcc2_apps_clk_src = {
1051108cdc09SImran Shaik 	.cmd_rcgr = 0x6a018,
1052108cdc09SImran Shaik 	.mnd_width = 8,
1053108cdc09SImran Shaik 	.hid_width = 5,
1054108cdc09SImran Shaik 	.parent_map = gcc_parent_map_18,
1055108cdc09SImran Shaik 	.freq_tbl = ftbl_gcc_sdcc2_apps_clk_src,
1056108cdc09SImran Shaik 	.clkr.hw.init = &(const struct clk_init_data) {
1057108cdc09SImran Shaik 		.name = "gcc_sdcc2_apps_clk_src",
1058108cdc09SImran Shaik 		.parent_data = gcc_parent_data_18,
1059108cdc09SImran Shaik 		.num_parents = ARRAY_SIZE(gcc_parent_data_18),
1060108cdc09SImran Shaik 		.ops = &clk_rcg2_floor_ops,
1061108cdc09SImran Shaik 	},
1062108cdc09SImran Shaik };
1063108cdc09SImran Shaik 
1064108cdc09SImran Shaik static const struct freq_tbl ftbl_gcc_usb30_master_clk_src[] = {
1065108cdc09SImran Shaik 	F(200000000, P_GPLL0_OUT_EVEN, 1.5, 0, 0),
1066108cdc09SImran Shaik 	{ }
1067108cdc09SImran Shaik };
1068108cdc09SImran Shaik 
1069108cdc09SImran Shaik static struct clk_rcg2 gcc_usb30_master_clk_src = {
1070108cdc09SImran Shaik 	.cmd_rcgr = 0x27034,
1071108cdc09SImran Shaik 	.mnd_width = 8,
1072108cdc09SImran Shaik 	.hid_width = 5,
1073108cdc09SImran Shaik 	.parent_map = gcc_parent_map_0,
1074108cdc09SImran Shaik 	.freq_tbl = ftbl_gcc_usb30_master_clk_src,
1075108cdc09SImran Shaik 	.clkr.hw.init = &(const struct clk_init_data) {
1076108cdc09SImran Shaik 		.name = "gcc_usb30_master_clk_src",
1077108cdc09SImran Shaik 		.parent_data = gcc_parent_data_0,
1078108cdc09SImran Shaik 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1079108cdc09SImran Shaik 		.ops = &clk_rcg2_shared_ops,
1080108cdc09SImran Shaik 	},
1081108cdc09SImran Shaik };
1082108cdc09SImran Shaik 
1083108cdc09SImran Shaik static struct clk_rcg2 gcc_usb30_mock_utmi_clk_src = {
1084108cdc09SImran Shaik 	.cmd_rcgr = 0x2704c,
1085108cdc09SImran Shaik 	.mnd_width = 0,
1086108cdc09SImran Shaik 	.hid_width = 5,
1087108cdc09SImran Shaik 	.parent_map = gcc_parent_map_0,
1088108cdc09SImran Shaik 	.freq_tbl = ftbl_gcc_emac0_phy_aux_clk_src,
1089108cdc09SImran Shaik 	.clkr.hw.init = &(const struct clk_init_data) {
1090108cdc09SImran Shaik 		.name = "gcc_usb30_mock_utmi_clk_src",
1091108cdc09SImran Shaik 		.parent_data = gcc_parent_data_0,
1092108cdc09SImran Shaik 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1093108cdc09SImran Shaik 		.ops = &clk_rcg2_shared_ops,
1094108cdc09SImran Shaik 	},
1095108cdc09SImran Shaik };
1096108cdc09SImran Shaik 
1097108cdc09SImran Shaik static const struct freq_tbl ftbl_gcc_usb3_phy_aux_clk_src[] = {
1098108cdc09SImran Shaik 	F(1000000, P_BI_TCXO, 1, 5, 96),
1099108cdc09SImran Shaik 	F(19200000, P_BI_TCXO, 1, 0, 0),
1100108cdc09SImran Shaik 	{ }
1101108cdc09SImran Shaik };
1102108cdc09SImran Shaik 
1103108cdc09SImran Shaik static struct clk_rcg2 gcc_usb3_phy_aux_clk_src = {
1104108cdc09SImran Shaik 	.cmd_rcgr = 0x27074,
1105108cdc09SImran Shaik 	.mnd_width = 16,
1106108cdc09SImran Shaik 	.hid_width = 5,
1107108cdc09SImran Shaik 	.parent_map = gcc_parent_map_3,
1108108cdc09SImran Shaik 	.freq_tbl = ftbl_gcc_usb3_phy_aux_clk_src,
1109108cdc09SImran Shaik 	.clkr.hw.init = &(const struct clk_init_data) {
1110108cdc09SImran Shaik 		.name = "gcc_usb3_phy_aux_clk_src",
1111108cdc09SImran Shaik 		.parent_data = gcc_parent_data_3,
1112108cdc09SImran Shaik 		.num_parents = ARRAY_SIZE(gcc_parent_data_3),
1113108cdc09SImran Shaik 		.ops = &clk_rcg2_shared_ops,
1114108cdc09SImran Shaik 	},
1115108cdc09SImran Shaik };
1116108cdc09SImran Shaik 
1117108cdc09SImran Shaik static struct clk_regmap_div gcc_pcie_1_pipe_div2_clk_src = {
1118108cdc09SImran Shaik 	.reg = 0x67088,
1119108cdc09SImran Shaik 	.shift = 0,
1120108cdc09SImran Shaik 	.width = 4,
1121108cdc09SImran Shaik 	.clkr.hw.init = &(const struct clk_init_data) {
1122108cdc09SImran Shaik 		.name = "gcc_pcie_1_pipe_div2_clk_src",
1123108cdc09SImran Shaik 		.parent_hws = (const struct clk_hw*[]) {
1124108cdc09SImran Shaik 			&gcc_pcie_1_pipe_clk_src.clkr.hw,
1125108cdc09SImran Shaik 		},
1126108cdc09SImran Shaik 		.num_parents = 1,
1127108cdc09SImran Shaik 		.flags = CLK_SET_RATE_PARENT,
1128108cdc09SImran Shaik 		.ops = &clk_regmap_div_ro_ops,
1129108cdc09SImran Shaik 	},
1130108cdc09SImran Shaik };
1131108cdc09SImran Shaik 
1132108cdc09SImran Shaik static struct clk_regmap_div gcc_pcie_2_pipe_div2_clk_src = {
1133108cdc09SImran Shaik 	.reg = 0x68088,
1134108cdc09SImran Shaik 	.shift = 0,
1135108cdc09SImran Shaik 	.width = 4,
1136108cdc09SImran Shaik 	.clkr.hw.init = &(const struct clk_init_data) {
1137108cdc09SImran Shaik 		.name = "gcc_pcie_2_pipe_div2_clk_src",
1138108cdc09SImran Shaik 		.parent_hws = (const struct clk_hw*[]) {
1139108cdc09SImran Shaik 			&gcc_pcie_2_pipe_clk_src.clkr.hw,
1140108cdc09SImran Shaik 		},
1141108cdc09SImran Shaik 		.num_parents = 1,
1142108cdc09SImran Shaik 		.flags = CLK_SET_RATE_PARENT,
1143108cdc09SImran Shaik 		.ops = &clk_regmap_div_ro_ops,
1144108cdc09SImran Shaik 	},
1145108cdc09SImran Shaik };
1146108cdc09SImran Shaik 
1147108cdc09SImran Shaik static struct clk_regmap_div gcc_usb30_mock_utmi_postdiv_clk_src = {
1148108cdc09SImran Shaik 	.reg = 0x27064,
1149108cdc09SImran Shaik 	.shift = 0,
1150108cdc09SImran Shaik 	.width = 4,
1151108cdc09SImran Shaik 	.clkr.hw.init = &(const struct clk_init_data) {
1152108cdc09SImran Shaik 		.name = "gcc_usb30_mock_utmi_postdiv_clk_src",
1153108cdc09SImran Shaik 		.parent_hws = (const struct clk_hw*[]) {
1154108cdc09SImran Shaik 			&gcc_usb30_mock_utmi_clk_src.clkr.hw,
1155108cdc09SImran Shaik 		},
1156108cdc09SImran Shaik 		.num_parents = 1,
1157108cdc09SImran Shaik 		.flags = CLK_SET_RATE_PARENT,
1158108cdc09SImran Shaik 		.ops = &clk_regmap_div_ro_ops,
1159108cdc09SImran Shaik 	},
1160108cdc09SImran Shaik };
1161108cdc09SImran Shaik 
1162108cdc09SImran Shaik static struct clk_branch gcc_boot_rom_ahb_clk = {
1163108cdc09SImran Shaik 	.halt_reg = 0x37004,
1164108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_VOTED,
1165108cdc09SImran Shaik 	.hwcg_reg = 0x37004,
1166108cdc09SImran Shaik 	.hwcg_bit = 1,
1167108cdc09SImran Shaik 	.clkr = {
1168108cdc09SImran Shaik 		.enable_reg = 0x7d008,
1169108cdc09SImran Shaik 		.enable_mask = BIT(26),
1170108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1171108cdc09SImran Shaik 			.name = "gcc_boot_rom_ahb_clk",
1172108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1173108cdc09SImran Shaik 		},
1174108cdc09SImran Shaik 	},
1175108cdc09SImran Shaik };
1176108cdc09SImran Shaik 
1177108cdc09SImran Shaik static struct clk_branch gcc_eee_emac0_clk = {
1178108cdc09SImran Shaik 	.halt_reg = 0x710ac,
1179108cdc09SImran Shaik 	.halt_check = BRANCH_HALT,
1180108cdc09SImran Shaik 	.clkr = {
1181108cdc09SImran Shaik 		.enable_reg = 0x710ac,
1182108cdc09SImran Shaik 		.enable_mask = BIT(0),
1183108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1184108cdc09SImran Shaik 			.name = "gcc_eee_emac0_clk",
1185108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
1186108cdc09SImran Shaik 				&gcc_eee_emac0_clk_src.clkr.hw,
1187108cdc09SImran Shaik 			},
1188108cdc09SImran Shaik 			.num_parents = 1,
1189108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
1190108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1191108cdc09SImran Shaik 		},
1192108cdc09SImran Shaik 	},
1193108cdc09SImran Shaik };
1194108cdc09SImran Shaik 
1195108cdc09SImran Shaik static struct clk_branch gcc_eee_emac1_clk = {
1196108cdc09SImran Shaik 	.halt_reg = 0x720ac,
1197108cdc09SImran Shaik 	.halt_check = BRANCH_HALT,
1198108cdc09SImran Shaik 	.clkr = {
1199108cdc09SImran Shaik 		.enable_reg = 0x720ac,
1200108cdc09SImran Shaik 		.enable_mask = BIT(0),
1201108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1202108cdc09SImran Shaik 			.name = "gcc_eee_emac1_clk",
1203108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
1204108cdc09SImran Shaik 				&gcc_eee_emac1_clk_src.clkr.hw,
1205108cdc09SImran Shaik 			},
1206108cdc09SImran Shaik 			.num_parents = 1,
1207108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
1208108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1209108cdc09SImran Shaik 		},
1210108cdc09SImran Shaik 	},
1211108cdc09SImran Shaik };
1212108cdc09SImran Shaik 
1213108cdc09SImran Shaik static struct clk_branch gcc_emac0_axi_clk = {
1214108cdc09SImran Shaik 	.halt_reg = 0x71018,
1215108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_VOTED,
1216108cdc09SImran Shaik 	.hwcg_reg = 0x71018,
1217108cdc09SImran Shaik 	.hwcg_bit = 1,
1218108cdc09SImran Shaik 	.clkr = {
1219108cdc09SImran Shaik 		.enable_reg = 0x71018,
1220108cdc09SImran Shaik 		.enable_mask = BIT(0),
1221108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1222108cdc09SImran Shaik 			.name = "gcc_emac0_axi_clk",
1223108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1224108cdc09SImran Shaik 		},
1225108cdc09SImran Shaik 	},
1226108cdc09SImran Shaik };
1227108cdc09SImran Shaik 
1228108cdc09SImran Shaik static struct clk_branch gcc_emac0_cc_sgmiiphy_rx_clk = {
1229108cdc09SImran Shaik 	.halt_reg = 0x7105c,
1230108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_DELAY,
1231108cdc09SImran Shaik 	.clkr = {
1232108cdc09SImran Shaik 		.enable_reg = 0x7105c,
1233108cdc09SImran Shaik 		.enable_mask = BIT(0),
1234108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1235108cdc09SImran Shaik 			.name = "gcc_emac0_cc_sgmiiphy_rx_clk",
1236108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
1237108cdc09SImran Shaik 				&gcc_emac0_cc_sgmiiphy_rx_clk_src.clkr.hw,
1238108cdc09SImran Shaik 			},
1239108cdc09SImran Shaik 			.num_parents = 1,
1240108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
1241108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1242108cdc09SImran Shaik 		},
1243108cdc09SImran Shaik 	},
1244108cdc09SImran Shaik };
1245108cdc09SImran Shaik 
1246108cdc09SImran Shaik static struct clk_branch gcc_emac0_cc_sgmiiphy_tx_clk = {
1247108cdc09SImran Shaik 	.halt_reg = 0x71054,
1248108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_DELAY,
1249108cdc09SImran Shaik 	.clkr = {
1250108cdc09SImran Shaik 		.enable_reg = 0x71054,
1251108cdc09SImran Shaik 		.enable_mask = BIT(0),
1252108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1253108cdc09SImran Shaik 			.name = "gcc_emac0_cc_sgmiiphy_tx_clk",
1254108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
1255108cdc09SImran Shaik 				&gcc_emac0_cc_sgmiiphy_tx_clk_src.clkr.hw,
1256108cdc09SImran Shaik 			},
1257108cdc09SImran Shaik 			.num_parents = 1,
1258108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
1259108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1260108cdc09SImran Shaik 		},
1261108cdc09SImran Shaik 	},
1262108cdc09SImran Shaik };
1263108cdc09SImran Shaik 
1264108cdc09SImran Shaik static struct clk_branch gcc_emac0_phy_aux_clk = {
1265108cdc09SImran Shaik 	.halt_reg = 0x71028,
1266108cdc09SImran Shaik 	.halt_check = BRANCH_HALT,
1267108cdc09SImran Shaik 	.clkr = {
1268108cdc09SImran Shaik 		.enable_reg = 0x71028,
1269108cdc09SImran Shaik 		.enable_mask = BIT(0),
1270108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1271108cdc09SImran Shaik 			.name = "gcc_emac0_phy_aux_clk",
1272108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
1273108cdc09SImran Shaik 				&gcc_emac0_phy_aux_clk_src.clkr.hw,
1274108cdc09SImran Shaik 			},
1275108cdc09SImran Shaik 			.num_parents = 1,
1276108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
1277108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1278108cdc09SImran Shaik 		},
1279108cdc09SImran Shaik 	},
1280108cdc09SImran Shaik };
1281108cdc09SImran Shaik 
1282108cdc09SImran Shaik static struct clk_branch gcc_emac0_ptp_clk = {
1283108cdc09SImran Shaik 	.halt_reg = 0x71044,
1284108cdc09SImran Shaik 	.halt_check = BRANCH_HALT,
1285108cdc09SImran Shaik 	.clkr = {
1286108cdc09SImran Shaik 		.enable_reg = 0x71044,
1287108cdc09SImran Shaik 		.enable_mask = BIT(0),
1288108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1289108cdc09SImran Shaik 			.name = "gcc_emac0_ptp_clk",
1290108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
1291108cdc09SImran Shaik 				&gcc_emac0_ptp_clk_src.clkr.hw,
1292108cdc09SImran Shaik 			},
1293108cdc09SImran Shaik 			.num_parents = 1,
1294108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
1295108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1296108cdc09SImran Shaik 		},
1297108cdc09SImran Shaik 	},
1298108cdc09SImran Shaik };
1299108cdc09SImran Shaik 
1300108cdc09SImran Shaik static struct clk_branch gcc_emac0_rgmii_clk = {
1301108cdc09SImran Shaik 	.halt_reg = 0x71050,
1302108cdc09SImran Shaik 	.halt_check = BRANCH_HALT,
1303108cdc09SImran Shaik 	.clkr = {
1304108cdc09SImran Shaik 		.enable_reg = 0x71050,
1305108cdc09SImran Shaik 		.enable_mask = BIT(0),
1306108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1307108cdc09SImran Shaik 			.name = "gcc_emac0_rgmii_clk",
1308108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
1309108cdc09SImran Shaik 				&gcc_emac0_rgmii_clk_src.clkr.hw,
1310108cdc09SImran Shaik 			},
1311108cdc09SImran Shaik 			.num_parents = 1,
1312108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
1313108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1314108cdc09SImran Shaik 		},
1315108cdc09SImran Shaik 	},
1316108cdc09SImran Shaik };
1317108cdc09SImran Shaik 
1318108cdc09SImran Shaik static struct clk_branch gcc_emac0_rpcs_rx_clk = {
1319108cdc09SImran Shaik 	.halt_reg = 0x710a0,
1320108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_DELAY,
1321108cdc09SImran Shaik 	.clkr = {
1322108cdc09SImran Shaik 		.enable_reg = 0x710a0,
1323108cdc09SImran Shaik 		.enable_mask = BIT(0),
1324108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1325108cdc09SImran Shaik 			.name = "gcc_emac0_rpcs_rx_clk",
1326108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
1327108cdc09SImran Shaik 				&gcc_emac0_sgmiiphy_mac_rclk_src.clkr.hw,
1328108cdc09SImran Shaik 			},
1329108cdc09SImran Shaik 			.num_parents = 1,
1330108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
1331108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1332108cdc09SImran Shaik 		},
1333108cdc09SImran Shaik 	},
1334108cdc09SImran Shaik };
1335108cdc09SImran Shaik 
1336108cdc09SImran Shaik static struct clk_branch gcc_emac0_rpcs_tx_clk = {
1337108cdc09SImran Shaik 	.halt_reg = 0x7109c,
1338108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_DELAY,
1339108cdc09SImran Shaik 	.clkr = {
1340108cdc09SImran Shaik 		.enable_reg = 0x7109c,
1341108cdc09SImran Shaik 		.enable_mask = BIT(0),
1342108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1343108cdc09SImran Shaik 			.name = "gcc_emac0_rpcs_tx_clk",
1344108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
1345108cdc09SImran Shaik 				&gcc_emac0_sgmiiphy_mac_tclk_src.clkr.hw,
1346108cdc09SImran Shaik 			},
1347108cdc09SImran Shaik 			.num_parents = 1,
1348108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
1349108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1350108cdc09SImran Shaik 		},
1351108cdc09SImran Shaik 	},
1352108cdc09SImran Shaik };
1353108cdc09SImran Shaik 
1354108cdc09SImran Shaik static struct clk_branch gcc_emac0_slv_ahb_clk = {
1355108cdc09SImran Shaik 	.halt_reg = 0x71024,
1356108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_VOTED,
1357108cdc09SImran Shaik 	.hwcg_reg = 0x71024,
1358108cdc09SImran Shaik 	.hwcg_bit = 1,
1359108cdc09SImran Shaik 	.clkr = {
1360108cdc09SImran Shaik 		.enable_reg = 0x71024,
1361108cdc09SImran Shaik 		.enable_mask = BIT(0),
1362108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1363108cdc09SImran Shaik 			.name = "gcc_emac0_slv_ahb_clk",
1364108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1365108cdc09SImran Shaik 		},
1366108cdc09SImran Shaik 	},
1367108cdc09SImran Shaik };
1368108cdc09SImran Shaik 
1369108cdc09SImran Shaik static struct clk_branch gcc_emac0_xgxs_rx_clk = {
1370108cdc09SImran Shaik 	.halt_reg = 0x710a8,
1371108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_DELAY,
1372108cdc09SImran Shaik 	.clkr = {
1373108cdc09SImran Shaik 		.enable_reg = 0x710a8,
1374108cdc09SImran Shaik 		.enable_mask = BIT(0),
1375108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1376108cdc09SImran Shaik 			.name = "gcc_emac0_xgxs_rx_clk",
1377108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
1378108cdc09SImran Shaik 				&gcc_emac0_sgmiiphy_mac_rclk_src.clkr.hw,
1379108cdc09SImran Shaik 			},
1380108cdc09SImran Shaik 			.num_parents = 1,
1381108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
1382108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1383108cdc09SImran Shaik 		},
1384108cdc09SImran Shaik 	},
1385108cdc09SImran Shaik };
1386108cdc09SImran Shaik 
1387108cdc09SImran Shaik static struct clk_branch gcc_emac0_xgxs_tx_clk = {
1388108cdc09SImran Shaik 	.halt_reg = 0x710a4,
1389108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_DELAY,
1390108cdc09SImran Shaik 	.clkr = {
1391108cdc09SImran Shaik 		.enable_reg = 0x710a4,
1392108cdc09SImran Shaik 		.enable_mask = BIT(0),
1393108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1394108cdc09SImran Shaik 			.name = "gcc_emac0_xgxs_tx_clk",
1395108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
1396108cdc09SImran Shaik 				&gcc_emac0_sgmiiphy_mac_tclk_src.clkr.hw,
1397108cdc09SImran Shaik 			},
1398108cdc09SImran Shaik 			.num_parents = 1,
1399108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
1400108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1401108cdc09SImran Shaik 		},
1402108cdc09SImran Shaik 	},
1403108cdc09SImran Shaik };
1404108cdc09SImran Shaik 
1405108cdc09SImran Shaik static struct clk_branch gcc_emac1_axi_clk = {
1406108cdc09SImran Shaik 	.halt_reg = 0x72018,
1407108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_VOTED,
1408108cdc09SImran Shaik 	.hwcg_reg = 0x72018,
1409108cdc09SImran Shaik 	.hwcg_bit = 1,
1410108cdc09SImran Shaik 	.clkr = {
1411108cdc09SImran Shaik 		.enable_reg = 0x72018,
1412108cdc09SImran Shaik 		.enable_mask = BIT(0),
1413108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1414108cdc09SImran Shaik 			.name = "gcc_emac1_axi_clk",
1415108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1416108cdc09SImran Shaik 		},
1417108cdc09SImran Shaik 	},
1418108cdc09SImran Shaik };
1419108cdc09SImran Shaik 
1420108cdc09SImran Shaik static struct clk_branch gcc_emac1_cc_sgmiiphy_rx_clk = {
1421108cdc09SImran Shaik 	.halt_reg = 0x7205c,
1422108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_DELAY,
1423108cdc09SImran Shaik 	.clkr = {
1424108cdc09SImran Shaik 		.enable_reg = 0x7205c,
1425108cdc09SImran Shaik 		.enable_mask = BIT(0),
1426108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1427108cdc09SImran Shaik 			.name = "gcc_emac1_cc_sgmiiphy_rx_clk",
1428108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
1429108cdc09SImran Shaik 				&gcc_emac1_cc_sgmiiphy_rx_clk_src.clkr.hw,
1430108cdc09SImran Shaik 			},
1431108cdc09SImran Shaik 			.num_parents = 1,
1432108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
1433108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1434108cdc09SImran Shaik 		},
1435108cdc09SImran Shaik 	},
1436108cdc09SImran Shaik };
1437108cdc09SImran Shaik 
1438108cdc09SImran Shaik static struct clk_branch gcc_emac1_cc_sgmiiphy_tx_clk = {
1439108cdc09SImran Shaik 	.halt_reg = 0x72054,
1440108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_DELAY,
1441108cdc09SImran Shaik 	.clkr = {
1442108cdc09SImran Shaik 		.enable_reg = 0x72054,
1443108cdc09SImran Shaik 		.enable_mask = BIT(0),
1444108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1445108cdc09SImran Shaik 			.name = "gcc_emac1_cc_sgmiiphy_tx_clk",
1446108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
1447108cdc09SImran Shaik 				&gcc_emac1_cc_sgmiiphy_tx_clk_src.clkr.hw,
1448108cdc09SImran Shaik 			},
1449108cdc09SImran Shaik 			.num_parents = 1,
1450108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
1451108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1452108cdc09SImran Shaik 		},
1453108cdc09SImran Shaik 	},
1454108cdc09SImran Shaik };
1455108cdc09SImran Shaik 
1456108cdc09SImran Shaik static struct clk_branch gcc_emac1_phy_aux_clk = {
1457108cdc09SImran Shaik 	.halt_reg = 0x72028,
1458108cdc09SImran Shaik 	.halt_check = BRANCH_HALT,
1459108cdc09SImran Shaik 	.clkr = {
1460108cdc09SImran Shaik 		.enable_reg = 0x72028,
1461108cdc09SImran Shaik 		.enable_mask = BIT(0),
1462108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1463108cdc09SImran Shaik 			.name = "gcc_emac1_phy_aux_clk",
1464108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
1465108cdc09SImran Shaik 				&gcc_emac1_phy_aux_clk_src.clkr.hw,
1466108cdc09SImran Shaik 			},
1467108cdc09SImran Shaik 			.num_parents = 1,
1468108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
1469108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1470108cdc09SImran Shaik 		},
1471108cdc09SImran Shaik 	},
1472108cdc09SImran Shaik };
1473108cdc09SImran Shaik 
1474108cdc09SImran Shaik static struct clk_branch gcc_emac1_ptp_clk = {
1475108cdc09SImran Shaik 	.halt_reg = 0x72044,
1476108cdc09SImran Shaik 	.halt_check = BRANCH_HALT,
1477108cdc09SImran Shaik 	.clkr = {
1478108cdc09SImran Shaik 		.enable_reg = 0x72044,
1479108cdc09SImran Shaik 		.enable_mask = BIT(0),
1480108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1481108cdc09SImran Shaik 			.name = "gcc_emac1_ptp_clk",
1482108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
1483108cdc09SImran Shaik 				&gcc_emac1_ptp_clk_src.clkr.hw,
1484108cdc09SImran Shaik 			},
1485108cdc09SImran Shaik 			.num_parents = 1,
1486108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
1487108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1488108cdc09SImran Shaik 		},
1489108cdc09SImran Shaik 	},
1490108cdc09SImran Shaik };
1491108cdc09SImran Shaik 
1492108cdc09SImran Shaik static struct clk_branch gcc_emac1_rgmii_clk = {
1493108cdc09SImran Shaik 	.halt_reg = 0x72050,
1494108cdc09SImran Shaik 	.halt_check = BRANCH_HALT,
1495108cdc09SImran Shaik 	.clkr = {
1496108cdc09SImran Shaik 		.enable_reg = 0x72050,
1497108cdc09SImran Shaik 		.enable_mask = BIT(0),
1498108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1499108cdc09SImran Shaik 			.name = "gcc_emac1_rgmii_clk",
1500108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
1501108cdc09SImran Shaik 				&gcc_emac1_rgmii_clk_src.clkr.hw,
1502108cdc09SImran Shaik 			},
1503108cdc09SImran Shaik 			.num_parents = 1,
1504108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
1505108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1506108cdc09SImran Shaik 		},
1507108cdc09SImran Shaik 	},
1508108cdc09SImran Shaik };
1509108cdc09SImran Shaik 
1510108cdc09SImran Shaik static struct clk_branch gcc_emac1_rpcs_rx_clk = {
1511108cdc09SImran Shaik 	.halt_reg = 0x720a0,
1512108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_DELAY,
1513108cdc09SImran Shaik 	.clkr = {
1514108cdc09SImran Shaik 		.enable_reg = 0x720a0,
1515108cdc09SImran Shaik 		.enable_mask = BIT(0),
1516108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1517108cdc09SImran Shaik 			.name = "gcc_emac1_rpcs_rx_clk",
1518108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
1519108cdc09SImran Shaik 				&gcc_emac1_sgmiiphy_mac_rclk_src.clkr.hw,
1520108cdc09SImran Shaik 			},
1521108cdc09SImran Shaik 			.num_parents = 1,
1522108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
1523108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1524108cdc09SImran Shaik 		},
1525108cdc09SImran Shaik 	},
1526108cdc09SImran Shaik };
1527108cdc09SImran Shaik 
1528108cdc09SImran Shaik static struct clk_branch gcc_emac1_rpcs_tx_clk = {
1529108cdc09SImran Shaik 	.halt_reg = 0x7209c,
1530108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_DELAY,
1531108cdc09SImran Shaik 	.clkr = {
1532108cdc09SImran Shaik 		.enable_reg = 0x7209c,
1533108cdc09SImran Shaik 		.enable_mask = BIT(0),
1534108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1535108cdc09SImran Shaik 			.name = "gcc_emac1_rpcs_tx_clk",
1536108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
1537108cdc09SImran Shaik 				&gcc_emac1_sgmiiphy_mac_tclk_src.clkr.hw,
1538108cdc09SImran Shaik 			},
1539108cdc09SImran Shaik 			.num_parents = 1,
1540108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
1541108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1542108cdc09SImran Shaik 		},
1543108cdc09SImran Shaik 	},
1544108cdc09SImran Shaik };
1545108cdc09SImran Shaik 
1546108cdc09SImran Shaik static struct clk_branch gcc_emac1_slv_ahb_clk = {
1547108cdc09SImran Shaik 	.halt_reg = 0x72024,
1548108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_VOTED,
1549108cdc09SImran Shaik 	.hwcg_reg = 0x72024,
1550108cdc09SImran Shaik 	.hwcg_bit = 1,
1551108cdc09SImran Shaik 	.clkr = {
1552108cdc09SImran Shaik 		.enable_reg = 0x72024,
1553108cdc09SImran Shaik 		.enable_mask = BIT(0),
1554108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1555108cdc09SImran Shaik 			.name = "gcc_emac1_slv_ahb_clk",
1556108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1557108cdc09SImran Shaik 		},
1558108cdc09SImran Shaik 	},
1559108cdc09SImran Shaik };
1560108cdc09SImran Shaik 
1561108cdc09SImran Shaik static struct clk_branch gcc_emac1_xgxs_rx_clk = {
1562108cdc09SImran Shaik 	.halt_reg = 0x720a8,
1563108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_DELAY,
1564108cdc09SImran Shaik 	.clkr = {
1565108cdc09SImran Shaik 		.enable_reg = 0x720a8,
1566108cdc09SImran Shaik 		.enable_mask = BIT(0),
1567108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1568108cdc09SImran Shaik 			.name = "gcc_emac1_xgxs_rx_clk",
1569108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
1570108cdc09SImran Shaik 				&gcc_emac1_sgmiiphy_mac_rclk_src.clkr.hw,
1571108cdc09SImran Shaik 			},
1572108cdc09SImran Shaik 			.num_parents = 1,
1573108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
1574108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1575108cdc09SImran Shaik 		},
1576108cdc09SImran Shaik 	},
1577108cdc09SImran Shaik };
1578108cdc09SImran Shaik 
1579108cdc09SImran Shaik static struct clk_branch gcc_emac1_xgxs_tx_clk = {
1580108cdc09SImran Shaik 	.halt_reg = 0x720a4,
1581108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_DELAY,
1582108cdc09SImran Shaik 	.clkr = {
1583108cdc09SImran Shaik 		.enable_reg = 0x720a4,
1584108cdc09SImran Shaik 		.enable_mask = BIT(0),
1585108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1586108cdc09SImran Shaik 			.name = "gcc_emac1_xgxs_tx_clk",
1587108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
1588108cdc09SImran Shaik 				&gcc_emac1_sgmiiphy_mac_tclk_src.clkr.hw,
1589108cdc09SImran Shaik 			},
1590108cdc09SImran Shaik 			.num_parents = 1,
1591108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
1592108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1593108cdc09SImran Shaik 		},
1594108cdc09SImran Shaik 	},
1595108cdc09SImran Shaik };
1596108cdc09SImran Shaik 
1597108cdc09SImran Shaik static struct clk_branch gcc_emac_0_clkref_en = {
1598108cdc09SImran Shaik 	.halt_reg = 0x98108,
1599108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_ENABLE,
1600108cdc09SImran Shaik 	.clkr = {
1601108cdc09SImran Shaik 		.enable_reg = 0x98108,
1602108cdc09SImran Shaik 		.enable_mask = BIT(0),
1603108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1604108cdc09SImran Shaik 			.name = "gcc_emac_0_clkref_en",
1605108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1606108cdc09SImran Shaik 		},
1607108cdc09SImran Shaik 	},
1608108cdc09SImran Shaik };
1609108cdc09SImran Shaik 
1610108cdc09SImran Shaik static struct clk_branch gcc_emac_1_clkref_en = {
1611108cdc09SImran Shaik 	.halt_reg = 0x9810c,
1612108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_ENABLE,
1613108cdc09SImran Shaik 	.clkr = {
1614108cdc09SImran Shaik 		.enable_reg = 0x9810c,
1615108cdc09SImran Shaik 		.enable_mask = BIT(0),
1616108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1617108cdc09SImran Shaik 			.name = "gcc_emac_1_clkref_en",
1618108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1619108cdc09SImran Shaik 		},
1620108cdc09SImran Shaik 	},
1621108cdc09SImran Shaik };
1622108cdc09SImran Shaik 
1623108cdc09SImran Shaik static struct clk_branch gcc_gp1_clk = {
1624108cdc09SImran Shaik 	.halt_reg = 0x47000,
1625108cdc09SImran Shaik 	.halt_check = BRANCH_HALT,
1626108cdc09SImran Shaik 	.clkr = {
1627108cdc09SImran Shaik 		.enable_reg = 0x47000,
1628108cdc09SImran Shaik 		.enable_mask = BIT(0),
1629108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1630108cdc09SImran Shaik 			.name = "gcc_gp1_clk",
1631108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
1632108cdc09SImran Shaik 				&gcc_gp1_clk_src.clkr.hw,
1633108cdc09SImran Shaik 			},
1634108cdc09SImran Shaik 			.num_parents = 1,
1635108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
1636108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1637108cdc09SImran Shaik 		},
1638108cdc09SImran Shaik 	},
1639108cdc09SImran Shaik };
1640108cdc09SImran Shaik 
1641108cdc09SImran Shaik static struct clk_branch gcc_gp2_clk = {
1642108cdc09SImran Shaik 	.halt_reg = 0x48000,
1643108cdc09SImran Shaik 	.halt_check = BRANCH_HALT,
1644108cdc09SImran Shaik 	.clkr = {
1645108cdc09SImran Shaik 		.enable_reg = 0x48000,
1646108cdc09SImran Shaik 		.enable_mask = BIT(0),
1647108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1648108cdc09SImran Shaik 			.name = "gcc_gp2_clk",
1649108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
1650108cdc09SImran Shaik 				&gcc_gp2_clk_src.clkr.hw,
1651108cdc09SImran Shaik 			},
1652108cdc09SImran Shaik 			.num_parents = 1,
1653108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
1654108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1655108cdc09SImran Shaik 		},
1656108cdc09SImran Shaik 	},
1657108cdc09SImran Shaik };
1658108cdc09SImran Shaik 
1659108cdc09SImran Shaik static struct clk_branch gcc_gp3_clk = {
1660108cdc09SImran Shaik 	.halt_reg = 0x49000,
1661108cdc09SImran Shaik 	.halt_check = BRANCH_HALT,
1662108cdc09SImran Shaik 	.clkr = {
1663108cdc09SImran Shaik 		.enable_reg = 0x49000,
1664108cdc09SImran Shaik 		.enable_mask = BIT(0),
1665108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1666108cdc09SImran Shaik 			.name = "gcc_gp3_clk",
1667108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
1668108cdc09SImran Shaik 				&gcc_gp3_clk_src.clkr.hw,
1669108cdc09SImran Shaik 			},
1670108cdc09SImran Shaik 			.num_parents = 1,
1671108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
1672108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1673108cdc09SImran Shaik 		},
1674108cdc09SImran Shaik 	},
1675108cdc09SImran Shaik };
1676108cdc09SImran Shaik 
1677108cdc09SImran Shaik static struct clk_branch gcc_pcie_0_clkref_en = {
1678108cdc09SImran Shaik 	.halt_reg = 0x98004,
1679108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_ENABLE,
1680108cdc09SImran Shaik 	.clkr = {
1681108cdc09SImran Shaik 		.enable_reg = 0x98004,
1682108cdc09SImran Shaik 		.enable_mask = BIT(0),
1683108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1684108cdc09SImran Shaik 			.name = "gcc_pcie_0_clkref_en",
1685108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1686108cdc09SImran Shaik 		},
1687108cdc09SImran Shaik 	},
1688108cdc09SImran Shaik };
1689108cdc09SImran Shaik 
1690108cdc09SImran Shaik static struct clk_branch gcc_pcie_1_aux_clk = {
1691108cdc09SImran Shaik 	.halt_reg = 0x67038,
1692108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_DELAY,
1693108cdc09SImran Shaik 	.clkr = {
1694108cdc09SImran Shaik 		.enable_reg = 0x7d010,
1695108cdc09SImran Shaik 		.enable_mask = BIT(22),
1696108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1697108cdc09SImran Shaik 			.name = "gcc_pcie_1_aux_clk",
1698108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
1699108cdc09SImran Shaik 				&gcc_pcie_1_aux_phy_clk_src.clkr.hw,
1700108cdc09SImran Shaik 			},
1701108cdc09SImran Shaik 			.num_parents = 1,
1702108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
1703108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1704108cdc09SImran Shaik 		},
1705108cdc09SImran Shaik 	},
1706108cdc09SImran Shaik };
1707108cdc09SImran Shaik 
1708108cdc09SImran Shaik static struct clk_branch gcc_pcie_1_cfg_ahb_clk = {
1709108cdc09SImran Shaik 	.halt_reg = 0x67034,
1710108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_VOTED,
1711108cdc09SImran Shaik 	.hwcg_reg = 0x67034,
1712108cdc09SImran Shaik 	.hwcg_bit = 1,
1713108cdc09SImran Shaik 	.clkr = {
1714108cdc09SImran Shaik 		.enable_reg = 0x7d010,
1715108cdc09SImran Shaik 		.enable_mask = BIT(21),
1716108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1717108cdc09SImran Shaik 			.name = "gcc_pcie_1_cfg_ahb_clk",
1718108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1719108cdc09SImran Shaik 		},
1720108cdc09SImran Shaik 	},
1721108cdc09SImran Shaik };
1722108cdc09SImran Shaik 
1723108cdc09SImran Shaik static struct clk_branch gcc_pcie_1_clkref_en = {
1724108cdc09SImran Shaik 	.halt_reg = 0x98114,
1725108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_ENABLE,
1726108cdc09SImran Shaik 	.clkr = {
1727108cdc09SImran Shaik 		.enable_reg = 0x98114,
1728108cdc09SImran Shaik 		.enable_mask = BIT(0),
1729108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1730108cdc09SImran Shaik 			.name = "gcc_pcie_1_clkref_en",
1731108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1732108cdc09SImran Shaik 		},
1733108cdc09SImran Shaik 	},
1734108cdc09SImran Shaik };
1735108cdc09SImran Shaik 
1736108cdc09SImran Shaik static struct clk_branch gcc_pcie_1_mstr_axi_clk = {
1737108cdc09SImran Shaik 	.halt_reg = 0x67028,
1738108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_VOTED,
1739108cdc09SImran Shaik 	.clkr = {
1740108cdc09SImran Shaik 		.enable_reg = 0x7d010,
1741108cdc09SImran Shaik 		.enable_mask = BIT(20),
1742108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1743108cdc09SImran Shaik 			.name = "gcc_pcie_1_mstr_axi_clk",
1744108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1745108cdc09SImran Shaik 		},
1746108cdc09SImran Shaik 	},
1747108cdc09SImran Shaik };
1748108cdc09SImran Shaik 
1749108cdc09SImran Shaik static struct clk_branch gcc_pcie_1_phy_rchng_clk = {
1750108cdc09SImran Shaik 	.halt_reg = 0x67068,
1751108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_VOTED,
1752108cdc09SImran Shaik 	.clkr = {
1753108cdc09SImran Shaik 		.enable_reg = 0x7d010,
1754108cdc09SImran Shaik 		.enable_mask = BIT(24),
1755108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1756108cdc09SImran Shaik 			.name = "gcc_pcie_1_phy_rchng_clk",
1757108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
1758108cdc09SImran Shaik 				&gcc_pcie_1_phy_rchng_clk_src.clkr.hw,
1759108cdc09SImran Shaik 			},
1760108cdc09SImran Shaik 			.num_parents = 1,
1761108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
1762108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1763108cdc09SImran Shaik 		},
1764108cdc09SImran Shaik 	},
1765108cdc09SImran Shaik };
1766108cdc09SImran Shaik 
1767108cdc09SImran Shaik static struct clk_branch gcc_pcie_1_pipe_clk = {
1768108cdc09SImran Shaik 	.halt_reg = 0x6705c,
1769108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_DELAY,
1770108cdc09SImran Shaik 	.clkr = {
1771108cdc09SImran Shaik 		.enable_reg = 0x7d010,
1772108cdc09SImran Shaik 		.enable_mask = BIT(23),
1773108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1774108cdc09SImran Shaik 			.name = "gcc_pcie_1_pipe_clk",
1775108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
1776108cdc09SImran Shaik 				&gcc_pcie_1_pipe_clk_src.clkr.hw,
1777108cdc09SImran Shaik 			},
1778108cdc09SImran Shaik 			.num_parents = 1,
1779108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
1780108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1781108cdc09SImran Shaik 		},
1782108cdc09SImran Shaik 	},
1783108cdc09SImran Shaik };
1784108cdc09SImran Shaik 
1785108cdc09SImran Shaik static struct clk_branch gcc_pcie_1_pipe_div2_clk = {
1786108cdc09SImran Shaik 	.halt_reg = 0x6708c,
1787108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_DELAY,
1788108cdc09SImran Shaik 	.clkr = {
1789108cdc09SImran Shaik 		.enable_reg = 0x7d020,
1790108cdc09SImran Shaik 		.enable_mask = BIT(3),
1791108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1792108cdc09SImran Shaik 			.name = "gcc_pcie_1_pipe_div2_clk",
1793108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
1794108cdc09SImran Shaik 				&gcc_pcie_1_pipe_div2_clk_src.clkr.hw,
1795108cdc09SImran Shaik 			},
1796108cdc09SImran Shaik 			.num_parents = 1,
1797108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
1798108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1799108cdc09SImran Shaik 		},
1800108cdc09SImran Shaik 	},
1801108cdc09SImran Shaik };
1802108cdc09SImran Shaik 
1803108cdc09SImran Shaik static struct clk_branch gcc_pcie_1_slv_axi_clk = {
1804108cdc09SImran Shaik 	.halt_reg = 0x6701c,
1805108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_VOTED,
1806108cdc09SImran Shaik 	.clkr = {
1807108cdc09SImran Shaik 		.enable_reg = 0x7d010,
1808108cdc09SImran Shaik 		.enable_mask = BIT(19),
1809108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1810108cdc09SImran Shaik 			.name = "gcc_pcie_1_slv_axi_clk",
1811108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1812108cdc09SImran Shaik 		},
1813108cdc09SImran Shaik 	},
1814108cdc09SImran Shaik };
1815108cdc09SImran Shaik 
1816108cdc09SImran Shaik static struct clk_branch gcc_pcie_1_slv_q2a_axi_clk = {
1817108cdc09SImran Shaik 	.halt_reg = 0x67018,
1818108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_VOTED,
1819108cdc09SImran Shaik 	.clkr = {
1820108cdc09SImran Shaik 		.enable_reg = 0x7d010,
1821108cdc09SImran Shaik 		.enable_mask = BIT(18),
1822108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1823108cdc09SImran Shaik 			.name = "gcc_pcie_1_slv_q2a_axi_clk",
1824108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1825108cdc09SImran Shaik 		},
1826108cdc09SImran Shaik 	},
1827108cdc09SImran Shaik };
1828108cdc09SImran Shaik 
1829108cdc09SImran Shaik static struct clk_branch gcc_pcie_2_aux_clk = {
1830108cdc09SImran Shaik 	.halt_reg = 0x68058,
1831108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_DELAY,
1832108cdc09SImran Shaik 	.clkr = {
1833108cdc09SImran Shaik 		.enable_reg = 0x7d010,
1834108cdc09SImran Shaik 		.enable_mask = BIT(29),
1835108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1836108cdc09SImran Shaik 			.name = "gcc_pcie_2_aux_clk",
1837108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
1838108cdc09SImran Shaik 				&gcc_pcie_2_aux_phy_clk_src.clkr.hw,
1839108cdc09SImran Shaik 			},
1840108cdc09SImran Shaik 			.num_parents = 1,
1841108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
1842108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1843108cdc09SImran Shaik 		},
1844108cdc09SImran Shaik 	},
1845108cdc09SImran Shaik };
1846108cdc09SImran Shaik 
1847108cdc09SImran Shaik static struct clk_branch gcc_pcie_2_cfg_ahb_clk = {
1848108cdc09SImran Shaik 	.halt_reg = 0x68034,
1849108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_VOTED,
1850108cdc09SImran Shaik 	.hwcg_reg = 0x68034,
1851108cdc09SImran Shaik 	.hwcg_bit = 1,
1852108cdc09SImran Shaik 	.clkr = {
1853108cdc09SImran Shaik 		.enable_reg = 0x7d010,
1854108cdc09SImran Shaik 		.enable_mask = BIT(28),
1855108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1856108cdc09SImran Shaik 			.name = "gcc_pcie_2_cfg_ahb_clk",
1857108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1858108cdc09SImran Shaik 		},
1859108cdc09SImran Shaik 	},
1860108cdc09SImran Shaik };
1861108cdc09SImran Shaik 
1862108cdc09SImran Shaik static struct clk_branch gcc_pcie_2_clkref_en = {
1863108cdc09SImran Shaik 	.halt_reg = 0x98110,
1864108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_ENABLE,
1865108cdc09SImran Shaik 	.clkr = {
1866108cdc09SImran Shaik 		.enable_reg = 0x98110,
1867108cdc09SImran Shaik 		.enable_mask = BIT(0),
1868108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1869108cdc09SImran Shaik 			.name = "gcc_pcie_2_clkref_en",
1870108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1871108cdc09SImran Shaik 		},
1872108cdc09SImran Shaik 	},
1873108cdc09SImran Shaik };
1874108cdc09SImran Shaik 
1875108cdc09SImran Shaik static struct clk_branch gcc_pcie_2_mstr_axi_clk = {
1876108cdc09SImran Shaik 	.halt_reg = 0x68028,
1877108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_VOTED,
1878108cdc09SImran Shaik 	.clkr = {
1879108cdc09SImran Shaik 		.enable_reg = 0x7d008,
1880108cdc09SImran Shaik 		.enable_mask = BIT(8),
1881108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1882108cdc09SImran Shaik 			.name = "gcc_pcie_2_mstr_axi_clk",
1883108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1884108cdc09SImran Shaik 		},
1885108cdc09SImran Shaik 	},
1886108cdc09SImran Shaik };
1887108cdc09SImran Shaik 
1888108cdc09SImran Shaik static struct clk_branch gcc_pcie_2_phy_rchng_clk = {
1889108cdc09SImran Shaik 	.halt_reg = 0x68098,
1890108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_VOTED,
1891108cdc09SImran Shaik 	.clkr = {
1892108cdc09SImran Shaik 		.enable_reg = 0x7d010,
1893108cdc09SImran Shaik 		.enable_mask = BIT(31),
1894108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1895108cdc09SImran Shaik 			.name = "gcc_pcie_2_phy_rchng_clk",
1896108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
1897108cdc09SImran Shaik 				&gcc_pcie_2_phy_rchng_clk_src.clkr.hw,
1898108cdc09SImran Shaik 			},
1899108cdc09SImran Shaik 			.num_parents = 1,
1900108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
1901108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1902108cdc09SImran Shaik 		},
1903108cdc09SImran Shaik 	},
1904108cdc09SImran Shaik };
1905108cdc09SImran Shaik 
1906108cdc09SImran Shaik static struct clk_branch gcc_pcie_2_pipe_clk = {
1907108cdc09SImran Shaik 	.halt_reg = 0x6807c,
1908108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_DELAY,
1909108cdc09SImran Shaik 	.clkr = {
1910108cdc09SImran Shaik 		.enable_reg = 0x7d010,
1911108cdc09SImran Shaik 		.enable_mask = BIT(30),
1912108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1913108cdc09SImran Shaik 			.name = "gcc_pcie_2_pipe_clk",
1914108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
1915108cdc09SImran Shaik 				&gcc_pcie_2_pipe_clk_src.clkr.hw,
1916108cdc09SImran Shaik 			},
1917108cdc09SImran Shaik 			.num_parents = 1,
1918108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
1919108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1920108cdc09SImran Shaik 		},
1921108cdc09SImran Shaik 	},
1922108cdc09SImran Shaik };
1923108cdc09SImran Shaik 
1924108cdc09SImran Shaik static struct clk_branch gcc_pcie_2_pipe_div2_clk = {
1925108cdc09SImran Shaik 	.halt_reg = 0x6808c,
1926108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_DELAY,
1927108cdc09SImran Shaik 	.clkr = {
1928108cdc09SImran Shaik 		.enable_reg = 0x7d020,
1929108cdc09SImran Shaik 		.enable_mask = BIT(4),
1930108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1931108cdc09SImran Shaik 			.name = "gcc_pcie_2_pipe_div2_clk",
1932108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
1933108cdc09SImran Shaik 				&gcc_pcie_2_pipe_div2_clk_src.clkr.hw,
1934108cdc09SImran Shaik 			},
1935108cdc09SImran Shaik 			.num_parents = 1,
1936108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
1937108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1938108cdc09SImran Shaik 		},
1939108cdc09SImran Shaik 	},
1940108cdc09SImran Shaik };
1941108cdc09SImran Shaik 
1942108cdc09SImran Shaik static struct clk_branch gcc_pcie_2_slv_axi_clk = {
1943108cdc09SImran Shaik 	.halt_reg = 0x6801c,
1944108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_VOTED,
1945108cdc09SImran Shaik 	.clkr = {
1946108cdc09SImran Shaik 		.enable_reg = 0x7d010,
1947108cdc09SImran Shaik 		.enable_mask = BIT(26),
1948108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1949108cdc09SImran Shaik 			.name = "gcc_pcie_2_slv_axi_clk",
1950108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1951108cdc09SImran Shaik 		},
1952108cdc09SImran Shaik 	},
1953108cdc09SImran Shaik };
1954108cdc09SImran Shaik 
1955108cdc09SImran Shaik static struct clk_branch gcc_pcie_2_slv_q2a_axi_clk = {
1956108cdc09SImran Shaik 	.halt_reg = 0x68018,
1957108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_VOTED,
1958108cdc09SImran Shaik 	.clkr = {
1959108cdc09SImran Shaik 		.enable_reg = 0x7d010,
1960108cdc09SImran Shaik 		.enable_mask = BIT(25),
1961108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1962108cdc09SImran Shaik 			.name = "gcc_pcie_2_slv_q2a_axi_clk",
1963108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1964108cdc09SImran Shaik 		},
1965108cdc09SImran Shaik 	},
1966108cdc09SImran Shaik };
1967108cdc09SImran Shaik 
1968108cdc09SImran Shaik static struct clk_branch gcc_pcie_aux_clk = {
1969108cdc09SImran Shaik 	.halt_reg = 0x5303c,
1970108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_DELAY,
1971108cdc09SImran Shaik 	.hwcg_reg = 0x5303c,
1972108cdc09SImran Shaik 	.hwcg_bit = 1,
1973108cdc09SImran Shaik 	.clkr = {
1974108cdc09SImran Shaik 		.enable_reg = 0x7d010,
1975108cdc09SImran Shaik 		.enable_mask = BIT(15),
1976108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1977108cdc09SImran Shaik 			.name = "gcc_pcie_aux_clk",
1978108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
1979108cdc09SImran Shaik 				&gcc_pcie_aux_clk_src.clkr.hw,
1980108cdc09SImran Shaik 			},
1981108cdc09SImran Shaik 			.num_parents = 1,
1982108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
1983108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1984108cdc09SImran Shaik 		},
1985108cdc09SImran Shaik 	},
1986108cdc09SImran Shaik };
1987108cdc09SImran Shaik 
1988108cdc09SImran Shaik static struct clk_branch gcc_pcie_cfg_ahb_clk = {
1989108cdc09SImran Shaik 	.halt_reg = 0x53034,
1990108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_VOTED,
1991108cdc09SImran Shaik 	.hwcg_reg = 0x53034,
1992108cdc09SImran Shaik 	.hwcg_bit = 1,
1993108cdc09SImran Shaik 	.clkr = {
1994108cdc09SImran Shaik 		.enable_reg = 0x7d010,
1995108cdc09SImran Shaik 		.enable_mask = BIT(13),
1996108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
1997108cdc09SImran Shaik 			.name = "gcc_pcie_cfg_ahb_clk",
1998108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
1999108cdc09SImran Shaik 		},
2000108cdc09SImran Shaik 	},
2001108cdc09SImran Shaik };
2002108cdc09SImran Shaik 
2003108cdc09SImran Shaik static struct clk_branch gcc_pcie_mstr_axi_clk = {
2004108cdc09SImran Shaik 	.halt_reg = 0x53028,
2005108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_VOTED,
2006108cdc09SImran Shaik 	.hwcg_reg = 0x53028,
2007108cdc09SImran Shaik 	.hwcg_bit = 1,
2008108cdc09SImran Shaik 	.clkr = {
2009108cdc09SImran Shaik 		.enable_reg = 0x7d010,
2010108cdc09SImran Shaik 		.enable_mask = BIT(12),
2011108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
2012108cdc09SImran Shaik 			.name = "gcc_pcie_mstr_axi_clk",
2013108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
2014108cdc09SImran Shaik 		},
2015108cdc09SImran Shaik 	},
2016108cdc09SImran Shaik };
2017108cdc09SImran Shaik 
2018108cdc09SImran Shaik static struct clk_branch gcc_pcie_pipe_clk = {
2019108cdc09SImran Shaik 	.halt_reg = 0x5304c,
2020108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_DELAY,
2021108cdc09SImran Shaik 	.hwcg_reg = 0x5304c,
2022108cdc09SImran Shaik 	.hwcg_bit = 1,
2023108cdc09SImran Shaik 	.clkr = {
2024108cdc09SImran Shaik 		.enable_reg = 0x7d010,
2025108cdc09SImran Shaik 		.enable_mask = BIT(17),
2026108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
2027108cdc09SImran Shaik 			.name = "gcc_pcie_pipe_clk",
2028108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
2029108cdc09SImran Shaik 				&gcc_pcie_pipe_clk_src.clkr.hw,
2030108cdc09SImran Shaik 			},
2031108cdc09SImran Shaik 			.num_parents = 1,
2032108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
2033108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
2034108cdc09SImran Shaik 		},
2035108cdc09SImran Shaik 	},
2036108cdc09SImran Shaik };
2037108cdc09SImran Shaik 
2038108cdc09SImran Shaik static struct clk_branch gcc_pcie_rchng_phy_clk = {
2039108cdc09SImran Shaik 	.halt_reg = 0x53038,
2040108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_VOTED,
2041108cdc09SImran Shaik 	.hwcg_reg = 0x53038,
2042108cdc09SImran Shaik 	.hwcg_bit = 1,
2043108cdc09SImran Shaik 	.clkr = {
2044108cdc09SImran Shaik 		.enable_reg = 0x7d010,
2045108cdc09SImran Shaik 		.enable_mask = BIT(14),
2046108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
2047108cdc09SImran Shaik 			.name = "gcc_pcie_rchng_phy_clk",
2048108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
2049108cdc09SImran Shaik 				&gcc_pcie_rchng_phy_clk_src.clkr.hw,
2050108cdc09SImran Shaik 			},
2051108cdc09SImran Shaik 			.num_parents = 1,
2052108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
2053108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
2054108cdc09SImran Shaik 		},
2055108cdc09SImran Shaik 	},
2056108cdc09SImran Shaik };
2057108cdc09SImran Shaik 
2058108cdc09SImran Shaik static struct clk_branch gcc_pcie_sleep_clk = {
2059108cdc09SImran Shaik 	.halt_reg = 0x53048,
2060108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_VOTED,
2061108cdc09SImran Shaik 	.hwcg_reg = 0x53048,
2062108cdc09SImran Shaik 	.hwcg_bit = 1,
2063108cdc09SImran Shaik 	.clkr = {
2064108cdc09SImran Shaik 		.enable_reg = 0x7d010,
2065108cdc09SImran Shaik 		.enable_mask = BIT(16),
2066108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
2067108cdc09SImran Shaik 			.name = "gcc_pcie_sleep_clk",
2068108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
2069108cdc09SImran Shaik 				&gcc_pcie_aux_phy_clk_src.clkr.hw,
2070108cdc09SImran Shaik 			},
2071108cdc09SImran Shaik 			.num_parents = 1,
2072108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
2073108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
2074108cdc09SImran Shaik 		},
2075108cdc09SImran Shaik 	},
2076108cdc09SImran Shaik };
2077108cdc09SImran Shaik 
2078108cdc09SImran Shaik static struct clk_branch gcc_pcie_slv_axi_clk = {
2079108cdc09SImran Shaik 	.halt_reg = 0x5301c,
2080108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_VOTED,
2081108cdc09SImran Shaik 	.clkr = {
2082108cdc09SImran Shaik 		.enable_reg = 0x7d010,
2083108cdc09SImran Shaik 		.enable_mask = BIT(11),
2084108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
2085108cdc09SImran Shaik 			.name = "gcc_pcie_slv_axi_clk",
2086108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
2087108cdc09SImran Shaik 		},
2088108cdc09SImran Shaik 	},
2089108cdc09SImran Shaik };
2090108cdc09SImran Shaik 
2091108cdc09SImran Shaik static struct clk_branch gcc_pcie_slv_q2a_axi_clk = {
2092108cdc09SImran Shaik 	.halt_reg = 0x53018,
2093108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_VOTED,
2094108cdc09SImran Shaik 	.hwcg_reg = 0x53018,
2095108cdc09SImran Shaik 	.hwcg_bit = 1,
2096108cdc09SImran Shaik 	.clkr = {
2097108cdc09SImran Shaik 		.enable_reg = 0x7d010,
2098108cdc09SImran Shaik 		.enable_mask = BIT(10),
2099108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
2100108cdc09SImran Shaik 			.name = "gcc_pcie_slv_q2a_axi_clk",
2101108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
2102108cdc09SImran Shaik 		},
2103108cdc09SImran Shaik 	},
2104108cdc09SImran Shaik };
2105108cdc09SImran Shaik 
2106108cdc09SImran Shaik static struct clk_branch gcc_pdm2_clk = {
2107108cdc09SImran Shaik 	.halt_reg = 0x3400c,
2108108cdc09SImran Shaik 	.halt_check = BRANCH_HALT,
2109108cdc09SImran Shaik 	.clkr = {
2110108cdc09SImran Shaik 		.enable_reg = 0x3400c,
2111108cdc09SImran Shaik 		.enable_mask = BIT(0),
2112108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
2113108cdc09SImran Shaik 			.name = "gcc_pdm2_clk",
2114108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
2115108cdc09SImran Shaik 				&gcc_pdm2_clk_src.clkr.hw,
2116108cdc09SImran Shaik 			},
2117108cdc09SImran Shaik 			.num_parents = 1,
2118108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
2119108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
2120108cdc09SImran Shaik 		},
2121108cdc09SImran Shaik 	},
2122108cdc09SImran Shaik };
2123108cdc09SImran Shaik 
2124108cdc09SImran Shaik static struct clk_branch gcc_pdm_ahb_clk = {
2125108cdc09SImran Shaik 	.halt_reg = 0x34004,
2126108cdc09SImran Shaik 	.halt_check = BRANCH_HALT,
2127108cdc09SImran Shaik 	.clkr = {
2128108cdc09SImran Shaik 		.enable_reg = 0x34004,
2129108cdc09SImran Shaik 		.enable_mask = BIT(0),
2130108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
2131108cdc09SImran Shaik 			.name = "gcc_pdm_ahb_clk",
2132108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
2133108cdc09SImran Shaik 		},
2134108cdc09SImran Shaik 	},
2135108cdc09SImran Shaik };
2136108cdc09SImran Shaik 
2137108cdc09SImran Shaik static struct clk_branch gcc_pdm_xo4_clk = {
2138108cdc09SImran Shaik 	.halt_reg = 0x34008,
2139108cdc09SImran Shaik 	.halt_check = BRANCH_HALT,
2140108cdc09SImran Shaik 	.clkr = {
2141108cdc09SImran Shaik 		.enable_reg = 0x34008,
2142108cdc09SImran Shaik 		.enable_mask = BIT(0),
2143108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
2144108cdc09SImran Shaik 			.name = "gcc_pdm_xo4_clk",
2145108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
2146108cdc09SImran Shaik 		},
2147108cdc09SImran Shaik 	},
2148108cdc09SImran Shaik };
2149108cdc09SImran Shaik 
2150108cdc09SImran Shaik static struct clk_branch gcc_qupv3_wrap0_core_2x_clk = {
2151108cdc09SImran Shaik 	.halt_reg = 0x2d018,
2152108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_VOTED,
2153108cdc09SImran Shaik 	.clkr = {
2154108cdc09SImran Shaik 		.enable_reg = 0x7d008,
2155108cdc09SImran Shaik 		.enable_mask = BIT(15),
2156108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
2157108cdc09SImran Shaik 			.name = "gcc_qupv3_wrap0_core_2x_clk",
2158108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
2159108cdc09SImran Shaik 		},
2160108cdc09SImran Shaik 	},
2161108cdc09SImran Shaik };
2162108cdc09SImran Shaik 
2163108cdc09SImran Shaik static struct clk_branch gcc_qupv3_wrap0_core_clk = {
2164108cdc09SImran Shaik 	.halt_reg = 0x2d008,
2165108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_VOTED,
2166108cdc09SImran Shaik 	.clkr = {
2167108cdc09SImran Shaik 		.enable_reg = 0x7d008,
2168108cdc09SImran Shaik 		.enable_mask = BIT(14),
2169108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
2170108cdc09SImran Shaik 			.name = "gcc_qupv3_wrap0_core_clk",
2171108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
2172108cdc09SImran Shaik 		},
2173108cdc09SImran Shaik 	},
2174108cdc09SImran Shaik };
2175108cdc09SImran Shaik 
2176108cdc09SImran Shaik static struct clk_branch gcc_qupv3_wrap0_s0_clk = {
2177108cdc09SImran Shaik 	.halt_reg = 0x6c004,
2178108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_VOTED,
2179108cdc09SImran Shaik 	.clkr = {
2180108cdc09SImran Shaik 		.enable_reg = 0x7d008,
2181108cdc09SImran Shaik 		.enable_mask = BIT(16),
2182108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
2183108cdc09SImran Shaik 			.name = "gcc_qupv3_wrap0_s0_clk",
2184108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
2185108cdc09SImran Shaik 				&gcc_qupv3_wrap0_s0_clk_src.clkr.hw,
2186108cdc09SImran Shaik 			},
2187108cdc09SImran Shaik 			.num_parents = 1,
2188108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
2189108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
2190108cdc09SImran Shaik 		},
2191108cdc09SImran Shaik 	},
2192108cdc09SImran Shaik };
2193108cdc09SImran Shaik 
2194108cdc09SImran Shaik static struct clk_branch gcc_qupv3_wrap0_s1_clk = {
2195108cdc09SImran Shaik 	.halt_reg = 0x6c13c,
2196108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_VOTED,
2197108cdc09SImran Shaik 	.clkr = {
2198108cdc09SImran Shaik 		.enable_reg = 0x7d008,
2199108cdc09SImran Shaik 		.enable_mask = BIT(17),
2200108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
2201108cdc09SImran Shaik 			.name = "gcc_qupv3_wrap0_s1_clk",
2202108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
2203108cdc09SImran Shaik 				&gcc_qupv3_wrap0_s1_clk_src.clkr.hw,
2204108cdc09SImran Shaik 			},
2205108cdc09SImran Shaik 			.num_parents = 1,
2206108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
2207108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
2208108cdc09SImran Shaik 		},
2209108cdc09SImran Shaik 	},
2210108cdc09SImran Shaik };
2211108cdc09SImran Shaik 
2212108cdc09SImran Shaik static struct clk_branch gcc_qupv3_wrap0_s2_clk = {
2213108cdc09SImran Shaik 	.halt_reg = 0x6c274,
2214108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_VOTED,
2215108cdc09SImran Shaik 	.clkr = {
2216108cdc09SImran Shaik 		.enable_reg = 0x7d008,
2217108cdc09SImran Shaik 		.enable_mask = BIT(18),
2218108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
2219108cdc09SImran Shaik 			.name = "gcc_qupv3_wrap0_s2_clk",
2220108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
2221108cdc09SImran Shaik 				&gcc_qupv3_wrap0_s2_clk_src.clkr.hw,
2222108cdc09SImran Shaik 			},
2223108cdc09SImran Shaik 			.num_parents = 1,
2224108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
2225108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
2226108cdc09SImran Shaik 		},
2227108cdc09SImran Shaik 	},
2228108cdc09SImran Shaik };
2229108cdc09SImran Shaik 
2230108cdc09SImran Shaik static struct clk_branch gcc_qupv3_wrap0_s3_clk = {
2231108cdc09SImran Shaik 	.halt_reg = 0x6c3ac,
2232108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_VOTED,
2233108cdc09SImran Shaik 	.clkr = {
2234108cdc09SImran Shaik 		.enable_reg = 0x7d008,
2235108cdc09SImran Shaik 		.enable_mask = BIT(19),
2236108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
2237108cdc09SImran Shaik 			.name = "gcc_qupv3_wrap0_s3_clk",
2238108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
2239108cdc09SImran Shaik 				&gcc_qupv3_wrap0_s3_clk_src.clkr.hw,
2240108cdc09SImran Shaik 			},
2241108cdc09SImran Shaik 			.num_parents = 1,
2242108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
2243108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
2244108cdc09SImran Shaik 		},
2245108cdc09SImran Shaik 	},
2246108cdc09SImran Shaik };
2247108cdc09SImran Shaik 
2248108cdc09SImran Shaik static struct clk_branch gcc_qupv3_wrap0_s4_clk = {
2249108cdc09SImran Shaik 	.halt_reg = 0x6c4e4,
2250108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_VOTED,
2251108cdc09SImran Shaik 	.clkr = {
2252108cdc09SImran Shaik 		.enable_reg = 0x7d008,
2253108cdc09SImran Shaik 		.enable_mask = BIT(20),
2254108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
2255108cdc09SImran Shaik 			.name = "gcc_qupv3_wrap0_s4_clk",
2256108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
2257108cdc09SImran Shaik 				&gcc_qupv3_wrap0_s4_clk_src.clkr.hw,
2258108cdc09SImran Shaik 			},
2259108cdc09SImran Shaik 			.num_parents = 1,
2260108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
2261108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
2262108cdc09SImran Shaik 		},
2263108cdc09SImran Shaik 	},
2264108cdc09SImran Shaik };
2265108cdc09SImran Shaik 
2266108cdc09SImran Shaik static struct clk_branch gcc_qupv3_wrap0_s5_clk = {
2267108cdc09SImran Shaik 	.halt_reg = 0x6c61c,
2268108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_VOTED,
2269108cdc09SImran Shaik 	.clkr = {
2270108cdc09SImran Shaik 		.enable_reg = 0x7d008,
2271108cdc09SImran Shaik 		.enable_mask = BIT(21),
2272108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
2273108cdc09SImran Shaik 			.name = "gcc_qupv3_wrap0_s5_clk",
2274108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
2275108cdc09SImran Shaik 				&gcc_qupv3_wrap0_s5_clk_src.clkr.hw,
2276108cdc09SImran Shaik 			},
2277108cdc09SImran Shaik 			.num_parents = 1,
2278108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
2279108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
2280108cdc09SImran Shaik 		},
2281108cdc09SImran Shaik 	},
2282108cdc09SImran Shaik };
2283108cdc09SImran Shaik 
2284108cdc09SImran Shaik static struct clk_branch gcc_qupv3_wrap0_s6_clk = {
2285108cdc09SImran Shaik 	.halt_reg = 0x6c754,
2286108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_VOTED,
2287108cdc09SImran Shaik 	.clkr = {
2288108cdc09SImran Shaik 		.enable_reg = 0x7d008,
2289108cdc09SImran Shaik 		.enable_mask = BIT(22),
2290108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
2291108cdc09SImran Shaik 			.name = "gcc_qupv3_wrap0_s6_clk",
2292108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
2293108cdc09SImran Shaik 				&gcc_qupv3_wrap0_s6_clk_src.clkr.hw,
2294108cdc09SImran Shaik 			},
2295108cdc09SImran Shaik 			.num_parents = 1,
2296108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
2297108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
2298108cdc09SImran Shaik 		},
2299108cdc09SImran Shaik 	},
2300108cdc09SImran Shaik };
2301108cdc09SImran Shaik 
2302108cdc09SImran Shaik static struct clk_branch gcc_qupv3_wrap0_s7_clk = {
2303108cdc09SImran Shaik 	.halt_reg = 0x6c88c,
2304108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_VOTED,
2305108cdc09SImran Shaik 	.clkr = {
2306108cdc09SImran Shaik 		.enable_reg = 0x7d008,
2307108cdc09SImran Shaik 		.enable_mask = BIT(23),
2308108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
2309108cdc09SImran Shaik 			.name = "gcc_qupv3_wrap0_s7_clk",
2310108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
2311108cdc09SImran Shaik 				&gcc_qupv3_wrap0_s7_clk_src.clkr.hw,
2312108cdc09SImran Shaik 			},
2313108cdc09SImran Shaik 			.num_parents = 1,
2314108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
2315108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
2316108cdc09SImran Shaik 		},
2317108cdc09SImran Shaik 	},
2318108cdc09SImran Shaik };
2319108cdc09SImran Shaik 
2320108cdc09SImran Shaik static struct clk_branch gcc_qupv3_wrap0_s8_clk = {
2321108cdc09SImran Shaik 	.halt_reg = 0x6c9c4,
2322108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_VOTED,
2323108cdc09SImran Shaik 	.clkr = {
2324108cdc09SImran Shaik 		.enable_reg = 0x7d020,
2325108cdc09SImran Shaik 		.enable_mask = BIT(7),
2326108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
2327108cdc09SImran Shaik 			.name = "gcc_qupv3_wrap0_s8_clk",
2328108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
2329108cdc09SImran Shaik 				&gcc_qupv3_wrap0_s8_clk_src.clkr.hw,
2330108cdc09SImran Shaik 			},
2331108cdc09SImran Shaik 			.num_parents = 1,
2332108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
2333108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
2334108cdc09SImran Shaik 		},
2335108cdc09SImran Shaik 	},
2336108cdc09SImran Shaik };
2337108cdc09SImran Shaik 
2338108cdc09SImran Shaik static struct clk_branch gcc_qupv3_wrap_0_m_ahb_clk = {
2339108cdc09SImran Shaik 	.halt_reg = 0x2d000,
2340108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_VOTED,
2341108cdc09SImran Shaik 	.hwcg_reg = 0x2d000,
2342108cdc09SImran Shaik 	.hwcg_bit = 1,
2343108cdc09SImran Shaik 	.clkr = {
2344108cdc09SImran Shaik 		.enable_reg = 0x7d008,
2345108cdc09SImran Shaik 		.enable_mask = BIT(12),
2346108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
2347108cdc09SImran Shaik 			.name = "gcc_qupv3_wrap_0_m_ahb_clk",
2348108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
2349108cdc09SImran Shaik 		},
2350108cdc09SImran Shaik 	},
2351108cdc09SImran Shaik };
2352108cdc09SImran Shaik 
2353108cdc09SImran Shaik static struct clk_branch gcc_qupv3_wrap_0_s_ahb_clk = {
2354108cdc09SImran Shaik 	.halt_reg = 0x2d004,
2355108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_VOTED,
2356108cdc09SImran Shaik 	.hwcg_reg = 0x2d004,
2357108cdc09SImran Shaik 	.hwcg_bit = 1,
2358108cdc09SImran Shaik 	.clkr = {
2359108cdc09SImran Shaik 		.enable_reg = 0x7d008,
2360108cdc09SImran Shaik 		.enable_mask = BIT(13),
2361108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
2362108cdc09SImran Shaik 			.name = "gcc_qupv3_wrap_0_s_ahb_clk",
2363108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
2364108cdc09SImran Shaik 		},
2365108cdc09SImran Shaik 	},
2366108cdc09SImran Shaik };
2367108cdc09SImran Shaik 
2368108cdc09SImran Shaik static struct clk_branch gcc_sdcc1_ahb_clk = {
2369108cdc09SImran Shaik 	.halt_reg = 0x6b004,
2370108cdc09SImran Shaik 	.halt_check = BRANCH_HALT,
2371108cdc09SImran Shaik 	.clkr = {
2372108cdc09SImran Shaik 		.enable_reg = 0x6b004,
2373108cdc09SImran Shaik 		.enable_mask = BIT(0),
2374108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
2375108cdc09SImran Shaik 			.name = "gcc_sdcc1_ahb_clk",
2376108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
2377108cdc09SImran Shaik 		},
2378108cdc09SImran Shaik 	},
2379108cdc09SImran Shaik };
2380108cdc09SImran Shaik 
2381108cdc09SImran Shaik static struct clk_branch gcc_sdcc1_apps_clk = {
2382108cdc09SImran Shaik 	.halt_reg = 0x6b008,
2383108cdc09SImran Shaik 	.halt_check = BRANCH_HALT,
2384108cdc09SImran Shaik 	.clkr = {
2385108cdc09SImran Shaik 		.enable_reg = 0x6b008,
2386108cdc09SImran Shaik 		.enable_mask = BIT(0),
2387108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
2388108cdc09SImran Shaik 			.name = "gcc_sdcc1_apps_clk",
2389108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
2390108cdc09SImran Shaik 				&gcc_sdcc1_apps_clk_src.clkr.hw,
2391108cdc09SImran Shaik 			},
2392108cdc09SImran Shaik 			.num_parents = 1,
2393108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
2394108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
2395108cdc09SImran Shaik 		},
2396108cdc09SImran Shaik 	},
2397108cdc09SImran Shaik };
2398108cdc09SImran Shaik 
2399108cdc09SImran Shaik static struct clk_branch gcc_sdcc2_ahb_clk = {
2400108cdc09SImran Shaik 	.halt_reg = 0x6a010,
2401108cdc09SImran Shaik 	.halt_check = BRANCH_HALT,
2402108cdc09SImran Shaik 	.clkr = {
2403108cdc09SImran Shaik 		.enable_reg = 0x6a010,
2404108cdc09SImran Shaik 		.enable_mask = BIT(0),
2405108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
2406108cdc09SImran Shaik 			.name = "gcc_sdcc2_ahb_clk",
2407108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
2408108cdc09SImran Shaik 		},
2409108cdc09SImran Shaik 	},
2410108cdc09SImran Shaik };
2411108cdc09SImran Shaik 
2412108cdc09SImran Shaik static struct clk_branch gcc_sdcc2_apps_clk = {
2413108cdc09SImran Shaik 	.halt_reg = 0x6a004,
2414108cdc09SImran Shaik 	.halt_check = BRANCH_HALT,
2415108cdc09SImran Shaik 	.clkr = {
2416108cdc09SImran Shaik 		.enable_reg = 0x6a004,
2417108cdc09SImran Shaik 		.enable_mask = BIT(0),
2418108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
2419108cdc09SImran Shaik 			.name = "gcc_sdcc2_apps_clk",
2420108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
2421108cdc09SImran Shaik 				&gcc_sdcc2_apps_clk_src.clkr.hw,
2422108cdc09SImran Shaik 			},
2423108cdc09SImran Shaik 			.num_parents = 1,
2424108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
2425108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
2426108cdc09SImran Shaik 		},
2427108cdc09SImran Shaik 	},
2428108cdc09SImran Shaik };
2429108cdc09SImran Shaik 
2430108cdc09SImran Shaik static struct clk_branch gcc_usb2_clkref_en = {
2431108cdc09SImran Shaik 	.halt_reg = 0x98008,
2432108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_ENABLE,
2433108cdc09SImran Shaik 	.clkr = {
2434108cdc09SImran Shaik 		.enable_reg = 0x98008,
2435108cdc09SImran Shaik 		.enable_mask = BIT(0),
2436108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
2437108cdc09SImran Shaik 			.name = "gcc_usb2_clkref_en",
2438108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
2439108cdc09SImran Shaik 		},
2440108cdc09SImran Shaik 	},
2441108cdc09SImran Shaik };
2442108cdc09SImran Shaik 
2443108cdc09SImran Shaik static struct clk_branch gcc_usb30_master_clk = {
2444108cdc09SImran Shaik 	.halt_reg = 0x27018,
2445108cdc09SImran Shaik 	.halt_check = BRANCH_HALT,
2446108cdc09SImran Shaik 	.clkr = {
2447108cdc09SImran Shaik 		.enable_reg = 0x27018,
2448108cdc09SImran Shaik 		.enable_mask = BIT(0),
2449108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
2450108cdc09SImran Shaik 			.name = "gcc_usb30_master_clk",
2451108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
2452108cdc09SImran Shaik 				&gcc_usb30_master_clk_src.clkr.hw,
2453108cdc09SImran Shaik 			},
2454108cdc09SImran Shaik 			.num_parents = 1,
2455108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
2456108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
2457108cdc09SImran Shaik 		},
2458108cdc09SImran Shaik 	},
2459108cdc09SImran Shaik };
2460108cdc09SImran Shaik 
2461108cdc09SImran Shaik static struct clk_branch gcc_usb30_mock_utmi_clk = {
2462108cdc09SImran Shaik 	.halt_reg = 0x27030,
2463108cdc09SImran Shaik 	.halt_check = BRANCH_HALT,
2464108cdc09SImran Shaik 	.clkr = {
2465108cdc09SImran Shaik 		.enable_reg = 0x27030,
2466108cdc09SImran Shaik 		.enable_mask = BIT(0),
2467108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
2468108cdc09SImran Shaik 			.name = "gcc_usb30_mock_utmi_clk",
2469108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
2470108cdc09SImran Shaik 				&gcc_usb30_mock_utmi_postdiv_clk_src.clkr.hw,
2471108cdc09SImran Shaik 			},
2472108cdc09SImran Shaik 			.num_parents = 1,
2473108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
2474108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
2475108cdc09SImran Shaik 		},
2476108cdc09SImran Shaik 	},
2477108cdc09SImran Shaik };
2478108cdc09SImran Shaik 
2479108cdc09SImran Shaik static struct clk_branch gcc_usb30_mstr_axi_clk = {
2480108cdc09SImran Shaik 	.halt_reg = 0x27024,
2481108cdc09SImran Shaik 	.halt_check = BRANCH_HALT,
2482108cdc09SImran Shaik 	.clkr = {
2483108cdc09SImran Shaik 		.enable_reg = 0x27024,
2484108cdc09SImran Shaik 		.enable_mask = BIT(0),
2485108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
2486108cdc09SImran Shaik 			.name = "gcc_usb30_mstr_axi_clk",
2487108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
2488108cdc09SImran Shaik 		},
2489108cdc09SImran Shaik 	},
2490108cdc09SImran Shaik };
2491108cdc09SImran Shaik 
2492108cdc09SImran Shaik static struct clk_branch gcc_usb30_sleep_clk = {
2493108cdc09SImran Shaik 	.halt_reg = 0x2702c,
2494108cdc09SImran Shaik 	.halt_check = BRANCH_HALT,
2495108cdc09SImran Shaik 	.clkr = {
2496108cdc09SImran Shaik 		.enable_reg = 0x2702c,
2497108cdc09SImran Shaik 		.enable_mask = BIT(0),
2498108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
2499108cdc09SImran Shaik 			.name = "gcc_usb30_sleep_clk",
2500108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
2501108cdc09SImran Shaik 		},
2502108cdc09SImran Shaik 	},
2503108cdc09SImran Shaik };
2504108cdc09SImran Shaik 
2505108cdc09SImran Shaik static struct clk_branch gcc_usb30_slv_ahb_clk = {
2506108cdc09SImran Shaik 	.halt_reg = 0x27028,
2507108cdc09SImran Shaik 	.halt_check = BRANCH_HALT,
2508108cdc09SImran Shaik 	.clkr = {
2509108cdc09SImran Shaik 		.enable_reg = 0x27028,
2510108cdc09SImran Shaik 		.enable_mask = BIT(0),
2511108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
2512108cdc09SImran Shaik 			.name = "gcc_usb30_slv_ahb_clk",
2513108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
2514108cdc09SImran Shaik 		},
2515108cdc09SImran Shaik 	},
2516108cdc09SImran Shaik };
2517108cdc09SImran Shaik 
2518108cdc09SImran Shaik static struct clk_branch gcc_usb3_phy_aux_clk = {
2519108cdc09SImran Shaik 	.halt_reg = 0x27068,
2520108cdc09SImran Shaik 	.halt_check = BRANCH_HALT,
2521108cdc09SImran Shaik 	.clkr = {
2522108cdc09SImran Shaik 		.enable_reg = 0x27068,
2523108cdc09SImran Shaik 		.enable_mask = BIT(0),
2524108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
2525108cdc09SImran Shaik 			.name = "gcc_usb3_phy_aux_clk",
2526108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
2527108cdc09SImran Shaik 				&gcc_usb3_phy_aux_clk_src.clkr.hw,
2528108cdc09SImran Shaik 			},
2529108cdc09SImran Shaik 			.num_parents = 1,
2530108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
2531108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
2532108cdc09SImran Shaik 		},
2533108cdc09SImran Shaik 	},
2534108cdc09SImran Shaik };
2535108cdc09SImran Shaik 
2536108cdc09SImran Shaik static struct clk_branch gcc_usb3_phy_pipe_clk = {
2537108cdc09SImran Shaik 	.halt_reg = 0x2706c,
2538108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_DELAY,
2539108cdc09SImran Shaik 	.hwcg_reg = 0x2706c,
2540108cdc09SImran Shaik 	.hwcg_bit = 1,
2541108cdc09SImran Shaik 	.clkr = {
2542108cdc09SImran Shaik 		.enable_reg = 0x2706c,
2543108cdc09SImran Shaik 		.enable_mask = BIT(0),
2544108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
2545108cdc09SImran Shaik 			.name = "gcc_usb3_phy_pipe_clk",
2546108cdc09SImran Shaik 			.parent_hws = (const struct clk_hw*[]) {
2547108cdc09SImran Shaik 				&gcc_usb3_phy_pipe_clk_src.clkr.hw,
2548108cdc09SImran Shaik 			},
2549108cdc09SImran Shaik 			.num_parents = 1,
2550108cdc09SImran Shaik 			.flags = CLK_SET_RATE_PARENT,
2551108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
2552108cdc09SImran Shaik 		},
2553108cdc09SImran Shaik 	},
2554108cdc09SImran Shaik };
2555108cdc09SImran Shaik 
2556108cdc09SImran Shaik static struct clk_branch gcc_usb3_prim_clkref_en = {
2557108cdc09SImran Shaik 	.halt_reg = 0x98000,
2558108cdc09SImran Shaik 	.halt_check = BRANCH_HALT_ENABLE,
2559108cdc09SImran Shaik 	.clkr = {
2560108cdc09SImran Shaik 		.enable_reg = 0x98000,
2561108cdc09SImran Shaik 		.enable_mask = BIT(0),
2562108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
2563108cdc09SImran Shaik 			.name = "gcc_usb3_prim_clkref_en",
2564108cdc09SImran Shaik 			.ops = &clk_branch2_ops,
2565108cdc09SImran Shaik 		},
2566108cdc09SImran Shaik 	},
2567108cdc09SImran Shaik };
2568108cdc09SImran Shaik 
2569108cdc09SImran Shaik static struct clk_branch gcc_usb_phy_cfg_ahb2phy_clk = {
2570108cdc09SImran Shaik 	.halt_reg = 0x29004,
2571108cdc09SImran Shaik 	.halt_check = BRANCH_HALT,
2572108cdc09SImran Shaik 	.hwcg_reg = 0x29004,
2573108cdc09SImran Shaik 	.hwcg_bit = 1,
2574108cdc09SImran Shaik 	.clkr = {
2575108cdc09SImran Shaik 		.enable_reg = 0x29004,
2576108cdc09SImran Shaik 		.enable_mask = BIT(0),
2577108cdc09SImran Shaik 		.hw.init = &(const struct clk_init_data) {
2578108cdc09SImran Shaik 			.name = "gcc_usb_phy_cfg_ahb2phy_clk",
2579108cdc09SImran Shaik 			.ops = &clk_branch2_aon_ops,
2580108cdc09SImran Shaik 		},
2581108cdc09SImran Shaik 	},
2582108cdc09SImran Shaik };
2583108cdc09SImran Shaik 
2584108cdc09SImran Shaik static struct gdsc gcc_emac0_gdsc = {
2585108cdc09SImran Shaik 	.gdscr = 0x71004,
2586108cdc09SImran Shaik 	.en_rest_wait_val = 0x2,
2587108cdc09SImran Shaik 	.en_few_wait_val = 0x2,
2588108cdc09SImran Shaik 	.clk_dis_wait_val = 0xf,
2589108cdc09SImran Shaik 	.pd = {
2590108cdc09SImran Shaik 		.name = "gcc_emac0_gdsc",
2591108cdc09SImran Shaik 	},
2592108cdc09SImran Shaik 	.pwrsts = PWRSTS_OFF_ON,
2593108cdc09SImran Shaik 	.flags = RETAIN_FF_ENABLE,
2594108cdc09SImran Shaik };
2595108cdc09SImran Shaik 
2596108cdc09SImran Shaik static struct gdsc gcc_emac1_gdsc = {
2597108cdc09SImran Shaik 	.gdscr = 0x72004,
2598108cdc09SImran Shaik 	.en_rest_wait_val = 0x2,
2599108cdc09SImran Shaik 	.en_few_wait_val = 0x2,
2600108cdc09SImran Shaik 	.clk_dis_wait_val = 0xf,
2601108cdc09SImran Shaik 	.pd = {
2602108cdc09SImran Shaik 		.name = "gcc_emac1_gdsc",
2603108cdc09SImran Shaik 	},
2604108cdc09SImran Shaik 	.pwrsts = PWRSTS_OFF_ON,
2605108cdc09SImran Shaik 	.flags = RETAIN_FF_ENABLE,
2606108cdc09SImran Shaik };
2607108cdc09SImran Shaik 
2608108cdc09SImran Shaik static struct gdsc gcc_pcie_1_gdsc = {
2609108cdc09SImran Shaik 	.gdscr = 0x67004,
2610108cdc09SImran Shaik 	.en_rest_wait_val = 0x2,
2611108cdc09SImran Shaik 	.en_few_wait_val = 0x2,
2612108cdc09SImran Shaik 	.clk_dis_wait_val = 0xf,
2613108cdc09SImran Shaik 	.pd = {
2614108cdc09SImran Shaik 		.name = "gcc_pcie_1_gdsc",
2615108cdc09SImran Shaik 	},
2616108cdc09SImran Shaik 	.pwrsts = PWRSTS_OFF_ON,
2617108cdc09SImran Shaik 	.flags = RETAIN_FF_ENABLE,
2618108cdc09SImran Shaik };
2619108cdc09SImran Shaik 
2620108cdc09SImran Shaik static struct gdsc gcc_pcie_1_phy_gdsc = {
2621108cdc09SImran Shaik 	.gdscr = 0x56004,
2622108cdc09SImran Shaik 	.en_rest_wait_val = 0x2,
2623108cdc09SImran Shaik 	.en_few_wait_val = 0x2,
2624108cdc09SImran Shaik 	.clk_dis_wait_val = 0x2,
2625108cdc09SImran Shaik 	.pd = {
2626108cdc09SImran Shaik 		.name = "gcc_pcie_1_phy_gdsc",
2627108cdc09SImran Shaik 	},
2628108cdc09SImran Shaik 	.pwrsts = PWRSTS_OFF_ON,
2629108cdc09SImran Shaik 	.flags = RETAIN_FF_ENABLE,
2630108cdc09SImran Shaik };
2631108cdc09SImran Shaik 
2632108cdc09SImran Shaik static struct gdsc gcc_pcie_2_gdsc = {
2633108cdc09SImran Shaik 	.gdscr = 0x68004,
2634108cdc09SImran Shaik 	.en_rest_wait_val = 0x2,
2635108cdc09SImran Shaik 	.en_few_wait_val = 0x2,
2636108cdc09SImran Shaik 	.clk_dis_wait_val = 0xf,
2637108cdc09SImran Shaik 	.pd = {
2638108cdc09SImran Shaik 		.name = "gcc_pcie_2_gdsc",
2639108cdc09SImran Shaik 	},
2640108cdc09SImran Shaik 	.pwrsts = PWRSTS_OFF_ON,
2641108cdc09SImran Shaik 	.flags = RETAIN_FF_ENABLE,
2642108cdc09SImran Shaik };
2643108cdc09SImran Shaik 
2644108cdc09SImran Shaik static struct gdsc gcc_pcie_2_phy_gdsc = {
2645108cdc09SImran Shaik 	.gdscr = 0x6e004,
2646108cdc09SImran Shaik 	.en_rest_wait_val = 0x2,
2647108cdc09SImran Shaik 	.en_few_wait_val = 0x2,
2648108cdc09SImran Shaik 	.clk_dis_wait_val = 0x2,
2649108cdc09SImran Shaik 	.pd = {
2650108cdc09SImran Shaik 		.name = "gcc_pcie_2_phy_gdsc",
2651108cdc09SImran Shaik 	},
2652108cdc09SImran Shaik 	.pwrsts = PWRSTS_OFF_ON,
2653108cdc09SImran Shaik 	.flags = RETAIN_FF_ENABLE,
2654108cdc09SImran Shaik };
2655108cdc09SImran Shaik 
2656108cdc09SImran Shaik static struct gdsc gcc_pcie_gdsc = {
2657108cdc09SImran Shaik 	.gdscr = 0x53004,
2658108cdc09SImran Shaik 	.en_rest_wait_val = 0x2,
2659108cdc09SImran Shaik 	.en_few_wait_val = 0x2,
2660108cdc09SImran Shaik 	.clk_dis_wait_val = 0xf,
2661108cdc09SImran Shaik 	.pd = {
2662108cdc09SImran Shaik 		.name = "gcc_pcie_gdsc",
2663108cdc09SImran Shaik 	},
2664108cdc09SImran Shaik 	.pwrsts = PWRSTS_OFF_ON,
2665108cdc09SImran Shaik 	.flags = RETAIN_FF_ENABLE,
2666108cdc09SImran Shaik };
2667108cdc09SImran Shaik 
2668108cdc09SImran Shaik static struct gdsc gcc_pcie_phy_gdsc = {
2669108cdc09SImran Shaik 	.gdscr = 0x54004,
2670108cdc09SImran Shaik 	.en_rest_wait_val = 0x2,
2671108cdc09SImran Shaik 	.en_few_wait_val = 0x2,
2672108cdc09SImran Shaik 	.clk_dis_wait_val = 0x2,
2673108cdc09SImran Shaik 	.pd = {
2674108cdc09SImran Shaik 		.name = "gcc_pcie_phy_gdsc",
2675108cdc09SImran Shaik 	},
2676108cdc09SImran Shaik 	.pwrsts = PWRSTS_OFF_ON,
2677108cdc09SImran Shaik 	.flags = RETAIN_FF_ENABLE,
2678108cdc09SImran Shaik };
2679108cdc09SImran Shaik 
2680108cdc09SImran Shaik static struct gdsc gcc_usb30_gdsc = {
2681108cdc09SImran Shaik 	.gdscr = 0x27004,
2682108cdc09SImran Shaik 	.en_rest_wait_val = 0x2,
2683108cdc09SImran Shaik 	.en_few_wait_val = 0x2,
2684108cdc09SImran Shaik 	.clk_dis_wait_val = 0xf,
2685108cdc09SImran Shaik 	.pd = {
2686108cdc09SImran Shaik 		.name = "gcc_usb30_gdsc",
2687108cdc09SImran Shaik 	},
2688108cdc09SImran Shaik 	.pwrsts = PWRSTS_OFF_ON,
2689108cdc09SImran Shaik 	.flags = RETAIN_FF_ENABLE,
2690108cdc09SImran Shaik };
2691108cdc09SImran Shaik 
2692108cdc09SImran Shaik static struct gdsc gcc_usb3_phy_gdsc = {
2693108cdc09SImran Shaik 	.gdscr = 0x28008,
2694108cdc09SImran Shaik 	.en_rest_wait_val = 0x2,
2695108cdc09SImran Shaik 	.en_few_wait_val = 0x2,
2696108cdc09SImran Shaik 	.clk_dis_wait_val = 0x2,
2697108cdc09SImran Shaik 	.pd = {
2698108cdc09SImran Shaik 		.name = "gcc_usb3_phy_gdsc",
2699108cdc09SImran Shaik 	},
2700108cdc09SImran Shaik 	.pwrsts = PWRSTS_OFF_ON,
2701108cdc09SImran Shaik 	.flags = RETAIN_FF_ENABLE,
2702108cdc09SImran Shaik };
2703108cdc09SImran Shaik 
2704108cdc09SImran Shaik static struct clk_regmap *gcc_sdx75_clocks[] = {
2705108cdc09SImran Shaik 	[GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
2706108cdc09SImran Shaik 	[GCC_EEE_EMAC0_CLK] = &gcc_eee_emac0_clk.clkr,
2707108cdc09SImran Shaik 	[GCC_EEE_EMAC0_CLK_SRC] = &gcc_eee_emac0_clk_src.clkr,
2708108cdc09SImran Shaik 	[GCC_EEE_EMAC1_CLK] = &gcc_eee_emac1_clk.clkr,
2709108cdc09SImran Shaik 	[GCC_EEE_EMAC1_CLK_SRC] = &gcc_eee_emac1_clk_src.clkr,
2710108cdc09SImran Shaik 	[GCC_EMAC0_AXI_CLK] = &gcc_emac0_axi_clk.clkr,
2711108cdc09SImran Shaik 	[GCC_EMAC0_CC_SGMIIPHY_RX_CLK] = &gcc_emac0_cc_sgmiiphy_rx_clk.clkr,
2712108cdc09SImran Shaik 	[GCC_EMAC0_CC_SGMIIPHY_RX_CLK_SRC] = &gcc_emac0_cc_sgmiiphy_rx_clk_src.clkr,
2713108cdc09SImran Shaik 	[GCC_EMAC0_CC_SGMIIPHY_TX_CLK] = &gcc_emac0_cc_sgmiiphy_tx_clk.clkr,
2714108cdc09SImran Shaik 	[GCC_EMAC0_CC_SGMIIPHY_TX_CLK_SRC] = &gcc_emac0_cc_sgmiiphy_tx_clk_src.clkr,
2715108cdc09SImran Shaik 	[GCC_EMAC0_PHY_AUX_CLK] = &gcc_emac0_phy_aux_clk.clkr,
2716108cdc09SImran Shaik 	[GCC_EMAC0_PHY_AUX_CLK_SRC] = &gcc_emac0_phy_aux_clk_src.clkr,
2717108cdc09SImran Shaik 	[GCC_EMAC0_PTP_CLK] = &gcc_emac0_ptp_clk.clkr,
2718108cdc09SImran Shaik 	[GCC_EMAC0_PTP_CLK_SRC] = &gcc_emac0_ptp_clk_src.clkr,
2719108cdc09SImran Shaik 	[GCC_EMAC0_RGMII_CLK] = &gcc_emac0_rgmii_clk.clkr,
2720108cdc09SImran Shaik 	[GCC_EMAC0_RGMII_CLK_SRC] = &gcc_emac0_rgmii_clk_src.clkr,
2721108cdc09SImran Shaik 	[GCC_EMAC0_RPCS_RX_CLK] = &gcc_emac0_rpcs_rx_clk.clkr,
2722108cdc09SImran Shaik 	[GCC_EMAC0_RPCS_TX_CLK] = &gcc_emac0_rpcs_tx_clk.clkr,
2723108cdc09SImran Shaik 	[GCC_EMAC0_SGMIIPHY_MAC_RCLK_SRC] = &gcc_emac0_sgmiiphy_mac_rclk_src.clkr,
2724108cdc09SImran Shaik 	[GCC_EMAC0_SGMIIPHY_MAC_TCLK_SRC] = &gcc_emac0_sgmiiphy_mac_tclk_src.clkr,
2725108cdc09SImran Shaik 	[GCC_EMAC0_SLV_AHB_CLK] = &gcc_emac0_slv_ahb_clk.clkr,
2726108cdc09SImran Shaik 	[GCC_EMAC0_XGXS_RX_CLK] = &gcc_emac0_xgxs_rx_clk.clkr,
2727108cdc09SImran Shaik 	[GCC_EMAC0_XGXS_TX_CLK] = &gcc_emac0_xgxs_tx_clk.clkr,
2728108cdc09SImran Shaik 	[GCC_EMAC1_AXI_CLK] = &gcc_emac1_axi_clk.clkr,
2729108cdc09SImran Shaik 	[GCC_EMAC1_CC_SGMIIPHY_RX_CLK] = &gcc_emac1_cc_sgmiiphy_rx_clk.clkr,
2730108cdc09SImran Shaik 	[GCC_EMAC1_CC_SGMIIPHY_RX_CLK_SRC] = &gcc_emac1_cc_sgmiiphy_rx_clk_src.clkr,
2731108cdc09SImran Shaik 	[GCC_EMAC1_CC_SGMIIPHY_TX_CLK] = &gcc_emac1_cc_sgmiiphy_tx_clk.clkr,
2732108cdc09SImran Shaik 	[GCC_EMAC1_CC_SGMIIPHY_TX_CLK_SRC] = &gcc_emac1_cc_sgmiiphy_tx_clk_src.clkr,
2733108cdc09SImran Shaik 	[GCC_EMAC1_PHY_AUX_CLK] = &gcc_emac1_phy_aux_clk.clkr,
2734108cdc09SImran Shaik 	[GCC_EMAC1_PHY_AUX_CLK_SRC] = &gcc_emac1_phy_aux_clk_src.clkr,
2735108cdc09SImran Shaik 	[GCC_EMAC1_PTP_CLK] = &gcc_emac1_ptp_clk.clkr,
2736108cdc09SImran Shaik 	[GCC_EMAC1_PTP_CLK_SRC] = &gcc_emac1_ptp_clk_src.clkr,
2737108cdc09SImran Shaik 	[GCC_EMAC1_RGMII_CLK] = &gcc_emac1_rgmii_clk.clkr,
2738108cdc09SImran Shaik 	[GCC_EMAC1_RGMII_CLK_SRC] = &gcc_emac1_rgmii_clk_src.clkr,
2739108cdc09SImran Shaik 	[GCC_EMAC1_RPCS_RX_CLK] = &gcc_emac1_rpcs_rx_clk.clkr,
2740108cdc09SImran Shaik 	[GCC_EMAC1_RPCS_TX_CLK] = &gcc_emac1_rpcs_tx_clk.clkr,
2741108cdc09SImran Shaik 	[GCC_EMAC1_SGMIIPHY_MAC_RCLK_SRC] = &gcc_emac1_sgmiiphy_mac_rclk_src.clkr,
2742108cdc09SImran Shaik 	[GCC_EMAC1_SGMIIPHY_MAC_TCLK_SRC] = &gcc_emac1_sgmiiphy_mac_tclk_src.clkr,
2743108cdc09SImran Shaik 	[GCC_EMAC1_SLV_AHB_CLK] = &gcc_emac1_slv_ahb_clk.clkr,
2744108cdc09SImran Shaik 	[GCC_EMAC1_XGXS_RX_CLK] = &gcc_emac1_xgxs_rx_clk.clkr,
2745108cdc09SImran Shaik 	[GCC_EMAC1_XGXS_TX_CLK] = &gcc_emac1_xgxs_tx_clk.clkr,
2746108cdc09SImran Shaik 	[GCC_EMAC_0_CLKREF_EN] = &gcc_emac_0_clkref_en.clkr,
2747108cdc09SImran Shaik 	[GCC_EMAC_1_CLKREF_EN] = &gcc_emac_1_clkref_en.clkr,
2748108cdc09SImran Shaik 	[GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
2749108cdc09SImran Shaik 	[GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr,
2750108cdc09SImran Shaik 	[GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
2751108cdc09SImran Shaik 	[GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr,
2752108cdc09SImran Shaik 	[GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
2753108cdc09SImran Shaik 	[GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr,
2754108cdc09SImran Shaik 	[GCC_PCIE_0_CLKREF_EN] = &gcc_pcie_0_clkref_en.clkr,
2755108cdc09SImran Shaik 	[GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,
2756108cdc09SImran Shaik 	[GCC_PCIE_1_AUX_PHY_CLK_SRC] = &gcc_pcie_1_aux_phy_clk_src.clkr,
2757108cdc09SImran Shaik 	[GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr,
2758108cdc09SImran Shaik 	[GCC_PCIE_1_CLKREF_EN] = &gcc_pcie_1_clkref_en.clkr,
2759108cdc09SImran Shaik 	[GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr,
2760108cdc09SImran Shaik 	[GCC_PCIE_1_PHY_RCHNG_CLK] = &gcc_pcie_1_phy_rchng_clk.clkr,
2761108cdc09SImran Shaik 	[GCC_PCIE_1_PHY_RCHNG_CLK_SRC] = &gcc_pcie_1_phy_rchng_clk_src.clkr,
2762108cdc09SImran Shaik 	[GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,
2763108cdc09SImran Shaik 	[GCC_PCIE_1_PIPE_CLK_SRC] = &gcc_pcie_1_pipe_clk_src.clkr,
2764108cdc09SImran Shaik 	[GCC_PCIE_1_PIPE_DIV2_CLK] = &gcc_pcie_1_pipe_div2_clk.clkr,
2765108cdc09SImran Shaik 	[GCC_PCIE_1_PIPE_DIV2_CLK_SRC] = &gcc_pcie_1_pipe_div2_clk_src.clkr,
2766108cdc09SImran Shaik 	[GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr,
2767108cdc09SImran Shaik 	[GCC_PCIE_1_SLV_Q2A_AXI_CLK] = &gcc_pcie_1_slv_q2a_axi_clk.clkr,
2768108cdc09SImran Shaik 	[GCC_PCIE_2_AUX_CLK] = &gcc_pcie_2_aux_clk.clkr,
2769108cdc09SImran Shaik 	[GCC_PCIE_2_AUX_PHY_CLK_SRC] = &gcc_pcie_2_aux_phy_clk_src.clkr,
2770108cdc09SImran Shaik 	[GCC_PCIE_2_CFG_AHB_CLK] = &gcc_pcie_2_cfg_ahb_clk.clkr,
2771108cdc09SImran Shaik 	[GCC_PCIE_2_CLKREF_EN] = &gcc_pcie_2_clkref_en.clkr,
2772108cdc09SImran Shaik 	[GCC_PCIE_2_MSTR_AXI_CLK] = &gcc_pcie_2_mstr_axi_clk.clkr,
2773108cdc09SImran Shaik 	[GCC_PCIE_2_PHY_RCHNG_CLK] = &gcc_pcie_2_phy_rchng_clk.clkr,
2774108cdc09SImran Shaik 	[GCC_PCIE_2_PHY_RCHNG_CLK_SRC] = &gcc_pcie_2_phy_rchng_clk_src.clkr,
2775108cdc09SImran Shaik 	[GCC_PCIE_2_PIPE_CLK] = &gcc_pcie_2_pipe_clk.clkr,
2776108cdc09SImran Shaik 	[GCC_PCIE_2_PIPE_CLK_SRC] = &gcc_pcie_2_pipe_clk_src.clkr,
2777108cdc09SImran Shaik 	[GCC_PCIE_2_PIPE_DIV2_CLK] = &gcc_pcie_2_pipe_div2_clk.clkr,
2778108cdc09SImran Shaik 	[GCC_PCIE_2_PIPE_DIV2_CLK_SRC] = &gcc_pcie_2_pipe_div2_clk_src.clkr,
2779108cdc09SImran Shaik 	[GCC_PCIE_2_SLV_AXI_CLK] = &gcc_pcie_2_slv_axi_clk.clkr,
2780108cdc09SImran Shaik 	[GCC_PCIE_2_SLV_Q2A_AXI_CLK] = &gcc_pcie_2_slv_q2a_axi_clk.clkr,
2781108cdc09SImran Shaik 	[GCC_PCIE_AUX_CLK] = &gcc_pcie_aux_clk.clkr,
2782108cdc09SImran Shaik 	[GCC_PCIE_AUX_CLK_SRC] = &gcc_pcie_aux_clk_src.clkr,
2783108cdc09SImran Shaik 	[GCC_PCIE_AUX_PHY_CLK_SRC] = &gcc_pcie_aux_phy_clk_src.clkr,
2784108cdc09SImran Shaik 	[GCC_PCIE_CFG_AHB_CLK] = &gcc_pcie_cfg_ahb_clk.clkr,
2785108cdc09SImran Shaik 	[GCC_PCIE_MSTR_AXI_CLK] = &gcc_pcie_mstr_axi_clk.clkr,
2786108cdc09SImran Shaik 	[GCC_PCIE_PIPE_CLK] = &gcc_pcie_pipe_clk.clkr,
2787108cdc09SImran Shaik 	[GCC_PCIE_PIPE_CLK_SRC] = &gcc_pcie_pipe_clk_src.clkr,
2788108cdc09SImran Shaik 	[GCC_PCIE_RCHNG_PHY_CLK] = &gcc_pcie_rchng_phy_clk.clkr,
2789108cdc09SImran Shaik 	[GCC_PCIE_RCHNG_PHY_CLK_SRC] = &gcc_pcie_rchng_phy_clk_src.clkr,
2790108cdc09SImran Shaik 	[GCC_PCIE_SLEEP_CLK] = &gcc_pcie_sleep_clk.clkr,
2791108cdc09SImran Shaik 	[GCC_PCIE_SLV_AXI_CLK] = &gcc_pcie_slv_axi_clk.clkr,
2792108cdc09SImran Shaik 	[GCC_PCIE_SLV_Q2A_AXI_CLK] = &gcc_pcie_slv_q2a_axi_clk.clkr,
2793108cdc09SImran Shaik 	[GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
2794108cdc09SImran Shaik 	[GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr,
2795108cdc09SImran Shaik 	[GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
2796108cdc09SImran Shaik 	[GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr,
2797108cdc09SImran Shaik 	[GCC_QUPV3_WRAP0_CORE_2X_CLK] = &gcc_qupv3_wrap0_core_2x_clk.clkr,
2798108cdc09SImran Shaik 	[GCC_QUPV3_WRAP0_CORE_CLK] = &gcc_qupv3_wrap0_core_clk.clkr,
2799108cdc09SImran Shaik 	[GCC_QUPV3_WRAP0_S0_CLK] = &gcc_qupv3_wrap0_s0_clk.clkr,
2800108cdc09SImran Shaik 	[GCC_QUPV3_WRAP0_S0_CLK_SRC] = &gcc_qupv3_wrap0_s0_clk_src.clkr,
2801108cdc09SImran Shaik 	[GCC_QUPV3_WRAP0_S1_CLK] = &gcc_qupv3_wrap0_s1_clk.clkr,
2802108cdc09SImran Shaik 	[GCC_QUPV3_WRAP0_S1_CLK_SRC] = &gcc_qupv3_wrap0_s1_clk_src.clkr,
2803108cdc09SImran Shaik 	[GCC_QUPV3_WRAP0_S2_CLK] = &gcc_qupv3_wrap0_s2_clk.clkr,
2804108cdc09SImran Shaik 	[GCC_QUPV3_WRAP0_S2_CLK_SRC] = &gcc_qupv3_wrap0_s2_clk_src.clkr,
2805108cdc09SImran Shaik 	[GCC_QUPV3_WRAP0_S3_CLK] = &gcc_qupv3_wrap0_s3_clk.clkr,
2806108cdc09SImran Shaik 	[GCC_QUPV3_WRAP0_S3_CLK_SRC] = &gcc_qupv3_wrap0_s3_clk_src.clkr,
2807108cdc09SImran Shaik 	[GCC_QUPV3_WRAP0_S4_CLK] = &gcc_qupv3_wrap0_s4_clk.clkr,
2808108cdc09SImran Shaik 	[GCC_QUPV3_WRAP0_S4_CLK_SRC] = &gcc_qupv3_wrap0_s4_clk_src.clkr,
2809108cdc09SImran Shaik 	[GCC_QUPV3_WRAP0_S5_CLK] = &gcc_qupv3_wrap0_s5_clk.clkr,
2810108cdc09SImran Shaik 	[GCC_QUPV3_WRAP0_S5_CLK_SRC] = &gcc_qupv3_wrap0_s5_clk_src.clkr,
2811108cdc09SImran Shaik 	[GCC_QUPV3_WRAP0_S6_CLK] = &gcc_qupv3_wrap0_s6_clk.clkr,
2812108cdc09SImran Shaik 	[GCC_QUPV3_WRAP0_S6_CLK_SRC] = &gcc_qupv3_wrap0_s6_clk_src.clkr,
2813108cdc09SImran Shaik 	[GCC_QUPV3_WRAP0_S7_CLK] = &gcc_qupv3_wrap0_s7_clk.clkr,
2814108cdc09SImran Shaik 	[GCC_QUPV3_WRAP0_S7_CLK_SRC] = &gcc_qupv3_wrap0_s7_clk_src.clkr,
2815108cdc09SImran Shaik 	[GCC_QUPV3_WRAP0_S8_CLK] = &gcc_qupv3_wrap0_s8_clk.clkr,
2816108cdc09SImran Shaik 	[GCC_QUPV3_WRAP0_S8_CLK_SRC] = &gcc_qupv3_wrap0_s8_clk_src.clkr,
2817108cdc09SImran Shaik 	[GCC_QUPV3_WRAP_0_M_AHB_CLK] = &gcc_qupv3_wrap_0_m_ahb_clk.clkr,
2818108cdc09SImran Shaik 	[GCC_QUPV3_WRAP_0_S_AHB_CLK] = &gcc_qupv3_wrap_0_s_ahb_clk.clkr,
2819108cdc09SImran Shaik 	[GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
2820108cdc09SImran Shaik 	[GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
2821108cdc09SImran Shaik 	[GCC_SDCC1_APPS_CLK_SRC] = &gcc_sdcc1_apps_clk_src.clkr,
2822108cdc09SImran Shaik 	[GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
2823108cdc09SImran Shaik 	[GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
2824108cdc09SImran Shaik 	[GCC_SDCC2_APPS_CLK_SRC] = &gcc_sdcc2_apps_clk_src.clkr,
2825108cdc09SImran Shaik 	[GCC_USB2_CLKREF_EN] = &gcc_usb2_clkref_en.clkr,
2826108cdc09SImran Shaik 	[GCC_USB30_MASTER_CLK] = &gcc_usb30_master_clk.clkr,
2827108cdc09SImran Shaik 	[GCC_USB30_MASTER_CLK_SRC] = &gcc_usb30_master_clk_src.clkr,
2828108cdc09SImran Shaik 	[GCC_USB30_MOCK_UTMI_CLK] = &gcc_usb30_mock_utmi_clk.clkr,
2829108cdc09SImran Shaik 	[GCC_USB30_MOCK_UTMI_CLK_SRC] = &gcc_usb30_mock_utmi_clk_src.clkr,
2830108cdc09SImran Shaik 	[GCC_USB30_MOCK_UTMI_POSTDIV_CLK_SRC] = &gcc_usb30_mock_utmi_postdiv_clk_src.clkr,
2831108cdc09SImran Shaik 	[GCC_USB30_MSTR_AXI_CLK] = &gcc_usb30_mstr_axi_clk.clkr,
2832108cdc09SImran Shaik 	[GCC_USB30_SLEEP_CLK] = &gcc_usb30_sleep_clk.clkr,
2833108cdc09SImran Shaik 	[GCC_USB30_SLV_AHB_CLK] = &gcc_usb30_slv_ahb_clk.clkr,
2834108cdc09SImran Shaik 	[GCC_USB3_PHY_AUX_CLK] = &gcc_usb3_phy_aux_clk.clkr,
2835108cdc09SImran Shaik 	[GCC_USB3_PHY_AUX_CLK_SRC] = &gcc_usb3_phy_aux_clk_src.clkr,
2836108cdc09SImran Shaik 	[GCC_USB3_PHY_PIPE_CLK] = &gcc_usb3_phy_pipe_clk.clkr,
2837108cdc09SImran Shaik 	[GCC_USB3_PHY_PIPE_CLK_SRC] = &gcc_usb3_phy_pipe_clk_src.clkr,
2838108cdc09SImran Shaik 	[GCC_USB3_PRIM_CLKREF_EN] = &gcc_usb3_prim_clkref_en.clkr,
2839108cdc09SImran Shaik 	[GCC_USB_PHY_CFG_AHB2PHY_CLK] = &gcc_usb_phy_cfg_ahb2phy_clk.clkr,
2840108cdc09SImran Shaik 	[GPLL0] = &gpll0.clkr,
2841108cdc09SImran Shaik 	[GPLL0_OUT_EVEN] = &gpll0_out_even.clkr,
2842108cdc09SImran Shaik 	[GPLL4] = &gpll4.clkr,
2843108cdc09SImran Shaik 	[GPLL5] = &gpll5.clkr,
2844108cdc09SImran Shaik 	[GPLL6] = &gpll6.clkr,
2845108cdc09SImran Shaik 	[GPLL8] = &gpll8.clkr,
2846108cdc09SImran Shaik };
2847108cdc09SImran Shaik 
2848108cdc09SImran Shaik static struct gdsc *gcc_sdx75_gdscs[] = {
2849108cdc09SImran Shaik 	[GCC_EMAC0_GDSC] = &gcc_emac0_gdsc,
2850108cdc09SImran Shaik 	[GCC_EMAC1_GDSC] = &gcc_emac1_gdsc,
2851108cdc09SImran Shaik 	[GCC_PCIE_1_GDSC] = &gcc_pcie_1_gdsc,
2852108cdc09SImran Shaik 	[GCC_PCIE_1_PHY_GDSC] = &gcc_pcie_1_phy_gdsc,
2853108cdc09SImran Shaik 	[GCC_PCIE_2_GDSC] = &gcc_pcie_2_gdsc,
2854108cdc09SImran Shaik 	[GCC_PCIE_2_PHY_GDSC] = &gcc_pcie_2_phy_gdsc,
2855108cdc09SImran Shaik 	[GCC_PCIE_GDSC] = &gcc_pcie_gdsc,
2856108cdc09SImran Shaik 	[GCC_PCIE_PHY_GDSC] = &gcc_pcie_phy_gdsc,
2857108cdc09SImran Shaik 	[GCC_USB30_GDSC] = &gcc_usb30_gdsc,
2858108cdc09SImran Shaik 	[GCC_USB3_PHY_GDSC] = &gcc_usb3_phy_gdsc,
2859108cdc09SImran Shaik };
2860108cdc09SImran Shaik 
2861108cdc09SImran Shaik static const struct qcom_reset_map gcc_sdx75_resets[] = {
2862108cdc09SImran Shaik 	[GCC_EMAC0_BCR] = { 0x71000 },
2863108cdc09SImran Shaik 	[GCC_EMAC0_RGMII_CLK_ARES] = { 0x71050, 2 },
2864108cdc09SImran Shaik 	[GCC_EMAC1_BCR] = { 0x72000 },
2865108cdc09SImran Shaik 	[GCC_EMMC_BCR] = { 0x6b000 },
2866108cdc09SImran Shaik 	[GCC_PCIE_1_BCR] = { 0x67000 },
2867108cdc09SImran Shaik 	[GCC_PCIE_1_LINK_DOWN_BCR] = { 0x9e700 },
2868108cdc09SImran Shaik 	[GCC_PCIE_1_NOCSR_COM_PHY_BCR] = { 0x56120 },
2869108cdc09SImran Shaik 	[GCC_PCIE_1_PHY_BCR] = { 0x56000 },
2870108cdc09SImran Shaik 	[GCC_PCIE_2_BCR] = { 0x68000 },
2871108cdc09SImran Shaik 	[GCC_PCIE_2_LINK_DOWN_BCR] = { 0x9f700 },
2872108cdc09SImran Shaik 	[GCC_PCIE_2_NOCSR_COM_PHY_BCR] = { 0x6e130 },
2873108cdc09SImran Shaik 	[GCC_PCIE_2_PHY_BCR] = { 0x6e000 },
2874108cdc09SImran Shaik 	[GCC_PCIE_BCR] = { 0x53000 },
2875108cdc09SImran Shaik 	[GCC_PCIE_LINK_DOWN_BCR] = { 0x87000 },
2876108cdc09SImran Shaik 	[GCC_PCIE_NOCSR_COM_PHY_BCR] = { 0x88008 },
2877108cdc09SImran Shaik 	[GCC_PCIE_PHY_BCR] = { 0x54000 },
2878108cdc09SImran Shaik 	[GCC_PCIE_PHY_CFG_AHB_BCR] = { 0x88000 },
2879108cdc09SImran Shaik 	[GCC_PCIE_PHY_COM_BCR] = { 0x88004 },
2880108cdc09SImran Shaik 	[GCC_PCIE_PHY_NOCSR_COM_PHY_BCR] = { 0x8800c },
2881108cdc09SImran Shaik 	[GCC_QUSB2PHY_BCR] = { 0x2a000 },
2882108cdc09SImran Shaik 	[GCC_TCSR_PCIE_BCR] = { 0x84000 },
2883108cdc09SImran Shaik 	[GCC_USB30_BCR] = { 0x27000 },
2884108cdc09SImran Shaik 	[GCC_USB3_PHY_BCR] = { 0x28000 },
2885108cdc09SImran Shaik 	[GCC_USB3PHY_PHY_BCR] = { 0x28004 },
2886108cdc09SImran Shaik 	[GCC_USB_PHY_CFG_AHB2PHY_BCR] = { 0x29000 },
2887108cdc09SImran Shaik };
2888108cdc09SImran Shaik 
2889108cdc09SImran Shaik static const struct clk_rcg_dfs_data gcc_dfs_clocks[] = {
2890108cdc09SImran Shaik 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s0_clk_src),
2891108cdc09SImran Shaik 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s1_clk_src),
2892108cdc09SImran Shaik 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s2_clk_src),
2893108cdc09SImran Shaik 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s3_clk_src),
2894108cdc09SImran Shaik 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s4_clk_src),
2895108cdc09SImran Shaik 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s5_clk_src),
2896108cdc09SImran Shaik 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s6_clk_src),
2897108cdc09SImran Shaik 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s7_clk_src),
2898108cdc09SImran Shaik 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s8_clk_src),
2899108cdc09SImran Shaik };
2900108cdc09SImran Shaik 
2901108cdc09SImran Shaik static const struct regmap_config gcc_sdx75_regmap_config = {
2902108cdc09SImran Shaik 	.reg_bits = 32,
2903108cdc09SImran Shaik 	.reg_stride = 4,
2904108cdc09SImran Shaik 	.val_bits = 32,
2905108cdc09SImran Shaik 	.max_register = 0x1f41f0,
2906108cdc09SImran Shaik 	.fast_io = true,
2907108cdc09SImran Shaik };
2908108cdc09SImran Shaik 
2909108cdc09SImran Shaik static const struct qcom_cc_desc gcc_sdx75_desc = {
2910108cdc09SImran Shaik 	.config = &gcc_sdx75_regmap_config,
2911108cdc09SImran Shaik 	.clks = gcc_sdx75_clocks,
2912108cdc09SImran Shaik 	.num_clks = ARRAY_SIZE(gcc_sdx75_clocks),
2913108cdc09SImran Shaik 	.resets = gcc_sdx75_resets,
2914108cdc09SImran Shaik 	.num_resets = ARRAY_SIZE(gcc_sdx75_resets),
2915108cdc09SImran Shaik 	.gdscs = gcc_sdx75_gdscs,
2916108cdc09SImran Shaik 	.num_gdscs = ARRAY_SIZE(gcc_sdx75_gdscs),
2917108cdc09SImran Shaik };
2918108cdc09SImran Shaik 
2919108cdc09SImran Shaik static const struct of_device_id gcc_sdx75_match_table[] = {
2920108cdc09SImran Shaik 	{ .compatible = "qcom,sdx75-gcc" },
2921108cdc09SImran Shaik 	{ }
2922108cdc09SImran Shaik };
2923108cdc09SImran Shaik MODULE_DEVICE_TABLE(of, gcc_sdx75_match_table);
2924108cdc09SImran Shaik 
gcc_sdx75_probe(struct platform_device * pdev)2925108cdc09SImran Shaik static int gcc_sdx75_probe(struct platform_device *pdev)
2926108cdc09SImran Shaik {
2927108cdc09SImran Shaik 	struct regmap *regmap;
2928108cdc09SImran Shaik 	int ret;
2929108cdc09SImran Shaik 
2930108cdc09SImran Shaik 	regmap = qcom_cc_map(pdev, &gcc_sdx75_desc);
2931108cdc09SImran Shaik 	if (IS_ERR(regmap))
2932108cdc09SImran Shaik 		return PTR_ERR(regmap);
2933108cdc09SImran Shaik 
2934108cdc09SImran Shaik 	ret = qcom_cc_register_rcg_dfs(regmap, gcc_dfs_clocks,
2935108cdc09SImran Shaik 				       ARRAY_SIZE(gcc_dfs_clocks));
2936108cdc09SImran Shaik 	if (ret)
2937108cdc09SImran Shaik 		return ret;
2938108cdc09SImran Shaik 
2939108cdc09SImran Shaik 	/*
2940108cdc09SImran Shaik 	 * Keep clocks always enabled:
2941108cdc09SImran Shaik 	 * gcc_ahb_pcie_link_clk
2942108cdc09SImran Shaik 	 * gcc_xo_pcie_link_clk
2943108cdc09SImran Shaik 	 */
2944108cdc09SImran Shaik 	regmap_update_bits(regmap, 0x3e004, BIT(0), BIT(0));
2945108cdc09SImran Shaik 	regmap_update_bits(regmap, 0x3e008, BIT(0), BIT(0));
2946108cdc09SImran Shaik 
2947108cdc09SImran Shaik 	return qcom_cc_really_probe(pdev, &gcc_sdx75_desc, regmap);
2948108cdc09SImran Shaik }
2949108cdc09SImran Shaik 
2950108cdc09SImran Shaik static struct platform_driver gcc_sdx75_driver = {
2951108cdc09SImran Shaik 	.probe = gcc_sdx75_probe,
2952108cdc09SImran Shaik 	.driver = {
2953108cdc09SImran Shaik 		.name = "gcc-sdx75",
2954108cdc09SImran Shaik 		.of_match_table = gcc_sdx75_match_table,
2955108cdc09SImran Shaik 	},
2956108cdc09SImran Shaik };
2957108cdc09SImran Shaik 
gcc_sdx75_init(void)2958108cdc09SImran Shaik static int __init gcc_sdx75_init(void)
2959108cdc09SImran Shaik {
2960108cdc09SImran Shaik 	return platform_driver_register(&gcc_sdx75_driver);
2961108cdc09SImran Shaik }
2962108cdc09SImran Shaik subsys_initcall(gcc_sdx75_init);
2963108cdc09SImran Shaik 
gcc_sdx75_exit(void)2964108cdc09SImran Shaik static void __exit gcc_sdx75_exit(void)
2965108cdc09SImran Shaik {
2966108cdc09SImran Shaik 	platform_driver_unregister(&gcc_sdx75_driver);
2967108cdc09SImran Shaik }
2968108cdc09SImran Shaik module_exit(gcc_sdx75_exit);
2969108cdc09SImran Shaik 
2970108cdc09SImran Shaik MODULE_DESCRIPTION("QTI GCC SDX75 Driver");
2971108cdc09SImran Shaik MODULE_LICENSE("GPL");
2972