xref: /linux/drivers/clk/qcom/gcc-sdm660.c (revision cdd5b5a9761fd66d17586e4f4ba6588c70e640ea)
1f2a76a29STaniya Das // SPDX-License-Identifier: GPL-2.0
2f2a76a29STaniya Das /*
3f2a76a29STaniya Das  * Copyright (c) 2016-2017, The Linux Foundation. All rights reserved.
4f2a76a29STaniya Das  * Copyright (c) 2018, Craig Tatlor.
5f2a76a29STaniya Das  */
6f2a76a29STaniya Das 
7f2a76a29STaniya Das #include <linux/kernel.h>
8f2a76a29STaniya Das #include <linux/bitops.h>
9f2a76a29STaniya Das #include <linux/err.h>
10f2a76a29STaniya Das #include <linux/platform_device.h>
11f2a76a29STaniya Das #include <linux/module.h>
12f2a76a29STaniya Das #include <linux/of.h>
13f2a76a29STaniya Das #include <linux/clk-provider.h>
14f2a76a29STaniya Das #include <linux/regmap.h>
15f2a76a29STaniya Das #include <linux/reset-controller.h>
16f2a76a29STaniya Das 
17f2a76a29STaniya Das #include <dt-bindings/clock/qcom,gcc-sdm660.h>
18f2a76a29STaniya Das 
19f2a76a29STaniya Das #include "common.h"
20f2a76a29STaniya Das #include "clk-regmap.h"
21f2a76a29STaniya Das #include "clk-alpha-pll.h"
22f2a76a29STaniya Das #include "clk-rcg.h"
23f2a76a29STaniya Das #include "clk-branch.h"
24f2a76a29STaniya Das #include "reset.h"
25f2a76a29STaniya Das #include "gdsc.h"
26f2a76a29STaniya Das 
27f2a76a29STaniya Das enum {
28f2a76a29STaniya Das 	P_XO,
29f2a76a29STaniya Das 	P_SLEEP_CLK,
30f2a76a29STaniya Das 	P_GPLL0,
31f2a76a29STaniya Das 	P_GPLL1,
32f2a76a29STaniya Das 	P_GPLL4,
33f2a76a29STaniya Das 	P_GPLL0_EARLY_DIV,
34f2a76a29STaniya Das 	P_GPLL1_EARLY_DIV,
35f2a76a29STaniya Das };
36f2a76a29STaniya Das 
37f2a76a29STaniya Das static struct clk_fixed_factor xo = {
38f2a76a29STaniya Das 	.mult = 1,
39f2a76a29STaniya Das 	.div = 1,
40f2a76a29STaniya Das 	.hw.init = &(struct clk_init_data){
41f2a76a29STaniya Das 		.name = "xo",
42f2a76a29STaniya Das 		.parent_data = &(const struct clk_parent_data) {
43da09577aSBjorn Andersson 			.fw_name = "xo"
44da09577aSBjorn Andersson 		},
45da09577aSBjorn Andersson 		.num_parents = 1,
46f2a76a29STaniya Das 		.ops = &clk_fixed_factor_ops,
47f2a76a29STaniya Das 	},
48f2a76a29STaniya Das };
49f2a76a29STaniya Das 
50f2a76a29STaniya Das static struct clk_alpha_pll gpll0_early = {
51f2a76a29STaniya Das 	.offset = 0x0,
52f2a76a29STaniya Das 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
53f2a76a29STaniya Das 	.clkr = {
54f2a76a29STaniya Das 		.enable_reg = 0x52000,
55f2a76a29STaniya Das 		.enable_mask = BIT(0),
56f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
57f2a76a29STaniya Das 			.name = "gpll0_early",
58f2a76a29STaniya Das 			.parent_data = &(const struct clk_parent_data){
59da09577aSBjorn Andersson 				.fw_name = "xo",
60da09577aSBjorn Andersson 			},
61da09577aSBjorn Andersson 			.num_parents = 1,
62f2a76a29STaniya Das 			.ops = &clk_alpha_pll_ops,
63f2a76a29STaniya Das 		},
64f2a76a29STaniya Das 	},
65f2a76a29STaniya Das };
66f2a76a29STaniya Das 
67f2a76a29STaniya Das static struct clk_fixed_factor gpll0_early_div = {
68f2a76a29STaniya Das 	.mult = 1,
69f2a76a29STaniya Das 	.div = 2,
70f2a76a29STaniya Das 	.hw.init = &(struct clk_init_data){
71f2a76a29STaniya Das 		.name = "gpll0_early_div",
72f2a76a29STaniya Das 		.parent_hws = (const struct clk_hw*[]){
73da09577aSBjorn Andersson 			&gpll0_early.clkr.hw,
74da09577aSBjorn Andersson 		},
75da09577aSBjorn Andersson 		.num_parents = 1,
76f2a76a29STaniya Das 		.ops = &clk_fixed_factor_ops,
77f2a76a29STaniya Das 	},
78f2a76a29STaniya Das };
79f2a76a29STaniya Das 
80f2a76a29STaniya Das static struct clk_alpha_pll_postdiv gpll0 = {
81f2a76a29STaniya Das 	.offset = 0x00000,
82f2a76a29STaniya Das 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
83f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
84f2a76a29STaniya Das 		.name = "gpll0",
85f2a76a29STaniya Das 		.parent_hws = (const struct clk_hw*[]){
86da09577aSBjorn Andersson 			&gpll0_early.clkr.hw,
87da09577aSBjorn Andersson 		},
88da09577aSBjorn Andersson 		.num_parents = 1,
89f2a76a29STaniya Das 		.ops = &clk_alpha_pll_postdiv_ops,
90f2a76a29STaniya Das 	},
91f2a76a29STaniya Das };
92f2a76a29STaniya Das 
93f2a76a29STaniya Das static struct clk_alpha_pll gpll1_early = {
94f2a76a29STaniya Das 	.offset = 0x1000,
95f2a76a29STaniya Das 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
96f2a76a29STaniya Das 	.clkr = {
97f2a76a29STaniya Das 		.enable_reg = 0x52000,
98f2a76a29STaniya Das 		.enable_mask = BIT(1),
99f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
100f2a76a29STaniya Das 			.name = "gpll1_early",
101f2a76a29STaniya Das 			.parent_data = &(const struct clk_parent_data){
102da09577aSBjorn Andersson 				.fw_name = "xo",
103da09577aSBjorn Andersson 			},
104da09577aSBjorn Andersson 			.num_parents = 1,
105f2a76a29STaniya Das 			.ops = &clk_alpha_pll_ops,
106f2a76a29STaniya Das 		},
107f2a76a29STaniya Das 	},
108f2a76a29STaniya Das };
109f2a76a29STaniya Das 
110f2a76a29STaniya Das static struct clk_fixed_factor gpll1_early_div = {
111f2a76a29STaniya Das 	.mult = 1,
112f2a76a29STaniya Das 	.div = 2,
113f2a76a29STaniya Das 	.hw.init = &(struct clk_init_data){
114f2a76a29STaniya Das 		.name = "gpll1_early_div",
115f2a76a29STaniya Das 		.parent_hws = (const struct clk_hw*[]){
116da09577aSBjorn Andersson 			&gpll1_early.clkr.hw,
117da09577aSBjorn Andersson 		},
118da09577aSBjorn Andersson 		.num_parents = 1,
119f2a76a29STaniya Das 		.ops = &clk_fixed_factor_ops,
120f2a76a29STaniya Das 	},
121f2a76a29STaniya Das };
122f2a76a29STaniya Das 
123f2a76a29STaniya Das static struct clk_alpha_pll_postdiv gpll1 = {
124f2a76a29STaniya Das 	.offset = 0x1000,
125f2a76a29STaniya Das 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
126f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
127f2a76a29STaniya Das 		.name = "gpll1",
128f2a76a29STaniya Das 		.parent_hws = (const struct clk_hw*[]){
129da09577aSBjorn Andersson 			&gpll1_early.clkr.hw,
130da09577aSBjorn Andersson 		},
131da09577aSBjorn Andersson 		.num_parents = 1,
132f2a76a29STaniya Das 		.ops = &clk_alpha_pll_postdiv_ops,
133f2a76a29STaniya Das 	},
134f2a76a29STaniya Das };
135f2a76a29STaniya Das 
136f2a76a29STaniya Das static struct clk_alpha_pll gpll4_early = {
137f2a76a29STaniya Das 	.offset = 0x77000,
138f2a76a29STaniya Das 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
139f2a76a29STaniya Das 	.clkr = {
140f2a76a29STaniya Das 		.enable_reg = 0x52000,
141f2a76a29STaniya Das 		.enable_mask = BIT(4),
142f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
143f2a76a29STaniya Das 			.name = "gpll4_early",
144f2a76a29STaniya Das 			.parent_data = &(const struct clk_parent_data){
145da09577aSBjorn Andersson 				.fw_name = "xo",
146da09577aSBjorn Andersson 			},
147da09577aSBjorn Andersson 			.num_parents = 1,
148f2a76a29STaniya Das 			.ops = &clk_alpha_pll_ops,
149f2a76a29STaniya Das 		},
150f2a76a29STaniya Das 	},
151f2a76a29STaniya Das };
152f2a76a29STaniya Das 
153f2a76a29STaniya Das static struct clk_alpha_pll_postdiv gpll4 = {
154f2a76a29STaniya Das 	.offset = 0x77000,
155f2a76a29STaniya Das 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
156f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data)
157f2a76a29STaniya Das 	{
158f2a76a29STaniya Das 		.name = "gpll4",
159f2a76a29STaniya Das 		.parent_hws = (const struct clk_hw*[]){
160da09577aSBjorn Andersson 			&gpll4_early.clkr.hw,
161da09577aSBjorn Andersson 		},
162da09577aSBjorn Andersson 		.num_parents = 1,
163f2a76a29STaniya Das 		.ops = &clk_alpha_pll_postdiv_ops,
164f2a76a29STaniya Das 	},
165f2a76a29STaniya Das };
166f2a76a29STaniya Das 
167f2a76a29STaniya Das static const struct parent_map gcc_parent_map_xo_gpll0_gpll0_early_div[] = {
168a61ca021SStephen Boyd 	{ P_XO, 0 },
169a61ca021SStephen Boyd 	{ P_GPLL0, 1 },
170a61ca021SStephen Boyd 	{ P_GPLL0_EARLY_DIV, 6 },
171a61ca021SStephen Boyd };
172a61ca021SStephen Boyd 
173a61ca021SStephen Boyd static const struct clk_parent_data gcc_parent_data_xo_gpll0_gpll0_early_div[] = {
174da09577aSBjorn Andersson 	{ .fw_name = "xo" },
175da09577aSBjorn Andersson 	{ .hw = &gpll0.clkr.hw },
176da09577aSBjorn Andersson 	{ .hw = &gpll0_early_div.hw },
177da09577aSBjorn Andersson };
178a61ca021SStephen Boyd 
179a61ca021SStephen Boyd static const struct parent_map gcc_parent_map_xo_gpll0[] = {
180a61ca021SStephen Boyd 	{ P_XO, 0 },
181a61ca021SStephen Boyd 	{ P_GPLL0, 1 },
182a61ca021SStephen Boyd };
183a61ca021SStephen Boyd 
184a61ca021SStephen Boyd static const struct clk_parent_data gcc_parent_data_xo_gpll0[] = {
185da09577aSBjorn Andersson 	{ .fw_name = "xo" },
186da09577aSBjorn Andersson 	{ .hw = &gpll0.clkr.hw },
187da09577aSBjorn Andersson };
188a61ca021SStephen Boyd 
189a61ca021SStephen Boyd static const struct parent_map gcc_parent_map_xo_gpll0_sleep_clk_gpll0_early_div[] = {
190a61ca021SStephen Boyd 	{ P_XO, 0 },
191a61ca021SStephen Boyd 	{ P_GPLL0, 1 },
192a61ca021SStephen Boyd 	{ P_SLEEP_CLK, 5 },
193a61ca021SStephen Boyd 	{ P_GPLL0_EARLY_DIV, 6 },
194a61ca021SStephen Boyd };
195a61ca021SStephen Boyd 
196a61ca021SStephen Boyd static const struct clk_parent_data gcc_parent_data_xo_gpll0_sleep_clk_gpll0_early_div[] = {
197da09577aSBjorn Andersson 	{ .fw_name = "xo" },
198da09577aSBjorn Andersson 	{ .hw = &gpll0.clkr.hw },
199da09577aSBjorn Andersson 	{ .fw_name = "sleep_clk" },
200da09577aSBjorn Andersson 	{ .hw = &gpll0_early_div.hw },
201da09577aSBjorn Andersson };
202a61ca021SStephen Boyd 
203a61ca021SStephen Boyd static const struct parent_map gcc_parent_map_xo_sleep_clk[] = {
204a61ca021SStephen Boyd 	{ P_XO, 0 },
205a61ca021SStephen Boyd 	{ P_SLEEP_CLK, 5 },
206a61ca021SStephen Boyd };
207a61ca021SStephen Boyd 
208a61ca021SStephen Boyd static const struct clk_parent_data gcc_parent_data_xo_sleep_clk[] = {
209da09577aSBjorn Andersson 	{ .fw_name = "xo" },
210da09577aSBjorn Andersson 	{ .fw_name = "sleep_clk" },
211da09577aSBjorn Andersson };
212a61ca021SStephen Boyd 
213a61ca021SStephen Boyd static const struct parent_map gcc_parent_map_xo_gpll4[] = {
214a61ca021SStephen Boyd 	{ P_XO, 0 },
215a61ca021SStephen Boyd 	{ P_GPLL4, 5 },
216a61ca021SStephen Boyd };
217a61ca021SStephen Boyd 
218a61ca021SStephen Boyd static const struct clk_parent_data gcc_parent_data_xo_gpll4[] = {
219da09577aSBjorn Andersson 	{ .fw_name = "xo" },
220da09577aSBjorn Andersson 	{ .hw = &gpll4.clkr.hw },
221da09577aSBjorn Andersson };
222a61ca021SStephen Boyd 
223a61ca021SStephen Boyd static const struct parent_map gcc_parent_map_xo_gpll0_gpll0_early_div_gpll1_gpll4_gpll1_early_div[] = {
224a61ca021SStephen Boyd 	{ P_XO, 0 },
225a61ca021SStephen Boyd 	{ P_GPLL0, 1 },
226a61ca021SStephen Boyd 	{ P_GPLL0_EARLY_DIV, 3 },
227a61ca021SStephen Boyd 	{ P_GPLL1, 4 },
228a61ca021SStephen Boyd 	{ P_GPLL4, 5 },
229a61ca021SStephen Boyd 	{ P_GPLL1_EARLY_DIV, 6 },
230a61ca021SStephen Boyd };
231a61ca021SStephen Boyd 
232a61ca021SStephen Boyd static const struct clk_parent_data gcc_parent_data_xo_gpll0_gpll0_early_div_gpll1_gpll4_gpll1_early_div[] = {
233da09577aSBjorn Andersson 	{ .fw_name = "xo" },
234da09577aSBjorn Andersson 	{ .hw = &gpll0.clkr.hw },
235da09577aSBjorn Andersson 	{ .hw = &gpll0_early_div.hw },
236da09577aSBjorn Andersson 	{ .hw = &gpll1.clkr.hw },
237da09577aSBjorn Andersson 	{ .hw = &gpll4.clkr.hw },
238da09577aSBjorn Andersson 	{ .hw = &gpll1_early_div.hw },
239da09577aSBjorn Andersson };
240a61ca021SStephen Boyd 
241a61ca021SStephen Boyd static const struct parent_map gcc_parent_map_xo_gpll0_gpll4_gpll0_early_div[] = {
242a61ca021SStephen Boyd 	{ P_XO, 0 },
243a61ca021SStephen Boyd 	{ P_GPLL0, 1 },
244a61ca021SStephen Boyd 	{ P_GPLL4, 5 },
245a61ca021SStephen Boyd 	{ P_GPLL0_EARLY_DIV, 6 },
246a61ca021SStephen Boyd };
247a61ca021SStephen Boyd 
248a61ca021SStephen Boyd static const struct clk_parent_data gcc_parent_data_xo_gpll0_gpll4_gpll0_early_div[] = {
249da09577aSBjorn Andersson 	{ .fw_name = "xo" },
250da09577aSBjorn Andersson 	{ .hw = &gpll0.clkr.hw },
251da09577aSBjorn Andersson 	{ .hw = &gpll4.clkr.hw },
252da09577aSBjorn Andersson 	{ .hw = &gpll0_early_div.hw },
253da09577aSBjorn Andersson };
254a61ca021SStephen Boyd 
255a61ca021SStephen Boyd static const struct parent_map gcc_parent_map_xo_gpll0_gpll0_early_div_gpll4[] = {
256a61ca021SStephen Boyd 	{ P_XO, 0 },
257a61ca021SStephen Boyd 	{ P_GPLL0, 1 },
258a61ca021SStephen Boyd 	{ P_GPLL0_EARLY_DIV, 2 },
259a61ca021SStephen Boyd 	{ P_GPLL4, 5 },
260a61ca021SStephen Boyd };
261a61ca021SStephen Boyd 
262a61ca021SStephen Boyd static const struct clk_parent_data gcc_parent_data_xo_gpll0_gpll0_early_div_gpll4[] = {
263da09577aSBjorn Andersson 	{ .fw_name = "xo" },
264da09577aSBjorn Andersson 	{ .hw = &gpll0.clkr.hw },
265da09577aSBjorn Andersson 	{ .hw = &gpll0_early_div.hw },
266da09577aSBjorn Andersson 	{ .hw = &gpll4.clkr.hw },
267da09577aSBjorn Andersson };
268a61ca021SStephen Boyd 
269a61ca021SStephen Boyd static const struct freq_tbl ftbl_blsp1_qup1_i2c_apps_clk_src[] = {
270f2a76a29STaniya Das 	F(19200000, P_XO, 1, 0, 0),
271f2a76a29STaniya Das 	F(50000000, P_GPLL0, 12, 0, 0),
272f2a76a29STaniya Das 	{ }
273f2a76a29STaniya Das };
274f2a76a29STaniya Das 
275f2a76a29STaniya Das static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = {
276f2a76a29STaniya Das 	.cmd_rcgr = 0x19020,
277f2a76a29STaniya Das 	.mnd_width = 0,
278f2a76a29STaniya Das 	.hid_width = 5,
279f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll0_gpll0_early_div,
280f2a76a29STaniya Das 	.freq_tbl = ftbl_blsp1_qup1_i2c_apps_clk_src,
281f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
282f2a76a29STaniya Das 		.name = "blsp1_qup1_i2c_apps_clk_src",
283f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll0_gpll0_early_div,
284da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll0_gpll0_early_div),
28500ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
286f2a76a29STaniya Das 	},
287f2a76a29STaniya Das };
288f2a76a29STaniya Das 
289f2a76a29STaniya Das static const struct freq_tbl ftbl_blsp1_qup1_spi_apps_clk_src[] = {
290f2a76a29STaniya Das 	F(960000, P_XO, 10, 1, 2),
291f2a76a29STaniya Das 	F(4800000, P_XO, 4, 0, 0),
292f2a76a29STaniya Das 	F(9600000, P_XO, 2, 0, 0),
293f2a76a29STaniya Das 	F(15000000, P_GPLL0, 10, 1, 4),
294f2a76a29STaniya Das 	F(19200000, P_XO, 1, 0, 0),
295f2a76a29STaniya Das 	F(25000000, P_GPLL0, 12, 1, 2),
296f2a76a29STaniya Das 	F(50000000, P_GPLL0, 12, 0, 0),
297f2a76a29STaniya Das 	{ }
298f2a76a29STaniya Das };
299f2a76a29STaniya Das 
300f2a76a29STaniya Das static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = {
301f2a76a29STaniya Das 	.cmd_rcgr = 0x1900c,
302f2a76a29STaniya Das 	.mnd_width = 8,
303f2a76a29STaniya Das 	.hid_width = 5,
304f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll0_gpll0_early_div,
305f2a76a29STaniya Das 	.freq_tbl = ftbl_blsp1_qup1_spi_apps_clk_src,
306f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
307f2a76a29STaniya Das 		.name = "blsp1_qup1_spi_apps_clk_src",
308f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll0_gpll0_early_div,
309da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll0_gpll0_early_div),
31000ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
311f2a76a29STaniya Das 	},
312f2a76a29STaniya Das };
313f2a76a29STaniya Das 
314f2a76a29STaniya Das static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = {
315f2a76a29STaniya Das 	.cmd_rcgr = 0x1b020,
316f2a76a29STaniya Das 	.mnd_width = 0,
317f2a76a29STaniya Das 	.hid_width = 5,
318f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll0_gpll0_early_div,
319f2a76a29STaniya Das 	.freq_tbl = ftbl_blsp1_qup1_i2c_apps_clk_src,
320f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
321f2a76a29STaniya Das 		.name = "blsp1_qup2_i2c_apps_clk_src",
322f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll0_gpll0_early_div,
323da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll0_gpll0_early_div),
32400ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
325f2a76a29STaniya Das 	},
326f2a76a29STaniya Das };
327f2a76a29STaniya Das 
328f2a76a29STaniya Das static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = {
329f2a76a29STaniya Das 	.cmd_rcgr = 0x1b00c,
330f2a76a29STaniya Das 	.mnd_width = 8,
331f2a76a29STaniya Das 	.hid_width = 5,
332f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll0_gpll0_early_div,
333f2a76a29STaniya Das 	.freq_tbl = ftbl_blsp1_qup1_spi_apps_clk_src,
334f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
335f2a76a29STaniya Das 		.name = "blsp1_qup2_spi_apps_clk_src",
336f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll0_gpll0_early_div,
337da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll0_gpll0_early_div),
33800ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
339f2a76a29STaniya Das 	},
340f2a76a29STaniya Das };
341f2a76a29STaniya Das 
342f2a76a29STaniya Das static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = {
343f2a76a29STaniya Das 	.cmd_rcgr = 0x1d020,
344f2a76a29STaniya Das 	.mnd_width = 0,
345f2a76a29STaniya Das 	.hid_width = 5,
346f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll0_gpll0_early_div,
347f2a76a29STaniya Das 	.freq_tbl = ftbl_blsp1_qup1_i2c_apps_clk_src,
348f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
349f2a76a29STaniya Das 		.name = "blsp1_qup3_i2c_apps_clk_src",
350f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll0_gpll0_early_div,
351da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll0_gpll0_early_div),
35200ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
353f2a76a29STaniya Das 	},
354f2a76a29STaniya Das };
355f2a76a29STaniya Das 
356f2a76a29STaniya Das static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = {
357f2a76a29STaniya Das 	.cmd_rcgr = 0x1d00c,
358f2a76a29STaniya Das 	.mnd_width = 8,
359f2a76a29STaniya Das 	.hid_width = 5,
360f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll0_gpll0_early_div,
361f2a76a29STaniya Das 	.freq_tbl = ftbl_blsp1_qup1_spi_apps_clk_src,
362f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
363f2a76a29STaniya Das 		.name = "blsp1_qup3_spi_apps_clk_src",
364f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll0_gpll0_early_div,
365da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll0_gpll0_early_div),
36600ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
367f2a76a29STaniya Das 	},
368f2a76a29STaniya Das };
369f2a76a29STaniya Das 
370f2a76a29STaniya Das static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = {
371f2a76a29STaniya Das 	.cmd_rcgr = 0x1f020,
372f2a76a29STaniya Das 	.mnd_width = 0,
373f2a76a29STaniya Das 	.hid_width = 5,
374f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll0_gpll0_early_div,
375f2a76a29STaniya Das 	.freq_tbl = ftbl_blsp1_qup1_i2c_apps_clk_src,
376f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
377f2a76a29STaniya Das 		.name = "blsp1_qup4_i2c_apps_clk_src",
378f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll0_gpll0_early_div,
379da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll0_gpll0_early_div),
38000ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
381f2a76a29STaniya Das 	},
382f2a76a29STaniya Das };
383f2a76a29STaniya Das 
384f2a76a29STaniya Das static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = {
385f2a76a29STaniya Das 	.cmd_rcgr = 0x1f00c,
386f2a76a29STaniya Das 	.mnd_width = 8,
387f2a76a29STaniya Das 	.hid_width = 5,
388f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll0_gpll0_early_div,
389f2a76a29STaniya Das 	.freq_tbl = ftbl_blsp1_qup1_spi_apps_clk_src,
390f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
391f2a76a29STaniya Das 		.name = "blsp1_qup4_spi_apps_clk_src",
392f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll0_gpll0_early_div,
393da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll0_gpll0_early_div),
39400ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
395f2a76a29STaniya Das 	},
396f2a76a29STaniya Das };
397f2a76a29STaniya Das 
398f2a76a29STaniya Das static const struct freq_tbl ftbl_blsp1_uart1_apps_clk_src[] = {
399f2a76a29STaniya Das 	F(3686400, P_GPLL0, 1, 96, 15625),
400f2a76a29STaniya Das 	F(7372800, P_GPLL0, 1, 192, 15625),
401f2a76a29STaniya Das 	F(14745600, P_GPLL0, 1, 384, 15625),
402f2a76a29STaniya Das 	F(16000000, P_GPLL0, 5, 2, 15),
403f2a76a29STaniya Das 	F(19200000, P_XO, 1, 0, 0),
404f2a76a29STaniya Das 	F(24000000, P_GPLL0, 5, 1, 5),
405f2a76a29STaniya Das 	F(32000000, P_GPLL0, 1, 4, 75),
406f2a76a29STaniya Das 	F(40000000, P_GPLL0, 15, 0, 0),
407f2a76a29STaniya Das 	F(46400000, P_GPLL0, 1, 29, 375),
408f2a76a29STaniya Das 	F(48000000, P_GPLL0, 12.5, 0, 0),
409f2a76a29STaniya Das 	F(51200000, P_GPLL0, 1, 32, 375),
410f2a76a29STaniya Das 	F(56000000, P_GPLL0, 1, 7, 75),
411f2a76a29STaniya Das 	F(58982400, P_GPLL0, 1, 1536, 15625),
412f2a76a29STaniya Das 	F(60000000, P_GPLL0, 10, 0, 0),
413f2a76a29STaniya Das 	F(63157895, P_GPLL0, 9.5, 0, 0),
414f2a76a29STaniya Das 	{ }
415f2a76a29STaniya Das };
416f2a76a29STaniya Das 
417f2a76a29STaniya Das static struct clk_rcg2 blsp1_uart1_apps_clk_src = {
418f2a76a29STaniya Das 	.cmd_rcgr = 0x1a00c,
419f2a76a29STaniya Das 	.mnd_width = 16,
420f2a76a29STaniya Das 	.hid_width = 5,
421f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll0_gpll0_early_div,
422f2a76a29STaniya Das 	.freq_tbl = ftbl_blsp1_uart1_apps_clk_src,
423f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
424f2a76a29STaniya Das 		.name = "blsp1_uart1_apps_clk_src",
425f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll0_gpll0_early_div,
426da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll0_gpll0_early_div),
42700ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
428f2a76a29STaniya Das 	},
429f2a76a29STaniya Das };
430f2a76a29STaniya Das 
431f2a76a29STaniya Das static struct clk_rcg2 blsp1_uart2_apps_clk_src = {
432f2a76a29STaniya Das 	.cmd_rcgr = 0x1c00c,
433f2a76a29STaniya Das 	.mnd_width = 16,
434f2a76a29STaniya Das 	.hid_width = 5,
435f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll0_gpll0_early_div,
436f2a76a29STaniya Das 	.freq_tbl = ftbl_blsp1_uart1_apps_clk_src,
437f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
438f2a76a29STaniya Das 		.name = "blsp1_uart2_apps_clk_src",
439f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll0_gpll0_early_div,
440da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll0_gpll0_early_div),
44100ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
442f2a76a29STaniya Das 	},
443f2a76a29STaniya Das };
444f2a76a29STaniya Das 
445f2a76a29STaniya Das static struct clk_rcg2 blsp2_qup1_i2c_apps_clk_src = {
446f2a76a29STaniya Das 	.cmd_rcgr = 0x26020,
447f2a76a29STaniya Das 	.mnd_width = 0,
448f2a76a29STaniya Das 	.hid_width = 5,
449f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll0_gpll0_early_div,
450f2a76a29STaniya Das 	.freq_tbl = ftbl_blsp1_qup1_i2c_apps_clk_src,
451f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
452f2a76a29STaniya Das 		.name = "blsp2_qup1_i2c_apps_clk_src",
453f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll0_gpll0_early_div,
454da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll0_gpll0_early_div),
45500ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
456f2a76a29STaniya Das 	},
457f2a76a29STaniya Das };
458f2a76a29STaniya Das 
459f2a76a29STaniya Das static struct clk_rcg2 blsp2_qup1_spi_apps_clk_src = {
460f2a76a29STaniya Das 	.cmd_rcgr = 0x2600c,
461f2a76a29STaniya Das 	.mnd_width = 8,
462f2a76a29STaniya Das 	.hid_width = 5,
463f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll0_gpll0_early_div,
464f2a76a29STaniya Das 	.freq_tbl = ftbl_blsp1_qup1_spi_apps_clk_src,
465f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
466f2a76a29STaniya Das 		.name = "blsp2_qup1_spi_apps_clk_src",
467f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll0_gpll0_early_div,
468da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll0_gpll0_early_div),
46900ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
470f2a76a29STaniya Das 	},
471f2a76a29STaniya Das };
472f2a76a29STaniya Das 
473f2a76a29STaniya Das static struct clk_rcg2 blsp2_qup2_i2c_apps_clk_src = {
474f2a76a29STaniya Das 	.cmd_rcgr = 0x28020,
475f2a76a29STaniya Das 	.mnd_width = 0,
476f2a76a29STaniya Das 	.hid_width = 5,
477f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll0_gpll0_early_div,
478f2a76a29STaniya Das 	.freq_tbl = ftbl_blsp1_qup1_i2c_apps_clk_src,
479f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
480f2a76a29STaniya Das 		.name = "blsp2_qup2_i2c_apps_clk_src",
481f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll0_gpll0_early_div,
482da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll0_gpll0_early_div),
48300ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
484f2a76a29STaniya Das 	},
485f2a76a29STaniya Das };
486f2a76a29STaniya Das 
487f2a76a29STaniya Das static struct clk_rcg2 blsp2_qup2_spi_apps_clk_src = {
488f2a76a29STaniya Das 	.cmd_rcgr = 0x2800c,
489f2a76a29STaniya Das 	.mnd_width = 8,
490f2a76a29STaniya Das 	.hid_width = 5,
491f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll0_gpll0_early_div,
492f2a76a29STaniya Das 	.freq_tbl = ftbl_blsp1_qup1_spi_apps_clk_src,
493f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
494f2a76a29STaniya Das 		.name = "blsp2_qup2_spi_apps_clk_src",
495f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll0_gpll0_early_div,
496da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll0_gpll0_early_div),
49700ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
498f2a76a29STaniya Das 	},
499f2a76a29STaniya Das };
500f2a76a29STaniya Das 
501f2a76a29STaniya Das static struct clk_rcg2 blsp2_qup3_i2c_apps_clk_src = {
502f2a76a29STaniya Das 	.cmd_rcgr = 0x2a020,
503f2a76a29STaniya Das 	.mnd_width = 0,
504f2a76a29STaniya Das 	.hid_width = 5,
505f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll0_gpll0_early_div,
506f2a76a29STaniya Das 	.freq_tbl = ftbl_blsp1_qup1_i2c_apps_clk_src,
507f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
508f2a76a29STaniya Das 		.name = "blsp2_qup3_i2c_apps_clk_src",
509f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll0_gpll0_early_div,
510da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll0_gpll0_early_div),
51100ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
512f2a76a29STaniya Das 	},
513f2a76a29STaniya Das };
514f2a76a29STaniya Das 
515f2a76a29STaniya Das static struct clk_rcg2 blsp2_qup3_spi_apps_clk_src = {
516f2a76a29STaniya Das 	.cmd_rcgr = 0x2a00c,
517f2a76a29STaniya Das 	.mnd_width = 8,
518f2a76a29STaniya Das 	.hid_width = 5,
519f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll0_gpll0_early_div,
520f2a76a29STaniya Das 	.freq_tbl = ftbl_blsp1_qup1_spi_apps_clk_src,
521f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
522f2a76a29STaniya Das 		.name = "blsp2_qup3_spi_apps_clk_src",
523f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll0_gpll0_early_div,
524da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll0_gpll0_early_div),
52500ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
526f2a76a29STaniya Das 	},
527f2a76a29STaniya Das };
528f2a76a29STaniya Das 
529f2a76a29STaniya Das static struct clk_rcg2 blsp2_qup4_i2c_apps_clk_src = {
530f2a76a29STaniya Das 	.cmd_rcgr = 0x2c020,
531f2a76a29STaniya Das 	.mnd_width = 0,
532f2a76a29STaniya Das 	.hid_width = 5,
533f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll0_gpll0_early_div,
534f2a76a29STaniya Das 	.freq_tbl = ftbl_blsp1_qup1_i2c_apps_clk_src,
535f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
536f2a76a29STaniya Das 		.name = "blsp2_qup4_i2c_apps_clk_src",
537f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll0_gpll0_early_div,
538da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll0_gpll0_early_div),
53900ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
540f2a76a29STaniya Das 	},
541f2a76a29STaniya Das };
542f2a76a29STaniya Das 
543f2a76a29STaniya Das static struct clk_rcg2 blsp2_qup4_spi_apps_clk_src = {
544f2a76a29STaniya Das 	.cmd_rcgr = 0x2c00c,
545f2a76a29STaniya Das 	.mnd_width = 8,
546f2a76a29STaniya Das 	.hid_width = 5,
547f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll0_gpll0_early_div,
548f2a76a29STaniya Das 	.freq_tbl = ftbl_blsp1_qup1_spi_apps_clk_src,
549f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
550f2a76a29STaniya Das 		.name = "blsp2_qup4_spi_apps_clk_src",
551f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll0_gpll0_early_div,
552da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll0_gpll0_early_div),
55300ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
554f2a76a29STaniya Das 	},
555f2a76a29STaniya Das };
556f2a76a29STaniya Das 
557f2a76a29STaniya Das static struct clk_rcg2 blsp2_uart1_apps_clk_src = {
558f2a76a29STaniya Das 	.cmd_rcgr = 0x2700c,
559f2a76a29STaniya Das 	.mnd_width = 16,
560f2a76a29STaniya Das 	.hid_width = 5,
561f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll0_gpll0_early_div,
562f2a76a29STaniya Das 	.freq_tbl = ftbl_blsp1_uart1_apps_clk_src,
563f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
564f2a76a29STaniya Das 		.name = "blsp2_uart1_apps_clk_src",
565f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll0_gpll0_early_div,
566da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll0_gpll0_early_div),
56700ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
568f2a76a29STaniya Das 	},
569f2a76a29STaniya Das };
570f2a76a29STaniya Das 
571f2a76a29STaniya Das static struct clk_rcg2 blsp2_uart2_apps_clk_src = {
572f2a76a29STaniya Das 	.cmd_rcgr = 0x2900c,
573f2a76a29STaniya Das 	.mnd_width = 16,
574f2a76a29STaniya Das 	.hid_width = 5,
575f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll0_gpll0_early_div,
576f2a76a29STaniya Das 	.freq_tbl = ftbl_blsp1_uart1_apps_clk_src,
577f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
578f2a76a29STaniya Das 		.name = "blsp2_uart2_apps_clk_src",
579f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll0_gpll0_early_div,
580da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll0_gpll0_early_div),
58100ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
582f2a76a29STaniya Das 	},
583f2a76a29STaniya Das };
584f2a76a29STaniya Das 
585f2a76a29STaniya Das static const struct freq_tbl ftbl_gp1_clk_src[] = {
586f2a76a29STaniya Das 	F(19200000, P_XO, 1, 0, 0),
587f2a76a29STaniya Das 	F(100000000, P_GPLL0, 6, 0, 0),
588f2a76a29STaniya Das 	F(200000000, P_GPLL0, 3, 0, 0),
589f2a76a29STaniya Das 	{ }
590f2a76a29STaniya Das };
591f2a76a29STaniya Das 
592f2a76a29STaniya Das static struct clk_rcg2 gp1_clk_src = {
593f2a76a29STaniya Das 	.cmd_rcgr = 0x64004,
594f2a76a29STaniya Das 	.mnd_width = 8,
595f2a76a29STaniya Das 	.hid_width = 5,
596f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll0_sleep_clk_gpll0_early_div,
597f2a76a29STaniya Das 	.freq_tbl = ftbl_gp1_clk_src,
598f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
599f2a76a29STaniya Das 		.name = "gp1_clk_src",
600f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll0_sleep_clk_gpll0_early_div,
601da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll0_sleep_clk_gpll0_early_div),
60200ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
603f2a76a29STaniya Das 	},
604f2a76a29STaniya Das };
605f2a76a29STaniya Das 
606f2a76a29STaniya Das static struct clk_rcg2 gp2_clk_src = {
607f2a76a29STaniya Das 	.cmd_rcgr = 0x65004,
608f2a76a29STaniya Das 	.mnd_width = 8,
609f2a76a29STaniya Das 	.hid_width = 5,
610f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll0_sleep_clk_gpll0_early_div,
611f2a76a29STaniya Das 	.freq_tbl = ftbl_gp1_clk_src,
612f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
613f2a76a29STaniya Das 		.name = "gp2_clk_src",
614f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll0_sleep_clk_gpll0_early_div,
615da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll0_sleep_clk_gpll0_early_div),
61600ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
617f2a76a29STaniya Das 	},
618f2a76a29STaniya Das };
619f2a76a29STaniya Das 
620f2a76a29STaniya Das static struct clk_rcg2 gp3_clk_src = {
621f2a76a29STaniya Das 	.cmd_rcgr = 0x66004,
622f2a76a29STaniya Das 	.mnd_width = 8,
623f2a76a29STaniya Das 	.hid_width = 5,
624f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll0_sleep_clk_gpll0_early_div,
625f2a76a29STaniya Das 	.freq_tbl = ftbl_gp1_clk_src,
626f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
627f2a76a29STaniya Das 		.name = "gp3_clk_src",
628f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll0_sleep_clk_gpll0_early_div,
629da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll0_sleep_clk_gpll0_early_div),
63000ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
631f2a76a29STaniya Das 	},
632f2a76a29STaniya Das };
633f2a76a29STaniya Das 
634f2a76a29STaniya Das static const struct freq_tbl ftbl_hmss_gpll0_clk_src[] = {
635f2a76a29STaniya Das 	F(300000000, P_GPLL0, 2, 0, 0),
636f2a76a29STaniya Das 	F(600000000, P_GPLL0, 1, 0, 0),
637f2a76a29STaniya Das 	{ }
638f2a76a29STaniya Das };
639f2a76a29STaniya Das 
640f2a76a29STaniya Das static struct clk_rcg2 hmss_gpll0_clk_src = {
641f2a76a29STaniya Das 	.cmd_rcgr = 0x4805c,
642f2a76a29STaniya Das 	.mnd_width = 0,
643f2a76a29STaniya Das 	.hid_width = 5,
644f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll0_gpll0_early_div,
645f2a76a29STaniya Das 	.freq_tbl = ftbl_hmss_gpll0_clk_src,
646f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
647f2a76a29STaniya Das 		.name = "hmss_gpll0_clk_src",
648f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll0_gpll0_early_div,
649da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll0_gpll0_early_div),
65000ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
651f2a76a29STaniya Das 	},
652f2a76a29STaniya Das };
653f2a76a29STaniya Das 
654f2a76a29STaniya Das static const struct freq_tbl ftbl_hmss_gpll4_clk_src[] = {
655f2a76a29STaniya Das 	F(384000000, P_GPLL4, 4, 0, 0),
656f2a76a29STaniya Das 	F(768000000, P_GPLL4, 2, 0, 0),
657f2a76a29STaniya Das 	F(1536000000, P_GPLL4, 1, 0, 0),
658f2a76a29STaniya Das 	{ }
659f2a76a29STaniya Das };
660f2a76a29STaniya Das 
661f2a76a29STaniya Das static struct clk_rcg2 hmss_gpll4_clk_src = {
662f2a76a29STaniya Das 	.cmd_rcgr = 0x48074,
663f2a76a29STaniya Das 	.mnd_width = 0,
664f2a76a29STaniya Das 	.hid_width = 5,
665f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll4,
666f2a76a29STaniya Das 	.freq_tbl = ftbl_hmss_gpll4_clk_src,
667f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
668f2a76a29STaniya Das 		.name = "hmss_gpll4_clk_src",
669f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll4,
670da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll4),
67100ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
672f2a76a29STaniya Das 	},
673f2a76a29STaniya Das };
674f2a76a29STaniya Das 
675f2a76a29STaniya Das static const struct freq_tbl ftbl_hmss_rbcpr_clk_src[] = {
676f2a76a29STaniya Das 	F(19200000, P_XO, 1, 0, 0),
677f2a76a29STaniya Das 	{ }
678f2a76a29STaniya Das };
679f2a76a29STaniya Das 
680f2a76a29STaniya Das static struct clk_rcg2 hmss_rbcpr_clk_src = {
681f2a76a29STaniya Das 	.cmd_rcgr = 0x48044,
682f2a76a29STaniya Das 	.mnd_width = 0,
683f2a76a29STaniya Das 	.hid_width = 5,
684f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll0,
685d46e5a39SKonrad Dybcio 	.freq_tbl = ftbl_hmss_rbcpr_clk_src,
686f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
687f2a76a29STaniya Das 		.name = "hmss_rbcpr_clk_src",
688f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll0,
689da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll0),
69000ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
691f2a76a29STaniya Das 	},
692f2a76a29STaniya Das };
693f2a76a29STaniya Das 
694f2a76a29STaniya Das static const struct freq_tbl ftbl_pdm2_clk_src[] = {
695f2a76a29STaniya Das 	F(60000000, P_GPLL0, 10, 0, 0),
696f2a76a29STaniya Das 	{ }
697f2a76a29STaniya Das };
698f2a76a29STaniya Das 
699f2a76a29STaniya Das static struct clk_rcg2 pdm2_clk_src = {
700f2a76a29STaniya Das 	.cmd_rcgr = 0x33010,
701f2a76a29STaniya Das 	.mnd_width = 0,
702f2a76a29STaniya Das 	.hid_width = 5,
703f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll0_gpll0_early_div,
704f2a76a29STaniya Das 	.freq_tbl = ftbl_pdm2_clk_src,
705f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
706f2a76a29STaniya Das 		.name = "pdm2_clk_src",
707f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll0_gpll0_early_div,
708da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll0_gpll0_early_div),
70900ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
710f2a76a29STaniya Das 	},
711f2a76a29STaniya Das };
712f2a76a29STaniya Das 
713f2a76a29STaniya Das static const struct freq_tbl ftbl_qspi_ser_clk_src[] = {
714f2a76a29STaniya Das 	F(19200000, P_XO, 1, 0, 0),
715f2a76a29STaniya Das 	F(80200000, P_GPLL1_EARLY_DIV, 5, 0, 0),
716f2a76a29STaniya Das 	F(160400000, P_GPLL1, 5, 0, 0),
717f2a76a29STaniya Das 	F(267333333, P_GPLL1, 3, 0, 0),
718f2a76a29STaniya Das 	{ }
719f2a76a29STaniya Das };
720f2a76a29STaniya Das 
721f2a76a29STaniya Das static struct clk_rcg2 qspi_ser_clk_src = {
722f2a76a29STaniya Das 	.cmd_rcgr = 0x4d00c,
723f2a76a29STaniya Das 	.mnd_width = 0,
724f2a76a29STaniya Das 	.hid_width = 5,
725f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll0_gpll0_early_div_gpll1_gpll4_gpll1_early_div,
726f2a76a29STaniya Das 	.freq_tbl = ftbl_qspi_ser_clk_src,
727f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
728f2a76a29STaniya Das 		.name = "qspi_ser_clk_src",
729f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll0_gpll0_early_div_gpll1_gpll4_gpll1_early_div,
730da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll0_gpll0_early_div_gpll1_gpll4_gpll1_early_div),
73100ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
732f2a76a29STaniya Das 	},
733f2a76a29STaniya Das };
734f2a76a29STaniya Das 
735f2a76a29STaniya Das static const struct freq_tbl ftbl_sdcc1_apps_clk_src[] = {
736f2a76a29STaniya Das 	F(144000, P_XO, 16, 3, 25),
737f2a76a29STaniya Das 	F(400000, P_XO, 12, 1, 4),
738f2a76a29STaniya Das 	F(20000000, P_GPLL0_EARLY_DIV, 5, 1, 3),
739f2a76a29STaniya Das 	F(25000000, P_GPLL0_EARLY_DIV, 6, 1, 2),
740f2a76a29STaniya Das 	F(50000000, P_GPLL0_EARLY_DIV, 6, 0, 0),
741f2a76a29STaniya Das 	F(100000000, P_GPLL0, 6, 0, 0),
742f2a76a29STaniya Das 	F(192000000, P_GPLL4, 8, 0, 0),
743f2a76a29STaniya Das 	F(384000000, P_GPLL4, 4, 0, 0),
744f2a76a29STaniya Das 	{ }
745f2a76a29STaniya Das };
746f2a76a29STaniya Das 
747f2a76a29STaniya Das static struct clk_rcg2 sdcc1_apps_clk_src = {
748f2a76a29STaniya Das 	.cmd_rcgr = 0x1602c,
749f2a76a29STaniya Das 	.mnd_width = 8,
750f2a76a29STaniya Das 	.hid_width = 5,
751f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll0_gpll4_gpll0_early_div,
752f2a76a29STaniya Das 	.freq_tbl = ftbl_sdcc1_apps_clk_src,
753f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
754f2a76a29STaniya Das 		.name = "sdcc1_apps_clk_src",
755f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll0_gpll4_gpll0_early_div,
756da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll0_gpll4_gpll0_early_div),
75700ff8188SMarijn Suijten 		.ops = &clk_rcg2_floor_ops,
758*6956c18fSMarijn Suijten 	},
759f2a76a29STaniya Das };
760f2a76a29STaniya Das 
761f2a76a29STaniya Das static const struct freq_tbl ftbl_sdcc1_ice_core_clk_src[] = {
762f2a76a29STaniya Das 	F(75000000, P_GPLL0_EARLY_DIV, 4, 0, 0),
763f2a76a29STaniya Das 	F(150000000, P_GPLL0, 4, 0, 0),
764f2a76a29STaniya Das 	F(200000000, P_GPLL0, 3, 0, 0),
765f2a76a29STaniya Das 	F(300000000, P_GPLL0, 2, 0, 0),
766f2a76a29STaniya Das 	{ }
767f2a76a29STaniya Das };
768f2a76a29STaniya Das 
769f2a76a29STaniya Das static struct clk_rcg2 sdcc1_ice_core_clk_src = {
770f2a76a29STaniya Das 	.cmd_rcgr = 0x16010,
771f2a76a29STaniya Das 	.mnd_width = 0,
772f2a76a29STaniya Das 	.hid_width = 5,
773f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll0_gpll0_early_div,
774f2a76a29STaniya Das 	.freq_tbl = ftbl_sdcc1_ice_core_clk_src,
775f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
776f2a76a29STaniya Das 		.name = "sdcc1_ice_core_clk_src",
777f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll0_gpll0_early_div,
778da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll0_gpll0_early_div),
77900ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
780f2a76a29STaniya Das 	},
781f2a76a29STaniya Das };
782f2a76a29STaniya Das 
783f2a76a29STaniya Das static const struct freq_tbl ftbl_sdcc2_apps_clk_src[] = {
784f2a76a29STaniya Das 	F(144000, P_XO, 16, 3, 25),
785f2a76a29STaniya Das 	F(400000, P_XO, 12, 1, 4),
786f2a76a29STaniya Das 	F(20000000, P_GPLL0_EARLY_DIV, 5, 1, 3),
787f2a76a29STaniya Das 	F(25000000, P_GPLL0_EARLY_DIV, 6, 1, 2),
788f2a76a29STaniya Das 	F(50000000, P_GPLL0_EARLY_DIV, 6, 0, 0),
789f2a76a29STaniya Das 	F(100000000, P_GPLL0, 6, 0, 0),
790f2a76a29STaniya Das 	F(192000000, P_GPLL4, 8, 0, 0),
791f2a76a29STaniya Das 	F(200000000, P_GPLL0, 3, 0, 0),
792f2a76a29STaniya Das 	{ }
793f2a76a29STaniya Das };
794f2a76a29STaniya Das 
795f2a76a29STaniya Das static struct clk_rcg2 sdcc2_apps_clk_src = {
796f2a76a29STaniya Das 	.cmd_rcgr = 0x14010,
797f2a76a29STaniya Das 	.mnd_width = 8,
798f2a76a29STaniya Das 	.hid_width = 5,
799f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll0_gpll0_early_div_gpll4,
800f2a76a29STaniya Das 	.freq_tbl = ftbl_sdcc2_apps_clk_src,
801f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
802f2a76a29STaniya Das 		.name = "sdcc2_apps_clk_src",
803f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll0_gpll0_early_div_gpll4,
804da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll0_gpll0_early_div_gpll4),
80500ff8188SMarijn Suijten 		.ops = &clk_rcg2_floor_ops,
8063f905469STaniya Das 	},
807f2a76a29STaniya Das };
808f2a76a29STaniya Das 
809f2a76a29STaniya Das static const struct freq_tbl ftbl_ufs_axi_clk_src[] = {
810f2a76a29STaniya Das 	F(50000000, P_GPLL0_EARLY_DIV, 6, 0, 0),
811f2a76a29STaniya Das 	F(100000000, P_GPLL0, 6, 0, 0),
812f2a76a29STaniya Das 	F(150000000, P_GPLL0, 4, 0, 0),
813f2a76a29STaniya Das 	F(200000000, P_GPLL0, 3, 0, 0),
814f2a76a29STaniya Das 	F(240000000, P_GPLL0, 2.5, 0, 0),
815f2a76a29STaniya Das 	{ }
816f2a76a29STaniya Das };
817f2a76a29STaniya Das 
818f2a76a29STaniya Das static struct clk_rcg2 ufs_axi_clk_src = {
819f2a76a29STaniya Das 	.cmd_rcgr = 0x75018,
820f2a76a29STaniya Das 	.mnd_width = 8,
821f2a76a29STaniya Das 	.hid_width = 5,
822f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll0_gpll0_early_div,
823f2a76a29STaniya Das 	.freq_tbl = ftbl_ufs_axi_clk_src,
824f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
825f2a76a29STaniya Das 		.name = "ufs_axi_clk_src",
826f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll0_gpll0_early_div,
827da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll0_gpll0_early_div),
82800ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
829f2a76a29STaniya Das 	},
830f2a76a29STaniya Das };
831f2a76a29STaniya Das 
832f2a76a29STaniya Das static const struct freq_tbl ftbl_ufs_ice_core_clk_src[] = {
833f2a76a29STaniya Das 	F(75000000, P_GPLL0_EARLY_DIV, 4, 0, 0),
834f2a76a29STaniya Das 	F(150000000, P_GPLL0, 4, 0, 0),
835f2a76a29STaniya Das 	F(300000000, P_GPLL0, 2, 0, 0),
836f2a76a29STaniya Das 	{ }
837f2a76a29STaniya Das };
838f2a76a29STaniya Das 
839f2a76a29STaniya Das static struct clk_rcg2 ufs_ice_core_clk_src = {
840f2a76a29STaniya Das 	.cmd_rcgr = 0x76010,
841f2a76a29STaniya Das 	.mnd_width = 0,
842f2a76a29STaniya Das 	.hid_width = 5,
843f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll0_gpll0_early_div,
844f2a76a29STaniya Das 	.freq_tbl = ftbl_ufs_ice_core_clk_src,
845f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
846f2a76a29STaniya Das 		.name = "ufs_ice_core_clk_src",
847f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll0_gpll0_early_div,
848da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll0_gpll0_early_div),
84900ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
850f2a76a29STaniya Das 	},
851f2a76a29STaniya Das };
852f2a76a29STaniya Das 
853f2a76a29STaniya Das static struct clk_rcg2 ufs_phy_aux_clk_src = {
854f2a76a29STaniya Das 	.cmd_rcgr = 0x76044,
855f2a76a29STaniya Das 	.mnd_width = 0,
856f2a76a29STaniya Das 	.hid_width = 5,
857f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_sleep_clk,
858f2a76a29STaniya Das 	.freq_tbl = ftbl_hmss_rbcpr_clk_src,
859f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
860f2a76a29STaniya Das 		.name = "ufs_phy_aux_clk_src",
861f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_sleep_clk,
862da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_sleep_clk),
86300ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
864f2a76a29STaniya Das 	},
865f2a76a29STaniya Das };
866f2a76a29STaniya Das 
867f2a76a29STaniya Das static const struct freq_tbl ftbl_ufs_unipro_core_clk_src[] = {
868f2a76a29STaniya Das 	F(37500000, P_GPLL0_EARLY_DIV, 8, 0, 0),
869f2a76a29STaniya Das 	F(75000000, P_GPLL0, 8, 0, 0),
870f2a76a29STaniya Das 	F(150000000, P_GPLL0, 4, 0, 0),
871f2a76a29STaniya Das 	{ }
872f2a76a29STaniya Das };
873f2a76a29STaniya Das 
874f2a76a29STaniya Das static struct clk_rcg2 ufs_unipro_core_clk_src = {
875f2a76a29STaniya Das 	.cmd_rcgr = 0x76028,
876f2a76a29STaniya Das 	.mnd_width = 0,
877f2a76a29STaniya Das 	.hid_width = 5,
878f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll0_gpll0_early_div,
879f2a76a29STaniya Das 	.freq_tbl = ftbl_ufs_unipro_core_clk_src,
880f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
881f2a76a29STaniya Das 		.name = "ufs_unipro_core_clk_src",
882f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll0_gpll0_early_div,
883da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll0_gpll0_early_div),
88400ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
885f2a76a29STaniya Das 	},
886f2a76a29STaniya Das };
887f2a76a29STaniya Das 
888f2a76a29STaniya Das static const struct freq_tbl ftbl_usb20_master_clk_src[] = {
889f2a76a29STaniya Das 	F(19200000, P_XO, 1, 0, 0),
890f2a76a29STaniya Das 	F(60000000, P_GPLL0, 10, 0, 0),
891f2a76a29STaniya Das 	F(120000000, P_GPLL0, 5, 0, 0),
892f2a76a29STaniya Das 	{ }
893f2a76a29STaniya Das };
894f2a76a29STaniya Das 
895f2a76a29STaniya Das static struct clk_rcg2 usb20_master_clk_src = {
896f2a76a29STaniya Das 	.cmd_rcgr = 0x2f010,
897f2a76a29STaniya Das 	.mnd_width = 8,
898f2a76a29STaniya Das 	.hid_width = 5,
899f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll0_gpll0_early_div,
900f2a76a29STaniya Das 	.freq_tbl = ftbl_usb20_master_clk_src,
901f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
902f2a76a29STaniya Das 		.name = "usb20_master_clk_src",
903f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll0_gpll0_early_div,
904da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll0_gpll0_early_div),
90500ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
906f2a76a29STaniya Das 	},
907f2a76a29STaniya Das };
908f2a76a29STaniya Das 
909f2a76a29STaniya Das static const struct freq_tbl ftbl_usb20_mock_utmi_clk_src[] = {
910f2a76a29STaniya Das 	F(19200000, P_XO, 1, 0, 0),
911f2a76a29STaniya Das 	F(60000000, P_GPLL0, 10, 0, 0),
912f2a76a29STaniya Das 	{ }
913f2a76a29STaniya Das };
914f2a76a29STaniya Das 
915f2a76a29STaniya Das static struct clk_rcg2 usb20_mock_utmi_clk_src = {
916f2a76a29STaniya Das 	.cmd_rcgr = 0x2f024,
917f2a76a29STaniya Das 	.mnd_width = 0,
918f2a76a29STaniya Das 	.hid_width = 5,
919f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll0_gpll0_early_div,
920f2a76a29STaniya Das 	.freq_tbl = ftbl_usb20_mock_utmi_clk_src,
921f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
922f2a76a29STaniya Das 		.name = "usb20_mock_utmi_clk_src",
923f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll0_gpll0_early_div,
924da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll0_gpll0_early_div),
92500ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
926f2a76a29STaniya Das 	},
927f2a76a29STaniya Das };
928f2a76a29STaniya Das 
929f2a76a29STaniya Das static const struct freq_tbl ftbl_usb30_master_clk_src[] = {
930f2a76a29STaniya Das 	F(19200000, P_XO, 1, 0, 0),
931f2a76a29STaniya Das 	F(66666667, P_GPLL0_EARLY_DIV, 4.5, 0, 0),
932f2a76a29STaniya Das 	F(120000000, P_GPLL0, 5, 0, 0),
933f2a76a29STaniya Das 	F(133333333, P_GPLL0, 4.5, 0, 0),
934f2a76a29STaniya Das 	F(150000000, P_GPLL0, 4, 0, 0),
935f2a76a29STaniya Das 	F(200000000, P_GPLL0, 3, 0, 0),
936f2a76a29STaniya Das 	F(240000000, P_GPLL0, 2.5, 0, 0),
937f2a76a29STaniya Das 	{ }
938f2a76a29STaniya Das };
939f2a76a29STaniya Das 
940f2a76a29STaniya Das static struct clk_rcg2 usb30_master_clk_src = {
941f2a76a29STaniya Das 	.cmd_rcgr = 0xf014,
942f2a76a29STaniya Das 	.mnd_width = 8,
943f2a76a29STaniya Das 	.hid_width = 5,
944f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll0_gpll0_early_div,
945f2a76a29STaniya Das 	.freq_tbl = ftbl_usb30_master_clk_src,
946f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
947f2a76a29STaniya Das 		.name = "usb30_master_clk_src",
948f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll0_gpll0_early_div,
949da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll0_gpll0_early_div),
95000ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
951f2a76a29STaniya Das 	},
952f2a76a29STaniya Das };
953f2a76a29STaniya Das 
954f2a76a29STaniya Das static const struct freq_tbl ftbl_usb30_mock_utmi_clk_src[] = {
955f2a76a29STaniya Das 	F(19200000, P_XO, 1, 0, 0),
956f2a76a29STaniya Das 	F(40000000, P_GPLL0_EARLY_DIV, 7.5, 0, 0),
957f2a76a29STaniya Das 	F(60000000, P_GPLL0, 10, 0, 0),
958f2a76a29STaniya Das 	{ }
959f2a76a29STaniya Das };
960f2a76a29STaniya Das 
961f2a76a29STaniya Das static struct clk_rcg2 usb30_mock_utmi_clk_src = {
962f2a76a29STaniya Das 	.cmd_rcgr = 0xf028,
963f2a76a29STaniya Das 	.mnd_width = 0,
964f2a76a29STaniya Das 	.hid_width = 5,
965f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_gpll0_gpll0_early_div,
966f2a76a29STaniya Das 	.freq_tbl = ftbl_usb30_mock_utmi_clk_src,
967f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
968f2a76a29STaniya Das 		.name = "usb30_mock_utmi_clk_src",
969f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_gpll0_gpll0_early_div,
970da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_gpll0_gpll0_early_div),
97100ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
972f2a76a29STaniya Das 	},
973f2a76a29STaniya Das };
974f2a76a29STaniya Das 
975f2a76a29STaniya Das static const struct freq_tbl ftbl_usb3_phy_aux_clk_src[] = {
976f2a76a29STaniya Das 	F(1200000, P_XO, 16, 0, 0),
977f2a76a29STaniya Das 	F(19200000, P_XO, 1, 0, 0),
978f2a76a29STaniya Das 	{ }
979f2a76a29STaniya Das };
980f2a76a29STaniya Das 
981f2a76a29STaniya Das static struct clk_rcg2 usb3_phy_aux_clk_src = {
982f2a76a29STaniya Das 	.cmd_rcgr = 0x5000c,
983f2a76a29STaniya Das 	.mnd_width = 0,
984f2a76a29STaniya Das 	.hid_width = 5,
985f2a76a29STaniya Das 	.parent_map = gcc_parent_map_xo_sleep_clk,
986f2a76a29STaniya Das 	.freq_tbl = ftbl_usb3_phy_aux_clk_src,
987f2a76a29STaniya Das 	.clkr.hw.init = &(struct clk_init_data){
988f2a76a29STaniya Das 		.name = "usb3_phy_aux_clk_src",
989f2a76a29STaniya Das 		.parent_data = gcc_parent_data_xo_sleep_clk,
990da09577aSBjorn Andersson 		.num_parents = ARRAY_SIZE(gcc_parent_data_xo_sleep_clk),
99100ff8188SMarijn Suijten 		.ops = &clk_rcg2_ops,
992f2a76a29STaniya Das 	},
993f2a76a29STaniya Das };
994f2a76a29STaniya Das 
995f2a76a29STaniya Das static struct clk_branch gcc_aggre2_ufs_axi_clk = {
996f2a76a29STaniya Das 	.halt_reg = 0x75034,
997f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
998f2a76a29STaniya Das 	.clkr = {
999f2a76a29STaniya Das 		.enable_reg = 0x75034,
1000f2a76a29STaniya Das 		.enable_mask = BIT(0),
1001f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1002f2a76a29STaniya Das 			.name = "gcc_aggre2_ufs_axi_clk",
1003f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1004da09577aSBjorn Andersson 				&ufs_axi_clk_src.clkr.hw,
1005da09577aSBjorn Andersson 			},
1006f2a76a29STaniya Das 			.num_parents = 1,
1007f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1008f2a76a29STaniya Das 		},
1009f2a76a29STaniya Das 	},
1010f2a76a29STaniya Das };
1011f2a76a29STaniya Das 
1012f2a76a29STaniya Das static struct clk_branch gcc_aggre2_usb3_axi_clk = {
1013f2a76a29STaniya Das 	.halt_reg = 0xf03c,
1014f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1015f2a76a29STaniya Das 	.clkr = {
1016f2a76a29STaniya Das 		.enable_reg = 0xf03c,
1017f2a76a29STaniya Das 		.enable_mask = BIT(0),
1018f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1019f2a76a29STaniya Das 			.name = "gcc_aggre2_usb3_axi_clk",
1020f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1021da09577aSBjorn Andersson 				&usb30_master_clk_src.clkr.hw,
1022da09577aSBjorn Andersson 			},
1023f2a76a29STaniya Das 			.num_parents = 1,
1024f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1025f2a76a29STaniya Das 		},
1026f2a76a29STaniya Das 	},
1027f2a76a29STaniya Das };
1028f2a76a29STaniya Das 
1029f2a76a29STaniya Das static struct clk_branch gcc_bimc_gfx_clk = {
1030f2a76a29STaniya Das 	.halt_reg = 0x7106c,
1031f2a76a29STaniya Das 	.halt_check = BRANCH_VOTED,
1032f2a76a29STaniya Das 	.clkr = {
1033f2a76a29STaniya Das 		.enable_reg = 0x7106c,
1034f2a76a29STaniya Das 		.enable_mask = BIT(0),
1035f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1036f2a76a29STaniya Das 			.name = "gcc_bimc_gfx_clk",
1037f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1038f2a76a29STaniya Das 		},
1039f2a76a29STaniya Das 	},
1040f2a76a29STaniya Das };
1041f2a76a29STaniya Das 
1042f2a76a29STaniya Das static struct clk_branch gcc_bimc_hmss_axi_clk = {
1043f2a76a29STaniya Das 	.halt_reg = 0x48004,
1044f2a76a29STaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1045f2a76a29STaniya Das 	.clkr = {
1046f2a76a29STaniya Das 		.enable_reg = 0x52004,
1047f2a76a29STaniya Das 		.enable_mask = BIT(22),
1048f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1049f2a76a29STaniya Das 			.name = "gcc_bimc_hmss_axi_clk",
1050f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1051f2a76a29STaniya Das 		},
1052f2a76a29STaniya Das 	},
1053f2a76a29STaniya Das };
1054f2a76a29STaniya Das 
1055f2a76a29STaniya Das static struct clk_branch gcc_bimc_mss_q6_axi_clk = {
1056f2a76a29STaniya Das 	.halt_reg = 0x4401c,
1057f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1058f2a76a29STaniya Das 	.clkr = {
1059f2a76a29STaniya Das 		.enable_reg = 0x4401c,
1060f2a76a29STaniya Das 		.enable_mask = BIT(0),
1061f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1062f2a76a29STaniya Das 			.name = "gcc_bimc_mss_q6_axi_clk",
1063f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1064f2a76a29STaniya Das 		},
1065f2a76a29STaniya Das 	},
1066f2a76a29STaniya Das };
1067f2a76a29STaniya Das 
1068f2a76a29STaniya Das static struct clk_branch gcc_blsp1_ahb_clk = {
1069f2a76a29STaniya Das 	.halt_reg = 0x17004,
1070f2a76a29STaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1071f2a76a29STaniya Das 	.clkr = {
1072f2a76a29STaniya Das 		.enable_reg = 0x52004,
1073f2a76a29STaniya Das 		.enable_mask = BIT(17),
1074f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1075f2a76a29STaniya Das 			.name = "gcc_blsp1_ahb_clk",
1076f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1077f2a76a29STaniya Das 		},
1078f2a76a29STaniya Das 	},
1079f2a76a29STaniya Das };
1080f2a76a29STaniya Das 
1081f2a76a29STaniya Das static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = {
1082f2a76a29STaniya Das 	.halt_reg = 0x19008,
1083f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1084f2a76a29STaniya Das 	.clkr = {
1085f2a76a29STaniya Das 		.enable_reg = 0x19008,
1086f2a76a29STaniya Das 		.enable_mask = BIT(0),
1087f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1088f2a76a29STaniya Das 			.name = "gcc_blsp1_qup1_i2c_apps_clk",
1089f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1090da09577aSBjorn Andersson 				&blsp1_qup1_i2c_apps_clk_src.clkr.hw,
1091da09577aSBjorn Andersson 			},
1092f2a76a29STaniya Das 			.num_parents = 1,
1093f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1094f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1095f2a76a29STaniya Das 		},
1096f2a76a29STaniya Das 	},
1097f2a76a29STaniya Das };
1098f2a76a29STaniya Das 
1099f2a76a29STaniya Das static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = {
1100f2a76a29STaniya Das 	.halt_reg = 0x19004,
1101f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1102f2a76a29STaniya Das 	.clkr = {
1103f2a76a29STaniya Das 		.enable_reg = 0x19004,
1104f2a76a29STaniya Das 		.enable_mask = BIT(0),
1105f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1106f2a76a29STaniya Das 			.name = "gcc_blsp1_qup1_spi_apps_clk",
1107f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1108da09577aSBjorn Andersson 				&blsp1_qup1_spi_apps_clk_src.clkr.hw,
1109da09577aSBjorn Andersson 			},
1110f2a76a29STaniya Das 			.num_parents = 1,
1111f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1112f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1113f2a76a29STaniya Das 		},
1114f2a76a29STaniya Das 	},
1115f2a76a29STaniya Das };
1116f2a76a29STaniya Das 
1117f2a76a29STaniya Das static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = {
1118f2a76a29STaniya Das 	.halt_reg = 0x1b008,
1119f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1120f2a76a29STaniya Das 	.clkr = {
1121f2a76a29STaniya Das 		.enable_reg = 0x1b008,
1122f2a76a29STaniya Das 		.enable_mask = BIT(0),
1123f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1124f2a76a29STaniya Das 			.name = "gcc_blsp1_qup2_i2c_apps_clk",
1125f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1126da09577aSBjorn Andersson 				&blsp1_qup2_i2c_apps_clk_src.clkr.hw,
1127da09577aSBjorn Andersson 			},
1128f2a76a29STaniya Das 			.num_parents = 1,
1129f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1130f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1131f2a76a29STaniya Das 		},
1132f2a76a29STaniya Das 	},
1133f2a76a29STaniya Das };
1134f2a76a29STaniya Das 
1135f2a76a29STaniya Das static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = {
1136f2a76a29STaniya Das 	.halt_reg = 0x1b004,
1137f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1138f2a76a29STaniya Das 	.clkr = {
1139f2a76a29STaniya Das 		.enable_reg = 0x1b004,
1140f2a76a29STaniya Das 		.enable_mask = BIT(0),
1141f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1142f2a76a29STaniya Das 			.name = "gcc_blsp1_qup2_spi_apps_clk",
1143f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1144da09577aSBjorn Andersson 				&blsp1_qup2_spi_apps_clk_src.clkr.hw,
1145da09577aSBjorn Andersson 			},
1146f2a76a29STaniya Das 			.num_parents = 1,
1147f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1148f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1149f2a76a29STaniya Das 		},
1150f2a76a29STaniya Das 	},
1151f2a76a29STaniya Das };
1152f2a76a29STaniya Das 
1153f2a76a29STaniya Das static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = {
1154f2a76a29STaniya Das 	.halt_reg = 0x1d008,
1155f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1156f2a76a29STaniya Das 	.clkr = {
1157f2a76a29STaniya Das 		.enable_reg = 0x1d008,
1158f2a76a29STaniya Das 		.enable_mask = BIT(0),
1159f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1160f2a76a29STaniya Das 			.name = "gcc_blsp1_qup3_i2c_apps_clk",
1161f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1162da09577aSBjorn Andersson 				&blsp1_qup3_i2c_apps_clk_src.clkr.hw,
1163da09577aSBjorn Andersson 			},
1164f2a76a29STaniya Das 			.num_parents = 1,
1165f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1166f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1167f2a76a29STaniya Das 		},
1168f2a76a29STaniya Das 	},
1169f2a76a29STaniya Das };
1170f2a76a29STaniya Das 
1171f2a76a29STaniya Das static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = {
1172f2a76a29STaniya Das 	.halt_reg = 0x1d004,
1173f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1174f2a76a29STaniya Das 	.clkr = {
1175f2a76a29STaniya Das 		.enable_reg = 0x1d004,
1176f2a76a29STaniya Das 		.enable_mask = BIT(0),
1177f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1178f2a76a29STaniya Das 			.name = "gcc_blsp1_qup3_spi_apps_clk",
1179f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1180da09577aSBjorn Andersson 				&blsp1_qup3_spi_apps_clk_src.clkr.hw,
1181da09577aSBjorn Andersson 			},
1182f2a76a29STaniya Das 			.num_parents = 1,
1183f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1184f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1185f2a76a29STaniya Das 		},
1186f2a76a29STaniya Das 	},
1187f2a76a29STaniya Das };
1188f2a76a29STaniya Das 
1189f2a76a29STaniya Das static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = {
1190f2a76a29STaniya Das 	.halt_reg = 0x1f008,
1191f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1192f2a76a29STaniya Das 	.clkr = {
1193f2a76a29STaniya Das 		.enable_reg = 0x1f008,
1194f2a76a29STaniya Das 		.enable_mask = BIT(0),
1195f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1196f2a76a29STaniya Das 			.name = "gcc_blsp1_qup4_i2c_apps_clk",
1197f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1198da09577aSBjorn Andersson 				&blsp1_qup4_i2c_apps_clk_src.clkr.hw,
1199da09577aSBjorn Andersson 			},
1200f2a76a29STaniya Das 			.num_parents = 1,
1201f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1202f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1203f2a76a29STaniya Das 		},
1204f2a76a29STaniya Das 	},
1205f2a76a29STaniya Das };
1206f2a76a29STaniya Das 
1207f2a76a29STaniya Das static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = {
1208f2a76a29STaniya Das 	.halt_reg = 0x1f004,
1209f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1210f2a76a29STaniya Das 	.clkr = {
1211f2a76a29STaniya Das 		.enable_reg = 0x1f004,
1212f2a76a29STaniya Das 		.enable_mask = BIT(0),
1213f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1214f2a76a29STaniya Das 			.name = "gcc_blsp1_qup4_spi_apps_clk",
1215f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1216da09577aSBjorn Andersson 				&blsp1_qup4_spi_apps_clk_src.clkr.hw,
1217da09577aSBjorn Andersson 			},
1218f2a76a29STaniya Das 			.num_parents = 1,
1219f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1220f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1221f2a76a29STaniya Das 		},
1222f2a76a29STaniya Das 	},
1223f2a76a29STaniya Das };
1224f2a76a29STaniya Das 
1225f2a76a29STaniya Das static struct clk_branch gcc_blsp1_uart1_apps_clk = {
1226f2a76a29STaniya Das 	.halt_reg = 0x1a004,
1227f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1228f2a76a29STaniya Das 	.clkr = {
1229f2a76a29STaniya Das 		.enable_reg = 0x1a004,
1230f2a76a29STaniya Das 		.enable_mask = BIT(0),
1231f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1232f2a76a29STaniya Das 			.name = "gcc_blsp1_uart1_apps_clk",
1233f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1234da09577aSBjorn Andersson 				&blsp1_uart1_apps_clk_src.clkr.hw,
1235da09577aSBjorn Andersson 			},
1236f2a76a29STaniya Das 			.num_parents = 1,
1237f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1238f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1239f2a76a29STaniya Das 		},
1240f2a76a29STaniya Das 	},
1241f2a76a29STaniya Das };
1242f2a76a29STaniya Das 
1243f2a76a29STaniya Das static struct clk_branch gcc_blsp1_uart2_apps_clk = {
1244f2a76a29STaniya Das 	.halt_reg = 0x1c004,
1245f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1246f2a76a29STaniya Das 	.clkr = {
1247f2a76a29STaniya Das 		.enable_reg = 0x1c004,
1248f2a76a29STaniya Das 		.enable_mask = BIT(0),
1249f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1250f2a76a29STaniya Das 			.name = "gcc_blsp1_uart2_apps_clk",
1251f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1252da09577aSBjorn Andersson 				&blsp1_uart2_apps_clk_src.clkr.hw,
1253da09577aSBjorn Andersson 			},
1254f2a76a29STaniya Das 			.num_parents = 1,
1255f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1256f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1257f2a76a29STaniya Das 		},
1258f2a76a29STaniya Das 	},
1259f2a76a29STaniya Das };
1260f2a76a29STaniya Das 
1261f2a76a29STaniya Das static struct clk_branch gcc_blsp2_ahb_clk = {
1262f2a76a29STaniya Das 	.halt_reg = 0x25004,
1263f2a76a29STaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1264f2a76a29STaniya Das 	.clkr = {
1265f2a76a29STaniya Das 		.enable_reg = 0x52004,
1266f2a76a29STaniya Das 		.enable_mask = BIT(15),
1267f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1268f2a76a29STaniya Das 			.name = "gcc_blsp2_ahb_clk",
1269f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1270f2a76a29STaniya Das 		},
1271f2a76a29STaniya Das 	},
1272f2a76a29STaniya Das };
1273f2a76a29STaniya Das 
1274f2a76a29STaniya Das static struct clk_branch gcc_blsp2_qup1_i2c_apps_clk = {
1275f2a76a29STaniya Das 	.halt_reg = 0x26008,
1276f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1277f2a76a29STaniya Das 	.clkr = {
1278f2a76a29STaniya Das 		.enable_reg = 0x26008,
1279f2a76a29STaniya Das 		.enable_mask = BIT(0),
1280f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1281f2a76a29STaniya Das 			.name = "gcc_blsp2_qup1_i2c_apps_clk",
1282f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1283da09577aSBjorn Andersson 				&blsp2_qup1_i2c_apps_clk_src.clkr.hw,
1284da09577aSBjorn Andersson 			},
1285f2a76a29STaniya Das 			.num_parents = 1,
1286f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1287f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1288f2a76a29STaniya Das 		},
1289f2a76a29STaniya Das 	},
1290f2a76a29STaniya Das };
1291f2a76a29STaniya Das 
1292f2a76a29STaniya Das static struct clk_branch gcc_blsp2_qup1_spi_apps_clk = {
1293f2a76a29STaniya Das 	.halt_reg = 0x26004,
1294f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1295f2a76a29STaniya Das 	.clkr = {
1296f2a76a29STaniya Das 		.enable_reg = 0x26004,
1297f2a76a29STaniya Das 		.enable_mask = BIT(0),
1298f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1299f2a76a29STaniya Das 			.name = "gcc_blsp2_qup1_spi_apps_clk",
1300f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1301da09577aSBjorn Andersson 				&blsp2_qup1_spi_apps_clk_src.clkr.hw,
1302da09577aSBjorn Andersson 			},
1303f2a76a29STaniya Das 			.num_parents = 1,
1304f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1305f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1306f2a76a29STaniya Das 		},
1307f2a76a29STaniya Das 	},
1308f2a76a29STaniya Das };
1309f2a76a29STaniya Das 
1310f2a76a29STaniya Das static struct clk_branch gcc_blsp2_qup2_i2c_apps_clk = {
1311f2a76a29STaniya Das 	.halt_reg = 0x28008,
1312f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1313f2a76a29STaniya Das 	.clkr = {
1314f2a76a29STaniya Das 		.enable_reg = 0x28008,
1315f2a76a29STaniya Das 		.enable_mask = BIT(0),
1316f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1317f2a76a29STaniya Das 			.name = "gcc_blsp2_qup2_i2c_apps_clk",
1318f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1319da09577aSBjorn Andersson 				&blsp2_qup2_i2c_apps_clk_src.clkr.hw,
1320da09577aSBjorn Andersson 			},
1321f2a76a29STaniya Das 			.num_parents = 1,
1322f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1323f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1324f2a76a29STaniya Das 		},
1325f2a76a29STaniya Das 	},
1326f2a76a29STaniya Das };
1327f2a76a29STaniya Das 
1328f2a76a29STaniya Das static struct clk_branch gcc_blsp2_qup2_spi_apps_clk = {
1329f2a76a29STaniya Das 	.halt_reg = 0x28004,
1330f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1331f2a76a29STaniya Das 	.clkr = {
1332f2a76a29STaniya Das 		.enable_reg = 0x28004,
1333f2a76a29STaniya Das 		.enable_mask = BIT(0),
1334f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1335f2a76a29STaniya Das 			.name = "gcc_blsp2_qup2_spi_apps_clk",
1336f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1337da09577aSBjorn Andersson 				&blsp2_qup2_spi_apps_clk_src.clkr.hw,
1338da09577aSBjorn Andersson 			},
1339f2a76a29STaniya Das 			.num_parents = 1,
1340f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1341f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1342f2a76a29STaniya Das 		},
1343f2a76a29STaniya Das 	},
1344f2a76a29STaniya Das };
1345f2a76a29STaniya Das 
1346f2a76a29STaniya Das static struct clk_branch gcc_blsp2_qup3_i2c_apps_clk = {
1347f2a76a29STaniya Das 	.halt_reg = 0x2a008,
1348f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1349f2a76a29STaniya Das 	.clkr = {
1350f2a76a29STaniya Das 		.enable_reg = 0x2a008,
1351f2a76a29STaniya Das 		.enable_mask = BIT(0),
1352f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1353f2a76a29STaniya Das 			.name = "gcc_blsp2_qup3_i2c_apps_clk",
1354f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1355da09577aSBjorn Andersson 				&blsp2_qup3_i2c_apps_clk_src.clkr.hw,
1356da09577aSBjorn Andersson 			},
1357f2a76a29STaniya Das 			.num_parents = 1,
1358f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1359f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1360f2a76a29STaniya Das 		},
1361f2a76a29STaniya Das 	},
1362f2a76a29STaniya Das };
1363f2a76a29STaniya Das 
1364f2a76a29STaniya Das static struct clk_branch gcc_blsp2_qup3_spi_apps_clk = {
1365f2a76a29STaniya Das 	.halt_reg = 0x2a004,
1366f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1367f2a76a29STaniya Das 	.clkr = {
1368f2a76a29STaniya Das 		.enable_reg = 0x2a004,
1369f2a76a29STaniya Das 		.enable_mask = BIT(0),
1370f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1371f2a76a29STaniya Das 			.name = "gcc_blsp2_qup3_spi_apps_clk",
1372f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1373da09577aSBjorn Andersson 				&blsp2_qup3_spi_apps_clk_src.clkr.hw,
1374da09577aSBjorn Andersson 			},
1375f2a76a29STaniya Das 			.num_parents = 1,
1376f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1377f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1378f2a76a29STaniya Das 		},
1379f2a76a29STaniya Das 	},
1380f2a76a29STaniya Das };
1381f2a76a29STaniya Das 
1382f2a76a29STaniya Das static struct clk_branch gcc_blsp2_qup4_i2c_apps_clk = {
1383f2a76a29STaniya Das 	.halt_reg = 0x2c008,
1384f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1385f2a76a29STaniya Das 	.clkr = {
1386f2a76a29STaniya Das 		.enable_reg = 0x2c008,
1387f2a76a29STaniya Das 		.enable_mask = BIT(0),
1388f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1389f2a76a29STaniya Das 			.name = "gcc_blsp2_qup4_i2c_apps_clk",
1390f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1391da09577aSBjorn Andersson 				&blsp2_qup4_i2c_apps_clk_src.clkr.hw,
1392da09577aSBjorn Andersson 			},
1393f2a76a29STaniya Das 			.num_parents = 1,
1394f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1395f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1396f2a76a29STaniya Das 		},
1397f2a76a29STaniya Das 	},
1398f2a76a29STaniya Das };
1399f2a76a29STaniya Das 
1400f2a76a29STaniya Das static struct clk_branch gcc_blsp2_qup4_spi_apps_clk = {
1401f2a76a29STaniya Das 	.halt_reg = 0x2c004,
1402f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1403f2a76a29STaniya Das 	.clkr = {
1404f2a76a29STaniya Das 		.enable_reg = 0x2c004,
1405f2a76a29STaniya Das 		.enable_mask = BIT(0),
1406f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1407f2a76a29STaniya Das 			.name = "gcc_blsp2_qup4_spi_apps_clk",
1408f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1409da09577aSBjorn Andersson 				&blsp2_qup4_spi_apps_clk_src.clkr.hw,
1410da09577aSBjorn Andersson 			},
1411f2a76a29STaniya Das 			.num_parents = 1,
1412f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1413f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1414f2a76a29STaniya Das 		},
1415f2a76a29STaniya Das 	},
1416f2a76a29STaniya Das };
1417f2a76a29STaniya Das 
1418f2a76a29STaniya Das static struct clk_branch gcc_blsp2_uart1_apps_clk = {
1419f2a76a29STaniya Das 	.halt_reg = 0x27004,
1420f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1421f2a76a29STaniya Das 	.clkr = {
1422f2a76a29STaniya Das 		.enable_reg = 0x27004,
1423f2a76a29STaniya Das 		.enable_mask = BIT(0),
1424f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1425f2a76a29STaniya Das 			.name = "gcc_blsp2_uart1_apps_clk",
1426f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1427da09577aSBjorn Andersson 				&blsp2_uart1_apps_clk_src.clkr.hw,
1428da09577aSBjorn Andersson 			},
1429f2a76a29STaniya Das 			.num_parents = 1,
1430f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1431f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1432f2a76a29STaniya Das 		},
1433f2a76a29STaniya Das 	},
1434f2a76a29STaniya Das };
1435f2a76a29STaniya Das 
1436f2a76a29STaniya Das static struct clk_branch gcc_blsp2_uart2_apps_clk = {
1437f2a76a29STaniya Das 	.halt_reg = 0x29004,
1438f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1439f2a76a29STaniya Das 	.clkr = {
1440f2a76a29STaniya Das 		.enable_reg = 0x29004,
1441f2a76a29STaniya Das 		.enable_mask = BIT(0),
1442f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1443f2a76a29STaniya Das 			.name = "gcc_blsp2_uart2_apps_clk",
1444f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1445da09577aSBjorn Andersson 				&blsp2_uart2_apps_clk_src.clkr.hw,
1446da09577aSBjorn Andersson 			},
1447f2a76a29STaniya Das 			.num_parents = 1,
1448f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1449f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1450f2a76a29STaniya Das 		},
1451f2a76a29STaniya Das 	},
1452f2a76a29STaniya Das };
1453f2a76a29STaniya Das 
1454f2a76a29STaniya Das static struct clk_branch gcc_boot_rom_ahb_clk = {
1455f2a76a29STaniya Das 	.halt_reg = 0x38004,
1456f2a76a29STaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1457f2a76a29STaniya Das 	.clkr = {
1458f2a76a29STaniya Das 		.enable_reg = 0x52004,
1459f2a76a29STaniya Das 		.enable_mask = BIT(10),
1460f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1461f2a76a29STaniya Das 			.name = "gcc_boot_rom_ahb_clk",
1462f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1463f2a76a29STaniya Das 		},
1464f2a76a29STaniya Das 	},
1465f2a76a29STaniya Das };
1466f2a76a29STaniya Das 
1467f2a76a29STaniya Das static struct clk_branch gcc_cfg_noc_usb2_axi_clk = {
1468f2a76a29STaniya Das 	.halt_reg = 0x5058,
1469f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1470f2a76a29STaniya Das 	.clkr = {
1471f2a76a29STaniya Das 		.enable_reg = 0x5058,
1472f2a76a29STaniya Das 		.enable_mask = BIT(0),
1473f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1474f2a76a29STaniya Das 			.name = "gcc_cfg_noc_usb2_axi_clk",
1475f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1476da09577aSBjorn Andersson 				&usb20_master_clk_src.clkr.hw,
1477da09577aSBjorn Andersson 			},
1478f2a76a29STaniya Das 			.num_parents = 1,
1479f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1480f2a76a29STaniya Das 		},
1481f2a76a29STaniya Das 	},
1482f2a76a29STaniya Das };
1483f2a76a29STaniya Das 
1484f2a76a29STaniya Das static struct clk_branch gcc_cfg_noc_usb3_axi_clk = {
1485f2a76a29STaniya Das 	.halt_reg = 0x5018,
1486f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1487f2a76a29STaniya Das 	.clkr = {
1488f2a76a29STaniya Das 		.enable_reg = 0x5018,
1489f2a76a29STaniya Das 		.enable_mask = BIT(0),
1490f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1491f2a76a29STaniya Das 			.name = "gcc_cfg_noc_usb3_axi_clk",
1492f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1493da09577aSBjorn Andersson 				&usb30_master_clk_src.clkr.hw,
1494da09577aSBjorn Andersson 			},
1495f2a76a29STaniya Das 			.num_parents = 1,
1496f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1497f2a76a29STaniya Das 		},
1498f2a76a29STaniya Das 	},
1499f2a76a29STaniya Das };
1500f2a76a29STaniya Das 
1501f2a76a29STaniya Das static struct clk_branch gcc_dcc_ahb_clk = {
1502f2a76a29STaniya Das 	.halt_reg = 0x84004,
1503f2a76a29STaniya Das 	.clkr = {
1504f2a76a29STaniya Das 		.enable_reg = 0x84004,
1505f2a76a29STaniya Das 		.enable_mask = BIT(0),
1506f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1507f2a76a29STaniya Das 			.name = "gcc_dcc_ahb_clk",
1508f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1509f2a76a29STaniya Das 		},
1510f2a76a29STaniya Das 	},
1511f2a76a29STaniya Das };
1512f2a76a29STaniya Das 
1513f2a76a29STaniya Das static struct clk_branch gcc_gp1_clk = {
1514f2a76a29STaniya Das 	.halt_reg = 0x64000,
1515f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1516f2a76a29STaniya Das 	.clkr = {
1517f2a76a29STaniya Das 		.enable_reg = 0x64000,
1518f2a76a29STaniya Das 		.enable_mask = BIT(0),
1519f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1520f2a76a29STaniya Das 			.name = "gcc_gp1_clk",
1521f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1522da09577aSBjorn Andersson 				&gp1_clk_src.clkr.hw,
1523da09577aSBjorn Andersson 			},
1524f2a76a29STaniya Das 			.num_parents = 1,
1525f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1526f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1527f2a76a29STaniya Das 		},
1528f2a76a29STaniya Das 	},
1529f2a76a29STaniya Das };
1530f2a76a29STaniya Das 
1531f2a76a29STaniya Das static struct clk_branch gcc_gp2_clk = {
1532f2a76a29STaniya Das 	.halt_reg = 0x65000,
1533f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1534f2a76a29STaniya Das 	.clkr = {
1535f2a76a29STaniya Das 		.enable_reg = 0x65000,
1536f2a76a29STaniya Das 		.enable_mask = BIT(0),
1537f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1538f2a76a29STaniya Das 			.name = "gcc_gp2_clk",
1539f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1540da09577aSBjorn Andersson 				&gp2_clk_src.clkr.hw,
1541da09577aSBjorn Andersson 			},
1542f2a76a29STaniya Das 			.num_parents = 1,
1543f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1544f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1545f2a76a29STaniya Das 		},
1546f2a76a29STaniya Das 	},
1547f2a76a29STaniya Das };
1548f2a76a29STaniya Das 
1549f2a76a29STaniya Das static struct clk_branch gcc_gp3_clk = {
1550f2a76a29STaniya Das 	.halt_reg = 0x66000,
1551f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1552f2a76a29STaniya Das 	.clkr = {
1553f2a76a29STaniya Das 		.enable_reg = 0x66000,
1554f2a76a29STaniya Das 		.enable_mask = BIT(0),
1555f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1556f2a76a29STaniya Das 			.name = "gcc_gp3_clk",
1557f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1558da09577aSBjorn Andersson 				&gp3_clk_src.clkr.hw,
1559da09577aSBjorn Andersson 			},
1560f2a76a29STaniya Das 			.num_parents = 1,
1561f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1562f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1563f2a76a29STaniya Das 		},
1564f2a76a29STaniya Das 	},
1565f2a76a29STaniya Das };
1566f2a76a29STaniya Das 
1567f2a76a29STaniya Das static struct clk_branch gcc_gpu_bimc_gfx_clk = {
1568f2a76a29STaniya Das 	.halt_reg = 0x71010,
1569f2a76a29STaniya Das 	.halt_check = BRANCH_VOTED,
1570f2a76a29STaniya Das 	.clkr = {
1571f2a76a29STaniya Das 		.enable_reg = 0x71010,
1572f2a76a29STaniya Das 		.enable_mask = BIT(0),
1573f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1574f2a76a29STaniya Das 			.name = "gcc_gpu_bimc_gfx_clk",
1575f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1576f2a76a29STaniya Das 		},
1577f2a76a29STaniya Das 	},
1578f2a76a29STaniya Das };
1579f2a76a29STaniya Das 
1580f2a76a29STaniya Das static struct clk_branch gcc_gpu_cfg_ahb_clk = {
1581f2a76a29STaniya Das 	.halt_reg = 0x71004,
1582f2a76a29STaniya Das 	.halt_check = BRANCH_VOTED,
1583f2a76a29STaniya Das 	.clkr = {
1584f2a76a29STaniya Das 		.enable_reg = 0x71004,
1585f2a76a29STaniya Das 		.enable_mask = BIT(0),
1586f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1587f2a76a29STaniya Das 			.name = "gcc_gpu_cfg_ahb_clk",
1588f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1589f2a76a29STaniya Das 			.flags = CLK_IS_CRITICAL,
1590c3656218SAngeloGioacchino Del Regno 		},
1591f2a76a29STaniya Das 	},
1592f2a76a29STaniya Das };
1593f2a76a29STaniya Das 
1594f2a76a29STaniya Das static struct clk_branch gcc_gpu_gpll0_clk = {
1595f2a76a29STaniya Das 	.halt_reg = 0x5200c,
1596f2a76a29STaniya Das 	.halt_check = BRANCH_HALT_DELAY,
1597f2a76a29STaniya Das 	.clkr = {
1598f2a76a29STaniya Das 		.enable_reg = 0x5200c,
1599f2a76a29STaniya Das 		.enable_mask = BIT(4),
1600f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1601f2a76a29STaniya Das 			.name = "gcc_gpu_gpll0_clk",
1602f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1603da09577aSBjorn Andersson 				&gpll0.clkr.hw,
1604da09577aSBjorn Andersson 			},
1605f2a76a29STaniya Das 			.num_parents = 1,
1606f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1607f2a76a29STaniya Das 		},
1608f2a76a29STaniya Das 	},
1609f2a76a29STaniya Das };
1610f2a76a29STaniya Das 
1611f2a76a29STaniya Das static struct clk_branch gcc_gpu_gpll0_div_clk = {
1612f2a76a29STaniya Das 	.halt_reg = 0x5200c,
1613f2a76a29STaniya Das 	.halt_check = BRANCH_HALT_DELAY,
1614f2a76a29STaniya Das 	.clkr = {
1615f2a76a29STaniya Das 		.enable_reg = 0x5200c,
1616f2a76a29STaniya Das 		.enable_mask = BIT(3),
1617f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1618f2a76a29STaniya Das 			.name = "gcc_gpu_gpll0_div_clk",
1619f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1620da09577aSBjorn Andersson 				&gpll0_early_div.hw,
1621da09577aSBjorn Andersson 			},
1622f2a76a29STaniya Das 			.num_parents = 1,
1623f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1624f2a76a29STaniya Das 		},
1625f2a76a29STaniya Das 	},
1626f2a76a29STaniya Das };
1627f2a76a29STaniya Das 
1628f2a76a29STaniya Das static struct clk_branch gcc_hmss_dvm_bus_clk = {
1629f2a76a29STaniya Das 	.halt_reg = 0x4808c,
1630f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1631f2a76a29STaniya Das 	.clkr = {
1632f2a76a29STaniya Das 		.enable_reg = 0x4808c,
1633f2a76a29STaniya Das 		.enable_mask = BIT(0),
1634f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1635f2a76a29STaniya Das 			.name = "gcc_hmss_dvm_bus_clk",
1636f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1637f2a76a29STaniya Das 			.flags = CLK_IGNORE_UNUSED,
1638f2a76a29STaniya Das 		},
1639f2a76a29STaniya Das 	},
1640f2a76a29STaniya Das };
1641f2a76a29STaniya Das 
1642f2a76a29STaniya Das static struct clk_branch gcc_hmss_rbcpr_clk = {
1643f2a76a29STaniya Das 	.halt_reg = 0x48008,
1644f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1645f2a76a29STaniya Das 	.clkr = {
1646f2a76a29STaniya Das 		.enable_reg = 0x48008,
1647f2a76a29STaniya Das 		.enable_mask = BIT(0),
1648f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1649f2a76a29STaniya Das 			.name = "gcc_hmss_rbcpr_clk",
1650f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1651da09577aSBjorn Andersson 				&hmss_rbcpr_clk_src.clkr.hw,
1652da09577aSBjorn Andersson 			},
1653f2a76a29STaniya Das 			.num_parents = 1,
1654f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1655f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1656f2a76a29STaniya Das 		},
1657f2a76a29STaniya Das 	},
1658f2a76a29STaniya Das };
1659f2a76a29STaniya Das 
1660f2a76a29STaniya Das static struct clk_branch gcc_mmss_gpll0_clk = {
1661f2a76a29STaniya Das 	.halt_reg = 0x5200c,
1662f2a76a29STaniya Das 	.halt_check = BRANCH_HALT_DELAY,
1663f2a76a29STaniya Das 	.clkr = {
1664f2a76a29STaniya Das 		.enable_reg = 0x5200c,
1665f2a76a29STaniya Das 		.enable_mask = BIT(1),
1666f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1667f2a76a29STaniya Das 			.name = "gcc_mmss_gpll0_clk",
1668f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1669da09577aSBjorn Andersson 				&gpll0.clkr.hw,
1670da09577aSBjorn Andersson 			},
1671f2a76a29STaniya Das 			.num_parents = 1,
1672f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1673f2a76a29STaniya Das 		},
1674f2a76a29STaniya Das 	},
1675f2a76a29STaniya Das };
1676f2a76a29STaniya Das 
1677f2a76a29STaniya Das static struct clk_branch gcc_mmss_gpll0_div_clk = {
1678f2a76a29STaniya Das 	.halt_reg = 0x5200c,
1679f2a76a29STaniya Das 	.halt_check = BRANCH_HALT_DELAY,
1680f2a76a29STaniya Das 	.clkr = {
1681f2a76a29STaniya Das 		.enable_reg = 0x5200c,
1682f2a76a29STaniya Das 		.enable_mask = BIT(0),
1683f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1684f2a76a29STaniya Das 			.name = "gcc_mmss_gpll0_div_clk",
1685f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1686da09577aSBjorn Andersson 				&gpll0_early_div.hw,
1687da09577aSBjorn Andersson 			},
1688f2a76a29STaniya Das 			.num_parents = 1,
1689f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1690f2a76a29STaniya Das 		},
1691f2a76a29STaniya Das 	},
1692f2a76a29STaniya Das };
1693f2a76a29STaniya Das 
1694f2a76a29STaniya Das static struct clk_branch gcc_mmss_noc_cfg_ahb_clk = {
1695f2a76a29STaniya Das 	.halt_reg = 0x9004,
1696f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1697f2a76a29STaniya Das 	.clkr = {
1698f2a76a29STaniya Das 		.enable_reg = 0x9004,
1699f2a76a29STaniya Das 		.enable_mask = BIT(0),
1700f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1701f2a76a29STaniya Das 			.name = "gcc_mmss_noc_cfg_ahb_clk",
1702f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1703f2a76a29STaniya Das 			/*
1704fe121bfeSAngeloGioacchino Del Regno 			 * Any access to mmss depends on this clock.
1705fe121bfeSAngeloGioacchino Del Regno 			 * Gating this clock has been shown to crash the system
1706fe121bfeSAngeloGioacchino Del Regno 			 * when mmssnoc_axi_rpm_clk is inited in rpmcc.
1707fe121bfeSAngeloGioacchino Del Regno 			 */
1708fe121bfeSAngeloGioacchino Del Regno 			.flags = CLK_IS_CRITICAL,
1709fe121bfeSAngeloGioacchino Del Regno 		},
1710f2a76a29STaniya Das 	},
1711f2a76a29STaniya Das };
1712f2a76a29STaniya Das 
1713f2a76a29STaniya Das static struct clk_branch gcc_mmss_sys_noc_axi_clk = {
1714f2a76a29STaniya Das 	.halt_reg = 0x9000,
1715f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1716f2a76a29STaniya Das 	.clkr = {
1717f2a76a29STaniya Das 		.enable_reg = 0x9000,
1718f2a76a29STaniya Das 		.enable_mask = BIT(0),
1719f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1720f2a76a29STaniya Das 			.name = "gcc_mmss_sys_noc_axi_clk",
1721f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1722f2a76a29STaniya Das 		},
1723f2a76a29STaniya Das 	},
1724f2a76a29STaniya Das };
1725f2a76a29STaniya Das 
1726f2a76a29STaniya Das static struct clk_branch gcc_mss_cfg_ahb_clk = {
1727f2a76a29STaniya Das 	.halt_reg = 0x8a000,
1728f2a76a29STaniya Das 	.clkr = {
1729f2a76a29STaniya Das 		.enable_reg = 0x8a000,
1730f2a76a29STaniya Das 		.enable_mask = BIT(0),
1731f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1732f2a76a29STaniya Das 			.name = "gcc_mss_cfg_ahb_clk",
1733f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1734f2a76a29STaniya Das 		},
1735f2a76a29STaniya Das 	},
1736f2a76a29STaniya Das };
1737f2a76a29STaniya Das 
1738f2a76a29STaniya Das static struct clk_branch gcc_mss_mnoc_bimc_axi_clk = {
1739f2a76a29STaniya Das 	.halt_reg = 0x8a004,
1740f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
17413386af51SKonrad Dybcio 	.hwcg_reg = 0x8a004,
17423386af51SKonrad Dybcio 	.hwcg_bit = 1,
17433386af51SKonrad Dybcio 	.clkr = {
1744f2a76a29STaniya Das 		.enable_reg = 0x8a004,
1745f2a76a29STaniya Das 		.enable_mask = BIT(0),
1746f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1747f2a76a29STaniya Das 			.name = "gcc_mss_mnoc_bimc_axi_clk",
1748f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1749f2a76a29STaniya Das 		},
1750f2a76a29STaniya Das 	},
1751f2a76a29STaniya Das };
1752f2a76a29STaniya Das 
1753f2a76a29STaniya Das static struct clk_branch gcc_mss_q6_bimc_axi_clk = {
1754f2a76a29STaniya Das 	.halt_reg = 0x8a040,
1755f2a76a29STaniya Das 	.clkr = {
1756f2a76a29STaniya Das 		.enable_reg = 0x8a040,
1757f2a76a29STaniya Das 		.enable_mask = BIT(0),
1758f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1759f2a76a29STaniya Das 			.name = "gcc_mss_q6_bimc_axi_clk",
1760f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1761f2a76a29STaniya Das 		},
1762f2a76a29STaniya Das 	},
1763f2a76a29STaniya Das };
1764f2a76a29STaniya Das 
1765f2a76a29STaniya Das static struct clk_branch gcc_mss_snoc_axi_clk = {
1766f2a76a29STaniya Das 	.halt_reg = 0x8a03c,
1767f2a76a29STaniya Das 	.clkr = {
1768f2a76a29STaniya Das 		.enable_reg = 0x8a03c,
1769f2a76a29STaniya Das 		.enable_mask = BIT(0),
1770f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1771f2a76a29STaniya Das 			.name = "gcc_mss_snoc_axi_clk",
1772f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1773f2a76a29STaniya Das 		},
1774f2a76a29STaniya Das 	},
1775f2a76a29STaniya Das };
1776f2a76a29STaniya Das 
1777f2a76a29STaniya Das static struct clk_branch gcc_pdm2_clk = {
1778f2a76a29STaniya Das 	.halt_reg = 0x3300c,
1779f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1780f2a76a29STaniya Das 	.clkr = {
1781f2a76a29STaniya Das 		.enable_reg = 0x3300c,
1782f2a76a29STaniya Das 		.enable_mask = BIT(0),
1783f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1784f2a76a29STaniya Das 			.name = "gcc_pdm2_clk",
1785f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1786da09577aSBjorn Andersson 				&pdm2_clk_src.clkr.hw,
1787da09577aSBjorn Andersson 			},
1788f2a76a29STaniya Das 			.num_parents = 1,
1789f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1790f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1791f2a76a29STaniya Das 		},
1792f2a76a29STaniya Das 	},
1793f2a76a29STaniya Das };
1794f2a76a29STaniya Das 
1795f2a76a29STaniya Das static struct clk_branch gcc_pdm_ahb_clk = {
1796f2a76a29STaniya Das 	.halt_reg = 0x33004,
1797f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1798f2a76a29STaniya Das 	.clkr = {
1799f2a76a29STaniya Das 		.enable_reg = 0x33004,
1800f2a76a29STaniya Das 		.enable_mask = BIT(0),
1801f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1802f2a76a29STaniya Das 			.name = "gcc_pdm_ahb_clk",
1803f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1804f2a76a29STaniya Das 		},
1805f2a76a29STaniya Das 	},
1806f2a76a29STaniya Das };
1807f2a76a29STaniya Das 
1808f2a76a29STaniya Das static struct clk_branch gcc_prng_ahb_clk = {
1809f2a76a29STaniya Das 	.halt_reg = 0x34004,
1810f2a76a29STaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1811f2a76a29STaniya Das 	.clkr = {
1812f2a76a29STaniya Das 		.enable_reg = 0x52004,
1813f2a76a29STaniya Das 		.enable_mask = BIT(13),
1814f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1815f2a76a29STaniya Das 			.name = "gcc_prng_ahb_clk",
1816f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1817f2a76a29STaniya Das 		},
1818f2a76a29STaniya Das 	},
1819f2a76a29STaniya Das };
1820f2a76a29STaniya Das 
1821f2a76a29STaniya Das static struct clk_branch gcc_qspi_ahb_clk = {
1822f2a76a29STaniya Das 	.halt_reg = 0x4d004,
1823f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1824f2a76a29STaniya Das 	.clkr = {
1825f2a76a29STaniya Das 		.enable_reg = 0x4d004,
1826f2a76a29STaniya Das 		.enable_mask = BIT(0),
1827f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1828f2a76a29STaniya Das 			.name = "gcc_qspi_ahb_clk",
1829f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1830f2a76a29STaniya Das 		},
1831f2a76a29STaniya Das 	},
1832f2a76a29STaniya Das };
1833f2a76a29STaniya Das 
1834f2a76a29STaniya Das static struct clk_branch gcc_qspi_ser_clk = {
1835f2a76a29STaniya Das 	.halt_reg = 0x4d008,
1836f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1837f2a76a29STaniya Das 	.clkr = {
1838f2a76a29STaniya Das 		.enable_reg = 0x4d008,
1839f2a76a29STaniya Das 		.enable_mask = BIT(0),
1840f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1841f2a76a29STaniya Das 			.name = "gcc_qspi_ser_clk",
1842f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1843da09577aSBjorn Andersson 				&qspi_ser_clk_src.clkr.hw,
1844da09577aSBjorn Andersson 			},
1845f2a76a29STaniya Das 			.num_parents = 1,
1846f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1847f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1848f2a76a29STaniya Das 		},
1849f2a76a29STaniya Das 	},
1850f2a76a29STaniya Das };
1851f2a76a29STaniya Das 
1852f2a76a29STaniya Das static struct clk_branch gcc_rx0_usb2_clkref_clk = {
1853f2a76a29STaniya Das 	.halt_reg = 0x88018,
1854f2a76a29STaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1855f2a76a29STaniya Das 	.clkr = {
1856f2a76a29STaniya Das 		.enable_reg = 0x88018,
1857f2a76a29STaniya Das 		.enable_mask = BIT(0),
1858f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1859f2a76a29STaniya Das 			.name = "gcc_rx0_usb2_clkref_clk",
1860f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1861f2a76a29STaniya Das 		},
1862f2a76a29STaniya Das 	},
1863f2a76a29STaniya Das };
1864f2a76a29STaniya Das 
1865f2a76a29STaniya Das static struct clk_branch gcc_rx1_usb2_clkref_clk = {
1866f2a76a29STaniya Das 	.halt_reg = 0x88014,
1867f2a76a29STaniya Das 	.halt_check = BRANCH_HALT_VOTED,
1868f2a76a29STaniya Das 	.clkr = {
1869f2a76a29STaniya Das 		.enable_reg = 0x88014,
1870f2a76a29STaniya Das 		.enable_mask = BIT(0),
1871f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1872f2a76a29STaniya Das 			.name = "gcc_rx1_usb2_clkref_clk",
1873f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1874f2a76a29STaniya Das 		},
1875f2a76a29STaniya Das 	},
1876f2a76a29STaniya Das };
1877f2a76a29STaniya Das 
1878f2a76a29STaniya Das static struct clk_branch gcc_sdcc1_ahb_clk = {
1879f2a76a29STaniya Das 	.halt_reg = 0x16008,
1880f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1881f2a76a29STaniya Das 	.clkr = {
1882f2a76a29STaniya Das 		.enable_reg = 0x16008,
1883f2a76a29STaniya Das 		.enable_mask = BIT(0),
1884f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1885f2a76a29STaniya Das 			.name = "gcc_sdcc1_ahb_clk",
1886f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1887f2a76a29STaniya Das 		},
1888f2a76a29STaniya Das 	},
1889f2a76a29STaniya Das };
1890f2a76a29STaniya Das 
1891f2a76a29STaniya Das static struct clk_branch gcc_sdcc1_apps_clk = {
1892f2a76a29STaniya Das 	.halt_reg = 0x16004,
1893f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1894f2a76a29STaniya Das 	.clkr = {
1895f2a76a29STaniya Das 		.enable_reg = 0x16004,
1896f2a76a29STaniya Das 		.enable_mask = BIT(0),
1897f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1898f2a76a29STaniya Das 			.name = "gcc_sdcc1_apps_clk",
1899f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1900da09577aSBjorn Andersson 				&sdcc1_apps_clk_src.clkr.hw,
1901da09577aSBjorn Andersson 			},
1902f2a76a29STaniya Das 			.num_parents = 1,
1903f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1904f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1905f2a76a29STaniya Das 		},
1906f2a76a29STaniya Das 	},
1907f2a76a29STaniya Das };
1908f2a76a29STaniya Das 
1909f2a76a29STaniya Das static struct clk_branch gcc_sdcc1_ice_core_clk = {
1910f2a76a29STaniya Das 	.halt_reg = 0x1600c,
1911f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1912f2a76a29STaniya Das 	.clkr = {
1913f2a76a29STaniya Das 		.enable_reg = 0x1600c,
1914f2a76a29STaniya Das 		.enable_mask = BIT(0),
1915f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1916f2a76a29STaniya Das 			.name = "gcc_sdcc1_ice_core_clk",
1917f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1918da09577aSBjorn Andersson 				&sdcc1_ice_core_clk_src.clkr.hw,
1919da09577aSBjorn Andersson 			},
1920f2a76a29STaniya Das 			.num_parents = 1,
1921f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1922f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1923f2a76a29STaniya Das 		},
1924f2a76a29STaniya Das 	},
1925f2a76a29STaniya Das };
1926f2a76a29STaniya Das 
1927f2a76a29STaniya Das static struct clk_branch gcc_sdcc2_ahb_clk = {
1928f2a76a29STaniya Das 	.halt_reg = 0x14008,
1929f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1930f2a76a29STaniya Das 	.clkr = {
1931f2a76a29STaniya Das 		.enable_reg = 0x14008,
1932f2a76a29STaniya Das 		.enable_mask = BIT(0),
1933f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1934f2a76a29STaniya Das 			.name = "gcc_sdcc2_ahb_clk",
1935f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1936f2a76a29STaniya Das 		},
1937f2a76a29STaniya Das 	},
1938f2a76a29STaniya Das };
1939f2a76a29STaniya Das 
1940f2a76a29STaniya Das static struct clk_branch gcc_sdcc2_apps_clk = {
1941f2a76a29STaniya Das 	.halt_reg = 0x14004,
1942f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1943f2a76a29STaniya Das 	.clkr = {
1944f2a76a29STaniya Das 		.enable_reg = 0x14004,
1945f2a76a29STaniya Das 		.enable_mask = BIT(0),
1946f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1947f2a76a29STaniya Das 			.name = "gcc_sdcc2_apps_clk",
1948f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1949da09577aSBjorn Andersson 				&sdcc2_apps_clk_src.clkr.hw,
1950da09577aSBjorn Andersson 			},
1951f2a76a29STaniya Das 			.num_parents = 1,
1952f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1953f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1954f2a76a29STaniya Das 		},
1955f2a76a29STaniya Das 	},
1956f2a76a29STaniya Das };
1957f2a76a29STaniya Das 
1958f2a76a29STaniya Das static struct clk_branch gcc_ufs_ahb_clk = {
1959f2a76a29STaniya Das 	.halt_reg = 0x7500c,
1960f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1961f2a76a29STaniya Das 	.clkr = {
1962f2a76a29STaniya Das 		.enable_reg = 0x7500c,
1963f2a76a29STaniya Das 		.enable_mask = BIT(0),
1964f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1965f2a76a29STaniya Das 			.name = "gcc_ufs_ahb_clk",
1966f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1967f2a76a29STaniya Das 		},
1968f2a76a29STaniya Das 	},
1969f2a76a29STaniya Das };
1970f2a76a29STaniya Das 
1971f2a76a29STaniya Das static struct clk_branch gcc_ufs_axi_clk = {
1972f2a76a29STaniya Das 	.halt_reg = 0x75008,
1973f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1974f2a76a29STaniya Das 	.clkr = {
1975f2a76a29STaniya Das 		.enable_reg = 0x75008,
1976f2a76a29STaniya Das 		.enable_mask = BIT(0),
1977f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1978f2a76a29STaniya Das 			.name = "gcc_ufs_axi_clk",
1979f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
1980da09577aSBjorn Andersson 				&ufs_axi_clk_src.clkr.hw,
1981da09577aSBjorn Andersson 			},
1982f2a76a29STaniya Das 			.num_parents = 1,
1983f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
1984f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1985f2a76a29STaniya Das 		},
1986f2a76a29STaniya Das 	},
1987f2a76a29STaniya Das };
1988f2a76a29STaniya Das 
1989f2a76a29STaniya Das static struct clk_branch gcc_ufs_clkref_clk = {
1990f2a76a29STaniya Das 	.halt_reg = 0x88008,
1991f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
1992f2a76a29STaniya Das 	.clkr = {
1993f2a76a29STaniya Das 		.enable_reg = 0x88008,
1994f2a76a29STaniya Das 		.enable_mask = BIT(0),
1995f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
1996f2a76a29STaniya Das 			.name = "gcc_ufs_clkref_clk",
1997f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
1998f2a76a29STaniya Das 		},
1999f2a76a29STaniya Das 	},
2000f2a76a29STaniya Das };
2001f2a76a29STaniya Das 
2002f2a76a29STaniya Das static struct clk_branch gcc_ufs_ice_core_clk = {
2003f2a76a29STaniya Das 	.halt_reg = 0x7600c,
2004f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
2005f2a76a29STaniya Das 	.clkr = {
2006f2a76a29STaniya Das 		.enable_reg = 0x7600c,
2007f2a76a29STaniya Das 		.enable_mask = BIT(0),
2008f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
2009f2a76a29STaniya Das 			.name = "gcc_ufs_ice_core_clk",
2010f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
2011da09577aSBjorn Andersson 				&ufs_ice_core_clk_src.clkr.hw,
2012da09577aSBjorn Andersson 			},
2013f2a76a29STaniya Das 			.num_parents = 1,
2014f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
2015f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
2016f2a76a29STaniya Das 		},
2017f2a76a29STaniya Das 	},
2018f2a76a29STaniya Das };
2019f2a76a29STaniya Das 
2020f2a76a29STaniya Das static struct clk_branch gcc_ufs_phy_aux_clk = {
2021f2a76a29STaniya Das 	.halt_reg = 0x76040,
2022f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
2023f2a76a29STaniya Das 	.clkr = {
2024f2a76a29STaniya Das 		.enable_reg = 0x76040,
2025f2a76a29STaniya Das 		.enable_mask = BIT(0),
2026f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
2027f2a76a29STaniya Das 			.name = "gcc_ufs_phy_aux_clk",
2028f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
2029da09577aSBjorn Andersson 				&ufs_phy_aux_clk_src.clkr.hw,
2030da09577aSBjorn Andersson 			},
2031f2a76a29STaniya Das 			.num_parents = 1,
2032f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
2033f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
2034f2a76a29STaniya Das 		},
2035f2a76a29STaniya Das 	},
2036f2a76a29STaniya Das };
2037f2a76a29STaniya Das 
2038f2a76a29STaniya Das static struct clk_branch gcc_ufs_rx_symbol_0_clk = {
2039f2a76a29STaniya Das 	.halt_reg = 0x75014,
2040f2a76a29STaniya Das 	.halt_check = BRANCH_HALT_SKIP,
2041f2a76a29STaniya Das 	.clkr = {
2042f2a76a29STaniya Das 		.enable_reg = 0x75014,
2043f2a76a29STaniya Das 		.enable_mask = BIT(0),
2044f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
2045f2a76a29STaniya Das 			.name = "gcc_ufs_rx_symbol_0_clk",
2046f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
2047f2a76a29STaniya Das 		},
2048f2a76a29STaniya Das 	},
2049f2a76a29STaniya Das };
2050f2a76a29STaniya Das 
2051f2a76a29STaniya Das static struct clk_branch gcc_ufs_rx_symbol_1_clk = {
2052f2a76a29STaniya Das 	.halt_reg = 0x7605c,
2053f2a76a29STaniya Das 	.halt_check = BRANCH_HALT_SKIP,
2054f2a76a29STaniya Das 	.clkr = {
2055f2a76a29STaniya Das 		.enable_reg = 0x7605c,
2056f2a76a29STaniya Das 		.enable_mask = BIT(0),
2057f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
2058f2a76a29STaniya Das 			.name = "gcc_ufs_rx_symbol_1_clk",
2059f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
2060f2a76a29STaniya Das 		},
2061f2a76a29STaniya Das 	},
2062f2a76a29STaniya Das };
2063f2a76a29STaniya Das 
2064f2a76a29STaniya Das static struct clk_branch gcc_ufs_tx_symbol_0_clk = {
2065f2a76a29STaniya Das 	.halt_reg = 0x75010,
2066f2a76a29STaniya Das 	.halt_check = BRANCH_HALT_SKIP,
2067f2a76a29STaniya Das 	.clkr = {
2068f2a76a29STaniya Das 		.enable_reg = 0x75010,
2069f2a76a29STaniya Das 		.enable_mask = BIT(0),
2070f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
2071f2a76a29STaniya Das 			.name = "gcc_ufs_tx_symbol_0_clk",
2072f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
2073f2a76a29STaniya Das 		},
2074f2a76a29STaniya Das 	},
2075f2a76a29STaniya Das };
2076f2a76a29STaniya Das 
2077f2a76a29STaniya Das static struct clk_branch gcc_ufs_unipro_core_clk = {
2078f2a76a29STaniya Das 	.halt_reg = 0x76008,
2079f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
2080f2a76a29STaniya Das 	.clkr = {
2081f2a76a29STaniya Das 		.enable_reg = 0x76008,
2082f2a76a29STaniya Das 		.enable_mask = BIT(0),
2083f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
2084f2a76a29STaniya Das 			.name = "gcc_ufs_unipro_core_clk",
2085f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
2086da09577aSBjorn Andersson 				&ufs_unipro_core_clk_src.clkr.hw,
2087da09577aSBjorn Andersson 			},
2088f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
2089f2a76a29STaniya Das 			.num_parents = 1,
2090f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
2091f2a76a29STaniya Das 		},
2092f2a76a29STaniya Das 	},
2093f2a76a29STaniya Das };
2094f2a76a29STaniya Das 
2095f2a76a29STaniya Das static struct clk_branch gcc_usb20_master_clk = {
2096f2a76a29STaniya Das 	.halt_reg = 0x2f004,
2097f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
2098f2a76a29STaniya Das 	.clkr = {
2099f2a76a29STaniya Das 		.enable_reg = 0x2f004,
2100f2a76a29STaniya Das 		.enable_mask = BIT(0),
2101f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
2102f2a76a29STaniya Das 			.name = "gcc_usb20_master_clk",
2103f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
2104da09577aSBjorn Andersson 				&usb20_master_clk_src.clkr.hw,
2105da09577aSBjorn Andersson 			},
2106f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
2107f2a76a29STaniya Das 			.num_parents = 1,
2108f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
2109f2a76a29STaniya Das 		},
2110f2a76a29STaniya Das 	},
2111f2a76a29STaniya Das };
2112f2a76a29STaniya Das 
2113f2a76a29STaniya Das static struct clk_branch gcc_usb20_mock_utmi_clk = {
2114f2a76a29STaniya Das 	.halt_reg = 0x2f00c,
2115f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
2116f2a76a29STaniya Das 	.clkr = {
2117f2a76a29STaniya Das 		.enable_reg = 0x2f00c,
2118f2a76a29STaniya Das 		.enable_mask = BIT(0),
2119f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
2120f2a76a29STaniya Das 			.name = "gcc_usb20_mock_utmi_clk",
2121f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
2122da09577aSBjorn Andersson 				&usb20_mock_utmi_clk_src.clkr.hw,
2123da09577aSBjorn Andersson 			},
2124f2a76a29STaniya Das 			.num_parents = 1,
2125f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
2126f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
2127f2a76a29STaniya Das 		},
2128f2a76a29STaniya Das 	},
2129f2a76a29STaniya Das };
2130f2a76a29STaniya Das 
2131f2a76a29STaniya Das static struct clk_branch gcc_usb20_sleep_clk = {
2132f2a76a29STaniya Das 	.halt_reg = 0x2f008,
2133f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
2134f2a76a29STaniya Das 	.clkr = {
2135f2a76a29STaniya Das 		.enable_reg = 0x2f008,
2136f2a76a29STaniya Das 		.enable_mask = BIT(0),
2137f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
2138f2a76a29STaniya Das 			.name = "gcc_usb20_sleep_clk",
2139f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
2140f2a76a29STaniya Das 		},
2141f2a76a29STaniya Das 	},
2142f2a76a29STaniya Das };
2143f2a76a29STaniya Das 
2144f2a76a29STaniya Das static struct clk_branch gcc_usb30_master_clk = {
2145f2a76a29STaniya Das 	.halt_reg = 0xf008,
2146f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
2147f2a76a29STaniya Das 	.clkr = {
2148f2a76a29STaniya Das 		.enable_reg = 0xf008,
2149f2a76a29STaniya Das 		.enable_mask = BIT(0),
2150f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
2151f2a76a29STaniya Das 			.name = "gcc_usb30_master_clk",
2152f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
2153da09577aSBjorn Andersson 				&usb30_master_clk_src.clkr.hw,
2154da09577aSBjorn Andersson 			},
2155f2a76a29STaniya Das 			.num_parents = 1,
2156f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
2157f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
2158f2a76a29STaniya Das 		},
2159f2a76a29STaniya Das 	},
2160f2a76a29STaniya Das };
2161f2a76a29STaniya Das 
2162f2a76a29STaniya Das static struct clk_branch gcc_usb30_mock_utmi_clk = {
2163f2a76a29STaniya Das 	.halt_reg = 0xf010,
2164f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
2165f2a76a29STaniya Das 	.clkr = {
2166f2a76a29STaniya Das 		.enable_reg = 0xf010,
2167f2a76a29STaniya Das 		.enable_mask = BIT(0),
2168f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
2169f2a76a29STaniya Das 			.name = "gcc_usb30_mock_utmi_clk",
2170f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
2171da09577aSBjorn Andersson 				&usb30_mock_utmi_clk_src.clkr.hw,
2172da09577aSBjorn Andersson 			},
2173f2a76a29STaniya Das 			.num_parents = 1,
2174f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
2175f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
2176f2a76a29STaniya Das 		},
2177f2a76a29STaniya Das 	},
2178f2a76a29STaniya Das };
2179f2a76a29STaniya Das 
2180f2a76a29STaniya Das static struct clk_branch gcc_usb30_sleep_clk = {
2181f2a76a29STaniya Das 	.halt_reg = 0xf00c,
2182f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
2183f2a76a29STaniya Das 	.clkr = {
2184f2a76a29STaniya Das 		.enable_reg = 0xf00c,
2185f2a76a29STaniya Das 		.enable_mask = BIT(0),
2186f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
2187f2a76a29STaniya Das 			.name = "gcc_usb30_sleep_clk",
2188f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
2189f2a76a29STaniya Das 		},
2190f2a76a29STaniya Das 	},
2191f2a76a29STaniya Das };
2192f2a76a29STaniya Das 
2193f2a76a29STaniya Das static struct clk_branch gcc_usb3_clkref_clk = {
2194f2a76a29STaniya Das 	.halt_reg = 0x8800c,
2195f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
2196f2a76a29STaniya Das 	.clkr = {
2197f2a76a29STaniya Das 		.enable_reg = 0x8800c,
2198f2a76a29STaniya Das 		.enable_mask = BIT(0),
2199f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
2200f2a76a29STaniya Das 			.name = "gcc_usb3_clkref_clk",
2201f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
2202f2a76a29STaniya Das 		},
2203f2a76a29STaniya Das 	},
2204f2a76a29STaniya Das };
2205f2a76a29STaniya Das 
2206f2a76a29STaniya Das static struct clk_branch gcc_usb3_phy_aux_clk = {
2207f2a76a29STaniya Das 	.halt_reg = 0x50000,
2208f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
2209f2a76a29STaniya Das 	.clkr = {
2210f2a76a29STaniya Das 		.enable_reg = 0x50000,
2211f2a76a29STaniya Das 		.enable_mask = BIT(0),
2212f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
2213f2a76a29STaniya Das 			.name = "gcc_usb3_phy_aux_clk",
2214f2a76a29STaniya Das 			.parent_hws = (const struct clk_hw*[]) {
2215da09577aSBjorn Andersson 				&usb3_phy_aux_clk_src.clkr.hw,
2216da09577aSBjorn Andersson 			},
2217f2a76a29STaniya Das 			.num_parents = 1,
2218f2a76a29STaniya Das 			.flags = CLK_SET_RATE_PARENT,
2219f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
2220f2a76a29STaniya Das 		},
2221f2a76a29STaniya Das 	},
2222f2a76a29STaniya Das };
2223f2a76a29STaniya Das 
2224f2a76a29STaniya Das static struct clk_branch gcc_usb3_phy_pipe_clk = {
2225f2a76a29STaniya Das 	.halt_reg = 0x50004,
2226f2a76a29STaniya Das 	.halt_check = BRANCH_HALT_DELAY,
2227f2a76a29STaniya Das 	.clkr = {
2228f2a76a29STaniya Das 		.enable_reg = 0x50004,
2229f2a76a29STaniya Das 		.enable_mask = BIT(0),
2230f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
2231f2a76a29STaniya Das 			.name = "gcc_usb3_phy_pipe_clk",
2232f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
2233f2a76a29STaniya Das 		},
2234f2a76a29STaniya Das 	},
2235f2a76a29STaniya Das };
2236f2a76a29STaniya Das 
2237f2a76a29STaniya Das static struct clk_branch gcc_usb_phy_cfg_ahb2phy_clk = {
2238f2a76a29STaniya Das 	.halt_reg = 0x6a004,
2239f2a76a29STaniya Das 	.halt_check = BRANCH_HALT,
2240f2a76a29STaniya Das 	.clkr = {
2241f2a76a29STaniya Das 		.enable_reg = 0x6a004,
2242f2a76a29STaniya Das 		.enable_mask = BIT(0),
2243f2a76a29STaniya Das 		.hw.init = &(struct clk_init_data){
2244f2a76a29STaniya Das 			.name = "gcc_usb_phy_cfg_ahb2phy_clk",
2245f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
2246f2a76a29STaniya Das 		},
2247f2a76a29STaniya Das 	},
2248f2a76a29STaniya Das };
2249f2a76a29STaniya Das 
2250f2a76a29STaniya Das static struct clk_branch hlos1_vote_lpass_adsp_smmu_clk = {
2251f2a76a29STaniya Das 	.halt_reg = 0x7d014,
2252f2a76a29STaniya Das 	.halt_check = BRANCH_VOTED,
2253f2a76a29STaniya Das 	.clkr = {
2254f2a76a29STaniya Das 		.enable_reg = 0x7d014,
2255f2a76a29STaniya Das 		.enable_mask = BIT(0),
2256f2a76a29STaniya Das 		.hw.init = &(const struct clk_init_data) {
2257f2a76a29STaniya Das 			.name = "hlos1_vote_lpass_adsp_smmu_clk",
2258f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
2259f2a76a29STaniya Das 		},
2260f2a76a29STaniya Das 	},
2261f2a76a29STaniya Das };
2262f2a76a29STaniya Das 
2263f2a76a29STaniya Das static struct clk_branch hlos1_vote_turing_adsp_smmu_clk = {
2264f2a76a29STaniya Das 	.halt_reg = 0x7d048,
2265f2a76a29STaniya Das 	.halt_check = BRANCH_VOTED,
2266f2a76a29STaniya Das 	.clkr = {
2267f2a76a29STaniya Das 		.enable_reg = 0x7d048,
2268f2a76a29STaniya Das 		.enable_mask = BIT(0),
2269f2a76a29STaniya Das 		.hw.init = &(const struct clk_init_data) {
2270f2a76a29STaniya Das 			.name = "hlos1_vote_turing_adsp_smmu_clk",
2271f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
2272f2a76a29STaniya Das 		},
2273f2a76a29STaniya Das 	},
2274f2a76a29STaniya Das };
2275f2a76a29STaniya Das 
2276f2a76a29STaniya Das static struct clk_branch hlos2_vote_turing_adsp_smmu_clk = {
2277f2a76a29STaniya Das 	.halt_reg = 0x7e048,
2278f2a76a29STaniya Das 	.halt_check = BRANCH_VOTED,
2279f2a76a29STaniya Das 	.clkr = {
2280f2a76a29STaniya Das 		.enable_reg = 0x7e048,
2281f2a76a29STaniya Das 		.enable_mask = BIT(0),
2282f2a76a29STaniya Das 		.hw.init = &(const struct clk_init_data) {
2283f2a76a29STaniya Das 			.name = "hlos2_vote_turing_adsp_smmu_clk",
2284f2a76a29STaniya Das 			.ops = &clk_branch2_ops,
2285f2a76a29STaniya Das 		},
2286f2a76a29STaniya Das 	},
2287f2a76a29STaniya Das };
2288f2a76a29STaniya Das 
2289f2a76a29STaniya Das static struct gdsc ufs_gdsc = {
2290f2a76a29STaniya Das 	.gdscr = 0x75004,
2291f2a76a29STaniya Das 	.gds_hw_ctrl = 0x0,
2292f2a76a29STaniya Das 	.pd = {
2293f2a76a29STaniya Das 		.name = "ufs_gdsc",
2294f2a76a29STaniya Das 	},
2295f2a76a29STaniya Das 	.pwrsts = PWRSTS_OFF_ON,
2296f2a76a29STaniya Das 	.flags = VOTABLE,
2297f2a76a29STaniya Das };
2298f2a76a29STaniya Das 
2299f2a76a29STaniya Das static struct gdsc usb_30_gdsc = {
2300f2a76a29STaniya Das 	.gdscr = 0xf004,
2301f2a76a29STaniya Das 	.gds_hw_ctrl = 0x0,
2302f2a76a29STaniya Das 	.pd = {
2303f2a76a29STaniya Das 		.name = "usb_30_gdsc",
2304f2a76a29STaniya Das 	},
2305f2a76a29STaniya Das 	.pwrsts = PWRSTS_OFF_ON,
2306f2a76a29STaniya Das 	.flags = VOTABLE,
2307f2a76a29STaniya Das };
2308f2a76a29STaniya Das 
2309f2a76a29STaniya Das static struct gdsc pcie_0_gdsc = {
2310f2a76a29STaniya Das 	.gdscr = 0x6b004,
2311f2a76a29STaniya Das 	.gds_hw_ctrl = 0x0,
2312f2a76a29STaniya Das 	.pd = {
2313f2a76a29STaniya Das 		.name = "pcie_0_gdsc",
2314f2a76a29STaniya Das 	},
2315f2a76a29STaniya Das 	.pwrsts = PWRSTS_OFF_ON,
2316f2a76a29STaniya Das 	.flags = VOTABLE,
2317f2a76a29STaniya Das };
2318f2a76a29STaniya Das 
2319f2a76a29STaniya Das static struct gdsc hlos1_vote_turing_adsp_gdsc = {
2320f2a76a29STaniya Das 	.gdscr = 0x7d04c,
2321f2a76a29STaniya Das 	.pd = {
2322f2a76a29STaniya Das 		.name = "hlos1_vote_turing_adsp_gdsc",
2323f2a76a29STaniya Das 	},
2324f2a76a29STaniya Das 	.pwrsts = PWRSTS_OFF_ON,
2325f2a76a29STaniya Das 	.flags = VOTABLE,
2326f2a76a29STaniya Das };
2327f2a76a29STaniya Das 
2328f2a76a29STaniya Das static struct gdsc hlos2_vote_turing_adsp_gdsc = {
2329f2a76a29STaniya Das 	.gdscr = 0x7e04c,
2330f2a76a29STaniya Das 	.pd = {
2331f2a76a29STaniya Das 		.name = "hlos2_vote_turing_adsp_gdsc",
2332f2a76a29STaniya Das 	},
2333f2a76a29STaniya Das 	.pwrsts = PWRSTS_OFF_ON,
2334f2a76a29STaniya Das 	.flags = VOTABLE,
2335f2a76a29STaniya Das };
2336f2a76a29STaniya Das 
2337f2a76a29STaniya Das static struct gdsc hlos1_vote_lpass_adsp_gdsc = {
2338f2a76a29STaniya Das 	.gdscr = 0x7d034,
2339f2a76a29STaniya Das 	.pd = {
2340f2a76a29STaniya Das 		.name = "hlos1_vote_lpass_adsp_gdsc",
2341f2a76a29STaniya Das 	},
2342f2a76a29STaniya Das 	.pwrsts = PWRSTS_OFF_ON,
2343f2a76a29STaniya Das 	.flags = VOTABLE,
2344f2a76a29STaniya Das };
2345f2a76a29STaniya Das 
2346f2a76a29STaniya Das static struct clk_hw *gcc_sdm660_hws[] = {
2347f2a76a29STaniya Das 	&xo.hw,
2348f2a76a29STaniya Das 	&gpll0_early_div.hw,
2349f2a76a29STaniya Das 	&gpll1_early_div.hw,
2350f2a76a29STaniya Das };
2351f2a76a29STaniya Das 
2352f2a76a29STaniya Das static struct clk_regmap *gcc_sdm660_clocks[] = {
2353f2a76a29STaniya Das 	[BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr,
2354f2a76a29STaniya Das 	[BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr,
2355f2a76a29STaniya Das 	[BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr,
2356f2a76a29STaniya Das 	[BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr,
2357f2a76a29STaniya Das 	[BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr,
2358f2a76a29STaniya Das 	[BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr,
2359f2a76a29STaniya Das 	[BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr,
2360f2a76a29STaniya Das 	[BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr,
2361f2a76a29STaniya Das 	[BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr,
2362f2a76a29STaniya Das 	[BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr,
2363f2a76a29STaniya Das 	[BLSP2_QUP1_I2C_APPS_CLK_SRC] = &blsp2_qup1_i2c_apps_clk_src.clkr,
2364f2a76a29STaniya Das 	[BLSP2_QUP1_SPI_APPS_CLK_SRC] = &blsp2_qup1_spi_apps_clk_src.clkr,
2365f2a76a29STaniya Das 	[BLSP2_QUP2_I2C_APPS_CLK_SRC] = &blsp2_qup2_i2c_apps_clk_src.clkr,
2366f2a76a29STaniya Das 	[BLSP2_QUP2_SPI_APPS_CLK_SRC] = &blsp2_qup2_spi_apps_clk_src.clkr,
2367f2a76a29STaniya Das 	[BLSP2_QUP3_I2C_APPS_CLK_SRC] = &blsp2_qup3_i2c_apps_clk_src.clkr,
2368f2a76a29STaniya Das 	[BLSP2_QUP3_SPI_APPS_CLK_SRC] = &blsp2_qup3_spi_apps_clk_src.clkr,
2369f2a76a29STaniya Das 	[BLSP2_QUP4_I2C_APPS_CLK_SRC] = &blsp2_qup4_i2c_apps_clk_src.clkr,
2370f2a76a29STaniya Das 	[BLSP2_QUP4_SPI_APPS_CLK_SRC] = &blsp2_qup4_spi_apps_clk_src.clkr,
2371f2a76a29STaniya Das 	[BLSP2_UART1_APPS_CLK_SRC] = &blsp2_uart1_apps_clk_src.clkr,
2372f2a76a29STaniya Das 	[BLSP2_UART2_APPS_CLK_SRC] = &blsp2_uart2_apps_clk_src.clkr,
2373f2a76a29STaniya Das 	[GCC_AGGRE2_UFS_AXI_CLK] = &gcc_aggre2_ufs_axi_clk.clkr,
2374f2a76a29STaniya Das 	[GCC_AGGRE2_USB3_AXI_CLK] = &gcc_aggre2_usb3_axi_clk.clkr,
2375f2a76a29STaniya Das 	[GCC_BIMC_GFX_CLK] = &gcc_bimc_gfx_clk.clkr,
2376f2a76a29STaniya Das 	[GCC_BIMC_HMSS_AXI_CLK] = &gcc_bimc_hmss_axi_clk.clkr,
2377f2a76a29STaniya Das 	[GCC_BIMC_MSS_Q6_AXI_CLK] = &gcc_bimc_mss_q6_axi_clk.clkr,
2378f2a76a29STaniya Das 	[GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr,
2379f2a76a29STaniya Das 	[GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr,
2380f2a76a29STaniya Das 	[GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr,
2381f2a76a29STaniya Das 	[GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr,
2382f2a76a29STaniya Das 	[GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr,
2383f2a76a29STaniya Das 	[GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr,
2384f2a76a29STaniya Das 	[GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr,
2385f2a76a29STaniya Das 	[GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr,
2386f2a76a29STaniya Das 	[GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr,
2387f2a76a29STaniya Das 	[GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr,
2388f2a76a29STaniya Das 	[GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr,
2389f2a76a29STaniya Das 	[GCC_BLSP2_AHB_CLK] = &gcc_blsp2_ahb_clk.clkr,
2390f2a76a29STaniya Das 	[GCC_BLSP2_QUP1_I2C_APPS_CLK] = &gcc_blsp2_qup1_i2c_apps_clk.clkr,
2391f2a76a29STaniya Das 	[GCC_BLSP2_QUP1_SPI_APPS_CLK] = &gcc_blsp2_qup1_spi_apps_clk.clkr,
2392f2a76a29STaniya Das 	[GCC_BLSP2_QUP2_I2C_APPS_CLK] = &gcc_blsp2_qup2_i2c_apps_clk.clkr,
2393f2a76a29STaniya Das 	[GCC_BLSP2_QUP2_SPI_APPS_CLK] = &gcc_blsp2_qup2_spi_apps_clk.clkr,
2394f2a76a29STaniya Das 	[GCC_BLSP2_QUP3_I2C_APPS_CLK] = &gcc_blsp2_qup3_i2c_apps_clk.clkr,
2395f2a76a29STaniya Das 	[GCC_BLSP2_QUP3_SPI_APPS_CLK] = &gcc_blsp2_qup3_spi_apps_clk.clkr,
2396f2a76a29STaniya Das 	[GCC_BLSP2_QUP4_I2C_APPS_CLK] = &gcc_blsp2_qup4_i2c_apps_clk.clkr,
2397f2a76a29STaniya Das 	[GCC_BLSP2_QUP4_SPI_APPS_CLK] = &gcc_blsp2_qup4_spi_apps_clk.clkr,
2398f2a76a29STaniya Das 	[GCC_BLSP2_UART1_APPS_CLK] = &gcc_blsp2_uart1_apps_clk.clkr,
2399f2a76a29STaniya Das 	[GCC_BLSP2_UART2_APPS_CLK] = &gcc_blsp2_uart2_apps_clk.clkr,
2400f2a76a29STaniya Das 	[GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
2401f2a76a29STaniya Das 	[GCC_CFG_NOC_USB2_AXI_CLK] = &gcc_cfg_noc_usb2_axi_clk.clkr,
2402f2a76a29STaniya Das 	[GCC_CFG_NOC_USB3_AXI_CLK] = &gcc_cfg_noc_usb3_axi_clk.clkr,
2403f2a76a29STaniya Das 	[GCC_DCC_AHB_CLK] = &gcc_dcc_ahb_clk.clkr,
2404f2a76a29STaniya Das 	[GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
2405f2a76a29STaniya Das 	[GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
2406f2a76a29STaniya Das 	[GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
2407f2a76a29STaniya Das 	[GCC_GPU_BIMC_GFX_CLK] = &gcc_gpu_bimc_gfx_clk.clkr,
2408f2a76a29STaniya Das 	[GCC_GPU_CFG_AHB_CLK] = &gcc_gpu_cfg_ahb_clk.clkr,
2409f2a76a29STaniya Das 	[GCC_GPU_GPLL0_CLK] = &gcc_gpu_gpll0_clk.clkr,
2410f2a76a29STaniya Das 	[GCC_GPU_GPLL0_DIV_CLK] = &gcc_gpu_gpll0_div_clk.clkr,
2411f2a76a29STaniya Das 	[GCC_HMSS_DVM_BUS_CLK] = &gcc_hmss_dvm_bus_clk.clkr,
2412f2a76a29STaniya Das 	[GCC_HMSS_RBCPR_CLK] = &gcc_hmss_rbcpr_clk.clkr,
2413f2a76a29STaniya Das 	[GCC_MMSS_GPLL0_CLK] = &gcc_mmss_gpll0_clk.clkr,
2414f2a76a29STaniya Das 	[GCC_MMSS_GPLL0_DIV_CLK] = &gcc_mmss_gpll0_div_clk.clkr,
2415f2a76a29STaniya Das 	[GCC_MMSS_NOC_CFG_AHB_CLK] = &gcc_mmss_noc_cfg_ahb_clk.clkr,
2416f2a76a29STaniya Das 	[GCC_MMSS_SYS_NOC_AXI_CLK] = &gcc_mmss_sys_noc_axi_clk.clkr,
2417f2a76a29STaniya Das 	[GCC_MSS_CFG_AHB_CLK] = &gcc_mss_cfg_ahb_clk.clkr,
2418f2a76a29STaniya Das 	[GCC_MSS_MNOC_BIMC_AXI_CLK] = &gcc_mss_mnoc_bimc_axi_clk.clkr,
2419f2a76a29STaniya Das 	[GCC_MSS_Q6_BIMC_AXI_CLK] = &gcc_mss_q6_bimc_axi_clk.clkr,
2420f2a76a29STaniya Das 	[GCC_MSS_SNOC_AXI_CLK] = &gcc_mss_snoc_axi_clk.clkr,
2421f2a76a29STaniya Das 	[GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
2422f2a76a29STaniya Das 	[GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
2423f2a76a29STaniya Das 	[GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
2424f2a76a29STaniya Das 	[GCC_QSPI_AHB_CLK] = &gcc_qspi_ahb_clk.clkr,
2425f2a76a29STaniya Das 	[GCC_QSPI_SER_CLK] = &gcc_qspi_ser_clk.clkr,
2426f2a76a29STaniya Das 	[GCC_RX0_USB2_CLKREF_CLK] = &gcc_rx0_usb2_clkref_clk.clkr,
2427f2a76a29STaniya Das 	[GCC_RX1_USB2_CLKREF_CLK] = &gcc_rx1_usb2_clkref_clk.clkr,
2428f2a76a29STaniya Das 	[GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
2429f2a76a29STaniya Das 	[GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
2430f2a76a29STaniya Das 	[GCC_SDCC1_ICE_CORE_CLK] = &gcc_sdcc1_ice_core_clk.clkr,
2431b538304dSKonrad Dybcio 	[GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
2432f2a76a29STaniya Das 	[GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
2433f2a76a29STaniya Das 	[GCC_UFS_AHB_CLK] = &gcc_ufs_ahb_clk.clkr,
2434f2a76a29STaniya Das 	[GCC_UFS_AXI_CLK] = &gcc_ufs_axi_clk.clkr,
2435f2a76a29STaniya Das 	[GCC_UFS_CLKREF_CLK] = &gcc_ufs_clkref_clk.clkr,
2436f2a76a29STaniya Das 	[GCC_UFS_ICE_CORE_CLK] = &gcc_ufs_ice_core_clk.clkr,
2437f2a76a29STaniya Das 	[GCC_UFS_PHY_AUX_CLK] = &gcc_ufs_phy_aux_clk.clkr,
2438f2a76a29STaniya Das 	[GCC_UFS_RX_SYMBOL_0_CLK] = &gcc_ufs_rx_symbol_0_clk.clkr,
2439f2a76a29STaniya Das 	[GCC_UFS_RX_SYMBOL_1_CLK] = &gcc_ufs_rx_symbol_1_clk.clkr,
2440f2a76a29STaniya Das 	[GCC_UFS_TX_SYMBOL_0_CLK] = &gcc_ufs_tx_symbol_0_clk.clkr,
2441f2a76a29STaniya Das 	[GCC_UFS_UNIPRO_CORE_CLK] = &gcc_ufs_unipro_core_clk.clkr,
2442f2a76a29STaniya Das 	[GCC_USB20_MASTER_CLK] = &gcc_usb20_master_clk.clkr,
2443f2a76a29STaniya Das 	[GCC_USB20_MOCK_UTMI_CLK] = &gcc_usb20_mock_utmi_clk.clkr,
2444f2a76a29STaniya Das 	[GCC_USB20_SLEEP_CLK] = &gcc_usb20_sleep_clk.clkr,
2445f2a76a29STaniya Das 	[GCC_USB30_MASTER_CLK] = &gcc_usb30_master_clk.clkr,
2446f2a76a29STaniya Das 	[GCC_USB30_MOCK_UTMI_CLK] = &gcc_usb30_mock_utmi_clk.clkr,
2447f2a76a29STaniya Das 	[GCC_USB30_SLEEP_CLK] = &gcc_usb30_sleep_clk.clkr,
2448f2a76a29STaniya Das 	[GCC_USB3_CLKREF_CLK] = &gcc_usb3_clkref_clk.clkr,
2449f2a76a29STaniya Das 	[GCC_USB3_PHY_AUX_CLK] = &gcc_usb3_phy_aux_clk.clkr,
2450760be658SJeffrey Hugo 	[GCC_USB3_PHY_PIPE_CLK] = &gcc_usb3_phy_pipe_clk.clkr,
2451760be658SJeffrey Hugo 	[GCC_USB_PHY_CFG_AHB2PHY_CLK] = &gcc_usb_phy_cfg_ahb2phy_clk.clkr,
2452f2a76a29STaniya Das 	[GP1_CLK_SRC] = &gp1_clk_src.clkr,
2453f2a76a29STaniya Das 	[GP2_CLK_SRC] = &gp2_clk_src.clkr,
2454f2a76a29STaniya Das 	[GP3_CLK_SRC] = &gp3_clk_src.clkr,
2455f2a76a29STaniya Das 	[GPLL0] = &gpll0.clkr,
2456f2a76a29STaniya Das 	[GPLL0_EARLY] = &gpll0_early.clkr,
2457f2a76a29STaniya Das 	[GPLL1] = &gpll1.clkr,
2458f2a76a29STaniya Das 	[GPLL1_EARLY] = &gpll1_early.clkr,
2459f2a76a29STaniya Das 	[GPLL4] = &gpll4.clkr,
2460f2a76a29STaniya Das 	[GPLL4_EARLY] = &gpll4_early.clkr,
2461f2a76a29STaniya Das 	[HMSS_GPLL0_CLK_SRC] = &hmss_gpll0_clk_src.clkr,
2462f2a76a29STaniya Das 	[HMSS_GPLL4_CLK_SRC] = &hmss_gpll4_clk_src.clkr,
2463760be658SJeffrey Hugo 	[HMSS_RBCPR_CLK_SRC] = &hmss_rbcpr_clk_src.clkr,
2464f2a76a29STaniya Das 	[PDM2_CLK_SRC] = &pdm2_clk_src.clkr,
2465f2a76a29STaniya Das 	[QSPI_SER_CLK_SRC] = &qspi_ser_clk_src.clkr,
2466f2a76a29STaniya Das 	[SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr,
2467f2a76a29STaniya Das 	[SDCC1_ICE_CORE_CLK_SRC] = &sdcc1_ice_core_clk_src.clkr,
2468f2a76a29STaniya Das 	[SDCC2_APPS_CLK_SRC] = &sdcc2_apps_clk_src.clkr,
2469f2a76a29STaniya Das 	[UFS_AXI_CLK_SRC] = &ufs_axi_clk_src.clkr,
2470f2a76a29STaniya Das 	[UFS_ICE_CORE_CLK_SRC] = &ufs_ice_core_clk_src.clkr,
2471f2a76a29STaniya Das 	[UFS_PHY_AUX_CLK_SRC] = &ufs_phy_aux_clk_src.clkr,
2472f2a76a29STaniya Das 	[UFS_UNIPRO_CORE_CLK_SRC] = &ufs_unipro_core_clk_src.clkr,
2473f2a76a29STaniya Das 	[USB20_MASTER_CLK_SRC] = &usb20_master_clk_src.clkr,
2474f2a76a29STaniya Das 	[USB20_MOCK_UTMI_CLK_SRC] = &usb20_mock_utmi_clk_src.clkr,
2475f2a76a29STaniya Das 	[USB30_MASTER_CLK_SRC] = &usb30_master_clk_src.clkr,
2476f2a76a29STaniya Das 	[USB30_MOCK_UTMI_CLK_SRC] = &usb30_mock_utmi_clk_src.clkr,
2477f2a76a29STaniya Das 	[USB3_PHY_AUX_CLK_SRC] = &usb3_phy_aux_clk_src.clkr,
2478f2a76a29STaniya Das 	[GCC_HLOS1_VOTE_LPASS_ADSP_SMMU_CLK] = &hlos1_vote_lpass_adsp_smmu_clk.clkr,
2479f2a76a29STaniya Das 	[GCC_HLOS1_VOTE_TURING_ADSP_SMMU_CLK] = &hlos1_vote_turing_adsp_smmu_clk.clkr,
2480f2a76a29STaniya Das 	[GCC_HLOS2_VOTE_TURING_ADSP_SMMU_CLK] = &hlos2_vote_turing_adsp_smmu_clk.clkr,
2481f2a76a29STaniya Das };
2482f2a76a29STaniya Das 
2483f2a76a29STaniya Das static struct gdsc *gcc_sdm660_gdscs[] = {
2484f2a76a29STaniya Das 	[UFS_GDSC] = &ufs_gdsc,
2485f2a76a29STaniya Das 	[USB_30_GDSC] = &usb_30_gdsc,
2486f2a76a29STaniya Das 	[PCIE_0_GDSC] = &pcie_0_gdsc,
2487f2a76a29STaniya Das 	[HLOS1_VOTE_TURING_ADSP_GDSC] = &hlos1_vote_turing_adsp_gdsc,
2488f2a76a29STaniya Das 	[HLOS2_VOTE_TURING_ADSP_GDSC] = &hlos2_vote_turing_adsp_gdsc,
2489f2a76a29STaniya Das 	[HLOS1_VOTE_LPASS_ADSP_GDSC] = &hlos1_vote_lpass_adsp_gdsc,
2490f2a76a29STaniya Das };
2491f2a76a29STaniya Das 
2492f2a76a29STaniya Das static const struct qcom_reset_map gcc_sdm660_resets[] = {
2493f2a76a29STaniya Das 	[GCC_QUSB2PHY_PRIM_BCR] = { 0x12000 },
2494f2a76a29STaniya Das 	[GCC_QUSB2PHY_SEC_BCR] = { 0x12004 },
2495f2a76a29STaniya Das 	[GCC_SDCC2_BCR] = { 0x14000 },
2496f2a76a29STaniya Das 	[GCC_SDCC1_BCR] = { 0x16000 },
2497f2a76a29STaniya Das 	[GCC_UFS_BCR] = { 0x75000 },
2498f2a76a29STaniya Das 	[GCC_USB3_DP_PHY_BCR] = { 0x50028 },
2499f2a76a29STaniya Das 	[GCC_USB3_PHY_BCR] = { 0x50020 },
2500f2a76a29STaniya Das 	[GCC_USB3PHY_PHY_BCR] = { 0x50024 },
25012725991eSStephen Boyd 	[GCC_USB_20_BCR] = { 0x2f000 },
2502f2a76a29STaniya Das 	[GCC_USB_30_BCR] = { 0xf000 },
2503 	[GCC_USB_PHY_CFG_AHB2PHY_BCR] = { 0x6a000 },
2504 	[GCC_MSS_RESTART] = { 0x79000 },
2505 };
2506 
2507 static const struct regmap_config gcc_sdm660_regmap_config = {
2508 	.reg_bits	= 32,
2509 	.reg_stride	= 4,
2510 	.val_bits	= 32,
2511 	.max_register	= 0x94000,
2512 	.fast_io	= true,
2513 };
2514 
2515 static const struct qcom_cc_desc gcc_sdm660_desc = {
2516 	.config = &gcc_sdm660_regmap_config,
2517 	.clks = gcc_sdm660_clocks,
2518 	.num_clks = ARRAY_SIZE(gcc_sdm660_clocks),
2519 	.resets = gcc_sdm660_resets,
2520 	.num_resets = ARRAY_SIZE(gcc_sdm660_resets),
2521 	.gdscs = gcc_sdm660_gdscs,
2522 	.num_gdscs = ARRAY_SIZE(gcc_sdm660_gdscs),
2523 	.clk_hws = gcc_sdm660_hws,
2524 	.num_clk_hws = ARRAY_SIZE(gcc_sdm660_hws),
2525 };
2526 
2527 static const struct of_device_id gcc_sdm660_match_table[] = {
2528 	{ .compatible = "qcom,gcc-sdm630" },
2529 	{ .compatible = "qcom,gcc-sdm660" },
2530 	{ }
2531 };
2532 MODULE_DEVICE_TABLE(of, gcc_sdm660_match_table);
2533 
gcc_sdm660_probe(struct platform_device * pdev)2534 static int gcc_sdm660_probe(struct platform_device *pdev)
2535 {
2536 	int ret;
2537 	struct regmap *regmap;
2538 
2539 	regmap = qcom_cc_map(pdev, &gcc_sdm660_desc);
2540 	if (IS_ERR(regmap))
2541 		return PTR_ERR(regmap);
2542 
2543 	/*
2544 	 * Set the HMSS_AHB_CLK_SLEEP_ENA bit to allow the hmss_ahb_clk to be
2545 	 * turned off by hardware during certain apps low power modes.
2546 	 */
2547 	ret = regmap_update_bits(regmap, 0x52008, BIT(21), BIT(21));
2548 	if (ret)
2549 		return ret;
2550 
2551 	return qcom_cc_really_probe(&pdev->dev, &gcc_sdm660_desc, regmap);
2552 }
2553 
2554 static struct platform_driver gcc_sdm660_driver = {
2555 	.probe		= gcc_sdm660_probe,
2556 	.driver		= {
2557 		.name	= "gcc-sdm660",
2558 		.of_match_table = gcc_sdm660_match_table,
2559 	},
2560 };
2561 
gcc_sdm660_init(void)2562 static int __init gcc_sdm660_init(void)
2563 {
2564 	return platform_driver_register(&gcc_sdm660_driver);
2565 }
2566 core_initcall_sync(gcc_sdm660_init);
2567 
gcc_sdm660_exit(void)2568 static void __exit gcc_sdm660_exit(void)
2569 {
2570 	platform_driver_unregister(&gcc_sdm660_driver);
2571 }
2572 module_exit(gcc_sdm660_exit);
2573 
2574 MODULE_LICENSE("GPL v2");
2575 MODULE_DESCRIPTION("QCOM GCC sdm660 Driver");
2576