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