xref: /openbmc/linux/drivers/clk/qcom/gcc-ipq6018.c (revision 56e5ae0116aef87273cf1812d608645b076e4f02)
1d9db07f0SSricharan R // SPDX-License-Identifier: GPL-2.0
2d9db07f0SSricharan R /*
3d9db07f0SSricharan R  * Copyright (c) 2018, The Linux Foundation. All rights reserved.
4d9db07f0SSricharan R  */
5d9db07f0SSricharan R 
6d9db07f0SSricharan R #include <linux/kernel.h>
7d9db07f0SSricharan R #include <linux/err.h>
8d9db07f0SSricharan R #include <linux/platform_device.h>
9d9db07f0SSricharan R #include <linux/module.h>
10d9db07f0SSricharan R #include <linux/of.h>
11d9db07f0SSricharan R #include <linux/of_device.h>
12d9db07f0SSricharan R #include <linux/clk-provider.h>
13d9db07f0SSricharan R #include <linux/regmap.h>
14d9db07f0SSricharan R 
15d9db07f0SSricharan R #include <linux/reset-controller.h>
16d9db07f0SSricharan R #include <dt-bindings/clock/qcom,gcc-ipq6018.h>
17d9db07f0SSricharan R #include <dt-bindings/reset/qcom,gcc-ipq6018.h>
18d9db07f0SSricharan R 
19d9db07f0SSricharan R #include "common.h"
20d9db07f0SSricharan R #include "clk-regmap.h"
21d9db07f0SSricharan R #include "clk-pll.h"
22d9db07f0SSricharan R #include "clk-rcg.h"
23d9db07f0SSricharan R #include "clk-branch.h"
24d9db07f0SSricharan R #include "clk-alpha-pll.h"
25d9db07f0SSricharan R #include "clk-regmap-divider.h"
26d9db07f0SSricharan R #include "clk-regmap-mux.h"
27d9db07f0SSricharan R #include "reset.h"
28d9db07f0SSricharan R 
29d9db07f0SSricharan R #define F(f, s, h, m, n) { (f), (s), (2 * (h) - 1), (m), (n) }
30d9db07f0SSricharan R 
31d9db07f0SSricharan R enum {
32d9db07f0SSricharan R 	P_XO,
33d9db07f0SSricharan R 	P_BIAS_PLL,
34d9db07f0SSricharan R 	P_UNIPHY0_RX,
35d9db07f0SSricharan R 	P_UNIPHY0_TX,
36d9db07f0SSricharan R 	P_UNIPHY1_RX,
37d9db07f0SSricharan R 	P_BIAS_PLL_NSS_NOC,
38d9db07f0SSricharan R 	P_UNIPHY1_TX,
39d9db07f0SSricharan R 	P_PCIE20_PHY0_PIPE,
40d9db07f0SSricharan R 	P_USB3PHY_0_PIPE,
41d9db07f0SSricharan R 	P_GPLL0,
42d9db07f0SSricharan R 	P_GPLL0_DIV2,
43d9db07f0SSricharan R 	P_GPLL2,
44d9db07f0SSricharan R 	P_GPLL4,
45d9db07f0SSricharan R 	P_GPLL6,
46d9db07f0SSricharan R 	P_SLEEP_CLK,
47d9db07f0SSricharan R 	P_UBI32_PLL,
48d9db07f0SSricharan R 	P_NSS_CRYPTO_PLL,
49d9db07f0SSricharan R 	P_PI_SLEEP,
50d9db07f0SSricharan R };
51d9db07f0SSricharan R 
52d9db07f0SSricharan R static struct clk_alpha_pll gpll0_main = {
53d9db07f0SSricharan R 	.offset = 0x21000,
54d9db07f0SSricharan R 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
55d9db07f0SSricharan R 	.clkr = {
56d9db07f0SSricharan R 		.enable_reg = 0x0b000,
57d9db07f0SSricharan R 		.enable_mask = BIT(0),
58d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
59d9db07f0SSricharan R 			.name = "gpll0_main",
60d9db07f0SSricharan R 			.parent_data = &(const struct clk_parent_data){
61d9db07f0SSricharan R 				.fw_name = "xo",
62d9db07f0SSricharan R 			},
63d9db07f0SSricharan R 			.num_parents = 1,
64d9db07f0SSricharan R 			.ops = &clk_alpha_pll_ops,
65d9db07f0SSricharan R 		},
66d9db07f0SSricharan R 	},
67d9db07f0SSricharan R };
68d9db07f0SSricharan R 
69d9db07f0SSricharan R static struct clk_fixed_factor gpll0_out_main_div2 = {
70d9db07f0SSricharan R 	.mult = 1,
71d9db07f0SSricharan R 	.div = 2,
72d9db07f0SSricharan R 	.hw.init = &(struct clk_init_data){
73d9db07f0SSricharan R 		.name = "gpll0_out_main_div2",
74d9db07f0SSricharan R 		.parent_hws = (const struct clk_hw *[]){
75d9db07f0SSricharan R 				&gpll0_main.clkr.hw },
76d9db07f0SSricharan R 		.num_parents = 1,
77d9db07f0SSricharan R 		.ops = &clk_fixed_factor_ops,
78d9db07f0SSricharan R 		.flags = CLK_SET_RATE_PARENT,
79d9db07f0SSricharan R 	},
80d9db07f0SSricharan R };
81d9db07f0SSricharan R 
82d9db07f0SSricharan R static struct clk_alpha_pll_postdiv gpll0 = {
83d9db07f0SSricharan R 	.offset = 0x21000,
84d9db07f0SSricharan R 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
85d9db07f0SSricharan R 	.width = 4,
86d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
87d9db07f0SSricharan R 		.name = "gpll0",
88d9db07f0SSricharan R 		.parent_hws = (const struct clk_hw *[]){
89d9db07f0SSricharan R 				&gpll0_main.clkr.hw },
90d9db07f0SSricharan R 		.num_parents = 1,
91d9db07f0SSricharan R 		.ops = &clk_alpha_pll_postdiv_ro_ops,
92d9db07f0SSricharan R 		.flags = CLK_SET_RATE_PARENT,
93d9db07f0SSricharan R 	},
94d9db07f0SSricharan R };
95d9db07f0SSricharan R 
96d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_gpll0_gpll0_out_main_div2[] = {
97d9db07f0SSricharan R 	{ .fw_name = "xo" },
98d9db07f0SSricharan R 	{ .hw = &gpll0.clkr.hw},
99d9db07f0SSricharan R 	{ .hw = &gpll0_out_main_div2.hw},
100d9db07f0SSricharan R };
101d9db07f0SSricharan R 
102d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll0_gpll0_out_main_div2_map[] = {
103d9db07f0SSricharan R 	{ P_XO, 0 },
104d9db07f0SSricharan R 	{ P_GPLL0, 1 },
105d9db07f0SSricharan R 	{ P_GPLL0_DIV2, 4 },
106d9db07f0SSricharan R };
107d9db07f0SSricharan R 
108d9db07f0SSricharan R static struct clk_alpha_pll ubi32_pll_main = {
109d9db07f0SSricharan R 	.offset = 0x25000,
110d9db07f0SSricharan R 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_HUAYRA],
111d9db07f0SSricharan R 	.flags = SUPPORTS_DYNAMIC_UPDATE,
112d9db07f0SSricharan R 	.clkr = {
113d9db07f0SSricharan R 		.enable_reg = 0x0b000,
114d9db07f0SSricharan R 		.enable_mask = BIT(6),
115d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
116d9db07f0SSricharan R 			.name = "ubi32_pll_main",
117d9db07f0SSricharan R 			.parent_data = &(const struct clk_parent_data){
118d9db07f0SSricharan R 				.fw_name = "xo",
119d9db07f0SSricharan R 			},
120d9db07f0SSricharan R 			.num_parents = 1,
121d9db07f0SSricharan R 			.ops = &clk_alpha_pll_huayra_ops,
122d9db07f0SSricharan R 		},
123d9db07f0SSricharan R 	},
124d9db07f0SSricharan R };
125d9db07f0SSricharan R 
126d9db07f0SSricharan R static struct clk_alpha_pll_postdiv ubi32_pll = {
127d9db07f0SSricharan R 	.offset = 0x25000,
128d9db07f0SSricharan R 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_HUAYRA],
129d9db07f0SSricharan R 	.width = 2,
130d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
131d9db07f0SSricharan R 		.name = "ubi32_pll",
132d9db07f0SSricharan R 		.parent_hws = (const struct clk_hw *[]){
133d9db07f0SSricharan R 				&ubi32_pll_main.clkr.hw },
134d9db07f0SSricharan R 		.num_parents = 1,
135d9db07f0SSricharan R 		.ops = &clk_alpha_pll_postdiv_ro_ops,
136d9db07f0SSricharan R 		.flags = CLK_SET_RATE_PARENT,
137d9db07f0SSricharan R 	},
138d9db07f0SSricharan R };
139d9db07f0SSricharan R 
140d9db07f0SSricharan R static struct clk_alpha_pll gpll6_main = {
141d9db07f0SSricharan R 	.offset = 0x37000,
142d9db07f0SSricharan R 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_BRAMMO],
143d9db07f0SSricharan R 	.clkr = {
144d9db07f0SSricharan R 		.enable_reg = 0x0b000,
145d9db07f0SSricharan R 		.enable_mask = BIT(7),
146d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
147d9db07f0SSricharan R 			.name = "gpll6_main",
148d9db07f0SSricharan R 			.parent_data = &(const struct clk_parent_data){
149d9db07f0SSricharan R 				.fw_name = "xo",
150d9db07f0SSricharan R 			},
151d9db07f0SSricharan R 			.num_parents = 1,
152d9db07f0SSricharan R 			.ops = &clk_alpha_pll_ops,
153d9db07f0SSricharan R 		},
154d9db07f0SSricharan R 	},
155d9db07f0SSricharan R };
156d9db07f0SSricharan R 
157d9db07f0SSricharan R static struct clk_alpha_pll_postdiv gpll6 = {
158d9db07f0SSricharan R 	.offset = 0x37000,
159d9db07f0SSricharan R 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_BRAMMO],
160d9db07f0SSricharan R 	.width = 2,
161d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
162d9db07f0SSricharan R 		.name = "gpll6",
163d9db07f0SSricharan R 		.parent_hws = (const struct clk_hw *[]){
164d9db07f0SSricharan R 				&gpll6_main.clkr.hw },
165d9db07f0SSricharan R 		.num_parents = 1,
166d9db07f0SSricharan R 		.ops = &clk_alpha_pll_postdiv_ro_ops,
167d9db07f0SSricharan R 		.flags = CLK_SET_RATE_PARENT,
168d9db07f0SSricharan R 	},
169d9db07f0SSricharan R };
170d9db07f0SSricharan R 
171d9db07f0SSricharan R static struct clk_alpha_pll gpll4_main = {
172d9db07f0SSricharan R 	.offset = 0x24000,
173d9db07f0SSricharan R 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
174d9db07f0SSricharan R 	.clkr = {
175d9db07f0SSricharan R 		.enable_reg = 0x0b000,
176d9db07f0SSricharan R 		.enable_mask = BIT(5),
177d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
178d9db07f0SSricharan R 			.name = "gpll4_main",
179d9db07f0SSricharan R 			.parent_data = &(const struct clk_parent_data){
180d9db07f0SSricharan R 				.fw_name = "xo",
181d9db07f0SSricharan R 			},
182d9db07f0SSricharan R 			.num_parents = 1,
183d9db07f0SSricharan R 			.ops = &clk_alpha_pll_ops,
184d9db07f0SSricharan R 		},
185d9db07f0SSricharan R 	},
186d9db07f0SSricharan R };
187d9db07f0SSricharan R 
188d9db07f0SSricharan R static struct clk_alpha_pll_postdiv gpll4 = {
189d9db07f0SSricharan R 	.offset = 0x24000,
190d9db07f0SSricharan R 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
191d9db07f0SSricharan R 	.width = 4,
192d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
193d9db07f0SSricharan R 		.name = "gpll4",
194d9db07f0SSricharan R 		.parent_hws = (const struct clk_hw *[]){
195d9db07f0SSricharan R 				&gpll4_main.clkr.hw },
196d9db07f0SSricharan R 		.num_parents = 1,
197d9db07f0SSricharan R 		.ops = &clk_alpha_pll_postdiv_ro_ops,
198d9db07f0SSricharan R 		.flags = CLK_SET_RATE_PARENT,
199d9db07f0SSricharan R 	},
200d9db07f0SSricharan R };
201d9db07f0SSricharan R 
202d9db07f0SSricharan R static const struct freq_tbl ftbl_pcnoc_bfdcd_clk_src[] = {
203d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
204d9db07f0SSricharan R 	F(50000000, P_GPLL0, 16, 0, 0),
205d9db07f0SSricharan R 	F(100000000, P_GPLL0, 8, 0, 0),
206d9db07f0SSricharan R 	{ }
207d9db07f0SSricharan R };
208d9db07f0SSricharan R 
209d9db07f0SSricharan R static struct clk_rcg2 pcnoc_bfdcd_clk_src = {
210d9db07f0SSricharan R 	.cmd_rcgr = 0x27000,
211d9db07f0SSricharan R 	.freq_tbl = ftbl_pcnoc_bfdcd_clk_src,
212d9db07f0SSricharan R 	.hid_width = 5,
213d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
214d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
215d9db07f0SSricharan R 		.name = "pcnoc_bfdcd_clk_src",
216d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
217d9db07f0SSricharan R 		.num_parents = 3,
218d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
219d9db07f0SSricharan R 	},
220d9db07f0SSricharan R };
221d9db07f0SSricharan R 
222d9db07f0SSricharan R static struct clk_alpha_pll gpll2_main = {
223d9db07f0SSricharan R 	.offset = 0x4a000,
224d9db07f0SSricharan R 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
225d9db07f0SSricharan R 	.clkr = {
226d9db07f0SSricharan R 		.enable_reg = 0x0b000,
227d9db07f0SSricharan R 		.enable_mask = BIT(2),
228d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
229d9db07f0SSricharan R 			.name = "gpll2_main",
230d9db07f0SSricharan R 			.parent_data = &(const struct clk_parent_data){
231d9db07f0SSricharan R 				.fw_name = "xo",
232d9db07f0SSricharan R 			},
233d9db07f0SSricharan R 			.num_parents = 1,
234d9db07f0SSricharan R 			.ops = &clk_alpha_pll_ops,
235d9db07f0SSricharan R 		},
236d9db07f0SSricharan R 	},
237d9db07f0SSricharan R };
238d9db07f0SSricharan R 
239d9db07f0SSricharan R static struct clk_alpha_pll_postdiv gpll2 = {
240d9db07f0SSricharan R 	.offset = 0x4a000,
241d9db07f0SSricharan R 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
242d9db07f0SSricharan R 	.width = 4,
243d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
244d9db07f0SSricharan R 		.name = "gpll2",
245d9db07f0SSricharan R 		.parent_hws = (const struct clk_hw *[]){
246d9db07f0SSricharan R 				&gpll2_main.clkr.hw },
247d9db07f0SSricharan R 		.num_parents = 1,
248d9db07f0SSricharan R 		.ops = &clk_alpha_pll_postdiv_ro_ops,
249d9db07f0SSricharan R 		.flags = CLK_SET_RATE_PARENT,
250d9db07f0SSricharan R 	},
251d9db07f0SSricharan R };
252d9db07f0SSricharan R 
253d9db07f0SSricharan R static struct clk_alpha_pll nss_crypto_pll_main = {
254d9db07f0SSricharan R 	.offset = 0x22000,
255d9db07f0SSricharan R 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
256d9db07f0SSricharan R 	.clkr = {
257d9db07f0SSricharan R 		.enable_reg = 0x0b000,
258d9db07f0SSricharan R 		.enable_mask = BIT(4),
259d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
260d9db07f0SSricharan R 			.name = "nss_crypto_pll_main",
261d9db07f0SSricharan R 			.parent_data = &(const struct clk_parent_data){
262d9db07f0SSricharan R 				.fw_name = "xo",
263d9db07f0SSricharan R 			},
264d9db07f0SSricharan R 			.num_parents = 1,
265d9db07f0SSricharan R 			.ops = &clk_alpha_pll_ops,
266d9db07f0SSricharan R 		},
267d9db07f0SSricharan R 	},
268d9db07f0SSricharan R };
269d9db07f0SSricharan R 
270d9db07f0SSricharan R static struct clk_alpha_pll_postdiv nss_crypto_pll = {
271d9db07f0SSricharan R 	.offset = 0x22000,
272d9db07f0SSricharan R 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
273d9db07f0SSricharan R 	.width = 4,
274d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
275d9db07f0SSricharan R 		.name = "nss_crypto_pll",
276d9db07f0SSricharan R 		.parent_hws = (const struct clk_hw *[]){
277d9db07f0SSricharan R 				&nss_crypto_pll_main.clkr.hw },
278d9db07f0SSricharan R 		.num_parents = 1,
279d9db07f0SSricharan R 		.ops = &clk_alpha_pll_postdiv_ro_ops,
280d9db07f0SSricharan R 		.flags = CLK_SET_RATE_PARENT,
281d9db07f0SSricharan R 	},
282d9db07f0SSricharan R };
283d9db07f0SSricharan R 
284d9db07f0SSricharan R static const struct freq_tbl ftbl_qdss_tsctr_clk_src[] = {
285d9db07f0SSricharan R 	F(160000000, P_GPLL0_DIV2, 2.5, 0, 0),
286d9db07f0SSricharan R 	F(320000000, P_GPLL0, 2.5, 0, 0),
287d9db07f0SSricharan R 	F(600000000, P_GPLL4, 2, 0, 0),
288d9db07f0SSricharan R 	{ }
289d9db07f0SSricharan R };
290d9db07f0SSricharan R 
291d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_gpll4_gpll0_gpll6_gpll0_div2[] = {
292d9db07f0SSricharan R 	{ .fw_name = "xo" },
293d9db07f0SSricharan R 	{ .hw = &gpll4.clkr.hw },
294d9db07f0SSricharan R 	{ .hw = &gpll0.clkr.hw },
295d9db07f0SSricharan R 	{ .hw = &gpll6.clkr.hw },
296d9db07f0SSricharan R 	{ .hw = &gpll0_out_main_div2.hw },
297d9db07f0SSricharan R };
298d9db07f0SSricharan R 
299d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll4_gpll0_gpll6_gpll0_div2_map[] = {
300d9db07f0SSricharan R 	{ P_XO, 0 },
301d9db07f0SSricharan R 	{ P_GPLL4, 1 },
302d9db07f0SSricharan R 	{ P_GPLL0, 2 },
303d9db07f0SSricharan R 	{ P_GPLL6, 3 },
304d9db07f0SSricharan R 	{ P_GPLL0_DIV2, 4 },
305d9db07f0SSricharan R };
306d9db07f0SSricharan R 
307d9db07f0SSricharan R static struct clk_rcg2 qdss_tsctr_clk_src = {
308d9db07f0SSricharan R 	.cmd_rcgr = 0x29064,
309d9db07f0SSricharan R 	.freq_tbl = ftbl_qdss_tsctr_clk_src,
310d9db07f0SSricharan R 	.hid_width = 5,
311d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll4_gpll0_gpll6_gpll0_div2_map,
312d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
313d9db07f0SSricharan R 		.name = "qdss_tsctr_clk_src",
314d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll4_gpll0_gpll6_gpll0_div2,
315d9db07f0SSricharan R 		.num_parents = 5,
316d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
317d9db07f0SSricharan R 	},
318d9db07f0SSricharan R };
319d9db07f0SSricharan R 
320d9db07f0SSricharan R static struct clk_fixed_factor qdss_dap_sync_clk_src = {
321d9db07f0SSricharan R 	.mult = 1,
322d9db07f0SSricharan R 	.div = 4,
323d9db07f0SSricharan R 	.hw.init = &(struct clk_init_data){
324d9db07f0SSricharan R 		.name = "qdss_dap_sync_clk_src",
325d9db07f0SSricharan R 		.parent_hws = (const struct clk_hw *[]){
326d9db07f0SSricharan R 				&qdss_tsctr_clk_src.clkr.hw },
327d9db07f0SSricharan R 		.num_parents = 1,
328d9db07f0SSricharan R 		.ops = &clk_fixed_factor_ops,
329d9db07f0SSricharan R 	},
330d9db07f0SSricharan R };
331d9db07f0SSricharan R 
332d9db07f0SSricharan R static const struct freq_tbl ftbl_qdss_at_clk_src[] = {
333d9db07f0SSricharan R 	F(66670000, P_GPLL0_DIV2, 6, 0, 0),
334d9db07f0SSricharan R 	F(240000000, P_GPLL4, 5, 0, 0),
335d9db07f0SSricharan R 	{ }
336d9db07f0SSricharan R };
337d9db07f0SSricharan R 
338d9db07f0SSricharan R static struct clk_rcg2 qdss_at_clk_src = {
339d9db07f0SSricharan R 	.cmd_rcgr = 0x2900c,
340d9db07f0SSricharan R 	.freq_tbl = ftbl_qdss_at_clk_src,
341d9db07f0SSricharan R 	.hid_width = 5,
342d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll4_gpll0_gpll6_gpll0_div2_map,
343d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
344d9db07f0SSricharan R 		.name = "qdss_at_clk_src",
345d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll4_gpll0_gpll6_gpll0_div2,
346d9db07f0SSricharan R 		.num_parents = 5,
347d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
348d9db07f0SSricharan R 	},
349d9db07f0SSricharan R };
350d9db07f0SSricharan R 
351d9db07f0SSricharan R static struct clk_fixed_factor qdss_tsctr_div2_clk_src = {
352d9db07f0SSricharan R 	.mult = 1,
353d9db07f0SSricharan R 	.div = 2,
354d9db07f0SSricharan R 	.hw.init = &(struct clk_init_data){
355d9db07f0SSricharan R 		.name = "qdss_tsctr_div2_clk_src",
356d9db07f0SSricharan R 		.parent_hws = (const struct clk_hw *[]){
357d9db07f0SSricharan R 				&qdss_tsctr_clk_src.clkr.hw },
358d9db07f0SSricharan R 		.num_parents = 1,
359d9db07f0SSricharan R 		.flags = CLK_SET_RATE_PARENT,
360d9db07f0SSricharan R 		.ops = &clk_fixed_factor_ops,
361d9db07f0SSricharan R 	},
362d9db07f0SSricharan R };
363d9db07f0SSricharan R 
364d9db07f0SSricharan R static const struct freq_tbl ftbl_nss_ppe_clk_src[] = {
365d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
366d9db07f0SSricharan R 	F(300000000, P_BIAS_PLL, 1, 0, 0),
367d9db07f0SSricharan R 	{ }
368d9db07f0SSricharan R };
369d9db07f0SSricharan R 
370d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_bias_gpll0_gpll4_nss_ubi32[] = {
371d9db07f0SSricharan R 	{ .fw_name = "xo" },
372d9db07f0SSricharan R 	{ .fw_name = "bias_pll_cc_clk" },
373d9db07f0SSricharan R 	{ .hw = &gpll0.clkr.hw },
374d9db07f0SSricharan R 	{ .hw = &gpll4.clkr.hw },
375d9db07f0SSricharan R 	{ .hw = &nss_crypto_pll.clkr.hw },
376d9db07f0SSricharan R 	{ .hw = &ubi32_pll.clkr.hw },
377d9db07f0SSricharan R };
378d9db07f0SSricharan R 
379d9db07f0SSricharan R static const struct parent_map gcc_xo_bias_gpll0_gpll4_nss_ubi32_map[] = {
380d9db07f0SSricharan R 	{ P_XO, 0 },
381d9db07f0SSricharan R 	{ P_BIAS_PLL, 1 },
382d9db07f0SSricharan R 	{ P_GPLL0, 2 },
383d9db07f0SSricharan R 	{ P_GPLL4, 3 },
384d9db07f0SSricharan R 	{ P_NSS_CRYPTO_PLL, 4 },
385d9db07f0SSricharan R 	{ P_UBI32_PLL, 5 },
386d9db07f0SSricharan R };
387d9db07f0SSricharan R 
388d9db07f0SSricharan R static struct clk_rcg2 nss_ppe_clk_src = {
389d9db07f0SSricharan R 	.cmd_rcgr = 0x68080,
390d9db07f0SSricharan R 	.freq_tbl = ftbl_nss_ppe_clk_src,
391d9db07f0SSricharan R 	.hid_width = 5,
392d9db07f0SSricharan R 	.parent_map = gcc_xo_bias_gpll0_gpll4_nss_ubi32_map,
393d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
394d9db07f0SSricharan R 		.name = "nss_ppe_clk_src",
395d9db07f0SSricharan R 		.parent_data = gcc_xo_bias_gpll0_gpll4_nss_ubi32,
396d9db07f0SSricharan R 		.num_parents = 6,
397d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
398d9db07f0SSricharan R 	},
399d9db07f0SSricharan R };
400d9db07f0SSricharan R 
401d9db07f0SSricharan R static struct clk_branch gcc_xo_clk_src = {
402d9db07f0SSricharan R 	.halt_reg = 0x30018,
403d9db07f0SSricharan R 	.clkr = {
404d9db07f0SSricharan R 		.enable_reg = 0x30018,
405d9db07f0SSricharan R 		.enable_mask = BIT(1),
406d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
407d9db07f0SSricharan R 			.name = "gcc_xo_clk_src",
408d9db07f0SSricharan R 			.parent_data = &(const struct clk_parent_data){
409d9db07f0SSricharan R 				.fw_name = "xo",
410d9db07f0SSricharan R 			},
411d9db07f0SSricharan R 			.num_parents = 1,
412d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
413d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
414d9db07f0SSricharan R 		},
415d9db07f0SSricharan R 	},
416d9db07f0SSricharan R };
417d9db07f0SSricharan R 
418d9db07f0SSricharan R static const struct freq_tbl ftbl_nss_ce_clk_src[] = {
419d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
420d9db07f0SSricharan R 	F(200000000, P_GPLL0, 4, 0, 0),
421d9db07f0SSricharan R 	{ }
422d9db07f0SSricharan R };
423d9db07f0SSricharan R 
424d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_gpll0[] = {
425d9db07f0SSricharan R 	{ .fw_name = "xo" },
426d9db07f0SSricharan R 	{ .hw = &gpll0.clkr.hw },
427d9db07f0SSricharan R };
428d9db07f0SSricharan R 
429d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll0_map[] = {
430d9db07f0SSricharan R 	{ P_XO, 0 },
431d9db07f0SSricharan R 	{ P_GPLL0, 1 },
432d9db07f0SSricharan R };
433d9db07f0SSricharan R 
434d9db07f0SSricharan R static struct clk_rcg2 nss_ce_clk_src = {
435d9db07f0SSricharan R 	.cmd_rcgr = 0x68098,
436d9db07f0SSricharan R 	.freq_tbl = ftbl_nss_ce_clk_src,
437d9db07f0SSricharan R 	.hid_width = 5,
438d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_map,
439d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
440d9db07f0SSricharan R 		.name = "nss_ce_clk_src",
441d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0,
442d9db07f0SSricharan R 		.num_parents = 2,
443d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
444d9db07f0SSricharan R 	},
445d9db07f0SSricharan R };
446d9db07f0SSricharan R 
447d9db07f0SSricharan R static struct clk_branch gcc_sleep_clk_src = {
448d9db07f0SSricharan R 	.halt_reg = 0x30000,
449d9db07f0SSricharan R 	.clkr = {
450d9db07f0SSricharan R 		.enable_reg = 0x30000,
451d9db07f0SSricharan R 		.enable_mask = BIT(1),
452d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
453d9db07f0SSricharan R 			.name = "gcc_sleep_clk_src",
454d9db07f0SSricharan R 			.parent_data = &(const struct clk_parent_data){
455d9db07f0SSricharan R 				.fw_name = "sleep_clk",
456d9db07f0SSricharan R 			},
457d9db07f0SSricharan R 			.num_parents = 1,
458d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
459d9db07f0SSricharan R 		},
460d9db07f0SSricharan R 	},
461d9db07f0SSricharan R };
462d9db07f0SSricharan R 
463d9db07f0SSricharan R static const struct freq_tbl ftbl_snoc_nssnoc_bfdcd_clk_src[] = {
464d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
465d9db07f0SSricharan R 	F(50000000, P_GPLL0_DIV2, 8, 0, 0),
466d9db07f0SSricharan R 	F(100000000, P_GPLL0, 8, 0, 0),
467d9db07f0SSricharan R 	F(133333333, P_GPLL0, 6, 0, 0),
468d9db07f0SSricharan R 	F(160000000, P_GPLL0, 5, 0, 0),
469d9db07f0SSricharan R 	F(200000000, P_GPLL0, 4, 0, 0),
470d9db07f0SSricharan R 	F(266666667, P_GPLL0, 3, 0, 0),
471d9db07f0SSricharan R 	{ }
472d9db07f0SSricharan R };
473d9db07f0SSricharan R 
474d9db07f0SSricharan R static const struct clk_parent_data
475d9db07f0SSricharan R 			gcc_xo_gpll0_gpll6_gpll0_out_main_div2[] = {
476d9db07f0SSricharan R 	{ .fw_name = "xo" },
477d9db07f0SSricharan R 	{ .hw = &gpll0.clkr.hw },
478d9db07f0SSricharan R 	{ .hw = &gpll6.clkr.hw },
479d9db07f0SSricharan R 	{ .hw = &gpll0_out_main_div2.hw },
480d9db07f0SSricharan R };
481d9db07f0SSricharan R 
482d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_out_main_div2_map[] = {
483d9db07f0SSricharan R 	{ P_XO, 0 },
484d9db07f0SSricharan R 	{ P_GPLL0, 1 },
485d9db07f0SSricharan R 	{ P_GPLL6, 2 },
486d9db07f0SSricharan R 	{ P_GPLL0_DIV2, 3 },
487d9db07f0SSricharan R };
488d9db07f0SSricharan R 
489d9db07f0SSricharan R static struct clk_rcg2 snoc_nssnoc_bfdcd_clk_src = {
490d9db07f0SSricharan R 	.cmd_rcgr = 0x76054,
491d9db07f0SSricharan R 	.freq_tbl = ftbl_snoc_nssnoc_bfdcd_clk_src,
492d9db07f0SSricharan R 	.hid_width = 5,
493d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll6_gpll0_out_main_div2_map,
494d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
495d9db07f0SSricharan R 		.name = "snoc_nssnoc_bfdcd_clk_src",
496d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll6_gpll0_out_main_div2,
497d9db07f0SSricharan R 		.num_parents = 4,
498d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
499d9db07f0SSricharan R 	},
500d9db07f0SSricharan R };
501d9db07f0SSricharan R 
502d9db07f0SSricharan R static const struct freq_tbl ftbl_apss_ahb_clk_src[] = {
503d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
504d9db07f0SSricharan R 	F(25000000, P_GPLL0_DIV2, 16, 0, 0),
505d9db07f0SSricharan R 	F(50000000, P_GPLL0, 16, 0, 0),
506d9db07f0SSricharan R 	F(100000000, P_GPLL0, 8, 0, 0),
507d9db07f0SSricharan R 	{ }
508d9db07f0SSricharan R };
509d9db07f0SSricharan R 
510d9db07f0SSricharan R static struct clk_rcg2 apss_ahb_clk_src = {
511d9db07f0SSricharan R 	.cmd_rcgr = 0x46000,
512d9db07f0SSricharan R 	.freq_tbl = ftbl_apss_ahb_clk_src,
513d9db07f0SSricharan R 	.hid_width = 5,
514d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
515d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
516d9db07f0SSricharan R 		.name = "apss_ahb_clk_src",
517d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
518d9db07f0SSricharan R 		.num_parents = 3,
519d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
520d9db07f0SSricharan R 	},
521d9db07f0SSricharan R };
522d9db07f0SSricharan R 
523d9db07f0SSricharan R static const struct freq_tbl ftbl_nss_port5_rx_clk_src[] = {
524d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
525d9db07f0SSricharan R 	F(25000000, P_UNIPHY1_RX, 12.5, 0, 0),
526d9db07f0SSricharan R 	F(25000000, P_UNIPHY0_RX, 5, 0, 0),
527d9db07f0SSricharan R 	F(78125000, P_UNIPHY1_RX, 4, 0, 0),
528d9db07f0SSricharan R 	F(125000000, P_UNIPHY1_RX, 2.5, 0, 0),
529d9db07f0SSricharan R 	F(125000000, P_UNIPHY0_RX, 1, 0, 0),
530d9db07f0SSricharan R 	F(156250000, P_UNIPHY1_RX, 2, 0, 0),
531d9db07f0SSricharan R 	F(312500000, P_UNIPHY1_RX, 1, 0, 0),
532d9db07f0SSricharan R 	{ }
533d9db07f0SSricharan R };
534d9db07f0SSricharan R 
535d9db07f0SSricharan R static const struct clk_parent_data
536d9db07f0SSricharan R gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias[] = {
537d9db07f0SSricharan R 	{ .fw_name = "xo" },
538d9db07f0SSricharan R 	{ .fw_name = "uniphy0_gcc_rx_clk" },
539d9db07f0SSricharan R 	{ .fw_name = "uniphy0_gcc_tx_clk" },
540d9db07f0SSricharan R 	{ .fw_name = "uniphy1_gcc_rx_clk" },
541d9db07f0SSricharan R 	{ .fw_name = "uniphy1_gcc_tx_clk" },
542d9db07f0SSricharan R 	{ .hw = &ubi32_pll.clkr.hw },
543d9db07f0SSricharan R 	{ .fw_name = "bias_pll_cc_clk" },
544d9db07f0SSricharan R };
545d9db07f0SSricharan R 
546d9db07f0SSricharan R static const struct parent_map
547d9db07f0SSricharan R gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias_map[] = {
548d9db07f0SSricharan R 	{ P_XO, 0 },
549d9db07f0SSricharan R 	{ P_UNIPHY0_RX, 1 },
550d9db07f0SSricharan R 	{ P_UNIPHY0_TX, 2 },
551d9db07f0SSricharan R 	{ P_UNIPHY1_RX, 3 },
552d9db07f0SSricharan R 	{ P_UNIPHY1_TX, 4 },
553d9db07f0SSricharan R 	{ P_UBI32_PLL, 5 },
554d9db07f0SSricharan R 	{ P_BIAS_PLL, 6 },
555d9db07f0SSricharan R };
556d9db07f0SSricharan R 
557d9db07f0SSricharan R static struct clk_rcg2 nss_port5_rx_clk_src = {
558d9db07f0SSricharan R 	.cmd_rcgr = 0x68060,
559d9db07f0SSricharan R 	.freq_tbl = ftbl_nss_port5_rx_clk_src,
560d9db07f0SSricharan R 	.hid_width = 5,
561d9db07f0SSricharan R 	.parent_map = gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias_map,
562d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
563d9db07f0SSricharan R 		.name = "nss_port5_rx_clk_src",
564d9db07f0SSricharan R 		.parent_data = gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias,
565d9db07f0SSricharan R 		.num_parents = 7,
566d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
567d9db07f0SSricharan R 	},
568d9db07f0SSricharan R };
569d9db07f0SSricharan R 
570d9db07f0SSricharan R static const struct freq_tbl ftbl_nss_port5_tx_clk_src[] = {
571d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
572d9db07f0SSricharan R 	F(25000000, P_UNIPHY1_TX, 12.5, 0, 0),
573d9db07f0SSricharan R 	F(25000000, P_UNIPHY0_TX, 5, 0, 0),
574d9db07f0SSricharan R 	F(78125000, P_UNIPHY1_TX, 4, 0, 0),
575d9db07f0SSricharan R 	F(125000000, P_UNIPHY1_TX, 2.5, 0, 0),
576d9db07f0SSricharan R 	F(125000000, P_UNIPHY0_TX, 1, 0, 0),
577d9db07f0SSricharan R 	F(156250000, P_UNIPHY1_TX, 2, 0, 0),
578d9db07f0SSricharan R 	F(312500000, P_UNIPHY1_TX, 1, 0, 0),
579d9db07f0SSricharan R 	{ }
580d9db07f0SSricharan R };
581d9db07f0SSricharan R 
582d9db07f0SSricharan R static const struct clk_parent_data
583d9db07f0SSricharan R gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias[] = {
584d9db07f0SSricharan R 	{ .fw_name = "xo" },
585d9db07f0SSricharan R 	{ .fw_name = "uniphy0_gcc_tx_clk" },
586d9db07f0SSricharan R 	{ .fw_name = "uniphy0_gcc_rx_clk" },
587d9db07f0SSricharan R 	{ .fw_name = "uniphy1_gcc_tx_clk" },
588d9db07f0SSricharan R 	{ .fw_name = "uniphy1_gcc_rx_clk" },
589d9db07f0SSricharan R 	{ .hw = &ubi32_pll.clkr.hw },
590d9db07f0SSricharan R 	{ .fw_name = "bias_pll_cc_clk" },
591d9db07f0SSricharan R };
592d9db07f0SSricharan R 
593d9db07f0SSricharan R static const struct parent_map
594d9db07f0SSricharan R gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias_map[] = {
595d9db07f0SSricharan R 	{ P_XO, 0 },
596d9db07f0SSricharan R 	{ P_UNIPHY0_TX, 1 },
597d9db07f0SSricharan R 	{ P_UNIPHY0_RX, 2 },
598d9db07f0SSricharan R 	{ P_UNIPHY1_TX, 3 },
599d9db07f0SSricharan R 	{ P_UNIPHY1_RX, 4 },
600d9db07f0SSricharan R 	{ P_UBI32_PLL, 5 },
601d9db07f0SSricharan R 	{ P_BIAS_PLL, 6 },
602d9db07f0SSricharan R };
603d9db07f0SSricharan R 
604d9db07f0SSricharan R static struct clk_rcg2 nss_port5_tx_clk_src = {
605d9db07f0SSricharan R 	.cmd_rcgr = 0x68068,
606d9db07f0SSricharan R 	.freq_tbl = ftbl_nss_port5_tx_clk_src,
607d9db07f0SSricharan R 	.hid_width = 5,
608d9db07f0SSricharan R 	.parent_map = gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias_map,
609d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
610d9db07f0SSricharan R 		.name = "nss_port5_tx_clk_src",
611d9db07f0SSricharan R 		.parent_data = gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias,
612d9db07f0SSricharan R 		.num_parents = 7,
613d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
614d9db07f0SSricharan R 	},
615d9db07f0SSricharan R };
616d9db07f0SSricharan R 
617d9db07f0SSricharan R static const struct freq_tbl ftbl_pcie_axi_clk_src[] = {
618d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
619d9db07f0SSricharan R 	F(200000000, P_GPLL0, 4, 0, 0),
620d9db07f0SSricharan R 	F(240000000, P_GPLL4, 5, 0, 0),
621d9db07f0SSricharan R 	{ }
622d9db07f0SSricharan R };
623d9db07f0SSricharan R 
624d9db07f0SSricharan R static const struct freq_tbl ftbl_pcie_rchng_clk_src[] = {
625d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
626d9db07f0SSricharan R 	F(100000000, P_GPLL0, 8, 0, 0),
627d9db07f0SSricharan R 	{ }
628d9db07f0SSricharan R };
629d9db07f0SSricharan R 
630d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_gpll0_gpll4[] = {
631d9db07f0SSricharan R 	{ .fw_name = "xo" },
632d9db07f0SSricharan R 	{ .hw = &gpll0.clkr.hw },
633d9db07f0SSricharan R 	{ .hw = &gpll4.clkr.hw },
634d9db07f0SSricharan R };
635d9db07f0SSricharan R 
636d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll0_gpll4_map[] = {
637d9db07f0SSricharan R 	{ P_XO, 0 },
638d9db07f0SSricharan R 	{ P_GPLL0, 1 },
639d9db07f0SSricharan R 	{ P_GPLL4, 2 },
640d9db07f0SSricharan R };
641d9db07f0SSricharan R 
642d9db07f0SSricharan R static struct clk_rcg2 pcie0_axi_clk_src = {
643d9db07f0SSricharan R 	.cmd_rcgr = 0x75054,
644d9db07f0SSricharan R 	.freq_tbl = ftbl_pcie_axi_clk_src,
645d9db07f0SSricharan R 	.hid_width = 5,
646d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll4_map,
647d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
648d9db07f0SSricharan R 		.name = "pcie0_axi_clk_src",
649d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll4,
650d9db07f0SSricharan R 		.num_parents = 3,
651d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
652d9db07f0SSricharan R 	},
653d9db07f0SSricharan R };
654d9db07f0SSricharan R 
655d9db07f0SSricharan R static const struct freq_tbl ftbl_usb0_master_clk_src[] = {
656d9db07f0SSricharan R 	F(80000000, P_GPLL0_DIV2, 5, 0, 0),
657d9db07f0SSricharan R 	F(100000000, P_GPLL0, 8, 0, 0),
658d9db07f0SSricharan R 	F(133330000, P_GPLL0, 6, 0, 0),
659d9db07f0SSricharan R 	F(200000000, P_GPLL0, 4, 0, 0),
660d9db07f0SSricharan R 	{ }
661d9db07f0SSricharan R };
662d9db07f0SSricharan R 
663d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_gpll0_out_main_div2_gpll0[] = {
664d9db07f0SSricharan R 	{ .fw_name = "xo" },
665d9db07f0SSricharan R 	{ .hw = &gpll0_out_main_div2.hw },
666d9db07f0SSricharan R 	{ .hw = &gpll0.clkr.hw },
667d9db07f0SSricharan R };
668d9db07f0SSricharan R 
669d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll0_out_main_div2_gpll0_map[] = {
670d9db07f0SSricharan R 	{ P_XO, 0 },
671d9db07f0SSricharan R 	{ P_GPLL0_DIV2, 2 },
672d9db07f0SSricharan R 	{ P_GPLL0, 1 },
673d9db07f0SSricharan R };
674d9db07f0SSricharan R 
675d9db07f0SSricharan R static struct clk_rcg2 usb0_master_clk_src = {
676d9db07f0SSricharan R 	.cmd_rcgr = 0x3e00c,
677d9db07f0SSricharan R 	.freq_tbl = ftbl_usb0_master_clk_src,
678d9db07f0SSricharan R 	.mnd_width = 8,
679d9db07f0SSricharan R 	.hid_width = 5,
680d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_out_main_div2_gpll0_map,
681d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
682d9db07f0SSricharan R 		.name = "usb0_master_clk_src",
683d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_out_main_div2_gpll0,
684d9db07f0SSricharan R 		.num_parents = 3,
685d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
686d9db07f0SSricharan R 	},
687d9db07f0SSricharan R };
688d9db07f0SSricharan R 
689d9db07f0SSricharan R static struct clk_regmap_div apss_ahb_postdiv_clk_src = {
690d9db07f0SSricharan R 	.reg = 0x46018,
691d9db07f0SSricharan R 	.shift = 4,
692d9db07f0SSricharan R 	.width = 4,
693d9db07f0SSricharan R 	.clkr = {
694d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
695d9db07f0SSricharan R 			.name = "apss_ahb_postdiv_clk_src",
696d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
697d9db07f0SSricharan R 					&apss_ahb_clk_src.clkr.hw },
698d9db07f0SSricharan R 			.num_parents = 1,
699d9db07f0SSricharan R 			.ops = &clk_regmap_div_ops,
700d9db07f0SSricharan R 		},
701d9db07f0SSricharan R 	},
702d9db07f0SSricharan R };
703d9db07f0SSricharan R 
704d9db07f0SSricharan R static struct clk_fixed_factor gcc_xo_div4_clk_src = {
705d9db07f0SSricharan R 	.mult = 1,
706d9db07f0SSricharan R 	.div = 4,
707d9db07f0SSricharan R 	.hw.init = &(struct clk_init_data){
708d9db07f0SSricharan R 		.name = "gcc_xo_div4_clk_src",
709d9db07f0SSricharan R 		.parent_hws = (const struct clk_hw *[]){
710d9db07f0SSricharan R 				&gcc_xo_clk_src.clkr.hw },
711d9db07f0SSricharan R 		.num_parents = 1,
712d9db07f0SSricharan R 		.ops = &clk_fixed_factor_ops,
713d9db07f0SSricharan R 		.flags = CLK_SET_RATE_PARENT,
714d9db07f0SSricharan R 	},
715d9db07f0SSricharan R };
716d9db07f0SSricharan R 
717d9db07f0SSricharan R static const struct freq_tbl ftbl_nss_port1_rx_clk_src[] = {
718d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
719d9db07f0SSricharan R 	F(25000000, P_UNIPHY0_RX, 5, 0, 0),
720d9db07f0SSricharan R 	F(125000000, P_UNIPHY0_RX, 1, 0, 0),
721d9db07f0SSricharan R 	{ }
722d9db07f0SSricharan R };
723d9db07f0SSricharan R 
724d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_uniphy0_rx_tx_ubi32_bias[] = {
725d9db07f0SSricharan R 	{ .fw_name = "xo" },
726d9db07f0SSricharan R 	{ .fw_name = "uniphy0_gcc_rx_clk" },
727d9db07f0SSricharan R 	{ .fw_name = "uniphy0_gcc_tx_clk" },
728d9db07f0SSricharan R 	{ .hw = &ubi32_pll.clkr.hw },
729d9db07f0SSricharan R 	{ .fw_name = "bias_pll_cc_clk" },
730d9db07f0SSricharan R };
731d9db07f0SSricharan R 
732d9db07f0SSricharan R static const struct parent_map gcc_xo_uniphy0_rx_tx_ubi32_bias_map[] = {
733d9db07f0SSricharan R 	{ P_XO, 0 },
734d9db07f0SSricharan R 	{ P_UNIPHY0_RX, 1 },
735d9db07f0SSricharan R 	{ P_UNIPHY0_TX, 2 },
736d9db07f0SSricharan R 	{ P_UBI32_PLL, 5 },
737d9db07f0SSricharan R 	{ P_BIAS_PLL, 6 },
738d9db07f0SSricharan R };
739d9db07f0SSricharan R 
740d9db07f0SSricharan R static struct clk_rcg2 nss_port1_rx_clk_src = {
741d9db07f0SSricharan R 	.cmd_rcgr = 0x68020,
742d9db07f0SSricharan R 	.freq_tbl = ftbl_nss_port1_rx_clk_src,
743d9db07f0SSricharan R 	.hid_width = 5,
744d9db07f0SSricharan R 	.parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
745d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
746d9db07f0SSricharan R 		.name = "nss_port1_rx_clk_src",
747d9db07f0SSricharan R 		.parent_data = gcc_xo_uniphy0_rx_tx_ubi32_bias,
748d9db07f0SSricharan R 		.num_parents = 5,
749d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
750d9db07f0SSricharan R 	},
751d9db07f0SSricharan R };
752d9db07f0SSricharan R 
753d9db07f0SSricharan R static const struct freq_tbl ftbl_nss_port1_tx_clk_src[] = {
754d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
755d9db07f0SSricharan R 	F(25000000, P_UNIPHY0_TX, 5, 0, 0),
756d9db07f0SSricharan R 	F(125000000, P_UNIPHY0_TX, 1, 0, 0),
757d9db07f0SSricharan R 	{ }
758d9db07f0SSricharan R };
759d9db07f0SSricharan R 
760d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_uniphy0_tx_rx_ubi32_bias[] = {
761d9db07f0SSricharan R 	{ .fw_name = "xo" },
762d9db07f0SSricharan R 	{ .fw_name = "uniphy0_gcc_tx_clk" },
763d9db07f0SSricharan R 	{ .fw_name = "uniphy0_gcc_rx_clk" },
764d9db07f0SSricharan R 	{ .hw = &ubi32_pll.clkr.hw },
765d9db07f0SSricharan R 	{ .fw_name = "bias_pll_cc_clk" },
766d9db07f0SSricharan R };
767d9db07f0SSricharan R 
768d9db07f0SSricharan R static const struct parent_map gcc_xo_uniphy0_tx_rx_ubi32_bias_map[] = {
769d9db07f0SSricharan R 	{ P_XO, 0 },
770d9db07f0SSricharan R 	{ P_UNIPHY0_TX, 1 },
771d9db07f0SSricharan R 	{ P_UNIPHY0_RX, 2 },
772d9db07f0SSricharan R 	{ P_UBI32_PLL, 5 },
773d9db07f0SSricharan R 	{ P_BIAS_PLL, 6 },
774d9db07f0SSricharan R };
775d9db07f0SSricharan R 
776d9db07f0SSricharan R static struct clk_rcg2 nss_port1_tx_clk_src = {
777d9db07f0SSricharan R 	.cmd_rcgr = 0x68028,
778d9db07f0SSricharan R 	.freq_tbl = ftbl_nss_port1_tx_clk_src,
779d9db07f0SSricharan R 	.hid_width = 5,
780d9db07f0SSricharan R 	.parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
781d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
782d9db07f0SSricharan R 		.name = "nss_port1_tx_clk_src",
783d9db07f0SSricharan R 		.parent_data = gcc_xo_uniphy0_tx_rx_ubi32_bias,
784d9db07f0SSricharan R 		.num_parents = 5,
785d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
786d9db07f0SSricharan R 	},
787d9db07f0SSricharan R };
788d9db07f0SSricharan R 
789d9db07f0SSricharan R static struct clk_rcg2 nss_port2_rx_clk_src = {
790d9db07f0SSricharan R 	.cmd_rcgr = 0x68030,
791d9db07f0SSricharan R 	.freq_tbl = ftbl_nss_port1_rx_clk_src,
792d9db07f0SSricharan R 	.hid_width = 5,
793d9db07f0SSricharan R 	.parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
794d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
795d9db07f0SSricharan R 		.name = "nss_port2_rx_clk_src",
796d9db07f0SSricharan R 		.parent_data = gcc_xo_uniphy0_rx_tx_ubi32_bias,
797d9db07f0SSricharan R 		.num_parents = 5,
798d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
799d9db07f0SSricharan R 	},
800d9db07f0SSricharan R };
801d9db07f0SSricharan R 
802d9db07f0SSricharan R static struct clk_rcg2 nss_port2_tx_clk_src = {
803d9db07f0SSricharan R 	.cmd_rcgr = 0x68038,
804d9db07f0SSricharan R 	.freq_tbl = ftbl_nss_port1_tx_clk_src,
805d9db07f0SSricharan R 	.hid_width = 5,
806d9db07f0SSricharan R 	.parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
807d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
808d9db07f0SSricharan R 		.name = "nss_port2_tx_clk_src",
809d9db07f0SSricharan R 		.parent_data = gcc_xo_uniphy0_tx_rx_ubi32_bias,
810d9db07f0SSricharan R 		.num_parents = 5,
811d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
812d9db07f0SSricharan R 	},
813d9db07f0SSricharan R };
814d9db07f0SSricharan R 
815d9db07f0SSricharan R static struct clk_rcg2 nss_port3_rx_clk_src = {
816d9db07f0SSricharan R 	.cmd_rcgr = 0x68040,
817d9db07f0SSricharan R 	.freq_tbl = ftbl_nss_port1_rx_clk_src,
818d9db07f0SSricharan R 	.hid_width = 5,
819d9db07f0SSricharan R 	.parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
820d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
821d9db07f0SSricharan R 		.name = "nss_port3_rx_clk_src",
822d9db07f0SSricharan R 		.parent_data = gcc_xo_uniphy0_rx_tx_ubi32_bias,
823d9db07f0SSricharan R 		.num_parents = 5,
824d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
825d9db07f0SSricharan R 	},
826d9db07f0SSricharan R };
827d9db07f0SSricharan R 
828d9db07f0SSricharan R static struct clk_rcg2 nss_port3_tx_clk_src = {
829d9db07f0SSricharan R 	.cmd_rcgr = 0x68048,
830d9db07f0SSricharan R 	.freq_tbl = ftbl_nss_port1_tx_clk_src,
831d9db07f0SSricharan R 	.hid_width = 5,
832d9db07f0SSricharan R 	.parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
833d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
834d9db07f0SSricharan R 		.name = "nss_port3_tx_clk_src",
835d9db07f0SSricharan R 		.parent_data = gcc_xo_uniphy0_tx_rx_ubi32_bias,
836d9db07f0SSricharan R 		.num_parents = 5,
837d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
838d9db07f0SSricharan R 	},
839d9db07f0SSricharan R };
840d9db07f0SSricharan R 
841d9db07f0SSricharan R static struct clk_rcg2 nss_port4_rx_clk_src = {
842d9db07f0SSricharan R 	.cmd_rcgr = 0x68050,
843d9db07f0SSricharan R 	.freq_tbl = ftbl_nss_port1_rx_clk_src,
844d9db07f0SSricharan R 	.hid_width = 5,
845d9db07f0SSricharan R 	.parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
846d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
847d9db07f0SSricharan R 		.name = "nss_port4_rx_clk_src",
848d9db07f0SSricharan R 		.parent_data = gcc_xo_uniphy0_rx_tx_ubi32_bias,
849d9db07f0SSricharan R 		.num_parents = 5,
850d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
851d9db07f0SSricharan R 	},
852d9db07f0SSricharan R };
853d9db07f0SSricharan R 
854d9db07f0SSricharan R static struct clk_rcg2 nss_port4_tx_clk_src = {
855d9db07f0SSricharan R 	.cmd_rcgr = 0x68058,
856d9db07f0SSricharan R 	.freq_tbl = ftbl_nss_port1_tx_clk_src,
857d9db07f0SSricharan R 	.hid_width = 5,
858d9db07f0SSricharan R 	.parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
859d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
860d9db07f0SSricharan R 		.name = "nss_port4_tx_clk_src",
861d9db07f0SSricharan R 		.parent_data = gcc_xo_uniphy0_tx_rx_ubi32_bias,
862d9db07f0SSricharan R 		.num_parents = 5,
863d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
864d9db07f0SSricharan R 	},
865d9db07f0SSricharan R };
866d9db07f0SSricharan R 
867d9db07f0SSricharan R static struct clk_regmap_div nss_port5_rx_div_clk_src = {
868d9db07f0SSricharan R 	.reg = 0x68440,
869d9db07f0SSricharan R 	.shift = 0,
870d9db07f0SSricharan R 	.width = 4,
871d9db07f0SSricharan R 	.clkr = {
872d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
873d9db07f0SSricharan R 			.name = "nss_port5_rx_div_clk_src",
874d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
875d9db07f0SSricharan R 					&nss_port5_rx_clk_src.clkr.hw },
876d9db07f0SSricharan R 			.num_parents = 1,
877d9db07f0SSricharan R 			.ops = &clk_regmap_div_ops,
878d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
879d9db07f0SSricharan R 		},
880d9db07f0SSricharan R 	},
881d9db07f0SSricharan R };
882d9db07f0SSricharan R 
883d9db07f0SSricharan R static struct clk_regmap_div nss_port5_tx_div_clk_src = {
884d9db07f0SSricharan R 	.reg = 0x68444,
885d9db07f0SSricharan R 	.shift = 0,
886d9db07f0SSricharan R 	.width = 4,
887d9db07f0SSricharan R 	.clkr = {
888d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
889d9db07f0SSricharan R 			.name = "nss_port5_tx_div_clk_src",
890d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
891d9db07f0SSricharan R 					&nss_port5_tx_clk_src.clkr.hw },
892d9db07f0SSricharan R 			.num_parents = 1,
893d9db07f0SSricharan R 			.ops = &clk_regmap_div_ops,
894d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
895d9db07f0SSricharan R 		},
896d9db07f0SSricharan R 	},
897d9db07f0SSricharan R };
898d9db07f0SSricharan R 
899d9db07f0SSricharan R static const struct freq_tbl ftbl_apss_axi_clk_src[] = {
900d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
901d9db07f0SSricharan R 	F(100000000, P_GPLL0_DIV2, 4, 0, 0),
902d9db07f0SSricharan R 	F(200000000, P_GPLL0, 4, 0, 0),
903d9db07f0SSricharan R 	F(308570000, P_GPLL6, 3.5, 0, 0),
904d9db07f0SSricharan R 	F(400000000, P_GPLL0, 2, 0, 0),
905d9db07f0SSricharan R 	F(533000000, P_GPLL0, 1.5, 0, 0),
906d9db07f0SSricharan R 	{ }
907d9db07f0SSricharan R };
908d9db07f0SSricharan R 
909d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_gpll0_gpll6_ubi32_gpll0_div2[] = {
910d9db07f0SSricharan R 	{ .fw_name = "xo" },
911d9db07f0SSricharan R 	{ .hw = &gpll0.clkr.hw },
912d9db07f0SSricharan R 	{ .hw = &gpll6.clkr.hw },
913d9db07f0SSricharan R 	{ .hw = &ubi32_pll.clkr.hw },
914d9db07f0SSricharan R 	{ .hw = &gpll0_out_main_div2.hw },
915d9db07f0SSricharan R };
916d9db07f0SSricharan R 
917d9db07f0SSricharan R static const struct parent_map
918d9db07f0SSricharan R gcc_xo_gpll0_gpll6_ubi32_gpll0_div2_map[] = {
919d9db07f0SSricharan R 	{ P_XO, 0 },
920d9db07f0SSricharan R 	{ P_GPLL0, 1 },
921d9db07f0SSricharan R 	{ P_GPLL6, 2 },
922d9db07f0SSricharan R 	{ P_UBI32_PLL, 3 },
923d9db07f0SSricharan R 	{ P_GPLL0_DIV2, 6 },
924d9db07f0SSricharan R };
925d9db07f0SSricharan R 
926d9db07f0SSricharan R static struct clk_rcg2 apss_axi_clk_src = {
927d9db07f0SSricharan R 	.cmd_rcgr = 0x38048,
928d9db07f0SSricharan R 	.freq_tbl = ftbl_apss_axi_clk_src,
929d9db07f0SSricharan R 	.hid_width = 5,
930d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll6_ubi32_gpll0_div2_map,
931d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
932d9db07f0SSricharan R 		.name = "apss_axi_clk_src",
933d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll6_ubi32_gpll0_div2,
934d9db07f0SSricharan R 		.num_parents = 5,
935d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
936d9db07f0SSricharan R 	},
937d9db07f0SSricharan R };
938d9db07f0SSricharan R 
939d9db07f0SSricharan R static const struct freq_tbl ftbl_nss_crypto_clk_src[] = {
940d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
941d9db07f0SSricharan R 	F(300000000, P_NSS_CRYPTO_PLL, 2, 0, 0),
942d9db07f0SSricharan R 	{ }
943d9db07f0SSricharan R };
944d9db07f0SSricharan R 
945d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_nss_crypto_pll_gpll0[] = {
946d9db07f0SSricharan R 	{ .fw_name = "xo" },
947d9db07f0SSricharan R 	{ .hw = &nss_crypto_pll.clkr.hw },
948d9db07f0SSricharan R 	{ .hw = &gpll0.clkr.hw },
949d9db07f0SSricharan R };
950d9db07f0SSricharan R 
951d9db07f0SSricharan R static const struct parent_map gcc_xo_nss_crypto_pll_gpll0_map[] = {
952d9db07f0SSricharan R 	{ P_XO, 0 },
953d9db07f0SSricharan R 	{ P_NSS_CRYPTO_PLL, 1 },
954d9db07f0SSricharan R 	{ P_GPLL0, 2 },
955d9db07f0SSricharan R };
956d9db07f0SSricharan R 
957d9db07f0SSricharan R static struct clk_rcg2 nss_crypto_clk_src = {
958d9db07f0SSricharan R 	.cmd_rcgr = 0x68144,
959d9db07f0SSricharan R 	.freq_tbl = ftbl_nss_crypto_clk_src,
960d9db07f0SSricharan R 	.mnd_width = 16,
961d9db07f0SSricharan R 	.hid_width = 5,
962d9db07f0SSricharan R 	.parent_map = gcc_xo_nss_crypto_pll_gpll0_map,
963d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
964d9db07f0SSricharan R 		.name = "nss_crypto_clk_src",
965d9db07f0SSricharan R 		.parent_data = gcc_xo_nss_crypto_pll_gpll0,
966d9db07f0SSricharan R 		.num_parents = 3,
967d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
968d9db07f0SSricharan R 	},
969d9db07f0SSricharan R };
970d9db07f0SSricharan R 
971d9db07f0SSricharan R static struct clk_regmap_div nss_port1_rx_div_clk_src = {
972d9db07f0SSricharan R 	.reg = 0x68400,
973d9db07f0SSricharan R 	.shift = 0,
974d9db07f0SSricharan R 	.width = 4,
975d9db07f0SSricharan R 	.clkr = {
976d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
977d9db07f0SSricharan R 			.name = "nss_port1_rx_div_clk_src",
978d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
979d9db07f0SSricharan R 				&nss_port1_rx_clk_src.clkr.hw },
980d9db07f0SSricharan R 			.num_parents = 1,
981d9db07f0SSricharan R 			.ops = &clk_regmap_div_ops,
982d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
983d9db07f0SSricharan R 		},
984d9db07f0SSricharan R 	},
985d9db07f0SSricharan R };
986d9db07f0SSricharan R 
987d9db07f0SSricharan R static struct clk_regmap_div nss_port1_tx_div_clk_src = {
988d9db07f0SSricharan R 	.reg = 0x68404,
989d9db07f0SSricharan R 	.shift = 0,
990d9db07f0SSricharan R 	.width = 4,
991d9db07f0SSricharan R 	.clkr = {
992d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
993d9db07f0SSricharan R 			.name = "nss_port1_tx_div_clk_src",
994d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
995d9db07f0SSricharan R 					&nss_port1_tx_clk_src.clkr.hw },
996d9db07f0SSricharan R 			.num_parents = 1,
997d9db07f0SSricharan R 			.ops = &clk_regmap_div_ops,
998d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
999d9db07f0SSricharan R 		},
1000d9db07f0SSricharan R 	},
1001d9db07f0SSricharan R };
1002d9db07f0SSricharan R 
1003d9db07f0SSricharan R static struct clk_regmap_div nss_port2_rx_div_clk_src = {
1004d9db07f0SSricharan R 	.reg = 0x68410,
1005d9db07f0SSricharan R 	.shift = 0,
1006d9db07f0SSricharan R 	.width = 4,
1007d9db07f0SSricharan R 	.clkr = {
1008d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
1009d9db07f0SSricharan R 			.name = "nss_port2_rx_div_clk_src",
1010d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
1011d9db07f0SSricharan R 					&nss_port2_rx_clk_src.clkr.hw },
1012d9db07f0SSricharan R 			.num_parents = 1,
1013d9db07f0SSricharan R 			.ops = &clk_regmap_div_ops,
1014d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
1015d9db07f0SSricharan R 		},
1016d9db07f0SSricharan R 	},
1017d9db07f0SSricharan R };
1018d9db07f0SSricharan R 
1019d9db07f0SSricharan R static struct clk_regmap_div nss_port2_tx_div_clk_src = {
1020d9db07f0SSricharan R 	.reg = 0x68414,
1021d9db07f0SSricharan R 	.shift = 0,
1022d9db07f0SSricharan R 	.width = 4,
1023d9db07f0SSricharan R 	.clkr = {
1024d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
1025d9db07f0SSricharan R 			.name = "nss_port2_tx_div_clk_src",
1026d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
1027d9db07f0SSricharan R 					&nss_port2_tx_clk_src.clkr.hw },
1028d9db07f0SSricharan R 			.num_parents = 1,
1029d9db07f0SSricharan R 			.ops = &clk_regmap_div_ops,
1030d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
1031d9db07f0SSricharan R 		},
1032d9db07f0SSricharan R 	},
1033d9db07f0SSricharan R };
1034d9db07f0SSricharan R 
1035d9db07f0SSricharan R static struct clk_regmap_div nss_port3_rx_div_clk_src = {
1036d9db07f0SSricharan R 	.reg = 0x68420,
1037d9db07f0SSricharan R 	.shift = 0,
1038d9db07f0SSricharan R 	.width = 4,
1039d9db07f0SSricharan R 	.clkr = {
1040d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
1041d9db07f0SSricharan R 			.name = "nss_port3_rx_div_clk_src",
1042d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
1043d9db07f0SSricharan R 					&nss_port3_rx_clk_src.clkr.hw },
1044d9db07f0SSricharan R 			.num_parents = 1,
1045d9db07f0SSricharan R 			.ops = &clk_regmap_div_ops,
1046d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
1047d9db07f0SSricharan R 		},
1048d9db07f0SSricharan R 	},
1049d9db07f0SSricharan R };
1050d9db07f0SSricharan R 
1051d9db07f0SSricharan R static struct clk_regmap_div nss_port3_tx_div_clk_src = {
1052d9db07f0SSricharan R 	.reg = 0x68424,
1053d9db07f0SSricharan R 	.shift = 0,
1054d9db07f0SSricharan R 	.width = 4,
1055d9db07f0SSricharan R 	.clkr = {
1056d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
1057d9db07f0SSricharan R 			.name = "nss_port3_tx_div_clk_src",
1058d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
1059d9db07f0SSricharan R 					&nss_port3_tx_clk_src.clkr.hw },
1060d9db07f0SSricharan R 			.num_parents = 1,
1061d9db07f0SSricharan R 			.ops = &clk_regmap_div_ops,
1062d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
1063d9db07f0SSricharan R 		},
1064d9db07f0SSricharan R 	},
1065d9db07f0SSricharan R };
1066d9db07f0SSricharan R 
1067d9db07f0SSricharan R static struct clk_regmap_div nss_port4_rx_div_clk_src = {
1068d9db07f0SSricharan R 	.reg = 0x68430,
1069d9db07f0SSricharan R 	.shift = 0,
1070d9db07f0SSricharan R 	.width = 4,
1071d9db07f0SSricharan R 	.clkr = {
1072d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
1073d9db07f0SSricharan R 			.name = "nss_port4_rx_div_clk_src",
1074d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
1075d9db07f0SSricharan R 					&nss_port4_rx_clk_src.clkr.hw },
1076d9db07f0SSricharan R 			.num_parents = 1,
1077d9db07f0SSricharan R 			.ops = &clk_regmap_div_ops,
1078d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
1079d9db07f0SSricharan R 		},
1080d9db07f0SSricharan R 	},
1081d9db07f0SSricharan R };
1082d9db07f0SSricharan R 
1083d9db07f0SSricharan R static struct clk_regmap_div nss_port4_tx_div_clk_src = {
1084d9db07f0SSricharan R 	.reg = 0x68434,
1085d9db07f0SSricharan R 	.shift = 0,
1086d9db07f0SSricharan R 	.width = 4,
1087d9db07f0SSricharan R 	.clkr = {
1088d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
1089d9db07f0SSricharan R 			.name = "nss_port4_tx_div_clk_src",
1090d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
1091d9db07f0SSricharan R 					&nss_port4_tx_clk_src.clkr.hw },
1092d9db07f0SSricharan R 			.num_parents = 1,
1093d9db07f0SSricharan R 			.ops = &clk_regmap_div_ops,
1094d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
1095d9db07f0SSricharan R 		},
1096d9db07f0SSricharan R 	},
1097d9db07f0SSricharan R };
1098d9db07f0SSricharan R 
1099d9db07f0SSricharan R static const struct freq_tbl ftbl_nss_ubi_clk_src[] = {
1100d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
1101d9db07f0SSricharan R 	F(149760000, P_UBI32_PLL, 10, 0, 0),
1102d9db07f0SSricharan R 	F(187200000, P_UBI32_PLL, 8, 0, 0),
1103d9db07f0SSricharan R 	F(249600000, P_UBI32_PLL, 6, 0, 0),
1104d9db07f0SSricharan R 	F(374400000, P_UBI32_PLL, 4, 0, 0),
1105d9db07f0SSricharan R 	F(748800000, P_UBI32_PLL, 2, 0, 0),
1106d9db07f0SSricharan R 	F(1497600000, P_UBI32_PLL, 1, 0, 0),
1107d9db07f0SSricharan R 	{ }
1108d9db07f0SSricharan R };
1109d9db07f0SSricharan R 
1110d9db07f0SSricharan R static const struct clk_parent_data
1111d9db07f0SSricharan R 			gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6[] = {
1112d9db07f0SSricharan R 	{ .fw_name = "xo" },
1113d9db07f0SSricharan R 	{ .hw = &ubi32_pll.clkr.hw },
1114d9db07f0SSricharan R 	{ .hw = &gpll0.clkr.hw },
1115d9db07f0SSricharan R 	{ .hw = &gpll2.clkr.hw },
1116d9db07f0SSricharan R 	{ .hw = &gpll4.clkr.hw },
1117d9db07f0SSricharan R 	{ .hw = &gpll6.clkr.hw },
1118d9db07f0SSricharan R };
1119d9db07f0SSricharan R 
1120d9db07f0SSricharan R static const struct parent_map gcc_xo_ubi32_gpll0_gpll2_gpll4_gpll6_map[] = {
1121d9db07f0SSricharan R 	{ P_XO, 0 },
1122d9db07f0SSricharan R 	{ P_UBI32_PLL, 1 },
1123d9db07f0SSricharan R 	{ P_GPLL0, 2 },
1124d9db07f0SSricharan R 	{ P_GPLL2, 3 },
1125d9db07f0SSricharan R 	{ P_GPLL4, 4 },
1126d9db07f0SSricharan R 	{ P_GPLL6, 5 },
1127d9db07f0SSricharan R };
1128d9db07f0SSricharan R 
1129d9db07f0SSricharan R static struct clk_rcg2 nss_ubi0_clk_src = {
1130d9db07f0SSricharan R 	.cmd_rcgr = 0x68104,
1131d9db07f0SSricharan R 	.freq_tbl = ftbl_nss_ubi_clk_src,
1132d9db07f0SSricharan R 	.hid_width = 5,
1133d9db07f0SSricharan R 	.parent_map = gcc_xo_ubi32_gpll0_gpll2_gpll4_gpll6_map,
1134d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1135d9db07f0SSricharan R 		.name = "nss_ubi0_clk_src",
1136d9db07f0SSricharan R 		.parent_data = gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6,
1137d9db07f0SSricharan R 		.num_parents = 6,
1138d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1139d9db07f0SSricharan R 		.flags = CLK_SET_RATE_PARENT,
1140d9db07f0SSricharan R 	},
1141d9db07f0SSricharan R };
1142d9db07f0SSricharan R 
1143d9db07f0SSricharan R static const struct freq_tbl ftbl_adss_pwm_clk_src[] = {
1144d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
1145d9db07f0SSricharan R 	F(100000000, P_GPLL0, 8, 0, 0),
1146d9db07f0SSricharan R 	{ }
1147d9db07f0SSricharan R };
1148d9db07f0SSricharan R 
1149d9db07f0SSricharan R static struct clk_rcg2 adss_pwm_clk_src = {
1150d9db07f0SSricharan R 	.cmd_rcgr = 0x1c008,
1151d9db07f0SSricharan R 	.freq_tbl = ftbl_adss_pwm_clk_src,
1152d9db07f0SSricharan R 	.hid_width = 5,
1153d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_map,
1154d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1155d9db07f0SSricharan R 		.name = "adss_pwm_clk_src",
1156d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0,
1157d9db07f0SSricharan R 		.num_parents = 2,
1158d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1159d9db07f0SSricharan R 	},
1160d9db07f0SSricharan R };
1161d9db07f0SSricharan R 
1162d9db07f0SSricharan R static const struct freq_tbl ftbl_blsp1_qup_i2c_apps_clk_src[] = {
1163d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
1164d9db07f0SSricharan R 	F(25000000, P_GPLL0_DIV2, 16, 0, 0),
1165d9db07f0SSricharan R 	F(50000000, P_GPLL0, 16, 0, 0),
1166d9db07f0SSricharan R 	{ }
1167d9db07f0SSricharan R };
1168d9db07f0SSricharan R 
1169d9db07f0SSricharan R static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = {
1170d9db07f0SSricharan R 	.cmd_rcgr = 0x0200c,
1171d9db07f0SSricharan R 	.freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
1172d9db07f0SSricharan R 	.hid_width = 5,
1173d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1174d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1175d9db07f0SSricharan R 		.name = "blsp1_qup1_i2c_apps_clk_src",
1176d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1177d9db07f0SSricharan R 		.num_parents = 3,
1178d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1179d9db07f0SSricharan R 	},
1180d9db07f0SSricharan R };
1181d9db07f0SSricharan R 
1182d9db07f0SSricharan R static const struct freq_tbl ftbl_blsp1_qup_spi_apps_clk_src[] = {
1183d9db07f0SSricharan R 	F(960000, P_XO, 10, 2, 5),
1184d9db07f0SSricharan R 	F(4800000, P_XO, 5, 0, 0),
1185d9db07f0SSricharan R 	F(9600000, P_XO, 2, 4, 5),
1186d9db07f0SSricharan R 	F(12500000, P_GPLL0_DIV2, 16, 1, 2),
1187d9db07f0SSricharan R 	F(16000000, P_GPLL0, 10, 1, 5),
1188d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
1189d9db07f0SSricharan R 	F(25000000, P_GPLL0, 16, 1, 2),
1190d9db07f0SSricharan R 	F(50000000, P_GPLL0, 16, 0, 0),
1191d9db07f0SSricharan R 	{ }
1192d9db07f0SSricharan R };
1193d9db07f0SSricharan R 
1194d9db07f0SSricharan R static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = {
1195d9db07f0SSricharan R 	.cmd_rcgr = 0x02024,
1196d9db07f0SSricharan R 	.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
1197d9db07f0SSricharan R 	.mnd_width = 8,
1198d9db07f0SSricharan R 	.hid_width = 5,
1199d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1200d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1201d9db07f0SSricharan R 		.name = "blsp1_qup1_spi_apps_clk_src",
1202d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1203d9db07f0SSricharan R 		.num_parents = 3,
1204d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1205d9db07f0SSricharan R 	},
1206d9db07f0SSricharan R };
1207d9db07f0SSricharan R 
1208d9db07f0SSricharan R static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = {
1209d9db07f0SSricharan R 	.cmd_rcgr = 0x03000,
1210d9db07f0SSricharan R 	.freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
1211d9db07f0SSricharan R 	.hid_width = 5,
1212d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1213d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1214d9db07f0SSricharan R 		.name = "blsp1_qup2_i2c_apps_clk_src",
1215d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1216d9db07f0SSricharan R 		.num_parents = 3,
1217d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1218d9db07f0SSricharan R 	},
1219d9db07f0SSricharan R };
1220d9db07f0SSricharan R 
1221d9db07f0SSricharan R static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = {
1222d9db07f0SSricharan R 	.cmd_rcgr = 0x03014,
1223d9db07f0SSricharan R 	.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
1224d9db07f0SSricharan R 	.mnd_width = 8,
1225d9db07f0SSricharan R 	.hid_width = 5,
1226d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1227d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1228d9db07f0SSricharan R 		.name = "blsp1_qup2_spi_apps_clk_src",
1229d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1230d9db07f0SSricharan R 		.num_parents = 3,
1231d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1232d9db07f0SSricharan R 	},
1233d9db07f0SSricharan R };
1234d9db07f0SSricharan R 
1235d9db07f0SSricharan R static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = {
1236d9db07f0SSricharan R 	.cmd_rcgr = 0x04000,
1237d9db07f0SSricharan R 	.freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
1238d9db07f0SSricharan R 	.hid_width = 5,
1239d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1240d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1241d9db07f0SSricharan R 		.name = "blsp1_qup3_i2c_apps_clk_src",
1242d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1243d9db07f0SSricharan R 		.num_parents = 3,
1244d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1245d9db07f0SSricharan R 	},
1246d9db07f0SSricharan R };
1247d9db07f0SSricharan R 
1248d9db07f0SSricharan R static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = {
1249d9db07f0SSricharan R 	.cmd_rcgr = 0x04014,
1250d9db07f0SSricharan R 	.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
1251d9db07f0SSricharan R 	.mnd_width = 8,
1252d9db07f0SSricharan R 	.hid_width = 5,
1253d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1254d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1255d9db07f0SSricharan R 		.name = "blsp1_qup3_spi_apps_clk_src",
1256d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1257d9db07f0SSricharan R 		.num_parents = 3,
1258d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1259d9db07f0SSricharan R 	},
1260d9db07f0SSricharan R };
1261d9db07f0SSricharan R 
1262d9db07f0SSricharan R static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = {
1263d9db07f0SSricharan R 	.cmd_rcgr = 0x05000,
1264d9db07f0SSricharan R 	.freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
1265d9db07f0SSricharan R 	.hid_width = 5,
1266d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1267d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1268d9db07f0SSricharan R 		.name = "blsp1_qup4_i2c_apps_clk_src",
1269d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1270d9db07f0SSricharan R 		.num_parents = 3,
1271d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1272d9db07f0SSricharan R 	},
1273d9db07f0SSricharan R };
1274d9db07f0SSricharan R 
1275d9db07f0SSricharan R static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = {
1276d9db07f0SSricharan R 	.cmd_rcgr = 0x05014,
1277d9db07f0SSricharan R 	.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
1278d9db07f0SSricharan R 	.mnd_width = 8,
1279d9db07f0SSricharan R 	.hid_width = 5,
1280d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1281d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1282d9db07f0SSricharan R 		.name = "blsp1_qup4_spi_apps_clk_src",
1283d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1284d9db07f0SSricharan R 		.num_parents = 3,
1285d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1286d9db07f0SSricharan R 	},
1287d9db07f0SSricharan R };
1288d9db07f0SSricharan R 
1289d9db07f0SSricharan R static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = {
1290d9db07f0SSricharan R 	.cmd_rcgr = 0x06000,
1291d9db07f0SSricharan R 	.freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
1292d9db07f0SSricharan R 	.hid_width = 5,
1293d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1294d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1295d9db07f0SSricharan R 		.name = "blsp1_qup5_i2c_apps_clk_src",
1296d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1297d9db07f0SSricharan R 		.num_parents = 3,
1298d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1299d9db07f0SSricharan R 	},
1300d9db07f0SSricharan R };
1301d9db07f0SSricharan R 
1302d9db07f0SSricharan R static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = {
1303d9db07f0SSricharan R 	.cmd_rcgr = 0x06014,
1304d9db07f0SSricharan R 	.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
1305d9db07f0SSricharan R 	.mnd_width = 8,
1306d9db07f0SSricharan R 	.hid_width = 5,
1307d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1308d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1309d9db07f0SSricharan R 		.name = "blsp1_qup5_spi_apps_clk_src",
1310d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1311d9db07f0SSricharan R 		.num_parents = 3,
1312d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1313d9db07f0SSricharan R 	},
1314d9db07f0SSricharan R };
1315d9db07f0SSricharan R 
1316d9db07f0SSricharan R static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = {
1317d9db07f0SSricharan R 	.cmd_rcgr = 0x07000,
1318d9db07f0SSricharan R 	.freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
1319d9db07f0SSricharan R 	.hid_width = 5,
1320d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1321d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1322d9db07f0SSricharan R 		.name = "blsp1_qup6_i2c_apps_clk_src",
1323d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1324d9db07f0SSricharan R 		.num_parents = 3,
1325d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1326d9db07f0SSricharan R 	},
1327d9db07f0SSricharan R };
1328d9db07f0SSricharan R 
1329d9db07f0SSricharan R static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = {
1330d9db07f0SSricharan R 	.cmd_rcgr = 0x07014,
1331d9db07f0SSricharan R 	.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
1332d9db07f0SSricharan R 	.mnd_width = 8,
1333d9db07f0SSricharan R 	.hid_width = 5,
1334d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1335d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1336d9db07f0SSricharan R 		.name = "blsp1_qup6_spi_apps_clk_src",
1337d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1338d9db07f0SSricharan R 		.num_parents = 3,
1339d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1340d9db07f0SSricharan R 	},
1341d9db07f0SSricharan R };
1342d9db07f0SSricharan R 
1343d9db07f0SSricharan R static const struct freq_tbl ftbl_blsp1_uart_apps_clk_src[] = {
1344d9db07f0SSricharan R 	F(3686400, P_GPLL0_DIV2, 1, 144, 15625),
1345d9db07f0SSricharan R 	F(7372800, P_GPLL0_DIV2, 1, 288, 15625),
1346d9db07f0SSricharan R 	F(14745600, P_GPLL0_DIV2, 1, 576, 15625),
1347d9db07f0SSricharan R 	F(16000000, P_GPLL0_DIV2, 5, 1, 5),
1348d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
1349d9db07f0SSricharan R 	F(24000000, P_GPLL0, 1, 3, 100),
1350d9db07f0SSricharan R 	F(25000000, P_GPLL0, 16, 1, 2),
1351d9db07f0SSricharan R 	F(32000000, P_GPLL0, 1, 1, 25),
1352d9db07f0SSricharan R 	F(40000000, P_GPLL0, 1, 1, 20),
1353d9db07f0SSricharan R 	F(46400000, P_GPLL0, 1, 29, 500),
1354d9db07f0SSricharan R 	F(48000000, P_GPLL0, 1, 3, 50),
1355d9db07f0SSricharan R 	F(51200000, P_GPLL0, 1, 8, 125),
1356d9db07f0SSricharan R 	F(56000000, P_GPLL0, 1, 7, 100),
1357d9db07f0SSricharan R 	F(58982400, P_GPLL0, 1, 1152, 15625),
1358d9db07f0SSricharan R 	F(60000000, P_GPLL0, 1, 3, 40),
1359d9db07f0SSricharan R 	F(64000000, P_GPLL0, 12.5, 1, 1),
1360d9db07f0SSricharan R 	{ }
1361d9db07f0SSricharan R };
1362d9db07f0SSricharan R 
1363d9db07f0SSricharan R static struct clk_rcg2 blsp1_uart1_apps_clk_src = {
1364d9db07f0SSricharan R 	.cmd_rcgr = 0x02044,
1365d9db07f0SSricharan R 	.freq_tbl = ftbl_blsp1_uart_apps_clk_src,
1366d9db07f0SSricharan R 	.mnd_width = 16,
1367d9db07f0SSricharan R 	.hid_width = 5,
1368d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1369d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1370d9db07f0SSricharan R 		.name = "blsp1_uart1_apps_clk_src",
1371d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1372d9db07f0SSricharan R 		.num_parents = 3,
1373d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1374d9db07f0SSricharan R 	},
1375d9db07f0SSricharan R };
1376d9db07f0SSricharan R 
1377d9db07f0SSricharan R static struct clk_rcg2 blsp1_uart2_apps_clk_src = {
1378d9db07f0SSricharan R 	.cmd_rcgr = 0x03034,
1379d9db07f0SSricharan R 	.freq_tbl = ftbl_blsp1_uart_apps_clk_src,
1380d9db07f0SSricharan R 	.mnd_width = 16,
1381d9db07f0SSricharan R 	.hid_width = 5,
1382d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1383d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1384d9db07f0SSricharan R 		.name = "blsp1_uart2_apps_clk_src",
1385d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1386d9db07f0SSricharan R 		.num_parents = 3,
1387d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1388d9db07f0SSricharan R 	},
1389d9db07f0SSricharan R };
1390d9db07f0SSricharan R 
1391d9db07f0SSricharan R static struct clk_rcg2 blsp1_uart3_apps_clk_src = {
1392d9db07f0SSricharan R 	.cmd_rcgr = 0x04034,
1393d9db07f0SSricharan R 	.freq_tbl = ftbl_blsp1_uart_apps_clk_src,
1394d9db07f0SSricharan R 	.mnd_width = 16,
1395d9db07f0SSricharan R 	.hid_width = 5,
1396d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1397d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1398d9db07f0SSricharan R 		.name = "blsp1_uart3_apps_clk_src",
1399d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1400d9db07f0SSricharan R 		.num_parents = 3,
1401d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1402d9db07f0SSricharan R 	},
1403d9db07f0SSricharan R };
1404d9db07f0SSricharan R 
1405d9db07f0SSricharan R static struct clk_rcg2 blsp1_uart4_apps_clk_src = {
1406d9db07f0SSricharan R 	.cmd_rcgr = 0x05034,
1407d9db07f0SSricharan R 	.freq_tbl = ftbl_blsp1_uart_apps_clk_src,
1408d9db07f0SSricharan R 	.mnd_width = 16,
1409d9db07f0SSricharan R 	.hid_width = 5,
1410d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1411d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1412d9db07f0SSricharan R 		.name = "blsp1_uart4_apps_clk_src",
1413d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1414d9db07f0SSricharan R 		.num_parents = 3,
1415d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1416d9db07f0SSricharan R 	},
1417d9db07f0SSricharan R };
1418d9db07f0SSricharan R 
1419d9db07f0SSricharan R static struct clk_rcg2 blsp1_uart5_apps_clk_src = {
1420d9db07f0SSricharan R 	.cmd_rcgr = 0x06034,
1421d9db07f0SSricharan R 	.freq_tbl = ftbl_blsp1_uart_apps_clk_src,
1422d9db07f0SSricharan R 	.mnd_width = 16,
1423d9db07f0SSricharan R 	.hid_width = 5,
1424d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1425d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1426d9db07f0SSricharan R 		.name = "blsp1_uart5_apps_clk_src",
1427d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1428d9db07f0SSricharan R 		.num_parents = 3,
1429d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1430d9db07f0SSricharan R 	},
1431d9db07f0SSricharan R };
1432d9db07f0SSricharan R 
1433d9db07f0SSricharan R static struct clk_rcg2 blsp1_uart6_apps_clk_src = {
1434d9db07f0SSricharan R 	.cmd_rcgr = 0x07034,
1435d9db07f0SSricharan R 	.freq_tbl = ftbl_blsp1_uart_apps_clk_src,
1436d9db07f0SSricharan R 	.mnd_width = 16,
1437d9db07f0SSricharan R 	.hid_width = 5,
1438d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1439d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1440d9db07f0SSricharan R 		.name = "blsp1_uart6_apps_clk_src",
1441d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1442d9db07f0SSricharan R 		.num_parents = 3,
1443d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1444d9db07f0SSricharan R 	},
1445d9db07f0SSricharan R };
1446d9db07f0SSricharan R 
1447d9db07f0SSricharan R static const struct freq_tbl ftbl_crypto_clk_src[] = {
1448d9db07f0SSricharan R 	F(40000000, P_GPLL0_DIV2, 10, 0, 0),
1449d9db07f0SSricharan R 	F(80000000, P_GPLL0, 10, 0, 0),
1450d9db07f0SSricharan R 	F(100000000, P_GPLL0, 8, 0, 0),
1451d9db07f0SSricharan R 	F(160000000, P_GPLL0, 5, 0, 0),
1452d9db07f0SSricharan R 	{ }
1453d9db07f0SSricharan R };
1454d9db07f0SSricharan R 
1455d9db07f0SSricharan R static struct clk_rcg2 crypto_clk_src = {
1456d9db07f0SSricharan R 	.cmd_rcgr = 0x16004,
1457d9db07f0SSricharan R 	.freq_tbl = ftbl_crypto_clk_src,
1458d9db07f0SSricharan R 	.hid_width = 5,
1459d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1460d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1461d9db07f0SSricharan R 		.name = "crypto_clk_src",
1462d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1463d9db07f0SSricharan R 		.num_parents = 3,
1464d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1465d9db07f0SSricharan R 	},
1466d9db07f0SSricharan R };
1467d9db07f0SSricharan R 
1468d9db07f0SSricharan R static const struct freq_tbl ftbl_gp_clk_src[] = {
1469d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
1470d9db07f0SSricharan R 	F(50000000, P_GPLL0_DIV2, 8, 0, 0),
1471d9db07f0SSricharan R 	F(100000000, P_GPLL0, 8, 0, 0),
1472d9db07f0SSricharan R 	F(200000000, P_GPLL0, 4, 0, 0),
1473d9db07f0SSricharan R 	F(266666666, P_GPLL0, 3, 0, 0),
1474d9db07f0SSricharan R 	{ }
1475d9db07f0SSricharan R };
1476d9db07f0SSricharan R 
1477d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_gpll0_gpll6_gpll0_sleep_clk[] = {
1478d9db07f0SSricharan R 	{ .fw_name = "xo" },
1479d9db07f0SSricharan R 	{ .hw = &gpll0.clkr.hw },
1480d9db07f0SSricharan R 	{ .hw = &gpll6.clkr.hw },
1481d9db07f0SSricharan R 	{ .hw = &gpll0_out_main_div2.hw },
1482d9db07f0SSricharan R 	{ .fw_name = "sleep_clk" },
1483d9db07f0SSricharan R };
1484d9db07f0SSricharan R 
1485d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map[] = {
1486d9db07f0SSricharan R 	{ P_XO, 0 },
1487d9db07f0SSricharan R 	{ P_GPLL0, 1 },
1488d9db07f0SSricharan R 	{ P_GPLL6, 2 },
1489d9db07f0SSricharan R 	{ P_GPLL0_DIV2, 4 },
1490d9db07f0SSricharan R 	{ P_SLEEP_CLK, 6 },
1491d9db07f0SSricharan R };
1492d9db07f0SSricharan R 
1493d9db07f0SSricharan R static struct clk_rcg2 gp1_clk_src = {
1494d9db07f0SSricharan R 	.cmd_rcgr = 0x08004,
1495d9db07f0SSricharan R 	.freq_tbl = ftbl_gp_clk_src,
1496d9db07f0SSricharan R 	.mnd_width = 8,
1497d9db07f0SSricharan R 	.hid_width = 5,
1498d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map,
1499d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1500d9db07f0SSricharan R 		.name = "gp1_clk_src",
1501d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll6_gpll0_sleep_clk,
1502d9db07f0SSricharan R 		.num_parents = 5,
1503d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1504d9db07f0SSricharan R 	},
1505d9db07f0SSricharan R };
1506d9db07f0SSricharan R 
1507d9db07f0SSricharan R static struct clk_rcg2 gp2_clk_src = {
1508d9db07f0SSricharan R 	.cmd_rcgr = 0x09004,
1509d9db07f0SSricharan R 	.freq_tbl = ftbl_gp_clk_src,
1510d9db07f0SSricharan R 	.mnd_width = 8,
1511d9db07f0SSricharan R 	.hid_width = 5,
1512d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map,
1513d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1514d9db07f0SSricharan R 		.name = "gp2_clk_src",
1515d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll6_gpll0_sleep_clk,
1516d9db07f0SSricharan R 		.num_parents = 5,
1517d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1518d9db07f0SSricharan R 	},
1519d9db07f0SSricharan R };
1520d9db07f0SSricharan R 
1521d9db07f0SSricharan R static struct clk_rcg2 gp3_clk_src = {
1522d9db07f0SSricharan R 	.cmd_rcgr = 0x0a004,
1523d9db07f0SSricharan R 	.freq_tbl = ftbl_gp_clk_src,
1524d9db07f0SSricharan R 	.mnd_width = 8,
1525d9db07f0SSricharan R 	.hid_width = 5,
1526d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map,
1527d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1528d9db07f0SSricharan R 		.name = "gp3_clk_src",
1529d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll6_gpll0_sleep_clk,
1530d9db07f0SSricharan R 		.num_parents = 5,
1531d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1532d9db07f0SSricharan R 	},
1533d9db07f0SSricharan R };
1534d9db07f0SSricharan R 
1535d9db07f0SSricharan R static struct clk_fixed_factor nss_ppe_cdiv_clk_src = {
1536d9db07f0SSricharan R 	.mult = 1,
1537d9db07f0SSricharan R 	.div = 4,
1538d9db07f0SSricharan R 	.hw.init = &(struct clk_init_data){
1539d9db07f0SSricharan R 		.name = "nss_ppe_cdiv_clk_src",
1540d9db07f0SSricharan R 		.parent_hws = (const struct clk_hw *[]){
1541d9db07f0SSricharan R 				&nss_ppe_clk_src.clkr.hw },
1542d9db07f0SSricharan R 		.num_parents = 1,
1543d9db07f0SSricharan R 		.ops = &clk_fixed_factor_ops,
1544d9db07f0SSricharan R 		.flags = CLK_SET_RATE_PARENT,
1545d9db07f0SSricharan R 	},
1546d9db07f0SSricharan R };
1547d9db07f0SSricharan R 
1548d9db07f0SSricharan R static struct clk_regmap_div nss_ubi0_div_clk_src = {
1549d9db07f0SSricharan R 	.reg = 0x68118,
1550d9db07f0SSricharan R 	.shift = 0,
1551d9db07f0SSricharan R 	.width = 4,
1552d9db07f0SSricharan R 	.clkr = {
1553d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
1554d9db07f0SSricharan R 			.name = "nss_ubi0_div_clk_src",
1555d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
1556d9db07f0SSricharan R 				&nss_ubi0_clk_src.clkr.hw },
1557d9db07f0SSricharan R 			.num_parents = 1,
1558d9db07f0SSricharan R 			.ops = &clk_regmap_div_ro_ops,
1559d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
1560d9db07f0SSricharan R 		},
1561d9db07f0SSricharan R 	},
1562d9db07f0SSricharan R };
1563d9db07f0SSricharan R 
1564d9db07f0SSricharan R static const struct freq_tbl ftbl_pcie_aux_clk_src[] = {
1565d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
1566d9db07f0SSricharan R };
1567d9db07f0SSricharan R 
1568d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_gpll0_core_pi_sleep_clk[] = {
1569d9db07f0SSricharan R 	{ .fw_name = "xo" },
1570d9db07f0SSricharan R 	{ .hw = &gpll0.clkr.hw },
1571d9db07f0SSricharan R 	{ .fw_name = "sleep_clk" },
1572d9db07f0SSricharan R };
1573d9db07f0SSricharan R 
1574d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll0_core_pi_sleep_clk_map[] = {
1575d9db07f0SSricharan R 	{ P_XO, 0 },
1576d9db07f0SSricharan R 	{ P_GPLL0, 2 },
1577d9db07f0SSricharan R 	{ P_PI_SLEEP, 6 },
1578d9db07f0SSricharan R };
1579d9db07f0SSricharan R 
1580d9db07f0SSricharan R static struct clk_rcg2 pcie0_aux_clk_src = {
1581d9db07f0SSricharan R 	.cmd_rcgr = 0x75024,
1582d9db07f0SSricharan R 	.freq_tbl = ftbl_pcie_aux_clk_src,
1583d9db07f0SSricharan R 	.mnd_width = 16,
1584d9db07f0SSricharan R 	.hid_width = 5,
1585d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_core_pi_sleep_clk_map,
1586d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1587d9db07f0SSricharan R 		.name = "pcie0_aux_clk_src",
1588d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_core_pi_sleep_clk,
1589d9db07f0SSricharan R 		.num_parents = 3,
1590d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1591d9db07f0SSricharan R 	},
1592d9db07f0SSricharan R };
1593d9db07f0SSricharan R 
1594d9db07f0SSricharan R static const struct clk_parent_data gcc_pcie20_phy0_pipe_clk_xo[] = {
1595d9db07f0SSricharan R 	{ .fw_name = "pcie20_phy0_pipe_clk" },
1596d9db07f0SSricharan R 	{ .fw_name = "xo" },
1597d9db07f0SSricharan R };
1598d9db07f0SSricharan R 
1599d9db07f0SSricharan R static const struct parent_map gcc_pcie20_phy0_pipe_clk_xo_map[] = {
1600d9db07f0SSricharan R 	{ P_PCIE20_PHY0_PIPE, 0 },
1601d9db07f0SSricharan R 	{ P_XO, 2 },
1602d9db07f0SSricharan R };
1603d9db07f0SSricharan R 
1604d9db07f0SSricharan R static struct clk_regmap_mux pcie0_pipe_clk_src = {
1605d9db07f0SSricharan R 	.reg = 0x7501c,
1606d9db07f0SSricharan R 	.shift = 8,
1607d9db07f0SSricharan R 	.width = 2,
1608d9db07f0SSricharan R 	.parent_map = gcc_pcie20_phy0_pipe_clk_xo_map,
1609d9db07f0SSricharan R 	.clkr = {
1610d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
1611d9db07f0SSricharan R 			.name = "pcie0_pipe_clk_src",
1612d9db07f0SSricharan R 			.parent_data = gcc_pcie20_phy0_pipe_clk_xo,
1613d9db07f0SSricharan R 			.num_parents = 2,
1614d9db07f0SSricharan R 			.ops = &clk_regmap_mux_closest_ops,
1615d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
1616d9db07f0SSricharan R 		},
1617d9db07f0SSricharan R 	},
1618d9db07f0SSricharan R };
1619d9db07f0SSricharan R 
1620d9db07f0SSricharan R static const struct freq_tbl ftbl_sdcc_apps_clk_src[] = {
1621d9db07f0SSricharan R 	F(144000, P_XO, 16, 12, 125),
1622d9db07f0SSricharan R 	F(400000, P_XO, 12, 1, 5),
1623d9db07f0SSricharan R 	F(24000000, P_GPLL2, 12, 1, 4),
1624d9db07f0SSricharan R 	F(48000000, P_GPLL2, 12, 1, 2),
1625d9db07f0SSricharan R 	F(96000000, P_GPLL2, 12, 0, 0),
1626d9db07f0SSricharan R 	F(177777778, P_GPLL0, 4.5, 0, 0),
1627d9db07f0SSricharan R 	F(192000000, P_GPLL2, 6, 0, 0),
1628d9db07f0SSricharan R 	F(384000000, P_GPLL2, 3, 0, 0),
1629d9db07f0SSricharan R 	{ }
1630d9db07f0SSricharan R };
1631d9db07f0SSricharan R 
1632d9db07f0SSricharan R static const struct clk_parent_data
1633d9db07f0SSricharan R 			gcc_xo_gpll0_gpll2_gpll0_out_main_div2[] = {
1634d9db07f0SSricharan R 	{ .fw_name = "xo" },
1635d9db07f0SSricharan R 	{ .hw = &gpll0.clkr.hw },
1636d9db07f0SSricharan R 	{ .hw = &gpll2.clkr.hw },
1637d9db07f0SSricharan R 	{ .hw = &gpll0_out_main_div2.hw },
1638d9db07f0SSricharan R };
1639d9db07f0SSricharan R 
1640d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map[] = {
1641d9db07f0SSricharan R 	{ P_XO, 0 },
1642d9db07f0SSricharan R 	{ P_GPLL0, 1 },
1643d9db07f0SSricharan R 	{ P_GPLL2, 2 },
1644d9db07f0SSricharan R 	{ P_GPLL0_DIV2, 4 },
1645d9db07f0SSricharan R };
1646d9db07f0SSricharan R 
1647d9db07f0SSricharan R static struct clk_rcg2 sdcc1_apps_clk_src = {
1648d9db07f0SSricharan R 	.cmd_rcgr = 0x42004,
1649d9db07f0SSricharan R 	.freq_tbl = ftbl_sdcc_apps_clk_src,
1650d9db07f0SSricharan R 	.mnd_width = 8,
1651d9db07f0SSricharan R 	.hid_width = 5,
1652d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map,
1653d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1654d9db07f0SSricharan R 		.name = "sdcc1_apps_clk_src",
1655d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll2_gpll0_out_main_div2,
1656d9db07f0SSricharan R 		.num_parents = 4,
1657*56e5ae01SMantas Pucka 		.ops = &clk_rcg2_floor_ops,
1658d9db07f0SSricharan R 	},
1659d9db07f0SSricharan R };
1660d9db07f0SSricharan R 
1661d9db07f0SSricharan R static const struct freq_tbl ftbl_usb_aux_clk_src[] = {
1662d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
1663d9db07f0SSricharan R 	{ }
1664d9db07f0SSricharan R };
1665d9db07f0SSricharan R 
1666d9db07f0SSricharan R static struct clk_rcg2 usb0_aux_clk_src = {
1667d9db07f0SSricharan R 	.cmd_rcgr = 0x3e05c,
1668d9db07f0SSricharan R 	.freq_tbl = ftbl_usb_aux_clk_src,
1669d9db07f0SSricharan R 	.mnd_width = 16,
1670d9db07f0SSricharan R 	.hid_width = 5,
1671d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_core_pi_sleep_clk_map,
1672d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1673d9db07f0SSricharan R 		.name = "usb0_aux_clk_src",
1674d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_core_pi_sleep_clk,
1675d9db07f0SSricharan R 		.num_parents = 3,
1676d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1677d9db07f0SSricharan R 	},
1678d9db07f0SSricharan R };
1679d9db07f0SSricharan R 
1680d9db07f0SSricharan R static const struct freq_tbl ftbl_usb_mock_utmi_clk_src[] = {
1681d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
1682d9db07f0SSricharan R 	F(60000000, P_GPLL6, 6, 1, 3),
1683d9db07f0SSricharan R 	{ }
1684d9db07f0SSricharan R };
1685d9db07f0SSricharan R 
1686d9db07f0SSricharan R static const struct clk_parent_data
1687d9db07f0SSricharan R 			gcc_xo_gpll6_gpll0_gpll0_out_main_div2[] = {
1688d9db07f0SSricharan R 	{ .fw_name = "xo" },
1689d9db07f0SSricharan R 	{ .hw = &gpll6.clkr.hw },
1690d9db07f0SSricharan R 	{ .hw = &gpll0.clkr.hw },
1691d9db07f0SSricharan R 	{ .hw = &gpll0_out_main_div2.hw },
1692d9db07f0SSricharan R };
1693d9db07f0SSricharan R 
1694d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map[] = {
1695d9db07f0SSricharan R 	{ P_XO, 0 },
1696d9db07f0SSricharan R 	{ P_GPLL6, 1 },
1697d9db07f0SSricharan R 	{ P_GPLL0, 3 },
1698d9db07f0SSricharan R 	{ P_GPLL0_DIV2, 4 },
1699d9db07f0SSricharan R };
1700d9db07f0SSricharan R 
1701d9db07f0SSricharan R static struct clk_rcg2 usb0_mock_utmi_clk_src = {
1702d9db07f0SSricharan R 	.cmd_rcgr = 0x3e020,
1703d9db07f0SSricharan R 	.freq_tbl = ftbl_usb_mock_utmi_clk_src,
1704d9db07f0SSricharan R 	.mnd_width = 8,
1705d9db07f0SSricharan R 	.hid_width = 5,
1706d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map,
1707d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1708d9db07f0SSricharan R 		.name = "usb0_mock_utmi_clk_src",
1709d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll6_gpll0_gpll0_out_main_div2,
1710d9db07f0SSricharan R 		.num_parents = 4,
1711d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1712d9db07f0SSricharan R 	},
1713d9db07f0SSricharan R };
1714d9db07f0SSricharan R 
1715d9db07f0SSricharan R static const struct clk_parent_data gcc_usb3phy_0_cc_pipe_clk_xo[] = {
1716d9db07f0SSricharan R 	{ .fw_name = "usb3phy_0_cc_pipe_clk" },
1717d9db07f0SSricharan R 	{ .fw_name = "xo" },
1718d9db07f0SSricharan R };
1719d9db07f0SSricharan R 
1720d9db07f0SSricharan R static const struct parent_map gcc_usb3phy_0_cc_pipe_clk_xo_map[] = {
1721d9db07f0SSricharan R 	{ P_USB3PHY_0_PIPE, 0 },
1722d9db07f0SSricharan R 	{ P_XO, 2 },
1723d9db07f0SSricharan R };
1724d9db07f0SSricharan R 
1725d9db07f0SSricharan R static struct clk_regmap_mux usb0_pipe_clk_src = {
1726d9db07f0SSricharan R 	.reg = 0x3e048,
1727d9db07f0SSricharan R 	.shift = 8,
1728d9db07f0SSricharan R 	.width = 2,
1729d9db07f0SSricharan R 	.parent_map = gcc_usb3phy_0_cc_pipe_clk_xo_map,
1730d9db07f0SSricharan R 	.clkr = {
1731d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
1732d9db07f0SSricharan R 			.name = "usb0_pipe_clk_src",
1733d9db07f0SSricharan R 			.parent_data = gcc_usb3phy_0_cc_pipe_clk_xo,
1734d9db07f0SSricharan R 			.num_parents = 2,
1735d9db07f0SSricharan R 			.ops = &clk_regmap_mux_closest_ops,
1736d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
1737d9db07f0SSricharan R 		},
1738d9db07f0SSricharan R 	},
1739d9db07f0SSricharan R };
1740d9db07f0SSricharan R 
1741d9db07f0SSricharan R static const struct freq_tbl ftbl_sdcc_ice_core_clk_src[] = {
1742d9db07f0SSricharan R 	F(80000000, P_GPLL0_DIV2, 5, 0, 0),
1743d9db07f0SSricharan R 	F(160000000, P_GPLL0, 5, 0, 0),
1744d9db07f0SSricharan R 	F(216000000, P_GPLL6, 5, 0, 0),
1745d9db07f0SSricharan R 	F(308570000, P_GPLL6, 3.5, 0, 0),
1746d9db07f0SSricharan R };
1747d9db07f0SSricharan R 
1748d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_gpll0_gpll6_gpll0_div2[] = {
1749d9db07f0SSricharan R 	{ .fw_name = "xo"},
1750d9db07f0SSricharan R 	{ .hw = &gpll0.clkr.hw },
1751d9db07f0SSricharan R 	{ .hw = &gpll6.clkr.hw },
1752d9db07f0SSricharan R 	{ .hw = &gpll0_out_main_div2.hw },
1753d9db07f0SSricharan R };
1754d9db07f0SSricharan R 
1755d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_div2_map[] = {
1756d9db07f0SSricharan R 	{ P_XO, 0 },
1757d9db07f0SSricharan R 	{ P_GPLL0, 1 },
1758d9db07f0SSricharan R 	{ P_GPLL6, 2 },
1759d9db07f0SSricharan R 	{ P_GPLL0_DIV2, 4 },
1760d9db07f0SSricharan R };
1761d9db07f0SSricharan R 
1762d9db07f0SSricharan R static struct clk_rcg2 sdcc1_ice_core_clk_src = {
1763d9db07f0SSricharan R 	.cmd_rcgr = 0x5d000,
1764d9db07f0SSricharan R 	.freq_tbl = ftbl_sdcc_ice_core_clk_src,
1765d9db07f0SSricharan R 	.mnd_width = 8,
1766d9db07f0SSricharan R 	.hid_width = 5,
1767d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll6_gpll0_div2_map,
1768d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1769d9db07f0SSricharan R 		.name = "sdcc1_ice_core_clk_src",
1770d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll6_gpll0_div2,
1771d9db07f0SSricharan R 		.num_parents = 4,
1772d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1773d9db07f0SSricharan R 	},
1774d9db07f0SSricharan R };
1775d9db07f0SSricharan R 
1776d9db07f0SSricharan R static const struct freq_tbl ftbl_qdss_stm_clk_src[] = {
1777d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
1778d9db07f0SSricharan R 	F(50000000, P_GPLL0_DIV2, 8, 0, 0),
1779d9db07f0SSricharan R 	F(100000000, P_GPLL0, 8, 0, 0),
1780d9db07f0SSricharan R 	F(200000000, P_GPLL0, 4, 0, 0),
1781d9db07f0SSricharan R 	{ }
1782d9db07f0SSricharan R };
1783d9db07f0SSricharan R 
1784d9db07f0SSricharan R static struct clk_rcg2 qdss_stm_clk_src = {
1785d9db07f0SSricharan R 	.cmd_rcgr = 0x2902C,
1786d9db07f0SSricharan R 	.freq_tbl = ftbl_qdss_stm_clk_src,
1787d9db07f0SSricharan R 	.hid_width = 5,
1788d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1789d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1790d9db07f0SSricharan R 		.name = "qdss_stm_clk_src",
1791d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1792d9db07f0SSricharan R 		.num_parents = 3,
1793d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1794d9db07f0SSricharan R 	},
1795d9db07f0SSricharan R };
1796d9db07f0SSricharan R 
1797d9db07f0SSricharan R static const struct freq_tbl ftbl_qdss_traceclkin_clk_src[] = {
1798d9db07f0SSricharan R 	F(80000000, P_GPLL0_DIV2, 5, 0, 0),
1799d9db07f0SSricharan R 	F(160000000, P_GPLL0, 5, 0, 0),
1800d9db07f0SSricharan R 	F(300000000, P_GPLL4, 4, 0, 0),
1801d9db07f0SSricharan R 	{ }
1802d9db07f0SSricharan R };
1803d9db07f0SSricharan R 
1804d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_gpll4_gpll0_gpll0_div2[] = {
1805d9db07f0SSricharan R 	{ .fw_name = "xo" },
1806d9db07f0SSricharan R 	{ .hw = &gpll4.clkr.hw },
1807d9db07f0SSricharan R 	{ .hw = &gpll0.clkr.hw },
1808d9db07f0SSricharan R 	{ .hw = &gpll0_out_main_div2.hw },
1809d9db07f0SSricharan R };
1810d9db07f0SSricharan R 
1811d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll4_gpll0_gpll0_div2_map[] = {
1812d9db07f0SSricharan R 	{ P_XO, 0 },
1813d9db07f0SSricharan R 	{ P_GPLL4, 1 },
1814d9db07f0SSricharan R 	{ P_GPLL0, 2 },
1815d9db07f0SSricharan R 	{ P_GPLL0_DIV2, 4 },
1816d9db07f0SSricharan R };
1817d9db07f0SSricharan R 
1818d9db07f0SSricharan R static struct clk_rcg2 qdss_traceclkin_clk_src = {
1819d9db07f0SSricharan R 	.cmd_rcgr = 0x29048,
1820d9db07f0SSricharan R 	.freq_tbl = ftbl_qdss_traceclkin_clk_src,
1821d9db07f0SSricharan R 	.hid_width = 5,
1822d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll4_gpll0_gpll0_div2_map,
1823d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1824d9db07f0SSricharan R 		.name = "qdss_traceclkin_clk_src",
1825d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll4_gpll0_gpll0_div2,
1826d9db07f0SSricharan R 		.num_parents = 4,
1827d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1828d9db07f0SSricharan R 	},
1829d9db07f0SSricharan R };
1830d9db07f0SSricharan R 
1831d9db07f0SSricharan R static struct clk_rcg2 usb1_mock_utmi_clk_src = {
1832d9db07f0SSricharan R 	.cmd_rcgr = 0x3f020,
1833d9db07f0SSricharan R 	.freq_tbl = ftbl_usb_mock_utmi_clk_src,
1834d9db07f0SSricharan R 	.mnd_width = 8,
1835d9db07f0SSricharan R 	.hid_width = 5,
1836d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map,
1837d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1838d9db07f0SSricharan R 		.name = "usb1_mock_utmi_clk_src",
1839d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll6_gpll0_gpll0_out_main_div2,
1840d9db07f0SSricharan R 		.num_parents = 4,
1841d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1842d9db07f0SSricharan R 	},
1843d9db07f0SSricharan R };
1844d9db07f0SSricharan R 
1845d9db07f0SSricharan R static struct clk_branch gcc_adss_pwm_clk = {
1846d9db07f0SSricharan R 	.halt_reg = 0x1c020,
1847d9db07f0SSricharan R 	.clkr = {
1848d9db07f0SSricharan R 		.enable_reg = 0x1c020,
1849d9db07f0SSricharan R 		.enable_mask = BIT(0),
1850d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
1851d9db07f0SSricharan R 			.name = "gcc_adss_pwm_clk",
1852d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
1853d9db07f0SSricharan R 					&adss_pwm_clk_src.clkr.hw },
1854d9db07f0SSricharan R 			.num_parents = 1,
1855d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
1856d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
1857d9db07f0SSricharan R 		},
1858d9db07f0SSricharan R 	},
1859d9db07f0SSricharan R };
1860d9db07f0SSricharan R 
1861d9db07f0SSricharan R static struct clk_branch gcc_apss_ahb_clk = {
1862d9db07f0SSricharan R 	.halt_reg = 0x4601c,
1863d9db07f0SSricharan R 	.halt_check = BRANCH_HALT_VOTED,
1864d9db07f0SSricharan R 	.clkr = {
1865d9db07f0SSricharan R 		.enable_reg = 0x0b004,
1866d9db07f0SSricharan R 		.enable_mask = BIT(14),
1867d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
1868d9db07f0SSricharan R 			.name = "gcc_apss_ahb_clk",
1869d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
1870d9db07f0SSricharan R 					&apss_ahb_postdiv_clk_src.clkr.hw },
1871d9db07f0SSricharan R 			.num_parents = 1,
1872d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
1873d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
1874d9db07f0SSricharan R 		},
1875d9db07f0SSricharan R 	},
1876d9db07f0SSricharan R };
1877d9db07f0SSricharan R 
1878d9db07f0SSricharan R static const struct freq_tbl ftbl_system_noc_bfdcd_clk_src[] = {
1879d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
1880d9db07f0SSricharan R 	F(50000000, P_GPLL0_DIV2, 8, 0, 0),
1881d9db07f0SSricharan R 	F(100000000, P_GPLL0, 8, 0, 0),
1882d9db07f0SSricharan R 	F(133333333, P_GPLL0, 6, 0, 0),
1883d9db07f0SSricharan R 	F(160000000, P_GPLL0, 5, 0, 0),
1884d9db07f0SSricharan R 	F(200000000, P_GPLL0, 4, 0, 0),
1885d9db07f0SSricharan R 	F(266666667, P_GPLL0, 3, 0, 0),
1886d9db07f0SSricharan R 	{ }
1887d9db07f0SSricharan R };
1888d9db07f0SSricharan R 
1889d9db07f0SSricharan R static struct clk_rcg2 system_noc_bfdcd_clk_src = {
1890d9db07f0SSricharan R 	.cmd_rcgr = 0x26004,
1891d9db07f0SSricharan R 	.freq_tbl = ftbl_system_noc_bfdcd_clk_src,
1892d9db07f0SSricharan R 	.hid_width = 5,
1893d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll6_gpll0_out_main_div2_map,
1894d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1895d9db07f0SSricharan R 		.name = "system_noc_bfdcd_clk_src",
1896d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll6_gpll0_out_main_div2,
1897d9db07f0SSricharan R 		.num_parents = 4,
1898d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1899d9db07f0SSricharan R 	},
1900d9db07f0SSricharan R };
1901d9db07f0SSricharan R 
1902d9db07f0SSricharan R static const struct freq_tbl ftbl_ubi32_mem_noc_bfdcd_clk_src[] = {
1903d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
1904d9db07f0SSricharan R 	F(307670000, P_BIAS_PLL_NSS_NOC, 1.5, 0, 0),
1905d9db07f0SSricharan R 	F(533333333, P_GPLL0, 1.5, 0, 0),
1906d9db07f0SSricharan R 	{ }
1907d9db07f0SSricharan R };
1908d9db07f0SSricharan R 
1909d9db07f0SSricharan R static const struct clk_parent_data
1910d9db07f0SSricharan R 			gcc_xo_gpll0_gpll2_bias_pll_nss_noc_clk[] = {
1911d9db07f0SSricharan R 	{ .fw_name = "xo" },
1912d9db07f0SSricharan R 	{ .hw = &gpll0.clkr.hw },
1913d9db07f0SSricharan R 	{ .hw = &gpll2.clkr.hw },
1914d9db07f0SSricharan R 	{ .fw_name = "bias_pll_nss_noc_clk" },
1915d9db07f0SSricharan R };
1916d9db07f0SSricharan R 
1917d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll0_gpll2_bias_pll_nss_noc_clk_map[] = {
1918d9db07f0SSricharan R 	{ P_XO, 0 },
1919d9db07f0SSricharan R 	{ P_GPLL0, 1 },
1920d9db07f0SSricharan R 	{ P_GPLL2, 3 },
1921d9db07f0SSricharan R 	{ P_BIAS_PLL_NSS_NOC, 4 },
1922d9db07f0SSricharan R };
1923d9db07f0SSricharan R 
1924d9db07f0SSricharan R static struct clk_rcg2 ubi32_mem_noc_bfdcd_clk_src = {
1925d9db07f0SSricharan R 	.cmd_rcgr = 0x68088,
1926d9db07f0SSricharan R 	.freq_tbl = ftbl_ubi32_mem_noc_bfdcd_clk_src,
1927d9db07f0SSricharan R 	.hid_width = 5,
1928d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll2_bias_pll_nss_noc_clk_map,
1929d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
1930d9db07f0SSricharan R 		.name = "ubi32_mem_noc_bfdcd_clk_src",
1931d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll2_bias_pll_nss_noc_clk,
1932d9db07f0SSricharan R 		.num_parents = 4,
1933d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
1934d9db07f0SSricharan R 	},
1935d9db07f0SSricharan R };
1936d9db07f0SSricharan R 
1937d9db07f0SSricharan R static struct clk_branch gcc_apss_axi_clk = {
1938d9db07f0SSricharan R 	.halt_reg = 0x46020,
1939d9db07f0SSricharan R 	.halt_check = BRANCH_HALT_VOTED,
1940d9db07f0SSricharan R 	.clkr = {
1941d9db07f0SSricharan R 		.enable_reg = 0x0b004,
1942d9db07f0SSricharan R 		.enable_mask = BIT(13),
1943d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
1944d9db07f0SSricharan R 			.name = "gcc_apss_axi_clk",
1945d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
1946d9db07f0SSricharan R 					&apss_axi_clk_src.clkr.hw },
1947d9db07f0SSricharan R 			.num_parents = 1,
1948d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
1949d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
1950d9db07f0SSricharan R 		},
1951d9db07f0SSricharan R 	},
1952d9db07f0SSricharan R };
1953d9db07f0SSricharan R 
1954d9db07f0SSricharan R static struct clk_branch gcc_blsp1_ahb_clk = {
1955d9db07f0SSricharan R 	.halt_reg = 0x01008,
1956d9db07f0SSricharan R 	.halt_check = BRANCH_HALT_VOTED,
1957d9db07f0SSricharan R 	.clkr = {
1958d9db07f0SSricharan R 		.enable_reg = 0x0b004,
1959d9db07f0SSricharan R 		.enable_mask = BIT(10),
1960d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
1961d9db07f0SSricharan R 			.name = "gcc_blsp1_ahb_clk",
1962d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
1963d9db07f0SSricharan R 					&pcnoc_bfdcd_clk_src.clkr.hw },
1964d9db07f0SSricharan R 			.num_parents = 1,
1965d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
1966d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
1967d9db07f0SSricharan R 		},
1968d9db07f0SSricharan R 	},
1969d9db07f0SSricharan R };
1970d9db07f0SSricharan R 
1971d9db07f0SSricharan R static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = {
1972d9db07f0SSricharan R 	.halt_reg = 0x02008,
1973d9db07f0SSricharan R 	.clkr = {
1974d9db07f0SSricharan R 		.enable_reg = 0x02008,
1975d9db07f0SSricharan R 		.enable_mask = BIT(0),
1976d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
1977d9db07f0SSricharan R 			.name = "gcc_blsp1_qup1_i2c_apps_clk",
1978d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
1979d9db07f0SSricharan R 					&blsp1_qup1_i2c_apps_clk_src.clkr.hw },
1980d9db07f0SSricharan R 			.num_parents = 1,
1981d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
1982d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
1983d9db07f0SSricharan R 		},
1984d9db07f0SSricharan R 	},
1985d9db07f0SSricharan R };
1986d9db07f0SSricharan R 
1987d9db07f0SSricharan R static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = {
1988d9db07f0SSricharan R 	.halt_reg = 0x02004,
1989d9db07f0SSricharan R 	.clkr = {
1990d9db07f0SSricharan R 		.enable_reg = 0x02004,
1991d9db07f0SSricharan R 		.enable_mask = BIT(0),
1992d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
1993d9db07f0SSricharan R 			.name = "gcc_blsp1_qup1_spi_apps_clk",
1994d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
1995d9db07f0SSricharan R 					&blsp1_qup1_spi_apps_clk_src.clkr.hw },
1996d9db07f0SSricharan R 			.num_parents = 1,
1997d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
1998d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
1999d9db07f0SSricharan R 		},
2000d9db07f0SSricharan R 	},
2001d9db07f0SSricharan R };
2002d9db07f0SSricharan R 
2003d9db07f0SSricharan R static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = {
2004d9db07f0SSricharan R 	.halt_reg = 0x03010,
2005d9db07f0SSricharan R 	.clkr = {
2006d9db07f0SSricharan R 		.enable_reg = 0x03010,
2007d9db07f0SSricharan R 		.enable_mask = BIT(0),
2008d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2009d9db07f0SSricharan R 			.name = "gcc_blsp1_qup2_i2c_apps_clk",
2010d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2011d9db07f0SSricharan R 					&blsp1_qup2_i2c_apps_clk_src.clkr.hw },
2012d9db07f0SSricharan R 			.num_parents = 1,
2013d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2014d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2015d9db07f0SSricharan R 		},
2016d9db07f0SSricharan R 	},
2017d9db07f0SSricharan R };
2018d9db07f0SSricharan R 
2019d9db07f0SSricharan R static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = {
2020d9db07f0SSricharan R 	.halt_reg = 0x0300c,
2021d9db07f0SSricharan R 	.clkr = {
2022d9db07f0SSricharan R 		.enable_reg = 0x0300c,
2023d9db07f0SSricharan R 		.enable_mask = BIT(0),
2024d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2025d9db07f0SSricharan R 			.name = "gcc_blsp1_qup2_spi_apps_clk",
2026d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2027d9db07f0SSricharan R 					&blsp1_qup2_spi_apps_clk_src.clkr.hw },
2028d9db07f0SSricharan R 			.num_parents = 1,
2029d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2030d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2031d9db07f0SSricharan R 		},
2032d9db07f0SSricharan R 	},
2033d9db07f0SSricharan R };
2034d9db07f0SSricharan R 
2035d9db07f0SSricharan R static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = {
2036d9db07f0SSricharan R 	.halt_reg = 0x04010,
2037d9db07f0SSricharan R 	.clkr = {
2038d9db07f0SSricharan R 		.enable_reg = 0x04010,
2039d9db07f0SSricharan R 		.enable_mask = BIT(0),
2040d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2041d9db07f0SSricharan R 			.name = "gcc_blsp1_qup3_i2c_apps_clk",
2042d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2043d9db07f0SSricharan R 					&blsp1_qup3_i2c_apps_clk_src.clkr.hw },
2044d9db07f0SSricharan R 			.num_parents = 1,
2045d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2046d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2047d9db07f0SSricharan R 		},
2048d9db07f0SSricharan R 	},
2049d9db07f0SSricharan R };
2050d9db07f0SSricharan R 
2051d9db07f0SSricharan R static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = {
2052d9db07f0SSricharan R 	.halt_reg = 0x0400c,
2053d9db07f0SSricharan R 	.clkr = {
2054d9db07f0SSricharan R 		.enable_reg = 0x0400c,
2055d9db07f0SSricharan R 		.enable_mask = BIT(0),
2056d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2057d9db07f0SSricharan R 			.name = "gcc_blsp1_qup3_spi_apps_clk",
2058d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2059d9db07f0SSricharan R 					&blsp1_qup3_spi_apps_clk_src.clkr.hw },
2060d9db07f0SSricharan R 			.num_parents = 1,
2061d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2062d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2063d9db07f0SSricharan R 		},
2064d9db07f0SSricharan R 	},
2065d9db07f0SSricharan R };
2066d9db07f0SSricharan R 
2067d9db07f0SSricharan R static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = {
2068d9db07f0SSricharan R 	.halt_reg = 0x05010,
2069d9db07f0SSricharan R 	.clkr = {
2070d9db07f0SSricharan R 		.enable_reg = 0x05010,
2071d9db07f0SSricharan R 		.enable_mask = BIT(0),
2072d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2073d9db07f0SSricharan R 			.name = "gcc_blsp1_qup4_i2c_apps_clk",
2074d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2075d9db07f0SSricharan R 					&blsp1_qup4_i2c_apps_clk_src.clkr.hw },
2076d9db07f0SSricharan R 			.num_parents = 1,
2077d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2078d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2079d9db07f0SSricharan R 		},
2080d9db07f0SSricharan R 	},
2081d9db07f0SSricharan R };
2082d9db07f0SSricharan R 
2083d9db07f0SSricharan R static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = {
2084d9db07f0SSricharan R 	.halt_reg = 0x0500c,
2085d9db07f0SSricharan R 	.clkr = {
2086d9db07f0SSricharan R 		.enable_reg = 0x0500c,
2087d9db07f0SSricharan R 		.enable_mask = BIT(0),
2088d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2089d9db07f0SSricharan R 			.name = "gcc_blsp1_qup4_spi_apps_clk",
2090d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2091d9db07f0SSricharan R 					&blsp1_qup4_spi_apps_clk_src.clkr.hw },
2092d9db07f0SSricharan R 			.num_parents = 1,
2093d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2094d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2095d9db07f0SSricharan R 		},
2096d9db07f0SSricharan R 	},
2097d9db07f0SSricharan R };
2098d9db07f0SSricharan R 
2099d9db07f0SSricharan R static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = {
2100d9db07f0SSricharan R 	.halt_reg = 0x06010,
2101d9db07f0SSricharan R 	.clkr = {
2102d9db07f0SSricharan R 		.enable_reg = 0x06010,
2103d9db07f0SSricharan R 		.enable_mask = BIT(0),
2104d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2105d9db07f0SSricharan R 			.name = "gcc_blsp1_qup5_i2c_apps_clk",
2106d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2107d9db07f0SSricharan R 					&blsp1_qup5_i2c_apps_clk_src.clkr.hw },
2108d9db07f0SSricharan R 			.num_parents = 1,
2109d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2110d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2111d9db07f0SSricharan R 		},
2112d9db07f0SSricharan R 	},
2113d9db07f0SSricharan R };
2114d9db07f0SSricharan R 
2115d9db07f0SSricharan R static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = {
2116d9db07f0SSricharan R 	.halt_reg = 0x0600c,
2117d9db07f0SSricharan R 	.clkr = {
2118d9db07f0SSricharan R 		.enable_reg = 0x0600c,
2119d9db07f0SSricharan R 		.enable_mask = BIT(0),
2120d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2121d9db07f0SSricharan R 			.name = "gcc_blsp1_qup5_spi_apps_clk",
2122d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2123d9db07f0SSricharan R 					&blsp1_qup5_spi_apps_clk_src.clkr.hw },
2124d9db07f0SSricharan R 			.num_parents = 1,
2125d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2126d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2127d9db07f0SSricharan R 		},
2128d9db07f0SSricharan R 	},
2129d9db07f0SSricharan R };
2130d9db07f0SSricharan R 
2131d9db07f0SSricharan R static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = {
2132d9db07f0SSricharan R 	.halt_reg = 0x0700c,
2133d9db07f0SSricharan R 	.clkr = {
2134d9db07f0SSricharan R 		.enable_reg = 0x0700c,
2135d9db07f0SSricharan R 		.enable_mask = BIT(0),
2136d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2137d9db07f0SSricharan R 			.name = "gcc_blsp1_qup6_spi_apps_clk",
2138d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2139d9db07f0SSricharan R 					&blsp1_qup6_spi_apps_clk_src.clkr.hw },
2140d9db07f0SSricharan R 			.num_parents = 1,
2141d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2142d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2143d9db07f0SSricharan R 		},
2144d9db07f0SSricharan R 	},
2145d9db07f0SSricharan R };
2146d9db07f0SSricharan R 
2147d9db07f0SSricharan R static struct clk_branch gcc_blsp1_uart1_apps_clk = {
2148d9db07f0SSricharan R 	.halt_reg = 0x0203c,
2149d9db07f0SSricharan R 	.clkr = {
2150d9db07f0SSricharan R 		.enable_reg = 0x0203c,
2151d9db07f0SSricharan R 		.enable_mask = BIT(0),
2152d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2153d9db07f0SSricharan R 			.name = "gcc_blsp1_uart1_apps_clk",
2154d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2155d9db07f0SSricharan R 					&blsp1_uart1_apps_clk_src.clkr.hw },
2156d9db07f0SSricharan R 			.num_parents = 1,
2157d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2158d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2159d9db07f0SSricharan R 		},
2160d9db07f0SSricharan R 	},
2161d9db07f0SSricharan R };
2162d9db07f0SSricharan R 
2163d9db07f0SSricharan R static struct clk_branch gcc_blsp1_uart2_apps_clk = {
2164d9db07f0SSricharan R 	.halt_reg = 0x0302c,
2165d9db07f0SSricharan R 	.clkr = {
2166d9db07f0SSricharan R 		.enable_reg = 0x0302c,
2167d9db07f0SSricharan R 		.enable_mask = BIT(0),
2168d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2169d9db07f0SSricharan R 			.name = "gcc_blsp1_uart2_apps_clk",
2170d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2171d9db07f0SSricharan R 					&blsp1_uart2_apps_clk_src.clkr.hw },
2172d9db07f0SSricharan R 			.num_parents = 1,
2173d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2174d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2175d9db07f0SSricharan R 		},
2176d9db07f0SSricharan R 	},
2177d9db07f0SSricharan R };
2178d9db07f0SSricharan R 
2179d9db07f0SSricharan R static struct clk_branch gcc_blsp1_uart3_apps_clk = {
2180d9db07f0SSricharan R 	.halt_reg = 0x0402c,
2181d9db07f0SSricharan R 	.clkr = {
2182d9db07f0SSricharan R 		.enable_reg = 0x0402c,
2183d9db07f0SSricharan R 		.enable_mask = BIT(0),
2184d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2185d9db07f0SSricharan R 			.name = "gcc_blsp1_uart3_apps_clk",
2186d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2187d9db07f0SSricharan R 					&blsp1_uart3_apps_clk_src.clkr.hw },
2188d9db07f0SSricharan R 			.num_parents = 1,
2189d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2190d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2191d9db07f0SSricharan R 		},
2192d9db07f0SSricharan R 	},
2193d9db07f0SSricharan R };
2194d9db07f0SSricharan R 
2195d9db07f0SSricharan R static struct clk_branch gcc_blsp1_uart4_apps_clk = {
2196d9db07f0SSricharan R 	.halt_reg = 0x0502c,
2197d9db07f0SSricharan R 	.clkr = {
2198d9db07f0SSricharan R 		.enable_reg = 0x0502c,
2199d9db07f0SSricharan R 		.enable_mask = BIT(0),
2200d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2201d9db07f0SSricharan R 			.name = "gcc_blsp1_uart4_apps_clk",
2202d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2203d9db07f0SSricharan R 					&blsp1_uart4_apps_clk_src.clkr.hw },
2204d9db07f0SSricharan R 			.num_parents = 1,
2205d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2206d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2207d9db07f0SSricharan R 		},
2208d9db07f0SSricharan R 	},
2209d9db07f0SSricharan R };
2210d9db07f0SSricharan R 
2211d9db07f0SSricharan R static struct clk_branch gcc_blsp1_uart5_apps_clk = {
2212d9db07f0SSricharan R 	.halt_reg = 0x0602c,
2213d9db07f0SSricharan R 	.clkr = {
2214d9db07f0SSricharan R 		.enable_reg = 0x0602c,
2215d9db07f0SSricharan R 		.enable_mask = BIT(0),
2216d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2217d9db07f0SSricharan R 			.name = "gcc_blsp1_uart5_apps_clk",
2218d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2219d9db07f0SSricharan R 					&blsp1_uart5_apps_clk_src.clkr.hw },
2220d9db07f0SSricharan R 			.num_parents = 1,
2221d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2222d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2223d9db07f0SSricharan R 		},
2224d9db07f0SSricharan R 	},
2225d9db07f0SSricharan R };
2226d9db07f0SSricharan R 
2227d9db07f0SSricharan R static struct clk_branch gcc_blsp1_uart6_apps_clk = {
2228d9db07f0SSricharan R 	.halt_reg = 0x0702c,
2229d9db07f0SSricharan R 	.clkr = {
2230d9db07f0SSricharan R 		.enable_reg = 0x0702c,
2231d9db07f0SSricharan R 		.enable_mask = BIT(0),
2232d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2233d9db07f0SSricharan R 			.name = "gcc_blsp1_uart6_apps_clk",
2234d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2235d9db07f0SSricharan R 					&blsp1_uart6_apps_clk_src.clkr.hw },
2236d9db07f0SSricharan R 			.num_parents = 1,
2237d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2238d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2239d9db07f0SSricharan R 		},
2240d9db07f0SSricharan R 	},
2241d9db07f0SSricharan R };
2242d9db07f0SSricharan R 
2243d9db07f0SSricharan R static struct clk_branch gcc_crypto_ahb_clk = {
2244d9db07f0SSricharan R 	.halt_reg = 0x16024,
2245d9db07f0SSricharan R 	.halt_check = BRANCH_HALT_VOTED,
2246d9db07f0SSricharan R 	.clkr = {
2247d9db07f0SSricharan R 		.enable_reg = 0x0b004,
2248d9db07f0SSricharan R 		.enable_mask = BIT(0),
2249d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2250d9db07f0SSricharan R 			.name = "gcc_crypto_ahb_clk",
2251d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2252d9db07f0SSricharan R 					&pcnoc_bfdcd_clk_src.clkr.hw },
2253d9db07f0SSricharan R 			.num_parents = 1,
2254d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2255d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2256d9db07f0SSricharan R 		},
2257d9db07f0SSricharan R 	},
2258d9db07f0SSricharan R };
2259d9db07f0SSricharan R 
2260d9db07f0SSricharan R static struct clk_branch gcc_crypto_axi_clk = {
2261d9db07f0SSricharan R 	.halt_reg = 0x16020,
2262d9db07f0SSricharan R 	.halt_check = BRANCH_HALT_VOTED,
2263d9db07f0SSricharan R 	.clkr = {
2264d9db07f0SSricharan R 		.enable_reg = 0x0b004,
2265d9db07f0SSricharan R 		.enable_mask = BIT(1),
2266d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2267d9db07f0SSricharan R 			.name = "gcc_crypto_axi_clk",
2268d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2269d9db07f0SSricharan R 					&pcnoc_bfdcd_clk_src.clkr.hw },
2270d9db07f0SSricharan R 			.num_parents = 1,
2271d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2272d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2273d9db07f0SSricharan R 		},
2274d9db07f0SSricharan R 	},
2275d9db07f0SSricharan R };
2276d9db07f0SSricharan R 
2277d9db07f0SSricharan R static struct clk_branch gcc_crypto_clk = {
2278d9db07f0SSricharan R 	.halt_reg = 0x1601c,
2279d9db07f0SSricharan R 	.halt_check = BRANCH_HALT_VOTED,
2280d9db07f0SSricharan R 	.clkr = {
2281d9db07f0SSricharan R 		.enable_reg = 0x0b004,
2282d9db07f0SSricharan R 		.enable_mask = BIT(2),
2283d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2284d9db07f0SSricharan R 			.name = "gcc_crypto_clk",
2285d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2286d9db07f0SSricharan R 					&crypto_clk_src.clkr.hw },
2287d9db07f0SSricharan R 			.num_parents = 1,
2288d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2289d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2290d9db07f0SSricharan R 		},
2291d9db07f0SSricharan R 	},
2292d9db07f0SSricharan R };
2293d9db07f0SSricharan R 
2294d9db07f0SSricharan R static struct clk_fixed_factor gpll6_out_main_div2 = {
2295d9db07f0SSricharan R 	.mult = 1,
2296d9db07f0SSricharan R 	.div = 2,
2297d9db07f0SSricharan R 	.hw.init = &(struct clk_init_data){
2298d9db07f0SSricharan R 		.name = "gpll6_out_main_div2",
2299d9db07f0SSricharan R 		.parent_hws = (const struct clk_hw *[]){
2300d9db07f0SSricharan R 				&gpll6_main.clkr.hw },
2301d9db07f0SSricharan R 		.num_parents = 1,
2302d9db07f0SSricharan R 		.ops = &clk_fixed_factor_ops,
2303d9db07f0SSricharan R 		.flags = CLK_SET_RATE_PARENT,
2304d9db07f0SSricharan R 	},
2305d9db07f0SSricharan R };
2306d9db07f0SSricharan R 
2307d9db07f0SSricharan R static struct clk_branch gcc_xo_clk = {
2308d9db07f0SSricharan R 	.halt_reg = 0x30030,
2309d9db07f0SSricharan R 	.clkr = {
2310d9db07f0SSricharan R 		.enable_reg = 0x30030,
2311d9db07f0SSricharan R 		.enable_mask = BIT(0),
2312d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2313d9db07f0SSricharan R 			.name = "gcc_xo_clk",
2314d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2315d9db07f0SSricharan R 					&gcc_xo_clk_src.clkr.hw },
2316d9db07f0SSricharan R 			.num_parents = 1,
2317d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2318d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2319d9db07f0SSricharan R 		},
2320d9db07f0SSricharan R 	},
2321d9db07f0SSricharan R };
2322d9db07f0SSricharan R 
2323d9db07f0SSricharan R static struct clk_branch gcc_gp1_clk = {
2324d9db07f0SSricharan R 	.halt_reg = 0x08000,
2325d9db07f0SSricharan R 	.clkr = {
2326d9db07f0SSricharan R 		.enable_reg = 0x08000,
2327d9db07f0SSricharan R 		.enable_mask = BIT(0),
2328d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2329d9db07f0SSricharan R 			.name = "gcc_gp1_clk",
2330d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2331d9db07f0SSricharan R 					&gp1_clk_src.clkr.hw },
2332d9db07f0SSricharan R 			.num_parents = 1,
2333d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2334d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2335d9db07f0SSricharan R 		},
2336d9db07f0SSricharan R 	},
2337d9db07f0SSricharan R };
2338d9db07f0SSricharan R 
2339d9db07f0SSricharan R static struct clk_branch gcc_gp2_clk = {
2340d9db07f0SSricharan R 	.halt_reg = 0x09000,
2341d9db07f0SSricharan R 	.clkr = {
2342d9db07f0SSricharan R 		.enable_reg = 0x09000,
2343d9db07f0SSricharan R 		.enable_mask = BIT(0),
2344d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2345d9db07f0SSricharan R 			.name = "gcc_gp2_clk",
2346d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2347d9db07f0SSricharan R 					&gp2_clk_src.clkr.hw },
2348d9db07f0SSricharan R 			.num_parents = 1,
2349d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2350d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2351d9db07f0SSricharan R 		},
2352d9db07f0SSricharan R 	},
2353d9db07f0SSricharan R };
2354d9db07f0SSricharan R 
2355d9db07f0SSricharan R static struct clk_branch gcc_gp3_clk = {
2356d9db07f0SSricharan R 	.halt_reg = 0x0a000,
2357d9db07f0SSricharan R 	.clkr = {
2358d9db07f0SSricharan R 		.enable_reg = 0x0a000,
2359d9db07f0SSricharan R 		.enable_mask = BIT(0),
2360d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2361d9db07f0SSricharan R 			.name = "gcc_gp3_clk",
2362d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2363d9db07f0SSricharan R 					&gp3_clk_src.clkr.hw },
2364d9db07f0SSricharan R 			.num_parents = 1,
2365d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2366d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2367d9db07f0SSricharan R 		},
2368d9db07f0SSricharan R 	},
2369d9db07f0SSricharan R };
2370d9db07f0SSricharan R 
2371d9db07f0SSricharan R static struct clk_branch gcc_mdio_ahb_clk = {
2372d9db07f0SSricharan R 	.halt_reg = 0x58004,
2373d9db07f0SSricharan R 	.clkr = {
2374d9db07f0SSricharan R 		.enable_reg = 0x58004,
2375d9db07f0SSricharan R 		.enable_mask = BIT(0),
2376d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2377d9db07f0SSricharan R 			.name = "gcc_mdio_ahb_clk",
2378d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2379d9db07f0SSricharan R 					&pcnoc_bfdcd_clk_src.clkr.hw },
2380d9db07f0SSricharan R 			.num_parents = 1,
2381d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2382d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2383d9db07f0SSricharan R 		},
2384d9db07f0SSricharan R 	},
2385d9db07f0SSricharan R };
2386d9db07f0SSricharan R 
2387d9db07f0SSricharan R static struct clk_branch gcc_crypto_ppe_clk = {
2388d9db07f0SSricharan R 	.halt_reg = 0x68310,
2389d9db07f0SSricharan R 	.clkr = {
2390d9db07f0SSricharan R 		.enable_reg = 0x68310,
2391d9db07f0SSricharan R 		.enable_mask = BIT(0),
2392d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2393d9db07f0SSricharan R 			.name = "gcc_crypto_ppe_clk",
2394d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2395d9db07f0SSricharan R 					&nss_ppe_clk_src.clkr.hw },
2396d9db07f0SSricharan R 			.num_parents = 1,
2397d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2398d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2399d9db07f0SSricharan R 		},
2400d9db07f0SSricharan R 	},
2401d9db07f0SSricharan R };
2402d9db07f0SSricharan R 
2403d9db07f0SSricharan R static struct clk_branch gcc_nss_ce_apb_clk = {
2404d9db07f0SSricharan R 	.halt_reg = 0x68174,
2405d9db07f0SSricharan R 	.clkr = {
2406d9db07f0SSricharan R 		.enable_reg = 0x68174,
2407d9db07f0SSricharan R 		.enable_mask = BIT(0),
2408d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2409d9db07f0SSricharan R 			.name = "gcc_nss_ce_apb_clk",
2410d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2411d9db07f0SSricharan R 					&nss_ce_clk_src.clkr.hw },
2412d9db07f0SSricharan R 			.num_parents = 1,
2413d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2414d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2415d9db07f0SSricharan R 		},
2416d9db07f0SSricharan R 	},
2417d9db07f0SSricharan R };
2418d9db07f0SSricharan R 
2419d9db07f0SSricharan R static struct clk_branch gcc_nss_ce_axi_clk = {
2420d9db07f0SSricharan R 	.halt_reg = 0x68170,
2421d9db07f0SSricharan R 	.clkr = {
2422d9db07f0SSricharan R 		.enable_reg = 0x68170,
2423d9db07f0SSricharan R 		.enable_mask = BIT(0),
2424d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2425d9db07f0SSricharan R 			.name = "gcc_nss_ce_axi_clk",
2426d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2427d9db07f0SSricharan R 					&nss_ce_clk_src.clkr.hw },
2428d9db07f0SSricharan R 			.num_parents = 1,
2429d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2430d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2431d9db07f0SSricharan R 		},
2432d9db07f0SSricharan R 	},
2433d9db07f0SSricharan R };
2434d9db07f0SSricharan R 
2435d9db07f0SSricharan R static struct clk_branch gcc_nss_cfg_clk = {
2436d9db07f0SSricharan R 	.halt_reg = 0x68160,
2437d9db07f0SSricharan R 	.clkr = {
2438d9db07f0SSricharan R 		.enable_reg = 0x68160,
2439d9db07f0SSricharan R 		.enable_mask = BIT(0),
2440d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2441d9db07f0SSricharan R 			.name = "gcc_nss_cfg_clk",
2442d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2443d9db07f0SSricharan R 					&pcnoc_bfdcd_clk_src.clkr.hw },
2444d9db07f0SSricharan R 			.num_parents = 1,
2445d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2446d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2447d9db07f0SSricharan R 		},
2448d9db07f0SSricharan R 	},
2449d9db07f0SSricharan R };
2450d9db07f0SSricharan R 
2451d9db07f0SSricharan R static struct clk_branch gcc_nss_crypto_clk = {
2452d9db07f0SSricharan R 	.halt_reg = 0x68164,
2453d9db07f0SSricharan R 	.clkr = {
2454d9db07f0SSricharan R 		.enable_reg = 0x68164,
2455d9db07f0SSricharan R 		.enable_mask = BIT(0),
2456d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2457d9db07f0SSricharan R 			.name = "gcc_nss_crypto_clk",
2458d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2459d9db07f0SSricharan R 					&nss_crypto_clk_src.clkr.hw },
2460d9db07f0SSricharan R 			.num_parents = 1,
2461d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2462d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2463d9db07f0SSricharan R 		},
2464d9db07f0SSricharan R 	},
2465d9db07f0SSricharan R };
2466d9db07f0SSricharan R 
2467d9db07f0SSricharan R static struct clk_branch gcc_nss_csr_clk = {
2468d9db07f0SSricharan R 	.halt_reg = 0x68318,
2469d9db07f0SSricharan R 	.clkr = {
2470d9db07f0SSricharan R 		.enable_reg = 0x68318,
2471d9db07f0SSricharan R 		.enable_mask = BIT(0),
2472d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2473d9db07f0SSricharan R 			.name = "gcc_nss_csr_clk",
2474d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2475d9db07f0SSricharan R 					&nss_ce_clk_src.clkr.hw },
2476d9db07f0SSricharan R 			.num_parents = 1,
2477d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2478d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2479d9db07f0SSricharan R 		},
2480d9db07f0SSricharan R 	},
2481d9db07f0SSricharan R };
2482d9db07f0SSricharan R 
2483d9db07f0SSricharan R static struct clk_branch gcc_nss_edma_cfg_clk = {
2484d9db07f0SSricharan R 	.halt_reg = 0x6819C,
2485d9db07f0SSricharan R 	.clkr = {
2486d9db07f0SSricharan R 		.enable_reg = 0x6819C,
2487d9db07f0SSricharan R 		.enable_mask = BIT(0),
2488d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2489d9db07f0SSricharan R 			.name = "gcc_nss_edma_cfg_clk",
2490d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2491d9db07f0SSricharan R 					&nss_ppe_clk_src.clkr.hw },
2492d9db07f0SSricharan R 			.num_parents = 1,
2493d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2494d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2495d9db07f0SSricharan R 		},
2496d9db07f0SSricharan R 	},
2497d9db07f0SSricharan R };
2498d9db07f0SSricharan R 
2499d9db07f0SSricharan R static struct clk_branch gcc_nss_edma_clk = {
2500d9db07f0SSricharan R 	.halt_reg = 0x68198,
2501d9db07f0SSricharan R 	.clkr = {
2502d9db07f0SSricharan R 		.enable_reg = 0x68198,
2503d9db07f0SSricharan R 		.enable_mask = BIT(0),
2504d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2505d9db07f0SSricharan R 			.name = "gcc_nss_edma_clk",
2506d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2507d9db07f0SSricharan R 					&nss_ppe_clk_src.clkr.hw },
2508d9db07f0SSricharan R 			.num_parents = 1,
2509d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2510d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2511d9db07f0SSricharan R 		},
2512d9db07f0SSricharan R 	},
2513d9db07f0SSricharan R };
2514d9db07f0SSricharan R 
2515d9db07f0SSricharan R static struct clk_branch gcc_nss_noc_clk = {
2516d9db07f0SSricharan R 	.halt_reg = 0x68168,
2517d9db07f0SSricharan R 	.clkr = {
2518d9db07f0SSricharan R 		.enable_reg = 0x68168,
2519d9db07f0SSricharan R 		.enable_mask = BIT(0),
2520d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2521d9db07f0SSricharan R 			.name = "gcc_nss_noc_clk",
2522d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2523d9db07f0SSricharan R 					&snoc_nssnoc_bfdcd_clk_src.clkr.hw },
2524d9db07f0SSricharan R 			.num_parents = 1,
2525d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2526d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2527d9db07f0SSricharan R 		},
2528d9db07f0SSricharan R 	},
2529d9db07f0SSricharan R };
2530d9db07f0SSricharan R 
2531d9db07f0SSricharan R static struct clk_branch gcc_ubi0_utcm_clk = {
2532d9db07f0SSricharan R 	.halt_reg = 0x2606c,
2533d9db07f0SSricharan R 	.clkr = {
2534d9db07f0SSricharan R 		.enable_reg = 0x2606c,
2535d9db07f0SSricharan R 		.enable_mask = BIT(0),
2536d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2537d9db07f0SSricharan R 			.name = "gcc_ubi0_utcm_clk",
2538d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2539d9db07f0SSricharan R 					&snoc_nssnoc_bfdcd_clk_src.clkr.hw },
2540d9db07f0SSricharan R 			.num_parents = 1,
2541d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2542d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2543d9db07f0SSricharan R 		},
2544d9db07f0SSricharan R 	},
2545d9db07f0SSricharan R };
2546d9db07f0SSricharan R 
2547d9db07f0SSricharan R static struct clk_branch gcc_snoc_nssnoc_clk = {
2548d9db07f0SSricharan R 	.halt_reg = 0x26070,
2549d9db07f0SSricharan R 	.clkr = {
2550d9db07f0SSricharan R 		.enable_reg = 0x26070,
2551d9db07f0SSricharan R 		.enable_mask = BIT(0),
2552d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2553d9db07f0SSricharan R 			.name = "gcc_snoc_nssnoc_clk",
2554d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2555d9db07f0SSricharan R 					&snoc_nssnoc_bfdcd_clk_src.clkr.hw },
2556d9db07f0SSricharan R 			.num_parents = 1,
2557d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2558d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2559d9db07f0SSricharan R 		},
2560d9db07f0SSricharan R 	},
2561d9db07f0SSricharan R };
2562d9db07f0SSricharan R 
2563d9db07f0SSricharan R static const struct freq_tbl ftbl_wcss_ahb_clk_src[] = {
2564d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
2565d9db07f0SSricharan R 	F(133333333, P_GPLL0, 6, 0, 0),
2566d9db07f0SSricharan R 	{ }
2567d9db07f0SSricharan R };
2568d9db07f0SSricharan R 
2569d9db07f0SSricharan R static const struct freq_tbl ftbl_q6_axi_clk_src[] = {
2570d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
2571d9db07f0SSricharan R 	F(400000000, P_GPLL0, 2, 0, 0),
2572d9db07f0SSricharan R 	{ }
2573d9db07f0SSricharan R };
2574d9db07f0SSricharan R 
2575d9db07f0SSricharan R static struct clk_rcg2 wcss_ahb_clk_src = {
2576d9db07f0SSricharan R 	.cmd_rcgr = 0x59020,
2577d9db07f0SSricharan R 	.freq_tbl = ftbl_wcss_ahb_clk_src,
2578d9db07f0SSricharan R 	.hid_width = 5,
2579d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_map,
2580d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
2581d9db07f0SSricharan R 		.name = "wcss_ahb_clk_src",
2582d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0,
2583d9db07f0SSricharan R 		.num_parents = 2,
2584d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
2585d9db07f0SSricharan R 	},
2586d9db07f0SSricharan R };
2587d9db07f0SSricharan R 
2588d9db07f0SSricharan R static const struct clk_parent_data gcc_xo_gpll0_gpll2_gpll4_gpll6[] = {
2589d9db07f0SSricharan R 	{ .fw_name = "xo" },
2590d9db07f0SSricharan R 	{ .hw = &gpll0.clkr.hw },
2591d9db07f0SSricharan R 	{ .hw = &gpll2.clkr.hw },
2592d9db07f0SSricharan R 	{ .hw = &gpll4.clkr.hw },
2593d9db07f0SSricharan R 	{ .hw = &gpll6.clkr.hw },
2594d9db07f0SSricharan R };
2595d9db07f0SSricharan R 
2596d9db07f0SSricharan R static const struct parent_map gcc_xo_gpll0_gpll2_gpll4_gpll6_map[] = {
2597d9db07f0SSricharan R 	{ P_XO, 0 },
2598d9db07f0SSricharan R 	{ P_GPLL0, 1 },
2599d9db07f0SSricharan R 	{ P_GPLL2, 2 },
2600d9db07f0SSricharan R 	{ P_GPLL4, 3 },
2601d9db07f0SSricharan R 	{ P_GPLL6, 4 },
2602d9db07f0SSricharan R };
2603d9db07f0SSricharan R 
2604d9db07f0SSricharan R static struct clk_rcg2 q6_axi_clk_src = {
2605d9db07f0SSricharan R 	.cmd_rcgr = 0x59120,
2606d9db07f0SSricharan R 	.freq_tbl = ftbl_q6_axi_clk_src,
2607d9db07f0SSricharan R 	.hid_width = 5,
2608d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_gpll2_gpll4_gpll6_map,
2609d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
2610d9db07f0SSricharan R 		.name = "q6_axi_clk_src",
2611d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_gpll2_gpll4_gpll6,
2612d9db07f0SSricharan R 		.num_parents = 5,
2613d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
2614d9db07f0SSricharan R 	},
2615d9db07f0SSricharan R };
2616d9db07f0SSricharan R 
2617d9db07f0SSricharan R static const struct freq_tbl ftbl_lpass_core_axim_clk_src[] = {
2618d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
2619d9db07f0SSricharan R 	F(100000000, P_GPLL0, 8, 0, 0),
2620d9db07f0SSricharan R 	{ }
2621d9db07f0SSricharan R };
2622d9db07f0SSricharan R 
2623d9db07f0SSricharan R static struct clk_rcg2 lpass_core_axim_clk_src = {
2624d9db07f0SSricharan R 	.cmd_rcgr = 0x1F020,
2625d9db07f0SSricharan R 	.freq_tbl = ftbl_lpass_core_axim_clk_src,
2626d9db07f0SSricharan R 	.hid_width = 5,
2627d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_map,
2628d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
2629d9db07f0SSricharan R 		.name = "lpass_core_axim_clk_src",
2630d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0,
2631d9db07f0SSricharan R 		.num_parents = 2,
2632d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
2633d9db07f0SSricharan R 	},
2634d9db07f0SSricharan R };
2635d9db07f0SSricharan R 
2636d9db07f0SSricharan R static const struct freq_tbl ftbl_lpass_snoc_cfg_clk_src[] = {
2637d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
2638d9db07f0SSricharan R 	F(266666667, P_GPLL0, 3, 0, 0),
2639d9db07f0SSricharan R 	{ }
2640d9db07f0SSricharan R };
2641d9db07f0SSricharan R 
2642d9db07f0SSricharan R static struct clk_rcg2 lpass_snoc_cfg_clk_src = {
2643d9db07f0SSricharan R 	.cmd_rcgr = 0x1F040,
2644d9db07f0SSricharan R 	.freq_tbl = ftbl_lpass_snoc_cfg_clk_src,
2645d9db07f0SSricharan R 	.hid_width = 5,
2646d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_map,
2647d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
2648d9db07f0SSricharan R 		.name = "lpass_snoc_cfg_clk_src",
2649d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0,
2650d9db07f0SSricharan R 		.num_parents = 2,
2651d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
2652d9db07f0SSricharan R 	},
2653d9db07f0SSricharan R };
2654d9db07f0SSricharan R 
2655d9db07f0SSricharan R static const struct freq_tbl ftbl_lpass_q6_axim_clk_src[] = {
2656d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
2657d9db07f0SSricharan R 	F(400000000, P_GPLL0, 2, 0, 0),
2658d9db07f0SSricharan R 	{ }
2659d9db07f0SSricharan R };
2660d9db07f0SSricharan R 
2661d9db07f0SSricharan R static struct clk_rcg2 lpass_q6_axim_clk_src = {
2662d9db07f0SSricharan R 	.cmd_rcgr = 0x1F008,
2663d9db07f0SSricharan R 	.freq_tbl = ftbl_lpass_q6_axim_clk_src,
2664d9db07f0SSricharan R 	.hid_width = 5,
2665d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_map,
2666d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
2667d9db07f0SSricharan R 		.name = "lpass_q6_axim_clk_src",
2668d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0,
2669d9db07f0SSricharan R 		.num_parents = 2,
2670d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
2671d9db07f0SSricharan R 	},
2672d9db07f0SSricharan R };
2673d9db07f0SSricharan R 
2674d9db07f0SSricharan R static struct freq_tbl ftbl_rbcpr_wcss_clk_src[] = {
2675d9db07f0SSricharan R 	F(24000000, P_XO, 1, 0, 0),
2676d9db07f0SSricharan R 	F(50000000, P_GPLL0, 16, 0, 0),
2677d9db07f0SSricharan R 	{ }
2678d9db07f0SSricharan R };
2679d9db07f0SSricharan R 
2680d9db07f0SSricharan R static struct clk_rcg2 rbcpr_wcss_clk_src = {
2681d9db07f0SSricharan R 	.cmd_rcgr = 0x3a00c,
2682d9db07f0SSricharan R 	.freq_tbl = ftbl_rbcpr_wcss_clk_src,
2683d9db07f0SSricharan R 	.hid_width = 5,
2684d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_out_main_div2_gpll0_map,
2685d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
2686d9db07f0SSricharan R 		.name = "rbcpr_wcss_clk_src",
2687d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0_out_main_div2_gpll0,
2688d9db07f0SSricharan R 		.num_parents = 3,
2689d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
2690d9db07f0SSricharan R 	},
2691d9db07f0SSricharan R };
2692d9db07f0SSricharan R 
2693d9db07f0SSricharan R static struct clk_branch gcc_lpass_core_axim_clk = {
2694d9db07f0SSricharan R 	.halt_reg = 0x1F028,
2695d9db07f0SSricharan R 	.clkr = {
2696d9db07f0SSricharan R 		.enable_reg = 0x1F028,
2697d9db07f0SSricharan R 		.enable_mask = BIT(0),
2698d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2699d9db07f0SSricharan R 			.name = "gcc_lpass_core_axim_clk",
2700d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2701d9db07f0SSricharan R 					&lpass_core_axim_clk_src.clkr.hw },
2702d9db07f0SSricharan R 			.num_parents = 1,
2703d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2704d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2705d9db07f0SSricharan R 		},
2706d9db07f0SSricharan R 	},
2707d9db07f0SSricharan R };
2708d9db07f0SSricharan R 
2709d9db07f0SSricharan R static struct clk_branch gcc_lpass_snoc_cfg_clk = {
2710d9db07f0SSricharan R 	.halt_reg = 0x1F048,
2711d9db07f0SSricharan R 	.clkr = {
2712d9db07f0SSricharan R 		.enable_reg = 0x1F048,
2713d9db07f0SSricharan R 		.enable_mask = BIT(0),
2714d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2715d9db07f0SSricharan R 			.name = "gcc_lpass_snoc_cfg_clk",
2716d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2717d9db07f0SSricharan R 					&lpass_snoc_cfg_clk_src.clkr.hw },
2718d9db07f0SSricharan R 			.num_parents = 1,
2719d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2720d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2721d9db07f0SSricharan R 		},
2722d9db07f0SSricharan R 	},
2723d9db07f0SSricharan R };
2724d9db07f0SSricharan R 
2725d9db07f0SSricharan R static struct clk_branch gcc_lpass_q6_axim_clk = {
2726d9db07f0SSricharan R 	.halt_reg = 0x1F010,
2727d9db07f0SSricharan R 	.clkr = {
2728d9db07f0SSricharan R 		.enable_reg = 0x1F010,
2729d9db07f0SSricharan R 		.enable_mask = BIT(0),
2730d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2731d9db07f0SSricharan R 			.name = "gcc_lpass_q6_axim_clk",
2732d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2733d9db07f0SSricharan R 					&lpass_q6_axim_clk_src.clkr.hw },
2734d9db07f0SSricharan R 			.num_parents = 1,
2735d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2736d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2737d9db07f0SSricharan R 		},
2738d9db07f0SSricharan R 	},
2739d9db07f0SSricharan R };
2740d9db07f0SSricharan R 
2741d9db07f0SSricharan R static struct clk_branch gcc_lpass_q6_atbm_at_clk = {
2742d9db07f0SSricharan R 	.halt_reg = 0x1F018,
2743d9db07f0SSricharan R 	.clkr = {
2744d9db07f0SSricharan R 		.enable_reg = 0x1F018,
2745d9db07f0SSricharan R 		.enable_mask = BIT(0),
2746d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2747d9db07f0SSricharan R 			.name = "gcc_lpass_q6_atbm_at_clk",
2748d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2749d9db07f0SSricharan R 					&qdss_at_clk_src.clkr.hw },
2750d9db07f0SSricharan R 			.num_parents = 1,
2751d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2752d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2753d9db07f0SSricharan R 		},
2754d9db07f0SSricharan R 	},
2755d9db07f0SSricharan R };
2756d9db07f0SSricharan R 
2757d9db07f0SSricharan R static struct clk_branch gcc_lpass_q6_pclkdbg_clk = {
2758d9db07f0SSricharan R 	.halt_reg = 0x1F01C,
2759d9db07f0SSricharan R 	.clkr = {
2760d9db07f0SSricharan R 		.enable_reg = 0x1F01C,
2761d9db07f0SSricharan R 		.enable_mask = BIT(0),
2762d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2763d9db07f0SSricharan R 			.name = "gcc_lpass_q6_pclkdbg_clk",
2764d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2765d9db07f0SSricharan R 					&qdss_dap_sync_clk_src.hw },
2766d9db07f0SSricharan R 			.num_parents = 1,
2767d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2768d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2769d9db07f0SSricharan R 		},
2770d9db07f0SSricharan R 	},
2771d9db07f0SSricharan R };
2772d9db07f0SSricharan R 
2773d9db07f0SSricharan R static struct clk_branch gcc_lpass_q6ss_tsctr_1to2_clk = {
2774d9db07f0SSricharan R 	.halt_reg = 0x1F014,
2775d9db07f0SSricharan R 	.clkr = {
2776d9db07f0SSricharan R 		.enable_reg = 0x1F014,
2777d9db07f0SSricharan R 		.enable_mask = BIT(0),
2778d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2779d9db07f0SSricharan R 			.name = "gcc_lpass_q6ss_tsctr_1to2_clk",
2780d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2781d9db07f0SSricharan R 					&qdss_tsctr_div2_clk_src.hw },
2782d9db07f0SSricharan R 			.num_parents = 1,
2783d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2784d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2785d9db07f0SSricharan R 		},
2786d9db07f0SSricharan R 	},
2787d9db07f0SSricharan R };
2788d9db07f0SSricharan R 
2789d9db07f0SSricharan R static struct clk_branch gcc_lpass_q6ss_trig_clk = {
2790d9db07f0SSricharan R 	.halt_reg = 0x1F038,
2791d9db07f0SSricharan R 	.clkr = {
2792d9db07f0SSricharan R 		.enable_reg = 0x1F038,
2793d9db07f0SSricharan R 		.enable_mask = BIT(0),
2794d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2795d9db07f0SSricharan R 			.name = "gcc_lpass_q6ss_trig_clk",
2796d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2797d9db07f0SSricharan R 					&qdss_dap_sync_clk_src.hw },
2798d9db07f0SSricharan R 			.num_parents = 1,
2799d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2800d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2801d9db07f0SSricharan R 		},
2802d9db07f0SSricharan R 	},
2803d9db07f0SSricharan R };
2804d9db07f0SSricharan R 
2805d9db07f0SSricharan R static struct clk_branch gcc_lpass_tbu_clk = {
2806d9db07f0SSricharan R 	.halt_reg = 0x12094,
2807d9db07f0SSricharan R 	.clkr = {
2808d9db07f0SSricharan R 		.enable_reg = 0xb00c,
2809d9db07f0SSricharan R 		.enable_mask = BIT(10),
2810d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2811d9db07f0SSricharan R 			.name = "gcc_lpass_tbu_clk",
2812d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2813d9db07f0SSricharan R 					&lpass_q6_axim_clk_src.clkr.hw },
2814d9db07f0SSricharan R 			.num_parents = 1,
2815d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2816d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2817d9db07f0SSricharan R 		},
2818d9db07f0SSricharan R 	},
2819d9db07f0SSricharan R };
2820d9db07f0SSricharan R 
2821d9db07f0SSricharan R static struct clk_branch gcc_pcnoc_lpass_clk = {
2822d9db07f0SSricharan R 	.halt_reg = 0x27020,
2823d9db07f0SSricharan R 	.clkr = {
2824d9db07f0SSricharan R 		.enable_reg = 0x27020,
2825d9db07f0SSricharan R 		.enable_mask = BIT(0),
2826d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2827d9db07f0SSricharan R 			.name = "gcc_pcnoc_lpass_clk",
2828d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2829d9db07f0SSricharan R 					&lpass_core_axim_clk_src.clkr.hw },
2830d9db07f0SSricharan R 			.num_parents = 1,
2831d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2832d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2833d9db07f0SSricharan R 		},
2834d9db07f0SSricharan R 	},
2835d9db07f0SSricharan R };
2836d9db07f0SSricharan R 
2837d9db07f0SSricharan R static struct clk_branch gcc_mem_noc_lpass_clk = {
2838d9db07f0SSricharan R 	.halt_reg = 0x1D044,
2839d9db07f0SSricharan R 	.clkr = {
2840d9db07f0SSricharan R 		.enable_reg = 0x1D044,
2841d9db07f0SSricharan R 		.enable_mask = BIT(0),
2842d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2843d9db07f0SSricharan R 			.name = "gcc_mem_noc_lpass_clk",
2844d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2845d9db07f0SSricharan R 					&lpass_q6_axim_clk_src.clkr.hw },
2846d9db07f0SSricharan R 			.num_parents = 1,
2847d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2848d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2849d9db07f0SSricharan R 		},
2850d9db07f0SSricharan R 	},
2851d9db07f0SSricharan R };
2852d9db07f0SSricharan R 
2853d9db07f0SSricharan R static struct clk_branch gcc_snoc_lpass_cfg_clk = {
2854d9db07f0SSricharan R 	.halt_reg = 0x26074,
2855d9db07f0SSricharan R 	.clkr = {
2856d9db07f0SSricharan R 		.enable_reg = 0x26074,
2857d9db07f0SSricharan R 		.enable_mask = BIT(0),
2858d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2859d9db07f0SSricharan R 			.name = "gcc_snoc_lpass_cfg_clk",
2860d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2861d9db07f0SSricharan R 					&lpass_snoc_cfg_clk_src.clkr.hw },
2862d9db07f0SSricharan R 			.num_parents = 1,
2863d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2864d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2865d9db07f0SSricharan R 		},
2866d9db07f0SSricharan R 	},
2867d9db07f0SSricharan R };
2868d9db07f0SSricharan R 
2869d9db07f0SSricharan R static struct clk_branch gcc_mem_noc_ubi32_clk = {
2870d9db07f0SSricharan R 	.halt_reg = 0x1D03C,
2871d9db07f0SSricharan R 	.clkr = {
2872d9db07f0SSricharan R 		.enable_reg = 0x1D03C,
2873d9db07f0SSricharan R 		.enable_mask = BIT(0),
2874d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2875d9db07f0SSricharan R 			.name = "gcc_mem_noc_ubi32_clk",
2876d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2877d9db07f0SSricharan R 					&ubi32_mem_noc_bfdcd_clk_src.clkr.hw },
2878d9db07f0SSricharan R 			.num_parents = 1,
2879d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2880d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2881d9db07f0SSricharan R 		},
2882d9db07f0SSricharan R 	},
2883d9db07f0SSricharan R };
2884d9db07f0SSricharan R 
2885d9db07f0SSricharan R static struct clk_branch gcc_nss_port1_rx_clk = {
2886d9db07f0SSricharan R 	.halt_reg = 0x68240,
2887d9db07f0SSricharan R 	.clkr = {
2888d9db07f0SSricharan R 		.enable_reg = 0x68240,
2889d9db07f0SSricharan R 		.enable_mask = BIT(0),
2890d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2891d9db07f0SSricharan R 			.name = "gcc_nss_port1_rx_clk",
2892d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2893d9db07f0SSricharan R 					&nss_port1_rx_div_clk_src.clkr.hw },
2894d9db07f0SSricharan R 			.num_parents = 1,
2895d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2896d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2897d9db07f0SSricharan R 		},
2898d9db07f0SSricharan R 	},
2899d9db07f0SSricharan R };
2900d9db07f0SSricharan R 
2901d9db07f0SSricharan R static struct clk_branch gcc_nss_port1_tx_clk = {
2902d9db07f0SSricharan R 	.halt_reg = 0x68244,
2903d9db07f0SSricharan R 	.clkr = {
2904d9db07f0SSricharan R 		.enable_reg = 0x68244,
2905d9db07f0SSricharan R 		.enable_mask = BIT(0),
2906d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2907d9db07f0SSricharan R 			.name = "gcc_nss_port1_tx_clk",
2908d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2909d9db07f0SSricharan R 					&nss_port1_tx_div_clk_src.clkr.hw },
2910d9db07f0SSricharan R 			.num_parents = 1,
2911d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2912d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2913d9db07f0SSricharan R 		},
2914d9db07f0SSricharan R 	},
2915d9db07f0SSricharan R };
2916d9db07f0SSricharan R 
2917d9db07f0SSricharan R static struct clk_branch gcc_nss_port2_rx_clk = {
2918d9db07f0SSricharan R 	.halt_reg = 0x68248,
2919d9db07f0SSricharan R 	.clkr = {
2920d9db07f0SSricharan R 		.enable_reg = 0x68248,
2921d9db07f0SSricharan R 		.enable_mask = BIT(0),
2922d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2923d9db07f0SSricharan R 			.name = "gcc_nss_port2_rx_clk",
2924d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2925d9db07f0SSricharan R 					&nss_port2_rx_div_clk_src.clkr.hw },
2926d9db07f0SSricharan R 			.num_parents = 1,
2927d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2928d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2929d9db07f0SSricharan R 		},
2930d9db07f0SSricharan R 	},
2931d9db07f0SSricharan R };
2932d9db07f0SSricharan R 
2933d9db07f0SSricharan R static struct clk_branch gcc_nss_port2_tx_clk = {
2934d9db07f0SSricharan R 	.halt_reg = 0x6824c,
2935d9db07f0SSricharan R 	.clkr = {
2936d9db07f0SSricharan R 		.enable_reg = 0x6824c,
2937d9db07f0SSricharan R 		.enable_mask = BIT(0),
2938d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2939d9db07f0SSricharan R 			.name = "gcc_nss_port2_tx_clk",
2940d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2941d9db07f0SSricharan R 					&nss_port2_tx_div_clk_src.clkr.hw },
2942d9db07f0SSricharan R 			.num_parents = 1,
2943d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2944d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2945d9db07f0SSricharan R 		},
2946d9db07f0SSricharan R 	},
2947d9db07f0SSricharan R };
2948d9db07f0SSricharan R 
2949d9db07f0SSricharan R static struct clk_branch gcc_nss_port3_rx_clk = {
2950d9db07f0SSricharan R 	.halt_reg = 0x68250,
2951d9db07f0SSricharan R 	.clkr = {
2952d9db07f0SSricharan R 		.enable_reg = 0x68250,
2953d9db07f0SSricharan R 		.enable_mask = BIT(0),
2954d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2955d9db07f0SSricharan R 			.name = "gcc_nss_port3_rx_clk",
2956d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2957d9db07f0SSricharan R 					&nss_port3_rx_div_clk_src.clkr.hw },
2958d9db07f0SSricharan R 			.num_parents = 1,
2959d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2960d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2961d9db07f0SSricharan R 		},
2962d9db07f0SSricharan R 	},
2963d9db07f0SSricharan R };
2964d9db07f0SSricharan R 
2965d9db07f0SSricharan R static struct clk_branch gcc_nss_port3_tx_clk = {
2966d9db07f0SSricharan R 	.halt_reg = 0x68254,
2967d9db07f0SSricharan R 	.clkr = {
2968d9db07f0SSricharan R 		.enable_reg = 0x68254,
2969d9db07f0SSricharan R 		.enable_mask = BIT(0),
2970d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2971d9db07f0SSricharan R 			.name = "gcc_nss_port3_tx_clk",
2972d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2973d9db07f0SSricharan R 					&nss_port3_tx_div_clk_src.clkr.hw },
2974d9db07f0SSricharan R 			.num_parents = 1,
2975d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2976d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2977d9db07f0SSricharan R 		},
2978d9db07f0SSricharan R 	},
2979d9db07f0SSricharan R };
2980d9db07f0SSricharan R 
2981d9db07f0SSricharan R static struct clk_branch gcc_nss_port4_rx_clk = {
2982d9db07f0SSricharan R 	.halt_reg = 0x68258,
2983d9db07f0SSricharan R 	.clkr = {
2984d9db07f0SSricharan R 		.enable_reg = 0x68258,
2985d9db07f0SSricharan R 		.enable_mask = BIT(0),
2986d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
2987d9db07f0SSricharan R 			.name = "gcc_nss_port4_rx_clk",
2988d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
2989d9db07f0SSricharan R 					&nss_port4_rx_div_clk_src.clkr.hw },
2990d9db07f0SSricharan R 			.num_parents = 1,
2991d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
2992d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
2993d9db07f0SSricharan R 		},
2994d9db07f0SSricharan R 	},
2995d9db07f0SSricharan R };
2996d9db07f0SSricharan R 
2997d9db07f0SSricharan R static struct clk_branch gcc_nss_port4_tx_clk = {
2998d9db07f0SSricharan R 	.halt_reg = 0x6825c,
2999d9db07f0SSricharan R 	.clkr = {
3000d9db07f0SSricharan R 		.enable_reg = 0x6825c,
3001d9db07f0SSricharan R 		.enable_mask = BIT(0),
3002d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3003d9db07f0SSricharan R 			.name = "gcc_nss_port4_tx_clk",
3004d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3005d9db07f0SSricharan R 					&nss_port4_tx_div_clk_src.clkr.hw },
3006d9db07f0SSricharan R 			.num_parents = 1,
3007d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3008d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3009d9db07f0SSricharan R 		},
3010d9db07f0SSricharan R 	},
3011d9db07f0SSricharan R };
3012d9db07f0SSricharan R 
3013d9db07f0SSricharan R static struct clk_branch gcc_nss_port5_rx_clk = {
3014d9db07f0SSricharan R 	.halt_reg = 0x68260,
3015d9db07f0SSricharan R 	.clkr = {
3016d9db07f0SSricharan R 		.enable_reg = 0x68260,
3017d9db07f0SSricharan R 		.enable_mask = BIT(0),
3018d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3019d9db07f0SSricharan R 			.name = "gcc_nss_port5_rx_clk",
3020d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3021d9db07f0SSricharan R 					&nss_port5_rx_div_clk_src.clkr.hw },
3022d9db07f0SSricharan R 			.num_parents = 1,
3023d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3024d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3025d9db07f0SSricharan R 		},
3026d9db07f0SSricharan R 	},
3027d9db07f0SSricharan R };
3028d9db07f0SSricharan R 
3029d9db07f0SSricharan R static struct clk_branch gcc_nss_port5_tx_clk = {
3030d9db07f0SSricharan R 	.halt_reg = 0x68264,
3031d9db07f0SSricharan R 	.clkr = {
3032d9db07f0SSricharan R 		.enable_reg = 0x68264,
3033d9db07f0SSricharan R 		.enable_mask = BIT(0),
3034d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3035d9db07f0SSricharan R 			.name = "gcc_nss_port5_tx_clk",
3036d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3037d9db07f0SSricharan R 					&nss_port5_tx_div_clk_src.clkr.hw },
3038d9db07f0SSricharan R 			.num_parents = 1,
3039d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3040d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3041d9db07f0SSricharan R 		},
3042d9db07f0SSricharan R 	},
3043d9db07f0SSricharan R };
3044d9db07f0SSricharan R 
3045d9db07f0SSricharan R static struct clk_branch gcc_nss_ppe_cfg_clk = {
3046d9db07f0SSricharan R 	.halt_reg = 0x68194,
3047d9db07f0SSricharan R 	.clkr = {
3048d9db07f0SSricharan R 		.enable_reg = 0x68194,
3049d9db07f0SSricharan R 		.enable_mask = BIT(0),
3050d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3051d9db07f0SSricharan R 			.name = "gcc_nss_ppe_cfg_clk",
3052d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3053d9db07f0SSricharan R 					&nss_ppe_clk_src.clkr.hw },
3054d9db07f0SSricharan R 			.num_parents = 1,
3055d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3056d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3057d9db07f0SSricharan R 		},
3058d9db07f0SSricharan R 	},
3059d9db07f0SSricharan R };
3060d9db07f0SSricharan R 
3061d9db07f0SSricharan R static struct clk_branch gcc_nss_ppe_clk = {
3062d9db07f0SSricharan R 	.halt_reg = 0x68190,
3063d9db07f0SSricharan R 	.clkr = {
3064d9db07f0SSricharan R 		.enable_reg = 0x68190,
3065d9db07f0SSricharan R 		.enable_mask = BIT(0),
3066d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3067d9db07f0SSricharan R 			.name = "gcc_nss_ppe_clk",
3068d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3069d9db07f0SSricharan R 					&nss_ppe_clk_src.clkr.hw },
3070d9db07f0SSricharan R 			.num_parents = 1,
3071d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3072d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3073d9db07f0SSricharan R 		},
3074d9db07f0SSricharan R 	},
3075d9db07f0SSricharan R };
3076d9db07f0SSricharan R 
3077d9db07f0SSricharan R static struct clk_branch gcc_nss_ppe_ipe_clk = {
3078d9db07f0SSricharan R 	.halt_reg = 0x68338,
3079d9db07f0SSricharan R 	.clkr = {
3080d9db07f0SSricharan R 		.enable_reg = 0x68338,
3081d9db07f0SSricharan R 		.enable_mask = BIT(0),
3082d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3083d9db07f0SSricharan R 			.name = "gcc_nss_ppe_ipe_clk",
3084d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3085d9db07f0SSricharan R 					&nss_ppe_clk_src.clkr.hw },
3086d9db07f0SSricharan R 			.num_parents = 1,
3087d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3088d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3089d9db07f0SSricharan R 		},
3090d9db07f0SSricharan R 	},
3091d9db07f0SSricharan R };
3092d9db07f0SSricharan R 
3093d9db07f0SSricharan R static struct clk_branch gcc_nss_ptp_ref_clk = {
3094d9db07f0SSricharan R 	.halt_reg = 0x6816C,
3095d9db07f0SSricharan R 	.clkr = {
3096d9db07f0SSricharan R 		.enable_reg = 0x6816C,
3097d9db07f0SSricharan R 		.enable_mask = BIT(0),
3098d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3099d9db07f0SSricharan R 			.name = "gcc_nss_ptp_ref_clk",
3100d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3101d9db07f0SSricharan R 					&nss_ppe_cdiv_clk_src.hw },
3102d9db07f0SSricharan R 			.num_parents = 1,
3103d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3104d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3105d9db07f0SSricharan R 		},
3106d9db07f0SSricharan R 	},
3107d9db07f0SSricharan R };
3108d9db07f0SSricharan R 
3109d9db07f0SSricharan R static struct clk_branch gcc_nssnoc_ce_apb_clk = {
3110d9db07f0SSricharan R 	.halt_reg = 0x6830C,
3111d9db07f0SSricharan R 	.clkr = {
3112d9db07f0SSricharan R 		.enable_reg = 0x6830C,
3113d9db07f0SSricharan R 		.enable_mask = BIT(0),
3114d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3115d9db07f0SSricharan R 			.name = "gcc_nssnoc_ce_apb_clk",
3116d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3117d9db07f0SSricharan R 					&nss_ce_clk_src.clkr.hw },
3118d9db07f0SSricharan R 			.num_parents = 1,
3119d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3120d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3121d9db07f0SSricharan R 		},
3122d9db07f0SSricharan R 	},
3123d9db07f0SSricharan R };
3124d9db07f0SSricharan R 
3125d9db07f0SSricharan R static struct clk_branch gcc_nssnoc_ce_axi_clk = {
3126d9db07f0SSricharan R 	.halt_reg = 0x68308,
3127d9db07f0SSricharan R 	.clkr = {
3128d9db07f0SSricharan R 		.enable_reg = 0x68308,
3129d9db07f0SSricharan R 		.enable_mask = BIT(0),
3130d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3131d9db07f0SSricharan R 			.name = "gcc_nssnoc_ce_axi_clk",
3132d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3133d9db07f0SSricharan R 					&nss_ce_clk_src.clkr.hw },
3134d9db07f0SSricharan R 			.num_parents = 1,
3135d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3136d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3137d9db07f0SSricharan R 		},
3138d9db07f0SSricharan R 	},
3139d9db07f0SSricharan R };
3140d9db07f0SSricharan R 
3141d9db07f0SSricharan R static struct clk_branch gcc_nssnoc_crypto_clk = {
3142d9db07f0SSricharan R 	.halt_reg = 0x68314,
3143d9db07f0SSricharan R 	.clkr = {
3144d9db07f0SSricharan R 		.enable_reg = 0x68314,
3145d9db07f0SSricharan R 		.enable_mask = BIT(0),
3146d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3147d9db07f0SSricharan R 			.name = "gcc_nssnoc_crypto_clk",
3148d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3149d9db07f0SSricharan R 					&nss_crypto_clk_src.clkr.hw },
3150d9db07f0SSricharan R 			.num_parents = 1,
3151d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3152d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3153d9db07f0SSricharan R 		},
3154d9db07f0SSricharan R 	},
3155d9db07f0SSricharan R };
3156d9db07f0SSricharan R 
3157d9db07f0SSricharan R static struct clk_branch gcc_nssnoc_ppe_cfg_clk = {
3158d9db07f0SSricharan R 	.halt_reg = 0x68304,
3159d9db07f0SSricharan R 	.clkr = {
3160d9db07f0SSricharan R 		.enable_reg = 0x68304,
3161d9db07f0SSricharan R 		.enable_mask = BIT(0),
3162d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3163d9db07f0SSricharan R 			.name = "gcc_nssnoc_ppe_cfg_clk",
3164d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3165d9db07f0SSricharan R 					&nss_ppe_clk_src.clkr.hw },
3166d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3167d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3168d9db07f0SSricharan R 		},
3169d9db07f0SSricharan R 	},
3170d9db07f0SSricharan R };
3171d9db07f0SSricharan R 
3172d9db07f0SSricharan R static struct clk_branch gcc_nssnoc_ppe_clk = {
3173d9db07f0SSricharan R 	.halt_reg = 0x68300,
3174d9db07f0SSricharan R 	.clkr = {
3175d9db07f0SSricharan R 		.enable_reg = 0x68300,
3176d9db07f0SSricharan R 		.enable_mask = BIT(0),
3177d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3178d9db07f0SSricharan R 			.name = "gcc_nssnoc_ppe_clk",
3179d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3180d9db07f0SSricharan R 					&nss_ppe_clk_src.clkr.hw },
3181d9db07f0SSricharan R 			.num_parents = 1,
3182d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3183d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3184d9db07f0SSricharan R 		},
3185d9db07f0SSricharan R 	},
3186d9db07f0SSricharan R };
3187d9db07f0SSricharan R 
3188d9db07f0SSricharan R static struct clk_branch gcc_nssnoc_qosgen_ref_clk = {
3189d9db07f0SSricharan R 	.halt_reg = 0x68180,
3190d9db07f0SSricharan R 	.clkr = {
3191d9db07f0SSricharan R 		.enable_reg = 0x68180,
3192d9db07f0SSricharan R 		.enable_mask = BIT(0),
3193d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3194d9db07f0SSricharan R 			.name = "gcc_nssnoc_qosgen_ref_clk",
3195d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3196d9db07f0SSricharan R 					&gcc_xo_clk_src.clkr.hw },
3197d9db07f0SSricharan R 			.num_parents = 1,
3198d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3199d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3200d9db07f0SSricharan R 		},
3201d9db07f0SSricharan R 	},
3202d9db07f0SSricharan R };
3203d9db07f0SSricharan R 
3204d9db07f0SSricharan R static struct clk_branch gcc_nssnoc_snoc_clk = {
3205d9db07f0SSricharan R 	.halt_reg = 0x68188,
3206d9db07f0SSricharan R 	.clkr = {
3207d9db07f0SSricharan R 		.enable_reg = 0x68188,
3208d9db07f0SSricharan R 		.enable_mask = BIT(0),
3209d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3210d9db07f0SSricharan R 			.name = "gcc_nssnoc_snoc_clk",
3211d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3212d9db07f0SSricharan R 					&system_noc_bfdcd_clk_src.clkr.hw },
3213d9db07f0SSricharan R 			.num_parents = 1,
3214d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3215d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3216d9db07f0SSricharan R 		},
3217d9db07f0SSricharan R 	},
3218d9db07f0SSricharan R };
3219d9db07f0SSricharan R 
3220d9db07f0SSricharan R static struct clk_branch gcc_nssnoc_timeout_ref_clk = {
3221d9db07f0SSricharan R 	.halt_reg = 0x68184,
3222d9db07f0SSricharan R 	.clkr = {
3223d9db07f0SSricharan R 		.enable_reg = 0x68184,
3224d9db07f0SSricharan R 		.enable_mask = BIT(0),
3225d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3226d9db07f0SSricharan R 			.name = "gcc_nssnoc_timeout_ref_clk",
3227d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3228d9db07f0SSricharan R 					&gcc_xo_div4_clk_src.hw },
3229d9db07f0SSricharan R 			.num_parents = 1,
3230d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3231d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3232d9db07f0SSricharan R 		},
3233d9db07f0SSricharan R 	},
3234d9db07f0SSricharan R };
3235d9db07f0SSricharan R 
3236d9db07f0SSricharan R static struct clk_branch gcc_nssnoc_ubi0_ahb_clk = {
3237d9db07f0SSricharan R 	.halt_reg = 0x68270,
3238d9db07f0SSricharan R 	.clkr = {
3239d9db07f0SSricharan R 		.enable_reg = 0x68270,
3240d9db07f0SSricharan R 		.enable_mask = BIT(0),
3241d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3242d9db07f0SSricharan R 			.name = "gcc_nssnoc_ubi0_ahb_clk",
3243d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3244d9db07f0SSricharan R 					&nss_ce_clk_src.clkr.hw },
3245d9db07f0SSricharan R 			.num_parents = 1,
3246d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3247d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3248d9db07f0SSricharan R 		},
3249d9db07f0SSricharan R 	},
3250d9db07f0SSricharan R };
3251d9db07f0SSricharan R 
3252d9db07f0SSricharan R static struct clk_branch gcc_port1_mac_clk = {
3253d9db07f0SSricharan R 	.halt_reg = 0x68320,
3254d9db07f0SSricharan R 	.clkr = {
3255d9db07f0SSricharan R 		.enable_reg = 0x68320,
3256d9db07f0SSricharan R 		.enable_mask = BIT(0),
3257d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3258d9db07f0SSricharan R 			.name = "gcc_port1_mac_clk",
3259d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3260d9db07f0SSricharan R 					&nss_ppe_clk_src.clkr.hw },
3261d9db07f0SSricharan R 			.num_parents = 1,
3262d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3263d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3264d9db07f0SSricharan R 		},
3265d9db07f0SSricharan R 	},
3266d9db07f0SSricharan R };
3267d9db07f0SSricharan R 
3268d9db07f0SSricharan R static struct clk_branch gcc_port2_mac_clk = {
3269d9db07f0SSricharan R 	.halt_reg = 0x68324,
3270d9db07f0SSricharan R 	.clkr = {
3271d9db07f0SSricharan R 		.enable_reg = 0x68324,
3272d9db07f0SSricharan R 		.enable_mask = BIT(0),
3273d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3274d9db07f0SSricharan R 			.name = "gcc_port2_mac_clk",
3275d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3276d9db07f0SSricharan R 					&nss_ppe_clk_src.clkr.hw },
3277d9db07f0SSricharan R 			.num_parents = 1,
3278d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3279d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3280d9db07f0SSricharan R 		},
3281d9db07f0SSricharan R 	},
3282d9db07f0SSricharan R };
3283d9db07f0SSricharan R 
3284d9db07f0SSricharan R static struct clk_branch gcc_port3_mac_clk = {
3285d9db07f0SSricharan R 	.halt_reg = 0x68328,
3286d9db07f0SSricharan R 	.clkr = {
3287d9db07f0SSricharan R 		.enable_reg = 0x68328,
3288d9db07f0SSricharan R 		.enable_mask = BIT(0),
3289d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3290d9db07f0SSricharan R 			.name = "gcc_port3_mac_clk",
3291d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3292d9db07f0SSricharan R 					&nss_ppe_clk_src.clkr.hw },
3293d9db07f0SSricharan R 			.num_parents = 1,
3294d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3295d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3296d9db07f0SSricharan R 		},
3297d9db07f0SSricharan R 	},
3298d9db07f0SSricharan R };
3299d9db07f0SSricharan R 
3300d9db07f0SSricharan R static struct clk_branch gcc_port4_mac_clk = {
3301d9db07f0SSricharan R 	.halt_reg = 0x6832c,
3302d9db07f0SSricharan R 	.clkr = {
3303d9db07f0SSricharan R 		.enable_reg = 0x6832c,
3304d9db07f0SSricharan R 		.enable_mask = BIT(0),
3305d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3306d9db07f0SSricharan R 			.name = "gcc_port4_mac_clk",
3307d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3308d9db07f0SSricharan R 					&nss_ppe_clk_src.clkr.hw },
3309d9db07f0SSricharan R 			.num_parents = 1,
3310d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3311d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3312d9db07f0SSricharan R 		},
3313d9db07f0SSricharan R 	},
3314d9db07f0SSricharan R };
3315d9db07f0SSricharan R 
3316d9db07f0SSricharan R static struct clk_branch gcc_port5_mac_clk = {
3317d9db07f0SSricharan R 	.halt_reg = 0x68330,
3318d9db07f0SSricharan R 	.clkr = {
3319d9db07f0SSricharan R 		.enable_reg = 0x68330,
3320d9db07f0SSricharan R 		.enable_mask = BIT(0),
3321d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3322d9db07f0SSricharan R 			.name = "gcc_port5_mac_clk",
3323d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3324d9db07f0SSricharan R 					&nss_ppe_clk_src.clkr.hw },
3325d9db07f0SSricharan R 			.num_parents = 1,
3326d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3327d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3328d9db07f0SSricharan R 		},
3329d9db07f0SSricharan R 	},
3330d9db07f0SSricharan R };
3331d9db07f0SSricharan R 
3332d9db07f0SSricharan R static struct clk_branch gcc_ubi0_ahb_clk = {
3333d9db07f0SSricharan R 	.halt_reg = 0x6820C,
3334d9db07f0SSricharan R 	.halt_check = BRANCH_HALT_DELAY,
3335d9db07f0SSricharan R 	.clkr = {
3336d9db07f0SSricharan R 		.enable_reg = 0x6820C,
3337d9db07f0SSricharan R 		.enable_mask = BIT(0),
3338d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3339d9db07f0SSricharan R 			.name = "gcc_ubi0_ahb_clk",
3340d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3341d9db07f0SSricharan R 					&nss_ce_clk_src.clkr.hw },
3342d9db07f0SSricharan R 			.num_parents = 1,
3343d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3344d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3345d9db07f0SSricharan R 		},
3346d9db07f0SSricharan R 	},
3347d9db07f0SSricharan R };
3348d9db07f0SSricharan R 
3349d9db07f0SSricharan R static struct clk_branch gcc_ubi0_axi_clk = {
3350d9db07f0SSricharan R 	.halt_reg = 0x68200,
3351d9db07f0SSricharan R 	.halt_check = BRANCH_HALT_DELAY,
3352d9db07f0SSricharan R 	.clkr = {
3353d9db07f0SSricharan R 		.enable_reg = 0x68200,
3354d9db07f0SSricharan R 		.enable_mask = BIT(0),
3355d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3356d9db07f0SSricharan R 			.name = "gcc_ubi0_axi_clk",
3357d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3358d9db07f0SSricharan R 					&ubi32_mem_noc_bfdcd_clk_src.clkr.hw },
3359d9db07f0SSricharan R 			.num_parents = 1,
3360d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3361d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3362d9db07f0SSricharan R 		},
3363d9db07f0SSricharan R 	},
3364d9db07f0SSricharan R };
3365d9db07f0SSricharan R 
3366d9db07f0SSricharan R static struct clk_branch gcc_ubi0_nc_axi_clk = {
3367d9db07f0SSricharan R 	.halt_reg = 0x68204,
3368d9db07f0SSricharan R 	.halt_check = BRANCH_HALT_DELAY,
3369d9db07f0SSricharan R 	.clkr = {
3370d9db07f0SSricharan R 		.enable_reg = 0x68204,
3371d9db07f0SSricharan R 		.enable_mask = BIT(0),
3372d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3373d9db07f0SSricharan R 			.name = "gcc_ubi0_nc_axi_clk",
3374d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3375d9db07f0SSricharan R 					&snoc_nssnoc_bfdcd_clk_src.clkr.hw },
3376d9db07f0SSricharan R 			.num_parents = 1,
3377d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3378d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3379d9db07f0SSricharan R 		},
3380d9db07f0SSricharan R 	},
3381d9db07f0SSricharan R };
3382d9db07f0SSricharan R 
3383d9db07f0SSricharan R static struct clk_branch gcc_ubi0_core_clk = {
3384d9db07f0SSricharan R 	.halt_reg = 0x68210,
3385d9db07f0SSricharan R 	.halt_check = BRANCH_HALT_DELAY,
3386d9db07f0SSricharan R 	.clkr = {
3387d9db07f0SSricharan R 		.enable_reg = 0x68210,
3388d9db07f0SSricharan R 		.enable_mask = BIT(0),
3389d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3390d9db07f0SSricharan R 			.name = "gcc_ubi0_core_clk",
3391d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3392d9db07f0SSricharan R 					&nss_ubi0_div_clk_src.clkr.hw },
3393d9db07f0SSricharan R 			.num_parents = 1,
3394d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3395d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3396d9db07f0SSricharan R 		},
3397d9db07f0SSricharan R 	},
3398d9db07f0SSricharan R };
3399d9db07f0SSricharan R 
3400d9db07f0SSricharan R static struct clk_branch gcc_pcie0_ahb_clk = {
3401d9db07f0SSricharan R 	.halt_reg = 0x75010,
3402d9db07f0SSricharan R 	.clkr = {
3403d9db07f0SSricharan R 		.enable_reg = 0x75010,
3404d9db07f0SSricharan R 		.enable_mask = BIT(0),
3405d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3406d9db07f0SSricharan R 			.name = "gcc_pcie0_ahb_clk",
3407d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3408d9db07f0SSricharan R 					&pcnoc_bfdcd_clk_src.clkr.hw },
3409d9db07f0SSricharan R 			.num_parents = 1,
3410d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3411d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3412d9db07f0SSricharan R 		},
3413d9db07f0SSricharan R 	},
3414d9db07f0SSricharan R };
3415d9db07f0SSricharan R 
3416d9db07f0SSricharan R static struct clk_branch gcc_pcie0_aux_clk = {
3417d9db07f0SSricharan R 	.halt_reg = 0x75014,
3418d9db07f0SSricharan R 	.clkr = {
3419d9db07f0SSricharan R 		.enable_reg = 0x75014,
3420d9db07f0SSricharan R 		.enable_mask = BIT(0),
3421d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3422d9db07f0SSricharan R 			.name = "gcc_pcie0_aux_clk",
3423d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3424d9db07f0SSricharan R 					&pcie0_aux_clk_src.clkr.hw },
3425d9db07f0SSricharan R 			.num_parents = 1,
3426d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3427d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3428d9db07f0SSricharan R 		},
3429d9db07f0SSricharan R 	},
3430d9db07f0SSricharan R };
3431d9db07f0SSricharan R 
3432d9db07f0SSricharan R static struct clk_branch gcc_pcie0_axi_m_clk = {
3433d9db07f0SSricharan R 	.halt_reg = 0x75008,
3434d9db07f0SSricharan R 	.clkr = {
3435d9db07f0SSricharan R 		.enable_reg = 0x75008,
3436d9db07f0SSricharan R 		.enable_mask = BIT(0),
3437d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3438d9db07f0SSricharan R 			.name = "gcc_pcie0_axi_m_clk",
3439d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3440d9db07f0SSricharan R 					&pcie0_axi_clk_src.clkr.hw },
3441d9db07f0SSricharan R 			.num_parents = 1,
3442d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3443d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3444d9db07f0SSricharan R 		},
3445d9db07f0SSricharan R 	},
3446d9db07f0SSricharan R };
3447d9db07f0SSricharan R 
3448d9db07f0SSricharan R static struct clk_branch gcc_pcie0_axi_s_clk = {
3449d9db07f0SSricharan R 	.halt_reg = 0x7500c,
3450d9db07f0SSricharan R 	.clkr = {
3451d9db07f0SSricharan R 		.enable_reg = 0x7500c,
3452d9db07f0SSricharan R 		.enable_mask = BIT(0),
3453d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3454d9db07f0SSricharan R 			.name = "gcc_pcie0_axi_s_clk",
3455d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3456d9db07f0SSricharan R 					&pcie0_axi_clk_src.clkr.hw },
3457d9db07f0SSricharan R 			.num_parents = 1,
3458d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3459d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3460d9db07f0SSricharan R 		},
3461d9db07f0SSricharan R 	},
3462d9db07f0SSricharan R };
3463d9db07f0SSricharan R 
3464d9db07f0SSricharan R static struct clk_branch gcc_sys_noc_pcie0_axi_clk = {
3465d9db07f0SSricharan R 	.halt_reg = 0x26048,
3466d9db07f0SSricharan R 	.clkr = {
3467d9db07f0SSricharan R 		.enable_reg = 0x26048,
3468d9db07f0SSricharan R 		.enable_mask = BIT(0),
3469d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3470d9db07f0SSricharan R 			.name = "gcc_sys_noc_pcie0_axi_clk",
3471d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3472d9db07f0SSricharan R 					&pcie0_axi_clk_src.clkr.hw },
3473d9db07f0SSricharan R 			.num_parents = 1,
3474d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3475d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3476d9db07f0SSricharan R 		},
3477d9db07f0SSricharan R 	},
3478d9db07f0SSricharan R };
3479d9db07f0SSricharan R 
3480d9db07f0SSricharan R static struct clk_branch gcc_pcie0_pipe_clk = {
3481d9db07f0SSricharan R 	.halt_reg = 0x75018,
3482d9db07f0SSricharan R 	.halt_check = BRANCH_HALT_DELAY,
3483d9db07f0SSricharan R 	.clkr = {
3484d9db07f0SSricharan R 		.enable_reg = 0x75018,
3485d9db07f0SSricharan R 		.enable_mask = BIT(0),
3486d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3487d9db07f0SSricharan R 			.name = "gcc_pcie0_pipe_clk",
3488d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3489d9db07f0SSricharan R 					&pcie0_pipe_clk_src.clkr.hw },
3490d9db07f0SSricharan R 			.num_parents = 1,
3491d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3492d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3493d9db07f0SSricharan R 		},
3494d9db07f0SSricharan R 	},
3495d9db07f0SSricharan R };
3496d9db07f0SSricharan R 
3497d9db07f0SSricharan R static struct clk_branch gcc_prng_ahb_clk = {
3498d9db07f0SSricharan R 	.halt_reg = 0x13004,
3499d9db07f0SSricharan R 	.halt_check = BRANCH_HALT_VOTED,
3500d9db07f0SSricharan R 	.clkr = {
3501d9db07f0SSricharan R 		.enable_reg = 0x0b004,
3502d9db07f0SSricharan R 		.enable_mask = BIT(8),
3503d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3504d9db07f0SSricharan R 			.name = "gcc_prng_ahb_clk",
3505d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3506d9db07f0SSricharan R 					&pcnoc_bfdcd_clk_src.clkr.hw },
3507d9db07f0SSricharan R 			.num_parents = 1,
3508d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3509d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3510d9db07f0SSricharan R 		},
3511d9db07f0SSricharan R 	},
3512d9db07f0SSricharan R };
3513d9db07f0SSricharan R 
3514d9db07f0SSricharan R static struct clk_branch gcc_qdss_dap_clk = {
3515d9db07f0SSricharan R 	.halt_reg = 0x29084,
3516d9db07f0SSricharan R 	.clkr = {
3517d9db07f0SSricharan R 		.enable_reg = 0x29084,
3518d9db07f0SSricharan R 		.enable_mask = BIT(0),
3519d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3520d9db07f0SSricharan R 			.name = "gcc_qdss_dap_clk",
3521d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3522d9db07f0SSricharan R 					&qdss_dap_sync_clk_src.hw },
3523d9db07f0SSricharan R 			.num_parents = 1,
3524d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3525d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3526d9db07f0SSricharan R 		},
3527d9db07f0SSricharan R 	},
3528d9db07f0SSricharan R };
3529d9db07f0SSricharan R 
3530d9db07f0SSricharan R static struct clk_branch gcc_qpic_ahb_clk = {
3531d9db07f0SSricharan R 	.halt_reg = 0x57024,
3532d9db07f0SSricharan R 	.clkr = {
3533d9db07f0SSricharan R 		.enable_reg = 0x57024,
3534d9db07f0SSricharan R 		.enable_mask = BIT(0),
3535d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3536d9db07f0SSricharan R 			.name = "gcc_qpic_ahb_clk",
3537d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3538d9db07f0SSricharan R 					&pcnoc_bfdcd_clk_src.clkr.hw },
3539d9db07f0SSricharan R 			.num_parents = 1,
3540d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3541d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3542d9db07f0SSricharan R 		},
3543d9db07f0SSricharan R 	},
3544d9db07f0SSricharan R };
3545d9db07f0SSricharan R 
3546d9db07f0SSricharan R static struct clk_branch gcc_qpic_clk = {
3547d9db07f0SSricharan R 	.halt_reg = 0x57020,
3548d9db07f0SSricharan R 	.clkr = {
3549d9db07f0SSricharan R 		.enable_reg = 0x57020,
3550d9db07f0SSricharan R 		.enable_mask = BIT(0),
3551d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3552d9db07f0SSricharan R 			.name = "gcc_qpic_clk",
3553d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3554d9db07f0SSricharan R 					&pcnoc_bfdcd_clk_src.clkr.hw },
3555d9db07f0SSricharan R 			.num_parents = 1,
3556d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3557d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3558d9db07f0SSricharan R 		},
3559d9db07f0SSricharan R 	},
3560d9db07f0SSricharan R };
3561d9db07f0SSricharan R 
3562d9db07f0SSricharan R static struct clk_branch gcc_sdcc1_ahb_clk = {
3563d9db07f0SSricharan R 	.halt_reg = 0x4201c,
3564d9db07f0SSricharan R 	.clkr = {
3565d9db07f0SSricharan R 		.enable_reg = 0x4201c,
3566d9db07f0SSricharan R 		.enable_mask = BIT(0),
3567d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3568d9db07f0SSricharan R 			.name = "gcc_sdcc1_ahb_clk",
3569d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3570d9db07f0SSricharan R 					&pcnoc_bfdcd_clk_src.clkr.hw },
3571d9db07f0SSricharan R 			.num_parents = 1,
3572d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3573d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3574d9db07f0SSricharan R 		},
3575d9db07f0SSricharan R 	},
3576d9db07f0SSricharan R };
3577d9db07f0SSricharan R 
3578d9db07f0SSricharan R static struct clk_branch gcc_sdcc1_apps_clk = {
3579d9db07f0SSricharan R 	.halt_reg = 0x42018,
3580d9db07f0SSricharan R 	.clkr = {
3581d9db07f0SSricharan R 		.enable_reg = 0x42018,
3582d9db07f0SSricharan R 		.enable_mask = BIT(0),
3583d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3584d9db07f0SSricharan R 			.name = "gcc_sdcc1_apps_clk",
3585d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3586d9db07f0SSricharan R 					&sdcc1_apps_clk_src.clkr.hw },
3587d9db07f0SSricharan R 			.num_parents = 1,
3588d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3589d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3590d9db07f0SSricharan R 		},
3591d9db07f0SSricharan R 	},
3592d9db07f0SSricharan R };
3593d9db07f0SSricharan R 
3594d9db07f0SSricharan R static struct clk_branch gcc_uniphy0_ahb_clk = {
3595d9db07f0SSricharan R 	.halt_reg = 0x56008,
3596d9db07f0SSricharan R 	.clkr = {
3597d9db07f0SSricharan R 		.enable_reg = 0x56008,
3598d9db07f0SSricharan R 		.enable_mask = BIT(0),
3599d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3600d9db07f0SSricharan R 			.name = "gcc_uniphy0_ahb_clk",
3601d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3602d9db07f0SSricharan R 					&pcnoc_bfdcd_clk_src.clkr.hw },
3603d9db07f0SSricharan R 			.num_parents = 1,
3604d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3605d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3606d9db07f0SSricharan R 		},
3607d9db07f0SSricharan R 	},
3608d9db07f0SSricharan R };
3609d9db07f0SSricharan R 
3610d9db07f0SSricharan R static struct clk_branch gcc_uniphy0_port1_rx_clk = {
3611d9db07f0SSricharan R 	.halt_reg = 0x56010,
3612d9db07f0SSricharan R 	.clkr = {
3613d9db07f0SSricharan R 		.enable_reg = 0x56010,
3614d9db07f0SSricharan R 		.enable_mask = BIT(0),
3615d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3616d9db07f0SSricharan R 			.name = "gcc_uniphy0_port1_rx_clk",
3617d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3618d9db07f0SSricharan R 					&nss_port1_rx_div_clk_src.clkr.hw },
3619d9db07f0SSricharan R 			.num_parents = 1,
3620d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3621d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3622d9db07f0SSricharan R 		},
3623d9db07f0SSricharan R 	},
3624d9db07f0SSricharan R };
3625d9db07f0SSricharan R 
3626d9db07f0SSricharan R static struct clk_branch gcc_uniphy0_port1_tx_clk = {
3627d9db07f0SSricharan R 	.halt_reg = 0x56014,
3628d9db07f0SSricharan R 	.clkr = {
3629d9db07f0SSricharan R 		.enable_reg = 0x56014,
3630d9db07f0SSricharan R 		.enable_mask = BIT(0),
3631d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3632d9db07f0SSricharan R 			.name = "gcc_uniphy0_port1_tx_clk",
3633d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3634d9db07f0SSricharan R 					&nss_port1_tx_div_clk_src.clkr.hw },
3635d9db07f0SSricharan R 			.num_parents = 1,
3636d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3637d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3638d9db07f0SSricharan R 		},
3639d9db07f0SSricharan R 	},
3640d9db07f0SSricharan R };
3641d9db07f0SSricharan R 
3642d9db07f0SSricharan R static struct clk_branch gcc_uniphy0_port2_rx_clk = {
3643d9db07f0SSricharan R 	.halt_reg = 0x56018,
3644d9db07f0SSricharan R 	.clkr = {
3645d9db07f0SSricharan R 		.enable_reg = 0x56018,
3646d9db07f0SSricharan R 		.enable_mask = BIT(0),
3647d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3648d9db07f0SSricharan R 			.name = "gcc_uniphy0_port2_rx_clk",
3649d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3650d9db07f0SSricharan R 					&nss_port2_rx_div_clk_src.clkr.hw },
3651d9db07f0SSricharan R 			.num_parents = 1,
3652d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3653d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3654d9db07f0SSricharan R 		},
3655d9db07f0SSricharan R 	},
3656d9db07f0SSricharan R };
3657d9db07f0SSricharan R 
3658d9db07f0SSricharan R static struct clk_branch gcc_uniphy0_port2_tx_clk = {
3659d9db07f0SSricharan R 	.halt_reg = 0x5601c,
3660d9db07f0SSricharan R 	.clkr = {
3661d9db07f0SSricharan R 		.enable_reg = 0x5601c,
3662d9db07f0SSricharan R 		.enable_mask = BIT(0),
3663d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3664d9db07f0SSricharan R 			.name = "gcc_uniphy0_port2_tx_clk",
3665d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3666d9db07f0SSricharan R 					&nss_port2_tx_div_clk_src.clkr.hw },
3667d9db07f0SSricharan R 			.num_parents = 1,
3668d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3669d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3670d9db07f0SSricharan R 		},
3671d9db07f0SSricharan R 	},
3672d9db07f0SSricharan R };
3673d9db07f0SSricharan R 
3674d9db07f0SSricharan R static struct clk_branch gcc_uniphy0_port3_rx_clk = {
3675d9db07f0SSricharan R 	.halt_reg = 0x56020,
3676d9db07f0SSricharan R 	.clkr = {
3677d9db07f0SSricharan R 		.enable_reg = 0x56020,
3678d9db07f0SSricharan R 		.enable_mask = BIT(0),
3679d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3680d9db07f0SSricharan R 			.name = "gcc_uniphy0_port3_rx_clk",
3681d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3682d9db07f0SSricharan R 					&nss_port3_rx_div_clk_src.clkr.hw },
3683d9db07f0SSricharan R 			.num_parents = 1,
3684d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3685d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3686d9db07f0SSricharan R 		},
3687d9db07f0SSricharan R 	},
3688d9db07f0SSricharan R };
3689d9db07f0SSricharan R 
3690d9db07f0SSricharan R static struct clk_branch gcc_uniphy0_port3_tx_clk = {
3691d9db07f0SSricharan R 	.halt_reg = 0x56024,
3692d9db07f0SSricharan R 	.clkr = {
3693d9db07f0SSricharan R 		.enable_reg = 0x56024,
3694d9db07f0SSricharan R 		.enable_mask = BIT(0),
3695d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3696d9db07f0SSricharan R 			.name = "gcc_uniphy0_port3_tx_clk",
3697d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3698d9db07f0SSricharan R 					&nss_port3_tx_div_clk_src.clkr.hw },
3699d9db07f0SSricharan R 			.num_parents = 1,
3700d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3701d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3702d9db07f0SSricharan R 		},
3703d9db07f0SSricharan R 	},
3704d9db07f0SSricharan R };
3705d9db07f0SSricharan R 
3706d9db07f0SSricharan R static struct clk_branch gcc_uniphy0_port4_rx_clk = {
3707d9db07f0SSricharan R 	.halt_reg = 0x56028,
3708d9db07f0SSricharan R 	.clkr = {
3709d9db07f0SSricharan R 		.enable_reg = 0x56028,
3710d9db07f0SSricharan R 		.enable_mask = BIT(0),
3711d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3712d9db07f0SSricharan R 			.name = "gcc_uniphy0_port4_rx_clk",
3713d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3714d9db07f0SSricharan R 					&nss_port4_rx_div_clk_src.clkr.hw },
3715d9db07f0SSricharan R 			.num_parents = 1,
3716d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3717d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3718d9db07f0SSricharan R 		},
3719d9db07f0SSricharan R 	},
3720d9db07f0SSricharan R };
3721d9db07f0SSricharan R 
3722d9db07f0SSricharan R static struct clk_branch gcc_uniphy0_port4_tx_clk = {
3723d9db07f0SSricharan R 	.halt_reg = 0x5602c,
3724d9db07f0SSricharan R 	.clkr = {
3725d9db07f0SSricharan R 		.enable_reg = 0x5602c,
3726d9db07f0SSricharan R 		.enable_mask = BIT(0),
3727d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3728d9db07f0SSricharan R 			.name = "gcc_uniphy0_port4_tx_clk",
3729d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3730d9db07f0SSricharan R 					&nss_port4_tx_div_clk_src.clkr.hw },
3731d9db07f0SSricharan R 			.num_parents = 1,
3732d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3733d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3734d9db07f0SSricharan R 		},
3735d9db07f0SSricharan R 	},
3736d9db07f0SSricharan R };
3737d9db07f0SSricharan R 
3738d9db07f0SSricharan R static struct clk_branch gcc_uniphy0_port5_rx_clk = {
3739d9db07f0SSricharan R 	.halt_reg = 0x56030,
3740d9db07f0SSricharan R 	.clkr = {
3741d9db07f0SSricharan R 		.enable_reg = 0x56030,
3742d9db07f0SSricharan R 		.enable_mask = BIT(0),
3743d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3744d9db07f0SSricharan R 			.name = "gcc_uniphy0_port5_rx_clk",
3745d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3746d9db07f0SSricharan R 					&nss_port5_rx_div_clk_src.clkr.hw },
3747d9db07f0SSricharan R 			.num_parents = 1,
3748d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3749d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3750d9db07f0SSricharan R 		},
3751d9db07f0SSricharan R 	},
3752d9db07f0SSricharan R };
3753d9db07f0SSricharan R 
3754d9db07f0SSricharan R static struct clk_branch gcc_uniphy0_port5_tx_clk = {
3755d9db07f0SSricharan R 	.halt_reg = 0x56034,
3756d9db07f0SSricharan R 	.clkr = {
3757d9db07f0SSricharan R 		.enable_reg = 0x56034,
3758d9db07f0SSricharan R 		.enable_mask = BIT(0),
3759d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3760d9db07f0SSricharan R 			.name = "gcc_uniphy0_port5_tx_clk",
3761d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3762d9db07f0SSricharan R 					&nss_port5_tx_div_clk_src.clkr.hw },
3763d9db07f0SSricharan R 			.num_parents = 1,
3764d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3765d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3766d9db07f0SSricharan R 		},
3767d9db07f0SSricharan R 	},
3768d9db07f0SSricharan R };
3769d9db07f0SSricharan R 
3770d9db07f0SSricharan R static struct clk_branch gcc_uniphy0_sys_clk = {
3771d9db07f0SSricharan R 	.halt_reg = 0x5600C,
3772d9db07f0SSricharan R 	.clkr = {
3773d9db07f0SSricharan R 		.enable_reg = 0x5600C,
3774d9db07f0SSricharan R 		.enable_mask = BIT(0),
3775d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3776d9db07f0SSricharan R 			.name = "gcc_uniphy0_sys_clk",
3777d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3778d9db07f0SSricharan R 					&gcc_xo_clk_src.clkr.hw },
3779d9db07f0SSricharan R 			.num_parents = 1,
3780d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3781d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3782d9db07f0SSricharan R 		},
3783d9db07f0SSricharan R 	},
3784d9db07f0SSricharan R };
3785d9db07f0SSricharan R 
3786d9db07f0SSricharan R static struct clk_branch gcc_uniphy1_ahb_clk = {
3787d9db07f0SSricharan R 	.halt_reg = 0x56108,
3788d9db07f0SSricharan R 	.clkr = {
3789d9db07f0SSricharan R 		.enable_reg = 0x56108,
3790d9db07f0SSricharan R 		.enable_mask = BIT(0),
3791d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3792d9db07f0SSricharan R 			.name = "gcc_uniphy1_ahb_clk",
3793d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3794d9db07f0SSricharan R 					&pcnoc_bfdcd_clk_src.clkr.hw },
3795d9db07f0SSricharan R 			.num_parents = 1,
3796d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3797d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3798d9db07f0SSricharan R 		},
3799d9db07f0SSricharan R 	},
3800d9db07f0SSricharan R };
3801d9db07f0SSricharan R 
3802d9db07f0SSricharan R static struct clk_branch gcc_uniphy1_port5_rx_clk = {
3803d9db07f0SSricharan R 	.halt_reg = 0x56110,
3804d9db07f0SSricharan R 	.clkr = {
3805d9db07f0SSricharan R 		.enable_reg = 0x56110,
3806d9db07f0SSricharan R 		.enable_mask = BIT(0),
3807d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3808d9db07f0SSricharan R 			.name = "gcc_uniphy1_port5_rx_clk",
3809d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3810d9db07f0SSricharan R 					&nss_port5_rx_div_clk_src.clkr.hw },
3811d9db07f0SSricharan R 			.num_parents = 1,
3812d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3813d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3814d9db07f0SSricharan R 		},
3815d9db07f0SSricharan R 	},
3816d9db07f0SSricharan R };
3817d9db07f0SSricharan R 
3818d9db07f0SSricharan R static struct clk_branch gcc_uniphy1_port5_tx_clk = {
3819d9db07f0SSricharan R 	.halt_reg = 0x56114,
3820d9db07f0SSricharan R 	.clkr = {
3821d9db07f0SSricharan R 		.enable_reg = 0x56114,
3822d9db07f0SSricharan R 		.enable_mask = BIT(0),
3823d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3824d9db07f0SSricharan R 			.name = "gcc_uniphy1_port5_tx_clk",
3825d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3826d9db07f0SSricharan R 					&nss_port5_tx_div_clk_src.clkr.hw },
3827d9db07f0SSricharan R 			.num_parents = 1,
3828d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3829d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3830d9db07f0SSricharan R 		},
3831d9db07f0SSricharan R 	},
3832d9db07f0SSricharan R };
3833d9db07f0SSricharan R 
3834d9db07f0SSricharan R static struct clk_branch gcc_uniphy1_sys_clk = {
3835d9db07f0SSricharan R 	.halt_reg = 0x5610C,
3836d9db07f0SSricharan R 	.clkr = {
3837d9db07f0SSricharan R 		.enable_reg = 0x5610C,
3838d9db07f0SSricharan R 		.enable_mask = BIT(0),
3839d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3840d9db07f0SSricharan R 			.name = "gcc_uniphy1_sys_clk",
3841d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3842d9db07f0SSricharan R 					&gcc_xo_clk_src.clkr.hw },
3843d9db07f0SSricharan R 			.num_parents = 1,
3844d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3845d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3846d9db07f0SSricharan R 		},
3847d9db07f0SSricharan R 	},
3848d9db07f0SSricharan R };
3849d9db07f0SSricharan R 
3850d9db07f0SSricharan R static struct clk_branch gcc_usb0_aux_clk = {
3851d9db07f0SSricharan R 	.halt_reg = 0x3e044,
3852d9db07f0SSricharan R 	.clkr = {
3853d9db07f0SSricharan R 		.enable_reg = 0x3e044,
3854d9db07f0SSricharan R 		.enable_mask = BIT(0),
3855d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3856d9db07f0SSricharan R 			.name = "gcc_usb0_aux_clk",
3857d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3858d9db07f0SSricharan R 					&usb0_aux_clk_src.clkr.hw },
3859d9db07f0SSricharan R 			.num_parents = 1,
3860d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3861d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3862d9db07f0SSricharan R 		},
3863d9db07f0SSricharan R 	},
3864d9db07f0SSricharan R };
3865d9db07f0SSricharan R 
3866d9db07f0SSricharan R static struct clk_branch gcc_usb0_master_clk = {
3867d9db07f0SSricharan R 	.halt_reg = 0x3e000,
3868d9db07f0SSricharan R 	.clkr = {
3869d9db07f0SSricharan R 		.enable_reg = 0x3e000,
3870d9db07f0SSricharan R 		.enable_mask = BIT(0),
3871d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3872d9db07f0SSricharan R 			.name = "gcc_usb0_master_clk",
3873d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3874d9db07f0SSricharan R 					&usb0_master_clk_src.clkr.hw },
3875d9db07f0SSricharan R 			.num_parents = 1,
3876d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3877d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3878d9db07f0SSricharan R 		},
3879d9db07f0SSricharan R 	},
3880d9db07f0SSricharan R };
3881d9db07f0SSricharan R 
3882d9db07f0SSricharan R static struct clk_branch gcc_snoc_bus_timeout2_ahb_clk = {
3883d9db07f0SSricharan R 	.halt_reg = 0x47014,
3884d9db07f0SSricharan R 	.clkr = {
3885d9db07f0SSricharan R 		.enable_reg = 0x47014,
3886d9db07f0SSricharan R 		.enable_mask = BIT(0),
3887d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3888d9db07f0SSricharan R 			.name = "gcc_snoc_bus_timeout2_ahb_clk",
3889d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3890d9db07f0SSricharan R 					&usb0_master_clk_src.clkr.hw },
3891d9db07f0SSricharan R 			.num_parents = 1,
3892d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3893d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3894d9db07f0SSricharan R 		},
3895d9db07f0SSricharan R 	},
3896d9db07f0SSricharan R };
3897d9db07f0SSricharan R 
3898d9db07f0SSricharan R static struct clk_rcg2 pcie0_rchng_clk_src = {
3899d9db07f0SSricharan R 	.cmd_rcgr = 0x75070,
3900d9db07f0SSricharan R 	.freq_tbl = ftbl_pcie_rchng_clk_src,
3901d9db07f0SSricharan R 	.hid_width = 5,
3902d9db07f0SSricharan R 	.parent_map = gcc_xo_gpll0_map,
3903d9db07f0SSricharan R 	.clkr.hw.init = &(struct clk_init_data){
3904d9db07f0SSricharan R 		.name = "pcie0_rchng_clk_src",
3905d9db07f0SSricharan R 		.parent_data = gcc_xo_gpll0,
3906d9db07f0SSricharan R 		.num_parents = 2,
3907d9db07f0SSricharan R 		.ops = &clk_rcg2_ops,
3908d9db07f0SSricharan R 	},
3909d9db07f0SSricharan R };
3910d9db07f0SSricharan R 
3911d9db07f0SSricharan R static struct clk_branch gcc_pcie0_rchng_clk = {
3912d9db07f0SSricharan R 	.halt_reg = 0x75070,
3913d9db07f0SSricharan R 	.clkr = {
3914d9db07f0SSricharan R 		.enable_reg = 0x75070,
3915d9db07f0SSricharan R 		.enable_mask = BIT(1),
3916d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3917d9db07f0SSricharan R 			.name = "gcc_pcie0_rchng_clk",
3918d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3919d9db07f0SSricharan R 					&pcie0_rchng_clk_src.clkr.hw },
3920d9db07f0SSricharan R 			.num_parents = 1,
3921d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3922d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3923d9db07f0SSricharan R 		},
3924d9db07f0SSricharan R 	},
3925d9db07f0SSricharan R };
3926d9db07f0SSricharan R 
3927d9db07f0SSricharan R static struct clk_branch gcc_pcie0_axi_s_bridge_clk = {
3928d9db07f0SSricharan R 	.halt_reg = 0x75048,
3929d9db07f0SSricharan R 	.clkr = {
3930d9db07f0SSricharan R 		.enable_reg = 0x75048,
3931d9db07f0SSricharan R 		.enable_mask = BIT(0),
3932d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3933d9db07f0SSricharan R 			.name = "gcc_pcie0_axi_s_bridge_clk",
3934d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3935d9db07f0SSricharan R 					&pcie0_axi_clk_src.clkr.hw },
3936d9db07f0SSricharan R 			.num_parents = 1,
3937d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3938d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3939d9db07f0SSricharan R 		},
3940d9db07f0SSricharan R 	},
3941d9db07f0SSricharan R };
3942d9db07f0SSricharan R 
3943d9db07f0SSricharan R static struct clk_branch gcc_sys_noc_usb0_axi_clk = {
3944d9db07f0SSricharan R 	.halt_reg = 0x26040,
3945d9db07f0SSricharan R 	.clkr = {
3946d9db07f0SSricharan R 		.enable_reg = 0x26040,
3947d9db07f0SSricharan R 		.enable_mask = BIT(0),
3948d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3949d9db07f0SSricharan R 			.name = "gcc_sys_noc_usb0_axi_clk",
3950d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3951d9db07f0SSricharan R 					&usb0_master_clk_src.clkr.hw },
3952d9db07f0SSricharan R 			.num_parents = 1,
3953d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3954d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3955d9db07f0SSricharan R 		},
3956d9db07f0SSricharan R 	},
3957d9db07f0SSricharan R };
3958d9db07f0SSricharan R 
3959d9db07f0SSricharan R static struct clk_branch gcc_usb0_mock_utmi_clk = {
3960d9db07f0SSricharan R 	.halt_reg = 0x3e008,
3961d9db07f0SSricharan R 	.clkr = {
3962d9db07f0SSricharan R 		.enable_reg = 0x3e008,
3963d9db07f0SSricharan R 		.enable_mask = BIT(0),
3964d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3965d9db07f0SSricharan R 			.name = "gcc_usb0_mock_utmi_clk",
3966d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3967d9db07f0SSricharan R 					&usb0_mock_utmi_clk_src.clkr.hw },
3968d9db07f0SSricharan R 			.num_parents = 1,
3969d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3970d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3971d9db07f0SSricharan R 		},
3972d9db07f0SSricharan R 	},
3973d9db07f0SSricharan R };
3974d9db07f0SSricharan R 
3975d9db07f0SSricharan R static struct clk_branch gcc_usb0_phy_cfg_ahb_clk = {
3976d9db07f0SSricharan R 	.halt_reg = 0x3e080,
3977d9db07f0SSricharan R 	.clkr = {
3978d9db07f0SSricharan R 		.enable_reg = 0x3e080,
3979d9db07f0SSricharan R 		.enable_mask = BIT(0),
3980d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3981d9db07f0SSricharan R 			.name = "gcc_usb0_phy_cfg_ahb_clk",
3982d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
3983d9db07f0SSricharan R 					&pcnoc_bfdcd_clk_src.clkr.hw },
3984d9db07f0SSricharan R 			.num_parents = 1,
3985d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
3986d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
3987d9db07f0SSricharan R 		},
3988d9db07f0SSricharan R 	},
3989d9db07f0SSricharan R };
3990d9db07f0SSricharan R 
3991d9db07f0SSricharan R static struct clk_branch gcc_usb0_pipe_clk = {
3992d9db07f0SSricharan R 	.halt_reg = 0x3e040,
3993d9db07f0SSricharan R 	.halt_check = BRANCH_HALT_DELAY,
3994d9db07f0SSricharan R 	.clkr = {
3995d9db07f0SSricharan R 		.enable_reg = 0x3e040,
3996d9db07f0SSricharan R 		.enable_mask = BIT(0),
3997d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
3998d9db07f0SSricharan R 			.name = "gcc_usb0_pipe_clk",
3999d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
4000d9db07f0SSricharan R 					&usb0_pipe_clk_src.clkr.hw },
4001d9db07f0SSricharan R 			.num_parents = 1,
4002d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
4003d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
4004d9db07f0SSricharan R 		},
4005d9db07f0SSricharan R 	},
4006d9db07f0SSricharan R };
4007d9db07f0SSricharan R 
4008d9db07f0SSricharan R static struct clk_branch gcc_usb0_sleep_clk = {
4009d9db07f0SSricharan R 	.halt_reg = 0x3e004,
4010d9db07f0SSricharan R 	.clkr = {
4011d9db07f0SSricharan R 		.enable_reg = 0x3e004,
4012d9db07f0SSricharan R 		.enable_mask = BIT(0),
4013d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
4014d9db07f0SSricharan R 			.name = "gcc_usb0_sleep_clk",
4015d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
4016d9db07f0SSricharan R 					&gcc_sleep_clk_src.clkr.hw },
4017d9db07f0SSricharan R 			.num_parents = 1,
4018d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
4019d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
4020d9db07f0SSricharan R 		},
4021d9db07f0SSricharan R 	},
4022d9db07f0SSricharan R };
4023d9db07f0SSricharan R 
4024d9db07f0SSricharan R static struct clk_branch gcc_usb1_master_clk = {
4025d9db07f0SSricharan R 	.halt_reg = 0x3f000,
4026d9db07f0SSricharan R 	.clkr = {
4027d9db07f0SSricharan R 		.enable_reg = 0x3f000,
4028d9db07f0SSricharan R 		.enable_mask = BIT(0),
4029d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
4030d9db07f0SSricharan R 			.name = "gcc_usb1_master_clk",
4031d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
4032d9db07f0SSricharan R 					&pcnoc_bfdcd_clk_src.clkr.hw },
4033d9db07f0SSricharan R 			.num_parents = 1,
4034d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
4035d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
4036d9db07f0SSricharan R 		},
4037d9db07f0SSricharan R 	},
4038d9db07f0SSricharan R };
4039d9db07f0SSricharan R 
4040d9db07f0SSricharan R static struct clk_branch gcc_usb1_mock_utmi_clk = {
4041d9db07f0SSricharan R 	.halt_reg = 0x3f008,
4042d9db07f0SSricharan R 	.clkr = {
4043d9db07f0SSricharan R 		.enable_reg = 0x3f008,
4044d9db07f0SSricharan R 		.enable_mask = BIT(0),
4045d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
4046d9db07f0SSricharan R 			.name = "gcc_usb1_mock_utmi_clk",
4047d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
4048d9db07f0SSricharan R 					&usb1_mock_utmi_clk_src.clkr.hw },
4049d9db07f0SSricharan R 			.num_parents = 1,
4050d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
4051d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
4052d9db07f0SSricharan R 		},
4053d9db07f0SSricharan R 	},
4054d9db07f0SSricharan R };
4055d9db07f0SSricharan R 
4056d9db07f0SSricharan R static struct clk_branch gcc_usb1_phy_cfg_ahb_clk = {
4057d9db07f0SSricharan R 	.halt_reg = 0x3f080,
4058d9db07f0SSricharan R 	.clkr = {
4059d9db07f0SSricharan R 		.enable_reg = 0x3f080,
4060d9db07f0SSricharan R 		.enable_mask = BIT(0),
4061d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
4062d9db07f0SSricharan R 			.name = "gcc_usb1_phy_cfg_ahb_clk",
4063d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
4064d9db07f0SSricharan R 					&pcnoc_bfdcd_clk_src.clkr.hw },
4065d9db07f0SSricharan R 			.num_parents = 1,
4066d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
4067d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
4068d9db07f0SSricharan R 		},
4069d9db07f0SSricharan R 	},
4070d9db07f0SSricharan R };
4071d9db07f0SSricharan R 
4072d9db07f0SSricharan R static struct clk_branch gcc_usb1_sleep_clk = {
4073d9db07f0SSricharan R 	.halt_reg = 0x3f004,
4074d9db07f0SSricharan R 	.clkr = {
4075d9db07f0SSricharan R 		.enable_reg = 0x3f004,
4076d9db07f0SSricharan R 		.enable_mask = BIT(0),
4077d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
4078d9db07f0SSricharan R 			.name = "gcc_usb1_sleep_clk",
4079d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
4080d9db07f0SSricharan R 					&gcc_sleep_clk_src.clkr.hw },
4081d9db07f0SSricharan R 			.num_parents = 1,
4082d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
4083d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
4084d9db07f0SSricharan R 		},
4085d9db07f0SSricharan R 	},
4086d9db07f0SSricharan R };
4087d9db07f0SSricharan R 
4088d9db07f0SSricharan R static struct clk_branch gcc_cmn_12gpll_ahb_clk = {
4089d9db07f0SSricharan R 	.halt_reg = 0x56308,
4090d9db07f0SSricharan R 	.clkr = {
4091d9db07f0SSricharan R 		.enable_reg = 0x56308,
4092d9db07f0SSricharan R 		.enable_mask = BIT(0),
4093d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
4094d9db07f0SSricharan R 			.name = "gcc_cmn_12gpll_ahb_clk",
4095d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
4096d9db07f0SSricharan R 					&pcnoc_bfdcd_clk_src.clkr.hw },
4097d9db07f0SSricharan R 			.num_parents = 1,
4098d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
4099d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
4100d9db07f0SSricharan R 		},
4101d9db07f0SSricharan R 	},
4102d9db07f0SSricharan R };
4103d9db07f0SSricharan R 
4104d9db07f0SSricharan R static struct clk_branch gcc_cmn_12gpll_sys_clk = {
4105d9db07f0SSricharan R 	.halt_reg = 0x5630c,
4106d9db07f0SSricharan R 	.clkr = {
4107d9db07f0SSricharan R 		.enable_reg = 0x5630c,
4108d9db07f0SSricharan R 		.enable_mask = BIT(0),
4109d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
4110d9db07f0SSricharan R 			.name = "gcc_cmn_12gpll_sys_clk",
4111d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
4112d9db07f0SSricharan R 					&gcc_xo_clk_src.clkr.hw },
4113d9db07f0SSricharan R 			.num_parents = 1,
4114d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
4115d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
4116d9db07f0SSricharan R 		},
4117d9db07f0SSricharan R 	},
4118d9db07f0SSricharan R };
4119d9db07f0SSricharan R 
4120d9db07f0SSricharan R static struct clk_branch gcc_sdcc1_ice_core_clk = {
4121d9db07f0SSricharan R 	.halt_reg = 0x5d014,
4122d9db07f0SSricharan R 	.clkr = {
4123d9db07f0SSricharan R 		.enable_reg = 0x5d014,
4124d9db07f0SSricharan R 		.enable_mask = BIT(0),
4125d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
4126d9db07f0SSricharan R 			.name = "gcc_sdcc1_ice_core_clk",
4127d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
4128d9db07f0SSricharan R 					&sdcc1_ice_core_clk_src.clkr.hw },
4129d9db07f0SSricharan R 			.num_parents = 1,
4130d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
4131d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
4132d9db07f0SSricharan R 		},
4133d9db07f0SSricharan R 	},
4134d9db07f0SSricharan R };
4135d9db07f0SSricharan R 
4136d9db07f0SSricharan R static struct clk_branch gcc_dcc_clk = {
4137d9db07f0SSricharan R 	.halt_reg = 0x77004,
4138d9db07f0SSricharan R 	.clkr = {
4139d9db07f0SSricharan R 		.enable_reg = 0x77004,
4140d9db07f0SSricharan R 		.enable_mask = BIT(0),
4141d9db07f0SSricharan R 		.hw.init = &(struct clk_init_data){
4142d9db07f0SSricharan R 			.name = "gcc_dcc_clk",
4143d9db07f0SSricharan R 			.parent_hws = (const struct clk_hw *[]){
4144d9db07f0SSricharan R 					&pcnoc_bfdcd_clk_src.clkr.hw },
4145d9db07f0SSricharan R 			.num_parents = 1,
4146d9db07f0SSricharan R 			.flags = CLK_SET_RATE_PARENT,
4147d9db07f0SSricharan R 			.ops = &clk_branch2_ops,
4148d9db07f0SSricharan R 		},
4149d9db07f0SSricharan R 	},
4150d9db07f0SSricharan R };
4151d9db07f0SSricharan R 
4152d9db07f0SSricharan R static const struct alpha_pll_config ubi32_pll_config = {
4153d9db07f0SSricharan R 	.l = 0x3e,
4154d9db07f0SSricharan R 	.alpha = 0x57,
4155d9db07f0SSricharan R 	.config_ctl_val = 0x240d6aa8,
4156d9db07f0SSricharan R 	.config_ctl_hi_val = 0x3c2,
4157d9db07f0SSricharan R 	.main_output_mask = BIT(0),
4158d9db07f0SSricharan R 	.aux_output_mask = BIT(1),
4159d9db07f0SSricharan R 	.pre_div_val = 0x0,
4160d9db07f0SSricharan R 	.pre_div_mask = BIT(12),
4161d9db07f0SSricharan R 	.post_div_val = 0x0,
4162d9db07f0SSricharan R 	.post_div_mask = GENMASK(9, 8),
4163d9db07f0SSricharan R };
4164d9db07f0SSricharan R 
4165d9db07f0SSricharan R static const struct alpha_pll_config nss_crypto_pll_config = {
4166d9db07f0SSricharan R 	.l = 0x32,
4167d9db07f0SSricharan R 	.alpha = 0x0,
4168d9db07f0SSricharan R 	.alpha_hi = 0x0,
4169d9db07f0SSricharan R 	.config_ctl_val = 0x4001055b,
4170d9db07f0SSricharan R 	.main_output_mask = BIT(0),
4171d9db07f0SSricharan R 	.pre_div_val = 0x0,
4172d9db07f0SSricharan R 	.pre_div_mask = GENMASK(14, 12),
4173d9db07f0SSricharan R 	.post_div_val = 0x1 << 8,
4174d9db07f0SSricharan R 	.post_div_mask = GENMASK(11, 8),
4175d9db07f0SSricharan R 	.vco_mask = GENMASK(21, 20),
4176d9db07f0SSricharan R 	.vco_val = 0x0,
4177d9db07f0SSricharan R 	.alpha_en_mask = BIT(24),
4178d9db07f0SSricharan R };
4179d9db07f0SSricharan R 
4180d9db07f0SSricharan R static struct clk_hw *gcc_ipq6018_hws[] = {
4181d9db07f0SSricharan R 	&gpll0_out_main_div2.hw,
4182d9db07f0SSricharan R 	&gcc_xo_div4_clk_src.hw,
4183d9db07f0SSricharan R 	&nss_ppe_cdiv_clk_src.hw,
4184d9db07f0SSricharan R 	&gpll6_out_main_div2.hw,
4185d9db07f0SSricharan R 	&qdss_dap_sync_clk_src.hw,
4186d9db07f0SSricharan R 	&qdss_tsctr_div2_clk_src.hw,
4187d9db07f0SSricharan R };
4188d9db07f0SSricharan R 
4189d9db07f0SSricharan R static struct clk_regmap *gcc_ipq6018_clks[] = {
4190d9db07f0SSricharan R 	[GPLL0_MAIN] = &gpll0_main.clkr,
4191d9db07f0SSricharan R 	[GPLL0] = &gpll0.clkr,
4192d9db07f0SSricharan R 	[UBI32_PLL_MAIN] = &ubi32_pll_main.clkr,
4193d9db07f0SSricharan R 	[UBI32_PLL] = &ubi32_pll.clkr,
4194d9db07f0SSricharan R 	[GPLL6_MAIN] = &gpll6_main.clkr,
4195d9db07f0SSricharan R 	[GPLL6] = &gpll6.clkr,
4196d9db07f0SSricharan R 	[GPLL4_MAIN] = &gpll4_main.clkr,
4197d9db07f0SSricharan R 	[GPLL4] = &gpll4.clkr,
4198d9db07f0SSricharan R 	[PCNOC_BFDCD_CLK_SRC] = &pcnoc_bfdcd_clk_src.clkr,
4199d9db07f0SSricharan R 	[GPLL2_MAIN] = &gpll2_main.clkr,
4200d9db07f0SSricharan R 	[GPLL2] = &gpll2.clkr,
4201d9db07f0SSricharan R 	[NSS_CRYPTO_PLL_MAIN] = &nss_crypto_pll_main.clkr,
4202d9db07f0SSricharan R 	[NSS_CRYPTO_PLL] = &nss_crypto_pll.clkr,
4203d9db07f0SSricharan R 	[QDSS_TSCTR_CLK_SRC] = &qdss_tsctr_clk_src.clkr,
4204d9db07f0SSricharan R 	[QDSS_AT_CLK_SRC] = &qdss_at_clk_src.clkr,
4205d9db07f0SSricharan R 	[NSS_PPE_CLK_SRC] = &nss_ppe_clk_src.clkr,
4206d9db07f0SSricharan R 	[GCC_XO_CLK_SRC] = &gcc_xo_clk_src.clkr,
4207d9db07f0SSricharan R 	[SYSTEM_NOC_BFDCD_CLK_SRC] = &system_noc_bfdcd_clk_src.clkr,
4208d9db07f0SSricharan R 	[SNOC_NSSNOC_BFDCD_CLK_SRC] = &snoc_nssnoc_bfdcd_clk_src.clkr,
4209d9db07f0SSricharan R 	[NSS_CE_CLK_SRC] = &nss_ce_clk_src.clkr,
4210d9db07f0SSricharan R 	[GCC_SLEEP_CLK_SRC] = &gcc_sleep_clk_src.clkr,
4211d9db07f0SSricharan R 	[APSS_AHB_CLK_SRC] = &apss_ahb_clk_src.clkr,
4212d9db07f0SSricharan R 	[NSS_PORT5_RX_CLK_SRC] = &nss_port5_rx_clk_src.clkr,
4213d9db07f0SSricharan R 	[NSS_PORT5_TX_CLK_SRC] = &nss_port5_tx_clk_src.clkr,
4214d9db07f0SSricharan R 	[UBI32_MEM_NOC_BFDCD_CLK_SRC] = &ubi32_mem_noc_bfdcd_clk_src.clkr,
4215d9db07f0SSricharan R 	[PCIE0_AXI_CLK_SRC] = &pcie0_axi_clk_src.clkr,
4216d9db07f0SSricharan R 	[USB0_MASTER_CLK_SRC] = &usb0_master_clk_src.clkr,
4217d9db07f0SSricharan R 	[APSS_AHB_POSTDIV_CLK_SRC] = &apss_ahb_postdiv_clk_src.clkr,
4218d9db07f0SSricharan R 	[NSS_PORT1_RX_CLK_SRC] = &nss_port1_rx_clk_src.clkr,
4219d9db07f0SSricharan R 	[NSS_PORT1_TX_CLK_SRC] = &nss_port1_tx_clk_src.clkr,
4220d9db07f0SSricharan R 	[NSS_PORT2_RX_CLK_SRC] = &nss_port2_rx_clk_src.clkr,
4221d9db07f0SSricharan R 	[NSS_PORT2_TX_CLK_SRC] = &nss_port2_tx_clk_src.clkr,
4222d9db07f0SSricharan R 	[NSS_PORT3_RX_CLK_SRC] = &nss_port3_rx_clk_src.clkr,
4223d9db07f0SSricharan R 	[NSS_PORT3_TX_CLK_SRC] = &nss_port3_tx_clk_src.clkr,
4224d9db07f0SSricharan R 	[NSS_PORT4_RX_CLK_SRC] = &nss_port4_rx_clk_src.clkr,
4225d9db07f0SSricharan R 	[NSS_PORT4_TX_CLK_SRC] = &nss_port4_tx_clk_src.clkr,
4226d9db07f0SSricharan R 	[NSS_PORT5_RX_DIV_CLK_SRC] = &nss_port5_rx_div_clk_src.clkr,
4227d9db07f0SSricharan R 	[NSS_PORT5_TX_DIV_CLK_SRC] = &nss_port5_tx_div_clk_src.clkr,
4228d9db07f0SSricharan R 	[APSS_AXI_CLK_SRC] = &apss_axi_clk_src.clkr,
4229d9db07f0SSricharan R 	[NSS_CRYPTO_CLK_SRC] = &nss_crypto_clk_src.clkr,
4230d9db07f0SSricharan R 	[NSS_PORT1_RX_DIV_CLK_SRC] = &nss_port1_rx_div_clk_src.clkr,
4231d9db07f0SSricharan R 	[NSS_PORT1_TX_DIV_CLK_SRC] = &nss_port1_tx_div_clk_src.clkr,
4232d9db07f0SSricharan R 	[NSS_PORT2_RX_DIV_CLK_SRC] = &nss_port2_rx_div_clk_src.clkr,
4233d9db07f0SSricharan R 	[NSS_PORT2_TX_DIV_CLK_SRC] = &nss_port2_tx_div_clk_src.clkr,
4234d9db07f0SSricharan R 	[NSS_PORT3_RX_DIV_CLK_SRC] = &nss_port3_rx_div_clk_src.clkr,
4235d9db07f0SSricharan R 	[NSS_PORT3_TX_DIV_CLK_SRC] = &nss_port3_tx_div_clk_src.clkr,
4236d9db07f0SSricharan R 	[NSS_PORT4_RX_DIV_CLK_SRC] = &nss_port4_rx_div_clk_src.clkr,
4237d9db07f0SSricharan R 	[NSS_PORT4_TX_DIV_CLK_SRC] = &nss_port4_tx_div_clk_src.clkr,
4238d9db07f0SSricharan R 	[NSS_UBI0_CLK_SRC] = &nss_ubi0_clk_src.clkr,
4239d9db07f0SSricharan R 	[ADSS_PWM_CLK_SRC] = &adss_pwm_clk_src.clkr,
4240d9db07f0SSricharan R 	[BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr,
4241d9db07f0SSricharan R 	[BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr,
4242d9db07f0SSricharan R 	[BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr,
4243d9db07f0SSricharan R 	[BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr,
4244d9db07f0SSricharan R 	[BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr,
4245d9db07f0SSricharan R 	[BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr,
4246d9db07f0SSricharan R 	[BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr,
4247d9db07f0SSricharan R 	[BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr,
4248d9db07f0SSricharan R 	[BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr,
4249d9db07f0SSricharan R 	[BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr,
4250d9db07f0SSricharan R 	[BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr,
4251d9db07f0SSricharan R 	[BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr,
4252d9db07f0SSricharan R 	[BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr,
4253d9db07f0SSricharan R 	[BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr,
4254d9db07f0SSricharan R 	[BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr,
4255d9db07f0SSricharan R 	[BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr,
4256d9db07f0SSricharan R 	[BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr,
4257d9db07f0SSricharan R 	[BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr,
4258d9db07f0SSricharan R 	[CRYPTO_CLK_SRC] = &crypto_clk_src.clkr,
4259d9db07f0SSricharan R 	[GP1_CLK_SRC] = &gp1_clk_src.clkr,
4260d9db07f0SSricharan R 	[GP2_CLK_SRC] = &gp2_clk_src.clkr,
4261d9db07f0SSricharan R 	[GP3_CLK_SRC] = &gp3_clk_src.clkr,
4262d9db07f0SSricharan R 	[NSS_UBI0_DIV_CLK_SRC] = &nss_ubi0_div_clk_src.clkr,
4263d9db07f0SSricharan R 	[PCIE0_AUX_CLK_SRC] = &pcie0_aux_clk_src.clkr,
4264d9db07f0SSricharan R 	[PCIE0_PIPE_CLK_SRC] = &pcie0_pipe_clk_src.clkr,
4265d9db07f0SSricharan R 	[SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr,
4266d9db07f0SSricharan R 	[USB0_AUX_CLK_SRC] = &usb0_aux_clk_src.clkr,
4267d9db07f0SSricharan R 	[USB0_MOCK_UTMI_CLK_SRC] = &usb0_mock_utmi_clk_src.clkr,
4268d9db07f0SSricharan R 	[USB0_PIPE_CLK_SRC] = &usb0_pipe_clk_src.clkr,
4269d9db07f0SSricharan R 	[USB1_MOCK_UTMI_CLK_SRC] = &usb1_mock_utmi_clk_src.clkr,
4270d9db07f0SSricharan R 	[GCC_ADSS_PWM_CLK] = &gcc_adss_pwm_clk.clkr,
4271d9db07f0SSricharan R 	[GCC_APSS_AHB_CLK] = &gcc_apss_ahb_clk.clkr,
4272d9db07f0SSricharan R 	[GCC_APSS_AXI_CLK] = &gcc_apss_axi_clk.clkr,
4273d9db07f0SSricharan R 	[GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr,
4274d9db07f0SSricharan R 	[GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr,
4275d9db07f0SSricharan R 	[GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr,
4276d9db07f0SSricharan R 	[GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr,
4277d9db07f0SSricharan R 	[GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr,
4278d9db07f0SSricharan R 	[GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr,
4279d9db07f0SSricharan R 	[GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr,
4280d9db07f0SSricharan R 	[GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr,
4281d9db07f0SSricharan R 	[GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr,
4282d9db07f0SSricharan R 	[GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr,
4283d9db07f0SSricharan R 	[GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr,
4284d9db07f0SSricharan R 	[GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr,
4285d9db07f0SSricharan R 	[GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr,
4286d9db07f0SSricharan R 	[GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr,
4287d9db07f0SSricharan R 	[GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr,
4288d9db07f0SSricharan R 	[GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr,
4289d9db07f0SSricharan R 	[GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr,
4290d9db07f0SSricharan R 	[GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr,
4291d9db07f0SSricharan R 	[GCC_CRYPTO_AHB_CLK] = &gcc_crypto_ahb_clk.clkr,
4292d9db07f0SSricharan R 	[GCC_CRYPTO_AXI_CLK] = &gcc_crypto_axi_clk.clkr,
4293d9db07f0SSricharan R 	[GCC_CRYPTO_CLK] = &gcc_crypto_clk.clkr,
4294d9db07f0SSricharan R 	[GCC_XO_CLK] = &gcc_xo_clk.clkr,
4295d9db07f0SSricharan R 	[GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
4296d9db07f0SSricharan R 	[GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
4297d9db07f0SSricharan R 	[GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
4298d9db07f0SSricharan R 	[GCC_MDIO_AHB_CLK] = &gcc_mdio_ahb_clk.clkr,
4299d9db07f0SSricharan R 	[GCC_CRYPTO_PPE_CLK] = &gcc_crypto_ppe_clk.clkr,
4300d9db07f0SSricharan R 	[GCC_NSS_CE_APB_CLK] = &gcc_nss_ce_apb_clk.clkr,
4301d9db07f0SSricharan R 	[GCC_NSS_CE_AXI_CLK] = &gcc_nss_ce_axi_clk.clkr,
4302d9db07f0SSricharan R 	[GCC_NSS_CFG_CLK] = &gcc_nss_cfg_clk.clkr,
4303d9db07f0SSricharan R 	[GCC_NSS_CRYPTO_CLK] = &gcc_nss_crypto_clk.clkr,
4304d9db07f0SSricharan R 	[GCC_NSS_CSR_CLK] = &gcc_nss_csr_clk.clkr,
4305d9db07f0SSricharan R 	[GCC_NSS_EDMA_CFG_CLK] = &gcc_nss_edma_cfg_clk.clkr,
4306d9db07f0SSricharan R 	[GCC_NSS_EDMA_CLK] = &gcc_nss_edma_clk.clkr,
4307d9db07f0SSricharan R 	[GCC_NSS_NOC_CLK] = &gcc_nss_noc_clk.clkr,
4308d9db07f0SSricharan R 	[GCC_UBI0_UTCM_CLK] = &gcc_ubi0_utcm_clk.clkr,
4309d9db07f0SSricharan R 	[GCC_SNOC_NSSNOC_CLK] = &gcc_snoc_nssnoc_clk.clkr,
4310d9db07f0SSricharan R 	[GCC_NSS_PORT1_RX_CLK] = &gcc_nss_port1_rx_clk.clkr,
4311d9db07f0SSricharan R 	[GCC_NSS_PORT1_TX_CLK] = &gcc_nss_port1_tx_clk.clkr,
4312d9db07f0SSricharan R 	[GCC_NSS_PORT2_RX_CLK] = &gcc_nss_port2_rx_clk.clkr,
4313d9db07f0SSricharan R 	[GCC_NSS_PORT2_TX_CLK] = &gcc_nss_port2_tx_clk.clkr,
4314d9db07f0SSricharan R 	[GCC_NSS_PORT3_RX_CLK] = &gcc_nss_port3_rx_clk.clkr,
4315d9db07f0SSricharan R 	[GCC_NSS_PORT3_TX_CLK] = &gcc_nss_port3_tx_clk.clkr,
4316d9db07f0SSricharan R 	[GCC_NSS_PORT4_RX_CLK] = &gcc_nss_port4_rx_clk.clkr,
4317d9db07f0SSricharan R 	[GCC_NSS_PORT4_TX_CLK] = &gcc_nss_port4_tx_clk.clkr,
4318d9db07f0SSricharan R 	[GCC_NSS_PORT5_RX_CLK] = &gcc_nss_port5_rx_clk.clkr,
4319d9db07f0SSricharan R 	[GCC_NSS_PORT5_TX_CLK] = &gcc_nss_port5_tx_clk.clkr,
4320d9db07f0SSricharan R 	[GCC_NSS_PPE_CFG_CLK] = &gcc_nss_ppe_cfg_clk.clkr,
4321d9db07f0SSricharan R 	[GCC_NSS_PPE_CLK] = &gcc_nss_ppe_clk.clkr,
4322d9db07f0SSricharan R 	[GCC_NSS_PPE_IPE_CLK] = &gcc_nss_ppe_ipe_clk.clkr,
4323d9db07f0SSricharan R 	[GCC_NSS_PTP_REF_CLK] = &gcc_nss_ptp_ref_clk.clkr,
4324d9db07f0SSricharan R 	[GCC_NSSNOC_CE_APB_CLK] = &gcc_nssnoc_ce_apb_clk.clkr,
4325d9db07f0SSricharan R 	[GCC_NSSNOC_CE_AXI_CLK] = &gcc_nssnoc_ce_axi_clk.clkr,
4326d9db07f0SSricharan R 	[GCC_NSSNOC_CRYPTO_CLK] = &gcc_nssnoc_crypto_clk.clkr,
4327d9db07f0SSricharan R 	[GCC_NSSNOC_PPE_CFG_CLK] = &gcc_nssnoc_ppe_cfg_clk.clkr,
4328d9db07f0SSricharan R 	[GCC_NSSNOC_PPE_CLK] = &gcc_nssnoc_ppe_clk.clkr,
4329d9db07f0SSricharan R 	[GCC_NSSNOC_QOSGEN_REF_CLK] = &gcc_nssnoc_qosgen_ref_clk.clkr,
4330d9db07f0SSricharan R 	[GCC_NSSNOC_SNOC_CLK] = &gcc_nssnoc_snoc_clk.clkr,
4331d9db07f0SSricharan R 	[GCC_NSSNOC_TIMEOUT_REF_CLK] = &gcc_nssnoc_timeout_ref_clk.clkr,
4332d9db07f0SSricharan R 	[GCC_NSSNOC_UBI0_AHB_CLK] = &gcc_nssnoc_ubi0_ahb_clk.clkr,
4333d9db07f0SSricharan R 	[GCC_PORT1_MAC_CLK] = &gcc_port1_mac_clk.clkr,
4334d9db07f0SSricharan R 	[GCC_PORT2_MAC_CLK] = &gcc_port2_mac_clk.clkr,
4335d9db07f0SSricharan R 	[GCC_PORT3_MAC_CLK] = &gcc_port3_mac_clk.clkr,
4336d9db07f0SSricharan R 	[GCC_PORT4_MAC_CLK] = &gcc_port4_mac_clk.clkr,
4337d9db07f0SSricharan R 	[GCC_PORT5_MAC_CLK] = &gcc_port5_mac_clk.clkr,
4338d9db07f0SSricharan R 	[GCC_UBI0_AHB_CLK] = &gcc_ubi0_ahb_clk.clkr,
4339d9db07f0SSricharan R 	[GCC_UBI0_AXI_CLK] = &gcc_ubi0_axi_clk.clkr,
4340d9db07f0SSricharan R 	[GCC_UBI0_NC_AXI_CLK] = &gcc_ubi0_nc_axi_clk.clkr,
4341d9db07f0SSricharan R 	[GCC_UBI0_CORE_CLK] = &gcc_ubi0_core_clk.clkr,
4342d9db07f0SSricharan R 	[GCC_PCIE0_AHB_CLK] = &gcc_pcie0_ahb_clk.clkr,
4343d9db07f0SSricharan R 	[GCC_PCIE0_AUX_CLK] = &gcc_pcie0_aux_clk.clkr,
4344d9db07f0SSricharan R 	[GCC_PCIE0_AXI_M_CLK] = &gcc_pcie0_axi_m_clk.clkr,
4345d9db07f0SSricharan R 	[GCC_PCIE0_AXI_S_CLK] = &gcc_pcie0_axi_s_clk.clkr,
4346d9db07f0SSricharan R 	[GCC_SYS_NOC_PCIE0_AXI_CLK] = &gcc_sys_noc_pcie0_axi_clk.clkr,
4347d9db07f0SSricharan R 	[GCC_PCIE0_PIPE_CLK] = &gcc_pcie0_pipe_clk.clkr,
4348d9db07f0SSricharan R 	[GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
4349d9db07f0SSricharan R 	[GCC_QDSS_DAP_CLK] = &gcc_qdss_dap_clk.clkr,
4350d9db07f0SSricharan R 	[GCC_QPIC_AHB_CLK] = &gcc_qpic_ahb_clk.clkr,
4351d9db07f0SSricharan R 	[GCC_QPIC_CLK] = &gcc_qpic_clk.clkr,
4352d9db07f0SSricharan R 	[GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
4353d9db07f0SSricharan R 	[GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
4354d9db07f0SSricharan R 	[GCC_UNIPHY0_AHB_CLK] = &gcc_uniphy0_ahb_clk.clkr,
4355d9db07f0SSricharan R 	[GCC_UNIPHY0_PORT1_RX_CLK] = &gcc_uniphy0_port1_rx_clk.clkr,
4356d9db07f0SSricharan R 	[GCC_UNIPHY0_PORT1_TX_CLK] = &gcc_uniphy0_port1_tx_clk.clkr,
4357d9db07f0SSricharan R 	[GCC_UNIPHY0_PORT2_RX_CLK] = &gcc_uniphy0_port2_rx_clk.clkr,
4358d9db07f0SSricharan R 	[GCC_UNIPHY0_PORT2_TX_CLK] = &gcc_uniphy0_port2_tx_clk.clkr,
4359d9db07f0SSricharan R 	[GCC_UNIPHY0_PORT3_RX_CLK] = &gcc_uniphy0_port3_rx_clk.clkr,
4360d9db07f0SSricharan R 	[GCC_UNIPHY0_PORT3_TX_CLK] = &gcc_uniphy0_port3_tx_clk.clkr,
4361d9db07f0SSricharan R 	[GCC_UNIPHY0_PORT4_RX_CLK] = &gcc_uniphy0_port4_rx_clk.clkr,
4362d9db07f0SSricharan R 	[GCC_UNIPHY0_PORT4_TX_CLK] = &gcc_uniphy0_port4_tx_clk.clkr,
4363d9db07f0SSricharan R 	[GCC_UNIPHY0_PORT5_RX_CLK] = &gcc_uniphy0_port5_rx_clk.clkr,
4364d9db07f0SSricharan R 	[GCC_UNIPHY0_PORT5_TX_CLK] = &gcc_uniphy0_port5_tx_clk.clkr,
4365d9db07f0SSricharan R 	[GCC_UNIPHY0_SYS_CLK] = &gcc_uniphy0_sys_clk.clkr,
4366d9db07f0SSricharan R 	[GCC_UNIPHY1_AHB_CLK] = &gcc_uniphy1_ahb_clk.clkr,
4367d9db07f0SSricharan R 	[GCC_UNIPHY1_PORT5_RX_CLK] = &gcc_uniphy1_port5_rx_clk.clkr,
4368d9db07f0SSricharan R 	[GCC_UNIPHY1_PORT5_TX_CLK] = &gcc_uniphy1_port5_tx_clk.clkr,
4369d9db07f0SSricharan R 	[GCC_UNIPHY1_SYS_CLK] = &gcc_uniphy1_sys_clk.clkr,
4370d9db07f0SSricharan R 	[GCC_USB0_AUX_CLK] = &gcc_usb0_aux_clk.clkr,
4371d9db07f0SSricharan R 	[GCC_SYS_NOC_USB0_AXI_CLK] = &gcc_sys_noc_usb0_axi_clk.clkr,
4372d9db07f0SSricharan R 	[GCC_SNOC_BUS_TIMEOUT2_AHB_CLK] = &gcc_snoc_bus_timeout2_ahb_clk.clkr,
4373d9db07f0SSricharan R 	[GCC_USB0_MASTER_CLK] = &gcc_usb0_master_clk.clkr,
4374d9db07f0SSricharan R 	[GCC_USB0_MOCK_UTMI_CLK] = &gcc_usb0_mock_utmi_clk.clkr,
4375d9db07f0SSricharan R 	[GCC_USB0_PHY_CFG_AHB_CLK] = &gcc_usb0_phy_cfg_ahb_clk.clkr,
4376d9db07f0SSricharan R 	[GCC_USB0_PIPE_CLK] = &gcc_usb0_pipe_clk.clkr,
4377d9db07f0SSricharan R 	[GCC_USB0_SLEEP_CLK] = &gcc_usb0_sleep_clk.clkr,
4378d9db07f0SSricharan R 	[GCC_USB1_MASTER_CLK] = &gcc_usb1_master_clk.clkr,
4379d9db07f0SSricharan R 	[GCC_USB1_MOCK_UTMI_CLK] = &gcc_usb1_mock_utmi_clk.clkr,
4380d9db07f0SSricharan R 	[GCC_USB1_PHY_CFG_AHB_CLK] = &gcc_usb1_phy_cfg_ahb_clk.clkr,
4381d9db07f0SSricharan R 	[GCC_USB1_SLEEP_CLK] = &gcc_usb1_sleep_clk.clkr,
4382d9db07f0SSricharan R 	[GCC_CMN_12GPLL_AHB_CLK] = &gcc_cmn_12gpll_ahb_clk.clkr,
4383d9db07f0SSricharan R 	[GCC_CMN_12GPLL_SYS_CLK] = &gcc_cmn_12gpll_sys_clk.clkr,
4384d9db07f0SSricharan R 	[GCC_SDCC1_ICE_CORE_CLK] = &gcc_sdcc1_ice_core_clk.clkr,
4385d9db07f0SSricharan R 	[SDCC1_ICE_CORE_CLK_SRC] = &sdcc1_ice_core_clk_src.clkr,
4386d9db07f0SSricharan R 	[GCC_DCC_CLK] = &gcc_dcc_clk.clkr,
4387d9db07f0SSricharan R 	[PCIE0_RCHNG_CLK_SRC] = &pcie0_rchng_clk_src.clkr,
4388d9db07f0SSricharan R 	[GCC_PCIE0_AXI_S_BRIDGE_CLK] = &gcc_pcie0_axi_s_bridge_clk.clkr,
4389d9db07f0SSricharan R 	[PCIE0_RCHNG_CLK] = &gcc_pcie0_rchng_clk.clkr,
4390d9db07f0SSricharan R 	[WCSS_AHB_CLK_SRC] = &wcss_ahb_clk_src.clkr,
4391d9db07f0SSricharan R 	[Q6_AXI_CLK_SRC] = &q6_axi_clk_src.clkr,
4392d9db07f0SSricharan R 	[RBCPR_WCSS_CLK_SRC] = &rbcpr_wcss_clk_src.clkr,
4393d9db07f0SSricharan R 	[GCC_LPASS_CORE_AXIM_CLK] = &gcc_lpass_core_axim_clk.clkr,
4394d9db07f0SSricharan R 	[LPASS_CORE_AXIM_CLK_SRC] = &lpass_core_axim_clk_src.clkr,
4395d9db07f0SSricharan R 	[GCC_LPASS_SNOC_CFG_CLK] = &gcc_lpass_snoc_cfg_clk.clkr,
4396d9db07f0SSricharan R 	[LPASS_SNOC_CFG_CLK_SRC] = &lpass_snoc_cfg_clk_src.clkr,
4397d9db07f0SSricharan R 	[GCC_LPASS_Q6_AXIM_CLK] = &gcc_lpass_q6_axim_clk.clkr,
4398d9db07f0SSricharan R 	[LPASS_Q6_AXIM_CLK_SRC] = &lpass_q6_axim_clk_src.clkr,
4399d9db07f0SSricharan R 	[GCC_LPASS_Q6_ATBM_AT_CLK] = &gcc_lpass_q6_atbm_at_clk.clkr,
4400d9db07f0SSricharan R 	[GCC_LPASS_Q6_PCLKDBG_CLK] = &gcc_lpass_q6_pclkdbg_clk.clkr,
4401d9db07f0SSricharan R 	[GCC_LPASS_Q6SS_TSCTR_1TO2_CLK] = &gcc_lpass_q6ss_tsctr_1to2_clk.clkr,
4402d9db07f0SSricharan R 	[GCC_LPASS_Q6SS_TRIG_CLK] = &gcc_lpass_q6ss_trig_clk.clkr,
4403d9db07f0SSricharan R 	[GCC_LPASS_TBU_CLK] = &gcc_lpass_tbu_clk.clkr,
4404d9db07f0SSricharan R 	[GCC_PCNOC_LPASS_CLK] = &gcc_pcnoc_lpass_clk.clkr,
4405d9db07f0SSricharan R 	[GCC_MEM_NOC_UBI32_CLK] = &gcc_mem_noc_ubi32_clk.clkr,
4406d9db07f0SSricharan R 	[GCC_MEM_NOC_LPASS_CLK] = &gcc_mem_noc_lpass_clk.clkr,
4407d9db07f0SSricharan R 	[GCC_SNOC_LPASS_CFG_CLK] = &gcc_snoc_lpass_cfg_clk.clkr,
4408d9db07f0SSricharan R 	[QDSS_STM_CLK_SRC] = &qdss_stm_clk_src.clkr,
4409d9db07f0SSricharan R 	[QDSS_TRACECLKIN_CLK_SRC] = &qdss_traceclkin_clk_src.clkr,
4410d9db07f0SSricharan R };
4411d9db07f0SSricharan R 
4412d9db07f0SSricharan R static const struct qcom_reset_map gcc_ipq6018_resets[] = {
4413d9db07f0SSricharan R 	[GCC_BLSP1_BCR] = { 0x01000, 0 },
4414d9db07f0SSricharan R 	[GCC_BLSP1_QUP1_BCR] = { 0x02000, 0 },
4415d9db07f0SSricharan R 	[GCC_BLSP1_UART1_BCR] = { 0x02038, 0 },
4416d9db07f0SSricharan R 	[GCC_BLSP1_QUP2_BCR] = { 0x03008, 0 },
4417d9db07f0SSricharan R 	[GCC_BLSP1_UART2_BCR] = { 0x03028, 0 },
4418d9db07f0SSricharan R 	[GCC_BLSP1_QUP3_BCR] = { 0x04008, 0 },
4419d9db07f0SSricharan R 	[GCC_BLSP1_UART3_BCR] = { 0x04028, 0 },
4420d9db07f0SSricharan R 	[GCC_BLSP1_QUP4_BCR] = { 0x05008, 0 },
4421d9db07f0SSricharan R 	[GCC_BLSP1_UART4_BCR] = { 0x05028, 0 },
4422d9db07f0SSricharan R 	[GCC_BLSP1_QUP5_BCR] = { 0x06008, 0 },
4423d9db07f0SSricharan R 	[GCC_BLSP1_UART5_BCR] = { 0x06028, 0 },
4424d9db07f0SSricharan R 	[GCC_BLSP1_QUP6_BCR] = { 0x07008, 0 },
4425d9db07f0SSricharan R 	[GCC_BLSP1_UART6_BCR] = { 0x07028, 0 },
4426d9db07f0SSricharan R 	[GCC_IMEM_BCR] = { 0x0e000, 0 },
4427d9db07f0SSricharan R 	[GCC_SMMU_BCR] = { 0x12000, 0 },
4428d9db07f0SSricharan R 	[GCC_APSS_TCU_BCR] = { 0x12050, 0 },
4429d9db07f0SSricharan R 	[GCC_SMMU_XPU_BCR] = { 0x12054, 0 },
4430d9db07f0SSricharan R 	[GCC_PCNOC_TBU_BCR] = { 0x12058, 0 },
4431d9db07f0SSricharan R 	[GCC_SMMU_CFG_BCR] = { 0x1208c, 0 },
4432d9db07f0SSricharan R 	[GCC_PRNG_BCR] = { 0x13000, 0 },
4433d9db07f0SSricharan R 	[GCC_BOOT_ROM_BCR] = { 0x13008, 0 },
4434d9db07f0SSricharan R 	[GCC_CRYPTO_BCR] = { 0x16000, 0 },
4435d9db07f0SSricharan R 	[GCC_WCSS_BCR] = { 0x18000, 0 },
4436d9db07f0SSricharan R 	[GCC_WCSS_Q6_BCR] = { 0x18100, 0 },
4437d9db07f0SSricharan R 	[GCC_NSS_BCR] = { 0x19000, 0 },
4438d9db07f0SSricharan R 	[GCC_SEC_CTRL_BCR] = { 0x1a000, 0 },
4439d9db07f0SSricharan R 	[GCC_ADSS_BCR] = { 0x1c000, 0 },
4440d9db07f0SSricharan R 	[GCC_DDRSS_BCR] = { 0x1e000, 0 },
4441d9db07f0SSricharan R 	[GCC_SYSTEM_NOC_BCR] = { 0x26000, 0 },
4442d9db07f0SSricharan R 	[GCC_PCNOC_BCR] = { 0x27018, 0 },
4443d9db07f0SSricharan R 	[GCC_TCSR_BCR] = { 0x28000, 0 },
4444d9db07f0SSricharan R 	[GCC_QDSS_BCR] = { 0x29000, 0 },
4445d9db07f0SSricharan R 	[GCC_DCD_BCR] = { 0x2a000, 0 },
4446d9db07f0SSricharan R 	[GCC_MSG_RAM_BCR] = { 0x2b000, 0 },
4447d9db07f0SSricharan R 	[GCC_MPM_BCR] = { 0x2c000, 0 },
4448d9db07f0SSricharan R 	[GCC_SPDM_BCR] = { 0x2f000, 0 },
4449d9db07f0SSricharan R 	[GCC_RBCPR_BCR] = { 0x33000, 0 },
4450d9db07f0SSricharan R 	[GCC_RBCPR_MX_BCR] = { 0x33014, 0 },
4451d9db07f0SSricharan R 	[GCC_TLMM_BCR] = { 0x34000, 0 },
4452d9db07f0SSricharan R 	[GCC_RBCPR_WCSS_BCR] = { 0x3a000, 0 },
4453d9db07f0SSricharan R 	[GCC_USB0_PHY_BCR] = { 0x3e034, 0 },
4454d9db07f0SSricharan R 	[GCC_USB3PHY_0_PHY_BCR] = { 0x3e03c, 0 },
4455d9db07f0SSricharan R 	[GCC_USB0_BCR] = { 0x3e070, 0 },
4456d9db07f0SSricharan R 	[GCC_USB1_BCR] = { 0x3f070, 0 },
4457d9db07f0SSricharan R 	[GCC_QUSB2_0_PHY_BCR] = { 0x4103c, 0 },
4458d9db07f0SSricharan R 	[GCC_QUSB2_1_PHY_BCR] = { 0x41040, 0 },
4459d9db07f0SSricharan R 	[GCC_SDCC1_BCR] = { 0x42000, 0 },
4460d9db07f0SSricharan R 	[GCC_SNOC_BUS_TIMEOUT0_BCR] = { 0x47000, 0 },
4461d9db07f0SSricharan R 	[GCC_SNOC_BUS_TIMEOUT1_BCR] = { 0x47008, 0 },
4462d9db07f0SSricharan R 	[GCC_SNOC_BUS_TIMEOUT2_BCR] = { 0x47010, 0 },
4463d9db07f0SSricharan R 	[GCC_PCNOC_BUS_TIMEOUT0_BCR] = { 0x48000, 0 },
4464d9db07f0SSricharan R 	[GCC_PCNOC_BUS_TIMEOUT1_BCR] = { 0x48008, 0 },
4465d9db07f0SSricharan R 	[GCC_PCNOC_BUS_TIMEOUT2_BCR] = { 0x48010, 0 },
4466d9db07f0SSricharan R 	[GCC_PCNOC_BUS_TIMEOUT3_BCR] = { 0x48018, 0 },
4467d9db07f0SSricharan R 	[GCC_PCNOC_BUS_TIMEOUT4_BCR] = { 0x48020, 0 },
4468d9db07f0SSricharan R 	[GCC_PCNOC_BUS_TIMEOUT5_BCR] = { 0x48028, 0 },
4469d9db07f0SSricharan R 	[GCC_PCNOC_BUS_TIMEOUT6_BCR] = { 0x48030, 0 },
4470d9db07f0SSricharan R 	[GCC_PCNOC_BUS_TIMEOUT7_BCR] = { 0x48038, 0 },
4471d9db07f0SSricharan R 	[GCC_PCNOC_BUS_TIMEOUT8_BCR] = { 0x48040, 0 },
4472d9db07f0SSricharan R 	[GCC_PCNOC_BUS_TIMEOUT9_BCR] = { 0x48048, 0 },
4473d9db07f0SSricharan R 	[GCC_UNIPHY0_BCR] = { 0x56000, 0 },
4474d9db07f0SSricharan R 	[GCC_UNIPHY1_BCR] = { 0x56100, 0 },
4475d9db07f0SSricharan R 	[GCC_CMN_12GPLL_BCR] = { 0x56300, 0 },
4476d9db07f0SSricharan R 	[GCC_QPIC_BCR] = { 0x57018, 0 },
4477d9db07f0SSricharan R 	[GCC_MDIO_BCR] = { 0x58000, 0 },
4478d9db07f0SSricharan R 	[GCC_WCSS_CORE_TBU_BCR] = { 0x66000, 0 },
4479d9db07f0SSricharan R 	[GCC_WCSS_Q6_TBU_BCR] = { 0x67000, 0 },
4480d9db07f0SSricharan R 	[GCC_USB0_TBU_BCR] = { 0x6a000, 0 },
4481d9db07f0SSricharan R 	[GCC_PCIE0_TBU_BCR] = { 0x6b000, 0 },
4482d9db07f0SSricharan R 	[GCC_NSS_NOC_TBU_BCR] = { 0x6e000, 0 },
4483d9db07f0SSricharan R 	[GCC_PCIE0_BCR] = { 0x75004, 0 },
4484d9db07f0SSricharan R 	[GCC_PCIE0_PHY_BCR] = { 0x75038, 0 },
4485d9db07f0SSricharan R 	[GCC_PCIE0PHY_PHY_BCR] = { 0x7503c, 0 },
4486d9db07f0SSricharan R 	[GCC_PCIE0_LINK_DOWN_BCR] = { 0x75044, 0 },
4487d9db07f0SSricharan R 	[GCC_DCC_BCR] = { 0x77000, 0 },
4488d9db07f0SSricharan R 	[GCC_APC0_VOLTAGE_DROOP_DETECTOR_BCR] = { 0x78000, 0 },
4489d9db07f0SSricharan R 	[GCC_SMMU_CATS_BCR] = { 0x7c000, 0 },
4490d9db07f0SSricharan R 	[GCC_UBI0_AXI_ARES] = { 0x68010, 0 },
4491d9db07f0SSricharan R 	[GCC_UBI0_AHB_ARES] = { 0x68010, 1 },
4492d9db07f0SSricharan R 	[GCC_UBI0_NC_AXI_ARES] = { 0x68010, 2 },
4493d9db07f0SSricharan R 	[GCC_UBI0_DBG_ARES] = { 0x68010, 3 },
4494d9db07f0SSricharan R 	[GCC_UBI0_CORE_CLAMP_ENABLE] = { 0x68010, 4 },
4495d9db07f0SSricharan R 	[GCC_UBI0_CLKRST_CLAMP_ENABLE] = { 0x68010, 5 },
4496d9db07f0SSricharan R 	[GCC_UBI0_UTCM_ARES] = { 0x68010, 6 },
4497d9db07f0SSricharan R 	[GCC_UBI0_CORE_ARES] = { 0x68010, 7 },
4498d9db07f0SSricharan R 	[GCC_NSS_CFG_ARES] = { 0x68010, 16 },
4499d9db07f0SSricharan R 	[GCC_NSS_NOC_ARES] = { 0x68010, 18 },
4500d9db07f0SSricharan R 	[GCC_NSS_CRYPTO_ARES] = { 0x68010, 19 },
4501d9db07f0SSricharan R 	[GCC_NSS_CSR_ARES] = { 0x68010, 20 },
4502d9db07f0SSricharan R 	[GCC_NSS_CE_APB_ARES] = { 0x68010, 21 },
4503d9db07f0SSricharan R 	[GCC_NSS_CE_AXI_ARES] = { 0x68010, 22 },
4504d9db07f0SSricharan R 	[GCC_NSSNOC_CE_APB_ARES] = { 0x68010, 23 },
4505d9db07f0SSricharan R 	[GCC_NSSNOC_CE_AXI_ARES] = { 0x68010, 24 },
4506d9db07f0SSricharan R 	[GCC_NSSNOC_UBI0_AHB_ARES] = { 0x68010, 25 },
4507d9db07f0SSricharan R 	[GCC_NSSNOC_SNOC_ARES] = { 0x68010, 27 },
4508d9db07f0SSricharan R 	[GCC_NSSNOC_CRYPTO_ARES] = { 0x68010, 28 },
4509d9db07f0SSricharan R 	[GCC_NSSNOC_ATB_ARES] = { 0x68010, 29 },
4510d9db07f0SSricharan R 	[GCC_NSSNOC_QOSGEN_REF_ARES] = { 0x68010, 30 },
4511d9db07f0SSricharan R 	[GCC_NSSNOC_TIMEOUT_REF_ARES] = { 0x68010, 31 },
4512d9db07f0SSricharan R 	[GCC_PCIE0_PIPE_ARES] = { 0x75040, 0 },
4513d9db07f0SSricharan R 	[GCC_PCIE0_SLEEP_ARES] = { 0x75040, 1 },
4514d9db07f0SSricharan R 	[GCC_PCIE0_CORE_STICKY_ARES] = { 0x75040, 2 },
4515d9db07f0SSricharan R 	[GCC_PCIE0_AXI_MASTER_ARES] = { 0x75040, 3 },
4516d9db07f0SSricharan R 	[GCC_PCIE0_AXI_SLAVE_ARES] = { 0x75040, 4 },
4517d9db07f0SSricharan R 	[GCC_PCIE0_AHB_ARES] = { 0x75040, 5 },
4518d9db07f0SSricharan R 	[GCC_PCIE0_AXI_MASTER_STICKY_ARES] = { 0x75040, 6 },
4519d9db07f0SSricharan R 	[GCC_PCIE0_AXI_SLAVE_STICKY_ARES] = { 0x75040, 7 },
4520d9db07f0SSricharan R 	[GCC_PPE_FULL_RESET] = { 0x68014, 0 },
4521d9db07f0SSricharan R 	[GCC_UNIPHY0_SOFT_RESET] = { 0x56004, 0 },
4522d9db07f0SSricharan R 	[GCC_UNIPHY0_XPCS_RESET] = { 0x56004, 2 },
4523d9db07f0SSricharan R 	[GCC_UNIPHY1_SOFT_RESET] = { 0x56104, 0 },
4524d9db07f0SSricharan R 	[GCC_UNIPHY1_XPCS_RESET] = { 0x56104, 2 },
4525d9db07f0SSricharan R 	[GCC_EDMA_HW_RESET] = { 0x68014, 0 },
4526d9db07f0SSricharan R 	[GCC_NSSPORT1_RESET] = { 0x68014, 0 },
4527d9db07f0SSricharan R 	[GCC_NSSPORT2_RESET] = { 0x68014, 0 },
4528d9db07f0SSricharan R 	[GCC_NSSPORT3_RESET] = { 0x68014, 0 },
4529d9db07f0SSricharan R 	[GCC_NSSPORT4_RESET] = { 0x68014, 0 },
4530d9db07f0SSricharan R 	[GCC_NSSPORT5_RESET] = { 0x68014, 0 },
4531d9db07f0SSricharan R 	[GCC_UNIPHY0_PORT1_ARES] = { 0x56004, 0 },
4532d9db07f0SSricharan R 	[GCC_UNIPHY0_PORT2_ARES] = { 0x56004, 0 },
4533d9db07f0SSricharan R 	[GCC_UNIPHY0_PORT3_ARES] = { 0x56004, 0 },
4534d9db07f0SSricharan R 	[GCC_UNIPHY0_PORT4_ARES] = { 0x56004, 0 },
4535d9db07f0SSricharan R 	[GCC_UNIPHY0_PORT5_ARES] = { 0x56004, 0 },
4536d9db07f0SSricharan R 	[GCC_UNIPHY0_PORT_4_5_RESET] = { 0x56004, 0 },
4537d9db07f0SSricharan R 	[GCC_UNIPHY0_PORT_4_RESET] = { 0x56004, 0 },
4538d9db07f0SSricharan R 	[GCC_LPASS_BCR] = {0x1F000, 0},
4539d9db07f0SSricharan R 	[GCC_UBI32_TBU_BCR] = {0x65000, 0},
4540d9db07f0SSricharan R 	[GCC_LPASS_TBU_BCR] = {0x6C000, 0},
4541d9db07f0SSricharan R 	[GCC_WCSSAON_RESET] = {0x59010, 0},
4542d9db07f0SSricharan R 	[GCC_LPASS_Q6_AXIM_ARES] = {0x1F004, 0},
4543d9db07f0SSricharan R 	[GCC_LPASS_Q6SS_TSCTR_1TO2_ARES] = {0x1F004, 1},
4544d9db07f0SSricharan R 	[GCC_LPASS_Q6SS_TRIG_ARES] = {0x1F004, 2},
4545d9db07f0SSricharan R 	[GCC_LPASS_Q6_ATBM_AT_ARES] = {0x1F004, 3},
4546d9db07f0SSricharan R 	[GCC_LPASS_Q6_PCLKDBG_ARES] = {0x1F004, 4},
4547d9db07f0SSricharan R 	[GCC_LPASS_CORE_AXIM_ARES] = {0x1F004, 5},
4548d9db07f0SSricharan R 	[GCC_LPASS_SNOC_CFG_ARES] = {0x1F004, 6},
4549d9db07f0SSricharan R 	[GCC_WCSS_DBG_ARES] = {0x59008, 0},
4550d9db07f0SSricharan R 	[GCC_WCSS_ECAHB_ARES] = {0x59008, 1},
4551d9db07f0SSricharan R 	[GCC_WCSS_ACMT_ARES] = {0x59008, 2},
4552d9db07f0SSricharan R 	[GCC_WCSS_DBG_BDG_ARES] = {0x59008, 3},
4553d9db07f0SSricharan R 	[GCC_WCSS_AHB_S_ARES] = {0x59008, 4},
4554d9db07f0SSricharan R 	[GCC_WCSS_AXI_M_ARES] = {0x59008, 5},
4555d9db07f0SSricharan R 	[GCC_Q6SS_DBG_ARES] = {0x59110, 0},
4556d9db07f0SSricharan R 	[GCC_Q6_AHB_S_ARES] = {0x59110, 1},
4557d9db07f0SSricharan R 	[GCC_Q6_AHB_ARES] = {0x59110, 2},
4558d9db07f0SSricharan R 	[GCC_Q6_AXIM2_ARES] = {0x59110, 3},
4559d9db07f0SSricharan R 	[GCC_Q6_AXIM_ARES] = {0x59110, 4},
4560d9db07f0SSricharan R };
4561d9db07f0SSricharan R 
4562d9db07f0SSricharan R static const struct of_device_id gcc_ipq6018_match_table[] = {
4563d9db07f0SSricharan R 	{ .compatible = "qcom,gcc-ipq6018" },
4564d9db07f0SSricharan R 	{ }
4565d9db07f0SSricharan R };
4566d9db07f0SSricharan R MODULE_DEVICE_TABLE(of, gcc_ipq6018_match_table);
4567d9db07f0SSricharan R 
4568d9db07f0SSricharan R static const struct regmap_config gcc_ipq6018_regmap_config = {
4569d9db07f0SSricharan R 	.reg_bits       = 32,
4570d9db07f0SSricharan R 	.reg_stride     = 4,
4571d9db07f0SSricharan R 	.val_bits       = 32,
4572d9db07f0SSricharan R 	.max_register   = 0x7fffc,
4573d9db07f0SSricharan R 	.fast_io	= true,
4574d9db07f0SSricharan R };
4575d9db07f0SSricharan R 
4576d9db07f0SSricharan R static const struct qcom_cc_desc gcc_ipq6018_desc = {
4577d9db07f0SSricharan R 	.config = &gcc_ipq6018_regmap_config,
4578d9db07f0SSricharan R 	.clks = gcc_ipq6018_clks,
4579d9db07f0SSricharan R 	.num_clks = ARRAY_SIZE(gcc_ipq6018_clks),
4580d9db07f0SSricharan R 	.resets = gcc_ipq6018_resets,
4581d9db07f0SSricharan R 	.num_resets = ARRAY_SIZE(gcc_ipq6018_resets),
4582d9db07f0SSricharan R 	.clk_hws = gcc_ipq6018_hws,
4583d9db07f0SSricharan R 	.num_clk_hws = ARRAY_SIZE(gcc_ipq6018_hws),
4584d9db07f0SSricharan R };
4585d9db07f0SSricharan R 
4586d9db07f0SSricharan R static int gcc_ipq6018_probe(struct platform_device *pdev)
4587d9db07f0SSricharan R {
4588d9db07f0SSricharan R 	struct regmap *regmap;
4589d9db07f0SSricharan R 
4590d9db07f0SSricharan R 	regmap = qcom_cc_map(pdev, &gcc_ipq6018_desc);
4591d9db07f0SSricharan R 	if (IS_ERR(regmap))
4592d9db07f0SSricharan R 		return PTR_ERR(regmap);
4593d9db07f0SSricharan R 
4594d9db07f0SSricharan R 	/* Disable SW_COLLAPSE for USB0 GDSCR */
4595d9db07f0SSricharan R 	regmap_update_bits(regmap, 0x3e078, BIT(0), 0x0);
4596d9db07f0SSricharan R 	/* Enable SW_OVERRIDE for USB0 GDSCR */
4597d9db07f0SSricharan R 	regmap_update_bits(regmap, 0x3e078, BIT(2), BIT(2));
4598d9db07f0SSricharan R 	/* Disable SW_COLLAPSE for USB1 GDSCR */
4599d9db07f0SSricharan R 	regmap_update_bits(regmap, 0x3f078, BIT(0), 0x0);
4600d9db07f0SSricharan R 	/* Enable SW_OVERRIDE for USB1 GDSCR */
4601d9db07f0SSricharan R 	regmap_update_bits(regmap, 0x3f078, BIT(2), BIT(2));
4602d9db07f0SSricharan R 
4603d9db07f0SSricharan R 	/* SW Workaround for UBI Huyara PLL */
4604d9db07f0SSricharan R 	regmap_update_bits(regmap, 0x2501c, BIT(26), BIT(26));
4605d9db07f0SSricharan R 
4606d9db07f0SSricharan R 	clk_alpha_pll_configure(&ubi32_pll_main, regmap, &ubi32_pll_config);
4607d9db07f0SSricharan R 
4608d9db07f0SSricharan R 	clk_alpha_pll_configure(&nss_crypto_pll_main, regmap,
4609d9db07f0SSricharan R 				&nss_crypto_pll_config);
4610d9db07f0SSricharan R 
4611d9db07f0SSricharan R 	return qcom_cc_really_probe(pdev, &gcc_ipq6018_desc, regmap);
4612d9db07f0SSricharan R }
4613d9db07f0SSricharan R 
4614d9db07f0SSricharan R static struct platform_driver gcc_ipq6018_driver = {
4615d9db07f0SSricharan R 	.probe = gcc_ipq6018_probe,
4616d9db07f0SSricharan R 	.driver = {
4617d9db07f0SSricharan R 		.name   = "qcom,gcc-ipq6018",
4618d9db07f0SSricharan R 		.of_match_table = gcc_ipq6018_match_table,
4619d9db07f0SSricharan R 	},
4620d9db07f0SSricharan R };
4621d9db07f0SSricharan R 
4622d9db07f0SSricharan R static int __init gcc_ipq6018_init(void)
4623d9db07f0SSricharan R {
4624d9db07f0SSricharan R 	return platform_driver_register(&gcc_ipq6018_driver);
4625d9db07f0SSricharan R }
4626d9db07f0SSricharan R core_initcall(gcc_ipq6018_init);
4627d9db07f0SSricharan R 
4628d9db07f0SSricharan R static void __exit gcc_ipq6018_exit(void)
4629d9db07f0SSricharan R {
4630d9db07f0SSricharan R 	platform_driver_unregister(&gcc_ipq6018_driver);
4631d9db07f0SSricharan R }
4632d9db07f0SSricharan R module_exit(gcc_ipq6018_exit);
4633d9db07f0SSricharan R 
4634d9db07f0SSricharan R MODULE_DESCRIPTION("Qualcomm Technologies, Inc. GCC IPQ6018 Driver");
4635d9db07f0SSricharan R MODULE_LICENSE("GPL v2");
4636