xref: /openbmc/linux/drivers/clk/qcom/gcc-msm8994.c (revision 71021db1c532c2545ae53b9ee85b37b7154f51d4)
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 
5d7a49c8dSVinod Koul #include <linux/clk-provider.h>
6aec89f78SBastian Köcher #include <linux/kernel.h>
7aec89f78SBastian Köcher #include <linux/init.h>
8aec89f78SBastian Köcher #include <linux/err.h>
9aec89f78SBastian Köcher #include <linux/ctype.h>
10aec89f78SBastian Köcher #include <linux/io.h>
11aec89f78SBastian Köcher #include <linux/of.h>
12c09b8023SKonrad Dybcio #include <linux/of_device.h>
13aec89f78SBastian Köcher #include <linux/platform_device.h>
14aec89f78SBastian Köcher #include <linux/module.h>
15aec89f78SBastian Köcher #include <linux/regmap.h>
16aec89f78SBastian Köcher 
17aec89f78SBastian Köcher #include <dt-bindings/clock/qcom,gcc-msm8994.h>
18aec89f78SBastian Köcher 
19aec89f78SBastian Köcher #include "common.h"
20aec89f78SBastian Köcher #include "clk-regmap.h"
21aec89f78SBastian Köcher #include "clk-alpha-pll.h"
22aec89f78SBastian Köcher #include "clk-rcg.h"
23aec89f78SBastian Köcher #include "clk-branch.h"
24aec89f78SBastian Köcher #include "reset.h"
258c18b41bSKonrad Dybcio #include "gdsc.h"
26aec89f78SBastian Köcher 
27aec89f78SBastian Köcher enum {
28aec89f78SBastian Köcher 	P_XO,
29aec89f78SBastian Köcher 	P_GPLL0,
30aec89f78SBastian Köcher 	P_GPLL4,
31aec89f78SBastian Köcher };
32aec89f78SBastian Köcher 
33aec89f78SBastian Köcher static struct clk_alpha_pll gpll0_early = {
340519d1d0SKonrad Dybcio 	.offset = 0,
3528d3f06eSAbhishek Sahu 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
36aec89f78SBastian Köcher 	.clkr = {
37aec89f78SBastian Köcher 		.enable_reg = 0x1480,
38aec89f78SBastian Köcher 		.enable_mask = BIT(0),
390519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
40aec89f78SBastian Köcher 			.name = "gpll0_early",
410519d1d0SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
420519d1d0SKonrad Dybcio 				.fw_name = "xo",
430519d1d0SKonrad Dybcio 			},
44aec89f78SBastian Köcher 			.num_parents = 1,
45aec89f78SBastian Köcher 			.ops = &clk_alpha_pll_ops,
46aec89f78SBastian Köcher 		},
47aec89f78SBastian Köcher 	},
48aec89f78SBastian Köcher };
49aec89f78SBastian Köcher 
50aec89f78SBastian Köcher static struct clk_alpha_pll_postdiv gpll0 = {
510519d1d0SKonrad Dybcio 	.offset = 0,
5228d3f06eSAbhishek Sahu 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
530519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
54aec89f78SBastian Köcher 		.name = "gpll0",
55aec89f78SBastian Köcher 		.parent_names = (const char *[]) { "gpll0_early" },
56aec89f78SBastian Köcher 		.num_parents = 1,
57aec89f78SBastian Köcher 		.ops = &clk_alpha_pll_postdiv_ops,
58aec89f78SBastian Köcher 	},
59aec89f78SBastian Köcher };
60aec89f78SBastian Köcher 
61aec89f78SBastian Köcher static struct clk_alpha_pll gpll4_early = {
62aec89f78SBastian Köcher 	.offset = 0x1dc0,
6328d3f06eSAbhishek Sahu 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
64aec89f78SBastian Köcher 	.clkr = {
65aec89f78SBastian Köcher 		.enable_reg = 0x1480,
66aec89f78SBastian Köcher 		.enable_mask = BIT(4),
670519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
68aec89f78SBastian Köcher 			.name = "gpll4_early",
690519d1d0SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
700519d1d0SKonrad Dybcio 				.fw_name = "xo",
710519d1d0SKonrad Dybcio 			},
72aec89f78SBastian Köcher 			.num_parents = 1,
73aec89f78SBastian Köcher 			.ops = &clk_alpha_pll_ops,
74aec89f78SBastian Köcher 		},
75aec89f78SBastian Köcher 	},
76aec89f78SBastian Köcher };
77aec89f78SBastian Köcher 
78aec89f78SBastian Köcher static struct clk_alpha_pll_postdiv gpll4 = {
79aec89f78SBastian Köcher 	.offset = 0x1dc0,
80*71021db1SKonrad Dybcio 	.width = 4,
8128d3f06eSAbhishek Sahu 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
820519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
83aec89f78SBastian Köcher 		.name = "gpll4",
84aec89f78SBastian Köcher 		.parent_names = (const char *[]) { "gpll4_early" },
85aec89f78SBastian Köcher 		.num_parents = 1,
86aec89f78SBastian Köcher 		.ops = &clk_alpha_pll_postdiv_ops,
87aec89f78SBastian Köcher 	},
88aec89f78SBastian Köcher };
89aec89f78SBastian Köcher 
900519d1d0SKonrad Dybcio static const struct parent_map gcc_xo_gpll0_map[] = {
910519d1d0SKonrad Dybcio 	{ P_XO, 0 },
920519d1d0SKonrad Dybcio 	{ P_GPLL0, 1 },
930519d1d0SKonrad Dybcio };
940519d1d0SKonrad Dybcio 
950519d1d0SKonrad Dybcio static const struct clk_parent_data gcc_xo_gpll0[] = {
960519d1d0SKonrad Dybcio 	{ .fw_name = "xo" },
970519d1d0SKonrad Dybcio 	{ .hw = &gpll0.clkr.hw },
980519d1d0SKonrad Dybcio };
990519d1d0SKonrad Dybcio 
1000519d1d0SKonrad Dybcio static const struct parent_map gcc_xo_gpll0_gpll4_map[] = {
1010519d1d0SKonrad Dybcio 	{ P_XO, 0 },
1020519d1d0SKonrad Dybcio 	{ P_GPLL0, 1 },
1030519d1d0SKonrad Dybcio 	{ P_GPLL4, 5 },
1040519d1d0SKonrad Dybcio };
1050519d1d0SKonrad Dybcio 
1060519d1d0SKonrad Dybcio static const struct clk_parent_data gcc_xo_gpll0_gpll4[] = {
1070519d1d0SKonrad Dybcio 	{ .fw_name = "xo" },
1080519d1d0SKonrad Dybcio 	{ .hw = &gpll0.clkr.hw },
1090519d1d0SKonrad Dybcio 	{ .hw = &gpll4.clkr.hw },
1100519d1d0SKonrad Dybcio };
1110519d1d0SKonrad Dybcio 
11274a33facSKonrad Dybcio static struct clk_rcg2 system_noc_clk_src = {
11374a33facSKonrad Dybcio 	.cmd_rcgr = 0x0120,
11474a33facSKonrad Dybcio 	.hid_width = 5,
11574a33facSKonrad Dybcio 	.parent_map = gcc_xo_gpll0_map,
11674a33facSKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
11774a33facSKonrad Dybcio 		.name = "system_noc_clk_src",
11874a33facSKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
11974a33facSKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
12074a33facSKonrad Dybcio 		.ops = &clk_rcg2_ops,
12174a33facSKonrad Dybcio 	},
12274a33facSKonrad Dybcio };
12374a33facSKonrad Dybcio 
12474a33facSKonrad Dybcio static struct clk_rcg2 config_noc_clk_src = {
12574a33facSKonrad Dybcio 	.cmd_rcgr = 0x0150,
12674a33facSKonrad Dybcio 	.hid_width = 5,
12774a33facSKonrad Dybcio 	.parent_map = gcc_xo_gpll0_map,
12874a33facSKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
12974a33facSKonrad Dybcio 		.name = "config_noc_clk_src",
13074a33facSKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
13174a33facSKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
13274a33facSKonrad Dybcio 		.ops = &clk_rcg2_ops,
13374a33facSKonrad Dybcio 	},
13474a33facSKonrad Dybcio };
13574a33facSKonrad Dybcio 
13674a33facSKonrad Dybcio static struct clk_rcg2 periph_noc_clk_src = {
13774a33facSKonrad Dybcio 	.cmd_rcgr = 0x0190,
13874a33facSKonrad Dybcio 	.hid_width = 5,
13974a33facSKonrad Dybcio 	.parent_map = gcc_xo_gpll0_map,
14074a33facSKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
14174a33facSKonrad Dybcio 		.name = "periph_noc_clk_src",
14274a33facSKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
14374a33facSKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
14474a33facSKonrad Dybcio 		.ops = &clk_rcg2_ops,
14574a33facSKonrad Dybcio 	},
14674a33facSKonrad Dybcio };
14774a33facSKonrad Dybcio 
148aec89f78SBastian Köcher static struct freq_tbl ftbl_ufs_axi_clk_src[] = {
149aec89f78SBastian Köcher 	F(50000000, P_GPLL0, 12, 0, 0),
150aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
151aec89f78SBastian Köcher 	F(150000000, P_GPLL0, 4, 0, 0),
152aec89f78SBastian Köcher 	F(171430000, P_GPLL0, 3.5, 0, 0),
153aec89f78SBastian Köcher 	F(200000000, P_GPLL0, 3, 0, 0),
154aec89f78SBastian Köcher 	F(240000000, P_GPLL0, 2.5, 0, 0),
155aec89f78SBastian Köcher 	{ }
156aec89f78SBastian Köcher };
157aec89f78SBastian Köcher 
158aec89f78SBastian Köcher static struct clk_rcg2 ufs_axi_clk_src = {
159aec89f78SBastian Köcher 	.cmd_rcgr = 0x1d68,
160aec89f78SBastian Köcher 	.mnd_width = 8,
161aec89f78SBastian Köcher 	.hid_width = 5,
162aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
163aec89f78SBastian Köcher 	.freq_tbl = ftbl_ufs_axi_clk_src,
1640519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
165aec89f78SBastian Köcher 		.name = "ufs_axi_clk_src",
1660519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
167eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
168aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
169aec89f78SBastian Köcher 	},
170aec89f78SBastian Köcher };
171aec89f78SBastian Köcher 
172aec89f78SBastian Köcher static struct freq_tbl ftbl_usb30_master_clk_src[] = {
173aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
174aec89f78SBastian Köcher 	F(125000000, P_GPLL0, 1, 5, 24),
175aec89f78SBastian Köcher 	{ }
176aec89f78SBastian Köcher };
177aec89f78SBastian Köcher 
178aec89f78SBastian Köcher static struct clk_rcg2 usb30_master_clk_src = {
179aec89f78SBastian Köcher 	.cmd_rcgr = 0x03d4,
180aec89f78SBastian Köcher 	.mnd_width = 8,
181aec89f78SBastian Köcher 	.hid_width = 5,
182aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
183aec89f78SBastian Köcher 	.freq_tbl = ftbl_usb30_master_clk_src,
1840519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
185aec89f78SBastian Köcher 		.name = "usb30_master_clk_src",
1860519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
187eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
188aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
189aec89f78SBastian Köcher 	},
190aec89f78SBastian Köcher };
191aec89f78SBastian Köcher 
192aec89f78SBastian Köcher static struct freq_tbl ftbl_blsp_i2c_apps_clk_src[] = {
193aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
194aec89f78SBastian Köcher 	F(50000000, P_GPLL0, 12, 0, 0),
195aec89f78SBastian Köcher 	{ }
196aec89f78SBastian Köcher };
197aec89f78SBastian Köcher 
198aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = {
199aec89f78SBastian Köcher 	.cmd_rcgr = 0x0660,
200aec89f78SBastian Köcher 	.hid_width = 5,
201aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
202aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
2030519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
204aec89f78SBastian Köcher 		.name = "blsp1_qup1_i2c_apps_clk_src",
2050519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
206eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
207aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
208aec89f78SBastian Köcher 	},
209aec89f78SBastian Köcher };
210aec89f78SBastian Köcher 
21180863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup1_spi_apps_clk_src[] = {
212aec89f78SBastian Köcher 	F(960000, P_XO, 10, 1, 2),
213aec89f78SBastian Köcher 	F(4800000, P_XO, 4, 0, 0),
214aec89f78SBastian Köcher 	F(9600000, P_XO, 2, 0, 0),
215aec89f78SBastian Köcher 	F(15000000, P_GPLL0, 10, 1, 4),
216aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
217aec89f78SBastian Köcher 	F(24000000, P_GPLL0, 12.5, 1, 2),
218aec89f78SBastian Köcher 	F(25000000, P_GPLL0, 12, 1, 2),
219aec89f78SBastian Köcher 	F(48000000, P_GPLL0, 12.5, 0, 0),
220aec89f78SBastian Köcher 	F(50000000, P_GPLL0, 12, 0, 0),
221aec89f78SBastian Köcher 	{ }
222aec89f78SBastian Köcher };
223aec89f78SBastian Köcher 
224c09b8023SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup_spi_apps_clk_src_8992[] = {
225c09b8023SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
226c09b8023SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
227c09b8023SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
228c09b8023SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
229c09b8023SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
230c09b8023SKonrad Dybcio 	F(25000000, P_GPLL0, 12, 1, 2),
231c09b8023SKonrad Dybcio 	F(50000000, P_GPLL0, 12, 0, 0),
232c09b8023SKonrad Dybcio 	{ }
233c09b8023SKonrad Dybcio };
234c09b8023SKonrad Dybcio 
235aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = {
236aec89f78SBastian Köcher 	.cmd_rcgr = 0x064c,
237aec89f78SBastian Köcher 	.mnd_width = 8,
238aec89f78SBastian Köcher 	.hid_width = 5,
239aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
24080863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp1_qup1_spi_apps_clk_src,
2410519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
242aec89f78SBastian Köcher 		.name = "blsp1_qup1_spi_apps_clk_src",
2430519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
244eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
245aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
246aec89f78SBastian Köcher 	},
247aec89f78SBastian Köcher };
248aec89f78SBastian Köcher 
249aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = {
250aec89f78SBastian Köcher 	.cmd_rcgr = 0x06e0,
251aec89f78SBastian Köcher 	.hid_width = 5,
252aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
253aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
2540519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
255aec89f78SBastian Köcher 		.name = "blsp1_qup2_i2c_apps_clk_src",
2560519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
257eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
258aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
259aec89f78SBastian Köcher 	},
260aec89f78SBastian Köcher };
261aec89f78SBastian Köcher 
26280863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup2_spi_apps_clk_src[] = {
26380863521SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
26480863521SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
26580863521SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
26680863521SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
26780863521SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
26880863521SKonrad Dybcio 	F(24000000, P_GPLL0, 12.5, 1, 2),
26980863521SKonrad Dybcio 	F(25000000, P_GPLL0, 12, 1, 2),
27080863521SKonrad Dybcio 	F(42860000, P_GPLL0, 14, 0, 0),
27180863521SKonrad Dybcio 	F(46150000, P_GPLL0, 13, 0, 0),
27280863521SKonrad Dybcio 	{ }
27380863521SKonrad Dybcio };
27480863521SKonrad Dybcio 
275aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = {
276aec89f78SBastian Köcher 	.cmd_rcgr = 0x06cc,
277aec89f78SBastian Köcher 	.mnd_width = 8,
278aec89f78SBastian Köcher 	.hid_width = 5,
279aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
28080863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp1_qup2_spi_apps_clk_src,
2810519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
282aec89f78SBastian Köcher 		.name = "blsp1_qup2_spi_apps_clk_src",
2830519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
284eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
285aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
286aec89f78SBastian Köcher 	},
287aec89f78SBastian Köcher };
288aec89f78SBastian Köcher 
289aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = {
290aec89f78SBastian Köcher 	.cmd_rcgr = 0x0760,
291aec89f78SBastian Köcher 	.hid_width = 5,
292aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
293aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
2940519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
295aec89f78SBastian Köcher 		.name = "blsp1_qup3_i2c_apps_clk_src",
2960519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
297eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
298aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
299aec89f78SBastian Köcher 	},
300aec89f78SBastian Köcher };
301aec89f78SBastian Köcher 
30280863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup3_4_spi_apps_clk_src[] = {
30380863521SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
30480863521SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
30580863521SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
30680863521SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
30780863521SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
30880863521SKonrad Dybcio 	F(24000000, P_GPLL0, 12.5, 1, 2),
30980863521SKonrad Dybcio 	F(25000000, P_GPLL0, 12, 1, 2),
31080863521SKonrad Dybcio 	F(42860000, P_GPLL0, 14, 0, 0),
31180863521SKonrad Dybcio 	F(44440000, P_GPLL0, 13.5, 0, 0),
31280863521SKonrad Dybcio 	{ }
31380863521SKonrad Dybcio };
31480863521SKonrad Dybcio 
315aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = {
316aec89f78SBastian Köcher 	.cmd_rcgr = 0x074c,
317aec89f78SBastian Köcher 	.mnd_width = 8,
318aec89f78SBastian Köcher 	.hid_width = 5,
319aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
32080863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp1_qup3_4_spi_apps_clk_src,
3210519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
322aec89f78SBastian Köcher 		.name = "blsp1_qup3_spi_apps_clk_src",
3230519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
324eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
325aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
326aec89f78SBastian Köcher 	},
327aec89f78SBastian Köcher };
328aec89f78SBastian Köcher 
329aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = {
330aec89f78SBastian Köcher 	.cmd_rcgr = 0x07e0,
331aec89f78SBastian Köcher 	.hid_width = 5,
332aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
333aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
3340519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
335aec89f78SBastian Köcher 		.name = "blsp1_qup4_i2c_apps_clk_src",
3360519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
337eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
338aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
339aec89f78SBastian Köcher 	},
340aec89f78SBastian Köcher };
341aec89f78SBastian Köcher 
342aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = {
343aec89f78SBastian Köcher 	.cmd_rcgr = 0x07cc,
344aec89f78SBastian Köcher 	.mnd_width = 8,
345aec89f78SBastian Köcher 	.hid_width = 5,
346aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
34780863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp1_qup3_4_spi_apps_clk_src,
3480519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
349aec89f78SBastian Köcher 		.name = "blsp1_qup4_spi_apps_clk_src",
3500519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
351eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
352aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
353aec89f78SBastian Köcher 	},
354aec89f78SBastian Köcher };
355aec89f78SBastian Köcher 
356aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = {
357aec89f78SBastian Köcher 	.cmd_rcgr = 0x0860,
358aec89f78SBastian Köcher 	.hid_width = 5,
359aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
360aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
3610519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
362aec89f78SBastian Köcher 		.name = "blsp1_qup5_i2c_apps_clk_src",
3630519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
364eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
365aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
366aec89f78SBastian Köcher 	},
367aec89f78SBastian Köcher };
368aec89f78SBastian Köcher 
36980863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup5_spi_apps_clk_src[] = {
37080863521SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
37180863521SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
37280863521SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
37380863521SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
37480863521SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
37580863521SKonrad Dybcio 	F(24000000, P_GPLL0, 12.5, 1, 2),
37680863521SKonrad Dybcio 	F(25000000, P_GPLL0, 12, 1, 2),
37780863521SKonrad Dybcio 	F(40000000, P_GPLL0, 15, 0, 0),
37880863521SKonrad Dybcio 	F(42860000, P_GPLL0, 14, 0, 0),
37980863521SKonrad Dybcio 	{ }
38080863521SKonrad Dybcio };
38180863521SKonrad Dybcio 
382aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = {
383aec89f78SBastian Köcher 	.cmd_rcgr = 0x084c,
384aec89f78SBastian Köcher 	.mnd_width = 8,
385aec89f78SBastian Köcher 	.hid_width = 5,
386aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
38780863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp1_qup5_spi_apps_clk_src,
3880519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
389aec89f78SBastian Köcher 		.name = "blsp1_qup5_spi_apps_clk_src",
3900519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
391eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
392aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
393aec89f78SBastian Köcher 	},
394aec89f78SBastian Köcher };
395aec89f78SBastian Köcher 
396aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = {
397aec89f78SBastian Köcher 	.cmd_rcgr = 0x08e0,
398aec89f78SBastian Köcher 	.hid_width = 5,
399aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
400aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
4010519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
402aec89f78SBastian Köcher 		.name = "blsp1_qup6_i2c_apps_clk_src",
4030519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
404eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
405aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
406aec89f78SBastian Köcher 	},
407aec89f78SBastian Köcher };
408aec89f78SBastian Köcher 
40980863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup6_spi_apps_clk_src[] = {
41080863521SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
41180863521SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
41280863521SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
41380863521SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
41480863521SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
41580863521SKonrad Dybcio 	F(24000000, P_GPLL0, 12.5, 1, 2),
41680863521SKonrad Dybcio 	F(27906976, P_GPLL0, 1, 2, 43),
41780863521SKonrad Dybcio 	F(41380000, P_GPLL0, 15, 0, 0),
41880863521SKonrad Dybcio 	F(42860000, P_GPLL0, 14, 0, 0),
41980863521SKonrad Dybcio 	{ }
42080863521SKonrad Dybcio };
42180863521SKonrad Dybcio 
422aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = {
423aec89f78SBastian Köcher 	.cmd_rcgr = 0x08cc,
424aec89f78SBastian Köcher 	.mnd_width = 8,
425aec89f78SBastian Köcher 	.hid_width = 5,
426aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
42780863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp1_qup6_spi_apps_clk_src,
4280519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
429aec89f78SBastian Köcher 		.name = "blsp1_qup6_spi_apps_clk_src",
4300519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
431eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
432aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
433aec89f78SBastian Köcher 	},
434aec89f78SBastian Köcher };
435aec89f78SBastian Köcher 
436aec89f78SBastian Köcher static struct freq_tbl ftbl_blsp_uart_apps_clk_src[] = {
437aec89f78SBastian Köcher 	F(3686400, P_GPLL0, 1, 96, 15625),
438aec89f78SBastian Köcher 	F(7372800, P_GPLL0, 1, 192, 15625),
439aec89f78SBastian Köcher 	F(14745600, P_GPLL0, 1, 384, 15625),
440aec89f78SBastian Köcher 	F(16000000, P_GPLL0, 5, 2, 15),
441aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
442aec89f78SBastian Köcher 	F(24000000, P_GPLL0, 5, 1, 5),
443aec89f78SBastian Köcher 	F(32000000, P_GPLL0, 1, 4, 75),
444aec89f78SBastian Köcher 	F(40000000, P_GPLL0, 15, 0, 0),
445aec89f78SBastian Köcher 	F(46400000, P_GPLL0, 1, 29, 375),
446aec89f78SBastian Köcher 	F(48000000, P_GPLL0, 12.5, 0, 0),
447aec89f78SBastian Köcher 	F(51200000, P_GPLL0, 1, 32, 375),
448aec89f78SBastian Köcher 	F(56000000, P_GPLL0, 1, 7, 75),
449aec89f78SBastian Köcher 	F(58982400, P_GPLL0, 1, 1536, 15625),
450aec89f78SBastian Köcher 	F(60000000, P_GPLL0, 10, 0, 0),
451aec89f78SBastian Köcher 	F(63160000, P_GPLL0, 9.5, 0, 0),
452aec89f78SBastian Köcher 	{ }
453aec89f78SBastian Köcher };
454aec89f78SBastian Köcher 
455aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart1_apps_clk_src = {
456aec89f78SBastian Köcher 	.cmd_rcgr = 0x068c,
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_uart1_apps_clk_src",
4630519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
464eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
465aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
466aec89f78SBastian Köcher 	},
467aec89f78SBastian Köcher };
468aec89f78SBastian Köcher 
469aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart2_apps_clk_src = {
470aec89f78SBastian Köcher 	.cmd_rcgr = 0x070c,
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_uart2_apps_clk_src",
4770519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
478eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
479aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
480aec89f78SBastian Köcher 	},
481aec89f78SBastian Köcher };
482aec89f78SBastian Köcher 
483aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart3_apps_clk_src = {
484aec89f78SBastian Köcher 	.cmd_rcgr = 0x078c,
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_uart3_apps_clk_src",
4910519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
492eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
493aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
494aec89f78SBastian Köcher 	},
495aec89f78SBastian Köcher };
496aec89f78SBastian Köcher 
497aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart4_apps_clk_src = {
498aec89f78SBastian Köcher 	.cmd_rcgr = 0x080c,
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_uart4_apps_clk_src",
5050519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
506eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
507aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
508aec89f78SBastian Köcher 	},
509aec89f78SBastian Köcher };
510aec89f78SBastian Köcher 
511aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart5_apps_clk_src = {
512aec89f78SBastian Köcher 	.cmd_rcgr = 0x088c,
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_uart5_apps_clk_src",
5190519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
520eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
521aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
522aec89f78SBastian Köcher 	},
523aec89f78SBastian Köcher };
524aec89f78SBastian Köcher 
525aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart6_apps_clk_src = {
526aec89f78SBastian Köcher 	.cmd_rcgr = 0x090c,
527aec89f78SBastian Köcher 	.mnd_width = 16,
528aec89f78SBastian Köcher 	.hid_width = 5,
529aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
530aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
5310519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
532aec89f78SBastian Köcher 		.name = "blsp1_uart6_apps_clk_src",
5330519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
534eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
535aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
536aec89f78SBastian Köcher 	},
537aec89f78SBastian Köcher };
538aec89f78SBastian Köcher 
539aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup1_i2c_apps_clk_src = {
540aec89f78SBastian Köcher 	.cmd_rcgr = 0x09a0,
541aec89f78SBastian Köcher 	.hid_width = 5,
542aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
543aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
5440519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
545aec89f78SBastian Köcher 		.name = "blsp2_qup1_i2c_apps_clk_src",
5460519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
547eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
548aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
549aec89f78SBastian Köcher 	},
550aec89f78SBastian Köcher };
551aec89f78SBastian Köcher 
55280863521SKonrad Dybcio static struct freq_tbl ftbl_blsp2_qup1_2_spi_apps_clk_src[] = {
55380863521SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
55480863521SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
55580863521SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
55680863521SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
55780863521SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
55880863521SKonrad Dybcio 	F(24000000, P_GPLL0, 12.5, 1, 2),
55980863521SKonrad Dybcio 	F(25000000, P_GPLL0, 12, 1, 2),
56080863521SKonrad Dybcio 	F(42860000, P_GPLL0, 14, 0, 0),
56180863521SKonrad Dybcio 	F(44440000, P_GPLL0, 13.5, 0, 0),
56280863521SKonrad Dybcio 	{ }
56380863521SKonrad Dybcio };
56480863521SKonrad Dybcio 
565aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup1_spi_apps_clk_src = {
566aec89f78SBastian Köcher 	.cmd_rcgr = 0x098c,
567aec89f78SBastian Köcher 	.mnd_width = 8,
568aec89f78SBastian Köcher 	.hid_width = 5,
569aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
57080863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp2_qup1_2_spi_apps_clk_src,
5710519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
572aec89f78SBastian Köcher 		.name = "blsp2_qup1_spi_apps_clk_src",
5730519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
574eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
575aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
576aec89f78SBastian Köcher 	},
577aec89f78SBastian Köcher };
578aec89f78SBastian Köcher 
579aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup2_i2c_apps_clk_src = {
580aec89f78SBastian Köcher 	.cmd_rcgr = 0x0a20,
581aec89f78SBastian Köcher 	.hid_width = 5,
582aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
583aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
5840519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
585aec89f78SBastian Köcher 		.name = "blsp2_qup2_i2c_apps_clk_src",
5860519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
587eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
588aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
589aec89f78SBastian Köcher 	},
590aec89f78SBastian Köcher };
591aec89f78SBastian Köcher 
592aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup2_spi_apps_clk_src = {
593aec89f78SBastian Köcher 	.cmd_rcgr = 0x0a0c,
594aec89f78SBastian Köcher 	.mnd_width = 8,
595aec89f78SBastian Köcher 	.hid_width = 5,
596aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
59780863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp2_qup1_2_spi_apps_clk_src,
5980519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
599aec89f78SBastian Köcher 		.name = "blsp2_qup2_spi_apps_clk_src",
6000519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
601eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
602aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
603aec89f78SBastian Köcher 	},
604aec89f78SBastian Köcher };
605aec89f78SBastian Köcher 
60680863521SKonrad Dybcio static struct freq_tbl ftbl_blsp2_qup3_4_spi_apps_clk_src[] = {
60780863521SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
60880863521SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
60980863521SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
61080863521SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
61180863521SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
61280863521SKonrad Dybcio 	F(24000000, P_GPLL0, 12.5, 1, 2),
61380863521SKonrad Dybcio 	F(25000000, P_GPLL0, 12, 1, 2),
61480863521SKonrad Dybcio 	F(42860000, P_GPLL0, 14, 0, 0),
61580863521SKonrad Dybcio 	F(48000000, P_GPLL0, 12.5, 0, 0),
61680863521SKonrad Dybcio 	{ }
61780863521SKonrad Dybcio };
61880863521SKonrad Dybcio 
619aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup3_i2c_apps_clk_src = {
620aec89f78SBastian Köcher 	.cmd_rcgr = 0x0aa0,
621aec89f78SBastian Köcher 	.hid_width = 5,
622aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
623aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
6240519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
625aec89f78SBastian Köcher 		.name = "blsp2_qup3_i2c_apps_clk_src",
6260519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
627eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
628aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
629aec89f78SBastian Köcher 	},
630aec89f78SBastian Köcher };
631aec89f78SBastian Köcher 
632aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup3_spi_apps_clk_src = {
633aec89f78SBastian Köcher 	.cmd_rcgr = 0x0a8c,
634aec89f78SBastian Köcher 	.mnd_width = 8,
635aec89f78SBastian Köcher 	.hid_width = 5,
636aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
63780863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp2_qup3_4_spi_apps_clk_src,
6380519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
639aec89f78SBastian Köcher 		.name = "blsp2_qup3_spi_apps_clk_src",
6400519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
641eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
642aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
643aec89f78SBastian Köcher 	},
644aec89f78SBastian Köcher };
645aec89f78SBastian Köcher 
646aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup4_i2c_apps_clk_src = {
647aec89f78SBastian Köcher 	.cmd_rcgr = 0x0b20,
648aec89f78SBastian Köcher 	.hid_width = 5,
649aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
650aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
6510519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
652aec89f78SBastian Köcher 		.name = "blsp2_qup4_i2c_apps_clk_src",
6530519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
654eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
655aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
656aec89f78SBastian Köcher 	},
657aec89f78SBastian Köcher };
658aec89f78SBastian Köcher 
659aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup4_spi_apps_clk_src = {
660aec89f78SBastian Köcher 	.cmd_rcgr = 0x0b0c,
661aec89f78SBastian Köcher 	.mnd_width = 8,
662aec89f78SBastian Köcher 	.hid_width = 5,
663aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
66480863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp2_qup3_4_spi_apps_clk_src,
6650519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
666aec89f78SBastian Köcher 		.name = "blsp2_qup4_spi_apps_clk_src",
6670519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
668eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
669aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
670aec89f78SBastian Köcher 	},
671aec89f78SBastian Köcher };
672aec89f78SBastian Köcher 
673aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup5_i2c_apps_clk_src = {
674aec89f78SBastian Köcher 	.cmd_rcgr = 0x0ba0,
675aec89f78SBastian Köcher 	.hid_width = 5,
676aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
677aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
6780519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
679aec89f78SBastian Köcher 		.name = "blsp2_qup5_i2c_apps_clk_src",
6800519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
681eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
682aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
683aec89f78SBastian Köcher 	},
684aec89f78SBastian Köcher };
685aec89f78SBastian Köcher 
686aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup5_spi_apps_clk_src = {
687aec89f78SBastian Köcher 	.cmd_rcgr = 0x0b8c,
688aec89f78SBastian Köcher 	.mnd_width = 8,
689aec89f78SBastian Köcher 	.hid_width = 5,
690aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
69180863521SKonrad Dybcio 	/* BLSP1 QUP1 and BLSP2 QUP5 use the same freqs */
69280863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp1_qup1_spi_apps_clk_src,
6930519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
694aec89f78SBastian Köcher 		.name = "blsp2_qup5_spi_apps_clk_src",
6950519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
696eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
697aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
698aec89f78SBastian Köcher 	},
699aec89f78SBastian Köcher };
700aec89f78SBastian Köcher 
701aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup6_i2c_apps_clk_src = {
702aec89f78SBastian Köcher 	.cmd_rcgr = 0x0c20,
703aec89f78SBastian Köcher 	.hid_width = 5,
704aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
705aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
7060519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
707aec89f78SBastian Köcher 		.name = "blsp2_qup6_i2c_apps_clk_src",
7080519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
709eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
710aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
711aec89f78SBastian Köcher 	},
712aec89f78SBastian Köcher };
713aec89f78SBastian Köcher 
71480863521SKonrad Dybcio static struct freq_tbl ftbl_blsp2_qup6_spi_apps_clk_src[] = {
71580863521SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
71680863521SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
71780863521SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
71880863521SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
71980863521SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
72080863521SKonrad Dybcio 	F(24000000, P_GPLL0, 12.5, 1, 2),
72180863521SKonrad Dybcio 	F(25000000, P_GPLL0, 12, 1, 2),
72280863521SKonrad Dybcio 	F(44440000, P_GPLL0, 13.5, 0, 0),
72380863521SKonrad Dybcio 	F(48000000, P_GPLL0, 12.5, 0, 0),
72480863521SKonrad Dybcio 	{ }
72580863521SKonrad Dybcio };
72680863521SKonrad Dybcio 
727aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup6_spi_apps_clk_src = {
728aec89f78SBastian Köcher 	.cmd_rcgr = 0x0c0c,
729aec89f78SBastian Köcher 	.mnd_width = 8,
730aec89f78SBastian Köcher 	.hid_width = 5,
731aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
73280863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp2_qup6_spi_apps_clk_src,
7330519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
734aec89f78SBastian Köcher 		.name = "blsp2_qup6_spi_apps_clk_src",
7350519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
736eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
737aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
738aec89f78SBastian Köcher 	},
739aec89f78SBastian Köcher };
740aec89f78SBastian Köcher 
741aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart1_apps_clk_src = {
742aec89f78SBastian Köcher 	.cmd_rcgr = 0x09cc,
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_uart1_apps_clk_src",
7490519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
750eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
751aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
752aec89f78SBastian Köcher 	},
753aec89f78SBastian Köcher };
754aec89f78SBastian Köcher 
755aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart2_apps_clk_src = {
756aec89f78SBastian Köcher 	.cmd_rcgr = 0x0a4c,
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_uart2_apps_clk_src",
7630519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
764eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
765aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
766aec89f78SBastian Köcher 	},
767aec89f78SBastian Köcher };
768aec89f78SBastian Köcher 
769aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart3_apps_clk_src = {
770aec89f78SBastian Köcher 	.cmd_rcgr = 0x0acc,
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_uart3_apps_clk_src",
7770519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
778eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
779aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
780aec89f78SBastian Köcher 	},
781aec89f78SBastian Köcher };
782aec89f78SBastian Köcher 
783aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart4_apps_clk_src = {
784aec89f78SBastian Köcher 	.cmd_rcgr = 0x0b4c,
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_uart4_apps_clk_src",
7910519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
792eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
793aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
794aec89f78SBastian Köcher 	},
795aec89f78SBastian Köcher };
796aec89f78SBastian Köcher 
797aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart5_apps_clk_src = {
798aec89f78SBastian Köcher 	.cmd_rcgr = 0x0bcc,
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_uart5_apps_clk_src",
8050519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
806eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
807aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
808aec89f78SBastian Köcher 	},
809aec89f78SBastian Köcher };
810aec89f78SBastian Köcher 
811aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart6_apps_clk_src = {
812aec89f78SBastian Köcher 	.cmd_rcgr = 0x0c4c,
813aec89f78SBastian Köcher 	.mnd_width = 16,
814aec89f78SBastian Köcher 	.hid_width = 5,
815aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
816aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
8170519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
818aec89f78SBastian Köcher 		.name = "blsp2_uart6_apps_clk_src",
8190519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
820eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
821aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
822aec89f78SBastian Köcher 	},
823aec89f78SBastian Köcher };
824aec89f78SBastian Köcher 
825aec89f78SBastian Köcher static struct freq_tbl ftbl_gp1_clk_src[] = {
826aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
827aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
828aec89f78SBastian Köcher 	F(200000000, P_GPLL0, 3, 0, 0),
829aec89f78SBastian Köcher 	{ }
830aec89f78SBastian Köcher };
831aec89f78SBastian Köcher 
832aec89f78SBastian Köcher static struct clk_rcg2 gp1_clk_src = {
833aec89f78SBastian Köcher 	.cmd_rcgr = 0x1904,
834aec89f78SBastian Köcher 	.mnd_width = 8,
835aec89f78SBastian Köcher 	.hid_width = 5,
836aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
837aec89f78SBastian Köcher 	.freq_tbl = ftbl_gp1_clk_src,
8380519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
839aec89f78SBastian Köcher 		.name = "gp1_clk_src",
8400519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
841eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
842aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
843aec89f78SBastian Köcher 	},
844aec89f78SBastian Köcher };
845aec89f78SBastian Köcher 
846aec89f78SBastian Köcher static struct freq_tbl ftbl_gp2_clk_src[] = {
847aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
848aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
849aec89f78SBastian Köcher 	F(200000000, P_GPLL0, 3, 0, 0),
850aec89f78SBastian Köcher 	{ }
851aec89f78SBastian Köcher };
852aec89f78SBastian Köcher 
853aec89f78SBastian Köcher static struct clk_rcg2 gp2_clk_src = {
854aec89f78SBastian Köcher 	.cmd_rcgr = 0x1944,
855aec89f78SBastian Köcher 	.mnd_width = 8,
856aec89f78SBastian Köcher 	.hid_width = 5,
857aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
858aec89f78SBastian Köcher 	.freq_tbl = ftbl_gp2_clk_src,
8590519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
860aec89f78SBastian Köcher 		.name = "gp2_clk_src",
8610519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
862eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
863aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
864aec89f78SBastian Köcher 	},
865aec89f78SBastian Köcher };
866aec89f78SBastian Köcher 
867aec89f78SBastian Köcher static struct freq_tbl ftbl_gp3_clk_src[] = {
868aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
869aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
870aec89f78SBastian Köcher 	F(200000000, P_GPLL0, 3, 0, 0),
871aec89f78SBastian Köcher 	{ }
872aec89f78SBastian Köcher };
873aec89f78SBastian Köcher 
874aec89f78SBastian Köcher static struct clk_rcg2 gp3_clk_src = {
875aec89f78SBastian Köcher 	.cmd_rcgr = 0x1984,
876aec89f78SBastian Köcher 	.mnd_width = 8,
877aec89f78SBastian Köcher 	.hid_width = 5,
878aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
879aec89f78SBastian Köcher 	.freq_tbl = ftbl_gp3_clk_src,
8800519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
881aec89f78SBastian Köcher 		.name = "gp3_clk_src",
8820519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
883eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
884aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
885aec89f78SBastian Köcher 	},
886aec89f78SBastian Köcher };
887aec89f78SBastian Köcher 
888aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_0_aux_clk_src[] = {
889aec89f78SBastian Köcher 	F(1011000, P_XO, 1, 1, 19),
890aec89f78SBastian Köcher 	{ }
891aec89f78SBastian Köcher };
892aec89f78SBastian Köcher 
893aec89f78SBastian Köcher static struct clk_rcg2 pcie_0_aux_clk_src = {
894aec89f78SBastian Köcher 	.cmd_rcgr = 0x1b00,
895aec89f78SBastian Köcher 	.mnd_width = 8,
896aec89f78SBastian Köcher 	.hid_width = 5,
897aec89f78SBastian Köcher 	.freq_tbl = ftbl_pcie_0_aux_clk_src,
8980519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
899aec89f78SBastian Köcher 		.name = "pcie_0_aux_clk_src",
9000519d1d0SKonrad Dybcio 		.parent_data = &(const struct clk_parent_data){
9010519d1d0SKonrad Dybcio 				.fw_name = "xo",
9020519d1d0SKonrad Dybcio 		},
903aec89f78SBastian Köcher 		.num_parents = 1,
904aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
905aec89f78SBastian Köcher 	},
906aec89f78SBastian Köcher };
907aec89f78SBastian Köcher 
908aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_pipe_clk_src[] = {
909aec89f78SBastian Köcher 	F(125000000, P_XO, 1, 0, 0),
910aec89f78SBastian Köcher 	{ }
911aec89f78SBastian Köcher };
912aec89f78SBastian Köcher 
913aec89f78SBastian Köcher static struct clk_rcg2 pcie_0_pipe_clk_src = {
914aec89f78SBastian Köcher 	.cmd_rcgr = 0x1adc,
915aec89f78SBastian Köcher 	.hid_width = 5,
916aec89f78SBastian Köcher 	.freq_tbl = ftbl_pcie_pipe_clk_src,
9170519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
918aec89f78SBastian Köcher 		.name = "pcie_0_pipe_clk_src",
9190519d1d0SKonrad Dybcio 		.parent_data = &(const struct clk_parent_data){
9200519d1d0SKonrad Dybcio 				.fw_name = "xo",
9210519d1d0SKonrad Dybcio 		},
922aec89f78SBastian Köcher 		.num_parents = 1,
923aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
924aec89f78SBastian Köcher 	},
925aec89f78SBastian Köcher };
926aec89f78SBastian Köcher 
927aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_1_aux_clk_src[] = {
928aec89f78SBastian Köcher 	F(1011000, P_XO, 1, 1, 19),
929aec89f78SBastian Köcher 	{ }
930aec89f78SBastian Köcher };
931aec89f78SBastian Köcher 
932aec89f78SBastian Köcher static struct clk_rcg2 pcie_1_aux_clk_src = {
933aec89f78SBastian Köcher 	.cmd_rcgr = 0x1b80,
934aec89f78SBastian Köcher 	.mnd_width = 8,
935aec89f78SBastian Köcher 	.hid_width = 5,
936aec89f78SBastian Köcher 	.freq_tbl = ftbl_pcie_1_aux_clk_src,
9370519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
938aec89f78SBastian Köcher 		.name = "pcie_1_aux_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 clk_rcg2 pcie_1_pipe_clk_src = {
948aec89f78SBastian Köcher 	.cmd_rcgr = 0x1b5c,
949aec89f78SBastian Köcher 	.hid_width = 5,
950aec89f78SBastian Köcher 	.freq_tbl = ftbl_pcie_pipe_clk_src,
9510519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
952aec89f78SBastian Köcher 		.name = "pcie_1_pipe_clk_src",
9530519d1d0SKonrad Dybcio 		.parent_data = &(const struct clk_parent_data){
9540519d1d0SKonrad Dybcio 				.fw_name = "xo",
9550519d1d0SKonrad Dybcio 		},
956aec89f78SBastian Köcher 		.num_parents = 1,
957aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
958aec89f78SBastian Köcher 	},
959aec89f78SBastian Köcher };
960aec89f78SBastian Köcher 
961aec89f78SBastian Köcher static struct freq_tbl ftbl_pdm2_clk_src[] = {
962aec89f78SBastian Köcher 	F(60000000, P_GPLL0, 10, 0, 0),
963aec89f78SBastian Köcher 	{ }
964aec89f78SBastian Köcher };
965aec89f78SBastian Köcher 
966aec89f78SBastian Köcher static struct clk_rcg2 pdm2_clk_src = {
967aec89f78SBastian Köcher 	.cmd_rcgr = 0x0cd0,
968aec89f78SBastian Köcher 	.hid_width = 5,
969aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
970aec89f78SBastian Köcher 	.freq_tbl = ftbl_pdm2_clk_src,
9710519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
972aec89f78SBastian Köcher 		.name = "pdm2_clk_src",
9730519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
974eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
975aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
976aec89f78SBastian Köcher 	},
977aec89f78SBastian Köcher };
978aec89f78SBastian Köcher 
979aec89f78SBastian Köcher static struct freq_tbl ftbl_sdcc1_apps_clk_src[] = {
980aec89f78SBastian Köcher 	F(144000, P_XO, 16, 3, 25),
981aec89f78SBastian Köcher 	F(400000, P_XO, 12, 1, 4),
982aec89f78SBastian Köcher 	F(20000000, P_GPLL0, 15, 1, 2),
983aec89f78SBastian Köcher 	F(25000000, P_GPLL0, 12, 1, 2),
984aec89f78SBastian Köcher 	F(50000000, P_GPLL0, 12, 0, 0),
985aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
986aec89f78SBastian Köcher 	F(192000000, P_GPLL4, 2, 0, 0),
987aec89f78SBastian Köcher 	F(384000000, P_GPLL4, 1, 0, 0),
988aec89f78SBastian Köcher 	{ }
989aec89f78SBastian Köcher };
990aec89f78SBastian Köcher 
991c09b8023SKonrad Dybcio static struct freq_tbl ftbl_sdcc1_apps_clk_src_8992[] = {
992c09b8023SKonrad Dybcio 	F(144000, P_XO, 16, 3, 25),
993c09b8023SKonrad Dybcio 	F(400000, P_XO, 12, 1, 4),
994c09b8023SKonrad Dybcio 	F(20000000, P_GPLL0, 15, 1, 2),
995c09b8023SKonrad Dybcio 	F(25000000, P_GPLL0, 12, 1, 2),
996c09b8023SKonrad Dybcio 	F(50000000, P_GPLL0, 12, 0, 0),
997c09b8023SKonrad Dybcio 	F(100000000, P_GPLL0, 6, 0, 0),
998c09b8023SKonrad Dybcio 	F(172000000, P_GPLL4, 2, 0, 0),
999c09b8023SKonrad Dybcio 	F(344000000, P_GPLL4, 1, 0, 0),
1000c09b8023SKonrad Dybcio 	{ }
1001c09b8023SKonrad Dybcio };
1002c09b8023SKonrad Dybcio 
1003aec89f78SBastian Köcher static struct clk_rcg2 sdcc1_apps_clk_src = {
1004aec89f78SBastian Köcher 	.cmd_rcgr = 0x04d0,
1005aec89f78SBastian Köcher 	.mnd_width = 8,
1006aec89f78SBastian Köcher 	.hid_width = 5,
1007aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_gpll4_map,
1008aec89f78SBastian Köcher 	.freq_tbl = ftbl_sdcc1_apps_clk_src,
10090519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1010aec89f78SBastian Köcher 		.name = "sdcc1_apps_clk_src",
10110519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0_gpll4,
1012eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll4),
10135f5001a9SRajendra Nayak 		.ops = &clk_rcg2_floor_ops,
1014aec89f78SBastian Köcher 	},
1015aec89f78SBastian Köcher };
1016aec89f78SBastian Köcher 
1017aec89f78SBastian Köcher static struct freq_tbl ftbl_sdcc2_4_apps_clk_src[] = {
1018aec89f78SBastian Köcher 	F(144000, P_XO, 16, 3, 25),
1019aec89f78SBastian Köcher 	F(400000, P_XO, 12, 1, 4),
1020aec89f78SBastian Köcher 	F(20000000, P_GPLL0, 15, 1, 2),
1021aec89f78SBastian Köcher 	F(25000000, P_GPLL0, 12, 1, 2),
1022aec89f78SBastian Köcher 	F(50000000, P_GPLL0, 12, 0, 0),
1023aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
1024aec89f78SBastian Köcher 	F(200000000, P_GPLL0, 3, 0, 0),
1025aec89f78SBastian Köcher 	{ }
1026aec89f78SBastian Köcher };
1027aec89f78SBastian Köcher 
1028aec89f78SBastian Köcher static struct clk_rcg2 sdcc2_apps_clk_src = {
1029aec89f78SBastian Köcher 	.cmd_rcgr = 0x0510,
1030aec89f78SBastian Köcher 	.mnd_width = 8,
1031aec89f78SBastian Köcher 	.hid_width = 5,
1032aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
1033aec89f78SBastian Köcher 	.freq_tbl = ftbl_sdcc2_4_apps_clk_src,
10340519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1035aec89f78SBastian Köcher 		.name = "sdcc2_apps_clk_src",
10360519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
1037eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
10385f5001a9SRajendra Nayak 		.ops = &clk_rcg2_floor_ops,
1039aec89f78SBastian Köcher 	},
1040aec89f78SBastian Köcher };
1041aec89f78SBastian Köcher 
1042aec89f78SBastian Köcher static struct clk_rcg2 sdcc3_apps_clk_src = {
1043aec89f78SBastian Köcher 	.cmd_rcgr = 0x0550,
1044aec89f78SBastian Köcher 	.mnd_width = 8,
1045aec89f78SBastian Köcher 	.hid_width = 5,
1046aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
1047aec89f78SBastian Köcher 	.freq_tbl = ftbl_sdcc2_4_apps_clk_src,
10480519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1049aec89f78SBastian Köcher 		.name = "sdcc3_apps_clk_src",
10500519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
1051eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
10525f5001a9SRajendra Nayak 		.ops = &clk_rcg2_floor_ops,
1053aec89f78SBastian Köcher 	},
1054aec89f78SBastian Köcher };
1055aec89f78SBastian Köcher 
1056aec89f78SBastian Köcher static struct clk_rcg2 sdcc4_apps_clk_src = {
1057aec89f78SBastian Köcher 	.cmd_rcgr = 0x0590,
1058aec89f78SBastian Köcher 	.mnd_width = 8,
1059aec89f78SBastian Köcher 	.hid_width = 5,
1060aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
1061aec89f78SBastian Köcher 	.freq_tbl = ftbl_sdcc2_4_apps_clk_src,
10620519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1063aec89f78SBastian Köcher 		.name = "sdcc4_apps_clk_src",
10640519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
1065eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
10665f5001a9SRajendra Nayak 		.ops = &clk_rcg2_floor_ops,
1067aec89f78SBastian Köcher 	},
1068aec89f78SBastian Köcher };
1069aec89f78SBastian Köcher 
1070aec89f78SBastian Köcher static struct freq_tbl ftbl_tsif_ref_clk_src[] = {
1071aec89f78SBastian Köcher 	F(105500, P_XO, 1, 1, 182),
1072aec89f78SBastian Köcher 	{ }
1073aec89f78SBastian Köcher };
1074aec89f78SBastian Köcher 
1075aec89f78SBastian Köcher static struct clk_rcg2 tsif_ref_clk_src = {
1076aec89f78SBastian Köcher 	.cmd_rcgr = 0x0d90,
1077aec89f78SBastian Köcher 	.mnd_width = 8,
1078aec89f78SBastian Köcher 	.hid_width = 5,
1079aec89f78SBastian Köcher 	.freq_tbl = ftbl_tsif_ref_clk_src,
10800519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1081aec89f78SBastian Köcher 		.name = "tsif_ref_clk_src",
10820519d1d0SKonrad Dybcio 		.parent_data = &(const struct clk_parent_data){
10830519d1d0SKonrad Dybcio 				.fw_name = "xo",
10840519d1d0SKonrad Dybcio 		},
1085aec89f78SBastian Köcher 		.num_parents = 1,
1086aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
1087aec89f78SBastian Köcher 	},
1088aec89f78SBastian Köcher };
1089aec89f78SBastian Köcher 
1090aec89f78SBastian Köcher static struct freq_tbl ftbl_usb30_mock_utmi_clk_src[] = {
1091aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
1092aec89f78SBastian Köcher 	F(60000000, P_GPLL0, 10, 0, 0),
1093aec89f78SBastian Köcher 	{ }
1094aec89f78SBastian Köcher };
1095aec89f78SBastian Köcher 
1096aec89f78SBastian Köcher static struct clk_rcg2 usb30_mock_utmi_clk_src = {
1097aec89f78SBastian Köcher 	.cmd_rcgr = 0x03e8,
1098aec89f78SBastian Köcher 	.hid_width = 5,
1099aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
1100aec89f78SBastian Köcher 	.freq_tbl = ftbl_usb30_mock_utmi_clk_src,
11010519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1102aec89f78SBastian Köcher 		.name = "usb30_mock_utmi_clk_src",
11030519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
1104eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
1105aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
1106aec89f78SBastian Köcher 	},
1107aec89f78SBastian Köcher };
1108aec89f78SBastian Köcher 
1109aec89f78SBastian Köcher static struct freq_tbl ftbl_usb3_phy_aux_clk_src[] = {
1110aec89f78SBastian Köcher 	F(1200000, P_XO, 16, 0, 0),
1111aec89f78SBastian Köcher 	{ }
1112aec89f78SBastian Köcher };
1113aec89f78SBastian Köcher 
1114aec89f78SBastian Köcher static struct clk_rcg2 usb3_phy_aux_clk_src = {
1115aec89f78SBastian Köcher 	.cmd_rcgr = 0x1414,
1116aec89f78SBastian Köcher 	.hid_width = 5,
1117aec89f78SBastian Köcher 	.freq_tbl = ftbl_usb3_phy_aux_clk_src,
11180519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1119aec89f78SBastian Köcher 		.name = "usb3_phy_aux_clk_src",
11200519d1d0SKonrad Dybcio 		.parent_data = &(const struct clk_parent_data){
11210519d1d0SKonrad Dybcio 				.fw_name = "xo",
11220519d1d0SKonrad Dybcio 		},
1123aec89f78SBastian Köcher 		.num_parents = 1,
1124aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
1125aec89f78SBastian Köcher 	},
1126aec89f78SBastian Köcher };
1127aec89f78SBastian Köcher 
1128aec89f78SBastian Köcher static struct freq_tbl ftbl_usb_hs_system_clk_src[] = {
1129aec89f78SBastian Köcher 	F(75000000, P_GPLL0, 8, 0, 0),
1130aec89f78SBastian Köcher 	{ }
1131aec89f78SBastian Köcher };
1132aec89f78SBastian Köcher 
1133aec89f78SBastian Köcher static struct clk_rcg2 usb_hs_system_clk_src = {
1134aec89f78SBastian Köcher 	.cmd_rcgr = 0x0490,
1135aec89f78SBastian Köcher 	.hid_width = 5,
1136aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
1137aec89f78SBastian Köcher 	.freq_tbl = ftbl_usb_hs_system_clk_src,
11380519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1139aec89f78SBastian Köcher 		.name = "usb_hs_system_clk_src",
11400519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
1141eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
1142aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
1143aec89f78SBastian Köcher 	},
1144aec89f78SBastian Köcher };
1145aec89f78SBastian Köcher 
1146aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_ahb_clk = {
1147aec89f78SBastian Köcher 	.halt_reg = 0x05c4,
1148aec89f78SBastian Köcher 	.halt_check = BRANCH_HALT_VOTED,
1149aec89f78SBastian Köcher 	.clkr = {
1150aec89f78SBastian Köcher 		.enable_reg = 0x1484,
1151aec89f78SBastian Köcher 		.enable_mask = BIT(17),
11520519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1153aec89f78SBastian Köcher 			.name = "gcc_blsp1_ahb_clk",
115474a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw },
115574a33facSKonrad Dybcio 			.num_parents = 1,
1156aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1157aec89f78SBastian Köcher 		},
1158aec89f78SBastian Köcher 	},
1159aec89f78SBastian Köcher };
1160aec89f78SBastian Köcher 
1161aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = {
1162aec89f78SBastian Köcher 	.halt_reg = 0x0648,
1163aec89f78SBastian Köcher 	.clkr = {
1164aec89f78SBastian Köcher 		.enable_reg = 0x0648,
1165aec89f78SBastian Köcher 		.enable_mask = BIT(0),
11660519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1167aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup1_i2c_apps_clk",
11680519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup1_i2c_apps_clk_src.clkr.hw },
1169aec89f78SBastian Köcher 			.num_parents = 1,
1170aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1171aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1172aec89f78SBastian Köcher 		},
1173aec89f78SBastian Köcher 	},
1174aec89f78SBastian Köcher };
1175aec89f78SBastian Köcher 
1176aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = {
1177aec89f78SBastian Köcher 	.halt_reg = 0x0644,
1178aec89f78SBastian Köcher 	.clkr = {
1179aec89f78SBastian Köcher 		.enable_reg = 0x0644,
1180aec89f78SBastian Köcher 		.enable_mask = BIT(0),
11810519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1182aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup1_spi_apps_clk",
11830519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup1_spi_apps_clk_src.clkr.hw },
1184aec89f78SBastian Köcher 			.num_parents = 1,
1185aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1186aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1187aec89f78SBastian Köcher 		},
1188aec89f78SBastian Köcher 	},
1189aec89f78SBastian Köcher };
1190aec89f78SBastian Köcher 
1191aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = {
1192aec89f78SBastian Köcher 	.halt_reg = 0x06c8,
1193aec89f78SBastian Köcher 	.clkr = {
1194aec89f78SBastian Köcher 		.enable_reg = 0x06c8,
1195aec89f78SBastian Köcher 		.enable_mask = BIT(0),
11960519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1197aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup2_i2c_apps_clk",
11980519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup2_i2c_apps_clk_src.clkr.hw },
1199aec89f78SBastian Köcher 			.num_parents = 1,
1200aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1201aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1202aec89f78SBastian Köcher 		},
1203aec89f78SBastian Köcher 	},
1204aec89f78SBastian Köcher };
1205aec89f78SBastian Köcher 
1206aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = {
1207aec89f78SBastian Köcher 	.halt_reg = 0x06c4,
1208aec89f78SBastian Köcher 	.clkr = {
1209aec89f78SBastian Köcher 		.enable_reg = 0x06c4,
1210aec89f78SBastian Köcher 		.enable_mask = BIT(0),
12110519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1212aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup2_spi_apps_clk",
12130519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup2_spi_apps_clk_src.clkr.hw },
1214aec89f78SBastian Köcher 			.num_parents = 1,
1215aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1216aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1217aec89f78SBastian Köcher 		},
1218aec89f78SBastian Köcher 	},
1219aec89f78SBastian Köcher };
1220aec89f78SBastian Köcher 
1221aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = {
1222aec89f78SBastian Köcher 	.halt_reg = 0x0748,
1223aec89f78SBastian Köcher 	.clkr = {
1224aec89f78SBastian Köcher 		.enable_reg = 0x0748,
1225aec89f78SBastian Köcher 		.enable_mask = BIT(0),
12260519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1227aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup3_i2c_apps_clk",
12280519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup3_i2c_apps_clk_src.clkr.hw },
1229aec89f78SBastian Köcher 			.num_parents = 1,
1230aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1231aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1232aec89f78SBastian Köcher 		},
1233aec89f78SBastian Köcher 	},
1234aec89f78SBastian Köcher };
1235aec89f78SBastian Köcher 
1236aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = {
1237aec89f78SBastian Köcher 	.halt_reg = 0x0744,
1238aec89f78SBastian Köcher 	.clkr = {
1239aec89f78SBastian Köcher 		.enable_reg = 0x0744,
1240aec89f78SBastian Köcher 		.enable_mask = BIT(0),
12410519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1242aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup3_spi_apps_clk",
12430519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup3_spi_apps_clk_src.clkr.hw },
1244aec89f78SBastian Köcher 			.num_parents = 1,
1245aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1246aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1247aec89f78SBastian Köcher 		},
1248aec89f78SBastian Köcher 	},
1249aec89f78SBastian Köcher };
1250aec89f78SBastian Köcher 
1251aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = {
1252aec89f78SBastian Köcher 	.halt_reg = 0x07c8,
1253aec89f78SBastian Köcher 	.clkr = {
1254aec89f78SBastian Köcher 		.enable_reg = 0x07c8,
1255aec89f78SBastian Köcher 		.enable_mask = BIT(0),
12560519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1257aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup4_i2c_apps_clk",
12580519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup4_i2c_apps_clk_src.clkr.hw },
1259aec89f78SBastian Köcher 			.num_parents = 1,
1260aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1261aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1262aec89f78SBastian Köcher 		},
1263aec89f78SBastian Köcher 	},
1264aec89f78SBastian Köcher };
1265aec89f78SBastian Köcher 
1266aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = {
1267aec89f78SBastian Köcher 	.halt_reg = 0x07c4,
1268aec89f78SBastian Köcher 	.clkr = {
1269aec89f78SBastian Köcher 		.enable_reg = 0x07c4,
1270aec89f78SBastian Köcher 		.enable_mask = BIT(0),
12710519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1272aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup4_spi_apps_clk",
12730519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup4_spi_apps_clk_src.clkr.hw },
1274aec89f78SBastian Köcher 			.num_parents = 1,
1275aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1276aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1277aec89f78SBastian Köcher 		},
1278aec89f78SBastian Köcher 	},
1279aec89f78SBastian Köcher };
1280aec89f78SBastian Köcher 
1281aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = {
1282aec89f78SBastian Köcher 	.halt_reg = 0x0848,
1283aec89f78SBastian Köcher 	.clkr = {
1284aec89f78SBastian Köcher 		.enable_reg = 0x0848,
1285aec89f78SBastian Köcher 		.enable_mask = BIT(0),
12860519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1287aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup5_i2c_apps_clk",
12880519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup5_i2c_apps_clk_src.clkr.hw },
1289aec89f78SBastian Köcher 			.num_parents = 1,
1290aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1291aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1292aec89f78SBastian Köcher 		},
1293aec89f78SBastian Köcher 	},
1294aec89f78SBastian Köcher };
1295aec89f78SBastian Köcher 
1296aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = {
1297aec89f78SBastian Köcher 	.halt_reg = 0x0844,
1298aec89f78SBastian Köcher 	.clkr = {
1299aec89f78SBastian Köcher 		.enable_reg = 0x0844,
1300aec89f78SBastian Köcher 		.enable_mask = BIT(0),
13010519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1302aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup5_spi_apps_clk",
13030519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup5_spi_apps_clk_src.clkr.hw },
1304aec89f78SBastian Köcher 			.num_parents = 1,
1305aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1306aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1307aec89f78SBastian Köcher 		},
1308aec89f78SBastian Köcher 	},
1309aec89f78SBastian Köcher };
1310aec89f78SBastian Köcher 
1311aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup6_i2c_apps_clk = {
1312aec89f78SBastian Köcher 	.halt_reg = 0x08c8,
1313aec89f78SBastian Köcher 	.clkr = {
1314aec89f78SBastian Köcher 		.enable_reg = 0x08c8,
1315aec89f78SBastian Köcher 		.enable_mask = BIT(0),
13160519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1317aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup6_i2c_apps_clk",
13180519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup6_i2c_apps_clk_src.clkr.hw },
1319aec89f78SBastian Köcher 			.num_parents = 1,
1320aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1321aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1322aec89f78SBastian Köcher 		},
1323aec89f78SBastian Köcher 	},
1324aec89f78SBastian Köcher };
1325aec89f78SBastian Köcher 
1326aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = {
1327aec89f78SBastian Köcher 	.halt_reg = 0x08c4,
1328aec89f78SBastian Köcher 	.clkr = {
1329aec89f78SBastian Köcher 		.enable_reg = 0x08c4,
1330aec89f78SBastian Köcher 		.enable_mask = BIT(0),
13310519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1332aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup6_spi_apps_clk",
13330519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup6_spi_apps_clk_src.clkr.hw },
1334aec89f78SBastian Köcher 			.num_parents = 1,
1335aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1336aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1337aec89f78SBastian Köcher 		},
1338aec89f78SBastian Köcher 	},
1339aec89f78SBastian Köcher };
1340aec89f78SBastian Köcher 
1341aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart1_apps_clk = {
1342aec89f78SBastian Köcher 	.halt_reg = 0x0684,
1343aec89f78SBastian Köcher 	.clkr = {
1344aec89f78SBastian Köcher 		.enable_reg = 0x0684,
1345aec89f78SBastian Köcher 		.enable_mask = BIT(0),
13460519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1347aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart1_apps_clk",
13480519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_uart1_apps_clk_src.clkr.hw },
1349aec89f78SBastian Köcher 			.num_parents = 1,
1350aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1351aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1352aec89f78SBastian Köcher 		},
1353aec89f78SBastian Köcher 	},
1354aec89f78SBastian Köcher };
1355aec89f78SBastian Köcher 
1356aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart2_apps_clk = {
1357aec89f78SBastian Köcher 	.halt_reg = 0x0704,
1358aec89f78SBastian Köcher 	.clkr = {
1359aec89f78SBastian Köcher 		.enable_reg = 0x0704,
1360aec89f78SBastian Köcher 		.enable_mask = BIT(0),
13610519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1362aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart2_apps_clk",
13630519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_uart2_apps_clk_src.clkr.hw },
1364aec89f78SBastian Köcher 			.num_parents = 1,
1365aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1366aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1367aec89f78SBastian Köcher 		},
1368aec89f78SBastian Köcher 	},
1369aec89f78SBastian Köcher };
1370aec89f78SBastian Köcher 
1371aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart3_apps_clk = {
1372aec89f78SBastian Köcher 	.halt_reg = 0x0784,
1373aec89f78SBastian Köcher 	.clkr = {
1374aec89f78SBastian Köcher 		.enable_reg = 0x0784,
1375aec89f78SBastian Köcher 		.enable_mask = BIT(0),
13760519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1377aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart3_apps_clk",
13780519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_uart3_apps_clk_src.clkr.hw },
1379aec89f78SBastian Köcher 			.num_parents = 1,
1380aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1381aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1382aec89f78SBastian Köcher 		},
1383aec89f78SBastian Köcher 	},
1384aec89f78SBastian Köcher };
1385aec89f78SBastian Köcher 
1386aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart4_apps_clk = {
1387aec89f78SBastian Köcher 	.halt_reg = 0x0804,
1388aec89f78SBastian Köcher 	.clkr = {
1389aec89f78SBastian Köcher 		.enable_reg = 0x0804,
1390aec89f78SBastian Köcher 		.enable_mask = BIT(0),
13910519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1392aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart4_apps_clk",
13930519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_uart4_apps_clk_src.clkr.hw },
1394aec89f78SBastian Köcher 			.num_parents = 1,
1395aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1396aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1397aec89f78SBastian Köcher 		},
1398aec89f78SBastian Köcher 	},
1399aec89f78SBastian Köcher };
1400aec89f78SBastian Köcher 
1401aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart5_apps_clk = {
1402aec89f78SBastian Köcher 	.halt_reg = 0x0884,
1403aec89f78SBastian Köcher 	.clkr = {
1404aec89f78SBastian Köcher 		.enable_reg = 0x0884,
1405aec89f78SBastian Köcher 		.enable_mask = BIT(0),
14060519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1407aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart5_apps_clk",
14080519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_uart5_apps_clk_src.clkr.hw },
1409aec89f78SBastian Köcher 			.num_parents = 1,
1410aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1411aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1412aec89f78SBastian Köcher 		},
1413aec89f78SBastian Köcher 	},
1414aec89f78SBastian Köcher };
1415aec89f78SBastian Köcher 
1416aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart6_apps_clk = {
1417aec89f78SBastian Köcher 	.halt_reg = 0x0904,
1418aec89f78SBastian Köcher 	.clkr = {
1419aec89f78SBastian Köcher 		.enable_reg = 0x0904,
1420aec89f78SBastian Köcher 		.enable_mask = BIT(0),
14210519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1422aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart6_apps_clk",
14230519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_uart6_apps_clk_src.clkr.hw },
1424aec89f78SBastian Köcher 			.num_parents = 1,
1425aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1426aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1427aec89f78SBastian Köcher 		},
1428aec89f78SBastian Köcher 	},
1429aec89f78SBastian Köcher };
1430aec89f78SBastian Köcher 
1431aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_ahb_clk = {
1432aec89f78SBastian Köcher 	.halt_reg = 0x0944,
1433aec89f78SBastian Köcher 	.halt_check = BRANCH_HALT_VOTED,
1434aec89f78SBastian Köcher 	.clkr = {
1435aec89f78SBastian Köcher 		.enable_reg = 0x1484,
1436aec89f78SBastian Köcher 		.enable_mask = BIT(15),
14370519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1438aec89f78SBastian Köcher 			.name = "gcc_blsp2_ahb_clk",
143974a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw },
144074a33facSKonrad Dybcio 			.num_parents = 1,
1441aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1442aec89f78SBastian Köcher 		},
1443aec89f78SBastian Köcher 	},
1444aec89f78SBastian Köcher };
1445aec89f78SBastian Köcher 
1446aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup1_i2c_apps_clk = {
1447aec89f78SBastian Köcher 	.halt_reg = 0x0988,
1448aec89f78SBastian Köcher 	.clkr = {
1449aec89f78SBastian Köcher 		.enable_reg = 0x0988,
1450aec89f78SBastian Köcher 		.enable_mask = BIT(0),
14510519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1452aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup1_i2c_apps_clk",
14530519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup1_i2c_apps_clk_src.clkr.hw },
1454aec89f78SBastian Köcher 			.num_parents = 1,
1455aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1456aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1457aec89f78SBastian Köcher 		},
1458aec89f78SBastian Köcher 	},
1459aec89f78SBastian Köcher };
1460aec89f78SBastian Köcher 
1461aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup1_spi_apps_clk = {
1462aec89f78SBastian Köcher 	.halt_reg = 0x0984,
1463aec89f78SBastian Köcher 	.clkr = {
1464aec89f78SBastian Köcher 		.enable_reg = 0x0984,
1465aec89f78SBastian Köcher 		.enable_mask = BIT(0),
14660519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1467aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup1_spi_apps_clk",
14680519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup1_spi_apps_clk_src.clkr.hw },
1469aec89f78SBastian Köcher 			.num_parents = 1,
1470aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1471aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1472aec89f78SBastian Köcher 		},
1473aec89f78SBastian Köcher 	},
1474aec89f78SBastian Köcher };
1475aec89f78SBastian Köcher 
1476aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup2_i2c_apps_clk = {
1477aec89f78SBastian Köcher 	.halt_reg = 0x0a08,
1478aec89f78SBastian Köcher 	.clkr = {
1479aec89f78SBastian Köcher 		.enable_reg = 0x0a08,
1480aec89f78SBastian Köcher 		.enable_mask = BIT(0),
14810519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1482aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup2_i2c_apps_clk",
14830519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup2_i2c_apps_clk_src.clkr.hw },
1484aec89f78SBastian Köcher 			.num_parents = 1,
1485aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1486aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1487aec89f78SBastian Köcher 		},
1488aec89f78SBastian Köcher 	},
1489aec89f78SBastian Köcher };
1490aec89f78SBastian Köcher 
1491aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup2_spi_apps_clk = {
1492aec89f78SBastian Köcher 	.halt_reg = 0x0a04,
1493aec89f78SBastian Köcher 	.clkr = {
1494aec89f78SBastian Köcher 		.enable_reg = 0x0a04,
1495aec89f78SBastian Köcher 		.enable_mask = BIT(0),
14960519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1497aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup2_spi_apps_clk",
14980519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup2_spi_apps_clk_src.clkr.hw },
1499aec89f78SBastian Köcher 			.num_parents = 1,
1500aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1501aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1502aec89f78SBastian Köcher 		},
1503aec89f78SBastian Köcher 	},
1504aec89f78SBastian Köcher };
1505aec89f78SBastian Köcher 
1506aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup3_i2c_apps_clk = {
1507aec89f78SBastian Köcher 	.halt_reg = 0x0a88,
1508aec89f78SBastian Köcher 	.clkr = {
1509aec89f78SBastian Köcher 		.enable_reg = 0x0a88,
1510aec89f78SBastian Köcher 		.enable_mask = BIT(0),
15110519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1512aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup3_i2c_apps_clk",
15130519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup3_i2c_apps_clk_src.clkr.hw },
1514aec89f78SBastian Köcher 			.num_parents = 1,
1515aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1516aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1517aec89f78SBastian Köcher 		},
1518aec89f78SBastian Köcher 	},
1519aec89f78SBastian Köcher };
1520aec89f78SBastian Köcher 
1521aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup3_spi_apps_clk = {
1522aec89f78SBastian Köcher 	.halt_reg = 0x0a84,
1523aec89f78SBastian Köcher 	.clkr = {
1524aec89f78SBastian Köcher 		.enable_reg = 0x0a84,
1525aec89f78SBastian Köcher 		.enable_mask = BIT(0),
15260519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1527aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup3_spi_apps_clk",
15280519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup3_spi_apps_clk_src.clkr.hw },
1529aec89f78SBastian Köcher 			.num_parents = 1,
1530aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1531aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1532aec89f78SBastian Köcher 		},
1533aec89f78SBastian Köcher 	},
1534aec89f78SBastian Köcher };
1535aec89f78SBastian Köcher 
1536aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup4_i2c_apps_clk = {
1537aec89f78SBastian Köcher 	.halt_reg = 0x0b08,
1538aec89f78SBastian Köcher 	.clkr = {
1539aec89f78SBastian Köcher 		.enable_reg = 0x0b08,
1540aec89f78SBastian Köcher 		.enable_mask = BIT(0),
15410519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1542aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup4_i2c_apps_clk",
15430519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup4_i2c_apps_clk_src.clkr.hw },
1544aec89f78SBastian Köcher 			.num_parents = 1,
1545aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1546aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1547aec89f78SBastian Köcher 		},
1548aec89f78SBastian Köcher 	},
1549aec89f78SBastian Köcher };
1550aec89f78SBastian Köcher 
1551aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup4_spi_apps_clk = {
1552aec89f78SBastian Köcher 	.halt_reg = 0x0b04,
1553aec89f78SBastian Köcher 	.clkr = {
1554aec89f78SBastian Köcher 		.enable_reg = 0x0b04,
1555aec89f78SBastian Köcher 		.enable_mask = BIT(0),
15560519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1557aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup4_spi_apps_clk",
15580519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup4_spi_apps_clk_src.clkr.hw },
1559aec89f78SBastian Köcher 			.num_parents = 1,
1560aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1561aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1562aec89f78SBastian Köcher 		},
1563aec89f78SBastian Köcher 	},
1564aec89f78SBastian Köcher };
1565aec89f78SBastian Köcher 
1566aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup5_i2c_apps_clk = {
1567aec89f78SBastian Köcher 	.halt_reg = 0x0b88,
1568aec89f78SBastian Köcher 	.clkr = {
1569aec89f78SBastian Köcher 		.enable_reg = 0x0b88,
1570aec89f78SBastian Köcher 		.enable_mask = BIT(0),
15710519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1572aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup5_i2c_apps_clk",
15730519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup5_i2c_apps_clk_src.clkr.hw },
1574aec89f78SBastian Köcher 			.num_parents = 1,
1575aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1576aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1577aec89f78SBastian Köcher 		},
1578aec89f78SBastian Köcher 	},
1579aec89f78SBastian Köcher };
1580aec89f78SBastian Köcher 
1581aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup5_spi_apps_clk = {
1582aec89f78SBastian Köcher 	.halt_reg = 0x0b84,
1583aec89f78SBastian Köcher 	.clkr = {
1584aec89f78SBastian Köcher 		.enable_reg = 0x0b84,
1585aec89f78SBastian Köcher 		.enable_mask = BIT(0),
15860519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1587aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup5_spi_apps_clk",
15880519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup5_spi_apps_clk_src.clkr.hw },
1589aec89f78SBastian Köcher 			.num_parents = 1,
1590aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1591aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1592aec89f78SBastian Köcher 		},
1593aec89f78SBastian Köcher 	},
1594aec89f78SBastian Köcher };
1595aec89f78SBastian Köcher 
1596aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup6_i2c_apps_clk = {
1597aec89f78SBastian Köcher 	.halt_reg = 0x0c08,
1598aec89f78SBastian Köcher 	.clkr = {
1599aec89f78SBastian Köcher 		.enable_reg = 0x0c08,
1600aec89f78SBastian Köcher 		.enable_mask = BIT(0),
16010519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1602aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup6_i2c_apps_clk",
16030519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup6_i2c_apps_clk_src.clkr.hw },
1604aec89f78SBastian Köcher 			.num_parents = 1,
1605aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1606aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1607aec89f78SBastian Köcher 		},
1608aec89f78SBastian Köcher 	},
1609aec89f78SBastian Köcher };
1610aec89f78SBastian Köcher 
1611aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup6_spi_apps_clk = {
1612aec89f78SBastian Köcher 	.halt_reg = 0x0c04,
1613aec89f78SBastian Köcher 	.clkr = {
1614aec89f78SBastian Köcher 		.enable_reg = 0x0c04,
1615aec89f78SBastian Köcher 		.enable_mask = BIT(0),
16160519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1617aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup6_spi_apps_clk",
16180519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup6_spi_apps_clk_src.clkr.hw },
1619aec89f78SBastian Köcher 			.num_parents = 1,
1620aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1621aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1622aec89f78SBastian Köcher 		},
1623aec89f78SBastian Köcher 	},
1624aec89f78SBastian Köcher };
1625aec89f78SBastian Köcher 
1626aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart1_apps_clk = {
1627aec89f78SBastian Köcher 	.halt_reg = 0x09c4,
1628aec89f78SBastian Köcher 	.clkr = {
1629aec89f78SBastian Köcher 		.enable_reg = 0x09c4,
1630aec89f78SBastian Köcher 		.enable_mask = BIT(0),
16310519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1632aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart1_apps_clk",
16330519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_uart1_apps_clk_src.clkr.hw },
1634aec89f78SBastian Köcher 			.num_parents = 1,
1635aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1636aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1637aec89f78SBastian Köcher 		},
1638aec89f78SBastian Köcher 	},
1639aec89f78SBastian Köcher };
1640aec89f78SBastian Köcher 
1641aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart2_apps_clk = {
1642aec89f78SBastian Köcher 	.halt_reg = 0x0a44,
1643aec89f78SBastian Köcher 	.clkr = {
1644aec89f78SBastian Köcher 		.enable_reg = 0x0a44,
1645aec89f78SBastian Köcher 		.enable_mask = BIT(0),
16460519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1647aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart2_apps_clk",
16480519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_uart2_apps_clk_src.clkr.hw },
1649aec89f78SBastian Köcher 			.num_parents = 1,
1650aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1651aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1652aec89f78SBastian Köcher 		},
1653aec89f78SBastian Köcher 	},
1654aec89f78SBastian Köcher };
1655aec89f78SBastian Köcher 
1656aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart3_apps_clk = {
1657aec89f78SBastian Köcher 	.halt_reg = 0x0ac4,
1658aec89f78SBastian Köcher 	.clkr = {
1659aec89f78SBastian Köcher 		.enable_reg = 0x0ac4,
1660aec89f78SBastian Köcher 		.enable_mask = BIT(0),
16610519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1662aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart3_apps_clk",
16630519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_uart3_apps_clk_src.clkr.hw },
1664aec89f78SBastian Köcher 			.num_parents = 1,
1665aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1666aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1667aec89f78SBastian Köcher 		},
1668aec89f78SBastian Köcher 	},
1669aec89f78SBastian Köcher };
1670aec89f78SBastian Köcher 
1671aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart4_apps_clk = {
1672aec89f78SBastian Köcher 	.halt_reg = 0x0b44,
1673aec89f78SBastian Köcher 	.clkr = {
1674aec89f78SBastian Köcher 		.enable_reg = 0x0b44,
1675aec89f78SBastian Köcher 		.enable_mask = BIT(0),
16760519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1677aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart4_apps_clk",
16780519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_uart4_apps_clk_src.clkr.hw },
1679aec89f78SBastian Köcher 			.num_parents = 1,
1680aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1681aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1682aec89f78SBastian Köcher 		},
1683aec89f78SBastian Köcher 	},
1684aec89f78SBastian Köcher };
1685aec89f78SBastian Köcher 
1686aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart5_apps_clk = {
1687aec89f78SBastian Köcher 	.halt_reg = 0x0bc4,
1688aec89f78SBastian Köcher 	.clkr = {
1689aec89f78SBastian Köcher 		.enable_reg = 0x0bc4,
1690aec89f78SBastian Köcher 		.enable_mask = BIT(0),
16910519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1692aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart5_apps_clk",
16930519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_uart5_apps_clk_src.clkr.hw },
1694aec89f78SBastian Köcher 			.num_parents = 1,
1695aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1696aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1697aec89f78SBastian Köcher 		},
1698aec89f78SBastian Köcher 	},
1699aec89f78SBastian Köcher };
1700aec89f78SBastian Köcher 
1701aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart6_apps_clk = {
1702aec89f78SBastian Köcher 	.halt_reg = 0x0c44,
1703aec89f78SBastian Köcher 	.clkr = {
1704aec89f78SBastian Köcher 		.enable_reg = 0x0c44,
1705aec89f78SBastian Köcher 		.enable_mask = BIT(0),
17060519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1707aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart6_apps_clk",
17080519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_uart6_apps_clk_src.clkr.hw },
1709aec89f78SBastian Köcher 			.num_parents = 1,
1710aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1711aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1712aec89f78SBastian Köcher 		},
1713aec89f78SBastian Köcher 	},
1714aec89f78SBastian Köcher };
1715aec89f78SBastian Köcher 
1716aec89f78SBastian Köcher static struct clk_branch gcc_gp1_clk = {
1717aec89f78SBastian Köcher 	.halt_reg = 0x1900,
1718aec89f78SBastian Köcher 	.clkr = {
1719aec89f78SBastian Köcher 		.enable_reg = 0x1900,
1720aec89f78SBastian Köcher 		.enable_mask = BIT(0),
17210519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1722aec89f78SBastian Köcher 			.name = "gcc_gp1_clk",
17230519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &gp1_clk_src.clkr.hw },
1724aec89f78SBastian Köcher 			.num_parents = 1,
1725aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1726aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1727aec89f78SBastian Köcher 		},
1728aec89f78SBastian Köcher 	},
1729aec89f78SBastian Köcher };
1730aec89f78SBastian Köcher 
1731aec89f78SBastian Köcher static struct clk_branch gcc_gp2_clk = {
1732aec89f78SBastian Köcher 	.halt_reg = 0x1940,
1733aec89f78SBastian Köcher 	.clkr = {
1734aec89f78SBastian Köcher 		.enable_reg = 0x1940,
1735aec89f78SBastian Köcher 		.enable_mask = BIT(0),
17360519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1737aec89f78SBastian Köcher 			.name = "gcc_gp2_clk",
17380519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &gp2_clk_src.clkr.hw },
1739aec89f78SBastian Köcher 			.num_parents = 1,
1740aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1741aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1742aec89f78SBastian Köcher 		},
1743aec89f78SBastian Köcher 	},
1744aec89f78SBastian Köcher };
1745aec89f78SBastian Köcher 
1746aec89f78SBastian Köcher static struct clk_branch gcc_gp3_clk = {
1747aec89f78SBastian Köcher 	.halt_reg = 0x1980,
1748aec89f78SBastian Köcher 	.clkr = {
1749aec89f78SBastian Köcher 		.enable_reg = 0x1980,
1750aec89f78SBastian Köcher 		.enable_mask = BIT(0),
17510519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1752aec89f78SBastian Köcher 			.name = "gcc_gp3_clk",
17530519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &gp3_clk_src.clkr.hw },
1754aec89f78SBastian Köcher 			.num_parents = 1,
1755aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1756aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1757aec89f78SBastian Köcher 		},
1758aec89f78SBastian Köcher 	},
1759aec89f78SBastian Köcher };
1760aec89f78SBastian Köcher 
17618c18b41bSKonrad Dybcio static struct clk_branch gcc_lpass_q6_axi_clk = {
17628c18b41bSKonrad Dybcio 	.halt_reg = 0x0280,
17638c18b41bSKonrad Dybcio 	.clkr = {
17648c18b41bSKonrad Dybcio 		.enable_reg = 0x0280,
17658c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
17660519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
17678c18b41bSKonrad Dybcio 			.name = "gcc_lpass_q6_axi_clk",
176874a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw },
176974a33facSKonrad Dybcio 			.num_parents = 1,
17708c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
17718c18b41bSKonrad Dybcio 		},
17728c18b41bSKonrad Dybcio 	},
17738c18b41bSKonrad Dybcio };
17748c18b41bSKonrad Dybcio 
17758c18b41bSKonrad Dybcio static struct clk_branch gcc_mss_q6_bimc_axi_clk = {
17768c18b41bSKonrad Dybcio 	.halt_reg = 0x0284,
17778c18b41bSKonrad Dybcio 	.clkr = {
17788c18b41bSKonrad Dybcio 		.enable_reg = 0x0284,
17798c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
17800519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
17818c18b41bSKonrad Dybcio 			.name = "gcc_mss_q6_bimc_axi_clk",
178274a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw },
178374a33facSKonrad Dybcio 			.num_parents = 1,
17848c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
17858c18b41bSKonrad Dybcio 		},
17868c18b41bSKonrad Dybcio 	},
17878c18b41bSKonrad Dybcio };
17888c18b41bSKonrad Dybcio 
1789aec89f78SBastian Köcher static struct clk_branch gcc_pcie_0_aux_clk = {
1790aec89f78SBastian Köcher 	.halt_reg = 0x1ad4,
1791aec89f78SBastian Köcher 	.clkr = {
1792aec89f78SBastian Köcher 		.enable_reg = 0x1ad4,
1793aec89f78SBastian Köcher 		.enable_mask = BIT(0),
17940519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1795aec89f78SBastian Köcher 			.name = "gcc_pcie_0_aux_clk",
17960519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &pcie_0_aux_clk_src.clkr.hw },
1797aec89f78SBastian Köcher 			.num_parents = 1,
1798aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1799aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1800aec89f78SBastian Köcher 		},
1801aec89f78SBastian Köcher 	},
1802aec89f78SBastian Köcher };
1803aec89f78SBastian Köcher 
18048c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_cfg_ahb_clk = {
18058c18b41bSKonrad Dybcio 	.halt_reg = 0x1ad0,
18068c18b41bSKonrad Dybcio 	.clkr = {
18078c18b41bSKonrad Dybcio 		.enable_reg = 0x1ad0,
18088c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
18090519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
18108c18b41bSKonrad Dybcio 			.name = "gcc_pcie_0_cfg_ahb_clk",
181174a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &config_noc_clk_src.clkr.hw },
181274a33facSKonrad Dybcio 			.num_parents = 1,
181374a33facSKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
18148c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
18158c18b41bSKonrad Dybcio 		},
18168c18b41bSKonrad Dybcio 	},
18178c18b41bSKonrad Dybcio };
18188c18b41bSKonrad Dybcio 
18198c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_mstr_axi_clk = {
18208c18b41bSKonrad Dybcio 	.halt_reg = 0x1acc,
18218c18b41bSKonrad Dybcio 	.clkr = {
18228c18b41bSKonrad Dybcio 		.enable_reg = 0x1acc,
18238c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
18240519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
18258c18b41bSKonrad Dybcio 			.name = "gcc_pcie_0_mstr_axi_clk",
182674a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw },
182774a33facSKonrad Dybcio 			.num_parents = 1,
182874a33facSKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
18298c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
18308c18b41bSKonrad Dybcio 		},
18318c18b41bSKonrad Dybcio 	},
18328c18b41bSKonrad Dybcio };
18338c18b41bSKonrad Dybcio 
1834aec89f78SBastian Köcher static struct clk_branch gcc_pcie_0_pipe_clk = {
1835aec89f78SBastian Köcher 	.halt_reg = 0x1ad8,
1836aec89f78SBastian Köcher 	.halt_check = BRANCH_HALT_DELAY,
1837aec89f78SBastian Köcher 	.clkr = {
1838aec89f78SBastian Köcher 		.enable_reg = 0x1ad8,
1839aec89f78SBastian Köcher 		.enable_mask = BIT(0),
18400519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1841aec89f78SBastian Köcher 			.name = "gcc_pcie_0_pipe_clk",
18420519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &pcie_0_pipe_clk_src.clkr.hw },
1843aec89f78SBastian Köcher 			.num_parents = 1,
1844aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1845aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1846aec89f78SBastian Köcher 		},
1847aec89f78SBastian Köcher 	},
1848aec89f78SBastian Köcher };
1849aec89f78SBastian Köcher 
18508c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_slv_axi_clk = {
18518c18b41bSKonrad Dybcio 	.halt_reg = 0x1ac8,
18528c18b41bSKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
18538c18b41bSKonrad Dybcio 	.clkr = {
18548c18b41bSKonrad Dybcio 		.enable_reg = 0x1ac8,
18558c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
18560519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
18578c18b41bSKonrad Dybcio 			.name = "gcc_pcie_0_slv_axi_clk",
185874a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw },
185974a33facSKonrad Dybcio 			.num_parents = 1,
186074a33facSKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
18618c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
18628c18b41bSKonrad Dybcio 		},
18638c18b41bSKonrad Dybcio 	},
18648c18b41bSKonrad Dybcio };
18658c18b41bSKonrad Dybcio 
1866aec89f78SBastian Köcher static struct clk_branch gcc_pcie_1_aux_clk = {
1867aec89f78SBastian Köcher 	.halt_reg = 0x1b54,
1868aec89f78SBastian Köcher 	.clkr = {
1869aec89f78SBastian Köcher 		.enable_reg = 0x1b54,
1870aec89f78SBastian Köcher 		.enable_mask = BIT(0),
18710519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1872aec89f78SBastian Köcher 			.name = "gcc_pcie_1_aux_clk",
18730519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &pcie_1_aux_clk_src.clkr.hw },
1874aec89f78SBastian Köcher 			.num_parents = 1,
1875aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1876aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1877aec89f78SBastian Köcher 		},
1878aec89f78SBastian Köcher 	},
1879aec89f78SBastian Köcher };
1880aec89f78SBastian Köcher 
18818c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_cfg_ahb_clk = {
18828c18b41bSKonrad Dybcio 	.halt_reg = 0x1b54,
18838c18b41bSKonrad Dybcio 	.clkr = {
18848c18b41bSKonrad Dybcio 		.enable_reg = 0x1b54,
18858c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
18860519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
18878c18b41bSKonrad Dybcio 			.name = "gcc_pcie_1_cfg_ahb_clk",
188874a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &config_noc_clk_src.clkr.hw },
188974a33facSKonrad Dybcio 			.num_parents = 1,
189074a33facSKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
18918c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
18928c18b41bSKonrad Dybcio 		},
18938c18b41bSKonrad Dybcio 	},
18948c18b41bSKonrad Dybcio };
18958c18b41bSKonrad Dybcio 
18968c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_mstr_axi_clk = {
18978c18b41bSKonrad Dybcio 	.halt_reg = 0x1b50,
18988c18b41bSKonrad Dybcio 	.clkr = {
18998c18b41bSKonrad Dybcio 		.enable_reg = 0x1b50,
19008c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
19010519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
19028c18b41bSKonrad Dybcio 			.name = "gcc_pcie_1_mstr_axi_clk",
190374a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw },
190474a33facSKonrad Dybcio 			.num_parents = 1,
190574a33facSKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
19068c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
19078c18b41bSKonrad Dybcio 		},
19088c18b41bSKonrad Dybcio 	},
19098c18b41bSKonrad Dybcio };
19108c18b41bSKonrad Dybcio 
1911aec89f78SBastian Köcher static struct clk_branch gcc_pcie_1_pipe_clk = {
1912aec89f78SBastian Köcher 	.halt_reg = 0x1b58,
1913aec89f78SBastian Köcher 	.halt_check = BRANCH_HALT_DELAY,
1914aec89f78SBastian Köcher 	.clkr = {
1915aec89f78SBastian Köcher 		.enable_reg = 0x1b58,
1916aec89f78SBastian Köcher 		.enable_mask = BIT(0),
19170519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1918aec89f78SBastian Köcher 			.name = "gcc_pcie_1_pipe_clk",
19190519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &pcie_1_pipe_clk_src.clkr.hw },
1920aec89f78SBastian Köcher 			.num_parents = 1,
1921aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1922aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1923aec89f78SBastian Köcher 		},
1924aec89f78SBastian Köcher 	},
1925aec89f78SBastian Köcher };
1926aec89f78SBastian Köcher 
19278c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_slv_axi_clk = {
19288c18b41bSKonrad Dybcio 	.halt_reg = 0x1b48,
19298c18b41bSKonrad Dybcio 	.clkr = {
19308c18b41bSKonrad Dybcio 		.enable_reg = 0x1b48,
19318c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
19320519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
19338c18b41bSKonrad Dybcio 			.name = "gcc_pcie_1_slv_axi_clk",
193474a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw },
193574a33facSKonrad Dybcio 			.num_parents = 1,
193674a33facSKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
19378c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
19388c18b41bSKonrad Dybcio 		},
19398c18b41bSKonrad Dybcio 	},
19408c18b41bSKonrad Dybcio };
19418c18b41bSKonrad Dybcio 
1942aec89f78SBastian Köcher static struct clk_branch gcc_pdm2_clk = {
1943aec89f78SBastian Köcher 	.halt_reg = 0x0ccc,
1944aec89f78SBastian Köcher 	.clkr = {
1945aec89f78SBastian Köcher 		.enable_reg = 0x0ccc,
1946aec89f78SBastian Köcher 		.enable_mask = BIT(0),
19470519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1948aec89f78SBastian Köcher 			.name = "gcc_pdm2_clk",
19490519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &pdm2_clk_src.clkr.hw },
1950aec89f78SBastian Köcher 			.num_parents = 1,
1951aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1952aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1953aec89f78SBastian Köcher 		},
1954aec89f78SBastian Köcher 	},
1955aec89f78SBastian Köcher };
1956aec89f78SBastian Köcher 
19578c18b41bSKonrad Dybcio static struct clk_branch gcc_pdm_ahb_clk = {
19588c18b41bSKonrad Dybcio 	.halt_reg = 0x0cc4,
19598c18b41bSKonrad Dybcio 	.clkr = {
19608c18b41bSKonrad Dybcio 		.enable_reg = 0x0cc4,
19618c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
19620519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
19638c18b41bSKonrad Dybcio 			.name = "gcc_pdm_ahb_clk",
196474a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw },
196574a33facSKonrad Dybcio 			.num_parents = 1,
19668c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
19678c18b41bSKonrad Dybcio 		},
19688c18b41bSKonrad Dybcio 	},
19698c18b41bSKonrad Dybcio };
19708c18b41bSKonrad Dybcio 
1971aec89f78SBastian Köcher static struct clk_branch gcc_sdcc1_apps_clk = {
1972aec89f78SBastian Köcher 	.halt_reg = 0x04c4,
1973aec89f78SBastian Köcher 	.clkr = {
1974aec89f78SBastian Köcher 		.enable_reg = 0x04c4,
1975aec89f78SBastian Köcher 		.enable_mask = BIT(0),
19760519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1977aec89f78SBastian Köcher 			.name = "gcc_sdcc1_apps_clk",
19780519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &sdcc1_apps_clk_src.clkr.hw },
1979aec89f78SBastian Köcher 			.num_parents = 1,
1980aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1981aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1982aec89f78SBastian Köcher 		},
1983aec89f78SBastian Köcher 	},
1984aec89f78SBastian Köcher };
1985aec89f78SBastian Köcher 
1986eaff16bcSJeremy McNicoll static struct clk_branch gcc_sdcc1_ahb_clk = {
1987eaff16bcSJeremy McNicoll 	.halt_reg = 0x04c8,
1988eaff16bcSJeremy McNicoll 	.clkr = {
1989eaff16bcSJeremy McNicoll 		.enable_reg = 0x04c8,
1990eaff16bcSJeremy McNicoll 		.enable_mask = BIT(0),
19910519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1992eaff16bcSJeremy McNicoll 			.name = "gcc_sdcc1_ahb_clk",
199374a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw },
1994eaff16bcSJeremy McNicoll 			.num_parents = 1,
199574a33facSKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
1996eaff16bcSJeremy McNicoll 			.ops = &clk_branch2_ops,
1997eaff16bcSJeremy McNicoll 		},
1998eaff16bcSJeremy McNicoll 	},
1999eaff16bcSJeremy McNicoll };
2000eaff16bcSJeremy McNicoll 
20018c18b41bSKonrad Dybcio static struct clk_branch gcc_sdcc2_ahb_clk = {
20028c18b41bSKonrad Dybcio 	.halt_reg = 0x0508,
20038c18b41bSKonrad Dybcio 	.clkr = {
20048c18b41bSKonrad Dybcio 		.enable_reg = 0x0508,
20058c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
20060519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
20078c18b41bSKonrad Dybcio 			.name = "gcc_sdcc2_ahb_clk",
200874a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw },
20098c18b41bSKonrad Dybcio 			.num_parents = 1,
201074a33facSKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
20118c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
20128c18b41bSKonrad Dybcio 		},
20138c18b41bSKonrad Dybcio 	},
20148c18b41bSKonrad Dybcio };
20158c18b41bSKonrad Dybcio 
2016aec89f78SBastian Köcher static struct clk_branch gcc_sdcc2_apps_clk = {
2017aec89f78SBastian Köcher 	.halt_reg = 0x0504,
2018aec89f78SBastian Köcher 	.clkr = {
2019aec89f78SBastian Köcher 		.enable_reg = 0x0504,
2020aec89f78SBastian Köcher 		.enable_mask = BIT(0),
20210519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2022aec89f78SBastian Köcher 			.name = "gcc_sdcc2_apps_clk",
20230519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &sdcc2_apps_clk_src.clkr.hw },
2024aec89f78SBastian Köcher 			.num_parents = 1,
2025aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2026aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2027aec89f78SBastian Köcher 		},
2028aec89f78SBastian Köcher 	},
2029aec89f78SBastian Köcher };
2030aec89f78SBastian Köcher 
20318c18b41bSKonrad Dybcio static struct clk_branch gcc_sdcc3_ahb_clk = {
20328c18b41bSKonrad Dybcio 	.halt_reg = 0x0548,
20338c18b41bSKonrad Dybcio 	.clkr = {
20348c18b41bSKonrad Dybcio 		.enable_reg = 0x0548,
20358c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
20360519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
20378c18b41bSKonrad Dybcio 			.name = "gcc_sdcc3_ahb_clk",
203874a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw },
20398c18b41bSKonrad Dybcio 			.num_parents = 1,
204074a33facSKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
20418c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
20428c18b41bSKonrad Dybcio 		},
20438c18b41bSKonrad Dybcio 	},
20448c18b41bSKonrad Dybcio };
20458c18b41bSKonrad Dybcio 
2046aec89f78SBastian Köcher static struct clk_branch gcc_sdcc3_apps_clk = {
2047aec89f78SBastian Köcher 	.halt_reg = 0x0544,
2048aec89f78SBastian Köcher 	.clkr = {
2049aec89f78SBastian Köcher 		.enable_reg = 0x0544,
2050aec89f78SBastian Köcher 		.enable_mask = BIT(0),
20510519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2052aec89f78SBastian Köcher 			.name = "gcc_sdcc3_apps_clk",
20530519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &sdcc3_apps_clk_src.clkr.hw },
2054aec89f78SBastian Köcher 			.num_parents = 1,
2055aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2056aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2057aec89f78SBastian Köcher 		},
2058aec89f78SBastian Köcher 	},
2059aec89f78SBastian Köcher };
2060aec89f78SBastian Köcher 
20618c18b41bSKonrad Dybcio static struct clk_branch gcc_sdcc4_ahb_clk = {
20628c18b41bSKonrad Dybcio 	.halt_reg = 0x0588,
20638c18b41bSKonrad Dybcio 	.clkr = {
20648c18b41bSKonrad Dybcio 		.enable_reg = 0x0588,
20658c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
20660519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
20678c18b41bSKonrad Dybcio 			.name = "gcc_sdcc4_ahb_clk",
206874a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw },
20698c18b41bSKonrad Dybcio 			.num_parents = 1,
207074a33facSKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
20718c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
20728c18b41bSKonrad Dybcio 		},
20738c18b41bSKonrad Dybcio 	},
20748c18b41bSKonrad Dybcio };
20758c18b41bSKonrad Dybcio 
2076aec89f78SBastian Köcher static struct clk_branch gcc_sdcc4_apps_clk = {
2077aec89f78SBastian Köcher 	.halt_reg = 0x0584,
2078aec89f78SBastian Köcher 	.clkr = {
2079aec89f78SBastian Köcher 		.enable_reg = 0x0584,
2080aec89f78SBastian Köcher 		.enable_mask = BIT(0),
20810519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2082aec89f78SBastian Köcher 			.name = "gcc_sdcc4_apps_clk",
20830519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &sdcc4_apps_clk_src.clkr.hw },
2084aec89f78SBastian Köcher 			.num_parents = 1,
2085aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2086aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2087aec89f78SBastian Köcher 		},
2088aec89f78SBastian Köcher 	},
2089aec89f78SBastian Köcher };
2090aec89f78SBastian Köcher 
2091aec89f78SBastian Köcher static struct clk_branch gcc_sys_noc_ufs_axi_clk = {
2092aec89f78SBastian Köcher 	.halt_reg = 0x1d7c,
2093aec89f78SBastian Köcher 	.clkr = {
2094aec89f78SBastian Köcher 		.enable_reg = 0x1d7c,
2095aec89f78SBastian Köcher 		.enable_mask = BIT(0),
20960519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2097aec89f78SBastian Köcher 			.name = "gcc_sys_noc_ufs_axi_clk",
20980519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw },
2099aec89f78SBastian Köcher 			.num_parents = 1,
2100aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2101aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2102aec89f78SBastian Köcher 		},
2103aec89f78SBastian Köcher 	},
2104aec89f78SBastian Köcher };
2105aec89f78SBastian Köcher 
2106aec89f78SBastian Köcher static struct clk_branch gcc_sys_noc_usb3_axi_clk = {
2107aec89f78SBastian Köcher 	.halt_reg = 0x03fc,
2108aec89f78SBastian Köcher 	.clkr = {
2109aec89f78SBastian Köcher 		.enable_reg = 0x03fc,
2110aec89f78SBastian Köcher 		.enable_mask = BIT(0),
21110519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2112aec89f78SBastian Köcher 			.name = "gcc_sys_noc_usb3_axi_clk",
21130519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &usb30_master_clk_src.clkr.hw },
2114aec89f78SBastian Köcher 			.num_parents = 1,
2115aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2116aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2117aec89f78SBastian Köcher 		},
2118aec89f78SBastian Köcher 	},
2119aec89f78SBastian Köcher };
2120aec89f78SBastian Köcher 
21218c18b41bSKonrad Dybcio static struct clk_branch gcc_tsif_ahb_clk = {
21228c18b41bSKonrad Dybcio 	.halt_reg = 0x0d84,
21238c18b41bSKonrad Dybcio 	.clkr = {
21248c18b41bSKonrad Dybcio 		.enable_reg = 0x0d84,
21258c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
21260519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
21278c18b41bSKonrad Dybcio 			.name = "gcc_tsif_ahb_clk",
212874a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw },
212974a33facSKonrad Dybcio 			.num_parents = 1,
21308c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
21318c18b41bSKonrad Dybcio 		},
21328c18b41bSKonrad Dybcio 	},
21338c18b41bSKonrad Dybcio };
21348c18b41bSKonrad Dybcio 
2135aec89f78SBastian Köcher static struct clk_branch gcc_tsif_ref_clk = {
2136aec89f78SBastian Köcher 	.halt_reg = 0x0d88,
2137aec89f78SBastian Köcher 	.clkr = {
2138aec89f78SBastian Köcher 		.enable_reg = 0x0d88,
2139aec89f78SBastian Köcher 		.enable_mask = BIT(0),
21400519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2141aec89f78SBastian Köcher 			.name = "gcc_tsif_ref_clk",
21420519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &tsif_ref_clk_src.clkr.hw },
2143aec89f78SBastian Köcher 			.num_parents = 1,
2144aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2145aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2146aec89f78SBastian Köcher 		},
2147aec89f78SBastian Köcher 	},
2148aec89f78SBastian Köcher };
2149aec89f78SBastian Köcher 
21508c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_ahb_clk = {
21518c18b41bSKonrad Dybcio 	.halt_reg = 0x1d4c,
21528c18b41bSKonrad Dybcio 	.clkr = {
21538c18b41bSKonrad Dybcio 		.enable_reg = 0x1d4c,
21548c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
21550519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
21568c18b41bSKonrad Dybcio 			.name = "gcc_ufs_ahb_clk",
215774a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &config_noc_clk_src.clkr.hw },
215874a33facSKonrad Dybcio 			.num_parents = 1,
21598c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
21608c18b41bSKonrad Dybcio 		},
21618c18b41bSKonrad Dybcio 	},
21628c18b41bSKonrad Dybcio };
21638c18b41bSKonrad Dybcio 
2164aec89f78SBastian Köcher static struct clk_branch gcc_ufs_axi_clk = {
2165aec89f78SBastian Köcher 	.halt_reg = 0x1d48,
2166aec89f78SBastian Köcher 	.clkr = {
2167aec89f78SBastian Köcher 		.enable_reg = 0x1d48,
2168aec89f78SBastian Köcher 		.enable_mask = BIT(0),
21690519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2170aec89f78SBastian Köcher 			.name = "gcc_ufs_axi_clk",
21710519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw },
2172aec89f78SBastian Köcher 			.num_parents = 1,
2173aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2174aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2175aec89f78SBastian Köcher 		},
2176aec89f78SBastian Köcher 	},
2177aec89f78SBastian Köcher };
2178aec89f78SBastian Köcher 
2179aec89f78SBastian Köcher static struct clk_branch gcc_ufs_rx_cfg_clk = {
2180aec89f78SBastian Köcher 	.halt_reg = 0x1d54,
2181aec89f78SBastian Köcher 	.clkr = {
2182aec89f78SBastian Köcher 		.enable_reg = 0x1d54,
2183aec89f78SBastian Köcher 		.enable_mask = BIT(0),
21840519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2185aec89f78SBastian Köcher 			.name = "gcc_ufs_rx_cfg_clk",
21860519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw },
2187aec89f78SBastian Köcher 			.num_parents = 1,
2188aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2189aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2190aec89f78SBastian Köcher 		},
2191aec89f78SBastian Köcher 	},
2192aec89f78SBastian Köcher };
2193aec89f78SBastian Köcher 
21948c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_rx_symbol_0_clk = {
21958c18b41bSKonrad Dybcio 	.halt_reg = 0x1d60,
21968c18b41bSKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
21978c18b41bSKonrad Dybcio 	.clkr = {
21988c18b41bSKonrad Dybcio 		.enable_reg = 0x1d60,
21998c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
22000519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
22018c18b41bSKonrad Dybcio 			.name = "gcc_ufs_rx_symbol_0_clk",
220274a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw },
220374a33facSKonrad Dybcio 			.num_parents = 1,
22048c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
22058c18b41bSKonrad Dybcio 		},
22068c18b41bSKonrad Dybcio 	},
22078c18b41bSKonrad Dybcio };
22088c18b41bSKonrad Dybcio 
22098c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_rx_symbol_1_clk = {
22108c18b41bSKonrad Dybcio 	.halt_reg = 0x1d64,
22118c18b41bSKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
22128c18b41bSKonrad Dybcio 	.clkr = {
22138c18b41bSKonrad Dybcio 		.enable_reg = 0x1d64,
22148c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
22150519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
22168c18b41bSKonrad Dybcio 			.name = "gcc_ufs_rx_symbol_1_clk",
221774a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw },
221874a33facSKonrad Dybcio 			.num_parents = 1,
22198c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
22208c18b41bSKonrad Dybcio 		},
22218c18b41bSKonrad Dybcio 	},
22228c18b41bSKonrad Dybcio };
22238c18b41bSKonrad Dybcio 
2224aec89f78SBastian Köcher static struct clk_branch gcc_ufs_tx_cfg_clk = {
2225aec89f78SBastian Köcher 	.halt_reg = 0x1d50,
2226aec89f78SBastian Köcher 	.clkr = {
2227aec89f78SBastian Köcher 		.enable_reg = 0x1d50,
2228aec89f78SBastian Köcher 		.enable_mask = BIT(0),
22290519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2230aec89f78SBastian Köcher 			.name = "gcc_ufs_tx_cfg_clk",
22310519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw },
2232aec89f78SBastian Köcher 			.num_parents = 1,
2233aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2234aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2235aec89f78SBastian Köcher 		},
2236aec89f78SBastian Köcher 	},
2237aec89f78SBastian Köcher };
2238aec89f78SBastian Köcher 
22398c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_tx_symbol_0_clk = {
22408c18b41bSKonrad Dybcio 	.halt_reg = 0x1d58,
22418c18b41bSKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
22428c18b41bSKonrad Dybcio 	.clkr = {
22438c18b41bSKonrad Dybcio 		.enable_reg = 0x1d58,
22448c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
22450519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
22468c18b41bSKonrad Dybcio 			.name = "gcc_ufs_tx_symbol_0_clk",
224774a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw },
224874a33facSKonrad Dybcio 			.num_parents = 1,
22498c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
22508c18b41bSKonrad Dybcio 		},
22518c18b41bSKonrad Dybcio 	},
22528c18b41bSKonrad Dybcio };
22538c18b41bSKonrad Dybcio 
22548c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_tx_symbol_1_clk = {
22558c18b41bSKonrad Dybcio 	.halt_reg = 0x1d5c,
22568c18b41bSKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
22578c18b41bSKonrad Dybcio 	.clkr = {
22588c18b41bSKonrad Dybcio 		.enable_reg = 0x1d5c,
22598c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
22600519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
22618c18b41bSKonrad Dybcio 			.name = "gcc_ufs_tx_symbol_1_clk",
226274a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw },
226374a33facSKonrad Dybcio 			.num_parents = 1,
22648c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
22658c18b41bSKonrad Dybcio 		},
22668c18b41bSKonrad Dybcio 	},
22678c18b41bSKonrad Dybcio };
22688c18b41bSKonrad Dybcio 
22698c18b41bSKonrad Dybcio static struct clk_branch gcc_usb2_hs_phy_sleep_clk = {
22708c18b41bSKonrad Dybcio 	.halt_reg = 0x04ac,
22718c18b41bSKonrad Dybcio 	.clkr = {
22728c18b41bSKonrad Dybcio 		.enable_reg = 0x04ac,
22738c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
22740519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
22758c18b41bSKonrad Dybcio 			.name = "gcc_usb2_hs_phy_sleep_clk",
22760519d1d0SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
22770519d1d0SKonrad Dybcio 				.fw_name = "sleep",
22780519d1d0SKonrad Dybcio 				.name = "sleep"
22790519d1d0SKonrad Dybcio 			},
22800519d1d0SKonrad Dybcio 			.num_parents = 1,
22818c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
22828c18b41bSKonrad Dybcio 		},
22838c18b41bSKonrad Dybcio 	},
22848c18b41bSKonrad Dybcio };
22858c18b41bSKonrad Dybcio 
2286aec89f78SBastian Köcher static struct clk_branch gcc_usb30_master_clk = {
2287aec89f78SBastian Köcher 	.halt_reg = 0x03c8,
2288aec89f78SBastian Köcher 	.clkr = {
2289aec89f78SBastian Köcher 		.enable_reg = 0x03c8,
2290aec89f78SBastian Köcher 		.enable_mask = BIT(0),
22910519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2292aec89f78SBastian Köcher 			.name = "gcc_usb30_master_clk",
22930519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &usb30_master_clk_src.clkr.hw },
2294aec89f78SBastian Köcher 			.num_parents = 1,
2295aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2296aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2297aec89f78SBastian Köcher 		},
2298aec89f78SBastian Köcher 	},
2299aec89f78SBastian Köcher };
2300aec89f78SBastian Köcher 
2301aec89f78SBastian Köcher static struct clk_branch gcc_usb30_mock_utmi_clk = {
2302aec89f78SBastian Köcher 	.halt_reg = 0x03d0,
2303aec89f78SBastian Köcher 	.clkr = {
2304aec89f78SBastian Köcher 		.enable_reg = 0x03d0,
2305aec89f78SBastian Köcher 		.enable_mask = BIT(0),
23060519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2307aec89f78SBastian Köcher 			.name = "gcc_usb30_mock_utmi_clk",
23080519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &usb30_mock_utmi_clk_src.clkr.hw },
2309aec89f78SBastian Köcher 			.num_parents = 1,
2310aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2311aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2312aec89f78SBastian Köcher 		},
2313aec89f78SBastian Köcher 	},
2314aec89f78SBastian Köcher };
2315aec89f78SBastian Köcher 
23168c18b41bSKonrad Dybcio static struct clk_branch gcc_usb30_sleep_clk = {
23178c18b41bSKonrad Dybcio 	.halt_reg = 0x03cc,
23188c18b41bSKonrad Dybcio 	.clkr = {
23198c18b41bSKonrad Dybcio 		.enable_reg = 0x03cc,
23208c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
23210519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
23228c18b41bSKonrad Dybcio 			.name = "gcc_usb30_sleep_clk",
23230519d1d0SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
23240519d1d0SKonrad Dybcio 				.fw_name = "sleep",
23250519d1d0SKonrad Dybcio 				.name = "sleep"
23260519d1d0SKonrad Dybcio 			},
23270519d1d0SKonrad Dybcio 			.num_parents = 1,
23288c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
23298c18b41bSKonrad Dybcio 		},
23308c18b41bSKonrad Dybcio 	},
23318c18b41bSKonrad Dybcio };
23328c18b41bSKonrad Dybcio 
2333aec89f78SBastian Köcher static struct clk_branch gcc_usb3_phy_aux_clk = {
2334aec89f78SBastian Köcher 	.halt_reg = 0x1408,
2335aec89f78SBastian Köcher 	.clkr = {
2336aec89f78SBastian Köcher 		.enable_reg = 0x1408,
2337aec89f78SBastian Köcher 		.enable_mask = BIT(0),
23380519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2339aec89f78SBastian Köcher 			.name = "gcc_usb3_phy_aux_clk",
23400519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &usb3_phy_aux_clk_src.clkr.hw },
2341aec89f78SBastian Köcher 			.num_parents = 1,
2342aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2343aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2344aec89f78SBastian Köcher 		},
2345aec89f78SBastian Köcher 	},
2346aec89f78SBastian Köcher };
2347aec89f78SBastian Köcher 
2348b8f415c6SKonrad Dybcio static struct clk_branch gcc_usb3_phy_pipe_clk = {
2349b8f415c6SKonrad Dybcio 	.halt_reg = 0x140c,
2350b8f415c6SKonrad Dybcio 	.halt_check = BRANCH_HALT_SKIP,
2351b8f415c6SKonrad Dybcio 	.clkr = {
2352b8f415c6SKonrad Dybcio 		.enable_reg = 0x140c,
2353b8f415c6SKonrad Dybcio 		.enable_mask = BIT(0),
2354b8f415c6SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2355b8f415c6SKonrad Dybcio 			.name = "gcc_usb3_phy_pipe_clk",
2356b8f415c6SKonrad Dybcio 			.ops = &clk_branch2_ops,
2357b8f415c6SKonrad Dybcio 		},
2358b8f415c6SKonrad Dybcio 	},
2359b8f415c6SKonrad Dybcio };
2360b8f415c6SKonrad Dybcio 
23618c18b41bSKonrad Dybcio static struct clk_branch gcc_usb_hs_ahb_clk = {
23628c18b41bSKonrad Dybcio 	.halt_reg = 0x0488,
23638c18b41bSKonrad Dybcio 	.clkr = {
23648c18b41bSKonrad Dybcio 		.enable_reg = 0x0488,
23658c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
23660519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
23678c18b41bSKonrad Dybcio 			.name = "gcc_usb_hs_ahb_clk",
236874a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw },
236974a33facSKonrad Dybcio 			.num_parents = 1,
23708c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
23718c18b41bSKonrad Dybcio 		},
23728c18b41bSKonrad Dybcio 	},
23738c18b41bSKonrad Dybcio };
23748c18b41bSKonrad Dybcio 
2375aec89f78SBastian Köcher static struct clk_branch gcc_usb_hs_system_clk = {
2376aec89f78SBastian Köcher 	.halt_reg = 0x0484,
2377aec89f78SBastian Köcher 	.clkr = {
2378aec89f78SBastian Köcher 		.enable_reg = 0x0484,
2379aec89f78SBastian Köcher 		.enable_mask = BIT(0),
23800519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2381aec89f78SBastian Köcher 			.name = "gcc_usb_hs_system_clk",
23820519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &usb_hs_system_clk_src.clkr.hw },
2383aec89f78SBastian Köcher 			.num_parents = 1,
2384aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2385aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2386aec89f78SBastian Köcher 		},
2387aec89f78SBastian Köcher 	},
2388aec89f78SBastian Köcher };
2389aec89f78SBastian Köcher 
23908c18b41bSKonrad Dybcio static struct clk_branch gcc_usb_phy_cfg_ahb2phy_clk = {
23918c18b41bSKonrad Dybcio 	.halt_reg = 0x1a84,
23928c18b41bSKonrad Dybcio 	.clkr = {
23938c18b41bSKonrad Dybcio 		.enable_reg = 0x1a84,
23948c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
23950519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
23968c18b41bSKonrad Dybcio 			.name = "gcc_usb_phy_cfg_ahb2phy_clk",
23978c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
23988c18b41bSKonrad Dybcio 		},
23998c18b41bSKonrad Dybcio 	},
24008c18b41bSKonrad Dybcio };
24018c18b41bSKonrad Dybcio 
2402b8f415c6SKonrad Dybcio static struct clk_branch gpll0_out_mmsscc = {
2403b8f415c6SKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
2404b8f415c6SKonrad Dybcio 	.clkr = {
2405b8f415c6SKonrad Dybcio 		.enable_reg = 0x1484,
2406b8f415c6SKonrad Dybcio 		.enable_mask = BIT(26),
2407b8f415c6SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2408b8f415c6SKonrad Dybcio 			.name = "gpll0_out_mmsscc",
2409b8f415c6SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw },
2410b8f415c6SKonrad Dybcio 			.num_parents = 1,
2411b8f415c6SKonrad Dybcio 			.ops = &clk_branch2_ops,
2412b8f415c6SKonrad Dybcio 		},
2413b8f415c6SKonrad Dybcio 	},
2414b8f415c6SKonrad Dybcio };
2415b8f415c6SKonrad Dybcio 
2416b8f415c6SKonrad Dybcio static struct clk_branch gpll0_out_msscc = {
2417b8f415c6SKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
2418b8f415c6SKonrad Dybcio 	.clkr = {
2419b8f415c6SKonrad Dybcio 		.enable_reg = 0x1484,
2420b8f415c6SKonrad Dybcio 		.enable_mask = BIT(27),
2421b8f415c6SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2422b8f415c6SKonrad Dybcio 			.name = "gpll0_out_msscc",
2423b8f415c6SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw },
2424b8f415c6SKonrad Dybcio 			.num_parents = 1,
2425b8f415c6SKonrad Dybcio 			.ops = &clk_branch2_ops,
2426b8f415c6SKonrad Dybcio 		},
2427b8f415c6SKonrad Dybcio 	},
2428b8f415c6SKonrad Dybcio };
2429b8f415c6SKonrad Dybcio 
2430b8f415c6SKonrad Dybcio static struct clk_branch pcie_0_phy_ldo = {
2431b8f415c6SKonrad Dybcio 	.halt_reg = 0x1e00,
2432b8f415c6SKonrad Dybcio 	.halt_check = BRANCH_HALT_SKIP,
2433b8f415c6SKonrad Dybcio 	.clkr = {
2434b8f415c6SKonrad Dybcio 		.enable_reg = 0x1E00,
2435b8f415c6SKonrad Dybcio 		.enable_mask = BIT(0),
2436b8f415c6SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2437b8f415c6SKonrad Dybcio 			.name = "pcie_0_phy_ldo",
2438b8f415c6SKonrad Dybcio 			.ops = &clk_branch2_ops,
2439b8f415c6SKonrad Dybcio 		},
2440b8f415c6SKonrad Dybcio 	},
2441b8f415c6SKonrad Dybcio };
2442b8f415c6SKonrad Dybcio 
2443b8f415c6SKonrad Dybcio static struct clk_branch pcie_1_phy_ldo = {
2444b8f415c6SKonrad Dybcio 	.halt_reg = 0x1e04,
2445b8f415c6SKonrad Dybcio 	.halt_check = BRANCH_HALT_SKIP,
2446b8f415c6SKonrad Dybcio 	.clkr = {
2447b8f415c6SKonrad Dybcio 		.enable_reg = 0x1E04,
2448b8f415c6SKonrad Dybcio 		.enable_mask = BIT(0),
2449b8f415c6SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2450b8f415c6SKonrad Dybcio 			.name = "pcie_1_phy_ldo",
2451b8f415c6SKonrad Dybcio 			.ops = &clk_branch2_ops,
2452b8f415c6SKonrad Dybcio 		},
2453b8f415c6SKonrad Dybcio 	},
2454b8f415c6SKonrad Dybcio };
2455b8f415c6SKonrad Dybcio 
2456b8f415c6SKonrad Dybcio static struct clk_branch ufs_phy_ldo = {
2457b8f415c6SKonrad Dybcio 	.halt_reg = 0x1e0c,
2458b8f415c6SKonrad Dybcio 	.halt_check = BRANCH_HALT_SKIP,
2459b8f415c6SKonrad Dybcio 	.clkr = {
2460b8f415c6SKonrad Dybcio 		.enable_reg = 0x1E0C,
2461b8f415c6SKonrad Dybcio 		.enable_mask = BIT(0),
2462b8f415c6SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2463b8f415c6SKonrad Dybcio 			.name = "ufs_phy_ldo",
2464b8f415c6SKonrad Dybcio 			.ops = &clk_branch2_ops,
2465b8f415c6SKonrad Dybcio 		},
2466b8f415c6SKonrad Dybcio 	},
2467b8f415c6SKonrad Dybcio };
2468b8f415c6SKonrad Dybcio 
2469b8f415c6SKonrad Dybcio static struct clk_branch usb_ss_phy_ldo = {
2470b8f415c6SKonrad Dybcio 	.halt_reg = 0x1e08,
2471b8f415c6SKonrad Dybcio 	.halt_check = BRANCH_HALT_SKIP,
2472b8f415c6SKonrad Dybcio 	.clkr = {
2473b8f415c6SKonrad Dybcio 		.enable_reg = 0x1E08,
2474b8f415c6SKonrad Dybcio 		.enable_mask = BIT(0),
2475b8f415c6SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2476b8f415c6SKonrad Dybcio 			.name = "usb_ss_phy_ldo",
2477b8f415c6SKonrad Dybcio 			.ops = &clk_branch2_ops,
2478b8f415c6SKonrad Dybcio 		},
2479b8f415c6SKonrad Dybcio 	},
2480b8f415c6SKonrad Dybcio };
2481b8f415c6SKonrad Dybcio 
2482b8f415c6SKonrad Dybcio static struct clk_branch gcc_boot_rom_ahb_clk = {
2483b8f415c6SKonrad Dybcio 	.halt_reg = 0x0e04,
2484b8f415c6SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2485b8f415c6SKonrad Dybcio 	.hwcg_reg = 0x0e04,
2486b8f415c6SKonrad Dybcio 	.hwcg_bit = 1,
2487b8f415c6SKonrad Dybcio 	.clkr = {
2488b8f415c6SKonrad Dybcio 		.enable_reg = 0x1484,
2489b8f415c6SKonrad Dybcio 		.enable_mask = BIT(10),
2490b8f415c6SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2491b8f415c6SKonrad Dybcio 			.name = "gcc_boot_rom_ahb_clk",
2492b8f415c6SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &config_noc_clk_src.clkr.hw },
2493b8f415c6SKonrad Dybcio 			.num_parents = 1,
2494b8f415c6SKonrad Dybcio 			.ops = &clk_branch2_ops,
2495b8f415c6SKonrad Dybcio 		},
2496b8f415c6SKonrad Dybcio 	},
2497b8f415c6SKonrad Dybcio };
2498b8f415c6SKonrad Dybcio 
2499b8f415c6SKonrad Dybcio static struct clk_branch gcc_prng_ahb_clk = {
2500b8f415c6SKonrad Dybcio 	.halt_reg = 0x0d04,
2501b8f415c6SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2502b8f415c6SKonrad Dybcio 	.clkr = {
2503b8f415c6SKonrad Dybcio 		.enable_reg = 0x1484,
2504b8f415c6SKonrad Dybcio 		.enable_mask = BIT(13),
2505b8f415c6SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2506b8f415c6SKonrad Dybcio 			.name = "gcc_prng_ahb_clk",
2507b8f415c6SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw },
2508b8f415c6SKonrad Dybcio 			.num_parents = 1,
2509b8f415c6SKonrad Dybcio 			.ops = &clk_branch2_ops,
2510b8f415c6SKonrad Dybcio 		},
2511b8f415c6SKonrad Dybcio 	},
2512b8f415c6SKonrad Dybcio };
2513b8f415c6SKonrad Dybcio 
25148c18b41bSKonrad Dybcio static struct gdsc pcie_0_gdsc = {
25158c18b41bSKonrad Dybcio 		.gdscr = 0x1ac4,
25168c18b41bSKonrad Dybcio 		.pd = {
25178c18b41bSKonrad Dybcio 			.name = "pcie_0",
25188c18b41bSKonrad Dybcio 		},
25198c18b41bSKonrad Dybcio 		.pwrsts = PWRSTS_OFF_ON,
25208c18b41bSKonrad Dybcio };
25218c18b41bSKonrad Dybcio 
25228c18b41bSKonrad Dybcio static struct gdsc pcie_1_gdsc = {
25238c18b41bSKonrad Dybcio 		.gdscr = 0x1b44,
25248c18b41bSKonrad Dybcio 		.pd = {
25258c18b41bSKonrad Dybcio 			.name = "pcie_1",
25268c18b41bSKonrad Dybcio 		},
25278c18b41bSKonrad Dybcio 		.pwrsts = PWRSTS_OFF_ON,
25288c18b41bSKonrad Dybcio };
25298c18b41bSKonrad Dybcio 
25308c18b41bSKonrad Dybcio static struct gdsc usb30_gdsc = {
25318c18b41bSKonrad Dybcio 		.gdscr = 0x3c4,
25328c18b41bSKonrad Dybcio 		.pd = {
25338c18b41bSKonrad Dybcio 			.name = "usb30",
25348c18b41bSKonrad Dybcio 		},
25358c18b41bSKonrad Dybcio 		.pwrsts = PWRSTS_OFF_ON,
25368c18b41bSKonrad Dybcio };
25378c18b41bSKonrad Dybcio 
25388c18b41bSKonrad Dybcio static struct gdsc ufs_gdsc = {
25398c18b41bSKonrad Dybcio 		.gdscr = 0x1d44,
25408c18b41bSKonrad Dybcio 		.pd = {
25418c18b41bSKonrad Dybcio 			.name = "ufs",
25428c18b41bSKonrad Dybcio 		},
25438c18b41bSKonrad Dybcio 		.pwrsts = PWRSTS_OFF_ON,
25448c18b41bSKonrad Dybcio };
25458c18b41bSKonrad Dybcio 
2546aec89f78SBastian Köcher static struct clk_regmap *gcc_msm8994_clocks[] = {
2547aec89f78SBastian Köcher 	[GPLL0_EARLY] = &gpll0_early.clkr,
2548aec89f78SBastian Köcher 	[GPLL0] = &gpll0.clkr,
2549aec89f78SBastian Köcher 	[GPLL4_EARLY] = &gpll4_early.clkr,
2550aec89f78SBastian Köcher 	[GPLL4] = &gpll4.clkr,
255174a33facSKonrad Dybcio 	[CONFIG_NOC_CLK_SRC] = &config_noc_clk_src.clkr,
255274a33facSKonrad Dybcio 	[PERIPH_NOC_CLK_SRC] = &periph_noc_clk_src.clkr,
255374a33facSKonrad Dybcio 	[SYSTEM_NOC_CLK_SRC] = &system_noc_clk_src.clkr,
2554aec89f78SBastian Köcher 	[UFS_AXI_CLK_SRC] = &ufs_axi_clk_src.clkr,
2555aec89f78SBastian Köcher 	[USB30_MASTER_CLK_SRC] = &usb30_master_clk_src.clkr,
2556aec89f78SBastian Köcher 	[BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr,
2557aec89f78SBastian Köcher 	[BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr,
2558aec89f78SBastian Köcher 	[BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr,
2559aec89f78SBastian Köcher 	[BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr,
2560aec89f78SBastian Köcher 	[BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr,
2561aec89f78SBastian Köcher 	[BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr,
2562aec89f78SBastian Köcher 	[BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr,
2563aec89f78SBastian Köcher 	[BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr,
2564aec89f78SBastian Köcher 	[BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr,
2565aec89f78SBastian Köcher 	[BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr,
2566aec89f78SBastian Köcher 	[BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr,
2567aec89f78SBastian Köcher 	[BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr,
2568aec89f78SBastian Köcher 	[BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr,
2569aec89f78SBastian Köcher 	[BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr,
2570aec89f78SBastian Köcher 	[BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr,
2571aec89f78SBastian Köcher 	[BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr,
2572aec89f78SBastian Köcher 	[BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr,
2573aec89f78SBastian Köcher 	[BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr,
2574aec89f78SBastian Köcher 	[BLSP2_QUP1_I2C_APPS_CLK_SRC] = &blsp2_qup1_i2c_apps_clk_src.clkr,
2575aec89f78SBastian Köcher 	[BLSP2_QUP1_SPI_APPS_CLK_SRC] = &blsp2_qup1_spi_apps_clk_src.clkr,
2576aec89f78SBastian Köcher 	[BLSP2_QUP2_I2C_APPS_CLK_SRC] = &blsp2_qup2_i2c_apps_clk_src.clkr,
2577aec89f78SBastian Köcher 	[BLSP2_QUP2_SPI_APPS_CLK_SRC] = &blsp2_qup2_spi_apps_clk_src.clkr,
2578aec89f78SBastian Köcher 	[BLSP2_QUP3_I2C_APPS_CLK_SRC] = &blsp2_qup3_i2c_apps_clk_src.clkr,
2579aec89f78SBastian Köcher 	[BLSP2_QUP3_SPI_APPS_CLK_SRC] = &blsp2_qup3_spi_apps_clk_src.clkr,
2580aec89f78SBastian Köcher 	[BLSP2_QUP4_I2C_APPS_CLK_SRC] = &blsp2_qup4_i2c_apps_clk_src.clkr,
2581aec89f78SBastian Köcher 	[BLSP2_QUP4_SPI_APPS_CLK_SRC] = &blsp2_qup4_spi_apps_clk_src.clkr,
2582aec89f78SBastian Köcher 	[BLSP2_QUP5_I2C_APPS_CLK_SRC] = &blsp2_qup5_i2c_apps_clk_src.clkr,
2583aec89f78SBastian Köcher 	[BLSP2_QUP5_SPI_APPS_CLK_SRC] = &blsp2_qup5_spi_apps_clk_src.clkr,
2584aec89f78SBastian Köcher 	[BLSP2_QUP6_I2C_APPS_CLK_SRC] = &blsp2_qup6_i2c_apps_clk_src.clkr,
2585aec89f78SBastian Köcher 	[BLSP2_QUP6_SPI_APPS_CLK_SRC] = &blsp2_qup6_spi_apps_clk_src.clkr,
2586aec89f78SBastian Köcher 	[BLSP2_UART1_APPS_CLK_SRC] = &blsp2_uart1_apps_clk_src.clkr,
2587aec89f78SBastian Köcher 	[BLSP2_UART2_APPS_CLK_SRC] = &blsp2_uart2_apps_clk_src.clkr,
2588aec89f78SBastian Köcher 	[BLSP2_UART3_APPS_CLK_SRC] = &blsp2_uart3_apps_clk_src.clkr,
2589aec89f78SBastian Köcher 	[BLSP2_UART4_APPS_CLK_SRC] = &blsp2_uart4_apps_clk_src.clkr,
2590aec89f78SBastian Köcher 	[BLSP2_UART5_APPS_CLK_SRC] = &blsp2_uart5_apps_clk_src.clkr,
2591aec89f78SBastian Köcher 	[BLSP2_UART6_APPS_CLK_SRC] = &blsp2_uart6_apps_clk_src.clkr,
2592aec89f78SBastian Köcher 	[GP1_CLK_SRC] = &gp1_clk_src.clkr,
2593aec89f78SBastian Köcher 	[GP2_CLK_SRC] = &gp2_clk_src.clkr,
2594aec89f78SBastian Köcher 	[GP3_CLK_SRC] = &gp3_clk_src.clkr,
2595aec89f78SBastian Köcher 	[PCIE_0_AUX_CLK_SRC] = &pcie_0_aux_clk_src.clkr,
2596aec89f78SBastian Köcher 	[PCIE_0_PIPE_CLK_SRC] = &pcie_0_pipe_clk_src.clkr,
2597aec89f78SBastian Köcher 	[PCIE_1_AUX_CLK_SRC] = &pcie_1_aux_clk_src.clkr,
2598aec89f78SBastian Köcher 	[PCIE_1_PIPE_CLK_SRC] = &pcie_1_pipe_clk_src.clkr,
2599aec89f78SBastian Köcher 	[PDM2_CLK_SRC] = &pdm2_clk_src.clkr,
2600aec89f78SBastian Köcher 	[SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr,
2601aec89f78SBastian Köcher 	[SDCC2_APPS_CLK_SRC] = &sdcc2_apps_clk_src.clkr,
2602aec89f78SBastian Köcher 	[SDCC3_APPS_CLK_SRC] = &sdcc3_apps_clk_src.clkr,
2603aec89f78SBastian Köcher 	[SDCC4_APPS_CLK_SRC] = &sdcc4_apps_clk_src.clkr,
2604aec89f78SBastian Köcher 	[TSIF_REF_CLK_SRC] = &tsif_ref_clk_src.clkr,
2605aec89f78SBastian Köcher 	[USB30_MOCK_UTMI_CLK_SRC] = &usb30_mock_utmi_clk_src.clkr,
2606aec89f78SBastian Köcher 	[USB3_PHY_AUX_CLK_SRC] = &usb3_phy_aux_clk_src.clkr,
2607aec89f78SBastian Köcher 	[USB_HS_SYSTEM_CLK_SRC] = &usb_hs_system_clk_src.clkr,
2608aec89f78SBastian Köcher 	[GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr,
2609aec89f78SBastian Köcher 	[GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr,
2610aec89f78SBastian Köcher 	[GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr,
2611aec89f78SBastian Köcher 	[GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr,
2612aec89f78SBastian Köcher 	[GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr,
2613aec89f78SBastian Köcher 	[GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr,
2614aec89f78SBastian Köcher 	[GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr,
2615aec89f78SBastian Köcher 	[GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr,
2616aec89f78SBastian Köcher 	[GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr,
2617aec89f78SBastian Köcher 	[GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr,
2618aec89f78SBastian Köcher 	[GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr,
2619aec89f78SBastian Köcher 	[GCC_BLSP1_QUP6_I2C_APPS_CLK] = &gcc_blsp1_qup6_i2c_apps_clk.clkr,
2620aec89f78SBastian Köcher 	[GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr,
2621aec89f78SBastian Köcher 	[GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr,
2622aec89f78SBastian Köcher 	[GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr,
2623aec89f78SBastian Köcher 	[GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr,
2624aec89f78SBastian Köcher 	[GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr,
2625aec89f78SBastian Köcher 	[GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr,
2626aec89f78SBastian Köcher 	[GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr,
2627aec89f78SBastian Köcher 	[GCC_BLSP2_AHB_CLK] = &gcc_blsp2_ahb_clk.clkr,
2628aec89f78SBastian Köcher 	[GCC_BLSP2_QUP1_I2C_APPS_CLK] = &gcc_blsp2_qup1_i2c_apps_clk.clkr,
2629aec89f78SBastian Köcher 	[GCC_BLSP2_QUP1_SPI_APPS_CLK] = &gcc_blsp2_qup1_spi_apps_clk.clkr,
2630aec89f78SBastian Köcher 	[GCC_BLSP2_QUP2_I2C_APPS_CLK] = &gcc_blsp2_qup2_i2c_apps_clk.clkr,
2631aec89f78SBastian Köcher 	[GCC_BLSP2_QUP2_SPI_APPS_CLK] = &gcc_blsp2_qup2_spi_apps_clk.clkr,
2632aec89f78SBastian Köcher 	[GCC_BLSP2_QUP3_I2C_APPS_CLK] = &gcc_blsp2_qup3_i2c_apps_clk.clkr,
2633aec89f78SBastian Köcher 	[GCC_BLSP2_QUP3_SPI_APPS_CLK] = &gcc_blsp2_qup3_spi_apps_clk.clkr,
2634aec89f78SBastian Köcher 	[GCC_BLSP2_QUP4_I2C_APPS_CLK] = &gcc_blsp2_qup4_i2c_apps_clk.clkr,
2635aec89f78SBastian Köcher 	[GCC_BLSP2_QUP4_SPI_APPS_CLK] = &gcc_blsp2_qup4_spi_apps_clk.clkr,
2636aec89f78SBastian Köcher 	[GCC_BLSP2_QUP5_I2C_APPS_CLK] = &gcc_blsp2_qup5_i2c_apps_clk.clkr,
2637aec89f78SBastian Köcher 	[GCC_BLSP2_QUP5_SPI_APPS_CLK] = &gcc_blsp2_qup5_spi_apps_clk.clkr,
2638aec89f78SBastian Köcher 	[GCC_BLSP2_QUP6_I2C_APPS_CLK] = &gcc_blsp2_qup6_i2c_apps_clk.clkr,
2639aec89f78SBastian Köcher 	[GCC_BLSP2_QUP6_SPI_APPS_CLK] = &gcc_blsp2_qup6_spi_apps_clk.clkr,
2640aec89f78SBastian Köcher 	[GCC_BLSP2_UART1_APPS_CLK] = &gcc_blsp2_uart1_apps_clk.clkr,
2641aec89f78SBastian Köcher 	[GCC_BLSP2_UART2_APPS_CLK] = &gcc_blsp2_uart2_apps_clk.clkr,
2642aec89f78SBastian Köcher 	[GCC_BLSP2_UART3_APPS_CLK] = &gcc_blsp2_uart3_apps_clk.clkr,
2643aec89f78SBastian Köcher 	[GCC_BLSP2_UART4_APPS_CLK] = &gcc_blsp2_uart4_apps_clk.clkr,
2644aec89f78SBastian Köcher 	[GCC_BLSP2_UART5_APPS_CLK] = &gcc_blsp2_uart5_apps_clk.clkr,
2645aec89f78SBastian Köcher 	[GCC_BLSP2_UART6_APPS_CLK] = &gcc_blsp2_uart6_apps_clk.clkr,
2646aec89f78SBastian Köcher 	[GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
2647aec89f78SBastian Köcher 	[GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
2648aec89f78SBastian Köcher 	[GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
26498c18b41bSKonrad Dybcio 	[GCC_LPASS_Q6_AXI_CLK] = &gcc_lpass_q6_axi_clk.clkr,
26508c18b41bSKonrad Dybcio 	[GCC_MSS_Q6_BIMC_AXI_CLK] = &gcc_mss_q6_bimc_axi_clk.clkr,
2651aec89f78SBastian Köcher 	[GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,
26528c18b41bSKonrad Dybcio 	[GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr,
26538c18b41bSKonrad Dybcio 	[GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr,
2654aec89f78SBastian Köcher 	[GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,
26558c18b41bSKonrad Dybcio 	[GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr,
2656aec89f78SBastian Köcher 	[GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,
26578c18b41bSKonrad Dybcio 	[GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr,
26588c18b41bSKonrad Dybcio 	[GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr,
2659aec89f78SBastian Köcher 	[GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,
26608c18b41bSKonrad Dybcio 	[GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr,
2661aec89f78SBastian Köcher 	[GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
26628c18b41bSKonrad Dybcio 	[GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
2663eaff16bcSJeremy McNicoll 	[GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
26648c18b41bSKonrad Dybcio 	[GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
26658c18b41bSKonrad Dybcio 	[GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
26668c18b41bSKonrad Dybcio 	[GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
26678c18b41bSKonrad Dybcio 	[GCC_SDCC3_AHB_CLK] = &gcc_sdcc3_ahb_clk.clkr,
26688c18b41bSKonrad Dybcio 	[GCC_SDCC3_APPS_CLK] = &gcc_sdcc3_apps_clk.clkr,
26698c18b41bSKonrad Dybcio 	[GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr,
26708c18b41bSKonrad Dybcio 	[GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr,
2671aec89f78SBastian Köcher 	[GCC_SYS_NOC_UFS_AXI_CLK] = &gcc_sys_noc_ufs_axi_clk.clkr,
2672aec89f78SBastian Köcher 	[GCC_SYS_NOC_USB3_AXI_CLK] = &gcc_sys_noc_usb3_axi_clk.clkr,
26738c18b41bSKonrad Dybcio 	[GCC_TSIF_AHB_CLK] = &gcc_tsif_ahb_clk.clkr,
2674aec89f78SBastian Köcher 	[GCC_TSIF_REF_CLK] = &gcc_tsif_ref_clk.clkr,
26758c18b41bSKonrad Dybcio 	[GCC_UFS_AHB_CLK] = &gcc_ufs_ahb_clk.clkr,
2676aec89f78SBastian Köcher 	[GCC_UFS_AXI_CLK] = &gcc_ufs_axi_clk.clkr,
2677aec89f78SBastian Köcher 	[GCC_UFS_RX_CFG_CLK] = &gcc_ufs_rx_cfg_clk.clkr,
26788c18b41bSKonrad Dybcio 	[GCC_UFS_RX_SYMBOL_0_CLK] = &gcc_ufs_rx_symbol_0_clk.clkr,
26798c18b41bSKonrad Dybcio 	[GCC_UFS_RX_SYMBOL_1_CLK] = &gcc_ufs_rx_symbol_1_clk.clkr,
2680aec89f78SBastian Köcher 	[GCC_UFS_TX_CFG_CLK] = &gcc_ufs_tx_cfg_clk.clkr,
26818c18b41bSKonrad Dybcio 	[GCC_UFS_TX_SYMBOL_0_CLK] = &gcc_ufs_tx_symbol_0_clk.clkr,
26828c18b41bSKonrad Dybcio 	[GCC_UFS_TX_SYMBOL_1_CLK] = &gcc_ufs_tx_symbol_1_clk.clkr,
26838c18b41bSKonrad Dybcio 	[GCC_USB2_HS_PHY_SLEEP_CLK] = &gcc_usb2_hs_phy_sleep_clk.clkr,
2684aec89f78SBastian Köcher 	[GCC_USB30_MASTER_CLK] = &gcc_usb30_master_clk.clkr,
2685aec89f78SBastian Köcher 	[GCC_USB30_MOCK_UTMI_CLK] = &gcc_usb30_mock_utmi_clk.clkr,
26868c18b41bSKonrad Dybcio 	[GCC_USB30_SLEEP_CLK] = &gcc_usb30_sleep_clk.clkr,
2687aec89f78SBastian Köcher 	[GCC_USB3_PHY_AUX_CLK] = &gcc_usb3_phy_aux_clk.clkr,
2688b8f415c6SKonrad Dybcio 	[GCC_USB3_PHY_PIPE_CLK] = &gcc_usb3_phy_pipe_clk.clkr,
26898c18b41bSKonrad Dybcio 	[GCC_USB_HS_AHB_CLK] = &gcc_usb_hs_ahb_clk.clkr,
2690aec89f78SBastian Köcher 	[GCC_USB_HS_SYSTEM_CLK] = &gcc_usb_hs_system_clk.clkr,
26918c18b41bSKonrad Dybcio 	[GCC_USB_PHY_CFG_AHB2PHY_CLK] = &gcc_usb_phy_cfg_ahb2phy_clk.clkr,
2692b8f415c6SKonrad Dybcio 	[GPLL0_OUT_MMSSCC] = &gpll0_out_mmsscc.clkr,
2693b8f415c6SKonrad Dybcio 	[GPLL0_OUT_MSSCC] = &gpll0_out_msscc.clkr,
2694b8f415c6SKonrad Dybcio 	[PCIE_0_PHY_LDO] = &pcie_0_phy_ldo.clkr,
2695b8f415c6SKonrad Dybcio 	[PCIE_1_PHY_LDO] = &pcie_1_phy_ldo.clkr,
2696b8f415c6SKonrad Dybcio 	[UFS_PHY_LDO] = &ufs_phy_ldo.clkr,
2697b8f415c6SKonrad Dybcio 	[USB_SS_PHY_LDO] = &usb_ss_phy_ldo.clkr,
2698b8f415c6SKonrad Dybcio 	[GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
2699b8f415c6SKonrad Dybcio 	[GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
27008c18b41bSKonrad Dybcio };
27018c18b41bSKonrad Dybcio 
27028c18b41bSKonrad Dybcio static struct gdsc *gcc_msm8994_gdscs[] = {
270335bb1e6eSKonrad Dybcio 	/* This GDSC does not exist, but ABI has to remain intact */
270435bb1e6eSKonrad Dybcio 	[PCIE_GDSC] = NULL,
27058c18b41bSKonrad Dybcio 	[PCIE_0_GDSC] = &pcie_0_gdsc,
27068c18b41bSKonrad Dybcio 	[PCIE_1_GDSC] = &pcie_1_gdsc,
27078c18b41bSKonrad Dybcio 	[USB30_GDSC] = &usb30_gdsc,
27088c18b41bSKonrad Dybcio 	[UFS_GDSC] = &ufs_gdsc,
27098c18b41bSKonrad Dybcio };
27108c18b41bSKonrad Dybcio 
27118c18b41bSKonrad Dybcio static const struct qcom_reset_map gcc_msm8994_resets[] = {
27128c18b41bSKonrad Dybcio 	[USB3_PHY_RESET] = { 0x1400 },
27138c18b41bSKonrad Dybcio 	[USB3PHY_PHY_RESET] = { 0x1404 },
2714a888dc4cSKonrad Dybcio 	[MSS_RESET] = { 0x1680 },
27158c18b41bSKonrad Dybcio 	[PCIE_PHY_0_RESET] = { 0x1b18 },
27168c18b41bSKonrad Dybcio 	[PCIE_PHY_1_RESET] = { 0x1b98 },
27178c18b41bSKonrad Dybcio 	[QUSB2_PHY_RESET] = { 0x04b8 },
2718aec89f78SBastian Köcher };
2719aec89f78SBastian Köcher 
2720aec89f78SBastian Köcher static const struct regmap_config gcc_msm8994_regmap_config = {
2721aec89f78SBastian Köcher 	.reg_bits	= 32,
2722aec89f78SBastian Köcher 	.reg_stride	= 4,
2723aec89f78SBastian Köcher 	.val_bits	= 32,
2724aec89f78SBastian Köcher 	.max_register	= 0x2000,
2725aec89f78SBastian Köcher 	.fast_io	= true,
2726aec89f78SBastian Köcher };
2727aec89f78SBastian Köcher 
2728aec89f78SBastian Köcher static const struct qcom_cc_desc gcc_msm8994_desc = {
2729aec89f78SBastian Köcher 	.config = &gcc_msm8994_regmap_config,
2730aec89f78SBastian Köcher 	.clks = gcc_msm8994_clocks,
2731aec89f78SBastian Köcher 	.num_clks = ARRAY_SIZE(gcc_msm8994_clocks),
27328c18b41bSKonrad Dybcio 	.resets = gcc_msm8994_resets,
27338c18b41bSKonrad Dybcio 	.num_resets = ARRAY_SIZE(gcc_msm8994_resets),
27348c18b41bSKonrad Dybcio 	.gdscs = gcc_msm8994_gdscs,
27358c18b41bSKonrad Dybcio 	.num_gdscs = ARRAY_SIZE(gcc_msm8994_gdscs),
2736aec89f78SBastian Köcher };
2737aec89f78SBastian Köcher 
2738aec89f78SBastian Köcher static const struct of_device_id gcc_msm8994_match_table[] = {
2739c09b8023SKonrad Dybcio 	{ .compatible = "qcom,gcc-msm8992" },
2740c09b8023SKonrad Dybcio 	{ .compatible = "qcom,gcc-msm8994" }, /* V2 and V2.1 */
2741aec89f78SBastian Köcher 	{}
2742aec89f78SBastian Köcher };
2743aec89f78SBastian Köcher MODULE_DEVICE_TABLE(of, gcc_msm8994_match_table);
2744aec89f78SBastian Köcher 
2745aec89f78SBastian Köcher static int gcc_msm8994_probe(struct platform_device *pdev)
2746aec89f78SBastian Köcher {
2747c09b8023SKonrad Dybcio 	if (of_device_is_compatible(pdev->dev.of_node, "qcom,gcc-msm8992")) {
2748c09b8023SKonrad Dybcio 		/* MSM8992 features less clocks and some have different freq tables */
2749c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[UFS_AXI_CLK_SRC] = NULL;
2750c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_LPASS_Q6_AXI_CLK] = NULL;
2751c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[UFS_PHY_LDO] = NULL;
2752c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_UFS_AHB_CLK] = NULL;
2753c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_UFS_AXI_CLK] = NULL;
2754c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_UFS_RX_CFG_CLK] = NULL;
2755c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_UFS_RX_SYMBOL_0_CLK] = NULL;
2756c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_UFS_RX_SYMBOL_1_CLK] = NULL;
2757c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_UFS_TX_CFG_CLK] = NULL;
2758c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_UFS_TX_SYMBOL_0_CLK] = NULL;
2759c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_UFS_TX_SYMBOL_1_CLK] = NULL;
2760c09b8023SKonrad Dybcio 
2761c09b8023SKonrad Dybcio 		sdcc1_apps_clk_src.freq_tbl = ftbl_sdcc1_apps_clk_src_8992;
2762c09b8023SKonrad Dybcio 		blsp1_qup1_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2763c09b8023SKonrad Dybcio 		blsp1_qup2_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2764c09b8023SKonrad Dybcio 		blsp1_qup3_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2765c09b8023SKonrad Dybcio 		blsp1_qup4_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2766c09b8023SKonrad Dybcio 		blsp1_qup5_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2767c09b8023SKonrad Dybcio 		blsp1_qup6_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2768c09b8023SKonrad Dybcio 		blsp2_qup1_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2769c09b8023SKonrad Dybcio 		blsp2_qup2_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2770c09b8023SKonrad Dybcio 		blsp2_qup3_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2771c09b8023SKonrad Dybcio 		blsp2_qup4_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2772c09b8023SKonrad Dybcio 		blsp2_qup5_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2773c09b8023SKonrad Dybcio 		blsp2_qup6_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2774c09b8023SKonrad Dybcio 
2775c09b8023SKonrad Dybcio 		/*
2776c09b8023SKonrad Dybcio 		 * Some 8992 boards might *possibly* use
2777c09b8023SKonrad Dybcio 		 * PCIe1 clocks and controller, but it's not
2778c09b8023SKonrad Dybcio 		 * standard and they should be disabled otherwise.
2779c09b8023SKonrad Dybcio 		 */
2780c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[PCIE_1_AUX_CLK_SRC] = NULL;
2781c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[PCIE_1_PIPE_CLK_SRC] = NULL;
2782c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[PCIE_1_PHY_LDO] = NULL;
2783c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_PCIE_1_AUX_CLK] = NULL;
2784c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_PCIE_1_CFG_AHB_CLK] = NULL;
2785c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_PCIE_1_MSTR_AXI_CLK] = NULL;
2786c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_PCIE_1_PIPE_CLK] = NULL;
2787c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_PCIE_1_SLV_AXI_CLK] = NULL;
2788c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_SYS_NOC_UFS_AXI_CLK] = NULL;
2789c09b8023SKonrad Dybcio 	}
2790c09b8023SKonrad Dybcio 
2791aec89f78SBastian Köcher 	return qcom_cc_probe(pdev, &gcc_msm8994_desc);
2792aec89f78SBastian Köcher }
2793aec89f78SBastian Köcher 
2794aec89f78SBastian Köcher static struct platform_driver gcc_msm8994_driver = {
2795aec89f78SBastian Köcher 	.probe		= gcc_msm8994_probe,
2796aec89f78SBastian Köcher 	.driver		= {
2797aec89f78SBastian Köcher 		.name	= "gcc-msm8994",
2798aec89f78SBastian Köcher 		.of_match_table = gcc_msm8994_match_table,
2799aec89f78SBastian Köcher 	},
2800aec89f78SBastian Köcher };
2801aec89f78SBastian Köcher 
2802aec89f78SBastian Köcher static int __init gcc_msm8994_init(void)
2803aec89f78SBastian Köcher {
2804aec89f78SBastian Köcher 	return platform_driver_register(&gcc_msm8994_driver);
2805aec89f78SBastian Köcher }
2806aec89f78SBastian Köcher core_initcall(gcc_msm8994_init);
2807aec89f78SBastian Köcher 
2808aec89f78SBastian Köcher static void __exit gcc_msm8994_exit(void)
2809aec89f78SBastian Köcher {
2810aec89f78SBastian Köcher 	platform_driver_unregister(&gcc_msm8994_driver);
2811aec89f78SBastian Köcher }
2812aec89f78SBastian Köcher module_exit(gcc_msm8994_exit);
2813aec89f78SBastian Köcher 
2814aec89f78SBastian Köcher MODULE_DESCRIPTION("Qualcomm GCC MSM8994 Driver");
2815aec89f78SBastian Köcher MODULE_LICENSE("GPL v2");
2816aec89f78SBastian Köcher MODULE_ALIAS("platform:gcc-msm8994");
2817