xref: /openbmc/linux/drivers/clk/qcom/gcc-msm8994.c (revision c09b80238ceb2190d02779bb13ecbbd9a5605dc5)
197fb5e8dSThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only
2aec89f78SBastian Köcher /* Copyright (c) 2013-2016, The Linux Foundation. All rights reserved.
3aec89f78SBastian Köcher  */
4aec89f78SBastian Köcher 
5aec89f78SBastian Köcher #include <linux/kernel.h>
6aec89f78SBastian Köcher #include <linux/init.h>
7aec89f78SBastian Köcher #include <linux/err.h>
8aec89f78SBastian Köcher #include <linux/ctype.h>
9aec89f78SBastian Köcher #include <linux/io.h>
10aec89f78SBastian Köcher #include <linux/of.h>
11*c09b8023SKonrad Dybcio #include <linux/of_device.h>
12aec89f78SBastian Köcher #include <linux/platform_device.h>
13aec89f78SBastian Köcher #include <linux/module.h>
14aec89f78SBastian Köcher #include <linux/regmap.h>
15aec89f78SBastian Köcher 
16aec89f78SBastian Köcher #include <dt-bindings/clock/qcom,gcc-msm8994.h>
17aec89f78SBastian Köcher 
18aec89f78SBastian Köcher #include "common.h"
19aec89f78SBastian Köcher #include "clk-regmap.h"
20aec89f78SBastian Köcher #include "clk-alpha-pll.h"
21aec89f78SBastian Köcher #include "clk-rcg.h"
22aec89f78SBastian Köcher #include "clk-branch.h"
23aec89f78SBastian Köcher #include "reset.h"
248c18b41bSKonrad Dybcio #include "gdsc.h"
25aec89f78SBastian Köcher 
26aec89f78SBastian Köcher enum {
27aec89f78SBastian Köcher 	P_XO,
28aec89f78SBastian Köcher 	P_GPLL0,
29aec89f78SBastian Köcher 	P_GPLL4,
30aec89f78SBastian Köcher };
31aec89f78SBastian Köcher 
32aec89f78SBastian Köcher static struct clk_alpha_pll gpll0_early = {
330519d1d0SKonrad Dybcio 	.offset = 0,
3428d3f06eSAbhishek Sahu 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
35aec89f78SBastian Köcher 	.clkr = {
36aec89f78SBastian Köcher 		.enable_reg = 0x1480,
37aec89f78SBastian Köcher 		.enable_mask = BIT(0),
380519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
39aec89f78SBastian Köcher 			.name = "gpll0_early",
400519d1d0SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
410519d1d0SKonrad Dybcio 				.fw_name = "xo",
420519d1d0SKonrad Dybcio 			},
43aec89f78SBastian Köcher 			.num_parents = 1,
44aec89f78SBastian Köcher 			.ops = &clk_alpha_pll_ops,
45aec89f78SBastian Köcher 		},
46aec89f78SBastian Köcher 	},
47aec89f78SBastian Köcher };
48aec89f78SBastian Köcher 
49aec89f78SBastian Köcher static struct clk_alpha_pll_postdiv gpll0 = {
500519d1d0SKonrad Dybcio 	.offset = 0,
5128d3f06eSAbhishek Sahu 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
520519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
53aec89f78SBastian Köcher 		.name = "gpll0",
54aec89f78SBastian Köcher 		.parent_names = (const char *[]) { "gpll0_early" },
55aec89f78SBastian Köcher 		.num_parents = 1,
56aec89f78SBastian Köcher 		.ops = &clk_alpha_pll_postdiv_ops,
57aec89f78SBastian Köcher 	},
58aec89f78SBastian Köcher };
59aec89f78SBastian Köcher 
60aec89f78SBastian Köcher static struct clk_alpha_pll gpll4_early = {
61aec89f78SBastian Köcher 	.offset = 0x1dc0,
6228d3f06eSAbhishek Sahu 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
63aec89f78SBastian Köcher 	.clkr = {
64aec89f78SBastian Köcher 		.enable_reg = 0x1480,
65aec89f78SBastian Köcher 		.enable_mask = BIT(4),
660519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
67aec89f78SBastian Köcher 			.name = "gpll4_early",
680519d1d0SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
690519d1d0SKonrad Dybcio 				.fw_name = "xo",
700519d1d0SKonrad Dybcio 			},
71aec89f78SBastian Köcher 			.num_parents = 1,
72aec89f78SBastian Köcher 			.ops = &clk_alpha_pll_ops,
73aec89f78SBastian Köcher 		},
74aec89f78SBastian Köcher 	},
75aec89f78SBastian Köcher };
76aec89f78SBastian Köcher 
77aec89f78SBastian Köcher static struct clk_alpha_pll_postdiv gpll4 = {
78aec89f78SBastian Köcher 	.offset = 0x1dc0,
7928d3f06eSAbhishek Sahu 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
800519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
81aec89f78SBastian Köcher 		.name = "gpll4",
82aec89f78SBastian Köcher 		.parent_names = (const char *[]) { "gpll4_early" },
83aec89f78SBastian Köcher 		.num_parents = 1,
84aec89f78SBastian Köcher 		.ops = &clk_alpha_pll_postdiv_ops,
85aec89f78SBastian Köcher 	},
86aec89f78SBastian Köcher };
87aec89f78SBastian Köcher 
880519d1d0SKonrad Dybcio static const struct parent_map gcc_xo_gpll0_map[] = {
890519d1d0SKonrad Dybcio 	{ P_XO, 0 },
900519d1d0SKonrad Dybcio 	{ P_GPLL0, 1 },
910519d1d0SKonrad Dybcio };
920519d1d0SKonrad Dybcio 
930519d1d0SKonrad Dybcio static const struct clk_parent_data gcc_xo_gpll0[] = {
940519d1d0SKonrad Dybcio 	{ .fw_name = "xo" },
950519d1d0SKonrad Dybcio 	{ .hw = &gpll0.clkr.hw },
960519d1d0SKonrad Dybcio };
970519d1d0SKonrad Dybcio 
980519d1d0SKonrad Dybcio static const struct parent_map gcc_xo_gpll0_gpll4_map[] = {
990519d1d0SKonrad Dybcio 	{ P_XO, 0 },
1000519d1d0SKonrad Dybcio 	{ P_GPLL0, 1 },
1010519d1d0SKonrad Dybcio 	{ P_GPLL4, 5 },
1020519d1d0SKonrad Dybcio };
1030519d1d0SKonrad Dybcio 
1040519d1d0SKonrad Dybcio static const struct clk_parent_data gcc_xo_gpll0_gpll4[] = {
1050519d1d0SKonrad Dybcio 	{ .fw_name = "xo" },
1060519d1d0SKonrad Dybcio 	{ .hw = &gpll0.clkr.hw },
1070519d1d0SKonrad Dybcio 	{ .hw = &gpll4.clkr.hw },
1080519d1d0SKonrad Dybcio };
1090519d1d0SKonrad Dybcio 
11074a33facSKonrad Dybcio static struct clk_rcg2 system_noc_clk_src = {
11174a33facSKonrad Dybcio 	.cmd_rcgr = 0x0120,
11274a33facSKonrad Dybcio 	.hid_width = 5,
11374a33facSKonrad Dybcio 	.parent_map = gcc_xo_gpll0_map,
11474a33facSKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
11574a33facSKonrad Dybcio 		.name = "system_noc_clk_src",
11674a33facSKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
11774a33facSKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
11874a33facSKonrad Dybcio 		.ops = &clk_rcg2_ops,
11974a33facSKonrad Dybcio 	},
12074a33facSKonrad Dybcio };
12174a33facSKonrad Dybcio 
12274a33facSKonrad Dybcio static struct clk_rcg2 config_noc_clk_src = {
12374a33facSKonrad Dybcio 	.cmd_rcgr = 0x0150,
12474a33facSKonrad Dybcio 	.hid_width = 5,
12574a33facSKonrad Dybcio 	.parent_map = gcc_xo_gpll0_map,
12674a33facSKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
12774a33facSKonrad Dybcio 		.name = "config_noc_clk_src",
12874a33facSKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
12974a33facSKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
13074a33facSKonrad Dybcio 		.ops = &clk_rcg2_ops,
13174a33facSKonrad Dybcio 	},
13274a33facSKonrad Dybcio };
13374a33facSKonrad Dybcio 
13474a33facSKonrad Dybcio static struct clk_rcg2 periph_noc_clk_src = {
13574a33facSKonrad Dybcio 	.cmd_rcgr = 0x0190,
13674a33facSKonrad Dybcio 	.hid_width = 5,
13774a33facSKonrad Dybcio 	.parent_map = gcc_xo_gpll0_map,
13874a33facSKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
13974a33facSKonrad Dybcio 		.name = "periph_noc_clk_src",
14074a33facSKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
14174a33facSKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
14274a33facSKonrad Dybcio 		.ops = &clk_rcg2_ops,
14374a33facSKonrad Dybcio 	},
14474a33facSKonrad Dybcio };
14574a33facSKonrad Dybcio 
146aec89f78SBastian Köcher static struct freq_tbl ftbl_ufs_axi_clk_src[] = {
147aec89f78SBastian Köcher 	F(50000000, P_GPLL0, 12, 0, 0),
148aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
149aec89f78SBastian Köcher 	F(150000000, P_GPLL0, 4, 0, 0),
150aec89f78SBastian Köcher 	F(171430000, P_GPLL0, 3.5, 0, 0),
151aec89f78SBastian Köcher 	F(200000000, P_GPLL0, 3, 0, 0),
152aec89f78SBastian Köcher 	F(240000000, P_GPLL0, 2.5, 0, 0),
153aec89f78SBastian Köcher 	{ }
154aec89f78SBastian Köcher };
155aec89f78SBastian Köcher 
156aec89f78SBastian Köcher static struct clk_rcg2 ufs_axi_clk_src = {
157aec89f78SBastian Köcher 	.cmd_rcgr = 0x1d68,
158aec89f78SBastian Köcher 	.mnd_width = 8,
159aec89f78SBastian Köcher 	.hid_width = 5,
160aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
161aec89f78SBastian Köcher 	.freq_tbl = ftbl_ufs_axi_clk_src,
1620519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
163aec89f78SBastian Köcher 		.name = "ufs_axi_clk_src",
1640519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
165aec89f78SBastian Köcher 		.num_parents = 2,
166aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
167aec89f78SBastian Köcher 	},
168aec89f78SBastian Köcher };
169aec89f78SBastian Köcher 
170aec89f78SBastian Köcher static struct freq_tbl ftbl_usb30_master_clk_src[] = {
171aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
172aec89f78SBastian Köcher 	F(125000000, P_GPLL0, 1, 5, 24),
173aec89f78SBastian Köcher 	{ }
174aec89f78SBastian Köcher };
175aec89f78SBastian Köcher 
176aec89f78SBastian Köcher static struct clk_rcg2 usb30_master_clk_src = {
177aec89f78SBastian Köcher 	.cmd_rcgr = 0x03d4,
178aec89f78SBastian Köcher 	.mnd_width = 8,
179aec89f78SBastian Köcher 	.hid_width = 5,
180aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
181aec89f78SBastian Köcher 	.freq_tbl = ftbl_usb30_master_clk_src,
1820519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
183aec89f78SBastian Köcher 		.name = "usb30_master_clk_src",
1840519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
185aec89f78SBastian Köcher 		.num_parents = 2,
186aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
187aec89f78SBastian Köcher 	},
188aec89f78SBastian Köcher };
189aec89f78SBastian Köcher 
190aec89f78SBastian Köcher static struct freq_tbl ftbl_blsp_i2c_apps_clk_src[] = {
191aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
192aec89f78SBastian Köcher 	F(50000000, P_GPLL0, 12, 0, 0),
193aec89f78SBastian Köcher 	{ }
194aec89f78SBastian Köcher };
195aec89f78SBastian Köcher 
196aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = {
197aec89f78SBastian Köcher 	.cmd_rcgr = 0x0660,
198aec89f78SBastian Köcher 	.hid_width = 5,
199aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
200aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
2010519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
202aec89f78SBastian Köcher 		.name = "blsp1_qup1_i2c_apps_clk_src",
2030519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
204aec89f78SBastian Köcher 		.num_parents = 2,
205aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
206aec89f78SBastian Köcher 	},
207aec89f78SBastian Köcher };
208aec89f78SBastian Köcher 
20980863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup1_spi_apps_clk_src[] = {
210aec89f78SBastian Köcher 	F(960000, P_XO, 10, 1, 2),
211aec89f78SBastian Köcher 	F(4800000, P_XO, 4, 0, 0),
212aec89f78SBastian Köcher 	F(9600000, P_XO, 2, 0, 0),
213aec89f78SBastian Köcher 	F(15000000, P_GPLL0, 10, 1, 4),
214aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
215aec89f78SBastian Köcher 	F(24000000, P_GPLL0, 12.5, 1, 2),
216aec89f78SBastian Köcher 	F(25000000, P_GPLL0, 12, 1, 2),
217aec89f78SBastian Köcher 	F(48000000, P_GPLL0, 12.5, 0, 0),
218aec89f78SBastian Köcher 	F(50000000, P_GPLL0, 12, 0, 0),
219aec89f78SBastian Köcher 	{ }
220aec89f78SBastian Köcher };
221aec89f78SBastian Köcher 
222*c09b8023SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup_spi_apps_clk_src_8992[] = {
223*c09b8023SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
224*c09b8023SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
225*c09b8023SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
226*c09b8023SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
227*c09b8023SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
228*c09b8023SKonrad Dybcio 	F(25000000, P_GPLL0, 12, 1, 2),
229*c09b8023SKonrad Dybcio 	F(50000000, P_GPLL0, 12, 0, 0),
230*c09b8023SKonrad Dybcio 	{ }
231*c09b8023SKonrad Dybcio };
232*c09b8023SKonrad Dybcio 
233aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = {
234aec89f78SBastian Köcher 	.cmd_rcgr = 0x064c,
235aec89f78SBastian Köcher 	.mnd_width = 8,
236aec89f78SBastian Köcher 	.hid_width = 5,
237aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
23880863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp1_qup1_spi_apps_clk_src,
2390519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
240aec89f78SBastian Köcher 		.name = "blsp1_qup1_spi_apps_clk_src",
2410519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
242aec89f78SBastian Köcher 		.num_parents = 2,
243aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
244aec89f78SBastian Köcher 	},
245aec89f78SBastian Köcher };
246aec89f78SBastian Köcher 
247aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = {
248aec89f78SBastian Köcher 	.cmd_rcgr = 0x06e0,
249aec89f78SBastian Köcher 	.hid_width = 5,
250aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
251aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
2520519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
253aec89f78SBastian Köcher 		.name = "blsp1_qup2_i2c_apps_clk_src",
2540519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
255aec89f78SBastian Köcher 		.num_parents = 2,
256aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
257aec89f78SBastian Köcher 	},
258aec89f78SBastian Köcher };
259aec89f78SBastian Köcher 
26080863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup2_spi_apps_clk_src[] = {
26180863521SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
26280863521SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
26380863521SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
26480863521SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
26580863521SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
26680863521SKonrad Dybcio 	F(24000000, P_GPLL0, 12.5, 1, 2),
26780863521SKonrad Dybcio 	F(25000000, P_GPLL0, 12, 1, 2),
26880863521SKonrad Dybcio 	F(42860000, P_GPLL0, 14, 0, 0),
26980863521SKonrad Dybcio 	F(46150000, P_GPLL0, 13, 0, 0),
27080863521SKonrad Dybcio 	{ }
27180863521SKonrad Dybcio };
27280863521SKonrad Dybcio 
273aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = {
274aec89f78SBastian Köcher 	.cmd_rcgr = 0x06cc,
275aec89f78SBastian Köcher 	.mnd_width = 8,
276aec89f78SBastian Köcher 	.hid_width = 5,
277aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
27880863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp1_qup2_spi_apps_clk_src,
2790519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
280aec89f78SBastian Köcher 		.name = "blsp1_qup2_spi_apps_clk_src",
2810519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
282aec89f78SBastian Köcher 		.num_parents = 2,
283aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
284aec89f78SBastian Köcher 	},
285aec89f78SBastian Köcher };
286aec89f78SBastian Köcher 
287aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = {
288aec89f78SBastian Köcher 	.cmd_rcgr = 0x0760,
289aec89f78SBastian Köcher 	.hid_width = 5,
290aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
291aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
2920519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
293aec89f78SBastian Köcher 		.name = "blsp1_qup3_i2c_apps_clk_src",
2940519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
295aec89f78SBastian Köcher 		.num_parents = 2,
296aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
297aec89f78SBastian Köcher 	},
298aec89f78SBastian Köcher };
299aec89f78SBastian Köcher 
30080863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup3_4_spi_apps_clk_src[] = {
30180863521SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
30280863521SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
30380863521SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
30480863521SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
30580863521SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
30680863521SKonrad Dybcio 	F(24000000, P_GPLL0, 12.5, 1, 2),
30780863521SKonrad Dybcio 	F(25000000, P_GPLL0, 12, 1, 2),
30880863521SKonrad Dybcio 	F(42860000, P_GPLL0, 14, 0, 0),
30980863521SKonrad Dybcio 	F(44440000, P_GPLL0, 13.5, 0, 0),
31080863521SKonrad Dybcio 	{ }
31180863521SKonrad Dybcio };
31280863521SKonrad Dybcio 
313aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = {
314aec89f78SBastian Köcher 	.cmd_rcgr = 0x074c,
315aec89f78SBastian Köcher 	.mnd_width = 8,
316aec89f78SBastian Köcher 	.hid_width = 5,
317aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
31880863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp1_qup3_4_spi_apps_clk_src,
3190519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
320aec89f78SBastian Köcher 		.name = "blsp1_qup3_spi_apps_clk_src",
3210519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
322aec89f78SBastian Köcher 		.num_parents = 2,
323aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
324aec89f78SBastian Köcher 	},
325aec89f78SBastian Köcher };
326aec89f78SBastian Köcher 
327aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = {
328aec89f78SBastian Köcher 	.cmd_rcgr = 0x07e0,
329aec89f78SBastian Köcher 	.hid_width = 5,
330aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
331aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
3320519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
333aec89f78SBastian Köcher 		.name = "blsp1_qup4_i2c_apps_clk_src",
3340519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
335aec89f78SBastian Köcher 		.num_parents = 2,
336aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
337aec89f78SBastian Köcher 	},
338aec89f78SBastian Köcher };
339aec89f78SBastian Köcher 
340aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = {
341aec89f78SBastian Köcher 	.cmd_rcgr = 0x07cc,
342aec89f78SBastian Köcher 	.mnd_width = 8,
343aec89f78SBastian Köcher 	.hid_width = 5,
344aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
34580863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp1_qup3_4_spi_apps_clk_src,
3460519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
347aec89f78SBastian Köcher 		.name = "blsp1_qup4_spi_apps_clk_src",
3480519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
349aec89f78SBastian Köcher 		.num_parents = 2,
350aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
351aec89f78SBastian Köcher 	},
352aec89f78SBastian Köcher };
353aec89f78SBastian Köcher 
354aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = {
355aec89f78SBastian Köcher 	.cmd_rcgr = 0x0860,
356aec89f78SBastian Köcher 	.hid_width = 5,
357aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
358aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
3590519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
360aec89f78SBastian Köcher 		.name = "blsp1_qup5_i2c_apps_clk_src",
3610519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
362aec89f78SBastian Köcher 		.num_parents = 2,
363aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
364aec89f78SBastian Köcher 	},
365aec89f78SBastian Köcher };
366aec89f78SBastian Köcher 
36780863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup5_spi_apps_clk_src[] = {
36880863521SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
36980863521SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
37080863521SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
37180863521SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
37280863521SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
37380863521SKonrad Dybcio 	F(24000000, P_GPLL0, 12.5, 1, 2),
37480863521SKonrad Dybcio 	F(25000000, P_GPLL0, 12, 1, 2),
37580863521SKonrad Dybcio 	F(40000000, P_GPLL0, 15, 0, 0),
37680863521SKonrad Dybcio 	F(42860000, P_GPLL0, 14, 0, 0),
37780863521SKonrad Dybcio 	{ }
37880863521SKonrad Dybcio };
37980863521SKonrad Dybcio 
380aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = {
381aec89f78SBastian Köcher 	.cmd_rcgr = 0x084c,
382aec89f78SBastian Köcher 	.mnd_width = 8,
383aec89f78SBastian Köcher 	.hid_width = 5,
384aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
38580863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp1_qup5_spi_apps_clk_src,
3860519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
387aec89f78SBastian Köcher 		.name = "blsp1_qup5_spi_apps_clk_src",
3880519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
389aec89f78SBastian Köcher 		.num_parents = 2,
390aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
391aec89f78SBastian Köcher 	},
392aec89f78SBastian Köcher };
393aec89f78SBastian Köcher 
394aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = {
395aec89f78SBastian Köcher 	.cmd_rcgr = 0x08e0,
396aec89f78SBastian Köcher 	.hid_width = 5,
397aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
398aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
3990519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
400aec89f78SBastian Köcher 		.name = "blsp1_qup6_i2c_apps_clk_src",
4010519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
402aec89f78SBastian Köcher 		.num_parents = 2,
403aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
404aec89f78SBastian Köcher 	},
405aec89f78SBastian Köcher };
406aec89f78SBastian Köcher 
40780863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup6_spi_apps_clk_src[] = {
40880863521SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
40980863521SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
41080863521SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
41180863521SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
41280863521SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
41380863521SKonrad Dybcio 	F(24000000, P_GPLL0, 12.5, 1, 2),
41480863521SKonrad Dybcio 	F(27906976, P_GPLL0, 1, 2, 43),
41580863521SKonrad Dybcio 	F(41380000, P_GPLL0, 15, 0, 0),
41680863521SKonrad Dybcio 	F(42860000, P_GPLL0, 14, 0, 0),
41780863521SKonrad Dybcio 	{ }
41880863521SKonrad Dybcio };
41980863521SKonrad Dybcio 
420aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = {
421aec89f78SBastian Köcher 	.cmd_rcgr = 0x08cc,
422aec89f78SBastian Köcher 	.mnd_width = 8,
423aec89f78SBastian Köcher 	.hid_width = 5,
424aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
42580863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp1_qup6_spi_apps_clk_src,
4260519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
427aec89f78SBastian Köcher 		.name = "blsp1_qup6_spi_apps_clk_src",
4280519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
429aec89f78SBastian Köcher 		.num_parents = 2,
430aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
431aec89f78SBastian Köcher 	},
432aec89f78SBastian Köcher };
433aec89f78SBastian Köcher 
434aec89f78SBastian Köcher static struct freq_tbl ftbl_blsp_uart_apps_clk_src[] = {
435aec89f78SBastian Köcher 	F(3686400, P_GPLL0, 1, 96, 15625),
436aec89f78SBastian Köcher 	F(7372800, P_GPLL0, 1, 192, 15625),
437aec89f78SBastian Köcher 	F(14745600, P_GPLL0, 1, 384, 15625),
438aec89f78SBastian Köcher 	F(16000000, P_GPLL0, 5, 2, 15),
439aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
440aec89f78SBastian Köcher 	F(24000000, P_GPLL0, 5, 1, 5),
441aec89f78SBastian Köcher 	F(32000000, P_GPLL0, 1, 4, 75),
442aec89f78SBastian Köcher 	F(40000000, P_GPLL0, 15, 0, 0),
443aec89f78SBastian Köcher 	F(46400000, P_GPLL0, 1, 29, 375),
444aec89f78SBastian Köcher 	F(48000000, P_GPLL0, 12.5, 0, 0),
445aec89f78SBastian Köcher 	F(51200000, P_GPLL0, 1, 32, 375),
446aec89f78SBastian Köcher 	F(56000000, P_GPLL0, 1, 7, 75),
447aec89f78SBastian Köcher 	F(58982400, P_GPLL0, 1, 1536, 15625),
448aec89f78SBastian Köcher 	F(60000000, P_GPLL0, 10, 0, 0),
449aec89f78SBastian Köcher 	F(63160000, P_GPLL0, 9.5, 0, 0),
450aec89f78SBastian Köcher 	{ }
451aec89f78SBastian Köcher };
452aec89f78SBastian Köcher 
453aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart1_apps_clk_src = {
454aec89f78SBastian Köcher 	.cmd_rcgr = 0x068c,
455aec89f78SBastian Köcher 	.mnd_width = 16,
456aec89f78SBastian Köcher 	.hid_width = 5,
457aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
458aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
4590519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
460aec89f78SBastian Köcher 		.name = "blsp1_uart1_apps_clk_src",
4610519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
462aec89f78SBastian Köcher 		.num_parents = 2,
463aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
464aec89f78SBastian Köcher 	},
465aec89f78SBastian Köcher };
466aec89f78SBastian Köcher 
467aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart2_apps_clk_src = {
468aec89f78SBastian Köcher 	.cmd_rcgr = 0x070c,
469aec89f78SBastian Köcher 	.mnd_width = 16,
470aec89f78SBastian Köcher 	.hid_width = 5,
471aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
472aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
4730519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
474aec89f78SBastian Köcher 		.name = "blsp1_uart2_apps_clk_src",
4750519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
476aec89f78SBastian Köcher 		.num_parents = 2,
477aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
478aec89f78SBastian Köcher 	},
479aec89f78SBastian Köcher };
480aec89f78SBastian Köcher 
481aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart3_apps_clk_src = {
482aec89f78SBastian Köcher 	.cmd_rcgr = 0x078c,
483aec89f78SBastian Köcher 	.mnd_width = 16,
484aec89f78SBastian Köcher 	.hid_width = 5,
485aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
486aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
4870519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
488aec89f78SBastian Köcher 		.name = "blsp1_uart3_apps_clk_src",
4890519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
490aec89f78SBastian Köcher 		.num_parents = 2,
491aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
492aec89f78SBastian Köcher 	},
493aec89f78SBastian Köcher };
494aec89f78SBastian Köcher 
495aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart4_apps_clk_src = {
496aec89f78SBastian Köcher 	.cmd_rcgr = 0x080c,
497aec89f78SBastian Köcher 	.mnd_width = 16,
498aec89f78SBastian Köcher 	.hid_width = 5,
499aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
500aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
5010519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
502aec89f78SBastian Köcher 		.name = "blsp1_uart4_apps_clk_src",
5030519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
504aec89f78SBastian Köcher 		.num_parents = 2,
505aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
506aec89f78SBastian Köcher 	},
507aec89f78SBastian Köcher };
508aec89f78SBastian Köcher 
509aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart5_apps_clk_src = {
510aec89f78SBastian Köcher 	.cmd_rcgr = 0x088c,
511aec89f78SBastian Köcher 	.mnd_width = 16,
512aec89f78SBastian Köcher 	.hid_width = 5,
513aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
514aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
5150519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
516aec89f78SBastian Köcher 		.name = "blsp1_uart5_apps_clk_src",
5170519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
518aec89f78SBastian Köcher 		.num_parents = 2,
519aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
520aec89f78SBastian Köcher 	},
521aec89f78SBastian Köcher };
522aec89f78SBastian Köcher 
523aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart6_apps_clk_src = {
524aec89f78SBastian Köcher 	.cmd_rcgr = 0x090c,
525aec89f78SBastian Köcher 	.mnd_width = 16,
526aec89f78SBastian Köcher 	.hid_width = 5,
527aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
528aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
5290519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
530aec89f78SBastian Köcher 		.name = "blsp1_uart6_apps_clk_src",
5310519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
532aec89f78SBastian Köcher 		.num_parents = 2,
533aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
534aec89f78SBastian Köcher 	},
535aec89f78SBastian Köcher };
536aec89f78SBastian Köcher 
537aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup1_i2c_apps_clk_src = {
538aec89f78SBastian Köcher 	.cmd_rcgr = 0x09a0,
539aec89f78SBastian Köcher 	.hid_width = 5,
540aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
541aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
5420519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
543aec89f78SBastian Köcher 		.name = "blsp2_qup1_i2c_apps_clk_src",
5440519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
545aec89f78SBastian Köcher 		.num_parents = 2,
546aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
547aec89f78SBastian Köcher 	},
548aec89f78SBastian Köcher };
549aec89f78SBastian Köcher 
55080863521SKonrad Dybcio static struct freq_tbl ftbl_blsp2_qup1_2_spi_apps_clk_src[] = {
55180863521SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
55280863521SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
55380863521SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
55480863521SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
55580863521SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
55680863521SKonrad Dybcio 	F(24000000, P_GPLL0, 12.5, 1, 2),
55780863521SKonrad Dybcio 	F(25000000, P_GPLL0, 12, 1, 2),
55880863521SKonrad Dybcio 	F(42860000, P_GPLL0, 14, 0, 0),
55980863521SKonrad Dybcio 	F(44440000, P_GPLL0, 13.5, 0, 0),
56080863521SKonrad Dybcio 	{ }
56180863521SKonrad Dybcio };
56280863521SKonrad Dybcio 
563aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup1_spi_apps_clk_src = {
564aec89f78SBastian Köcher 	.cmd_rcgr = 0x098c,
565aec89f78SBastian Köcher 	.mnd_width = 8,
566aec89f78SBastian Köcher 	.hid_width = 5,
567aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
56880863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp2_qup1_2_spi_apps_clk_src,
5690519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
570aec89f78SBastian Köcher 		.name = "blsp2_qup1_spi_apps_clk_src",
5710519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
572aec89f78SBastian Köcher 		.num_parents = 2,
573aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
574aec89f78SBastian Köcher 	},
575aec89f78SBastian Köcher };
576aec89f78SBastian Köcher 
577aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup2_i2c_apps_clk_src = {
578aec89f78SBastian Köcher 	.cmd_rcgr = 0x0a20,
579aec89f78SBastian Köcher 	.hid_width = 5,
580aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
581aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
5820519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
583aec89f78SBastian Köcher 		.name = "blsp2_qup2_i2c_apps_clk_src",
5840519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
585aec89f78SBastian Köcher 		.num_parents = 2,
586aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
587aec89f78SBastian Köcher 	},
588aec89f78SBastian Köcher };
589aec89f78SBastian Köcher 
590aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup2_spi_apps_clk_src = {
591aec89f78SBastian Köcher 	.cmd_rcgr = 0x0a0c,
592aec89f78SBastian Köcher 	.mnd_width = 8,
593aec89f78SBastian Köcher 	.hid_width = 5,
594aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
59580863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp2_qup1_2_spi_apps_clk_src,
5960519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
597aec89f78SBastian Köcher 		.name = "blsp2_qup2_spi_apps_clk_src",
5980519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
599aec89f78SBastian Köcher 		.num_parents = 2,
600aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
601aec89f78SBastian Köcher 	},
602aec89f78SBastian Köcher };
603aec89f78SBastian Köcher 
60480863521SKonrad Dybcio static struct freq_tbl ftbl_blsp2_qup3_4_spi_apps_clk_src[] = {
60580863521SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
60680863521SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
60780863521SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
60880863521SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
60980863521SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
61080863521SKonrad Dybcio 	F(24000000, P_GPLL0, 12.5, 1, 2),
61180863521SKonrad Dybcio 	F(25000000, P_GPLL0, 12, 1, 2),
61280863521SKonrad Dybcio 	F(42860000, P_GPLL0, 14, 0, 0),
61380863521SKonrad Dybcio 	F(48000000, P_GPLL0, 12.5, 0, 0),
61480863521SKonrad Dybcio 	{ }
61580863521SKonrad Dybcio };
61680863521SKonrad Dybcio 
617aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup3_i2c_apps_clk_src = {
618aec89f78SBastian Köcher 	.cmd_rcgr = 0x0aa0,
619aec89f78SBastian Köcher 	.hid_width = 5,
620aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
621aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
6220519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
623aec89f78SBastian Köcher 		.name = "blsp2_qup3_i2c_apps_clk_src",
6240519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
625aec89f78SBastian Köcher 		.num_parents = 2,
626aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
627aec89f78SBastian Köcher 	},
628aec89f78SBastian Köcher };
629aec89f78SBastian Köcher 
630aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup3_spi_apps_clk_src = {
631aec89f78SBastian Köcher 	.cmd_rcgr = 0x0a8c,
632aec89f78SBastian Köcher 	.mnd_width = 8,
633aec89f78SBastian Köcher 	.hid_width = 5,
634aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
63580863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp2_qup3_4_spi_apps_clk_src,
6360519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
637aec89f78SBastian Köcher 		.name = "blsp2_qup3_spi_apps_clk_src",
6380519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
639aec89f78SBastian Köcher 		.num_parents = 2,
640aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
641aec89f78SBastian Köcher 	},
642aec89f78SBastian Köcher };
643aec89f78SBastian Köcher 
644aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup4_i2c_apps_clk_src = {
645aec89f78SBastian Köcher 	.cmd_rcgr = 0x0b20,
646aec89f78SBastian Köcher 	.hid_width = 5,
647aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
648aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
6490519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
650aec89f78SBastian Köcher 		.name = "blsp2_qup4_i2c_apps_clk_src",
6510519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
652aec89f78SBastian Köcher 		.num_parents = 2,
653aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
654aec89f78SBastian Köcher 	},
655aec89f78SBastian Köcher };
656aec89f78SBastian Köcher 
657aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup4_spi_apps_clk_src = {
658aec89f78SBastian Köcher 	.cmd_rcgr = 0x0b0c,
659aec89f78SBastian Köcher 	.mnd_width = 8,
660aec89f78SBastian Köcher 	.hid_width = 5,
661aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
66280863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp2_qup3_4_spi_apps_clk_src,
6630519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
664aec89f78SBastian Köcher 		.name = "blsp2_qup4_spi_apps_clk_src",
6650519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
666aec89f78SBastian Köcher 		.num_parents = 2,
667aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
668aec89f78SBastian Köcher 	},
669aec89f78SBastian Köcher };
670aec89f78SBastian Köcher 
671aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup5_i2c_apps_clk_src = {
672aec89f78SBastian Köcher 	.cmd_rcgr = 0x0ba0,
673aec89f78SBastian Köcher 	.hid_width = 5,
674aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
675aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
6760519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
677aec89f78SBastian Köcher 		.name = "blsp2_qup5_i2c_apps_clk_src",
6780519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
679aec89f78SBastian Köcher 		.num_parents = 2,
680aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
681aec89f78SBastian Köcher 	},
682aec89f78SBastian Köcher };
683aec89f78SBastian Köcher 
684aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup5_spi_apps_clk_src = {
685aec89f78SBastian Köcher 	.cmd_rcgr = 0x0b8c,
686aec89f78SBastian Köcher 	.mnd_width = 8,
687aec89f78SBastian Köcher 	.hid_width = 5,
688aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
68980863521SKonrad Dybcio 	/* BLSP1 QUP1 and BLSP2 QUP5 use the same freqs */
69080863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp1_qup1_spi_apps_clk_src,
6910519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
692aec89f78SBastian Köcher 		.name = "blsp2_qup5_spi_apps_clk_src",
6930519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
694aec89f78SBastian Köcher 		.num_parents = 2,
695aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
696aec89f78SBastian Köcher 	},
697aec89f78SBastian Köcher };
698aec89f78SBastian Köcher 
699aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup6_i2c_apps_clk_src = {
700aec89f78SBastian Köcher 	.cmd_rcgr = 0x0c20,
701aec89f78SBastian Köcher 	.hid_width = 5,
702aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
703aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
7040519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
705aec89f78SBastian Köcher 		.name = "blsp2_qup6_i2c_apps_clk_src",
7060519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
707aec89f78SBastian Köcher 		.num_parents = 2,
708aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
709aec89f78SBastian Köcher 	},
710aec89f78SBastian Köcher };
711aec89f78SBastian Köcher 
71280863521SKonrad Dybcio static struct freq_tbl ftbl_blsp2_qup6_spi_apps_clk_src[] = {
71380863521SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
71480863521SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
71580863521SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
71680863521SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
71780863521SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
71880863521SKonrad Dybcio 	F(24000000, P_GPLL0, 12.5, 1, 2),
71980863521SKonrad Dybcio 	F(25000000, P_GPLL0, 12, 1, 2),
72080863521SKonrad Dybcio 	F(44440000, P_GPLL0, 13.5, 0, 0),
72180863521SKonrad Dybcio 	F(48000000, P_GPLL0, 12.5, 0, 0),
72280863521SKonrad Dybcio 	{ }
72380863521SKonrad Dybcio };
72480863521SKonrad Dybcio 
725aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup6_spi_apps_clk_src = {
726aec89f78SBastian Köcher 	.cmd_rcgr = 0x0c0c,
727aec89f78SBastian Köcher 	.mnd_width = 8,
728aec89f78SBastian Köcher 	.hid_width = 5,
729aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
73080863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp2_qup6_spi_apps_clk_src,
7310519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
732aec89f78SBastian Köcher 		.name = "blsp2_qup6_spi_apps_clk_src",
7330519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
734aec89f78SBastian Köcher 		.num_parents = 2,
735aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
736aec89f78SBastian Köcher 	},
737aec89f78SBastian Köcher };
738aec89f78SBastian Köcher 
739aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart1_apps_clk_src = {
740aec89f78SBastian Köcher 	.cmd_rcgr = 0x09cc,
741aec89f78SBastian Köcher 	.mnd_width = 16,
742aec89f78SBastian Köcher 	.hid_width = 5,
743aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
744aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
7450519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
746aec89f78SBastian Köcher 		.name = "blsp2_uart1_apps_clk_src",
7470519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
748aec89f78SBastian Köcher 		.num_parents = 2,
749aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
750aec89f78SBastian Köcher 	},
751aec89f78SBastian Köcher };
752aec89f78SBastian Köcher 
753aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart2_apps_clk_src = {
754aec89f78SBastian Köcher 	.cmd_rcgr = 0x0a4c,
755aec89f78SBastian Köcher 	.mnd_width = 16,
756aec89f78SBastian Köcher 	.hid_width = 5,
757aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
758aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
7590519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
760aec89f78SBastian Köcher 		.name = "blsp2_uart2_apps_clk_src",
7610519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
762aec89f78SBastian Köcher 		.num_parents = 2,
763aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
764aec89f78SBastian Köcher 	},
765aec89f78SBastian Köcher };
766aec89f78SBastian Köcher 
767aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart3_apps_clk_src = {
768aec89f78SBastian Köcher 	.cmd_rcgr = 0x0acc,
769aec89f78SBastian Köcher 	.mnd_width = 16,
770aec89f78SBastian Köcher 	.hid_width = 5,
771aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
772aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
7730519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
774aec89f78SBastian Köcher 		.name = "blsp2_uart3_apps_clk_src",
7750519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
776aec89f78SBastian Köcher 		.num_parents = 2,
777aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
778aec89f78SBastian Köcher 	},
779aec89f78SBastian Köcher };
780aec89f78SBastian Köcher 
781aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart4_apps_clk_src = {
782aec89f78SBastian Köcher 	.cmd_rcgr = 0x0b4c,
783aec89f78SBastian Köcher 	.mnd_width = 16,
784aec89f78SBastian Köcher 	.hid_width = 5,
785aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
786aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
7870519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
788aec89f78SBastian Köcher 		.name = "blsp2_uart4_apps_clk_src",
7890519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
790aec89f78SBastian Köcher 		.num_parents = 2,
791aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
792aec89f78SBastian Köcher 	},
793aec89f78SBastian Köcher };
794aec89f78SBastian Köcher 
795aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart5_apps_clk_src = {
796aec89f78SBastian Köcher 	.cmd_rcgr = 0x0bcc,
797aec89f78SBastian Köcher 	.mnd_width = 16,
798aec89f78SBastian Köcher 	.hid_width = 5,
799aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
800aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
8010519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
802aec89f78SBastian Köcher 		.name = "blsp2_uart5_apps_clk_src",
8030519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
804aec89f78SBastian Köcher 		.num_parents = 2,
805aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
806aec89f78SBastian Köcher 	},
807aec89f78SBastian Köcher };
808aec89f78SBastian Köcher 
809aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart6_apps_clk_src = {
810aec89f78SBastian Köcher 	.cmd_rcgr = 0x0c4c,
811aec89f78SBastian Köcher 	.mnd_width = 16,
812aec89f78SBastian Köcher 	.hid_width = 5,
813aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
814aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
8150519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
816aec89f78SBastian Köcher 		.name = "blsp2_uart6_apps_clk_src",
8170519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
818aec89f78SBastian Köcher 		.num_parents = 2,
819aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
820aec89f78SBastian Köcher 	},
821aec89f78SBastian Köcher };
822aec89f78SBastian Köcher 
823aec89f78SBastian Köcher static struct freq_tbl ftbl_gp1_clk_src[] = {
824aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
825aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
826aec89f78SBastian Köcher 	F(200000000, P_GPLL0, 3, 0, 0),
827aec89f78SBastian Köcher 	{ }
828aec89f78SBastian Köcher };
829aec89f78SBastian Köcher 
830aec89f78SBastian Köcher static struct clk_rcg2 gp1_clk_src = {
831aec89f78SBastian Köcher 	.cmd_rcgr = 0x1904,
832aec89f78SBastian Köcher 	.mnd_width = 8,
833aec89f78SBastian Köcher 	.hid_width = 5,
834aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
835aec89f78SBastian Köcher 	.freq_tbl = ftbl_gp1_clk_src,
8360519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
837aec89f78SBastian Köcher 		.name = "gp1_clk_src",
8380519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
839aec89f78SBastian Köcher 		.num_parents = 2,
840aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
841aec89f78SBastian Köcher 	},
842aec89f78SBastian Köcher };
843aec89f78SBastian Köcher 
844aec89f78SBastian Köcher static struct freq_tbl ftbl_gp2_clk_src[] = {
845aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
846aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
847aec89f78SBastian Köcher 	F(200000000, P_GPLL0, 3, 0, 0),
848aec89f78SBastian Köcher 	{ }
849aec89f78SBastian Köcher };
850aec89f78SBastian Köcher 
851aec89f78SBastian Köcher static struct clk_rcg2 gp2_clk_src = {
852aec89f78SBastian Köcher 	.cmd_rcgr = 0x1944,
853aec89f78SBastian Köcher 	.mnd_width = 8,
854aec89f78SBastian Köcher 	.hid_width = 5,
855aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
856aec89f78SBastian Köcher 	.freq_tbl = ftbl_gp2_clk_src,
8570519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
858aec89f78SBastian Köcher 		.name = "gp2_clk_src",
8590519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
860aec89f78SBastian Köcher 		.num_parents = 2,
861aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
862aec89f78SBastian Köcher 	},
863aec89f78SBastian Köcher };
864aec89f78SBastian Köcher 
865aec89f78SBastian Köcher static struct freq_tbl ftbl_gp3_clk_src[] = {
866aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
867aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
868aec89f78SBastian Köcher 	F(200000000, P_GPLL0, 3, 0, 0),
869aec89f78SBastian Köcher 	{ }
870aec89f78SBastian Köcher };
871aec89f78SBastian Köcher 
872aec89f78SBastian Köcher static struct clk_rcg2 gp3_clk_src = {
873aec89f78SBastian Köcher 	.cmd_rcgr = 0x1984,
874aec89f78SBastian Köcher 	.mnd_width = 8,
875aec89f78SBastian Köcher 	.hid_width = 5,
876aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
877aec89f78SBastian Köcher 	.freq_tbl = ftbl_gp3_clk_src,
8780519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
879aec89f78SBastian Köcher 		.name = "gp3_clk_src",
8800519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
881aec89f78SBastian Köcher 		.num_parents = 2,
882aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
883aec89f78SBastian Köcher 	},
884aec89f78SBastian Köcher };
885aec89f78SBastian Köcher 
886aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_0_aux_clk_src[] = {
887aec89f78SBastian Köcher 	F(1011000, P_XO, 1, 1, 19),
888aec89f78SBastian Köcher 	{ }
889aec89f78SBastian Köcher };
890aec89f78SBastian Köcher 
891aec89f78SBastian Köcher static struct clk_rcg2 pcie_0_aux_clk_src = {
892aec89f78SBastian Köcher 	.cmd_rcgr = 0x1b00,
893aec89f78SBastian Köcher 	.mnd_width = 8,
894aec89f78SBastian Köcher 	.hid_width = 5,
895aec89f78SBastian Köcher 	.freq_tbl = ftbl_pcie_0_aux_clk_src,
8960519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
897aec89f78SBastian Köcher 		.name = "pcie_0_aux_clk_src",
8980519d1d0SKonrad Dybcio 		.parent_data = &(const struct clk_parent_data){
8990519d1d0SKonrad Dybcio 				.fw_name = "xo",
9000519d1d0SKonrad Dybcio 		},
901aec89f78SBastian Köcher 		.num_parents = 1,
902aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
903aec89f78SBastian Köcher 	},
904aec89f78SBastian Köcher };
905aec89f78SBastian Köcher 
906aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_pipe_clk_src[] = {
907aec89f78SBastian Köcher 	F(125000000, P_XO, 1, 0, 0),
908aec89f78SBastian Köcher 	{ }
909aec89f78SBastian Köcher };
910aec89f78SBastian Köcher 
911aec89f78SBastian Köcher static struct clk_rcg2 pcie_0_pipe_clk_src = {
912aec89f78SBastian Köcher 	.cmd_rcgr = 0x1adc,
913aec89f78SBastian Köcher 	.hid_width = 5,
914aec89f78SBastian Köcher 	.freq_tbl = ftbl_pcie_pipe_clk_src,
9150519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
916aec89f78SBastian Köcher 		.name = "pcie_0_pipe_clk_src",
9170519d1d0SKonrad Dybcio 		.parent_data = &(const struct clk_parent_data){
9180519d1d0SKonrad Dybcio 				.fw_name = "xo",
9190519d1d0SKonrad Dybcio 		},
920aec89f78SBastian Köcher 		.num_parents = 1,
921aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
922aec89f78SBastian Köcher 	},
923aec89f78SBastian Köcher };
924aec89f78SBastian Köcher 
925aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_1_aux_clk_src[] = {
926aec89f78SBastian Köcher 	F(1011000, P_XO, 1, 1, 19),
927aec89f78SBastian Köcher 	{ }
928aec89f78SBastian Köcher };
929aec89f78SBastian Köcher 
930aec89f78SBastian Köcher static struct clk_rcg2 pcie_1_aux_clk_src = {
931aec89f78SBastian Köcher 	.cmd_rcgr = 0x1b80,
932aec89f78SBastian Köcher 	.mnd_width = 8,
933aec89f78SBastian Köcher 	.hid_width = 5,
934aec89f78SBastian Köcher 	.freq_tbl = ftbl_pcie_1_aux_clk_src,
9350519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
936aec89f78SBastian Köcher 		.name = "pcie_1_aux_clk_src",
9370519d1d0SKonrad Dybcio 		.parent_data = &(const struct clk_parent_data){
9380519d1d0SKonrad Dybcio 				.fw_name = "xo",
9390519d1d0SKonrad Dybcio 		},
940aec89f78SBastian Köcher 		.num_parents = 1,
941aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
942aec89f78SBastian Köcher 	},
943aec89f78SBastian Köcher };
944aec89f78SBastian Köcher 
945aec89f78SBastian Köcher static struct clk_rcg2 pcie_1_pipe_clk_src = {
946aec89f78SBastian Köcher 	.cmd_rcgr = 0x1b5c,
947aec89f78SBastian Köcher 	.hid_width = 5,
948aec89f78SBastian Köcher 	.freq_tbl = ftbl_pcie_pipe_clk_src,
9490519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
950aec89f78SBastian Köcher 		.name = "pcie_1_pipe_clk_src",
9510519d1d0SKonrad Dybcio 		.parent_data = &(const struct clk_parent_data){
9520519d1d0SKonrad Dybcio 				.fw_name = "xo",
9530519d1d0SKonrad Dybcio 		},
954aec89f78SBastian Köcher 		.num_parents = 1,
955aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
956aec89f78SBastian Köcher 	},
957aec89f78SBastian Köcher };
958aec89f78SBastian Köcher 
959aec89f78SBastian Köcher static struct freq_tbl ftbl_pdm2_clk_src[] = {
960aec89f78SBastian Köcher 	F(60000000, P_GPLL0, 10, 0, 0),
961aec89f78SBastian Köcher 	{ }
962aec89f78SBastian Köcher };
963aec89f78SBastian Köcher 
964aec89f78SBastian Köcher static struct clk_rcg2 pdm2_clk_src = {
965aec89f78SBastian Köcher 	.cmd_rcgr = 0x0cd0,
966aec89f78SBastian Köcher 	.hid_width = 5,
967aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
968aec89f78SBastian Köcher 	.freq_tbl = ftbl_pdm2_clk_src,
9690519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
970aec89f78SBastian Köcher 		.name = "pdm2_clk_src",
9710519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
972aec89f78SBastian Köcher 		.num_parents = 2,
973aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
974aec89f78SBastian Köcher 	},
975aec89f78SBastian Köcher };
976aec89f78SBastian Köcher 
977aec89f78SBastian Köcher static struct freq_tbl ftbl_sdcc1_apps_clk_src[] = {
978aec89f78SBastian Köcher 	F(144000, P_XO, 16, 3, 25),
979aec89f78SBastian Köcher 	F(400000, P_XO, 12, 1, 4),
980aec89f78SBastian Köcher 	F(20000000, P_GPLL0, 15, 1, 2),
981aec89f78SBastian Köcher 	F(25000000, P_GPLL0, 12, 1, 2),
982aec89f78SBastian Köcher 	F(50000000, P_GPLL0, 12, 0, 0),
983aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
984aec89f78SBastian Köcher 	F(192000000, P_GPLL4, 2, 0, 0),
985aec89f78SBastian Köcher 	F(384000000, P_GPLL4, 1, 0, 0),
986aec89f78SBastian Köcher 	{ }
987aec89f78SBastian Köcher };
988aec89f78SBastian Köcher 
989*c09b8023SKonrad Dybcio static struct freq_tbl ftbl_sdcc1_apps_clk_src_8992[] = {
990*c09b8023SKonrad Dybcio 	F(144000, P_XO, 16, 3, 25),
991*c09b8023SKonrad Dybcio 	F(400000, P_XO, 12, 1, 4),
992*c09b8023SKonrad Dybcio 	F(20000000, P_GPLL0, 15, 1, 2),
993*c09b8023SKonrad Dybcio 	F(25000000, P_GPLL0, 12, 1, 2),
994*c09b8023SKonrad Dybcio 	F(50000000, P_GPLL0, 12, 0, 0),
995*c09b8023SKonrad Dybcio 	F(100000000, P_GPLL0, 6, 0, 0),
996*c09b8023SKonrad Dybcio 	F(172000000, P_GPLL4, 2, 0, 0),
997*c09b8023SKonrad Dybcio 	F(344000000, P_GPLL4, 1, 0, 0),
998*c09b8023SKonrad Dybcio 	{ }
999*c09b8023SKonrad Dybcio };
1000*c09b8023SKonrad Dybcio 
1001aec89f78SBastian Köcher static struct clk_rcg2 sdcc1_apps_clk_src = {
1002aec89f78SBastian Köcher 	.cmd_rcgr = 0x04d0,
1003aec89f78SBastian Köcher 	.mnd_width = 8,
1004aec89f78SBastian Köcher 	.hid_width = 5,
1005aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_gpll4_map,
1006aec89f78SBastian Köcher 	.freq_tbl = ftbl_sdcc1_apps_clk_src,
10070519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1008aec89f78SBastian Köcher 		.name = "sdcc1_apps_clk_src",
10090519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0_gpll4,
1010aec89f78SBastian Köcher 		.num_parents = 3,
10115f5001a9SRajendra Nayak 		.ops = &clk_rcg2_floor_ops,
1012aec89f78SBastian Köcher 	},
1013aec89f78SBastian Köcher };
1014aec89f78SBastian Köcher 
1015aec89f78SBastian Köcher static struct freq_tbl ftbl_sdcc2_4_apps_clk_src[] = {
1016aec89f78SBastian Köcher 	F(144000, P_XO, 16, 3, 25),
1017aec89f78SBastian Köcher 	F(400000, P_XO, 12, 1, 4),
1018aec89f78SBastian Köcher 	F(20000000, P_GPLL0, 15, 1, 2),
1019aec89f78SBastian Köcher 	F(25000000, P_GPLL0, 12, 1, 2),
1020aec89f78SBastian Köcher 	F(50000000, P_GPLL0, 12, 0, 0),
1021aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
1022aec89f78SBastian Köcher 	F(200000000, P_GPLL0, 3, 0, 0),
1023aec89f78SBastian Köcher 	{ }
1024aec89f78SBastian Köcher };
1025aec89f78SBastian Köcher 
1026aec89f78SBastian Köcher static struct clk_rcg2 sdcc2_apps_clk_src = {
1027aec89f78SBastian Köcher 	.cmd_rcgr = 0x0510,
1028aec89f78SBastian Köcher 	.mnd_width = 8,
1029aec89f78SBastian Köcher 	.hid_width = 5,
1030aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
1031aec89f78SBastian Köcher 	.freq_tbl = ftbl_sdcc2_4_apps_clk_src,
10320519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1033aec89f78SBastian Köcher 		.name = "sdcc2_apps_clk_src",
10340519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
1035aec89f78SBastian Köcher 		.num_parents = 2,
10365f5001a9SRajendra Nayak 		.ops = &clk_rcg2_floor_ops,
1037aec89f78SBastian Köcher 	},
1038aec89f78SBastian Köcher };
1039aec89f78SBastian Köcher 
1040aec89f78SBastian Köcher static struct clk_rcg2 sdcc3_apps_clk_src = {
1041aec89f78SBastian Köcher 	.cmd_rcgr = 0x0550,
1042aec89f78SBastian Köcher 	.mnd_width = 8,
1043aec89f78SBastian Köcher 	.hid_width = 5,
1044aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
1045aec89f78SBastian Köcher 	.freq_tbl = ftbl_sdcc2_4_apps_clk_src,
10460519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1047aec89f78SBastian Köcher 		.name = "sdcc3_apps_clk_src",
10480519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
1049aec89f78SBastian Köcher 		.num_parents = 2,
10505f5001a9SRajendra Nayak 		.ops = &clk_rcg2_floor_ops,
1051aec89f78SBastian Köcher 	},
1052aec89f78SBastian Köcher };
1053aec89f78SBastian Köcher 
1054aec89f78SBastian Köcher static struct clk_rcg2 sdcc4_apps_clk_src = {
1055aec89f78SBastian Köcher 	.cmd_rcgr = 0x0590,
1056aec89f78SBastian Köcher 	.mnd_width = 8,
1057aec89f78SBastian Köcher 	.hid_width = 5,
1058aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
1059aec89f78SBastian Köcher 	.freq_tbl = ftbl_sdcc2_4_apps_clk_src,
10600519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1061aec89f78SBastian Köcher 		.name = "sdcc4_apps_clk_src",
10620519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
1063aec89f78SBastian Köcher 		.num_parents = 2,
10645f5001a9SRajendra Nayak 		.ops = &clk_rcg2_floor_ops,
1065aec89f78SBastian Köcher 	},
1066aec89f78SBastian Köcher };
1067aec89f78SBastian Köcher 
1068aec89f78SBastian Köcher static struct freq_tbl ftbl_tsif_ref_clk_src[] = {
1069aec89f78SBastian Köcher 	F(105500, P_XO, 1, 1, 182),
1070aec89f78SBastian Köcher 	{ }
1071aec89f78SBastian Köcher };
1072aec89f78SBastian Köcher 
1073aec89f78SBastian Köcher static struct clk_rcg2 tsif_ref_clk_src = {
1074aec89f78SBastian Köcher 	.cmd_rcgr = 0x0d90,
1075aec89f78SBastian Köcher 	.mnd_width = 8,
1076aec89f78SBastian Köcher 	.hid_width = 5,
1077aec89f78SBastian Köcher 	.freq_tbl = ftbl_tsif_ref_clk_src,
10780519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1079aec89f78SBastian Köcher 		.name = "tsif_ref_clk_src",
10800519d1d0SKonrad Dybcio 		.parent_data = &(const struct clk_parent_data){
10810519d1d0SKonrad Dybcio 				.fw_name = "xo",
10820519d1d0SKonrad Dybcio 		},
1083aec89f78SBastian Köcher 		.num_parents = 1,
1084aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
1085aec89f78SBastian Köcher 	},
1086aec89f78SBastian Köcher };
1087aec89f78SBastian Köcher 
1088aec89f78SBastian Köcher static struct freq_tbl ftbl_usb30_mock_utmi_clk_src[] = {
1089aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
1090aec89f78SBastian Köcher 	F(60000000, P_GPLL0, 10, 0, 0),
1091aec89f78SBastian Köcher 	{ }
1092aec89f78SBastian Köcher };
1093aec89f78SBastian Köcher 
1094aec89f78SBastian Köcher static struct clk_rcg2 usb30_mock_utmi_clk_src = {
1095aec89f78SBastian Köcher 	.cmd_rcgr = 0x03e8,
1096aec89f78SBastian Köcher 	.hid_width = 5,
1097aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
1098aec89f78SBastian Köcher 	.freq_tbl = ftbl_usb30_mock_utmi_clk_src,
10990519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1100aec89f78SBastian Köcher 		.name = "usb30_mock_utmi_clk_src",
11010519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
1102aec89f78SBastian Köcher 		.num_parents = 2,
1103aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
1104aec89f78SBastian Köcher 	},
1105aec89f78SBastian Köcher };
1106aec89f78SBastian Köcher 
1107aec89f78SBastian Köcher static struct freq_tbl ftbl_usb3_phy_aux_clk_src[] = {
1108aec89f78SBastian Köcher 	F(1200000, P_XO, 16, 0, 0),
1109aec89f78SBastian Köcher 	{ }
1110aec89f78SBastian Köcher };
1111aec89f78SBastian Köcher 
1112aec89f78SBastian Köcher static struct clk_rcg2 usb3_phy_aux_clk_src = {
1113aec89f78SBastian Köcher 	.cmd_rcgr = 0x1414,
1114aec89f78SBastian Köcher 	.hid_width = 5,
1115aec89f78SBastian Köcher 	.freq_tbl = ftbl_usb3_phy_aux_clk_src,
11160519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1117aec89f78SBastian Köcher 		.name = "usb3_phy_aux_clk_src",
11180519d1d0SKonrad Dybcio 		.parent_data = &(const struct clk_parent_data){
11190519d1d0SKonrad Dybcio 				.fw_name = "xo",
11200519d1d0SKonrad Dybcio 		},
1121aec89f78SBastian Köcher 		.num_parents = 1,
1122aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
1123aec89f78SBastian Köcher 	},
1124aec89f78SBastian Köcher };
1125aec89f78SBastian Köcher 
1126aec89f78SBastian Köcher static struct freq_tbl ftbl_usb_hs_system_clk_src[] = {
1127aec89f78SBastian Köcher 	F(75000000, P_GPLL0, 8, 0, 0),
1128aec89f78SBastian Köcher 	{ }
1129aec89f78SBastian Köcher };
1130aec89f78SBastian Köcher 
1131aec89f78SBastian Köcher static struct clk_rcg2 usb_hs_system_clk_src = {
1132aec89f78SBastian Köcher 	.cmd_rcgr = 0x0490,
1133aec89f78SBastian Köcher 	.hid_width = 5,
1134aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
1135aec89f78SBastian Köcher 	.freq_tbl = ftbl_usb_hs_system_clk_src,
11360519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1137aec89f78SBastian Köcher 		.name = "usb_hs_system_clk_src",
11380519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
1139aec89f78SBastian Köcher 		.num_parents = 2,
1140aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
1141aec89f78SBastian Köcher 	},
1142aec89f78SBastian Köcher };
1143aec89f78SBastian Köcher 
1144aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_ahb_clk = {
1145aec89f78SBastian Köcher 	.halt_reg = 0x05c4,
1146aec89f78SBastian Köcher 	.halt_check = BRANCH_HALT_VOTED,
1147aec89f78SBastian Köcher 	.clkr = {
1148aec89f78SBastian Köcher 		.enable_reg = 0x1484,
1149aec89f78SBastian Köcher 		.enable_mask = BIT(17),
11500519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1151aec89f78SBastian Köcher 			.name = "gcc_blsp1_ahb_clk",
115274a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw },
115374a33facSKonrad Dybcio 			.num_parents = 1,
1154aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1155aec89f78SBastian Köcher 		},
1156aec89f78SBastian Köcher 	},
1157aec89f78SBastian Köcher };
1158aec89f78SBastian Köcher 
1159aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = {
1160aec89f78SBastian Köcher 	.halt_reg = 0x0648,
1161aec89f78SBastian Köcher 	.clkr = {
1162aec89f78SBastian Köcher 		.enable_reg = 0x0648,
1163aec89f78SBastian Köcher 		.enable_mask = BIT(0),
11640519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1165aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup1_i2c_apps_clk",
11660519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup1_i2c_apps_clk_src.clkr.hw },
1167aec89f78SBastian Köcher 			.num_parents = 1,
1168aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1169aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1170aec89f78SBastian Köcher 		},
1171aec89f78SBastian Köcher 	},
1172aec89f78SBastian Köcher };
1173aec89f78SBastian Köcher 
1174aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = {
1175aec89f78SBastian Köcher 	.halt_reg = 0x0644,
1176aec89f78SBastian Köcher 	.clkr = {
1177aec89f78SBastian Köcher 		.enable_reg = 0x0644,
1178aec89f78SBastian Köcher 		.enable_mask = BIT(0),
11790519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1180aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup1_spi_apps_clk",
11810519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup1_spi_apps_clk_src.clkr.hw },
1182aec89f78SBastian Köcher 			.num_parents = 1,
1183aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1184aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1185aec89f78SBastian Köcher 		},
1186aec89f78SBastian Köcher 	},
1187aec89f78SBastian Köcher };
1188aec89f78SBastian Köcher 
1189aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = {
1190aec89f78SBastian Köcher 	.halt_reg = 0x06c8,
1191aec89f78SBastian Köcher 	.clkr = {
1192aec89f78SBastian Köcher 		.enable_reg = 0x06c8,
1193aec89f78SBastian Köcher 		.enable_mask = BIT(0),
11940519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1195aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup2_i2c_apps_clk",
11960519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup2_i2c_apps_clk_src.clkr.hw },
1197aec89f78SBastian Köcher 			.num_parents = 1,
1198aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1199aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1200aec89f78SBastian Köcher 		},
1201aec89f78SBastian Köcher 	},
1202aec89f78SBastian Köcher };
1203aec89f78SBastian Köcher 
1204aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = {
1205aec89f78SBastian Köcher 	.halt_reg = 0x06c4,
1206aec89f78SBastian Köcher 	.clkr = {
1207aec89f78SBastian Köcher 		.enable_reg = 0x06c4,
1208aec89f78SBastian Köcher 		.enable_mask = BIT(0),
12090519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1210aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup2_spi_apps_clk",
12110519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup2_spi_apps_clk_src.clkr.hw },
1212aec89f78SBastian Köcher 			.num_parents = 1,
1213aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1214aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1215aec89f78SBastian Köcher 		},
1216aec89f78SBastian Köcher 	},
1217aec89f78SBastian Köcher };
1218aec89f78SBastian Köcher 
1219aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = {
1220aec89f78SBastian Köcher 	.halt_reg = 0x0748,
1221aec89f78SBastian Köcher 	.clkr = {
1222aec89f78SBastian Köcher 		.enable_reg = 0x0748,
1223aec89f78SBastian Köcher 		.enable_mask = BIT(0),
12240519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1225aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup3_i2c_apps_clk",
12260519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup3_i2c_apps_clk_src.clkr.hw },
1227aec89f78SBastian Köcher 			.num_parents = 1,
1228aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1229aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1230aec89f78SBastian Köcher 		},
1231aec89f78SBastian Köcher 	},
1232aec89f78SBastian Köcher };
1233aec89f78SBastian Köcher 
1234aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = {
1235aec89f78SBastian Köcher 	.halt_reg = 0x0744,
1236aec89f78SBastian Köcher 	.clkr = {
1237aec89f78SBastian Köcher 		.enable_reg = 0x0744,
1238aec89f78SBastian Köcher 		.enable_mask = BIT(0),
12390519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1240aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup3_spi_apps_clk",
12410519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup3_spi_apps_clk_src.clkr.hw },
1242aec89f78SBastian Köcher 			.num_parents = 1,
1243aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1244aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1245aec89f78SBastian Köcher 		},
1246aec89f78SBastian Köcher 	},
1247aec89f78SBastian Köcher };
1248aec89f78SBastian Köcher 
1249aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = {
1250aec89f78SBastian Köcher 	.halt_reg = 0x07c8,
1251aec89f78SBastian Köcher 	.clkr = {
1252aec89f78SBastian Köcher 		.enable_reg = 0x07c8,
1253aec89f78SBastian Köcher 		.enable_mask = BIT(0),
12540519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1255aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup4_i2c_apps_clk",
12560519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup4_i2c_apps_clk_src.clkr.hw },
1257aec89f78SBastian Köcher 			.num_parents = 1,
1258aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1259aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1260aec89f78SBastian Köcher 		},
1261aec89f78SBastian Köcher 	},
1262aec89f78SBastian Köcher };
1263aec89f78SBastian Köcher 
1264aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = {
1265aec89f78SBastian Köcher 	.halt_reg = 0x07c4,
1266aec89f78SBastian Köcher 	.clkr = {
1267aec89f78SBastian Köcher 		.enable_reg = 0x07c4,
1268aec89f78SBastian Köcher 		.enable_mask = BIT(0),
12690519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1270aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup4_spi_apps_clk",
12710519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup4_spi_apps_clk_src.clkr.hw },
1272aec89f78SBastian Köcher 			.num_parents = 1,
1273aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1274aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1275aec89f78SBastian Köcher 		},
1276aec89f78SBastian Köcher 	},
1277aec89f78SBastian Köcher };
1278aec89f78SBastian Köcher 
1279aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = {
1280aec89f78SBastian Köcher 	.halt_reg = 0x0848,
1281aec89f78SBastian Köcher 	.clkr = {
1282aec89f78SBastian Köcher 		.enable_reg = 0x0848,
1283aec89f78SBastian Köcher 		.enable_mask = BIT(0),
12840519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1285aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup5_i2c_apps_clk",
12860519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup5_i2c_apps_clk_src.clkr.hw },
1287aec89f78SBastian Köcher 			.num_parents = 1,
1288aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1289aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1290aec89f78SBastian Köcher 		},
1291aec89f78SBastian Köcher 	},
1292aec89f78SBastian Köcher };
1293aec89f78SBastian Köcher 
1294aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = {
1295aec89f78SBastian Köcher 	.halt_reg = 0x0844,
1296aec89f78SBastian Köcher 	.clkr = {
1297aec89f78SBastian Köcher 		.enable_reg = 0x0844,
1298aec89f78SBastian Köcher 		.enable_mask = BIT(0),
12990519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1300aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup5_spi_apps_clk",
13010519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup5_spi_apps_clk_src.clkr.hw },
1302aec89f78SBastian Köcher 			.num_parents = 1,
1303aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1304aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1305aec89f78SBastian Köcher 		},
1306aec89f78SBastian Köcher 	},
1307aec89f78SBastian Köcher };
1308aec89f78SBastian Köcher 
1309aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup6_i2c_apps_clk = {
1310aec89f78SBastian Köcher 	.halt_reg = 0x08c8,
1311aec89f78SBastian Köcher 	.clkr = {
1312aec89f78SBastian Köcher 		.enable_reg = 0x08c8,
1313aec89f78SBastian Köcher 		.enable_mask = BIT(0),
13140519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1315aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup6_i2c_apps_clk",
13160519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup6_i2c_apps_clk_src.clkr.hw },
1317aec89f78SBastian Köcher 			.num_parents = 1,
1318aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1319aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1320aec89f78SBastian Köcher 		},
1321aec89f78SBastian Köcher 	},
1322aec89f78SBastian Köcher };
1323aec89f78SBastian Köcher 
1324aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = {
1325aec89f78SBastian Köcher 	.halt_reg = 0x08c4,
1326aec89f78SBastian Köcher 	.clkr = {
1327aec89f78SBastian Köcher 		.enable_reg = 0x08c4,
1328aec89f78SBastian Köcher 		.enable_mask = BIT(0),
13290519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1330aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup6_spi_apps_clk",
13310519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup6_spi_apps_clk_src.clkr.hw },
1332aec89f78SBastian Köcher 			.num_parents = 1,
1333aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1334aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1335aec89f78SBastian Köcher 		},
1336aec89f78SBastian Köcher 	},
1337aec89f78SBastian Köcher };
1338aec89f78SBastian Köcher 
1339aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart1_apps_clk = {
1340aec89f78SBastian Köcher 	.halt_reg = 0x0684,
1341aec89f78SBastian Köcher 	.clkr = {
1342aec89f78SBastian Köcher 		.enable_reg = 0x0684,
1343aec89f78SBastian Köcher 		.enable_mask = BIT(0),
13440519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1345aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart1_apps_clk",
13460519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_uart1_apps_clk_src.clkr.hw },
1347aec89f78SBastian Köcher 			.num_parents = 1,
1348aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1349aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1350aec89f78SBastian Köcher 		},
1351aec89f78SBastian Köcher 	},
1352aec89f78SBastian Köcher };
1353aec89f78SBastian Köcher 
1354aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart2_apps_clk = {
1355aec89f78SBastian Köcher 	.halt_reg = 0x0704,
1356aec89f78SBastian Köcher 	.clkr = {
1357aec89f78SBastian Köcher 		.enable_reg = 0x0704,
1358aec89f78SBastian Köcher 		.enable_mask = BIT(0),
13590519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1360aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart2_apps_clk",
13610519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_uart2_apps_clk_src.clkr.hw },
1362aec89f78SBastian Köcher 			.num_parents = 1,
1363aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1364aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1365aec89f78SBastian Köcher 		},
1366aec89f78SBastian Köcher 	},
1367aec89f78SBastian Köcher };
1368aec89f78SBastian Köcher 
1369aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart3_apps_clk = {
1370aec89f78SBastian Köcher 	.halt_reg = 0x0784,
1371aec89f78SBastian Köcher 	.clkr = {
1372aec89f78SBastian Köcher 		.enable_reg = 0x0784,
1373aec89f78SBastian Köcher 		.enable_mask = BIT(0),
13740519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1375aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart3_apps_clk",
13760519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_uart3_apps_clk_src.clkr.hw },
1377aec89f78SBastian Köcher 			.num_parents = 1,
1378aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1379aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1380aec89f78SBastian Köcher 		},
1381aec89f78SBastian Köcher 	},
1382aec89f78SBastian Köcher };
1383aec89f78SBastian Köcher 
1384aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart4_apps_clk = {
1385aec89f78SBastian Köcher 	.halt_reg = 0x0804,
1386aec89f78SBastian Köcher 	.clkr = {
1387aec89f78SBastian Köcher 		.enable_reg = 0x0804,
1388aec89f78SBastian Köcher 		.enable_mask = BIT(0),
13890519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1390aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart4_apps_clk",
13910519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_uart4_apps_clk_src.clkr.hw },
1392aec89f78SBastian Köcher 			.num_parents = 1,
1393aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1394aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1395aec89f78SBastian Köcher 		},
1396aec89f78SBastian Köcher 	},
1397aec89f78SBastian Köcher };
1398aec89f78SBastian Köcher 
1399aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart5_apps_clk = {
1400aec89f78SBastian Köcher 	.halt_reg = 0x0884,
1401aec89f78SBastian Köcher 	.clkr = {
1402aec89f78SBastian Köcher 		.enable_reg = 0x0884,
1403aec89f78SBastian Köcher 		.enable_mask = BIT(0),
14040519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1405aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart5_apps_clk",
14060519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_uart5_apps_clk_src.clkr.hw },
1407aec89f78SBastian Köcher 			.num_parents = 1,
1408aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1409aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1410aec89f78SBastian Köcher 		},
1411aec89f78SBastian Köcher 	},
1412aec89f78SBastian Köcher };
1413aec89f78SBastian Köcher 
1414aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart6_apps_clk = {
1415aec89f78SBastian Köcher 	.halt_reg = 0x0904,
1416aec89f78SBastian Köcher 	.clkr = {
1417aec89f78SBastian Köcher 		.enable_reg = 0x0904,
1418aec89f78SBastian Köcher 		.enable_mask = BIT(0),
14190519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1420aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart6_apps_clk",
14210519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_uart6_apps_clk_src.clkr.hw },
1422aec89f78SBastian Köcher 			.num_parents = 1,
1423aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1424aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1425aec89f78SBastian Köcher 		},
1426aec89f78SBastian Köcher 	},
1427aec89f78SBastian Köcher };
1428aec89f78SBastian Köcher 
1429aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_ahb_clk = {
1430aec89f78SBastian Köcher 	.halt_reg = 0x0944,
1431aec89f78SBastian Köcher 	.halt_check = BRANCH_HALT_VOTED,
1432aec89f78SBastian Köcher 	.clkr = {
1433aec89f78SBastian Köcher 		.enable_reg = 0x1484,
1434aec89f78SBastian Köcher 		.enable_mask = BIT(15),
14350519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1436aec89f78SBastian Köcher 			.name = "gcc_blsp2_ahb_clk",
143774a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw },
143874a33facSKonrad Dybcio 			.num_parents = 1,
1439aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1440aec89f78SBastian Köcher 		},
1441aec89f78SBastian Köcher 	},
1442aec89f78SBastian Köcher };
1443aec89f78SBastian Köcher 
1444aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup1_i2c_apps_clk = {
1445aec89f78SBastian Köcher 	.halt_reg = 0x0988,
1446aec89f78SBastian Köcher 	.clkr = {
1447aec89f78SBastian Köcher 		.enable_reg = 0x0988,
1448aec89f78SBastian Köcher 		.enable_mask = BIT(0),
14490519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1450aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup1_i2c_apps_clk",
14510519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup1_i2c_apps_clk_src.clkr.hw },
1452aec89f78SBastian Köcher 			.num_parents = 1,
1453aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1454aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1455aec89f78SBastian Köcher 		},
1456aec89f78SBastian Köcher 	},
1457aec89f78SBastian Köcher };
1458aec89f78SBastian Köcher 
1459aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup1_spi_apps_clk = {
1460aec89f78SBastian Köcher 	.halt_reg = 0x0984,
1461aec89f78SBastian Köcher 	.clkr = {
1462aec89f78SBastian Köcher 		.enable_reg = 0x0984,
1463aec89f78SBastian Köcher 		.enable_mask = BIT(0),
14640519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1465aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup1_spi_apps_clk",
14660519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup1_spi_apps_clk_src.clkr.hw },
1467aec89f78SBastian Köcher 			.num_parents = 1,
1468aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1469aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1470aec89f78SBastian Köcher 		},
1471aec89f78SBastian Köcher 	},
1472aec89f78SBastian Köcher };
1473aec89f78SBastian Köcher 
1474aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup2_i2c_apps_clk = {
1475aec89f78SBastian Köcher 	.halt_reg = 0x0a08,
1476aec89f78SBastian Köcher 	.clkr = {
1477aec89f78SBastian Köcher 		.enable_reg = 0x0a08,
1478aec89f78SBastian Köcher 		.enable_mask = BIT(0),
14790519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1480aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup2_i2c_apps_clk",
14810519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup2_i2c_apps_clk_src.clkr.hw },
1482aec89f78SBastian Köcher 			.num_parents = 1,
1483aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1484aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1485aec89f78SBastian Köcher 		},
1486aec89f78SBastian Köcher 	},
1487aec89f78SBastian Köcher };
1488aec89f78SBastian Köcher 
1489aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup2_spi_apps_clk = {
1490aec89f78SBastian Köcher 	.halt_reg = 0x0a04,
1491aec89f78SBastian Köcher 	.clkr = {
1492aec89f78SBastian Köcher 		.enable_reg = 0x0a04,
1493aec89f78SBastian Köcher 		.enable_mask = BIT(0),
14940519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1495aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup2_spi_apps_clk",
14960519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup2_spi_apps_clk_src.clkr.hw },
1497aec89f78SBastian Köcher 			.num_parents = 1,
1498aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1499aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1500aec89f78SBastian Köcher 		},
1501aec89f78SBastian Köcher 	},
1502aec89f78SBastian Köcher };
1503aec89f78SBastian Köcher 
1504aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup3_i2c_apps_clk = {
1505aec89f78SBastian Köcher 	.halt_reg = 0x0a88,
1506aec89f78SBastian Köcher 	.clkr = {
1507aec89f78SBastian Köcher 		.enable_reg = 0x0a88,
1508aec89f78SBastian Köcher 		.enable_mask = BIT(0),
15090519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1510aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup3_i2c_apps_clk",
15110519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup3_i2c_apps_clk_src.clkr.hw },
1512aec89f78SBastian Köcher 			.num_parents = 1,
1513aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1514aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1515aec89f78SBastian Köcher 		},
1516aec89f78SBastian Köcher 	},
1517aec89f78SBastian Köcher };
1518aec89f78SBastian Köcher 
1519aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup3_spi_apps_clk = {
1520aec89f78SBastian Köcher 	.halt_reg = 0x0a84,
1521aec89f78SBastian Köcher 	.clkr = {
1522aec89f78SBastian Köcher 		.enable_reg = 0x0a84,
1523aec89f78SBastian Köcher 		.enable_mask = BIT(0),
15240519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1525aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup3_spi_apps_clk",
15260519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup3_spi_apps_clk_src.clkr.hw },
1527aec89f78SBastian Köcher 			.num_parents = 1,
1528aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1529aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1530aec89f78SBastian Köcher 		},
1531aec89f78SBastian Köcher 	},
1532aec89f78SBastian Köcher };
1533aec89f78SBastian Köcher 
1534aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup4_i2c_apps_clk = {
1535aec89f78SBastian Köcher 	.halt_reg = 0x0b08,
1536aec89f78SBastian Köcher 	.clkr = {
1537aec89f78SBastian Köcher 		.enable_reg = 0x0b08,
1538aec89f78SBastian Köcher 		.enable_mask = BIT(0),
15390519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1540aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup4_i2c_apps_clk",
15410519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup4_i2c_apps_clk_src.clkr.hw },
1542aec89f78SBastian Köcher 			.num_parents = 1,
1543aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1544aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1545aec89f78SBastian Köcher 		},
1546aec89f78SBastian Köcher 	},
1547aec89f78SBastian Köcher };
1548aec89f78SBastian Köcher 
1549aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup4_spi_apps_clk = {
1550aec89f78SBastian Köcher 	.halt_reg = 0x0b04,
1551aec89f78SBastian Köcher 	.clkr = {
1552aec89f78SBastian Köcher 		.enable_reg = 0x0b04,
1553aec89f78SBastian Köcher 		.enable_mask = BIT(0),
15540519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1555aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup4_spi_apps_clk",
15560519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup4_spi_apps_clk_src.clkr.hw },
1557aec89f78SBastian Köcher 			.num_parents = 1,
1558aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1559aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1560aec89f78SBastian Köcher 		},
1561aec89f78SBastian Köcher 	},
1562aec89f78SBastian Köcher };
1563aec89f78SBastian Köcher 
1564aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup5_i2c_apps_clk = {
1565aec89f78SBastian Köcher 	.halt_reg = 0x0b88,
1566aec89f78SBastian Köcher 	.clkr = {
1567aec89f78SBastian Köcher 		.enable_reg = 0x0b88,
1568aec89f78SBastian Köcher 		.enable_mask = BIT(0),
15690519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1570aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup5_i2c_apps_clk",
15710519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup5_i2c_apps_clk_src.clkr.hw },
1572aec89f78SBastian Köcher 			.num_parents = 1,
1573aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1574aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1575aec89f78SBastian Köcher 		},
1576aec89f78SBastian Köcher 	},
1577aec89f78SBastian Köcher };
1578aec89f78SBastian Köcher 
1579aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup5_spi_apps_clk = {
1580aec89f78SBastian Köcher 	.halt_reg = 0x0b84,
1581aec89f78SBastian Köcher 	.clkr = {
1582aec89f78SBastian Köcher 		.enable_reg = 0x0b84,
1583aec89f78SBastian Köcher 		.enable_mask = BIT(0),
15840519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1585aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup5_spi_apps_clk",
15860519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup5_spi_apps_clk_src.clkr.hw },
1587aec89f78SBastian Köcher 			.num_parents = 1,
1588aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1589aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1590aec89f78SBastian Köcher 		},
1591aec89f78SBastian Köcher 	},
1592aec89f78SBastian Köcher };
1593aec89f78SBastian Köcher 
1594aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup6_i2c_apps_clk = {
1595aec89f78SBastian Köcher 	.halt_reg = 0x0c08,
1596aec89f78SBastian Köcher 	.clkr = {
1597aec89f78SBastian Köcher 		.enable_reg = 0x0c08,
1598aec89f78SBastian Köcher 		.enable_mask = BIT(0),
15990519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1600aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup6_i2c_apps_clk",
16010519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup6_i2c_apps_clk_src.clkr.hw },
1602aec89f78SBastian Köcher 			.num_parents = 1,
1603aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1604aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1605aec89f78SBastian Köcher 		},
1606aec89f78SBastian Köcher 	},
1607aec89f78SBastian Köcher };
1608aec89f78SBastian Köcher 
1609aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup6_spi_apps_clk = {
1610aec89f78SBastian Köcher 	.halt_reg = 0x0c04,
1611aec89f78SBastian Köcher 	.clkr = {
1612aec89f78SBastian Köcher 		.enable_reg = 0x0c04,
1613aec89f78SBastian Köcher 		.enable_mask = BIT(0),
16140519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1615aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup6_spi_apps_clk",
16160519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup6_spi_apps_clk_src.clkr.hw },
1617aec89f78SBastian Köcher 			.num_parents = 1,
1618aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1619aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1620aec89f78SBastian Köcher 		},
1621aec89f78SBastian Köcher 	},
1622aec89f78SBastian Köcher };
1623aec89f78SBastian Köcher 
1624aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart1_apps_clk = {
1625aec89f78SBastian Köcher 	.halt_reg = 0x09c4,
1626aec89f78SBastian Köcher 	.clkr = {
1627aec89f78SBastian Köcher 		.enable_reg = 0x09c4,
1628aec89f78SBastian Köcher 		.enable_mask = BIT(0),
16290519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1630aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart1_apps_clk",
16310519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_uart1_apps_clk_src.clkr.hw },
1632aec89f78SBastian Köcher 			.num_parents = 1,
1633aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1634aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1635aec89f78SBastian Köcher 		},
1636aec89f78SBastian Köcher 	},
1637aec89f78SBastian Köcher };
1638aec89f78SBastian Köcher 
1639aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart2_apps_clk = {
1640aec89f78SBastian Köcher 	.halt_reg = 0x0a44,
1641aec89f78SBastian Köcher 	.clkr = {
1642aec89f78SBastian Köcher 		.enable_reg = 0x0a44,
1643aec89f78SBastian Köcher 		.enable_mask = BIT(0),
16440519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1645aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart2_apps_clk",
16460519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_uart2_apps_clk_src.clkr.hw },
1647aec89f78SBastian Köcher 			.num_parents = 1,
1648aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1649aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1650aec89f78SBastian Köcher 		},
1651aec89f78SBastian Köcher 	},
1652aec89f78SBastian Köcher };
1653aec89f78SBastian Köcher 
1654aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart3_apps_clk = {
1655aec89f78SBastian Köcher 	.halt_reg = 0x0ac4,
1656aec89f78SBastian Köcher 	.clkr = {
1657aec89f78SBastian Köcher 		.enable_reg = 0x0ac4,
1658aec89f78SBastian Köcher 		.enable_mask = BIT(0),
16590519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1660aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart3_apps_clk",
16610519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_uart3_apps_clk_src.clkr.hw },
1662aec89f78SBastian Köcher 			.num_parents = 1,
1663aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1664aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1665aec89f78SBastian Köcher 		},
1666aec89f78SBastian Köcher 	},
1667aec89f78SBastian Köcher };
1668aec89f78SBastian Köcher 
1669aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart4_apps_clk = {
1670aec89f78SBastian Köcher 	.halt_reg = 0x0b44,
1671aec89f78SBastian Köcher 	.clkr = {
1672aec89f78SBastian Köcher 		.enable_reg = 0x0b44,
1673aec89f78SBastian Köcher 		.enable_mask = BIT(0),
16740519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1675aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart4_apps_clk",
16760519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_uart4_apps_clk_src.clkr.hw },
1677aec89f78SBastian Köcher 			.num_parents = 1,
1678aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1679aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1680aec89f78SBastian Köcher 		},
1681aec89f78SBastian Köcher 	},
1682aec89f78SBastian Köcher };
1683aec89f78SBastian Köcher 
1684aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart5_apps_clk = {
1685aec89f78SBastian Köcher 	.halt_reg = 0x0bc4,
1686aec89f78SBastian Köcher 	.clkr = {
1687aec89f78SBastian Köcher 		.enable_reg = 0x0bc4,
1688aec89f78SBastian Köcher 		.enable_mask = BIT(0),
16890519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1690aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart5_apps_clk",
16910519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_uart5_apps_clk_src.clkr.hw },
1692aec89f78SBastian Köcher 			.num_parents = 1,
1693aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1694aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1695aec89f78SBastian Köcher 		},
1696aec89f78SBastian Köcher 	},
1697aec89f78SBastian Köcher };
1698aec89f78SBastian Köcher 
1699aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart6_apps_clk = {
1700aec89f78SBastian Köcher 	.halt_reg = 0x0c44,
1701aec89f78SBastian Köcher 	.clkr = {
1702aec89f78SBastian Köcher 		.enable_reg = 0x0c44,
1703aec89f78SBastian Köcher 		.enable_mask = BIT(0),
17040519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1705aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart6_apps_clk",
17060519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_uart6_apps_clk_src.clkr.hw },
1707aec89f78SBastian Köcher 			.num_parents = 1,
1708aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1709aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1710aec89f78SBastian Köcher 		},
1711aec89f78SBastian Köcher 	},
1712aec89f78SBastian Köcher };
1713aec89f78SBastian Köcher 
1714aec89f78SBastian Köcher static struct clk_branch gcc_gp1_clk = {
1715aec89f78SBastian Köcher 	.halt_reg = 0x1900,
1716aec89f78SBastian Köcher 	.clkr = {
1717aec89f78SBastian Köcher 		.enable_reg = 0x1900,
1718aec89f78SBastian Köcher 		.enable_mask = BIT(0),
17190519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1720aec89f78SBastian Köcher 			.name = "gcc_gp1_clk",
17210519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &gp1_clk_src.clkr.hw },
1722aec89f78SBastian Köcher 			.num_parents = 1,
1723aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1724aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1725aec89f78SBastian Köcher 		},
1726aec89f78SBastian Köcher 	},
1727aec89f78SBastian Köcher };
1728aec89f78SBastian Köcher 
1729aec89f78SBastian Köcher static struct clk_branch gcc_gp2_clk = {
1730aec89f78SBastian Köcher 	.halt_reg = 0x1940,
1731aec89f78SBastian Köcher 	.clkr = {
1732aec89f78SBastian Köcher 		.enable_reg = 0x1940,
1733aec89f78SBastian Köcher 		.enable_mask = BIT(0),
17340519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1735aec89f78SBastian Köcher 			.name = "gcc_gp2_clk",
17360519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &gp2_clk_src.clkr.hw },
1737aec89f78SBastian Köcher 			.num_parents = 1,
1738aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1739aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1740aec89f78SBastian Köcher 		},
1741aec89f78SBastian Köcher 	},
1742aec89f78SBastian Köcher };
1743aec89f78SBastian Köcher 
1744aec89f78SBastian Köcher static struct clk_branch gcc_gp3_clk = {
1745aec89f78SBastian Köcher 	.halt_reg = 0x1980,
1746aec89f78SBastian Köcher 	.clkr = {
1747aec89f78SBastian Köcher 		.enable_reg = 0x1980,
1748aec89f78SBastian Köcher 		.enable_mask = BIT(0),
17490519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1750aec89f78SBastian Köcher 			.name = "gcc_gp3_clk",
17510519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &gp3_clk_src.clkr.hw },
1752aec89f78SBastian Köcher 			.num_parents = 1,
1753aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1754aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1755aec89f78SBastian Köcher 		},
1756aec89f78SBastian Köcher 	},
1757aec89f78SBastian Köcher };
1758aec89f78SBastian Köcher 
17598c18b41bSKonrad Dybcio static struct clk_branch gcc_lpass_q6_axi_clk = {
17608c18b41bSKonrad Dybcio 	.halt_reg = 0x0280,
17618c18b41bSKonrad Dybcio 	.clkr = {
17628c18b41bSKonrad Dybcio 		.enable_reg = 0x0280,
17638c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
17640519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
17658c18b41bSKonrad Dybcio 			.name = "gcc_lpass_q6_axi_clk",
176674a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw },
176774a33facSKonrad Dybcio 			.num_parents = 1,
17688c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
17698c18b41bSKonrad Dybcio 		},
17708c18b41bSKonrad Dybcio 	},
17718c18b41bSKonrad Dybcio };
17728c18b41bSKonrad Dybcio 
17738c18b41bSKonrad Dybcio static struct clk_branch gcc_mss_q6_bimc_axi_clk = {
17748c18b41bSKonrad Dybcio 	.halt_reg = 0x0284,
17758c18b41bSKonrad Dybcio 	.clkr = {
17768c18b41bSKonrad Dybcio 		.enable_reg = 0x0284,
17778c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
17780519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
17798c18b41bSKonrad Dybcio 			.name = "gcc_mss_q6_bimc_axi_clk",
178074a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw },
178174a33facSKonrad Dybcio 			.num_parents = 1,
17828c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
17838c18b41bSKonrad Dybcio 		},
17848c18b41bSKonrad Dybcio 	},
17858c18b41bSKonrad Dybcio };
17868c18b41bSKonrad Dybcio 
1787aec89f78SBastian Köcher static struct clk_branch gcc_pcie_0_aux_clk = {
1788aec89f78SBastian Köcher 	.halt_reg = 0x1ad4,
1789aec89f78SBastian Köcher 	.clkr = {
1790aec89f78SBastian Köcher 		.enable_reg = 0x1ad4,
1791aec89f78SBastian Köcher 		.enable_mask = BIT(0),
17920519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1793aec89f78SBastian Köcher 			.name = "gcc_pcie_0_aux_clk",
17940519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &pcie_0_aux_clk_src.clkr.hw },
1795aec89f78SBastian Köcher 			.num_parents = 1,
1796aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1797aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1798aec89f78SBastian Köcher 		},
1799aec89f78SBastian Köcher 	},
1800aec89f78SBastian Köcher };
1801aec89f78SBastian Köcher 
18028c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_cfg_ahb_clk = {
18038c18b41bSKonrad Dybcio 	.halt_reg = 0x1ad0,
18048c18b41bSKonrad Dybcio 	.clkr = {
18058c18b41bSKonrad Dybcio 		.enable_reg = 0x1ad0,
18068c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
18070519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
18088c18b41bSKonrad Dybcio 			.name = "gcc_pcie_0_cfg_ahb_clk",
180974a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &config_noc_clk_src.clkr.hw },
181074a33facSKonrad Dybcio 			.num_parents = 1,
181174a33facSKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
18128c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
18138c18b41bSKonrad Dybcio 		},
18148c18b41bSKonrad Dybcio 	},
18158c18b41bSKonrad Dybcio };
18168c18b41bSKonrad Dybcio 
18178c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_mstr_axi_clk = {
18188c18b41bSKonrad Dybcio 	.halt_reg = 0x1acc,
18198c18b41bSKonrad Dybcio 	.clkr = {
18208c18b41bSKonrad Dybcio 		.enable_reg = 0x1acc,
18218c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
18220519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
18238c18b41bSKonrad Dybcio 			.name = "gcc_pcie_0_mstr_axi_clk",
182474a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw },
182574a33facSKonrad Dybcio 			.num_parents = 1,
182674a33facSKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
18278c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
18288c18b41bSKonrad Dybcio 		},
18298c18b41bSKonrad Dybcio 	},
18308c18b41bSKonrad Dybcio };
18318c18b41bSKonrad Dybcio 
1832aec89f78SBastian Köcher static struct clk_branch gcc_pcie_0_pipe_clk = {
1833aec89f78SBastian Köcher 	.halt_reg = 0x1ad8,
1834aec89f78SBastian Köcher 	.halt_check = BRANCH_HALT_DELAY,
1835aec89f78SBastian Köcher 	.clkr = {
1836aec89f78SBastian Köcher 		.enable_reg = 0x1ad8,
1837aec89f78SBastian Köcher 		.enable_mask = BIT(0),
18380519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1839aec89f78SBastian Köcher 			.name = "gcc_pcie_0_pipe_clk",
18400519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &pcie_0_pipe_clk_src.clkr.hw },
1841aec89f78SBastian Köcher 			.num_parents = 1,
1842aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1843aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1844aec89f78SBastian Köcher 		},
1845aec89f78SBastian Köcher 	},
1846aec89f78SBastian Köcher };
1847aec89f78SBastian Köcher 
18488c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_slv_axi_clk = {
18498c18b41bSKonrad Dybcio 	.halt_reg = 0x1ac8,
18508c18b41bSKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
18518c18b41bSKonrad Dybcio 	.clkr = {
18528c18b41bSKonrad Dybcio 		.enable_reg = 0x1ac8,
18538c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
18540519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
18558c18b41bSKonrad Dybcio 			.name = "gcc_pcie_0_slv_axi_clk",
185674a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw },
185774a33facSKonrad Dybcio 			.num_parents = 1,
185874a33facSKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
18598c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
18608c18b41bSKonrad Dybcio 		},
18618c18b41bSKonrad Dybcio 	},
18628c18b41bSKonrad Dybcio };
18638c18b41bSKonrad Dybcio 
1864aec89f78SBastian Köcher static struct clk_branch gcc_pcie_1_aux_clk = {
1865aec89f78SBastian Köcher 	.halt_reg = 0x1b54,
1866aec89f78SBastian Köcher 	.clkr = {
1867aec89f78SBastian Köcher 		.enable_reg = 0x1b54,
1868aec89f78SBastian Köcher 		.enable_mask = BIT(0),
18690519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1870aec89f78SBastian Köcher 			.name = "gcc_pcie_1_aux_clk",
18710519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &pcie_1_aux_clk_src.clkr.hw },
1872aec89f78SBastian Köcher 			.num_parents = 1,
1873aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1874aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1875aec89f78SBastian Köcher 		},
1876aec89f78SBastian Köcher 	},
1877aec89f78SBastian Köcher };
1878aec89f78SBastian Köcher 
18798c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_cfg_ahb_clk = {
18808c18b41bSKonrad Dybcio 	.halt_reg = 0x1b54,
18818c18b41bSKonrad Dybcio 	.clkr = {
18828c18b41bSKonrad Dybcio 		.enable_reg = 0x1b54,
18838c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
18840519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
18858c18b41bSKonrad Dybcio 			.name = "gcc_pcie_1_cfg_ahb_clk",
188674a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &config_noc_clk_src.clkr.hw },
188774a33facSKonrad Dybcio 			.num_parents = 1,
188874a33facSKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
18898c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
18908c18b41bSKonrad Dybcio 		},
18918c18b41bSKonrad Dybcio 	},
18928c18b41bSKonrad Dybcio };
18938c18b41bSKonrad Dybcio 
18948c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_mstr_axi_clk = {
18958c18b41bSKonrad Dybcio 	.halt_reg = 0x1b50,
18968c18b41bSKonrad Dybcio 	.clkr = {
18978c18b41bSKonrad Dybcio 		.enable_reg = 0x1b50,
18988c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
18990519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
19008c18b41bSKonrad Dybcio 			.name = "gcc_pcie_1_mstr_axi_clk",
190174a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw },
190274a33facSKonrad Dybcio 			.num_parents = 1,
190374a33facSKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
19048c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
19058c18b41bSKonrad Dybcio 		},
19068c18b41bSKonrad Dybcio 	},
19078c18b41bSKonrad Dybcio };
19088c18b41bSKonrad Dybcio 
1909aec89f78SBastian Köcher static struct clk_branch gcc_pcie_1_pipe_clk = {
1910aec89f78SBastian Köcher 	.halt_reg = 0x1b58,
1911aec89f78SBastian Köcher 	.halt_check = BRANCH_HALT_DELAY,
1912aec89f78SBastian Köcher 	.clkr = {
1913aec89f78SBastian Köcher 		.enable_reg = 0x1b58,
1914aec89f78SBastian Köcher 		.enable_mask = BIT(0),
19150519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1916aec89f78SBastian Köcher 			.name = "gcc_pcie_1_pipe_clk",
19170519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &pcie_1_pipe_clk_src.clkr.hw },
1918aec89f78SBastian Köcher 			.num_parents = 1,
1919aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1920aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1921aec89f78SBastian Köcher 		},
1922aec89f78SBastian Köcher 	},
1923aec89f78SBastian Köcher };
1924aec89f78SBastian Köcher 
19258c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_slv_axi_clk = {
19268c18b41bSKonrad Dybcio 	.halt_reg = 0x1b48,
19278c18b41bSKonrad Dybcio 	.clkr = {
19288c18b41bSKonrad Dybcio 		.enable_reg = 0x1b48,
19298c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
19300519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
19318c18b41bSKonrad Dybcio 			.name = "gcc_pcie_1_slv_axi_clk",
193274a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw },
193374a33facSKonrad Dybcio 			.num_parents = 1,
193474a33facSKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
19358c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
19368c18b41bSKonrad Dybcio 		},
19378c18b41bSKonrad Dybcio 	},
19388c18b41bSKonrad Dybcio };
19398c18b41bSKonrad Dybcio 
1940aec89f78SBastian Köcher static struct clk_branch gcc_pdm2_clk = {
1941aec89f78SBastian Köcher 	.halt_reg = 0x0ccc,
1942aec89f78SBastian Köcher 	.clkr = {
1943aec89f78SBastian Köcher 		.enable_reg = 0x0ccc,
1944aec89f78SBastian Köcher 		.enable_mask = BIT(0),
19450519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1946aec89f78SBastian Köcher 			.name = "gcc_pdm2_clk",
19470519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &pdm2_clk_src.clkr.hw },
1948aec89f78SBastian Köcher 			.num_parents = 1,
1949aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1950aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1951aec89f78SBastian Köcher 		},
1952aec89f78SBastian Köcher 	},
1953aec89f78SBastian Köcher };
1954aec89f78SBastian Köcher 
19558c18b41bSKonrad Dybcio static struct clk_branch gcc_pdm_ahb_clk = {
19568c18b41bSKonrad Dybcio 	.halt_reg = 0x0cc4,
19578c18b41bSKonrad Dybcio 	.clkr = {
19588c18b41bSKonrad Dybcio 		.enable_reg = 0x0cc4,
19598c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
19600519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
19618c18b41bSKonrad Dybcio 			.name = "gcc_pdm_ahb_clk",
196274a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw },
196374a33facSKonrad Dybcio 			.num_parents = 1,
19648c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
19658c18b41bSKonrad Dybcio 		},
19668c18b41bSKonrad Dybcio 	},
19678c18b41bSKonrad Dybcio };
19688c18b41bSKonrad Dybcio 
1969aec89f78SBastian Köcher static struct clk_branch gcc_sdcc1_apps_clk = {
1970aec89f78SBastian Köcher 	.halt_reg = 0x04c4,
1971aec89f78SBastian Köcher 	.clkr = {
1972aec89f78SBastian Köcher 		.enable_reg = 0x04c4,
1973aec89f78SBastian Köcher 		.enable_mask = BIT(0),
19740519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1975aec89f78SBastian Köcher 			.name = "gcc_sdcc1_apps_clk",
19760519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &sdcc1_apps_clk_src.clkr.hw },
1977aec89f78SBastian Köcher 			.num_parents = 1,
1978aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1979aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1980aec89f78SBastian Köcher 		},
1981aec89f78SBastian Köcher 	},
1982aec89f78SBastian Köcher };
1983aec89f78SBastian Köcher 
1984eaff16bcSJeremy McNicoll static struct clk_branch gcc_sdcc1_ahb_clk = {
1985eaff16bcSJeremy McNicoll 	.halt_reg = 0x04c8,
1986eaff16bcSJeremy McNicoll 	.clkr = {
1987eaff16bcSJeremy McNicoll 		.enable_reg = 0x04c8,
1988eaff16bcSJeremy McNicoll 		.enable_mask = BIT(0),
19890519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1990eaff16bcSJeremy McNicoll 			.name = "gcc_sdcc1_ahb_clk",
199174a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw },
1992eaff16bcSJeremy McNicoll 			.num_parents = 1,
199374a33facSKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
1994eaff16bcSJeremy McNicoll 			.ops = &clk_branch2_ops,
1995eaff16bcSJeremy McNicoll 		},
1996eaff16bcSJeremy McNicoll 	},
1997eaff16bcSJeremy McNicoll };
1998eaff16bcSJeremy McNicoll 
19998c18b41bSKonrad Dybcio static struct clk_branch gcc_sdcc2_ahb_clk = {
20008c18b41bSKonrad Dybcio 	.halt_reg = 0x0508,
20018c18b41bSKonrad Dybcio 	.clkr = {
20028c18b41bSKonrad Dybcio 		.enable_reg = 0x0508,
20038c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
20040519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
20058c18b41bSKonrad Dybcio 			.name = "gcc_sdcc2_ahb_clk",
200674a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw },
20078c18b41bSKonrad Dybcio 			.num_parents = 1,
200874a33facSKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
20098c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
20108c18b41bSKonrad Dybcio 		},
20118c18b41bSKonrad Dybcio 	},
20128c18b41bSKonrad Dybcio };
20138c18b41bSKonrad Dybcio 
2014aec89f78SBastian Köcher static struct clk_branch gcc_sdcc2_apps_clk = {
2015aec89f78SBastian Köcher 	.halt_reg = 0x0504,
2016aec89f78SBastian Köcher 	.clkr = {
2017aec89f78SBastian Köcher 		.enable_reg = 0x0504,
2018aec89f78SBastian Köcher 		.enable_mask = BIT(0),
20190519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2020aec89f78SBastian Köcher 			.name = "gcc_sdcc2_apps_clk",
20210519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &sdcc2_apps_clk_src.clkr.hw },
2022aec89f78SBastian Köcher 			.num_parents = 1,
2023aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2024aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2025aec89f78SBastian Köcher 		},
2026aec89f78SBastian Köcher 	},
2027aec89f78SBastian Köcher };
2028aec89f78SBastian Köcher 
20298c18b41bSKonrad Dybcio static struct clk_branch gcc_sdcc3_ahb_clk = {
20308c18b41bSKonrad Dybcio 	.halt_reg = 0x0548,
20318c18b41bSKonrad Dybcio 	.clkr = {
20328c18b41bSKonrad Dybcio 		.enable_reg = 0x0548,
20338c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
20340519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
20358c18b41bSKonrad Dybcio 			.name = "gcc_sdcc3_ahb_clk",
203674a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw },
20378c18b41bSKonrad Dybcio 			.num_parents = 1,
203874a33facSKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
20398c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
20408c18b41bSKonrad Dybcio 		},
20418c18b41bSKonrad Dybcio 	},
20428c18b41bSKonrad Dybcio };
20438c18b41bSKonrad Dybcio 
2044aec89f78SBastian Köcher static struct clk_branch gcc_sdcc3_apps_clk = {
2045aec89f78SBastian Köcher 	.halt_reg = 0x0544,
2046aec89f78SBastian Köcher 	.clkr = {
2047aec89f78SBastian Köcher 		.enable_reg = 0x0544,
2048aec89f78SBastian Köcher 		.enable_mask = BIT(0),
20490519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2050aec89f78SBastian Köcher 			.name = "gcc_sdcc3_apps_clk",
20510519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &sdcc3_apps_clk_src.clkr.hw },
2052aec89f78SBastian Köcher 			.num_parents = 1,
2053aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2054aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2055aec89f78SBastian Köcher 		},
2056aec89f78SBastian Köcher 	},
2057aec89f78SBastian Köcher };
2058aec89f78SBastian Köcher 
20598c18b41bSKonrad Dybcio static struct clk_branch gcc_sdcc4_ahb_clk = {
20608c18b41bSKonrad Dybcio 	.halt_reg = 0x0588,
20618c18b41bSKonrad Dybcio 	.clkr = {
20628c18b41bSKonrad Dybcio 		.enable_reg = 0x0588,
20638c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
20640519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
20658c18b41bSKonrad Dybcio 			.name = "gcc_sdcc4_ahb_clk",
206674a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw },
20678c18b41bSKonrad Dybcio 			.num_parents = 1,
206874a33facSKonrad Dybcio 			.flags = CLK_SET_RATE_PARENT,
20698c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
20708c18b41bSKonrad Dybcio 		},
20718c18b41bSKonrad Dybcio 	},
20728c18b41bSKonrad Dybcio };
20738c18b41bSKonrad Dybcio 
2074aec89f78SBastian Köcher static struct clk_branch gcc_sdcc4_apps_clk = {
2075aec89f78SBastian Köcher 	.halt_reg = 0x0584,
2076aec89f78SBastian Köcher 	.clkr = {
2077aec89f78SBastian Köcher 		.enable_reg = 0x0584,
2078aec89f78SBastian Köcher 		.enable_mask = BIT(0),
20790519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2080aec89f78SBastian Köcher 			.name = "gcc_sdcc4_apps_clk",
20810519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &sdcc4_apps_clk_src.clkr.hw },
2082aec89f78SBastian Köcher 			.num_parents = 1,
2083aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2084aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2085aec89f78SBastian Köcher 		},
2086aec89f78SBastian Köcher 	},
2087aec89f78SBastian Köcher };
2088aec89f78SBastian Köcher 
2089aec89f78SBastian Köcher static struct clk_branch gcc_sys_noc_ufs_axi_clk = {
2090aec89f78SBastian Köcher 	.halt_reg = 0x1d7c,
2091aec89f78SBastian Köcher 	.clkr = {
2092aec89f78SBastian Köcher 		.enable_reg = 0x1d7c,
2093aec89f78SBastian Köcher 		.enable_mask = BIT(0),
20940519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2095aec89f78SBastian Köcher 			.name = "gcc_sys_noc_ufs_axi_clk",
20960519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw },
2097aec89f78SBastian Köcher 			.num_parents = 1,
2098aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2099aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2100aec89f78SBastian Köcher 		},
2101aec89f78SBastian Köcher 	},
2102aec89f78SBastian Köcher };
2103aec89f78SBastian Köcher 
2104aec89f78SBastian Köcher static struct clk_branch gcc_sys_noc_usb3_axi_clk = {
2105aec89f78SBastian Köcher 	.halt_reg = 0x03fc,
2106aec89f78SBastian Köcher 	.clkr = {
2107aec89f78SBastian Köcher 		.enable_reg = 0x03fc,
2108aec89f78SBastian Köcher 		.enable_mask = BIT(0),
21090519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2110aec89f78SBastian Köcher 			.name = "gcc_sys_noc_usb3_axi_clk",
21110519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &usb30_master_clk_src.clkr.hw },
2112aec89f78SBastian Köcher 			.num_parents = 1,
2113aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2114aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2115aec89f78SBastian Köcher 		},
2116aec89f78SBastian Köcher 	},
2117aec89f78SBastian Köcher };
2118aec89f78SBastian Köcher 
21198c18b41bSKonrad Dybcio static struct clk_branch gcc_tsif_ahb_clk = {
21208c18b41bSKonrad Dybcio 	.halt_reg = 0x0d84,
21218c18b41bSKonrad Dybcio 	.clkr = {
21228c18b41bSKonrad Dybcio 		.enable_reg = 0x0d84,
21238c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
21240519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
21258c18b41bSKonrad Dybcio 			.name = "gcc_tsif_ahb_clk",
212674a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw },
212774a33facSKonrad Dybcio 			.num_parents = 1,
21288c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
21298c18b41bSKonrad Dybcio 		},
21308c18b41bSKonrad Dybcio 	},
21318c18b41bSKonrad Dybcio };
21328c18b41bSKonrad Dybcio 
2133aec89f78SBastian Köcher static struct clk_branch gcc_tsif_ref_clk = {
2134aec89f78SBastian Köcher 	.halt_reg = 0x0d88,
2135aec89f78SBastian Köcher 	.clkr = {
2136aec89f78SBastian Köcher 		.enable_reg = 0x0d88,
2137aec89f78SBastian Köcher 		.enable_mask = BIT(0),
21380519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2139aec89f78SBastian Köcher 			.name = "gcc_tsif_ref_clk",
21400519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &tsif_ref_clk_src.clkr.hw },
2141aec89f78SBastian Köcher 			.num_parents = 1,
2142aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2143aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2144aec89f78SBastian Köcher 		},
2145aec89f78SBastian Köcher 	},
2146aec89f78SBastian Köcher };
2147aec89f78SBastian Köcher 
21488c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_ahb_clk = {
21498c18b41bSKonrad Dybcio 	.halt_reg = 0x1d4c,
21508c18b41bSKonrad Dybcio 	.clkr = {
21518c18b41bSKonrad Dybcio 		.enable_reg = 0x1d4c,
21528c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
21530519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
21548c18b41bSKonrad Dybcio 			.name = "gcc_ufs_ahb_clk",
215574a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &config_noc_clk_src.clkr.hw },
215674a33facSKonrad Dybcio 			.num_parents = 1,
21578c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
21588c18b41bSKonrad Dybcio 		},
21598c18b41bSKonrad Dybcio 	},
21608c18b41bSKonrad Dybcio };
21618c18b41bSKonrad Dybcio 
2162aec89f78SBastian Köcher static struct clk_branch gcc_ufs_axi_clk = {
2163aec89f78SBastian Köcher 	.halt_reg = 0x1d48,
2164aec89f78SBastian Köcher 	.clkr = {
2165aec89f78SBastian Köcher 		.enable_reg = 0x1d48,
2166aec89f78SBastian Köcher 		.enable_mask = BIT(0),
21670519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2168aec89f78SBastian Köcher 			.name = "gcc_ufs_axi_clk",
21690519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw },
2170aec89f78SBastian Köcher 			.num_parents = 1,
2171aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2172aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2173aec89f78SBastian Köcher 		},
2174aec89f78SBastian Köcher 	},
2175aec89f78SBastian Köcher };
2176aec89f78SBastian Köcher 
2177aec89f78SBastian Köcher static struct clk_branch gcc_ufs_rx_cfg_clk = {
2178aec89f78SBastian Köcher 	.halt_reg = 0x1d54,
2179aec89f78SBastian Köcher 	.clkr = {
2180aec89f78SBastian Köcher 		.enable_reg = 0x1d54,
2181aec89f78SBastian Köcher 		.enable_mask = BIT(0),
21820519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2183aec89f78SBastian Köcher 			.name = "gcc_ufs_rx_cfg_clk",
21840519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw },
2185aec89f78SBastian Köcher 			.num_parents = 1,
2186aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2187aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2188aec89f78SBastian Köcher 		},
2189aec89f78SBastian Köcher 	},
2190aec89f78SBastian Köcher };
2191aec89f78SBastian Köcher 
21928c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_rx_symbol_0_clk = {
21938c18b41bSKonrad Dybcio 	.halt_reg = 0x1d60,
21948c18b41bSKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
21958c18b41bSKonrad Dybcio 	.clkr = {
21968c18b41bSKonrad Dybcio 		.enable_reg = 0x1d60,
21978c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
21980519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
21998c18b41bSKonrad Dybcio 			.name = "gcc_ufs_rx_symbol_0_clk",
220074a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw },
220174a33facSKonrad Dybcio 			.num_parents = 1,
22028c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
22038c18b41bSKonrad Dybcio 		},
22048c18b41bSKonrad Dybcio 	},
22058c18b41bSKonrad Dybcio };
22068c18b41bSKonrad Dybcio 
22078c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_rx_symbol_1_clk = {
22088c18b41bSKonrad Dybcio 	.halt_reg = 0x1d64,
22098c18b41bSKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
22108c18b41bSKonrad Dybcio 	.clkr = {
22118c18b41bSKonrad Dybcio 		.enable_reg = 0x1d64,
22128c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
22130519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
22148c18b41bSKonrad Dybcio 			.name = "gcc_ufs_rx_symbol_1_clk",
221574a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw },
221674a33facSKonrad Dybcio 			.num_parents = 1,
22178c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
22188c18b41bSKonrad Dybcio 		},
22198c18b41bSKonrad Dybcio 	},
22208c18b41bSKonrad Dybcio };
22218c18b41bSKonrad Dybcio 
2222aec89f78SBastian Köcher static struct clk_branch gcc_ufs_tx_cfg_clk = {
2223aec89f78SBastian Köcher 	.halt_reg = 0x1d50,
2224aec89f78SBastian Köcher 	.clkr = {
2225aec89f78SBastian Köcher 		.enable_reg = 0x1d50,
2226aec89f78SBastian Köcher 		.enable_mask = BIT(0),
22270519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2228aec89f78SBastian Köcher 			.name = "gcc_ufs_tx_cfg_clk",
22290519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw },
2230aec89f78SBastian Köcher 			.num_parents = 1,
2231aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2232aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2233aec89f78SBastian Köcher 		},
2234aec89f78SBastian Köcher 	},
2235aec89f78SBastian Köcher };
2236aec89f78SBastian Köcher 
22378c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_tx_symbol_0_clk = {
22388c18b41bSKonrad Dybcio 	.halt_reg = 0x1d58,
22398c18b41bSKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
22408c18b41bSKonrad Dybcio 	.clkr = {
22418c18b41bSKonrad Dybcio 		.enable_reg = 0x1d58,
22428c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
22430519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
22448c18b41bSKonrad Dybcio 			.name = "gcc_ufs_tx_symbol_0_clk",
224574a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw },
224674a33facSKonrad Dybcio 			.num_parents = 1,
22478c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
22488c18b41bSKonrad Dybcio 		},
22498c18b41bSKonrad Dybcio 	},
22508c18b41bSKonrad Dybcio };
22518c18b41bSKonrad Dybcio 
22528c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_tx_symbol_1_clk = {
22538c18b41bSKonrad Dybcio 	.halt_reg = 0x1d5c,
22548c18b41bSKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
22558c18b41bSKonrad Dybcio 	.clkr = {
22568c18b41bSKonrad Dybcio 		.enable_reg = 0x1d5c,
22578c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
22580519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
22598c18b41bSKonrad Dybcio 			.name = "gcc_ufs_tx_symbol_1_clk",
226074a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw },
226174a33facSKonrad Dybcio 			.num_parents = 1,
22628c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
22638c18b41bSKonrad Dybcio 		},
22648c18b41bSKonrad Dybcio 	},
22658c18b41bSKonrad Dybcio };
22668c18b41bSKonrad Dybcio 
22678c18b41bSKonrad Dybcio static struct clk_branch gcc_usb2_hs_phy_sleep_clk = {
22688c18b41bSKonrad Dybcio 	.halt_reg = 0x04ac,
22698c18b41bSKonrad Dybcio 	.clkr = {
22708c18b41bSKonrad Dybcio 		.enable_reg = 0x04ac,
22718c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
22720519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
22738c18b41bSKonrad Dybcio 			.name = "gcc_usb2_hs_phy_sleep_clk",
22740519d1d0SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
22750519d1d0SKonrad Dybcio 				.fw_name = "sleep",
22760519d1d0SKonrad Dybcio 				.name = "sleep"
22770519d1d0SKonrad Dybcio 			},
22780519d1d0SKonrad Dybcio 			.num_parents = 1,
22798c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
22808c18b41bSKonrad Dybcio 		},
22818c18b41bSKonrad Dybcio 	},
22828c18b41bSKonrad Dybcio };
22838c18b41bSKonrad Dybcio 
2284aec89f78SBastian Köcher static struct clk_branch gcc_usb30_master_clk = {
2285aec89f78SBastian Köcher 	.halt_reg = 0x03c8,
2286aec89f78SBastian Köcher 	.clkr = {
2287aec89f78SBastian Köcher 		.enable_reg = 0x03c8,
2288aec89f78SBastian Köcher 		.enable_mask = BIT(0),
22890519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2290aec89f78SBastian Köcher 			.name = "gcc_usb30_master_clk",
22910519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &usb30_master_clk_src.clkr.hw },
2292aec89f78SBastian Köcher 			.num_parents = 1,
2293aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2294aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2295aec89f78SBastian Köcher 		},
2296aec89f78SBastian Köcher 	},
2297aec89f78SBastian Köcher };
2298aec89f78SBastian Köcher 
2299aec89f78SBastian Köcher static struct clk_branch gcc_usb30_mock_utmi_clk = {
2300aec89f78SBastian Köcher 	.halt_reg = 0x03d0,
2301aec89f78SBastian Köcher 	.clkr = {
2302aec89f78SBastian Köcher 		.enable_reg = 0x03d0,
2303aec89f78SBastian Köcher 		.enable_mask = BIT(0),
23040519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2305aec89f78SBastian Köcher 			.name = "gcc_usb30_mock_utmi_clk",
23060519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &usb30_mock_utmi_clk_src.clkr.hw },
2307aec89f78SBastian Köcher 			.num_parents = 1,
2308aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2309aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2310aec89f78SBastian Köcher 		},
2311aec89f78SBastian Köcher 	},
2312aec89f78SBastian Köcher };
2313aec89f78SBastian Köcher 
23148c18b41bSKonrad Dybcio static struct clk_branch gcc_usb30_sleep_clk = {
23158c18b41bSKonrad Dybcio 	.halt_reg = 0x03cc,
23168c18b41bSKonrad Dybcio 	.clkr = {
23178c18b41bSKonrad Dybcio 		.enable_reg = 0x03cc,
23188c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
23190519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
23208c18b41bSKonrad Dybcio 			.name = "gcc_usb30_sleep_clk",
23210519d1d0SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
23220519d1d0SKonrad Dybcio 				.fw_name = "sleep",
23230519d1d0SKonrad Dybcio 				.name = "sleep"
23240519d1d0SKonrad Dybcio 			},
23250519d1d0SKonrad Dybcio 			.num_parents = 1,
23268c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
23278c18b41bSKonrad Dybcio 		},
23288c18b41bSKonrad Dybcio 	},
23298c18b41bSKonrad Dybcio };
23308c18b41bSKonrad Dybcio 
2331aec89f78SBastian Köcher static struct clk_branch gcc_usb3_phy_aux_clk = {
2332aec89f78SBastian Köcher 	.halt_reg = 0x1408,
2333aec89f78SBastian Köcher 	.clkr = {
2334aec89f78SBastian Köcher 		.enable_reg = 0x1408,
2335aec89f78SBastian Köcher 		.enable_mask = BIT(0),
23360519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2337aec89f78SBastian Köcher 			.name = "gcc_usb3_phy_aux_clk",
23380519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &usb3_phy_aux_clk_src.clkr.hw },
2339aec89f78SBastian Köcher 			.num_parents = 1,
2340aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2341aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2342aec89f78SBastian Köcher 		},
2343aec89f78SBastian Köcher 	},
2344aec89f78SBastian Köcher };
2345aec89f78SBastian Köcher 
2346b8f415c6SKonrad Dybcio static struct clk_branch gcc_usb3_phy_pipe_clk = {
2347b8f415c6SKonrad Dybcio 	.halt_reg = 0x140c,
2348b8f415c6SKonrad Dybcio 	.halt_check = BRANCH_HALT_SKIP,
2349b8f415c6SKonrad Dybcio 	.clkr = {
2350b8f415c6SKonrad Dybcio 		.enable_reg = 0x140c,
2351b8f415c6SKonrad Dybcio 		.enable_mask = BIT(0),
2352b8f415c6SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2353b8f415c6SKonrad Dybcio 			.name = "gcc_usb3_phy_pipe_clk",
2354b8f415c6SKonrad Dybcio 			.ops = &clk_branch2_ops,
2355b8f415c6SKonrad Dybcio 		},
2356b8f415c6SKonrad Dybcio 	},
2357b8f415c6SKonrad Dybcio };
2358b8f415c6SKonrad Dybcio 
23598c18b41bSKonrad Dybcio static struct clk_branch gcc_usb_hs_ahb_clk = {
23608c18b41bSKonrad Dybcio 	.halt_reg = 0x0488,
23618c18b41bSKonrad Dybcio 	.clkr = {
23628c18b41bSKonrad Dybcio 		.enable_reg = 0x0488,
23638c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
23640519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
23658c18b41bSKonrad Dybcio 			.name = "gcc_usb_hs_ahb_clk",
236674a33facSKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw },
236774a33facSKonrad Dybcio 			.num_parents = 1,
23688c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
23698c18b41bSKonrad Dybcio 		},
23708c18b41bSKonrad Dybcio 	},
23718c18b41bSKonrad Dybcio };
23728c18b41bSKonrad Dybcio 
2373aec89f78SBastian Köcher static struct clk_branch gcc_usb_hs_system_clk = {
2374aec89f78SBastian Köcher 	.halt_reg = 0x0484,
2375aec89f78SBastian Köcher 	.clkr = {
2376aec89f78SBastian Köcher 		.enable_reg = 0x0484,
2377aec89f78SBastian Köcher 		.enable_mask = BIT(0),
23780519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2379aec89f78SBastian Köcher 			.name = "gcc_usb_hs_system_clk",
23800519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &usb_hs_system_clk_src.clkr.hw },
2381aec89f78SBastian Köcher 			.num_parents = 1,
2382aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2383aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2384aec89f78SBastian Köcher 		},
2385aec89f78SBastian Köcher 	},
2386aec89f78SBastian Köcher };
2387aec89f78SBastian Köcher 
23888c18b41bSKonrad Dybcio static struct clk_branch gcc_usb_phy_cfg_ahb2phy_clk = {
23898c18b41bSKonrad Dybcio 	.halt_reg = 0x1a84,
23908c18b41bSKonrad Dybcio 	.clkr = {
23918c18b41bSKonrad Dybcio 		.enable_reg = 0x1a84,
23928c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
23930519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
23948c18b41bSKonrad Dybcio 			.name = "gcc_usb_phy_cfg_ahb2phy_clk",
23958c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
23968c18b41bSKonrad Dybcio 		},
23978c18b41bSKonrad Dybcio 	},
23988c18b41bSKonrad Dybcio };
23998c18b41bSKonrad Dybcio 
2400b8f415c6SKonrad Dybcio static struct clk_branch gpll0_out_mmsscc = {
2401b8f415c6SKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
2402b8f415c6SKonrad Dybcio 	.clkr = {
2403b8f415c6SKonrad Dybcio 		.enable_reg = 0x1484,
2404b8f415c6SKonrad Dybcio 		.enable_mask = BIT(26),
2405b8f415c6SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2406b8f415c6SKonrad Dybcio 			.name = "gpll0_out_mmsscc",
2407b8f415c6SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw },
2408b8f415c6SKonrad Dybcio 			.num_parents = 1,
2409b8f415c6SKonrad Dybcio 			.ops = &clk_branch2_ops,
2410b8f415c6SKonrad Dybcio 		},
2411b8f415c6SKonrad Dybcio 	},
2412b8f415c6SKonrad Dybcio };
2413b8f415c6SKonrad Dybcio 
2414b8f415c6SKonrad Dybcio static struct clk_branch gpll0_out_msscc = {
2415b8f415c6SKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
2416b8f415c6SKonrad Dybcio 	.clkr = {
2417b8f415c6SKonrad Dybcio 		.enable_reg = 0x1484,
2418b8f415c6SKonrad Dybcio 		.enable_mask = BIT(27),
2419b8f415c6SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2420b8f415c6SKonrad Dybcio 			.name = "gpll0_out_msscc",
2421b8f415c6SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw },
2422b8f415c6SKonrad Dybcio 			.num_parents = 1,
2423b8f415c6SKonrad Dybcio 			.ops = &clk_branch2_ops,
2424b8f415c6SKonrad Dybcio 		},
2425b8f415c6SKonrad Dybcio 	},
2426b8f415c6SKonrad Dybcio };
2427b8f415c6SKonrad Dybcio 
2428b8f415c6SKonrad Dybcio static struct clk_branch pcie_0_phy_ldo = {
2429b8f415c6SKonrad Dybcio 	.halt_reg = 0x1e00,
2430b8f415c6SKonrad Dybcio 	.halt_check = BRANCH_HALT_SKIP,
2431b8f415c6SKonrad Dybcio 	.clkr = {
2432b8f415c6SKonrad Dybcio 		.enable_reg = 0x1E00,
2433b8f415c6SKonrad Dybcio 		.enable_mask = BIT(0),
2434b8f415c6SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2435b8f415c6SKonrad Dybcio 			.name = "pcie_0_phy_ldo",
2436b8f415c6SKonrad Dybcio 			.ops = &clk_branch2_ops,
2437b8f415c6SKonrad Dybcio 		},
2438b8f415c6SKonrad Dybcio 	},
2439b8f415c6SKonrad Dybcio };
2440b8f415c6SKonrad Dybcio 
2441b8f415c6SKonrad Dybcio static struct clk_branch pcie_1_phy_ldo = {
2442b8f415c6SKonrad Dybcio 	.halt_reg = 0x1e04,
2443b8f415c6SKonrad Dybcio 	.halt_check = BRANCH_HALT_SKIP,
2444b8f415c6SKonrad Dybcio 	.clkr = {
2445b8f415c6SKonrad Dybcio 		.enable_reg = 0x1E04,
2446b8f415c6SKonrad Dybcio 		.enable_mask = BIT(0),
2447b8f415c6SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2448b8f415c6SKonrad Dybcio 			.name = "pcie_1_phy_ldo",
2449b8f415c6SKonrad Dybcio 			.ops = &clk_branch2_ops,
2450b8f415c6SKonrad Dybcio 		},
2451b8f415c6SKonrad Dybcio 	},
2452b8f415c6SKonrad Dybcio };
2453b8f415c6SKonrad Dybcio 
2454b8f415c6SKonrad Dybcio static struct clk_branch ufs_phy_ldo = {
2455b8f415c6SKonrad Dybcio 	.halt_reg = 0x1e0c,
2456b8f415c6SKonrad Dybcio 	.halt_check = BRANCH_HALT_SKIP,
2457b8f415c6SKonrad Dybcio 	.clkr = {
2458b8f415c6SKonrad Dybcio 		.enable_reg = 0x1E0C,
2459b8f415c6SKonrad Dybcio 		.enable_mask = BIT(0),
2460b8f415c6SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2461b8f415c6SKonrad Dybcio 			.name = "ufs_phy_ldo",
2462b8f415c6SKonrad Dybcio 			.ops = &clk_branch2_ops,
2463b8f415c6SKonrad Dybcio 		},
2464b8f415c6SKonrad Dybcio 	},
2465b8f415c6SKonrad Dybcio };
2466b8f415c6SKonrad Dybcio 
2467b8f415c6SKonrad Dybcio static struct clk_branch usb_ss_phy_ldo = {
2468b8f415c6SKonrad Dybcio 	.halt_reg = 0x1e08,
2469b8f415c6SKonrad Dybcio 	.halt_check = BRANCH_HALT_SKIP,
2470b8f415c6SKonrad Dybcio 	.clkr = {
2471b8f415c6SKonrad Dybcio 		.enable_reg = 0x1E08,
2472b8f415c6SKonrad Dybcio 		.enable_mask = BIT(0),
2473b8f415c6SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2474b8f415c6SKonrad Dybcio 			.name = "usb_ss_phy_ldo",
2475b8f415c6SKonrad Dybcio 			.ops = &clk_branch2_ops,
2476b8f415c6SKonrad Dybcio 		},
2477b8f415c6SKonrad Dybcio 	},
2478b8f415c6SKonrad Dybcio };
2479b8f415c6SKonrad Dybcio 
2480b8f415c6SKonrad Dybcio static struct clk_branch gcc_boot_rom_ahb_clk = {
2481b8f415c6SKonrad Dybcio 	.halt_reg = 0x0e04,
2482b8f415c6SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2483b8f415c6SKonrad Dybcio 	.hwcg_reg = 0x0e04,
2484b8f415c6SKonrad Dybcio 	.hwcg_bit = 1,
2485b8f415c6SKonrad Dybcio 	.clkr = {
2486b8f415c6SKonrad Dybcio 		.enable_reg = 0x1484,
2487b8f415c6SKonrad Dybcio 		.enable_mask = BIT(10),
2488b8f415c6SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2489b8f415c6SKonrad Dybcio 			.name = "gcc_boot_rom_ahb_clk",
2490b8f415c6SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &config_noc_clk_src.clkr.hw },
2491b8f415c6SKonrad Dybcio 			.num_parents = 1,
2492b8f415c6SKonrad Dybcio 			.ops = &clk_branch2_ops,
2493b8f415c6SKonrad Dybcio 		},
2494b8f415c6SKonrad Dybcio 	},
2495b8f415c6SKonrad Dybcio };
2496b8f415c6SKonrad Dybcio 
2497b8f415c6SKonrad Dybcio static struct clk_branch gcc_prng_ahb_clk = {
2498b8f415c6SKonrad Dybcio 	.halt_reg = 0x0d04,
2499b8f415c6SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2500b8f415c6SKonrad Dybcio 	.clkr = {
2501b8f415c6SKonrad Dybcio 		.enable_reg = 0x1484,
2502b8f415c6SKonrad Dybcio 		.enable_mask = BIT(13),
2503b8f415c6SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2504b8f415c6SKonrad Dybcio 			.name = "gcc_prng_ahb_clk",
2505b8f415c6SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw },
2506b8f415c6SKonrad Dybcio 			.num_parents = 1,
2507b8f415c6SKonrad Dybcio 			.ops = &clk_branch2_ops,
2508b8f415c6SKonrad Dybcio 		},
2509b8f415c6SKonrad Dybcio 	},
2510b8f415c6SKonrad Dybcio };
2511b8f415c6SKonrad Dybcio 
25128c18b41bSKonrad Dybcio static struct gdsc pcie_0_gdsc = {
25138c18b41bSKonrad Dybcio 		.gdscr = 0x1ac4,
25148c18b41bSKonrad Dybcio 		.pd = {
25158c18b41bSKonrad Dybcio 			.name = "pcie_0",
25168c18b41bSKonrad Dybcio 		},
25178c18b41bSKonrad Dybcio 		.pwrsts = PWRSTS_OFF_ON,
25188c18b41bSKonrad Dybcio };
25198c18b41bSKonrad Dybcio 
25208c18b41bSKonrad Dybcio static struct gdsc pcie_1_gdsc = {
25218c18b41bSKonrad Dybcio 		.gdscr = 0x1b44,
25228c18b41bSKonrad Dybcio 		.pd = {
25238c18b41bSKonrad Dybcio 			.name = "pcie_1",
25248c18b41bSKonrad Dybcio 		},
25258c18b41bSKonrad Dybcio 		.pwrsts = PWRSTS_OFF_ON,
25268c18b41bSKonrad Dybcio };
25278c18b41bSKonrad Dybcio 
25288c18b41bSKonrad Dybcio static struct gdsc usb30_gdsc = {
25298c18b41bSKonrad Dybcio 		.gdscr = 0x3c4,
25308c18b41bSKonrad Dybcio 		.pd = {
25318c18b41bSKonrad Dybcio 			.name = "usb30",
25328c18b41bSKonrad Dybcio 		},
25338c18b41bSKonrad Dybcio 		.pwrsts = PWRSTS_OFF_ON,
25348c18b41bSKonrad Dybcio };
25358c18b41bSKonrad Dybcio 
25368c18b41bSKonrad Dybcio static struct gdsc ufs_gdsc = {
25378c18b41bSKonrad Dybcio 		.gdscr = 0x1d44,
25388c18b41bSKonrad Dybcio 		.pd = {
25398c18b41bSKonrad Dybcio 			.name = "ufs",
25408c18b41bSKonrad Dybcio 		},
25418c18b41bSKonrad Dybcio 		.pwrsts = PWRSTS_OFF_ON,
25428c18b41bSKonrad Dybcio };
25438c18b41bSKonrad Dybcio 
2544aec89f78SBastian Köcher static struct clk_regmap *gcc_msm8994_clocks[] = {
2545aec89f78SBastian Köcher 	[GPLL0_EARLY] = &gpll0_early.clkr,
2546aec89f78SBastian Köcher 	[GPLL0] = &gpll0.clkr,
2547aec89f78SBastian Köcher 	[GPLL4_EARLY] = &gpll4_early.clkr,
2548aec89f78SBastian Köcher 	[GPLL4] = &gpll4.clkr,
254974a33facSKonrad Dybcio 	[CONFIG_NOC_CLK_SRC] = &config_noc_clk_src.clkr,
255074a33facSKonrad Dybcio 	[PERIPH_NOC_CLK_SRC] = &periph_noc_clk_src.clkr,
255174a33facSKonrad Dybcio 	[SYSTEM_NOC_CLK_SRC] = &system_noc_clk_src.clkr,
2552aec89f78SBastian Köcher 	[UFS_AXI_CLK_SRC] = &ufs_axi_clk_src.clkr,
2553aec89f78SBastian Köcher 	[USB30_MASTER_CLK_SRC] = &usb30_master_clk_src.clkr,
2554aec89f78SBastian Köcher 	[BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr,
2555aec89f78SBastian Köcher 	[BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr,
2556aec89f78SBastian Köcher 	[BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr,
2557aec89f78SBastian Köcher 	[BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr,
2558aec89f78SBastian Köcher 	[BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr,
2559aec89f78SBastian Köcher 	[BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr,
2560aec89f78SBastian Köcher 	[BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr,
2561aec89f78SBastian Köcher 	[BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr,
2562aec89f78SBastian Köcher 	[BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr,
2563aec89f78SBastian Köcher 	[BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr,
2564aec89f78SBastian Köcher 	[BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr,
2565aec89f78SBastian Köcher 	[BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr,
2566aec89f78SBastian Köcher 	[BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr,
2567aec89f78SBastian Köcher 	[BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr,
2568aec89f78SBastian Köcher 	[BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr,
2569aec89f78SBastian Köcher 	[BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr,
2570aec89f78SBastian Köcher 	[BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr,
2571aec89f78SBastian Köcher 	[BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr,
2572aec89f78SBastian Köcher 	[BLSP2_QUP1_I2C_APPS_CLK_SRC] = &blsp2_qup1_i2c_apps_clk_src.clkr,
2573aec89f78SBastian Köcher 	[BLSP2_QUP1_SPI_APPS_CLK_SRC] = &blsp2_qup1_spi_apps_clk_src.clkr,
2574aec89f78SBastian Köcher 	[BLSP2_QUP2_I2C_APPS_CLK_SRC] = &blsp2_qup2_i2c_apps_clk_src.clkr,
2575aec89f78SBastian Köcher 	[BLSP2_QUP2_SPI_APPS_CLK_SRC] = &blsp2_qup2_spi_apps_clk_src.clkr,
2576aec89f78SBastian Köcher 	[BLSP2_QUP3_I2C_APPS_CLK_SRC] = &blsp2_qup3_i2c_apps_clk_src.clkr,
2577aec89f78SBastian Köcher 	[BLSP2_QUP3_SPI_APPS_CLK_SRC] = &blsp2_qup3_spi_apps_clk_src.clkr,
2578aec89f78SBastian Köcher 	[BLSP2_QUP4_I2C_APPS_CLK_SRC] = &blsp2_qup4_i2c_apps_clk_src.clkr,
2579aec89f78SBastian Köcher 	[BLSP2_QUP4_SPI_APPS_CLK_SRC] = &blsp2_qup4_spi_apps_clk_src.clkr,
2580aec89f78SBastian Köcher 	[BLSP2_QUP5_I2C_APPS_CLK_SRC] = &blsp2_qup5_i2c_apps_clk_src.clkr,
2581aec89f78SBastian Köcher 	[BLSP2_QUP5_SPI_APPS_CLK_SRC] = &blsp2_qup5_spi_apps_clk_src.clkr,
2582aec89f78SBastian Köcher 	[BLSP2_QUP6_I2C_APPS_CLK_SRC] = &blsp2_qup6_i2c_apps_clk_src.clkr,
2583aec89f78SBastian Köcher 	[BLSP2_QUP6_SPI_APPS_CLK_SRC] = &blsp2_qup6_spi_apps_clk_src.clkr,
2584aec89f78SBastian Köcher 	[BLSP2_UART1_APPS_CLK_SRC] = &blsp2_uart1_apps_clk_src.clkr,
2585aec89f78SBastian Köcher 	[BLSP2_UART2_APPS_CLK_SRC] = &blsp2_uart2_apps_clk_src.clkr,
2586aec89f78SBastian Köcher 	[BLSP2_UART3_APPS_CLK_SRC] = &blsp2_uart3_apps_clk_src.clkr,
2587aec89f78SBastian Köcher 	[BLSP2_UART4_APPS_CLK_SRC] = &blsp2_uart4_apps_clk_src.clkr,
2588aec89f78SBastian Köcher 	[BLSP2_UART5_APPS_CLK_SRC] = &blsp2_uart5_apps_clk_src.clkr,
2589aec89f78SBastian Köcher 	[BLSP2_UART6_APPS_CLK_SRC] = &blsp2_uart6_apps_clk_src.clkr,
2590aec89f78SBastian Köcher 	[GP1_CLK_SRC] = &gp1_clk_src.clkr,
2591aec89f78SBastian Köcher 	[GP2_CLK_SRC] = &gp2_clk_src.clkr,
2592aec89f78SBastian Köcher 	[GP3_CLK_SRC] = &gp3_clk_src.clkr,
2593aec89f78SBastian Köcher 	[PCIE_0_AUX_CLK_SRC] = &pcie_0_aux_clk_src.clkr,
2594aec89f78SBastian Köcher 	[PCIE_0_PIPE_CLK_SRC] = &pcie_0_pipe_clk_src.clkr,
2595aec89f78SBastian Köcher 	[PCIE_1_AUX_CLK_SRC] = &pcie_1_aux_clk_src.clkr,
2596aec89f78SBastian Köcher 	[PCIE_1_PIPE_CLK_SRC] = &pcie_1_pipe_clk_src.clkr,
2597aec89f78SBastian Köcher 	[PDM2_CLK_SRC] = &pdm2_clk_src.clkr,
2598aec89f78SBastian Köcher 	[SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr,
2599aec89f78SBastian Köcher 	[SDCC2_APPS_CLK_SRC] = &sdcc2_apps_clk_src.clkr,
2600aec89f78SBastian Köcher 	[SDCC3_APPS_CLK_SRC] = &sdcc3_apps_clk_src.clkr,
2601aec89f78SBastian Köcher 	[SDCC4_APPS_CLK_SRC] = &sdcc4_apps_clk_src.clkr,
2602aec89f78SBastian Köcher 	[TSIF_REF_CLK_SRC] = &tsif_ref_clk_src.clkr,
2603aec89f78SBastian Köcher 	[USB30_MOCK_UTMI_CLK_SRC] = &usb30_mock_utmi_clk_src.clkr,
2604aec89f78SBastian Köcher 	[USB3_PHY_AUX_CLK_SRC] = &usb3_phy_aux_clk_src.clkr,
2605aec89f78SBastian Köcher 	[USB_HS_SYSTEM_CLK_SRC] = &usb_hs_system_clk_src.clkr,
2606aec89f78SBastian Köcher 	[GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr,
2607aec89f78SBastian Köcher 	[GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr,
2608aec89f78SBastian Köcher 	[GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr,
2609aec89f78SBastian Köcher 	[GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr,
2610aec89f78SBastian Köcher 	[GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr,
2611aec89f78SBastian Köcher 	[GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr,
2612aec89f78SBastian Köcher 	[GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr,
2613aec89f78SBastian Köcher 	[GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr,
2614aec89f78SBastian Köcher 	[GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr,
2615aec89f78SBastian Köcher 	[GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr,
2616aec89f78SBastian Köcher 	[GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr,
2617aec89f78SBastian Köcher 	[GCC_BLSP1_QUP6_I2C_APPS_CLK] = &gcc_blsp1_qup6_i2c_apps_clk.clkr,
2618aec89f78SBastian Köcher 	[GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr,
2619aec89f78SBastian Köcher 	[GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr,
2620aec89f78SBastian Köcher 	[GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr,
2621aec89f78SBastian Köcher 	[GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr,
2622aec89f78SBastian Köcher 	[GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr,
2623aec89f78SBastian Köcher 	[GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr,
2624aec89f78SBastian Köcher 	[GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr,
2625aec89f78SBastian Köcher 	[GCC_BLSP2_AHB_CLK] = &gcc_blsp2_ahb_clk.clkr,
2626aec89f78SBastian Köcher 	[GCC_BLSP2_QUP1_I2C_APPS_CLK] = &gcc_blsp2_qup1_i2c_apps_clk.clkr,
2627aec89f78SBastian Köcher 	[GCC_BLSP2_QUP1_SPI_APPS_CLK] = &gcc_blsp2_qup1_spi_apps_clk.clkr,
2628aec89f78SBastian Köcher 	[GCC_BLSP2_QUP2_I2C_APPS_CLK] = &gcc_blsp2_qup2_i2c_apps_clk.clkr,
2629aec89f78SBastian Köcher 	[GCC_BLSP2_QUP2_SPI_APPS_CLK] = &gcc_blsp2_qup2_spi_apps_clk.clkr,
2630aec89f78SBastian Köcher 	[GCC_BLSP2_QUP3_I2C_APPS_CLK] = &gcc_blsp2_qup3_i2c_apps_clk.clkr,
2631aec89f78SBastian Köcher 	[GCC_BLSP2_QUP3_SPI_APPS_CLK] = &gcc_blsp2_qup3_spi_apps_clk.clkr,
2632aec89f78SBastian Köcher 	[GCC_BLSP2_QUP4_I2C_APPS_CLK] = &gcc_blsp2_qup4_i2c_apps_clk.clkr,
2633aec89f78SBastian Köcher 	[GCC_BLSP2_QUP4_SPI_APPS_CLK] = &gcc_blsp2_qup4_spi_apps_clk.clkr,
2634aec89f78SBastian Köcher 	[GCC_BLSP2_QUP5_I2C_APPS_CLK] = &gcc_blsp2_qup5_i2c_apps_clk.clkr,
2635aec89f78SBastian Köcher 	[GCC_BLSP2_QUP5_SPI_APPS_CLK] = &gcc_blsp2_qup5_spi_apps_clk.clkr,
2636aec89f78SBastian Köcher 	[GCC_BLSP2_QUP6_I2C_APPS_CLK] = &gcc_blsp2_qup6_i2c_apps_clk.clkr,
2637aec89f78SBastian Köcher 	[GCC_BLSP2_QUP6_SPI_APPS_CLK] = &gcc_blsp2_qup6_spi_apps_clk.clkr,
2638aec89f78SBastian Köcher 	[GCC_BLSP2_UART1_APPS_CLK] = &gcc_blsp2_uart1_apps_clk.clkr,
2639aec89f78SBastian Köcher 	[GCC_BLSP2_UART2_APPS_CLK] = &gcc_blsp2_uart2_apps_clk.clkr,
2640aec89f78SBastian Köcher 	[GCC_BLSP2_UART3_APPS_CLK] = &gcc_blsp2_uart3_apps_clk.clkr,
2641aec89f78SBastian Köcher 	[GCC_BLSP2_UART4_APPS_CLK] = &gcc_blsp2_uart4_apps_clk.clkr,
2642aec89f78SBastian Köcher 	[GCC_BLSP2_UART5_APPS_CLK] = &gcc_blsp2_uart5_apps_clk.clkr,
2643aec89f78SBastian Köcher 	[GCC_BLSP2_UART6_APPS_CLK] = &gcc_blsp2_uart6_apps_clk.clkr,
2644aec89f78SBastian Köcher 	[GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
2645aec89f78SBastian Köcher 	[GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
2646aec89f78SBastian Köcher 	[GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
26478c18b41bSKonrad Dybcio 	[GCC_LPASS_Q6_AXI_CLK] = &gcc_lpass_q6_axi_clk.clkr,
26488c18b41bSKonrad Dybcio 	[GCC_MSS_Q6_BIMC_AXI_CLK] = &gcc_mss_q6_bimc_axi_clk.clkr,
2649aec89f78SBastian Köcher 	[GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,
26508c18b41bSKonrad Dybcio 	[GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr,
26518c18b41bSKonrad Dybcio 	[GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr,
2652aec89f78SBastian Köcher 	[GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,
26538c18b41bSKonrad Dybcio 	[GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr,
2654aec89f78SBastian Köcher 	[GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,
26558c18b41bSKonrad Dybcio 	[GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr,
26568c18b41bSKonrad Dybcio 	[GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr,
2657aec89f78SBastian Köcher 	[GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,
26588c18b41bSKonrad Dybcio 	[GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr,
2659aec89f78SBastian Köcher 	[GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
26608c18b41bSKonrad Dybcio 	[GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
2661eaff16bcSJeremy McNicoll 	[GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
26628c18b41bSKonrad Dybcio 	[GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
26638c18b41bSKonrad Dybcio 	[GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
26648c18b41bSKonrad Dybcio 	[GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
26658c18b41bSKonrad Dybcio 	[GCC_SDCC3_AHB_CLK] = &gcc_sdcc3_ahb_clk.clkr,
26668c18b41bSKonrad Dybcio 	[GCC_SDCC3_APPS_CLK] = &gcc_sdcc3_apps_clk.clkr,
26678c18b41bSKonrad Dybcio 	[GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr,
26688c18b41bSKonrad Dybcio 	[GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr,
2669aec89f78SBastian Köcher 	[GCC_SYS_NOC_UFS_AXI_CLK] = &gcc_sys_noc_ufs_axi_clk.clkr,
2670aec89f78SBastian Köcher 	[GCC_SYS_NOC_USB3_AXI_CLK] = &gcc_sys_noc_usb3_axi_clk.clkr,
26718c18b41bSKonrad Dybcio 	[GCC_TSIF_AHB_CLK] = &gcc_tsif_ahb_clk.clkr,
2672aec89f78SBastian Köcher 	[GCC_TSIF_REF_CLK] = &gcc_tsif_ref_clk.clkr,
26738c18b41bSKonrad Dybcio 	[GCC_UFS_AHB_CLK] = &gcc_ufs_ahb_clk.clkr,
2674aec89f78SBastian Köcher 	[GCC_UFS_AXI_CLK] = &gcc_ufs_axi_clk.clkr,
2675aec89f78SBastian Köcher 	[GCC_UFS_RX_CFG_CLK] = &gcc_ufs_rx_cfg_clk.clkr,
26768c18b41bSKonrad Dybcio 	[GCC_UFS_RX_SYMBOL_0_CLK] = &gcc_ufs_rx_symbol_0_clk.clkr,
26778c18b41bSKonrad Dybcio 	[GCC_UFS_RX_SYMBOL_1_CLK] = &gcc_ufs_rx_symbol_1_clk.clkr,
2678aec89f78SBastian Köcher 	[GCC_UFS_TX_CFG_CLK] = &gcc_ufs_tx_cfg_clk.clkr,
26798c18b41bSKonrad Dybcio 	[GCC_UFS_TX_SYMBOL_0_CLK] = &gcc_ufs_tx_symbol_0_clk.clkr,
26808c18b41bSKonrad Dybcio 	[GCC_UFS_TX_SYMBOL_1_CLK] = &gcc_ufs_tx_symbol_1_clk.clkr,
26818c18b41bSKonrad Dybcio 	[GCC_USB2_HS_PHY_SLEEP_CLK] = &gcc_usb2_hs_phy_sleep_clk.clkr,
2682aec89f78SBastian Köcher 	[GCC_USB30_MASTER_CLK] = &gcc_usb30_master_clk.clkr,
2683aec89f78SBastian Köcher 	[GCC_USB30_MOCK_UTMI_CLK] = &gcc_usb30_mock_utmi_clk.clkr,
26848c18b41bSKonrad Dybcio 	[GCC_USB30_SLEEP_CLK] = &gcc_usb30_sleep_clk.clkr,
2685aec89f78SBastian Köcher 	[GCC_USB3_PHY_AUX_CLK] = &gcc_usb3_phy_aux_clk.clkr,
2686b8f415c6SKonrad Dybcio 	[GCC_USB3_PHY_PIPE_CLK] = &gcc_usb3_phy_pipe_clk.clkr,
26878c18b41bSKonrad Dybcio 	[GCC_USB_HS_AHB_CLK] = &gcc_usb_hs_ahb_clk.clkr,
2688aec89f78SBastian Köcher 	[GCC_USB_HS_SYSTEM_CLK] = &gcc_usb_hs_system_clk.clkr,
26898c18b41bSKonrad Dybcio 	[GCC_USB_PHY_CFG_AHB2PHY_CLK] = &gcc_usb_phy_cfg_ahb2phy_clk.clkr,
2690b8f415c6SKonrad Dybcio 	[GPLL0_OUT_MMSSCC] = &gpll0_out_mmsscc.clkr,
2691b8f415c6SKonrad Dybcio 	[GPLL0_OUT_MSSCC] = &gpll0_out_msscc.clkr,
2692b8f415c6SKonrad Dybcio 	[PCIE_0_PHY_LDO] = &pcie_0_phy_ldo.clkr,
2693b8f415c6SKonrad Dybcio 	[PCIE_1_PHY_LDO] = &pcie_1_phy_ldo.clkr,
2694b8f415c6SKonrad Dybcio 	[UFS_PHY_LDO] = &ufs_phy_ldo.clkr,
2695b8f415c6SKonrad Dybcio 	[USB_SS_PHY_LDO] = &usb_ss_phy_ldo.clkr,
2696b8f415c6SKonrad Dybcio 	[GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
2697b8f415c6SKonrad Dybcio 	[GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
26988c18b41bSKonrad Dybcio };
26998c18b41bSKonrad Dybcio 
27008c18b41bSKonrad Dybcio static struct gdsc *gcc_msm8994_gdscs[] = {
270135bb1e6eSKonrad Dybcio 	/* This GDSC does not exist, but ABI has to remain intact */
270235bb1e6eSKonrad Dybcio 	[PCIE_GDSC] = NULL,
27038c18b41bSKonrad Dybcio 	[PCIE_0_GDSC] = &pcie_0_gdsc,
27048c18b41bSKonrad Dybcio 	[PCIE_1_GDSC] = &pcie_1_gdsc,
27058c18b41bSKonrad Dybcio 	[USB30_GDSC] = &usb30_gdsc,
27068c18b41bSKonrad Dybcio 	[UFS_GDSC] = &ufs_gdsc,
27078c18b41bSKonrad Dybcio };
27088c18b41bSKonrad Dybcio 
27098c18b41bSKonrad Dybcio static const struct qcom_reset_map gcc_msm8994_resets[] = {
27108c18b41bSKonrad Dybcio 	[USB3_PHY_RESET] = { 0x1400 },
27118c18b41bSKonrad Dybcio 	[USB3PHY_PHY_RESET] = { 0x1404 },
2712a888dc4cSKonrad Dybcio 	[MSS_RESET] = { 0x1680 },
27138c18b41bSKonrad Dybcio 	[PCIE_PHY_0_RESET] = { 0x1b18 },
27148c18b41bSKonrad Dybcio 	[PCIE_PHY_1_RESET] = { 0x1b98 },
27158c18b41bSKonrad Dybcio 	[QUSB2_PHY_RESET] = { 0x04b8 },
2716aec89f78SBastian Köcher };
2717aec89f78SBastian Köcher 
2718aec89f78SBastian Köcher static const struct regmap_config gcc_msm8994_regmap_config = {
2719aec89f78SBastian Köcher 	.reg_bits	= 32,
2720aec89f78SBastian Köcher 	.reg_stride	= 4,
2721aec89f78SBastian Köcher 	.val_bits	= 32,
2722aec89f78SBastian Köcher 	.max_register	= 0x2000,
2723aec89f78SBastian Köcher 	.fast_io	= true,
2724aec89f78SBastian Köcher };
2725aec89f78SBastian Köcher 
2726aec89f78SBastian Köcher static const struct qcom_cc_desc gcc_msm8994_desc = {
2727aec89f78SBastian Köcher 	.config = &gcc_msm8994_regmap_config,
2728aec89f78SBastian Köcher 	.clks = gcc_msm8994_clocks,
2729aec89f78SBastian Köcher 	.num_clks = ARRAY_SIZE(gcc_msm8994_clocks),
27308c18b41bSKonrad Dybcio 	.resets = gcc_msm8994_resets,
27318c18b41bSKonrad Dybcio 	.num_resets = ARRAY_SIZE(gcc_msm8994_resets),
27328c18b41bSKonrad Dybcio 	.gdscs = gcc_msm8994_gdscs,
27338c18b41bSKonrad Dybcio 	.num_gdscs = ARRAY_SIZE(gcc_msm8994_gdscs),
2734aec89f78SBastian Köcher };
2735aec89f78SBastian Köcher 
2736aec89f78SBastian Köcher static const struct of_device_id gcc_msm8994_match_table[] = {
2737*c09b8023SKonrad Dybcio 	{ .compatible = "qcom,gcc-msm8992" },
2738*c09b8023SKonrad Dybcio 	{ .compatible = "qcom,gcc-msm8994" }, /* V2 and V2.1 */
2739aec89f78SBastian Köcher 	{}
2740aec89f78SBastian Köcher };
2741aec89f78SBastian Köcher MODULE_DEVICE_TABLE(of, gcc_msm8994_match_table);
2742aec89f78SBastian Köcher 
2743aec89f78SBastian Köcher static int gcc_msm8994_probe(struct platform_device *pdev)
2744aec89f78SBastian Köcher {
2745*c09b8023SKonrad Dybcio 	if (of_device_is_compatible(pdev->dev.of_node, "qcom,gcc-msm8992")) {
2746*c09b8023SKonrad Dybcio 		/* MSM8992 features less clocks and some have different freq tables */
2747*c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[UFS_AXI_CLK_SRC] = NULL;
2748*c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_LPASS_Q6_AXI_CLK] = NULL;
2749*c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[UFS_PHY_LDO] = NULL;
2750*c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_UFS_AHB_CLK] = NULL;
2751*c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_UFS_AXI_CLK] = NULL;
2752*c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_UFS_RX_CFG_CLK] = NULL;
2753*c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_UFS_RX_SYMBOL_0_CLK] = NULL;
2754*c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_UFS_RX_SYMBOL_1_CLK] = NULL;
2755*c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_UFS_TX_CFG_CLK] = NULL;
2756*c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_UFS_TX_SYMBOL_0_CLK] = NULL;
2757*c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_UFS_TX_SYMBOL_1_CLK] = NULL;
2758*c09b8023SKonrad Dybcio 
2759*c09b8023SKonrad Dybcio 		sdcc1_apps_clk_src.freq_tbl = ftbl_sdcc1_apps_clk_src_8992;
2760*c09b8023SKonrad Dybcio 		blsp1_qup1_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2761*c09b8023SKonrad Dybcio 		blsp1_qup2_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2762*c09b8023SKonrad Dybcio 		blsp1_qup3_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2763*c09b8023SKonrad Dybcio 		blsp1_qup4_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2764*c09b8023SKonrad Dybcio 		blsp1_qup5_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2765*c09b8023SKonrad Dybcio 		blsp1_qup6_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2766*c09b8023SKonrad Dybcio 		blsp2_qup1_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2767*c09b8023SKonrad Dybcio 		blsp2_qup2_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2768*c09b8023SKonrad Dybcio 		blsp2_qup3_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2769*c09b8023SKonrad Dybcio 		blsp2_qup4_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2770*c09b8023SKonrad Dybcio 		blsp2_qup5_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2771*c09b8023SKonrad Dybcio 		blsp2_qup6_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2772*c09b8023SKonrad Dybcio 
2773*c09b8023SKonrad Dybcio 		/*
2774*c09b8023SKonrad Dybcio 		 * Some 8992 boards might *possibly* use
2775*c09b8023SKonrad Dybcio 		 * PCIe1 clocks and controller, but it's not
2776*c09b8023SKonrad Dybcio 		 * standard and they should be disabled otherwise.
2777*c09b8023SKonrad Dybcio 		 */
2778*c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[PCIE_1_AUX_CLK_SRC] = NULL;
2779*c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[PCIE_1_PIPE_CLK_SRC] = NULL;
2780*c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[PCIE_1_PHY_LDO] = NULL;
2781*c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_PCIE_1_AUX_CLK] = NULL;
2782*c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_PCIE_1_CFG_AHB_CLK] = NULL;
2783*c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_PCIE_1_MSTR_AXI_CLK] = NULL;
2784*c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_PCIE_1_PIPE_CLK] = NULL;
2785*c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_PCIE_1_SLV_AXI_CLK] = NULL;
2786*c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_SYS_NOC_UFS_AXI_CLK] = NULL;
2787*c09b8023SKonrad Dybcio 	}
2788*c09b8023SKonrad Dybcio 
2789aec89f78SBastian Köcher 	return qcom_cc_probe(pdev, &gcc_msm8994_desc);
2790aec89f78SBastian Köcher }
2791aec89f78SBastian Köcher 
2792aec89f78SBastian Köcher static struct platform_driver gcc_msm8994_driver = {
2793aec89f78SBastian Köcher 	.probe		= gcc_msm8994_probe,
2794aec89f78SBastian Köcher 	.driver		= {
2795aec89f78SBastian Köcher 		.name	= "gcc-msm8994",
2796aec89f78SBastian Köcher 		.of_match_table = gcc_msm8994_match_table,
2797aec89f78SBastian Köcher 	},
2798aec89f78SBastian Köcher };
2799aec89f78SBastian Köcher 
2800aec89f78SBastian Köcher static int __init gcc_msm8994_init(void)
2801aec89f78SBastian Köcher {
2802aec89f78SBastian Köcher 	return platform_driver_register(&gcc_msm8994_driver);
2803aec89f78SBastian Köcher }
2804aec89f78SBastian Köcher core_initcall(gcc_msm8994_init);
2805aec89f78SBastian Köcher 
2806aec89f78SBastian Köcher static void __exit gcc_msm8994_exit(void)
2807aec89f78SBastian Köcher {
2808aec89f78SBastian Köcher 	platform_driver_unregister(&gcc_msm8994_driver);
2809aec89f78SBastian Köcher }
2810aec89f78SBastian Köcher module_exit(gcc_msm8994_exit);
2811aec89f78SBastian Köcher 
2812aec89f78SBastian Köcher MODULE_DESCRIPTION("Qualcomm GCC MSM8994 Driver");
2813aec89f78SBastian Köcher MODULE_LICENSE("GPL v2");
2814aec89f78SBastian Köcher MODULE_ALIAS("platform:gcc-msm8994");
2815