xref: /openbmc/linux/drivers/clk/qcom/gcc-msm8994.c (revision 0519d1d0bf33bcdc7f356a410b2350adc0c812b0)
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"
238c18b41bSKonrad 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 struct clk_alpha_pll gpll0_early = {
32*0519d1d0SKonrad Dybcio 	.offset = 0,
3328d3f06eSAbhishek Sahu 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
34aec89f78SBastian Köcher 	.clkr = {
35aec89f78SBastian Köcher 		.enable_reg = 0x1480,
36aec89f78SBastian Köcher 		.enable_mask = BIT(0),
37*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
38aec89f78SBastian Köcher 			.name = "gpll0_early",
39*0519d1d0SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
40*0519d1d0SKonrad Dybcio 				.fw_name = "xo",
41*0519d1d0SKonrad Dybcio 			},
42aec89f78SBastian Köcher 			.num_parents = 1,
43aec89f78SBastian Köcher 			.ops = &clk_alpha_pll_ops,
44aec89f78SBastian Köcher 		},
45aec89f78SBastian Köcher 	},
46aec89f78SBastian Köcher };
47aec89f78SBastian Köcher 
48aec89f78SBastian Köcher static struct clk_alpha_pll_postdiv gpll0 = {
49*0519d1d0SKonrad Dybcio 	.offset = 0,
5028d3f06eSAbhishek Sahu 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
51*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
52aec89f78SBastian Köcher 		.name = "gpll0",
53aec89f78SBastian Köcher 		.parent_names = (const char *[]) { "gpll0_early" },
54aec89f78SBastian Köcher 		.num_parents = 1,
55aec89f78SBastian Köcher 		.ops = &clk_alpha_pll_postdiv_ops,
56aec89f78SBastian Köcher 	},
57aec89f78SBastian Köcher };
58aec89f78SBastian Köcher 
59aec89f78SBastian Köcher static struct clk_alpha_pll gpll4_early = {
60aec89f78SBastian Köcher 	.offset = 0x1dc0,
6128d3f06eSAbhishek Sahu 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
62aec89f78SBastian Köcher 	.clkr = {
63aec89f78SBastian Köcher 		.enable_reg = 0x1480,
64aec89f78SBastian Köcher 		.enable_mask = BIT(4),
65*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
66aec89f78SBastian Köcher 			.name = "gpll4_early",
67*0519d1d0SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
68*0519d1d0SKonrad Dybcio 				.fw_name = "xo",
69*0519d1d0SKonrad Dybcio 			},
70aec89f78SBastian Köcher 			.num_parents = 1,
71aec89f78SBastian Köcher 			.ops = &clk_alpha_pll_ops,
72aec89f78SBastian Köcher 		},
73aec89f78SBastian Köcher 	},
74aec89f78SBastian Köcher };
75aec89f78SBastian Köcher 
76aec89f78SBastian Köcher static struct clk_alpha_pll_postdiv gpll4 = {
77aec89f78SBastian Köcher 	.offset = 0x1dc0,
7828d3f06eSAbhishek Sahu 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
79*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
80aec89f78SBastian Köcher 		.name = "gpll4",
81aec89f78SBastian Köcher 		.parent_names = (const char *[]) { "gpll4_early" },
82aec89f78SBastian Köcher 		.num_parents = 1,
83aec89f78SBastian Köcher 		.ops = &clk_alpha_pll_postdiv_ops,
84aec89f78SBastian Köcher 	},
85aec89f78SBastian Köcher };
86aec89f78SBastian Köcher 
87*0519d1d0SKonrad Dybcio static const struct parent_map gcc_xo_gpll0_map[] = {
88*0519d1d0SKonrad Dybcio 	{ P_XO, 0 },
89*0519d1d0SKonrad Dybcio 	{ P_GPLL0, 1 },
90*0519d1d0SKonrad Dybcio };
91*0519d1d0SKonrad Dybcio 
92*0519d1d0SKonrad Dybcio static const struct clk_parent_data gcc_xo_gpll0[] = {
93*0519d1d0SKonrad Dybcio 	{ .fw_name = "xo" },
94*0519d1d0SKonrad Dybcio 	{ .hw = &gpll0.clkr.hw },
95*0519d1d0SKonrad Dybcio };
96*0519d1d0SKonrad Dybcio 
97*0519d1d0SKonrad Dybcio static const struct parent_map gcc_xo_gpll0_gpll4_map[] = {
98*0519d1d0SKonrad Dybcio 	{ P_XO, 0 },
99*0519d1d0SKonrad Dybcio 	{ P_GPLL0, 1 },
100*0519d1d0SKonrad Dybcio 	{ P_GPLL4, 5 },
101*0519d1d0SKonrad Dybcio };
102*0519d1d0SKonrad Dybcio 
103*0519d1d0SKonrad Dybcio static const struct clk_parent_data gcc_xo_gpll0_gpll4[] = {
104*0519d1d0SKonrad Dybcio 	{ .fw_name = "xo" },
105*0519d1d0SKonrad Dybcio 	{ .hw = &gpll0.clkr.hw },
106*0519d1d0SKonrad Dybcio 	{ .hw = &gpll4.clkr.hw },
107*0519d1d0SKonrad Dybcio };
108*0519d1d0SKonrad Dybcio 
109aec89f78SBastian Köcher static struct freq_tbl ftbl_ufs_axi_clk_src[] = {
110aec89f78SBastian Köcher 	F(50000000, P_GPLL0, 12, 0, 0),
111aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
112aec89f78SBastian Köcher 	F(150000000, P_GPLL0, 4, 0, 0),
113aec89f78SBastian Köcher 	F(171430000, P_GPLL0, 3.5, 0, 0),
114aec89f78SBastian Köcher 	F(200000000, P_GPLL0, 3, 0, 0),
115aec89f78SBastian Köcher 	F(240000000, P_GPLL0, 2.5, 0, 0),
116aec89f78SBastian Köcher 	{ }
117aec89f78SBastian Köcher };
118aec89f78SBastian Köcher 
119aec89f78SBastian Köcher static struct clk_rcg2 ufs_axi_clk_src = {
120aec89f78SBastian Köcher 	.cmd_rcgr = 0x1d68,
121aec89f78SBastian Köcher 	.mnd_width = 8,
122aec89f78SBastian Köcher 	.hid_width = 5,
123aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
124aec89f78SBastian Köcher 	.freq_tbl = ftbl_ufs_axi_clk_src,
125*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
126aec89f78SBastian Köcher 		.name = "ufs_axi_clk_src",
127*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
128aec89f78SBastian Köcher 		.num_parents = 2,
129aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
130aec89f78SBastian Köcher 	},
131aec89f78SBastian Köcher };
132aec89f78SBastian Köcher 
133aec89f78SBastian Köcher static struct freq_tbl ftbl_usb30_master_clk_src[] = {
134aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
135aec89f78SBastian Köcher 	F(125000000, P_GPLL0, 1, 5, 24),
136aec89f78SBastian Köcher 	{ }
137aec89f78SBastian Köcher };
138aec89f78SBastian Köcher 
139aec89f78SBastian Köcher static struct clk_rcg2 usb30_master_clk_src = {
140aec89f78SBastian Köcher 	.cmd_rcgr = 0x03d4,
141aec89f78SBastian Köcher 	.mnd_width = 8,
142aec89f78SBastian Köcher 	.hid_width = 5,
143aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
144aec89f78SBastian Köcher 	.freq_tbl = ftbl_usb30_master_clk_src,
145*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
146aec89f78SBastian Köcher 		.name = "usb30_master_clk_src",
147*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
148aec89f78SBastian Köcher 		.num_parents = 2,
149aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
150aec89f78SBastian Köcher 	},
151aec89f78SBastian Köcher };
152aec89f78SBastian Köcher 
153aec89f78SBastian Köcher static struct freq_tbl ftbl_blsp_i2c_apps_clk_src[] = {
154aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
155aec89f78SBastian Köcher 	F(50000000, P_GPLL0, 12, 0, 0),
156aec89f78SBastian Köcher 	{ }
157aec89f78SBastian Köcher };
158aec89f78SBastian Köcher 
159aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = {
160aec89f78SBastian Köcher 	.cmd_rcgr = 0x0660,
161aec89f78SBastian Köcher 	.hid_width = 5,
162aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
163aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
164*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
165aec89f78SBastian Köcher 		.name = "blsp1_qup1_i2c_apps_clk_src",
166*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
167aec89f78SBastian Köcher 		.num_parents = 2,
168aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
169aec89f78SBastian Köcher 	},
170aec89f78SBastian Köcher };
171aec89f78SBastian Köcher 
172aec89f78SBastian Köcher static struct freq_tbl ftbl_blspqup_spi_apps_clk_src[] = {
173aec89f78SBastian Köcher 	F(960000, P_XO, 10, 1, 2),
174aec89f78SBastian Köcher 	F(4800000, P_XO, 4, 0, 0),
175aec89f78SBastian Köcher 	F(9600000, P_XO, 2, 0, 0),
176aec89f78SBastian Köcher 	F(15000000, P_GPLL0, 10, 1, 4),
177aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
178aec89f78SBastian Köcher 	F(24000000, P_GPLL0, 12.5, 1, 2),
179aec89f78SBastian Köcher 	F(25000000, P_GPLL0, 12, 1, 2),
180aec89f78SBastian Köcher 	F(48000000, P_GPLL0, 12.5, 0, 0),
181aec89f78SBastian Köcher 	F(50000000, P_GPLL0, 12, 0, 0),
182aec89f78SBastian Köcher 	{ }
183aec89f78SBastian Köcher };
184aec89f78SBastian Köcher 
185aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = {
186aec89f78SBastian Köcher 	.cmd_rcgr = 0x064c,
187aec89f78SBastian Köcher 	.mnd_width = 8,
188aec89f78SBastian Köcher 	.hid_width = 5,
189aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
190aec89f78SBastian Köcher 	.freq_tbl = ftbl_blspqup_spi_apps_clk_src,
191*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
192aec89f78SBastian Köcher 		.name = "blsp1_qup1_spi_apps_clk_src",
193*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
194aec89f78SBastian Köcher 		.num_parents = 2,
195aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
196aec89f78SBastian Köcher 	},
197aec89f78SBastian Köcher };
198aec89f78SBastian Köcher 
199aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = {
200aec89f78SBastian Köcher 	.cmd_rcgr = 0x06e0,
201aec89f78SBastian Köcher 	.hid_width = 5,
202aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
203aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
204*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
205aec89f78SBastian Köcher 		.name = "blsp1_qup2_i2c_apps_clk_src",
206*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
207aec89f78SBastian Köcher 		.num_parents = 2,
208aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
209aec89f78SBastian Köcher 	},
210aec89f78SBastian Köcher };
211aec89f78SBastian Köcher 
212aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = {
213aec89f78SBastian Köcher 	.cmd_rcgr = 0x06cc,
214aec89f78SBastian Köcher 	.mnd_width = 8,
215aec89f78SBastian Köcher 	.hid_width = 5,
216aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
217aec89f78SBastian Köcher 	.freq_tbl = ftbl_blspqup_spi_apps_clk_src,
218*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
219aec89f78SBastian Köcher 		.name = "blsp1_qup2_spi_apps_clk_src",
220*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
221aec89f78SBastian Köcher 		.num_parents = 2,
222aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
223aec89f78SBastian Köcher 	},
224aec89f78SBastian Köcher };
225aec89f78SBastian Köcher 
226aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = {
227aec89f78SBastian Köcher 	.cmd_rcgr = 0x0760,
228aec89f78SBastian Köcher 	.hid_width = 5,
229aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
230aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
231*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
232aec89f78SBastian Köcher 		.name = "blsp1_qup3_i2c_apps_clk_src",
233*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
234aec89f78SBastian Köcher 		.num_parents = 2,
235aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
236aec89f78SBastian Köcher 	},
237aec89f78SBastian Köcher };
238aec89f78SBastian Köcher 
239aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = {
240aec89f78SBastian Köcher 	.cmd_rcgr = 0x074c,
241aec89f78SBastian Köcher 	.mnd_width = 8,
242aec89f78SBastian Köcher 	.hid_width = 5,
243aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
244aec89f78SBastian Köcher 	.freq_tbl = ftbl_blspqup_spi_apps_clk_src,
245*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
246aec89f78SBastian Köcher 		.name = "blsp1_qup3_spi_apps_clk_src",
247*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
248aec89f78SBastian Köcher 		.num_parents = 2,
249aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
250aec89f78SBastian Köcher 	},
251aec89f78SBastian Köcher };
252aec89f78SBastian Köcher 
253aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = {
254aec89f78SBastian Köcher 	.cmd_rcgr = 0x07e0,
255aec89f78SBastian Köcher 	.hid_width = 5,
256aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
257aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
258*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
259aec89f78SBastian Köcher 		.name = "blsp1_qup4_i2c_apps_clk_src",
260*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
261aec89f78SBastian Köcher 		.num_parents = 2,
262aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
263aec89f78SBastian Köcher 	},
264aec89f78SBastian Köcher };
265aec89f78SBastian Köcher 
266aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = {
267aec89f78SBastian Köcher 	.cmd_rcgr = 0x07cc,
268aec89f78SBastian Köcher 	.mnd_width = 8,
269aec89f78SBastian Köcher 	.hid_width = 5,
270aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
271aec89f78SBastian Köcher 	.freq_tbl = ftbl_blspqup_spi_apps_clk_src,
272*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
273aec89f78SBastian Köcher 		.name = "blsp1_qup4_spi_apps_clk_src",
274*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
275aec89f78SBastian Köcher 		.num_parents = 2,
276aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
277aec89f78SBastian Köcher 	},
278aec89f78SBastian Köcher };
279aec89f78SBastian Köcher 
280aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = {
281aec89f78SBastian Köcher 	.cmd_rcgr = 0x0860,
282aec89f78SBastian Köcher 	.hid_width = 5,
283aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
284aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
285*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
286aec89f78SBastian Köcher 		.name = "blsp1_qup5_i2c_apps_clk_src",
287*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
288aec89f78SBastian Köcher 		.num_parents = 2,
289aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
290aec89f78SBastian Köcher 	},
291aec89f78SBastian Köcher };
292aec89f78SBastian Köcher 
293aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = {
294aec89f78SBastian Köcher 	.cmd_rcgr = 0x084c,
295aec89f78SBastian Köcher 	.mnd_width = 8,
296aec89f78SBastian Köcher 	.hid_width = 5,
297aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
298aec89f78SBastian Köcher 	.freq_tbl = ftbl_blspqup_spi_apps_clk_src,
299*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
300aec89f78SBastian Köcher 		.name = "blsp1_qup5_spi_apps_clk_src",
301*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
302aec89f78SBastian Köcher 		.num_parents = 2,
303aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
304aec89f78SBastian Köcher 	},
305aec89f78SBastian Köcher };
306aec89f78SBastian Köcher 
307aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = {
308aec89f78SBastian Köcher 	.cmd_rcgr = 0x08e0,
309aec89f78SBastian Köcher 	.hid_width = 5,
310aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
311aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
312*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
313aec89f78SBastian Köcher 		.name = "blsp1_qup6_i2c_apps_clk_src",
314*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
315aec89f78SBastian Köcher 		.num_parents = 2,
316aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
317aec89f78SBastian Köcher 	},
318aec89f78SBastian Köcher };
319aec89f78SBastian Köcher 
320aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = {
321aec89f78SBastian Köcher 	.cmd_rcgr = 0x08cc,
322aec89f78SBastian Köcher 	.mnd_width = 8,
323aec89f78SBastian Köcher 	.hid_width = 5,
324aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
325aec89f78SBastian Köcher 	.freq_tbl = ftbl_blspqup_spi_apps_clk_src,
326*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
327aec89f78SBastian Köcher 		.name = "blsp1_qup6_spi_apps_clk_src",
328*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
329aec89f78SBastian Köcher 		.num_parents = 2,
330aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
331aec89f78SBastian Köcher 	},
332aec89f78SBastian Köcher };
333aec89f78SBastian Köcher 
334aec89f78SBastian Köcher static struct freq_tbl ftbl_blsp_uart_apps_clk_src[] = {
335aec89f78SBastian Köcher 	F(3686400, P_GPLL0, 1, 96, 15625),
336aec89f78SBastian Köcher 	F(7372800, P_GPLL0, 1, 192, 15625),
337aec89f78SBastian Köcher 	F(14745600, P_GPLL0, 1, 384, 15625),
338aec89f78SBastian Köcher 	F(16000000, P_GPLL0, 5, 2, 15),
339aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
340aec89f78SBastian Köcher 	F(24000000, P_GPLL0, 5, 1, 5),
341aec89f78SBastian Köcher 	F(32000000, P_GPLL0, 1, 4, 75),
342aec89f78SBastian Köcher 	F(40000000, P_GPLL0, 15, 0, 0),
343aec89f78SBastian Köcher 	F(46400000, P_GPLL0, 1, 29, 375),
344aec89f78SBastian Köcher 	F(48000000, P_GPLL0, 12.5, 0, 0),
345aec89f78SBastian Köcher 	F(51200000, P_GPLL0, 1, 32, 375),
346aec89f78SBastian Köcher 	F(56000000, P_GPLL0, 1, 7, 75),
347aec89f78SBastian Köcher 	F(58982400, P_GPLL0, 1, 1536, 15625),
348aec89f78SBastian Köcher 	F(60000000, P_GPLL0, 10, 0, 0),
349aec89f78SBastian Köcher 	F(63160000, P_GPLL0, 9.5, 0, 0),
350aec89f78SBastian Köcher 	{ }
351aec89f78SBastian Köcher };
352aec89f78SBastian Köcher 
353aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart1_apps_clk_src = {
354aec89f78SBastian Köcher 	.cmd_rcgr = 0x068c,
355aec89f78SBastian Köcher 	.mnd_width = 16,
356aec89f78SBastian Köcher 	.hid_width = 5,
357aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
358aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
359*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
360aec89f78SBastian Köcher 		.name = "blsp1_uart1_apps_clk_src",
361*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
362aec89f78SBastian Köcher 		.num_parents = 2,
363aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
364aec89f78SBastian Köcher 	},
365aec89f78SBastian Köcher };
366aec89f78SBastian Köcher 
367aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart2_apps_clk_src = {
368aec89f78SBastian Köcher 	.cmd_rcgr = 0x070c,
369aec89f78SBastian Köcher 	.mnd_width = 16,
370aec89f78SBastian Köcher 	.hid_width = 5,
371aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
372aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
373*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
374aec89f78SBastian Köcher 		.name = "blsp1_uart2_apps_clk_src",
375*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
376aec89f78SBastian Köcher 		.num_parents = 2,
377aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
378aec89f78SBastian Köcher 	},
379aec89f78SBastian Köcher };
380aec89f78SBastian Köcher 
381aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart3_apps_clk_src = {
382aec89f78SBastian Köcher 	.cmd_rcgr = 0x078c,
383aec89f78SBastian Köcher 	.mnd_width = 16,
384aec89f78SBastian Köcher 	.hid_width = 5,
385aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
386aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
387*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
388aec89f78SBastian Köcher 		.name = "blsp1_uart3_apps_clk_src",
389*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
390aec89f78SBastian Köcher 		.num_parents = 2,
391aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
392aec89f78SBastian Köcher 	},
393aec89f78SBastian Köcher };
394aec89f78SBastian Köcher 
395aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart4_apps_clk_src = {
396aec89f78SBastian Köcher 	.cmd_rcgr = 0x080c,
397aec89f78SBastian Köcher 	.mnd_width = 16,
398aec89f78SBastian Köcher 	.hid_width = 5,
399aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
400aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
401*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
402aec89f78SBastian Köcher 		.name = "blsp1_uart4_apps_clk_src",
403*0519d1d0SKonrad Dybcio 		.parent_data = 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_uart5_apps_clk_src = {
410aec89f78SBastian Köcher 	.cmd_rcgr = 0x088c,
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,
415*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
416aec89f78SBastian Köcher 		.name = "blsp1_uart5_apps_clk_src",
417*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
418aec89f78SBastian Köcher 		.num_parents = 2,
419aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
420aec89f78SBastian Köcher 	},
421aec89f78SBastian Köcher };
422aec89f78SBastian Köcher 
423aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart6_apps_clk_src = {
424aec89f78SBastian Köcher 	.cmd_rcgr = 0x090c,
425aec89f78SBastian Köcher 	.mnd_width = 16,
426aec89f78SBastian Köcher 	.hid_width = 5,
427aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
428aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
429*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
430aec89f78SBastian Köcher 		.name = "blsp1_uart6_apps_clk_src",
431*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
432aec89f78SBastian Köcher 		.num_parents = 2,
433aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
434aec89f78SBastian Köcher 	},
435aec89f78SBastian Köcher };
436aec89f78SBastian Köcher 
437aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup1_i2c_apps_clk_src = {
438aec89f78SBastian Köcher 	.cmd_rcgr = 0x09a0,
439aec89f78SBastian Köcher 	.hid_width = 5,
440aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
441aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
442*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
443aec89f78SBastian Köcher 		.name = "blsp2_qup1_i2c_apps_clk_src",
444*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
445aec89f78SBastian Köcher 		.num_parents = 2,
446aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
447aec89f78SBastian Köcher 	},
448aec89f78SBastian Köcher };
449aec89f78SBastian Köcher 
450aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup1_spi_apps_clk_src = {
451aec89f78SBastian Köcher 	.cmd_rcgr = 0x098c,
452aec89f78SBastian Köcher 	.mnd_width = 8,
453aec89f78SBastian Köcher 	.hid_width = 5,
454aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
455aec89f78SBastian Köcher 	.freq_tbl = ftbl_blspqup_spi_apps_clk_src,
456*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
457aec89f78SBastian Köcher 		.name = "blsp2_qup1_spi_apps_clk_src",
458*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
459aec89f78SBastian Köcher 		.num_parents = 2,
460aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
461aec89f78SBastian Köcher 	},
462aec89f78SBastian Köcher };
463aec89f78SBastian Köcher 
464aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup2_i2c_apps_clk_src = {
465aec89f78SBastian Köcher 	.cmd_rcgr = 0x0a20,
466aec89f78SBastian Köcher 	.hid_width = 5,
467aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
468aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
469*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
470aec89f78SBastian Köcher 		.name = "blsp2_qup2_i2c_apps_clk_src",
471*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
472aec89f78SBastian Köcher 		.num_parents = 2,
473aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
474aec89f78SBastian Köcher 	},
475aec89f78SBastian Köcher };
476aec89f78SBastian Köcher 
477aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup2_spi_apps_clk_src = {
478aec89f78SBastian Köcher 	.cmd_rcgr = 0x0a0c,
479aec89f78SBastian Köcher 	.mnd_width = 8,
480aec89f78SBastian Köcher 	.hid_width = 5,
481aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
482aec89f78SBastian Köcher 	.freq_tbl = ftbl_blspqup_spi_apps_clk_src,
483*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
484aec89f78SBastian Köcher 		.name = "blsp2_qup2_spi_apps_clk_src",
485*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
486aec89f78SBastian Köcher 		.num_parents = 2,
487aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
488aec89f78SBastian Köcher 	},
489aec89f78SBastian Köcher };
490aec89f78SBastian Köcher 
491aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup3_i2c_apps_clk_src = {
492aec89f78SBastian Köcher 	.cmd_rcgr = 0x0aa0,
493aec89f78SBastian Köcher 	.hid_width = 5,
494aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
495aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
496*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
497aec89f78SBastian Köcher 		.name = "blsp2_qup3_i2c_apps_clk_src",
498*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
499aec89f78SBastian Köcher 		.num_parents = 2,
500aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
501aec89f78SBastian Köcher 	},
502aec89f78SBastian Köcher };
503aec89f78SBastian Köcher 
504aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup3_spi_apps_clk_src = {
505aec89f78SBastian Köcher 	.cmd_rcgr = 0x0a8c,
506aec89f78SBastian Köcher 	.mnd_width = 8,
507aec89f78SBastian Köcher 	.hid_width = 5,
508aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
509aec89f78SBastian Köcher 	.freq_tbl = ftbl_blspqup_spi_apps_clk_src,
510*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
511aec89f78SBastian Köcher 		.name = "blsp2_qup3_spi_apps_clk_src",
512*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
513aec89f78SBastian Köcher 		.num_parents = 2,
514aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
515aec89f78SBastian Köcher 	},
516aec89f78SBastian Köcher };
517aec89f78SBastian Köcher 
518aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup4_i2c_apps_clk_src = {
519aec89f78SBastian Köcher 	.cmd_rcgr = 0x0b20,
520aec89f78SBastian Köcher 	.hid_width = 5,
521aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
522aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
523*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
524aec89f78SBastian Köcher 		.name = "blsp2_qup4_i2c_apps_clk_src",
525*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
526aec89f78SBastian Köcher 		.num_parents = 2,
527aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
528aec89f78SBastian Köcher 	},
529aec89f78SBastian Köcher };
530aec89f78SBastian Köcher 
531aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup4_spi_apps_clk_src = {
532aec89f78SBastian Köcher 	.cmd_rcgr = 0x0b0c,
533aec89f78SBastian Köcher 	.mnd_width = 8,
534aec89f78SBastian Köcher 	.hid_width = 5,
535aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
536aec89f78SBastian Köcher 	.freq_tbl = ftbl_blspqup_spi_apps_clk_src,
537*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
538aec89f78SBastian Köcher 		.name = "blsp2_qup4_spi_apps_clk_src",
539*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
540aec89f78SBastian Köcher 		.num_parents = 2,
541aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
542aec89f78SBastian Köcher 	},
543aec89f78SBastian Köcher };
544aec89f78SBastian Köcher 
545aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup5_i2c_apps_clk_src = {
546aec89f78SBastian Köcher 	.cmd_rcgr = 0x0ba0,
547aec89f78SBastian Köcher 	.hid_width = 5,
548aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
549aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
550*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
551aec89f78SBastian Köcher 		.name = "blsp2_qup5_i2c_apps_clk_src",
552*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
553aec89f78SBastian Köcher 		.num_parents = 2,
554aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
555aec89f78SBastian Köcher 	},
556aec89f78SBastian Köcher };
557aec89f78SBastian Köcher 
558aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup5_spi_apps_clk_src = {
559aec89f78SBastian Köcher 	.cmd_rcgr = 0x0b8c,
560aec89f78SBastian Köcher 	.mnd_width = 8,
561aec89f78SBastian Köcher 	.hid_width = 5,
562aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
563aec89f78SBastian Köcher 	.freq_tbl = ftbl_blspqup_spi_apps_clk_src,
564*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
565aec89f78SBastian Köcher 		.name = "blsp2_qup5_spi_apps_clk_src",
566*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
567aec89f78SBastian Köcher 		.num_parents = 2,
568aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
569aec89f78SBastian Köcher 	},
570aec89f78SBastian Köcher };
571aec89f78SBastian Köcher 
572aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup6_i2c_apps_clk_src = {
573aec89f78SBastian Köcher 	.cmd_rcgr = 0x0c20,
574aec89f78SBastian Köcher 	.hid_width = 5,
575aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
576aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
577*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
578aec89f78SBastian Köcher 		.name = "blsp2_qup6_i2c_apps_clk_src",
579*0519d1d0SKonrad Dybcio 		.parent_data = 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_qup6_spi_apps_clk_src = {
586aec89f78SBastian Köcher 	.cmd_rcgr = 0x0c0c,
587aec89f78SBastian Köcher 	.mnd_width = 8,
588aec89f78SBastian Köcher 	.hid_width = 5,
589aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
590aec89f78SBastian Köcher 	.freq_tbl = ftbl_blspqup_spi_apps_clk_src,
591*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
592aec89f78SBastian Köcher 		.name = "blsp2_qup6_spi_apps_clk_src",
593*0519d1d0SKonrad Dybcio 		.parent_data = 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_uart1_apps_clk_src = {
600aec89f78SBastian Köcher 	.cmd_rcgr = 0x09cc,
601aec89f78SBastian Köcher 	.mnd_width = 16,
602aec89f78SBastian Köcher 	.hid_width = 5,
603aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
604aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
605*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
606aec89f78SBastian Köcher 		.name = "blsp2_uart1_apps_clk_src",
607*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
608aec89f78SBastian Köcher 		.num_parents = 2,
609aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
610aec89f78SBastian Köcher 	},
611aec89f78SBastian Köcher };
612aec89f78SBastian Köcher 
613aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart2_apps_clk_src = {
614aec89f78SBastian Köcher 	.cmd_rcgr = 0x0a4c,
615aec89f78SBastian Köcher 	.mnd_width = 16,
616aec89f78SBastian Köcher 	.hid_width = 5,
617aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
618aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
619*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
620aec89f78SBastian Köcher 		.name = "blsp2_uart2_apps_clk_src",
621*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
622aec89f78SBastian Köcher 		.num_parents = 2,
623aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
624aec89f78SBastian Köcher 	},
625aec89f78SBastian Köcher };
626aec89f78SBastian Köcher 
627aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart3_apps_clk_src = {
628aec89f78SBastian Köcher 	.cmd_rcgr = 0x0acc,
629aec89f78SBastian Köcher 	.mnd_width = 16,
630aec89f78SBastian Köcher 	.hid_width = 5,
631aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
632aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
633*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
634aec89f78SBastian Köcher 		.name = "blsp2_uart3_apps_clk_src",
635*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
636aec89f78SBastian Köcher 		.num_parents = 2,
637aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
638aec89f78SBastian Köcher 	},
639aec89f78SBastian Köcher };
640aec89f78SBastian Köcher 
641aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart4_apps_clk_src = {
642aec89f78SBastian Köcher 	.cmd_rcgr = 0x0b4c,
643aec89f78SBastian Köcher 	.mnd_width = 16,
644aec89f78SBastian Köcher 	.hid_width = 5,
645aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
646aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
647*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
648aec89f78SBastian Köcher 		.name = "blsp2_uart4_apps_clk_src",
649*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
650aec89f78SBastian Köcher 		.num_parents = 2,
651aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
652aec89f78SBastian Köcher 	},
653aec89f78SBastian Köcher };
654aec89f78SBastian Köcher 
655aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart5_apps_clk_src = {
656aec89f78SBastian Köcher 	.cmd_rcgr = 0x0bcc,
657aec89f78SBastian Köcher 	.mnd_width = 16,
658aec89f78SBastian Köcher 	.hid_width = 5,
659aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
660aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
661*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
662aec89f78SBastian Köcher 		.name = "blsp2_uart5_apps_clk_src",
663*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
664aec89f78SBastian Köcher 		.num_parents = 2,
665aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
666aec89f78SBastian Köcher 	},
667aec89f78SBastian Köcher };
668aec89f78SBastian Köcher 
669aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart6_apps_clk_src = {
670aec89f78SBastian Köcher 	.cmd_rcgr = 0x0c4c,
671aec89f78SBastian Köcher 	.mnd_width = 16,
672aec89f78SBastian Köcher 	.hid_width = 5,
673aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
674aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
675*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
676aec89f78SBastian Köcher 		.name = "blsp2_uart6_apps_clk_src",
677*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
678aec89f78SBastian Köcher 		.num_parents = 2,
679aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
680aec89f78SBastian Köcher 	},
681aec89f78SBastian Köcher };
682aec89f78SBastian Köcher 
683aec89f78SBastian Köcher static struct freq_tbl ftbl_gp1_clk_src[] = {
684aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
685aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
686aec89f78SBastian Köcher 	F(200000000, P_GPLL0, 3, 0, 0),
687aec89f78SBastian Köcher 	{ }
688aec89f78SBastian Köcher };
689aec89f78SBastian Köcher 
690aec89f78SBastian Köcher static struct clk_rcg2 gp1_clk_src = {
691aec89f78SBastian Köcher 	.cmd_rcgr = 0x1904,
692aec89f78SBastian Köcher 	.mnd_width = 8,
693aec89f78SBastian Köcher 	.hid_width = 5,
694aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
695aec89f78SBastian Köcher 	.freq_tbl = ftbl_gp1_clk_src,
696*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
697aec89f78SBastian Köcher 		.name = "gp1_clk_src",
698*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
699aec89f78SBastian Köcher 		.num_parents = 2,
700aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
701aec89f78SBastian Köcher 	},
702aec89f78SBastian Köcher };
703aec89f78SBastian Köcher 
704aec89f78SBastian Köcher static struct freq_tbl ftbl_gp2_clk_src[] = {
705aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
706aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
707aec89f78SBastian Köcher 	F(200000000, P_GPLL0, 3, 0, 0),
708aec89f78SBastian Köcher 	{ }
709aec89f78SBastian Köcher };
710aec89f78SBastian Köcher 
711aec89f78SBastian Köcher static struct clk_rcg2 gp2_clk_src = {
712aec89f78SBastian Köcher 	.cmd_rcgr = 0x1944,
713aec89f78SBastian Köcher 	.mnd_width = 8,
714aec89f78SBastian Köcher 	.hid_width = 5,
715aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
716aec89f78SBastian Köcher 	.freq_tbl = ftbl_gp2_clk_src,
717*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
718aec89f78SBastian Köcher 		.name = "gp2_clk_src",
719*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
720aec89f78SBastian Köcher 		.num_parents = 2,
721aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
722aec89f78SBastian Köcher 	},
723aec89f78SBastian Köcher };
724aec89f78SBastian Köcher 
725aec89f78SBastian Köcher static struct freq_tbl ftbl_gp3_clk_src[] = {
726aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
727aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
728aec89f78SBastian Köcher 	F(200000000, P_GPLL0, 3, 0, 0),
729aec89f78SBastian Köcher 	{ }
730aec89f78SBastian Köcher };
731aec89f78SBastian Köcher 
732aec89f78SBastian Köcher static struct clk_rcg2 gp3_clk_src = {
733aec89f78SBastian Köcher 	.cmd_rcgr = 0x1984,
734aec89f78SBastian Köcher 	.mnd_width = 8,
735aec89f78SBastian Köcher 	.hid_width = 5,
736aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
737aec89f78SBastian Köcher 	.freq_tbl = ftbl_gp3_clk_src,
738*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
739aec89f78SBastian Köcher 		.name = "gp3_clk_src",
740*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
741aec89f78SBastian Köcher 		.num_parents = 2,
742aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
743aec89f78SBastian Köcher 	},
744aec89f78SBastian Köcher };
745aec89f78SBastian Köcher 
746aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_0_aux_clk_src[] = {
747aec89f78SBastian Köcher 	F(1011000, P_XO, 1, 1, 19),
748aec89f78SBastian Köcher 	{ }
749aec89f78SBastian Köcher };
750aec89f78SBastian Köcher 
751aec89f78SBastian Köcher static struct clk_rcg2 pcie_0_aux_clk_src = {
752aec89f78SBastian Köcher 	.cmd_rcgr = 0x1b00,
753aec89f78SBastian Köcher 	.mnd_width = 8,
754aec89f78SBastian Köcher 	.hid_width = 5,
755aec89f78SBastian Köcher 	.freq_tbl = ftbl_pcie_0_aux_clk_src,
756*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
757aec89f78SBastian Köcher 		.name = "pcie_0_aux_clk_src",
758*0519d1d0SKonrad Dybcio 		.parent_data = &(const struct clk_parent_data){
759*0519d1d0SKonrad Dybcio 				.fw_name = "xo",
760*0519d1d0SKonrad Dybcio 		},
761aec89f78SBastian Köcher 		.num_parents = 1,
762aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
763aec89f78SBastian Köcher 	},
764aec89f78SBastian Köcher };
765aec89f78SBastian Köcher 
766aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_pipe_clk_src[] = {
767aec89f78SBastian Köcher 	F(125000000, P_XO, 1, 0, 0),
768aec89f78SBastian Köcher 	{ }
769aec89f78SBastian Köcher };
770aec89f78SBastian Köcher 
771aec89f78SBastian Köcher static struct clk_rcg2 pcie_0_pipe_clk_src = {
772aec89f78SBastian Köcher 	.cmd_rcgr = 0x1adc,
773aec89f78SBastian Köcher 	.hid_width = 5,
774aec89f78SBastian Köcher 	.freq_tbl = ftbl_pcie_pipe_clk_src,
775*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
776aec89f78SBastian Köcher 		.name = "pcie_0_pipe_clk_src",
777*0519d1d0SKonrad Dybcio 		.parent_data = &(const struct clk_parent_data){
778*0519d1d0SKonrad Dybcio 				.fw_name = "xo",
779*0519d1d0SKonrad Dybcio 		},
780aec89f78SBastian Köcher 		.num_parents = 1,
781aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
782aec89f78SBastian Köcher 	},
783aec89f78SBastian Köcher };
784aec89f78SBastian Köcher 
785aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_1_aux_clk_src[] = {
786aec89f78SBastian Köcher 	F(1011000, P_XO, 1, 1, 19),
787aec89f78SBastian Köcher 	{ }
788aec89f78SBastian Köcher };
789aec89f78SBastian Köcher 
790aec89f78SBastian Köcher static struct clk_rcg2 pcie_1_aux_clk_src = {
791aec89f78SBastian Köcher 	.cmd_rcgr = 0x1b80,
792aec89f78SBastian Köcher 	.mnd_width = 8,
793aec89f78SBastian Köcher 	.hid_width = 5,
794aec89f78SBastian Köcher 	.freq_tbl = ftbl_pcie_1_aux_clk_src,
795*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
796aec89f78SBastian Köcher 		.name = "pcie_1_aux_clk_src",
797*0519d1d0SKonrad Dybcio 		.parent_data = &(const struct clk_parent_data){
798*0519d1d0SKonrad Dybcio 				.fw_name = "xo",
799*0519d1d0SKonrad Dybcio 		},
800aec89f78SBastian Köcher 		.num_parents = 1,
801aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
802aec89f78SBastian Köcher 	},
803aec89f78SBastian Köcher };
804aec89f78SBastian Köcher 
805aec89f78SBastian Köcher static struct clk_rcg2 pcie_1_pipe_clk_src = {
806aec89f78SBastian Köcher 	.cmd_rcgr = 0x1b5c,
807aec89f78SBastian Köcher 	.hid_width = 5,
808aec89f78SBastian Köcher 	.freq_tbl = ftbl_pcie_pipe_clk_src,
809*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
810aec89f78SBastian Köcher 		.name = "pcie_1_pipe_clk_src",
811*0519d1d0SKonrad Dybcio 		.parent_data = &(const struct clk_parent_data){
812*0519d1d0SKonrad Dybcio 				.fw_name = "xo",
813*0519d1d0SKonrad Dybcio 		},
814aec89f78SBastian Köcher 		.num_parents = 1,
815aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
816aec89f78SBastian Köcher 	},
817aec89f78SBastian Köcher };
818aec89f78SBastian Köcher 
819aec89f78SBastian Köcher static struct freq_tbl ftbl_pdm2_clk_src[] = {
820aec89f78SBastian Köcher 	F(60000000, P_GPLL0, 10, 0, 0),
821aec89f78SBastian Köcher 	{ }
822aec89f78SBastian Köcher };
823aec89f78SBastian Köcher 
824aec89f78SBastian Köcher static struct clk_rcg2 pdm2_clk_src = {
825aec89f78SBastian Köcher 	.cmd_rcgr = 0x0cd0,
826aec89f78SBastian Köcher 	.hid_width = 5,
827aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
828aec89f78SBastian Köcher 	.freq_tbl = ftbl_pdm2_clk_src,
829*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
830aec89f78SBastian Köcher 		.name = "pdm2_clk_src",
831*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
832aec89f78SBastian Köcher 		.num_parents = 2,
833aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
834aec89f78SBastian Köcher 	},
835aec89f78SBastian Köcher };
836aec89f78SBastian Köcher 
837aec89f78SBastian Köcher static struct freq_tbl ftbl_sdcc1_apps_clk_src[] = {
838aec89f78SBastian Köcher 	F(144000, P_XO, 16, 3, 25),
839aec89f78SBastian Köcher 	F(400000, P_XO, 12, 1, 4),
840aec89f78SBastian Köcher 	F(20000000, P_GPLL0, 15, 1, 2),
841aec89f78SBastian Köcher 	F(25000000, P_GPLL0, 12, 1, 2),
842aec89f78SBastian Köcher 	F(50000000, P_GPLL0, 12, 0, 0),
843aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
844aec89f78SBastian Köcher 	F(192000000, P_GPLL4, 2, 0, 0),
845aec89f78SBastian Köcher 	F(384000000, P_GPLL4, 1, 0, 0),
846aec89f78SBastian Köcher 	{ }
847aec89f78SBastian Köcher };
848aec89f78SBastian Köcher 
849aec89f78SBastian Köcher static struct clk_rcg2 sdcc1_apps_clk_src = {
850aec89f78SBastian Köcher 	.cmd_rcgr = 0x04d0,
851aec89f78SBastian Köcher 	.mnd_width = 8,
852aec89f78SBastian Köcher 	.hid_width = 5,
853aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_gpll4_map,
854aec89f78SBastian Köcher 	.freq_tbl = ftbl_sdcc1_apps_clk_src,
855*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
856aec89f78SBastian Köcher 		.name = "sdcc1_apps_clk_src",
857*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0_gpll4,
858aec89f78SBastian Köcher 		.num_parents = 3,
8595f5001a9SRajendra Nayak 		.ops = &clk_rcg2_floor_ops,
860aec89f78SBastian Köcher 	},
861aec89f78SBastian Köcher };
862aec89f78SBastian Köcher 
863aec89f78SBastian Köcher static struct freq_tbl ftbl_sdcc2_4_apps_clk_src[] = {
864aec89f78SBastian Köcher 	F(144000, P_XO, 16, 3, 25),
865aec89f78SBastian Köcher 	F(400000, P_XO, 12, 1, 4),
866aec89f78SBastian Köcher 	F(20000000, P_GPLL0, 15, 1, 2),
867aec89f78SBastian Köcher 	F(25000000, P_GPLL0, 12, 1, 2),
868aec89f78SBastian Köcher 	F(50000000, P_GPLL0, 12, 0, 0),
869aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
870aec89f78SBastian Köcher 	F(200000000, P_GPLL0, 3, 0, 0),
871aec89f78SBastian Köcher 	{ }
872aec89f78SBastian Köcher };
873aec89f78SBastian Köcher 
874aec89f78SBastian Köcher static struct clk_rcg2 sdcc2_apps_clk_src = {
875aec89f78SBastian Köcher 	.cmd_rcgr = 0x0510,
876aec89f78SBastian Köcher 	.mnd_width = 8,
877aec89f78SBastian Köcher 	.hid_width = 5,
878aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
879aec89f78SBastian Köcher 	.freq_tbl = ftbl_sdcc2_4_apps_clk_src,
880*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
881aec89f78SBastian Köcher 		.name = "sdcc2_apps_clk_src",
882*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
883aec89f78SBastian Köcher 		.num_parents = 2,
8845f5001a9SRajendra Nayak 		.ops = &clk_rcg2_floor_ops,
885aec89f78SBastian Köcher 	},
886aec89f78SBastian Köcher };
887aec89f78SBastian Köcher 
888aec89f78SBastian Köcher static struct clk_rcg2 sdcc3_apps_clk_src = {
889aec89f78SBastian Köcher 	.cmd_rcgr = 0x0550,
890aec89f78SBastian Köcher 	.mnd_width = 8,
891aec89f78SBastian Köcher 	.hid_width = 5,
892aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
893aec89f78SBastian Köcher 	.freq_tbl = ftbl_sdcc2_4_apps_clk_src,
894*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
895aec89f78SBastian Köcher 		.name = "sdcc3_apps_clk_src",
896*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
897aec89f78SBastian Köcher 		.num_parents = 2,
8985f5001a9SRajendra Nayak 		.ops = &clk_rcg2_floor_ops,
899aec89f78SBastian Köcher 	},
900aec89f78SBastian Köcher };
901aec89f78SBastian Köcher 
902aec89f78SBastian Köcher static struct clk_rcg2 sdcc4_apps_clk_src = {
903aec89f78SBastian Köcher 	.cmd_rcgr = 0x0590,
904aec89f78SBastian Köcher 	.mnd_width = 8,
905aec89f78SBastian Köcher 	.hid_width = 5,
906aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
907aec89f78SBastian Köcher 	.freq_tbl = ftbl_sdcc2_4_apps_clk_src,
908*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
909aec89f78SBastian Köcher 		.name = "sdcc4_apps_clk_src",
910*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
911aec89f78SBastian Köcher 		.num_parents = 2,
9125f5001a9SRajendra Nayak 		.ops = &clk_rcg2_floor_ops,
913aec89f78SBastian Köcher 	},
914aec89f78SBastian Köcher };
915aec89f78SBastian Köcher 
916aec89f78SBastian Köcher static struct freq_tbl ftbl_tsif_ref_clk_src[] = {
917aec89f78SBastian Köcher 	F(105500, P_XO, 1, 1, 182),
918aec89f78SBastian Köcher 	{ }
919aec89f78SBastian Köcher };
920aec89f78SBastian Köcher 
921aec89f78SBastian Köcher static struct clk_rcg2 tsif_ref_clk_src = {
922aec89f78SBastian Köcher 	.cmd_rcgr = 0x0d90,
923aec89f78SBastian Köcher 	.mnd_width = 8,
924aec89f78SBastian Köcher 	.hid_width = 5,
925aec89f78SBastian Köcher 	.freq_tbl = ftbl_tsif_ref_clk_src,
926*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
927aec89f78SBastian Köcher 		.name = "tsif_ref_clk_src",
928*0519d1d0SKonrad Dybcio 		.parent_data = &(const struct clk_parent_data){
929*0519d1d0SKonrad Dybcio 				.fw_name = "xo",
930*0519d1d0SKonrad Dybcio 		},
931aec89f78SBastian Köcher 		.num_parents = 1,
932aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
933aec89f78SBastian Köcher 	},
934aec89f78SBastian Köcher };
935aec89f78SBastian Köcher 
936aec89f78SBastian Köcher static struct freq_tbl ftbl_usb30_mock_utmi_clk_src[] = {
937aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
938aec89f78SBastian Köcher 	F(60000000, P_GPLL0, 10, 0, 0),
939aec89f78SBastian Köcher 	{ }
940aec89f78SBastian Köcher };
941aec89f78SBastian Köcher 
942aec89f78SBastian Köcher static struct clk_rcg2 usb30_mock_utmi_clk_src = {
943aec89f78SBastian Köcher 	.cmd_rcgr = 0x03e8,
944aec89f78SBastian Köcher 	.hid_width = 5,
945aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
946aec89f78SBastian Köcher 	.freq_tbl = ftbl_usb30_mock_utmi_clk_src,
947*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
948aec89f78SBastian Köcher 		.name = "usb30_mock_utmi_clk_src",
949*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
950aec89f78SBastian Köcher 		.num_parents = 2,
951aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
952aec89f78SBastian Köcher 	},
953aec89f78SBastian Köcher };
954aec89f78SBastian Köcher 
955aec89f78SBastian Köcher static struct freq_tbl ftbl_usb3_phy_aux_clk_src[] = {
956aec89f78SBastian Köcher 	F(1200000, P_XO, 16, 0, 0),
957aec89f78SBastian Köcher 	{ }
958aec89f78SBastian Köcher };
959aec89f78SBastian Köcher 
960aec89f78SBastian Köcher static struct clk_rcg2 usb3_phy_aux_clk_src = {
961aec89f78SBastian Köcher 	.cmd_rcgr = 0x1414,
962aec89f78SBastian Köcher 	.hid_width = 5,
963aec89f78SBastian Köcher 	.freq_tbl = ftbl_usb3_phy_aux_clk_src,
964*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
965aec89f78SBastian Köcher 		.name = "usb3_phy_aux_clk_src",
966*0519d1d0SKonrad Dybcio 		.parent_data = &(const struct clk_parent_data){
967*0519d1d0SKonrad Dybcio 				.fw_name = "xo",
968*0519d1d0SKonrad Dybcio 		},
969aec89f78SBastian Köcher 		.num_parents = 1,
970aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
971aec89f78SBastian Köcher 	},
972aec89f78SBastian Köcher };
973aec89f78SBastian Köcher 
974aec89f78SBastian Köcher static struct freq_tbl ftbl_usb_hs_system_clk_src[] = {
975aec89f78SBastian Köcher 	F(75000000, P_GPLL0, 8, 0, 0),
976aec89f78SBastian Köcher 	{ }
977aec89f78SBastian Köcher };
978aec89f78SBastian Köcher 
979aec89f78SBastian Köcher static struct clk_rcg2 usb_hs_system_clk_src = {
980aec89f78SBastian Köcher 	.cmd_rcgr = 0x0490,
981aec89f78SBastian Köcher 	.hid_width = 5,
982aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
983aec89f78SBastian Köcher 	.freq_tbl = ftbl_usb_hs_system_clk_src,
984*0519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
985aec89f78SBastian Köcher 		.name = "usb_hs_system_clk_src",
986*0519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
987aec89f78SBastian Köcher 		.num_parents = 2,
988aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
989aec89f78SBastian Köcher 	},
990aec89f78SBastian Köcher };
991aec89f78SBastian Köcher 
992aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_ahb_clk = {
993aec89f78SBastian Köcher 	.halt_reg = 0x05c4,
994aec89f78SBastian Köcher 	.halt_check = BRANCH_HALT_VOTED,
995aec89f78SBastian Köcher 	.clkr = {
996aec89f78SBastian Köcher 		.enable_reg = 0x1484,
997aec89f78SBastian Köcher 		.enable_mask = BIT(17),
998*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
999aec89f78SBastian Köcher 			.name = "gcc_blsp1_ahb_clk",
1000aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1001aec89f78SBastian Köcher 		},
1002aec89f78SBastian Köcher 	},
1003aec89f78SBastian Köcher };
1004aec89f78SBastian Köcher 
1005aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = {
1006aec89f78SBastian Köcher 	.halt_reg = 0x0648,
1007aec89f78SBastian Köcher 	.clkr = {
1008aec89f78SBastian Köcher 		.enable_reg = 0x0648,
1009aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1010*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1011aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup1_i2c_apps_clk",
1012*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup1_i2c_apps_clk_src.clkr.hw },
1013aec89f78SBastian Köcher 			.num_parents = 1,
1014aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1015aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1016aec89f78SBastian Köcher 		},
1017aec89f78SBastian Köcher 	},
1018aec89f78SBastian Köcher };
1019aec89f78SBastian Köcher 
1020aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = {
1021aec89f78SBastian Köcher 	.halt_reg = 0x0644,
1022aec89f78SBastian Köcher 	.clkr = {
1023aec89f78SBastian Köcher 		.enable_reg = 0x0644,
1024aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1025*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1026aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup1_spi_apps_clk",
1027*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup1_spi_apps_clk_src.clkr.hw },
1028aec89f78SBastian Köcher 			.num_parents = 1,
1029aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1030aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1031aec89f78SBastian Köcher 		},
1032aec89f78SBastian Köcher 	},
1033aec89f78SBastian Köcher };
1034aec89f78SBastian Köcher 
1035aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = {
1036aec89f78SBastian Köcher 	.halt_reg = 0x06c8,
1037aec89f78SBastian Köcher 	.clkr = {
1038aec89f78SBastian Köcher 		.enable_reg = 0x06c8,
1039aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1040*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1041aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup2_i2c_apps_clk",
1042*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup2_i2c_apps_clk_src.clkr.hw },
1043aec89f78SBastian Köcher 			.num_parents = 1,
1044aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1045aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1046aec89f78SBastian Köcher 		},
1047aec89f78SBastian Köcher 	},
1048aec89f78SBastian Köcher };
1049aec89f78SBastian Köcher 
1050aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = {
1051aec89f78SBastian Köcher 	.halt_reg = 0x06c4,
1052aec89f78SBastian Köcher 	.clkr = {
1053aec89f78SBastian Köcher 		.enable_reg = 0x06c4,
1054aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1055*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1056aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup2_spi_apps_clk",
1057*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup2_spi_apps_clk_src.clkr.hw },
1058aec89f78SBastian Köcher 			.num_parents = 1,
1059aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1060aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1061aec89f78SBastian Köcher 		},
1062aec89f78SBastian Köcher 	},
1063aec89f78SBastian Köcher };
1064aec89f78SBastian Köcher 
1065aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = {
1066aec89f78SBastian Köcher 	.halt_reg = 0x0748,
1067aec89f78SBastian Köcher 	.clkr = {
1068aec89f78SBastian Köcher 		.enable_reg = 0x0748,
1069aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1070*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1071aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup3_i2c_apps_clk",
1072*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup3_i2c_apps_clk_src.clkr.hw },
1073aec89f78SBastian Köcher 			.num_parents = 1,
1074aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1075aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1076aec89f78SBastian Köcher 		},
1077aec89f78SBastian Köcher 	},
1078aec89f78SBastian Köcher };
1079aec89f78SBastian Köcher 
1080aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = {
1081aec89f78SBastian Köcher 	.halt_reg = 0x0744,
1082aec89f78SBastian Köcher 	.clkr = {
1083aec89f78SBastian Köcher 		.enable_reg = 0x0744,
1084aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1085*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1086aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup3_spi_apps_clk",
1087*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup3_spi_apps_clk_src.clkr.hw },
1088aec89f78SBastian Köcher 			.num_parents = 1,
1089aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1090aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1091aec89f78SBastian Köcher 		},
1092aec89f78SBastian Köcher 	},
1093aec89f78SBastian Köcher };
1094aec89f78SBastian Köcher 
1095aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = {
1096aec89f78SBastian Köcher 	.halt_reg = 0x07c8,
1097aec89f78SBastian Köcher 	.clkr = {
1098aec89f78SBastian Köcher 		.enable_reg = 0x07c8,
1099aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1100*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1101aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup4_i2c_apps_clk",
1102*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup4_i2c_apps_clk_src.clkr.hw },
1103aec89f78SBastian Köcher 			.num_parents = 1,
1104aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1105aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1106aec89f78SBastian Köcher 		},
1107aec89f78SBastian Köcher 	},
1108aec89f78SBastian Köcher };
1109aec89f78SBastian Köcher 
1110aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = {
1111aec89f78SBastian Köcher 	.halt_reg = 0x07c4,
1112aec89f78SBastian Köcher 	.clkr = {
1113aec89f78SBastian Köcher 		.enable_reg = 0x07c4,
1114aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1115*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1116aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup4_spi_apps_clk",
1117*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup4_spi_apps_clk_src.clkr.hw },
1118aec89f78SBastian Köcher 			.num_parents = 1,
1119aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1120aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1121aec89f78SBastian Köcher 		},
1122aec89f78SBastian Köcher 	},
1123aec89f78SBastian Köcher };
1124aec89f78SBastian Köcher 
1125aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = {
1126aec89f78SBastian Köcher 	.halt_reg = 0x0848,
1127aec89f78SBastian Köcher 	.clkr = {
1128aec89f78SBastian Köcher 		.enable_reg = 0x0848,
1129aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1130*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1131aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup5_i2c_apps_clk",
1132*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup5_i2c_apps_clk_src.clkr.hw },
1133aec89f78SBastian Köcher 			.num_parents = 1,
1134aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1135aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1136aec89f78SBastian Köcher 		},
1137aec89f78SBastian Köcher 	},
1138aec89f78SBastian Köcher };
1139aec89f78SBastian Köcher 
1140aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = {
1141aec89f78SBastian Köcher 	.halt_reg = 0x0844,
1142aec89f78SBastian Köcher 	.clkr = {
1143aec89f78SBastian Köcher 		.enable_reg = 0x0844,
1144aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1145*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1146aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup5_spi_apps_clk",
1147*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup5_spi_apps_clk_src.clkr.hw },
1148aec89f78SBastian Köcher 			.num_parents = 1,
1149aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1150aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1151aec89f78SBastian Köcher 		},
1152aec89f78SBastian Köcher 	},
1153aec89f78SBastian Köcher };
1154aec89f78SBastian Köcher 
1155aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup6_i2c_apps_clk = {
1156aec89f78SBastian Köcher 	.halt_reg = 0x08c8,
1157aec89f78SBastian Köcher 	.clkr = {
1158aec89f78SBastian Köcher 		.enable_reg = 0x08c8,
1159aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1160*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1161aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup6_i2c_apps_clk",
1162*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup6_i2c_apps_clk_src.clkr.hw },
1163aec89f78SBastian Köcher 			.num_parents = 1,
1164aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1165aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1166aec89f78SBastian Köcher 		},
1167aec89f78SBastian Köcher 	},
1168aec89f78SBastian Köcher };
1169aec89f78SBastian Köcher 
1170aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = {
1171aec89f78SBastian Köcher 	.halt_reg = 0x08c4,
1172aec89f78SBastian Köcher 	.clkr = {
1173aec89f78SBastian Köcher 		.enable_reg = 0x08c4,
1174aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1175*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1176aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup6_spi_apps_clk",
1177*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup6_spi_apps_clk_src.clkr.hw },
1178aec89f78SBastian Köcher 			.num_parents = 1,
1179aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1180aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1181aec89f78SBastian Köcher 		},
1182aec89f78SBastian Köcher 	},
1183aec89f78SBastian Köcher };
1184aec89f78SBastian Köcher 
1185aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart1_apps_clk = {
1186aec89f78SBastian Köcher 	.halt_reg = 0x0684,
1187aec89f78SBastian Köcher 	.clkr = {
1188aec89f78SBastian Köcher 		.enable_reg = 0x0684,
1189aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1190*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1191aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart1_apps_clk",
1192*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_uart1_apps_clk_src.clkr.hw },
1193aec89f78SBastian Köcher 			.num_parents = 1,
1194aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1195aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1196aec89f78SBastian Köcher 		},
1197aec89f78SBastian Köcher 	},
1198aec89f78SBastian Köcher };
1199aec89f78SBastian Köcher 
1200aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart2_apps_clk = {
1201aec89f78SBastian Köcher 	.halt_reg = 0x0704,
1202aec89f78SBastian Köcher 	.clkr = {
1203aec89f78SBastian Köcher 		.enable_reg = 0x0704,
1204aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1205*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1206aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart2_apps_clk",
1207*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_uart2_apps_clk_src.clkr.hw },
1208aec89f78SBastian Köcher 			.num_parents = 1,
1209aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1210aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1211aec89f78SBastian Köcher 		},
1212aec89f78SBastian Köcher 	},
1213aec89f78SBastian Köcher };
1214aec89f78SBastian Köcher 
1215aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart3_apps_clk = {
1216aec89f78SBastian Köcher 	.halt_reg = 0x0784,
1217aec89f78SBastian Köcher 	.clkr = {
1218aec89f78SBastian Köcher 		.enable_reg = 0x0784,
1219aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1220*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1221aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart3_apps_clk",
1222*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_uart3_apps_clk_src.clkr.hw },
1223aec89f78SBastian Köcher 			.num_parents = 1,
1224aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1225aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1226aec89f78SBastian Köcher 		},
1227aec89f78SBastian Köcher 	},
1228aec89f78SBastian Köcher };
1229aec89f78SBastian Köcher 
1230aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart4_apps_clk = {
1231aec89f78SBastian Köcher 	.halt_reg = 0x0804,
1232aec89f78SBastian Köcher 	.clkr = {
1233aec89f78SBastian Köcher 		.enable_reg = 0x0804,
1234aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1235*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1236aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart4_apps_clk",
1237*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_uart4_apps_clk_src.clkr.hw },
1238aec89f78SBastian Köcher 			.num_parents = 1,
1239aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1240aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1241aec89f78SBastian Köcher 		},
1242aec89f78SBastian Köcher 	},
1243aec89f78SBastian Köcher };
1244aec89f78SBastian Köcher 
1245aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart5_apps_clk = {
1246aec89f78SBastian Köcher 	.halt_reg = 0x0884,
1247aec89f78SBastian Köcher 	.clkr = {
1248aec89f78SBastian Köcher 		.enable_reg = 0x0884,
1249aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1250*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1251aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart5_apps_clk",
1252*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_uart5_apps_clk_src.clkr.hw },
1253aec89f78SBastian Köcher 			.num_parents = 1,
1254aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1255aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1256aec89f78SBastian Köcher 		},
1257aec89f78SBastian Köcher 	},
1258aec89f78SBastian Köcher };
1259aec89f78SBastian Köcher 
1260aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart6_apps_clk = {
1261aec89f78SBastian Köcher 	.halt_reg = 0x0904,
1262aec89f78SBastian Köcher 	.clkr = {
1263aec89f78SBastian Köcher 		.enable_reg = 0x0904,
1264aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1265*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1266aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart6_apps_clk",
1267*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_uart6_apps_clk_src.clkr.hw },
1268aec89f78SBastian Köcher 			.num_parents = 1,
1269aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1270aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1271aec89f78SBastian Köcher 		},
1272aec89f78SBastian Köcher 	},
1273aec89f78SBastian Köcher };
1274aec89f78SBastian Köcher 
1275aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_ahb_clk = {
1276aec89f78SBastian Köcher 	.halt_reg = 0x0944,
1277aec89f78SBastian Köcher 	.halt_check = BRANCH_HALT_VOTED,
1278aec89f78SBastian Köcher 	.clkr = {
1279aec89f78SBastian Köcher 		.enable_reg = 0x1484,
1280aec89f78SBastian Köcher 		.enable_mask = BIT(15),
1281*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1282aec89f78SBastian Köcher 			.name = "gcc_blsp2_ahb_clk",
1283aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1284aec89f78SBastian Köcher 		},
1285aec89f78SBastian Köcher 	},
1286aec89f78SBastian Köcher };
1287aec89f78SBastian Köcher 
1288aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup1_i2c_apps_clk = {
1289aec89f78SBastian Köcher 	.halt_reg = 0x0988,
1290aec89f78SBastian Köcher 	.clkr = {
1291aec89f78SBastian Köcher 		.enable_reg = 0x0988,
1292aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1293*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1294aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup1_i2c_apps_clk",
1295*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup1_i2c_apps_clk_src.clkr.hw },
1296aec89f78SBastian Köcher 			.num_parents = 1,
1297aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1298aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1299aec89f78SBastian Köcher 		},
1300aec89f78SBastian Köcher 	},
1301aec89f78SBastian Köcher };
1302aec89f78SBastian Köcher 
1303aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup1_spi_apps_clk = {
1304aec89f78SBastian Köcher 	.halt_reg = 0x0984,
1305aec89f78SBastian Köcher 	.clkr = {
1306aec89f78SBastian Köcher 		.enable_reg = 0x0984,
1307aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1308*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1309aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup1_spi_apps_clk",
1310*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup1_spi_apps_clk_src.clkr.hw },
1311aec89f78SBastian Köcher 			.num_parents = 1,
1312aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1313aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1314aec89f78SBastian Köcher 		},
1315aec89f78SBastian Köcher 	},
1316aec89f78SBastian Köcher };
1317aec89f78SBastian Köcher 
1318aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup2_i2c_apps_clk = {
1319aec89f78SBastian Köcher 	.halt_reg = 0x0a08,
1320aec89f78SBastian Köcher 	.clkr = {
1321aec89f78SBastian Köcher 		.enable_reg = 0x0a08,
1322aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1323*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1324aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup2_i2c_apps_clk",
1325*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup2_i2c_apps_clk_src.clkr.hw },
1326aec89f78SBastian Köcher 			.num_parents = 1,
1327aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1328aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1329aec89f78SBastian Köcher 		},
1330aec89f78SBastian Köcher 	},
1331aec89f78SBastian Köcher };
1332aec89f78SBastian Köcher 
1333aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup2_spi_apps_clk = {
1334aec89f78SBastian Köcher 	.halt_reg = 0x0a04,
1335aec89f78SBastian Köcher 	.clkr = {
1336aec89f78SBastian Köcher 		.enable_reg = 0x0a04,
1337aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1338*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1339aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup2_spi_apps_clk",
1340*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup2_spi_apps_clk_src.clkr.hw },
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_blsp2_qup3_i2c_apps_clk = {
1349aec89f78SBastian Köcher 	.halt_reg = 0x0a88,
1350aec89f78SBastian Köcher 	.clkr = {
1351aec89f78SBastian Köcher 		.enable_reg = 0x0a88,
1352aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1353*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1354aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup3_i2c_apps_clk",
1355*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup3_i2c_apps_clk_src.clkr.hw },
1356aec89f78SBastian Köcher 			.num_parents = 1,
1357aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1358aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1359aec89f78SBastian Köcher 		},
1360aec89f78SBastian Köcher 	},
1361aec89f78SBastian Köcher };
1362aec89f78SBastian Köcher 
1363aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup3_spi_apps_clk = {
1364aec89f78SBastian Köcher 	.halt_reg = 0x0a84,
1365aec89f78SBastian Köcher 	.clkr = {
1366aec89f78SBastian Köcher 		.enable_reg = 0x0a84,
1367aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1368*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1369aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup3_spi_apps_clk",
1370*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup3_spi_apps_clk_src.clkr.hw },
1371aec89f78SBastian Köcher 			.num_parents = 1,
1372aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1373aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1374aec89f78SBastian Köcher 		},
1375aec89f78SBastian Köcher 	},
1376aec89f78SBastian Köcher };
1377aec89f78SBastian Köcher 
1378aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup4_i2c_apps_clk = {
1379aec89f78SBastian Köcher 	.halt_reg = 0x0b08,
1380aec89f78SBastian Köcher 	.clkr = {
1381aec89f78SBastian Köcher 		.enable_reg = 0x0b08,
1382aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1383*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1384aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup4_i2c_apps_clk",
1385*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup4_i2c_apps_clk_src.clkr.hw },
1386aec89f78SBastian Köcher 			.num_parents = 1,
1387aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1388aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1389aec89f78SBastian Köcher 		},
1390aec89f78SBastian Köcher 	},
1391aec89f78SBastian Köcher };
1392aec89f78SBastian Köcher 
1393aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup4_spi_apps_clk = {
1394aec89f78SBastian Köcher 	.halt_reg = 0x0b04,
1395aec89f78SBastian Köcher 	.clkr = {
1396aec89f78SBastian Köcher 		.enable_reg = 0x0b04,
1397aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1398*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1399aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup4_spi_apps_clk",
1400*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup4_spi_apps_clk_src.clkr.hw },
1401aec89f78SBastian Köcher 			.num_parents = 1,
1402aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1403aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1404aec89f78SBastian Köcher 		},
1405aec89f78SBastian Köcher 	},
1406aec89f78SBastian Köcher };
1407aec89f78SBastian Köcher 
1408aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup5_i2c_apps_clk = {
1409aec89f78SBastian Köcher 	.halt_reg = 0x0b88,
1410aec89f78SBastian Köcher 	.clkr = {
1411aec89f78SBastian Köcher 		.enable_reg = 0x0b88,
1412aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1413*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1414aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup5_i2c_apps_clk",
1415*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup5_i2c_apps_clk_src.clkr.hw },
1416aec89f78SBastian Köcher 			.num_parents = 1,
1417aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1418aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1419aec89f78SBastian Köcher 		},
1420aec89f78SBastian Köcher 	},
1421aec89f78SBastian Köcher };
1422aec89f78SBastian Köcher 
1423aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup5_spi_apps_clk = {
1424aec89f78SBastian Köcher 	.halt_reg = 0x0b84,
1425aec89f78SBastian Köcher 	.clkr = {
1426aec89f78SBastian Köcher 		.enable_reg = 0x0b84,
1427aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1428*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1429aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup5_spi_apps_clk",
1430*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup5_spi_apps_clk_src.clkr.hw },
1431aec89f78SBastian Köcher 			.num_parents = 1,
1432aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1433aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1434aec89f78SBastian Köcher 		},
1435aec89f78SBastian Köcher 	},
1436aec89f78SBastian Köcher };
1437aec89f78SBastian Köcher 
1438aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup6_i2c_apps_clk = {
1439aec89f78SBastian Köcher 	.halt_reg = 0x0c08,
1440aec89f78SBastian Köcher 	.clkr = {
1441aec89f78SBastian Köcher 		.enable_reg = 0x0c08,
1442aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1443*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1444aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup6_i2c_apps_clk",
1445*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup6_i2c_apps_clk_src.clkr.hw },
1446aec89f78SBastian Köcher 			.num_parents = 1,
1447aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1448aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1449aec89f78SBastian Köcher 		},
1450aec89f78SBastian Köcher 	},
1451aec89f78SBastian Köcher };
1452aec89f78SBastian Köcher 
1453aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup6_spi_apps_clk = {
1454aec89f78SBastian Köcher 	.halt_reg = 0x0c04,
1455aec89f78SBastian Köcher 	.clkr = {
1456aec89f78SBastian Köcher 		.enable_reg = 0x0c04,
1457aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1458*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1459aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup6_spi_apps_clk",
1460*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup6_spi_apps_clk_src.clkr.hw },
1461aec89f78SBastian Köcher 			.num_parents = 1,
1462aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1463aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1464aec89f78SBastian Köcher 		},
1465aec89f78SBastian Köcher 	},
1466aec89f78SBastian Köcher };
1467aec89f78SBastian Köcher 
1468aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart1_apps_clk = {
1469aec89f78SBastian Köcher 	.halt_reg = 0x09c4,
1470aec89f78SBastian Köcher 	.clkr = {
1471aec89f78SBastian Köcher 		.enable_reg = 0x09c4,
1472aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1473*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1474aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart1_apps_clk",
1475*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_uart1_apps_clk_src.clkr.hw },
1476aec89f78SBastian Köcher 			.num_parents = 1,
1477aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1478aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1479aec89f78SBastian Köcher 		},
1480aec89f78SBastian Köcher 	},
1481aec89f78SBastian Köcher };
1482aec89f78SBastian Köcher 
1483aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart2_apps_clk = {
1484aec89f78SBastian Köcher 	.halt_reg = 0x0a44,
1485aec89f78SBastian Köcher 	.clkr = {
1486aec89f78SBastian Köcher 		.enable_reg = 0x0a44,
1487aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1488*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1489aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart2_apps_clk",
1490*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_uart2_apps_clk_src.clkr.hw },
1491aec89f78SBastian Köcher 			.num_parents = 1,
1492aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1493aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1494aec89f78SBastian Köcher 		},
1495aec89f78SBastian Köcher 	},
1496aec89f78SBastian Köcher };
1497aec89f78SBastian Köcher 
1498aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart3_apps_clk = {
1499aec89f78SBastian Köcher 	.halt_reg = 0x0ac4,
1500aec89f78SBastian Köcher 	.clkr = {
1501aec89f78SBastian Köcher 		.enable_reg = 0x0ac4,
1502aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1503*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1504aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart3_apps_clk",
1505*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_uart3_apps_clk_src.clkr.hw },
1506aec89f78SBastian Köcher 			.num_parents = 1,
1507aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1508aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1509aec89f78SBastian Köcher 		},
1510aec89f78SBastian Köcher 	},
1511aec89f78SBastian Köcher };
1512aec89f78SBastian Köcher 
1513aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart4_apps_clk = {
1514aec89f78SBastian Köcher 	.halt_reg = 0x0b44,
1515aec89f78SBastian Köcher 	.clkr = {
1516aec89f78SBastian Köcher 		.enable_reg = 0x0b44,
1517aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1518*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1519aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart4_apps_clk",
1520*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_uart4_apps_clk_src.clkr.hw },
1521aec89f78SBastian Köcher 			.num_parents = 1,
1522aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1523aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1524aec89f78SBastian Köcher 		},
1525aec89f78SBastian Köcher 	},
1526aec89f78SBastian Köcher };
1527aec89f78SBastian Köcher 
1528aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart5_apps_clk = {
1529aec89f78SBastian Köcher 	.halt_reg = 0x0bc4,
1530aec89f78SBastian Köcher 	.clkr = {
1531aec89f78SBastian Köcher 		.enable_reg = 0x0bc4,
1532aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1533*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1534aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart5_apps_clk",
1535*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_uart5_apps_clk_src.clkr.hw },
1536aec89f78SBastian Köcher 			.num_parents = 1,
1537aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1538aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1539aec89f78SBastian Köcher 		},
1540aec89f78SBastian Köcher 	},
1541aec89f78SBastian Köcher };
1542aec89f78SBastian Köcher 
1543aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart6_apps_clk = {
1544aec89f78SBastian Köcher 	.halt_reg = 0x0c44,
1545aec89f78SBastian Köcher 	.clkr = {
1546aec89f78SBastian Köcher 		.enable_reg = 0x0c44,
1547aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1548*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1549aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart6_apps_clk",
1550*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_uart6_apps_clk_src.clkr.hw },
1551aec89f78SBastian Köcher 			.num_parents = 1,
1552aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1553aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1554aec89f78SBastian Köcher 		},
1555aec89f78SBastian Köcher 	},
1556aec89f78SBastian Köcher };
1557aec89f78SBastian Köcher 
1558aec89f78SBastian Köcher static struct clk_branch gcc_gp1_clk = {
1559aec89f78SBastian Köcher 	.halt_reg = 0x1900,
1560aec89f78SBastian Köcher 	.clkr = {
1561aec89f78SBastian Köcher 		.enable_reg = 0x1900,
1562aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1563*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1564aec89f78SBastian Köcher 			.name = "gcc_gp1_clk",
1565*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &gp1_clk_src.clkr.hw },
1566aec89f78SBastian Köcher 			.num_parents = 1,
1567aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1568aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1569aec89f78SBastian Köcher 		},
1570aec89f78SBastian Köcher 	},
1571aec89f78SBastian Köcher };
1572aec89f78SBastian Köcher 
1573aec89f78SBastian Köcher static struct clk_branch gcc_gp2_clk = {
1574aec89f78SBastian Köcher 	.halt_reg = 0x1940,
1575aec89f78SBastian Köcher 	.clkr = {
1576aec89f78SBastian Köcher 		.enable_reg = 0x1940,
1577aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1578*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1579aec89f78SBastian Köcher 			.name = "gcc_gp2_clk",
1580*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &gp2_clk_src.clkr.hw },
1581aec89f78SBastian Köcher 			.num_parents = 1,
1582aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1583aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1584aec89f78SBastian Köcher 		},
1585aec89f78SBastian Köcher 	},
1586aec89f78SBastian Köcher };
1587aec89f78SBastian Köcher 
1588aec89f78SBastian Köcher static struct clk_branch gcc_gp3_clk = {
1589aec89f78SBastian Köcher 	.halt_reg = 0x1980,
1590aec89f78SBastian Köcher 	.clkr = {
1591aec89f78SBastian Köcher 		.enable_reg = 0x1980,
1592aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1593*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1594aec89f78SBastian Köcher 			.name = "gcc_gp3_clk",
1595*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &gp3_clk_src.clkr.hw },
1596aec89f78SBastian Köcher 			.num_parents = 1,
1597aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1598aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1599aec89f78SBastian Köcher 		},
1600aec89f78SBastian Köcher 	},
1601aec89f78SBastian Köcher };
1602aec89f78SBastian Köcher 
16038c18b41bSKonrad Dybcio static struct clk_branch gcc_lpass_q6_axi_clk = {
16048c18b41bSKonrad Dybcio 	.halt_reg = 0x0280,
16058c18b41bSKonrad Dybcio 	.clkr = {
16068c18b41bSKonrad Dybcio 		.enable_reg = 0x0280,
16078c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
1608*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
16098c18b41bSKonrad Dybcio 			.name = "gcc_lpass_q6_axi_clk",
16108c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
16118c18b41bSKonrad Dybcio 		},
16128c18b41bSKonrad Dybcio 	},
16138c18b41bSKonrad Dybcio };
16148c18b41bSKonrad Dybcio 
16158c18b41bSKonrad Dybcio static struct clk_branch gcc_mss_q6_bimc_axi_clk = {
16168c18b41bSKonrad Dybcio 	.halt_reg = 0x0284,
16178c18b41bSKonrad Dybcio 	.clkr = {
16188c18b41bSKonrad Dybcio 		.enable_reg = 0x0284,
16198c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
1620*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
16218c18b41bSKonrad Dybcio 			.name = "gcc_mss_q6_bimc_axi_clk",
16228c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
16238c18b41bSKonrad Dybcio 		},
16248c18b41bSKonrad Dybcio 	},
16258c18b41bSKonrad Dybcio };
16268c18b41bSKonrad Dybcio 
1627aec89f78SBastian Köcher static struct clk_branch gcc_pcie_0_aux_clk = {
1628aec89f78SBastian Köcher 	.halt_reg = 0x1ad4,
1629aec89f78SBastian Köcher 	.clkr = {
1630aec89f78SBastian Köcher 		.enable_reg = 0x1ad4,
1631aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1632*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1633aec89f78SBastian Köcher 			.name = "gcc_pcie_0_aux_clk",
1634*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &pcie_0_aux_clk_src.clkr.hw },
1635aec89f78SBastian Köcher 			.num_parents = 1,
1636aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1637aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1638aec89f78SBastian Köcher 		},
1639aec89f78SBastian Köcher 	},
1640aec89f78SBastian Köcher };
1641aec89f78SBastian Köcher 
16428c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_cfg_ahb_clk = {
16438c18b41bSKonrad Dybcio 	.halt_reg = 0x1ad0,
16448c18b41bSKonrad Dybcio 	.clkr = {
16458c18b41bSKonrad Dybcio 		.enable_reg = 0x1ad0,
16468c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
1647*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
16488c18b41bSKonrad Dybcio 			.name = "gcc_pcie_0_cfg_ahb_clk",
16498c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
16508c18b41bSKonrad Dybcio 		},
16518c18b41bSKonrad Dybcio 	},
16528c18b41bSKonrad Dybcio };
16538c18b41bSKonrad Dybcio 
16548c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_mstr_axi_clk = {
16558c18b41bSKonrad Dybcio 	.halt_reg = 0x1acc,
16568c18b41bSKonrad Dybcio 	.clkr = {
16578c18b41bSKonrad Dybcio 		.enable_reg = 0x1acc,
16588c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
1659*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
16608c18b41bSKonrad Dybcio 			.name = "gcc_pcie_0_mstr_axi_clk",
16618c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
16628c18b41bSKonrad Dybcio 		},
16638c18b41bSKonrad Dybcio 	},
16648c18b41bSKonrad Dybcio };
16658c18b41bSKonrad Dybcio 
1666aec89f78SBastian Köcher static struct clk_branch gcc_pcie_0_pipe_clk = {
1667aec89f78SBastian Köcher 	.halt_reg = 0x1ad8,
1668aec89f78SBastian Köcher 	.halt_check = BRANCH_HALT_DELAY,
1669aec89f78SBastian Köcher 	.clkr = {
1670aec89f78SBastian Köcher 		.enable_reg = 0x1ad8,
1671aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1672*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1673aec89f78SBastian Köcher 			.name = "gcc_pcie_0_pipe_clk",
1674*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &pcie_0_pipe_clk_src.clkr.hw },
1675aec89f78SBastian Köcher 			.num_parents = 1,
1676aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1677aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1678aec89f78SBastian Köcher 		},
1679aec89f78SBastian Köcher 	},
1680aec89f78SBastian Köcher };
1681aec89f78SBastian Köcher 
16828c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_slv_axi_clk = {
16838c18b41bSKonrad Dybcio 	.halt_reg = 0x1ac8,
16848c18b41bSKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
16858c18b41bSKonrad Dybcio 	.clkr = {
16868c18b41bSKonrad Dybcio 		.enable_reg = 0x1ac8,
16878c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
1688*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
16898c18b41bSKonrad Dybcio 			.name = "gcc_pcie_0_slv_axi_clk",
16908c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
16918c18b41bSKonrad Dybcio 		},
16928c18b41bSKonrad Dybcio 	},
16938c18b41bSKonrad Dybcio };
16948c18b41bSKonrad Dybcio 
1695aec89f78SBastian Köcher static struct clk_branch gcc_pcie_1_aux_clk = {
1696aec89f78SBastian Köcher 	.halt_reg = 0x1b54,
1697aec89f78SBastian Köcher 	.clkr = {
1698aec89f78SBastian Köcher 		.enable_reg = 0x1b54,
1699aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1700*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1701aec89f78SBastian Köcher 			.name = "gcc_pcie_1_aux_clk",
1702*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &pcie_1_aux_clk_src.clkr.hw },
1703aec89f78SBastian Köcher 			.num_parents = 1,
1704aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1705aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1706aec89f78SBastian Köcher 		},
1707aec89f78SBastian Köcher 	},
1708aec89f78SBastian Köcher };
1709aec89f78SBastian Köcher 
17108c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_cfg_ahb_clk = {
17118c18b41bSKonrad Dybcio 	.halt_reg = 0x1b54,
17128c18b41bSKonrad Dybcio 	.clkr = {
17138c18b41bSKonrad Dybcio 		.enable_reg = 0x1b54,
17148c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
1715*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
17168c18b41bSKonrad Dybcio 			.name = "gcc_pcie_1_cfg_ahb_clk",
17178c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
17188c18b41bSKonrad Dybcio 		},
17198c18b41bSKonrad Dybcio 	},
17208c18b41bSKonrad Dybcio };
17218c18b41bSKonrad Dybcio 
17228c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_mstr_axi_clk = {
17238c18b41bSKonrad Dybcio 	.halt_reg = 0x1b50,
17248c18b41bSKonrad Dybcio 	.clkr = {
17258c18b41bSKonrad Dybcio 		.enable_reg = 0x1b50,
17268c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
1727*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
17288c18b41bSKonrad Dybcio 			.name = "gcc_pcie_1_mstr_axi_clk",
17298c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
17308c18b41bSKonrad Dybcio 		},
17318c18b41bSKonrad Dybcio 	},
17328c18b41bSKonrad Dybcio };
17338c18b41bSKonrad Dybcio 
1734aec89f78SBastian Köcher static struct clk_branch gcc_pcie_1_pipe_clk = {
1735aec89f78SBastian Köcher 	.halt_reg = 0x1b58,
1736aec89f78SBastian Köcher 	.halt_check = BRANCH_HALT_DELAY,
1737aec89f78SBastian Köcher 	.clkr = {
1738aec89f78SBastian Köcher 		.enable_reg = 0x1b58,
1739aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1740*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1741aec89f78SBastian Köcher 			.name = "gcc_pcie_1_pipe_clk",
1742*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &pcie_1_pipe_clk_src.clkr.hw },
1743aec89f78SBastian Köcher 			.num_parents = 1,
1744aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1745aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1746aec89f78SBastian Köcher 		},
1747aec89f78SBastian Köcher 	},
1748aec89f78SBastian Köcher };
1749aec89f78SBastian Köcher 
17508c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_slv_axi_clk = {
17518c18b41bSKonrad Dybcio 	.halt_reg = 0x1b48,
17528c18b41bSKonrad Dybcio 	.clkr = {
17538c18b41bSKonrad Dybcio 		.enable_reg = 0x1b48,
17548c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
1755*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
17568c18b41bSKonrad Dybcio 			.name = "gcc_pcie_1_slv_axi_clk",
17578c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
17588c18b41bSKonrad Dybcio 		},
17598c18b41bSKonrad Dybcio 	},
17608c18b41bSKonrad Dybcio };
17618c18b41bSKonrad Dybcio 
1762aec89f78SBastian Köcher static struct clk_branch gcc_pdm2_clk = {
1763aec89f78SBastian Köcher 	.halt_reg = 0x0ccc,
1764aec89f78SBastian Köcher 	.clkr = {
1765aec89f78SBastian Köcher 		.enable_reg = 0x0ccc,
1766aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1767*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1768aec89f78SBastian Köcher 			.name = "gcc_pdm2_clk",
1769*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &pdm2_clk_src.clkr.hw },
1770aec89f78SBastian Köcher 			.num_parents = 1,
1771aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1772aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1773aec89f78SBastian Köcher 		},
1774aec89f78SBastian Köcher 	},
1775aec89f78SBastian Köcher };
1776aec89f78SBastian Köcher 
17778c18b41bSKonrad Dybcio static struct clk_branch gcc_pdm_ahb_clk = {
17788c18b41bSKonrad Dybcio 	.halt_reg = 0x0cc4,
17798c18b41bSKonrad Dybcio 	.clkr = {
17808c18b41bSKonrad Dybcio 		.enable_reg = 0x0cc4,
17818c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
1782*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
17838c18b41bSKonrad Dybcio 			.name = "gcc_pdm_ahb_clk",
17848c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
17858c18b41bSKonrad Dybcio 		},
17868c18b41bSKonrad Dybcio 	},
17878c18b41bSKonrad Dybcio };
17888c18b41bSKonrad Dybcio 
1789aec89f78SBastian Köcher static struct clk_branch gcc_sdcc1_apps_clk = {
1790aec89f78SBastian Köcher 	.halt_reg = 0x04c4,
1791aec89f78SBastian Köcher 	.clkr = {
1792aec89f78SBastian Köcher 		.enable_reg = 0x04c4,
1793aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1794*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1795aec89f78SBastian Köcher 			.name = "gcc_sdcc1_apps_clk",
1796*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &sdcc1_apps_clk_src.clkr.hw },
1797aec89f78SBastian Köcher 			.num_parents = 1,
1798aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1799aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1800aec89f78SBastian Köcher 		},
1801aec89f78SBastian Köcher 	},
1802aec89f78SBastian Köcher };
1803aec89f78SBastian Köcher 
1804eaff16bcSJeremy McNicoll static struct clk_branch gcc_sdcc1_ahb_clk = {
1805eaff16bcSJeremy McNicoll 	.halt_reg = 0x04c8,
1806eaff16bcSJeremy McNicoll 	.clkr = {
1807eaff16bcSJeremy McNicoll 		.enable_reg = 0x04c8,
1808eaff16bcSJeremy McNicoll 		.enable_mask = BIT(0),
1809*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1810eaff16bcSJeremy McNicoll 			.name = "gcc_sdcc1_ahb_clk",
1811eaff16bcSJeremy McNicoll 			.parent_names = (const char *[]){
1812eaff16bcSJeremy McNicoll 				"periph_noc_clk_src",
1813eaff16bcSJeremy McNicoll 			},
1814eaff16bcSJeremy McNicoll 			.num_parents = 1,
1815eaff16bcSJeremy McNicoll 			.ops = &clk_branch2_ops,
1816eaff16bcSJeremy McNicoll 		},
1817eaff16bcSJeremy McNicoll 	},
1818eaff16bcSJeremy McNicoll };
1819eaff16bcSJeremy McNicoll 
18208c18b41bSKonrad Dybcio static struct clk_branch gcc_sdcc2_ahb_clk = {
18218c18b41bSKonrad Dybcio 	.halt_reg = 0x0508,
18228c18b41bSKonrad Dybcio 	.clkr = {
18238c18b41bSKonrad Dybcio 		.enable_reg = 0x0508,
18248c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
1825*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
18268c18b41bSKonrad Dybcio 			.name = "gcc_sdcc2_ahb_clk",
18278c18b41bSKonrad Dybcio 			.parent_names = (const char *[]){
18288c18b41bSKonrad Dybcio 				"periph_noc_clk_src",
18298c18b41bSKonrad Dybcio 			},
18308c18b41bSKonrad Dybcio 			.num_parents = 1,
18318c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
18328c18b41bSKonrad Dybcio 		},
18338c18b41bSKonrad Dybcio 	},
18348c18b41bSKonrad Dybcio };
18358c18b41bSKonrad Dybcio 
1836aec89f78SBastian Köcher static struct clk_branch gcc_sdcc2_apps_clk = {
1837aec89f78SBastian Köcher 	.halt_reg = 0x0504,
1838aec89f78SBastian Köcher 	.clkr = {
1839aec89f78SBastian Köcher 		.enable_reg = 0x0504,
1840aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1841*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1842aec89f78SBastian Köcher 			.name = "gcc_sdcc2_apps_clk",
1843*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &sdcc2_apps_clk_src.clkr.hw },
1844aec89f78SBastian Köcher 			.num_parents = 1,
1845aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1846aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1847aec89f78SBastian Köcher 		},
1848aec89f78SBastian Köcher 	},
1849aec89f78SBastian Köcher };
1850aec89f78SBastian Köcher 
18518c18b41bSKonrad Dybcio static struct clk_branch gcc_sdcc3_ahb_clk = {
18528c18b41bSKonrad Dybcio 	.halt_reg = 0x0548,
18538c18b41bSKonrad Dybcio 	.clkr = {
18548c18b41bSKonrad Dybcio 		.enable_reg = 0x0548,
18558c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
1856*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
18578c18b41bSKonrad Dybcio 			.name = "gcc_sdcc3_ahb_clk",
18588c18b41bSKonrad Dybcio 			.parent_names = (const char *[]){
18598c18b41bSKonrad Dybcio 				"periph_noc_clk_src",
18608c18b41bSKonrad Dybcio 			},
18618c18b41bSKonrad Dybcio 			.num_parents = 1,
18628c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
18638c18b41bSKonrad Dybcio 		},
18648c18b41bSKonrad Dybcio 	},
18658c18b41bSKonrad Dybcio };
18668c18b41bSKonrad Dybcio 
1867aec89f78SBastian Köcher static struct clk_branch gcc_sdcc3_apps_clk = {
1868aec89f78SBastian Köcher 	.halt_reg = 0x0544,
1869aec89f78SBastian Köcher 	.clkr = {
1870aec89f78SBastian Köcher 		.enable_reg = 0x0544,
1871aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1872*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1873aec89f78SBastian Köcher 			.name = "gcc_sdcc3_apps_clk",
1874*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &sdcc3_apps_clk_src.clkr.hw },
1875aec89f78SBastian Köcher 			.num_parents = 1,
1876aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1877aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1878aec89f78SBastian Köcher 		},
1879aec89f78SBastian Köcher 	},
1880aec89f78SBastian Köcher };
1881aec89f78SBastian Köcher 
18828c18b41bSKonrad Dybcio static struct clk_branch gcc_sdcc4_ahb_clk = {
18838c18b41bSKonrad Dybcio 	.halt_reg = 0x0588,
18848c18b41bSKonrad Dybcio 	.clkr = {
18858c18b41bSKonrad Dybcio 		.enable_reg = 0x0588,
18868c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
1887*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
18888c18b41bSKonrad Dybcio 			.name = "gcc_sdcc4_ahb_clk",
18898c18b41bSKonrad Dybcio 			.parent_names = (const char *[]){
18908c18b41bSKonrad Dybcio 				"periph_noc_clk_src",
18918c18b41bSKonrad Dybcio 			},
18928c18b41bSKonrad Dybcio 			.num_parents = 1,
18938c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
18948c18b41bSKonrad Dybcio 		},
18958c18b41bSKonrad Dybcio 	},
18968c18b41bSKonrad Dybcio };
18978c18b41bSKonrad Dybcio 
1898aec89f78SBastian Köcher static struct clk_branch gcc_sdcc4_apps_clk = {
1899aec89f78SBastian Köcher 	.halt_reg = 0x0584,
1900aec89f78SBastian Köcher 	.clkr = {
1901aec89f78SBastian Köcher 		.enable_reg = 0x0584,
1902aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1903*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1904aec89f78SBastian Köcher 			.name = "gcc_sdcc4_apps_clk",
1905*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &sdcc4_apps_clk_src.clkr.hw },
1906aec89f78SBastian Köcher 			.num_parents = 1,
1907aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1908aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1909aec89f78SBastian Köcher 		},
1910aec89f78SBastian Köcher 	},
1911aec89f78SBastian Köcher };
1912aec89f78SBastian Köcher 
1913aec89f78SBastian Köcher static struct clk_branch gcc_sys_noc_ufs_axi_clk = {
1914aec89f78SBastian Köcher 	.halt_reg = 0x1d7c,
1915aec89f78SBastian Köcher 	.clkr = {
1916aec89f78SBastian Köcher 		.enable_reg = 0x1d7c,
1917aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1918*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1919aec89f78SBastian Köcher 			.name = "gcc_sys_noc_ufs_axi_clk",
1920*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw },
1921aec89f78SBastian Köcher 			.num_parents = 1,
1922aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1923aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1924aec89f78SBastian Köcher 		},
1925aec89f78SBastian Köcher 	},
1926aec89f78SBastian Köcher };
1927aec89f78SBastian Köcher 
1928aec89f78SBastian Köcher static struct clk_branch gcc_sys_noc_usb3_axi_clk = {
1929aec89f78SBastian Köcher 	.halt_reg = 0x03fc,
1930aec89f78SBastian Köcher 	.clkr = {
1931aec89f78SBastian Köcher 		.enable_reg = 0x03fc,
1932aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1933*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1934aec89f78SBastian Köcher 			.name = "gcc_sys_noc_usb3_axi_clk",
1935*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &usb30_master_clk_src.clkr.hw },
1936aec89f78SBastian Köcher 			.num_parents = 1,
1937aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1938aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1939aec89f78SBastian Köcher 		},
1940aec89f78SBastian Köcher 	},
1941aec89f78SBastian Köcher };
1942aec89f78SBastian Köcher 
19438c18b41bSKonrad Dybcio static struct clk_branch gcc_tsif_ahb_clk = {
19448c18b41bSKonrad Dybcio 	.halt_reg = 0x0d84,
19458c18b41bSKonrad Dybcio 	.clkr = {
19468c18b41bSKonrad Dybcio 		.enable_reg = 0x0d84,
19478c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
1948*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
19498c18b41bSKonrad Dybcio 			.name = "gcc_tsif_ahb_clk",
19508c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
19518c18b41bSKonrad Dybcio 		},
19528c18b41bSKonrad Dybcio 	},
19538c18b41bSKonrad Dybcio };
19548c18b41bSKonrad Dybcio 
1955aec89f78SBastian Köcher static struct clk_branch gcc_tsif_ref_clk = {
1956aec89f78SBastian Köcher 	.halt_reg = 0x0d88,
1957aec89f78SBastian Köcher 	.clkr = {
1958aec89f78SBastian Köcher 		.enable_reg = 0x0d88,
1959aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1960*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1961aec89f78SBastian Köcher 			.name = "gcc_tsif_ref_clk",
1962*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &tsif_ref_clk_src.clkr.hw },
1963aec89f78SBastian Köcher 			.num_parents = 1,
1964aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1965aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1966aec89f78SBastian Köcher 		},
1967aec89f78SBastian Köcher 	},
1968aec89f78SBastian Köcher };
1969aec89f78SBastian Köcher 
19708c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_ahb_clk = {
19718c18b41bSKonrad Dybcio 	.halt_reg = 0x1d4c,
19728c18b41bSKonrad Dybcio 	.clkr = {
19738c18b41bSKonrad Dybcio 		.enable_reg = 0x1d4c,
19748c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
1975*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
19768c18b41bSKonrad Dybcio 			.name = "gcc_ufs_ahb_clk",
19778c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
19788c18b41bSKonrad Dybcio 		},
19798c18b41bSKonrad Dybcio 	},
19808c18b41bSKonrad Dybcio };
19818c18b41bSKonrad Dybcio 
1982aec89f78SBastian Köcher static struct clk_branch gcc_ufs_axi_clk = {
1983aec89f78SBastian Köcher 	.halt_reg = 0x1d48,
1984aec89f78SBastian Köcher 	.clkr = {
1985aec89f78SBastian Köcher 		.enable_reg = 0x1d48,
1986aec89f78SBastian Köcher 		.enable_mask = BIT(0),
1987*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1988aec89f78SBastian Köcher 			.name = "gcc_ufs_axi_clk",
1989*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw },
1990aec89f78SBastian Köcher 			.num_parents = 1,
1991aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1992aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1993aec89f78SBastian Köcher 		},
1994aec89f78SBastian Köcher 	},
1995aec89f78SBastian Köcher };
1996aec89f78SBastian Köcher 
1997aec89f78SBastian Köcher static struct clk_branch gcc_ufs_rx_cfg_clk = {
1998aec89f78SBastian Köcher 	.halt_reg = 0x1d54,
1999aec89f78SBastian Köcher 	.clkr = {
2000aec89f78SBastian Köcher 		.enable_reg = 0x1d54,
2001aec89f78SBastian Köcher 		.enable_mask = BIT(0),
2002*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2003aec89f78SBastian Köcher 			.name = "gcc_ufs_rx_cfg_clk",
2004*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw },
2005aec89f78SBastian Köcher 			.num_parents = 1,
2006aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2007aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2008aec89f78SBastian Köcher 		},
2009aec89f78SBastian Köcher 	},
2010aec89f78SBastian Köcher };
2011aec89f78SBastian Köcher 
20128c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_rx_symbol_0_clk = {
20138c18b41bSKonrad Dybcio 	.halt_reg = 0x1d60,
20148c18b41bSKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
20158c18b41bSKonrad Dybcio 	.clkr = {
20168c18b41bSKonrad Dybcio 		.enable_reg = 0x1d60,
20178c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
2018*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
20198c18b41bSKonrad Dybcio 			.name = "gcc_ufs_rx_symbol_0_clk",
20208c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
20218c18b41bSKonrad Dybcio 		},
20228c18b41bSKonrad Dybcio 	},
20238c18b41bSKonrad Dybcio };
20248c18b41bSKonrad Dybcio 
20258c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_rx_symbol_1_clk = {
20268c18b41bSKonrad Dybcio 	.halt_reg = 0x1d64,
20278c18b41bSKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
20288c18b41bSKonrad Dybcio 	.clkr = {
20298c18b41bSKonrad Dybcio 		.enable_reg = 0x1d64,
20308c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
2031*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
20328c18b41bSKonrad Dybcio 			.name = "gcc_ufs_rx_symbol_1_clk",
20338c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
20348c18b41bSKonrad Dybcio 		},
20358c18b41bSKonrad Dybcio 	},
20368c18b41bSKonrad Dybcio };
20378c18b41bSKonrad Dybcio 
2038aec89f78SBastian Köcher static struct clk_branch gcc_ufs_tx_cfg_clk = {
2039aec89f78SBastian Köcher 	.halt_reg = 0x1d50,
2040aec89f78SBastian Köcher 	.clkr = {
2041aec89f78SBastian Köcher 		.enable_reg = 0x1d50,
2042aec89f78SBastian Köcher 		.enable_mask = BIT(0),
2043*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2044aec89f78SBastian Köcher 			.name = "gcc_ufs_tx_cfg_clk",
2045*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw },
2046aec89f78SBastian Köcher 			.num_parents = 1,
2047aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2048aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2049aec89f78SBastian Köcher 		},
2050aec89f78SBastian Köcher 	},
2051aec89f78SBastian Köcher };
2052aec89f78SBastian Köcher 
20538c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_tx_symbol_0_clk = {
20548c18b41bSKonrad Dybcio 	.halt_reg = 0x1d58,
20558c18b41bSKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
20568c18b41bSKonrad Dybcio 	.clkr = {
20578c18b41bSKonrad Dybcio 		.enable_reg = 0x1d58,
20588c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
2059*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
20608c18b41bSKonrad Dybcio 			.name = "gcc_ufs_tx_symbol_0_clk",
20618c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
20628c18b41bSKonrad Dybcio 		},
20638c18b41bSKonrad Dybcio 	},
20648c18b41bSKonrad Dybcio };
20658c18b41bSKonrad Dybcio 
20668c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_tx_symbol_1_clk = {
20678c18b41bSKonrad Dybcio 	.halt_reg = 0x1d5c,
20688c18b41bSKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
20698c18b41bSKonrad Dybcio 	.clkr = {
20708c18b41bSKonrad Dybcio 		.enable_reg = 0x1d5c,
20718c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
2072*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
20738c18b41bSKonrad Dybcio 			.name = "gcc_ufs_tx_symbol_1_clk",
20748c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
20758c18b41bSKonrad Dybcio 		},
20768c18b41bSKonrad Dybcio 	},
20778c18b41bSKonrad Dybcio };
20788c18b41bSKonrad Dybcio 
20798c18b41bSKonrad Dybcio static struct clk_branch gcc_usb2_hs_phy_sleep_clk = {
20808c18b41bSKonrad Dybcio 	.halt_reg = 0x04ac,
20818c18b41bSKonrad Dybcio 	.clkr = {
20828c18b41bSKonrad Dybcio 		.enable_reg = 0x04ac,
20838c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
2084*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
20858c18b41bSKonrad Dybcio 			.name = "gcc_usb2_hs_phy_sleep_clk",
2086*0519d1d0SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
2087*0519d1d0SKonrad Dybcio 				.fw_name = "sleep",
2088*0519d1d0SKonrad Dybcio 				.name = "sleep"
2089*0519d1d0SKonrad Dybcio 			},
2090*0519d1d0SKonrad Dybcio 			.num_parents = 1,
20918c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
20928c18b41bSKonrad Dybcio 		},
20938c18b41bSKonrad Dybcio 	},
20948c18b41bSKonrad Dybcio };
20958c18b41bSKonrad Dybcio 
2096aec89f78SBastian Köcher static struct clk_branch gcc_usb30_master_clk = {
2097aec89f78SBastian Köcher 	.halt_reg = 0x03c8,
2098aec89f78SBastian Köcher 	.clkr = {
2099aec89f78SBastian Köcher 		.enable_reg = 0x03c8,
2100aec89f78SBastian Köcher 		.enable_mask = BIT(0),
2101*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2102aec89f78SBastian Köcher 			.name = "gcc_usb30_master_clk",
2103*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &usb30_master_clk_src.clkr.hw },
2104aec89f78SBastian Köcher 			.num_parents = 1,
2105aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2106aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2107aec89f78SBastian Köcher 		},
2108aec89f78SBastian Köcher 	},
2109aec89f78SBastian Köcher };
2110aec89f78SBastian Köcher 
2111aec89f78SBastian Köcher static struct clk_branch gcc_usb30_mock_utmi_clk = {
2112aec89f78SBastian Köcher 	.halt_reg = 0x03d0,
2113aec89f78SBastian Köcher 	.clkr = {
2114aec89f78SBastian Köcher 		.enable_reg = 0x03d0,
2115aec89f78SBastian Köcher 		.enable_mask = BIT(0),
2116*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2117aec89f78SBastian Köcher 			.name = "gcc_usb30_mock_utmi_clk",
2118*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &usb30_mock_utmi_clk_src.clkr.hw },
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 
21268c18b41bSKonrad Dybcio static struct clk_branch gcc_usb30_sleep_clk = {
21278c18b41bSKonrad Dybcio 	.halt_reg = 0x03cc,
21288c18b41bSKonrad Dybcio 	.clkr = {
21298c18b41bSKonrad Dybcio 		.enable_reg = 0x03cc,
21308c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
2131*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
21328c18b41bSKonrad Dybcio 			.name = "gcc_usb30_sleep_clk",
2133*0519d1d0SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
2134*0519d1d0SKonrad Dybcio 				.fw_name = "sleep",
2135*0519d1d0SKonrad Dybcio 				.name = "sleep"
2136*0519d1d0SKonrad Dybcio 			},
2137*0519d1d0SKonrad Dybcio 			.num_parents = 1,
21388c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
21398c18b41bSKonrad Dybcio 		},
21408c18b41bSKonrad Dybcio 	},
21418c18b41bSKonrad Dybcio };
21428c18b41bSKonrad Dybcio 
2143aec89f78SBastian Köcher static struct clk_branch gcc_usb3_phy_aux_clk = {
2144aec89f78SBastian Köcher 	.halt_reg = 0x1408,
2145aec89f78SBastian Köcher 	.clkr = {
2146aec89f78SBastian Köcher 		.enable_reg = 0x1408,
2147aec89f78SBastian Köcher 		.enable_mask = BIT(0),
2148*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2149aec89f78SBastian Köcher 			.name = "gcc_usb3_phy_aux_clk",
2150*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &usb3_phy_aux_clk_src.clkr.hw },
2151aec89f78SBastian Köcher 			.num_parents = 1,
2152aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2153aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2154aec89f78SBastian Köcher 		},
2155aec89f78SBastian Köcher 	},
2156aec89f78SBastian Köcher };
2157aec89f78SBastian Köcher 
21588c18b41bSKonrad Dybcio static struct clk_branch gcc_usb_hs_ahb_clk = {
21598c18b41bSKonrad Dybcio 	.halt_reg = 0x0488,
21608c18b41bSKonrad Dybcio 	.clkr = {
21618c18b41bSKonrad Dybcio 		.enable_reg = 0x0488,
21628c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
2163*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
21648c18b41bSKonrad Dybcio 			.name = "gcc_usb_hs_ahb_clk",
21658c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
21668c18b41bSKonrad Dybcio 		},
21678c18b41bSKonrad Dybcio 	},
21688c18b41bSKonrad Dybcio };
21698c18b41bSKonrad Dybcio 
2170aec89f78SBastian Köcher static struct clk_branch gcc_usb_hs_system_clk = {
2171aec89f78SBastian Köcher 	.halt_reg = 0x0484,
2172aec89f78SBastian Köcher 	.clkr = {
2173aec89f78SBastian Köcher 		.enable_reg = 0x0484,
2174aec89f78SBastian Köcher 		.enable_mask = BIT(0),
2175*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2176aec89f78SBastian Köcher 			.name = "gcc_usb_hs_system_clk",
2177*0519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &usb_hs_system_clk_src.clkr.hw },
2178aec89f78SBastian Köcher 			.num_parents = 1,
2179aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2180aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2181aec89f78SBastian Köcher 		},
2182aec89f78SBastian Köcher 	},
2183aec89f78SBastian Köcher };
2184aec89f78SBastian Köcher 
21858c18b41bSKonrad Dybcio static struct clk_branch gcc_usb_phy_cfg_ahb2phy_clk = {
21868c18b41bSKonrad Dybcio 	.halt_reg = 0x1a84,
21878c18b41bSKonrad Dybcio 	.clkr = {
21888c18b41bSKonrad Dybcio 		.enable_reg = 0x1a84,
21898c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
2190*0519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
21918c18b41bSKonrad Dybcio 			.name = "gcc_usb_phy_cfg_ahb2phy_clk",
21928c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
21938c18b41bSKonrad Dybcio 		},
21948c18b41bSKonrad Dybcio 	},
21958c18b41bSKonrad Dybcio };
21968c18b41bSKonrad Dybcio 
21978c18b41bSKonrad Dybcio static struct gdsc pcie_gdsc = {
21988c18b41bSKonrad Dybcio 		.gdscr = 0x1e18,
21998c18b41bSKonrad Dybcio 		.pd = {
22008c18b41bSKonrad Dybcio 			.name = "pcie",
22018c18b41bSKonrad Dybcio 		},
22028c18b41bSKonrad Dybcio 		.pwrsts = PWRSTS_OFF_ON,
22038c18b41bSKonrad Dybcio };
22048c18b41bSKonrad Dybcio 
22058c18b41bSKonrad Dybcio static struct gdsc pcie_0_gdsc = {
22068c18b41bSKonrad Dybcio 		.gdscr = 0x1ac4,
22078c18b41bSKonrad Dybcio 		.pd = {
22088c18b41bSKonrad Dybcio 			.name = "pcie_0",
22098c18b41bSKonrad Dybcio 		},
22108c18b41bSKonrad Dybcio 		.pwrsts = PWRSTS_OFF_ON,
22118c18b41bSKonrad Dybcio };
22128c18b41bSKonrad Dybcio 
22138c18b41bSKonrad Dybcio static struct gdsc pcie_1_gdsc = {
22148c18b41bSKonrad Dybcio 		.gdscr = 0x1b44,
22158c18b41bSKonrad Dybcio 		.pd = {
22168c18b41bSKonrad Dybcio 			.name = "pcie_1",
22178c18b41bSKonrad Dybcio 		},
22188c18b41bSKonrad Dybcio 		.pwrsts = PWRSTS_OFF_ON,
22198c18b41bSKonrad Dybcio };
22208c18b41bSKonrad Dybcio 
22218c18b41bSKonrad Dybcio static struct gdsc usb30_gdsc = {
22228c18b41bSKonrad Dybcio 		.gdscr = 0x3c4,
22238c18b41bSKonrad Dybcio 		.pd = {
22248c18b41bSKonrad Dybcio 			.name = "usb30",
22258c18b41bSKonrad Dybcio 		},
22268c18b41bSKonrad Dybcio 		.pwrsts = PWRSTS_OFF_ON,
22278c18b41bSKonrad Dybcio };
22288c18b41bSKonrad Dybcio 
22298c18b41bSKonrad Dybcio static struct gdsc ufs_gdsc = {
22308c18b41bSKonrad Dybcio 		.gdscr = 0x1d44,
22318c18b41bSKonrad Dybcio 		.pd = {
22328c18b41bSKonrad Dybcio 			.name = "ufs",
22338c18b41bSKonrad Dybcio 		},
22348c18b41bSKonrad Dybcio 		.pwrsts = PWRSTS_OFF_ON,
22358c18b41bSKonrad Dybcio };
22368c18b41bSKonrad Dybcio 
2237aec89f78SBastian Köcher static struct clk_regmap *gcc_msm8994_clocks[] = {
2238aec89f78SBastian Köcher 	[GPLL0_EARLY] = &gpll0_early.clkr,
2239aec89f78SBastian Köcher 	[GPLL0] = &gpll0.clkr,
2240aec89f78SBastian Köcher 	[GPLL4_EARLY] = &gpll4_early.clkr,
2241aec89f78SBastian Köcher 	[GPLL4] = &gpll4.clkr,
2242aec89f78SBastian Köcher 	[UFS_AXI_CLK_SRC] = &ufs_axi_clk_src.clkr,
2243aec89f78SBastian Köcher 	[USB30_MASTER_CLK_SRC] = &usb30_master_clk_src.clkr,
2244aec89f78SBastian Köcher 	[BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr,
2245aec89f78SBastian Köcher 	[BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr,
2246aec89f78SBastian Köcher 	[BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr,
2247aec89f78SBastian Köcher 	[BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr,
2248aec89f78SBastian Köcher 	[BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr,
2249aec89f78SBastian Köcher 	[BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr,
2250aec89f78SBastian Köcher 	[BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr,
2251aec89f78SBastian Köcher 	[BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr,
2252aec89f78SBastian Köcher 	[BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr,
2253aec89f78SBastian Köcher 	[BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr,
2254aec89f78SBastian Köcher 	[BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr,
2255aec89f78SBastian Köcher 	[BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr,
2256aec89f78SBastian Köcher 	[BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr,
2257aec89f78SBastian Köcher 	[BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr,
2258aec89f78SBastian Köcher 	[BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr,
2259aec89f78SBastian Köcher 	[BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr,
2260aec89f78SBastian Köcher 	[BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr,
2261aec89f78SBastian Köcher 	[BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr,
2262aec89f78SBastian Köcher 	[BLSP2_QUP1_I2C_APPS_CLK_SRC] = &blsp2_qup1_i2c_apps_clk_src.clkr,
2263aec89f78SBastian Köcher 	[BLSP2_QUP1_SPI_APPS_CLK_SRC] = &blsp2_qup1_spi_apps_clk_src.clkr,
2264aec89f78SBastian Köcher 	[BLSP2_QUP2_I2C_APPS_CLK_SRC] = &blsp2_qup2_i2c_apps_clk_src.clkr,
2265aec89f78SBastian Köcher 	[BLSP2_QUP2_SPI_APPS_CLK_SRC] = &blsp2_qup2_spi_apps_clk_src.clkr,
2266aec89f78SBastian Köcher 	[BLSP2_QUP3_I2C_APPS_CLK_SRC] = &blsp2_qup3_i2c_apps_clk_src.clkr,
2267aec89f78SBastian Köcher 	[BLSP2_QUP3_SPI_APPS_CLK_SRC] = &blsp2_qup3_spi_apps_clk_src.clkr,
2268aec89f78SBastian Köcher 	[BLSP2_QUP4_I2C_APPS_CLK_SRC] = &blsp2_qup4_i2c_apps_clk_src.clkr,
2269aec89f78SBastian Köcher 	[BLSP2_QUP4_SPI_APPS_CLK_SRC] = &blsp2_qup4_spi_apps_clk_src.clkr,
2270aec89f78SBastian Köcher 	[BLSP2_QUP5_I2C_APPS_CLK_SRC] = &blsp2_qup5_i2c_apps_clk_src.clkr,
2271aec89f78SBastian Köcher 	[BLSP2_QUP5_SPI_APPS_CLK_SRC] = &blsp2_qup5_spi_apps_clk_src.clkr,
2272aec89f78SBastian Köcher 	[BLSP2_QUP6_I2C_APPS_CLK_SRC] = &blsp2_qup6_i2c_apps_clk_src.clkr,
2273aec89f78SBastian Köcher 	[BLSP2_QUP6_SPI_APPS_CLK_SRC] = &blsp2_qup6_spi_apps_clk_src.clkr,
2274aec89f78SBastian Köcher 	[BLSP2_UART1_APPS_CLK_SRC] = &blsp2_uart1_apps_clk_src.clkr,
2275aec89f78SBastian Köcher 	[BLSP2_UART2_APPS_CLK_SRC] = &blsp2_uart2_apps_clk_src.clkr,
2276aec89f78SBastian Köcher 	[BLSP2_UART3_APPS_CLK_SRC] = &blsp2_uart3_apps_clk_src.clkr,
2277aec89f78SBastian Köcher 	[BLSP2_UART4_APPS_CLK_SRC] = &blsp2_uart4_apps_clk_src.clkr,
2278aec89f78SBastian Köcher 	[BLSP2_UART5_APPS_CLK_SRC] = &blsp2_uart5_apps_clk_src.clkr,
2279aec89f78SBastian Köcher 	[BLSP2_UART6_APPS_CLK_SRC] = &blsp2_uart6_apps_clk_src.clkr,
2280aec89f78SBastian Köcher 	[GP1_CLK_SRC] = &gp1_clk_src.clkr,
2281aec89f78SBastian Köcher 	[GP2_CLK_SRC] = &gp2_clk_src.clkr,
2282aec89f78SBastian Köcher 	[GP3_CLK_SRC] = &gp3_clk_src.clkr,
2283aec89f78SBastian Köcher 	[PCIE_0_AUX_CLK_SRC] = &pcie_0_aux_clk_src.clkr,
2284aec89f78SBastian Köcher 	[PCIE_0_PIPE_CLK_SRC] = &pcie_0_pipe_clk_src.clkr,
2285aec89f78SBastian Köcher 	[PCIE_1_AUX_CLK_SRC] = &pcie_1_aux_clk_src.clkr,
2286aec89f78SBastian Köcher 	[PCIE_1_PIPE_CLK_SRC] = &pcie_1_pipe_clk_src.clkr,
2287aec89f78SBastian Köcher 	[PDM2_CLK_SRC] = &pdm2_clk_src.clkr,
2288aec89f78SBastian Köcher 	[SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr,
2289aec89f78SBastian Köcher 	[SDCC2_APPS_CLK_SRC] = &sdcc2_apps_clk_src.clkr,
2290aec89f78SBastian Köcher 	[SDCC3_APPS_CLK_SRC] = &sdcc3_apps_clk_src.clkr,
2291aec89f78SBastian Köcher 	[SDCC4_APPS_CLK_SRC] = &sdcc4_apps_clk_src.clkr,
2292aec89f78SBastian Köcher 	[TSIF_REF_CLK_SRC] = &tsif_ref_clk_src.clkr,
2293aec89f78SBastian Köcher 	[USB30_MOCK_UTMI_CLK_SRC] = &usb30_mock_utmi_clk_src.clkr,
2294aec89f78SBastian Köcher 	[USB3_PHY_AUX_CLK_SRC] = &usb3_phy_aux_clk_src.clkr,
2295aec89f78SBastian Köcher 	[USB_HS_SYSTEM_CLK_SRC] = &usb_hs_system_clk_src.clkr,
2296aec89f78SBastian Köcher 	[GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr,
2297aec89f78SBastian Köcher 	[GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr,
2298aec89f78SBastian Köcher 	[GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr,
2299aec89f78SBastian Köcher 	[GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr,
2300aec89f78SBastian Köcher 	[GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr,
2301aec89f78SBastian Köcher 	[GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr,
2302aec89f78SBastian Köcher 	[GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr,
2303aec89f78SBastian Köcher 	[GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr,
2304aec89f78SBastian Köcher 	[GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr,
2305aec89f78SBastian Köcher 	[GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr,
2306aec89f78SBastian Köcher 	[GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr,
2307aec89f78SBastian Köcher 	[GCC_BLSP1_QUP6_I2C_APPS_CLK] = &gcc_blsp1_qup6_i2c_apps_clk.clkr,
2308aec89f78SBastian Köcher 	[GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr,
2309aec89f78SBastian Köcher 	[GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr,
2310aec89f78SBastian Köcher 	[GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr,
2311aec89f78SBastian Köcher 	[GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr,
2312aec89f78SBastian Köcher 	[GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr,
2313aec89f78SBastian Köcher 	[GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr,
2314aec89f78SBastian Köcher 	[GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr,
2315aec89f78SBastian Köcher 	[GCC_BLSP2_AHB_CLK] = &gcc_blsp2_ahb_clk.clkr,
2316aec89f78SBastian Köcher 	[GCC_BLSP2_QUP1_I2C_APPS_CLK] = &gcc_blsp2_qup1_i2c_apps_clk.clkr,
2317aec89f78SBastian Köcher 	[GCC_BLSP2_QUP1_SPI_APPS_CLK] = &gcc_blsp2_qup1_spi_apps_clk.clkr,
2318aec89f78SBastian Köcher 	[GCC_BLSP2_QUP2_I2C_APPS_CLK] = &gcc_blsp2_qup2_i2c_apps_clk.clkr,
2319aec89f78SBastian Köcher 	[GCC_BLSP2_QUP2_SPI_APPS_CLK] = &gcc_blsp2_qup2_spi_apps_clk.clkr,
2320aec89f78SBastian Köcher 	[GCC_BLSP2_QUP3_I2C_APPS_CLK] = &gcc_blsp2_qup3_i2c_apps_clk.clkr,
2321aec89f78SBastian Köcher 	[GCC_BLSP2_QUP3_SPI_APPS_CLK] = &gcc_blsp2_qup3_spi_apps_clk.clkr,
2322aec89f78SBastian Köcher 	[GCC_BLSP2_QUP4_I2C_APPS_CLK] = &gcc_blsp2_qup4_i2c_apps_clk.clkr,
2323aec89f78SBastian Köcher 	[GCC_BLSP2_QUP4_SPI_APPS_CLK] = &gcc_blsp2_qup4_spi_apps_clk.clkr,
2324aec89f78SBastian Köcher 	[GCC_BLSP2_QUP5_I2C_APPS_CLK] = &gcc_blsp2_qup5_i2c_apps_clk.clkr,
2325aec89f78SBastian Köcher 	[GCC_BLSP2_QUP5_SPI_APPS_CLK] = &gcc_blsp2_qup5_spi_apps_clk.clkr,
2326aec89f78SBastian Köcher 	[GCC_BLSP2_QUP6_I2C_APPS_CLK] = &gcc_blsp2_qup6_i2c_apps_clk.clkr,
2327aec89f78SBastian Köcher 	[GCC_BLSP2_QUP6_SPI_APPS_CLK] = &gcc_blsp2_qup6_spi_apps_clk.clkr,
2328aec89f78SBastian Köcher 	[GCC_BLSP2_UART1_APPS_CLK] = &gcc_blsp2_uart1_apps_clk.clkr,
2329aec89f78SBastian Köcher 	[GCC_BLSP2_UART2_APPS_CLK] = &gcc_blsp2_uart2_apps_clk.clkr,
2330aec89f78SBastian Köcher 	[GCC_BLSP2_UART3_APPS_CLK] = &gcc_blsp2_uart3_apps_clk.clkr,
2331aec89f78SBastian Köcher 	[GCC_BLSP2_UART4_APPS_CLK] = &gcc_blsp2_uart4_apps_clk.clkr,
2332aec89f78SBastian Köcher 	[GCC_BLSP2_UART5_APPS_CLK] = &gcc_blsp2_uart5_apps_clk.clkr,
2333aec89f78SBastian Köcher 	[GCC_BLSP2_UART6_APPS_CLK] = &gcc_blsp2_uart6_apps_clk.clkr,
2334aec89f78SBastian Köcher 	[GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
2335aec89f78SBastian Köcher 	[GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
2336aec89f78SBastian Köcher 	[GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
23378c18b41bSKonrad Dybcio 	[GCC_LPASS_Q6_AXI_CLK] = &gcc_lpass_q6_axi_clk.clkr,
23388c18b41bSKonrad Dybcio 	[GCC_MSS_Q6_BIMC_AXI_CLK] = &gcc_mss_q6_bimc_axi_clk.clkr,
2339aec89f78SBastian Köcher 	[GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,
23408c18b41bSKonrad Dybcio 	[GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr,
23418c18b41bSKonrad Dybcio 	[GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr,
2342aec89f78SBastian Köcher 	[GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,
23438c18b41bSKonrad Dybcio 	[GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr,
2344aec89f78SBastian Köcher 	[GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,
23458c18b41bSKonrad Dybcio 	[GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr,
23468c18b41bSKonrad Dybcio 	[GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr,
2347aec89f78SBastian Köcher 	[GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,
23488c18b41bSKonrad Dybcio 	[GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr,
2349aec89f78SBastian Köcher 	[GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
23508c18b41bSKonrad Dybcio 	[GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
2351eaff16bcSJeremy McNicoll 	[GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
23528c18b41bSKonrad Dybcio 	[GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
23538c18b41bSKonrad Dybcio 	[GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
23548c18b41bSKonrad Dybcio 	[GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
23558c18b41bSKonrad Dybcio 	[GCC_SDCC3_AHB_CLK] = &gcc_sdcc3_ahb_clk.clkr,
23568c18b41bSKonrad Dybcio 	[GCC_SDCC3_APPS_CLK] = &gcc_sdcc3_apps_clk.clkr,
23578c18b41bSKonrad Dybcio 	[GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr,
23588c18b41bSKonrad Dybcio 	[GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr,
2359aec89f78SBastian Köcher 	[GCC_SYS_NOC_UFS_AXI_CLK] = &gcc_sys_noc_ufs_axi_clk.clkr,
2360aec89f78SBastian Köcher 	[GCC_SYS_NOC_USB3_AXI_CLK] = &gcc_sys_noc_usb3_axi_clk.clkr,
23618c18b41bSKonrad Dybcio 	[GCC_TSIF_AHB_CLK] = &gcc_tsif_ahb_clk.clkr,
2362aec89f78SBastian Köcher 	[GCC_TSIF_REF_CLK] = &gcc_tsif_ref_clk.clkr,
23638c18b41bSKonrad Dybcio 	[GCC_UFS_AHB_CLK] = &gcc_ufs_ahb_clk.clkr,
2364aec89f78SBastian Köcher 	[GCC_UFS_AXI_CLK] = &gcc_ufs_axi_clk.clkr,
2365aec89f78SBastian Köcher 	[GCC_UFS_RX_CFG_CLK] = &gcc_ufs_rx_cfg_clk.clkr,
23668c18b41bSKonrad Dybcio 	[GCC_UFS_RX_SYMBOL_0_CLK] = &gcc_ufs_rx_symbol_0_clk.clkr,
23678c18b41bSKonrad Dybcio 	[GCC_UFS_RX_SYMBOL_1_CLK] = &gcc_ufs_rx_symbol_1_clk.clkr,
2368aec89f78SBastian Köcher 	[GCC_UFS_TX_CFG_CLK] = &gcc_ufs_tx_cfg_clk.clkr,
23698c18b41bSKonrad Dybcio 	[GCC_UFS_TX_SYMBOL_0_CLK] = &gcc_ufs_tx_symbol_0_clk.clkr,
23708c18b41bSKonrad Dybcio 	[GCC_UFS_TX_SYMBOL_1_CLK] = &gcc_ufs_tx_symbol_1_clk.clkr,
23718c18b41bSKonrad Dybcio 	[GCC_USB2_HS_PHY_SLEEP_CLK] = &gcc_usb2_hs_phy_sleep_clk.clkr,
2372aec89f78SBastian Köcher 	[GCC_USB30_MASTER_CLK] = &gcc_usb30_master_clk.clkr,
2373aec89f78SBastian Köcher 	[GCC_USB30_MOCK_UTMI_CLK] = &gcc_usb30_mock_utmi_clk.clkr,
23748c18b41bSKonrad Dybcio 	[GCC_USB30_SLEEP_CLK] = &gcc_usb30_sleep_clk.clkr,
2375aec89f78SBastian Köcher 	[GCC_USB3_PHY_AUX_CLK] = &gcc_usb3_phy_aux_clk.clkr,
23768c18b41bSKonrad Dybcio 	[GCC_USB_HS_AHB_CLK] = &gcc_usb_hs_ahb_clk.clkr,
2377aec89f78SBastian Köcher 	[GCC_USB_HS_SYSTEM_CLK] = &gcc_usb_hs_system_clk.clkr,
23788c18b41bSKonrad Dybcio 	[GCC_USB_PHY_CFG_AHB2PHY_CLK] = &gcc_usb_phy_cfg_ahb2phy_clk.clkr,
23798c18b41bSKonrad Dybcio };
23808c18b41bSKonrad Dybcio 
23818c18b41bSKonrad Dybcio static struct gdsc *gcc_msm8994_gdscs[] = {
23828c18b41bSKonrad Dybcio 	[PCIE_GDSC] = &pcie_gdsc,
23838c18b41bSKonrad Dybcio 	[PCIE_0_GDSC] = &pcie_0_gdsc,
23848c18b41bSKonrad Dybcio 	[PCIE_1_GDSC] = &pcie_1_gdsc,
23858c18b41bSKonrad Dybcio 	[USB30_GDSC] = &usb30_gdsc,
23868c18b41bSKonrad Dybcio 	[UFS_GDSC] = &ufs_gdsc,
23878c18b41bSKonrad Dybcio };
23888c18b41bSKonrad Dybcio 
23898c18b41bSKonrad Dybcio static const struct qcom_reset_map gcc_msm8994_resets[] = {
23908c18b41bSKonrad Dybcio 	[USB3_PHY_RESET] = { 0x1400 },
23918c18b41bSKonrad Dybcio 	[USB3PHY_PHY_RESET] = { 0x1404 },
23928c18b41bSKonrad Dybcio 	[PCIE_PHY_0_RESET] = { 0x1b18 },
23938c18b41bSKonrad Dybcio 	[PCIE_PHY_1_RESET] = { 0x1b98 },
23948c18b41bSKonrad Dybcio 	[QUSB2_PHY_RESET] = { 0x04b8 },
2395aec89f78SBastian Köcher };
2396aec89f78SBastian Köcher 
2397aec89f78SBastian Köcher static const struct regmap_config gcc_msm8994_regmap_config = {
2398aec89f78SBastian Köcher 	.reg_bits	= 32,
2399aec89f78SBastian Köcher 	.reg_stride	= 4,
2400aec89f78SBastian Köcher 	.val_bits	= 32,
2401aec89f78SBastian Köcher 	.max_register	= 0x2000,
2402aec89f78SBastian Köcher 	.fast_io	= true,
2403aec89f78SBastian Köcher };
2404aec89f78SBastian Köcher 
2405aec89f78SBastian Köcher static const struct qcom_cc_desc gcc_msm8994_desc = {
2406aec89f78SBastian Köcher 	.config = &gcc_msm8994_regmap_config,
2407aec89f78SBastian Köcher 	.clks = gcc_msm8994_clocks,
2408aec89f78SBastian Köcher 	.num_clks = ARRAY_SIZE(gcc_msm8994_clocks),
24098c18b41bSKonrad Dybcio 	.resets = gcc_msm8994_resets,
24108c18b41bSKonrad Dybcio 	.num_resets = ARRAY_SIZE(gcc_msm8994_resets),
24118c18b41bSKonrad Dybcio 	.gdscs = gcc_msm8994_gdscs,
24128c18b41bSKonrad Dybcio 	.num_gdscs = ARRAY_SIZE(gcc_msm8994_gdscs),
2413aec89f78SBastian Köcher };
2414aec89f78SBastian Köcher 
2415aec89f78SBastian Köcher static const struct of_device_id gcc_msm8994_match_table[] = {
2416aec89f78SBastian Köcher 	{ .compatible = "qcom,gcc-msm8994" },
2417aec89f78SBastian Köcher 	{}
2418aec89f78SBastian Köcher };
2419aec89f78SBastian Köcher MODULE_DEVICE_TABLE(of, gcc_msm8994_match_table);
2420aec89f78SBastian Köcher 
2421aec89f78SBastian Köcher static int gcc_msm8994_probe(struct platform_device *pdev)
2422aec89f78SBastian Köcher {
2423aec89f78SBastian Köcher 	return qcom_cc_probe(pdev, &gcc_msm8994_desc);
2424aec89f78SBastian Köcher }
2425aec89f78SBastian Köcher 
2426aec89f78SBastian Köcher static struct platform_driver gcc_msm8994_driver = {
2427aec89f78SBastian Köcher 	.probe		= gcc_msm8994_probe,
2428aec89f78SBastian Köcher 	.driver		= {
2429aec89f78SBastian Köcher 		.name	= "gcc-msm8994",
2430aec89f78SBastian Köcher 		.of_match_table = gcc_msm8994_match_table,
2431aec89f78SBastian Köcher 	},
2432aec89f78SBastian Köcher };
2433aec89f78SBastian Köcher 
2434aec89f78SBastian Köcher static int __init gcc_msm8994_init(void)
2435aec89f78SBastian Köcher {
2436aec89f78SBastian Köcher 	return platform_driver_register(&gcc_msm8994_driver);
2437aec89f78SBastian Köcher }
2438aec89f78SBastian Köcher core_initcall(gcc_msm8994_init);
2439aec89f78SBastian Köcher 
2440aec89f78SBastian Köcher static void __exit gcc_msm8994_exit(void)
2441aec89f78SBastian Köcher {
2442aec89f78SBastian Köcher 	platform_driver_unregister(&gcc_msm8994_driver);
2443aec89f78SBastian Köcher }
2444aec89f78SBastian Köcher module_exit(gcc_msm8994_exit);
2445aec89f78SBastian Köcher 
2446aec89f78SBastian Köcher MODULE_DESCRIPTION("Qualcomm GCC MSM8994 Driver");
2447aec89f78SBastian Köcher MODULE_LICENSE("GPL v2");
2448aec89f78SBastian Köcher MODULE_ALIAS("platform:gcc-msm8994");
2449