xref: /openbmc/linux/drivers/clk/qcom/gcc-msm8994.c (revision 80863521ed89607ba5904cd4099b7a8882024ce4)
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 = {
320519d1d0SKonrad 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),
370519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
38aec89f78SBastian Köcher 			.name = "gpll0_early",
390519d1d0SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
400519d1d0SKonrad Dybcio 				.fw_name = "xo",
410519d1d0SKonrad 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 = {
490519d1d0SKonrad Dybcio 	.offset = 0,
5028d3f06eSAbhishek Sahu 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
510519d1d0SKonrad 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),
650519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
66aec89f78SBastian Köcher 			.name = "gpll4_early",
670519d1d0SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
680519d1d0SKonrad Dybcio 				.fw_name = "xo",
690519d1d0SKonrad 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],
790519d1d0SKonrad 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 
870519d1d0SKonrad Dybcio static const struct parent_map gcc_xo_gpll0_map[] = {
880519d1d0SKonrad Dybcio 	{ P_XO, 0 },
890519d1d0SKonrad Dybcio 	{ P_GPLL0, 1 },
900519d1d0SKonrad Dybcio };
910519d1d0SKonrad Dybcio 
920519d1d0SKonrad Dybcio static const struct clk_parent_data gcc_xo_gpll0[] = {
930519d1d0SKonrad Dybcio 	{ .fw_name = "xo" },
940519d1d0SKonrad Dybcio 	{ .hw = &gpll0.clkr.hw },
950519d1d0SKonrad Dybcio };
960519d1d0SKonrad Dybcio 
970519d1d0SKonrad Dybcio static const struct parent_map gcc_xo_gpll0_gpll4_map[] = {
980519d1d0SKonrad Dybcio 	{ P_XO, 0 },
990519d1d0SKonrad Dybcio 	{ P_GPLL0, 1 },
1000519d1d0SKonrad Dybcio 	{ P_GPLL4, 5 },
1010519d1d0SKonrad Dybcio };
1020519d1d0SKonrad Dybcio 
1030519d1d0SKonrad Dybcio static const struct clk_parent_data gcc_xo_gpll0_gpll4[] = {
1040519d1d0SKonrad Dybcio 	{ .fw_name = "xo" },
1050519d1d0SKonrad Dybcio 	{ .hw = &gpll0.clkr.hw },
1060519d1d0SKonrad Dybcio 	{ .hw = &gpll4.clkr.hw },
1070519d1d0SKonrad Dybcio };
1080519d1d0SKonrad 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,
1250519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
126aec89f78SBastian Köcher 		.name = "ufs_axi_clk_src",
1270519d1d0SKonrad 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,
1450519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
146aec89f78SBastian Köcher 		.name = "usb30_master_clk_src",
1470519d1d0SKonrad 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,
1640519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
165aec89f78SBastian Köcher 		.name = "blsp1_qup1_i2c_apps_clk_src",
1660519d1d0SKonrad 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 
172*80863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup1_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,
190*80863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp1_qup1_spi_apps_clk_src,
1910519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
192aec89f78SBastian Köcher 		.name = "blsp1_qup1_spi_apps_clk_src",
1930519d1d0SKonrad 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,
2040519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
205aec89f78SBastian Köcher 		.name = "blsp1_qup2_i2c_apps_clk_src",
2060519d1d0SKonrad 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 
212*80863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup2_spi_apps_clk_src[] = {
213*80863521SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
214*80863521SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
215*80863521SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
216*80863521SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
217*80863521SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
218*80863521SKonrad Dybcio 	F(24000000, P_GPLL0, 12.5, 1, 2),
219*80863521SKonrad Dybcio 	F(25000000, P_GPLL0, 12, 1, 2),
220*80863521SKonrad Dybcio 	F(42860000, P_GPLL0, 14, 0, 0),
221*80863521SKonrad Dybcio 	F(46150000, P_GPLL0, 13, 0, 0),
222*80863521SKonrad Dybcio 	{ }
223*80863521SKonrad Dybcio };
224*80863521SKonrad Dybcio 
225aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = {
226aec89f78SBastian Köcher 	.cmd_rcgr = 0x06cc,
227aec89f78SBastian Köcher 	.mnd_width = 8,
228aec89f78SBastian Köcher 	.hid_width = 5,
229aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
230*80863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp1_qup2_spi_apps_clk_src,
2310519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
232aec89f78SBastian Köcher 		.name = "blsp1_qup2_spi_apps_clk_src",
2330519d1d0SKonrad 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_i2c_apps_clk_src = {
240aec89f78SBastian Köcher 	.cmd_rcgr = 0x0760,
241aec89f78SBastian Köcher 	.hid_width = 5,
242aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
243aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
2440519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
245aec89f78SBastian Köcher 		.name = "blsp1_qup3_i2c_apps_clk_src",
2460519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
247aec89f78SBastian Köcher 		.num_parents = 2,
248aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
249aec89f78SBastian Köcher 	},
250aec89f78SBastian Köcher };
251aec89f78SBastian Köcher 
252*80863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup3_4_spi_apps_clk_src[] = {
253*80863521SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
254*80863521SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
255*80863521SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
256*80863521SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
257*80863521SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
258*80863521SKonrad Dybcio 	F(24000000, P_GPLL0, 12.5, 1, 2),
259*80863521SKonrad Dybcio 	F(25000000, P_GPLL0, 12, 1, 2),
260*80863521SKonrad Dybcio 	F(42860000, P_GPLL0, 14, 0, 0),
261*80863521SKonrad Dybcio 	F(44440000, P_GPLL0, 13.5, 0, 0),
262*80863521SKonrad Dybcio 	{ }
263*80863521SKonrad Dybcio };
264*80863521SKonrad Dybcio 
265aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = {
266aec89f78SBastian Köcher 	.cmd_rcgr = 0x074c,
267aec89f78SBastian Köcher 	.mnd_width = 8,
268aec89f78SBastian Köcher 	.hid_width = 5,
269aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
270*80863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp1_qup3_4_spi_apps_clk_src,
2710519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
272aec89f78SBastian Köcher 		.name = "blsp1_qup3_spi_apps_clk_src",
2730519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
274aec89f78SBastian Köcher 		.num_parents = 2,
275aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
276aec89f78SBastian Köcher 	},
277aec89f78SBastian Köcher };
278aec89f78SBastian Köcher 
279aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = {
280aec89f78SBastian Köcher 	.cmd_rcgr = 0x07e0,
281aec89f78SBastian Köcher 	.hid_width = 5,
282aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
283aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
2840519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
285aec89f78SBastian Köcher 		.name = "blsp1_qup4_i2c_apps_clk_src",
2860519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
287aec89f78SBastian Köcher 		.num_parents = 2,
288aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
289aec89f78SBastian Köcher 	},
290aec89f78SBastian Köcher };
291aec89f78SBastian Köcher 
292aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = {
293aec89f78SBastian Köcher 	.cmd_rcgr = 0x07cc,
294aec89f78SBastian Köcher 	.mnd_width = 8,
295aec89f78SBastian Köcher 	.hid_width = 5,
296aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
297*80863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp1_qup3_4_spi_apps_clk_src,
2980519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
299aec89f78SBastian Köcher 		.name = "blsp1_qup4_spi_apps_clk_src",
3000519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
301aec89f78SBastian Köcher 		.num_parents = 2,
302aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
303aec89f78SBastian Köcher 	},
304aec89f78SBastian Köcher };
305aec89f78SBastian Köcher 
306aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = {
307aec89f78SBastian Köcher 	.cmd_rcgr = 0x0860,
308aec89f78SBastian Köcher 	.hid_width = 5,
309aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
310aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
3110519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
312aec89f78SBastian Köcher 		.name = "blsp1_qup5_i2c_apps_clk_src",
3130519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
314aec89f78SBastian Köcher 		.num_parents = 2,
315aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
316aec89f78SBastian Köcher 	},
317aec89f78SBastian Köcher };
318aec89f78SBastian Köcher 
319*80863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup5_spi_apps_clk_src[] = {
320*80863521SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
321*80863521SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
322*80863521SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
323*80863521SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
324*80863521SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
325*80863521SKonrad Dybcio 	F(24000000, P_GPLL0, 12.5, 1, 2),
326*80863521SKonrad Dybcio 	F(25000000, P_GPLL0, 12, 1, 2),
327*80863521SKonrad Dybcio 	F(40000000, P_GPLL0, 15, 0, 0),
328*80863521SKonrad Dybcio 	F(42860000, P_GPLL0, 14, 0, 0),
329*80863521SKonrad Dybcio 	{ }
330*80863521SKonrad Dybcio };
331*80863521SKonrad Dybcio 
332aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = {
333aec89f78SBastian Köcher 	.cmd_rcgr = 0x084c,
334aec89f78SBastian Köcher 	.mnd_width = 8,
335aec89f78SBastian Köcher 	.hid_width = 5,
336aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
337*80863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp1_qup5_spi_apps_clk_src,
3380519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
339aec89f78SBastian Köcher 		.name = "blsp1_qup5_spi_apps_clk_src",
3400519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
341aec89f78SBastian Köcher 		.num_parents = 2,
342aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
343aec89f78SBastian Köcher 	},
344aec89f78SBastian Köcher };
345aec89f78SBastian Köcher 
346aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = {
347aec89f78SBastian Köcher 	.cmd_rcgr = 0x08e0,
348aec89f78SBastian Köcher 	.hid_width = 5,
349aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
350aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
3510519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
352aec89f78SBastian Köcher 		.name = "blsp1_qup6_i2c_apps_clk_src",
3530519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
354aec89f78SBastian Köcher 		.num_parents = 2,
355aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
356aec89f78SBastian Köcher 	},
357aec89f78SBastian Köcher };
358aec89f78SBastian Köcher 
359*80863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup6_spi_apps_clk_src[] = {
360*80863521SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
361*80863521SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
362*80863521SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
363*80863521SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
364*80863521SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
365*80863521SKonrad Dybcio 	F(24000000, P_GPLL0, 12.5, 1, 2),
366*80863521SKonrad Dybcio 	F(27906976, P_GPLL0, 1, 2, 43),
367*80863521SKonrad Dybcio 	F(41380000, P_GPLL0, 15, 0, 0),
368*80863521SKonrad Dybcio 	F(42860000, P_GPLL0, 14, 0, 0),
369*80863521SKonrad Dybcio 	{ }
370*80863521SKonrad Dybcio };
371*80863521SKonrad Dybcio 
372aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = {
373aec89f78SBastian Köcher 	.cmd_rcgr = 0x08cc,
374aec89f78SBastian Köcher 	.mnd_width = 8,
375aec89f78SBastian Köcher 	.hid_width = 5,
376aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
377*80863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp1_qup6_spi_apps_clk_src,
3780519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
379aec89f78SBastian Köcher 		.name = "blsp1_qup6_spi_apps_clk_src",
3800519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
381aec89f78SBastian Köcher 		.num_parents = 2,
382aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
383aec89f78SBastian Köcher 	},
384aec89f78SBastian Köcher };
385aec89f78SBastian Köcher 
386aec89f78SBastian Köcher static struct freq_tbl ftbl_blsp_uart_apps_clk_src[] = {
387aec89f78SBastian Köcher 	F(3686400, P_GPLL0, 1, 96, 15625),
388aec89f78SBastian Köcher 	F(7372800, P_GPLL0, 1, 192, 15625),
389aec89f78SBastian Köcher 	F(14745600, P_GPLL0, 1, 384, 15625),
390aec89f78SBastian Köcher 	F(16000000, P_GPLL0, 5, 2, 15),
391aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
392aec89f78SBastian Köcher 	F(24000000, P_GPLL0, 5, 1, 5),
393aec89f78SBastian Köcher 	F(32000000, P_GPLL0, 1, 4, 75),
394aec89f78SBastian Köcher 	F(40000000, P_GPLL0, 15, 0, 0),
395aec89f78SBastian Köcher 	F(46400000, P_GPLL0, 1, 29, 375),
396aec89f78SBastian Köcher 	F(48000000, P_GPLL0, 12.5, 0, 0),
397aec89f78SBastian Köcher 	F(51200000, P_GPLL0, 1, 32, 375),
398aec89f78SBastian Köcher 	F(56000000, P_GPLL0, 1, 7, 75),
399aec89f78SBastian Köcher 	F(58982400, P_GPLL0, 1, 1536, 15625),
400aec89f78SBastian Köcher 	F(60000000, P_GPLL0, 10, 0, 0),
401aec89f78SBastian Köcher 	F(63160000, P_GPLL0, 9.5, 0, 0),
402aec89f78SBastian Köcher 	{ }
403aec89f78SBastian Köcher };
404aec89f78SBastian Köcher 
405aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart1_apps_clk_src = {
406aec89f78SBastian Köcher 	.cmd_rcgr = 0x068c,
407aec89f78SBastian Köcher 	.mnd_width = 16,
408aec89f78SBastian Köcher 	.hid_width = 5,
409aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
410aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
4110519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
412aec89f78SBastian Köcher 		.name = "blsp1_uart1_apps_clk_src",
4130519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
414aec89f78SBastian Köcher 		.num_parents = 2,
415aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
416aec89f78SBastian Köcher 	},
417aec89f78SBastian Köcher };
418aec89f78SBastian Köcher 
419aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart2_apps_clk_src = {
420aec89f78SBastian Köcher 	.cmd_rcgr = 0x070c,
421aec89f78SBastian Köcher 	.mnd_width = 16,
422aec89f78SBastian Köcher 	.hid_width = 5,
423aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
424aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
4250519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
426aec89f78SBastian Köcher 		.name = "blsp1_uart2_apps_clk_src",
4270519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
428aec89f78SBastian Köcher 		.num_parents = 2,
429aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
430aec89f78SBastian Köcher 	},
431aec89f78SBastian Köcher };
432aec89f78SBastian Köcher 
433aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart3_apps_clk_src = {
434aec89f78SBastian Köcher 	.cmd_rcgr = 0x078c,
435aec89f78SBastian Köcher 	.mnd_width = 16,
436aec89f78SBastian Köcher 	.hid_width = 5,
437aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
438aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
4390519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
440aec89f78SBastian Köcher 		.name = "blsp1_uart3_apps_clk_src",
4410519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
442aec89f78SBastian Köcher 		.num_parents = 2,
443aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
444aec89f78SBastian Köcher 	},
445aec89f78SBastian Köcher };
446aec89f78SBastian Köcher 
447aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart4_apps_clk_src = {
448aec89f78SBastian Köcher 	.cmd_rcgr = 0x080c,
449aec89f78SBastian Köcher 	.mnd_width = 16,
450aec89f78SBastian Köcher 	.hid_width = 5,
451aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
452aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
4530519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
454aec89f78SBastian Köcher 		.name = "blsp1_uart4_apps_clk_src",
4550519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
456aec89f78SBastian Köcher 		.num_parents = 2,
457aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
458aec89f78SBastian Köcher 	},
459aec89f78SBastian Köcher };
460aec89f78SBastian Köcher 
461aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart5_apps_clk_src = {
462aec89f78SBastian Köcher 	.cmd_rcgr = 0x088c,
463aec89f78SBastian Köcher 	.mnd_width = 16,
464aec89f78SBastian Köcher 	.hid_width = 5,
465aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
466aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
4670519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
468aec89f78SBastian Köcher 		.name = "blsp1_uart5_apps_clk_src",
4690519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
470aec89f78SBastian Köcher 		.num_parents = 2,
471aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
472aec89f78SBastian Köcher 	},
473aec89f78SBastian Köcher };
474aec89f78SBastian Köcher 
475aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart6_apps_clk_src = {
476aec89f78SBastian Köcher 	.cmd_rcgr = 0x090c,
477aec89f78SBastian Köcher 	.mnd_width = 16,
478aec89f78SBastian Köcher 	.hid_width = 5,
479aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
480aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
4810519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
482aec89f78SBastian Köcher 		.name = "blsp1_uart6_apps_clk_src",
4830519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
484aec89f78SBastian Köcher 		.num_parents = 2,
485aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
486aec89f78SBastian Köcher 	},
487aec89f78SBastian Köcher };
488aec89f78SBastian Köcher 
489aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup1_i2c_apps_clk_src = {
490aec89f78SBastian Köcher 	.cmd_rcgr = 0x09a0,
491aec89f78SBastian Köcher 	.hid_width = 5,
492aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
493aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
4940519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
495aec89f78SBastian Köcher 		.name = "blsp2_qup1_i2c_apps_clk_src",
4960519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
497aec89f78SBastian Köcher 		.num_parents = 2,
498aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
499aec89f78SBastian Köcher 	},
500aec89f78SBastian Köcher };
501aec89f78SBastian Köcher 
502*80863521SKonrad Dybcio static struct freq_tbl ftbl_blsp2_qup1_2_spi_apps_clk_src[] = {
503*80863521SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
504*80863521SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
505*80863521SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
506*80863521SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
507*80863521SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
508*80863521SKonrad Dybcio 	F(24000000, P_GPLL0, 12.5, 1, 2),
509*80863521SKonrad Dybcio 	F(25000000, P_GPLL0, 12, 1, 2),
510*80863521SKonrad Dybcio 	F(42860000, P_GPLL0, 14, 0, 0),
511*80863521SKonrad Dybcio 	F(44440000, P_GPLL0, 13.5, 0, 0),
512*80863521SKonrad Dybcio 	{ }
513*80863521SKonrad Dybcio };
514*80863521SKonrad Dybcio 
515aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup1_spi_apps_clk_src = {
516aec89f78SBastian Köcher 	.cmd_rcgr = 0x098c,
517aec89f78SBastian Köcher 	.mnd_width = 8,
518aec89f78SBastian Köcher 	.hid_width = 5,
519aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
520*80863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp2_qup1_2_spi_apps_clk_src,
5210519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
522aec89f78SBastian Köcher 		.name = "blsp2_qup1_spi_apps_clk_src",
5230519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
524aec89f78SBastian Köcher 		.num_parents = 2,
525aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
526aec89f78SBastian Köcher 	},
527aec89f78SBastian Köcher };
528aec89f78SBastian Köcher 
529aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup2_i2c_apps_clk_src = {
530aec89f78SBastian Köcher 	.cmd_rcgr = 0x0a20,
531aec89f78SBastian Köcher 	.hid_width = 5,
532aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
533aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
5340519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
535aec89f78SBastian Köcher 		.name = "blsp2_qup2_i2c_apps_clk_src",
5360519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
537aec89f78SBastian Köcher 		.num_parents = 2,
538aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
539aec89f78SBastian Köcher 	},
540aec89f78SBastian Köcher };
541aec89f78SBastian Köcher 
542aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup2_spi_apps_clk_src = {
543aec89f78SBastian Köcher 	.cmd_rcgr = 0x0a0c,
544aec89f78SBastian Köcher 	.mnd_width = 8,
545aec89f78SBastian Köcher 	.hid_width = 5,
546aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
547*80863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp2_qup1_2_spi_apps_clk_src,
5480519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
549aec89f78SBastian Köcher 		.name = "blsp2_qup2_spi_apps_clk_src",
5500519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
551aec89f78SBastian Köcher 		.num_parents = 2,
552aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
553aec89f78SBastian Köcher 	},
554aec89f78SBastian Köcher };
555aec89f78SBastian Köcher 
556*80863521SKonrad Dybcio static struct freq_tbl ftbl_blsp2_qup3_4_spi_apps_clk_src[] = {
557*80863521SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
558*80863521SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
559*80863521SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
560*80863521SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
561*80863521SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
562*80863521SKonrad Dybcio 	F(24000000, P_GPLL0, 12.5, 1, 2),
563*80863521SKonrad Dybcio 	F(25000000, P_GPLL0, 12, 1, 2),
564*80863521SKonrad Dybcio 	F(42860000, P_GPLL0, 14, 0, 0),
565*80863521SKonrad Dybcio 	F(48000000, P_GPLL0, 12.5, 0, 0),
566*80863521SKonrad Dybcio 	{ }
567*80863521SKonrad Dybcio };
568*80863521SKonrad Dybcio 
569aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup3_i2c_apps_clk_src = {
570aec89f78SBastian Köcher 	.cmd_rcgr = 0x0aa0,
571aec89f78SBastian Köcher 	.hid_width = 5,
572aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
573aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
5740519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
575aec89f78SBastian Köcher 		.name = "blsp2_qup3_i2c_apps_clk_src",
5760519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
577aec89f78SBastian Köcher 		.num_parents = 2,
578aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
579aec89f78SBastian Köcher 	},
580aec89f78SBastian Köcher };
581aec89f78SBastian Köcher 
582aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup3_spi_apps_clk_src = {
583aec89f78SBastian Köcher 	.cmd_rcgr = 0x0a8c,
584aec89f78SBastian Köcher 	.mnd_width = 8,
585aec89f78SBastian Köcher 	.hid_width = 5,
586aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
587*80863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp2_qup3_4_spi_apps_clk_src,
5880519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
589aec89f78SBastian Köcher 		.name = "blsp2_qup3_spi_apps_clk_src",
5900519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
591aec89f78SBastian Köcher 		.num_parents = 2,
592aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
593aec89f78SBastian Köcher 	},
594aec89f78SBastian Köcher };
595aec89f78SBastian Köcher 
596aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup4_i2c_apps_clk_src = {
597aec89f78SBastian Köcher 	.cmd_rcgr = 0x0b20,
598aec89f78SBastian Köcher 	.hid_width = 5,
599aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
600aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
6010519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
602aec89f78SBastian Köcher 		.name = "blsp2_qup4_i2c_apps_clk_src",
6030519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
604aec89f78SBastian Köcher 		.num_parents = 2,
605aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
606aec89f78SBastian Köcher 	},
607aec89f78SBastian Köcher };
608aec89f78SBastian Köcher 
609aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup4_spi_apps_clk_src = {
610aec89f78SBastian Köcher 	.cmd_rcgr = 0x0b0c,
611aec89f78SBastian Köcher 	.mnd_width = 8,
612aec89f78SBastian Köcher 	.hid_width = 5,
613aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
614*80863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp2_qup3_4_spi_apps_clk_src,
6150519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
616aec89f78SBastian Köcher 		.name = "blsp2_qup4_spi_apps_clk_src",
6170519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
618aec89f78SBastian Köcher 		.num_parents = 2,
619aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
620aec89f78SBastian Köcher 	},
621aec89f78SBastian Köcher };
622aec89f78SBastian Köcher 
623aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup5_i2c_apps_clk_src = {
624aec89f78SBastian Köcher 	.cmd_rcgr = 0x0ba0,
625aec89f78SBastian Köcher 	.hid_width = 5,
626aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
627aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
6280519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
629aec89f78SBastian Köcher 		.name = "blsp2_qup5_i2c_apps_clk_src",
6300519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
631aec89f78SBastian Köcher 		.num_parents = 2,
632aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
633aec89f78SBastian Köcher 	},
634aec89f78SBastian Köcher };
635aec89f78SBastian Köcher 
636aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup5_spi_apps_clk_src = {
637aec89f78SBastian Köcher 	.cmd_rcgr = 0x0b8c,
638aec89f78SBastian Köcher 	.mnd_width = 8,
639aec89f78SBastian Köcher 	.hid_width = 5,
640aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
641*80863521SKonrad Dybcio 	/* BLSP1 QUP1 and BLSP2 QUP5 use the same freqs */
642*80863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp1_qup1_spi_apps_clk_src,
6430519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
644aec89f78SBastian Köcher 		.name = "blsp2_qup5_spi_apps_clk_src",
6450519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
646aec89f78SBastian Köcher 		.num_parents = 2,
647aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
648aec89f78SBastian Köcher 	},
649aec89f78SBastian Köcher };
650aec89f78SBastian Köcher 
651aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup6_i2c_apps_clk_src = {
652aec89f78SBastian Köcher 	.cmd_rcgr = 0x0c20,
653aec89f78SBastian Köcher 	.hid_width = 5,
654aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
655aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
6560519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
657aec89f78SBastian Köcher 		.name = "blsp2_qup6_i2c_apps_clk_src",
6580519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
659aec89f78SBastian Köcher 		.num_parents = 2,
660aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
661aec89f78SBastian Köcher 	},
662aec89f78SBastian Köcher };
663aec89f78SBastian Köcher 
664*80863521SKonrad Dybcio static struct freq_tbl ftbl_blsp2_qup6_spi_apps_clk_src[] = {
665*80863521SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
666*80863521SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
667*80863521SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
668*80863521SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
669*80863521SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
670*80863521SKonrad Dybcio 	F(24000000, P_GPLL0, 12.5, 1, 2),
671*80863521SKonrad Dybcio 	F(25000000, P_GPLL0, 12, 1, 2),
672*80863521SKonrad Dybcio 	F(44440000, P_GPLL0, 13.5, 0, 0),
673*80863521SKonrad Dybcio 	F(48000000, P_GPLL0, 12.5, 0, 0),
674*80863521SKonrad Dybcio 	{ }
675*80863521SKonrad Dybcio };
676*80863521SKonrad Dybcio 
677aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup6_spi_apps_clk_src = {
678aec89f78SBastian Köcher 	.cmd_rcgr = 0x0c0c,
679aec89f78SBastian Köcher 	.mnd_width = 8,
680aec89f78SBastian Köcher 	.hid_width = 5,
681aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
682*80863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp2_qup6_spi_apps_clk_src,
6830519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
684aec89f78SBastian Köcher 		.name = "blsp2_qup6_spi_apps_clk_src",
6850519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
686aec89f78SBastian Köcher 		.num_parents = 2,
687aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
688aec89f78SBastian Köcher 	},
689aec89f78SBastian Köcher };
690aec89f78SBastian Köcher 
691aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart1_apps_clk_src = {
692aec89f78SBastian Köcher 	.cmd_rcgr = 0x09cc,
693aec89f78SBastian Köcher 	.mnd_width = 16,
694aec89f78SBastian Köcher 	.hid_width = 5,
695aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
696aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
6970519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
698aec89f78SBastian Köcher 		.name = "blsp2_uart1_apps_clk_src",
6990519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
700aec89f78SBastian Köcher 		.num_parents = 2,
701aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
702aec89f78SBastian Köcher 	},
703aec89f78SBastian Köcher };
704aec89f78SBastian Köcher 
705aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart2_apps_clk_src = {
706aec89f78SBastian Köcher 	.cmd_rcgr = 0x0a4c,
707aec89f78SBastian Köcher 	.mnd_width = 16,
708aec89f78SBastian Köcher 	.hid_width = 5,
709aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
710aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
7110519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
712aec89f78SBastian Köcher 		.name = "blsp2_uart2_apps_clk_src",
7130519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
714aec89f78SBastian Köcher 		.num_parents = 2,
715aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
716aec89f78SBastian Köcher 	},
717aec89f78SBastian Köcher };
718aec89f78SBastian Köcher 
719aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart3_apps_clk_src = {
720aec89f78SBastian Köcher 	.cmd_rcgr = 0x0acc,
721aec89f78SBastian Köcher 	.mnd_width = 16,
722aec89f78SBastian Köcher 	.hid_width = 5,
723aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
724aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
7250519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
726aec89f78SBastian Köcher 		.name = "blsp2_uart3_apps_clk_src",
7270519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
728aec89f78SBastian Köcher 		.num_parents = 2,
729aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
730aec89f78SBastian Köcher 	},
731aec89f78SBastian Köcher };
732aec89f78SBastian Köcher 
733aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart4_apps_clk_src = {
734aec89f78SBastian Köcher 	.cmd_rcgr = 0x0b4c,
735aec89f78SBastian Köcher 	.mnd_width = 16,
736aec89f78SBastian Köcher 	.hid_width = 5,
737aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
738aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
7390519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
740aec89f78SBastian Köcher 		.name = "blsp2_uart4_apps_clk_src",
7410519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
742aec89f78SBastian Köcher 		.num_parents = 2,
743aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
744aec89f78SBastian Köcher 	},
745aec89f78SBastian Köcher };
746aec89f78SBastian Köcher 
747aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart5_apps_clk_src = {
748aec89f78SBastian Köcher 	.cmd_rcgr = 0x0bcc,
749aec89f78SBastian Köcher 	.mnd_width = 16,
750aec89f78SBastian Köcher 	.hid_width = 5,
751aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
752aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
7530519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
754aec89f78SBastian Köcher 		.name = "blsp2_uart5_apps_clk_src",
7550519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
756aec89f78SBastian Köcher 		.num_parents = 2,
757aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
758aec89f78SBastian Köcher 	},
759aec89f78SBastian Köcher };
760aec89f78SBastian Köcher 
761aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart6_apps_clk_src = {
762aec89f78SBastian Köcher 	.cmd_rcgr = 0x0c4c,
763aec89f78SBastian Köcher 	.mnd_width = 16,
764aec89f78SBastian Köcher 	.hid_width = 5,
765aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
766aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
7670519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
768aec89f78SBastian Köcher 		.name = "blsp2_uart6_apps_clk_src",
7690519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
770aec89f78SBastian Köcher 		.num_parents = 2,
771aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
772aec89f78SBastian Köcher 	},
773aec89f78SBastian Köcher };
774aec89f78SBastian Köcher 
775aec89f78SBastian Köcher static struct freq_tbl ftbl_gp1_clk_src[] = {
776aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
777aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
778aec89f78SBastian Köcher 	F(200000000, P_GPLL0, 3, 0, 0),
779aec89f78SBastian Köcher 	{ }
780aec89f78SBastian Köcher };
781aec89f78SBastian Köcher 
782aec89f78SBastian Köcher static struct clk_rcg2 gp1_clk_src = {
783aec89f78SBastian Köcher 	.cmd_rcgr = 0x1904,
784aec89f78SBastian Köcher 	.mnd_width = 8,
785aec89f78SBastian Köcher 	.hid_width = 5,
786aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
787aec89f78SBastian Köcher 	.freq_tbl = ftbl_gp1_clk_src,
7880519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
789aec89f78SBastian Köcher 		.name = "gp1_clk_src",
7900519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
791aec89f78SBastian Köcher 		.num_parents = 2,
792aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
793aec89f78SBastian Köcher 	},
794aec89f78SBastian Köcher };
795aec89f78SBastian Köcher 
796aec89f78SBastian Köcher static struct freq_tbl ftbl_gp2_clk_src[] = {
797aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
798aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
799aec89f78SBastian Köcher 	F(200000000, P_GPLL0, 3, 0, 0),
800aec89f78SBastian Köcher 	{ }
801aec89f78SBastian Köcher };
802aec89f78SBastian Köcher 
803aec89f78SBastian Köcher static struct clk_rcg2 gp2_clk_src = {
804aec89f78SBastian Köcher 	.cmd_rcgr = 0x1944,
805aec89f78SBastian Köcher 	.mnd_width = 8,
806aec89f78SBastian Köcher 	.hid_width = 5,
807aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
808aec89f78SBastian Köcher 	.freq_tbl = ftbl_gp2_clk_src,
8090519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
810aec89f78SBastian Köcher 		.name = "gp2_clk_src",
8110519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
812aec89f78SBastian Köcher 		.num_parents = 2,
813aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
814aec89f78SBastian Köcher 	},
815aec89f78SBastian Köcher };
816aec89f78SBastian Köcher 
817aec89f78SBastian Köcher static struct freq_tbl ftbl_gp3_clk_src[] = {
818aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
819aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
820aec89f78SBastian Köcher 	F(200000000, P_GPLL0, 3, 0, 0),
821aec89f78SBastian Köcher 	{ }
822aec89f78SBastian Köcher };
823aec89f78SBastian Köcher 
824aec89f78SBastian Köcher static struct clk_rcg2 gp3_clk_src = {
825aec89f78SBastian Köcher 	.cmd_rcgr = 0x1984,
826aec89f78SBastian Köcher 	.mnd_width = 8,
827aec89f78SBastian Köcher 	.hid_width = 5,
828aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
829aec89f78SBastian Köcher 	.freq_tbl = ftbl_gp3_clk_src,
8300519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
831aec89f78SBastian Köcher 		.name = "gp3_clk_src",
8320519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
833aec89f78SBastian Köcher 		.num_parents = 2,
834aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
835aec89f78SBastian Köcher 	},
836aec89f78SBastian Köcher };
837aec89f78SBastian Köcher 
838aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_0_aux_clk_src[] = {
839aec89f78SBastian Köcher 	F(1011000, P_XO, 1, 1, 19),
840aec89f78SBastian Köcher 	{ }
841aec89f78SBastian Köcher };
842aec89f78SBastian Köcher 
843aec89f78SBastian Köcher static struct clk_rcg2 pcie_0_aux_clk_src = {
844aec89f78SBastian Köcher 	.cmd_rcgr = 0x1b00,
845aec89f78SBastian Köcher 	.mnd_width = 8,
846aec89f78SBastian Köcher 	.hid_width = 5,
847aec89f78SBastian Köcher 	.freq_tbl = ftbl_pcie_0_aux_clk_src,
8480519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
849aec89f78SBastian Köcher 		.name = "pcie_0_aux_clk_src",
8500519d1d0SKonrad Dybcio 		.parent_data = &(const struct clk_parent_data){
8510519d1d0SKonrad Dybcio 				.fw_name = "xo",
8520519d1d0SKonrad Dybcio 		},
853aec89f78SBastian Köcher 		.num_parents = 1,
854aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
855aec89f78SBastian Köcher 	},
856aec89f78SBastian Köcher };
857aec89f78SBastian Köcher 
858aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_pipe_clk_src[] = {
859aec89f78SBastian Köcher 	F(125000000, P_XO, 1, 0, 0),
860aec89f78SBastian Köcher 	{ }
861aec89f78SBastian Köcher };
862aec89f78SBastian Köcher 
863aec89f78SBastian Köcher static struct clk_rcg2 pcie_0_pipe_clk_src = {
864aec89f78SBastian Köcher 	.cmd_rcgr = 0x1adc,
865aec89f78SBastian Köcher 	.hid_width = 5,
866aec89f78SBastian Köcher 	.freq_tbl = ftbl_pcie_pipe_clk_src,
8670519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
868aec89f78SBastian Köcher 		.name = "pcie_0_pipe_clk_src",
8690519d1d0SKonrad Dybcio 		.parent_data = &(const struct clk_parent_data){
8700519d1d0SKonrad Dybcio 				.fw_name = "xo",
8710519d1d0SKonrad Dybcio 		},
872aec89f78SBastian Köcher 		.num_parents = 1,
873aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
874aec89f78SBastian Köcher 	},
875aec89f78SBastian Köcher };
876aec89f78SBastian Köcher 
877aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_1_aux_clk_src[] = {
878aec89f78SBastian Köcher 	F(1011000, P_XO, 1, 1, 19),
879aec89f78SBastian Köcher 	{ }
880aec89f78SBastian Köcher };
881aec89f78SBastian Köcher 
882aec89f78SBastian Köcher static struct clk_rcg2 pcie_1_aux_clk_src = {
883aec89f78SBastian Köcher 	.cmd_rcgr = 0x1b80,
884aec89f78SBastian Köcher 	.mnd_width = 8,
885aec89f78SBastian Köcher 	.hid_width = 5,
886aec89f78SBastian Köcher 	.freq_tbl = ftbl_pcie_1_aux_clk_src,
8870519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
888aec89f78SBastian Köcher 		.name = "pcie_1_aux_clk_src",
8890519d1d0SKonrad Dybcio 		.parent_data = &(const struct clk_parent_data){
8900519d1d0SKonrad Dybcio 				.fw_name = "xo",
8910519d1d0SKonrad Dybcio 		},
892aec89f78SBastian Köcher 		.num_parents = 1,
893aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
894aec89f78SBastian Köcher 	},
895aec89f78SBastian Köcher };
896aec89f78SBastian Köcher 
897aec89f78SBastian Köcher static struct clk_rcg2 pcie_1_pipe_clk_src = {
898aec89f78SBastian Köcher 	.cmd_rcgr = 0x1b5c,
899aec89f78SBastian Köcher 	.hid_width = 5,
900aec89f78SBastian Köcher 	.freq_tbl = ftbl_pcie_pipe_clk_src,
9010519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
902aec89f78SBastian Köcher 		.name = "pcie_1_pipe_clk_src",
9030519d1d0SKonrad Dybcio 		.parent_data = &(const struct clk_parent_data){
9040519d1d0SKonrad Dybcio 				.fw_name = "xo",
9050519d1d0SKonrad Dybcio 		},
906aec89f78SBastian Köcher 		.num_parents = 1,
907aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
908aec89f78SBastian Köcher 	},
909aec89f78SBastian Köcher };
910aec89f78SBastian Köcher 
911aec89f78SBastian Köcher static struct freq_tbl ftbl_pdm2_clk_src[] = {
912aec89f78SBastian Köcher 	F(60000000, P_GPLL0, 10, 0, 0),
913aec89f78SBastian Köcher 	{ }
914aec89f78SBastian Köcher };
915aec89f78SBastian Köcher 
916aec89f78SBastian Köcher static struct clk_rcg2 pdm2_clk_src = {
917aec89f78SBastian Köcher 	.cmd_rcgr = 0x0cd0,
918aec89f78SBastian Köcher 	.hid_width = 5,
919aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
920aec89f78SBastian Köcher 	.freq_tbl = ftbl_pdm2_clk_src,
9210519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
922aec89f78SBastian Köcher 		.name = "pdm2_clk_src",
9230519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
924aec89f78SBastian Köcher 		.num_parents = 2,
925aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
926aec89f78SBastian Köcher 	},
927aec89f78SBastian Köcher };
928aec89f78SBastian Köcher 
929aec89f78SBastian Köcher static struct freq_tbl ftbl_sdcc1_apps_clk_src[] = {
930aec89f78SBastian Köcher 	F(144000, P_XO, 16, 3, 25),
931aec89f78SBastian Köcher 	F(400000, P_XO, 12, 1, 4),
932aec89f78SBastian Köcher 	F(20000000, P_GPLL0, 15, 1, 2),
933aec89f78SBastian Köcher 	F(25000000, P_GPLL0, 12, 1, 2),
934aec89f78SBastian Köcher 	F(50000000, P_GPLL0, 12, 0, 0),
935aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
936aec89f78SBastian Köcher 	F(192000000, P_GPLL4, 2, 0, 0),
937aec89f78SBastian Köcher 	F(384000000, P_GPLL4, 1, 0, 0),
938aec89f78SBastian Köcher 	{ }
939aec89f78SBastian Köcher };
940aec89f78SBastian Köcher 
941aec89f78SBastian Köcher static struct clk_rcg2 sdcc1_apps_clk_src = {
942aec89f78SBastian Köcher 	.cmd_rcgr = 0x04d0,
943aec89f78SBastian Köcher 	.mnd_width = 8,
944aec89f78SBastian Köcher 	.hid_width = 5,
945aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_gpll4_map,
946aec89f78SBastian Köcher 	.freq_tbl = ftbl_sdcc1_apps_clk_src,
9470519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
948aec89f78SBastian Köcher 		.name = "sdcc1_apps_clk_src",
9490519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0_gpll4,
950aec89f78SBastian Köcher 		.num_parents = 3,
9515f5001a9SRajendra Nayak 		.ops = &clk_rcg2_floor_ops,
952aec89f78SBastian Köcher 	},
953aec89f78SBastian Köcher };
954aec89f78SBastian Köcher 
955aec89f78SBastian Köcher static struct freq_tbl ftbl_sdcc2_4_apps_clk_src[] = {
956aec89f78SBastian Köcher 	F(144000, P_XO, 16, 3, 25),
957aec89f78SBastian Köcher 	F(400000, P_XO, 12, 1, 4),
958aec89f78SBastian Köcher 	F(20000000, P_GPLL0, 15, 1, 2),
959aec89f78SBastian Köcher 	F(25000000, P_GPLL0, 12, 1, 2),
960aec89f78SBastian Köcher 	F(50000000, P_GPLL0, 12, 0, 0),
961aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
962aec89f78SBastian Köcher 	F(200000000, P_GPLL0, 3, 0, 0),
963aec89f78SBastian Köcher 	{ }
964aec89f78SBastian Köcher };
965aec89f78SBastian Köcher 
966aec89f78SBastian Köcher static struct clk_rcg2 sdcc2_apps_clk_src = {
967aec89f78SBastian Köcher 	.cmd_rcgr = 0x0510,
968aec89f78SBastian Köcher 	.mnd_width = 8,
969aec89f78SBastian Köcher 	.hid_width = 5,
970aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
971aec89f78SBastian Köcher 	.freq_tbl = ftbl_sdcc2_4_apps_clk_src,
9720519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
973aec89f78SBastian Köcher 		.name = "sdcc2_apps_clk_src",
9740519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
975aec89f78SBastian Köcher 		.num_parents = 2,
9765f5001a9SRajendra Nayak 		.ops = &clk_rcg2_floor_ops,
977aec89f78SBastian Köcher 	},
978aec89f78SBastian Köcher };
979aec89f78SBastian Köcher 
980aec89f78SBastian Köcher static struct clk_rcg2 sdcc3_apps_clk_src = {
981aec89f78SBastian Köcher 	.cmd_rcgr = 0x0550,
982aec89f78SBastian Köcher 	.mnd_width = 8,
983aec89f78SBastian Köcher 	.hid_width = 5,
984aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
985aec89f78SBastian Köcher 	.freq_tbl = ftbl_sdcc2_4_apps_clk_src,
9860519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
987aec89f78SBastian Köcher 		.name = "sdcc3_apps_clk_src",
9880519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
989aec89f78SBastian Köcher 		.num_parents = 2,
9905f5001a9SRajendra Nayak 		.ops = &clk_rcg2_floor_ops,
991aec89f78SBastian Köcher 	},
992aec89f78SBastian Köcher };
993aec89f78SBastian Köcher 
994aec89f78SBastian Köcher static struct clk_rcg2 sdcc4_apps_clk_src = {
995aec89f78SBastian Köcher 	.cmd_rcgr = 0x0590,
996aec89f78SBastian Köcher 	.mnd_width = 8,
997aec89f78SBastian Köcher 	.hid_width = 5,
998aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
999aec89f78SBastian Köcher 	.freq_tbl = ftbl_sdcc2_4_apps_clk_src,
10000519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1001aec89f78SBastian Köcher 		.name = "sdcc4_apps_clk_src",
10020519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
1003aec89f78SBastian Köcher 		.num_parents = 2,
10045f5001a9SRajendra Nayak 		.ops = &clk_rcg2_floor_ops,
1005aec89f78SBastian Köcher 	},
1006aec89f78SBastian Köcher };
1007aec89f78SBastian Köcher 
1008aec89f78SBastian Köcher static struct freq_tbl ftbl_tsif_ref_clk_src[] = {
1009aec89f78SBastian Köcher 	F(105500, P_XO, 1, 1, 182),
1010aec89f78SBastian Köcher 	{ }
1011aec89f78SBastian Köcher };
1012aec89f78SBastian Köcher 
1013aec89f78SBastian Köcher static struct clk_rcg2 tsif_ref_clk_src = {
1014aec89f78SBastian Köcher 	.cmd_rcgr = 0x0d90,
1015aec89f78SBastian Köcher 	.mnd_width = 8,
1016aec89f78SBastian Köcher 	.hid_width = 5,
1017aec89f78SBastian Köcher 	.freq_tbl = ftbl_tsif_ref_clk_src,
10180519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1019aec89f78SBastian Köcher 		.name = "tsif_ref_clk_src",
10200519d1d0SKonrad Dybcio 		.parent_data = &(const struct clk_parent_data){
10210519d1d0SKonrad Dybcio 				.fw_name = "xo",
10220519d1d0SKonrad Dybcio 		},
1023aec89f78SBastian Köcher 		.num_parents = 1,
1024aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
1025aec89f78SBastian Köcher 	},
1026aec89f78SBastian Köcher };
1027aec89f78SBastian Köcher 
1028aec89f78SBastian Köcher static struct freq_tbl ftbl_usb30_mock_utmi_clk_src[] = {
1029aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
1030aec89f78SBastian Köcher 	F(60000000, P_GPLL0, 10, 0, 0),
1031aec89f78SBastian Köcher 	{ }
1032aec89f78SBastian Köcher };
1033aec89f78SBastian Köcher 
1034aec89f78SBastian Köcher static struct clk_rcg2 usb30_mock_utmi_clk_src = {
1035aec89f78SBastian Köcher 	.cmd_rcgr = 0x03e8,
1036aec89f78SBastian Köcher 	.hid_width = 5,
1037aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
1038aec89f78SBastian Köcher 	.freq_tbl = ftbl_usb30_mock_utmi_clk_src,
10390519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1040aec89f78SBastian Köcher 		.name = "usb30_mock_utmi_clk_src",
10410519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
1042aec89f78SBastian Köcher 		.num_parents = 2,
1043aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
1044aec89f78SBastian Köcher 	},
1045aec89f78SBastian Köcher };
1046aec89f78SBastian Köcher 
1047aec89f78SBastian Köcher static struct freq_tbl ftbl_usb3_phy_aux_clk_src[] = {
1048aec89f78SBastian Köcher 	F(1200000, P_XO, 16, 0, 0),
1049aec89f78SBastian Köcher 	{ }
1050aec89f78SBastian Köcher };
1051aec89f78SBastian Köcher 
1052aec89f78SBastian Köcher static struct clk_rcg2 usb3_phy_aux_clk_src = {
1053aec89f78SBastian Köcher 	.cmd_rcgr = 0x1414,
1054aec89f78SBastian Köcher 	.hid_width = 5,
1055aec89f78SBastian Köcher 	.freq_tbl = ftbl_usb3_phy_aux_clk_src,
10560519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1057aec89f78SBastian Köcher 		.name = "usb3_phy_aux_clk_src",
10580519d1d0SKonrad Dybcio 		.parent_data = &(const struct clk_parent_data){
10590519d1d0SKonrad Dybcio 				.fw_name = "xo",
10600519d1d0SKonrad Dybcio 		},
1061aec89f78SBastian Köcher 		.num_parents = 1,
1062aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
1063aec89f78SBastian Köcher 	},
1064aec89f78SBastian Köcher };
1065aec89f78SBastian Köcher 
1066aec89f78SBastian Köcher static struct freq_tbl ftbl_usb_hs_system_clk_src[] = {
1067aec89f78SBastian Köcher 	F(75000000, P_GPLL0, 8, 0, 0),
1068aec89f78SBastian Köcher 	{ }
1069aec89f78SBastian Köcher };
1070aec89f78SBastian Köcher 
1071aec89f78SBastian Köcher static struct clk_rcg2 usb_hs_system_clk_src = {
1072aec89f78SBastian Köcher 	.cmd_rcgr = 0x0490,
1073aec89f78SBastian Köcher 	.hid_width = 5,
1074aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
1075aec89f78SBastian Köcher 	.freq_tbl = ftbl_usb_hs_system_clk_src,
10760519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1077aec89f78SBastian Köcher 		.name = "usb_hs_system_clk_src",
10780519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
1079aec89f78SBastian Köcher 		.num_parents = 2,
1080aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
1081aec89f78SBastian Köcher 	},
1082aec89f78SBastian Köcher };
1083aec89f78SBastian Köcher 
1084aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_ahb_clk = {
1085aec89f78SBastian Köcher 	.halt_reg = 0x05c4,
1086aec89f78SBastian Köcher 	.halt_check = BRANCH_HALT_VOTED,
1087aec89f78SBastian Köcher 	.clkr = {
1088aec89f78SBastian Köcher 		.enable_reg = 0x1484,
1089aec89f78SBastian Köcher 		.enable_mask = BIT(17),
10900519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1091aec89f78SBastian Köcher 			.name = "gcc_blsp1_ahb_clk",
1092aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1093aec89f78SBastian Köcher 		},
1094aec89f78SBastian Köcher 	},
1095aec89f78SBastian Köcher };
1096aec89f78SBastian Köcher 
1097aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = {
1098aec89f78SBastian Köcher 	.halt_reg = 0x0648,
1099aec89f78SBastian Köcher 	.clkr = {
1100aec89f78SBastian Köcher 		.enable_reg = 0x0648,
1101aec89f78SBastian Köcher 		.enable_mask = BIT(0),
11020519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1103aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup1_i2c_apps_clk",
11040519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup1_i2c_apps_clk_src.clkr.hw },
1105aec89f78SBastian Köcher 			.num_parents = 1,
1106aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1107aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1108aec89f78SBastian Köcher 		},
1109aec89f78SBastian Köcher 	},
1110aec89f78SBastian Köcher };
1111aec89f78SBastian Köcher 
1112aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = {
1113aec89f78SBastian Köcher 	.halt_reg = 0x0644,
1114aec89f78SBastian Köcher 	.clkr = {
1115aec89f78SBastian Köcher 		.enable_reg = 0x0644,
1116aec89f78SBastian Köcher 		.enable_mask = BIT(0),
11170519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1118aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup1_spi_apps_clk",
11190519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup1_spi_apps_clk_src.clkr.hw },
1120aec89f78SBastian Köcher 			.num_parents = 1,
1121aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1122aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1123aec89f78SBastian Köcher 		},
1124aec89f78SBastian Köcher 	},
1125aec89f78SBastian Köcher };
1126aec89f78SBastian Köcher 
1127aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = {
1128aec89f78SBastian Köcher 	.halt_reg = 0x06c8,
1129aec89f78SBastian Köcher 	.clkr = {
1130aec89f78SBastian Köcher 		.enable_reg = 0x06c8,
1131aec89f78SBastian Köcher 		.enable_mask = BIT(0),
11320519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1133aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup2_i2c_apps_clk",
11340519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup2_i2c_apps_clk_src.clkr.hw },
1135aec89f78SBastian Köcher 			.num_parents = 1,
1136aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1137aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1138aec89f78SBastian Köcher 		},
1139aec89f78SBastian Köcher 	},
1140aec89f78SBastian Köcher };
1141aec89f78SBastian Köcher 
1142aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = {
1143aec89f78SBastian Köcher 	.halt_reg = 0x06c4,
1144aec89f78SBastian Köcher 	.clkr = {
1145aec89f78SBastian Köcher 		.enable_reg = 0x06c4,
1146aec89f78SBastian Köcher 		.enable_mask = BIT(0),
11470519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1148aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup2_spi_apps_clk",
11490519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup2_spi_apps_clk_src.clkr.hw },
1150aec89f78SBastian Köcher 			.num_parents = 1,
1151aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1152aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1153aec89f78SBastian Köcher 		},
1154aec89f78SBastian Köcher 	},
1155aec89f78SBastian Köcher };
1156aec89f78SBastian Köcher 
1157aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = {
1158aec89f78SBastian Köcher 	.halt_reg = 0x0748,
1159aec89f78SBastian Köcher 	.clkr = {
1160aec89f78SBastian Köcher 		.enable_reg = 0x0748,
1161aec89f78SBastian Köcher 		.enable_mask = BIT(0),
11620519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1163aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup3_i2c_apps_clk",
11640519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup3_i2c_apps_clk_src.clkr.hw },
1165aec89f78SBastian Köcher 			.num_parents = 1,
1166aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1167aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1168aec89f78SBastian Köcher 		},
1169aec89f78SBastian Köcher 	},
1170aec89f78SBastian Köcher };
1171aec89f78SBastian Köcher 
1172aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = {
1173aec89f78SBastian Köcher 	.halt_reg = 0x0744,
1174aec89f78SBastian Köcher 	.clkr = {
1175aec89f78SBastian Köcher 		.enable_reg = 0x0744,
1176aec89f78SBastian Köcher 		.enable_mask = BIT(0),
11770519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1178aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup3_spi_apps_clk",
11790519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup3_spi_apps_clk_src.clkr.hw },
1180aec89f78SBastian Köcher 			.num_parents = 1,
1181aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1182aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1183aec89f78SBastian Köcher 		},
1184aec89f78SBastian Köcher 	},
1185aec89f78SBastian Köcher };
1186aec89f78SBastian Köcher 
1187aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = {
1188aec89f78SBastian Köcher 	.halt_reg = 0x07c8,
1189aec89f78SBastian Köcher 	.clkr = {
1190aec89f78SBastian Köcher 		.enable_reg = 0x07c8,
1191aec89f78SBastian Köcher 		.enable_mask = BIT(0),
11920519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1193aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup4_i2c_apps_clk",
11940519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup4_i2c_apps_clk_src.clkr.hw },
1195aec89f78SBastian Köcher 			.num_parents = 1,
1196aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1197aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1198aec89f78SBastian Köcher 		},
1199aec89f78SBastian Köcher 	},
1200aec89f78SBastian Köcher };
1201aec89f78SBastian Köcher 
1202aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = {
1203aec89f78SBastian Köcher 	.halt_reg = 0x07c4,
1204aec89f78SBastian Köcher 	.clkr = {
1205aec89f78SBastian Köcher 		.enable_reg = 0x07c4,
1206aec89f78SBastian Köcher 		.enable_mask = BIT(0),
12070519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1208aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup4_spi_apps_clk",
12090519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup4_spi_apps_clk_src.clkr.hw },
1210aec89f78SBastian Köcher 			.num_parents = 1,
1211aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1212aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1213aec89f78SBastian Köcher 		},
1214aec89f78SBastian Köcher 	},
1215aec89f78SBastian Köcher };
1216aec89f78SBastian Köcher 
1217aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = {
1218aec89f78SBastian Köcher 	.halt_reg = 0x0848,
1219aec89f78SBastian Köcher 	.clkr = {
1220aec89f78SBastian Köcher 		.enable_reg = 0x0848,
1221aec89f78SBastian Köcher 		.enable_mask = BIT(0),
12220519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1223aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup5_i2c_apps_clk",
12240519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup5_i2c_apps_clk_src.clkr.hw },
1225aec89f78SBastian Köcher 			.num_parents = 1,
1226aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1227aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1228aec89f78SBastian Köcher 		},
1229aec89f78SBastian Köcher 	},
1230aec89f78SBastian Köcher };
1231aec89f78SBastian Köcher 
1232aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = {
1233aec89f78SBastian Köcher 	.halt_reg = 0x0844,
1234aec89f78SBastian Köcher 	.clkr = {
1235aec89f78SBastian Köcher 		.enable_reg = 0x0844,
1236aec89f78SBastian Köcher 		.enable_mask = BIT(0),
12370519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1238aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup5_spi_apps_clk",
12390519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup5_spi_apps_clk_src.clkr.hw },
1240aec89f78SBastian Köcher 			.num_parents = 1,
1241aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1242aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1243aec89f78SBastian Köcher 		},
1244aec89f78SBastian Köcher 	},
1245aec89f78SBastian Köcher };
1246aec89f78SBastian Köcher 
1247aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup6_i2c_apps_clk = {
1248aec89f78SBastian Köcher 	.halt_reg = 0x08c8,
1249aec89f78SBastian Köcher 	.clkr = {
1250aec89f78SBastian Köcher 		.enable_reg = 0x08c8,
1251aec89f78SBastian Köcher 		.enable_mask = BIT(0),
12520519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1253aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup6_i2c_apps_clk",
12540519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup6_i2c_apps_clk_src.clkr.hw },
1255aec89f78SBastian Köcher 			.num_parents = 1,
1256aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1257aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1258aec89f78SBastian Köcher 		},
1259aec89f78SBastian Köcher 	},
1260aec89f78SBastian Köcher };
1261aec89f78SBastian Köcher 
1262aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = {
1263aec89f78SBastian Köcher 	.halt_reg = 0x08c4,
1264aec89f78SBastian Köcher 	.clkr = {
1265aec89f78SBastian Köcher 		.enable_reg = 0x08c4,
1266aec89f78SBastian Köcher 		.enable_mask = BIT(0),
12670519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1268aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup6_spi_apps_clk",
12690519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup6_spi_apps_clk_src.clkr.hw },
1270aec89f78SBastian Köcher 			.num_parents = 1,
1271aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1272aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1273aec89f78SBastian Köcher 		},
1274aec89f78SBastian Köcher 	},
1275aec89f78SBastian Köcher };
1276aec89f78SBastian Köcher 
1277aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart1_apps_clk = {
1278aec89f78SBastian Köcher 	.halt_reg = 0x0684,
1279aec89f78SBastian Köcher 	.clkr = {
1280aec89f78SBastian Köcher 		.enable_reg = 0x0684,
1281aec89f78SBastian Köcher 		.enable_mask = BIT(0),
12820519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1283aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart1_apps_clk",
12840519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_uart1_apps_clk_src.clkr.hw },
1285aec89f78SBastian Köcher 			.num_parents = 1,
1286aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1287aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1288aec89f78SBastian Köcher 		},
1289aec89f78SBastian Köcher 	},
1290aec89f78SBastian Köcher };
1291aec89f78SBastian Köcher 
1292aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart2_apps_clk = {
1293aec89f78SBastian Köcher 	.halt_reg = 0x0704,
1294aec89f78SBastian Köcher 	.clkr = {
1295aec89f78SBastian Köcher 		.enable_reg = 0x0704,
1296aec89f78SBastian Köcher 		.enable_mask = BIT(0),
12970519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1298aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart2_apps_clk",
12990519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_uart2_apps_clk_src.clkr.hw },
1300aec89f78SBastian Köcher 			.num_parents = 1,
1301aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1302aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1303aec89f78SBastian Köcher 		},
1304aec89f78SBastian Köcher 	},
1305aec89f78SBastian Köcher };
1306aec89f78SBastian Köcher 
1307aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart3_apps_clk = {
1308aec89f78SBastian Köcher 	.halt_reg = 0x0784,
1309aec89f78SBastian Köcher 	.clkr = {
1310aec89f78SBastian Köcher 		.enable_reg = 0x0784,
1311aec89f78SBastian Köcher 		.enable_mask = BIT(0),
13120519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1313aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart3_apps_clk",
13140519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_uart3_apps_clk_src.clkr.hw },
1315aec89f78SBastian Köcher 			.num_parents = 1,
1316aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1317aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1318aec89f78SBastian Köcher 		},
1319aec89f78SBastian Köcher 	},
1320aec89f78SBastian Köcher };
1321aec89f78SBastian Köcher 
1322aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart4_apps_clk = {
1323aec89f78SBastian Köcher 	.halt_reg = 0x0804,
1324aec89f78SBastian Köcher 	.clkr = {
1325aec89f78SBastian Köcher 		.enable_reg = 0x0804,
1326aec89f78SBastian Köcher 		.enable_mask = BIT(0),
13270519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1328aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart4_apps_clk",
13290519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_uart4_apps_clk_src.clkr.hw },
1330aec89f78SBastian Köcher 			.num_parents = 1,
1331aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1332aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1333aec89f78SBastian Köcher 		},
1334aec89f78SBastian Köcher 	},
1335aec89f78SBastian Köcher };
1336aec89f78SBastian Köcher 
1337aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart5_apps_clk = {
1338aec89f78SBastian Köcher 	.halt_reg = 0x0884,
1339aec89f78SBastian Köcher 	.clkr = {
1340aec89f78SBastian Köcher 		.enable_reg = 0x0884,
1341aec89f78SBastian Köcher 		.enable_mask = BIT(0),
13420519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1343aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart5_apps_clk",
13440519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_uart5_apps_clk_src.clkr.hw },
1345aec89f78SBastian Köcher 			.num_parents = 1,
1346aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1347aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1348aec89f78SBastian Köcher 		},
1349aec89f78SBastian Köcher 	},
1350aec89f78SBastian Köcher };
1351aec89f78SBastian Köcher 
1352aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart6_apps_clk = {
1353aec89f78SBastian Köcher 	.halt_reg = 0x0904,
1354aec89f78SBastian Köcher 	.clkr = {
1355aec89f78SBastian Köcher 		.enable_reg = 0x0904,
1356aec89f78SBastian Köcher 		.enable_mask = BIT(0),
13570519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1358aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart6_apps_clk",
13590519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_uart6_apps_clk_src.clkr.hw },
1360aec89f78SBastian Köcher 			.num_parents = 1,
1361aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1362aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1363aec89f78SBastian Köcher 		},
1364aec89f78SBastian Köcher 	},
1365aec89f78SBastian Köcher };
1366aec89f78SBastian Köcher 
1367aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_ahb_clk = {
1368aec89f78SBastian Köcher 	.halt_reg = 0x0944,
1369aec89f78SBastian Köcher 	.halt_check = BRANCH_HALT_VOTED,
1370aec89f78SBastian Köcher 	.clkr = {
1371aec89f78SBastian Köcher 		.enable_reg = 0x1484,
1372aec89f78SBastian Köcher 		.enable_mask = BIT(15),
13730519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1374aec89f78SBastian Köcher 			.name = "gcc_blsp2_ahb_clk",
1375aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1376aec89f78SBastian Köcher 		},
1377aec89f78SBastian Köcher 	},
1378aec89f78SBastian Köcher };
1379aec89f78SBastian Köcher 
1380aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup1_i2c_apps_clk = {
1381aec89f78SBastian Köcher 	.halt_reg = 0x0988,
1382aec89f78SBastian Köcher 	.clkr = {
1383aec89f78SBastian Köcher 		.enable_reg = 0x0988,
1384aec89f78SBastian Köcher 		.enable_mask = BIT(0),
13850519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1386aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup1_i2c_apps_clk",
13870519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup1_i2c_apps_clk_src.clkr.hw },
1388aec89f78SBastian Köcher 			.num_parents = 1,
1389aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1390aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1391aec89f78SBastian Köcher 		},
1392aec89f78SBastian Köcher 	},
1393aec89f78SBastian Köcher };
1394aec89f78SBastian Köcher 
1395aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup1_spi_apps_clk = {
1396aec89f78SBastian Köcher 	.halt_reg = 0x0984,
1397aec89f78SBastian Köcher 	.clkr = {
1398aec89f78SBastian Köcher 		.enable_reg = 0x0984,
1399aec89f78SBastian Köcher 		.enable_mask = BIT(0),
14000519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1401aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup1_spi_apps_clk",
14020519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup1_spi_apps_clk_src.clkr.hw },
1403aec89f78SBastian Köcher 			.num_parents = 1,
1404aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1405aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1406aec89f78SBastian Köcher 		},
1407aec89f78SBastian Köcher 	},
1408aec89f78SBastian Köcher };
1409aec89f78SBastian Köcher 
1410aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup2_i2c_apps_clk = {
1411aec89f78SBastian Köcher 	.halt_reg = 0x0a08,
1412aec89f78SBastian Köcher 	.clkr = {
1413aec89f78SBastian Köcher 		.enable_reg = 0x0a08,
1414aec89f78SBastian Köcher 		.enable_mask = BIT(0),
14150519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1416aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup2_i2c_apps_clk",
14170519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup2_i2c_apps_clk_src.clkr.hw },
1418aec89f78SBastian Köcher 			.num_parents = 1,
1419aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1420aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1421aec89f78SBastian Köcher 		},
1422aec89f78SBastian Köcher 	},
1423aec89f78SBastian Köcher };
1424aec89f78SBastian Köcher 
1425aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup2_spi_apps_clk = {
1426aec89f78SBastian Köcher 	.halt_reg = 0x0a04,
1427aec89f78SBastian Köcher 	.clkr = {
1428aec89f78SBastian Köcher 		.enable_reg = 0x0a04,
1429aec89f78SBastian Köcher 		.enable_mask = BIT(0),
14300519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1431aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup2_spi_apps_clk",
14320519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup2_spi_apps_clk_src.clkr.hw },
1433aec89f78SBastian Köcher 			.num_parents = 1,
1434aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1435aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1436aec89f78SBastian Köcher 		},
1437aec89f78SBastian Köcher 	},
1438aec89f78SBastian Köcher };
1439aec89f78SBastian Köcher 
1440aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup3_i2c_apps_clk = {
1441aec89f78SBastian Köcher 	.halt_reg = 0x0a88,
1442aec89f78SBastian Köcher 	.clkr = {
1443aec89f78SBastian Köcher 		.enable_reg = 0x0a88,
1444aec89f78SBastian Köcher 		.enable_mask = BIT(0),
14450519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1446aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup3_i2c_apps_clk",
14470519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup3_i2c_apps_clk_src.clkr.hw },
1448aec89f78SBastian Köcher 			.num_parents = 1,
1449aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1450aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1451aec89f78SBastian Köcher 		},
1452aec89f78SBastian Köcher 	},
1453aec89f78SBastian Köcher };
1454aec89f78SBastian Köcher 
1455aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup3_spi_apps_clk = {
1456aec89f78SBastian Köcher 	.halt_reg = 0x0a84,
1457aec89f78SBastian Köcher 	.clkr = {
1458aec89f78SBastian Köcher 		.enable_reg = 0x0a84,
1459aec89f78SBastian Köcher 		.enable_mask = BIT(0),
14600519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1461aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup3_spi_apps_clk",
14620519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup3_spi_apps_clk_src.clkr.hw },
1463aec89f78SBastian Köcher 			.num_parents = 1,
1464aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1465aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1466aec89f78SBastian Köcher 		},
1467aec89f78SBastian Köcher 	},
1468aec89f78SBastian Köcher };
1469aec89f78SBastian Köcher 
1470aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup4_i2c_apps_clk = {
1471aec89f78SBastian Köcher 	.halt_reg = 0x0b08,
1472aec89f78SBastian Köcher 	.clkr = {
1473aec89f78SBastian Köcher 		.enable_reg = 0x0b08,
1474aec89f78SBastian Köcher 		.enable_mask = BIT(0),
14750519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1476aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup4_i2c_apps_clk",
14770519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup4_i2c_apps_clk_src.clkr.hw },
1478aec89f78SBastian Köcher 			.num_parents = 1,
1479aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1480aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1481aec89f78SBastian Köcher 		},
1482aec89f78SBastian Köcher 	},
1483aec89f78SBastian Köcher };
1484aec89f78SBastian Köcher 
1485aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup4_spi_apps_clk = {
1486aec89f78SBastian Köcher 	.halt_reg = 0x0b04,
1487aec89f78SBastian Köcher 	.clkr = {
1488aec89f78SBastian Köcher 		.enable_reg = 0x0b04,
1489aec89f78SBastian Köcher 		.enable_mask = BIT(0),
14900519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1491aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup4_spi_apps_clk",
14920519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup4_spi_apps_clk_src.clkr.hw },
1493aec89f78SBastian Köcher 			.num_parents = 1,
1494aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1495aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1496aec89f78SBastian Köcher 		},
1497aec89f78SBastian Köcher 	},
1498aec89f78SBastian Köcher };
1499aec89f78SBastian Köcher 
1500aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup5_i2c_apps_clk = {
1501aec89f78SBastian Köcher 	.halt_reg = 0x0b88,
1502aec89f78SBastian Köcher 	.clkr = {
1503aec89f78SBastian Köcher 		.enable_reg = 0x0b88,
1504aec89f78SBastian Köcher 		.enable_mask = BIT(0),
15050519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1506aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup5_i2c_apps_clk",
15070519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup5_i2c_apps_clk_src.clkr.hw },
1508aec89f78SBastian Köcher 			.num_parents = 1,
1509aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1510aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1511aec89f78SBastian Köcher 		},
1512aec89f78SBastian Köcher 	},
1513aec89f78SBastian Köcher };
1514aec89f78SBastian Köcher 
1515aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup5_spi_apps_clk = {
1516aec89f78SBastian Köcher 	.halt_reg = 0x0b84,
1517aec89f78SBastian Köcher 	.clkr = {
1518aec89f78SBastian Köcher 		.enable_reg = 0x0b84,
1519aec89f78SBastian Köcher 		.enable_mask = BIT(0),
15200519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1521aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup5_spi_apps_clk",
15220519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup5_spi_apps_clk_src.clkr.hw },
1523aec89f78SBastian Köcher 			.num_parents = 1,
1524aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1525aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1526aec89f78SBastian Köcher 		},
1527aec89f78SBastian Köcher 	},
1528aec89f78SBastian Köcher };
1529aec89f78SBastian Köcher 
1530aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup6_i2c_apps_clk = {
1531aec89f78SBastian Köcher 	.halt_reg = 0x0c08,
1532aec89f78SBastian Köcher 	.clkr = {
1533aec89f78SBastian Köcher 		.enable_reg = 0x0c08,
1534aec89f78SBastian Köcher 		.enable_mask = BIT(0),
15350519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1536aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup6_i2c_apps_clk",
15370519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup6_i2c_apps_clk_src.clkr.hw },
1538aec89f78SBastian Köcher 			.num_parents = 1,
1539aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1540aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1541aec89f78SBastian Köcher 		},
1542aec89f78SBastian Köcher 	},
1543aec89f78SBastian Köcher };
1544aec89f78SBastian Köcher 
1545aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup6_spi_apps_clk = {
1546aec89f78SBastian Köcher 	.halt_reg = 0x0c04,
1547aec89f78SBastian Köcher 	.clkr = {
1548aec89f78SBastian Köcher 		.enable_reg = 0x0c04,
1549aec89f78SBastian Köcher 		.enable_mask = BIT(0),
15500519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1551aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup6_spi_apps_clk",
15520519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup6_spi_apps_clk_src.clkr.hw },
1553aec89f78SBastian Köcher 			.num_parents = 1,
1554aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1555aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1556aec89f78SBastian Köcher 		},
1557aec89f78SBastian Köcher 	},
1558aec89f78SBastian Köcher };
1559aec89f78SBastian Köcher 
1560aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart1_apps_clk = {
1561aec89f78SBastian Köcher 	.halt_reg = 0x09c4,
1562aec89f78SBastian Köcher 	.clkr = {
1563aec89f78SBastian Köcher 		.enable_reg = 0x09c4,
1564aec89f78SBastian Köcher 		.enable_mask = BIT(0),
15650519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1566aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart1_apps_clk",
15670519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_uart1_apps_clk_src.clkr.hw },
1568aec89f78SBastian Köcher 			.num_parents = 1,
1569aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1570aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1571aec89f78SBastian Köcher 		},
1572aec89f78SBastian Köcher 	},
1573aec89f78SBastian Köcher };
1574aec89f78SBastian Köcher 
1575aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart2_apps_clk = {
1576aec89f78SBastian Köcher 	.halt_reg = 0x0a44,
1577aec89f78SBastian Köcher 	.clkr = {
1578aec89f78SBastian Köcher 		.enable_reg = 0x0a44,
1579aec89f78SBastian Köcher 		.enable_mask = BIT(0),
15800519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1581aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart2_apps_clk",
15820519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_uart2_apps_clk_src.clkr.hw },
1583aec89f78SBastian Köcher 			.num_parents = 1,
1584aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1585aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1586aec89f78SBastian Köcher 		},
1587aec89f78SBastian Köcher 	},
1588aec89f78SBastian Köcher };
1589aec89f78SBastian Köcher 
1590aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart3_apps_clk = {
1591aec89f78SBastian Köcher 	.halt_reg = 0x0ac4,
1592aec89f78SBastian Köcher 	.clkr = {
1593aec89f78SBastian Köcher 		.enable_reg = 0x0ac4,
1594aec89f78SBastian Köcher 		.enable_mask = BIT(0),
15950519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1596aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart3_apps_clk",
15970519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_uart3_apps_clk_src.clkr.hw },
1598aec89f78SBastian Köcher 			.num_parents = 1,
1599aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1600aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1601aec89f78SBastian Köcher 		},
1602aec89f78SBastian Köcher 	},
1603aec89f78SBastian Köcher };
1604aec89f78SBastian Köcher 
1605aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart4_apps_clk = {
1606aec89f78SBastian Köcher 	.halt_reg = 0x0b44,
1607aec89f78SBastian Köcher 	.clkr = {
1608aec89f78SBastian Köcher 		.enable_reg = 0x0b44,
1609aec89f78SBastian Köcher 		.enable_mask = BIT(0),
16100519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1611aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart4_apps_clk",
16120519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_uart4_apps_clk_src.clkr.hw },
1613aec89f78SBastian Köcher 			.num_parents = 1,
1614aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1615aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1616aec89f78SBastian Köcher 		},
1617aec89f78SBastian Köcher 	},
1618aec89f78SBastian Köcher };
1619aec89f78SBastian Köcher 
1620aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart5_apps_clk = {
1621aec89f78SBastian Köcher 	.halt_reg = 0x0bc4,
1622aec89f78SBastian Köcher 	.clkr = {
1623aec89f78SBastian Köcher 		.enable_reg = 0x0bc4,
1624aec89f78SBastian Köcher 		.enable_mask = BIT(0),
16250519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1626aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart5_apps_clk",
16270519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_uart5_apps_clk_src.clkr.hw },
1628aec89f78SBastian Köcher 			.num_parents = 1,
1629aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1630aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1631aec89f78SBastian Köcher 		},
1632aec89f78SBastian Köcher 	},
1633aec89f78SBastian Köcher };
1634aec89f78SBastian Köcher 
1635aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart6_apps_clk = {
1636aec89f78SBastian Köcher 	.halt_reg = 0x0c44,
1637aec89f78SBastian Köcher 	.clkr = {
1638aec89f78SBastian Köcher 		.enable_reg = 0x0c44,
1639aec89f78SBastian Köcher 		.enable_mask = BIT(0),
16400519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1641aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart6_apps_clk",
16420519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_uart6_apps_clk_src.clkr.hw },
1643aec89f78SBastian Köcher 			.num_parents = 1,
1644aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1645aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1646aec89f78SBastian Köcher 		},
1647aec89f78SBastian Köcher 	},
1648aec89f78SBastian Köcher };
1649aec89f78SBastian Köcher 
1650aec89f78SBastian Köcher static struct clk_branch gcc_gp1_clk = {
1651aec89f78SBastian Köcher 	.halt_reg = 0x1900,
1652aec89f78SBastian Köcher 	.clkr = {
1653aec89f78SBastian Köcher 		.enable_reg = 0x1900,
1654aec89f78SBastian Köcher 		.enable_mask = BIT(0),
16550519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1656aec89f78SBastian Köcher 			.name = "gcc_gp1_clk",
16570519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &gp1_clk_src.clkr.hw },
1658aec89f78SBastian Köcher 			.num_parents = 1,
1659aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1660aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1661aec89f78SBastian Köcher 		},
1662aec89f78SBastian Köcher 	},
1663aec89f78SBastian Köcher };
1664aec89f78SBastian Köcher 
1665aec89f78SBastian Köcher static struct clk_branch gcc_gp2_clk = {
1666aec89f78SBastian Köcher 	.halt_reg = 0x1940,
1667aec89f78SBastian Köcher 	.clkr = {
1668aec89f78SBastian Köcher 		.enable_reg = 0x1940,
1669aec89f78SBastian Köcher 		.enable_mask = BIT(0),
16700519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1671aec89f78SBastian Köcher 			.name = "gcc_gp2_clk",
16720519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &gp2_clk_src.clkr.hw },
1673aec89f78SBastian Köcher 			.num_parents = 1,
1674aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1675aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1676aec89f78SBastian Köcher 		},
1677aec89f78SBastian Köcher 	},
1678aec89f78SBastian Köcher };
1679aec89f78SBastian Köcher 
1680aec89f78SBastian Köcher static struct clk_branch gcc_gp3_clk = {
1681aec89f78SBastian Köcher 	.halt_reg = 0x1980,
1682aec89f78SBastian Köcher 	.clkr = {
1683aec89f78SBastian Köcher 		.enable_reg = 0x1980,
1684aec89f78SBastian Köcher 		.enable_mask = BIT(0),
16850519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1686aec89f78SBastian Köcher 			.name = "gcc_gp3_clk",
16870519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &gp3_clk_src.clkr.hw },
1688aec89f78SBastian Köcher 			.num_parents = 1,
1689aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1690aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1691aec89f78SBastian Köcher 		},
1692aec89f78SBastian Köcher 	},
1693aec89f78SBastian Köcher };
1694aec89f78SBastian Köcher 
16958c18b41bSKonrad Dybcio static struct clk_branch gcc_lpass_q6_axi_clk = {
16968c18b41bSKonrad Dybcio 	.halt_reg = 0x0280,
16978c18b41bSKonrad Dybcio 	.clkr = {
16988c18b41bSKonrad Dybcio 		.enable_reg = 0x0280,
16998c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
17000519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
17018c18b41bSKonrad Dybcio 			.name = "gcc_lpass_q6_axi_clk",
17028c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
17038c18b41bSKonrad Dybcio 		},
17048c18b41bSKonrad Dybcio 	},
17058c18b41bSKonrad Dybcio };
17068c18b41bSKonrad Dybcio 
17078c18b41bSKonrad Dybcio static struct clk_branch gcc_mss_q6_bimc_axi_clk = {
17088c18b41bSKonrad Dybcio 	.halt_reg = 0x0284,
17098c18b41bSKonrad Dybcio 	.clkr = {
17108c18b41bSKonrad Dybcio 		.enable_reg = 0x0284,
17118c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
17120519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
17138c18b41bSKonrad Dybcio 			.name = "gcc_mss_q6_bimc_axi_clk",
17148c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
17158c18b41bSKonrad Dybcio 		},
17168c18b41bSKonrad Dybcio 	},
17178c18b41bSKonrad Dybcio };
17188c18b41bSKonrad Dybcio 
1719aec89f78SBastian Köcher static struct clk_branch gcc_pcie_0_aux_clk = {
1720aec89f78SBastian Köcher 	.halt_reg = 0x1ad4,
1721aec89f78SBastian Köcher 	.clkr = {
1722aec89f78SBastian Köcher 		.enable_reg = 0x1ad4,
1723aec89f78SBastian Köcher 		.enable_mask = BIT(0),
17240519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1725aec89f78SBastian Köcher 			.name = "gcc_pcie_0_aux_clk",
17260519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &pcie_0_aux_clk_src.clkr.hw },
1727aec89f78SBastian Köcher 			.num_parents = 1,
1728aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1729aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1730aec89f78SBastian Köcher 		},
1731aec89f78SBastian Köcher 	},
1732aec89f78SBastian Köcher };
1733aec89f78SBastian Köcher 
17348c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_cfg_ahb_clk = {
17358c18b41bSKonrad Dybcio 	.halt_reg = 0x1ad0,
17368c18b41bSKonrad Dybcio 	.clkr = {
17378c18b41bSKonrad Dybcio 		.enable_reg = 0x1ad0,
17388c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
17390519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
17408c18b41bSKonrad Dybcio 			.name = "gcc_pcie_0_cfg_ahb_clk",
17418c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
17428c18b41bSKonrad Dybcio 		},
17438c18b41bSKonrad Dybcio 	},
17448c18b41bSKonrad Dybcio };
17458c18b41bSKonrad Dybcio 
17468c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_mstr_axi_clk = {
17478c18b41bSKonrad Dybcio 	.halt_reg = 0x1acc,
17488c18b41bSKonrad Dybcio 	.clkr = {
17498c18b41bSKonrad Dybcio 		.enable_reg = 0x1acc,
17508c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
17510519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
17528c18b41bSKonrad Dybcio 			.name = "gcc_pcie_0_mstr_axi_clk",
17538c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
17548c18b41bSKonrad Dybcio 		},
17558c18b41bSKonrad Dybcio 	},
17568c18b41bSKonrad Dybcio };
17578c18b41bSKonrad Dybcio 
1758aec89f78SBastian Köcher static struct clk_branch gcc_pcie_0_pipe_clk = {
1759aec89f78SBastian Köcher 	.halt_reg = 0x1ad8,
1760aec89f78SBastian Köcher 	.halt_check = BRANCH_HALT_DELAY,
1761aec89f78SBastian Köcher 	.clkr = {
1762aec89f78SBastian Köcher 		.enable_reg = 0x1ad8,
1763aec89f78SBastian Köcher 		.enable_mask = BIT(0),
17640519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1765aec89f78SBastian Köcher 			.name = "gcc_pcie_0_pipe_clk",
17660519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &pcie_0_pipe_clk_src.clkr.hw },
1767aec89f78SBastian Köcher 			.num_parents = 1,
1768aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1769aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1770aec89f78SBastian Köcher 		},
1771aec89f78SBastian Köcher 	},
1772aec89f78SBastian Köcher };
1773aec89f78SBastian Köcher 
17748c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_slv_axi_clk = {
17758c18b41bSKonrad Dybcio 	.halt_reg = 0x1ac8,
17768c18b41bSKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
17778c18b41bSKonrad Dybcio 	.clkr = {
17788c18b41bSKonrad Dybcio 		.enable_reg = 0x1ac8,
17798c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
17800519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
17818c18b41bSKonrad Dybcio 			.name = "gcc_pcie_0_slv_axi_clk",
17828c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
17838c18b41bSKonrad Dybcio 		},
17848c18b41bSKonrad Dybcio 	},
17858c18b41bSKonrad Dybcio };
17868c18b41bSKonrad Dybcio 
1787aec89f78SBastian Köcher static struct clk_branch gcc_pcie_1_aux_clk = {
1788aec89f78SBastian Köcher 	.halt_reg = 0x1b54,
1789aec89f78SBastian Köcher 	.clkr = {
1790aec89f78SBastian Köcher 		.enable_reg = 0x1b54,
1791aec89f78SBastian Köcher 		.enable_mask = BIT(0),
17920519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1793aec89f78SBastian Köcher 			.name = "gcc_pcie_1_aux_clk",
17940519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &pcie_1_aux_clk_src.clkr.hw },
1795aec89f78SBastian Köcher 			.num_parents = 1,
1796aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1797aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1798aec89f78SBastian Köcher 		},
1799aec89f78SBastian Köcher 	},
1800aec89f78SBastian Köcher };
1801aec89f78SBastian Köcher 
18028c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_cfg_ahb_clk = {
18038c18b41bSKonrad Dybcio 	.halt_reg = 0x1b54,
18048c18b41bSKonrad Dybcio 	.clkr = {
18058c18b41bSKonrad Dybcio 		.enable_reg = 0x1b54,
18068c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
18070519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
18088c18b41bSKonrad Dybcio 			.name = "gcc_pcie_1_cfg_ahb_clk",
18098c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
18108c18b41bSKonrad Dybcio 		},
18118c18b41bSKonrad Dybcio 	},
18128c18b41bSKonrad Dybcio };
18138c18b41bSKonrad Dybcio 
18148c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_mstr_axi_clk = {
18158c18b41bSKonrad Dybcio 	.halt_reg = 0x1b50,
18168c18b41bSKonrad Dybcio 	.clkr = {
18178c18b41bSKonrad Dybcio 		.enable_reg = 0x1b50,
18188c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
18190519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
18208c18b41bSKonrad Dybcio 			.name = "gcc_pcie_1_mstr_axi_clk",
18218c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
18228c18b41bSKonrad Dybcio 		},
18238c18b41bSKonrad Dybcio 	},
18248c18b41bSKonrad Dybcio };
18258c18b41bSKonrad Dybcio 
1826aec89f78SBastian Köcher static struct clk_branch gcc_pcie_1_pipe_clk = {
1827aec89f78SBastian Köcher 	.halt_reg = 0x1b58,
1828aec89f78SBastian Köcher 	.halt_check = BRANCH_HALT_DELAY,
1829aec89f78SBastian Köcher 	.clkr = {
1830aec89f78SBastian Köcher 		.enable_reg = 0x1b58,
1831aec89f78SBastian Köcher 		.enable_mask = BIT(0),
18320519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1833aec89f78SBastian Köcher 			.name = "gcc_pcie_1_pipe_clk",
18340519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &pcie_1_pipe_clk_src.clkr.hw },
1835aec89f78SBastian Köcher 			.num_parents = 1,
1836aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1837aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1838aec89f78SBastian Köcher 		},
1839aec89f78SBastian Köcher 	},
1840aec89f78SBastian Köcher };
1841aec89f78SBastian Köcher 
18428c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_slv_axi_clk = {
18438c18b41bSKonrad Dybcio 	.halt_reg = 0x1b48,
18448c18b41bSKonrad Dybcio 	.clkr = {
18458c18b41bSKonrad Dybcio 		.enable_reg = 0x1b48,
18468c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
18470519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
18488c18b41bSKonrad Dybcio 			.name = "gcc_pcie_1_slv_axi_clk",
18498c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
18508c18b41bSKonrad Dybcio 		},
18518c18b41bSKonrad Dybcio 	},
18528c18b41bSKonrad Dybcio };
18538c18b41bSKonrad Dybcio 
1854aec89f78SBastian Köcher static struct clk_branch gcc_pdm2_clk = {
1855aec89f78SBastian Köcher 	.halt_reg = 0x0ccc,
1856aec89f78SBastian Köcher 	.clkr = {
1857aec89f78SBastian Köcher 		.enable_reg = 0x0ccc,
1858aec89f78SBastian Köcher 		.enable_mask = BIT(0),
18590519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1860aec89f78SBastian Köcher 			.name = "gcc_pdm2_clk",
18610519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &pdm2_clk_src.clkr.hw },
1862aec89f78SBastian Köcher 			.num_parents = 1,
1863aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1864aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1865aec89f78SBastian Köcher 		},
1866aec89f78SBastian Köcher 	},
1867aec89f78SBastian Köcher };
1868aec89f78SBastian Köcher 
18698c18b41bSKonrad Dybcio static struct clk_branch gcc_pdm_ahb_clk = {
18708c18b41bSKonrad Dybcio 	.halt_reg = 0x0cc4,
18718c18b41bSKonrad Dybcio 	.clkr = {
18728c18b41bSKonrad Dybcio 		.enable_reg = 0x0cc4,
18738c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
18740519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
18758c18b41bSKonrad Dybcio 			.name = "gcc_pdm_ahb_clk",
18768c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
18778c18b41bSKonrad Dybcio 		},
18788c18b41bSKonrad Dybcio 	},
18798c18b41bSKonrad Dybcio };
18808c18b41bSKonrad Dybcio 
1881aec89f78SBastian Köcher static struct clk_branch gcc_sdcc1_apps_clk = {
1882aec89f78SBastian Köcher 	.halt_reg = 0x04c4,
1883aec89f78SBastian Köcher 	.clkr = {
1884aec89f78SBastian Köcher 		.enable_reg = 0x04c4,
1885aec89f78SBastian Köcher 		.enable_mask = BIT(0),
18860519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1887aec89f78SBastian Köcher 			.name = "gcc_sdcc1_apps_clk",
18880519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &sdcc1_apps_clk_src.clkr.hw },
1889aec89f78SBastian Köcher 			.num_parents = 1,
1890aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1891aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1892aec89f78SBastian Köcher 		},
1893aec89f78SBastian Köcher 	},
1894aec89f78SBastian Köcher };
1895aec89f78SBastian Köcher 
1896eaff16bcSJeremy McNicoll static struct clk_branch gcc_sdcc1_ahb_clk = {
1897eaff16bcSJeremy McNicoll 	.halt_reg = 0x04c8,
1898eaff16bcSJeremy McNicoll 	.clkr = {
1899eaff16bcSJeremy McNicoll 		.enable_reg = 0x04c8,
1900eaff16bcSJeremy McNicoll 		.enable_mask = BIT(0),
19010519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1902eaff16bcSJeremy McNicoll 			.name = "gcc_sdcc1_ahb_clk",
1903eaff16bcSJeremy McNicoll 			.parent_names = (const char *[]){
1904eaff16bcSJeremy McNicoll 				"periph_noc_clk_src",
1905eaff16bcSJeremy McNicoll 			},
1906eaff16bcSJeremy McNicoll 			.num_parents = 1,
1907eaff16bcSJeremy McNicoll 			.ops = &clk_branch2_ops,
1908eaff16bcSJeremy McNicoll 		},
1909eaff16bcSJeremy McNicoll 	},
1910eaff16bcSJeremy McNicoll };
1911eaff16bcSJeremy McNicoll 
19128c18b41bSKonrad Dybcio static struct clk_branch gcc_sdcc2_ahb_clk = {
19138c18b41bSKonrad Dybcio 	.halt_reg = 0x0508,
19148c18b41bSKonrad Dybcio 	.clkr = {
19158c18b41bSKonrad Dybcio 		.enable_reg = 0x0508,
19168c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
19170519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
19188c18b41bSKonrad Dybcio 			.name = "gcc_sdcc2_ahb_clk",
19198c18b41bSKonrad Dybcio 			.parent_names = (const char *[]){
19208c18b41bSKonrad Dybcio 				"periph_noc_clk_src",
19218c18b41bSKonrad Dybcio 			},
19228c18b41bSKonrad Dybcio 			.num_parents = 1,
19238c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
19248c18b41bSKonrad Dybcio 		},
19258c18b41bSKonrad Dybcio 	},
19268c18b41bSKonrad Dybcio };
19278c18b41bSKonrad Dybcio 
1928aec89f78SBastian Köcher static struct clk_branch gcc_sdcc2_apps_clk = {
1929aec89f78SBastian Köcher 	.halt_reg = 0x0504,
1930aec89f78SBastian Köcher 	.clkr = {
1931aec89f78SBastian Köcher 		.enable_reg = 0x0504,
1932aec89f78SBastian Köcher 		.enable_mask = BIT(0),
19330519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1934aec89f78SBastian Köcher 			.name = "gcc_sdcc2_apps_clk",
19350519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &sdcc2_apps_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_sdcc3_ahb_clk = {
19448c18b41bSKonrad Dybcio 	.halt_reg = 0x0548,
19458c18b41bSKonrad Dybcio 	.clkr = {
19468c18b41bSKonrad Dybcio 		.enable_reg = 0x0548,
19478c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
19480519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
19498c18b41bSKonrad Dybcio 			.name = "gcc_sdcc3_ahb_clk",
19508c18b41bSKonrad Dybcio 			.parent_names = (const char *[]){
19518c18b41bSKonrad Dybcio 				"periph_noc_clk_src",
19528c18b41bSKonrad Dybcio 			},
19538c18b41bSKonrad Dybcio 			.num_parents = 1,
19548c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
19558c18b41bSKonrad Dybcio 		},
19568c18b41bSKonrad Dybcio 	},
19578c18b41bSKonrad Dybcio };
19588c18b41bSKonrad Dybcio 
1959aec89f78SBastian Köcher static struct clk_branch gcc_sdcc3_apps_clk = {
1960aec89f78SBastian Köcher 	.halt_reg = 0x0544,
1961aec89f78SBastian Köcher 	.clkr = {
1962aec89f78SBastian Köcher 		.enable_reg = 0x0544,
1963aec89f78SBastian Köcher 		.enable_mask = BIT(0),
19640519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1965aec89f78SBastian Köcher 			.name = "gcc_sdcc3_apps_clk",
19660519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &sdcc3_apps_clk_src.clkr.hw },
1967aec89f78SBastian Köcher 			.num_parents = 1,
1968aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1969aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1970aec89f78SBastian Köcher 		},
1971aec89f78SBastian Köcher 	},
1972aec89f78SBastian Köcher };
1973aec89f78SBastian Köcher 
19748c18b41bSKonrad Dybcio static struct clk_branch gcc_sdcc4_ahb_clk = {
19758c18b41bSKonrad Dybcio 	.halt_reg = 0x0588,
19768c18b41bSKonrad Dybcio 	.clkr = {
19778c18b41bSKonrad Dybcio 		.enable_reg = 0x0588,
19788c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
19790519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
19808c18b41bSKonrad Dybcio 			.name = "gcc_sdcc4_ahb_clk",
19818c18b41bSKonrad Dybcio 			.parent_names = (const char *[]){
19828c18b41bSKonrad Dybcio 				"periph_noc_clk_src",
19838c18b41bSKonrad Dybcio 			},
19848c18b41bSKonrad Dybcio 			.num_parents = 1,
19858c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
19868c18b41bSKonrad Dybcio 		},
19878c18b41bSKonrad Dybcio 	},
19888c18b41bSKonrad Dybcio };
19898c18b41bSKonrad Dybcio 
1990aec89f78SBastian Köcher static struct clk_branch gcc_sdcc4_apps_clk = {
1991aec89f78SBastian Köcher 	.halt_reg = 0x0584,
1992aec89f78SBastian Köcher 	.clkr = {
1993aec89f78SBastian Köcher 		.enable_reg = 0x0584,
1994aec89f78SBastian Köcher 		.enable_mask = BIT(0),
19950519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1996aec89f78SBastian Köcher 			.name = "gcc_sdcc4_apps_clk",
19970519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &sdcc4_apps_clk_src.clkr.hw },
1998aec89f78SBastian Köcher 			.num_parents = 1,
1999aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2000aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2001aec89f78SBastian Köcher 		},
2002aec89f78SBastian Köcher 	},
2003aec89f78SBastian Köcher };
2004aec89f78SBastian Köcher 
2005aec89f78SBastian Köcher static struct clk_branch gcc_sys_noc_ufs_axi_clk = {
2006aec89f78SBastian Köcher 	.halt_reg = 0x1d7c,
2007aec89f78SBastian Köcher 	.clkr = {
2008aec89f78SBastian Köcher 		.enable_reg = 0x1d7c,
2009aec89f78SBastian Köcher 		.enable_mask = BIT(0),
20100519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2011aec89f78SBastian Köcher 			.name = "gcc_sys_noc_ufs_axi_clk",
20120519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw },
2013aec89f78SBastian Köcher 			.num_parents = 1,
2014aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2015aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2016aec89f78SBastian Köcher 		},
2017aec89f78SBastian Köcher 	},
2018aec89f78SBastian Köcher };
2019aec89f78SBastian Köcher 
2020aec89f78SBastian Köcher static struct clk_branch gcc_sys_noc_usb3_axi_clk = {
2021aec89f78SBastian Köcher 	.halt_reg = 0x03fc,
2022aec89f78SBastian Köcher 	.clkr = {
2023aec89f78SBastian Köcher 		.enable_reg = 0x03fc,
2024aec89f78SBastian Köcher 		.enable_mask = BIT(0),
20250519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2026aec89f78SBastian Köcher 			.name = "gcc_sys_noc_usb3_axi_clk",
20270519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &usb30_master_clk_src.clkr.hw },
2028aec89f78SBastian Köcher 			.num_parents = 1,
2029aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2030aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2031aec89f78SBastian Köcher 		},
2032aec89f78SBastian Köcher 	},
2033aec89f78SBastian Köcher };
2034aec89f78SBastian Köcher 
20358c18b41bSKonrad Dybcio static struct clk_branch gcc_tsif_ahb_clk = {
20368c18b41bSKonrad Dybcio 	.halt_reg = 0x0d84,
20378c18b41bSKonrad Dybcio 	.clkr = {
20388c18b41bSKonrad Dybcio 		.enable_reg = 0x0d84,
20398c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
20400519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
20418c18b41bSKonrad Dybcio 			.name = "gcc_tsif_ahb_clk",
20428c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
20438c18b41bSKonrad Dybcio 		},
20448c18b41bSKonrad Dybcio 	},
20458c18b41bSKonrad Dybcio };
20468c18b41bSKonrad Dybcio 
2047aec89f78SBastian Köcher static struct clk_branch gcc_tsif_ref_clk = {
2048aec89f78SBastian Köcher 	.halt_reg = 0x0d88,
2049aec89f78SBastian Köcher 	.clkr = {
2050aec89f78SBastian Köcher 		.enable_reg = 0x0d88,
2051aec89f78SBastian Köcher 		.enable_mask = BIT(0),
20520519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2053aec89f78SBastian Köcher 			.name = "gcc_tsif_ref_clk",
20540519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &tsif_ref_clk_src.clkr.hw },
2055aec89f78SBastian Köcher 			.num_parents = 1,
2056aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2057aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2058aec89f78SBastian Köcher 		},
2059aec89f78SBastian Köcher 	},
2060aec89f78SBastian Köcher };
2061aec89f78SBastian Köcher 
20628c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_ahb_clk = {
20638c18b41bSKonrad Dybcio 	.halt_reg = 0x1d4c,
20648c18b41bSKonrad Dybcio 	.clkr = {
20658c18b41bSKonrad Dybcio 		.enable_reg = 0x1d4c,
20668c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
20670519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
20688c18b41bSKonrad Dybcio 			.name = "gcc_ufs_ahb_clk",
20698c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
20708c18b41bSKonrad Dybcio 		},
20718c18b41bSKonrad Dybcio 	},
20728c18b41bSKonrad Dybcio };
20738c18b41bSKonrad Dybcio 
2074aec89f78SBastian Köcher static struct clk_branch gcc_ufs_axi_clk = {
2075aec89f78SBastian Köcher 	.halt_reg = 0x1d48,
2076aec89f78SBastian Köcher 	.clkr = {
2077aec89f78SBastian Köcher 		.enable_reg = 0x1d48,
2078aec89f78SBastian Köcher 		.enable_mask = BIT(0),
20790519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2080aec89f78SBastian Köcher 			.name = "gcc_ufs_axi_clk",
20810519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw },
2082aec89f78SBastian Köcher 			.num_parents = 1,
2083aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2084aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2085aec89f78SBastian Köcher 		},
2086aec89f78SBastian Köcher 	},
2087aec89f78SBastian Köcher };
2088aec89f78SBastian Köcher 
2089aec89f78SBastian Köcher static struct clk_branch gcc_ufs_rx_cfg_clk = {
2090aec89f78SBastian Köcher 	.halt_reg = 0x1d54,
2091aec89f78SBastian Köcher 	.clkr = {
2092aec89f78SBastian Köcher 		.enable_reg = 0x1d54,
2093aec89f78SBastian Köcher 		.enable_mask = BIT(0),
20940519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2095aec89f78SBastian Köcher 			.name = "gcc_ufs_rx_cfg_clk",
20960519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw },
2097aec89f78SBastian Köcher 			.num_parents = 1,
2098aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2099aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2100aec89f78SBastian Köcher 		},
2101aec89f78SBastian Köcher 	},
2102aec89f78SBastian Köcher };
2103aec89f78SBastian Köcher 
21048c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_rx_symbol_0_clk = {
21058c18b41bSKonrad Dybcio 	.halt_reg = 0x1d60,
21068c18b41bSKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
21078c18b41bSKonrad Dybcio 	.clkr = {
21088c18b41bSKonrad Dybcio 		.enable_reg = 0x1d60,
21098c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
21100519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
21118c18b41bSKonrad Dybcio 			.name = "gcc_ufs_rx_symbol_0_clk",
21128c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
21138c18b41bSKonrad Dybcio 		},
21148c18b41bSKonrad Dybcio 	},
21158c18b41bSKonrad Dybcio };
21168c18b41bSKonrad Dybcio 
21178c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_rx_symbol_1_clk = {
21188c18b41bSKonrad Dybcio 	.halt_reg = 0x1d64,
21198c18b41bSKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
21208c18b41bSKonrad Dybcio 	.clkr = {
21218c18b41bSKonrad Dybcio 		.enable_reg = 0x1d64,
21228c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
21230519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
21248c18b41bSKonrad Dybcio 			.name = "gcc_ufs_rx_symbol_1_clk",
21258c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
21268c18b41bSKonrad Dybcio 		},
21278c18b41bSKonrad Dybcio 	},
21288c18b41bSKonrad Dybcio };
21298c18b41bSKonrad Dybcio 
2130aec89f78SBastian Köcher static struct clk_branch gcc_ufs_tx_cfg_clk = {
2131aec89f78SBastian Köcher 	.halt_reg = 0x1d50,
2132aec89f78SBastian Köcher 	.clkr = {
2133aec89f78SBastian Köcher 		.enable_reg = 0x1d50,
2134aec89f78SBastian Köcher 		.enable_mask = BIT(0),
21350519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2136aec89f78SBastian Köcher 			.name = "gcc_ufs_tx_cfg_clk",
21370519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw },
2138aec89f78SBastian Köcher 			.num_parents = 1,
2139aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2140aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2141aec89f78SBastian Köcher 		},
2142aec89f78SBastian Köcher 	},
2143aec89f78SBastian Köcher };
2144aec89f78SBastian Köcher 
21458c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_tx_symbol_0_clk = {
21468c18b41bSKonrad Dybcio 	.halt_reg = 0x1d58,
21478c18b41bSKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
21488c18b41bSKonrad Dybcio 	.clkr = {
21498c18b41bSKonrad Dybcio 		.enable_reg = 0x1d58,
21508c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
21510519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
21528c18b41bSKonrad Dybcio 			.name = "gcc_ufs_tx_symbol_0_clk",
21538c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
21548c18b41bSKonrad Dybcio 		},
21558c18b41bSKonrad Dybcio 	},
21568c18b41bSKonrad Dybcio };
21578c18b41bSKonrad Dybcio 
21588c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_tx_symbol_1_clk = {
21598c18b41bSKonrad Dybcio 	.halt_reg = 0x1d5c,
21608c18b41bSKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
21618c18b41bSKonrad Dybcio 	.clkr = {
21628c18b41bSKonrad Dybcio 		.enable_reg = 0x1d5c,
21638c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
21640519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
21658c18b41bSKonrad Dybcio 			.name = "gcc_ufs_tx_symbol_1_clk",
21668c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
21678c18b41bSKonrad Dybcio 		},
21688c18b41bSKonrad Dybcio 	},
21698c18b41bSKonrad Dybcio };
21708c18b41bSKonrad Dybcio 
21718c18b41bSKonrad Dybcio static struct clk_branch gcc_usb2_hs_phy_sleep_clk = {
21728c18b41bSKonrad Dybcio 	.halt_reg = 0x04ac,
21738c18b41bSKonrad Dybcio 	.clkr = {
21748c18b41bSKonrad Dybcio 		.enable_reg = 0x04ac,
21758c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
21760519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
21778c18b41bSKonrad Dybcio 			.name = "gcc_usb2_hs_phy_sleep_clk",
21780519d1d0SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
21790519d1d0SKonrad Dybcio 				.fw_name = "sleep",
21800519d1d0SKonrad Dybcio 				.name = "sleep"
21810519d1d0SKonrad Dybcio 			},
21820519d1d0SKonrad Dybcio 			.num_parents = 1,
21838c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
21848c18b41bSKonrad Dybcio 		},
21858c18b41bSKonrad Dybcio 	},
21868c18b41bSKonrad Dybcio };
21878c18b41bSKonrad Dybcio 
2188aec89f78SBastian Köcher static struct clk_branch gcc_usb30_master_clk = {
2189aec89f78SBastian Köcher 	.halt_reg = 0x03c8,
2190aec89f78SBastian Köcher 	.clkr = {
2191aec89f78SBastian Köcher 		.enable_reg = 0x03c8,
2192aec89f78SBastian Köcher 		.enable_mask = BIT(0),
21930519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2194aec89f78SBastian Köcher 			.name = "gcc_usb30_master_clk",
21950519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &usb30_master_clk_src.clkr.hw },
2196aec89f78SBastian Köcher 			.num_parents = 1,
2197aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2198aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2199aec89f78SBastian Köcher 		},
2200aec89f78SBastian Köcher 	},
2201aec89f78SBastian Köcher };
2202aec89f78SBastian Köcher 
2203aec89f78SBastian Köcher static struct clk_branch gcc_usb30_mock_utmi_clk = {
2204aec89f78SBastian Köcher 	.halt_reg = 0x03d0,
2205aec89f78SBastian Köcher 	.clkr = {
2206aec89f78SBastian Köcher 		.enable_reg = 0x03d0,
2207aec89f78SBastian Köcher 		.enable_mask = BIT(0),
22080519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2209aec89f78SBastian Köcher 			.name = "gcc_usb30_mock_utmi_clk",
22100519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &usb30_mock_utmi_clk_src.clkr.hw },
2211aec89f78SBastian Köcher 			.num_parents = 1,
2212aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2213aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2214aec89f78SBastian Köcher 		},
2215aec89f78SBastian Köcher 	},
2216aec89f78SBastian Köcher };
2217aec89f78SBastian Köcher 
22188c18b41bSKonrad Dybcio static struct clk_branch gcc_usb30_sleep_clk = {
22198c18b41bSKonrad Dybcio 	.halt_reg = 0x03cc,
22208c18b41bSKonrad Dybcio 	.clkr = {
22218c18b41bSKonrad Dybcio 		.enable_reg = 0x03cc,
22228c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
22230519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
22248c18b41bSKonrad Dybcio 			.name = "gcc_usb30_sleep_clk",
22250519d1d0SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
22260519d1d0SKonrad Dybcio 				.fw_name = "sleep",
22270519d1d0SKonrad Dybcio 				.name = "sleep"
22280519d1d0SKonrad Dybcio 			},
22290519d1d0SKonrad Dybcio 			.num_parents = 1,
22308c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
22318c18b41bSKonrad Dybcio 		},
22328c18b41bSKonrad Dybcio 	},
22338c18b41bSKonrad Dybcio };
22348c18b41bSKonrad Dybcio 
2235aec89f78SBastian Köcher static struct clk_branch gcc_usb3_phy_aux_clk = {
2236aec89f78SBastian Köcher 	.halt_reg = 0x1408,
2237aec89f78SBastian Köcher 	.clkr = {
2238aec89f78SBastian Köcher 		.enable_reg = 0x1408,
2239aec89f78SBastian Köcher 		.enable_mask = BIT(0),
22400519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2241aec89f78SBastian Köcher 			.name = "gcc_usb3_phy_aux_clk",
22420519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &usb3_phy_aux_clk_src.clkr.hw },
2243aec89f78SBastian Köcher 			.num_parents = 1,
2244aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2245aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2246aec89f78SBastian Köcher 		},
2247aec89f78SBastian Köcher 	},
2248aec89f78SBastian Köcher };
2249aec89f78SBastian Köcher 
22508c18b41bSKonrad Dybcio static struct clk_branch gcc_usb_hs_ahb_clk = {
22518c18b41bSKonrad Dybcio 	.halt_reg = 0x0488,
22528c18b41bSKonrad Dybcio 	.clkr = {
22538c18b41bSKonrad Dybcio 		.enable_reg = 0x0488,
22548c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
22550519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
22568c18b41bSKonrad Dybcio 			.name = "gcc_usb_hs_ahb_clk",
22578c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
22588c18b41bSKonrad Dybcio 		},
22598c18b41bSKonrad Dybcio 	},
22608c18b41bSKonrad Dybcio };
22618c18b41bSKonrad Dybcio 
2262aec89f78SBastian Köcher static struct clk_branch gcc_usb_hs_system_clk = {
2263aec89f78SBastian Köcher 	.halt_reg = 0x0484,
2264aec89f78SBastian Köcher 	.clkr = {
2265aec89f78SBastian Köcher 		.enable_reg = 0x0484,
2266aec89f78SBastian Köcher 		.enable_mask = BIT(0),
22670519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2268aec89f78SBastian Köcher 			.name = "gcc_usb_hs_system_clk",
22690519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &usb_hs_system_clk_src.clkr.hw },
2270aec89f78SBastian Köcher 			.num_parents = 1,
2271aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2272aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2273aec89f78SBastian Köcher 		},
2274aec89f78SBastian Köcher 	},
2275aec89f78SBastian Köcher };
2276aec89f78SBastian Köcher 
22778c18b41bSKonrad Dybcio static struct clk_branch gcc_usb_phy_cfg_ahb2phy_clk = {
22788c18b41bSKonrad Dybcio 	.halt_reg = 0x1a84,
22798c18b41bSKonrad Dybcio 	.clkr = {
22808c18b41bSKonrad Dybcio 		.enable_reg = 0x1a84,
22818c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
22820519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
22838c18b41bSKonrad Dybcio 			.name = "gcc_usb_phy_cfg_ahb2phy_clk",
22848c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
22858c18b41bSKonrad Dybcio 		},
22868c18b41bSKonrad Dybcio 	},
22878c18b41bSKonrad Dybcio };
22888c18b41bSKonrad Dybcio 
22898c18b41bSKonrad Dybcio static struct gdsc pcie_gdsc = {
22908c18b41bSKonrad Dybcio 		.gdscr = 0x1e18,
22918c18b41bSKonrad Dybcio 		.pd = {
22928c18b41bSKonrad Dybcio 			.name = "pcie",
22938c18b41bSKonrad Dybcio 		},
22948c18b41bSKonrad Dybcio 		.pwrsts = PWRSTS_OFF_ON,
22958c18b41bSKonrad Dybcio };
22968c18b41bSKonrad Dybcio 
22978c18b41bSKonrad Dybcio static struct gdsc pcie_0_gdsc = {
22988c18b41bSKonrad Dybcio 		.gdscr = 0x1ac4,
22998c18b41bSKonrad Dybcio 		.pd = {
23008c18b41bSKonrad Dybcio 			.name = "pcie_0",
23018c18b41bSKonrad Dybcio 		},
23028c18b41bSKonrad Dybcio 		.pwrsts = PWRSTS_OFF_ON,
23038c18b41bSKonrad Dybcio };
23048c18b41bSKonrad Dybcio 
23058c18b41bSKonrad Dybcio static struct gdsc pcie_1_gdsc = {
23068c18b41bSKonrad Dybcio 		.gdscr = 0x1b44,
23078c18b41bSKonrad Dybcio 		.pd = {
23088c18b41bSKonrad Dybcio 			.name = "pcie_1",
23098c18b41bSKonrad Dybcio 		},
23108c18b41bSKonrad Dybcio 		.pwrsts = PWRSTS_OFF_ON,
23118c18b41bSKonrad Dybcio };
23128c18b41bSKonrad Dybcio 
23138c18b41bSKonrad Dybcio static struct gdsc usb30_gdsc = {
23148c18b41bSKonrad Dybcio 		.gdscr = 0x3c4,
23158c18b41bSKonrad Dybcio 		.pd = {
23168c18b41bSKonrad Dybcio 			.name = "usb30",
23178c18b41bSKonrad Dybcio 		},
23188c18b41bSKonrad Dybcio 		.pwrsts = PWRSTS_OFF_ON,
23198c18b41bSKonrad Dybcio };
23208c18b41bSKonrad Dybcio 
23218c18b41bSKonrad Dybcio static struct gdsc ufs_gdsc = {
23228c18b41bSKonrad Dybcio 		.gdscr = 0x1d44,
23238c18b41bSKonrad Dybcio 		.pd = {
23248c18b41bSKonrad Dybcio 			.name = "ufs",
23258c18b41bSKonrad Dybcio 		},
23268c18b41bSKonrad Dybcio 		.pwrsts = PWRSTS_OFF_ON,
23278c18b41bSKonrad Dybcio };
23288c18b41bSKonrad Dybcio 
2329aec89f78SBastian Köcher static struct clk_regmap *gcc_msm8994_clocks[] = {
2330aec89f78SBastian Köcher 	[GPLL0_EARLY] = &gpll0_early.clkr,
2331aec89f78SBastian Köcher 	[GPLL0] = &gpll0.clkr,
2332aec89f78SBastian Köcher 	[GPLL4_EARLY] = &gpll4_early.clkr,
2333aec89f78SBastian Köcher 	[GPLL4] = &gpll4.clkr,
2334aec89f78SBastian Köcher 	[UFS_AXI_CLK_SRC] = &ufs_axi_clk_src.clkr,
2335aec89f78SBastian Köcher 	[USB30_MASTER_CLK_SRC] = &usb30_master_clk_src.clkr,
2336aec89f78SBastian Köcher 	[BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr,
2337aec89f78SBastian Köcher 	[BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr,
2338aec89f78SBastian Köcher 	[BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr,
2339aec89f78SBastian Köcher 	[BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr,
2340aec89f78SBastian Köcher 	[BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr,
2341aec89f78SBastian Köcher 	[BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr,
2342aec89f78SBastian Köcher 	[BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr,
2343aec89f78SBastian Köcher 	[BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr,
2344aec89f78SBastian Köcher 	[BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr,
2345aec89f78SBastian Köcher 	[BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr,
2346aec89f78SBastian Köcher 	[BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr,
2347aec89f78SBastian Köcher 	[BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr,
2348aec89f78SBastian Köcher 	[BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr,
2349aec89f78SBastian Köcher 	[BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr,
2350aec89f78SBastian Köcher 	[BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr,
2351aec89f78SBastian Köcher 	[BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr,
2352aec89f78SBastian Köcher 	[BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr,
2353aec89f78SBastian Köcher 	[BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr,
2354aec89f78SBastian Köcher 	[BLSP2_QUP1_I2C_APPS_CLK_SRC] = &blsp2_qup1_i2c_apps_clk_src.clkr,
2355aec89f78SBastian Köcher 	[BLSP2_QUP1_SPI_APPS_CLK_SRC] = &blsp2_qup1_spi_apps_clk_src.clkr,
2356aec89f78SBastian Köcher 	[BLSP2_QUP2_I2C_APPS_CLK_SRC] = &blsp2_qup2_i2c_apps_clk_src.clkr,
2357aec89f78SBastian Köcher 	[BLSP2_QUP2_SPI_APPS_CLK_SRC] = &blsp2_qup2_spi_apps_clk_src.clkr,
2358aec89f78SBastian Köcher 	[BLSP2_QUP3_I2C_APPS_CLK_SRC] = &blsp2_qup3_i2c_apps_clk_src.clkr,
2359aec89f78SBastian Köcher 	[BLSP2_QUP3_SPI_APPS_CLK_SRC] = &blsp2_qup3_spi_apps_clk_src.clkr,
2360aec89f78SBastian Köcher 	[BLSP2_QUP4_I2C_APPS_CLK_SRC] = &blsp2_qup4_i2c_apps_clk_src.clkr,
2361aec89f78SBastian Köcher 	[BLSP2_QUP4_SPI_APPS_CLK_SRC] = &blsp2_qup4_spi_apps_clk_src.clkr,
2362aec89f78SBastian Köcher 	[BLSP2_QUP5_I2C_APPS_CLK_SRC] = &blsp2_qup5_i2c_apps_clk_src.clkr,
2363aec89f78SBastian Köcher 	[BLSP2_QUP5_SPI_APPS_CLK_SRC] = &blsp2_qup5_spi_apps_clk_src.clkr,
2364aec89f78SBastian Köcher 	[BLSP2_QUP6_I2C_APPS_CLK_SRC] = &blsp2_qup6_i2c_apps_clk_src.clkr,
2365aec89f78SBastian Köcher 	[BLSP2_QUP6_SPI_APPS_CLK_SRC] = &blsp2_qup6_spi_apps_clk_src.clkr,
2366aec89f78SBastian Köcher 	[BLSP2_UART1_APPS_CLK_SRC] = &blsp2_uart1_apps_clk_src.clkr,
2367aec89f78SBastian Köcher 	[BLSP2_UART2_APPS_CLK_SRC] = &blsp2_uart2_apps_clk_src.clkr,
2368aec89f78SBastian Köcher 	[BLSP2_UART3_APPS_CLK_SRC] = &blsp2_uart3_apps_clk_src.clkr,
2369aec89f78SBastian Köcher 	[BLSP2_UART4_APPS_CLK_SRC] = &blsp2_uart4_apps_clk_src.clkr,
2370aec89f78SBastian Köcher 	[BLSP2_UART5_APPS_CLK_SRC] = &blsp2_uart5_apps_clk_src.clkr,
2371aec89f78SBastian Köcher 	[BLSP2_UART6_APPS_CLK_SRC] = &blsp2_uart6_apps_clk_src.clkr,
2372aec89f78SBastian Köcher 	[GP1_CLK_SRC] = &gp1_clk_src.clkr,
2373aec89f78SBastian Köcher 	[GP2_CLK_SRC] = &gp2_clk_src.clkr,
2374aec89f78SBastian Köcher 	[GP3_CLK_SRC] = &gp3_clk_src.clkr,
2375aec89f78SBastian Köcher 	[PCIE_0_AUX_CLK_SRC] = &pcie_0_aux_clk_src.clkr,
2376aec89f78SBastian Köcher 	[PCIE_0_PIPE_CLK_SRC] = &pcie_0_pipe_clk_src.clkr,
2377aec89f78SBastian Köcher 	[PCIE_1_AUX_CLK_SRC] = &pcie_1_aux_clk_src.clkr,
2378aec89f78SBastian Köcher 	[PCIE_1_PIPE_CLK_SRC] = &pcie_1_pipe_clk_src.clkr,
2379aec89f78SBastian Köcher 	[PDM2_CLK_SRC] = &pdm2_clk_src.clkr,
2380aec89f78SBastian Köcher 	[SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr,
2381aec89f78SBastian Köcher 	[SDCC2_APPS_CLK_SRC] = &sdcc2_apps_clk_src.clkr,
2382aec89f78SBastian Köcher 	[SDCC3_APPS_CLK_SRC] = &sdcc3_apps_clk_src.clkr,
2383aec89f78SBastian Köcher 	[SDCC4_APPS_CLK_SRC] = &sdcc4_apps_clk_src.clkr,
2384aec89f78SBastian Köcher 	[TSIF_REF_CLK_SRC] = &tsif_ref_clk_src.clkr,
2385aec89f78SBastian Köcher 	[USB30_MOCK_UTMI_CLK_SRC] = &usb30_mock_utmi_clk_src.clkr,
2386aec89f78SBastian Köcher 	[USB3_PHY_AUX_CLK_SRC] = &usb3_phy_aux_clk_src.clkr,
2387aec89f78SBastian Köcher 	[USB_HS_SYSTEM_CLK_SRC] = &usb_hs_system_clk_src.clkr,
2388aec89f78SBastian Köcher 	[GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr,
2389aec89f78SBastian Köcher 	[GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr,
2390aec89f78SBastian Köcher 	[GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr,
2391aec89f78SBastian Köcher 	[GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr,
2392aec89f78SBastian Köcher 	[GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr,
2393aec89f78SBastian Köcher 	[GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr,
2394aec89f78SBastian Köcher 	[GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr,
2395aec89f78SBastian Köcher 	[GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr,
2396aec89f78SBastian Köcher 	[GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr,
2397aec89f78SBastian Köcher 	[GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr,
2398aec89f78SBastian Köcher 	[GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr,
2399aec89f78SBastian Köcher 	[GCC_BLSP1_QUP6_I2C_APPS_CLK] = &gcc_blsp1_qup6_i2c_apps_clk.clkr,
2400aec89f78SBastian Köcher 	[GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr,
2401aec89f78SBastian Köcher 	[GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr,
2402aec89f78SBastian Köcher 	[GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr,
2403aec89f78SBastian Köcher 	[GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr,
2404aec89f78SBastian Köcher 	[GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr,
2405aec89f78SBastian Köcher 	[GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr,
2406aec89f78SBastian Köcher 	[GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr,
2407aec89f78SBastian Köcher 	[GCC_BLSP2_AHB_CLK] = &gcc_blsp2_ahb_clk.clkr,
2408aec89f78SBastian Köcher 	[GCC_BLSP2_QUP1_I2C_APPS_CLK] = &gcc_blsp2_qup1_i2c_apps_clk.clkr,
2409aec89f78SBastian Köcher 	[GCC_BLSP2_QUP1_SPI_APPS_CLK] = &gcc_blsp2_qup1_spi_apps_clk.clkr,
2410aec89f78SBastian Köcher 	[GCC_BLSP2_QUP2_I2C_APPS_CLK] = &gcc_blsp2_qup2_i2c_apps_clk.clkr,
2411aec89f78SBastian Köcher 	[GCC_BLSP2_QUP2_SPI_APPS_CLK] = &gcc_blsp2_qup2_spi_apps_clk.clkr,
2412aec89f78SBastian Köcher 	[GCC_BLSP2_QUP3_I2C_APPS_CLK] = &gcc_blsp2_qup3_i2c_apps_clk.clkr,
2413aec89f78SBastian Köcher 	[GCC_BLSP2_QUP3_SPI_APPS_CLK] = &gcc_blsp2_qup3_spi_apps_clk.clkr,
2414aec89f78SBastian Köcher 	[GCC_BLSP2_QUP4_I2C_APPS_CLK] = &gcc_blsp2_qup4_i2c_apps_clk.clkr,
2415aec89f78SBastian Köcher 	[GCC_BLSP2_QUP4_SPI_APPS_CLK] = &gcc_blsp2_qup4_spi_apps_clk.clkr,
2416aec89f78SBastian Köcher 	[GCC_BLSP2_QUP5_I2C_APPS_CLK] = &gcc_blsp2_qup5_i2c_apps_clk.clkr,
2417aec89f78SBastian Köcher 	[GCC_BLSP2_QUP5_SPI_APPS_CLK] = &gcc_blsp2_qup5_spi_apps_clk.clkr,
2418aec89f78SBastian Köcher 	[GCC_BLSP2_QUP6_I2C_APPS_CLK] = &gcc_blsp2_qup6_i2c_apps_clk.clkr,
2419aec89f78SBastian Köcher 	[GCC_BLSP2_QUP6_SPI_APPS_CLK] = &gcc_blsp2_qup6_spi_apps_clk.clkr,
2420aec89f78SBastian Köcher 	[GCC_BLSP2_UART1_APPS_CLK] = &gcc_blsp2_uart1_apps_clk.clkr,
2421aec89f78SBastian Köcher 	[GCC_BLSP2_UART2_APPS_CLK] = &gcc_blsp2_uart2_apps_clk.clkr,
2422aec89f78SBastian Köcher 	[GCC_BLSP2_UART3_APPS_CLK] = &gcc_blsp2_uart3_apps_clk.clkr,
2423aec89f78SBastian Köcher 	[GCC_BLSP2_UART4_APPS_CLK] = &gcc_blsp2_uart4_apps_clk.clkr,
2424aec89f78SBastian Köcher 	[GCC_BLSP2_UART5_APPS_CLK] = &gcc_blsp2_uart5_apps_clk.clkr,
2425aec89f78SBastian Köcher 	[GCC_BLSP2_UART6_APPS_CLK] = &gcc_blsp2_uart6_apps_clk.clkr,
2426aec89f78SBastian Köcher 	[GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
2427aec89f78SBastian Köcher 	[GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
2428aec89f78SBastian Köcher 	[GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
24298c18b41bSKonrad Dybcio 	[GCC_LPASS_Q6_AXI_CLK] = &gcc_lpass_q6_axi_clk.clkr,
24308c18b41bSKonrad Dybcio 	[GCC_MSS_Q6_BIMC_AXI_CLK] = &gcc_mss_q6_bimc_axi_clk.clkr,
2431aec89f78SBastian Köcher 	[GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,
24328c18b41bSKonrad Dybcio 	[GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr,
24338c18b41bSKonrad Dybcio 	[GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr,
2434aec89f78SBastian Köcher 	[GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,
24358c18b41bSKonrad Dybcio 	[GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr,
2436aec89f78SBastian Köcher 	[GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,
24378c18b41bSKonrad Dybcio 	[GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr,
24388c18b41bSKonrad Dybcio 	[GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr,
2439aec89f78SBastian Köcher 	[GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,
24408c18b41bSKonrad Dybcio 	[GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr,
2441aec89f78SBastian Köcher 	[GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
24428c18b41bSKonrad Dybcio 	[GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
2443eaff16bcSJeremy McNicoll 	[GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
24448c18b41bSKonrad Dybcio 	[GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
24458c18b41bSKonrad Dybcio 	[GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
24468c18b41bSKonrad Dybcio 	[GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
24478c18b41bSKonrad Dybcio 	[GCC_SDCC3_AHB_CLK] = &gcc_sdcc3_ahb_clk.clkr,
24488c18b41bSKonrad Dybcio 	[GCC_SDCC3_APPS_CLK] = &gcc_sdcc3_apps_clk.clkr,
24498c18b41bSKonrad Dybcio 	[GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr,
24508c18b41bSKonrad Dybcio 	[GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr,
2451aec89f78SBastian Köcher 	[GCC_SYS_NOC_UFS_AXI_CLK] = &gcc_sys_noc_ufs_axi_clk.clkr,
2452aec89f78SBastian Köcher 	[GCC_SYS_NOC_USB3_AXI_CLK] = &gcc_sys_noc_usb3_axi_clk.clkr,
24538c18b41bSKonrad Dybcio 	[GCC_TSIF_AHB_CLK] = &gcc_tsif_ahb_clk.clkr,
2454aec89f78SBastian Köcher 	[GCC_TSIF_REF_CLK] = &gcc_tsif_ref_clk.clkr,
24558c18b41bSKonrad Dybcio 	[GCC_UFS_AHB_CLK] = &gcc_ufs_ahb_clk.clkr,
2456aec89f78SBastian Köcher 	[GCC_UFS_AXI_CLK] = &gcc_ufs_axi_clk.clkr,
2457aec89f78SBastian Köcher 	[GCC_UFS_RX_CFG_CLK] = &gcc_ufs_rx_cfg_clk.clkr,
24588c18b41bSKonrad Dybcio 	[GCC_UFS_RX_SYMBOL_0_CLK] = &gcc_ufs_rx_symbol_0_clk.clkr,
24598c18b41bSKonrad Dybcio 	[GCC_UFS_RX_SYMBOL_1_CLK] = &gcc_ufs_rx_symbol_1_clk.clkr,
2460aec89f78SBastian Köcher 	[GCC_UFS_TX_CFG_CLK] = &gcc_ufs_tx_cfg_clk.clkr,
24618c18b41bSKonrad Dybcio 	[GCC_UFS_TX_SYMBOL_0_CLK] = &gcc_ufs_tx_symbol_0_clk.clkr,
24628c18b41bSKonrad Dybcio 	[GCC_UFS_TX_SYMBOL_1_CLK] = &gcc_ufs_tx_symbol_1_clk.clkr,
24638c18b41bSKonrad Dybcio 	[GCC_USB2_HS_PHY_SLEEP_CLK] = &gcc_usb2_hs_phy_sleep_clk.clkr,
2464aec89f78SBastian Köcher 	[GCC_USB30_MASTER_CLK] = &gcc_usb30_master_clk.clkr,
2465aec89f78SBastian Köcher 	[GCC_USB30_MOCK_UTMI_CLK] = &gcc_usb30_mock_utmi_clk.clkr,
24668c18b41bSKonrad Dybcio 	[GCC_USB30_SLEEP_CLK] = &gcc_usb30_sleep_clk.clkr,
2467aec89f78SBastian Köcher 	[GCC_USB3_PHY_AUX_CLK] = &gcc_usb3_phy_aux_clk.clkr,
24688c18b41bSKonrad Dybcio 	[GCC_USB_HS_AHB_CLK] = &gcc_usb_hs_ahb_clk.clkr,
2469aec89f78SBastian Köcher 	[GCC_USB_HS_SYSTEM_CLK] = &gcc_usb_hs_system_clk.clkr,
24708c18b41bSKonrad Dybcio 	[GCC_USB_PHY_CFG_AHB2PHY_CLK] = &gcc_usb_phy_cfg_ahb2phy_clk.clkr,
24718c18b41bSKonrad Dybcio };
24728c18b41bSKonrad Dybcio 
24738c18b41bSKonrad Dybcio static struct gdsc *gcc_msm8994_gdscs[] = {
24748c18b41bSKonrad Dybcio 	[PCIE_GDSC] = &pcie_gdsc,
24758c18b41bSKonrad Dybcio 	[PCIE_0_GDSC] = &pcie_0_gdsc,
24768c18b41bSKonrad Dybcio 	[PCIE_1_GDSC] = &pcie_1_gdsc,
24778c18b41bSKonrad Dybcio 	[USB30_GDSC] = &usb30_gdsc,
24788c18b41bSKonrad Dybcio 	[UFS_GDSC] = &ufs_gdsc,
24798c18b41bSKonrad Dybcio };
24808c18b41bSKonrad Dybcio 
24818c18b41bSKonrad Dybcio static const struct qcom_reset_map gcc_msm8994_resets[] = {
24828c18b41bSKonrad Dybcio 	[USB3_PHY_RESET] = { 0x1400 },
24838c18b41bSKonrad Dybcio 	[USB3PHY_PHY_RESET] = { 0x1404 },
24848c18b41bSKonrad Dybcio 	[PCIE_PHY_0_RESET] = { 0x1b18 },
24858c18b41bSKonrad Dybcio 	[PCIE_PHY_1_RESET] = { 0x1b98 },
24868c18b41bSKonrad Dybcio 	[QUSB2_PHY_RESET] = { 0x04b8 },
2487aec89f78SBastian Köcher };
2488aec89f78SBastian Köcher 
2489aec89f78SBastian Köcher static const struct regmap_config gcc_msm8994_regmap_config = {
2490aec89f78SBastian Köcher 	.reg_bits	= 32,
2491aec89f78SBastian Köcher 	.reg_stride	= 4,
2492aec89f78SBastian Köcher 	.val_bits	= 32,
2493aec89f78SBastian Köcher 	.max_register	= 0x2000,
2494aec89f78SBastian Köcher 	.fast_io	= true,
2495aec89f78SBastian Köcher };
2496aec89f78SBastian Köcher 
2497aec89f78SBastian Köcher static const struct qcom_cc_desc gcc_msm8994_desc = {
2498aec89f78SBastian Köcher 	.config = &gcc_msm8994_regmap_config,
2499aec89f78SBastian Köcher 	.clks = gcc_msm8994_clocks,
2500aec89f78SBastian Köcher 	.num_clks = ARRAY_SIZE(gcc_msm8994_clocks),
25018c18b41bSKonrad Dybcio 	.resets = gcc_msm8994_resets,
25028c18b41bSKonrad Dybcio 	.num_resets = ARRAY_SIZE(gcc_msm8994_resets),
25038c18b41bSKonrad Dybcio 	.gdscs = gcc_msm8994_gdscs,
25048c18b41bSKonrad Dybcio 	.num_gdscs = ARRAY_SIZE(gcc_msm8994_gdscs),
2505aec89f78SBastian Köcher };
2506aec89f78SBastian Köcher 
2507aec89f78SBastian Köcher static const struct of_device_id gcc_msm8994_match_table[] = {
2508aec89f78SBastian Köcher 	{ .compatible = "qcom,gcc-msm8994" },
2509aec89f78SBastian Köcher 	{}
2510aec89f78SBastian Köcher };
2511aec89f78SBastian Köcher MODULE_DEVICE_TABLE(of, gcc_msm8994_match_table);
2512aec89f78SBastian Köcher 
2513aec89f78SBastian Köcher static int gcc_msm8994_probe(struct platform_device *pdev)
2514aec89f78SBastian Köcher {
2515aec89f78SBastian Köcher 	return qcom_cc_probe(pdev, &gcc_msm8994_desc);
2516aec89f78SBastian Köcher }
2517aec89f78SBastian Köcher 
2518aec89f78SBastian Köcher static struct platform_driver gcc_msm8994_driver = {
2519aec89f78SBastian Köcher 	.probe		= gcc_msm8994_probe,
2520aec89f78SBastian Köcher 	.driver		= {
2521aec89f78SBastian Köcher 		.name	= "gcc-msm8994",
2522aec89f78SBastian Köcher 		.of_match_table = gcc_msm8994_match_table,
2523aec89f78SBastian Köcher 	},
2524aec89f78SBastian Köcher };
2525aec89f78SBastian Köcher 
2526aec89f78SBastian Köcher static int __init gcc_msm8994_init(void)
2527aec89f78SBastian Köcher {
2528aec89f78SBastian Köcher 	return platform_driver_register(&gcc_msm8994_driver);
2529aec89f78SBastian Köcher }
2530aec89f78SBastian Köcher core_initcall(gcc_msm8994_init);
2531aec89f78SBastian Köcher 
2532aec89f78SBastian Köcher static void __exit gcc_msm8994_exit(void)
2533aec89f78SBastian Köcher {
2534aec89f78SBastian Köcher 	platform_driver_unregister(&gcc_msm8994_driver);
2535aec89f78SBastian Köcher }
2536aec89f78SBastian Köcher module_exit(gcc_msm8994_exit);
2537aec89f78SBastian Köcher 
2538aec89f78SBastian Köcher MODULE_DESCRIPTION("Qualcomm GCC MSM8994 Driver");
2539aec89f78SBastian Köcher MODULE_LICENSE("GPL v2");
2540aec89f78SBastian Köcher MODULE_ALIAS("platform:gcc-msm8994");
2541