xref: /openbmc/linux/drivers/clk/qcom/gcc-msm8994.c (revision 35bb1e6eceef8a0b15e6aa8e354717a91a4d8323)
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 
10974a33facSKonrad Dybcio static struct clk_rcg2 system_noc_clk_src = {
11074a33facSKonrad Dybcio 	.cmd_rcgr = 0x0120,
11174a33facSKonrad Dybcio 	.hid_width = 5,
11274a33facSKonrad Dybcio 	.parent_map = gcc_xo_gpll0_map,
11374a33facSKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
11474a33facSKonrad Dybcio 		.name = "system_noc_clk_src",
11574a33facSKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
11674a33facSKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
11774a33facSKonrad Dybcio 		.ops = &clk_rcg2_ops,
11874a33facSKonrad Dybcio 	},
11974a33facSKonrad Dybcio };
12074a33facSKonrad Dybcio 
12174a33facSKonrad Dybcio static struct clk_rcg2 config_noc_clk_src = {
12274a33facSKonrad Dybcio 	.cmd_rcgr = 0x0150,
12374a33facSKonrad Dybcio 	.hid_width = 5,
12474a33facSKonrad Dybcio 	.parent_map = gcc_xo_gpll0_map,
12574a33facSKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
12674a33facSKonrad Dybcio 		.name = "config_noc_clk_src",
12774a33facSKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
12874a33facSKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
12974a33facSKonrad Dybcio 		.ops = &clk_rcg2_ops,
13074a33facSKonrad Dybcio 	},
13174a33facSKonrad Dybcio };
13274a33facSKonrad Dybcio 
13374a33facSKonrad Dybcio static struct clk_rcg2 periph_noc_clk_src = {
13474a33facSKonrad Dybcio 	.cmd_rcgr = 0x0190,
13574a33facSKonrad Dybcio 	.hid_width = 5,
13674a33facSKonrad Dybcio 	.parent_map = gcc_xo_gpll0_map,
13774a33facSKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
13874a33facSKonrad Dybcio 		.name = "periph_noc_clk_src",
13974a33facSKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
14074a33facSKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
14174a33facSKonrad Dybcio 		.ops = &clk_rcg2_ops,
14274a33facSKonrad Dybcio 	},
14374a33facSKonrad Dybcio };
14474a33facSKonrad Dybcio 
145aec89f78SBastian Köcher static struct freq_tbl ftbl_ufs_axi_clk_src[] = {
146aec89f78SBastian Köcher 	F(50000000, P_GPLL0, 12, 0, 0),
147aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
148aec89f78SBastian Köcher 	F(150000000, P_GPLL0, 4, 0, 0),
149aec89f78SBastian Köcher 	F(171430000, P_GPLL0, 3.5, 0, 0),
150aec89f78SBastian Köcher 	F(200000000, P_GPLL0, 3, 0, 0),
151aec89f78SBastian Köcher 	F(240000000, P_GPLL0, 2.5, 0, 0),
152aec89f78SBastian Köcher 	{ }
153aec89f78SBastian Köcher };
154aec89f78SBastian Köcher 
155aec89f78SBastian Köcher static struct clk_rcg2 ufs_axi_clk_src = {
156aec89f78SBastian Köcher 	.cmd_rcgr = 0x1d68,
157aec89f78SBastian Köcher 	.mnd_width = 8,
158aec89f78SBastian Köcher 	.hid_width = 5,
159aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
160aec89f78SBastian Köcher 	.freq_tbl = ftbl_ufs_axi_clk_src,
1610519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
162aec89f78SBastian Köcher 		.name = "ufs_axi_clk_src",
1630519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
164aec89f78SBastian Köcher 		.num_parents = 2,
165aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
166aec89f78SBastian Köcher 	},
167aec89f78SBastian Köcher };
168aec89f78SBastian Köcher 
169aec89f78SBastian Köcher static struct freq_tbl ftbl_usb30_master_clk_src[] = {
170aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
171aec89f78SBastian Köcher 	F(125000000, P_GPLL0, 1, 5, 24),
172aec89f78SBastian Köcher 	{ }
173aec89f78SBastian Köcher };
174aec89f78SBastian Köcher 
175aec89f78SBastian Köcher static struct clk_rcg2 usb30_master_clk_src = {
176aec89f78SBastian Köcher 	.cmd_rcgr = 0x03d4,
177aec89f78SBastian Köcher 	.mnd_width = 8,
178aec89f78SBastian Köcher 	.hid_width = 5,
179aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
180aec89f78SBastian Köcher 	.freq_tbl = ftbl_usb30_master_clk_src,
1810519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
182aec89f78SBastian Köcher 		.name = "usb30_master_clk_src",
1830519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
184aec89f78SBastian Köcher 		.num_parents = 2,
185aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
186aec89f78SBastian Köcher 	},
187aec89f78SBastian Köcher };
188aec89f78SBastian Köcher 
189aec89f78SBastian Köcher static struct freq_tbl ftbl_blsp_i2c_apps_clk_src[] = {
190aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
191aec89f78SBastian Köcher 	F(50000000, P_GPLL0, 12, 0, 0),
192aec89f78SBastian Köcher 	{ }
193aec89f78SBastian Köcher };
194aec89f78SBastian Köcher 
195aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = {
196aec89f78SBastian Köcher 	.cmd_rcgr = 0x0660,
197aec89f78SBastian Köcher 	.hid_width = 5,
198aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
199aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
2000519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
201aec89f78SBastian Köcher 		.name = "blsp1_qup1_i2c_apps_clk_src",
2020519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
203aec89f78SBastian Köcher 		.num_parents = 2,
204aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
205aec89f78SBastian Köcher 	},
206aec89f78SBastian Köcher };
207aec89f78SBastian Köcher 
20880863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup1_spi_apps_clk_src[] = {
209aec89f78SBastian Köcher 	F(960000, P_XO, 10, 1, 2),
210aec89f78SBastian Köcher 	F(4800000, P_XO, 4, 0, 0),
211aec89f78SBastian Köcher 	F(9600000, P_XO, 2, 0, 0),
212aec89f78SBastian Köcher 	F(15000000, P_GPLL0, 10, 1, 4),
213aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
214aec89f78SBastian Köcher 	F(24000000, P_GPLL0, 12.5, 1, 2),
215aec89f78SBastian Köcher 	F(25000000, P_GPLL0, 12, 1, 2),
216aec89f78SBastian Köcher 	F(48000000, P_GPLL0, 12.5, 0, 0),
217aec89f78SBastian Köcher 	F(50000000, P_GPLL0, 12, 0, 0),
218aec89f78SBastian Köcher 	{ }
219aec89f78SBastian Köcher };
220aec89f78SBastian Köcher 
221aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = {
222aec89f78SBastian Köcher 	.cmd_rcgr = 0x064c,
223aec89f78SBastian Köcher 	.mnd_width = 8,
224aec89f78SBastian Köcher 	.hid_width = 5,
225aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
22680863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp1_qup1_spi_apps_clk_src,
2270519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
228aec89f78SBastian Köcher 		.name = "blsp1_qup1_spi_apps_clk_src",
2290519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
230aec89f78SBastian Köcher 		.num_parents = 2,
231aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
232aec89f78SBastian Köcher 	},
233aec89f78SBastian Köcher };
234aec89f78SBastian Köcher 
235aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = {
236aec89f78SBastian Köcher 	.cmd_rcgr = 0x06e0,
237aec89f78SBastian Köcher 	.hid_width = 5,
238aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
239aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
2400519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
241aec89f78SBastian Köcher 		.name = "blsp1_qup2_i2c_apps_clk_src",
2420519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
243aec89f78SBastian Köcher 		.num_parents = 2,
244aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
245aec89f78SBastian Köcher 	},
246aec89f78SBastian Köcher };
247aec89f78SBastian Köcher 
24880863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup2_spi_apps_clk_src[] = {
24980863521SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
25080863521SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
25180863521SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
25280863521SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
25380863521SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
25480863521SKonrad Dybcio 	F(24000000, P_GPLL0, 12.5, 1, 2),
25580863521SKonrad Dybcio 	F(25000000, P_GPLL0, 12, 1, 2),
25680863521SKonrad Dybcio 	F(42860000, P_GPLL0, 14, 0, 0),
25780863521SKonrad Dybcio 	F(46150000, P_GPLL0, 13, 0, 0),
25880863521SKonrad Dybcio 	{ }
25980863521SKonrad Dybcio };
26080863521SKonrad Dybcio 
261aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = {
262aec89f78SBastian Köcher 	.cmd_rcgr = 0x06cc,
263aec89f78SBastian Köcher 	.mnd_width = 8,
264aec89f78SBastian Köcher 	.hid_width = 5,
265aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
26680863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp1_qup2_spi_apps_clk_src,
2670519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
268aec89f78SBastian Köcher 		.name = "blsp1_qup2_spi_apps_clk_src",
2690519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
270aec89f78SBastian Köcher 		.num_parents = 2,
271aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
272aec89f78SBastian Köcher 	},
273aec89f78SBastian Köcher };
274aec89f78SBastian Köcher 
275aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = {
276aec89f78SBastian Köcher 	.cmd_rcgr = 0x0760,
277aec89f78SBastian Köcher 	.hid_width = 5,
278aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
279aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
2800519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
281aec89f78SBastian Köcher 		.name = "blsp1_qup3_i2c_apps_clk_src",
2820519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
283aec89f78SBastian Köcher 		.num_parents = 2,
284aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
285aec89f78SBastian Köcher 	},
286aec89f78SBastian Köcher };
287aec89f78SBastian Köcher 
28880863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup3_4_spi_apps_clk_src[] = {
28980863521SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
29080863521SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
29180863521SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
29280863521SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
29380863521SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
29480863521SKonrad Dybcio 	F(24000000, P_GPLL0, 12.5, 1, 2),
29580863521SKonrad Dybcio 	F(25000000, P_GPLL0, 12, 1, 2),
29680863521SKonrad Dybcio 	F(42860000, P_GPLL0, 14, 0, 0),
29780863521SKonrad Dybcio 	F(44440000, P_GPLL0, 13.5, 0, 0),
29880863521SKonrad Dybcio 	{ }
29980863521SKonrad Dybcio };
30080863521SKonrad Dybcio 
301aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = {
302aec89f78SBastian Köcher 	.cmd_rcgr = 0x074c,
303aec89f78SBastian Köcher 	.mnd_width = 8,
304aec89f78SBastian Köcher 	.hid_width = 5,
305aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
30680863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp1_qup3_4_spi_apps_clk_src,
3070519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
308aec89f78SBastian Köcher 		.name = "blsp1_qup3_spi_apps_clk_src",
3090519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
310aec89f78SBastian Köcher 		.num_parents = 2,
311aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
312aec89f78SBastian Köcher 	},
313aec89f78SBastian Köcher };
314aec89f78SBastian Köcher 
315aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = {
316aec89f78SBastian Köcher 	.cmd_rcgr = 0x07e0,
317aec89f78SBastian Köcher 	.hid_width = 5,
318aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
319aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
3200519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
321aec89f78SBastian Köcher 		.name = "blsp1_qup4_i2c_apps_clk_src",
3220519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
323aec89f78SBastian Köcher 		.num_parents = 2,
324aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
325aec89f78SBastian Köcher 	},
326aec89f78SBastian Köcher };
327aec89f78SBastian Köcher 
328aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = {
329aec89f78SBastian Köcher 	.cmd_rcgr = 0x07cc,
330aec89f78SBastian Köcher 	.mnd_width = 8,
331aec89f78SBastian Köcher 	.hid_width = 5,
332aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
33380863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp1_qup3_4_spi_apps_clk_src,
3340519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
335aec89f78SBastian Köcher 		.name = "blsp1_qup4_spi_apps_clk_src",
3360519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
337aec89f78SBastian Köcher 		.num_parents = 2,
338aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
339aec89f78SBastian Köcher 	},
340aec89f78SBastian Köcher };
341aec89f78SBastian Köcher 
342aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = {
343aec89f78SBastian Köcher 	.cmd_rcgr = 0x0860,
344aec89f78SBastian Köcher 	.hid_width = 5,
345aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
346aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
3470519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
348aec89f78SBastian Köcher 		.name = "blsp1_qup5_i2c_apps_clk_src",
3490519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
350aec89f78SBastian Köcher 		.num_parents = 2,
351aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
352aec89f78SBastian Köcher 	},
353aec89f78SBastian Köcher };
354aec89f78SBastian Köcher 
35580863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup5_spi_apps_clk_src[] = {
35680863521SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
35780863521SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
35880863521SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
35980863521SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
36080863521SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
36180863521SKonrad Dybcio 	F(24000000, P_GPLL0, 12.5, 1, 2),
36280863521SKonrad Dybcio 	F(25000000, P_GPLL0, 12, 1, 2),
36380863521SKonrad Dybcio 	F(40000000, P_GPLL0, 15, 0, 0),
36480863521SKonrad Dybcio 	F(42860000, P_GPLL0, 14, 0, 0),
36580863521SKonrad Dybcio 	{ }
36680863521SKonrad Dybcio };
36780863521SKonrad Dybcio 
368aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = {
369aec89f78SBastian Köcher 	.cmd_rcgr = 0x084c,
370aec89f78SBastian Köcher 	.mnd_width = 8,
371aec89f78SBastian Köcher 	.hid_width = 5,
372aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
37380863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp1_qup5_spi_apps_clk_src,
3740519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
375aec89f78SBastian Köcher 		.name = "blsp1_qup5_spi_apps_clk_src",
3760519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
377aec89f78SBastian Köcher 		.num_parents = 2,
378aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
379aec89f78SBastian Köcher 	},
380aec89f78SBastian Köcher };
381aec89f78SBastian Köcher 
382aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = {
383aec89f78SBastian Köcher 	.cmd_rcgr = 0x08e0,
384aec89f78SBastian Köcher 	.hid_width = 5,
385aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
386aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
3870519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
388aec89f78SBastian Köcher 		.name = "blsp1_qup6_i2c_apps_clk_src",
3890519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
390aec89f78SBastian Köcher 		.num_parents = 2,
391aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
392aec89f78SBastian Köcher 	},
393aec89f78SBastian Köcher };
394aec89f78SBastian Köcher 
39580863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup6_spi_apps_clk_src[] = {
39680863521SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
39780863521SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
39880863521SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
39980863521SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
40080863521SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
40180863521SKonrad Dybcio 	F(24000000, P_GPLL0, 12.5, 1, 2),
40280863521SKonrad Dybcio 	F(27906976, P_GPLL0, 1, 2, 43),
40380863521SKonrad Dybcio 	F(41380000, P_GPLL0, 15, 0, 0),
40480863521SKonrad Dybcio 	F(42860000, P_GPLL0, 14, 0, 0),
40580863521SKonrad Dybcio 	{ }
40680863521SKonrad Dybcio };
40780863521SKonrad Dybcio 
408aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = {
409aec89f78SBastian Köcher 	.cmd_rcgr = 0x08cc,
410aec89f78SBastian Köcher 	.mnd_width = 8,
411aec89f78SBastian Köcher 	.hid_width = 5,
412aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
41380863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp1_qup6_spi_apps_clk_src,
4140519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
415aec89f78SBastian Köcher 		.name = "blsp1_qup6_spi_apps_clk_src",
4160519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
417aec89f78SBastian Köcher 		.num_parents = 2,
418aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
419aec89f78SBastian Köcher 	},
420aec89f78SBastian Köcher };
421aec89f78SBastian Köcher 
422aec89f78SBastian Köcher static struct freq_tbl ftbl_blsp_uart_apps_clk_src[] = {
423aec89f78SBastian Köcher 	F(3686400, P_GPLL0, 1, 96, 15625),
424aec89f78SBastian Köcher 	F(7372800, P_GPLL0, 1, 192, 15625),
425aec89f78SBastian Köcher 	F(14745600, P_GPLL0, 1, 384, 15625),
426aec89f78SBastian Köcher 	F(16000000, P_GPLL0, 5, 2, 15),
427aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
428aec89f78SBastian Köcher 	F(24000000, P_GPLL0, 5, 1, 5),
429aec89f78SBastian Köcher 	F(32000000, P_GPLL0, 1, 4, 75),
430aec89f78SBastian Köcher 	F(40000000, P_GPLL0, 15, 0, 0),
431aec89f78SBastian Köcher 	F(46400000, P_GPLL0, 1, 29, 375),
432aec89f78SBastian Köcher 	F(48000000, P_GPLL0, 12.5, 0, 0),
433aec89f78SBastian Köcher 	F(51200000, P_GPLL0, 1, 32, 375),
434aec89f78SBastian Köcher 	F(56000000, P_GPLL0, 1, 7, 75),
435aec89f78SBastian Köcher 	F(58982400, P_GPLL0, 1, 1536, 15625),
436aec89f78SBastian Köcher 	F(60000000, P_GPLL0, 10, 0, 0),
437aec89f78SBastian Köcher 	F(63160000, P_GPLL0, 9.5, 0, 0),
438aec89f78SBastian Köcher 	{ }
439aec89f78SBastian Köcher };
440aec89f78SBastian Köcher 
441aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart1_apps_clk_src = {
442aec89f78SBastian Köcher 	.cmd_rcgr = 0x068c,
443aec89f78SBastian Köcher 	.mnd_width = 16,
444aec89f78SBastian Köcher 	.hid_width = 5,
445aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
446aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
4470519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
448aec89f78SBastian Köcher 		.name = "blsp1_uart1_apps_clk_src",
4490519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
450aec89f78SBastian Köcher 		.num_parents = 2,
451aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
452aec89f78SBastian Köcher 	},
453aec89f78SBastian Köcher };
454aec89f78SBastian Köcher 
455aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart2_apps_clk_src = {
456aec89f78SBastian Köcher 	.cmd_rcgr = 0x070c,
457aec89f78SBastian Köcher 	.mnd_width = 16,
458aec89f78SBastian Köcher 	.hid_width = 5,
459aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
460aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
4610519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
462aec89f78SBastian Köcher 		.name = "blsp1_uart2_apps_clk_src",
4630519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
464aec89f78SBastian Köcher 		.num_parents = 2,
465aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
466aec89f78SBastian Köcher 	},
467aec89f78SBastian Köcher };
468aec89f78SBastian Köcher 
469aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart3_apps_clk_src = {
470aec89f78SBastian Köcher 	.cmd_rcgr = 0x078c,
471aec89f78SBastian Köcher 	.mnd_width = 16,
472aec89f78SBastian Köcher 	.hid_width = 5,
473aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
474aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
4750519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
476aec89f78SBastian Köcher 		.name = "blsp1_uart3_apps_clk_src",
4770519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
478aec89f78SBastian Köcher 		.num_parents = 2,
479aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
480aec89f78SBastian Köcher 	},
481aec89f78SBastian Köcher };
482aec89f78SBastian Köcher 
483aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart4_apps_clk_src = {
484aec89f78SBastian Köcher 	.cmd_rcgr = 0x080c,
485aec89f78SBastian Köcher 	.mnd_width = 16,
486aec89f78SBastian Köcher 	.hid_width = 5,
487aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
488aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
4890519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
490aec89f78SBastian Köcher 		.name = "blsp1_uart4_apps_clk_src",
4910519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
492aec89f78SBastian Köcher 		.num_parents = 2,
493aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
494aec89f78SBastian Köcher 	},
495aec89f78SBastian Köcher };
496aec89f78SBastian Köcher 
497aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart5_apps_clk_src = {
498aec89f78SBastian Köcher 	.cmd_rcgr = 0x088c,
499aec89f78SBastian Köcher 	.mnd_width = 16,
500aec89f78SBastian Köcher 	.hid_width = 5,
501aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
502aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
5030519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
504aec89f78SBastian Köcher 		.name = "blsp1_uart5_apps_clk_src",
5050519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
506aec89f78SBastian Köcher 		.num_parents = 2,
507aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
508aec89f78SBastian Köcher 	},
509aec89f78SBastian Köcher };
510aec89f78SBastian Köcher 
511aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart6_apps_clk_src = {
512aec89f78SBastian Köcher 	.cmd_rcgr = 0x090c,
513aec89f78SBastian Köcher 	.mnd_width = 16,
514aec89f78SBastian Köcher 	.hid_width = 5,
515aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
516aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
5170519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
518aec89f78SBastian Köcher 		.name = "blsp1_uart6_apps_clk_src",
5190519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
520aec89f78SBastian Köcher 		.num_parents = 2,
521aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
522aec89f78SBastian Köcher 	},
523aec89f78SBastian Köcher };
524aec89f78SBastian Köcher 
525aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup1_i2c_apps_clk_src = {
526aec89f78SBastian Köcher 	.cmd_rcgr = 0x09a0,
527aec89f78SBastian Köcher 	.hid_width = 5,
528aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
529aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
5300519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
531aec89f78SBastian Köcher 		.name = "blsp2_qup1_i2c_apps_clk_src",
5320519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
533aec89f78SBastian Köcher 		.num_parents = 2,
534aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
535aec89f78SBastian Köcher 	},
536aec89f78SBastian Köcher };
537aec89f78SBastian Köcher 
53880863521SKonrad Dybcio static struct freq_tbl ftbl_blsp2_qup1_2_spi_apps_clk_src[] = {
53980863521SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
54080863521SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
54180863521SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
54280863521SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
54380863521SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
54480863521SKonrad Dybcio 	F(24000000, P_GPLL0, 12.5, 1, 2),
54580863521SKonrad Dybcio 	F(25000000, P_GPLL0, 12, 1, 2),
54680863521SKonrad Dybcio 	F(42860000, P_GPLL0, 14, 0, 0),
54780863521SKonrad Dybcio 	F(44440000, P_GPLL0, 13.5, 0, 0),
54880863521SKonrad Dybcio 	{ }
54980863521SKonrad Dybcio };
55080863521SKonrad Dybcio 
551aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup1_spi_apps_clk_src = {
552aec89f78SBastian Köcher 	.cmd_rcgr = 0x098c,
553aec89f78SBastian Köcher 	.mnd_width = 8,
554aec89f78SBastian Köcher 	.hid_width = 5,
555aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
55680863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp2_qup1_2_spi_apps_clk_src,
5570519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
558aec89f78SBastian Köcher 		.name = "blsp2_qup1_spi_apps_clk_src",
5590519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
560aec89f78SBastian Köcher 		.num_parents = 2,
561aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
562aec89f78SBastian Köcher 	},
563aec89f78SBastian Köcher };
564aec89f78SBastian Köcher 
565aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup2_i2c_apps_clk_src = {
566aec89f78SBastian Köcher 	.cmd_rcgr = 0x0a20,
567aec89f78SBastian Köcher 	.hid_width = 5,
568aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
569aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
5700519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
571aec89f78SBastian Köcher 		.name = "blsp2_qup2_i2c_apps_clk_src",
5720519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
573aec89f78SBastian Köcher 		.num_parents = 2,
574aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
575aec89f78SBastian Köcher 	},
576aec89f78SBastian Köcher };
577aec89f78SBastian Köcher 
578aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup2_spi_apps_clk_src = {
579aec89f78SBastian Köcher 	.cmd_rcgr = 0x0a0c,
580aec89f78SBastian Köcher 	.mnd_width = 8,
581aec89f78SBastian Köcher 	.hid_width = 5,
582aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
58380863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp2_qup1_2_spi_apps_clk_src,
5840519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
585aec89f78SBastian Köcher 		.name = "blsp2_qup2_spi_apps_clk_src",
5860519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
587aec89f78SBastian Köcher 		.num_parents = 2,
588aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
589aec89f78SBastian Köcher 	},
590aec89f78SBastian Köcher };
591aec89f78SBastian Köcher 
59280863521SKonrad Dybcio static struct freq_tbl ftbl_blsp2_qup3_4_spi_apps_clk_src[] = {
59380863521SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
59480863521SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
59580863521SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
59680863521SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
59780863521SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
59880863521SKonrad Dybcio 	F(24000000, P_GPLL0, 12.5, 1, 2),
59980863521SKonrad Dybcio 	F(25000000, P_GPLL0, 12, 1, 2),
60080863521SKonrad Dybcio 	F(42860000, P_GPLL0, 14, 0, 0),
60180863521SKonrad Dybcio 	F(48000000, P_GPLL0, 12.5, 0, 0),
60280863521SKonrad Dybcio 	{ }
60380863521SKonrad Dybcio };
60480863521SKonrad Dybcio 
605aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup3_i2c_apps_clk_src = {
606aec89f78SBastian Köcher 	.cmd_rcgr = 0x0aa0,
607aec89f78SBastian Köcher 	.hid_width = 5,
608aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
609aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
6100519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
611aec89f78SBastian Köcher 		.name = "blsp2_qup3_i2c_apps_clk_src",
6120519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
613aec89f78SBastian Köcher 		.num_parents = 2,
614aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
615aec89f78SBastian Köcher 	},
616aec89f78SBastian Köcher };
617aec89f78SBastian Köcher 
618aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup3_spi_apps_clk_src = {
619aec89f78SBastian Köcher 	.cmd_rcgr = 0x0a8c,
620aec89f78SBastian Köcher 	.mnd_width = 8,
621aec89f78SBastian Köcher 	.hid_width = 5,
622aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
62380863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp2_qup3_4_spi_apps_clk_src,
6240519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
625aec89f78SBastian Köcher 		.name = "blsp2_qup3_spi_apps_clk_src",
6260519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
627aec89f78SBastian Köcher 		.num_parents = 2,
628aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
629aec89f78SBastian Köcher 	},
630aec89f78SBastian Köcher };
631aec89f78SBastian Köcher 
632aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup4_i2c_apps_clk_src = {
633aec89f78SBastian Köcher 	.cmd_rcgr = 0x0b20,
634aec89f78SBastian Köcher 	.hid_width = 5,
635aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
636aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
6370519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
638aec89f78SBastian Köcher 		.name = "blsp2_qup4_i2c_apps_clk_src",
6390519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
640aec89f78SBastian Köcher 		.num_parents = 2,
641aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
642aec89f78SBastian Köcher 	},
643aec89f78SBastian Köcher };
644aec89f78SBastian Köcher 
645aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup4_spi_apps_clk_src = {
646aec89f78SBastian Köcher 	.cmd_rcgr = 0x0b0c,
647aec89f78SBastian Köcher 	.mnd_width = 8,
648aec89f78SBastian Köcher 	.hid_width = 5,
649aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
65080863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp2_qup3_4_spi_apps_clk_src,
6510519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
652aec89f78SBastian Köcher 		.name = "blsp2_qup4_spi_apps_clk_src",
6530519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
654aec89f78SBastian Köcher 		.num_parents = 2,
655aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
656aec89f78SBastian Köcher 	},
657aec89f78SBastian Köcher };
658aec89f78SBastian Köcher 
659aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup5_i2c_apps_clk_src = {
660aec89f78SBastian Köcher 	.cmd_rcgr = 0x0ba0,
661aec89f78SBastian Köcher 	.hid_width = 5,
662aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
663aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
6640519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
665aec89f78SBastian Köcher 		.name = "blsp2_qup5_i2c_apps_clk_src",
6660519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
667aec89f78SBastian Köcher 		.num_parents = 2,
668aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
669aec89f78SBastian Köcher 	},
670aec89f78SBastian Köcher };
671aec89f78SBastian Köcher 
672aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup5_spi_apps_clk_src = {
673aec89f78SBastian Köcher 	.cmd_rcgr = 0x0b8c,
674aec89f78SBastian Köcher 	.mnd_width = 8,
675aec89f78SBastian Köcher 	.hid_width = 5,
676aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
67780863521SKonrad Dybcio 	/* BLSP1 QUP1 and BLSP2 QUP5 use the same freqs */
67880863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp1_qup1_spi_apps_clk_src,
6790519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
680aec89f78SBastian Köcher 		.name = "blsp2_qup5_spi_apps_clk_src",
6810519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
682aec89f78SBastian Köcher 		.num_parents = 2,
683aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
684aec89f78SBastian Köcher 	},
685aec89f78SBastian Köcher };
686aec89f78SBastian Köcher 
687aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup6_i2c_apps_clk_src = {
688aec89f78SBastian Köcher 	.cmd_rcgr = 0x0c20,
689aec89f78SBastian Köcher 	.hid_width = 5,
690aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
691aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
6920519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
693aec89f78SBastian Köcher 		.name = "blsp2_qup6_i2c_apps_clk_src",
6940519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
695aec89f78SBastian Köcher 		.num_parents = 2,
696aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
697aec89f78SBastian Köcher 	},
698aec89f78SBastian Köcher };
699aec89f78SBastian Köcher 
70080863521SKonrad Dybcio static struct freq_tbl ftbl_blsp2_qup6_spi_apps_clk_src[] = {
70180863521SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
70280863521SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
70380863521SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
70480863521SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
70580863521SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
70680863521SKonrad Dybcio 	F(24000000, P_GPLL0, 12.5, 1, 2),
70780863521SKonrad Dybcio 	F(25000000, P_GPLL0, 12, 1, 2),
70880863521SKonrad Dybcio 	F(44440000, P_GPLL0, 13.5, 0, 0),
70980863521SKonrad Dybcio 	F(48000000, P_GPLL0, 12.5, 0, 0),
71080863521SKonrad Dybcio 	{ }
71180863521SKonrad Dybcio };
71280863521SKonrad Dybcio 
713aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup6_spi_apps_clk_src = {
714aec89f78SBastian Köcher 	.cmd_rcgr = 0x0c0c,
715aec89f78SBastian Köcher 	.mnd_width = 8,
716aec89f78SBastian Köcher 	.hid_width = 5,
717aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
71880863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp2_qup6_spi_apps_clk_src,
7190519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
720aec89f78SBastian Köcher 		.name = "blsp2_qup6_spi_apps_clk_src",
7210519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
722aec89f78SBastian Köcher 		.num_parents = 2,
723aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
724aec89f78SBastian Köcher 	},
725aec89f78SBastian Köcher };
726aec89f78SBastian Köcher 
727aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart1_apps_clk_src = {
728aec89f78SBastian Köcher 	.cmd_rcgr = 0x09cc,
729aec89f78SBastian Köcher 	.mnd_width = 16,
730aec89f78SBastian Köcher 	.hid_width = 5,
731aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
732aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
7330519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
734aec89f78SBastian Köcher 		.name = "blsp2_uart1_apps_clk_src",
7350519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
736aec89f78SBastian Köcher 		.num_parents = 2,
737aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
738aec89f78SBastian Köcher 	},
739aec89f78SBastian Köcher };
740aec89f78SBastian Köcher 
741aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart2_apps_clk_src = {
742aec89f78SBastian Köcher 	.cmd_rcgr = 0x0a4c,
743aec89f78SBastian Köcher 	.mnd_width = 16,
744aec89f78SBastian Köcher 	.hid_width = 5,
745aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
746aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
7470519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
748aec89f78SBastian Köcher 		.name = "blsp2_uart2_apps_clk_src",
7490519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
750aec89f78SBastian Köcher 		.num_parents = 2,
751aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
752aec89f78SBastian Köcher 	},
753aec89f78SBastian Köcher };
754aec89f78SBastian Köcher 
755aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart3_apps_clk_src = {
756aec89f78SBastian Köcher 	.cmd_rcgr = 0x0acc,
757aec89f78SBastian Köcher 	.mnd_width = 16,
758aec89f78SBastian Köcher 	.hid_width = 5,
759aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
760aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
7610519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
762aec89f78SBastian Köcher 		.name = "blsp2_uart3_apps_clk_src",
7630519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
764aec89f78SBastian Köcher 		.num_parents = 2,
765aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
766aec89f78SBastian Köcher 	},
767aec89f78SBastian Köcher };
768aec89f78SBastian Köcher 
769aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart4_apps_clk_src = {
770aec89f78SBastian Köcher 	.cmd_rcgr = 0x0b4c,
771aec89f78SBastian Köcher 	.mnd_width = 16,
772aec89f78SBastian Köcher 	.hid_width = 5,
773aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
774aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
7750519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
776aec89f78SBastian Köcher 		.name = "blsp2_uart4_apps_clk_src",
7770519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
778aec89f78SBastian Köcher 		.num_parents = 2,
779aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
780aec89f78SBastian Köcher 	},
781aec89f78SBastian Köcher };
782aec89f78SBastian Köcher 
783aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart5_apps_clk_src = {
784aec89f78SBastian Köcher 	.cmd_rcgr = 0x0bcc,
785aec89f78SBastian Köcher 	.mnd_width = 16,
786aec89f78SBastian Köcher 	.hid_width = 5,
787aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
788aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
7890519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
790aec89f78SBastian Köcher 		.name = "blsp2_uart5_apps_clk_src",
7910519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
792aec89f78SBastian Köcher 		.num_parents = 2,
793aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
794aec89f78SBastian Köcher 	},
795aec89f78SBastian Köcher };
796aec89f78SBastian Köcher 
797aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart6_apps_clk_src = {
798aec89f78SBastian Köcher 	.cmd_rcgr = 0x0c4c,
799aec89f78SBastian Köcher 	.mnd_width = 16,
800aec89f78SBastian Köcher 	.hid_width = 5,
801aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
802aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
8030519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
804aec89f78SBastian Köcher 		.name = "blsp2_uart6_apps_clk_src",
8050519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
806aec89f78SBastian Köcher 		.num_parents = 2,
807aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
808aec89f78SBastian Köcher 	},
809aec89f78SBastian Köcher };
810aec89f78SBastian Köcher 
811aec89f78SBastian Köcher static struct freq_tbl ftbl_gp1_clk_src[] = {
812aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
813aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
814aec89f78SBastian Köcher 	F(200000000, P_GPLL0, 3, 0, 0),
815aec89f78SBastian Köcher 	{ }
816aec89f78SBastian Köcher };
817aec89f78SBastian Köcher 
818aec89f78SBastian Köcher static struct clk_rcg2 gp1_clk_src = {
819aec89f78SBastian Köcher 	.cmd_rcgr = 0x1904,
820aec89f78SBastian Köcher 	.mnd_width = 8,
821aec89f78SBastian Köcher 	.hid_width = 5,
822aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
823aec89f78SBastian Köcher 	.freq_tbl = ftbl_gp1_clk_src,
8240519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
825aec89f78SBastian Köcher 		.name = "gp1_clk_src",
8260519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
827aec89f78SBastian Köcher 		.num_parents = 2,
828aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
829aec89f78SBastian Köcher 	},
830aec89f78SBastian Köcher };
831aec89f78SBastian Köcher 
832aec89f78SBastian Köcher static struct freq_tbl ftbl_gp2_clk_src[] = {
833aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
834aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
835aec89f78SBastian Köcher 	F(200000000, P_GPLL0, 3, 0, 0),
836aec89f78SBastian Köcher 	{ }
837aec89f78SBastian Köcher };
838aec89f78SBastian Köcher 
839aec89f78SBastian Köcher static struct clk_rcg2 gp2_clk_src = {
840aec89f78SBastian Köcher 	.cmd_rcgr = 0x1944,
841aec89f78SBastian Köcher 	.mnd_width = 8,
842aec89f78SBastian Köcher 	.hid_width = 5,
843aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
844aec89f78SBastian Köcher 	.freq_tbl = ftbl_gp2_clk_src,
8450519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
846aec89f78SBastian Köcher 		.name = "gp2_clk_src",
8470519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
848aec89f78SBastian Köcher 		.num_parents = 2,
849aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
850aec89f78SBastian Köcher 	},
851aec89f78SBastian Köcher };
852aec89f78SBastian Köcher 
853aec89f78SBastian Köcher static struct freq_tbl ftbl_gp3_clk_src[] = {
854aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
855aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
856aec89f78SBastian Köcher 	F(200000000, P_GPLL0, 3, 0, 0),
857aec89f78SBastian Köcher 	{ }
858aec89f78SBastian Köcher };
859aec89f78SBastian Köcher 
860aec89f78SBastian Köcher static struct clk_rcg2 gp3_clk_src = {
861aec89f78SBastian Köcher 	.cmd_rcgr = 0x1984,
862aec89f78SBastian Köcher 	.mnd_width = 8,
863aec89f78SBastian Köcher 	.hid_width = 5,
864aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
865aec89f78SBastian Köcher 	.freq_tbl = ftbl_gp3_clk_src,
8660519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
867aec89f78SBastian Köcher 		.name = "gp3_clk_src",
8680519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
869aec89f78SBastian Köcher 		.num_parents = 2,
870aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
871aec89f78SBastian Köcher 	},
872aec89f78SBastian Köcher };
873aec89f78SBastian Köcher 
874aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_0_aux_clk_src[] = {
875aec89f78SBastian Köcher 	F(1011000, P_XO, 1, 1, 19),
876aec89f78SBastian Köcher 	{ }
877aec89f78SBastian Köcher };
878aec89f78SBastian Köcher 
879aec89f78SBastian Köcher static struct clk_rcg2 pcie_0_aux_clk_src = {
880aec89f78SBastian Köcher 	.cmd_rcgr = 0x1b00,
881aec89f78SBastian Köcher 	.mnd_width = 8,
882aec89f78SBastian Köcher 	.hid_width = 5,
883aec89f78SBastian Köcher 	.freq_tbl = ftbl_pcie_0_aux_clk_src,
8840519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
885aec89f78SBastian Köcher 		.name = "pcie_0_aux_clk_src",
8860519d1d0SKonrad Dybcio 		.parent_data = &(const struct clk_parent_data){
8870519d1d0SKonrad Dybcio 				.fw_name = "xo",
8880519d1d0SKonrad Dybcio 		},
889aec89f78SBastian Köcher 		.num_parents = 1,
890aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
891aec89f78SBastian Köcher 	},
892aec89f78SBastian Köcher };
893aec89f78SBastian Köcher 
894aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_pipe_clk_src[] = {
895aec89f78SBastian Köcher 	F(125000000, P_XO, 1, 0, 0),
896aec89f78SBastian Köcher 	{ }
897aec89f78SBastian Köcher };
898aec89f78SBastian Köcher 
899aec89f78SBastian Köcher static struct clk_rcg2 pcie_0_pipe_clk_src = {
900aec89f78SBastian Köcher 	.cmd_rcgr = 0x1adc,
901aec89f78SBastian Köcher 	.hid_width = 5,
902aec89f78SBastian Köcher 	.freq_tbl = ftbl_pcie_pipe_clk_src,
9030519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
904aec89f78SBastian Köcher 		.name = "pcie_0_pipe_clk_src",
9050519d1d0SKonrad Dybcio 		.parent_data = &(const struct clk_parent_data){
9060519d1d0SKonrad Dybcio 				.fw_name = "xo",
9070519d1d0SKonrad Dybcio 		},
908aec89f78SBastian Köcher 		.num_parents = 1,
909aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
910aec89f78SBastian Köcher 	},
911aec89f78SBastian Köcher };
912aec89f78SBastian Köcher 
913aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_1_aux_clk_src[] = {
914aec89f78SBastian Köcher 	F(1011000, P_XO, 1, 1, 19),
915aec89f78SBastian Köcher 	{ }
916aec89f78SBastian Köcher };
917aec89f78SBastian Köcher 
918aec89f78SBastian Köcher static struct clk_rcg2 pcie_1_aux_clk_src = {
919aec89f78SBastian Köcher 	.cmd_rcgr = 0x1b80,
920aec89f78SBastian Köcher 	.mnd_width = 8,
921aec89f78SBastian Köcher 	.hid_width = 5,
922aec89f78SBastian Köcher 	.freq_tbl = ftbl_pcie_1_aux_clk_src,
9230519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
924aec89f78SBastian Köcher 		.name = "pcie_1_aux_clk_src",
9250519d1d0SKonrad Dybcio 		.parent_data = &(const struct clk_parent_data){
9260519d1d0SKonrad Dybcio 				.fw_name = "xo",
9270519d1d0SKonrad Dybcio 		},
928aec89f78SBastian Köcher 		.num_parents = 1,
929aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
930aec89f78SBastian Köcher 	},
931aec89f78SBastian Köcher };
932aec89f78SBastian Köcher 
933aec89f78SBastian Köcher static struct clk_rcg2 pcie_1_pipe_clk_src = {
934aec89f78SBastian Köcher 	.cmd_rcgr = 0x1b5c,
935aec89f78SBastian Köcher 	.hid_width = 5,
936aec89f78SBastian Köcher 	.freq_tbl = ftbl_pcie_pipe_clk_src,
9370519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
938aec89f78SBastian Köcher 		.name = "pcie_1_pipe_clk_src",
9390519d1d0SKonrad Dybcio 		.parent_data = &(const struct clk_parent_data){
9400519d1d0SKonrad Dybcio 				.fw_name = "xo",
9410519d1d0SKonrad Dybcio 		},
942aec89f78SBastian Köcher 		.num_parents = 1,
943aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
944aec89f78SBastian Köcher 	},
945aec89f78SBastian Köcher };
946aec89f78SBastian Köcher 
947aec89f78SBastian Köcher static struct freq_tbl ftbl_pdm2_clk_src[] = {
948aec89f78SBastian Köcher 	F(60000000, P_GPLL0, 10, 0, 0),
949aec89f78SBastian Köcher 	{ }
950aec89f78SBastian Köcher };
951aec89f78SBastian Köcher 
952aec89f78SBastian Köcher static struct clk_rcg2 pdm2_clk_src = {
953aec89f78SBastian Köcher 	.cmd_rcgr = 0x0cd0,
954aec89f78SBastian Köcher 	.hid_width = 5,
955aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
956aec89f78SBastian Köcher 	.freq_tbl = ftbl_pdm2_clk_src,
9570519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
958aec89f78SBastian Köcher 		.name = "pdm2_clk_src",
9590519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
960aec89f78SBastian Köcher 		.num_parents = 2,
961aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
962aec89f78SBastian Köcher 	},
963aec89f78SBastian Köcher };
964aec89f78SBastian Köcher 
965aec89f78SBastian Köcher static struct freq_tbl ftbl_sdcc1_apps_clk_src[] = {
966aec89f78SBastian Köcher 	F(144000, P_XO, 16, 3, 25),
967aec89f78SBastian Köcher 	F(400000, P_XO, 12, 1, 4),
968aec89f78SBastian Köcher 	F(20000000, P_GPLL0, 15, 1, 2),
969aec89f78SBastian Köcher 	F(25000000, P_GPLL0, 12, 1, 2),
970aec89f78SBastian Köcher 	F(50000000, P_GPLL0, 12, 0, 0),
971aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
972aec89f78SBastian Köcher 	F(192000000, P_GPLL4, 2, 0, 0),
973aec89f78SBastian Köcher 	F(384000000, P_GPLL4, 1, 0, 0),
974aec89f78SBastian Köcher 	{ }
975aec89f78SBastian Köcher };
976aec89f78SBastian Köcher 
977aec89f78SBastian Köcher static struct clk_rcg2 sdcc1_apps_clk_src = {
978aec89f78SBastian Köcher 	.cmd_rcgr = 0x04d0,
979aec89f78SBastian Köcher 	.mnd_width = 8,
980aec89f78SBastian Köcher 	.hid_width = 5,
981aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_gpll4_map,
982aec89f78SBastian Köcher 	.freq_tbl = ftbl_sdcc1_apps_clk_src,
9830519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
984aec89f78SBastian Köcher 		.name = "sdcc1_apps_clk_src",
9850519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0_gpll4,
986aec89f78SBastian Köcher 		.num_parents = 3,
9875f5001a9SRajendra Nayak 		.ops = &clk_rcg2_floor_ops,
988aec89f78SBastian Köcher 	},
989aec89f78SBastian Köcher };
990aec89f78SBastian Köcher 
991aec89f78SBastian Köcher static struct freq_tbl ftbl_sdcc2_4_apps_clk_src[] = {
992aec89f78SBastian Köcher 	F(144000, P_XO, 16, 3, 25),
993aec89f78SBastian Köcher 	F(400000, P_XO, 12, 1, 4),
994aec89f78SBastian Köcher 	F(20000000, P_GPLL0, 15, 1, 2),
995aec89f78SBastian Köcher 	F(25000000, P_GPLL0, 12, 1, 2),
996aec89f78SBastian Köcher 	F(50000000, P_GPLL0, 12, 0, 0),
997aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
998aec89f78SBastian Köcher 	F(200000000, P_GPLL0, 3, 0, 0),
999aec89f78SBastian Köcher 	{ }
1000aec89f78SBastian Köcher };
1001aec89f78SBastian Köcher 
1002aec89f78SBastian Köcher static struct clk_rcg2 sdcc2_apps_clk_src = {
1003aec89f78SBastian Köcher 	.cmd_rcgr = 0x0510,
1004aec89f78SBastian Köcher 	.mnd_width = 8,
1005aec89f78SBastian Köcher 	.hid_width = 5,
1006aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
1007aec89f78SBastian Köcher 	.freq_tbl = ftbl_sdcc2_4_apps_clk_src,
10080519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1009aec89f78SBastian Köcher 		.name = "sdcc2_apps_clk_src",
10100519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
1011aec89f78SBastian Köcher 		.num_parents = 2,
10125f5001a9SRajendra Nayak 		.ops = &clk_rcg2_floor_ops,
1013aec89f78SBastian Köcher 	},
1014aec89f78SBastian Köcher };
1015aec89f78SBastian Köcher 
1016aec89f78SBastian Köcher static struct clk_rcg2 sdcc3_apps_clk_src = {
1017aec89f78SBastian Köcher 	.cmd_rcgr = 0x0550,
1018aec89f78SBastian Köcher 	.mnd_width = 8,
1019aec89f78SBastian Köcher 	.hid_width = 5,
1020aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
1021aec89f78SBastian Köcher 	.freq_tbl = ftbl_sdcc2_4_apps_clk_src,
10220519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1023aec89f78SBastian Köcher 		.name = "sdcc3_apps_clk_src",
10240519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
1025aec89f78SBastian Köcher 		.num_parents = 2,
10265f5001a9SRajendra Nayak 		.ops = &clk_rcg2_floor_ops,
1027aec89f78SBastian Köcher 	},
1028aec89f78SBastian Köcher };
1029aec89f78SBastian Köcher 
1030aec89f78SBastian Köcher static struct clk_rcg2 sdcc4_apps_clk_src = {
1031aec89f78SBastian Köcher 	.cmd_rcgr = 0x0590,
1032aec89f78SBastian Köcher 	.mnd_width = 8,
1033aec89f78SBastian Köcher 	.hid_width = 5,
1034aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
1035aec89f78SBastian Köcher 	.freq_tbl = ftbl_sdcc2_4_apps_clk_src,
10360519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1037aec89f78SBastian Köcher 		.name = "sdcc4_apps_clk_src",
10380519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
1039aec89f78SBastian Köcher 		.num_parents = 2,
10405f5001a9SRajendra Nayak 		.ops = &clk_rcg2_floor_ops,
1041aec89f78SBastian Köcher 	},
1042aec89f78SBastian Köcher };
1043aec89f78SBastian Köcher 
1044aec89f78SBastian Köcher static struct freq_tbl ftbl_tsif_ref_clk_src[] = {
1045aec89f78SBastian Köcher 	F(105500, P_XO, 1, 1, 182),
1046aec89f78SBastian Köcher 	{ }
1047aec89f78SBastian Köcher };
1048aec89f78SBastian Köcher 
1049aec89f78SBastian Köcher static struct clk_rcg2 tsif_ref_clk_src = {
1050aec89f78SBastian Köcher 	.cmd_rcgr = 0x0d90,
1051aec89f78SBastian Köcher 	.mnd_width = 8,
1052aec89f78SBastian Köcher 	.hid_width = 5,
1053aec89f78SBastian Köcher 	.freq_tbl = ftbl_tsif_ref_clk_src,
10540519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1055aec89f78SBastian Köcher 		.name = "tsif_ref_clk_src",
10560519d1d0SKonrad Dybcio 		.parent_data = &(const struct clk_parent_data){
10570519d1d0SKonrad Dybcio 				.fw_name = "xo",
10580519d1d0SKonrad Dybcio 		},
1059aec89f78SBastian Köcher 		.num_parents = 1,
1060aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
1061aec89f78SBastian Köcher 	},
1062aec89f78SBastian Köcher };
1063aec89f78SBastian Köcher 
1064aec89f78SBastian Köcher static struct freq_tbl ftbl_usb30_mock_utmi_clk_src[] = {
1065aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
1066aec89f78SBastian Köcher 	F(60000000, P_GPLL0, 10, 0, 0),
1067aec89f78SBastian Köcher 	{ }
1068aec89f78SBastian Köcher };
1069aec89f78SBastian Köcher 
1070aec89f78SBastian Köcher static struct clk_rcg2 usb30_mock_utmi_clk_src = {
1071aec89f78SBastian Köcher 	.cmd_rcgr = 0x03e8,
1072aec89f78SBastian Köcher 	.hid_width = 5,
1073aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
1074aec89f78SBastian Köcher 	.freq_tbl = ftbl_usb30_mock_utmi_clk_src,
10750519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1076aec89f78SBastian Köcher 		.name = "usb30_mock_utmi_clk_src",
10770519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
1078aec89f78SBastian Köcher 		.num_parents = 2,
1079aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
1080aec89f78SBastian Köcher 	},
1081aec89f78SBastian Köcher };
1082aec89f78SBastian Köcher 
1083aec89f78SBastian Köcher static struct freq_tbl ftbl_usb3_phy_aux_clk_src[] = {
1084aec89f78SBastian Köcher 	F(1200000, P_XO, 16, 0, 0),
1085aec89f78SBastian Köcher 	{ }
1086aec89f78SBastian Köcher };
1087aec89f78SBastian Köcher 
1088aec89f78SBastian Köcher static struct clk_rcg2 usb3_phy_aux_clk_src = {
1089aec89f78SBastian Köcher 	.cmd_rcgr = 0x1414,
1090aec89f78SBastian Köcher 	.hid_width = 5,
1091aec89f78SBastian Köcher 	.freq_tbl = ftbl_usb3_phy_aux_clk_src,
10920519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1093aec89f78SBastian Köcher 		.name = "usb3_phy_aux_clk_src",
10940519d1d0SKonrad Dybcio 		.parent_data = &(const struct clk_parent_data){
10950519d1d0SKonrad Dybcio 				.fw_name = "xo",
10960519d1d0SKonrad Dybcio 		},
1097aec89f78SBastian Köcher 		.num_parents = 1,
1098aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
1099aec89f78SBastian Köcher 	},
1100aec89f78SBastian Köcher };
1101aec89f78SBastian Köcher 
1102aec89f78SBastian Köcher static struct freq_tbl ftbl_usb_hs_system_clk_src[] = {
1103aec89f78SBastian Köcher 	F(75000000, P_GPLL0, 8, 0, 0),
1104aec89f78SBastian Köcher 	{ }
1105aec89f78SBastian Köcher };
1106aec89f78SBastian Köcher 
1107aec89f78SBastian Köcher static struct clk_rcg2 usb_hs_system_clk_src = {
1108aec89f78SBastian Köcher 	.cmd_rcgr = 0x0490,
1109aec89f78SBastian Köcher 	.hid_width = 5,
1110aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
1111aec89f78SBastian Köcher 	.freq_tbl = ftbl_usb_hs_system_clk_src,
11120519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1113aec89f78SBastian Köcher 		.name = "usb_hs_system_clk_src",
11140519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
1115aec89f78SBastian Köcher 		.num_parents = 2,
1116aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
1117aec89f78SBastian Köcher 	},
1118aec89f78SBastian Köcher };
1119aec89f78SBastian Köcher 
1120aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_ahb_clk = {
1121aec89f78SBastian Köcher 	.halt_reg = 0x05c4,
1122aec89f78SBastian Köcher 	.halt_check = BRANCH_HALT_VOTED,
1123aec89f78SBastian Köcher 	.clkr = {
1124aec89f78SBastian Köcher 		.enable_reg = 0x1484,
1125aec89f78SBastian Köcher 		.enable_mask = BIT(17),
11260519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1127aec89f78SBastian Köcher 			.name = "gcc_blsp1_ahb_clk",
112874a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw },
112974a33facSKonrad Dybcio 			.num_parents = 1,
1130aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1131aec89f78SBastian Köcher 		},
1132aec89f78SBastian Köcher 	},
1133aec89f78SBastian Köcher };
1134aec89f78SBastian Köcher 
1135aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = {
1136aec89f78SBastian Köcher 	.halt_reg = 0x0648,
1137aec89f78SBastian Köcher 	.clkr = {
1138aec89f78SBastian Köcher 		.enable_reg = 0x0648,
1139aec89f78SBastian Köcher 		.enable_mask = BIT(0),
11400519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1141aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup1_i2c_apps_clk",
11420519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup1_i2c_apps_clk_src.clkr.hw },
1143aec89f78SBastian Köcher 			.num_parents = 1,
1144aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1145aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1146aec89f78SBastian Köcher 		},
1147aec89f78SBastian Köcher 	},
1148aec89f78SBastian Köcher };
1149aec89f78SBastian Köcher 
1150aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = {
1151aec89f78SBastian Köcher 	.halt_reg = 0x0644,
1152aec89f78SBastian Köcher 	.clkr = {
1153aec89f78SBastian Köcher 		.enable_reg = 0x0644,
1154aec89f78SBastian Köcher 		.enable_mask = BIT(0),
11550519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1156aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup1_spi_apps_clk",
11570519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup1_spi_apps_clk_src.clkr.hw },
1158aec89f78SBastian Köcher 			.num_parents = 1,
1159aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1160aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1161aec89f78SBastian Köcher 		},
1162aec89f78SBastian Köcher 	},
1163aec89f78SBastian Köcher };
1164aec89f78SBastian Köcher 
1165aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = {
1166aec89f78SBastian Köcher 	.halt_reg = 0x06c8,
1167aec89f78SBastian Köcher 	.clkr = {
1168aec89f78SBastian Köcher 		.enable_reg = 0x06c8,
1169aec89f78SBastian Köcher 		.enable_mask = BIT(0),
11700519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1171aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup2_i2c_apps_clk",
11720519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup2_i2c_apps_clk_src.clkr.hw },
1173aec89f78SBastian Köcher 			.num_parents = 1,
1174aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1175aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1176aec89f78SBastian Köcher 		},
1177aec89f78SBastian Köcher 	},
1178aec89f78SBastian Köcher };
1179aec89f78SBastian Köcher 
1180aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = {
1181aec89f78SBastian Köcher 	.halt_reg = 0x06c4,
1182aec89f78SBastian Köcher 	.clkr = {
1183aec89f78SBastian Köcher 		.enable_reg = 0x06c4,
1184aec89f78SBastian Köcher 		.enable_mask = BIT(0),
11850519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1186aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup2_spi_apps_clk",
11870519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup2_spi_apps_clk_src.clkr.hw },
1188aec89f78SBastian Köcher 			.num_parents = 1,
1189aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1190aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1191aec89f78SBastian Köcher 		},
1192aec89f78SBastian Köcher 	},
1193aec89f78SBastian Köcher };
1194aec89f78SBastian Köcher 
1195aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = {
1196aec89f78SBastian Köcher 	.halt_reg = 0x0748,
1197aec89f78SBastian Köcher 	.clkr = {
1198aec89f78SBastian Köcher 		.enable_reg = 0x0748,
1199aec89f78SBastian Köcher 		.enable_mask = BIT(0),
12000519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1201aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup3_i2c_apps_clk",
12020519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup3_i2c_apps_clk_src.clkr.hw },
1203aec89f78SBastian Köcher 			.num_parents = 1,
1204aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1205aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1206aec89f78SBastian Köcher 		},
1207aec89f78SBastian Köcher 	},
1208aec89f78SBastian Köcher };
1209aec89f78SBastian Köcher 
1210aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = {
1211aec89f78SBastian Köcher 	.halt_reg = 0x0744,
1212aec89f78SBastian Köcher 	.clkr = {
1213aec89f78SBastian Köcher 		.enable_reg = 0x0744,
1214aec89f78SBastian Köcher 		.enable_mask = BIT(0),
12150519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1216aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup3_spi_apps_clk",
12170519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup3_spi_apps_clk_src.clkr.hw },
1218aec89f78SBastian Köcher 			.num_parents = 1,
1219aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1220aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1221aec89f78SBastian Köcher 		},
1222aec89f78SBastian Köcher 	},
1223aec89f78SBastian Köcher };
1224aec89f78SBastian Köcher 
1225aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = {
1226aec89f78SBastian Köcher 	.halt_reg = 0x07c8,
1227aec89f78SBastian Köcher 	.clkr = {
1228aec89f78SBastian Köcher 		.enable_reg = 0x07c8,
1229aec89f78SBastian Köcher 		.enable_mask = BIT(0),
12300519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1231aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup4_i2c_apps_clk",
12320519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup4_i2c_apps_clk_src.clkr.hw },
1233aec89f78SBastian Köcher 			.num_parents = 1,
1234aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1235aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1236aec89f78SBastian Köcher 		},
1237aec89f78SBastian Köcher 	},
1238aec89f78SBastian Köcher };
1239aec89f78SBastian Köcher 
1240aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = {
1241aec89f78SBastian Köcher 	.halt_reg = 0x07c4,
1242aec89f78SBastian Köcher 	.clkr = {
1243aec89f78SBastian Köcher 		.enable_reg = 0x07c4,
1244aec89f78SBastian Köcher 		.enable_mask = BIT(0),
12450519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1246aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup4_spi_apps_clk",
12470519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup4_spi_apps_clk_src.clkr.hw },
1248aec89f78SBastian Köcher 			.num_parents = 1,
1249aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1250aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1251aec89f78SBastian Köcher 		},
1252aec89f78SBastian Köcher 	},
1253aec89f78SBastian Köcher };
1254aec89f78SBastian Köcher 
1255aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = {
1256aec89f78SBastian Köcher 	.halt_reg = 0x0848,
1257aec89f78SBastian Köcher 	.clkr = {
1258aec89f78SBastian Köcher 		.enable_reg = 0x0848,
1259aec89f78SBastian Köcher 		.enable_mask = BIT(0),
12600519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1261aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup5_i2c_apps_clk",
12620519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup5_i2c_apps_clk_src.clkr.hw },
1263aec89f78SBastian Köcher 			.num_parents = 1,
1264aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1265aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1266aec89f78SBastian Köcher 		},
1267aec89f78SBastian Köcher 	},
1268aec89f78SBastian Köcher };
1269aec89f78SBastian Köcher 
1270aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = {
1271aec89f78SBastian Köcher 	.halt_reg = 0x0844,
1272aec89f78SBastian Köcher 	.clkr = {
1273aec89f78SBastian Köcher 		.enable_reg = 0x0844,
1274aec89f78SBastian Köcher 		.enable_mask = BIT(0),
12750519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1276aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup5_spi_apps_clk",
12770519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup5_spi_apps_clk_src.clkr.hw },
1278aec89f78SBastian Köcher 			.num_parents = 1,
1279aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1280aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1281aec89f78SBastian Köcher 		},
1282aec89f78SBastian Köcher 	},
1283aec89f78SBastian Köcher };
1284aec89f78SBastian Köcher 
1285aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup6_i2c_apps_clk = {
1286aec89f78SBastian Köcher 	.halt_reg = 0x08c8,
1287aec89f78SBastian Köcher 	.clkr = {
1288aec89f78SBastian Köcher 		.enable_reg = 0x08c8,
1289aec89f78SBastian Köcher 		.enable_mask = BIT(0),
12900519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1291aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup6_i2c_apps_clk",
12920519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup6_i2c_apps_clk_src.clkr.hw },
1293aec89f78SBastian Köcher 			.num_parents = 1,
1294aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1295aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1296aec89f78SBastian Köcher 		},
1297aec89f78SBastian Köcher 	},
1298aec89f78SBastian Köcher };
1299aec89f78SBastian Köcher 
1300aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = {
1301aec89f78SBastian Köcher 	.halt_reg = 0x08c4,
1302aec89f78SBastian Köcher 	.clkr = {
1303aec89f78SBastian Köcher 		.enable_reg = 0x08c4,
1304aec89f78SBastian Köcher 		.enable_mask = BIT(0),
13050519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1306aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup6_spi_apps_clk",
13070519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup6_spi_apps_clk_src.clkr.hw },
1308aec89f78SBastian Köcher 			.num_parents = 1,
1309aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1310aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1311aec89f78SBastian Köcher 		},
1312aec89f78SBastian Köcher 	},
1313aec89f78SBastian Köcher };
1314aec89f78SBastian Köcher 
1315aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart1_apps_clk = {
1316aec89f78SBastian Köcher 	.halt_reg = 0x0684,
1317aec89f78SBastian Köcher 	.clkr = {
1318aec89f78SBastian Köcher 		.enable_reg = 0x0684,
1319aec89f78SBastian Köcher 		.enable_mask = BIT(0),
13200519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1321aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart1_apps_clk",
13220519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_uart1_apps_clk_src.clkr.hw },
1323aec89f78SBastian Köcher 			.num_parents = 1,
1324aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1325aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1326aec89f78SBastian Köcher 		},
1327aec89f78SBastian Köcher 	},
1328aec89f78SBastian Köcher };
1329aec89f78SBastian Köcher 
1330aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart2_apps_clk = {
1331aec89f78SBastian Köcher 	.halt_reg = 0x0704,
1332aec89f78SBastian Köcher 	.clkr = {
1333aec89f78SBastian Köcher 		.enable_reg = 0x0704,
1334aec89f78SBastian Köcher 		.enable_mask = BIT(0),
13350519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1336aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart2_apps_clk",
13370519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_uart2_apps_clk_src.clkr.hw },
1338aec89f78SBastian Köcher 			.num_parents = 1,
1339aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1340aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1341aec89f78SBastian Köcher 		},
1342aec89f78SBastian Köcher 	},
1343aec89f78SBastian Köcher };
1344aec89f78SBastian Köcher 
1345aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart3_apps_clk = {
1346aec89f78SBastian Köcher 	.halt_reg = 0x0784,
1347aec89f78SBastian Köcher 	.clkr = {
1348aec89f78SBastian Köcher 		.enable_reg = 0x0784,
1349aec89f78SBastian Köcher 		.enable_mask = BIT(0),
13500519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1351aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart3_apps_clk",
13520519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_uart3_apps_clk_src.clkr.hw },
1353aec89f78SBastian Köcher 			.num_parents = 1,
1354aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1355aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1356aec89f78SBastian Köcher 		},
1357aec89f78SBastian Köcher 	},
1358aec89f78SBastian Köcher };
1359aec89f78SBastian Köcher 
1360aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart4_apps_clk = {
1361aec89f78SBastian Köcher 	.halt_reg = 0x0804,
1362aec89f78SBastian Köcher 	.clkr = {
1363aec89f78SBastian Köcher 		.enable_reg = 0x0804,
1364aec89f78SBastian Köcher 		.enable_mask = BIT(0),
13650519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1366aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart4_apps_clk",
13670519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_uart4_apps_clk_src.clkr.hw },
1368aec89f78SBastian Köcher 			.num_parents = 1,
1369aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1370aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1371aec89f78SBastian Köcher 		},
1372aec89f78SBastian Köcher 	},
1373aec89f78SBastian Köcher };
1374aec89f78SBastian Köcher 
1375aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart5_apps_clk = {
1376aec89f78SBastian Köcher 	.halt_reg = 0x0884,
1377aec89f78SBastian Köcher 	.clkr = {
1378aec89f78SBastian Köcher 		.enable_reg = 0x0884,
1379aec89f78SBastian Köcher 		.enable_mask = BIT(0),
13800519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1381aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart5_apps_clk",
13820519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_uart5_apps_clk_src.clkr.hw },
1383aec89f78SBastian Köcher 			.num_parents = 1,
1384aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1385aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1386aec89f78SBastian Köcher 		},
1387aec89f78SBastian Köcher 	},
1388aec89f78SBastian Köcher };
1389aec89f78SBastian Köcher 
1390aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart6_apps_clk = {
1391aec89f78SBastian Köcher 	.halt_reg = 0x0904,
1392aec89f78SBastian Köcher 	.clkr = {
1393aec89f78SBastian Köcher 		.enable_reg = 0x0904,
1394aec89f78SBastian Köcher 		.enable_mask = BIT(0),
13950519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1396aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart6_apps_clk",
13970519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_uart6_apps_clk_src.clkr.hw },
1398aec89f78SBastian Köcher 			.num_parents = 1,
1399aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1400aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1401aec89f78SBastian Köcher 		},
1402aec89f78SBastian Köcher 	},
1403aec89f78SBastian Köcher };
1404aec89f78SBastian Köcher 
1405aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_ahb_clk = {
1406aec89f78SBastian Köcher 	.halt_reg = 0x0944,
1407aec89f78SBastian Köcher 	.halt_check = BRANCH_HALT_VOTED,
1408aec89f78SBastian Köcher 	.clkr = {
1409aec89f78SBastian Köcher 		.enable_reg = 0x1484,
1410aec89f78SBastian Köcher 		.enable_mask = BIT(15),
14110519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1412aec89f78SBastian Köcher 			.name = "gcc_blsp2_ahb_clk",
141374a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw },
141474a33facSKonrad Dybcio 			.num_parents = 1,
1415aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1416aec89f78SBastian Köcher 		},
1417aec89f78SBastian Köcher 	},
1418aec89f78SBastian Köcher };
1419aec89f78SBastian Köcher 
1420aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup1_i2c_apps_clk = {
1421aec89f78SBastian Köcher 	.halt_reg = 0x0988,
1422aec89f78SBastian Köcher 	.clkr = {
1423aec89f78SBastian Köcher 		.enable_reg = 0x0988,
1424aec89f78SBastian Köcher 		.enable_mask = BIT(0),
14250519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1426aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup1_i2c_apps_clk",
14270519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup1_i2c_apps_clk_src.clkr.hw },
1428aec89f78SBastian Köcher 			.num_parents = 1,
1429aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1430aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1431aec89f78SBastian Köcher 		},
1432aec89f78SBastian Köcher 	},
1433aec89f78SBastian Köcher };
1434aec89f78SBastian Köcher 
1435aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup1_spi_apps_clk = {
1436aec89f78SBastian Köcher 	.halt_reg = 0x0984,
1437aec89f78SBastian Köcher 	.clkr = {
1438aec89f78SBastian Köcher 		.enable_reg = 0x0984,
1439aec89f78SBastian Köcher 		.enable_mask = BIT(0),
14400519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1441aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup1_spi_apps_clk",
14420519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup1_spi_apps_clk_src.clkr.hw },
1443aec89f78SBastian Köcher 			.num_parents = 1,
1444aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1445aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1446aec89f78SBastian Köcher 		},
1447aec89f78SBastian Köcher 	},
1448aec89f78SBastian Köcher };
1449aec89f78SBastian Köcher 
1450aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup2_i2c_apps_clk = {
1451aec89f78SBastian Köcher 	.halt_reg = 0x0a08,
1452aec89f78SBastian Köcher 	.clkr = {
1453aec89f78SBastian Köcher 		.enable_reg = 0x0a08,
1454aec89f78SBastian Köcher 		.enable_mask = BIT(0),
14550519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1456aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup2_i2c_apps_clk",
14570519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup2_i2c_apps_clk_src.clkr.hw },
1458aec89f78SBastian Köcher 			.num_parents = 1,
1459aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1460aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1461aec89f78SBastian Köcher 		},
1462aec89f78SBastian Köcher 	},
1463aec89f78SBastian Köcher };
1464aec89f78SBastian Köcher 
1465aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup2_spi_apps_clk = {
1466aec89f78SBastian Köcher 	.halt_reg = 0x0a04,
1467aec89f78SBastian Köcher 	.clkr = {
1468aec89f78SBastian Köcher 		.enable_reg = 0x0a04,
1469aec89f78SBastian Köcher 		.enable_mask = BIT(0),
14700519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1471aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup2_spi_apps_clk",
14720519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup2_spi_apps_clk_src.clkr.hw },
1473aec89f78SBastian Köcher 			.num_parents = 1,
1474aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1475aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1476aec89f78SBastian Köcher 		},
1477aec89f78SBastian Köcher 	},
1478aec89f78SBastian Köcher };
1479aec89f78SBastian Köcher 
1480aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup3_i2c_apps_clk = {
1481aec89f78SBastian Köcher 	.halt_reg = 0x0a88,
1482aec89f78SBastian Köcher 	.clkr = {
1483aec89f78SBastian Köcher 		.enable_reg = 0x0a88,
1484aec89f78SBastian Köcher 		.enable_mask = BIT(0),
14850519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1486aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup3_i2c_apps_clk",
14870519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup3_i2c_apps_clk_src.clkr.hw },
1488aec89f78SBastian Köcher 			.num_parents = 1,
1489aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1490aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1491aec89f78SBastian Köcher 		},
1492aec89f78SBastian Köcher 	},
1493aec89f78SBastian Köcher };
1494aec89f78SBastian Köcher 
1495aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup3_spi_apps_clk = {
1496aec89f78SBastian Köcher 	.halt_reg = 0x0a84,
1497aec89f78SBastian Köcher 	.clkr = {
1498aec89f78SBastian Köcher 		.enable_reg = 0x0a84,
1499aec89f78SBastian Köcher 		.enable_mask = BIT(0),
15000519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1501aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup3_spi_apps_clk",
15020519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup3_spi_apps_clk_src.clkr.hw },
1503aec89f78SBastian Köcher 			.num_parents = 1,
1504aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1505aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1506aec89f78SBastian Köcher 		},
1507aec89f78SBastian Köcher 	},
1508aec89f78SBastian Köcher };
1509aec89f78SBastian Köcher 
1510aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup4_i2c_apps_clk = {
1511aec89f78SBastian Köcher 	.halt_reg = 0x0b08,
1512aec89f78SBastian Köcher 	.clkr = {
1513aec89f78SBastian Köcher 		.enable_reg = 0x0b08,
1514aec89f78SBastian Köcher 		.enable_mask = BIT(0),
15150519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1516aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup4_i2c_apps_clk",
15170519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup4_i2c_apps_clk_src.clkr.hw },
1518aec89f78SBastian Köcher 			.num_parents = 1,
1519aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1520aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1521aec89f78SBastian Köcher 		},
1522aec89f78SBastian Köcher 	},
1523aec89f78SBastian Köcher };
1524aec89f78SBastian Köcher 
1525aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup4_spi_apps_clk = {
1526aec89f78SBastian Köcher 	.halt_reg = 0x0b04,
1527aec89f78SBastian Köcher 	.clkr = {
1528aec89f78SBastian Köcher 		.enable_reg = 0x0b04,
1529aec89f78SBastian Köcher 		.enable_mask = BIT(0),
15300519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1531aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup4_spi_apps_clk",
15320519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup4_spi_apps_clk_src.clkr.hw },
1533aec89f78SBastian Köcher 			.num_parents = 1,
1534aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1535aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1536aec89f78SBastian Köcher 		},
1537aec89f78SBastian Köcher 	},
1538aec89f78SBastian Köcher };
1539aec89f78SBastian Köcher 
1540aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup5_i2c_apps_clk = {
1541aec89f78SBastian Köcher 	.halt_reg = 0x0b88,
1542aec89f78SBastian Köcher 	.clkr = {
1543aec89f78SBastian Köcher 		.enable_reg = 0x0b88,
1544aec89f78SBastian Köcher 		.enable_mask = BIT(0),
15450519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1546aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup5_i2c_apps_clk",
15470519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup5_i2c_apps_clk_src.clkr.hw },
1548aec89f78SBastian Köcher 			.num_parents = 1,
1549aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1550aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1551aec89f78SBastian Köcher 		},
1552aec89f78SBastian Köcher 	},
1553aec89f78SBastian Köcher };
1554aec89f78SBastian Köcher 
1555aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup5_spi_apps_clk = {
1556aec89f78SBastian Köcher 	.halt_reg = 0x0b84,
1557aec89f78SBastian Köcher 	.clkr = {
1558aec89f78SBastian Köcher 		.enable_reg = 0x0b84,
1559aec89f78SBastian Köcher 		.enable_mask = BIT(0),
15600519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1561aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup5_spi_apps_clk",
15620519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup5_spi_apps_clk_src.clkr.hw },
1563aec89f78SBastian Köcher 			.num_parents = 1,
1564aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1565aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1566aec89f78SBastian Köcher 		},
1567aec89f78SBastian Köcher 	},
1568aec89f78SBastian Köcher };
1569aec89f78SBastian Köcher 
1570aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup6_i2c_apps_clk = {
1571aec89f78SBastian Köcher 	.halt_reg = 0x0c08,
1572aec89f78SBastian Köcher 	.clkr = {
1573aec89f78SBastian Köcher 		.enable_reg = 0x0c08,
1574aec89f78SBastian Köcher 		.enable_mask = BIT(0),
15750519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1576aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup6_i2c_apps_clk",
15770519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup6_i2c_apps_clk_src.clkr.hw },
1578aec89f78SBastian Köcher 			.num_parents = 1,
1579aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1580aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1581aec89f78SBastian Köcher 		},
1582aec89f78SBastian Köcher 	},
1583aec89f78SBastian Köcher };
1584aec89f78SBastian Köcher 
1585aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup6_spi_apps_clk = {
1586aec89f78SBastian Köcher 	.halt_reg = 0x0c04,
1587aec89f78SBastian Köcher 	.clkr = {
1588aec89f78SBastian Köcher 		.enable_reg = 0x0c04,
1589aec89f78SBastian Köcher 		.enable_mask = BIT(0),
15900519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1591aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup6_spi_apps_clk",
15920519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup6_spi_apps_clk_src.clkr.hw },
1593aec89f78SBastian Köcher 			.num_parents = 1,
1594aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1595aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1596aec89f78SBastian Köcher 		},
1597aec89f78SBastian Köcher 	},
1598aec89f78SBastian Köcher };
1599aec89f78SBastian Köcher 
1600aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart1_apps_clk = {
1601aec89f78SBastian Köcher 	.halt_reg = 0x09c4,
1602aec89f78SBastian Köcher 	.clkr = {
1603aec89f78SBastian Köcher 		.enable_reg = 0x09c4,
1604aec89f78SBastian Köcher 		.enable_mask = BIT(0),
16050519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1606aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart1_apps_clk",
16070519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_uart1_apps_clk_src.clkr.hw },
1608aec89f78SBastian Köcher 			.num_parents = 1,
1609aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1610aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1611aec89f78SBastian Köcher 		},
1612aec89f78SBastian Köcher 	},
1613aec89f78SBastian Köcher };
1614aec89f78SBastian Köcher 
1615aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart2_apps_clk = {
1616aec89f78SBastian Köcher 	.halt_reg = 0x0a44,
1617aec89f78SBastian Köcher 	.clkr = {
1618aec89f78SBastian Köcher 		.enable_reg = 0x0a44,
1619aec89f78SBastian Köcher 		.enable_mask = BIT(0),
16200519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1621aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart2_apps_clk",
16220519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_uart2_apps_clk_src.clkr.hw },
1623aec89f78SBastian Köcher 			.num_parents = 1,
1624aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1625aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1626aec89f78SBastian Köcher 		},
1627aec89f78SBastian Köcher 	},
1628aec89f78SBastian Köcher };
1629aec89f78SBastian Köcher 
1630aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart3_apps_clk = {
1631aec89f78SBastian Köcher 	.halt_reg = 0x0ac4,
1632aec89f78SBastian Köcher 	.clkr = {
1633aec89f78SBastian Köcher 		.enable_reg = 0x0ac4,
1634aec89f78SBastian Köcher 		.enable_mask = BIT(0),
16350519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1636aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart3_apps_clk",
16370519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_uart3_apps_clk_src.clkr.hw },
1638aec89f78SBastian Köcher 			.num_parents = 1,
1639aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1640aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1641aec89f78SBastian Köcher 		},
1642aec89f78SBastian Köcher 	},
1643aec89f78SBastian Köcher };
1644aec89f78SBastian Köcher 
1645aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart4_apps_clk = {
1646aec89f78SBastian Köcher 	.halt_reg = 0x0b44,
1647aec89f78SBastian Köcher 	.clkr = {
1648aec89f78SBastian Köcher 		.enable_reg = 0x0b44,
1649aec89f78SBastian Köcher 		.enable_mask = BIT(0),
16500519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1651aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart4_apps_clk",
16520519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_uart4_apps_clk_src.clkr.hw },
1653aec89f78SBastian Köcher 			.num_parents = 1,
1654aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1655aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1656aec89f78SBastian Köcher 		},
1657aec89f78SBastian Köcher 	},
1658aec89f78SBastian Köcher };
1659aec89f78SBastian Köcher 
1660aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart5_apps_clk = {
1661aec89f78SBastian Köcher 	.halt_reg = 0x0bc4,
1662aec89f78SBastian Köcher 	.clkr = {
1663aec89f78SBastian Köcher 		.enable_reg = 0x0bc4,
1664aec89f78SBastian Köcher 		.enable_mask = BIT(0),
16650519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1666aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart5_apps_clk",
16670519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_uart5_apps_clk_src.clkr.hw },
1668aec89f78SBastian Köcher 			.num_parents = 1,
1669aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1670aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1671aec89f78SBastian Köcher 		},
1672aec89f78SBastian Köcher 	},
1673aec89f78SBastian Köcher };
1674aec89f78SBastian Köcher 
1675aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart6_apps_clk = {
1676aec89f78SBastian Köcher 	.halt_reg = 0x0c44,
1677aec89f78SBastian Köcher 	.clkr = {
1678aec89f78SBastian Köcher 		.enable_reg = 0x0c44,
1679aec89f78SBastian Köcher 		.enable_mask = BIT(0),
16800519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1681aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart6_apps_clk",
16820519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_uart6_apps_clk_src.clkr.hw },
1683aec89f78SBastian Köcher 			.num_parents = 1,
1684aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1685aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1686aec89f78SBastian Köcher 		},
1687aec89f78SBastian Köcher 	},
1688aec89f78SBastian Köcher };
1689aec89f78SBastian Köcher 
1690aec89f78SBastian Köcher static struct clk_branch gcc_gp1_clk = {
1691aec89f78SBastian Köcher 	.halt_reg = 0x1900,
1692aec89f78SBastian Köcher 	.clkr = {
1693aec89f78SBastian Köcher 		.enable_reg = 0x1900,
1694aec89f78SBastian Köcher 		.enable_mask = BIT(0),
16950519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1696aec89f78SBastian Köcher 			.name = "gcc_gp1_clk",
16970519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &gp1_clk_src.clkr.hw },
1698aec89f78SBastian Köcher 			.num_parents = 1,
1699aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1700aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1701aec89f78SBastian Köcher 		},
1702aec89f78SBastian Köcher 	},
1703aec89f78SBastian Köcher };
1704aec89f78SBastian Köcher 
1705aec89f78SBastian Köcher static struct clk_branch gcc_gp2_clk = {
1706aec89f78SBastian Köcher 	.halt_reg = 0x1940,
1707aec89f78SBastian Köcher 	.clkr = {
1708aec89f78SBastian Köcher 		.enable_reg = 0x1940,
1709aec89f78SBastian Köcher 		.enable_mask = BIT(0),
17100519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1711aec89f78SBastian Köcher 			.name = "gcc_gp2_clk",
17120519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &gp2_clk_src.clkr.hw },
1713aec89f78SBastian Köcher 			.num_parents = 1,
1714aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1715aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1716aec89f78SBastian Köcher 		},
1717aec89f78SBastian Köcher 	},
1718aec89f78SBastian Köcher };
1719aec89f78SBastian Köcher 
1720aec89f78SBastian Köcher static struct clk_branch gcc_gp3_clk = {
1721aec89f78SBastian Köcher 	.halt_reg = 0x1980,
1722aec89f78SBastian Köcher 	.clkr = {
1723aec89f78SBastian Köcher 		.enable_reg = 0x1980,
1724aec89f78SBastian Köcher 		.enable_mask = BIT(0),
17250519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1726aec89f78SBastian Köcher 			.name = "gcc_gp3_clk",
17270519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &gp3_clk_src.clkr.hw },
1728aec89f78SBastian Köcher 			.num_parents = 1,
1729aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1730aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1731aec89f78SBastian Köcher 		},
1732aec89f78SBastian Köcher 	},
1733aec89f78SBastian Köcher };
1734aec89f78SBastian Köcher 
17358c18b41bSKonrad Dybcio static struct clk_branch gcc_lpass_q6_axi_clk = {
17368c18b41bSKonrad Dybcio 	.halt_reg = 0x0280,
17378c18b41bSKonrad Dybcio 	.clkr = {
17388c18b41bSKonrad Dybcio 		.enable_reg = 0x0280,
17398c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
17400519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
17418c18b41bSKonrad Dybcio 			.name = "gcc_lpass_q6_axi_clk",
174274a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw },
174374a33facSKonrad Dybcio 			.num_parents = 1,
17448c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
17458c18b41bSKonrad Dybcio 		},
17468c18b41bSKonrad Dybcio 	},
17478c18b41bSKonrad Dybcio };
17488c18b41bSKonrad Dybcio 
17498c18b41bSKonrad Dybcio static struct clk_branch gcc_mss_q6_bimc_axi_clk = {
17508c18b41bSKonrad Dybcio 	.halt_reg = 0x0284,
17518c18b41bSKonrad Dybcio 	.clkr = {
17528c18b41bSKonrad Dybcio 		.enable_reg = 0x0284,
17538c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
17540519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
17558c18b41bSKonrad Dybcio 			.name = "gcc_mss_q6_bimc_axi_clk",
175674a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw },
175774a33facSKonrad Dybcio 			.num_parents = 1,
17588c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
17598c18b41bSKonrad Dybcio 		},
17608c18b41bSKonrad Dybcio 	},
17618c18b41bSKonrad Dybcio };
17628c18b41bSKonrad Dybcio 
1763aec89f78SBastian Köcher static struct clk_branch gcc_pcie_0_aux_clk = {
1764aec89f78SBastian Köcher 	.halt_reg = 0x1ad4,
1765aec89f78SBastian Köcher 	.clkr = {
1766aec89f78SBastian Köcher 		.enable_reg = 0x1ad4,
1767aec89f78SBastian Köcher 		.enable_mask = BIT(0),
17680519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1769aec89f78SBastian Köcher 			.name = "gcc_pcie_0_aux_clk",
17700519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &pcie_0_aux_clk_src.clkr.hw },
1771aec89f78SBastian Köcher 			.num_parents = 1,
1772aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1773aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1774aec89f78SBastian Köcher 		},
1775aec89f78SBastian Köcher 	},
1776aec89f78SBastian Köcher };
1777aec89f78SBastian Köcher 
17788c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_cfg_ahb_clk = {
17798c18b41bSKonrad Dybcio 	.halt_reg = 0x1ad0,
17808c18b41bSKonrad Dybcio 	.clkr = {
17818c18b41bSKonrad Dybcio 		.enable_reg = 0x1ad0,
17828c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
17830519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
17848c18b41bSKonrad Dybcio 			.name = "gcc_pcie_0_cfg_ahb_clk",
178574a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &config_noc_clk_src.clkr.hw },
178674a33facSKonrad Dybcio 			.num_parents = 1,
178774a33facSKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
17888c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
17898c18b41bSKonrad Dybcio 		},
17908c18b41bSKonrad Dybcio 	},
17918c18b41bSKonrad Dybcio };
17928c18b41bSKonrad Dybcio 
17938c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_mstr_axi_clk = {
17948c18b41bSKonrad Dybcio 	.halt_reg = 0x1acc,
17958c18b41bSKonrad Dybcio 	.clkr = {
17968c18b41bSKonrad Dybcio 		.enable_reg = 0x1acc,
17978c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
17980519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
17998c18b41bSKonrad Dybcio 			.name = "gcc_pcie_0_mstr_axi_clk",
180074a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw },
180174a33facSKonrad Dybcio 			.num_parents = 1,
180274a33facSKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
18038c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
18048c18b41bSKonrad Dybcio 		},
18058c18b41bSKonrad Dybcio 	},
18068c18b41bSKonrad Dybcio };
18078c18b41bSKonrad Dybcio 
1808aec89f78SBastian Köcher static struct clk_branch gcc_pcie_0_pipe_clk = {
1809aec89f78SBastian Köcher 	.halt_reg = 0x1ad8,
1810aec89f78SBastian Köcher 	.halt_check = BRANCH_HALT_DELAY,
1811aec89f78SBastian Köcher 	.clkr = {
1812aec89f78SBastian Köcher 		.enable_reg = 0x1ad8,
1813aec89f78SBastian Köcher 		.enable_mask = BIT(0),
18140519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1815aec89f78SBastian Köcher 			.name = "gcc_pcie_0_pipe_clk",
18160519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &pcie_0_pipe_clk_src.clkr.hw },
1817aec89f78SBastian Köcher 			.num_parents = 1,
1818aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1819aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1820aec89f78SBastian Köcher 		},
1821aec89f78SBastian Köcher 	},
1822aec89f78SBastian Köcher };
1823aec89f78SBastian Köcher 
18248c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_slv_axi_clk = {
18258c18b41bSKonrad Dybcio 	.halt_reg = 0x1ac8,
18268c18b41bSKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
18278c18b41bSKonrad Dybcio 	.clkr = {
18288c18b41bSKonrad Dybcio 		.enable_reg = 0x1ac8,
18298c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
18300519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
18318c18b41bSKonrad Dybcio 			.name = "gcc_pcie_0_slv_axi_clk",
183274a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw },
183374a33facSKonrad Dybcio 			.num_parents = 1,
183474a33facSKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
18358c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
18368c18b41bSKonrad Dybcio 		},
18378c18b41bSKonrad Dybcio 	},
18388c18b41bSKonrad Dybcio };
18398c18b41bSKonrad Dybcio 
1840aec89f78SBastian Köcher static struct clk_branch gcc_pcie_1_aux_clk = {
1841aec89f78SBastian Köcher 	.halt_reg = 0x1b54,
1842aec89f78SBastian Köcher 	.clkr = {
1843aec89f78SBastian Köcher 		.enable_reg = 0x1b54,
1844aec89f78SBastian Köcher 		.enable_mask = BIT(0),
18450519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1846aec89f78SBastian Köcher 			.name = "gcc_pcie_1_aux_clk",
18470519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &pcie_1_aux_clk_src.clkr.hw },
1848aec89f78SBastian Köcher 			.num_parents = 1,
1849aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1850aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1851aec89f78SBastian Köcher 		},
1852aec89f78SBastian Köcher 	},
1853aec89f78SBastian Köcher };
1854aec89f78SBastian Köcher 
18558c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_cfg_ahb_clk = {
18568c18b41bSKonrad Dybcio 	.halt_reg = 0x1b54,
18578c18b41bSKonrad Dybcio 	.clkr = {
18588c18b41bSKonrad Dybcio 		.enable_reg = 0x1b54,
18598c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
18600519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
18618c18b41bSKonrad Dybcio 			.name = "gcc_pcie_1_cfg_ahb_clk",
186274a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &config_noc_clk_src.clkr.hw },
186374a33facSKonrad Dybcio 			.num_parents = 1,
186474a33facSKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
18658c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
18668c18b41bSKonrad Dybcio 		},
18678c18b41bSKonrad Dybcio 	},
18688c18b41bSKonrad Dybcio };
18698c18b41bSKonrad Dybcio 
18708c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_mstr_axi_clk = {
18718c18b41bSKonrad Dybcio 	.halt_reg = 0x1b50,
18728c18b41bSKonrad Dybcio 	.clkr = {
18738c18b41bSKonrad Dybcio 		.enable_reg = 0x1b50,
18748c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
18750519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
18768c18b41bSKonrad Dybcio 			.name = "gcc_pcie_1_mstr_axi_clk",
187774a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw },
187874a33facSKonrad Dybcio 			.num_parents = 1,
187974a33facSKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
18808c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
18818c18b41bSKonrad Dybcio 		},
18828c18b41bSKonrad Dybcio 	},
18838c18b41bSKonrad Dybcio };
18848c18b41bSKonrad Dybcio 
1885aec89f78SBastian Köcher static struct clk_branch gcc_pcie_1_pipe_clk = {
1886aec89f78SBastian Köcher 	.halt_reg = 0x1b58,
1887aec89f78SBastian Köcher 	.halt_check = BRANCH_HALT_DELAY,
1888aec89f78SBastian Köcher 	.clkr = {
1889aec89f78SBastian Köcher 		.enable_reg = 0x1b58,
1890aec89f78SBastian Köcher 		.enable_mask = BIT(0),
18910519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1892aec89f78SBastian Köcher 			.name = "gcc_pcie_1_pipe_clk",
18930519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &pcie_1_pipe_clk_src.clkr.hw },
1894aec89f78SBastian Köcher 			.num_parents = 1,
1895aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1896aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1897aec89f78SBastian Köcher 		},
1898aec89f78SBastian Köcher 	},
1899aec89f78SBastian Köcher };
1900aec89f78SBastian Köcher 
19018c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_slv_axi_clk = {
19028c18b41bSKonrad Dybcio 	.halt_reg = 0x1b48,
19038c18b41bSKonrad Dybcio 	.clkr = {
19048c18b41bSKonrad Dybcio 		.enable_reg = 0x1b48,
19058c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
19060519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
19078c18b41bSKonrad Dybcio 			.name = "gcc_pcie_1_slv_axi_clk",
190874a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw },
190974a33facSKonrad Dybcio 			.num_parents = 1,
191074a33facSKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
19118c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
19128c18b41bSKonrad Dybcio 		},
19138c18b41bSKonrad Dybcio 	},
19148c18b41bSKonrad Dybcio };
19158c18b41bSKonrad Dybcio 
1916aec89f78SBastian Köcher static struct clk_branch gcc_pdm2_clk = {
1917aec89f78SBastian Köcher 	.halt_reg = 0x0ccc,
1918aec89f78SBastian Köcher 	.clkr = {
1919aec89f78SBastian Köcher 		.enable_reg = 0x0ccc,
1920aec89f78SBastian Köcher 		.enable_mask = BIT(0),
19210519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1922aec89f78SBastian Köcher 			.name = "gcc_pdm2_clk",
19230519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &pdm2_clk_src.clkr.hw },
1924aec89f78SBastian Köcher 			.num_parents = 1,
1925aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1926aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1927aec89f78SBastian Köcher 		},
1928aec89f78SBastian Köcher 	},
1929aec89f78SBastian Köcher };
1930aec89f78SBastian Köcher 
19318c18b41bSKonrad Dybcio static struct clk_branch gcc_pdm_ahb_clk = {
19328c18b41bSKonrad Dybcio 	.halt_reg = 0x0cc4,
19338c18b41bSKonrad Dybcio 	.clkr = {
19348c18b41bSKonrad Dybcio 		.enable_reg = 0x0cc4,
19358c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
19360519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
19378c18b41bSKonrad Dybcio 			.name = "gcc_pdm_ahb_clk",
193874a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw },
193974a33facSKonrad Dybcio 			.num_parents = 1,
19408c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
19418c18b41bSKonrad Dybcio 		},
19428c18b41bSKonrad Dybcio 	},
19438c18b41bSKonrad Dybcio };
19448c18b41bSKonrad Dybcio 
1945aec89f78SBastian Köcher static struct clk_branch gcc_sdcc1_apps_clk = {
1946aec89f78SBastian Köcher 	.halt_reg = 0x04c4,
1947aec89f78SBastian Köcher 	.clkr = {
1948aec89f78SBastian Köcher 		.enable_reg = 0x04c4,
1949aec89f78SBastian Köcher 		.enable_mask = BIT(0),
19500519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1951aec89f78SBastian Köcher 			.name = "gcc_sdcc1_apps_clk",
19520519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &sdcc1_apps_clk_src.clkr.hw },
1953aec89f78SBastian Köcher 			.num_parents = 1,
1954aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1955aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1956aec89f78SBastian Köcher 		},
1957aec89f78SBastian Köcher 	},
1958aec89f78SBastian Köcher };
1959aec89f78SBastian Köcher 
1960eaff16bcSJeremy McNicoll static struct clk_branch gcc_sdcc1_ahb_clk = {
1961eaff16bcSJeremy McNicoll 	.halt_reg = 0x04c8,
1962eaff16bcSJeremy McNicoll 	.clkr = {
1963eaff16bcSJeremy McNicoll 		.enable_reg = 0x04c8,
1964eaff16bcSJeremy McNicoll 		.enable_mask = BIT(0),
19650519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1966eaff16bcSJeremy McNicoll 			.name = "gcc_sdcc1_ahb_clk",
196774a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw },
1968eaff16bcSJeremy McNicoll 			.num_parents = 1,
196974a33facSKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
1970eaff16bcSJeremy McNicoll 			.ops = &clk_branch2_ops,
1971eaff16bcSJeremy McNicoll 		},
1972eaff16bcSJeremy McNicoll 	},
1973eaff16bcSJeremy McNicoll };
1974eaff16bcSJeremy McNicoll 
19758c18b41bSKonrad Dybcio static struct clk_branch gcc_sdcc2_ahb_clk = {
19768c18b41bSKonrad Dybcio 	.halt_reg = 0x0508,
19778c18b41bSKonrad Dybcio 	.clkr = {
19788c18b41bSKonrad Dybcio 		.enable_reg = 0x0508,
19798c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
19800519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
19818c18b41bSKonrad Dybcio 			.name = "gcc_sdcc2_ahb_clk",
198274a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw },
19838c18b41bSKonrad Dybcio 			.num_parents = 1,
198474a33facSKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
19858c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
19868c18b41bSKonrad Dybcio 		},
19878c18b41bSKonrad Dybcio 	},
19888c18b41bSKonrad Dybcio };
19898c18b41bSKonrad Dybcio 
1990aec89f78SBastian Köcher static struct clk_branch gcc_sdcc2_apps_clk = {
1991aec89f78SBastian Köcher 	.halt_reg = 0x0504,
1992aec89f78SBastian Köcher 	.clkr = {
1993aec89f78SBastian Köcher 		.enable_reg = 0x0504,
1994aec89f78SBastian Köcher 		.enable_mask = BIT(0),
19950519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1996aec89f78SBastian Köcher 			.name = "gcc_sdcc2_apps_clk",
19970519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &sdcc2_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 
20058c18b41bSKonrad Dybcio static struct clk_branch gcc_sdcc3_ahb_clk = {
20068c18b41bSKonrad Dybcio 	.halt_reg = 0x0548,
20078c18b41bSKonrad Dybcio 	.clkr = {
20088c18b41bSKonrad Dybcio 		.enable_reg = 0x0548,
20098c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
20100519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
20118c18b41bSKonrad Dybcio 			.name = "gcc_sdcc3_ahb_clk",
201274a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw },
20138c18b41bSKonrad Dybcio 			.num_parents = 1,
201474a33facSKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
20158c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
20168c18b41bSKonrad Dybcio 		},
20178c18b41bSKonrad Dybcio 	},
20188c18b41bSKonrad Dybcio };
20198c18b41bSKonrad Dybcio 
2020aec89f78SBastian Köcher static struct clk_branch gcc_sdcc3_apps_clk = {
2021aec89f78SBastian Köcher 	.halt_reg = 0x0544,
2022aec89f78SBastian Köcher 	.clkr = {
2023aec89f78SBastian Köcher 		.enable_reg = 0x0544,
2024aec89f78SBastian Köcher 		.enable_mask = BIT(0),
20250519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2026aec89f78SBastian Köcher 			.name = "gcc_sdcc3_apps_clk",
20270519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &sdcc3_apps_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_sdcc4_ahb_clk = {
20368c18b41bSKonrad Dybcio 	.halt_reg = 0x0588,
20378c18b41bSKonrad Dybcio 	.clkr = {
20388c18b41bSKonrad Dybcio 		.enable_reg = 0x0588,
20398c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
20400519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
20418c18b41bSKonrad Dybcio 			.name = "gcc_sdcc4_ahb_clk",
204274a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw },
20438c18b41bSKonrad Dybcio 			.num_parents = 1,
204474a33facSKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
20458c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
20468c18b41bSKonrad Dybcio 		},
20478c18b41bSKonrad Dybcio 	},
20488c18b41bSKonrad Dybcio };
20498c18b41bSKonrad Dybcio 
2050aec89f78SBastian Köcher static struct clk_branch gcc_sdcc4_apps_clk = {
2051aec89f78SBastian Köcher 	.halt_reg = 0x0584,
2052aec89f78SBastian Köcher 	.clkr = {
2053aec89f78SBastian Köcher 		.enable_reg = 0x0584,
2054aec89f78SBastian Köcher 		.enable_mask = BIT(0),
20550519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2056aec89f78SBastian Köcher 			.name = "gcc_sdcc4_apps_clk",
20570519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &sdcc4_apps_clk_src.clkr.hw },
2058aec89f78SBastian Köcher 			.num_parents = 1,
2059aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2060aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2061aec89f78SBastian Köcher 		},
2062aec89f78SBastian Köcher 	},
2063aec89f78SBastian Köcher };
2064aec89f78SBastian Köcher 
2065aec89f78SBastian Köcher static struct clk_branch gcc_sys_noc_ufs_axi_clk = {
2066aec89f78SBastian Köcher 	.halt_reg = 0x1d7c,
2067aec89f78SBastian Köcher 	.clkr = {
2068aec89f78SBastian Köcher 		.enable_reg = 0x1d7c,
2069aec89f78SBastian Köcher 		.enable_mask = BIT(0),
20700519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2071aec89f78SBastian Köcher 			.name = "gcc_sys_noc_ufs_axi_clk",
20720519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw },
2073aec89f78SBastian Köcher 			.num_parents = 1,
2074aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2075aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2076aec89f78SBastian Köcher 		},
2077aec89f78SBastian Köcher 	},
2078aec89f78SBastian Köcher };
2079aec89f78SBastian Köcher 
2080aec89f78SBastian Köcher static struct clk_branch gcc_sys_noc_usb3_axi_clk = {
2081aec89f78SBastian Köcher 	.halt_reg = 0x03fc,
2082aec89f78SBastian Köcher 	.clkr = {
2083aec89f78SBastian Köcher 		.enable_reg = 0x03fc,
2084aec89f78SBastian Köcher 		.enable_mask = BIT(0),
20850519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2086aec89f78SBastian Köcher 			.name = "gcc_sys_noc_usb3_axi_clk",
20870519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &usb30_master_clk_src.clkr.hw },
2088aec89f78SBastian Köcher 			.num_parents = 1,
2089aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2090aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2091aec89f78SBastian Köcher 		},
2092aec89f78SBastian Köcher 	},
2093aec89f78SBastian Köcher };
2094aec89f78SBastian Köcher 
20958c18b41bSKonrad Dybcio static struct clk_branch gcc_tsif_ahb_clk = {
20968c18b41bSKonrad Dybcio 	.halt_reg = 0x0d84,
20978c18b41bSKonrad Dybcio 	.clkr = {
20988c18b41bSKonrad Dybcio 		.enable_reg = 0x0d84,
20998c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
21000519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
21018c18b41bSKonrad Dybcio 			.name = "gcc_tsif_ahb_clk",
210274a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw },
210374a33facSKonrad Dybcio 			.num_parents = 1,
21048c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
21058c18b41bSKonrad Dybcio 		},
21068c18b41bSKonrad Dybcio 	},
21078c18b41bSKonrad Dybcio };
21088c18b41bSKonrad Dybcio 
2109aec89f78SBastian Köcher static struct clk_branch gcc_tsif_ref_clk = {
2110aec89f78SBastian Köcher 	.halt_reg = 0x0d88,
2111aec89f78SBastian Köcher 	.clkr = {
2112aec89f78SBastian Köcher 		.enable_reg = 0x0d88,
2113aec89f78SBastian Köcher 		.enable_mask = BIT(0),
21140519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2115aec89f78SBastian Köcher 			.name = "gcc_tsif_ref_clk",
21160519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &tsif_ref_clk_src.clkr.hw },
2117aec89f78SBastian Köcher 			.num_parents = 1,
2118aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2119aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2120aec89f78SBastian Köcher 		},
2121aec89f78SBastian Köcher 	},
2122aec89f78SBastian Köcher };
2123aec89f78SBastian Köcher 
21248c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_ahb_clk = {
21258c18b41bSKonrad Dybcio 	.halt_reg = 0x1d4c,
21268c18b41bSKonrad Dybcio 	.clkr = {
21278c18b41bSKonrad Dybcio 		.enable_reg = 0x1d4c,
21288c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
21290519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
21308c18b41bSKonrad Dybcio 			.name = "gcc_ufs_ahb_clk",
213174a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &config_noc_clk_src.clkr.hw },
213274a33facSKonrad Dybcio 			.num_parents = 1,
21338c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
21348c18b41bSKonrad Dybcio 		},
21358c18b41bSKonrad Dybcio 	},
21368c18b41bSKonrad Dybcio };
21378c18b41bSKonrad Dybcio 
2138aec89f78SBastian Köcher static struct clk_branch gcc_ufs_axi_clk = {
2139aec89f78SBastian Köcher 	.halt_reg = 0x1d48,
2140aec89f78SBastian Köcher 	.clkr = {
2141aec89f78SBastian Köcher 		.enable_reg = 0x1d48,
2142aec89f78SBastian Köcher 		.enable_mask = BIT(0),
21430519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2144aec89f78SBastian Köcher 			.name = "gcc_ufs_axi_clk",
21450519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw },
2146aec89f78SBastian Köcher 			.num_parents = 1,
2147aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2148aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2149aec89f78SBastian Köcher 		},
2150aec89f78SBastian Köcher 	},
2151aec89f78SBastian Köcher };
2152aec89f78SBastian Köcher 
2153aec89f78SBastian Köcher static struct clk_branch gcc_ufs_rx_cfg_clk = {
2154aec89f78SBastian Köcher 	.halt_reg = 0x1d54,
2155aec89f78SBastian Köcher 	.clkr = {
2156aec89f78SBastian Köcher 		.enable_reg = 0x1d54,
2157aec89f78SBastian Köcher 		.enable_mask = BIT(0),
21580519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2159aec89f78SBastian Köcher 			.name = "gcc_ufs_rx_cfg_clk",
21600519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw },
2161aec89f78SBastian Köcher 			.num_parents = 1,
2162aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2163aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2164aec89f78SBastian Köcher 		},
2165aec89f78SBastian Köcher 	},
2166aec89f78SBastian Köcher };
2167aec89f78SBastian Köcher 
21688c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_rx_symbol_0_clk = {
21698c18b41bSKonrad Dybcio 	.halt_reg = 0x1d60,
21708c18b41bSKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
21718c18b41bSKonrad Dybcio 	.clkr = {
21728c18b41bSKonrad Dybcio 		.enable_reg = 0x1d60,
21738c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
21740519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
21758c18b41bSKonrad Dybcio 			.name = "gcc_ufs_rx_symbol_0_clk",
217674a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw },
217774a33facSKonrad Dybcio 			.num_parents = 1,
21788c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
21798c18b41bSKonrad Dybcio 		},
21808c18b41bSKonrad Dybcio 	},
21818c18b41bSKonrad Dybcio };
21828c18b41bSKonrad Dybcio 
21838c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_rx_symbol_1_clk = {
21848c18b41bSKonrad Dybcio 	.halt_reg = 0x1d64,
21858c18b41bSKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
21868c18b41bSKonrad Dybcio 	.clkr = {
21878c18b41bSKonrad Dybcio 		.enable_reg = 0x1d64,
21888c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
21890519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
21908c18b41bSKonrad Dybcio 			.name = "gcc_ufs_rx_symbol_1_clk",
219174a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw },
219274a33facSKonrad Dybcio 			.num_parents = 1,
21938c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
21948c18b41bSKonrad Dybcio 		},
21958c18b41bSKonrad Dybcio 	},
21968c18b41bSKonrad Dybcio };
21978c18b41bSKonrad Dybcio 
2198aec89f78SBastian Köcher static struct clk_branch gcc_ufs_tx_cfg_clk = {
2199aec89f78SBastian Köcher 	.halt_reg = 0x1d50,
2200aec89f78SBastian Köcher 	.clkr = {
2201aec89f78SBastian Köcher 		.enable_reg = 0x1d50,
2202aec89f78SBastian Köcher 		.enable_mask = BIT(0),
22030519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2204aec89f78SBastian Köcher 			.name = "gcc_ufs_tx_cfg_clk",
22050519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw },
2206aec89f78SBastian Köcher 			.num_parents = 1,
2207aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2208aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2209aec89f78SBastian Köcher 		},
2210aec89f78SBastian Köcher 	},
2211aec89f78SBastian Köcher };
2212aec89f78SBastian Köcher 
22138c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_tx_symbol_0_clk = {
22148c18b41bSKonrad Dybcio 	.halt_reg = 0x1d58,
22158c18b41bSKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
22168c18b41bSKonrad Dybcio 	.clkr = {
22178c18b41bSKonrad Dybcio 		.enable_reg = 0x1d58,
22188c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
22190519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
22208c18b41bSKonrad Dybcio 			.name = "gcc_ufs_tx_symbol_0_clk",
222174a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw },
222274a33facSKonrad Dybcio 			.num_parents = 1,
22238c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
22248c18b41bSKonrad Dybcio 		},
22258c18b41bSKonrad Dybcio 	},
22268c18b41bSKonrad Dybcio };
22278c18b41bSKonrad Dybcio 
22288c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_tx_symbol_1_clk = {
22298c18b41bSKonrad Dybcio 	.halt_reg = 0x1d5c,
22308c18b41bSKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
22318c18b41bSKonrad Dybcio 	.clkr = {
22328c18b41bSKonrad Dybcio 		.enable_reg = 0x1d5c,
22338c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
22340519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
22358c18b41bSKonrad Dybcio 			.name = "gcc_ufs_tx_symbol_1_clk",
223674a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw },
223774a33facSKonrad Dybcio 			.num_parents = 1,
22388c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
22398c18b41bSKonrad Dybcio 		},
22408c18b41bSKonrad Dybcio 	},
22418c18b41bSKonrad Dybcio };
22428c18b41bSKonrad Dybcio 
22438c18b41bSKonrad Dybcio static struct clk_branch gcc_usb2_hs_phy_sleep_clk = {
22448c18b41bSKonrad Dybcio 	.halt_reg = 0x04ac,
22458c18b41bSKonrad Dybcio 	.clkr = {
22468c18b41bSKonrad Dybcio 		.enable_reg = 0x04ac,
22478c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
22480519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
22498c18b41bSKonrad Dybcio 			.name = "gcc_usb2_hs_phy_sleep_clk",
22500519d1d0SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
22510519d1d0SKonrad Dybcio 				.fw_name = "sleep",
22520519d1d0SKonrad Dybcio 				.name = "sleep"
22530519d1d0SKonrad Dybcio 			},
22540519d1d0SKonrad Dybcio 			.num_parents = 1,
22558c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
22568c18b41bSKonrad Dybcio 		},
22578c18b41bSKonrad Dybcio 	},
22588c18b41bSKonrad Dybcio };
22598c18b41bSKonrad Dybcio 
2260aec89f78SBastian Köcher static struct clk_branch gcc_usb30_master_clk = {
2261aec89f78SBastian Köcher 	.halt_reg = 0x03c8,
2262aec89f78SBastian Köcher 	.clkr = {
2263aec89f78SBastian Köcher 		.enable_reg = 0x03c8,
2264aec89f78SBastian Köcher 		.enable_mask = BIT(0),
22650519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2266aec89f78SBastian Köcher 			.name = "gcc_usb30_master_clk",
22670519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &usb30_master_clk_src.clkr.hw },
2268aec89f78SBastian Köcher 			.num_parents = 1,
2269aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2270aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2271aec89f78SBastian Köcher 		},
2272aec89f78SBastian Köcher 	},
2273aec89f78SBastian Köcher };
2274aec89f78SBastian Köcher 
2275aec89f78SBastian Köcher static struct clk_branch gcc_usb30_mock_utmi_clk = {
2276aec89f78SBastian Köcher 	.halt_reg = 0x03d0,
2277aec89f78SBastian Köcher 	.clkr = {
2278aec89f78SBastian Köcher 		.enable_reg = 0x03d0,
2279aec89f78SBastian Köcher 		.enable_mask = BIT(0),
22800519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2281aec89f78SBastian Köcher 			.name = "gcc_usb30_mock_utmi_clk",
22820519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &usb30_mock_utmi_clk_src.clkr.hw },
2283aec89f78SBastian Köcher 			.num_parents = 1,
2284aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2285aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2286aec89f78SBastian Köcher 		},
2287aec89f78SBastian Köcher 	},
2288aec89f78SBastian Köcher };
2289aec89f78SBastian Köcher 
22908c18b41bSKonrad Dybcio static struct clk_branch gcc_usb30_sleep_clk = {
22918c18b41bSKonrad Dybcio 	.halt_reg = 0x03cc,
22928c18b41bSKonrad Dybcio 	.clkr = {
22938c18b41bSKonrad Dybcio 		.enable_reg = 0x03cc,
22948c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
22950519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
22968c18b41bSKonrad Dybcio 			.name = "gcc_usb30_sleep_clk",
22970519d1d0SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
22980519d1d0SKonrad Dybcio 				.fw_name = "sleep",
22990519d1d0SKonrad Dybcio 				.name = "sleep"
23000519d1d0SKonrad Dybcio 			},
23010519d1d0SKonrad Dybcio 			.num_parents = 1,
23028c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
23038c18b41bSKonrad Dybcio 		},
23048c18b41bSKonrad Dybcio 	},
23058c18b41bSKonrad Dybcio };
23068c18b41bSKonrad Dybcio 
2307aec89f78SBastian Köcher static struct clk_branch gcc_usb3_phy_aux_clk = {
2308aec89f78SBastian Köcher 	.halt_reg = 0x1408,
2309aec89f78SBastian Köcher 	.clkr = {
2310aec89f78SBastian Köcher 		.enable_reg = 0x1408,
2311aec89f78SBastian Köcher 		.enable_mask = BIT(0),
23120519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2313aec89f78SBastian Köcher 			.name = "gcc_usb3_phy_aux_clk",
23140519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &usb3_phy_aux_clk_src.clkr.hw },
2315aec89f78SBastian Köcher 			.num_parents = 1,
2316aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2317aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2318aec89f78SBastian Köcher 		},
2319aec89f78SBastian Köcher 	},
2320aec89f78SBastian Köcher };
2321aec89f78SBastian Köcher 
2322b8f415c6SKonrad Dybcio static struct clk_branch gcc_usb3_phy_pipe_clk = {
2323b8f415c6SKonrad Dybcio 	.halt_reg = 0x140c,
2324b8f415c6SKonrad Dybcio 	.halt_check = BRANCH_HALT_SKIP,
2325b8f415c6SKonrad Dybcio 	.clkr = {
2326b8f415c6SKonrad Dybcio 		.enable_reg = 0x140c,
2327b8f415c6SKonrad Dybcio 		.enable_mask = BIT(0),
2328b8f415c6SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2329b8f415c6SKonrad Dybcio 			.name = "gcc_usb3_phy_pipe_clk",
2330b8f415c6SKonrad Dybcio 			.ops = &clk_branch2_ops,
2331b8f415c6SKonrad Dybcio 		},
2332b8f415c6SKonrad Dybcio 	},
2333b8f415c6SKonrad Dybcio };
2334b8f415c6SKonrad Dybcio 
23358c18b41bSKonrad Dybcio static struct clk_branch gcc_usb_hs_ahb_clk = {
23368c18b41bSKonrad Dybcio 	.halt_reg = 0x0488,
23378c18b41bSKonrad Dybcio 	.clkr = {
23388c18b41bSKonrad Dybcio 		.enable_reg = 0x0488,
23398c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
23400519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
23418c18b41bSKonrad Dybcio 			.name = "gcc_usb_hs_ahb_clk",
234274a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw },
234374a33facSKonrad Dybcio 			.num_parents = 1,
23448c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
23458c18b41bSKonrad Dybcio 		},
23468c18b41bSKonrad Dybcio 	},
23478c18b41bSKonrad Dybcio };
23488c18b41bSKonrad Dybcio 
2349aec89f78SBastian Köcher static struct clk_branch gcc_usb_hs_system_clk = {
2350aec89f78SBastian Köcher 	.halt_reg = 0x0484,
2351aec89f78SBastian Köcher 	.clkr = {
2352aec89f78SBastian Köcher 		.enable_reg = 0x0484,
2353aec89f78SBastian Köcher 		.enable_mask = BIT(0),
23540519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2355aec89f78SBastian Köcher 			.name = "gcc_usb_hs_system_clk",
23560519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &usb_hs_system_clk_src.clkr.hw },
2357aec89f78SBastian Köcher 			.num_parents = 1,
2358aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2359aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2360aec89f78SBastian Köcher 		},
2361aec89f78SBastian Köcher 	},
2362aec89f78SBastian Köcher };
2363aec89f78SBastian Köcher 
23648c18b41bSKonrad Dybcio static struct clk_branch gcc_usb_phy_cfg_ahb2phy_clk = {
23658c18b41bSKonrad Dybcio 	.halt_reg = 0x1a84,
23668c18b41bSKonrad Dybcio 	.clkr = {
23678c18b41bSKonrad Dybcio 		.enable_reg = 0x1a84,
23688c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
23690519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
23708c18b41bSKonrad Dybcio 			.name = "gcc_usb_phy_cfg_ahb2phy_clk",
23718c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
23728c18b41bSKonrad Dybcio 		},
23738c18b41bSKonrad Dybcio 	},
23748c18b41bSKonrad Dybcio };
23758c18b41bSKonrad Dybcio 
2376b8f415c6SKonrad Dybcio static struct clk_branch gpll0_out_mmsscc = {
2377b8f415c6SKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
2378b8f415c6SKonrad Dybcio 	.clkr = {
2379b8f415c6SKonrad Dybcio 		.enable_reg = 0x1484,
2380b8f415c6SKonrad Dybcio 		.enable_mask = BIT(26),
2381b8f415c6SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2382b8f415c6SKonrad Dybcio 			.name = "gpll0_out_mmsscc",
2383b8f415c6SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw },
2384b8f415c6SKonrad Dybcio 			.num_parents = 1,
2385b8f415c6SKonrad Dybcio 			.ops = &clk_branch2_ops,
2386b8f415c6SKonrad Dybcio 		},
2387b8f415c6SKonrad Dybcio 	},
2388b8f415c6SKonrad Dybcio };
2389b8f415c6SKonrad Dybcio 
2390b8f415c6SKonrad Dybcio static struct clk_branch gpll0_out_msscc = {
2391b8f415c6SKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
2392b8f415c6SKonrad Dybcio 	.clkr = {
2393b8f415c6SKonrad Dybcio 		.enable_reg = 0x1484,
2394b8f415c6SKonrad Dybcio 		.enable_mask = BIT(27),
2395b8f415c6SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2396b8f415c6SKonrad Dybcio 			.name = "gpll0_out_msscc",
2397b8f415c6SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw },
2398b8f415c6SKonrad Dybcio 			.num_parents = 1,
2399b8f415c6SKonrad Dybcio 			.ops = &clk_branch2_ops,
2400b8f415c6SKonrad Dybcio 		},
2401b8f415c6SKonrad Dybcio 	},
2402b8f415c6SKonrad Dybcio };
2403b8f415c6SKonrad Dybcio 
2404b8f415c6SKonrad Dybcio static struct clk_branch pcie_0_phy_ldo = {
2405b8f415c6SKonrad Dybcio 	.halt_reg = 0x1e00,
2406b8f415c6SKonrad Dybcio 	.halt_check = BRANCH_HALT_SKIP,
2407b8f415c6SKonrad Dybcio 	.clkr = {
2408b8f415c6SKonrad Dybcio 		.enable_reg = 0x1E00,
2409b8f415c6SKonrad Dybcio 		.enable_mask = BIT(0),
2410b8f415c6SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2411b8f415c6SKonrad Dybcio 			.name = "pcie_0_phy_ldo",
2412b8f415c6SKonrad Dybcio 			.ops = &clk_branch2_ops,
2413b8f415c6SKonrad Dybcio 		},
2414b8f415c6SKonrad Dybcio 	},
2415b8f415c6SKonrad Dybcio };
2416b8f415c6SKonrad Dybcio 
2417b8f415c6SKonrad Dybcio static struct clk_branch pcie_1_phy_ldo = {
2418b8f415c6SKonrad Dybcio 	.halt_reg = 0x1e04,
2419b8f415c6SKonrad Dybcio 	.halt_check = BRANCH_HALT_SKIP,
2420b8f415c6SKonrad Dybcio 	.clkr = {
2421b8f415c6SKonrad Dybcio 		.enable_reg = 0x1E04,
2422b8f415c6SKonrad Dybcio 		.enable_mask = BIT(0),
2423b8f415c6SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2424b8f415c6SKonrad Dybcio 			.name = "pcie_1_phy_ldo",
2425b8f415c6SKonrad Dybcio 			.ops = &clk_branch2_ops,
2426b8f415c6SKonrad Dybcio 		},
2427b8f415c6SKonrad Dybcio 	},
2428b8f415c6SKonrad Dybcio };
2429b8f415c6SKonrad Dybcio 
2430b8f415c6SKonrad Dybcio static struct clk_branch ufs_phy_ldo = {
2431b8f415c6SKonrad Dybcio 	.halt_reg = 0x1e0c,
2432b8f415c6SKonrad Dybcio 	.halt_check = BRANCH_HALT_SKIP,
2433b8f415c6SKonrad Dybcio 	.clkr = {
2434b8f415c6SKonrad Dybcio 		.enable_reg = 0x1E0C,
2435b8f415c6SKonrad Dybcio 		.enable_mask = BIT(0),
2436b8f415c6SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2437b8f415c6SKonrad Dybcio 			.name = "ufs_phy_ldo",
2438b8f415c6SKonrad Dybcio 			.ops = &clk_branch2_ops,
2439b8f415c6SKonrad Dybcio 		},
2440b8f415c6SKonrad Dybcio 	},
2441b8f415c6SKonrad Dybcio };
2442b8f415c6SKonrad Dybcio 
2443b8f415c6SKonrad Dybcio static struct clk_branch usb_ss_phy_ldo = {
2444b8f415c6SKonrad Dybcio 	.halt_reg = 0x1e08,
2445b8f415c6SKonrad Dybcio 	.halt_check = BRANCH_HALT_SKIP,
2446b8f415c6SKonrad Dybcio 	.clkr = {
2447b8f415c6SKonrad Dybcio 		.enable_reg = 0x1E08,
2448b8f415c6SKonrad Dybcio 		.enable_mask = BIT(0),
2449b8f415c6SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2450b8f415c6SKonrad Dybcio 			.name = "usb_ss_phy_ldo",
2451b8f415c6SKonrad Dybcio 			.ops = &clk_branch2_ops,
2452b8f415c6SKonrad Dybcio 		},
2453b8f415c6SKonrad Dybcio 	},
2454b8f415c6SKonrad Dybcio };
2455b8f415c6SKonrad Dybcio 
2456b8f415c6SKonrad Dybcio static struct clk_branch gcc_boot_rom_ahb_clk = {
2457b8f415c6SKonrad Dybcio 	.halt_reg = 0x0e04,
2458b8f415c6SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2459b8f415c6SKonrad Dybcio 	.hwcg_reg = 0x0e04,
2460b8f415c6SKonrad Dybcio 	.hwcg_bit = 1,
2461b8f415c6SKonrad Dybcio 	.clkr = {
2462b8f415c6SKonrad Dybcio 		.enable_reg = 0x1484,
2463b8f415c6SKonrad Dybcio 		.enable_mask = BIT(10),
2464b8f415c6SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2465b8f415c6SKonrad Dybcio 			.name = "gcc_boot_rom_ahb_clk",
2466b8f415c6SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &config_noc_clk_src.clkr.hw },
2467b8f415c6SKonrad Dybcio 			.num_parents = 1,
2468b8f415c6SKonrad Dybcio 			.ops = &clk_branch2_ops,
2469b8f415c6SKonrad Dybcio 		},
2470b8f415c6SKonrad Dybcio 	},
2471b8f415c6SKonrad Dybcio };
2472b8f415c6SKonrad Dybcio 
2473b8f415c6SKonrad Dybcio static struct clk_branch gcc_prng_ahb_clk = {
2474b8f415c6SKonrad Dybcio 	.halt_reg = 0x0d04,
2475b8f415c6SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2476b8f415c6SKonrad Dybcio 	.clkr = {
2477b8f415c6SKonrad Dybcio 		.enable_reg = 0x1484,
2478b8f415c6SKonrad Dybcio 		.enable_mask = BIT(13),
2479b8f415c6SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2480b8f415c6SKonrad Dybcio 			.name = "gcc_prng_ahb_clk",
2481b8f415c6SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw },
2482b8f415c6SKonrad Dybcio 			.num_parents = 1,
2483b8f415c6SKonrad Dybcio 			.ops = &clk_branch2_ops,
2484b8f415c6SKonrad Dybcio 		},
2485b8f415c6SKonrad Dybcio 	},
2486b8f415c6SKonrad Dybcio };
2487b8f415c6SKonrad Dybcio 
24888c18b41bSKonrad Dybcio static struct gdsc pcie_0_gdsc = {
24898c18b41bSKonrad Dybcio 		.gdscr = 0x1ac4,
24908c18b41bSKonrad Dybcio 		.pd = {
24918c18b41bSKonrad Dybcio 			.name = "pcie_0",
24928c18b41bSKonrad Dybcio 		},
24938c18b41bSKonrad Dybcio 		.pwrsts = PWRSTS_OFF_ON,
24948c18b41bSKonrad Dybcio };
24958c18b41bSKonrad Dybcio 
24968c18b41bSKonrad Dybcio static struct gdsc pcie_1_gdsc = {
24978c18b41bSKonrad Dybcio 		.gdscr = 0x1b44,
24988c18b41bSKonrad Dybcio 		.pd = {
24998c18b41bSKonrad Dybcio 			.name = "pcie_1",
25008c18b41bSKonrad Dybcio 		},
25018c18b41bSKonrad Dybcio 		.pwrsts = PWRSTS_OFF_ON,
25028c18b41bSKonrad Dybcio };
25038c18b41bSKonrad Dybcio 
25048c18b41bSKonrad Dybcio static struct gdsc usb30_gdsc = {
25058c18b41bSKonrad Dybcio 		.gdscr = 0x3c4,
25068c18b41bSKonrad Dybcio 		.pd = {
25078c18b41bSKonrad Dybcio 			.name = "usb30",
25088c18b41bSKonrad Dybcio 		},
25098c18b41bSKonrad Dybcio 		.pwrsts = PWRSTS_OFF_ON,
25108c18b41bSKonrad Dybcio };
25118c18b41bSKonrad Dybcio 
25128c18b41bSKonrad Dybcio static struct gdsc ufs_gdsc = {
25138c18b41bSKonrad Dybcio 		.gdscr = 0x1d44,
25148c18b41bSKonrad Dybcio 		.pd = {
25158c18b41bSKonrad Dybcio 			.name = "ufs",
25168c18b41bSKonrad Dybcio 		},
25178c18b41bSKonrad Dybcio 		.pwrsts = PWRSTS_OFF_ON,
25188c18b41bSKonrad Dybcio };
25198c18b41bSKonrad Dybcio 
2520aec89f78SBastian Köcher static struct clk_regmap *gcc_msm8994_clocks[] = {
2521aec89f78SBastian Köcher 	[GPLL0_EARLY] = &gpll0_early.clkr,
2522aec89f78SBastian Köcher 	[GPLL0] = &gpll0.clkr,
2523aec89f78SBastian Köcher 	[GPLL4_EARLY] = &gpll4_early.clkr,
2524aec89f78SBastian Köcher 	[GPLL4] = &gpll4.clkr,
252574a33facSKonrad Dybcio 	[CONFIG_NOC_CLK_SRC] = &config_noc_clk_src.clkr,
252674a33facSKonrad Dybcio 	[PERIPH_NOC_CLK_SRC] = &periph_noc_clk_src.clkr,
252774a33facSKonrad Dybcio 	[SYSTEM_NOC_CLK_SRC] = &system_noc_clk_src.clkr,
2528aec89f78SBastian Köcher 	[UFS_AXI_CLK_SRC] = &ufs_axi_clk_src.clkr,
2529aec89f78SBastian Köcher 	[USB30_MASTER_CLK_SRC] = &usb30_master_clk_src.clkr,
2530aec89f78SBastian Köcher 	[BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr,
2531aec89f78SBastian Köcher 	[BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr,
2532aec89f78SBastian Köcher 	[BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr,
2533aec89f78SBastian Köcher 	[BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr,
2534aec89f78SBastian Köcher 	[BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr,
2535aec89f78SBastian Köcher 	[BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr,
2536aec89f78SBastian Köcher 	[BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr,
2537aec89f78SBastian Köcher 	[BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr,
2538aec89f78SBastian Köcher 	[BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr,
2539aec89f78SBastian Köcher 	[BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr,
2540aec89f78SBastian Köcher 	[BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr,
2541aec89f78SBastian Köcher 	[BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr,
2542aec89f78SBastian Köcher 	[BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr,
2543aec89f78SBastian Köcher 	[BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr,
2544aec89f78SBastian Köcher 	[BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr,
2545aec89f78SBastian Köcher 	[BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr,
2546aec89f78SBastian Köcher 	[BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr,
2547aec89f78SBastian Köcher 	[BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr,
2548aec89f78SBastian Köcher 	[BLSP2_QUP1_I2C_APPS_CLK_SRC] = &blsp2_qup1_i2c_apps_clk_src.clkr,
2549aec89f78SBastian Köcher 	[BLSP2_QUP1_SPI_APPS_CLK_SRC] = &blsp2_qup1_spi_apps_clk_src.clkr,
2550aec89f78SBastian Köcher 	[BLSP2_QUP2_I2C_APPS_CLK_SRC] = &blsp2_qup2_i2c_apps_clk_src.clkr,
2551aec89f78SBastian Köcher 	[BLSP2_QUP2_SPI_APPS_CLK_SRC] = &blsp2_qup2_spi_apps_clk_src.clkr,
2552aec89f78SBastian Köcher 	[BLSP2_QUP3_I2C_APPS_CLK_SRC] = &blsp2_qup3_i2c_apps_clk_src.clkr,
2553aec89f78SBastian Köcher 	[BLSP2_QUP3_SPI_APPS_CLK_SRC] = &blsp2_qup3_spi_apps_clk_src.clkr,
2554aec89f78SBastian Köcher 	[BLSP2_QUP4_I2C_APPS_CLK_SRC] = &blsp2_qup4_i2c_apps_clk_src.clkr,
2555aec89f78SBastian Köcher 	[BLSP2_QUP4_SPI_APPS_CLK_SRC] = &blsp2_qup4_spi_apps_clk_src.clkr,
2556aec89f78SBastian Köcher 	[BLSP2_QUP5_I2C_APPS_CLK_SRC] = &blsp2_qup5_i2c_apps_clk_src.clkr,
2557aec89f78SBastian Köcher 	[BLSP2_QUP5_SPI_APPS_CLK_SRC] = &blsp2_qup5_spi_apps_clk_src.clkr,
2558aec89f78SBastian Köcher 	[BLSP2_QUP6_I2C_APPS_CLK_SRC] = &blsp2_qup6_i2c_apps_clk_src.clkr,
2559aec89f78SBastian Köcher 	[BLSP2_QUP6_SPI_APPS_CLK_SRC] = &blsp2_qup6_spi_apps_clk_src.clkr,
2560aec89f78SBastian Köcher 	[BLSP2_UART1_APPS_CLK_SRC] = &blsp2_uart1_apps_clk_src.clkr,
2561aec89f78SBastian Köcher 	[BLSP2_UART2_APPS_CLK_SRC] = &blsp2_uart2_apps_clk_src.clkr,
2562aec89f78SBastian Köcher 	[BLSP2_UART3_APPS_CLK_SRC] = &blsp2_uart3_apps_clk_src.clkr,
2563aec89f78SBastian Köcher 	[BLSP2_UART4_APPS_CLK_SRC] = &blsp2_uart4_apps_clk_src.clkr,
2564aec89f78SBastian Köcher 	[BLSP2_UART5_APPS_CLK_SRC] = &blsp2_uart5_apps_clk_src.clkr,
2565aec89f78SBastian Köcher 	[BLSP2_UART6_APPS_CLK_SRC] = &blsp2_uart6_apps_clk_src.clkr,
2566aec89f78SBastian Köcher 	[GP1_CLK_SRC] = &gp1_clk_src.clkr,
2567aec89f78SBastian Köcher 	[GP2_CLK_SRC] = &gp2_clk_src.clkr,
2568aec89f78SBastian Köcher 	[GP3_CLK_SRC] = &gp3_clk_src.clkr,
2569aec89f78SBastian Köcher 	[PCIE_0_AUX_CLK_SRC] = &pcie_0_aux_clk_src.clkr,
2570aec89f78SBastian Köcher 	[PCIE_0_PIPE_CLK_SRC] = &pcie_0_pipe_clk_src.clkr,
2571aec89f78SBastian Köcher 	[PCIE_1_AUX_CLK_SRC] = &pcie_1_aux_clk_src.clkr,
2572aec89f78SBastian Köcher 	[PCIE_1_PIPE_CLK_SRC] = &pcie_1_pipe_clk_src.clkr,
2573aec89f78SBastian Köcher 	[PDM2_CLK_SRC] = &pdm2_clk_src.clkr,
2574aec89f78SBastian Köcher 	[SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr,
2575aec89f78SBastian Köcher 	[SDCC2_APPS_CLK_SRC] = &sdcc2_apps_clk_src.clkr,
2576aec89f78SBastian Köcher 	[SDCC3_APPS_CLK_SRC] = &sdcc3_apps_clk_src.clkr,
2577aec89f78SBastian Köcher 	[SDCC4_APPS_CLK_SRC] = &sdcc4_apps_clk_src.clkr,
2578aec89f78SBastian Köcher 	[TSIF_REF_CLK_SRC] = &tsif_ref_clk_src.clkr,
2579aec89f78SBastian Köcher 	[USB30_MOCK_UTMI_CLK_SRC] = &usb30_mock_utmi_clk_src.clkr,
2580aec89f78SBastian Köcher 	[USB3_PHY_AUX_CLK_SRC] = &usb3_phy_aux_clk_src.clkr,
2581aec89f78SBastian Köcher 	[USB_HS_SYSTEM_CLK_SRC] = &usb_hs_system_clk_src.clkr,
2582aec89f78SBastian Köcher 	[GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr,
2583aec89f78SBastian Köcher 	[GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr,
2584aec89f78SBastian Köcher 	[GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr,
2585aec89f78SBastian Köcher 	[GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr,
2586aec89f78SBastian Köcher 	[GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr,
2587aec89f78SBastian Köcher 	[GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr,
2588aec89f78SBastian Köcher 	[GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr,
2589aec89f78SBastian Köcher 	[GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr,
2590aec89f78SBastian Köcher 	[GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr,
2591aec89f78SBastian Köcher 	[GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr,
2592aec89f78SBastian Köcher 	[GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr,
2593aec89f78SBastian Köcher 	[GCC_BLSP1_QUP6_I2C_APPS_CLK] = &gcc_blsp1_qup6_i2c_apps_clk.clkr,
2594aec89f78SBastian Köcher 	[GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr,
2595aec89f78SBastian Köcher 	[GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr,
2596aec89f78SBastian Köcher 	[GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr,
2597aec89f78SBastian Köcher 	[GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr,
2598aec89f78SBastian Köcher 	[GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr,
2599aec89f78SBastian Köcher 	[GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr,
2600aec89f78SBastian Köcher 	[GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr,
2601aec89f78SBastian Köcher 	[GCC_BLSP2_AHB_CLK] = &gcc_blsp2_ahb_clk.clkr,
2602aec89f78SBastian Köcher 	[GCC_BLSP2_QUP1_I2C_APPS_CLK] = &gcc_blsp2_qup1_i2c_apps_clk.clkr,
2603aec89f78SBastian Köcher 	[GCC_BLSP2_QUP1_SPI_APPS_CLK] = &gcc_blsp2_qup1_spi_apps_clk.clkr,
2604aec89f78SBastian Köcher 	[GCC_BLSP2_QUP2_I2C_APPS_CLK] = &gcc_blsp2_qup2_i2c_apps_clk.clkr,
2605aec89f78SBastian Köcher 	[GCC_BLSP2_QUP2_SPI_APPS_CLK] = &gcc_blsp2_qup2_spi_apps_clk.clkr,
2606aec89f78SBastian Köcher 	[GCC_BLSP2_QUP3_I2C_APPS_CLK] = &gcc_blsp2_qup3_i2c_apps_clk.clkr,
2607aec89f78SBastian Köcher 	[GCC_BLSP2_QUP3_SPI_APPS_CLK] = &gcc_blsp2_qup3_spi_apps_clk.clkr,
2608aec89f78SBastian Köcher 	[GCC_BLSP2_QUP4_I2C_APPS_CLK] = &gcc_blsp2_qup4_i2c_apps_clk.clkr,
2609aec89f78SBastian Köcher 	[GCC_BLSP2_QUP4_SPI_APPS_CLK] = &gcc_blsp2_qup4_spi_apps_clk.clkr,
2610aec89f78SBastian Köcher 	[GCC_BLSP2_QUP5_I2C_APPS_CLK] = &gcc_blsp2_qup5_i2c_apps_clk.clkr,
2611aec89f78SBastian Köcher 	[GCC_BLSP2_QUP5_SPI_APPS_CLK] = &gcc_blsp2_qup5_spi_apps_clk.clkr,
2612aec89f78SBastian Köcher 	[GCC_BLSP2_QUP6_I2C_APPS_CLK] = &gcc_blsp2_qup6_i2c_apps_clk.clkr,
2613aec89f78SBastian Köcher 	[GCC_BLSP2_QUP6_SPI_APPS_CLK] = &gcc_blsp2_qup6_spi_apps_clk.clkr,
2614aec89f78SBastian Köcher 	[GCC_BLSP2_UART1_APPS_CLK] = &gcc_blsp2_uart1_apps_clk.clkr,
2615aec89f78SBastian Köcher 	[GCC_BLSP2_UART2_APPS_CLK] = &gcc_blsp2_uart2_apps_clk.clkr,
2616aec89f78SBastian Köcher 	[GCC_BLSP2_UART3_APPS_CLK] = &gcc_blsp2_uart3_apps_clk.clkr,
2617aec89f78SBastian Köcher 	[GCC_BLSP2_UART4_APPS_CLK] = &gcc_blsp2_uart4_apps_clk.clkr,
2618aec89f78SBastian Köcher 	[GCC_BLSP2_UART5_APPS_CLK] = &gcc_blsp2_uart5_apps_clk.clkr,
2619aec89f78SBastian Köcher 	[GCC_BLSP2_UART6_APPS_CLK] = &gcc_blsp2_uart6_apps_clk.clkr,
2620aec89f78SBastian Köcher 	[GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
2621aec89f78SBastian Köcher 	[GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
2622aec89f78SBastian Köcher 	[GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
26238c18b41bSKonrad Dybcio 	[GCC_LPASS_Q6_AXI_CLK] = &gcc_lpass_q6_axi_clk.clkr,
26248c18b41bSKonrad Dybcio 	[GCC_MSS_Q6_BIMC_AXI_CLK] = &gcc_mss_q6_bimc_axi_clk.clkr,
2625aec89f78SBastian Köcher 	[GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,
26268c18b41bSKonrad Dybcio 	[GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr,
26278c18b41bSKonrad Dybcio 	[GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr,
2628aec89f78SBastian Köcher 	[GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,
26298c18b41bSKonrad Dybcio 	[GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr,
2630aec89f78SBastian Köcher 	[GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,
26318c18b41bSKonrad Dybcio 	[GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr,
26328c18b41bSKonrad Dybcio 	[GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr,
2633aec89f78SBastian Köcher 	[GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,
26348c18b41bSKonrad Dybcio 	[GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr,
2635aec89f78SBastian Köcher 	[GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
26368c18b41bSKonrad Dybcio 	[GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
2637eaff16bcSJeremy McNicoll 	[GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
26388c18b41bSKonrad Dybcio 	[GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
26398c18b41bSKonrad Dybcio 	[GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
26408c18b41bSKonrad Dybcio 	[GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
26418c18b41bSKonrad Dybcio 	[GCC_SDCC3_AHB_CLK] = &gcc_sdcc3_ahb_clk.clkr,
26428c18b41bSKonrad Dybcio 	[GCC_SDCC3_APPS_CLK] = &gcc_sdcc3_apps_clk.clkr,
26438c18b41bSKonrad Dybcio 	[GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr,
26448c18b41bSKonrad Dybcio 	[GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr,
2645aec89f78SBastian Köcher 	[GCC_SYS_NOC_UFS_AXI_CLK] = &gcc_sys_noc_ufs_axi_clk.clkr,
2646aec89f78SBastian Köcher 	[GCC_SYS_NOC_USB3_AXI_CLK] = &gcc_sys_noc_usb3_axi_clk.clkr,
26478c18b41bSKonrad Dybcio 	[GCC_TSIF_AHB_CLK] = &gcc_tsif_ahb_clk.clkr,
2648aec89f78SBastian Köcher 	[GCC_TSIF_REF_CLK] = &gcc_tsif_ref_clk.clkr,
26498c18b41bSKonrad Dybcio 	[GCC_UFS_AHB_CLK] = &gcc_ufs_ahb_clk.clkr,
2650aec89f78SBastian Köcher 	[GCC_UFS_AXI_CLK] = &gcc_ufs_axi_clk.clkr,
2651aec89f78SBastian Köcher 	[GCC_UFS_RX_CFG_CLK] = &gcc_ufs_rx_cfg_clk.clkr,
26528c18b41bSKonrad Dybcio 	[GCC_UFS_RX_SYMBOL_0_CLK] = &gcc_ufs_rx_symbol_0_clk.clkr,
26538c18b41bSKonrad Dybcio 	[GCC_UFS_RX_SYMBOL_1_CLK] = &gcc_ufs_rx_symbol_1_clk.clkr,
2654aec89f78SBastian Köcher 	[GCC_UFS_TX_CFG_CLK] = &gcc_ufs_tx_cfg_clk.clkr,
26558c18b41bSKonrad Dybcio 	[GCC_UFS_TX_SYMBOL_0_CLK] = &gcc_ufs_tx_symbol_0_clk.clkr,
26568c18b41bSKonrad Dybcio 	[GCC_UFS_TX_SYMBOL_1_CLK] = &gcc_ufs_tx_symbol_1_clk.clkr,
26578c18b41bSKonrad Dybcio 	[GCC_USB2_HS_PHY_SLEEP_CLK] = &gcc_usb2_hs_phy_sleep_clk.clkr,
2658aec89f78SBastian Köcher 	[GCC_USB30_MASTER_CLK] = &gcc_usb30_master_clk.clkr,
2659aec89f78SBastian Köcher 	[GCC_USB30_MOCK_UTMI_CLK] = &gcc_usb30_mock_utmi_clk.clkr,
26608c18b41bSKonrad Dybcio 	[GCC_USB30_SLEEP_CLK] = &gcc_usb30_sleep_clk.clkr,
2661aec89f78SBastian Köcher 	[GCC_USB3_PHY_AUX_CLK] = &gcc_usb3_phy_aux_clk.clkr,
2662b8f415c6SKonrad Dybcio 	[GCC_USB3_PHY_PIPE_CLK] = &gcc_usb3_phy_pipe_clk.clkr,
26638c18b41bSKonrad Dybcio 	[GCC_USB_HS_AHB_CLK] = &gcc_usb_hs_ahb_clk.clkr,
2664aec89f78SBastian Köcher 	[GCC_USB_HS_SYSTEM_CLK] = &gcc_usb_hs_system_clk.clkr,
26658c18b41bSKonrad Dybcio 	[GCC_USB_PHY_CFG_AHB2PHY_CLK] = &gcc_usb_phy_cfg_ahb2phy_clk.clkr,
2666b8f415c6SKonrad Dybcio 	[GPLL0_OUT_MMSSCC] = &gpll0_out_mmsscc.clkr,
2667b8f415c6SKonrad Dybcio 	[GPLL0_OUT_MSSCC] = &gpll0_out_msscc.clkr,
2668b8f415c6SKonrad Dybcio 	[PCIE_0_PHY_LDO] = &pcie_0_phy_ldo.clkr,
2669b8f415c6SKonrad Dybcio 	[PCIE_1_PHY_LDO] = &pcie_1_phy_ldo.clkr,
2670b8f415c6SKonrad Dybcio 	[UFS_PHY_LDO] = &ufs_phy_ldo.clkr,
2671b8f415c6SKonrad Dybcio 	[USB_SS_PHY_LDO] = &usb_ss_phy_ldo.clkr,
2672b8f415c6SKonrad Dybcio 	[GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
2673b8f415c6SKonrad Dybcio 	[GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
26748c18b41bSKonrad Dybcio };
26758c18b41bSKonrad Dybcio 
26768c18b41bSKonrad Dybcio static struct gdsc *gcc_msm8994_gdscs[] = {
2677*35bb1e6eSKonrad Dybcio 	/* This GDSC does not exist, but ABI has to remain intact */
2678*35bb1e6eSKonrad Dybcio 	[PCIE_GDSC] = NULL,
26798c18b41bSKonrad Dybcio 	[PCIE_0_GDSC] = &pcie_0_gdsc,
26808c18b41bSKonrad Dybcio 	[PCIE_1_GDSC] = &pcie_1_gdsc,
26818c18b41bSKonrad Dybcio 	[USB30_GDSC] = &usb30_gdsc,
26828c18b41bSKonrad Dybcio 	[UFS_GDSC] = &ufs_gdsc,
26838c18b41bSKonrad Dybcio };
26848c18b41bSKonrad Dybcio 
26858c18b41bSKonrad Dybcio static const struct qcom_reset_map gcc_msm8994_resets[] = {
26868c18b41bSKonrad Dybcio 	[USB3_PHY_RESET] = { 0x1400 },
26878c18b41bSKonrad Dybcio 	[USB3PHY_PHY_RESET] = { 0x1404 },
26888c18b41bSKonrad Dybcio 	[PCIE_PHY_0_RESET] = { 0x1b18 },
26898c18b41bSKonrad Dybcio 	[PCIE_PHY_1_RESET] = { 0x1b98 },
26908c18b41bSKonrad Dybcio 	[QUSB2_PHY_RESET] = { 0x04b8 },
2691aec89f78SBastian Köcher };
2692aec89f78SBastian Köcher 
2693aec89f78SBastian Köcher static const struct regmap_config gcc_msm8994_regmap_config = {
2694aec89f78SBastian Köcher 	.reg_bits	= 32,
2695aec89f78SBastian Köcher 	.reg_stride	= 4,
2696aec89f78SBastian Köcher 	.val_bits	= 32,
2697aec89f78SBastian Köcher 	.max_register	= 0x2000,
2698aec89f78SBastian Köcher 	.fast_io	= true,
2699aec89f78SBastian Köcher };
2700aec89f78SBastian Köcher 
2701aec89f78SBastian Köcher static const struct qcom_cc_desc gcc_msm8994_desc = {
2702aec89f78SBastian Köcher 	.config = &gcc_msm8994_regmap_config,
2703aec89f78SBastian Köcher 	.clks = gcc_msm8994_clocks,
2704aec89f78SBastian Köcher 	.num_clks = ARRAY_SIZE(gcc_msm8994_clocks),
27058c18b41bSKonrad Dybcio 	.resets = gcc_msm8994_resets,
27068c18b41bSKonrad Dybcio 	.num_resets = ARRAY_SIZE(gcc_msm8994_resets),
27078c18b41bSKonrad Dybcio 	.gdscs = gcc_msm8994_gdscs,
27088c18b41bSKonrad Dybcio 	.num_gdscs = ARRAY_SIZE(gcc_msm8994_gdscs),
2709aec89f78SBastian Köcher };
2710aec89f78SBastian Köcher 
2711aec89f78SBastian Köcher static const struct of_device_id gcc_msm8994_match_table[] = {
2712aec89f78SBastian Köcher 	{ .compatible = "qcom,gcc-msm8994" },
2713aec89f78SBastian Köcher 	{}
2714aec89f78SBastian Köcher };
2715aec89f78SBastian Köcher MODULE_DEVICE_TABLE(of, gcc_msm8994_match_table);
2716aec89f78SBastian Köcher 
2717aec89f78SBastian Köcher static int gcc_msm8994_probe(struct platform_device *pdev)
2718aec89f78SBastian Köcher {
2719aec89f78SBastian Köcher 	return qcom_cc_probe(pdev, &gcc_msm8994_desc);
2720aec89f78SBastian Köcher }
2721aec89f78SBastian Köcher 
2722aec89f78SBastian Köcher static struct platform_driver gcc_msm8994_driver = {
2723aec89f78SBastian Köcher 	.probe		= gcc_msm8994_probe,
2724aec89f78SBastian Köcher 	.driver		= {
2725aec89f78SBastian Köcher 		.name	= "gcc-msm8994",
2726aec89f78SBastian Köcher 		.of_match_table = gcc_msm8994_match_table,
2727aec89f78SBastian Köcher 	},
2728aec89f78SBastian Köcher };
2729aec89f78SBastian Köcher 
2730aec89f78SBastian Köcher static int __init gcc_msm8994_init(void)
2731aec89f78SBastian Köcher {
2732aec89f78SBastian Köcher 	return platform_driver_register(&gcc_msm8994_driver);
2733aec89f78SBastian Köcher }
2734aec89f78SBastian Köcher core_initcall(gcc_msm8994_init);
2735aec89f78SBastian Köcher 
2736aec89f78SBastian Köcher static void __exit gcc_msm8994_exit(void)
2737aec89f78SBastian Köcher {
2738aec89f78SBastian Köcher 	platform_driver_unregister(&gcc_msm8994_driver);
2739aec89f78SBastian Köcher }
2740aec89f78SBastian Köcher module_exit(gcc_msm8994_exit);
2741aec89f78SBastian Köcher 
2742aec89f78SBastian Köcher MODULE_DESCRIPTION("Qualcomm GCC MSM8994 Driver");
2743aec89f78SBastian Köcher MODULE_LICENSE("GPL v2");
2744aec89f78SBastian Köcher MODULE_ALIAS("platform:gcc-msm8994");
2745