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