xref: /openbmc/linux/drivers/clk/qcom/gcc-msm8994.c (revision 3494894afff4ad11f25d8342cc99699be496d082)
197fb5e8dSThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only
2aec89f78SBastian Köcher /* Copyright (c) 2013-2016, The Linux Foundation. All rights reserved.
3aec89f78SBastian Köcher  */
4aec89f78SBastian Köcher 
5d7a49c8dSVinod Koul #include <linux/clk-provider.h>
6aec89f78SBastian Köcher #include <linux/kernel.h>
7aec89f78SBastian Köcher #include <linux/init.h>
8aec89f78SBastian Köcher #include <linux/err.h>
9aec89f78SBastian Köcher #include <linux/ctype.h>
10aec89f78SBastian Köcher #include <linux/io.h>
11aec89f78SBastian Köcher #include <linux/of.h>
12c09b8023SKonrad Dybcio #include <linux/of_device.h>
13aec89f78SBastian Köcher #include <linux/platform_device.h>
14aec89f78SBastian Köcher #include <linux/module.h>
15aec89f78SBastian Köcher #include <linux/regmap.h>
16aec89f78SBastian Köcher 
17aec89f78SBastian Köcher #include <dt-bindings/clock/qcom,gcc-msm8994.h>
18aec89f78SBastian Köcher 
19aec89f78SBastian Köcher #include "common.h"
20aec89f78SBastian Köcher #include "clk-regmap.h"
21aec89f78SBastian Köcher #include "clk-alpha-pll.h"
22aec89f78SBastian Köcher #include "clk-rcg.h"
23aec89f78SBastian Köcher #include "clk-branch.h"
24aec89f78SBastian Köcher #include "reset.h"
258c18b41bSKonrad Dybcio #include "gdsc.h"
26aec89f78SBastian Köcher 
27aec89f78SBastian Köcher enum {
28aec89f78SBastian Köcher 	P_XO,
29aec89f78SBastian Köcher 	P_GPLL0,
30aec89f78SBastian Köcher 	P_GPLL4,
31aec89f78SBastian Köcher };
32aec89f78SBastian Köcher 
33aec89f78SBastian Köcher static struct clk_alpha_pll gpll0_early = {
340519d1d0SKonrad Dybcio 	.offset = 0,
3528d3f06eSAbhishek Sahu 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
36aec89f78SBastian Köcher 	.clkr = {
37aec89f78SBastian Köcher 		.enable_reg = 0x1480,
38aec89f78SBastian Köcher 		.enable_mask = BIT(0),
390519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
40aec89f78SBastian Köcher 			.name = "gpll0_early",
410519d1d0SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
420519d1d0SKonrad Dybcio 				.fw_name = "xo",
430519d1d0SKonrad Dybcio 			},
44aec89f78SBastian Köcher 			.num_parents = 1,
45aec89f78SBastian Köcher 			.ops = &clk_alpha_pll_ops,
46aec89f78SBastian Köcher 		},
47aec89f78SBastian Köcher 	},
48aec89f78SBastian Köcher };
49aec89f78SBastian Köcher 
50aec89f78SBastian Köcher static struct clk_alpha_pll_postdiv gpll0 = {
510519d1d0SKonrad Dybcio 	.offset = 0,
5228d3f06eSAbhishek Sahu 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
530519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
54aec89f78SBastian Köcher 		.name = "gpll0",
55aec89f78SBastian Köcher 		.parent_names = (const char *[]) { "gpll0_early" },
56aec89f78SBastian Köcher 		.num_parents = 1,
57aec89f78SBastian Köcher 		.ops = &clk_alpha_pll_postdiv_ops,
58aec89f78SBastian Köcher 	},
59aec89f78SBastian Köcher };
60aec89f78SBastian Köcher 
61aec89f78SBastian Köcher static struct clk_alpha_pll gpll4_early = {
62aec89f78SBastian Köcher 	.offset = 0x1dc0,
6328d3f06eSAbhishek Sahu 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
64aec89f78SBastian Köcher 	.clkr = {
65aec89f78SBastian Köcher 		.enable_reg = 0x1480,
66aec89f78SBastian Köcher 		.enable_mask = BIT(4),
670519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
68aec89f78SBastian Köcher 			.name = "gpll4_early",
690519d1d0SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
700519d1d0SKonrad Dybcio 				.fw_name = "xo",
710519d1d0SKonrad Dybcio 			},
72aec89f78SBastian Köcher 			.num_parents = 1,
73aec89f78SBastian Köcher 			.ops = &clk_alpha_pll_ops,
74aec89f78SBastian Köcher 		},
75aec89f78SBastian Köcher 	},
76aec89f78SBastian Köcher };
77aec89f78SBastian Köcher 
78aec89f78SBastian Köcher static struct clk_alpha_pll_postdiv gpll4 = {
79aec89f78SBastian Köcher 	.offset = 0x1dc0,
8028d3f06eSAbhishek Sahu 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
810519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
82aec89f78SBastian Köcher 		.name = "gpll4",
83aec89f78SBastian Köcher 		.parent_names = (const char *[]) { "gpll4_early" },
84aec89f78SBastian Köcher 		.num_parents = 1,
85aec89f78SBastian Köcher 		.ops = &clk_alpha_pll_postdiv_ops,
86aec89f78SBastian Köcher 	},
87aec89f78SBastian Köcher };
88aec89f78SBastian Köcher 
890519d1d0SKonrad Dybcio static const struct parent_map gcc_xo_gpll0_map[] = {
900519d1d0SKonrad Dybcio 	{ P_XO, 0 },
910519d1d0SKonrad Dybcio 	{ P_GPLL0, 1 },
920519d1d0SKonrad Dybcio };
930519d1d0SKonrad Dybcio 
940519d1d0SKonrad Dybcio static const struct clk_parent_data gcc_xo_gpll0[] = {
950519d1d0SKonrad Dybcio 	{ .fw_name = "xo" },
960519d1d0SKonrad Dybcio 	{ .hw = &gpll0.clkr.hw },
970519d1d0SKonrad Dybcio };
980519d1d0SKonrad Dybcio 
990519d1d0SKonrad Dybcio static const struct parent_map gcc_xo_gpll0_gpll4_map[] = {
1000519d1d0SKonrad Dybcio 	{ P_XO, 0 },
1010519d1d0SKonrad Dybcio 	{ P_GPLL0, 1 },
1020519d1d0SKonrad Dybcio 	{ P_GPLL4, 5 },
1030519d1d0SKonrad Dybcio };
1040519d1d0SKonrad Dybcio 
1050519d1d0SKonrad Dybcio static const struct clk_parent_data gcc_xo_gpll0_gpll4[] = {
1060519d1d0SKonrad Dybcio 	{ .fw_name = "xo" },
1070519d1d0SKonrad Dybcio 	{ .hw = &gpll0.clkr.hw },
1080519d1d0SKonrad Dybcio 	{ .hw = &gpll4.clkr.hw },
1090519d1d0SKonrad Dybcio };
1100519d1d0SKonrad Dybcio 
111aec89f78SBastian Köcher static struct freq_tbl ftbl_ufs_axi_clk_src[] = {
112aec89f78SBastian Köcher 	F(50000000, P_GPLL0, 12, 0, 0),
113aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
114aec89f78SBastian Köcher 	F(150000000, P_GPLL0, 4, 0, 0),
115aec89f78SBastian Köcher 	F(171430000, P_GPLL0, 3.5, 0, 0),
116aec89f78SBastian Köcher 	F(200000000, P_GPLL0, 3, 0, 0),
117aec89f78SBastian Köcher 	F(240000000, P_GPLL0, 2.5, 0, 0),
118aec89f78SBastian Köcher 	{ }
119aec89f78SBastian Köcher };
120aec89f78SBastian Köcher 
121aec89f78SBastian Köcher static struct clk_rcg2 ufs_axi_clk_src = {
122aec89f78SBastian Köcher 	.cmd_rcgr = 0x1d68,
123aec89f78SBastian Köcher 	.mnd_width = 8,
124aec89f78SBastian Köcher 	.hid_width = 5,
125aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
126aec89f78SBastian Köcher 	.freq_tbl = ftbl_ufs_axi_clk_src,
1270519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
128aec89f78SBastian Köcher 		.name = "ufs_axi_clk_src",
1290519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
130eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
131aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
132aec89f78SBastian Köcher 	},
133aec89f78SBastian Köcher };
134aec89f78SBastian Köcher 
135aec89f78SBastian Köcher static struct freq_tbl ftbl_usb30_master_clk_src[] = {
136aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
137aec89f78SBastian Köcher 	F(125000000, P_GPLL0, 1, 5, 24),
138aec89f78SBastian Köcher 	{ }
139aec89f78SBastian Köcher };
140aec89f78SBastian Köcher 
141aec89f78SBastian Köcher static struct clk_rcg2 usb30_master_clk_src = {
142aec89f78SBastian Köcher 	.cmd_rcgr = 0x03d4,
143aec89f78SBastian Köcher 	.mnd_width = 8,
144aec89f78SBastian Köcher 	.hid_width = 5,
145aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
146aec89f78SBastian Köcher 	.freq_tbl = ftbl_usb30_master_clk_src,
1470519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
148aec89f78SBastian Köcher 		.name = "usb30_master_clk_src",
1490519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
150eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
151aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
152aec89f78SBastian Köcher 	},
153aec89f78SBastian Köcher };
154aec89f78SBastian Köcher 
155aec89f78SBastian Köcher static struct freq_tbl ftbl_blsp_i2c_apps_clk_src[] = {
156aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
157aec89f78SBastian Köcher 	F(50000000, P_GPLL0, 12, 0, 0),
158aec89f78SBastian Köcher 	{ }
159aec89f78SBastian Köcher };
160aec89f78SBastian Köcher 
161aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = {
162aec89f78SBastian Köcher 	.cmd_rcgr = 0x0660,
163aec89f78SBastian Köcher 	.hid_width = 5,
164aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
165aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
1660519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
167aec89f78SBastian Köcher 		.name = "blsp1_qup1_i2c_apps_clk_src",
1680519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
169eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
170aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
171aec89f78SBastian Köcher 	},
172aec89f78SBastian Köcher };
173aec89f78SBastian Köcher 
17480863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup1_spi_apps_clk_src[] = {
175aec89f78SBastian Köcher 	F(960000, P_XO, 10, 1, 2),
176aec89f78SBastian Köcher 	F(4800000, P_XO, 4, 0, 0),
177aec89f78SBastian Köcher 	F(9600000, P_XO, 2, 0, 0),
178aec89f78SBastian Köcher 	F(15000000, P_GPLL0, 10, 1, 4),
179aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
180aec89f78SBastian Köcher 	F(24000000, P_GPLL0, 12.5, 1, 2),
181aec89f78SBastian Köcher 	F(25000000, P_GPLL0, 12, 1, 2),
182aec89f78SBastian Köcher 	F(48000000, P_GPLL0, 12.5, 0, 0),
183aec89f78SBastian Köcher 	F(50000000, P_GPLL0, 12, 0, 0),
184aec89f78SBastian Köcher 	{ }
185aec89f78SBastian Köcher };
186aec89f78SBastian Köcher 
187c09b8023SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup_spi_apps_clk_src_8992[] = {
188c09b8023SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
189c09b8023SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
190c09b8023SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
191c09b8023SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
192c09b8023SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
193c09b8023SKonrad Dybcio 	F(25000000, P_GPLL0, 12, 1, 2),
194c09b8023SKonrad Dybcio 	F(50000000, P_GPLL0, 12, 0, 0),
195c09b8023SKonrad Dybcio 	{ }
196c09b8023SKonrad Dybcio };
197c09b8023SKonrad Dybcio 
198aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = {
199aec89f78SBastian Köcher 	.cmd_rcgr = 0x064c,
200aec89f78SBastian Köcher 	.mnd_width = 8,
201aec89f78SBastian Köcher 	.hid_width = 5,
202aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
20380863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp1_qup1_spi_apps_clk_src,
2040519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
205aec89f78SBastian Köcher 		.name = "blsp1_qup1_spi_apps_clk_src",
2060519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
207eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
208aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
209aec89f78SBastian Köcher 	},
210aec89f78SBastian Köcher };
211aec89f78SBastian Köcher 
212aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = {
213aec89f78SBastian Köcher 	.cmd_rcgr = 0x06e0,
214aec89f78SBastian Köcher 	.hid_width = 5,
215aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
216aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
2170519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
218aec89f78SBastian Köcher 		.name = "blsp1_qup2_i2c_apps_clk_src",
2190519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
220eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
221aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
222aec89f78SBastian Köcher 	},
223aec89f78SBastian Köcher };
224aec89f78SBastian Köcher 
22580863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup2_spi_apps_clk_src[] = {
22680863521SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
22780863521SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
22880863521SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
22980863521SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
23080863521SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
23180863521SKonrad Dybcio 	F(24000000, P_GPLL0, 12.5, 1, 2),
23280863521SKonrad Dybcio 	F(25000000, P_GPLL0, 12, 1, 2),
23380863521SKonrad Dybcio 	F(42860000, P_GPLL0, 14, 0, 0),
23480863521SKonrad Dybcio 	F(46150000, P_GPLL0, 13, 0, 0),
23580863521SKonrad Dybcio 	{ }
23680863521SKonrad Dybcio };
23780863521SKonrad Dybcio 
238aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = {
239aec89f78SBastian Köcher 	.cmd_rcgr = 0x06cc,
240aec89f78SBastian Köcher 	.mnd_width = 8,
241aec89f78SBastian Köcher 	.hid_width = 5,
242aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
24380863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp1_qup2_spi_apps_clk_src,
2440519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
245aec89f78SBastian Köcher 		.name = "blsp1_qup2_spi_apps_clk_src",
2460519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
247eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
248aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
249aec89f78SBastian Köcher 	},
250aec89f78SBastian Köcher };
251aec89f78SBastian Köcher 
252aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = {
253aec89f78SBastian Köcher 	.cmd_rcgr = 0x0760,
254aec89f78SBastian Köcher 	.hid_width = 5,
255aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
256aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
2570519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
258aec89f78SBastian Köcher 		.name = "blsp1_qup3_i2c_apps_clk_src",
2590519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
260eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
261aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
262aec89f78SBastian Köcher 	},
263aec89f78SBastian Köcher };
264aec89f78SBastian Köcher 
26580863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup3_4_spi_apps_clk_src[] = {
26680863521SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
26780863521SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
26880863521SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
26980863521SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
27080863521SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
27180863521SKonrad Dybcio 	F(24000000, P_GPLL0, 12.5, 1, 2),
27280863521SKonrad Dybcio 	F(25000000, P_GPLL0, 12, 1, 2),
27380863521SKonrad Dybcio 	F(42860000, P_GPLL0, 14, 0, 0),
27480863521SKonrad Dybcio 	F(44440000, P_GPLL0, 13.5, 0, 0),
27580863521SKonrad Dybcio 	{ }
27680863521SKonrad Dybcio };
27780863521SKonrad Dybcio 
278aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = {
279aec89f78SBastian Köcher 	.cmd_rcgr = 0x074c,
280aec89f78SBastian Köcher 	.mnd_width = 8,
281aec89f78SBastian Köcher 	.hid_width = 5,
282aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
28380863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp1_qup3_4_spi_apps_clk_src,
2840519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
285aec89f78SBastian Köcher 		.name = "blsp1_qup3_spi_apps_clk_src",
2860519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
287eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
288aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
289aec89f78SBastian Köcher 	},
290aec89f78SBastian Köcher };
291aec89f78SBastian Köcher 
292aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = {
293aec89f78SBastian Köcher 	.cmd_rcgr = 0x07e0,
294aec89f78SBastian Köcher 	.hid_width = 5,
295aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
296aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
2970519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
298aec89f78SBastian Köcher 		.name = "blsp1_qup4_i2c_apps_clk_src",
2990519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
300eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
301aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
302aec89f78SBastian Köcher 	},
303aec89f78SBastian Köcher };
304aec89f78SBastian Köcher 
305aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = {
306aec89f78SBastian Köcher 	.cmd_rcgr = 0x07cc,
307aec89f78SBastian Köcher 	.mnd_width = 8,
308aec89f78SBastian Köcher 	.hid_width = 5,
309aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
31080863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp1_qup3_4_spi_apps_clk_src,
3110519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
312aec89f78SBastian Köcher 		.name = "blsp1_qup4_spi_apps_clk_src",
3130519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
314eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
315aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
316aec89f78SBastian Köcher 	},
317aec89f78SBastian Köcher };
318aec89f78SBastian Köcher 
319aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = {
320aec89f78SBastian Köcher 	.cmd_rcgr = 0x0860,
321aec89f78SBastian Köcher 	.hid_width = 5,
322aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
323aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
3240519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
325aec89f78SBastian Köcher 		.name = "blsp1_qup5_i2c_apps_clk_src",
3260519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
327eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
328aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
329aec89f78SBastian Köcher 	},
330aec89f78SBastian Köcher };
331aec89f78SBastian Köcher 
33280863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup5_spi_apps_clk_src[] = {
33380863521SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
33480863521SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
33580863521SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
33680863521SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
33780863521SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
33880863521SKonrad Dybcio 	F(24000000, P_GPLL0, 12.5, 1, 2),
33980863521SKonrad Dybcio 	F(25000000, P_GPLL0, 12, 1, 2),
34080863521SKonrad Dybcio 	F(40000000, P_GPLL0, 15, 0, 0),
34180863521SKonrad Dybcio 	F(42860000, P_GPLL0, 14, 0, 0),
34280863521SKonrad Dybcio 	{ }
34380863521SKonrad Dybcio };
34480863521SKonrad Dybcio 
345aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = {
346aec89f78SBastian Köcher 	.cmd_rcgr = 0x084c,
347aec89f78SBastian Köcher 	.mnd_width = 8,
348aec89f78SBastian Köcher 	.hid_width = 5,
349aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
35080863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp1_qup5_spi_apps_clk_src,
3510519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
352aec89f78SBastian Köcher 		.name = "blsp1_qup5_spi_apps_clk_src",
3530519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
354eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
355aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
356aec89f78SBastian Köcher 	},
357aec89f78SBastian Köcher };
358aec89f78SBastian Köcher 
359aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = {
360aec89f78SBastian Köcher 	.cmd_rcgr = 0x08e0,
361aec89f78SBastian Köcher 	.hid_width = 5,
362aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
363aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
3640519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
365aec89f78SBastian Köcher 		.name = "blsp1_qup6_i2c_apps_clk_src",
3660519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
367eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
368aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
369aec89f78SBastian Köcher 	},
370aec89f78SBastian Köcher };
371aec89f78SBastian Köcher 
37280863521SKonrad Dybcio static struct freq_tbl ftbl_blsp1_qup6_spi_apps_clk_src[] = {
37380863521SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
37480863521SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
37580863521SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
37680863521SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
37780863521SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
37880863521SKonrad Dybcio 	F(24000000, P_GPLL0, 12.5, 1, 2),
37980863521SKonrad Dybcio 	F(27906976, P_GPLL0, 1, 2, 43),
38080863521SKonrad Dybcio 	F(41380000, P_GPLL0, 15, 0, 0),
38180863521SKonrad Dybcio 	F(42860000, P_GPLL0, 14, 0, 0),
38280863521SKonrad Dybcio 	{ }
38380863521SKonrad Dybcio };
38480863521SKonrad Dybcio 
385aec89f78SBastian Köcher static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = {
386aec89f78SBastian Köcher 	.cmd_rcgr = 0x08cc,
387aec89f78SBastian Köcher 	.mnd_width = 8,
388aec89f78SBastian Köcher 	.hid_width = 5,
389aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
39080863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp1_qup6_spi_apps_clk_src,
3910519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
392aec89f78SBastian Köcher 		.name = "blsp1_qup6_spi_apps_clk_src",
3930519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
394eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
395aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
396aec89f78SBastian Köcher 	},
397aec89f78SBastian Köcher };
398aec89f78SBastian Köcher 
399aec89f78SBastian Köcher static struct freq_tbl ftbl_blsp_uart_apps_clk_src[] = {
400aec89f78SBastian Köcher 	F(3686400, P_GPLL0, 1, 96, 15625),
401aec89f78SBastian Köcher 	F(7372800, P_GPLL0, 1, 192, 15625),
402aec89f78SBastian Köcher 	F(14745600, P_GPLL0, 1, 384, 15625),
403aec89f78SBastian Köcher 	F(16000000, P_GPLL0, 5, 2, 15),
404aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
405aec89f78SBastian Köcher 	F(24000000, P_GPLL0, 5, 1, 5),
406aec89f78SBastian Köcher 	F(32000000, P_GPLL0, 1, 4, 75),
407aec89f78SBastian Köcher 	F(40000000, P_GPLL0, 15, 0, 0),
408aec89f78SBastian Köcher 	F(46400000, P_GPLL0, 1, 29, 375),
409aec89f78SBastian Köcher 	F(48000000, P_GPLL0, 12.5, 0, 0),
410aec89f78SBastian Köcher 	F(51200000, P_GPLL0, 1, 32, 375),
411aec89f78SBastian Köcher 	F(56000000, P_GPLL0, 1, 7, 75),
412aec89f78SBastian Köcher 	F(58982400, P_GPLL0, 1, 1536, 15625),
413aec89f78SBastian Köcher 	F(60000000, P_GPLL0, 10, 0, 0),
414aec89f78SBastian Köcher 	F(63160000, P_GPLL0, 9.5, 0, 0),
415aec89f78SBastian Köcher 	{ }
416aec89f78SBastian Köcher };
417aec89f78SBastian Köcher 
418aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart1_apps_clk_src = {
419aec89f78SBastian Köcher 	.cmd_rcgr = 0x068c,
420aec89f78SBastian Köcher 	.mnd_width = 16,
421aec89f78SBastian Köcher 	.hid_width = 5,
422aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
423aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
4240519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
425aec89f78SBastian Köcher 		.name = "blsp1_uart1_apps_clk_src",
4260519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
427eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
428aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
429aec89f78SBastian Köcher 	},
430aec89f78SBastian Köcher };
431aec89f78SBastian Köcher 
432aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart2_apps_clk_src = {
433aec89f78SBastian Köcher 	.cmd_rcgr = 0x070c,
434aec89f78SBastian Köcher 	.mnd_width = 16,
435aec89f78SBastian Köcher 	.hid_width = 5,
436aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
437aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
4380519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
439aec89f78SBastian Köcher 		.name = "blsp1_uart2_apps_clk_src",
4400519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
441eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
442aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
443aec89f78SBastian Köcher 	},
444aec89f78SBastian Köcher };
445aec89f78SBastian Köcher 
446aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart3_apps_clk_src = {
447aec89f78SBastian Köcher 	.cmd_rcgr = 0x078c,
448aec89f78SBastian Köcher 	.mnd_width = 16,
449aec89f78SBastian Köcher 	.hid_width = 5,
450aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
451aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
4520519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
453aec89f78SBastian Köcher 		.name = "blsp1_uart3_apps_clk_src",
4540519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
455eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
456aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
457aec89f78SBastian Köcher 	},
458aec89f78SBastian Köcher };
459aec89f78SBastian Köcher 
460aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart4_apps_clk_src = {
461aec89f78SBastian Köcher 	.cmd_rcgr = 0x080c,
462aec89f78SBastian Köcher 	.mnd_width = 16,
463aec89f78SBastian Köcher 	.hid_width = 5,
464aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
465aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
4660519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
467aec89f78SBastian Köcher 		.name = "blsp1_uart4_apps_clk_src",
4680519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
469eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
470aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
471aec89f78SBastian Köcher 	},
472aec89f78SBastian Köcher };
473aec89f78SBastian Köcher 
474aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart5_apps_clk_src = {
475aec89f78SBastian Köcher 	.cmd_rcgr = 0x088c,
476aec89f78SBastian Köcher 	.mnd_width = 16,
477aec89f78SBastian Köcher 	.hid_width = 5,
478aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
479aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
4800519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
481aec89f78SBastian Köcher 		.name = "blsp1_uart5_apps_clk_src",
4820519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
483eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
484aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
485aec89f78SBastian Köcher 	},
486aec89f78SBastian Köcher };
487aec89f78SBastian Köcher 
488aec89f78SBastian Köcher static struct clk_rcg2 blsp1_uart6_apps_clk_src = {
489aec89f78SBastian Köcher 	.cmd_rcgr = 0x090c,
490aec89f78SBastian Köcher 	.mnd_width = 16,
491aec89f78SBastian Köcher 	.hid_width = 5,
492aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
493aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
4940519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
495aec89f78SBastian Köcher 		.name = "blsp1_uart6_apps_clk_src",
4960519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
497eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
498aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
499aec89f78SBastian Köcher 	},
500aec89f78SBastian Köcher };
501aec89f78SBastian Köcher 
502aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup1_i2c_apps_clk_src = {
503aec89f78SBastian Köcher 	.cmd_rcgr = 0x09a0,
504aec89f78SBastian Köcher 	.hid_width = 5,
505aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
506aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
5070519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
508aec89f78SBastian Köcher 		.name = "blsp2_qup1_i2c_apps_clk_src",
5090519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
510eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
511aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
512aec89f78SBastian Köcher 	},
513aec89f78SBastian Köcher };
514aec89f78SBastian Köcher 
51580863521SKonrad Dybcio static struct freq_tbl ftbl_blsp2_qup1_2_spi_apps_clk_src[] = {
51680863521SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
51780863521SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
51880863521SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
51980863521SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
52080863521SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
52180863521SKonrad Dybcio 	F(24000000, P_GPLL0, 12.5, 1, 2),
52280863521SKonrad Dybcio 	F(25000000, P_GPLL0, 12, 1, 2),
52380863521SKonrad Dybcio 	F(42860000, P_GPLL0, 14, 0, 0),
52480863521SKonrad Dybcio 	F(44440000, P_GPLL0, 13.5, 0, 0),
52580863521SKonrad Dybcio 	{ }
52680863521SKonrad Dybcio };
52780863521SKonrad Dybcio 
528aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup1_spi_apps_clk_src = {
529aec89f78SBastian Köcher 	.cmd_rcgr = 0x098c,
530aec89f78SBastian Köcher 	.mnd_width = 8,
531aec89f78SBastian Köcher 	.hid_width = 5,
532aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
53380863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp2_qup1_2_spi_apps_clk_src,
5340519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
535aec89f78SBastian Köcher 		.name = "blsp2_qup1_spi_apps_clk_src",
5360519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
537eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
538aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
539aec89f78SBastian Köcher 	},
540aec89f78SBastian Köcher };
541aec89f78SBastian Köcher 
542aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup2_i2c_apps_clk_src = {
543aec89f78SBastian Köcher 	.cmd_rcgr = 0x0a20,
544aec89f78SBastian Köcher 	.hid_width = 5,
545aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
546aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
5470519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
548aec89f78SBastian Köcher 		.name = "blsp2_qup2_i2c_apps_clk_src",
5490519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
550eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
551aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
552aec89f78SBastian Köcher 	},
553aec89f78SBastian Köcher };
554aec89f78SBastian Köcher 
555aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup2_spi_apps_clk_src = {
556aec89f78SBastian Köcher 	.cmd_rcgr = 0x0a0c,
557aec89f78SBastian Köcher 	.mnd_width = 8,
558aec89f78SBastian Köcher 	.hid_width = 5,
559aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
56080863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp2_qup1_2_spi_apps_clk_src,
5610519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
562aec89f78SBastian Köcher 		.name = "blsp2_qup2_spi_apps_clk_src",
5630519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
564eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
565aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
566aec89f78SBastian Köcher 	},
567aec89f78SBastian Köcher };
568aec89f78SBastian Köcher 
56980863521SKonrad Dybcio static struct freq_tbl ftbl_blsp2_qup3_4_spi_apps_clk_src[] = {
57080863521SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
57180863521SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
57280863521SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
57380863521SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
57480863521SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
57580863521SKonrad Dybcio 	F(24000000, P_GPLL0, 12.5, 1, 2),
57680863521SKonrad Dybcio 	F(25000000, P_GPLL0, 12, 1, 2),
57780863521SKonrad Dybcio 	F(42860000, P_GPLL0, 14, 0, 0),
57880863521SKonrad Dybcio 	F(48000000, P_GPLL0, 12.5, 0, 0),
57980863521SKonrad Dybcio 	{ }
58080863521SKonrad Dybcio };
58180863521SKonrad Dybcio 
582aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup3_i2c_apps_clk_src = {
583aec89f78SBastian Köcher 	.cmd_rcgr = 0x0aa0,
584aec89f78SBastian Köcher 	.hid_width = 5,
585aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
586aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
5870519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
588aec89f78SBastian Köcher 		.name = "blsp2_qup3_i2c_apps_clk_src",
5890519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
590eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
591aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
592aec89f78SBastian Köcher 	},
593aec89f78SBastian Köcher };
594aec89f78SBastian Köcher 
595aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup3_spi_apps_clk_src = {
596aec89f78SBastian Köcher 	.cmd_rcgr = 0x0a8c,
597aec89f78SBastian Köcher 	.mnd_width = 8,
598aec89f78SBastian Köcher 	.hid_width = 5,
599aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
60080863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp2_qup3_4_spi_apps_clk_src,
6010519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
602aec89f78SBastian Köcher 		.name = "blsp2_qup3_spi_apps_clk_src",
6030519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
604eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
605aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
606aec89f78SBastian Köcher 	},
607aec89f78SBastian Köcher };
608aec89f78SBastian Köcher 
609aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup4_i2c_apps_clk_src = {
610aec89f78SBastian Köcher 	.cmd_rcgr = 0x0b20,
611aec89f78SBastian Köcher 	.hid_width = 5,
612aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
613aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
6140519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
615aec89f78SBastian Köcher 		.name = "blsp2_qup4_i2c_apps_clk_src",
6160519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
617eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
618aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
619aec89f78SBastian Köcher 	},
620aec89f78SBastian Köcher };
621aec89f78SBastian Köcher 
622aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup4_spi_apps_clk_src = {
623aec89f78SBastian Köcher 	.cmd_rcgr = 0x0b0c,
624aec89f78SBastian Köcher 	.mnd_width = 8,
625aec89f78SBastian Köcher 	.hid_width = 5,
626aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
62780863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp2_qup3_4_spi_apps_clk_src,
6280519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
629aec89f78SBastian Köcher 		.name = "blsp2_qup4_spi_apps_clk_src",
6300519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
631eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
632aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
633aec89f78SBastian Köcher 	},
634aec89f78SBastian Köcher };
635aec89f78SBastian Köcher 
636aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup5_i2c_apps_clk_src = {
637aec89f78SBastian Köcher 	.cmd_rcgr = 0x0ba0,
638aec89f78SBastian Köcher 	.hid_width = 5,
639aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
640aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
6410519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
642aec89f78SBastian Köcher 		.name = "blsp2_qup5_i2c_apps_clk_src",
6430519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
644eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
645aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
646aec89f78SBastian Köcher 	},
647aec89f78SBastian Köcher };
648aec89f78SBastian Köcher 
649aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup5_spi_apps_clk_src = {
650aec89f78SBastian Köcher 	.cmd_rcgr = 0x0b8c,
651aec89f78SBastian Köcher 	.mnd_width = 8,
652aec89f78SBastian Köcher 	.hid_width = 5,
653aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
65480863521SKonrad Dybcio 	/* BLSP1 QUP1 and BLSP2 QUP5 use the same freqs */
65580863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp1_qup1_spi_apps_clk_src,
6560519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
657aec89f78SBastian Köcher 		.name = "blsp2_qup5_spi_apps_clk_src",
6580519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
659eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
660aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
661aec89f78SBastian Köcher 	},
662aec89f78SBastian Köcher };
663aec89f78SBastian Köcher 
664aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup6_i2c_apps_clk_src = {
665aec89f78SBastian Köcher 	.cmd_rcgr = 0x0c20,
666aec89f78SBastian Köcher 	.hid_width = 5,
667aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
668aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_i2c_apps_clk_src,
6690519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
670aec89f78SBastian Köcher 		.name = "blsp2_qup6_i2c_apps_clk_src",
6710519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
672eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
673aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
674aec89f78SBastian Köcher 	},
675aec89f78SBastian Köcher };
676aec89f78SBastian Köcher 
67780863521SKonrad Dybcio static struct freq_tbl ftbl_blsp2_qup6_spi_apps_clk_src[] = {
67880863521SKonrad Dybcio 	F(960000, P_XO, 10, 1, 2),
67980863521SKonrad Dybcio 	F(4800000, P_XO, 4, 0, 0),
68080863521SKonrad Dybcio 	F(9600000, P_XO, 2, 0, 0),
68180863521SKonrad Dybcio 	F(15000000, P_GPLL0, 10, 1, 4),
68280863521SKonrad Dybcio 	F(19200000, P_XO, 1, 0, 0),
68380863521SKonrad Dybcio 	F(24000000, P_GPLL0, 12.5, 1, 2),
68480863521SKonrad Dybcio 	F(25000000, P_GPLL0, 12, 1, 2),
68580863521SKonrad Dybcio 	F(44440000, P_GPLL0, 13.5, 0, 0),
68680863521SKonrad Dybcio 	F(48000000, P_GPLL0, 12.5, 0, 0),
68780863521SKonrad Dybcio 	{ }
68880863521SKonrad Dybcio };
68980863521SKonrad Dybcio 
690aec89f78SBastian Köcher static struct clk_rcg2 blsp2_qup6_spi_apps_clk_src = {
691aec89f78SBastian Köcher 	.cmd_rcgr = 0x0c0c,
692aec89f78SBastian Köcher 	.mnd_width = 8,
693aec89f78SBastian Köcher 	.hid_width = 5,
694aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
69580863521SKonrad Dybcio 	.freq_tbl = ftbl_blsp2_qup6_spi_apps_clk_src,
6960519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
697aec89f78SBastian Köcher 		.name = "blsp2_qup6_spi_apps_clk_src",
6980519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
699eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
700aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
701aec89f78SBastian Köcher 	},
702aec89f78SBastian Köcher };
703aec89f78SBastian Köcher 
704aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart1_apps_clk_src = {
705aec89f78SBastian Köcher 	.cmd_rcgr = 0x09cc,
706aec89f78SBastian Köcher 	.mnd_width = 16,
707aec89f78SBastian Köcher 	.hid_width = 5,
708aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
709aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
7100519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
711aec89f78SBastian Köcher 		.name = "blsp2_uart1_apps_clk_src",
7120519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
713eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
714aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
715aec89f78SBastian Köcher 	},
716aec89f78SBastian Köcher };
717aec89f78SBastian Köcher 
718aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart2_apps_clk_src = {
719aec89f78SBastian Köcher 	.cmd_rcgr = 0x0a4c,
720aec89f78SBastian Köcher 	.mnd_width = 16,
721aec89f78SBastian Köcher 	.hid_width = 5,
722aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
723aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
7240519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
725aec89f78SBastian Köcher 		.name = "blsp2_uart2_apps_clk_src",
7260519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
727eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
728aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
729aec89f78SBastian Köcher 	},
730aec89f78SBastian Köcher };
731aec89f78SBastian Köcher 
732aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart3_apps_clk_src = {
733aec89f78SBastian Köcher 	.cmd_rcgr = 0x0acc,
734aec89f78SBastian Köcher 	.mnd_width = 16,
735aec89f78SBastian Köcher 	.hid_width = 5,
736aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
737aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
7380519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
739aec89f78SBastian Köcher 		.name = "blsp2_uart3_apps_clk_src",
7400519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
741eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
742aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
743aec89f78SBastian Köcher 	},
744aec89f78SBastian Köcher };
745aec89f78SBastian Köcher 
746aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart4_apps_clk_src = {
747aec89f78SBastian Köcher 	.cmd_rcgr = 0x0b4c,
748aec89f78SBastian Köcher 	.mnd_width = 16,
749aec89f78SBastian Köcher 	.hid_width = 5,
750aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
751aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
7520519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
753aec89f78SBastian Köcher 		.name = "blsp2_uart4_apps_clk_src",
7540519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
755eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
756aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
757aec89f78SBastian Köcher 	},
758aec89f78SBastian Köcher };
759aec89f78SBastian Köcher 
760aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart5_apps_clk_src = {
761aec89f78SBastian Köcher 	.cmd_rcgr = 0x0bcc,
762aec89f78SBastian Köcher 	.mnd_width = 16,
763aec89f78SBastian Köcher 	.hid_width = 5,
764aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
765aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
7660519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
767aec89f78SBastian Köcher 		.name = "blsp2_uart5_apps_clk_src",
7680519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
769eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
770aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
771aec89f78SBastian Köcher 	},
772aec89f78SBastian Köcher };
773aec89f78SBastian Köcher 
774aec89f78SBastian Köcher static struct clk_rcg2 blsp2_uart6_apps_clk_src = {
775aec89f78SBastian Köcher 	.cmd_rcgr = 0x0c4c,
776aec89f78SBastian Köcher 	.mnd_width = 16,
777aec89f78SBastian Köcher 	.hid_width = 5,
778aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
779aec89f78SBastian Köcher 	.freq_tbl = ftbl_blsp_uart_apps_clk_src,
7800519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
781aec89f78SBastian Köcher 		.name = "blsp2_uart6_apps_clk_src",
7820519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
783eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
784aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
785aec89f78SBastian Köcher 	},
786aec89f78SBastian Köcher };
787aec89f78SBastian Köcher 
788aec89f78SBastian Köcher static struct freq_tbl ftbl_gp1_clk_src[] = {
789aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
790aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
791aec89f78SBastian Köcher 	F(200000000, P_GPLL0, 3, 0, 0),
792aec89f78SBastian Köcher 	{ }
793aec89f78SBastian Köcher };
794aec89f78SBastian Köcher 
795aec89f78SBastian Köcher static struct clk_rcg2 gp1_clk_src = {
796aec89f78SBastian Köcher 	.cmd_rcgr = 0x1904,
797aec89f78SBastian Köcher 	.mnd_width = 8,
798aec89f78SBastian Köcher 	.hid_width = 5,
799aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
800aec89f78SBastian Köcher 	.freq_tbl = ftbl_gp1_clk_src,
8010519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
802aec89f78SBastian Köcher 		.name = "gp1_clk_src",
8030519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
804eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
805aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
806aec89f78SBastian Köcher 	},
807aec89f78SBastian Köcher };
808aec89f78SBastian Köcher 
809aec89f78SBastian Köcher static struct freq_tbl ftbl_gp2_clk_src[] = {
810aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
811aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
812aec89f78SBastian Köcher 	F(200000000, P_GPLL0, 3, 0, 0),
813aec89f78SBastian Köcher 	{ }
814aec89f78SBastian Köcher };
815aec89f78SBastian Köcher 
816aec89f78SBastian Köcher static struct clk_rcg2 gp2_clk_src = {
817aec89f78SBastian Köcher 	.cmd_rcgr = 0x1944,
818aec89f78SBastian Köcher 	.mnd_width = 8,
819aec89f78SBastian Köcher 	.hid_width = 5,
820aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
821aec89f78SBastian Köcher 	.freq_tbl = ftbl_gp2_clk_src,
8220519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
823aec89f78SBastian Köcher 		.name = "gp2_clk_src",
8240519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
825eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
826aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
827aec89f78SBastian Köcher 	},
828aec89f78SBastian Köcher };
829aec89f78SBastian Köcher 
830aec89f78SBastian Köcher static struct freq_tbl ftbl_gp3_clk_src[] = {
831aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
832aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
833aec89f78SBastian Köcher 	F(200000000, P_GPLL0, 3, 0, 0),
834aec89f78SBastian Köcher 	{ }
835aec89f78SBastian Köcher };
836aec89f78SBastian Köcher 
837aec89f78SBastian Köcher static struct clk_rcg2 gp3_clk_src = {
838aec89f78SBastian Köcher 	.cmd_rcgr = 0x1984,
839aec89f78SBastian Köcher 	.mnd_width = 8,
840aec89f78SBastian Köcher 	.hid_width = 5,
841aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
842aec89f78SBastian Köcher 	.freq_tbl = ftbl_gp3_clk_src,
8430519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
844aec89f78SBastian Köcher 		.name = "gp3_clk_src",
8450519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
846eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
847aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
848aec89f78SBastian Köcher 	},
849aec89f78SBastian Köcher };
850aec89f78SBastian Köcher 
851aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_0_aux_clk_src[] = {
852aec89f78SBastian Köcher 	F(1011000, P_XO, 1, 1, 19),
853aec89f78SBastian Köcher 	{ }
854aec89f78SBastian Köcher };
855aec89f78SBastian Köcher 
856aec89f78SBastian Köcher static struct clk_rcg2 pcie_0_aux_clk_src = {
857aec89f78SBastian Köcher 	.cmd_rcgr = 0x1b00,
858aec89f78SBastian Köcher 	.mnd_width = 8,
859aec89f78SBastian Köcher 	.hid_width = 5,
860aec89f78SBastian Köcher 	.freq_tbl = ftbl_pcie_0_aux_clk_src,
8610519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
862aec89f78SBastian Köcher 		.name = "pcie_0_aux_clk_src",
8630519d1d0SKonrad Dybcio 		.parent_data = &(const struct clk_parent_data){
8640519d1d0SKonrad Dybcio 				.fw_name = "xo",
8650519d1d0SKonrad Dybcio 		},
866aec89f78SBastian Köcher 		.num_parents = 1,
867aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
868aec89f78SBastian Köcher 	},
869aec89f78SBastian Köcher };
870aec89f78SBastian Köcher 
871aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_pipe_clk_src[] = {
872aec89f78SBastian Köcher 	F(125000000, P_XO, 1, 0, 0),
873aec89f78SBastian Köcher 	{ }
874aec89f78SBastian Köcher };
875aec89f78SBastian Köcher 
876aec89f78SBastian Köcher static struct clk_rcg2 pcie_0_pipe_clk_src = {
877aec89f78SBastian Köcher 	.cmd_rcgr = 0x1adc,
878aec89f78SBastian Köcher 	.hid_width = 5,
879aec89f78SBastian Köcher 	.freq_tbl = ftbl_pcie_pipe_clk_src,
8800519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
881aec89f78SBastian Köcher 		.name = "pcie_0_pipe_clk_src",
8820519d1d0SKonrad Dybcio 		.parent_data = &(const struct clk_parent_data){
8830519d1d0SKonrad Dybcio 				.fw_name = "xo",
8840519d1d0SKonrad Dybcio 		},
885aec89f78SBastian Köcher 		.num_parents = 1,
886aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
887aec89f78SBastian Köcher 	},
888aec89f78SBastian Köcher };
889aec89f78SBastian Köcher 
890aec89f78SBastian Köcher static struct freq_tbl ftbl_pcie_1_aux_clk_src[] = {
891aec89f78SBastian Köcher 	F(1011000, P_XO, 1, 1, 19),
892aec89f78SBastian Köcher 	{ }
893aec89f78SBastian Köcher };
894aec89f78SBastian Köcher 
895aec89f78SBastian Köcher static struct clk_rcg2 pcie_1_aux_clk_src = {
896aec89f78SBastian Köcher 	.cmd_rcgr = 0x1b80,
897aec89f78SBastian Köcher 	.mnd_width = 8,
898aec89f78SBastian Köcher 	.hid_width = 5,
899aec89f78SBastian Köcher 	.freq_tbl = ftbl_pcie_1_aux_clk_src,
9000519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
901aec89f78SBastian Köcher 		.name = "pcie_1_aux_clk_src",
9020519d1d0SKonrad Dybcio 		.parent_data = &(const struct clk_parent_data){
9030519d1d0SKonrad Dybcio 				.fw_name = "xo",
9040519d1d0SKonrad Dybcio 		},
905aec89f78SBastian Köcher 		.num_parents = 1,
906aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
907aec89f78SBastian Köcher 	},
908aec89f78SBastian Köcher };
909aec89f78SBastian Köcher 
910aec89f78SBastian Köcher static struct clk_rcg2 pcie_1_pipe_clk_src = {
911aec89f78SBastian Köcher 	.cmd_rcgr = 0x1b5c,
912aec89f78SBastian Köcher 	.hid_width = 5,
913aec89f78SBastian Köcher 	.freq_tbl = ftbl_pcie_pipe_clk_src,
9140519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
915aec89f78SBastian Köcher 		.name = "pcie_1_pipe_clk_src",
9160519d1d0SKonrad Dybcio 		.parent_data = &(const struct clk_parent_data){
9170519d1d0SKonrad Dybcio 				.fw_name = "xo",
9180519d1d0SKonrad Dybcio 		},
919aec89f78SBastian Köcher 		.num_parents = 1,
920aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
921aec89f78SBastian Köcher 	},
922aec89f78SBastian Köcher };
923aec89f78SBastian Köcher 
924aec89f78SBastian Köcher static struct freq_tbl ftbl_pdm2_clk_src[] = {
925aec89f78SBastian Köcher 	F(60000000, P_GPLL0, 10, 0, 0),
926aec89f78SBastian Köcher 	{ }
927aec89f78SBastian Köcher };
928aec89f78SBastian Köcher 
929aec89f78SBastian Köcher static struct clk_rcg2 pdm2_clk_src = {
930aec89f78SBastian Köcher 	.cmd_rcgr = 0x0cd0,
931aec89f78SBastian Köcher 	.hid_width = 5,
932aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
933aec89f78SBastian Köcher 	.freq_tbl = ftbl_pdm2_clk_src,
9340519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
935aec89f78SBastian Köcher 		.name = "pdm2_clk_src",
9360519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
937eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
938aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
939aec89f78SBastian Köcher 	},
940aec89f78SBastian Köcher };
941aec89f78SBastian Köcher 
942aec89f78SBastian Köcher static struct freq_tbl ftbl_sdcc1_apps_clk_src[] = {
943aec89f78SBastian Köcher 	F(144000, P_XO, 16, 3, 25),
944aec89f78SBastian Köcher 	F(400000, P_XO, 12, 1, 4),
945aec89f78SBastian Köcher 	F(20000000, P_GPLL0, 15, 1, 2),
946aec89f78SBastian Köcher 	F(25000000, P_GPLL0, 12, 1, 2),
947aec89f78SBastian Köcher 	F(50000000, P_GPLL0, 12, 0, 0),
948aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
949aec89f78SBastian Köcher 	F(192000000, P_GPLL4, 2, 0, 0),
950aec89f78SBastian Köcher 	F(384000000, P_GPLL4, 1, 0, 0),
951aec89f78SBastian Köcher 	{ }
952aec89f78SBastian Köcher };
953aec89f78SBastian Köcher 
954c09b8023SKonrad Dybcio static struct freq_tbl ftbl_sdcc1_apps_clk_src_8992[] = {
955c09b8023SKonrad Dybcio 	F(144000, P_XO, 16, 3, 25),
956c09b8023SKonrad Dybcio 	F(400000, P_XO, 12, 1, 4),
957c09b8023SKonrad Dybcio 	F(20000000, P_GPLL0, 15, 1, 2),
958c09b8023SKonrad Dybcio 	F(25000000, P_GPLL0, 12, 1, 2),
959c09b8023SKonrad Dybcio 	F(50000000, P_GPLL0, 12, 0, 0),
960c09b8023SKonrad Dybcio 	F(100000000, P_GPLL0, 6, 0, 0),
961c09b8023SKonrad Dybcio 	F(172000000, P_GPLL4, 2, 0, 0),
962c09b8023SKonrad Dybcio 	F(344000000, P_GPLL4, 1, 0, 0),
963c09b8023SKonrad Dybcio 	{ }
964c09b8023SKonrad Dybcio };
965c09b8023SKonrad Dybcio 
966aec89f78SBastian Köcher static struct clk_rcg2 sdcc1_apps_clk_src = {
967aec89f78SBastian Köcher 	.cmd_rcgr = 0x04d0,
968aec89f78SBastian Köcher 	.mnd_width = 8,
969aec89f78SBastian Köcher 	.hid_width = 5,
970aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_gpll4_map,
971aec89f78SBastian Köcher 	.freq_tbl = ftbl_sdcc1_apps_clk_src,
9720519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
973aec89f78SBastian Köcher 		.name = "sdcc1_apps_clk_src",
9740519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0_gpll4,
975eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll4),
9765f5001a9SRajendra Nayak 		.ops = &clk_rcg2_floor_ops,
977aec89f78SBastian Köcher 	},
978aec89f78SBastian Köcher };
979aec89f78SBastian Köcher 
980aec89f78SBastian Köcher static struct freq_tbl ftbl_sdcc2_4_apps_clk_src[] = {
981aec89f78SBastian Köcher 	F(144000, P_XO, 16, 3, 25),
982aec89f78SBastian Köcher 	F(400000, P_XO, 12, 1, 4),
983aec89f78SBastian Köcher 	F(20000000, P_GPLL0, 15, 1, 2),
984aec89f78SBastian Köcher 	F(25000000, P_GPLL0, 12, 1, 2),
985aec89f78SBastian Köcher 	F(50000000, P_GPLL0, 12, 0, 0),
986aec89f78SBastian Köcher 	F(100000000, P_GPLL0, 6, 0, 0),
987aec89f78SBastian Köcher 	F(200000000, P_GPLL0, 3, 0, 0),
988aec89f78SBastian Köcher 	{ }
989aec89f78SBastian Köcher };
990aec89f78SBastian Köcher 
991aec89f78SBastian Köcher static struct clk_rcg2 sdcc2_apps_clk_src = {
992aec89f78SBastian Köcher 	.cmd_rcgr = 0x0510,
993aec89f78SBastian Köcher 	.mnd_width = 8,
994aec89f78SBastian Köcher 	.hid_width = 5,
995aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
996aec89f78SBastian Köcher 	.freq_tbl = ftbl_sdcc2_4_apps_clk_src,
9970519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
998aec89f78SBastian Köcher 		.name = "sdcc2_apps_clk_src",
9990519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
1000eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
10015f5001a9SRajendra Nayak 		.ops = &clk_rcg2_floor_ops,
1002aec89f78SBastian Köcher 	},
1003aec89f78SBastian Köcher };
1004aec89f78SBastian Köcher 
1005aec89f78SBastian Köcher static struct clk_rcg2 sdcc3_apps_clk_src = {
1006aec89f78SBastian Köcher 	.cmd_rcgr = 0x0550,
1007aec89f78SBastian Köcher 	.mnd_width = 8,
1008aec89f78SBastian Köcher 	.hid_width = 5,
1009aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
1010aec89f78SBastian Köcher 	.freq_tbl = ftbl_sdcc2_4_apps_clk_src,
10110519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1012aec89f78SBastian Köcher 		.name = "sdcc3_apps_clk_src",
10130519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
1014eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
10155f5001a9SRajendra Nayak 		.ops = &clk_rcg2_floor_ops,
1016aec89f78SBastian Köcher 	},
1017aec89f78SBastian Köcher };
1018aec89f78SBastian Köcher 
1019aec89f78SBastian Köcher static struct clk_rcg2 sdcc4_apps_clk_src = {
1020aec89f78SBastian Köcher 	.cmd_rcgr = 0x0590,
1021aec89f78SBastian Köcher 	.mnd_width = 8,
1022aec89f78SBastian Köcher 	.hid_width = 5,
1023aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
1024aec89f78SBastian Köcher 	.freq_tbl = ftbl_sdcc2_4_apps_clk_src,
10250519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1026aec89f78SBastian Köcher 		.name = "sdcc4_apps_clk_src",
10270519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
1028eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
10295f5001a9SRajendra Nayak 		.ops = &clk_rcg2_floor_ops,
1030aec89f78SBastian Köcher 	},
1031aec89f78SBastian Köcher };
1032aec89f78SBastian Köcher 
1033aec89f78SBastian Köcher static struct freq_tbl ftbl_tsif_ref_clk_src[] = {
1034aec89f78SBastian Köcher 	F(105500, P_XO, 1, 1, 182),
1035aec89f78SBastian Köcher 	{ }
1036aec89f78SBastian Köcher };
1037aec89f78SBastian Köcher 
1038aec89f78SBastian Köcher static struct clk_rcg2 tsif_ref_clk_src = {
1039aec89f78SBastian Köcher 	.cmd_rcgr = 0x0d90,
1040aec89f78SBastian Köcher 	.mnd_width = 8,
1041aec89f78SBastian Köcher 	.hid_width = 5,
1042aec89f78SBastian Köcher 	.freq_tbl = ftbl_tsif_ref_clk_src,
10430519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1044aec89f78SBastian Köcher 		.name = "tsif_ref_clk_src",
10450519d1d0SKonrad Dybcio 		.parent_data = &(const struct clk_parent_data){
10460519d1d0SKonrad Dybcio 				.fw_name = "xo",
10470519d1d0SKonrad Dybcio 		},
1048aec89f78SBastian Köcher 		.num_parents = 1,
1049aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
1050aec89f78SBastian Köcher 	},
1051aec89f78SBastian Köcher };
1052aec89f78SBastian Köcher 
1053aec89f78SBastian Köcher static struct freq_tbl ftbl_usb30_mock_utmi_clk_src[] = {
1054aec89f78SBastian Köcher 	F(19200000, P_XO, 1, 0, 0),
1055aec89f78SBastian Köcher 	F(60000000, P_GPLL0, 10, 0, 0),
1056aec89f78SBastian Köcher 	{ }
1057aec89f78SBastian Köcher };
1058aec89f78SBastian Köcher 
1059aec89f78SBastian Köcher static struct clk_rcg2 usb30_mock_utmi_clk_src = {
1060aec89f78SBastian Köcher 	.cmd_rcgr = 0x03e8,
1061aec89f78SBastian Köcher 	.hid_width = 5,
1062aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
1063aec89f78SBastian Köcher 	.freq_tbl = ftbl_usb30_mock_utmi_clk_src,
10640519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1065aec89f78SBastian Köcher 		.name = "usb30_mock_utmi_clk_src",
10660519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
1067eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
1068aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
1069aec89f78SBastian Köcher 	},
1070aec89f78SBastian Köcher };
1071aec89f78SBastian Köcher 
1072aec89f78SBastian Köcher static struct freq_tbl ftbl_usb3_phy_aux_clk_src[] = {
1073aec89f78SBastian Köcher 	F(1200000, P_XO, 16, 0, 0),
1074aec89f78SBastian Köcher 	{ }
1075aec89f78SBastian Köcher };
1076aec89f78SBastian Köcher 
1077aec89f78SBastian Köcher static struct clk_rcg2 usb3_phy_aux_clk_src = {
1078aec89f78SBastian Köcher 	.cmd_rcgr = 0x1414,
1079aec89f78SBastian Köcher 	.hid_width = 5,
1080aec89f78SBastian Köcher 	.freq_tbl = ftbl_usb3_phy_aux_clk_src,
10810519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1082aec89f78SBastian Köcher 		.name = "usb3_phy_aux_clk_src",
10830519d1d0SKonrad Dybcio 		.parent_data = &(const struct clk_parent_data){
10840519d1d0SKonrad Dybcio 				.fw_name = "xo",
10850519d1d0SKonrad Dybcio 		},
1086aec89f78SBastian Köcher 		.num_parents = 1,
1087aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
1088aec89f78SBastian Köcher 	},
1089aec89f78SBastian Köcher };
1090aec89f78SBastian Köcher 
1091aec89f78SBastian Köcher static struct freq_tbl ftbl_usb_hs_system_clk_src[] = {
1092aec89f78SBastian Köcher 	F(75000000, P_GPLL0, 8, 0, 0),
1093aec89f78SBastian Köcher 	{ }
1094aec89f78SBastian Köcher };
1095aec89f78SBastian Köcher 
1096aec89f78SBastian Köcher static struct clk_rcg2 usb_hs_system_clk_src = {
1097aec89f78SBastian Köcher 	.cmd_rcgr = 0x0490,
1098aec89f78SBastian Köcher 	.hid_width = 5,
1099aec89f78SBastian Köcher 	.parent_map = gcc_xo_gpll0_map,
1100aec89f78SBastian Köcher 	.freq_tbl = ftbl_usb_hs_system_clk_src,
11010519d1d0SKonrad Dybcio 	.clkr.hw.init = &(struct clk_init_data){
1102aec89f78SBastian Köcher 		.name = "usb_hs_system_clk_src",
11030519d1d0SKonrad Dybcio 		.parent_data = gcc_xo_gpll0,
1104eb2d5058SKonrad Dybcio 		.num_parents = ARRAY_SIZE(gcc_xo_gpll0),
1105aec89f78SBastian Köcher 		.ops = &clk_rcg2_ops,
1106aec89f78SBastian Köcher 	},
1107aec89f78SBastian Köcher };
1108aec89f78SBastian Köcher 
1109aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_ahb_clk = {
1110aec89f78SBastian Köcher 	.halt_reg = 0x05c4,
1111aec89f78SBastian Köcher 	.halt_check = BRANCH_HALT_VOTED,
1112aec89f78SBastian Köcher 	.clkr = {
1113aec89f78SBastian Köcher 		.enable_reg = 0x1484,
1114aec89f78SBastian Köcher 		.enable_mask = BIT(17),
11150519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1116aec89f78SBastian Köcher 			.name = "gcc_blsp1_ahb_clk",
1117aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1118aec89f78SBastian Köcher 		},
1119aec89f78SBastian Köcher 	},
1120aec89f78SBastian Köcher };
1121aec89f78SBastian Köcher 
1122aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = {
1123aec89f78SBastian Köcher 	.halt_reg = 0x0648,
1124aec89f78SBastian Köcher 	.clkr = {
1125aec89f78SBastian Köcher 		.enable_reg = 0x0648,
1126aec89f78SBastian Köcher 		.enable_mask = BIT(0),
11270519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1128aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup1_i2c_apps_clk",
11290519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup1_i2c_apps_clk_src.clkr.hw },
1130aec89f78SBastian Köcher 			.num_parents = 1,
1131aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1132aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1133aec89f78SBastian Köcher 		},
1134aec89f78SBastian Köcher 	},
1135aec89f78SBastian Köcher };
1136aec89f78SBastian Köcher 
1137aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = {
1138aec89f78SBastian Köcher 	.halt_reg = 0x0644,
1139aec89f78SBastian Köcher 	.clkr = {
1140aec89f78SBastian Köcher 		.enable_reg = 0x0644,
1141aec89f78SBastian Köcher 		.enable_mask = BIT(0),
11420519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1143aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup1_spi_apps_clk",
11440519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup1_spi_apps_clk_src.clkr.hw },
1145aec89f78SBastian Köcher 			.num_parents = 1,
1146aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1147aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1148aec89f78SBastian Köcher 		},
1149aec89f78SBastian Köcher 	},
1150aec89f78SBastian Köcher };
1151aec89f78SBastian Köcher 
1152aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = {
1153aec89f78SBastian Köcher 	.halt_reg = 0x06c8,
1154aec89f78SBastian Köcher 	.clkr = {
1155aec89f78SBastian Köcher 		.enable_reg = 0x06c8,
1156aec89f78SBastian Köcher 		.enable_mask = BIT(0),
11570519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1158aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup2_i2c_apps_clk",
11590519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup2_i2c_apps_clk_src.clkr.hw },
1160aec89f78SBastian Köcher 			.num_parents = 1,
1161aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1162aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1163aec89f78SBastian Köcher 		},
1164aec89f78SBastian Köcher 	},
1165aec89f78SBastian Köcher };
1166aec89f78SBastian Köcher 
1167aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = {
1168aec89f78SBastian Köcher 	.halt_reg = 0x06c4,
1169aec89f78SBastian Köcher 	.clkr = {
1170aec89f78SBastian Köcher 		.enable_reg = 0x06c4,
1171aec89f78SBastian Köcher 		.enable_mask = BIT(0),
11720519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1173aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup2_spi_apps_clk",
11740519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup2_spi_apps_clk_src.clkr.hw },
1175aec89f78SBastian Köcher 			.num_parents = 1,
1176aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1177aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1178aec89f78SBastian Köcher 		},
1179aec89f78SBastian Köcher 	},
1180aec89f78SBastian Köcher };
1181aec89f78SBastian Köcher 
1182aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = {
1183aec89f78SBastian Köcher 	.halt_reg = 0x0748,
1184aec89f78SBastian Köcher 	.clkr = {
1185aec89f78SBastian Köcher 		.enable_reg = 0x0748,
1186aec89f78SBastian Köcher 		.enable_mask = BIT(0),
11870519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1188aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup3_i2c_apps_clk",
11890519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup3_i2c_apps_clk_src.clkr.hw },
1190aec89f78SBastian Köcher 			.num_parents = 1,
1191aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1192aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1193aec89f78SBastian Köcher 		},
1194aec89f78SBastian Köcher 	},
1195aec89f78SBastian Köcher };
1196aec89f78SBastian Köcher 
1197aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = {
1198aec89f78SBastian Köcher 	.halt_reg = 0x0744,
1199aec89f78SBastian Köcher 	.clkr = {
1200aec89f78SBastian Köcher 		.enable_reg = 0x0744,
1201aec89f78SBastian Köcher 		.enable_mask = BIT(0),
12020519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1203aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup3_spi_apps_clk",
12040519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup3_spi_apps_clk_src.clkr.hw },
1205aec89f78SBastian Köcher 			.num_parents = 1,
1206aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1207aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1208aec89f78SBastian Köcher 		},
1209aec89f78SBastian Köcher 	},
1210aec89f78SBastian Köcher };
1211aec89f78SBastian Köcher 
1212aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = {
1213aec89f78SBastian Köcher 	.halt_reg = 0x07c8,
1214aec89f78SBastian Köcher 	.clkr = {
1215aec89f78SBastian Köcher 		.enable_reg = 0x07c8,
1216aec89f78SBastian Köcher 		.enable_mask = BIT(0),
12170519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1218aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup4_i2c_apps_clk",
12190519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup4_i2c_apps_clk_src.clkr.hw },
1220aec89f78SBastian Köcher 			.num_parents = 1,
1221aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1222aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1223aec89f78SBastian Köcher 		},
1224aec89f78SBastian Köcher 	},
1225aec89f78SBastian Köcher };
1226aec89f78SBastian Köcher 
1227aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = {
1228aec89f78SBastian Köcher 	.halt_reg = 0x07c4,
1229aec89f78SBastian Köcher 	.clkr = {
1230aec89f78SBastian Köcher 		.enable_reg = 0x07c4,
1231aec89f78SBastian Köcher 		.enable_mask = BIT(0),
12320519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1233aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup4_spi_apps_clk",
12340519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup4_spi_apps_clk_src.clkr.hw },
1235aec89f78SBastian Köcher 			.num_parents = 1,
1236aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1237aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1238aec89f78SBastian Köcher 		},
1239aec89f78SBastian Köcher 	},
1240aec89f78SBastian Köcher };
1241aec89f78SBastian Köcher 
1242aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = {
1243aec89f78SBastian Köcher 	.halt_reg = 0x0848,
1244aec89f78SBastian Köcher 	.clkr = {
1245aec89f78SBastian Köcher 		.enable_reg = 0x0848,
1246aec89f78SBastian Köcher 		.enable_mask = BIT(0),
12470519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1248aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup5_i2c_apps_clk",
12490519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup5_i2c_apps_clk_src.clkr.hw },
1250aec89f78SBastian Köcher 			.num_parents = 1,
1251aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1252aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1253aec89f78SBastian Köcher 		},
1254aec89f78SBastian Köcher 	},
1255aec89f78SBastian Köcher };
1256aec89f78SBastian Köcher 
1257aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = {
1258aec89f78SBastian Köcher 	.halt_reg = 0x0844,
1259aec89f78SBastian Köcher 	.clkr = {
1260aec89f78SBastian Köcher 		.enable_reg = 0x0844,
1261aec89f78SBastian Köcher 		.enable_mask = BIT(0),
12620519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1263aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup5_spi_apps_clk",
12640519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup5_spi_apps_clk_src.clkr.hw },
1265aec89f78SBastian Köcher 			.num_parents = 1,
1266aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1267aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1268aec89f78SBastian Köcher 		},
1269aec89f78SBastian Köcher 	},
1270aec89f78SBastian Köcher };
1271aec89f78SBastian Köcher 
1272aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup6_i2c_apps_clk = {
1273aec89f78SBastian Köcher 	.halt_reg = 0x08c8,
1274aec89f78SBastian Köcher 	.clkr = {
1275aec89f78SBastian Köcher 		.enable_reg = 0x08c8,
1276aec89f78SBastian Köcher 		.enable_mask = BIT(0),
12770519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1278aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup6_i2c_apps_clk",
12790519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup6_i2c_apps_clk_src.clkr.hw },
1280aec89f78SBastian Köcher 			.num_parents = 1,
1281aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1282aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1283aec89f78SBastian Köcher 		},
1284aec89f78SBastian Köcher 	},
1285aec89f78SBastian Köcher };
1286aec89f78SBastian Köcher 
1287aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = {
1288aec89f78SBastian Köcher 	.halt_reg = 0x08c4,
1289aec89f78SBastian Köcher 	.clkr = {
1290aec89f78SBastian Köcher 		.enable_reg = 0x08c4,
1291aec89f78SBastian Köcher 		.enable_mask = BIT(0),
12920519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1293aec89f78SBastian Köcher 			.name = "gcc_blsp1_qup6_spi_apps_clk",
12940519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_qup6_spi_apps_clk_src.clkr.hw },
1295aec89f78SBastian Köcher 			.num_parents = 1,
1296aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1297aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1298aec89f78SBastian Köcher 		},
1299aec89f78SBastian Köcher 	},
1300aec89f78SBastian Köcher };
1301aec89f78SBastian Köcher 
1302aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart1_apps_clk = {
1303aec89f78SBastian Köcher 	.halt_reg = 0x0684,
1304aec89f78SBastian Köcher 	.clkr = {
1305aec89f78SBastian Köcher 		.enable_reg = 0x0684,
1306aec89f78SBastian Köcher 		.enable_mask = BIT(0),
13070519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1308aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart1_apps_clk",
13090519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_uart1_apps_clk_src.clkr.hw },
1310aec89f78SBastian Köcher 			.num_parents = 1,
1311aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1312aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1313aec89f78SBastian Köcher 		},
1314aec89f78SBastian Köcher 	},
1315aec89f78SBastian Köcher };
1316aec89f78SBastian Köcher 
1317aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart2_apps_clk = {
1318aec89f78SBastian Köcher 	.halt_reg = 0x0704,
1319aec89f78SBastian Köcher 	.clkr = {
1320aec89f78SBastian Köcher 		.enable_reg = 0x0704,
1321aec89f78SBastian Köcher 		.enable_mask = BIT(0),
13220519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1323aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart2_apps_clk",
13240519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_uart2_apps_clk_src.clkr.hw },
1325aec89f78SBastian Köcher 			.num_parents = 1,
1326aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1327aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1328aec89f78SBastian Köcher 		},
1329aec89f78SBastian Köcher 	},
1330aec89f78SBastian Köcher };
1331aec89f78SBastian Köcher 
1332aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart3_apps_clk = {
1333aec89f78SBastian Köcher 	.halt_reg = 0x0784,
1334aec89f78SBastian Köcher 	.clkr = {
1335aec89f78SBastian Köcher 		.enable_reg = 0x0784,
1336aec89f78SBastian Köcher 		.enable_mask = BIT(0),
13370519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1338aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart3_apps_clk",
13390519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_uart3_apps_clk_src.clkr.hw },
1340aec89f78SBastian Köcher 			.num_parents = 1,
1341aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1342aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1343aec89f78SBastian Köcher 		},
1344aec89f78SBastian Köcher 	},
1345aec89f78SBastian Köcher };
1346aec89f78SBastian Köcher 
1347aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart4_apps_clk = {
1348aec89f78SBastian Köcher 	.halt_reg = 0x0804,
1349aec89f78SBastian Köcher 	.clkr = {
1350aec89f78SBastian Köcher 		.enable_reg = 0x0804,
1351aec89f78SBastian Köcher 		.enable_mask = BIT(0),
13520519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1353aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart4_apps_clk",
13540519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_uart4_apps_clk_src.clkr.hw },
1355aec89f78SBastian Köcher 			.num_parents = 1,
1356aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1357aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1358aec89f78SBastian Köcher 		},
1359aec89f78SBastian Köcher 	},
1360aec89f78SBastian Köcher };
1361aec89f78SBastian Köcher 
1362aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart5_apps_clk = {
1363aec89f78SBastian Köcher 	.halt_reg = 0x0884,
1364aec89f78SBastian Köcher 	.clkr = {
1365aec89f78SBastian Köcher 		.enable_reg = 0x0884,
1366aec89f78SBastian Köcher 		.enable_mask = BIT(0),
13670519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1368aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart5_apps_clk",
13690519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_uart5_apps_clk_src.clkr.hw },
1370aec89f78SBastian Köcher 			.num_parents = 1,
1371aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1372aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1373aec89f78SBastian Köcher 		},
1374aec89f78SBastian Köcher 	},
1375aec89f78SBastian Köcher };
1376aec89f78SBastian Köcher 
1377aec89f78SBastian Köcher static struct clk_branch gcc_blsp1_uart6_apps_clk = {
1378aec89f78SBastian Köcher 	.halt_reg = 0x0904,
1379aec89f78SBastian Köcher 	.clkr = {
1380aec89f78SBastian Köcher 		.enable_reg = 0x0904,
1381aec89f78SBastian Köcher 		.enable_mask = BIT(0),
13820519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1383aec89f78SBastian Köcher 			.name = "gcc_blsp1_uart6_apps_clk",
13840519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp1_uart6_apps_clk_src.clkr.hw },
1385aec89f78SBastian Köcher 			.num_parents = 1,
1386aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1387aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1388aec89f78SBastian Köcher 		},
1389aec89f78SBastian Köcher 	},
1390aec89f78SBastian Köcher };
1391aec89f78SBastian Köcher 
1392aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_ahb_clk = {
1393aec89f78SBastian Köcher 	.halt_reg = 0x0944,
1394aec89f78SBastian Köcher 	.halt_check = BRANCH_HALT_VOTED,
1395aec89f78SBastian Köcher 	.clkr = {
1396aec89f78SBastian Köcher 		.enable_reg = 0x1484,
1397aec89f78SBastian Köcher 		.enable_mask = BIT(15),
13980519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1399aec89f78SBastian Köcher 			.name = "gcc_blsp2_ahb_clk",
1400aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1401aec89f78SBastian Köcher 		},
1402aec89f78SBastian Köcher 	},
1403aec89f78SBastian Köcher };
1404aec89f78SBastian Köcher 
1405aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup1_i2c_apps_clk = {
1406aec89f78SBastian Köcher 	.halt_reg = 0x0988,
1407aec89f78SBastian Köcher 	.clkr = {
1408aec89f78SBastian Köcher 		.enable_reg = 0x0988,
1409aec89f78SBastian Köcher 		.enable_mask = BIT(0),
14100519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1411aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup1_i2c_apps_clk",
14120519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup1_i2c_apps_clk_src.clkr.hw },
1413aec89f78SBastian Köcher 			.num_parents = 1,
1414aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1415aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1416aec89f78SBastian Köcher 		},
1417aec89f78SBastian Köcher 	},
1418aec89f78SBastian Köcher };
1419aec89f78SBastian Köcher 
1420aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup1_spi_apps_clk = {
1421aec89f78SBastian Köcher 	.halt_reg = 0x0984,
1422aec89f78SBastian Köcher 	.clkr = {
1423aec89f78SBastian Köcher 		.enable_reg = 0x0984,
1424aec89f78SBastian Köcher 		.enable_mask = BIT(0),
14250519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1426aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup1_spi_apps_clk",
14270519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup1_spi_apps_clk_src.clkr.hw },
1428aec89f78SBastian Köcher 			.num_parents = 1,
1429aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1430aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1431aec89f78SBastian Köcher 		},
1432aec89f78SBastian Köcher 	},
1433aec89f78SBastian Köcher };
1434aec89f78SBastian Köcher 
1435aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup2_i2c_apps_clk = {
1436aec89f78SBastian Köcher 	.halt_reg = 0x0a08,
1437aec89f78SBastian Köcher 	.clkr = {
1438aec89f78SBastian Köcher 		.enable_reg = 0x0a08,
1439aec89f78SBastian Köcher 		.enable_mask = BIT(0),
14400519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1441aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup2_i2c_apps_clk",
14420519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup2_i2c_apps_clk_src.clkr.hw },
1443aec89f78SBastian Köcher 			.num_parents = 1,
1444aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1445aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1446aec89f78SBastian Köcher 		},
1447aec89f78SBastian Köcher 	},
1448aec89f78SBastian Köcher };
1449aec89f78SBastian Köcher 
1450aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup2_spi_apps_clk = {
1451aec89f78SBastian Köcher 	.halt_reg = 0x0a04,
1452aec89f78SBastian Köcher 	.clkr = {
1453aec89f78SBastian Köcher 		.enable_reg = 0x0a04,
1454aec89f78SBastian Köcher 		.enable_mask = BIT(0),
14550519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1456aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup2_spi_apps_clk",
14570519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup2_spi_apps_clk_src.clkr.hw },
1458aec89f78SBastian Köcher 			.num_parents = 1,
1459aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1460aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1461aec89f78SBastian Köcher 		},
1462aec89f78SBastian Köcher 	},
1463aec89f78SBastian Köcher };
1464aec89f78SBastian Köcher 
1465aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup3_i2c_apps_clk = {
1466aec89f78SBastian Köcher 	.halt_reg = 0x0a88,
1467aec89f78SBastian Köcher 	.clkr = {
1468aec89f78SBastian Köcher 		.enable_reg = 0x0a88,
1469aec89f78SBastian Köcher 		.enable_mask = BIT(0),
14700519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1471aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup3_i2c_apps_clk",
14720519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup3_i2c_apps_clk_src.clkr.hw },
1473aec89f78SBastian Köcher 			.num_parents = 1,
1474aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1475aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1476aec89f78SBastian Köcher 		},
1477aec89f78SBastian Köcher 	},
1478aec89f78SBastian Köcher };
1479aec89f78SBastian Köcher 
1480aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup3_spi_apps_clk = {
1481aec89f78SBastian Köcher 	.halt_reg = 0x0a84,
1482aec89f78SBastian Köcher 	.clkr = {
1483aec89f78SBastian Köcher 		.enable_reg = 0x0a84,
1484aec89f78SBastian Köcher 		.enable_mask = BIT(0),
14850519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1486aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup3_spi_apps_clk",
14870519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup3_spi_apps_clk_src.clkr.hw },
1488aec89f78SBastian Köcher 			.num_parents = 1,
1489aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1490aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1491aec89f78SBastian Köcher 		},
1492aec89f78SBastian Köcher 	},
1493aec89f78SBastian Köcher };
1494aec89f78SBastian Köcher 
1495aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup4_i2c_apps_clk = {
1496aec89f78SBastian Köcher 	.halt_reg = 0x0b08,
1497aec89f78SBastian Köcher 	.clkr = {
1498aec89f78SBastian Köcher 		.enable_reg = 0x0b08,
1499aec89f78SBastian Köcher 		.enable_mask = BIT(0),
15000519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1501aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup4_i2c_apps_clk",
15020519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup4_i2c_apps_clk_src.clkr.hw },
1503aec89f78SBastian Köcher 			.num_parents = 1,
1504aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1505aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1506aec89f78SBastian Köcher 		},
1507aec89f78SBastian Köcher 	},
1508aec89f78SBastian Köcher };
1509aec89f78SBastian Köcher 
1510aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup4_spi_apps_clk = {
1511aec89f78SBastian Köcher 	.halt_reg = 0x0b04,
1512aec89f78SBastian Köcher 	.clkr = {
1513aec89f78SBastian Köcher 		.enable_reg = 0x0b04,
1514aec89f78SBastian Köcher 		.enable_mask = BIT(0),
15150519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1516aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup4_spi_apps_clk",
15170519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup4_spi_apps_clk_src.clkr.hw },
1518aec89f78SBastian Köcher 			.num_parents = 1,
1519aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1520aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1521aec89f78SBastian Köcher 		},
1522aec89f78SBastian Köcher 	},
1523aec89f78SBastian Köcher };
1524aec89f78SBastian Köcher 
1525aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup5_i2c_apps_clk = {
1526aec89f78SBastian Köcher 	.halt_reg = 0x0b88,
1527aec89f78SBastian Köcher 	.clkr = {
1528aec89f78SBastian Köcher 		.enable_reg = 0x0b88,
1529aec89f78SBastian Köcher 		.enable_mask = BIT(0),
15300519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1531aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup5_i2c_apps_clk",
15320519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup5_i2c_apps_clk_src.clkr.hw },
1533aec89f78SBastian Köcher 			.num_parents = 1,
1534aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1535aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1536aec89f78SBastian Köcher 		},
1537aec89f78SBastian Köcher 	},
1538aec89f78SBastian Köcher };
1539aec89f78SBastian Köcher 
1540aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup5_spi_apps_clk = {
1541aec89f78SBastian Köcher 	.halt_reg = 0x0b84,
1542aec89f78SBastian Köcher 	.clkr = {
1543aec89f78SBastian Köcher 		.enable_reg = 0x0b84,
1544aec89f78SBastian Köcher 		.enable_mask = BIT(0),
15450519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1546aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup5_spi_apps_clk",
15470519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup5_spi_apps_clk_src.clkr.hw },
1548aec89f78SBastian Köcher 			.num_parents = 1,
1549aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1550aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1551aec89f78SBastian Köcher 		},
1552aec89f78SBastian Köcher 	},
1553aec89f78SBastian Köcher };
1554aec89f78SBastian Köcher 
1555aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup6_i2c_apps_clk = {
1556aec89f78SBastian Köcher 	.halt_reg = 0x0c08,
1557aec89f78SBastian Köcher 	.clkr = {
1558aec89f78SBastian Köcher 		.enable_reg = 0x0c08,
1559aec89f78SBastian Köcher 		.enable_mask = BIT(0),
15600519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1561aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup6_i2c_apps_clk",
15620519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup6_i2c_apps_clk_src.clkr.hw },
1563aec89f78SBastian Köcher 			.num_parents = 1,
1564aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1565aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1566aec89f78SBastian Köcher 		},
1567aec89f78SBastian Köcher 	},
1568aec89f78SBastian Köcher };
1569aec89f78SBastian Köcher 
1570aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_qup6_spi_apps_clk = {
1571aec89f78SBastian Köcher 	.halt_reg = 0x0c04,
1572aec89f78SBastian Köcher 	.clkr = {
1573aec89f78SBastian Köcher 		.enable_reg = 0x0c04,
1574aec89f78SBastian Köcher 		.enable_mask = BIT(0),
15750519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1576aec89f78SBastian Köcher 			.name = "gcc_blsp2_qup6_spi_apps_clk",
15770519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_qup6_spi_apps_clk_src.clkr.hw },
1578aec89f78SBastian Köcher 			.num_parents = 1,
1579aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1580aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1581aec89f78SBastian Köcher 		},
1582aec89f78SBastian Köcher 	},
1583aec89f78SBastian Köcher };
1584aec89f78SBastian Köcher 
1585aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart1_apps_clk = {
1586aec89f78SBastian Köcher 	.halt_reg = 0x09c4,
1587aec89f78SBastian Köcher 	.clkr = {
1588aec89f78SBastian Köcher 		.enable_reg = 0x09c4,
1589aec89f78SBastian Köcher 		.enable_mask = BIT(0),
15900519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1591aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart1_apps_clk",
15920519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_uart1_apps_clk_src.clkr.hw },
1593aec89f78SBastian Köcher 			.num_parents = 1,
1594aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1595aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1596aec89f78SBastian Köcher 		},
1597aec89f78SBastian Köcher 	},
1598aec89f78SBastian Köcher };
1599aec89f78SBastian Köcher 
1600aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart2_apps_clk = {
1601aec89f78SBastian Köcher 	.halt_reg = 0x0a44,
1602aec89f78SBastian Köcher 	.clkr = {
1603aec89f78SBastian Köcher 		.enable_reg = 0x0a44,
1604aec89f78SBastian Köcher 		.enable_mask = BIT(0),
16050519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1606aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart2_apps_clk",
16070519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_uart2_apps_clk_src.clkr.hw },
1608aec89f78SBastian Köcher 			.num_parents = 1,
1609aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1610aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1611aec89f78SBastian Köcher 		},
1612aec89f78SBastian Köcher 	},
1613aec89f78SBastian Köcher };
1614aec89f78SBastian Köcher 
1615aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart3_apps_clk = {
1616aec89f78SBastian Köcher 	.halt_reg = 0x0ac4,
1617aec89f78SBastian Köcher 	.clkr = {
1618aec89f78SBastian Köcher 		.enable_reg = 0x0ac4,
1619aec89f78SBastian Köcher 		.enable_mask = BIT(0),
16200519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1621aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart3_apps_clk",
16220519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_uart3_apps_clk_src.clkr.hw },
1623aec89f78SBastian Köcher 			.num_parents = 1,
1624aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1625aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1626aec89f78SBastian Köcher 		},
1627aec89f78SBastian Köcher 	},
1628aec89f78SBastian Köcher };
1629aec89f78SBastian Köcher 
1630aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart4_apps_clk = {
1631aec89f78SBastian Köcher 	.halt_reg = 0x0b44,
1632aec89f78SBastian Köcher 	.clkr = {
1633aec89f78SBastian Köcher 		.enable_reg = 0x0b44,
1634aec89f78SBastian Köcher 		.enable_mask = BIT(0),
16350519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1636aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart4_apps_clk",
16370519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_uart4_apps_clk_src.clkr.hw },
1638aec89f78SBastian Köcher 			.num_parents = 1,
1639aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1640aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1641aec89f78SBastian Köcher 		},
1642aec89f78SBastian Köcher 	},
1643aec89f78SBastian Köcher };
1644aec89f78SBastian Köcher 
1645aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart5_apps_clk = {
1646aec89f78SBastian Köcher 	.halt_reg = 0x0bc4,
1647aec89f78SBastian Köcher 	.clkr = {
1648aec89f78SBastian Köcher 		.enable_reg = 0x0bc4,
1649aec89f78SBastian Köcher 		.enable_mask = BIT(0),
16500519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1651aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart5_apps_clk",
16520519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_uart5_apps_clk_src.clkr.hw },
1653aec89f78SBastian Köcher 			.num_parents = 1,
1654aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1655aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1656aec89f78SBastian Köcher 		},
1657aec89f78SBastian Köcher 	},
1658aec89f78SBastian Köcher };
1659aec89f78SBastian Köcher 
1660aec89f78SBastian Köcher static struct clk_branch gcc_blsp2_uart6_apps_clk = {
1661aec89f78SBastian Köcher 	.halt_reg = 0x0c44,
1662aec89f78SBastian Köcher 	.clkr = {
1663aec89f78SBastian Köcher 		.enable_reg = 0x0c44,
1664aec89f78SBastian Köcher 		.enable_mask = BIT(0),
16650519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1666aec89f78SBastian Köcher 			.name = "gcc_blsp2_uart6_apps_clk",
16670519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &blsp2_uart6_apps_clk_src.clkr.hw },
1668aec89f78SBastian Köcher 			.num_parents = 1,
1669aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1670aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1671aec89f78SBastian Köcher 		},
1672aec89f78SBastian Köcher 	},
1673aec89f78SBastian Köcher };
1674aec89f78SBastian Köcher 
1675aec89f78SBastian Köcher static struct clk_branch gcc_gp1_clk = {
1676aec89f78SBastian Köcher 	.halt_reg = 0x1900,
1677aec89f78SBastian Köcher 	.clkr = {
1678aec89f78SBastian Köcher 		.enable_reg = 0x1900,
1679aec89f78SBastian Köcher 		.enable_mask = BIT(0),
16800519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1681aec89f78SBastian Köcher 			.name = "gcc_gp1_clk",
16820519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &gp1_clk_src.clkr.hw },
1683aec89f78SBastian Köcher 			.num_parents = 1,
1684aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1685aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1686aec89f78SBastian Köcher 		},
1687aec89f78SBastian Köcher 	},
1688aec89f78SBastian Köcher };
1689aec89f78SBastian Köcher 
1690aec89f78SBastian Köcher static struct clk_branch gcc_gp2_clk = {
1691aec89f78SBastian Köcher 	.halt_reg = 0x1940,
1692aec89f78SBastian Köcher 	.clkr = {
1693aec89f78SBastian Köcher 		.enable_reg = 0x1940,
1694aec89f78SBastian Köcher 		.enable_mask = BIT(0),
16950519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1696aec89f78SBastian Köcher 			.name = "gcc_gp2_clk",
16970519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &gp2_clk_src.clkr.hw },
1698aec89f78SBastian Köcher 			.num_parents = 1,
1699aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1700aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1701aec89f78SBastian Köcher 		},
1702aec89f78SBastian Köcher 	},
1703aec89f78SBastian Köcher };
1704aec89f78SBastian Köcher 
1705aec89f78SBastian Köcher static struct clk_branch gcc_gp3_clk = {
1706aec89f78SBastian Köcher 	.halt_reg = 0x1980,
1707aec89f78SBastian Köcher 	.clkr = {
1708aec89f78SBastian Köcher 		.enable_reg = 0x1980,
1709aec89f78SBastian Köcher 		.enable_mask = BIT(0),
17100519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1711aec89f78SBastian Köcher 			.name = "gcc_gp3_clk",
17120519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &gp3_clk_src.clkr.hw },
1713aec89f78SBastian Köcher 			.num_parents = 1,
1714aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1715aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1716aec89f78SBastian Köcher 		},
1717aec89f78SBastian Köcher 	},
1718aec89f78SBastian Köcher };
1719aec89f78SBastian Köcher 
17208c18b41bSKonrad Dybcio static struct clk_branch gcc_lpass_q6_axi_clk = {
17218c18b41bSKonrad Dybcio 	.halt_reg = 0x0280,
17228c18b41bSKonrad Dybcio 	.clkr = {
17238c18b41bSKonrad Dybcio 		.enable_reg = 0x0280,
17248c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
17250519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
17268c18b41bSKonrad Dybcio 			.name = "gcc_lpass_q6_axi_clk",
17278c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
17288c18b41bSKonrad Dybcio 		},
17298c18b41bSKonrad Dybcio 	},
17308c18b41bSKonrad Dybcio };
17318c18b41bSKonrad Dybcio 
17328c18b41bSKonrad Dybcio static struct clk_branch gcc_mss_q6_bimc_axi_clk = {
17338c18b41bSKonrad Dybcio 	.halt_reg = 0x0284,
17348c18b41bSKonrad Dybcio 	.clkr = {
17358c18b41bSKonrad Dybcio 		.enable_reg = 0x0284,
17368c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
17370519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
17388c18b41bSKonrad Dybcio 			.name = "gcc_mss_q6_bimc_axi_clk",
17398c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
17408c18b41bSKonrad Dybcio 		},
17418c18b41bSKonrad Dybcio 	},
17428c18b41bSKonrad Dybcio };
17438c18b41bSKonrad Dybcio 
1744aec89f78SBastian Köcher static struct clk_branch gcc_pcie_0_aux_clk = {
1745aec89f78SBastian Köcher 	.halt_reg = 0x1ad4,
1746aec89f78SBastian Köcher 	.clkr = {
1747aec89f78SBastian Köcher 		.enable_reg = 0x1ad4,
1748aec89f78SBastian Köcher 		.enable_mask = BIT(0),
17490519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1750aec89f78SBastian Köcher 			.name = "gcc_pcie_0_aux_clk",
17510519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &pcie_0_aux_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_pcie_0_cfg_ahb_clk = {
17608c18b41bSKonrad Dybcio 	.halt_reg = 0x1ad0,
17618c18b41bSKonrad Dybcio 	.clkr = {
17628c18b41bSKonrad Dybcio 		.enable_reg = 0x1ad0,
17638c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
17640519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
17658c18b41bSKonrad Dybcio 			.name = "gcc_pcie_0_cfg_ahb_clk",
17668c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
17678c18b41bSKonrad Dybcio 		},
17688c18b41bSKonrad Dybcio 	},
17698c18b41bSKonrad Dybcio };
17708c18b41bSKonrad Dybcio 
17718c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_mstr_axi_clk = {
17728c18b41bSKonrad Dybcio 	.halt_reg = 0x1acc,
17738c18b41bSKonrad Dybcio 	.clkr = {
17748c18b41bSKonrad Dybcio 		.enable_reg = 0x1acc,
17758c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
17760519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
17778c18b41bSKonrad Dybcio 			.name = "gcc_pcie_0_mstr_axi_clk",
17788c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
17798c18b41bSKonrad Dybcio 		},
17808c18b41bSKonrad Dybcio 	},
17818c18b41bSKonrad Dybcio };
17828c18b41bSKonrad Dybcio 
1783aec89f78SBastian Köcher static struct clk_branch gcc_pcie_0_pipe_clk = {
1784aec89f78SBastian Köcher 	.halt_reg = 0x1ad8,
1785aec89f78SBastian Köcher 	.halt_check = BRANCH_HALT_DELAY,
1786aec89f78SBastian Köcher 	.clkr = {
1787aec89f78SBastian Köcher 		.enable_reg = 0x1ad8,
1788aec89f78SBastian Köcher 		.enable_mask = BIT(0),
17890519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1790aec89f78SBastian Köcher 			.name = "gcc_pcie_0_pipe_clk",
17910519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &pcie_0_pipe_clk_src.clkr.hw },
1792aec89f78SBastian Köcher 			.num_parents = 1,
1793aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1794aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1795aec89f78SBastian Köcher 		},
1796aec89f78SBastian Köcher 	},
1797aec89f78SBastian Köcher };
1798aec89f78SBastian Köcher 
17998c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_0_slv_axi_clk = {
18008c18b41bSKonrad Dybcio 	.halt_reg = 0x1ac8,
18018c18b41bSKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
18028c18b41bSKonrad Dybcio 	.clkr = {
18038c18b41bSKonrad Dybcio 		.enable_reg = 0x1ac8,
18048c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
18050519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
18068c18b41bSKonrad Dybcio 			.name = "gcc_pcie_0_slv_axi_clk",
18078c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
18088c18b41bSKonrad Dybcio 		},
18098c18b41bSKonrad Dybcio 	},
18108c18b41bSKonrad Dybcio };
18118c18b41bSKonrad Dybcio 
1812aec89f78SBastian Köcher static struct clk_branch gcc_pcie_1_aux_clk = {
1813aec89f78SBastian Köcher 	.halt_reg = 0x1b54,
1814aec89f78SBastian Köcher 	.clkr = {
1815aec89f78SBastian Köcher 		.enable_reg = 0x1b54,
1816aec89f78SBastian Köcher 		.enable_mask = BIT(0),
18170519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1818aec89f78SBastian Köcher 			.name = "gcc_pcie_1_aux_clk",
18190519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &pcie_1_aux_clk_src.clkr.hw },
1820aec89f78SBastian Köcher 			.num_parents = 1,
1821aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1822aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1823aec89f78SBastian Köcher 		},
1824aec89f78SBastian Köcher 	},
1825aec89f78SBastian Köcher };
1826aec89f78SBastian Köcher 
18278c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_cfg_ahb_clk = {
18288c18b41bSKonrad Dybcio 	.halt_reg = 0x1b54,
18298c18b41bSKonrad Dybcio 	.clkr = {
18308c18b41bSKonrad Dybcio 		.enable_reg = 0x1b54,
18318c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
18320519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
18338c18b41bSKonrad Dybcio 			.name = "gcc_pcie_1_cfg_ahb_clk",
18348c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
18358c18b41bSKonrad Dybcio 		},
18368c18b41bSKonrad Dybcio 	},
18378c18b41bSKonrad Dybcio };
18388c18b41bSKonrad Dybcio 
18398c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_mstr_axi_clk = {
18408c18b41bSKonrad Dybcio 	.halt_reg = 0x1b50,
18418c18b41bSKonrad Dybcio 	.clkr = {
18428c18b41bSKonrad Dybcio 		.enable_reg = 0x1b50,
18438c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
18440519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
18458c18b41bSKonrad Dybcio 			.name = "gcc_pcie_1_mstr_axi_clk",
18468c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
18478c18b41bSKonrad Dybcio 		},
18488c18b41bSKonrad Dybcio 	},
18498c18b41bSKonrad Dybcio };
18508c18b41bSKonrad Dybcio 
1851aec89f78SBastian Köcher static struct clk_branch gcc_pcie_1_pipe_clk = {
1852aec89f78SBastian Köcher 	.halt_reg = 0x1b58,
1853aec89f78SBastian Köcher 	.halt_check = BRANCH_HALT_DELAY,
1854aec89f78SBastian Köcher 	.clkr = {
1855aec89f78SBastian Köcher 		.enable_reg = 0x1b58,
1856aec89f78SBastian Köcher 		.enable_mask = BIT(0),
18570519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1858aec89f78SBastian Köcher 			.name = "gcc_pcie_1_pipe_clk",
18590519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &pcie_1_pipe_clk_src.clkr.hw },
1860aec89f78SBastian Köcher 			.num_parents = 1,
1861aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1862aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1863aec89f78SBastian Köcher 		},
1864aec89f78SBastian Köcher 	},
1865aec89f78SBastian Köcher };
1866aec89f78SBastian Köcher 
18678c18b41bSKonrad Dybcio static struct clk_branch gcc_pcie_1_slv_axi_clk = {
18688c18b41bSKonrad Dybcio 	.halt_reg = 0x1b48,
18698c18b41bSKonrad Dybcio 	.clkr = {
18708c18b41bSKonrad Dybcio 		.enable_reg = 0x1b48,
18718c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
18720519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
18738c18b41bSKonrad Dybcio 			.name = "gcc_pcie_1_slv_axi_clk",
18748c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
18758c18b41bSKonrad Dybcio 		},
18768c18b41bSKonrad Dybcio 	},
18778c18b41bSKonrad Dybcio };
18788c18b41bSKonrad Dybcio 
1879aec89f78SBastian Köcher static struct clk_branch gcc_pdm2_clk = {
1880aec89f78SBastian Köcher 	.halt_reg = 0x0ccc,
1881aec89f78SBastian Köcher 	.clkr = {
1882aec89f78SBastian Köcher 		.enable_reg = 0x0ccc,
1883aec89f78SBastian Köcher 		.enable_mask = BIT(0),
18840519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1885aec89f78SBastian Köcher 			.name = "gcc_pdm2_clk",
18860519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &pdm2_clk_src.clkr.hw },
1887aec89f78SBastian Köcher 			.num_parents = 1,
1888aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1889aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1890aec89f78SBastian Köcher 		},
1891aec89f78SBastian Köcher 	},
1892aec89f78SBastian Köcher };
1893aec89f78SBastian Köcher 
18948c18b41bSKonrad Dybcio static struct clk_branch gcc_pdm_ahb_clk = {
18958c18b41bSKonrad Dybcio 	.halt_reg = 0x0cc4,
18968c18b41bSKonrad Dybcio 	.clkr = {
18978c18b41bSKonrad Dybcio 		.enable_reg = 0x0cc4,
18988c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
18990519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
19008c18b41bSKonrad Dybcio 			.name = "gcc_pdm_ahb_clk",
19018c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
19028c18b41bSKonrad Dybcio 		},
19038c18b41bSKonrad Dybcio 	},
19048c18b41bSKonrad Dybcio };
19058c18b41bSKonrad Dybcio 
1906aec89f78SBastian Köcher static struct clk_branch gcc_sdcc1_apps_clk = {
1907aec89f78SBastian Köcher 	.halt_reg = 0x04c4,
1908aec89f78SBastian Köcher 	.clkr = {
1909aec89f78SBastian Köcher 		.enable_reg = 0x04c4,
1910aec89f78SBastian Köcher 		.enable_mask = BIT(0),
19110519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1912aec89f78SBastian Köcher 			.name = "gcc_sdcc1_apps_clk",
19130519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &sdcc1_apps_clk_src.clkr.hw },
1914aec89f78SBastian Köcher 			.num_parents = 1,
1915aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1916aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1917aec89f78SBastian Köcher 		},
1918aec89f78SBastian Köcher 	},
1919aec89f78SBastian Köcher };
1920aec89f78SBastian Köcher 
1921eaff16bcSJeremy McNicoll static struct clk_branch gcc_sdcc1_ahb_clk = {
1922eaff16bcSJeremy McNicoll 	.halt_reg = 0x04c8,
1923eaff16bcSJeremy McNicoll 	.clkr = {
1924eaff16bcSJeremy McNicoll 		.enable_reg = 0x04c8,
1925eaff16bcSJeremy McNicoll 		.enable_mask = BIT(0),
19260519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1927eaff16bcSJeremy McNicoll 			.name = "gcc_sdcc1_ahb_clk",
1928eaff16bcSJeremy McNicoll 			.ops = &clk_branch2_ops,
1929eaff16bcSJeremy McNicoll 		},
1930eaff16bcSJeremy McNicoll 	},
1931eaff16bcSJeremy McNicoll };
1932eaff16bcSJeremy McNicoll 
19338c18b41bSKonrad Dybcio static struct clk_branch gcc_sdcc2_ahb_clk = {
19348c18b41bSKonrad Dybcio 	.halt_reg = 0x0508,
19358c18b41bSKonrad Dybcio 	.clkr = {
19368c18b41bSKonrad Dybcio 		.enable_reg = 0x0508,
19378c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
19380519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
19398c18b41bSKonrad Dybcio 			.name = "gcc_sdcc2_ahb_clk",
19408c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
19418c18b41bSKonrad Dybcio 		},
19428c18b41bSKonrad Dybcio 	},
19438c18b41bSKonrad Dybcio };
19448c18b41bSKonrad Dybcio 
1945aec89f78SBastian Köcher static struct clk_branch gcc_sdcc2_apps_clk = {
1946aec89f78SBastian Köcher 	.halt_reg = 0x0504,
1947aec89f78SBastian Köcher 	.clkr = {
1948aec89f78SBastian Köcher 		.enable_reg = 0x0504,
1949aec89f78SBastian Köcher 		.enable_mask = BIT(0),
19500519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1951aec89f78SBastian Köcher 			.name = "gcc_sdcc2_apps_clk",
19520519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &sdcc2_apps_clk_src.clkr.hw },
1953aec89f78SBastian Köcher 			.num_parents = 1,
1954aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1955aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1956aec89f78SBastian Köcher 		},
1957aec89f78SBastian Köcher 	},
1958aec89f78SBastian Köcher };
1959aec89f78SBastian Köcher 
19608c18b41bSKonrad Dybcio static struct clk_branch gcc_sdcc3_ahb_clk = {
19618c18b41bSKonrad Dybcio 	.halt_reg = 0x0548,
19628c18b41bSKonrad Dybcio 	.clkr = {
19638c18b41bSKonrad Dybcio 		.enable_reg = 0x0548,
19648c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
19650519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
19668c18b41bSKonrad Dybcio 			.name = "gcc_sdcc3_ahb_clk",
19678c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
19688c18b41bSKonrad Dybcio 		},
19698c18b41bSKonrad Dybcio 	},
19708c18b41bSKonrad Dybcio };
19718c18b41bSKonrad Dybcio 
1972aec89f78SBastian Köcher static struct clk_branch gcc_sdcc3_apps_clk = {
1973aec89f78SBastian Köcher 	.halt_reg = 0x0544,
1974aec89f78SBastian Köcher 	.clkr = {
1975aec89f78SBastian Köcher 		.enable_reg = 0x0544,
1976aec89f78SBastian Köcher 		.enable_mask = BIT(0),
19770519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
1978aec89f78SBastian Köcher 			.name = "gcc_sdcc3_apps_clk",
19790519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &sdcc3_apps_clk_src.clkr.hw },
1980aec89f78SBastian Köcher 			.num_parents = 1,
1981aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
1982aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
1983aec89f78SBastian Köcher 		},
1984aec89f78SBastian Köcher 	},
1985aec89f78SBastian Köcher };
1986aec89f78SBastian Köcher 
19878c18b41bSKonrad Dybcio static struct clk_branch gcc_sdcc4_ahb_clk = {
19888c18b41bSKonrad Dybcio 	.halt_reg = 0x0588,
19898c18b41bSKonrad Dybcio 	.clkr = {
19908c18b41bSKonrad Dybcio 		.enable_reg = 0x0588,
19918c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
19920519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
19938c18b41bSKonrad Dybcio 			.name = "gcc_sdcc4_ahb_clk",
19948c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
19958c18b41bSKonrad Dybcio 		},
19968c18b41bSKonrad Dybcio 	},
19978c18b41bSKonrad Dybcio };
19988c18b41bSKonrad Dybcio 
1999aec89f78SBastian Köcher static struct clk_branch gcc_sdcc4_apps_clk = {
2000aec89f78SBastian Köcher 	.halt_reg = 0x0584,
2001aec89f78SBastian Köcher 	.clkr = {
2002aec89f78SBastian Köcher 		.enable_reg = 0x0584,
2003aec89f78SBastian Köcher 		.enable_mask = BIT(0),
20040519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2005aec89f78SBastian Köcher 			.name = "gcc_sdcc4_apps_clk",
20060519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &sdcc4_apps_clk_src.clkr.hw },
2007aec89f78SBastian Köcher 			.num_parents = 1,
2008aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2009aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2010aec89f78SBastian Köcher 		},
2011aec89f78SBastian Köcher 	},
2012aec89f78SBastian Köcher };
2013aec89f78SBastian Köcher 
2014aec89f78SBastian Köcher static struct clk_branch gcc_sys_noc_ufs_axi_clk = {
2015aec89f78SBastian Köcher 	.halt_reg = 0x1d7c,
2016aec89f78SBastian Köcher 	.clkr = {
2017aec89f78SBastian Köcher 		.enable_reg = 0x1d7c,
2018aec89f78SBastian Köcher 		.enable_mask = BIT(0),
20190519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2020aec89f78SBastian Köcher 			.name = "gcc_sys_noc_ufs_axi_clk",
20210519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &ufs_axi_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 
2029aec89f78SBastian Köcher static struct clk_branch gcc_sys_noc_usb3_axi_clk = {
2030aec89f78SBastian Köcher 	.halt_reg = 0x03fc,
2031aec89f78SBastian Köcher 	.clkr = {
2032aec89f78SBastian Köcher 		.enable_reg = 0x03fc,
2033aec89f78SBastian Köcher 		.enable_mask = BIT(0),
20340519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2035aec89f78SBastian Köcher 			.name = "gcc_sys_noc_usb3_axi_clk",
20360519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &usb30_master_clk_src.clkr.hw },
2037aec89f78SBastian Köcher 			.num_parents = 1,
2038aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2039aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2040aec89f78SBastian Köcher 		},
2041aec89f78SBastian Köcher 	},
2042aec89f78SBastian Köcher };
2043aec89f78SBastian Köcher 
20448c18b41bSKonrad Dybcio static struct clk_branch gcc_tsif_ahb_clk = {
20458c18b41bSKonrad Dybcio 	.halt_reg = 0x0d84,
20468c18b41bSKonrad Dybcio 	.clkr = {
20478c18b41bSKonrad Dybcio 		.enable_reg = 0x0d84,
20488c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
20490519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
20508c18b41bSKonrad Dybcio 			.name = "gcc_tsif_ahb_clk",
20518c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
20528c18b41bSKonrad Dybcio 		},
20538c18b41bSKonrad Dybcio 	},
20548c18b41bSKonrad Dybcio };
20558c18b41bSKonrad Dybcio 
2056aec89f78SBastian Köcher static struct clk_branch gcc_tsif_ref_clk = {
2057aec89f78SBastian Köcher 	.halt_reg = 0x0d88,
2058aec89f78SBastian Köcher 	.clkr = {
2059aec89f78SBastian Köcher 		.enable_reg = 0x0d88,
2060aec89f78SBastian Köcher 		.enable_mask = BIT(0),
20610519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2062aec89f78SBastian Köcher 			.name = "gcc_tsif_ref_clk",
20630519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &tsif_ref_clk_src.clkr.hw },
2064aec89f78SBastian Köcher 			.num_parents = 1,
2065aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2066aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2067aec89f78SBastian Köcher 		},
2068aec89f78SBastian Köcher 	},
2069aec89f78SBastian Köcher };
2070aec89f78SBastian Köcher 
20718c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_ahb_clk = {
20728c18b41bSKonrad Dybcio 	.halt_reg = 0x1d4c,
20738c18b41bSKonrad Dybcio 	.clkr = {
20748c18b41bSKonrad Dybcio 		.enable_reg = 0x1d4c,
20758c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
20760519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
20778c18b41bSKonrad Dybcio 			.name = "gcc_ufs_ahb_clk",
20788c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
20798c18b41bSKonrad Dybcio 		},
20808c18b41bSKonrad Dybcio 	},
20818c18b41bSKonrad Dybcio };
20828c18b41bSKonrad Dybcio 
2083aec89f78SBastian Köcher static struct clk_branch gcc_ufs_axi_clk = {
2084aec89f78SBastian Köcher 	.halt_reg = 0x1d48,
2085aec89f78SBastian Köcher 	.clkr = {
2086aec89f78SBastian Köcher 		.enable_reg = 0x1d48,
2087aec89f78SBastian Köcher 		.enable_mask = BIT(0),
20880519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2089aec89f78SBastian Köcher 			.name = "gcc_ufs_axi_clk",
20900519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw },
2091aec89f78SBastian Köcher 			.num_parents = 1,
2092aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2093aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2094aec89f78SBastian Köcher 		},
2095aec89f78SBastian Köcher 	},
2096aec89f78SBastian Köcher };
2097aec89f78SBastian Köcher 
2098aec89f78SBastian Köcher static struct clk_branch gcc_ufs_rx_cfg_clk = {
2099aec89f78SBastian Köcher 	.halt_reg = 0x1d54,
2100aec89f78SBastian Köcher 	.clkr = {
2101aec89f78SBastian Köcher 		.enable_reg = 0x1d54,
2102aec89f78SBastian Köcher 		.enable_mask = BIT(0),
21030519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2104aec89f78SBastian Köcher 			.name = "gcc_ufs_rx_cfg_clk",
21050519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw },
2106aec89f78SBastian Köcher 			.num_parents = 1,
2107aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2108aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2109aec89f78SBastian Köcher 		},
2110aec89f78SBastian Köcher 	},
2111aec89f78SBastian Köcher };
2112aec89f78SBastian Köcher 
21138c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_rx_symbol_0_clk = {
21148c18b41bSKonrad Dybcio 	.halt_reg = 0x1d60,
21158c18b41bSKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
21168c18b41bSKonrad Dybcio 	.clkr = {
21178c18b41bSKonrad Dybcio 		.enable_reg = 0x1d60,
21188c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
21190519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
21208c18b41bSKonrad Dybcio 			.name = "gcc_ufs_rx_symbol_0_clk",
21218c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
21228c18b41bSKonrad Dybcio 		},
21238c18b41bSKonrad Dybcio 	},
21248c18b41bSKonrad Dybcio };
21258c18b41bSKonrad Dybcio 
21268c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_rx_symbol_1_clk = {
21278c18b41bSKonrad Dybcio 	.halt_reg = 0x1d64,
21288c18b41bSKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
21298c18b41bSKonrad Dybcio 	.clkr = {
21308c18b41bSKonrad Dybcio 		.enable_reg = 0x1d64,
21318c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
21320519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
21338c18b41bSKonrad Dybcio 			.name = "gcc_ufs_rx_symbol_1_clk",
21348c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
21358c18b41bSKonrad Dybcio 		},
21368c18b41bSKonrad Dybcio 	},
21378c18b41bSKonrad Dybcio };
21388c18b41bSKonrad Dybcio 
2139aec89f78SBastian Köcher static struct clk_branch gcc_ufs_tx_cfg_clk = {
2140aec89f78SBastian Köcher 	.halt_reg = 0x1d50,
2141aec89f78SBastian Köcher 	.clkr = {
2142aec89f78SBastian Köcher 		.enable_reg = 0x1d50,
2143aec89f78SBastian Köcher 		.enable_mask = BIT(0),
21440519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2145aec89f78SBastian Köcher 			.name = "gcc_ufs_tx_cfg_clk",
21460519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw },
2147aec89f78SBastian Köcher 			.num_parents = 1,
2148aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2149aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2150aec89f78SBastian Köcher 		},
2151aec89f78SBastian Köcher 	},
2152aec89f78SBastian Köcher };
2153aec89f78SBastian Köcher 
21548c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_tx_symbol_0_clk = {
21558c18b41bSKonrad Dybcio 	.halt_reg = 0x1d58,
21568c18b41bSKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
21578c18b41bSKonrad Dybcio 	.clkr = {
21588c18b41bSKonrad Dybcio 		.enable_reg = 0x1d58,
21598c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
21600519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
21618c18b41bSKonrad Dybcio 			.name = "gcc_ufs_tx_symbol_0_clk",
21628c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
21638c18b41bSKonrad Dybcio 		},
21648c18b41bSKonrad Dybcio 	},
21658c18b41bSKonrad Dybcio };
21668c18b41bSKonrad Dybcio 
21678c18b41bSKonrad Dybcio static struct clk_branch gcc_ufs_tx_symbol_1_clk = {
21688c18b41bSKonrad Dybcio 	.halt_reg = 0x1d5c,
21698c18b41bSKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
21708c18b41bSKonrad Dybcio 	.clkr = {
21718c18b41bSKonrad Dybcio 		.enable_reg = 0x1d5c,
21728c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
21730519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
21748c18b41bSKonrad Dybcio 			.name = "gcc_ufs_tx_symbol_1_clk",
21758c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
21768c18b41bSKonrad Dybcio 		},
21778c18b41bSKonrad Dybcio 	},
21788c18b41bSKonrad Dybcio };
21798c18b41bSKonrad Dybcio 
21808c18b41bSKonrad Dybcio static struct clk_branch gcc_usb2_hs_phy_sleep_clk = {
21818c18b41bSKonrad Dybcio 	.halt_reg = 0x04ac,
21828c18b41bSKonrad Dybcio 	.clkr = {
21838c18b41bSKonrad Dybcio 		.enable_reg = 0x04ac,
21848c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
21850519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
21868c18b41bSKonrad Dybcio 			.name = "gcc_usb2_hs_phy_sleep_clk",
21870519d1d0SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
21880519d1d0SKonrad Dybcio 				.fw_name = "sleep",
21890519d1d0SKonrad Dybcio 				.name = "sleep"
21900519d1d0SKonrad Dybcio 			},
21910519d1d0SKonrad Dybcio 			.num_parents = 1,
21928c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
21938c18b41bSKonrad Dybcio 		},
21948c18b41bSKonrad Dybcio 	},
21958c18b41bSKonrad Dybcio };
21968c18b41bSKonrad Dybcio 
2197aec89f78SBastian Köcher static struct clk_branch gcc_usb30_master_clk = {
2198aec89f78SBastian Köcher 	.halt_reg = 0x03c8,
2199aec89f78SBastian Köcher 	.clkr = {
2200aec89f78SBastian Köcher 		.enable_reg = 0x03c8,
2201aec89f78SBastian Köcher 		.enable_mask = BIT(0),
22020519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2203aec89f78SBastian Köcher 			.name = "gcc_usb30_master_clk",
22040519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &usb30_master_clk_src.clkr.hw },
2205aec89f78SBastian Köcher 			.num_parents = 1,
2206aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2207aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2208aec89f78SBastian Köcher 		},
2209aec89f78SBastian Köcher 	},
2210aec89f78SBastian Köcher };
2211aec89f78SBastian Köcher 
2212aec89f78SBastian Köcher static struct clk_branch gcc_usb30_mock_utmi_clk = {
2213aec89f78SBastian Köcher 	.halt_reg = 0x03d0,
2214aec89f78SBastian Köcher 	.clkr = {
2215aec89f78SBastian Köcher 		.enable_reg = 0x03d0,
2216aec89f78SBastian Köcher 		.enable_mask = BIT(0),
22170519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2218aec89f78SBastian Köcher 			.name = "gcc_usb30_mock_utmi_clk",
22190519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &usb30_mock_utmi_clk_src.clkr.hw },
2220aec89f78SBastian Köcher 			.num_parents = 1,
2221aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2222aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2223aec89f78SBastian Köcher 		},
2224aec89f78SBastian Köcher 	},
2225aec89f78SBastian Köcher };
2226aec89f78SBastian Köcher 
22278c18b41bSKonrad Dybcio static struct clk_branch gcc_usb30_sleep_clk = {
22288c18b41bSKonrad Dybcio 	.halt_reg = 0x03cc,
22298c18b41bSKonrad Dybcio 	.clkr = {
22308c18b41bSKonrad Dybcio 		.enable_reg = 0x03cc,
22318c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
22320519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
22338c18b41bSKonrad Dybcio 			.name = "gcc_usb30_sleep_clk",
22340519d1d0SKonrad Dybcio 			.parent_data = &(const struct clk_parent_data){
22350519d1d0SKonrad Dybcio 				.fw_name = "sleep",
22360519d1d0SKonrad Dybcio 				.name = "sleep"
22370519d1d0SKonrad Dybcio 			},
22380519d1d0SKonrad Dybcio 			.num_parents = 1,
22398c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
22408c18b41bSKonrad Dybcio 		},
22418c18b41bSKonrad Dybcio 	},
22428c18b41bSKonrad Dybcio };
22438c18b41bSKonrad Dybcio 
2244aec89f78SBastian Köcher static struct clk_branch gcc_usb3_phy_aux_clk = {
2245aec89f78SBastian Köcher 	.halt_reg = 0x1408,
2246aec89f78SBastian Köcher 	.clkr = {
2247aec89f78SBastian Köcher 		.enable_reg = 0x1408,
2248aec89f78SBastian Köcher 		.enable_mask = BIT(0),
22490519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2250aec89f78SBastian Köcher 			.name = "gcc_usb3_phy_aux_clk",
22510519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &usb3_phy_aux_clk_src.clkr.hw },
2252aec89f78SBastian Köcher 			.num_parents = 1,
2253aec89f78SBastian Köcher 			.flags = CLK_SET_RATE_PARENT,
2254aec89f78SBastian Köcher 			.ops = &clk_branch2_ops,
2255aec89f78SBastian Köcher 		},
2256aec89f78SBastian Köcher 	},
2257aec89f78SBastian Köcher };
2258aec89f78SBastian Köcher 
2259b8f415c6SKonrad Dybcio static struct clk_branch gcc_usb3_phy_pipe_clk = {
2260b8f415c6SKonrad Dybcio 	.halt_reg = 0x140c,
2261b8f415c6SKonrad Dybcio 	.halt_check = BRANCH_HALT_SKIP,
2262b8f415c6SKonrad Dybcio 	.clkr = {
2263b8f415c6SKonrad Dybcio 		.enable_reg = 0x140c,
2264b8f415c6SKonrad Dybcio 		.enable_mask = BIT(0),
2265b8f415c6SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2266b8f415c6SKonrad Dybcio 			.name = "gcc_usb3_phy_pipe_clk",
2267b8f415c6SKonrad Dybcio 			.ops = &clk_branch2_ops,
2268b8f415c6SKonrad Dybcio 		},
2269b8f415c6SKonrad Dybcio 	},
2270b8f415c6SKonrad Dybcio };
2271b8f415c6SKonrad Dybcio 
22728c18b41bSKonrad Dybcio static struct clk_branch gcc_usb_hs_ahb_clk = {
22738c18b41bSKonrad Dybcio 	.halt_reg = 0x0488,
22748c18b41bSKonrad Dybcio 	.clkr = {
22758c18b41bSKonrad Dybcio 		.enable_reg = 0x0488,
22768c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
22770519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
22788c18b41bSKonrad Dybcio 			.name = "gcc_usb_hs_ahb_clk",
22798c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
22808c18b41bSKonrad Dybcio 		},
22818c18b41bSKonrad Dybcio 	},
22828c18b41bSKonrad Dybcio };
22838c18b41bSKonrad Dybcio 
2284aec89f78SBastian Köcher static struct clk_branch gcc_usb_hs_system_clk = {
2285aec89f78SBastian Köcher 	.halt_reg = 0x0484,
2286aec89f78SBastian Köcher 	.clkr = {
2287aec89f78SBastian Köcher 		.enable_reg = 0x0484,
2288aec89f78SBastian Köcher 		.enable_mask = BIT(0),
22890519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2290aec89f78SBastian Köcher 			.name = "gcc_usb_hs_system_clk",
22910519d1d0SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &usb_hs_system_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 
22998c18b41bSKonrad Dybcio static struct clk_branch gcc_usb_phy_cfg_ahb2phy_clk = {
23008c18b41bSKonrad Dybcio 	.halt_reg = 0x1a84,
23018c18b41bSKonrad Dybcio 	.clkr = {
23028c18b41bSKonrad Dybcio 		.enable_reg = 0x1a84,
23038c18b41bSKonrad Dybcio 		.enable_mask = BIT(0),
23040519d1d0SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
23058c18b41bSKonrad Dybcio 			.name = "gcc_usb_phy_cfg_ahb2phy_clk",
23068c18b41bSKonrad Dybcio 			.ops = &clk_branch2_ops,
23078c18b41bSKonrad Dybcio 		},
23088c18b41bSKonrad Dybcio 	},
23098c18b41bSKonrad Dybcio };
23108c18b41bSKonrad Dybcio 
2311b8f415c6SKonrad Dybcio static struct clk_branch gpll0_out_mmsscc = {
2312b8f415c6SKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
2313b8f415c6SKonrad Dybcio 	.clkr = {
2314b8f415c6SKonrad Dybcio 		.enable_reg = 0x1484,
2315b8f415c6SKonrad Dybcio 		.enable_mask = BIT(26),
2316b8f415c6SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2317b8f415c6SKonrad Dybcio 			.name = "gpll0_out_mmsscc",
2318b8f415c6SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw },
2319b8f415c6SKonrad Dybcio 			.num_parents = 1,
2320b8f415c6SKonrad Dybcio 			.ops = &clk_branch2_ops,
2321b8f415c6SKonrad Dybcio 		},
2322b8f415c6SKonrad Dybcio 	},
2323b8f415c6SKonrad Dybcio };
2324b8f415c6SKonrad Dybcio 
2325b8f415c6SKonrad Dybcio static struct clk_branch gpll0_out_msscc = {
2326b8f415c6SKonrad Dybcio 	.halt_check = BRANCH_HALT_DELAY,
2327b8f415c6SKonrad Dybcio 	.clkr = {
2328b8f415c6SKonrad Dybcio 		.enable_reg = 0x1484,
2329b8f415c6SKonrad Dybcio 		.enable_mask = BIT(27),
2330b8f415c6SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2331b8f415c6SKonrad Dybcio 			.name = "gpll0_out_msscc",
2332b8f415c6SKonrad Dybcio 			.parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw },
2333b8f415c6SKonrad Dybcio 			.num_parents = 1,
2334b8f415c6SKonrad Dybcio 			.ops = &clk_branch2_ops,
2335b8f415c6SKonrad Dybcio 		},
2336b8f415c6SKonrad Dybcio 	},
2337b8f415c6SKonrad Dybcio };
2338b8f415c6SKonrad Dybcio 
2339b8f415c6SKonrad Dybcio static struct clk_branch pcie_0_phy_ldo = {
2340b8f415c6SKonrad Dybcio 	.halt_reg = 0x1e00,
2341b8f415c6SKonrad Dybcio 	.halt_check = BRANCH_HALT_SKIP,
2342b8f415c6SKonrad Dybcio 	.clkr = {
2343b8f415c6SKonrad Dybcio 		.enable_reg = 0x1E00,
2344b8f415c6SKonrad Dybcio 		.enable_mask = BIT(0),
2345b8f415c6SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2346b8f415c6SKonrad Dybcio 			.name = "pcie_0_phy_ldo",
2347b8f415c6SKonrad Dybcio 			.ops = &clk_branch2_ops,
2348b8f415c6SKonrad Dybcio 		},
2349b8f415c6SKonrad Dybcio 	},
2350b8f415c6SKonrad Dybcio };
2351b8f415c6SKonrad Dybcio 
2352b8f415c6SKonrad Dybcio static struct clk_branch pcie_1_phy_ldo = {
2353b8f415c6SKonrad Dybcio 	.halt_reg = 0x1e04,
2354b8f415c6SKonrad Dybcio 	.halt_check = BRANCH_HALT_SKIP,
2355b8f415c6SKonrad Dybcio 	.clkr = {
2356b8f415c6SKonrad Dybcio 		.enable_reg = 0x1E04,
2357b8f415c6SKonrad Dybcio 		.enable_mask = BIT(0),
2358b8f415c6SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2359b8f415c6SKonrad Dybcio 			.name = "pcie_1_phy_ldo",
2360b8f415c6SKonrad Dybcio 			.ops = &clk_branch2_ops,
2361b8f415c6SKonrad Dybcio 		},
2362b8f415c6SKonrad Dybcio 	},
2363b8f415c6SKonrad Dybcio };
2364b8f415c6SKonrad Dybcio 
2365b8f415c6SKonrad Dybcio static struct clk_branch ufs_phy_ldo = {
2366b8f415c6SKonrad Dybcio 	.halt_reg = 0x1e0c,
2367b8f415c6SKonrad Dybcio 	.halt_check = BRANCH_HALT_SKIP,
2368b8f415c6SKonrad Dybcio 	.clkr = {
2369b8f415c6SKonrad Dybcio 		.enable_reg = 0x1E0C,
2370b8f415c6SKonrad Dybcio 		.enable_mask = BIT(0),
2371b8f415c6SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2372b8f415c6SKonrad Dybcio 			.name = "ufs_phy_ldo",
2373b8f415c6SKonrad Dybcio 			.ops = &clk_branch2_ops,
2374b8f415c6SKonrad Dybcio 		},
2375b8f415c6SKonrad Dybcio 	},
2376b8f415c6SKonrad Dybcio };
2377b8f415c6SKonrad Dybcio 
2378b8f415c6SKonrad Dybcio static struct clk_branch usb_ss_phy_ldo = {
2379b8f415c6SKonrad Dybcio 	.halt_reg = 0x1e08,
2380b8f415c6SKonrad Dybcio 	.halt_check = BRANCH_HALT_SKIP,
2381b8f415c6SKonrad Dybcio 	.clkr = {
2382b8f415c6SKonrad Dybcio 		.enable_reg = 0x1E08,
2383b8f415c6SKonrad Dybcio 		.enable_mask = BIT(0),
2384b8f415c6SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2385b8f415c6SKonrad Dybcio 			.name = "usb_ss_phy_ldo",
2386b8f415c6SKonrad Dybcio 			.ops = &clk_branch2_ops,
2387b8f415c6SKonrad Dybcio 		},
2388b8f415c6SKonrad Dybcio 	},
2389b8f415c6SKonrad Dybcio };
2390b8f415c6SKonrad Dybcio 
2391b8f415c6SKonrad Dybcio static struct clk_branch gcc_boot_rom_ahb_clk = {
2392b8f415c6SKonrad Dybcio 	.halt_reg = 0x0e04,
2393b8f415c6SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2394b8f415c6SKonrad Dybcio 	.hwcg_reg = 0x0e04,
2395b8f415c6SKonrad Dybcio 	.hwcg_bit = 1,
2396b8f415c6SKonrad Dybcio 	.clkr = {
2397b8f415c6SKonrad Dybcio 		.enable_reg = 0x1484,
2398b8f415c6SKonrad Dybcio 		.enable_mask = BIT(10),
2399b8f415c6SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2400b8f415c6SKonrad Dybcio 			.name = "gcc_boot_rom_ahb_clk",
2401b8f415c6SKonrad Dybcio 			.ops = &clk_branch2_ops,
2402b8f415c6SKonrad Dybcio 		},
2403b8f415c6SKonrad Dybcio 	},
2404b8f415c6SKonrad Dybcio };
2405b8f415c6SKonrad Dybcio 
2406b8f415c6SKonrad Dybcio static struct clk_branch gcc_prng_ahb_clk = {
2407b8f415c6SKonrad Dybcio 	.halt_reg = 0x0d04,
2408b8f415c6SKonrad Dybcio 	.halt_check = BRANCH_HALT_VOTED,
2409b8f415c6SKonrad Dybcio 	.clkr = {
2410b8f415c6SKonrad Dybcio 		.enable_reg = 0x1484,
2411b8f415c6SKonrad Dybcio 		.enable_mask = BIT(13),
2412b8f415c6SKonrad Dybcio 		.hw.init = &(struct clk_init_data){
2413b8f415c6SKonrad Dybcio 			.name = "gcc_prng_ahb_clk",
2414b8f415c6SKonrad Dybcio 			.ops = &clk_branch2_ops,
2415b8f415c6SKonrad Dybcio 		},
2416b8f415c6SKonrad Dybcio 	},
2417b8f415c6SKonrad Dybcio };
2418b8f415c6SKonrad Dybcio 
24198c18b41bSKonrad Dybcio static struct gdsc pcie_0_gdsc = {
24208c18b41bSKonrad Dybcio 		.gdscr = 0x1ac4,
24218c18b41bSKonrad Dybcio 		.pd = {
24228c18b41bSKonrad Dybcio 			.name = "pcie_0",
24238c18b41bSKonrad Dybcio 		},
24248c18b41bSKonrad Dybcio 		.pwrsts = PWRSTS_OFF_ON,
24258c18b41bSKonrad Dybcio };
24268c18b41bSKonrad Dybcio 
24278c18b41bSKonrad Dybcio static struct gdsc pcie_1_gdsc = {
24288c18b41bSKonrad Dybcio 		.gdscr = 0x1b44,
24298c18b41bSKonrad Dybcio 		.pd = {
24308c18b41bSKonrad Dybcio 			.name = "pcie_1",
24318c18b41bSKonrad Dybcio 		},
24328c18b41bSKonrad Dybcio 		.pwrsts = PWRSTS_OFF_ON,
24338c18b41bSKonrad Dybcio };
24348c18b41bSKonrad Dybcio 
24358c18b41bSKonrad Dybcio static struct gdsc usb30_gdsc = {
24368c18b41bSKonrad Dybcio 		.gdscr = 0x3c4,
24378c18b41bSKonrad Dybcio 		.pd = {
24388c18b41bSKonrad Dybcio 			.name = "usb30",
24398c18b41bSKonrad Dybcio 		},
24408c18b41bSKonrad Dybcio 		.pwrsts = PWRSTS_OFF_ON,
24418c18b41bSKonrad Dybcio };
24428c18b41bSKonrad Dybcio 
24438c18b41bSKonrad Dybcio static struct gdsc ufs_gdsc = {
24448c18b41bSKonrad Dybcio 		.gdscr = 0x1d44,
24458c18b41bSKonrad Dybcio 		.pd = {
24468c18b41bSKonrad Dybcio 			.name = "ufs",
24478c18b41bSKonrad Dybcio 		},
24488c18b41bSKonrad Dybcio 		.pwrsts = PWRSTS_OFF_ON,
24498c18b41bSKonrad Dybcio };
24508c18b41bSKonrad Dybcio 
2451aec89f78SBastian Köcher static struct clk_regmap *gcc_msm8994_clocks[] = {
2452aec89f78SBastian Köcher 	[GPLL0_EARLY] = &gpll0_early.clkr,
2453aec89f78SBastian Köcher 	[GPLL0] = &gpll0.clkr,
2454aec89f78SBastian Köcher 	[GPLL4_EARLY] = &gpll4_early.clkr,
2455aec89f78SBastian Köcher 	[GPLL4] = &gpll4.clkr,
2456aec89f78SBastian Köcher 	[UFS_AXI_CLK_SRC] = &ufs_axi_clk_src.clkr,
2457aec89f78SBastian Köcher 	[USB30_MASTER_CLK_SRC] = &usb30_master_clk_src.clkr,
2458aec89f78SBastian Köcher 	[BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr,
2459aec89f78SBastian Köcher 	[BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr,
2460aec89f78SBastian Köcher 	[BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr,
2461aec89f78SBastian Köcher 	[BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr,
2462aec89f78SBastian Köcher 	[BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr,
2463aec89f78SBastian Köcher 	[BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr,
2464aec89f78SBastian Köcher 	[BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr,
2465aec89f78SBastian Köcher 	[BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr,
2466aec89f78SBastian Köcher 	[BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr,
2467aec89f78SBastian Köcher 	[BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr,
2468aec89f78SBastian Köcher 	[BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr,
2469aec89f78SBastian Köcher 	[BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr,
2470aec89f78SBastian Köcher 	[BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr,
2471aec89f78SBastian Köcher 	[BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr,
2472aec89f78SBastian Köcher 	[BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr,
2473aec89f78SBastian Köcher 	[BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr,
2474aec89f78SBastian Köcher 	[BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr,
2475aec89f78SBastian Köcher 	[BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr,
2476aec89f78SBastian Köcher 	[BLSP2_QUP1_I2C_APPS_CLK_SRC] = &blsp2_qup1_i2c_apps_clk_src.clkr,
2477aec89f78SBastian Köcher 	[BLSP2_QUP1_SPI_APPS_CLK_SRC] = &blsp2_qup1_spi_apps_clk_src.clkr,
2478aec89f78SBastian Köcher 	[BLSP2_QUP2_I2C_APPS_CLK_SRC] = &blsp2_qup2_i2c_apps_clk_src.clkr,
2479aec89f78SBastian Köcher 	[BLSP2_QUP2_SPI_APPS_CLK_SRC] = &blsp2_qup2_spi_apps_clk_src.clkr,
2480aec89f78SBastian Köcher 	[BLSP2_QUP3_I2C_APPS_CLK_SRC] = &blsp2_qup3_i2c_apps_clk_src.clkr,
2481aec89f78SBastian Köcher 	[BLSP2_QUP3_SPI_APPS_CLK_SRC] = &blsp2_qup3_spi_apps_clk_src.clkr,
2482aec89f78SBastian Köcher 	[BLSP2_QUP4_I2C_APPS_CLK_SRC] = &blsp2_qup4_i2c_apps_clk_src.clkr,
2483aec89f78SBastian Köcher 	[BLSP2_QUP4_SPI_APPS_CLK_SRC] = &blsp2_qup4_spi_apps_clk_src.clkr,
2484aec89f78SBastian Köcher 	[BLSP2_QUP5_I2C_APPS_CLK_SRC] = &blsp2_qup5_i2c_apps_clk_src.clkr,
2485aec89f78SBastian Köcher 	[BLSP2_QUP5_SPI_APPS_CLK_SRC] = &blsp2_qup5_spi_apps_clk_src.clkr,
2486aec89f78SBastian Köcher 	[BLSP2_QUP6_I2C_APPS_CLK_SRC] = &blsp2_qup6_i2c_apps_clk_src.clkr,
2487aec89f78SBastian Köcher 	[BLSP2_QUP6_SPI_APPS_CLK_SRC] = &blsp2_qup6_spi_apps_clk_src.clkr,
2488aec89f78SBastian Köcher 	[BLSP2_UART1_APPS_CLK_SRC] = &blsp2_uart1_apps_clk_src.clkr,
2489aec89f78SBastian Köcher 	[BLSP2_UART2_APPS_CLK_SRC] = &blsp2_uart2_apps_clk_src.clkr,
2490aec89f78SBastian Köcher 	[BLSP2_UART3_APPS_CLK_SRC] = &blsp2_uart3_apps_clk_src.clkr,
2491aec89f78SBastian Köcher 	[BLSP2_UART4_APPS_CLK_SRC] = &blsp2_uart4_apps_clk_src.clkr,
2492aec89f78SBastian Köcher 	[BLSP2_UART5_APPS_CLK_SRC] = &blsp2_uart5_apps_clk_src.clkr,
2493aec89f78SBastian Köcher 	[BLSP2_UART6_APPS_CLK_SRC] = &blsp2_uart6_apps_clk_src.clkr,
2494aec89f78SBastian Köcher 	[GP1_CLK_SRC] = &gp1_clk_src.clkr,
2495aec89f78SBastian Köcher 	[GP2_CLK_SRC] = &gp2_clk_src.clkr,
2496aec89f78SBastian Köcher 	[GP3_CLK_SRC] = &gp3_clk_src.clkr,
2497aec89f78SBastian Köcher 	[PCIE_0_AUX_CLK_SRC] = &pcie_0_aux_clk_src.clkr,
2498aec89f78SBastian Köcher 	[PCIE_0_PIPE_CLK_SRC] = &pcie_0_pipe_clk_src.clkr,
2499aec89f78SBastian Köcher 	[PCIE_1_AUX_CLK_SRC] = &pcie_1_aux_clk_src.clkr,
2500aec89f78SBastian Köcher 	[PCIE_1_PIPE_CLK_SRC] = &pcie_1_pipe_clk_src.clkr,
2501aec89f78SBastian Köcher 	[PDM2_CLK_SRC] = &pdm2_clk_src.clkr,
2502aec89f78SBastian Köcher 	[SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr,
2503aec89f78SBastian Köcher 	[SDCC2_APPS_CLK_SRC] = &sdcc2_apps_clk_src.clkr,
2504aec89f78SBastian Köcher 	[SDCC3_APPS_CLK_SRC] = &sdcc3_apps_clk_src.clkr,
2505aec89f78SBastian Köcher 	[SDCC4_APPS_CLK_SRC] = &sdcc4_apps_clk_src.clkr,
2506aec89f78SBastian Köcher 	[TSIF_REF_CLK_SRC] = &tsif_ref_clk_src.clkr,
2507aec89f78SBastian Köcher 	[USB30_MOCK_UTMI_CLK_SRC] = &usb30_mock_utmi_clk_src.clkr,
2508aec89f78SBastian Köcher 	[USB3_PHY_AUX_CLK_SRC] = &usb3_phy_aux_clk_src.clkr,
2509aec89f78SBastian Köcher 	[USB_HS_SYSTEM_CLK_SRC] = &usb_hs_system_clk_src.clkr,
2510aec89f78SBastian Köcher 	[GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr,
2511aec89f78SBastian Köcher 	[GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr,
2512aec89f78SBastian Köcher 	[GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr,
2513aec89f78SBastian Köcher 	[GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr,
2514aec89f78SBastian Köcher 	[GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr,
2515aec89f78SBastian Köcher 	[GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr,
2516aec89f78SBastian Köcher 	[GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr,
2517aec89f78SBastian Köcher 	[GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr,
2518aec89f78SBastian Köcher 	[GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr,
2519aec89f78SBastian Köcher 	[GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr,
2520aec89f78SBastian Köcher 	[GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr,
2521aec89f78SBastian Köcher 	[GCC_BLSP1_QUP6_I2C_APPS_CLK] = &gcc_blsp1_qup6_i2c_apps_clk.clkr,
2522aec89f78SBastian Köcher 	[GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr,
2523aec89f78SBastian Köcher 	[GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr,
2524aec89f78SBastian Köcher 	[GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr,
2525aec89f78SBastian Köcher 	[GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr,
2526aec89f78SBastian Köcher 	[GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr,
2527aec89f78SBastian Köcher 	[GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr,
2528aec89f78SBastian Köcher 	[GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr,
2529aec89f78SBastian Köcher 	[GCC_BLSP2_AHB_CLK] = &gcc_blsp2_ahb_clk.clkr,
2530aec89f78SBastian Köcher 	[GCC_BLSP2_QUP1_I2C_APPS_CLK] = &gcc_blsp2_qup1_i2c_apps_clk.clkr,
2531aec89f78SBastian Köcher 	[GCC_BLSP2_QUP1_SPI_APPS_CLK] = &gcc_blsp2_qup1_spi_apps_clk.clkr,
2532aec89f78SBastian Köcher 	[GCC_BLSP2_QUP2_I2C_APPS_CLK] = &gcc_blsp2_qup2_i2c_apps_clk.clkr,
2533aec89f78SBastian Köcher 	[GCC_BLSP2_QUP2_SPI_APPS_CLK] = &gcc_blsp2_qup2_spi_apps_clk.clkr,
2534aec89f78SBastian Köcher 	[GCC_BLSP2_QUP3_I2C_APPS_CLK] = &gcc_blsp2_qup3_i2c_apps_clk.clkr,
2535aec89f78SBastian Köcher 	[GCC_BLSP2_QUP3_SPI_APPS_CLK] = &gcc_blsp2_qup3_spi_apps_clk.clkr,
2536aec89f78SBastian Köcher 	[GCC_BLSP2_QUP4_I2C_APPS_CLK] = &gcc_blsp2_qup4_i2c_apps_clk.clkr,
2537aec89f78SBastian Köcher 	[GCC_BLSP2_QUP4_SPI_APPS_CLK] = &gcc_blsp2_qup4_spi_apps_clk.clkr,
2538aec89f78SBastian Köcher 	[GCC_BLSP2_QUP5_I2C_APPS_CLK] = &gcc_blsp2_qup5_i2c_apps_clk.clkr,
2539aec89f78SBastian Köcher 	[GCC_BLSP2_QUP5_SPI_APPS_CLK] = &gcc_blsp2_qup5_spi_apps_clk.clkr,
2540aec89f78SBastian Köcher 	[GCC_BLSP2_QUP6_I2C_APPS_CLK] = &gcc_blsp2_qup6_i2c_apps_clk.clkr,
2541aec89f78SBastian Köcher 	[GCC_BLSP2_QUP6_SPI_APPS_CLK] = &gcc_blsp2_qup6_spi_apps_clk.clkr,
2542aec89f78SBastian Köcher 	[GCC_BLSP2_UART1_APPS_CLK] = &gcc_blsp2_uart1_apps_clk.clkr,
2543aec89f78SBastian Köcher 	[GCC_BLSP2_UART2_APPS_CLK] = &gcc_blsp2_uart2_apps_clk.clkr,
2544aec89f78SBastian Köcher 	[GCC_BLSP2_UART3_APPS_CLK] = &gcc_blsp2_uart3_apps_clk.clkr,
2545aec89f78SBastian Köcher 	[GCC_BLSP2_UART4_APPS_CLK] = &gcc_blsp2_uart4_apps_clk.clkr,
2546aec89f78SBastian Köcher 	[GCC_BLSP2_UART5_APPS_CLK] = &gcc_blsp2_uart5_apps_clk.clkr,
2547aec89f78SBastian Köcher 	[GCC_BLSP2_UART6_APPS_CLK] = &gcc_blsp2_uart6_apps_clk.clkr,
2548aec89f78SBastian Köcher 	[GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
2549aec89f78SBastian Köcher 	[GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
2550aec89f78SBastian Köcher 	[GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
25518c18b41bSKonrad Dybcio 	[GCC_LPASS_Q6_AXI_CLK] = &gcc_lpass_q6_axi_clk.clkr,
25528c18b41bSKonrad Dybcio 	[GCC_MSS_Q6_BIMC_AXI_CLK] = &gcc_mss_q6_bimc_axi_clk.clkr,
2553aec89f78SBastian Köcher 	[GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,
25548c18b41bSKonrad Dybcio 	[GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr,
25558c18b41bSKonrad Dybcio 	[GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr,
2556aec89f78SBastian Köcher 	[GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,
25578c18b41bSKonrad Dybcio 	[GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr,
2558aec89f78SBastian Köcher 	[GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,
25598c18b41bSKonrad Dybcio 	[GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr,
25608c18b41bSKonrad Dybcio 	[GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr,
2561aec89f78SBastian Köcher 	[GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,
25628c18b41bSKonrad Dybcio 	[GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr,
2563aec89f78SBastian Köcher 	[GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
25648c18b41bSKonrad Dybcio 	[GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
2565eaff16bcSJeremy McNicoll 	[GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
25668c18b41bSKonrad Dybcio 	[GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
25678c18b41bSKonrad Dybcio 	[GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
25688c18b41bSKonrad Dybcio 	[GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
25698c18b41bSKonrad Dybcio 	[GCC_SDCC3_AHB_CLK] = &gcc_sdcc3_ahb_clk.clkr,
25708c18b41bSKonrad Dybcio 	[GCC_SDCC3_APPS_CLK] = &gcc_sdcc3_apps_clk.clkr,
25718c18b41bSKonrad Dybcio 	[GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr,
25728c18b41bSKonrad Dybcio 	[GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr,
2573aec89f78SBastian Köcher 	[GCC_SYS_NOC_UFS_AXI_CLK] = &gcc_sys_noc_ufs_axi_clk.clkr,
2574aec89f78SBastian Köcher 	[GCC_SYS_NOC_USB3_AXI_CLK] = &gcc_sys_noc_usb3_axi_clk.clkr,
25758c18b41bSKonrad Dybcio 	[GCC_TSIF_AHB_CLK] = &gcc_tsif_ahb_clk.clkr,
2576aec89f78SBastian Köcher 	[GCC_TSIF_REF_CLK] = &gcc_tsif_ref_clk.clkr,
25778c18b41bSKonrad Dybcio 	[GCC_UFS_AHB_CLK] = &gcc_ufs_ahb_clk.clkr,
2578aec89f78SBastian Köcher 	[GCC_UFS_AXI_CLK] = &gcc_ufs_axi_clk.clkr,
2579aec89f78SBastian Köcher 	[GCC_UFS_RX_CFG_CLK] = &gcc_ufs_rx_cfg_clk.clkr,
25808c18b41bSKonrad Dybcio 	[GCC_UFS_RX_SYMBOL_0_CLK] = &gcc_ufs_rx_symbol_0_clk.clkr,
25818c18b41bSKonrad Dybcio 	[GCC_UFS_RX_SYMBOL_1_CLK] = &gcc_ufs_rx_symbol_1_clk.clkr,
2582aec89f78SBastian Köcher 	[GCC_UFS_TX_CFG_CLK] = &gcc_ufs_tx_cfg_clk.clkr,
25838c18b41bSKonrad Dybcio 	[GCC_UFS_TX_SYMBOL_0_CLK] = &gcc_ufs_tx_symbol_0_clk.clkr,
25848c18b41bSKonrad Dybcio 	[GCC_UFS_TX_SYMBOL_1_CLK] = &gcc_ufs_tx_symbol_1_clk.clkr,
25858c18b41bSKonrad Dybcio 	[GCC_USB2_HS_PHY_SLEEP_CLK] = &gcc_usb2_hs_phy_sleep_clk.clkr,
2586aec89f78SBastian Köcher 	[GCC_USB30_MASTER_CLK] = &gcc_usb30_master_clk.clkr,
2587aec89f78SBastian Köcher 	[GCC_USB30_MOCK_UTMI_CLK] = &gcc_usb30_mock_utmi_clk.clkr,
25888c18b41bSKonrad Dybcio 	[GCC_USB30_SLEEP_CLK] = &gcc_usb30_sleep_clk.clkr,
2589aec89f78SBastian Köcher 	[GCC_USB3_PHY_AUX_CLK] = &gcc_usb3_phy_aux_clk.clkr,
2590b8f415c6SKonrad Dybcio 	[GCC_USB3_PHY_PIPE_CLK] = &gcc_usb3_phy_pipe_clk.clkr,
25918c18b41bSKonrad Dybcio 	[GCC_USB_HS_AHB_CLK] = &gcc_usb_hs_ahb_clk.clkr,
2592aec89f78SBastian Köcher 	[GCC_USB_HS_SYSTEM_CLK] = &gcc_usb_hs_system_clk.clkr,
25938c18b41bSKonrad Dybcio 	[GCC_USB_PHY_CFG_AHB2PHY_CLK] = &gcc_usb_phy_cfg_ahb2phy_clk.clkr,
2594b8f415c6SKonrad Dybcio 	[GPLL0_OUT_MMSSCC] = &gpll0_out_mmsscc.clkr,
2595b8f415c6SKonrad Dybcio 	[GPLL0_OUT_MSSCC] = &gpll0_out_msscc.clkr,
2596b8f415c6SKonrad Dybcio 	[PCIE_0_PHY_LDO] = &pcie_0_phy_ldo.clkr,
2597b8f415c6SKonrad Dybcio 	[PCIE_1_PHY_LDO] = &pcie_1_phy_ldo.clkr,
2598b8f415c6SKonrad Dybcio 	[UFS_PHY_LDO] = &ufs_phy_ldo.clkr,
2599b8f415c6SKonrad Dybcio 	[USB_SS_PHY_LDO] = &usb_ss_phy_ldo.clkr,
2600b8f415c6SKonrad Dybcio 	[GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
2601b8f415c6SKonrad Dybcio 	[GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
2602*3494894aSKonrad Dybcio 
2603*3494894aSKonrad Dybcio 	/*
2604*3494894aSKonrad Dybcio 	 * The following clocks should NOT be managed by this driver, but they once were
2605*3494894aSKonrad Dybcio 	 * mistakengly added. Now they are only here to indicate that they are not defined
2606*3494894aSKonrad Dybcio 	 * on purpose, even though the names will stay in the header file (for ABI sanity).
2607*3494894aSKonrad Dybcio 	 */
2608*3494894aSKonrad Dybcio 	[CONFIG_NOC_CLK_SRC] = NULL,
2609*3494894aSKonrad Dybcio 	[PERIPH_NOC_CLK_SRC] = NULL,
2610*3494894aSKonrad Dybcio 	[SYSTEM_NOC_CLK_SRC] = NULL,
26118c18b41bSKonrad Dybcio };
26128c18b41bSKonrad Dybcio 
26138c18b41bSKonrad Dybcio static struct gdsc *gcc_msm8994_gdscs[] = {
261435bb1e6eSKonrad Dybcio 	/* This GDSC does not exist, but ABI has to remain intact */
261535bb1e6eSKonrad Dybcio 	[PCIE_GDSC] = NULL,
26168c18b41bSKonrad Dybcio 	[PCIE_0_GDSC] = &pcie_0_gdsc,
26178c18b41bSKonrad Dybcio 	[PCIE_1_GDSC] = &pcie_1_gdsc,
26188c18b41bSKonrad Dybcio 	[USB30_GDSC] = &usb30_gdsc,
26198c18b41bSKonrad Dybcio 	[UFS_GDSC] = &ufs_gdsc,
26208c18b41bSKonrad Dybcio };
26218c18b41bSKonrad Dybcio 
26228c18b41bSKonrad Dybcio static const struct qcom_reset_map gcc_msm8994_resets[] = {
26238c18b41bSKonrad Dybcio 	[USB3_PHY_RESET] = { 0x1400 },
26248c18b41bSKonrad Dybcio 	[USB3PHY_PHY_RESET] = { 0x1404 },
2625a888dc4cSKonrad Dybcio 	[MSS_RESET] = { 0x1680 },
26268c18b41bSKonrad Dybcio 	[PCIE_PHY_0_RESET] = { 0x1b18 },
26278c18b41bSKonrad Dybcio 	[PCIE_PHY_1_RESET] = { 0x1b98 },
26288c18b41bSKonrad Dybcio 	[QUSB2_PHY_RESET] = { 0x04b8 },
2629aec89f78SBastian Köcher };
2630aec89f78SBastian Köcher 
2631aec89f78SBastian Köcher static const struct regmap_config gcc_msm8994_regmap_config = {
2632aec89f78SBastian Köcher 	.reg_bits	= 32,
2633aec89f78SBastian Köcher 	.reg_stride	= 4,
2634aec89f78SBastian Köcher 	.val_bits	= 32,
2635aec89f78SBastian Köcher 	.max_register	= 0x2000,
2636aec89f78SBastian Köcher 	.fast_io	= true,
2637aec89f78SBastian Köcher };
2638aec89f78SBastian Köcher 
2639aec89f78SBastian Köcher static const struct qcom_cc_desc gcc_msm8994_desc = {
2640aec89f78SBastian Köcher 	.config = &gcc_msm8994_regmap_config,
2641aec89f78SBastian Köcher 	.clks = gcc_msm8994_clocks,
2642aec89f78SBastian Köcher 	.num_clks = ARRAY_SIZE(gcc_msm8994_clocks),
26438c18b41bSKonrad Dybcio 	.resets = gcc_msm8994_resets,
26448c18b41bSKonrad Dybcio 	.num_resets = ARRAY_SIZE(gcc_msm8994_resets),
26458c18b41bSKonrad Dybcio 	.gdscs = gcc_msm8994_gdscs,
26468c18b41bSKonrad Dybcio 	.num_gdscs = ARRAY_SIZE(gcc_msm8994_gdscs),
2647aec89f78SBastian Köcher };
2648aec89f78SBastian Köcher 
2649aec89f78SBastian Köcher static const struct of_device_id gcc_msm8994_match_table[] = {
2650c09b8023SKonrad Dybcio 	{ .compatible = "qcom,gcc-msm8992" },
2651c09b8023SKonrad Dybcio 	{ .compatible = "qcom,gcc-msm8994" }, /* V2 and V2.1 */
2652aec89f78SBastian Köcher 	{}
2653aec89f78SBastian Köcher };
2654aec89f78SBastian Köcher MODULE_DEVICE_TABLE(of, gcc_msm8994_match_table);
2655aec89f78SBastian Köcher 
2656aec89f78SBastian Köcher static int gcc_msm8994_probe(struct platform_device *pdev)
2657aec89f78SBastian Köcher {
2658c09b8023SKonrad Dybcio 	if (of_device_is_compatible(pdev->dev.of_node, "qcom,gcc-msm8992")) {
2659c09b8023SKonrad Dybcio 		/* MSM8992 features less clocks and some have different freq tables */
2660c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[UFS_AXI_CLK_SRC] = NULL;
2661c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_LPASS_Q6_AXI_CLK] = NULL;
2662c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[UFS_PHY_LDO] = NULL;
2663c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_UFS_AHB_CLK] = NULL;
2664c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_UFS_AXI_CLK] = NULL;
2665c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_UFS_RX_CFG_CLK] = NULL;
2666c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_UFS_RX_SYMBOL_0_CLK] = NULL;
2667c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_UFS_RX_SYMBOL_1_CLK] = NULL;
2668c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_UFS_TX_CFG_CLK] = NULL;
2669c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_UFS_TX_SYMBOL_0_CLK] = NULL;
2670c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_UFS_TX_SYMBOL_1_CLK] = NULL;
2671c09b8023SKonrad Dybcio 
2672c09b8023SKonrad Dybcio 		sdcc1_apps_clk_src.freq_tbl = ftbl_sdcc1_apps_clk_src_8992;
2673c09b8023SKonrad Dybcio 		blsp1_qup1_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2674c09b8023SKonrad Dybcio 		blsp1_qup2_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2675c09b8023SKonrad Dybcio 		blsp1_qup3_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2676c09b8023SKonrad Dybcio 		blsp1_qup4_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2677c09b8023SKonrad Dybcio 		blsp1_qup5_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2678c09b8023SKonrad Dybcio 		blsp1_qup6_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2679c09b8023SKonrad Dybcio 		blsp2_qup1_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2680c09b8023SKonrad Dybcio 		blsp2_qup2_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2681c09b8023SKonrad Dybcio 		blsp2_qup3_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2682c09b8023SKonrad Dybcio 		blsp2_qup4_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2683c09b8023SKonrad Dybcio 		blsp2_qup5_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2684c09b8023SKonrad Dybcio 		blsp2_qup6_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2685c09b8023SKonrad Dybcio 
2686c09b8023SKonrad Dybcio 		/*
2687c09b8023SKonrad Dybcio 		 * Some 8992 boards might *possibly* use
2688c09b8023SKonrad Dybcio 		 * PCIe1 clocks and controller, but it's not
2689c09b8023SKonrad Dybcio 		 * standard and they should be disabled otherwise.
2690c09b8023SKonrad Dybcio 		 */
2691c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[PCIE_1_AUX_CLK_SRC] = NULL;
2692c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[PCIE_1_PIPE_CLK_SRC] = NULL;
2693c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[PCIE_1_PHY_LDO] = NULL;
2694c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_PCIE_1_AUX_CLK] = NULL;
2695c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_PCIE_1_CFG_AHB_CLK] = NULL;
2696c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_PCIE_1_MSTR_AXI_CLK] = NULL;
2697c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_PCIE_1_PIPE_CLK] = NULL;
2698c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_PCIE_1_SLV_AXI_CLK] = NULL;
2699c09b8023SKonrad Dybcio 		gcc_msm8994_desc.clks[GCC_SYS_NOC_UFS_AXI_CLK] = NULL;
2700c09b8023SKonrad Dybcio 	}
2701c09b8023SKonrad Dybcio 
2702aec89f78SBastian Köcher 	return qcom_cc_probe(pdev, &gcc_msm8994_desc);
2703aec89f78SBastian Köcher }
2704aec89f78SBastian Köcher 
2705aec89f78SBastian Köcher static struct platform_driver gcc_msm8994_driver = {
2706aec89f78SBastian Köcher 	.probe		= gcc_msm8994_probe,
2707aec89f78SBastian Köcher 	.driver		= {
2708aec89f78SBastian Köcher 		.name	= "gcc-msm8994",
2709aec89f78SBastian Köcher 		.of_match_table = gcc_msm8994_match_table,
2710aec89f78SBastian Köcher 	},
2711aec89f78SBastian Köcher };
2712aec89f78SBastian Köcher 
2713aec89f78SBastian Köcher static int __init gcc_msm8994_init(void)
2714aec89f78SBastian Köcher {
2715aec89f78SBastian Köcher 	return platform_driver_register(&gcc_msm8994_driver);
2716aec89f78SBastian Köcher }
2717aec89f78SBastian Köcher core_initcall(gcc_msm8994_init);
2718aec89f78SBastian Köcher 
2719aec89f78SBastian Köcher static void __exit gcc_msm8994_exit(void)
2720aec89f78SBastian Köcher {
2721aec89f78SBastian Köcher 	platform_driver_unregister(&gcc_msm8994_driver);
2722aec89f78SBastian Köcher }
2723aec89f78SBastian Köcher module_exit(gcc_msm8994_exit);
2724aec89f78SBastian Köcher 
2725aec89f78SBastian Köcher MODULE_DESCRIPTION("Qualcomm GCC MSM8994 Driver");
2726aec89f78SBastian Köcher MODULE_LICENSE("GPL v2");
2727aec89f78SBastian Köcher MODULE_ALIAS("platform:gcc-msm8994");
2728