xref: /openbmc/linux/drivers/clk/qcom/gcc-msm8994.c (revision 8c18b41b3931ad828111ec1e185fcdfffaf1c693)
197fb5e8dSThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only
2aec89f78SBastian Köcher /* Copyright (c) 2013-2016, The Linux Foundation. All rights reserved.
3aec89f78SBastian Köcher  */
4aec89f78SBastian Köcher 
5aec89f78SBastian Köcher #include <linux/kernel.h>
6aec89f78SBastian Köcher #include <linux/init.h>
7aec89f78SBastian Köcher #include <linux/err.h>
8aec89f78SBastian Köcher #include <linux/ctype.h>
9aec89f78SBastian Köcher #include <linux/io.h>
10aec89f78SBastian Köcher #include <linux/of.h>
11aec89f78SBastian Köcher #include <linux/platform_device.h>
12aec89f78SBastian Köcher #include <linux/module.h>
13aec89f78SBastian Köcher #include <linux/regmap.h>
14aec89f78SBastian Köcher 
15aec89f78SBastian Köcher #include <dt-bindings/clock/qcom,gcc-msm8994.h>
16aec89f78SBastian Köcher 
17aec89f78SBastian Köcher #include "common.h"
18aec89f78SBastian Köcher #include "clk-regmap.h"
19aec89f78SBastian Köcher #include "clk-alpha-pll.h"
20aec89f78SBastian Köcher #include "clk-rcg.h"
21aec89f78SBastian Köcher #include "clk-branch.h"
22aec89f78SBastian Köcher #include "reset.h"
23*8c18b41bSKonrad Dybcio #include "gdsc.h"
24aec89f78SBastian Köcher 
25aec89f78SBastian Köcher enum {
26aec89f78SBastian Köcher 	P_XO,
27aec89f78SBastian Köcher 	P_GPLL0,
28aec89f78SBastian Köcher 	P_GPLL4,
29aec89f78SBastian Köcher };
30aec89f78SBastian Köcher 
31aec89f78SBastian Köcher static const struct parent_map gcc_xo_gpll0_map[] = {
32aec89f78SBastian Köcher 	{ P_XO, 0 },
33aec89f78SBastian Köcher 	{ P_GPLL0, 1 },
34aec89f78SBastian Köcher };
35aec89f78SBastian Köcher 
36aec89f78SBastian Köcher static const char * const gcc_xo_gpll0[] = {
37aec89f78SBastian Köcher 	"xo",
38aec89f78SBastian Köcher 	"gpll0",
39aec89f78SBastian Köcher };
40aec89f78SBastian Köcher 
41aec89f78SBastian Köcher static const struct parent_map gcc_xo_gpll0_gpll4_map[] = {
42aec89f78SBastian Köcher 	{ P_XO, 0 },
43aec89f78SBastian Köcher 	{ P_GPLL0, 1 },
44aec89f78SBastian Köcher 	{ P_GPLL4, 5 },
45aec89f78SBastian Köcher };
46aec89f78SBastian Köcher 
47aec89f78SBastian Köcher static const char * const gcc_xo_gpll0_gpll4[] = {
48aec89f78SBastian Köcher 	"xo",
49aec89f78SBastian Köcher 	"gpll0",
50aec89f78SBastian Köcher 	"gpll4",
51aec89f78SBastian Köcher };
52aec89f78SBastian Köcher 
53aec89f78SBastian Köcher static struct clk_fixed_factor xo = {
54aec89f78SBastian Köcher 	.mult = 1,
55aec89f78SBastian Köcher 	.div = 1,
56aec89f78SBastian Köcher 	.hw.init = &(struct clk_init_data)
57aec89f78SBastian Köcher 	{
58aec89f78SBastian Köcher 		.name = "xo",
59aec89f78SBastian Köcher 		.parent_names = (const char *[]) { "xo_board" },
60aec89f78SBastian Köcher 		.num_parents = 1,
61aec89f78SBastian Köcher 		.ops = &clk_fixed_factor_ops,
62aec89f78SBastian Köcher 	},
63aec89f78SBastian Köcher };
64aec89f78SBastian Köcher 
65aec89f78SBastian Köcher static struct clk_alpha_pll gpll0_early = {
66aec89f78SBastian Köcher 	.offset = 0x00000,
6728d3f06eSAbhishek Sahu 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
68aec89f78SBastian Köcher 	.clkr = {
69aec89f78SBastian Köcher 		.enable_reg = 0x1480,
70aec89f78SBastian Köcher 		.enable_mask = BIT(0),
71aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
72aec89f78SBastian Köcher 		{
73aec89f78SBastian Köcher 			.name = "gpll0_early",
74aec89f78SBastian Köcher 			.parent_names = (const char *[]) { "xo" },
75aec89f78SBastian Köcher 			.num_parents = 1,
76aec89f78SBastian Köcher 			.ops = &clk_alpha_pll_ops,
77aec89f78SBastian Köcher 		},
78aec89f78SBastian Köcher 	},
79aec89f78SBastian Köcher };
80aec89f78SBastian Köcher 
81aec89f78SBastian Köcher static struct clk_alpha_pll_postdiv gpll0 = {
82aec89f78SBastian Köcher 	.offset = 0x00000,
8328d3f06eSAbhishek Sahu 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
84aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
85aec89f78SBastian Köcher 	{
86aec89f78SBastian Köcher 		.name = "gpll0",
87aec89f78SBastian Köcher 		.parent_names = (const char *[]) { "gpll0_early" },
88aec89f78SBastian Köcher 		.num_parents = 1,
89aec89f78SBastian Köcher 		.ops = &clk_alpha_pll_postdiv_ops,
90aec89f78SBastian Köcher 	},
91aec89f78SBastian Köcher };
92aec89f78SBastian Köcher 
93aec89f78SBastian Köcher static struct clk_alpha_pll gpll4_early = {
94aec89f78SBastian Köcher 	.offset = 0x1dc0,
9528d3f06eSAbhishek Sahu 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
96aec89f78SBastian Köcher 	.clkr = {
97aec89f78SBastian Köcher 		.enable_reg = 0x1480,
98aec89f78SBastian Köcher 		.enable_mask = BIT(4),
99aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
100aec89f78SBastian Köcher 		{
101aec89f78SBastian Köcher 			.name = "gpll4_early",
102aec89f78SBastian Köcher 			.parent_names = (const char *[]) { "xo" },
103aec89f78SBastian Köcher 			.num_parents = 1,
104aec89f78SBastian Köcher 			.ops = &clk_alpha_pll_ops,
105aec89f78SBastian Köcher 		},
106aec89f78SBastian Köcher 	},
107aec89f78SBastian Köcher };
108aec89f78SBastian Köcher 
109aec89f78SBastian Köcher static struct clk_alpha_pll_postdiv gpll4 = {
110aec89f78SBastian Köcher 	.offset = 0x1dc0,
11128d3f06eSAbhishek Sahu 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
112aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
113aec89f78SBastian Köcher 	{
114aec89f78SBastian Köcher 		.name = "gpll4",
115aec89f78SBastian Köcher 		.parent_names = (const char *[]) { "gpll4_early" },
116aec89f78SBastian Köcher 		.num_parents = 1,
117aec89f78SBastian Köcher 		.ops = &clk_alpha_pll_postdiv_ops,
118aec89f78SBastian Köcher 	},
119aec89f78SBastian Köcher };
120aec89f78SBastian Köcher 
121aec89f78SBastian Köcher static struct freq_tbl ftbl_ufs_axi_clk_src[] = {
122aec89f78SBastian Köcher 	F(50000000, P_GPLL0, 12, 0, 0),
123aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
124aec89f78SBastian Köcher 	F(150000000, P_GPLL0, 4, 0, 0),
125aec89f78SBastian Köcher 	F(171430000, P_GPLL0, 3.5, 0, 0),
126aec89f78SBastian Köcher 	F(200000000, P_GPLL0, 3, 0, 0),
127aec89f78SBastian Köcher 	F(240000000, P_GPLL0, 2.5, 0, 0),
128aec89f78SBastian Köcher 	{ }
129aec89f78SBastian Köcher };
130aec89f78SBastian Köcher 
131aec89f78SBastian Köcher static struct clk_rcg2 ufs_axi_clk_src = {
132aec89f78SBastian Köcher 	.cmd_rcgr = 0x1d68,
133aec89f78SBastian Köcher 	.mnd_width = 8,
134aec89f78SBastian Köcher 	.hid_width = 5,
135aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
136aec89f78SBastian Köcher 	.freq_tbl = ftbl_ufs_axi_clk_src,
137aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
138aec89f78SBastian Köcher 	{
139aec89f78SBastian Köcher 		.name = "ufs_axi_clk_src",
140aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
141aec89f78SBastian Köcher 		.num_parents = 2,
142aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
143aec89f78SBastian Köcher 	},
144aec89f78SBastian Köcher };
145aec89f78SBastian Köcher 
146aec89f78SBastian Köcher static struct freq_tbl ftbl_usb30_master_clk_src[] = {
147aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
148aec89f78SBastian Köcher 	F(125000000, P_GPLL0, 1, 5, 24),
149aec89f78SBastian Köcher 	{ }
150aec89f78SBastian Köcher };
151aec89f78SBastian Köcher 
152aec89f78SBastian Köcher static struct clk_rcg2 usb30_master_clk_src = {
153aec89f78SBastian Köcher 	.cmd_rcgr = 0x03d4,
154aec89f78SBastian Köcher 	.mnd_width = 8,
155aec89f78SBastian Köcher 	.hid_width = 5,
156aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
157aec89f78SBastian Köcher 	.freq_tbl = ftbl_usb30_master_clk_src,
158aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
159aec89f78SBastian Köcher 	{
160aec89f78SBastian Köcher 		.name = "usb30_master_clk_src",
161aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
162aec89f78SBastian Köcher 		.num_parents = 2,
163aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
164aec89f78SBastian Köcher 	},
165aec89f78SBastian Köcher };
166aec89f78SBastian Köcher 
167aec89f78SBastian Köcher static struct freq_tbl ftbl_blsp_i2c_apps_clk_src[] = {
168aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
169aec89f78SBastian Köcher 	F(50000000, P_GPLL0, 12, 0, 0),
170aec89f78SBastian Köcher 	{ }
171aec89f78SBastian Köcher };
172aec89f78SBastian Köcher 
173aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = {
174aec89f78SBastian Köcher 	.cmd_rcgr = 0x0660,
175aec89f78SBastian Köcher 	.hid_width = 5,
176aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
177aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
178aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
179aec89f78SBastian Köcher 	{
180aec89f78SBastian Köcher 		.name = "blsp1_qup1_i2c_apps_clk_src",
181aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
182aec89f78SBastian Köcher 		.num_parents = 2,
183aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
184aec89f78SBastian Köcher 	},
185aec89f78SBastian Köcher };
186aec89f78SBastian Köcher 
187aec89f78SBastian Köcher static struct freq_tbl ftbl_blspqup_spi_apps_clk_src[] = {
188aec89f78SBastian Köcher 	F(960000, P_XO, 10, 1, 2),
189aec89f78SBastian Köcher 	F(4800000, P_XO, 4, 0, 0),
190aec89f78SBastian Köcher 	F(9600000, P_XO, 2, 0, 0),
191aec89f78SBastian Köcher 	F(15000000, P_GPLL0, 10, 1, 4),
192aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
193aec89f78SBastian Köcher 	F(24000000, P_GPLL0, 12.5, 1, 2),
194aec89f78SBastian Köcher 	F(25000000, P_GPLL0, 12, 1, 2),
195aec89f78SBastian Köcher 	F(48000000, P_GPLL0, 12.5, 0, 0),
196aec89f78SBastian Köcher 	F(50000000, P_GPLL0, 12, 0, 0),
197aec89f78SBastian Köcher 	{ }
198aec89f78SBastian Köcher };
199aec89f78SBastian Köcher 
200aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = {
201aec89f78SBastian Köcher 	.cmd_rcgr = 0x064c,
202aec89f78SBastian Köcher 	.mnd_width = 8,
203aec89f78SBastian Köcher 	.hid_width = 5,
204aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
205aec89f78SBastian Köcher 	.freq_tbl = ftbl_blspqup_spi_apps_clk_src,
206aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
207aec89f78SBastian Köcher 	{
208aec89f78SBastian Köcher 		.name = "blsp1_qup1_spi_apps_clk_src",
209aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
210aec89f78SBastian Köcher 		.num_parents = 2,
211aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
212aec89f78SBastian Köcher 	},
213aec89f78SBastian Köcher };
214aec89f78SBastian Köcher 
215aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = {
216aec89f78SBastian Köcher 	.cmd_rcgr = 0x06e0,
217aec89f78SBastian Köcher 	.hid_width = 5,
218aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
219aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
220aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
221aec89f78SBastian Köcher 	{
222aec89f78SBastian Köcher 		.name = "blsp1_qup2_i2c_apps_clk_src",
223aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
224aec89f78SBastian Köcher 		.num_parents = 2,
225aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
226aec89f78SBastian Köcher 	},
227aec89f78SBastian Köcher };
228aec89f78SBastian Köcher 
229aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = {
230aec89f78SBastian Köcher 	.cmd_rcgr = 0x06cc,
231aec89f78SBastian Köcher 	.mnd_width = 8,
232aec89f78SBastian Köcher 	.hid_width = 5,
233aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
234aec89f78SBastian Köcher 	.freq_tbl = ftbl_blspqup_spi_apps_clk_src,
235aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
236aec89f78SBastian Köcher 	{
237aec89f78SBastian Köcher 		.name = "blsp1_qup2_spi_apps_clk_src",
238aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
239aec89f78SBastian Köcher 		.num_parents = 2,
240aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
241aec89f78SBastian Köcher 	},
242aec89f78SBastian Köcher };
243aec89f78SBastian Köcher 
244aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = {
245aec89f78SBastian Köcher 	.cmd_rcgr = 0x0760,
246aec89f78SBastian Köcher 	.hid_width = 5,
247aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
248aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
249aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
250aec89f78SBastian Köcher 	{
251aec89f78SBastian Köcher 		.name = "blsp1_qup3_i2c_apps_clk_src",
252aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
253aec89f78SBastian Köcher 		.num_parents = 2,
254aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
255aec89f78SBastian Köcher 	},
256aec89f78SBastian Köcher };
257aec89f78SBastian Köcher 
258aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = {
259aec89f78SBastian Köcher 	.cmd_rcgr = 0x074c,
260aec89f78SBastian Köcher 	.mnd_width = 8,
261aec89f78SBastian Köcher 	.hid_width = 5,
262aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
263aec89f78SBastian Köcher 	.freq_tbl = ftbl_blspqup_spi_apps_clk_src,
264aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
265aec89f78SBastian Köcher 	{
266aec89f78SBastian Köcher 		.name = "blsp1_qup3_spi_apps_clk_src",
267aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
268aec89f78SBastian Köcher 		.num_parents = 2,
269aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
270aec89f78SBastian Köcher 	},
271aec89f78SBastian Köcher };
272aec89f78SBastian Köcher 
273aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = {
274aec89f78SBastian Köcher 	.cmd_rcgr = 0x07e0,
275aec89f78SBastian Köcher 	.hid_width = 5,
276aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
277aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
278aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
279aec89f78SBastian Köcher 	{
280aec89f78SBastian Köcher 		.name = "blsp1_qup4_i2c_apps_clk_src",
281aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
282aec89f78SBastian Köcher 		.num_parents = 2,
283aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
284aec89f78SBastian Köcher 	},
285aec89f78SBastian Köcher };
286aec89f78SBastian Köcher 
287aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = {
288aec89f78SBastian Köcher 	.cmd_rcgr = 0x07cc,
289aec89f78SBastian Köcher 	.mnd_width = 8,
290aec89f78SBastian Köcher 	.hid_width = 5,
291aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
292aec89f78SBastian Köcher 	.freq_tbl = ftbl_blspqup_spi_apps_clk_src,
293aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
294aec89f78SBastian Köcher 	{
295aec89f78SBastian Köcher 		.name = "blsp1_qup4_spi_apps_clk_src",
296aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
297aec89f78SBastian Köcher 		.num_parents = 2,
298aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
299aec89f78SBastian Köcher 	},
300aec89f78SBastian Köcher };
301aec89f78SBastian Köcher 
302aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = {
303aec89f78SBastian Köcher 	.cmd_rcgr = 0x0860,
304aec89f78SBastian Köcher 	.hid_width = 5,
305aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
306aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
307aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
308aec89f78SBastian Köcher 	{
309aec89f78SBastian Köcher 		.name = "blsp1_qup5_i2c_apps_clk_src",
310aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
311aec89f78SBastian Köcher 		.num_parents = 2,
312aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
313aec89f78SBastian Köcher 	},
314aec89f78SBastian Köcher };
315aec89f78SBastian Köcher 
316aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = {
317aec89f78SBastian Köcher 	.cmd_rcgr = 0x084c,
318aec89f78SBastian Köcher 	.mnd_width = 8,
319aec89f78SBastian Köcher 	.hid_width = 5,
320aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
321aec89f78SBastian Köcher 	.freq_tbl = ftbl_blspqup_spi_apps_clk_src,
322aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
323aec89f78SBastian Köcher 	{
324aec89f78SBastian Köcher 		.name = "blsp1_qup5_spi_apps_clk_src",
325aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
326aec89f78SBastian Köcher 		.num_parents = 2,
327aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
328aec89f78SBastian Köcher 	},
329aec89f78SBastian Köcher };
330aec89f78SBastian Köcher 
331aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = {
332aec89f78SBastian Köcher 	.cmd_rcgr = 0x08e0,
333aec89f78SBastian Köcher 	.hid_width = 5,
334aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
335aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
336aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
337aec89f78SBastian Köcher 	{
338aec89f78SBastian Köcher 		.name = "blsp1_qup6_i2c_apps_clk_src",
339aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
340aec89f78SBastian Köcher 		.num_parents = 2,
341aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
342aec89f78SBastian Köcher 	},
343aec89f78SBastian Köcher };
344aec89f78SBastian Köcher 
345aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = {
346aec89f78SBastian Köcher 	.cmd_rcgr = 0x08cc,
347aec89f78SBastian Köcher 	.mnd_width = 8,
348aec89f78SBastian Köcher 	.hid_width = 5,
349aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
350aec89f78SBastian Köcher 	.freq_tbl = ftbl_blspqup_spi_apps_clk_src,
351aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
352aec89f78SBastian Köcher 	{
353aec89f78SBastian Köcher 		.name = "blsp1_qup6_spi_apps_clk_src",
354aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
355aec89f78SBastian Köcher 		.num_parents = 2,
356aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
357aec89f78SBastian Köcher 	},
358aec89f78SBastian Köcher };
359aec89f78SBastian Köcher 
360aec89f78SBastian Köcher static struct freq_tbl ftbl_blsp_uart_apps_clk_src[] = {
361aec89f78SBastian Köcher 	F(3686400, P_GPLL0, 1, 96, 15625),
362aec89f78SBastian Köcher 	F(7372800, P_GPLL0, 1, 192, 15625),
363aec89f78SBastian Köcher 	F(14745600, P_GPLL0, 1, 384, 15625),
364aec89f78SBastian Köcher 	F(16000000, P_GPLL0, 5, 2, 15),
365aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
366aec89f78SBastian Köcher 	F(24000000, P_GPLL0, 5, 1, 5),
367aec89f78SBastian Köcher 	F(32000000, P_GPLL0, 1, 4, 75),
368aec89f78SBastian Köcher 	F(40000000, P_GPLL0, 15, 0, 0),
369aec89f78SBastian Köcher 	F(46400000, P_GPLL0, 1, 29, 375),
370aec89f78SBastian Köcher 	F(48000000, P_GPLL0, 12.5, 0, 0),
371aec89f78SBastian Köcher 	F(51200000, P_GPLL0, 1, 32, 375),
372aec89f78SBastian Köcher 	F(56000000, P_GPLL0, 1, 7, 75),
373aec89f78SBastian Köcher 	F(58982400, P_GPLL0, 1, 1536, 15625),
374aec89f78SBastian Köcher 	F(60000000, P_GPLL0, 10, 0, 0),
375aec89f78SBastian Köcher 	F(63160000, P_GPLL0, 9.5, 0, 0),
376aec89f78SBastian Köcher 	{ }
377aec89f78SBastian Köcher };
378aec89f78SBastian Köcher 
379aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart1_apps_clk_src = {
380aec89f78SBastian Köcher 	.cmd_rcgr = 0x068c,
381aec89f78SBastian Köcher 	.mnd_width = 16,
382aec89f78SBastian Köcher 	.hid_width = 5,
383aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
384aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
385aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
386aec89f78SBastian Köcher 	{
387aec89f78SBastian Köcher 		.name = "blsp1_uart1_apps_clk_src",
388aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
389aec89f78SBastian Köcher 		.num_parents = 2,
390aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
391aec89f78SBastian Köcher 	},
392aec89f78SBastian Köcher };
393aec89f78SBastian Köcher 
394aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart2_apps_clk_src = {
395aec89f78SBastian Köcher 	.cmd_rcgr = 0x070c,
396aec89f78SBastian Köcher 	.mnd_width = 16,
397aec89f78SBastian Köcher 	.hid_width = 5,
398aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
399aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
400aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
401aec89f78SBastian Köcher 	{
402aec89f78SBastian Köcher 		.name = "blsp1_uart2_apps_clk_src",
403aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
404aec89f78SBastian Köcher 		.num_parents = 2,
405aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
406aec89f78SBastian Köcher 	},
407aec89f78SBastian Köcher };
408aec89f78SBastian Köcher 
409aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart3_apps_clk_src = {
410aec89f78SBastian Köcher 	.cmd_rcgr = 0x078c,
411aec89f78SBastian Köcher 	.mnd_width = 16,
412aec89f78SBastian Köcher 	.hid_width = 5,
413aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
414aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
415aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
416aec89f78SBastian Köcher 	{
417aec89f78SBastian Köcher 		.name = "blsp1_uart3_apps_clk_src",
418aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
419aec89f78SBastian Köcher 		.num_parents = 2,
420aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
421aec89f78SBastian Köcher 	},
422aec89f78SBastian Köcher };
423aec89f78SBastian Köcher 
424aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart4_apps_clk_src = {
425aec89f78SBastian Köcher 	.cmd_rcgr = 0x080c,
426aec89f78SBastian Köcher 	.mnd_width = 16,
427aec89f78SBastian Köcher 	.hid_width = 5,
428aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
429aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
430aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
431aec89f78SBastian Köcher 	{
432aec89f78SBastian Köcher 		.name = "blsp1_uart4_apps_clk_src",
433aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
434aec89f78SBastian Köcher 		.num_parents = 2,
435aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
436aec89f78SBastian Köcher 	},
437aec89f78SBastian Köcher };
438aec89f78SBastian Köcher 
439aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart5_apps_clk_src = {
440aec89f78SBastian Köcher 	.cmd_rcgr = 0x088c,
441aec89f78SBastian Köcher 	.mnd_width = 16,
442aec89f78SBastian Köcher 	.hid_width = 5,
443aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
444aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
445aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
446aec89f78SBastian Köcher 	{
447aec89f78SBastian Köcher 		.name = "blsp1_uart5_apps_clk_src",
448aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
449aec89f78SBastian Köcher 		.num_parents = 2,
450aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
451aec89f78SBastian Köcher 	},
452aec89f78SBastian Köcher };
453aec89f78SBastian Köcher 
454aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart6_apps_clk_src = {
455aec89f78SBastian Köcher 	.cmd_rcgr = 0x090c,
456aec89f78SBastian Köcher 	.mnd_width = 16,
457aec89f78SBastian Köcher 	.hid_width = 5,
458aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
459aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
460aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
461aec89f78SBastian Köcher 	{
462aec89f78SBastian Köcher 		.name = "blsp1_uart6_apps_clk_src",
463aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
464aec89f78SBastian Köcher 		.num_parents = 2,
465aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
466aec89f78SBastian Köcher 	},
467aec89f78SBastian Köcher };
468aec89f78SBastian Köcher 
469aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup1_i2c_apps_clk_src = {
470aec89f78SBastian Köcher 	.cmd_rcgr = 0x09a0,
471aec89f78SBastian Köcher 	.hid_width = 5,
472aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
473aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
474aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
475aec89f78SBastian Köcher 	{
476aec89f78SBastian Köcher 		.name = "blsp2_qup1_i2c_apps_clk_src",
477aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
478aec89f78SBastian Köcher 		.num_parents = 2,
479aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
480aec89f78SBastian Köcher 	},
481aec89f78SBastian Köcher };
482aec89f78SBastian Köcher 
483aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup1_spi_apps_clk_src = {
484aec89f78SBastian Köcher 	.cmd_rcgr = 0x098c,
485aec89f78SBastian Köcher 	.mnd_width = 8,
486aec89f78SBastian Köcher 	.hid_width = 5,
487aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
488aec89f78SBastian Köcher 	.freq_tbl = ftbl_blspqup_spi_apps_clk_src,
489aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
490aec89f78SBastian Köcher 	{
491aec89f78SBastian Köcher 		.name = "blsp2_qup1_spi_apps_clk_src",
492aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
493aec89f78SBastian Köcher 		.num_parents = 2,
494aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
495aec89f78SBastian Köcher 	},
496aec89f78SBastian Köcher };
497aec89f78SBastian Köcher 
498aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup2_i2c_apps_clk_src = {
499aec89f78SBastian Köcher 	.cmd_rcgr = 0x0a20,
500aec89f78SBastian Köcher 	.hid_width = 5,
501aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
502aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
503aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
504aec89f78SBastian Köcher 	{
505aec89f78SBastian Köcher 		.name = "blsp2_qup2_i2c_apps_clk_src",
506aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
507aec89f78SBastian Köcher 		.num_parents = 2,
508aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
509aec89f78SBastian Köcher 	},
510aec89f78SBastian Köcher };
511aec89f78SBastian Köcher 
512aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup2_spi_apps_clk_src = {
513aec89f78SBastian Köcher 	.cmd_rcgr = 0x0a0c,
514aec89f78SBastian Köcher 	.mnd_width = 8,
515aec89f78SBastian Köcher 	.hid_width = 5,
516aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
517aec89f78SBastian Köcher 	.freq_tbl = ftbl_blspqup_spi_apps_clk_src,
518aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
519aec89f78SBastian Köcher 	{
520aec89f78SBastian Köcher 		.name = "blsp2_qup2_spi_apps_clk_src",
521aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
522aec89f78SBastian Köcher 		.num_parents = 2,
523aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
524aec89f78SBastian Köcher 	},
525aec89f78SBastian Köcher };
526aec89f78SBastian Köcher 
527aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup3_i2c_apps_clk_src = {
528aec89f78SBastian Köcher 	.cmd_rcgr = 0x0aa0,
529aec89f78SBastian Köcher 	.hid_width = 5,
530aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
531aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
532aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
533aec89f78SBastian Köcher 	{
534aec89f78SBastian Köcher 		.name = "blsp2_qup3_i2c_apps_clk_src",
535aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
536aec89f78SBastian Köcher 		.num_parents = 2,
537aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
538aec89f78SBastian Köcher 	},
539aec89f78SBastian Köcher };
540aec89f78SBastian Köcher 
541aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup3_spi_apps_clk_src = {
542aec89f78SBastian Köcher 	.cmd_rcgr = 0x0a8c,
543aec89f78SBastian Köcher 	.mnd_width = 8,
544aec89f78SBastian Köcher 	.hid_width = 5,
545aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
546aec89f78SBastian Köcher 	.freq_tbl = ftbl_blspqup_spi_apps_clk_src,
547aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
548aec89f78SBastian Köcher 	{
549aec89f78SBastian Köcher 		.name = "blsp2_qup3_spi_apps_clk_src",
550aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
551aec89f78SBastian Köcher 		.num_parents = 2,
552aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
553aec89f78SBastian Köcher 	},
554aec89f78SBastian Köcher };
555aec89f78SBastian Köcher 
556aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup4_i2c_apps_clk_src = {
557aec89f78SBastian Köcher 	.cmd_rcgr = 0x0b20,
558aec89f78SBastian Köcher 	.hid_width = 5,
559aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
560aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
561aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
562aec89f78SBastian Köcher 	{
563aec89f78SBastian Köcher 		.name = "blsp2_qup4_i2c_apps_clk_src",
564aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
565aec89f78SBastian Köcher 		.num_parents = 2,
566aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
567aec89f78SBastian Köcher 	},
568aec89f78SBastian Köcher };
569aec89f78SBastian Köcher 
570aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup4_spi_apps_clk_src = {
571aec89f78SBastian Köcher 	.cmd_rcgr = 0x0b0c,
572aec89f78SBastian Köcher 	.mnd_width = 8,
573aec89f78SBastian Köcher 	.hid_width = 5,
574aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
575aec89f78SBastian Köcher 	.freq_tbl = ftbl_blspqup_spi_apps_clk_src,
576aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
577aec89f78SBastian Köcher 	{
578aec89f78SBastian Köcher 		.name = "blsp2_qup4_spi_apps_clk_src",
579aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
580aec89f78SBastian Köcher 		.num_parents = 2,
581aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
582aec89f78SBastian Köcher 	},
583aec89f78SBastian Köcher };
584aec89f78SBastian Köcher 
585aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup5_i2c_apps_clk_src = {
586aec89f78SBastian Köcher 	.cmd_rcgr = 0x0ba0,
587aec89f78SBastian Köcher 	.hid_width = 5,
588aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
589aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
590aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
591aec89f78SBastian Köcher 	{
592aec89f78SBastian Köcher 		.name = "blsp2_qup5_i2c_apps_clk_src",
593aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
594aec89f78SBastian Köcher 		.num_parents = 2,
595aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
596aec89f78SBastian Köcher 	},
597aec89f78SBastian Köcher };
598aec89f78SBastian Köcher 
599aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup5_spi_apps_clk_src = {
600aec89f78SBastian Köcher 	.cmd_rcgr = 0x0b8c,
601aec89f78SBastian Köcher 	.mnd_width = 8,
602aec89f78SBastian Köcher 	.hid_width = 5,
603aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
604aec89f78SBastian Köcher 	.freq_tbl = ftbl_blspqup_spi_apps_clk_src,
605aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
606aec89f78SBastian Köcher 	{
607aec89f78SBastian Köcher 		.name = "blsp2_qup5_spi_apps_clk_src",
608aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
609aec89f78SBastian Köcher 		.num_parents = 2,
610aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
611aec89f78SBastian Köcher 	},
612aec89f78SBastian Köcher };
613aec89f78SBastian Köcher 
614aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup6_i2c_apps_clk_src = {
615aec89f78SBastian Köcher 	.cmd_rcgr = 0x0c20,
616aec89f78SBastian Köcher 	.hid_width = 5,
617aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
618aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
619aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
620aec89f78SBastian Köcher 	{
621aec89f78SBastian Köcher 		.name = "blsp2_qup6_i2c_apps_clk_src",
622aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
623aec89f78SBastian Köcher 		.num_parents = 2,
624aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
625aec89f78SBastian Köcher 	},
626aec89f78SBastian Köcher };
627aec89f78SBastian Köcher 
628aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup6_spi_apps_clk_src = {
629aec89f78SBastian Köcher 	.cmd_rcgr = 0x0c0c,
630aec89f78SBastian Köcher 	.mnd_width = 8,
631aec89f78SBastian Köcher 	.hid_width = 5,
632aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
633aec89f78SBastian Köcher 	.freq_tbl = ftbl_blspqup_spi_apps_clk_src,
634aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
635aec89f78SBastian Köcher 	{
636aec89f78SBastian Köcher 		.name = "blsp2_qup6_spi_apps_clk_src",
637aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
638aec89f78SBastian Köcher 		.num_parents = 2,
639aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
640aec89f78SBastian Köcher 	},
641aec89f78SBastian Köcher };
642aec89f78SBastian Köcher 
643aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart1_apps_clk_src = {
644aec89f78SBastian Köcher 	.cmd_rcgr = 0x09cc,
645aec89f78SBastian Köcher 	.mnd_width = 16,
646aec89f78SBastian Köcher 	.hid_width = 5,
647aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
648aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
649aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
650aec89f78SBastian Köcher 	{
651aec89f78SBastian Köcher 		.name = "blsp2_uart1_apps_clk_src",
652aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
653aec89f78SBastian Köcher 		.num_parents = 2,
654aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
655aec89f78SBastian Köcher 	},
656aec89f78SBastian Köcher };
657aec89f78SBastian Köcher 
658aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart2_apps_clk_src = {
659aec89f78SBastian Köcher 	.cmd_rcgr = 0x0a4c,
660aec89f78SBastian Köcher 	.mnd_width = 16,
661aec89f78SBastian Köcher 	.hid_width = 5,
662aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
663aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
664aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
665aec89f78SBastian Köcher 	{
666aec89f78SBastian Köcher 		.name = "blsp2_uart2_apps_clk_src",
667aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
668aec89f78SBastian Köcher 		.num_parents = 2,
669aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
670aec89f78SBastian Köcher 	},
671aec89f78SBastian Köcher };
672aec89f78SBastian Köcher 
673aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart3_apps_clk_src = {
674aec89f78SBastian Köcher 	.cmd_rcgr = 0x0acc,
675aec89f78SBastian Köcher 	.mnd_width = 16,
676aec89f78SBastian Köcher 	.hid_width = 5,
677aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
678aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
679aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
680aec89f78SBastian Köcher 	{
681aec89f78SBastian Köcher 		.name = "blsp2_uart3_apps_clk_src",
682aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
683aec89f78SBastian Köcher 		.num_parents = 2,
684aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
685aec89f78SBastian Köcher 	},
686aec89f78SBastian Köcher };
687aec89f78SBastian Köcher 
688aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart4_apps_clk_src = {
689aec89f78SBastian Köcher 	.cmd_rcgr = 0x0b4c,
690aec89f78SBastian Köcher 	.mnd_width = 16,
691aec89f78SBastian Köcher 	.hid_width = 5,
692aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
693aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
694aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
695aec89f78SBastian Köcher 	{
696aec89f78SBastian Köcher 		.name = "blsp2_uart4_apps_clk_src",
697aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
698aec89f78SBastian Köcher 		.num_parents = 2,
699aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
700aec89f78SBastian Köcher 	},
701aec89f78SBastian Köcher };
702aec89f78SBastian Köcher 
703aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart5_apps_clk_src = {
704aec89f78SBastian Köcher 	.cmd_rcgr = 0x0bcc,
705aec89f78SBastian Köcher 	.mnd_width = 16,
706aec89f78SBastian Köcher 	.hid_width = 5,
707aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
708aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
709aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
710aec89f78SBastian Köcher 	{
711aec89f78SBastian Köcher 		.name = "blsp2_uart5_apps_clk_src",
712aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
713aec89f78SBastian Köcher 		.num_parents = 2,
714aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
715aec89f78SBastian Köcher 	},
716aec89f78SBastian Köcher };
717aec89f78SBastian Köcher 
718aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart6_apps_clk_src = {
719aec89f78SBastian Köcher 	.cmd_rcgr = 0x0c4c,
720aec89f78SBastian Köcher 	.mnd_width = 16,
721aec89f78SBastian Köcher 	.hid_width = 5,
722aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
723aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
724aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
725aec89f78SBastian Köcher 	{
726aec89f78SBastian Köcher 		.name = "blsp2_uart6_apps_clk_src",
727aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
728aec89f78SBastian Köcher 		.num_parents = 2,
729aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
730aec89f78SBastian Köcher 	},
731aec89f78SBastian Köcher };
732aec89f78SBastian Köcher 
733aec89f78SBastian Köcher static struct freq_tbl ftbl_gp1_clk_src[] = {
734aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
735aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
736aec89f78SBastian Köcher 	F(200000000, P_GPLL0, 3, 0, 0),
737aec89f78SBastian Köcher 	{ }
738aec89f78SBastian Köcher };
739aec89f78SBastian Köcher 
740aec89f78SBastian Köcher static struct clk_rcg2 gp1_clk_src = {
741aec89f78SBastian Köcher 	.cmd_rcgr = 0x1904,
742aec89f78SBastian Köcher 	.mnd_width = 8,
743aec89f78SBastian Köcher 	.hid_width = 5,
744aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
745aec89f78SBastian Köcher 	.freq_tbl = ftbl_gp1_clk_src,
746aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
747aec89f78SBastian Köcher 	{
748aec89f78SBastian Köcher 		.name = "gp1_clk_src",
749aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
750aec89f78SBastian Köcher 		.num_parents = 2,
751aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
752aec89f78SBastian Köcher 	},
753aec89f78SBastian Köcher };
754aec89f78SBastian Köcher 
755aec89f78SBastian Köcher static struct freq_tbl ftbl_gp2_clk_src[] = {
756aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
757aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
758aec89f78SBastian Köcher 	F(200000000, P_GPLL0, 3, 0, 0),
759aec89f78SBastian Köcher 	{ }
760aec89f78SBastian Köcher };
761aec89f78SBastian Köcher 
762aec89f78SBastian Köcher static struct clk_rcg2 gp2_clk_src = {
763aec89f78SBastian Köcher 	.cmd_rcgr = 0x1944,
764aec89f78SBastian Köcher 	.mnd_width = 8,
765aec89f78SBastian Köcher 	.hid_width = 5,
766aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
767aec89f78SBastian Köcher 	.freq_tbl = ftbl_gp2_clk_src,
768aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
769aec89f78SBastian Köcher 	{
770aec89f78SBastian Köcher 		.name = "gp2_clk_src",
771aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
772aec89f78SBastian Köcher 		.num_parents = 2,
773aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
774aec89f78SBastian Köcher 	},
775aec89f78SBastian Köcher };
776aec89f78SBastian Köcher 
777aec89f78SBastian Köcher static struct freq_tbl ftbl_gp3_clk_src[] = {
778aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
779aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
780aec89f78SBastian Köcher 	F(200000000, P_GPLL0, 3, 0, 0),
781aec89f78SBastian Köcher 	{ }
782aec89f78SBastian Köcher };
783aec89f78SBastian Köcher 
784aec89f78SBastian Köcher static struct clk_rcg2 gp3_clk_src = {
785aec89f78SBastian Köcher 	.cmd_rcgr = 0x1984,
786aec89f78SBastian Köcher 	.mnd_width = 8,
787aec89f78SBastian Köcher 	.hid_width = 5,
788aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
789aec89f78SBastian Köcher 	.freq_tbl = ftbl_gp3_clk_src,
790aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
791aec89f78SBastian Köcher 	{
792aec89f78SBastian Köcher 		.name = "gp3_clk_src",
793aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
794aec89f78SBastian Köcher 		.num_parents = 2,
795aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
796aec89f78SBastian Köcher 	},
797aec89f78SBastian Köcher };
798aec89f78SBastian Köcher 
799aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_0_aux_clk_src[] = {
800aec89f78SBastian Köcher 	F(1011000, P_XO, 1, 1, 19),
801aec89f78SBastian Köcher 	{ }
802aec89f78SBastian Köcher };
803aec89f78SBastian Köcher 
804aec89f78SBastian Köcher static struct clk_rcg2 pcie_0_aux_clk_src = {
805aec89f78SBastian Köcher 	.cmd_rcgr = 0x1b00,
806aec89f78SBastian Köcher 	.mnd_width = 8,
807aec89f78SBastian Köcher 	.hid_width = 5,
808aec89f78SBastian Köcher 	.freq_tbl = ftbl_pcie_0_aux_clk_src,
809aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
810aec89f78SBastian Köcher 	{
811aec89f78SBastian Köcher 		.name = "pcie_0_aux_clk_src",
812aec89f78SBastian Köcher 		.parent_names = (const char *[]) { "xo" },
813aec89f78SBastian Köcher 		.num_parents = 1,
814aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
815aec89f78SBastian Köcher 	},
816aec89f78SBastian Köcher };
817aec89f78SBastian Köcher 
818aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_pipe_clk_src[] = {
819aec89f78SBastian Köcher 	F(125000000, P_XO, 1, 0, 0),
820aec89f78SBastian Köcher 	{ }
821aec89f78SBastian Köcher };
822aec89f78SBastian Köcher 
823aec89f78SBastian Köcher static struct clk_rcg2 pcie_0_pipe_clk_src = {
824aec89f78SBastian Köcher 	.cmd_rcgr = 0x1adc,
825aec89f78SBastian Köcher 	.hid_width = 5,
826aec89f78SBastian Köcher 	.freq_tbl = ftbl_pcie_pipe_clk_src,
827aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
828aec89f78SBastian Köcher 	{
829aec89f78SBastian Köcher 		.name = "pcie_0_pipe_clk_src",
830aec89f78SBastian Köcher 		.parent_names = (const char *[]) { "xo" },
831aec89f78SBastian Köcher 		.num_parents = 1,
832aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
833aec89f78SBastian Köcher 	},
834aec89f78SBastian Köcher };
835aec89f78SBastian Köcher 
836aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_1_aux_clk_src[] = {
837aec89f78SBastian Köcher 	F(1011000, P_XO, 1, 1, 19),
838aec89f78SBastian Köcher 	{ }
839aec89f78SBastian Köcher };
840aec89f78SBastian Köcher 
841aec89f78SBastian Köcher static struct clk_rcg2 pcie_1_aux_clk_src = {
842aec89f78SBastian Köcher 	.cmd_rcgr = 0x1b80,
843aec89f78SBastian Köcher 	.mnd_width = 8,
844aec89f78SBastian Köcher 	.hid_width = 5,
845aec89f78SBastian Köcher 	.freq_tbl = ftbl_pcie_1_aux_clk_src,
846aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
847aec89f78SBastian Köcher 	{
848aec89f78SBastian Köcher 		.name = "pcie_1_aux_clk_src",
849aec89f78SBastian Köcher 		.parent_names = (const char *[]) { "xo" },
850aec89f78SBastian Köcher 		.num_parents = 1,
851aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
852aec89f78SBastian Köcher 	},
853aec89f78SBastian Köcher };
854aec89f78SBastian Köcher 
855aec89f78SBastian Köcher static struct clk_rcg2 pcie_1_pipe_clk_src = {
856aec89f78SBastian Köcher 	.cmd_rcgr = 0x1b5c,
857aec89f78SBastian Köcher 	.hid_width = 5,
858aec89f78SBastian Köcher 	.freq_tbl = ftbl_pcie_pipe_clk_src,
859aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
860aec89f78SBastian Köcher 	{
861aec89f78SBastian Köcher 		.name = "pcie_1_pipe_clk_src",
862aec89f78SBastian Köcher 		.parent_names = (const char *[]) { "xo" },
863aec89f78SBastian Köcher 		.num_parents = 1,
864aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
865aec89f78SBastian Köcher 	},
866aec89f78SBastian Köcher };
867aec89f78SBastian Köcher 
868aec89f78SBastian Köcher static struct freq_tbl ftbl_pdm2_clk_src[] = {
869aec89f78SBastian Köcher 	F(60000000, P_GPLL0, 10, 0, 0),
870aec89f78SBastian Köcher 	{ }
871aec89f78SBastian Köcher };
872aec89f78SBastian Köcher 
873aec89f78SBastian Köcher static struct clk_rcg2 pdm2_clk_src = {
874aec89f78SBastian Köcher 	.cmd_rcgr = 0x0cd0,
875aec89f78SBastian Köcher 	.hid_width = 5,
876aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
877aec89f78SBastian Köcher 	.freq_tbl = ftbl_pdm2_clk_src,
878aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
879aec89f78SBastian Köcher 	{
880aec89f78SBastian Köcher 		.name = "pdm2_clk_src",
881aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
882aec89f78SBastian Köcher 		.num_parents = 2,
883aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
884aec89f78SBastian Köcher 	},
885aec89f78SBastian Köcher };
886aec89f78SBastian Köcher 
887aec89f78SBastian Köcher static struct freq_tbl ftbl_sdcc1_apps_clk_src[] = {
888aec89f78SBastian Köcher 	F(144000, P_XO, 16, 3, 25),
889aec89f78SBastian Köcher 	F(400000, P_XO, 12, 1, 4),
890aec89f78SBastian Köcher 	F(20000000, P_GPLL0, 15, 1, 2),
891aec89f78SBastian Köcher 	F(25000000, P_GPLL0, 12, 1, 2),
892aec89f78SBastian Köcher 	F(50000000, P_GPLL0, 12, 0, 0),
893aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
894aec89f78SBastian Köcher 	F(192000000, P_GPLL4, 2, 0, 0),
895aec89f78SBastian Köcher 	F(384000000, P_GPLL4, 1, 0, 0),
896aec89f78SBastian Köcher 	{ }
897aec89f78SBastian Köcher };
898aec89f78SBastian Köcher 
899aec89f78SBastian Köcher static struct clk_rcg2 sdcc1_apps_clk_src = {
900aec89f78SBastian Köcher 	.cmd_rcgr = 0x04d0,
901aec89f78SBastian Köcher 	.mnd_width = 8,
902aec89f78SBastian Köcher 	.hid_width = 5,
903aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_gpll4_map,
904aec89f78SBastian Köcher 	.freq_tbl = ftbl_sdcc1_apps_clk_src,
905aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
906aec89f78SBastian Köcher 	{
907aec89f78SBastian Köcher 		.name = "sdcc1_apps_clk_src",
908aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0_gpll4,
909aec89f78SBastian Köcher 		.num_parents = 3,
9105f5001a9SRajendra Nayak 		.ops = &clk_rcg2_floor_ops,
911aec89f78SBastian Köcher 	},
912aec89f78SBastian Köcher };
913aec89f78SBastian Köcher 
914aec89f78SBastian Köcher static struct freq_tbl ftbl_sdcc2_4_apps_clk_src[] = {
915aec89f78SBastian Köcher 	F(144000, P_XO, 16, 3, 25),
916aec89f78SBastian Köcher 	F(400000, P_XO, 12, 1, 4),
917aec89f78SBastian Köcher 	F(20000000, P_GPLL0, 15, 1, 2),
918aec89f78SBastian Köcher 	F(25000000, P_GPLL0, 12, 1, 2),
919aec89f78SBastian Köcher 	F(50000000, P_GPLL0, 12, 0, 0),
920aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
921aec89f78SBastian Köcher 	F(200000000, P_GPLL0, 3, 0, 0),
922aec89f78SBastian Köcher 	{ }
923aec89f78SBastian Köcher };
924aec89f78SBastian Köcher 
925aec89f78SBastian Köcher static struct clk_rcg2 sdcc2_apps_clk_src = {
926aec89f78SBastian Köcher 	.cmd_rcgr = 0x0510,
927aec89f78SBastian Köcher 	.mnd_width = 8,
928aec89f78SBastian Köcher 	.hid_width = 5,
929aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
930aec89f78SBastian Köcher 	.freq_tbl = ftbl_sdcc2_4_apps_clk_src,
931aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
932aec89f78SBastian Köcher 	{
933aec89f78SBastian Köcher 		.name = "sdcc2_apps_clk_src",
934aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
935aec89f78SBastian Köcher 		.num_parents = 2,
9365f5001a9SRajendra Nayak 		.ops = &clk_rcg2_floor_ops,
937aec89f78SBastian Köcher 	},
938aec89f78SBastian Köcher };
939aec89f78SBastian Köcher 
940aec89f78SBastian Köcher static struct clk_rcg2 sdcc3_apps_clk_src = {
941aec89f78SBastian Köcher 	.cmd_rcgr = 0x0550,
942aec89f78SBastian Köcher 	.mnd_width = 8,
943aec89f78SBastian Köcher 	.hid_width = 5,
944aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
945aec89f78SBastian Köcher 	.freq_tbl = ftbl_sdcc2_4_apps_clk_src,
946aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
947aec89f78SBastian Köcher 	{
948aec89f78SBastian Köcher 		.name = "sdcc3_apps_clk_src",
949aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
950aec89f78SBastian Köcher 		.num_parents = 2,
9515f5001a9SRajendra Nayak 		.ops = &clk_rcg2_floor_ops,
952aec89f78SBastian Köcher 	},
953aec89f78SBastian Köcher };
954aec89f78SBastian Köcher 
955aec89f78SBastian Köcher static struct clk_rcg2 sdcc4_apps_clk_src = {
956aec89f78SBastian Köcher 	.cmd_rcgr = 0x0590,
957aec89f78SBastian Köcher 	.mnd_width = 8,
958aec89f78SBastian Köcher 	.hid_width = 5,
959aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
960aec89f78SBastian Köcher 	.freq_tbl = ftbl_sdcc2_4_apps_clk_src,
961aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
962aec89f78SBastian Köcher 	{
963aec89f78SBastian Köcher 		.name = "sdcc4_apps_clk_src",
964aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
965aec89f78SBastian Köcher 		.num_parents = 2,
9665f5001a9SRajendra Nayak 		.ops = &clk_rcg2_floor_ops,
967aec89f78SBastian Köcher 	},
968aec89f78SBastian Köcher };
969aec89f78SBastian Köcher 
970aec89f78SBastian Köcher static struct freq_tbl ftbl_tsif_ref_clk_src[] = {
971aec89f78SBastian Köcher 	F(105500, P_XO, 1, 1, 182),
972aec89f78SBastian Köcher 	{ }
973aec89f78SBastian Köcher };
974aec89f78SBastian Köcher 
975aec89f78SBastian Köcher static struct clk_rcg2 tsif_ref_clk_src = {
976aec89f78SBastian Köcher 	.cmd_rcgr = 0x0d90,
977aec89f78SBastian Köcher 	.mnd_width = 8,
978aec89f78SBastian Köcher 	.hid_width = 5,
979aec89f78SBastian Köcher 	.freq_tbl = ftbl_tsif_ref_clk_src,
980aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
981aec89f78SBastian Köcher 	{
982aec89f78SBastian Köcher 		.name = "tsif_ref_clk_src",
983aec89f78SBastian Köcher 		.parent_names = (const char *[]) { "xo" },
984aec89f78SBastian Köcher 		.num_parents = 1,
985aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
986aec89f78SBastian Köcher 	},
987aec89f78SBastian Köcher };
988aec89f78SBastian Köcher 
989aec89f78SBastian Köcher static struct freq_tbl ftbl_usb30_mock_utmi_clk_src[] = {
990aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
991aec89f78SBastian Köcher 	F(60000000, P_GPLL0, 10, 0, 0),
992aec89f78SBastian Köcher 	{ }
993aec89f78SBastian Köcher };
994aec89f78SBastian Köcher 
995aec89f78SBastian Köcher static struct clk_rcg2 usb30_mock_utmi_clk_src = {
996aec89f78SBastian Köcher 	.cmd_rcgr = 0x03e8,
997aec89f78SBastian Köcher 	.hid_width = 5,
998aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
999aec89f78SBastian Köcher 	.freq_tbl = ftbl_usb30_mock_utmi_clk_src,
1000aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
1001aec89f78SBastian Köcher 	{
1002aec89f78SBastian Köcher 		.name = "usb30_mock_utmi_clk_src",
1003aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
1004aec89f78SBastian Köcher 		.num_parents = 2,
1005aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
1006aec89f78SBastian Köcher 	},
1007aec89f78SBastian Köcher };
1008aec89f78SBastian Köcher 
1009aec89f78SBastian Köcher static struct freq_tbl ftbl_usb3_phy_aux_clk_src[] = {
1010aec89f78SBastian Köcher 	F(1200000, P_XO, 16, 0, 0),
1011aec89f78SBastian Köcher 	{ }
1012aec89f78SBastian Köcher };
1013aec89f78SBastian Köcher 
1014aec89f78SBastian Köcher static struct clk_rcg2 usb3_phy_aux_clk_src = {
1015aec89f78SBastian Köcher 	.cmd_rcgr = 0x1414,
1016aec89f78SBastian Köcher 	.hid_width = 5,
1017aec89f78SBastian Köcher 	.freq_tbl = ftbl_usb3_phy_aux_clk_src,
1018aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
1019aec89f78SBastian Köcher 	{
1020aec89f78SBastian Köcher 		.name = "usb3_phy_aux_clk_src",
1021aec89f78SBastian Köcher 		.parent_names = (const char *[]) { "xo" },
1022aec89f78SBastian Köcher 		.num_parents = 1,
1023aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
1024aec89f78SBastian Köcher 	},
1025aec89f78SBastian Köcher };
1026aec89f78SBastian Köcher 
1027aec89f78SBastian Köcher static struct freq_tbl ftbl_usb_hs_system_clk_src[] = {
1028aec89f78SBastian Köcher 	F(75000000, P_GPLL0, 8, 0, 0),
1029aec89f78SBastian Köcher 	{ }
1030aec89f78SBastian Köcher };
1031aec89f78SBastian Köcher 
1032aec89f78SBastian Köcher static struct clk_rcg2 usb_hs_system_clk_src = {
1033aec89f78SBastian Köcher 	.cmd_rcgr = 0x0490,
1034aec89f78SBastian Köcher 	.hid_width = 5,
1035aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
1036aec89f78SBastian Köcher 	.freq_tbl = ftbl_usb_hs_system_clk_src,
1037aec89f78SBastian Köcher 	.clkr.hw.init = &(struct clk_init_data)
1038aec89f78SBastian Köcher 	{
1039aec89f78SBastian Köcher 		.name = "usb_hs_system_clk_src",
1040aec89f78SBastian Köcher 		.parent_names = gcc_xo_gpll0,
1041aec89f78SBastian Köcher 		.num_parents = 2,
1042aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
1043aec89f78SBastian Köcher 	},
1044aec89f78SBastian Köcher };
1045aec89f78SBastian Köcher 
1046aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_ahb_clk = {
1047aec89f78SBastian Köcher 	.halt_reg = 0x05c4,
1048aec89f78SBastian Köcher 	.halt_check = BRANCH_HALT_VOTED,
1049aec89f78SBastian Köcher 	.clkr = {
1050aec89f78SBastian Köcher 		.enable_reg = 0x1484,
1051aec89f78SBastian Köcher 		.enable_mask = BIT(17),
1052aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1053aec89f78SBastian Köcher 		{
1054aec89f78SBastian Köcher 			.name = "gcc_blsp1_ahb_clk",
1055aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1056aec89f78SBastian Köcher 		},
1057aec89f78SBastian Köcher 	},
1058aec89f78SBastian Köcher };
1059aec89f78SBastian Köcher 
1060aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = {
1061aec89f78SBastian Köcher 	.halt_reg = 0x0648,
1062aec89f78SBastian Köcher 	.clkr = {
1063aec89f78SBastian Köcher 		.enable_reg = 0x0648,
1064aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1065aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1066aec89f78SBastian Köcher 		{
1067aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup1_i2c_apps_clk",
1068aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1069aec89f78SBastian Köcher 				"blsp1_qup1_i2c_apps_clk_src",
1070aec89f78SBastian Köcher 			},
1071aec89f78SBastian Köcher 			.num_parents = 1,
1072aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1073aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1074aec89f78SBastian Köcher 		},
1075aec89f78SBastian Köcher 	},
1076aec89f78SBastian Köcher };
1077aec89f78SBastian Köcher 
1078aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = {
1079aec89f78SBastian Köcher 	.halt_reg = 0x0644,
1080aec89f78SBastian Köcher 	.clkr = {
1081aec89f78SBastian Köcher 		.enable_reg = 0x0644,
1082aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1083aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1084aec89f78SBastian Köcher 		{
1085aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup1_spi_apps_clk",
1086aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1087aec89f78SBastian Köcher 				"blsp1_qup1_spi_apps_clk_src",
1088aec89f78SBastian Köcher 			},
1089aec89f78SBastian Köcher 			.num_parents = 1,
1090aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1091aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1092aec89f78SBastian Köcher 		},
1093aec89f78SBastian Köcher 	},
1094aec89f78SBastian Köcher };
1095aec89f78SBastian Köcher 
1096aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = {
1097aec89f78SBastian Köcher 	.halt_reg = 0x06c8,
1098aec89f78SBastian Köcher 	.clkr = {
1099aec89f78SBastian Köcher 		.enable_reg = 0x06c8,
1100aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1101aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1102aec89f78SBastian Köcher 		{
1103aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup2_i2c_apps_clk",
1104aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1105aec89f78SBastian Köcher 				"blsp1_qup2_i2c_apps_clk_src",
1106aec89f78SBastian Köcher 			},
1107aec89f78SBastian Köcher 			.num_parents = 1,
1108aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1109aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1110aec89f78SBastian Köcher 		},
1111aec89f78SBastian Köcher 	},
1112aec89f78SBastian Köcher };
1113aec89f78SBastian Köcher 
1114aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = {
1115aec89f78SBastian Köcher 	.halt_reg = 0x06c4,
1116aec89f78SBastian Köcher 	.clkr = {
1117aec89f78SBastian Köcher 		.enable_reg = 0x06c4,
1118aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1119aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1120aec89f78SBastian Köcher 		{
1121aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup2_spi_apps_clk",
1122aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1123aec89f78SBastian Köcher 				"blsp1_qup2_spi_apps_clk_src",
1124aec89f78SBastian Köcher 			},
1125aec89f78SBastian Köcher 			.num_parents = 1,
1126aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1127aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1128aec89f78SBastian Köcher 		},
1129aec89f78SBastian Köcher 	},
1130aec89f78SBastian Köcher };
1131aec89f78SBastian Köcher 
1132aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = {
1133aec89f78SBastian Köcher 	.halt_reg = 0x0748,
1134aec89f78SBastian Köcher 	.clkr = {
1135aec89f78SBastian Köcher 		.enable_reg = 0x0748,
1136aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1137aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1138aec89f78SBastian Köcher 		{
1139aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup3_i2c_apps_clk",
1140aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1141aec89f78SBastian Köcher 				"blsp1_qup3_i2c_apps_clk_src",
1142aec89f78SBastian Köcher 			},
1143aec89f78SBastian Köcher 			.num_parents = 1,
1144aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1145aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1146aec89f78SBastian Köcher 		},
1147aec89f78SBastian Köcher 	},
1148aec89f78SBastian Köcher };
1149aec89f78SBastian Köcher 
1150aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = {
1151aec89f78SBastian Köcher 	.halt_reg = 0x0744,
1152aec89f78SBastian Köcher 	.clkr = {
1153aec89f78SBastian Köcher 		.enable_reg = 0x0744,
1154aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1155aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1156aec89f78SBastian Köcher 		{
1157aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup3_spi_apps_clk",
1158aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1159aec89f78SBastian Köcher 				"blsp1_qup3_spi_apps_clk_src",
1160aec89f78SBastian Köcher 			},
1161aec89f78SBastian Köcher 			.num_parents = 1,
1162aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1163aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1164aec89f78SBastian Köcher 		},
1165aec89f78SBastian Köcher 	},
1166aec89f78SBastian Köcher };
1167aec89f78SBastian Köcher 
1168aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = {
1169aec89f78SBastian Köcher 	.halt_reg = 0x07c8,
1170aec89f78SBastian Köcher 	.clkr = {
1171aec89f78SBastian Köcher 		.enable_reg = 0x07c8,
1172aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1173aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1174aec89f78SBastian Köcher 		{
1175aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup4_i2c_apps_clk",
1176aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1177aec89f78SBastian Köcher 				"blsp1_qup4_i2c_apps_clk_src",
1178aec89f78SBastian Köcher 			},
1179aec89f78SBastian Köcher 			.num_parents = 1,
1180aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1181aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1182aec89f78SBastian Köcher 		},
1183aec89f78SBastian Köcher 	},
1184aec89f78SBastian Köcher };
1185aec89f78SBastian Köcher 
1186aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = {
1187aec89f78SBastian Köcher 	.halt_reg = 0x07c4,
1188aec89f78SBastian Köcher 	.clkr = {
1189aec89f78SBastian Köcher 		.enable_reg = 0x07c4,
1190aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1191aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1192aec89f78SBastian Köcher 		{
1193aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup4_spi_apps_clk",
1194aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1195aec89f78SBastian Köcher 				"blsp1_qup4_spi_apps_clk_src",
1196aec89f78SBastian Köcher 			},
1197aec89f78SBastian Köcher 			.num_parents = 1,
1198aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1199aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1200aec89f78SBastian Köcher 		},
1201aec89f78SBastian Köcher 	},
1202aec89f78SBastian Köcher };
1203aec89f78SBastian Köcher 
1204aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = {
1205aec89f78SBastian Köcher 	.halt_reg = 0x0848,
1206aec89f78SBastian Köcher 	.clkr = {
1207aec89f78SBastian Köcher 		.enable_reg = 0x0848,
1208aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1209aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1210aec89f78SBastian Köcher 		{
1211aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup5_i2c_apps_clk",
1212aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1213aec89f78SBastian Köcher 				"blsp1_qup5_i2c_apps_clk_src",
1214aec89f78SBastian Köcher 			},
1215aec89f78SBastian Köcher 			.num_parents = 1,
1216aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1217aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1218aec89f78SBastian Köcher 		},
1219aec89f78SBastian Köcher 	},
1220aec89f78SBastian Köcher };
1221aec89f78SBastian Köcher 
1222aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = {
1223aec89f78SBastian Köcher 	.halt_reg = 0x0844,
1224aec89f78SBastian Köcher 	.clkr = {
1225aec89f78SBastian Köcher 		.enable_reg = 0x0844,
1226aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1227aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1228aec89f78SBastian Köcher 		{
1229aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup5_spi_apps_clk",
1230aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1231aec89f78SBastian Köcher 				"blsp1_qup5_spi_apps_clk_src",
1232aec89f78SBastian Köcher 			},
1233aec89f78SBastian Köcher 			.num_parents = 1,
1234aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1235aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1236aec89f78SBastian Köcher 		},
1237aec89f78SBastian Köcher 	},
1238aec89f78SBastian Köcher };
1239aec89f78SBastian Köcher 
1240aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup6_i2c_apps_clk = {
1241aec89f78SBastian Köcher 	.halt_reg = 0x08c8,
1242aec89f78SBastian Köcher 	.clkr = {
1243aec89f78SBastian Köcher 		.enable_reg = 0x08c8,
1244aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1245aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1246aec89f78SBastian Köcher 		{
1247aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup6_i2c_apps_clk",
1248aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1249aec89f78SBastian Köcher 				"blsp1_qup6_i2c_apps_clk_src",
1250aec89f78SBastian Köcher 			},
1251aec89f78SBastian Köcher 			.num_parents = 1,
1252aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1253aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1254aec89f78SBastian Köcher 		},
1255aec89f78SBastian Köcher 	},
1256aec89f78SBastian Köcher };
1257aec89f78SBastian Köcher 
1258aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = {
1259aec89f78SBastian Köcher 	.halt_reg = 0x08c4,
1260aec89f78SBastian Köcher 	.clkr = {
1261aec89f78SBastian Köcher 		.enable_reg = 0x08c4,
1262aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1263aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1264aec89f78SBastian Köcher 		{
1265aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup6_spi_apps_clk",
1266aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1267aec89f78SBastian Köcher 				"blsp1_qup6_spi_apps_clk_src",
1268aec89f78SBastian Köcher 			},
1269aec89f78SBastian Köcher 			.num_parents = 1,
1270aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1271aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1272aec89f78SBastian Köcher 		},
1273aec89f78SBastian Köcher 	},
1274aec89f78SBastian Köcher };
1275aec89f78SBastian Köcher 
1276aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart1_apps_clk = {
1277aec89f78SBastian Köcher 	.halt_reg = 0x0684,
1278aec89f78SBastian Köcher 	.clkr = {
1279aec89f78SBastian Köcher 		.enable_reg = 0x0684,
1280aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1281aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1282aec89f78SBastian Köcher 		{
1283aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart1_apps_clk",
1284aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1285aec89f78SBastian Köcher 				"blsp1_uart1_apps_clk_src",
1286aec89f78SBastian Köcher 			},
1287aec89f78SBastian Köcher 			.num_parents = 1,
1288aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1289aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1290aec89f78SBastian Köcher 		},
1291aec89f78SBastian Köcher 	},
1292aec89f78SBastian Köcher };
1293aec89f78SBastian Köcher 
1294aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart2_apps_clk = {
1295aec89f78SBastian Köcher 	.halt_reg = 0x0704,
1296aec89f78SBastian Köcher 	.clkr = {
1297aec89f78SBastian Köcher 		.enable_reg = 0x0704,
1298aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1299aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1300aec89f78SBastian Köcher 		{
1301aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart2_apps_clk",
1302aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1303aec89f78SBastian Köcher 				"blsp1_uart2_apps_clk_src",
1304aec89f78SBastian Köcher 			},
1305aec89f78SBastian Köcher 			.num_parents = 1,
1306aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1307aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1308aec89f78SBastian Köcher 		},
1309aec89f78SBastian Köcher 	},
1310aec89f78SBastian Köcher };
1311aec89f78SBastian Köcher 
1312aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart3_apps_clk = {
1313aec89f78SBastian Köcher 	.halt_reg = 0x0784,
1314aec89f78SBastian Köcher 	.clkr = {
1315aec89f78SBastian Köcher 		.enable_reg = 0x0784,
1316aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1317aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1318aec89f78SBastian Köcher 		{
1319aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart3_apps_clk",
1320aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1321aec89f78SBastian Köcher 				"blsp1_uart3_apps_clk_src",
1322aec89f78SBastian Köcher 			},
1323aec89f78SBastian Köcher 			.num_parents = 1,
1324aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1325aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1326aec89f78SBastian Köcher 		},
1327aec89f78SBastian Köcher 	},
1328aec89f78SBastian Köcher };
1329aec89f78SBastian Köcher 
1330aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart4_apps_clk = {
1331aec89f78SBastian Köcher 	.halt_reg = 0x0804,
1332aec89f78SBastian Köcher 	.clkr = {
1333aec89f78SBastian Köcher 		.enable_reg = 0x0804,
1334aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1335aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1336aec89f78SBastian Köcher 		{
1337aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart4_apps_clk",
1338aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1339aec89f78SBastian Köcher 				"blsp1_uart4_apps_clk_src",
1340aec89f78SBastian Köcher 			},
1341aec89f78SBastian Köcher 			.num_parents = 1,
1342aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1343aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1344aec89f78SBastian Köcher 		},
1345aec89f78SBastian Köcher 	},
1346aec89f78SBastian Köcher };
1347aec89f78SBastian Köcher 
1348aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart5_apps_clk = {
1349aec89f78SBastian Köcher 	.halt_reg = 0x0884,
1350aec89f78SBastian Köcher 	.clkr = {
1351aec89f78SBastian Köcher 		.enable_reg = 0x0884,
1352aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1353aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1354aec89f78SBastian Köcher 		{
1355aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart5_apps_clk",
1356aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1357aec89f78SBastian Köcher 				"blsp1_uart5_apps_clk_src",
1358aec89f78SBastian Köcher 			},
1359aec89f78SBastian Köcher 			.num_parents = 1,
1360aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1361aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1362aec89f78SBastian Köcher 		},
1363aec89f78SBastian Köcher 	},
1364aec89f78SBastian Köcher };
1365aec89f78SBastian Köcher 
1366aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart6_apps_clk = {
1367aec89f78SBastian Köcher 	.halt_reg = 0x0904,
1368aec89f78SBastian Köcher 	.clkr = {
1369aec89f78SBastian Köcher 		.enable_reg = 0x0904,
1370aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1371aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1372aec89f78SBastian Köcher 		{
1373aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart6_apps_clk",
1374aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1375aec89f78SBastian Köcher 				"blsp1_uart6_apps_clk_src",
1376aec89f78SBastian Köcher 			},
1377aec89f78SBastian Köcher 			.num_parents = 1,
1378aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1379aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1380aec89f78SBastian Köcher 		},
1381aec89f78SBastian Köcher 	},
1382aec89f78SBastian Köcher };
1383aec89f78SBastian Köcher 
1384aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_ahb_clk = {
1385aec89f78SBastian Köcher 	.halt_reg = 0x0944,
1386aec89f78SBastian Köcher 	.halt_check = BRANCH_HALT_VOTED,
1387aec89f78SBastian Köcher 	.clkr = {
1388aec89f78SBastian Köcher 		.enable_reg = 0x1484,
1389aec89f78SBastian Köcher 		.enable_mask = BIT(15),
1390aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1391aec89f78SBastian Köcher 		{
1392aec89f78SBastian Köcher 			.name = "gcc_blsp2_ahb_clk",
1393aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1394aec89f78SBastian Köcher 		},
1395aec89f78SBastian Köcher 	},
1396aec89f78SBastian Köcher };
1397aec89f78SBastian Köcher 
1398aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup1_i2c_apps_clk = {
1399aec89f78SBastian Köcher 	.halt_reg = 0x0988,
1400aec89f78SBastian Köcher 	.clkr = {
1401aec89f78SBastian Köcher 		.enable_reg = 0x0988,
1402aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1403aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1404aec89f78SBastian Köcher 		{
1405aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup1_i2c_apps_clk",
1406aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1407aec89f78SBastian Köcher 				"blsp2_qup1_i2c_apps_clk_src",
1408aec89f78SBastian Köcher 			},
1409aec89f78SBastian Köcher 			.num_parents = 1,
1410aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1411aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1412aec89f78SBastian Köcher 		},
1413aec89f78SBastian Köcher 	},
1414aec89f78SBastian Köcher };
1415aec89f78SBastian Köcher 
1416aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup1_spi_apps_clk = {
1417aec89f78SBastian Köcher 	.halt_reg = 0x0984,
1418aec89f78SBastian Köcher 	.clkr = {
1419aec89f78SBastian Köcher 		.enable_reg = 0x0984,
1420aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1421aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1422aec89f78SBastian Köcher 		{
1423aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup1_spi_apps_clk",
1424aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1425aec89f78SBastian Köcher 				"blsp2_qup1_spi_apps_clk_src",
1426aec89f78SBastian Köcher 			},
1427aec89f78SBastian Köcher 			.num_parents = 1,
1428aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1429aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1430aec89f78SBastian Köcher 		},
1431aec89f78SBastian Köcher 	},
1432aec89f78SBastian Köcher };
1433aec89f78SBastian Köcher 
1434aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup2_i2c_apps_clk = {
1435aec89f78SBastian Köcher 	.halt_reg = 0x0a08,
1436aec89f78SBastian Köcher 	.clkr = {
1437aec89f78SBastian Köcher 		.enable_reg = 0x0a08,
1438aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1439aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1440aec89f78SBastian Köcher 		{
1441aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup2_i2c_apps_clk",
1442aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1443aec89f78SBastian Köcher 				"blsp2_qup2_i2c_apps_clk_src",
1444aec89f78SBastian Köcher 			},
1445aec89f78SBastian Köcher 			.num_parents = 1,
1446aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1447aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1448aec89f78SBastian Köcher 		},
1449aec89f78SBastian Köcher 	},
1450aec89f78SBastian Köcher };
1451aec89f78SBastian Köcher 
1452aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup2_spi_apps_clk = {
1453aec89f78SBastian Köcher 	.halt_reg = 0x0a04,
1454aec89f78SBastian Köcher 	.clkr = {
1455aec89f78SBastian Köcher 		.enable_reg = 0x0a04,
1456aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1457aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1458aec89f78SBastian Köcher 		{
1459aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup2_spi_apps_clk",
1460aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1461aec89f78SBastian Köcher 				"blsp2_qup2_spi_apps_clk_src",
1462aec89f78SBastian Köcher 			},
1463aec89f78SBastian Köcher 			.num_parents = 1,
1464aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1465aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1466aec89f78SBastian Köcher 		},
1467aec89f78SBastian Köcher 	},
1468aec89f78SBastian Köcher };
1469aec89f78SBastian Köcher 
1470aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup3_i2c_apps_clk = {
1471aec89f78SBastian Köcher 	.halt_reg = 0x0a88,
1472aec89f78SBastian Köcher 	.clkr = {
1473aec89f78SBastian Köcher 		.enable_reg = 0x0a88,
1474aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1475aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1476aec89f78SBastian Köcher 		{
1477aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup3_i2c_apps_clk",
1478aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1479aec89f78SBastian Köcher 				"blsp2_qup3_i2c_apps_clk_src",
1480aec89f78SBastian Köcher 			},
1481aec89f78SBastian Köcher 			.num_parents = 1,
1482aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1483aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1484aec89f78SBastian Köcher 		},
1485aec89f78SBastian Köcher 	},
1486aec89f78SBastian Köcher };
1487aec89f78SBastian Köcher 
1488aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup3_spi_apps_clk = {
1489aec89f78SBastian Köcher 	.halt_reg = 0x0a84,
1490aec89f78SBastian Köcher 	.clkr = {
1491aec89f78SBastian Köcher 		.enable_reg = 0x0a84,
1492aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1493aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1494aec89f78SBastian Köcher 		{
1495aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup3_spi_apps_clk",
1496aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1497aec89f78SBastian Köcher 				"blsp2_qup3_spi_apps_clk_src",
1498aec89f78SBastian Köcher 			},
1499aec89f78SBastian Köcher 			.num_parents = 1,
1500aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1501aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1502aec89f78SBastian Köcher 		},
1503aec89f78SBastian Köcher 	},
1504aec89f78SBastian Köcher };
1505aec89f78SBastian Köcher 
1506aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup4_i2c_apps_clk = {
1507aec89f78SBastian Köcher 	.halt_reg = 0x0b08,
1508aec89f78SBastian Köcher 	.clkr = {
1509aec89f78SBastian Köcher 		.enable_reg = 0x0b08,
1510aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1511aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1512aec89f78SBastian Köcher 		{
1513aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup4_i2c_apps_clk",
1514aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1515aec89f78SBastian Köcher 				"blsp2_qup4_i2c_apps_clk_src",
1516aec89f78SBastian Köcher 			},
1517aec89f78SBastian Köcher 			.num_parents = 1,
1518aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1519aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1520aec89f78SBastian Köcher 		},
1521aec89f78SBastian Köcher 	},
1522aec89f78SBastian Köcher };
1523aec89f78SBastian Köcher 
1524aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup4_spi_apps_clk = {
1525aec89f78SBastian Köcher 	.halt_reg = 0x0b04,
1526aec89f78SBastian Köcher 	.clkr = {
1527aec89f78SBastian Köcher 		.enable_reg = 0x0b04,
1528aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1529aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1530aec89f78SBastian Köcher 		{
1531aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup4_spi_apps_clk",
1532aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1533aec89f78SBastian Köcher 				"blsp2_qup4_spi_apps_clk_src",
1534aec89f78SBastian Köcher 			},
1535aec89f78SBastian Köcher 			.num_parents = 1,
1536aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1537aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1538aec89f78SBastian Köcher 		},
1539aec89f78SBastian Köcher 	},
1540aec89f78SBastian Köcher };
1541aec89f78SBastian Köcher 
1542aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup5_i2c_apps_clk = {
1543aec89f78SBastian Köcher 	.halt_reg = 0x0b88,
1544aec89f78SBastian Köcher 	.clkr = {
1545aec89f78SBastian Köcher 		.enable_reg = 0x0b88,
1546aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1547aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1548aec89f78SBastian Köcher 		{
1549aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup5_i2c_apps_clk",
1550aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1551aec89f78SBastian Köcher 				"blsp2_qup5_i2c_apps_clk_src",
1552aec89f78SBastian Köcher 			},
1553aec89f78SBastian Köcher 			.num_parents = 1,
1554aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1555aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1556aec89f78SBastian Köcher 		},
1557aec89f78SBastian Köcher 	},
1558aec89f78SBastian Köcher };
1559aec89f78SBastian Köcher 
1560aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup5_spi_apps_clk = {
1561aec89f78SBastian Köcher 	.halt_reg = 0x0b84,
1562aec89f78SBastian Köcher 	.clkr = {
1563aec89f78SBastian Köcher 		.enable_reg = 0x0b84,
1564aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1565aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1566aec89f78SBastian Köcher 		{
1567aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup5_spi_apps_clk",
1568aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1569aec89f78SBastian Köcher 				"blsp2_qup5_spi_apps_clk_src",
1570aec89f78SBastian Köcher 			},
1571aec89f78SBastian Köcher 			.num_parents = 1,
1572aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1573aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1574aec89f78SBastian Köcher 		},
1575aec89f78SBastian Köcher 	},
1576aec89f78SBastian Köcher };
1577aec89f78SBastian Köcher 
1578aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup6_i2c_apps_clk = {
1579aec89f78SBastian Köcher 	.halt_reg = 0x0c08,
1580aec89f78SBastian Köcher 	.clkr = {
1581aec89f78SBastian Köcher 		.enable_reg = 0x0c08,
1582aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1583aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1584aec89f78SBastian Köcher 		{
1585aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup6_i2c_apps_clk",
1586aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1587aec89f78SBastian Köcher 				"blsp2_qup6_i2c_apps_clk_src",
1588aec89f78SBastian Köcher 			},
1589aec89f78SBastian Köcher 			.num_parents = 1,
1590aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1591aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1592aec89f78SBastian Köcher 		},
1593aec89f78SBastian Köcher 	},
1594aec89f78SBastian Köcher };
1595aec89f78SBastian Köcher 
1596aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup6_spi_apps_clk = {
1597aec89f78SBastian Köcher 	.halt_reg = 0x0c04,
1598aec89f78SBastian Köcher 	.clkr = {
1599aec89f78SBastian Köcher 		.enable_reg = 0x0c04,
1600aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1601aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1602aec89f78SBastian Köcher 		{
1603aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup6_spi_apps_clk",
1604aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1605aec89f78SBastian Köcher 				"blsp2_qup6_spi_apps_clk_src",
1606aec89f78SBastian Köcher 			},
1607aec89f78SBastian Köcher 			.num_parents = 1,
1608aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1609aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1610aec89f78SBastian Köcher 		},
1611aec89f78SBastian Köcher 	},
1612aec89f78SBastian Köcher };
1613aec89f78SBastian Köcher 
1614aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart1_apps_clk = {
1615aec89f78SBastian Köcher 	.halt_reg = 0x09c4,
1616aec89f78SBastian Köcher 	.clkr = {
1617aec89f78SBastian Köcher 		.enable_reg = 0x09c4,
1618aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1619aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1620aec89f78SBastian Köcher 		{
1621aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart1_apps_clk",
1622aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1623aec89f78SBastian Köcher 				"blsp2_uart1_apps_clk_src",
1624aec89f78SBastian Köcher 			},
1625aec89f78SBastian Köcher 			.num_parents = 1,
1626aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1627aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1628aec89f78SBastian Köcher 		},
1629aec89f78SBastian Köcher 	},
1630aec89f78SBastian Köcher };
1631aec89f78SBastian Köcher 
1632aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart2_apps_clk = {
1633aec89f78SBastian Köcher 	.halt_reg = 0x0a44,
1634aec89f78SBastian Köcher 	.clkr = {
1635aec89f78SBastian Köcher 		.enable_reg = 0x0a44,
1636aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1637aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1638aec89f78SBastian Köcher 		{
1639aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart2_apps_clk",
1640aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1641aec89f78SBastian Köcher 				"blsp2_uart2_apps_clk_src",
1642aec89f78SBastian Köcher 			},
1643aec89f78SBastian Köcher 			.num_parents = 1,
1644aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1645aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1646aec89f78SBastian Köcher 		},
1647aec89f78SBastian Köcher 	},
1648aec89f78SBastian Köcher };
1649aec89f78SBastian Köcher 
1650aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart3_apps_clk = {
1651aec89f78SBastian Köcher 	.halt_reg = 0x0ac4,
1652aec89f78SBastian Köcher 	.clkr = {
1653aec89f78SBastian Köcher 		.enable_reg = 0x0ac4,
1654aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1655aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1656aec89f78SBastian Köcher 		{
1657aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart3_apps_clk",
1658aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1659aec89f78SBastian Köcher 				"blsp2_uart3_apps_clk_src",
1660aec89f78SBastian Köcher 			},
1661aec89f78SBastian Köcher 			.num_parents = 1,
1662aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1663aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1664aec89f78SBastian Köcher 		},
1665aec89f78SBastian Köcher 	},
1666aec89f78SBastian Köcher };
1667aec89f78SBastian Köcher 
1668aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart4_apps_clk = {
1669aec89f78SBastian Köcher 	.halt_reg = 0x0b44,
1670aec89f78SBastian Köcher 	.clkr = {
1671aec89f78SBastian Köcher 		.enable_reg = 0x0b44,
1672aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1673aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1674aec89f78SBastian Köcher 		{
1675aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart4_apps_clk",
1676aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1677aec89f78SBastian Köcher 				"blsp2_uart4_apps_clk_src",
1678aec89f78SBastian Köcher 			},
1679aec89f78SBastian Köcher 			.num_parents = 1,
1680aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1681aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1682aec89f78SBastian Köcher 		},
1683aec89f78SBastian Köcher 	},
1684aec89f78SBastian Köcher };
1685aec89f78SBastian Köcher 
1686aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart5_apps_clk = {
1687aec89f78SBastian Köcher 	.halt_reg = 0x0bc4,
1688aec89f78SBastian Köcher 	.clkr = {
1689aec89f78SBastian Köcher 		.enable_reg = 0x0bc4,
1690aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1691aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1692aec89f78SBastian Köcher 		{
1693aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart5_apps_clk",
1694aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1695aec89f78SBastian Köcher 				"blsp2_uart5_apps_clk_src",
1696aec89f78SBastian Köcher 			},
1697aec89f78SBastian Köcher 			.num_parents = 1,
1698aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1699aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1700aec89f78SBastian Köcher 		},
1701aec89f78SBastian Köcher 	},
1702aec89f78SBastian Köcher };
1703aec89f78SBastian Köcher 
1704aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart6_apps_clk = {
1705aec89f78SBastian Köcher 	.halt_reg = 0x0c44,
1706aec89f78SBastian Köcher 	.clkr = {
1707aec89f78SBastian Köcher 		.enable_reg = 0x0c44,
1708aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1709aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1710aec89f78SBastian Köcher 		{
1711aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart6_apps_clk",
1712aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1713aec89f78SBastian Köcher 				"blsp2_uart6_apps_clk_src",
1714aec89f78SBastian Köcher 			},
1715aec89f78SBastian Köcher 			.num_parents = 1,
1716aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1717aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1718aec89f78SBastian Köcher 		},
1719aec89f78SBastian Köcher 	},
1720aec89f78SBastian Köcher };
1721aec89f78SBastian Köcher 
1722aec89f78SBastian Köcher static struct clk_branch gcc_gp1_clk = {
1723aec89f78SBastian Köcher 	.halt_reg = 0x1900,
1724aec89f78SBastian Köcher 	.clkr = {
1725aec89f78SBastian Köcher 		.enable_reg = 0x1900,
1726aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1727aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1728aec89f78SBastian Köcher 		{
1729aec89f78SBastian Köcher 			.name = "gcc_gp1_clk",
1730aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1731aec89f78SBastian Köcher 				"gp1_clk_src",
1732aec89f78SBastian Köcher 			},
1733aec89f78SBastian Köcher 			.num_parents = 1,
1734aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1735aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1736aec89f78SBastian Köcher 		},
1737aec89f78SBastian Köcher 	},
1738aec89f78SBastian Köcher };
1739aec89f78SBastian Köcher 
1740aec89f78SBastian Köcher static struct clk_branch gcc_gp2_clk = {
1741aec89f78SBastian Köcher 	.halt_reg = 0x1940,
1742aec89f78SBastian Köcher 	.clkr = {
1743aec89f78SBastian Köcher 		.enable_reg = 0x1940,
1744aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1745aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1746aec89f78SBastian Köcher 		{
1747aec89f78SBastian Köcher 			.name = "gcc_gp2_clk",
1748aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1749aec89f78SBastian Köcher 				"gp2_clk_src",
1750aec89f78SBastian Köcher 			},
1751aec89f78SBastian Köcher 			.num_parents = 1,
1752aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1753aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1754aec89f78SBastian Köcher 		},
1755aec89f78SBastian Köcher 	},
1756aec89f78SBastian Köcher };
1757aec89f78SBastian Köcher 
1758aec89f78SBastian Köcher static struct clk_branch gcc_gp3_clk = {
1759aec89f78SBastian Köcher 	.halt_reg = 0x1980,
1760aec89f78SBastian Köcher 	.clkr = {
1761aec89f78SBastian Köcher 		.enable_reg = 0x1980,
1762aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1763aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1764aec89f78SBastian Köcher 		{
1765aec89f78SBastian Köcher 			.name = "gcc_gp3_clk",
1766aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1767aec89f78SBastian Köcher 				"gp3_clk_src",
1768aec89f78SBastian Köcher 			},
1769aec89f78SBastian Köcher 			.num_parents = 1,
1770aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1771aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1772aec89f78SBastian Köcher 		},
1773aec89f78SBastian Köcher 	},
1774aec89f78SBastian Köcher };
1775aec89f78SBastian Köcher 
1776*8c18b41bSKonrad Dybcio static struct clk_branch gcc_lpass_q6_axi_clk = {
1777*8c18b41bSKonrad Dybcio 	.halt_reg = 0x0280,
1778*8c18b41bSKonrad Dybcio 	.clkr = {
1779*8c18b41bSKonrad Dybcio 		.enable_reg = 0x0280,
1780*8c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
1781*8c18b41bSKonrad Dybcio 		.hw.init = &(struct clk_init_data)
1782*8c18b41bSKonrad Dybcio 		{
1783*8c18b41bSKonrad Dybcio 			.name = "gcc_lpass_q6_axi_clk",
1784*8c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
1785*8c18b41bSKonrad Dybcio 		},
1786*8c18b41bSKonrad Dybcio 	},
1787*8c18b41bSKonrad Dybcio };
1788*8c18b41bSKonrad Dybcio 
1789*8c18b41bSKonrad Dybcio static struct clk_branch gcc_mss_q6_bimc_axi_clk = {
1790*8c18b41bSKonrad Dybcio 	.halt_reg = 0x0284,
1791*8c18b41bSKonrad Dybcio 	.clkr = {
1792*8c18b41bSKonrad Dybcio 		.enable_reg = 0x0284,
1793*8c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
1794*8c18b41bSKonrad Dybcio 		.hw.init = &(struct clk_init_data)
1795*8c18b41bSKonrad Dybcio 		{
1796*8c18b41bSKonrad Dybcio 			.name = "gcc_mss_q6_bimc_axi_clk",
1797*8c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
1798*8c18b41bSKonrad Dybcio 		},
1799*8c18b41bSKonrad Dybcio 	},
1800*8c18b41bSKonrad Dybcio };
1801*8c18b41bSKonrad Dybcio 
1802aec89f78SBastian Köcher static struct clk_branch gcc_pcie_0_aux_clk = {
1803aec89f78SBastian Köcher 	.halt_reg = 0x1ad4,
1804aec89f78SBastian Köcher 	.clkr = {
1805aec89f78SBastian Köcher 		.enable_reg = 0x1ad4,
1806aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1807aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1808aec89f78SBastian Köcher 		{
1809aec89f78SBastian Köcher 			.name = "gcc_pcie_0_aux_clk",
1810aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1811aec89f78SBastian Köcher 				"pcie_0_aux_clk_src",
1812aec89f78SBastian Köcher 			},
1813aec89f78SBastian Köcher 			.num_parents = 1,
1814aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1815aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1816aec89f78SBastian Köcher 		},
1817aec89f78SBastian Köcher 	},
1818aec89f78SBastian Köcher };
1819aec89f78SBastian Köcher 
1820*8c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_cfg_ahb_clk = {
1821*8c18b41bSKonrad Dybcio 	.halt_reg = 0x1ad0,
1822*8c18b41bSKonrad Dybcio 	.clkr = {
1823*8c18b41bSKonrad Dybcio 		.enable_reg = 0x1ad0,
1824*8c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
1825*8c18b41bSKonrad Dybcio 		.hw.init = &(struct clk_init_data)
1826*8c18b41bSKonrad Dybcio 		{
1827*8c18b41bSKonrad Dybcio 			.name = "gcc_pcie_0_cfg_ahb_clk",
1828*8c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
1829*8c18b41bSKonrad Dybcio 		},
1830*8c18b41bSKonrad Dybcio 	},
1831*8c18b41bSKonrad Dybcio };
1832*8c18b41bSKonrad Dybcio 
1833*8c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_mstr_axi_clk = {
1834*8c18b41bSKonrad Dybcio 	.halt_reg = 0x1acc,
1835*8c18b41bSKonrad Dybcio 	.clkr = {
1836*8c18b41bSKonrad Dybcio 		.enable_reg = 0x1acc,
1837*8c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
1838*8c18b41bSKonrad Dybcio 		.hw.init = &(struct clk_init_data)
1839*8c18b41bSKonrad Dybcio 		{
1840*8c18b41bSKonrad Dybcio 			.name = "gcc_pcie_0_mstr_axi_clk",
1841*8c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
1842*8c18b41bSKonrad Dybcio 		},
1843*8c18b41bSKonrad Dybcio 	},
1844*8c18b41bSKonrad Dybcio };
1845*8c18b41bSKonrad Dybcio 
1846aec89f78SBastian Köcher static struct clk_branch gcc_pcie_0_pipe_clk = {
1847aec89f78SBastian Köcher 	.halt_reg = 0x1ad8,
1848aec89f78SBastian Köcher 	.halt_check = BRANCH_HALT_DELAY,
1849aec89f78SBastian Köcher 	.clkr = {
1850aec89f78SBastian Köcher 		.enable_reg = 0x1ad8,
1851aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1852aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1853aec89f78SBastian Köcher 		{
1854aec89f78SBastian Köcher 			.name = "gcc_pcie_0_pipe_clk",
1855aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1856aec89f78SBastian Köcher 				"pcie_0_pipe_clk_src",
1857aec89f78SBastian Köcher 			},
1858aec89f78SBastian Köcher 			.num_parents = 1,
1859aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1860aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1861aec89f78SBastian Köcher 		},
1862aec89f78SBastian Köcher 	},
1863aec89f78SBastian Köcher };
1864aec89f78SBastian Köcher 
1865*8c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_slv_axi_clk = {
1866*8c18b41bSKonrad Dybcio 	.halt_reg = 0x1ac8,
1867*8c18b41bSKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
1868*8c18b41bSKonrad Dybcio 	.clkr = {
1869*8c18b41bSKonrad Dybcio 		.enable_reg = 0x1ac8,
1870*8c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
1871*8c18b41bSKonrad Dybcio 		.hw.init = &(struct clk_init_data)
1872*8c18b41bSKonrad Dybcio 		{
1873*8c18b41bSKonrad Dybcio 			.name = "gcc_pcie_0_slv_axi_clk",
1874*8c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
1875*8c18b41bSKonrad Dybcio 		},
1876*8c18b41bSKonrad Dybcio 	},
1877*8c18b41bSKonrad Dybcio };
1878*8c18b41bSKonrad Dybcio 
1879aec89f78SBastian Köcher static struct clk_branch gcc_pcie_1_aux_clk = {
1880aec89f78SBastian Köcher 	.halt_reg = 0x1b54,
1881aec89f78SBastian Köcher 	.clkr = {
1882aec89f78SBastian Köcher 		.enable_reg = 0x1b54,
1883aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1884aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1885aec89f78SBastian Köcher 		{
1886aec89f78SBastian Köcher 			.name = "gcc_pcie_1_aux_clk",
1887aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1888aec89f78SBastian Köcher 				"pcie_1_aux_clk_src",
1889aec89f78SBastian Köcher 			},
1890aec89f78SBastian Köcher 			.num_parents = 1,
1891aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1892aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1893aec89f78SBastian Köcher 		},
1894aec89f78SBastian Köcher 	},
1895aec89f78SBastian Köcher };
1896aec89f78SBastian Köcher 
1897*8c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_cfg_ahb_clk = {
1898*8c18b41bSKonrad Dybcio 	.halt_reg = 0x1b54,
1899*8c18b41bSKonrad Dybcio 	.clkr = {
1900*8c18b41bSKonrad Dybcio 		.enable_reg = 0x1b54,
1901*8c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
1902*8c18b41bSKonrad Dybcio 		.hw.init = &(struct clk_init_data)
1903*8c18b41bSKonrad Dybcio 		{
1904*8c18b41bSKonrad Dybcio 			.name = "gcc_pcie_1_cfg_ahb_clk",
1905*8c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
1906*8c18b41bSKonrad Dybcio 		},
1907*8c18b41bSKonrad Dybcio 	},
1908*8c18b41bSKonrad Dybcio };
1909*8c18b41bSKonrad Dybcio 
1910*8c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_mstr_axi_clk = {
1911*8c18b41bSKonrad Dybcio 	.halt_reg = 0x1b50,
1912*8c18b41bSKonrad Dybcio 	.clkr = {
1913*8c18b41bSKonrad Dybcio 		.enable_reg = 0x1b50,
1914*8c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
1915*8c18b41bSKonrad Dybcio 		.hw.init = &(struct clk_init_data)
1916*8c18b41bSKonrad Dybcio 		{
1917*8c18b41bSKonrad Dybcio 			.name = "gcc_pcie_1_mstr_axi_clk",
1918*8c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
1919*8c18b41bSKonrad Dybcio 		},
1920*8c18b41bSKonrad Dybcio 	},
1921*8c18b41bSKonrad Dybcio };
1922*8c18b41bSKonrad Dybcio 
1923aec89f78SBastian Köcher static struct clk_branch gcc_pcie_1_pipe_clk = {
1924aec89f78SBastian Köcher 	.halt_reg = 0x1b58,
1925aec89f78SBastian Köcher 	.halt_check = BRANCH_HALT_DELAY,
1926aec89f78SBastian Köcher 	.clkr = {
1927aec89f78SBastian Köcher 		.enable_reg = 0x1b58,
1928aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1929aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1930aec89f78SBastian Köcher 		{
1931aec89f78SBastian Köcher 			.name = "gcc_pcie_1_pipe_clk",
1932aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1933aec89f78SBastian Köcher 				"pcie_1_pipe_clk_src",
1934aec89f78SBastian Köcher 			},
1935aec89f78SBastian Köcher 			.num_parents = 1,
1936aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1937aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1938aec89f78SBastian Köcher 		},
1939aec89f78SBastian Köcher 	},
1940aec89f78SBastian Köcher };
1941aec89f78SBastian Köcher 
1942*8c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_slv_axi_clk = {
1943*8c18b41bSKonrad Dybcio 	.halt_reg = 0x1b48,
1944*8c18b41bSKonrad Dybcio 	.clkr = {
1945*8c18b41bSKonrad Dybcio 		.enable_reg = 0x1b48,
1946*8c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
1947*8c18b41bSKonrad Dybcio 		.hw.init = &(struct clk_init_data)
1948*8c18b41bSKonrad Dybcio 		{
1949*8c18b41bSKonrad Dybcio 			.name = "gcc_pcie_1_slv_axi_clk",
1950*8c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
1951*8c18b41bSKonrad Dybcio 		},
1952*8c18b41bSKonrad Dybcio 	},
1953*8c18b41bSKonrad Dybcio };
1954*8c18b41bSKonrad Dybcio 
1955aec89f78SBastian Köcher static struct clk_branch gcc_pdm2_clk = {
1956aec89f78SBastian Köcher 	.halt_reg = 0x0ccc,
1957aec89f78SBastian Köcher 	.clkr = {
1958aec89f78SBastian Köcher 		.enable_reg = 0x0ccc,
1959aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1960aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1961aec89f78SBastian Köcher 		{
1962aec89f78SBastian Köcher 			.name = "gcc_pdm2_clk",
1963aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1964aec89f78SBastian Köcher 				"pdm2_clk_src",
1965aec89f78SBastian Köcher 			},
1966aec89f78SBastian Köcher 			.num_parents = 1,
1967aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1968aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1969aec89f78SBastian Köcher 		},
1970aec89f78SBastian Köcher 	},
1971aec89f78SBastian Köcher };
1972aec89f78SBastian Köcher 
1973*8c18b41bSKonrad Dybcio static struct clk_branch gcc_pdm_ahb_clk = {
1974*8c18b41bSKonrad Dybcio 	.halt_reg = 0x0cc4,
1975*8c18b41bSKonrad Dybcio 	.clkr = {
1976*8c18b41bSKonrad Dybcio 		.enable_reg = 0x0cc4,
1977*8c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
1978*8c18b41bSKonrad Dybcio 		.hw.init = &(struct clk_init_data)
1979*8c18b41bSKonrad Dybcio 		{
1980*8c18b41bSKonrad Dybcio 			.name = "gcc_pdm_ahb_clk",
1981*8c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
1982*8c18b41bSKonrad Dybcio 		},
1983*8c18b41bSKonrad Dybcio 	},
1984*8c18b41bSKonrad Dybcio };
1985*8c18b41bSKonrad Dybcio 
1986aec89f78SBastian Köcher static struct clk_branch gcc_sdcc1_apps_clk = {
1987aec89f78SBastian Köcher 	.halt_reg = 0x04c4,
1988aec89f78SBastian Köcher 	.clkr = {
1989aec89f78SBastian Köcher 		.enable_reg = 0x04c4,
1990aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1991aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
1992aec89f78SBastian Köcher 		{
1993aec89f78SBastian Köcher 			.name = "gcc_sdcc1_apps_clk",
1994aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
1995aec89f78SBastian Köcher 				"sdcc1_apps_clk_src",
1996aec89f78SBastian Köcher 			},
1997aec89f78SBastian Köcher 			.num_parents = 1,
1998aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1999aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2000aec89f78SBastian Köcher 		},
2001aec89f78SBastian Köcher 	},
2002aec89f78SBastian Köcher };
2003aec89f78SBastian Köcher 
2004eaff16bcSJeremy McNicoll static struct clk_branch gcc_sdcc1_ahb_clk = {
2005eaff16bcSJeremy McNicoll 	.halt_reg = 0x04c8,
2006eaff16bcSJeremy McNicoll 	.clkr = {
2007eaff16bcSJeremy McNicoll 		.enable_reg = 0x04c8,
2008eaff16bcSJeremy McNicoll 		.enable_mask = BIT(0),
2009eaff16bcSJeremy McNicoll 		.hw.init = &(struct clk_init_data)
2010eaff16bcSJeremy McNicoll 		{
2011eaff16bcSJeremy McNicoll 			.name = "gcc_sdcc1_ahb_clk",
2012eaff16bcSJeremy McNicoll 			.parent_names = (const char *[]){
2013eaff16bcSJeremy McNicoll 				"periph_noc_clk_src",
2014eaff16bcSJeremy McNicoll 			},
2015eaff16bcSJeremy McNicoll 			.num_parents = 1,
2016eaff16bcSJeremy McNicoll 			.ops = &clk_branch2_ops,
2017eaff16bcSJeremy McNicoll 		},
2018eaff16bcSJeremy McNicoll 	},
2019eaff16bcSJeremy McNicoll };
2020eaff16bcSJeremy McNicoll 
2021*8c18b41bSKonrad Dybcio static struct clk_branch gcc_sdcc2_ahb_clk = {
2022*8c18b41bSKonrad Dybcio 	.halt_reg = 0x0508,
2023*8c18b41bSKonrad Dybcio 	.clkr = {
2024*8c18b41bSKonrad Dybcio 		.enable_reg = 0x0508,
2025*8c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
2026*8c18b41bSKonrad Dybcio 		.hw.init = &(struct clk_init_data)
2027*8c18b41bSKonrad Dybcio 		{
2028*8c18b41bSKonrad Dybcio 			.name = "gcc_sdcc2_ahb_clk",
2029*8c18b41bSKonrad Dybcio 			.parent_names = (const char *[]){
2030*8c18b41bSKonrad Dybcio 				"periph_noc_clk_src",
2031*8c18b41bSKonrad Dybcio 			},
2032*8c18b41bSKonrad Dybcio 			.num_parents = 1,
2033*8c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
2034*8c18b41bSKonrad Dybcio 		},
2035*8c18b41bSKonrad Dybcio 	},
2036*8c18b41bSKonrad Dybcio };
2037*8c18b41bSKonrad Dybcio 
2038aec89f78SBastian Köcher static struct clk_branch gcc_sdcc2_apps_clk = {
2039aec89f78SBastian Köcher 	.halt_reg = 0x0504,
2040aec89f78SBastian Köcher 	.clkr = {
2041aec89f78SBastian Köcher 		.enable_reg = 0x0504,
2042aec89f78SBastian Köcher 		.enable_mask = BIT(0),
2043aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
2044aec89f78SBastian Köcher 		{
2045aec89f78SBastian Köcher 			.name = "gcc_sdcc2_apps_clk",
2046aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
2047aec89f78SBastian Köcher 				"sdcc2_apps_clk_src",
2048aec89f78SBastian Köcher 			},
2049aec89f78SBastian Köcher 			.num_parents = 1,
2050aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2051aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2052aec89f78SBastian Köcher 		},
2053aec89f78SBastian Köcher 	},
2054aec89f78SBastian Köcher };
2055aec89f78SBastian Köcher 
2056*8c18b41bSKonrad Dybcio static struct clk_branch gcc_sdcc3_ahb_clk = {
2057*8c18b41bSKonrad Dybcio 	.halt_reg = 0x0548,
2058*8c18b41bSKonrad Dybcio 	.clkr = {
2059*8c18b41bSKonrad Dybcio 		.enable_reg = 0x0548,
2060*8c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
2061*8c18b41bSKonrad Dybcio 		.hw.init = &(struct clk_init_data)
2062*8c18b41bSKonrad Dybcio 		{
2063*8c18b41bSKonrad Dybcio 			.name = "gcc_sdcc3_ahb_clk",
2064*8c18b41bSKonrad Dybcio 			.parent_names = (const char *[]){
2065*8c18b41bSKonrad Dybcio 				"periph_noc_clk_src",
2066*8c18b41bSKonrad Dybcio 			},
2067*8c18b41bSKonrad Dybcio 			.num_parents = 1,
2068*8c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
2069*8c18b41bSKonrad Dybcio 		},
2070*8c18b41bSKonrad Dybcio 	},
2071*8c18b41bSKonrad Dybcio };
2072*8c18b41bSKonrad Dybcio 
2073aec89f78SBastian Köcher static struct clk_branch gcc_sdcc3_apps_clk = {
2074aec89f78SBastian Köcher 	.halt_reg = 0x0544,
2075aec89f78SBastian Köcher 	.clkr = {
2076aec89f78SBastian Köcher 		.enable_reg = 0x0544,
2077aec89f78SBastian Köcher 		.enable_mask = BIT(0),
2078aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
2079aec89f78SBastian Köcher 		{
2080aec89f78SBastian Köcher 			.name = "gcc_sdcc3_apps_clk",
2081aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
2082aec89f78SBastian Köcher 				"sdcc3_apps_clk_src",
2083aec89f78SBastian Köcher 			},
2084aec89f78SBastian Köcher 			.num_parents = 1,
2085aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2086aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2087aec89f78SBastian Köcher 		},
2088aec89f78SBastian Köcher 	},
2089aec89f78SBastian Köcher };
2090aec89f78SBastian Köcher 
2091*8c18b41bSKonrad Dybcio static struct clk_branch gcc_sdcc4_ahb_clk = {
2092*8c18b41bSKonrad Dybcio 	.halt_reg = 0x0588,
2093*8c18b41bSKonrad Dybcio 	.clkr = {
2094*8c18b41bSKonrad Dybcio 		.enable_reg = 0x0588,
2095*8c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
2096*8c18b41bSKonrad Dybcio 		.hw.init = &(struct clk_init_data)
2097*8c18b41bSKonrad Dybcio 		{
2098*8c18b41bSKonrad Dybcio 			.name = "gcc_sdcc4_ahb_clk",
2099*8c18b41bSKonrad Dybcio 			.parent_names = (const char *[]){
2100*8c18b41bSKonrad Dybcio 				"periph_noc_clk_src",
2101*8c18b41bSKonrad Dybcio 			},
2102*8c18b41bSKonrad Dybcio 			.num_parents = 1,
2103*8c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
2104*8c18b41bSKonrad Dybcio 		},
2105*8c18b41bSKonrad Dybcio 	},
2106*8c18b41bSKonrad Dybcio };
2107*8c18b41bSKonrad Dybcio 
2108aec89f78SBastian Köcher static struct clk_branch gcc_sdcc4_apps_clk = {
2109aec89f78SBastian Köcher 	.halt_reg = 0x0584,
2110aec89f78SBastian Köcher 	.clkr = {
2111aec89f78SBastian Köcher 		.enable_reg = 0x0584,
2112aec89f78SBastian Köcher 		.enable_mask = BIT(0),
2113aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
2114aec89f78SBastian Köcher 		{
2115aec89f78SBastian Köcher 			.name = "gcc_sdcc4_apps_clk",
2116aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
2117aec89f78SBastian Köcher 				"sdcc4_apps_clk_src",
2118aec89f78SBastian Köcher 			},
2119aec89f78SBastian Köcher 			.num_parents = 1,
2120aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2121aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2122aec89f78SBastian Köcher 		},
2123aec89f78SBastian Köcher 	},
2124aec89f78SBastian Köcher };
2125aec89f78SBastian Köcher 
2126aec89f78SBastian Köcher static struct clk_branch gcc_sys_noc_ufs_axi_clk = {
2127aec89f78SBastian Köcher 	.halt_reg = 0x1d7c,
2128aec89f78SBastian Köcher 	.clkr = {
2129aec89f78SBastian Köcher 		.enable_reg = 0x1d7c,
2130aec89f78SBastian Köcher 		.enable_mask = BIT(0),
2131aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
2132aec89f78SBastian Köcher 		{
2133aec89f78SBastian Köcher 			.name = "gcc_sys_noc_ufs_axi_clk",
2134aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
2135aec89f78SBastian Köcher 				"ufs_axi_clk_src",
2136aec89f78SBastian Köcher 			},
2137aec89f78SBastian Köcher 			.num_parents = 1,
2138aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2139aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2140aec89f78SBastian Köcher 		},
2141aec89f78SBastian Köcher 	},
2142aec89f78SBastian Köcher };
2143aec89f78SBastian Köcher 
2144aec89f78SBastian Köcher static struct clk_branch gcc_sys_noc_usb3_axi_clk = {
2145aec89f78SBastian Köcher 	.halt_reg = 0x03fc,
2146aec89f78SBastian Köcher 	.clkr = {
2147aec89f78SBastian Köcher 		.enable_reg = 0x03fc,
2148aec89f78SBastian Köcher 		.enable_mask = BIT(0),
2149aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
2150aec89f78SBastian Köcher 		{
2151aec89f78SBastian Köcher 			.name = "gcc_sys_noc_usb3_axi_clk",
2152aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
2153aec89f78SBastian Köcher 				"usb30_master_clk_src",
2154aec89f78SBastian Köcher 			},
2155aec89f78SBastian Köcher 			.num_parents = 1,
2156aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2157aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2158aec89f78SBastian Köcher 		},
2159aec89f78SBastian Köcher 	},
2160aec89f78SBastian Köcher };
2161aec89f78SBastian Köcher 
2162*8c18b41bSKonrad Dybcio static struct clk_branch gcc_tsif_ahb_clk = {
2163*8c18b41bSKonrad Dybcio 	.halt_reg = 0x0d84,
2164*8c18b41bSKonrad Dybcio 	.clkr = {
2165*8c18b41bSKonrad Dybcio 		.enable_reg = 0x0d84,
2166*8c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
2167*8c18b41bSKonrad Dybcio 		.hw.init = &(struct clk_init_data)
2168*8c18b41bSKonrad Dybcio 		{
2169*8c18b41bSKonrad Dybcio 			.name = "gcc_tsif_ahb_clk",
2170*8c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
2171*8c18b41bSKonrad Dybcio 		},
2172*8c18b41bSKonrad Dybcio 	},
2173*8c18b41bSKonrad Dybcio };
2174*8c18b41bSKonrad Dybcio 
2175aec89f78SBastian Köcher static struct clk_branch gcc_tsif_ref_clk = {
2176aec89f78SBastian Köcher 	.halt_reg = 0x0d88,
2177aec89f78SBastian Köcher 	.clkr = {
2178aec89f78SBastian Köcher 		.enable_reg = 0x0d88,
2179aec89f78SBastian Köcher 		.enable_mask = BIT(0),
2180aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
2181aec89f78SBastian Köcher 		{
2182aec89f78SBastian Köcher 			.name = "gcc_tsif_ref_clk",
2183aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
2184aec89f78SBastian Köcher 				"tsif_ref_clk_src",
2185aec89f78SBastian Köcher 			},
2186aec89f78SBastian Köcher 			.num_parents = 1,
2187aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2188aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2189aec89f78SBastian Köcher 		},
2190aec89f78SBastian Köcher 	},
2191aec89f78SBastian Köcher };
2192aec89f78SBastian Köcher 
2193*8c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_ahb_clk = {
2194*8c18b41bSKonrad Dybcio 	.halt_reg = 0x1d4c,
2195*8c18b41bSKonrad Dybcio 	.clkr = {
2196*8c18b41bSKonrad Dybcio 		.enable_reg = 0x1d4c,
2197*8c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
2198*8c18b41bSKonrad Dybcio 		.hw.init = &(struct clk_init_data)
2199*8c18b41bSKonrad Dybcio 		{
2200*8c18b41bSKonrad Dybcio 			.name = "gcc_ufs_ahb_clk",
2201*8c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
2202*8c18b41bSKonrad Dybcio 		},
2203*8c18b41bSKonrad Dybcio 	},
2204*8c18b41bSKonrad Dybcio };
2205*8c18b41bSKonrad Dybcio 
2206aec89f78SBastian Köcher static struct clk_branch gcc_ufs_axi_clk = {
2207aec89f78SBastian Köcher 	.halt_reg = 0x1d48,
2208aec89f78SBastian Köcher 	.clkr = {
2209aec89f78SBastian Köcher 		.enable_reg = 0x1d48,
2210aec89f78SBastian Köcher 		.enable_mask = BIT(0),
2211aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
2212aec89f78SBastian Köcher 		{
2213aec89f78SBastian Köcher 			.name = "gcc_ufs_axi_clk",
2214aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
2215aec89f78SBastian Köcher 				"ufs_axi_clk_src",
2216aec89f78SBastian Köcher 			},
2217aec89f78SBastian Köcher 			.num_parents = 1,
2218aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2219aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2220aec89f78SBastian Köcher 		},
2221aec89f78SBastian Köcher 	},
2222aec89f78SBastian Köcher };
2223aec89f78SBastian Köcher 
2224aec89f78SBastian Köcher static struct clk_branch gcc_ufs_rx_cfg_clk = {
2225aec89f78SBastian Köcher 	.halt_reg = 0x1d54,
2226aec89f78SBastian Köcher 	.clkr = {
2227aec89f78SBastian Köcher 		.enable_reg = 0x1d54,
2228aec89f78SBastian Köcher 		.enable_mask = BIT(0),
2229aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
2230aec89f78SBastian Köcher 		{
2231aec89f78SBastian Köcher 			.name = "gcc_ufs_rx_cfg_clk",
2232aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
2233aec89f78SBastian Köcher 				"ufs_axi_clk_src",
2234aec89f78SBastian Köcher 			},
2235aec89f78SBastian Köcher 			.num_parents = 1,
2236aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2237aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2238aec89f78SBastian Köcher 		},
2239aec89f78SBastian Köcher 	},
2240aec89f78SBastian Köcher };
2241aec89f78SBastian Köcher 
2242*8c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_rx_symbol_0_clk = {
2243*8c18b41bSKonrad Dybcio 	.halt_reg = 0x1d60,
2244*8c18b41bSKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
2245*8c18b41bSKonrad Dybcio 	.clkr = {
2246*8c18b41bSKonrad Dybcio 		.enable_reg = 0x1d60,
2247*8c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
2248*8c18b41bSKonrad Dybcio 		.hw.init = &(struct clk_init_data)
2249*8c18b41bSKonrad Dybcio 		{
2250*8c18b41bSKonrad Dybcio 			.name = "gcc_ufs_rx_symbol_0_clk",
2251*8c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
2252*8c18b41bSKonrad Dybcio 		},
2253*8c18b41bSKonrad Dybcio 	},
2254*8c18b41bSKonrad Dybcio };
2255*8c18b41bSKonrad Dybcio 
2256*8c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_rx_symbol_1_clk = {
2257*8c18b41bSKonrad Dybcio 	.halt_reg = 0x1d64,
2258*8c18b41bSKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
2259*8c18b41bSKonrad Dybcio 	.clkr = {
2260*8c18b41bSKonrad Dybcio 		.enable_reg = 0x1d64,
2261*8c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
2262*8c18b41bSKonrad Dybcio 		.hw.init = &(struct clk_init_data)
2263*8c18b41bSKonrad Dybcio 		{
2264*8c18b41bSKonrad Dybcio 			.name = "gcc_ufs_rx_symbol_1_clk",
2265*8c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
2266*8c18b41bSKonrad Dybcio 		},
2267*8c18b41bSKonrad Dybcio 	},
2268*8c18b41bSKonrad Dybcio };
2269*8c18b41bSKonrad Dybcio 
2270aec89f78SBastian Köcher static struct clk_branch gcc_ufs_tx_cfg_clk = {
2271aec89f78SBastian Köcher 	.halt_reg = 0x1d50,
2272aec89f78SBastian Köcher 	.clkr = {
2273aec89f78SBastian Köcher 		.enable_reg = 0x1d50,
2274aec89f78SBastian Köcher 		.enable_mask = BIT(0),
2275aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
2276aec89f78SBastian Köcher 		{
2277aec89f78SBastian Köcher 			.name = "gcc_ufs_tx_cfg_clk",
2278aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
2279aec89f78SBastian Köcher 				"ufs_axi_clk_src",
2280aec89f78SBastian Köcher 			},
2281aec89f78SBastian Köcher 			.num_parents = 1,
2282aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2283aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2284aec89f78SBastian Köcher 		},
2285aec89f78SBastian Köcher 	},
2286aec89f78SBastian Köcher };
2287aec89f78SBastian Köcher 
2288*8c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_tx_symbol_0_clk = {
2289*8c18b41bSKonrad Dybcio 	.halt_reg = 0x1d58,
2290*8c18b41bSKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
2291*8c18b41bSKonrad Dybcio 	.clkr = {
2292*8c18b41bSKonrad Dybcio 		.enable_reg = 0x1d58,
2293*8c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
2294*8c18b41bSKonrad Dybcio 		.hw.init = &(struct clk_init_data)
2295*8c18b41bSKonrad Dybcio 		{
2296*8c18b41bSKonrad Dybcio 			.name = "gcc_ufs_tx_symbol_0_clk",
2297*8c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
2298*8c18b41bSKonrad Dybcio 		},
2299*8c18b41bSKonrad Dybcio 	},
2300*8c18b41bSKonrad Dybcio };
2301*8c18b41bSKonrad Dybcio 
2302*8c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_tx_symbol_1_clk = {
2303*8c18b41bSKonrad Dybcio 	.halt_reg = 0x1d5c,
2304*8c18b41bSKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
2305*8c18b41bSKonrad Dybcio 	.clkr = {
2306*8c18b41bSKonrad Dybcio 		.enable_reg = 0x1d5c,
2307*8c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
2308*8c18b41bSKonrad Dybcio 		.hw.init = &(struct clk_init_data)
2309*8c18b41bSKonrad Dybcio 		{
2310*8c18b41bSKonrad Dybcio 			.name = "gcc_ufs_tx_symbol_1_clk",
2311*8c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
2312*8c18b41bSKonrad Dybcio 		},
2313*8c18b41bSKonrad Dybcio 	},
2314*8c18b41bSKonrad Dybcio };
2315*8c18b41bSKonrad Dybcio 
2316*8c18b41bSKonrad Dybcio static struct clk_branch gcc_usb2_hs_phy_sleep_clk = {
2317*8c18b41bSKonrad Dybcio 	.halt_reg = 0x04ac,
2318*8c18b41bSKonrad Dybcio 	.clkr = {
2319*8c18b41bSKonrad Dybcio 		.enable_reg = 0x04ac,
2320*8c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
2321*8c18b41bSKonrad Dybcio 		.hw.init = &(struct clk_init_data)
2322*8c18b41bSKonrad Dybcio 		{
2323*8c18b41bSKonrad Dybcio 			.name = "gcc_usb2_hs_phy_sleep_clk",
2324*8c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
2325*8c18b41bSKonrad Dybcio 		},
2326*8c18b41bSKonrad Dybcio 	},
2327*8c18b41bSKonrad Dybcio };
2328*8c18b41bSKonrad Dybcio 
2329aec89f78SBastian Köcher static struct clk_branch gcc_usb30_master_clk = {
2330aec89f78SBastian Köcher 	.halt_reg = 0x03c8,
2331aec89f78SBastian Köcher 	.clkr = {
2332aec89f78SBastian Köcher 		.enable_reg = 0x03c8,
2333aec89f78SBastian Köcher 		.enable_mask = BIT(0),
2334aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
2335aec89f78SBastian Köcher 		{
2336aec89f78SBastian Köcher 			.name = "gcc_usb30_master_clk",
2337aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
2338aec89f78SBastian Köcher 				"usb30_master_clk_src",
2339aec89f78SBastian Köcher 			},
2340aec89f78SBastian Köcher 			.num_parents = 1,
2341aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2342aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2343aec89f78SBastian Köcher 		},
2344aec89f78SBastian Köcher 	},
2345aec89f78SBastian Köcher };
2346aec89f78SBastian Köcher 
2347aec89f78SBastian Köcher static struct clk_branch gcc_usb30_mock_utmi_clk = {
2348aec89f78SBastian Köcher 	.halt_reg = 0x03d0,
2349aec89f78SBastian Köcher 	.clkr = {
2350aec89f78SBastian Köcher 		.enable_reg = 0x03d0,
2351aec89f78SBastian Köcher 		.enable_mask = BIT(0),
2352aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
2353aec89f78SBastian Köcher 		{
2354aec89f78SBastian Köcher 			.name = "gcc_usb30_mock_utmi_clk",
2355aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
2356aec89f78SBastian Köcher 				"usb30_mock_utmi_clk_src",
2357aec89f78SBastian Köcher 			},
2358aec89f78SBastian Köcher 			.num_parents = 1,
2359aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2360aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2361aec89f78SBastian Köcher 		},
2362aec89f78SBastian Köcher 	},
2363aec89f78SBastian Köcher };
2364aec89f78SBastian Köcher 
2365*8c18b41bSKonrad Dybcio static struct clk_branch gcc_usb30_sleep_clk = {
2366*8c18b41bSKonrad Dybcio 	.halt_reg = 0x03cc,
2367*8c18b41bSKonrad Dybcio 	.clkr = {
2368*8c18b41bSKonrad Dybcio 		.enable_reg = 0x03cc,
2369*8c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
2370*8c18b41bSKonrad Dybcio 		.hw.init = &(struct clk_init_data)
2371*8c18b41bSKonrad Dybcio 		{
2372*8c18b41bSKonrad Dybcio 			.name = "gcc_usb30_sleep_clk",
2373*8c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
2374*8c18b41bSKonrad Dybcio 		},
2375*8c18b41bSKonrad Dybcio 	},
2376*8c18b41bSKonrad Dybcio };
2377*8c18b41bSKonrad Dybcio 
2378aec89f78SBastian Köcher static struct clk_branch gcc_usb3_phy_aux_clk = {
2379aec89f78SBastian Köcher 	.halt_reg = 0x1408,
2380aec89f78SBastian Köcher 	.clkr = {
2381aec89f78SBastian Köcher 		.enable_reg = 0x1408,
2382aec89f78SBastian Köcher 		.enable_mask = BIT(0),
2383aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
2384aec89f78SBastian Köcher 		{
2385aec89f78SBastian Köcher 			.name = "gcc_usb3_phy_aux_clk",
2386aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
2387aec89f78SBastian Köcher 				"usb3_phy_aux_clk_src",
2388aec89f78SBastian Köcher 			},
2389aec89f78SBastian Köcher 			.num_parents = 1,
2390aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2391aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2392aec89f78SBastian Köcher 		},
2393aec89f78SBastian Köcher 	},
2394aec89f78SBastian Köcher };
2395aec89f78SBastian Köcher 
2396*8c18b41bSKonrad Dybcio static struct clk_branch gcc_usb_hs_ahb_clk = {
2397*8c18b41bSKonrad Dybcio 	.halt_reg = 0x0488,
2398*8c18b41bSKonrad Dybcio 	.clkr = {
2399*8c18b41bSKonrad Dybcio 		.enable_reg = 0x0488,
2400*8c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
2401*8c18b41bSKonrad Dybcio 		.hw.init = &(struct clk_init_data)
2402*8c18b41bSKonrad Dybcio 		{
2403*8c18b41bSKonrad Dybcio 			.name = "gcc_usb_hs_ahb_clk",
2404*8c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
2405*8c18b41bSKonrad Dybcio 		},
2406*8c18b41bSKonrad Dybcio 	},
2407*8c18b41bSKonrad Dybcio };
2408*8c18b41bSKonrad Dybcio 
2409aec89f78SBastian Köcher static struct clk_branch gcc_usb_hs_system_clk = {
2410aec89f78SBastian Köcher 	.halt_reg = 0x0484,
2411aec89f78SBastian Köcher 	.clkr = {
2412aec89f78SBastian Köcher 		.enable_reg = 0x0484,
2413aec89f78SBastian Köcher 		.enable_mask = BIT(0),
2414aec89f78SBastian Köcher 		.hw.init = &(struct clk_init_data)
2415aec89f78SBastian Köcher 		{
2416aec89f78SBastian Köcher 			.name = "gcc_usb_hs_system_clk",
2417aec89f78SBastian Köcher 			.parent_names = (const char *[]) {
2418aec89f78SBastian Köcher 				"usb_hs_system_clk_src",
2419aec89f78SBastian Köcher 			},
2420aec89f78SBastian Köcher 			.num_parents = 1,
2421aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2422aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2423aec89f78SBastian Köcher 		},
2424aec89f78SBastian Köcher 	},
2425aec89f78SBastian Köcher };
2426aec89f78SBastian Köcher 
2427*8c18b41bSKonrad Dybcio static struct clk_branch gcc_usb_phy_cfg_ahb2phy_clk = {
2428*8c18b41bSKonrad Dybcio 	.halt_reg = 0x1a84,
2429*8c18b41bSKonrad Dybcio 	.clkr = {
2430*8c18b41bSKonrad Dybcio 		.enable_reg = 0x1a84,
2431*8c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
2432*8c18b41bSKonrad Dybcio 		.hw.init = &(struct clk_init_data)
2433*8c18b41bSKonrad Dybcio 		{
2434*8c18b41bSKonrad Dybcio 			.name = "gcc_usb_phy_cfg_ahb2phy_clk",
2435*8c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
2436*8c18b41bSKonrad Dybcio 		},
2437*8c18b41bSKonrad Dybcio 	},
2438*8c18b41bSKonrad Dybcio };
2439*8c18b41bSKonrad Dybcio 
2440*8c18b41bSKonrad Dybcio static struct gdsc pcie_gdsc = {
2441*8c18b41bSKonrad Dybcio 		.gdscr = 0x1e18,
2442*8c18b41bSKonrad Dybcio 		.pd = {
2443*8c18b41bSKonrad Dybcio 			.name = "pcie",
2444*8c18b41bSKonrad Dybcio 		},
2445*8c18b41bSKonrad Dybcio 		.pwrsts = PWRSTS_OFF_ON,
2446*8c18b41bSKonrad Dybcio };
2447*8c18b41bSKonrad Dybcio 
2448*8c18b41bSKonrad Dybcio static struct gdsc pcie_0_gdsc = {
2449*8c18b41bSKonrad Dybcio 		.gdscr = 0x1ac4,
2450*8c18b41bSKonrad Dybcio 		.pd = {
2451*8c18b41bSKonrad Dybcio 			.name = "pcie_0",
2452*8c18b41bSKonrad Dybcio 		},
2453*8c18b41bSKonrad Dybcio 		.pwrsts = PWRSTS_OFF_ON,
2454*8c18b41bSKonrad Dybcio };
2455*8c18b41bSKonrad Dybcio 
2456*8c18b41bSKonrad Dybcio static struct gdsc pcie_1_gdsc = {
2457*8c18b41bSKonrad Dybcio 		.gdscr = 0x1b44,
2458*8c18b41bSKonrad Dybcio 		.pd = {
2459*8c18b41bSKonrad Dybcio 			.name = "pcie_1",
2460*8c18b41bSKonrad Dybcio 		},
2461*8c18b41bSKonrad Dybcio 		.pwrsts = PWRSTS_OFF_ON,
2462*8c18b41bSKonrad Dybcio };
2463*8c18b41bSKonrad Dybcio 
2464*8c18b41bSKonrad Dybcio static struct gdsc usb30_gdsc = {
2465*8c18b41bSKonrad Dybcio 		.gdscr = 0x3c4,
2466*8c18b41bSKonrad Dybcio 		.pd = {
2467*8c18b41bSKonrad Dybcio 			.name = "usb30",
2468*8c18b41bSKonrad Dybcio 		},
2469*8c18b41bSKonrad Dybcio 		.pwrsts = PWRSTS_OFF_ON,
2470*8c18b41bSKonrad Dybcio };
2471*8c18b41bSKonrad Dybcio 
2472*8c18b41bSKonrad Dybcio static struct gdsc ufs_gdsc = {
2473*8c18b41bSKonrad Dybcio 		.gdscr = 0x1d44,
2474*8c18b41bSKonrad Dybcio 		.pd = {
2475*8c18b41bSKonrad Dybcio 			.name = "ufs",
2476*8c18b41bSKonrad Dybcio 		},
2477*8c18b41bSKonrad Dybcio 		.pwrsts = PWRSTS_OFF_ON,
2478*8c18b41bSKonrad Dybcio };
2479*8c18b41bSKonrad Dybcio 
2480aec89f78SBastian Köcher static struct clk_regmap *gcc_msm8994_clocks[] = {
2481aec89f78SBastian Köcher 	[GPLL0_EARLY] = &gpll0_early.clkr,
2482aec89f78SBastian Köcher 	[GPLL0] = &gpll0.clkr,
2483aec89f78SBastian Köcher 	[GPLL4_EARLY] = &gpll4_early.clkr,
2484aec89f78SBastian Köcher 	[GPLL4] = &gpll4.clkr,
2485aec89f78SBastian Köcher 	[UFS_AXI_CLK_SRC] = &ufs_axi_clk_src.clkr,
2486aec89f78SBastian Köcher 	[USB30_MASTER_CLK_SRC] = &usb30_master_clk_src.clkr,
2487aec89f78SBastian Köcher 	[BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr,
2488aec89f78SBastian Köcher 	[BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr,
2489aec89f78SBastian Köcher 	[BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr,
2490aec89f78SBastian Köcher 	[BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr,
2491aec89f78SBastian Köcher 	[BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr,
2492aec89f78SBastian Köcher 	[BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr,
2493aec89f78SBastian Köcher 	[BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr,
2494aec89f78SBastian Köcher 	[BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr,
2495aec89f78SBastian Köcher 	[BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr,
2496aec89f78SBastian Köcher 	[BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr,
2497aec89f78SBastian Köcher 	[BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr,
2498aec89f78SBastian Köcher 	[BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr,
2499aec89f78SBastian Köcher 	[BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr,
2500aec89f78SBastian Köcher 	[BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr,
2501aec89f78SBastian Köcher 	[BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr,
2502aec89f78SBastian Köcher 	[BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr,
2503aec89f78SBastian Köcher 	[BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr,
2504aec89f78SBastian Köcher 	[BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr,
2505aec89f78SBastian Köcher 	[BLSP2_QUP1_I2C_APPS_CLK_SRC] = &blsp2_qup1_i2c_apps_clk_src.clkr,
2506aec89f78SBastian Köcher 	[BLSP2_QUP1_SPI_APPS_CLK_SRC] = &blsp2_qup1_spi_apps_clk_src.clkr,
2507aec89f78SBastian Köcher 	[BLSP2_QUP2_I2C_APPS_CLK_SRC] = &blsp2_qup2_i2c_apps_clk_src.clkr,
2508aec89f78SBastian Köcher 	[BLSP2_QUP2_SPI_APPS_CLK_SRC] = &blsp2_qup2_spi_apps_clk_src.clkr,
2509aec89f78SBastian Köcher 	[BLSP2_QUP3_I2C_APPS_CLK_SRC] = &blsp2_qup3_i2c_apps_clk_src.clkr,
2510aec89f78SBastian Köcher 	[BLSP2_QUP3_SPI_APPS_CLK_SRC] = &blsp2_qup3_spi_apps_clk_src.clkr,
2511aec89f78SBastian Köcher 	[BLSP2_QUP4_I2C_APPS_CLK_SRC] = &blsp2_qup4_i2c_apps_clk_src.clkr,
2512aec89f78SBastian Köcher 	[BLSP2_QUP4_SPI_APPS_CLK_SRC] = &blsp2_qup4_spi_apps_clk_src.clkr,
2513aec89f78SBastian Köcher 	[BLSP2_QUP5_I2C_APPS_CLK_SRC] = &blsp2_qup5_i2c_apps_clk_src.clkr,
2514aec89f78SBastian Köcher 	[BLSP2_QUP5_SPI_APPS_CLK_SRC] = &blsp2_qup5_spi_apps_clk_src.clkr,
2515aec89f78SBastian Köcher 	[BLSP2_QUP6_I2C_APPS_CLK_SRC] = &blsp2_qup6_i2c_apps_clk_src.clkr,
2516aec89f78SBastian Köcher 	[BLSP2_QUP6_SPI_APPS_CLK_SRC] = &blsp2_qup6_spi_apps_clk_src.clkr,
2517aec89f78SBastian Köcher 	[BLSP2_UART1_APPS_CLK_SRC] = &blsp2_uart1_apps_clk_src.clkr,
2518aec89f78SBastian Köcher 	[BLSP2_UART2_APPS_CLK_SRC] = &blsp2_uart2_apps_clk_src.clkr,
2519aec89f78SBastian Köcher 	[BLSP2_UART3_APPS_CLK_SRC] = &blsp2_uart3_apps_clk_src.clkr,
2520aec89f78SBastian Köcher 	[BLSP2_UART4_APPS_CLK_SRC] = &blsp2_uart4_apps_clk_src.clkr,
2521aec89f78SBastian Köcher 	[BLSP2_UART5_APPS_CLK_SRC] = &blsp2_uart5_apps_clk_src.clkr,
2522aec89f78SBastian Köcher 	[BLSP2_UART6_APPS_CLK_SRC] = &blsp2_uart6_apps_clk_src.clkr,
2523aec89f78SBastian Köcher 	[GP1_CLK_SRC] = &gp1_clk_src.clkr,
2524aec89f78SBastian Köcher 	[GP2_CLK_SRC] = &gp2_clk_src.clkr,
2525aec89f78SBastian Köcher 	[GP3_CLK_SRC] = &gp3_clk_src.clkr,
2526aec89f78SBastian Köcher 	[PCIE_0_AUX_CLK_SRC] = &pcie_0_aux_clk_src.clkr,
2527aec89f78SBastian Köcher 	[PCIE_0_PIPE_CLK_SRC] = &pcie_0_pipe_clk_src.clkr,
2528aec89f78SBastian Köcher 	[PCIE_1_AUX_CLK_SRC] = &pcie_1_aux_clk_src.clkr,
2529aec89f78SBastian Köcher 	[PCIE_1_PIPE_CLK_SRC] = &pcie_1_pipe_clk_src.clkr,
2530aec89f78SBastian Köcher 	[PDM2_CLK_SRC] = &pdm2_clk_src.clkr,
2531aec89f78SBastian Köcher 	[SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr,
2532aec89f78SBastian Köcher 	[SDCC2_APPS_CLK_SRC] = &sdcc2_apps_clk_src.clkr,
2533aec89f78SBastian Köcher 	[SDCC3_APPS_CLK_SRC] = &sdcc3_apps_clk_src.clkr,
2534aec89f78SBastian Köcher 	[SDCC4_APPS_CLK_SRC] = &sdcc4_apps_clk_src.clkr,
2535aec89f78SBastian Köcher 	[TSIF_REF_CLK_SRC] = &tsif_ref_clk_src.clkr,
2536aec89f78SBastian Köcher 	[USB30_MOCK_UTMI_CLK_SRC] = &usb30_mock_utmi_clk_src.clkr,
2537aec89f78SBastian Köcher 	[USB3_PHY_AUX_CLK_SRC] = &usb3_phy_aux_clk_src.clkr,
2538aec89f78SBastian Köcher 	[USB_HS_SYSTEM_CLK_SRC] = &usb_hs_system_clk_src.clkr,
2539aec89f78SBastian Köcher 	[GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr,
2540aec89f78SBastian Köcher 	[GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr,
2541aec89f78SBastian Köcher 	[GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr,
2542aec89f78SBastian Köcher 	[GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr,
2543aec89f78SBastian Köcher 	[GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr,
2544aec89f78SBastian Köcher 	[GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr,
2545aec89f78SBastian Köcher 	[GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr,
2546aec89f78SBastian Köcher 	[GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr,
2547aec89f78SBastian Köcher 	[GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr,
2548aec89f78SBastian Köcher 	[GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr,
2549aec89f78SBastian Köcher 	[GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr,
2550aec89f78SBastian Köcher 	[GCC_BLSP1_QUP6_I2C_APPS_CLK] = &gcc_blsp1_qup6_i2c_apps_clk.clkr,
2551aec89f78SBastian Köcher 	[GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr,
2552aec89f78SBastian Köcher 	[GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr,
2553aec89f78SBastian Köcher 	[GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr,
2554aec89f78SBastian Köcher 	[GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr,
2555aec89f78SBastian Köcher 	[GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr,
2556aec89f78SBastian Köcher 	[GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr,
2557aec89f78SBastian Köcher 	[GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr,
2558aec89f78SBastian Köcher 	[GCC_BLSP2_AHB_CLK] = &gcc_blsp2_ahb_clk.clkr,
2559aec89f78SBastian Köcher 	[GCC_BLSP2_QUP1_I2C_APPS_CLK] = &gcc_blsp2_qup1_i2c_apps_clk.clkr,
2560aec89f78SBastian Köcher 	[GCC_BLSP2_QUP1_SPI_APPS_CLK] = &gcc_blsp2_qup1_spi_apps_clk.clkr,
2561aec89f78SBastian Köcher 	[GCC_BLSP2_QUP2_I2C_APPS_CLK] = &gcc_blsp2_qup2_i2c_apps_clk.clkr,
2562aec89f78SBastian Köcher 	[GCC_BLSP2_QUP2_SPI_APPS_CLK] = &gcc_blsp2_qup2_spi_apps_clk.clkr,
2563aec89f78SBastian Köcher 	[GCC_BLSP2_QUP3_I2C_APPS_CLK] = &gcc_blsp2_qup3_i2c_apps_clk.clkr,
2564aec89f78SBastian Köcher 	[GCC_BLSP2_QUP3_SPI_APPS_CLK] = &gcc_blsp2_qup3_spi_apps_clk.clkr,
2565aec89f78SBastian Köcher 	[GCC_BLSP2_QUP4_I2C_APPS_CLK] = &gcc_blsp2_qup4_i2c_apps_clk.clkr,
2566aec89f78SBastian Köcher 	[GCC_BLSP2_QUP4_SPI_APPS_CLK] = &gcc_blsp2_qup4_spi_apps_clk.clkr,
2567aec89f78SBastian Köcher 	[GCC_BLSP2_QUP5_I2C_APPS_CLK] = &gcc_blsp2_qup5_i2c_apps_clk.clkr,
2568aec89f78SBastian Köcher 	[GCC_BLSP2_QUP5_SPI_APPS_CLK] = &gcc_blsp2_qup5_spi_apps_clk.clkr,
2569aec89f78SBastian Köcher 	[GCC_BLSP2_QUP6_I2C_APPS_CLK] = &gcc_blsp2_qup6_i2c_apps_clk.clkr,
2570aec89f78SBastian Köcher 	[GCC_BLSP2_QUP6_SPI_APPS_CLK] = &gcc_blsp2_qup6_spi_apps_clk.clkr,
2571aec89f78SBastian Köcher 	[GCC_BLSP2_UART1_APPS_CLK] = &gcc_blsp2_uart1_apps_clk.clkr,
2572aec89f78SBastian Köcher 	[GCC_BLSP2_UART2_APPS_CLK] = &gcc_blsp2_uart2_apps_clk.clkr,
2573aec89f78SBastian Köcher 	[GCC_BLSP2_UART3_APPS_CLK] = &gcc_blsp2_uart3_apps_clk.clkr,
2574aec89f78SBastian Köcher 	[GCC_BLSP2_UART4_APPS_CLK] = &gcc_blsp2_uart4_apps_clk.clkr,
2575aec89f78SBastian Köcher 	[GCC_BLSP2_UART5_APPS_CLK] = &gcc_blsp2_uart5_apps_clk.clkr,
2576aec89f78SBastian Köcher 	[GCC_BLSP2_UART6_APPS_CLK] = &gcc_blsp2_uart6_apps_clk.clkr,
2577aec89f78SBastian Köcher 	[GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
2578aec89f78SBastian Köcher 	[GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
2579aec89f78SBastian Köcher 	[GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
2580*8c18b41bSKonrad Dybcio 	[GCC_LPASS_Q6_AXI_CLK] = &gcc_lpass_q6_axi_clk.clkr,
2581*8c18b41bSKonrad Dybcio 	[GCC_MSS_Q6_BIMC_AXI_CLK] = &gcc_mss_q6_bimc_axi_clk.clkr,
2582aec89f78SBastian Köcher 	[GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,
2583*8c18b41bSKonrad Dybcio 	[GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr,
2584*8c18b41bSKonrad Dybcio 	[GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr,
2585aec89f78SBastian Köcher 	[GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,
2586*8c18b41bSKonrad Dybcio 	[GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr,
2587aec89f78SBastian Köcher 	[GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,
2588*8c18b41bSKonrad Dybcio 	[GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr,
2589*8c18b41bSKonrad Dybcio 	[GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr,
2590aec89f78SBastian Köcher 	[GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,
2591*8c18b41bSKonrad Dybcio 	[GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr,
2592aec89f78SBastian Köcher 	[GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
2593*8c18b41bSKonrad Dybcio 	[GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
2594eaff16bcSJeremy McNicoll 	[GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
2595*8c18b41bSKonrad Dybcio 	[GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
2596*8c18b41bSKonrad Dybcio 	[GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
2597*8c18b41bSKonrad Dybcio 	[GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
2598*8c18b41bSKonrad Dybcio 	[GCC_SDCC3_AHB_CLK] = &gcc_sdcc3_ahb_clk.clkr,
2599*8c18b41bSKonrad Dybcio 	[GCC_SDCC3_APPS_CLK] = &gcc_sdcc3_apps_clk.clkr,
2600*8c18b41bSKonrad Dybcio 	[GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr,
2601*8c18b41bSKonrad Dybcio 	[GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr,
2602aec89f78SBastian Köcher 	[GCC_SYS_NOC_UFS_AXI_CLK] = &gcc_sys_noc_ufs_axi_clk.clkr,
2603aec89f78SBastian Köcher 	[GCC_SYS_NOC_USB3_AXI_CLK] = &gcc_sys_noc_usb3_axi_clk.clkr,
2604*8c18b41bSKonrad Dybcio 	[GCC_TSIF_AHB_CLK] = &gcc_tsif_ahb_clk.clkr,
2605aec89f78SBastian Köcher 	[GCC_TSIF_REF_CLK] = &gcc_tsif_ref_clk.clkr,
2606*8c18b41bSKonrad Dybcio 	[GCC_UFS_AHB_CLK] = &gcc_ufs_ahb_clk.clkr,
2607aec89f78SBastian Köcher 	[GCC_UFS_AXI_CLK] = &gcc_ufs_axi_clk.clkr,
2608aec89f78SBastian Köcher 	[GCC_UFS_RX_CFG_CLK] = &gcc_ufs_rx_cfg_clk.clkr,
2609*8c18b41bSKonrad Dybcio 	[GCC_UFS_RX_SYMBOL_0_CLK] = &gcc_ufs_rx_symbol_0_clk.clkr,
2610*8c18b41bSKonrad Dybcio 	[GCC_UFS_RX_SYMBOL_1_CLK] = &gcc_ufs_rx_symbol_1_clk.clkr,
2611aec89f78SBastian Köcher 	[GCC_UFS_TX_CFG_CLK] = &gcc_ufs_tx_cfg_clk.clkr,
2612*8c18b41bSKonrad Dybcio 	[GCC_UFS_TX_SYMBOL_0_CLK] = &gcc_ufs_tx_symbol_0_clk.clkr,
2613*8c18b41bSKonrad Dybcio 	[GCC_UFS_TX_SYMBOL_1_CLK] = &gcc_ufs_tx_symbol_1_clk.clkr,
2614*8c18b41bSKonrad Dybcio 	[GCC_USB2_HS_PHY_SLEEP_CLK] = &gcc_usb2_hs_phy_sleep_clk.clkr,
2615aec89f78SBastian Köcher 	[GCC_USB30_MASTER_CLK] = &gcc_usb30_master_clk.clkr,
2616aec89f78SBastian Köcher 	[GCC_USB30_MOCK_UTMI_CLK] = &gcc_usb30_mock_utmi_clk.clkr,
2617*8c18b41bSKonrad Dybcio 	[GCC_USB30_SLEEP_CLK] = &gcc_usb30_sleep_clk.clkr,
2618aec89f78SBastian Köcher 	[GCC_USB3_PHY_AUX_CLK] = &gcc_usb3_phy_aux_clk.clkr,
2619*8c18b41bSKonrad Dybcio 	[GCC_USB_HS_AHB_CLK] = &gcc_usb_hs_ahb_clk.clkr,
2620aec89f78SBastian Köcher 	[GCC_USB_HS_SYSTEM_CLK] = &gcc_usb_hs_system_clk.clkr,
2621*8c18b41bSKonrad Dybcio 	[GCC_USB_PHY_CFG_AHB2PHY_CLK] = &gcc_usb_phy_cfg_ahb2phy_clk.clkr,
2622*8c18b41bSKonrad Dybcio };
2623*8c18b41bSKonrad Dybcio 
2624*8c18b41bSKonrad Dybcio static struct gdsc *gcc_msm8994_gdscs[] = {
2625*8c18b41bSKonrad Dybcio 	[PCIE_GDSC] = &pcie_gdsc,
2626*8c18b41bSKonrad Dybcio 	[PCIE_0_GDSC] = &pcie_0_gdsc,
2627*8c18b41bSKonrad Dybcio 	[PCIE_1_GDSC] = &pcie_1_gdsc,
2628*8c18b41bSKonrad Dybcio 	[USB30_GDSC] = &usb30_gdsc,
2629*8c18b41bSKonrad Dybcio 	[UFS_GDSC] = &ufs_gdsc,
2630*8c18b41bSKonrad Dybcio };
2631*8c18b41bSKonrad Dybcio 
2632*8c18b41bSKonrad Dybcio static const struct qcom_reset_map gcc_msm8994_resets[] = {
2633*8c18b41bSKonrad Dybcio 	[USB3_PHY_RESET] = { 0x1400 },
2634*8c18b41bSKonrad Dybcio 	[USB3PHY_PHY_RESET] = { 0x1404 },
2635*8c18b41bSKonrad Dybcio 	[PCIE_PHY_0_RESET] = { 0x1b18 },
2636*8c18b41bSKonrad Dybcio 	[PCIE_PHY_1_RESET] = { 0x1b98 },
2637*8c18b41bSKonrad Dybcio 	[QUSB2_PHY_RESET] = { 0x04b8 },
2638aec89f78SBastian Köcher };
2639aec89f78SBastian Köcher 
2640aec89f78SBastian Köcher static const struct regmap_config gcc_msm8994_regmap_config = {
2641aec89f78SBastian Köcher 	.reg_bits	= 32,
2642aec89f78SBastian Köcher 	.reg_stride	= 4,
2643aec89f78SBastian Köcher 	.val_bits	= 32,
2644aec89f78SBastian Köcher 	.max_register	= 0x2000,
2645aec89f78SBastian Köcher 	.fast_io	= true,
2646aec89f78SBastian Köcher };
2647aec89f78SBastian Köcher 
2648aec89f78SBastian Köcher static const struct qcom_cc_desc gcc_msm8994_desc = {
2649aec89f78SBastian Köcher 	.config = &gcc_msm8994_regmap_config,
2650aec89f78SBastian Köcher 	.clks = gcc_msm8994_clocks,
2651aec89f78SBastian Köcher 	.num_clks = ARRAY_SIZE(gcc_msm8994_clocks),
2652*8c18b41bSKonrad Dybcio 	.resets = gcc_msm8994_resets,
2653*8c18b41bSKonrad Dybcio 	.num_resets = ARRAY_SIZE(gcc_msm8994_resets),
2654*8c18b41bSKonrad Dybcio 	.gdscs = gcc_msm8994_gdscs,
2655*8c18b41bSKonrad Dybcio 	.num_gdscs = ARRAY_SIZE(gcc_msm8994_gdscs),
2656aec89f78SBastian Köcher };
2657aec89f78SBastian Köcher 
2658aec89f78SBastian Köcher static const struct of_device_id gcc_msm8994_match_table[] = {
2659aec89f78SBastian Köcher 	{ .compatible = "qcom,gcc-msm8994" },
2660aec89f78SBastian Köcher 	{}
2661aec89f78SBastian Köcher };
2662aec89f78SBastian Köcher MODULE_DEVICE_TABLE(of, gcc_msm8994_match_table);
2663aec89f78SBastian Köcher 
2664aec89f78SBastian Köcher static int gcc_msm8994_probe(struct platform_device *pdev)
2665aec89f78SBastian Köcher {
2666aec89f78SBastian Köcher 	struct device *dev = &pdev->dev;
2667aec89f78SBastian Köcher 	struct clk *clk;
2668aec89f78SBastian Köcher 
2669aec89f78SBastian Köcher 	clk = devm_clk_register(dev, &xo.hw);
2670aec89f78SBastian Köcher 	if (IS_ERR(clk))
2671aec89f78SBastian Köcher 		return PTR_ERR(clk);
2672aec89f78SBastian Köcher 
2673aec89f78SBastian Köcher 	return qcom_cc_probe(pdev, &gcc_msm8994_desc);
2674aec89f78SBastian Köcher }
2675aec89f78SBastian Köcher 
2676aec89f78SBastian Köcher static struct platform_driver gcc_msm8994_driver = {
2677aec89f78SBastian Köcher 	.probe		= gcc_msm8994_probe,
2678aec89f78SBastian Köcher 	.driver		= {
2679aec89f78SBastian Köcher 		.name	= "gcc-msm8994",
2680aec89f78SBastian Köcher 		.of_match_table = gcc_msm8994_match_table,
2681aec89f78SBastian Köcher 	},
2682aec89f78SBastian Köcher };
2683aec89f78SBastian Köcher 
2684aec89f78SBastian Köcher static int __init gcc_msm8994_init(void)
2685aec89f78SBastian Köcher {
2686aec89f78SBastian Köcher 	return platform_driver_register(&gcc_msm8994_driver);
2687aec89f78SBastian Köcher }
2688aec89f78SBastian Köcher core_initcall(gcc_msm8994_init);
2689aec89f78SBastian Köcher 
2690aec89f78SBastian Köcher static void __exit gcc_msm8994_exit(void)
2691aec89f78SBastian Köcher {
2692aec89f78SBastian Köcher 	platform_driver_unregister(&gcc_msm8994_driver);
2693aec89f78SBastian Köcher }
2694aec89f78SBastian Köcher module_exit(gcc_msm8994_exit);
2695aec89f78SBastian Köcher 
2696aec89f78SBastian Köcher MODULE_DESCRIPTION("Qualcomm GCC MSM8994 Driver");
2697aec89f78SBastian Köcher MODULE_LICENSE("GPL v2");
2698aec89f78SBastian Köcher MODULE_ALIAS("platform:gcc-msm8994");
2699