xref: /openbmc/linux/drivers/clk/qcom/gcc-sm8550.c (revision 7c391eaf)
1955f2ea3SAbel Vesa // SPDX-License-Identifier: GPL-2.0-only
2955f2ea3SAbel Vesa /*
3955f2ea3SAbel Vesa  * Copyright (c) 2021, The Linux Foundation. All rights reserved.
4955f2ea3SAbel Vesa  * Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved.
5955f2ea3SAbel Vesa  * Copyright (c) 2022, Linaro Limited
6955f2ea3SAbel Vesa  */
7955f2ea3SAbel Vesa 
8955f2ea3SAbel Vesa #include <linux/clk-provider.h>
9955f2ea3SAbel Vesa #include <linux/module.h>
10a96cbb14SRob Herring #include <linux/of.h>
11a96cbb14SRob Herring #include <linux/platform_device.h>
12955f2ea3SAbel Vesa #include <linux/regmap.h>
13955f2ea3SAbel Vesa 
14955f2ea3SAbel Vesa #include <dt-bindings/clock/qcom,sm8550-gcc.h>
15955f2ea3SAbel Vesa 
16955f2ea3SAbel Vesa #include "clk-alpha-pll.h"
17955f2ea3SAbel Vesa #include "clk-branch.h"
18955f2ea3SAbel Vesa #include "clk-rcg.h"
19955f2ea3SAbel Vesa #include "clk-regmap.h"
20955f2ea3SAbel Vesa #include "clk-regmap-divider.h"
21955f2ea3SAbel Vesa #include "clk-regmap-mux.h"
22955f2ea3SAbel Vesa #include "clk-regmap-phy-mux.h"
23955f2ea3SAbel Vesa #include "gdsc.h"
24955f2ea3SAbel Vesa #include "reset.h"
25955f2ea3SAbel Vesa 
26955f2ea3SAbel Vesa enum {
27955f2ea3SAbel Vesa 	DT_BI_TCXO,
28955f2ea3SAbel Vesa 	DT_SLEEP_CLK,
29955f2ea3SAbel Vesa 	DT_PCIE_0_PIPE,
30955f2ea3SAbel Vesa 	DT_PCIE_1_PIPE,
31955f2ea3SAbel Vesa 	DT_PCIE_1_PHY_AUX,
32955f2ea3SAbel Vesa 	DT_UFS_PHY_RX_SYMBOL_0,
33955f2ea3SAbel Vesa 	DT_UFS_PHY_RX_SYMBOL_1,
34955f2ea3SAbel Vesa 	DT_UFS_PHY_TX_SYMBOL_0,
35955f2ea3SAbel Vesa 	DT_USB3_PHY_WRAPPER_GCC_USB30_PIPE,
36955f2ea3SAbel Vesa };
37955f2ea3SAbel Vesa 
38955f2ea3SAbel Vesa enum {
39955f2ea3SAbel Vesa 	P_BI_TCXO,
40955f2ea3SAbel Vesa 	P_GCC_GPLL0_OUT_EVEN,
41955f2ea3SAbel Vesa 	P_GCC_GPLL0_OUT_MAIN,
42955f2ea3SAbel Vesa 	P_GCC_GPLL4_OUT_MAIN,
43955f2ea3SAbel Vesa 	P_GCC_GPLL7_OUT_MAIN,
44955f2ea3SAbel Vesa 	P_GCC_GPLL9_OUT_MAIN,
45955f2ea3SAbel Vesa 	P_PCIE_0_PIPE_CLK,
46955f2ea3SAbel Vesa 	P_PCIE_1_PHY_AUX_CLK,
47955f2ea3SAbel Vesa 	P_PCIE_1_PIPE_CLK,
48955f2ea3SAbel Vesa 	P_SLEEP_CLK,
49955f2ea3SAbel Vesa 	P_UFS_PHY_RX_SYMBOL_0_CLK,
50955f2ea3SAbel Vesa 	P_UFS_PHY_RX_SYMBOL_1_CLK,
51955f2ea3SAbel Vesa 	P_UFS_PHY_TX_SYMBOL_0_CLK,
52955f2ea3SAbel Vesa 	P_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK,
53955f2ea3SAbel Vesa };
54955f2ea3SAbel Vesa 
55955f2ea3SAbel Vesa static struct clk_alpha_pll gcc_gpll0 = {
56955f2ea3SAbel Vesa 	.offset = 0x0,
57955f2ea3SAbel Vesa 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
58955f2ea3SAbel Vesa 	.clkr = {
59955f2ea3SAbel Vesa 		.enable_reg = 0x52018,
60955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
61955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
62955f2ea3SAbel Vesa 			.name = "gcc_gpll0",
63955f2ea3SAbel Vesa 			.parent_data = &(const struct clk_parent_data){
64955f2ea3SAbel Vesa 				.index = DT_BI_TCXO,
65955f2ea3SAbel Vesa 			},
66955f2ea3SAbel Vesa 			.num_parents = 1,
67955f2ea3SAbel Vesa 			.ops = &clk_alpha_pll_fixed_lucid_ole_ops,
68955f2ea3SAbel Vesa 		},
69955f2ea3SAbel Vesa 	},
70955f2ea3SAbel Vesa };
71955f2ea3SAbel Vesa 
72955f2ea3SAbel Vesa static const struct clk_div_table post_div_table_gcc_gpll0_out_even[] = {
73955f2ea3SAbel Vesa 	{ 0x1, 2 },
74955f2ea3SAbel Vesa 	{ }
75955f2ea3SAbel Vesa };
76955f2ea3SAbel Vesa 
77955f2ea3SAbel Vesa static struct clk_alpha_pll_postdiv gcc_gpll0_out_even = {
78955f2ea3SAbel Vesa 	.offset = 0x0,
79955f2ea3SAbel Vesa 	.post_div_shift = 10,
80955f2ea3SAbel Vesa 	.post_div_table = post_div_table_gcc_gpll0_out_even,
81955f2ea3SAbel Vesa 	.num_post_div = ARRAY_SIZE(post_div_table_gcc_gpll0_out_even),
82955f2ea3SAbel Vesa 	.width = 4,
83955f2ea3SAbel Vesa 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
84955f2ea3SAbel Vesa 	.clkr.hw.init = &(struct clk_init_data){
85955f2ea3SAbel Vesa 		.name = "gcc_gpll0_out_even",
8618aa0dc2SDmitry Baryshkov 		.parent_hws = (const struct clk_hw*[]) {
8718aa0dc2SDmitry Baryshkov 			&gcc_gpll0.clkr.hw,
88955f2ea3SAbel Vesa 		},
89955f2ea3SAbel Vesa 		.num_parents = 1,
90955f2ea3SAbel Vesa 		.ops = &clk_alpha_pll_postdiv_lucid_ole_ops,
91955f2ea3SAbel Vesa 	},
92955f2ea3SAbel Vesa };
93955f2ea3SAbel Vesa 
94955f2ea3SAbel Vesa static struct clk_alpha_pll gcc_gpll4 = {
95955f2ea3SAbel Vesa 	.offset = 0x4000,
96955f2ea3SAbel Vesa 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
97955f2ea3SAbel Vesa 	.clkr = {
98955f2ea3SAbel Vesa 		.enable_reg = 0x52018,
99955f2ea3SAbel Vesa 		.enable_mask = BIT(4),
100955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
101955f2ea3SAbel Vesa 			.name = "gcc_gpll4",
102955f2ea3SAbel Vesa 			.parent_data = &(const struct clk_parent_data){
103955f2ea3SAbel Vesa 				.index = DT_BI_TCXO,
104955f2ea3SAbel Vesa 			},
105955f2ea3SAbel Vesa 			.num_parents = 1,
106955f2ea3SAbel Vesa 			.ops = &clk_alpha_pll_fixed_lucid_ole_ops,
107955f2ea3SAbel Vesa 		},
108955f2ea3SAbel Vesa 	},
109955f2ea3SAbel Vesa };
110955f2ea3SAbel Vesa 
111955f2ea3SAbel Vesa static struct clk_alpha_pll gcc_gpll7 = {
112955f2ea3SAbel Vesa 	.offset = 0x7000,
113955f2ea3SAbel Vesa 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
114955f2ea3SAbel Vesa 	.clkr = {
115955f2ea3SAbel Vesa 		.enable_reg = 0x52018,
116955f2ea3SAbel Vesa 		.enable_mask = BIT(7),
117955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
118955f2ea3SAbel Vesa 			.name = "gcc_gpll7",
119955f2ea3SAbel Vesa 			.parent_data = &(const struct clk_parent_data){
120955f2ea3SAbel Vesa 				.index = DT_BI_TCXO,
121955f2ea3SAbel Vesa 			},
122955f2ea3SAbel Vesa 			.num_parents = 1,
123955f2ea3SAbel Vesa 			.ops = &clk_alpha_pll_fixed_lucid_ole_ops,
124955f2ea3SAbel Vesa 		},
125955f2ea3SAbel Vesa 	},
126955f2ea3SAbel Vesa };
127955f2ea3SAbel Vesa 
128955f2ea3SAbel Vesa static struct clk_alpha_pll gcc_gpll9 = {
129955f2ea3SAbel Vesa 	.offset = 0x9000,
130955f2ea3SAbel Vesa 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
131955f2ea3SAbel Vesa 	.clkr = {
132955f2ea3SAbel Vesa 		.enable_reg = 0x52018,
133955f2ea3SAbel Vesa 		.enable_mask = BIT(9),
134955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
135955f2ea3SAbel Vesa 			.name = "gcc_gpll9",
136955f2ea3SAbel Vesa 			.parent_data = &(const struct clk_parent_data){
137955f2ea3SAbel Vesa 				.index = DT_BI_TCXO,
138955f2ea3SAbel Vesa 			},
139955f2ea3SAbel Vesa 			.num_parents = 1,
140955f2ea3SAbel Vesa 			.ops = &clk_alpha_pll_fixed_lucid_ole_ops,
141955f2ea3SAbel Vesa 		},
142955f2ea3SAbel Vesa 	},
143955f2ea3SAbel Vesa };
144955f2ea3SAbel Vesa 
145955f2ea3SAbel Vesa static const struct parent_map gcc_parent_map_0[] = {
146955f2ea3SAbel Vesa 	{ P_BI_TCXO, 0 },
147955f2ea3SAbel Vesa 	{ P_GCC_GPLL0_OUT_MAIN, 1 },
148955f2ea3SAbel Vesa 	{ P_GCC_GPLL0_OUT_EVEN, 6 },
149955f2ea3SAbel Vesa };
150955f2ea3SAbel Vesa 
151955f2ea3SAbel Vesa static const struct clk_parent_data gcc_parent_data_0[] = {
152955f2ea3SAbel Vesa 	{ .index = DT_BI_TCXO },
153955f2ea3SAbel Vesa 	{ .hw = &gcc_gpll0.clkr.hw },
154955f2ea3SAbel Vesa 	{ .hw = &gcc_gpll0_out_even.clkr.hw },
155955f2ea3SAbel Vesa };
156955f2ea3SAbel Vesa 
157955f2ea3SAbel Vesa static const struct parent_map gcc_parent_map_1[] = {
158955f2ea3SAbel Vesa 	{ P_BI_TCXO, 0 },
159955f2ea3SAbel Vesa 	{ P_GCC_GPLL0_OUT_MAIN, 1 },
160955f2ea3SAbel Vesa 	{ P_SLEEP_CLK, 5 },
161955f2ea3SAbel Vesa 	{ P_GCC_GPLL0_OUT_EVEN, 6 },
162955f2ea3SAbel Vesa };
163955f2ea3SAbel Vesa 
164955f2ea3SAbel Vesa static const struct clk_parent_data gcc_parent_data_1[] = {
165955f2ea3SAbel Vesa 	{ .index = DT_BI_TCXO },
166955f2ea3SAbel Vesa 	{ .hw = &gcc_gpll0.clkr.hw },
167955f2ea3SAbel Vesa 	{ .index = DT_SLEEP_CLK },
168955f2ea3SAbel Vesa 	{ .hw = &gcc_gpll0_out_even.clkr.hw },
169955f2ea3SAbel Vesa };
170955f2ea3SAbel Vesa 
171955f2ea3SAbel Vesa static const struct parent_map gcc_parent_map_2[] = {
172955f2ea3SAbel Vesa 	{ P_BI_TCXO, 0 },
173955f2ea3SAbel Vesa 	{ P_SLEEP_CLK, 5 },
174955f2ea3SAbel Vesa };
175955f2ea3SAbel Vesa 
176955f2ea3SAbel Vesa static const struct clk_parent_data gcc_parent_data_2[] = {
177955f2ea3SAbel Vesa 	{ .index = DT_BI_TCXO },
178955f2ea3SAbel Vesa 	{ .index = DT_SLEEP_CLK },
179955f2ea3SAbel Vesa };
180955f2ea3SAbel Vesa 
181955f2ea3SAbel Vesa static const struct parent_map gcc_parent_map_3[] = {
182955f2ea3SAbel Vesa 	{ P_BI_TCXO, 0 },
183955f2ea3SAbel Vesa 	{ P_GCC_GPLL0_OUT_MAIN, 1 },
184955f2ea3SAbel Vesa 	{ P_GCC_GPLL4_OUT_MAIN, 5 },
185955f2ea3SAbel Vesa 	{ P_GCC_GPLL0_OUT_EVEN, 6 },
186955f2ea3SAbel Vesa };
187955f2ea3SAbel Vesa 
188955f2ea3SAbel Vesa static const struct clk_parent_data gcc_parent_data_3[] = {
189955f2ea3SAbel Vesa 	{ .index = DT_BI_TCXO },
190955f2ea3SAbel Vesa 	{ .hw = &gcc_gpll0.clkr.hw },
191955f2ea3SAbel Vesa 	{ .hw = &gcc_gpll4.clkr.hw },
192955f2ea3SAbel Vesa 	{ .hw = &gcc_gpll0_out_even.clkr.hw },
193955f2ea3SAbel Vesa };
194955f2ea3SAbel Vesa 
195955f2ea3SAbel Vesa static const struct parent_map gcc_parent_map_4[] = {
196955f2ea3SAbel Vesa 	{ P_BI_TCXO, 0 },
197955f2ea3SAbel Vesa };
198955f2ea3SAbel Vesa 
199955f2ea3SAbel Vesa static const struct clk_parent_data gcc_parent_data_4[] = {
200955f2ea3SAbel Vesa 	{ .index = DT_BI_TCXO },
201955f2ea3SAbel Vesa };
202955f2ea3SAbel Vesa 
203955f2ea3SAbel Vesa static const struct parent_map gcc_parent_map_6[] = {
204955f2ea3SAbel Vesa 	{ P_PCIE_1_PHY_AUX_CLK, 0 },
205955f2ea3SAbel Vesa 	{ P_BI_TCXO, 2 },
206955f2ea3SAbel Vesa };
207955f2ea3SAbel Vesa 
208955f2ea3SAbel Vesa static const struct clk_parent_data gcc_parent_data_6[] = {
209955f2ea3SAbel Vesa 	{ .index = DT_PCIE_1_PHY_AUX },
210955f2ea3SAbel Vesa 	{ .index = DT_BI_TCXO },
211955f2ea3SAbel Vesa };
212955f2ea3SAbel Vesa 
213955f2ea3SAbel Vesa static const struct parent_map gcc_parent_map_8[] = {
214955f2ea3SAbel Vesa 	{ P_BI_TCXO, 0 },
215955f2ea3SAbel Vesa 	{ P_GCC_GPLL0_OUT_MAIN, 1 },
216955f2ea3SAbel Vesa 	{ P_GCC_GPLL7_OUT_MAIN, 2 },
217955f2ea3SAbel Vesa 	{ P_GCC_GPLL0_OUT_EVEN, 6 },
218955f2ea3SAbel Vesa };
219955f2ea3SAbel Vesa 
220955f2ea3SAbel Vesa static const struct clk_parent_data gcc_parent_data_8[] = {
221955f2ea3SAbel Vesa 	{ .index = DT_BI_TCXO },
222955f2ea3SAbel Vesa 	{ .hw = &gcc_gpll0.clkr.hw },
223955f2ea3SAbel Vesa 	{ .hw = &gcc_gpll7.clkr.hw },
224955f2ea3SAbel Vesa 	{ .hw = &gcc_gpll0_out_even.clkr.hw },
225955f2ea3SAbel Vesa };
226955f2ea3SAbel Vesa 
227955f2ea3SAbel Vesa static const struct parent_map gcc_parent_map_9[] = {
228955f2ea3SAbel Vesa 	{ P_BI_TCXO, 0 },
229955f2ea3SAbel Vesa 	{ P_GCC_GPLL0_OUT_MAIN, 1 },
230955f2ea3SAbel Vesa 	{ P_GCC_GPLL9_OUT_MAIN, 2 },
231955f2ea3SAbel Vesa 	{ P_GCC_GPLL4_OUT_MAIN, 5 },
232955f2ea3SAbel Vesa 	{ P_GCC_GPLL0_OUT_EVEN, 6 },
233955f2ea3SAbel Vesa };
234955f2ea3SAbel Vesa 
235955f2ea3SAbel Vesa static const struct clk_parent_data gcc_parent_data_9[] = {
236955f2ea3SAbel Vesa 	{ .index = DT_BI_TCXO },
237955f2ea3SAbel Vesa 	{ .hw = &gcc_gpll0.clkr.hw },
238955f2ea3SAbel Vesa 	{ .hw = &gcc_gpll9.clkr.hw },
239955f2ea3SAbel Vesa 	{ .hw = &gcc_gpll4.clkr.hw },
240955f2ea3SAbel Vesa 	{ .hw = &gcc_gpll0_out_even.clkr.hw },
241955f2ea3SAbel Vesa };
242955f2ea3SAbel Vesa 
243955f2ea3SAbel Vesa static const struct parent_map gcc_parent_map_10[] = {
244955f2ea3SAbel Vesa 	{ P_UFS_PHY_RX_SYMBOL_0_CLK, 0 },
245955f2ea3SAbel Vesa 	{ P_BI_TCXO, 2 },
246955f2ea3SAbel Vesa };
247955f2ea3SAbel Vesa 
248955f2ea3SAbel Vesa static const struct clk_parent_data gcc_parent_data_10[] = {
249955f2ea3SAbel Vesa 	{ .index = DT_UFS_PHY_RX_SYMBOL_0 },
250955f2ea3SAbel Vesa 	{ .index = DT_BI_TCXO },
251955f2ea3SAbel Vesa };
252955f2ea3SAbel Vesa 
253955f2ea3SAbel Vesa static const struct parent_map gcc_parent_map_11[] = {
254955f2ea3SAbel Vesa 	{ P_UFS_PHY_RX_SYMBOL_1_CLK, 0 },
255955f2ea3SAbel Vesa 	{ P_BI_TCXO, 2 },
256955f2ea3SAbel Vesa };
257955f2ea3SAbel Vesa 
258955f2ea3SAbel Vesa static const struct clk_parent_data gcc_parent_data_11[] = {
259955f2ea3SAbel Vesa 	{ .index = DT_UFS_PHY_RX_SYMBOL_1 },
260955f2ea3SAbel Vesa 	{ .index = DT_BI_TCXO },
261955f2ea3SAbel Vesa };
262955f2ea3SAbel Vesa 
263955f2ea3SAbel Vesa static const struct parent_map gcc_parent_map_12[] = {
264955f2ea3SAbel Vesa 	{ P_UFS_PHY_TX_SYMBOL_0_CLK, 0 },
265955f2ea3SAbel Vesa 	{ P_BI_TCXO, 2 },
266955f2ea3SAbel Vesa };
267955f2ea3SAbel Vesa 
268955f2ea3SAbel Vesa static const struct clk_parent_data gcc_parent_data_12[] = {
269955f2ea3SAbel Vesa 	{ .index = DT_UFS_PHY_TX_SYMBOL_0 },
270955f2ea3SAbel Vesa 	{ .index = DT_BI_TCXO },
271955f2ea3SAbel Vesa };
272955f2ea3SAbel Vesa 
273955f2ea3SAbel Vesa static const struct parent_map gcc_parent_map_13[] = {
274955f2ea3SAbel Vesa 	{ P_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK, 0 },
275955f2ea3SAbel Vesa 	{ P_BI_TCXO, 2 },
276955f2ea3SAbel Vesa };
277955f2ea3SAbel Vesa 
278955f2ea3SAbel Vesa static const struct clk_parent_data gcc_parent_data_13[] = {
279955f2ea3SAbel Vesa 	{ .index = DT_USB3_PHY_WRAPPER_GCC_USB30_PIPE },
280955f2ea3SAbel Vesa 	{ .index = DT_BI_TCXO },
281955f2ea3SAbel Vesa };
282955f2ea3SAbel Vesa 
283955f2ea3SAbel Vesa static struct clk_regmap_phy_mux gcc_pcie_0_pipe_clk_src = {
284955f2ea3SAbel Vesa 	.reg = 0x6b070,
285955f2ea3SAbel Vesa 	.clkr = {
286955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
287955f2ea3SAbel Vesa 			.name = "gcc_pcie_0_pipe_clk_src",
288955f2ea3SAbel Vesa 			.parent_data = &(const struct clk_parent_data){
289955f2ea3SAbel Vesa 				.index = DT_PCIE_0_PIPE,
290955f2ea3SAbel Vesa 			},
291955f2ea3SAbel Vesa 			.num_parents = 1,
292955f2ea3SAbel Vesa 			.ops = &clk_regmap_phy_mux_ops,
293955f2ea3SAbel Vesa 		},
294955f2ea3SAbel Vesa 	},
295955f2ea3SAbel Vesa };
296955f2ea3SAbel Vesa 
297955f2ea3SAbel Vesa static struct clk_regmap_mux gcc_pcie_1_phy_aux_clk_src = {
298955f2ea3SAbel Vesa 	.reg = 0x8d094,
299955f2ea3SAbel Vesa 	.shift = 0,
300955f2ea3SAbel Vesa 	.width = 2,
301955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_6,
302955f2ea3SAbel Vesa 	.clkr = {
303955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
304955f2ea3SAbel Vesa 			.name = "gcc_pcie_1_phy_aux_clk_src",
305955f2ea3SAbel Vesa 			.parent_data = gcc_parent_data_6,
306955f2ea3SAbel Vesa 			.num_parents = ARRAY_SIZE(gcc_parent_data_6),
307955f2ea3SAbel Vesa 			.ops = &clk_regmap_mux_closest_ops,
308955f2ea3SAbel Vesa 		},
309955f2ea3SAbel Vesa 	},
310955f2ea3SAbel Vesa };
311955f2ea3SAbel Vesa 
312955f2ea3SAbel Vesa static struct clk_regmap_phy_mux gcc_pcie_1_pipe_clk_src = {
313955f2ea3SAbel Vesa 	.reg = 0x8d078,
314955f2ea3SAbel Vesa 	.clkr = {
315955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
316955f2ea3SAbel Vesa 			.name = "gcc_pcie_1_pipe_clk_src",
317955f2ea3SAbel Vesa 			.parent_data = &(const struct clk_parent_data){
318955f2ea3SAbel Vesa 				.index = DT_PCIE_1_PIPE,
319955f2ea3SAbel Vesa 			},
320955f2ea3SAbel Vesa 			.num_parents = 1,
321955f2ea3SAbel Vesa 			.ops = &clk_regmap_phy_mux_ops,
322955f2ea3SAbel Vesa 		},
323955f2ea3SAbel Vesa 	},
324955f2ea3SAbel Vesa };
325955f2ea3SAbel Vesa 
326955f2ea3SAbel Vesa static struct clk_regmap_mux gcc_ufs_phy_rx_symbol_0_clk_src = {
327955f2ea3SAbel Vesa 	.reg = 0x77064,
328955f2ea3SAbel Vesa 	.shift = 0,
329955f2ea3SAbel Vesa 	.width = 2,
330955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_10,
331955f2ea3SAbel Vesa 	.clkr = {
332955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
333955f2ea3SAbel Vesa 			.name = "gcc_ufs_phy_rx_symbol_0_clk_src",
334955f2ea3SAbel Vesa 			.parent_data = gcc_parent_data_10,
335955f2ea3SAbel Vesa 			.num_parents = ARRAY_SIZE(gcc_parent_data_10),
336955f2ea3SAbel Vesa 			.ops = &clk_regmap_mux_closest_ops,
337955f2ea3SAbel Vesa 		},
338955f2ea3SAbel Vesa 	},
339955f2ea3SAbel Vesa };
340955f2ea3SAbel Vesa 
341955f2ea3SAbel Vesa static struct clk_regmap_mux gcc_ufs_phy_rx_symbol_1_clk_src = {
342955f2ea3SAbel Vesa 	.reg = 0x770e0,
343955f2ea3SAbel Vesa 	.shift = 0,
344955f2ea3SAbel Vesa 	.width = 2,
345955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_11,
346955f2ea3SAbel Vesa 	.clkr = {
347955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
348955f2ea3SAbel Vesa 			.name = "gcc_ufs_phy_rx_symbol_1_clk_src",
349955f2ea3SAbel Vesa 			.parent_data = gcc_parent_data_11,
350955f2ea3SAbel Vesa 			.num_parents = ARRAY_SIZE(gcc_parent_data_11),
351955f2ea3SAbel Vesa 			.ops = &clk_regmap_mux_closest_ops,
352955f2ea3SAbel Vesa 		},
353955f2ea3SAbel Vesa 	},
354955f2ea3SAbel Vesa };
355955f2ea3SAbel Vesa 
356955f2ea3SAbel Vesa static struct clk_regmap_mux gcc_ufs_phy_tx_symbol_0_clk_src = {
357955f2ea3SAbel Vesa 	.reg = 0x77054,
358955f2ea3SAbel Vesa 	.shift = 0,
359955f2ea3SAbel Vesa 	.width = 2,
360955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_12,
361955f2ea3SAbel Vesa 	.clkr = {
362955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
363955f2ea3SAbel Vesa 			.name = "gcc_ufs_phy_tx_symbol_0_clk_src",
364955f2ea3SAbel Vesa 			.parent_data = gcc_parent_data_12,
365955f2ea3SAbel Vesa 			.num_parents = ARRAY_SIZE(gcc_parent_data_12),
366955f2ea3SAbel Vesa 			.ops = &clk_regmap_mux_closest_ops,
367955f2ea3SAbel Vesa 		},
368955f2ea3SAbel Vesa 	},
369955f2ea3SAbel Vesa };
370955f2ea3SAbel Vesa 
371955f2ea3SAbel Vesa static struct clk_regmap_mux gcc_usb3_prim_phy_pipe_clk_src = {
372955f2ea3SAbel Vesa 	.reg = 0x3906c,
373955f2ea3SAbel Vesa 	.shift = 0,
374955f2ea3SAbel Vesa 	.width = 2,
375955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_13,
376955f2ea3SAbel Vesa 	.clkr = {
377955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
378955f2ea3SAbel Vesa 			.name = "gcc_usb3_prim_phy_pipe_clk_src",
379955f2ea3SAbel Vesa 			.parent_data = gcc_parent_data_13,
380955f2ea3SAbel Vesa 			.num_parents = ARRAY_SIZE(gcc_parent_data_13),
381955f2ea3SAbel Vesa 			.ops = &clk_regmap_mux_closest_ops,
382955f2ea3SAbel Vesa 		},
383955f2ea3SAbel Vesa 	},
384955f2ea3SAbel Vesa };
385955f2ea3SAbel Vesa 
386955f2ea3SAbel Vesa static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = {
387955f2ea3SAbel Vesa 	F(50000000, P_GCC_GPLL0_OUT_EVEN, 6, 0, 0),
388955f2ea3SAbel Vesa 	F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
389955f2ea3SAbel Vesa 	F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0),
390955f2ea3SAbel Vesa 	{ }
391955f2ea3SAbel Vesa };
392955f2ea3SAbel Vesa 
393955f2ea3SAbel Vesa static struct clk_rcg2 gcc_gp1_clk_src = {
394955f2ea3SAbel Vesa 	.cmd_rcgr = 0x64004,
395955f2ea3SAbel Vesa 	.mnd_width = 16,
396955f2ea3SAbel Vesa 	.hid_width = 5,
397955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_1,
398955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_gp1_clk_src,
399955f2ea3SAbel Vesa 	.clkr.hw.init = &(struct clk_init_data){
400955f2ea3SAbel Vesa 		.name = "gcc_gp1_clk_src",
401955f2ea3SAbel Vesa 		.parent_data = gcc_parent_data_1,
402955f2ea3SAbel Vesa 		.num_parents = ARRAY_SIZE(gcc_parent_data_1),
403955f2ea3SAbel Vesa 		.flags = CLK_SET_RATE_PARENT,
404053f3547SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
405955f2ea3SAbel Vesa 	},
406955f2ea3SAbel Vesa };
407955f2ea3SAbel Vesa 
408955f2ea3SAbel Vesa static struct clk_rcg2 gcc_gp2_clk_src = {
409955f2ea3SAbel Vesa 	.cmd_rcgr = 0x65004,
410955f2ea3SAbel Vesa 	.mnd_width = 16,
411955f2ea3SAbel Vesa 	.hid_width = 5,
412955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_1,
413955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_gp1_clk_src,
414955f2ea3SAbel Vesa 	.clkr.hw.init = &(struct clk_init_data){
415955f2ea3SAbel Vesa 		.name = "gcc_gp2_clk_src",
416955f2ea3SAbel Vesa 		.parent_data = gcc_parent_data_1,
417955f2ea3SAbel Vesa 		.num_parents = ARRAY_SIZE(gcc_parent_data_1),
418955f2ea3SAbel Vesa 		.flags = CLK_SET_RATE_PARENT,
419053f3547SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
420955f2ea3SAbel Vesa 	},
421955f2ea3SAbel Vesa };
422955f2ea3SAbel Vesa 
423955f2ea3SAbel Vesa static struct clk_rcg2 gcc_gp3_clk_src = {
424955f2ea3SAbel Vesa 	.cmd_rcgr = 0x66004,
425955f2ea3SAbel Vesa 	.mnd_width = 16,
426955f2ea3SAbel Vesa 	.hid_width = 5,
427955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_1,
428955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_gp1_clk_src,
429955f2ea3SAbel Vesa 	.clkr.hw.init = &(struct clk_init_data){
430955f2ea3SAbel Vesa 		.name = "gcc_gp3_clk_src",
431955f2ea3SAbel Vesa 		.parent_data = gcc_parent_data_1,
432955f2ea3SAbel Vesa 		.num_parents = ARRAY_SIZE(gcc_parent_data_1),
433955f2ea3SAbel Vesa 		.flags = CLK_SET_RATE_PARENT,
434053f3547SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
435955f2ea3SAbel Vesa 	},
436955f2ea3SAbel Vesa };
437955f2ea3SAbel Vesa 
438955f2ea3SAbel Vesa static const struct freq_tbl ftbl_gcc_pcie_0_aux_clk_src[] = {
439955f2ea3SAbel Vesa 	F(19200000, P_BI_TCXO, 1, 0, 0),
440955f2ea3SAbel Vesa 	{ }
441955f2ea3SAbel Vesa };
442955f2ea3SAbel Vesa 
443955f2ea3SAbel Vesa static struct clk_rcg2 gcc_pcie_0_aux_clk_src = {
444955f2ea3SAbel Vesa 	.cmd_rcgr = 0x6b074,
445955f2ea3SAbel Vesa 	.mnd_width = 16,
446955f2ea3SAbel Vesa 	.hid_width = 5,
447955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_2,
448955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
449955f2ea3SAbel Vesa 	.clkr.hw.init = &(struct clk_init_data){
450955f2ea3SAbel Vesa 		.name = "gcc_pcie_0_aux_clk_src",
451955f2ea3SAbel Vesa 		.parent_data = gcc_parent_data_2,
452955f2ea3SAbel Vesa 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
453955f2ea3SAbel Vesa 		.flags = CLK_SET_RATE_PARENT,
454053f3547SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
455955f2ea3SAbel Vesa 	},
456955f2ea3SAbel Vesa };
457955f2ea3SAbel Vesa 
458955f2ea3SAbel Vesa static const struct freq_tbl ftbl_gcc_pcie_0_phy_rchng_clk_src[] = {
459955f2ea3SAbel Vesa 	F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0),
460955f2ea3SAbel Vesa 	{ }
461955f2ea3SAbel Vesa };
462955f2ea3SAbel Vesa 
463955f2ea3SAbel Vesa static struct clk_rcg2 gcc_pcie_0_phy_rchng_clk_src = {
464955f2ea3SAbel Vesa 	.cmd_rcgr = 0x6b058,
465955f2ea3SAbel Vesa 	.mnd_width = 0,
466955f2ea3SAbel Vesa 	.hid_width = 5,
467955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_0,
468955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,
469955f2ea3SAbel Vesa 	.clkr.hw.init = &(struct clk_init_data){
470955f2ea3SAbel Vesa 		.name = "gcc_pcie_0_phy_rchng_clk_src",
471955f2ea3SAbel Vesa 		.parent_data = gcc_parent_data_0,
472955f2ea3SAbel Vesa 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
473955f2ea3SAbel Vesa 		.flags = CLK_SET_RATE_PARENT,
474053f3547SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
475955f2ea3SAbel Vesa 	},
476955f2ea3SAbel Vesa };
477955f2ea3SAbel Vesa 
478955f2ea3SAbel Vesa static struct clk_rcg2 gcc_pcie_1_aux_clk_src = {
479955f2ea3SAbel Vesa 	.cmd_rcgr = 0x8d07c,
480955f2ea3SAbel Vesa 	.mnd_width = 16,
481955f2ea3SAbel Vesa 	.hid_width = 5,
482955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_2,
483955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
484955f2ea3SAbel Vesa 	.clkr.hw.init = &(struct clk_init_data){
485955f2ea3SAbel Vesa 		.name = "gcc_pcie_1_aux_clk_src",
486955f2ea3SAbel Vesa 		.parent_data = gcc_parent_data_2,
487955f2ea3SAbel Vesa 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
488955f2ea3SAbel Vesa 		.flags = CLK_SET_RATE_PARENT,
489053f3547SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
490955f2ea3SAbel Vesa 	},
491955f2ea3SAbel Vesa };
492955f2ea3SAbel Vesa 
493955f2ea3SAbel Vesa static struct clk_rcg2 gcc_pcie_1_phy_rchng_clk_src = {
494955f2ea3SAbel Vesa 	.cmd_rcgr = 0x8d060,
495955f2ea3SAbel Vesa 	.mnd_width = 0,
496955f2ea3SAbel Vesa 	.hid_width = 5,
497955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_0,
498955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,
499955f2ea3SAbel Vesa 	.clkr.hw.init = &(struct clk_init_data){
500955f2ea3SAbel Vesa 		.name = "gcc_pcie_1_phy_rchng_clk_src",
501955f2ea3SAbel Vesa 		.parent_data = gcc_parent_data_0,
502955f2ea3SAbel Vesa 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
503955f2ea3SAbel Vesa 		.flags = CLK_SET_RATE_PARENT,
504053f3547SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
505955f2ea3SAbel Vesa 	},
506955f2ea3SAbel Vesa };
507955f2ea3SAbel Vesa 
508955f2ea3SAbel Vesa static const struct freq_tbl ftbl_gcc_pdm2_clk_src[] = {
509955f2ea3SAbel Vesa 	F(60000000, P_GCC_GPLL0_OUT_MAIN, 10, 0, 0),
510955f2ea3SAbel Vesa 	{ }
511955f2ea3SAbel Vesa };
512955f2ea3SAbel Vesa 
513955f2ea3SAbel Vesa static struct clk_rcg2 gcc_pdm2_clk_src = {
514955f2ea3SAbel Vesa 	.cmd_rcgr = 0x33010,
515955f2ea3SAbel Vesa 	.mnd_width = 0,
516955f2ea3SAbel Vesa 	.hid_width = 5,
517955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_0,
518955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_pdm2_clk_src,
519955f2ea3SAbel Vesa 	.clkr.hw.init = &(struct clk_init_data){
520955f2ea3SAbel Vesa 		.name = "gcc_pdm2_clk_src",
521955f2ea3SAbel Vesa 		.parent_data = gcc_parent_data_0,
522955f2ea3SAbel Vesa 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
523955f2ea3SAbel Vesa 		.flags = CLK_SET_RATE_PARENT,
524053f3547SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
525955f2ea3SAbel Vesa 	},
526955f2ea3SAbel Vesa };
527955f2ea3SAbel Vesa 
528955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_i2c_s0_clk_src = {
529955f2ea3SAbel Vesa 	.cmd_rcgr = 0x17008,
530955f2ea3SAbel Vesa 	.mnd_width = 0,
531955f2ea3SAbel Vesa 	.hid_width = 5,
532955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_0,
533955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
534955f2ea3SAbel Vesa 	.clkr.hw.init = &(struct clk_init_data){
535955f2ea3SAbel Vesa 		.name = "gcc_qupv3_i2c_s0_clk_src",
536955f2ea3SAbel Vesa 		.parent_data = gcc_parent_data_0,
537955f2ea3SAbel Vesa 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
538955f2ea3SAbel Vesa 		.flags = CLK_SET_RATE_PARENT,
539a5e871d2SStephen Boyd 		.ops = &clk_rcg2_ops,
540955f2ea3SAbel Vesa 	},
541955f2ea3SAbel Vesa };
542955f2ea3SAbel Vesa 
543955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_i2c_s1_clk_src = {
544955f2ea3SAbel Vesa 	.cmd_rcgr = 0x17024,
545955f2ea3SAbel Vesa 	.mnd_width = 0,
546955f2ea3SAbel Vesa 	.hid_width = 5,
547955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_0,
548955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
549955f2ea3SAbel Vesa 	.clkr.hw.init = &(struct clk_init_data){
550955f2ea3SAbel Vesa 		.name = "gcc_qupv3_i2c_s1_clk_src",
551955f2ea3SAbel Vesa 		.parent_data = gcc_parent_data_0,
552955f2ea3SAbel Vesa 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
553955f2ea3SAbel Vesa 		.flags = CLK_SET_RATE_PARENT,
554a5e871d2SStephen Boyd 		.ops = &clk_rcg2_ops,
555955f2ea3SAbel Vesa 	},
556955f2ea3SAbel Vesa };
557955f2ea3SAbel Vesa 
558955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_i2c_s2_clk_src = {
559955f2ea3SAbel Vesa 	.cmd_rcgr = 0x17040,
560955f2ea3SAbel Vesa 	.mnd_width = 0,
561955f2ea3SAbel Vesa 	.hid_width = 5,
562955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_0,
563955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
564955f2ea3SAbel Vesa 	.clkr.hw.init = &(struct clk_init_data){
565955f2ea3SAbel Vesa 		.name = "gcc_qupv3_i2c_s2_clk_src",
566955f2ea3SAbel Vesa 		.parent_data = gcc_parent_data_0,
567955f2ea3SAbel Vesa 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
568955f2ea3SAbel Vesa 		.flags = CLK_SET_RATE_PARENT,
569a5e871d2SStephen Boyd 		.ops = &clk_rcg2_ops,
570955f2ea3SAbel Vesa 	},
571955f2ea3SAbel Vesa };
572955f2ea3SAbel Vesa 
573955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_i2c_s3_clk_src = {
574955f2ea3SAbel Vesa 	.cmd_rcgr = 0x1705c,
575955f2ea3SAbel Vesa 	.mnd_width = 0,
576955f2ea3SAbel Vesa 	.hid_width = 5,
577955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_0,
578955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
579955f2ea3SAbel Vesa 	.clkr.hw.init = &(struct clk_init_data){
580955f2ea3SAbel Vesa 		.name = "gcc_qupv3_i2c_s3_clk_src",
581955f2ea3SAbel Vesa 		.parent_data = gcc_parent_data_0,
582955f2ea3SAbel Vesa 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
583955f2ea3SAbel Vesa 		.flags = CLK_SET_RATE_PARENT,
584a5e871d2SStephen Boyd 		.ops = &clk_rcg2_ops,
585955f2ea3SAbel Vesa 	},
586955f2ea3SAbel Vesa };
587955f2ea3SAbel Vesa 
588955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_i2c_s4_clk_src = {
589955f2ea3SAbel Vesa 	.cmd_rcgr = 0x17078,
590955f2ea3SAbel Vesa 	.mnd_width = 0,
591955f2ea3SAbel Vesa 	.hid_width = 5,
592955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_0,
593955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
594955f2ea3SAbel Vesa 	.clkr.hw.init = &(struct clk_init_data){
595955f2ea3SAbel Vesa 		.name = "gcc_qupv3_i2c_s4_clk_src",
596955f2ea3SAbel Vesa 		.parent_data = gcc_parent_data_0,
597955f2ea3SAbel Vesa 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
598955f2ea3SAbel Vesa 		.flags = CLK_SET_RATE_PARENT,
599a5e871d2SStephen Boyd 		.ops = &clk_rcg2_ops,
600955f2ea3SAbel Vesa 	},
601955f2ea3SAbel Vesa };
602955f2ea3SAbel Vesa 
603955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_i2c_s5_clk_src = {
604955f2ea3SAbel Vesa 	.cmd_rcgr = 0x17094,
605955f2ea3SAbel Vesa 	.mnd_width = 0,
606955f2ea3SAbel Vesa 	.hid_width = 5,
607955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_0,
608955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
609955f2ea3SAbel Vesa 	.clkr.hw.init = &(struct clk_init_data){
610955f2ea3SAbel Vesa 		.name = "gcc_qupv3_i2c_s5_clk_src",
611955f2ea3SAbel Vesa 		.parent_data = gcc_parent_data_0,
612955f2ea3SAbel Vesa 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
613955f2ea3SAbel Vesa 		.flags = CLK_SET_RATE_PARENT,
614a5e871d2SStephen Boyd 		.ops = &clk_rcg2_ops,
615955f2ea3SAbel Vesa 	},
616955f2ea3SAbel Vesa };
617955f2ea3SAbel Vesa 
618955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_i2c_s6_clk_src = {
619955f2ea3SAbel Vesa 	.cmd_rcgr = 0x170b0,
620955f2ea3SAbel Vesa 	.mnd_width = 0,
621955f2ea3SAbel Vesa 	.hid_width = 5,
622955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_0,
623955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
624955f2ea3SAbel Vesa 	.clkr.hw.init = &(struct clk_init_data){
625955f2ea3SAbel Vesa 		.name = "gcc_qupv3_i2c_s6_clk_src",
626955f2ea3SAbel Vesa 		.parent_data = gcc_parent_data_0,
627955f2ea3SAbel Vesa 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
628955f2ea3SAbel Vesa 		.flags = CLK_SET_RATE_PARENT,
629a5e871d2SStephen Boyd 		.ops = &clk_rcg2_ops,
630955f2ea3SAbel Vesa 	},
631955f2ea3SAbel Vesa };
632955f2ea3SAbel Vesa 
633955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_i2c_s7_clk_src = {
634955f2ea3SAbel Vesa 	.cmd_rcgr = 0x170cc,
635955f2ea3SAbel Vesa 	.mnd_width = 0,
636955f2ea3SAbel Vesa 	.hid_width = 5,
637955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_0,
638955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
639955f2ea3SAbel Vesa 	.clkr.hw.init = &(struct clk_init_data){
640955f2ea3SAbel Vesa 		.name = "gcc_qupv3_i2c_s7_clk_src",
641955f2ea3SAbel Vesa 		.parent_data = gcc_parent_data_0,
642955f2ea3SAbel Vesa 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
643955f2ea3SAbel Vesa 		.flags = CLK_SET_RATE_PARENT,
644a5e871d2SStephen Boyd 		.ops = &clk_rcg2_ops,
645955f2ea3SAbel Vesa 	},
646955f2ea3SAbel Vesa };
647955f2ea3SAbel Vesa 
648955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_i2c_s8_clk_src = {
649955f2ea3SAbel Vesa 	.cmd_rcgr = 0x170e8,
650955f2ea3SAbel Vesa 	.mnd_width = 0,
651955f2ea3SAbel Vesa 	.hid_width = 5,
652955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_0,
653955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
654955f2ea3SAbel Vesa 	.clkr.hw.init = &(struct clk_init_data){
655955f2ea3SAbel Vesa 		.name = "gcc_qupv3_i2c_s8_clk_src",
656955f2ea3SAbel Vesa 		.parent_data = gcc_parent_data_0,
657955f2ea3SAbel Vesa 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
658955f2ea3SAbel Vesa 		.flags = CLK_SET_RATE_PARENT,
659a5e871d2SStephen Boyd 		.ops = &clk_rcg2_ops,
660955f2ea3SAbel Vesa 	},
661955f2ea3SAbel Vesa };
662955f2ea3SAbel Vesa 
663955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_i2c_s9_clk_src = {
664955f2ea3SAbel Vesa 	.cmd_rcgr = 0x17104,
665955f2ea3SAbel Vesa 	.mnd_width = 0,
666955f2ea3SAbel Vesa 	.hid_width = 5,
667955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_0,
668955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
669955f2ea3SAbel Vesa 	.clkr.hw.init = &(struct clk_init_data){
670955f2ea3SAbel Vesa 		.name = "gcc_qupv3_i2c_s9_clk_src",
671955f2ea3SAbel Vesa 		.parent_data = gcc_parent_data_0,
672955f2ea3SAbel Vesa 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
673955f2ea3SAbel Vesa 		.flags = CLK_SET_RATE_PARENT,
674a5e871d2SStephen Boyd 		.ops = &clk_rcg2_ops,
675955f2ea3SAbel Vesa 	},
676955f2ea3SAbel Vesa };
677955f2ea3SAbel Vesa 
678955f2ea3SAbel Vesa static const struct freq_tbl ftbl_gcc_qupv3_wrap1_s0_clk_src[] = {
679955f2ea3SAbel Vesa 	F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),
680955f2ea3SAbel Vesa 	F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),
681955f2ea3SAbel Vesa 	F(19200000, P_BI_TCXO, 1, 0, 0),
682955f2ea3SAbel Vesa 	F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),
683955f2ea3SAbel Vesa 	F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),
684955f2ea3SAbel Vesa 	F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),
685955f2ea3SAbel Vesa 	F(51200000, P_GCC_GPLL0_OUT_EVEN, 1, 64, 375),
686955f2ea3SAbel Vesa 	F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),
687955f2ea3SAbel Vesa 	F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
688955f2ea3SAbel Vesa 	F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),
689955f2ea3SAbel Vesa 	F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),
690955f2ea3SAbel Vesa 	F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
691955f2ea3SAbel Vesa 	F(102400000, P_GCC_GPLL0_OUT_EVEN, 1, 128, 375),
692955f2ea3SAbel Vesa 	F(112000000, P_GCC_GPLL0_OUT_EVEN, 1, 28, 75),
693955f2ea3SAbel Vesa 	F(117964800, P_GCC_GPLL0_OUT_EVEN, 1, 6144, 15625),
694955f2ea3SAbel Vesa 	F(120000000, P_GCC_GPLL0_OUT_MAIN, 5, 0, 0),
695955f2ea3SAbel Vesa 	{ }
696955f2ea3SAbel Vesa };
697955f2ea3SAbel Vesa 
698955f2ea3SAbel Vesa static struct clk_init_data gcc_qupv3_wrap1_s0_clk_src_init = {
699955f2ea3SAbel Vesa 	.name = "gcc_qupv3_wrap1_s0_clk_src",
700955f2ea3SAbel Vesa 	.parent_data = gcc_parent_data_0,
701955f2ea3SAbel Vesa 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
702955f2ea3SAbel Vesa 	.flags = CLK_SET_RATE_PARENT,
703a5e871d2SStephen Boyd 	.ops = &clk_rcg2_ops,
704955f2ea3SAbel Vesa };
705955f2ea3SAbel Vesa 
706955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_wrap1_s0_clk_src = {
707955f2ea3SAbel Vesa 	.cmd_rcgr = 0x18010,
708955f2ea3SAbel Vesa 	.mnd_width = 16,
709955f2ea3SAbel Vesa 	.hid_width = 5,
710955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_0,
711955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,
712955f2ea3SAbel Vesa 	.clkr.hw.init = &gcc_qupv3_wrap1_s0_clk_src_init,
713955f2ea3SAbel Vesa };
714955f2ea3SAbel Vesa 
715955f2ea3SAbel Vesa static struct clk_init_data gcc_qupv3_wrap1_s1_clk_src_init = {
716955f2ea3SAbel Vesa 	.name = "gcc_qupv3_wrap1_s1_clk_src",
717955f2ea3SAbel Vesa 	.parent_data = gcc_parent_data_0,
718955f2ea3SAbel Vesa 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
719955f2ea3SAbel Vesa 	.flags = CLK_SET_RATE_PARENT,
720a5e871d2SStephen Boyd 	.ops = &clk_rcg2_ops,
721955f2ea3SAbel Vesa };
722955f2ea3SAbel Vesa 
723955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_wrap1_s1_clk_src = {
724955f2ea3SAbel Vesa 	.cmd_rcgr = 0x18148,
725955f2ea3SAbel Vesa 	.mnd_width = 16,
726955f2ea3SAbel Vesa 	.hid_width = 5,
727955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_0,
728955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,
729955f2ea3SAbel Vesa 	.clkr.hw.init = &gcc_qupv3_wrap1_s1_clk_src_init,
730955f2ea3SAbel Vesa };
731955f2ea3SAbel Vesa 
732955f2ea3SAbel Vesa static const struct freq_tbl ftbl_gcc_qupv3_wrap1_s2_clk_src[] = {
733955f2ea3SAbel Vesa 	F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),
734955f2ea3SAbel Vesa 	F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),
735955f2ea3SAbel Vesa 	F(19200000, P_BI_TCXO, 1, 0, 0),
736955f2ea3SAbel Vesa 	F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),
737955f2ea3SAbel Vesa 	F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),
738955f2ea3SAbel Vesa 	F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),
739955f2ea3SAbel Vesa 	F(51200000, P_GCC_GPLL0_OUT_EVEN, 1, 64, 375),
740955f2ea3SAbel Vesa 	F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),
741955f2ea3SAbel Vesa 	F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
742955f2ea3SAbel Vesa 	F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),
743955f2ea3SAbel Vesa 	F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),
744955f2ea3SAbel Vesa 	F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
745955f2ea3SAbel Vesa 	{ }
746955f2ea3SAbel Vesa };
747955f2ea3SAbel Vesa 
748955f2ea3SAbel Vesa static struct clk_init_data gcc_qupv3_wrap1_s2_clk_src_init = {
749955f2ea3SAbel Vesa 	.name = "gcc_qupv3_wrap1_s2_clk_src",
750955f2ea3SAbel Vesa 	.parent_data = gcc_parent_data_0,
751955f2ea3SAbel Vesa 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
752955f2ea3SAbel Vesa 	.flags = CLK_SET_RATE_PARENT,
753a5e871d2SStephen Boyd 	.ops = &clk_rcg2_ops,
754955f2ea3SAbel Vesa };
755955f2ea3SAbel Vesa 
756955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_wrap1_s2_clk_src = {
757955f2ea3SAbel Vesa 	.cmd_rcgr = 0x18280,
758955f2ea3SAbel Vesa 	.mnd_width = 16,
759955f2ea3SAbel Vesa 	.hid_width = 5,
760955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_0,
761955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s2_clk_src,
762955f2ea3SAbel Vesa 	.clkr.hw.init = &gcc_qupv3_wrap1_s2_clk_src_init,
763955f2ea3SAbel Vesa };
764955f2ea3SAbel Vesa 
765955f2ea3SAbel Vesa static struct clk_init_data gcc_qupv3_wrap1_s3_clk_src_init = {
766955f2ea3SAbel Vesa 	.name = "gcc_qupv3_wrap1_s3_clk_src",
767955f2ea3SAbel Vesa 	.parent_data = gcc_parent_data_0,
768955f2ea3SAbel Vesa 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
769955f2ea3SAbel Vesa 	.flags = CLK_SET_RATE_PARENT,
770a5e871d2SStephen Boyd 	.ops = &clk_rcg2_ops,
771955f2ea3SAbel Vesa };
772955f2ea3SAbel Vesa 
773955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_wrap1_s3_clk_src = {
774955f2ea3SAbel Vesa 	.cmd_rcgr = 0x183b8,
775955f2ea3SAbel Vesa 	.mnd_width = 16,
776955f2ea3SAbel Vesa 	.hid_width = 5,
777955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_0,
778955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s2_clk_src,
779955f2ea3SAbel Vesa 	.clkr.hw.init = &gcc_qupv3_wrap1_s3_clk_src_init,
780955f2ea3SAbel Vesa };
781955f2ea3SAbel Vesa 
782955f2ea3SAbel Vesa static struct clk_init_data gcc_qupv3_wrap1_s4_clk_src_init = {
783955f2ea3SAbel Vesa 	.name = "gcc_qupv3_wrap1_s4_clk_src",
784955f2ea3SAbel Vesa 	.parent_data = gcc_parent_data_0,
785955f2ea3SAbel Vesa 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
786955f2ea3SAbel Vesa 	.flags = CLK_SET_RATE_PARENT,
787a5e871d2SStephen Boyd 	.ops = &clk_rcg2_ops,
788955f2ea3SAbel Vesa };
789955f2ea3SAbel Vesa 
790955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_wrap1_s4_clk_src = {
791955f2ea3SAbel Vesa 	.cmd_rcgr = 0x184f0,
792955f2ea3SAbel Vesa 	.mnd_width = 16,
793955f2ea3SAbel Vesa 	.hid_width = 5,
794955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_0,
795955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s2_clk_src,
796955f2ea3SAbel Vesa 	.clkr.hw.init = &gcc_qupv3_wrap1_s4_clk_src_init,
797955f2ea3SAbel Vesa };
798955f2ea3SAbel Vesa 
799955f2ea3SAbel Vesa static struct clk_init_data gcc_qupv3_wrap1_s5_clk_src_init = {
800955f2ea3SAbel Vesa 	.name = "gcc_qupv3_wrap1_s5_clk_src",
801955f2ea3SAbel Vesa 	.parent_data = gcc_parent_data_0,
802955f2ea3SAbel Vesa 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
803955f2ea3SAbel Vesa 	.flags = CLK_SET_RATE_PARENT,
804a5e871d2SStephen Boyd 	.ops = &clk_rcg2_ops,
805955f2ea3SAbel Vesa };
806955f2ea3SAbel Vesa 
807955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_wrap1_s5_clk_src = {
808955f2ea3SAbel Vesa 	.cmd_rcgr = 0x18628,
809955f2ea3SAbel Vesa 	.mnd_width = 16,
810955f2ea3SAbel Vesa 	.hid_width = 5,
811955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_0,
812955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s2_clk_src,
813955f2ea3SAbel Vesa 	.clkr.hw.init = &gcc_qupv3_wrap1_s5_clk_src_init,
814955f2ea3SAbel Vesa };
815955f2ea3SAbel Vesa 
816955f2ea3SAbel Vesa static struct clk_init_data gcc_qupv3_wrap1_s6_clk_src_init = {
817955f2ea3SAbel Vesa 	.name = "gcc_qupv3_wrap1_s6_clk_src",
818955f2ea3SAbel Vesa 	.parent_data = gcc_parent_data_0,
819955f2ea3SAbel Vesa 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
820955f2ea3SAbel Vesa 	.flags = CLK_SET_RATE_PARENT,
821a5e871d2SStephen Boyd 	.ops = &clk_rcg2_ops,
822955f2ea3SAbel Vesa };
823955f2ea3SAbel Vesa 
824955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_wrap1_s6_clk_src = {
825955f2ea3SAbel Vesa 	.cmd_rcgr = 0x18760,
826955f2ea3SAbel Vesa 	.mnd_width = 16,
827955f2ea3SAbel Vesa 	.hid_width = 5,
828955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_0,
829955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s2_clk_src,
830955f2ea3SAbel Vesa 	.clkr.hw.init = &gcc_qupv3_wrap1_s6_clk_src_init,
831955f2ea3SAbel Vesa };
832955f2ea3SAbel Vesa 
833955f2ea3SAbel Vesa static struct clk_init_data gcc_qupv3_wrap1_s7_clk_src_init = {
834955f2ea3SAbel Vesa 	.name = "gcc_qupv3_wrap1_s7_clk_src",
835955f2ea3SAbel Vesa 	.parent_data = gcc_parent_data_0,
836955f2ea3SAbel Vesa 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
837955f2ea3SAbel Vesa 	.flags = CLK_SET_RATE_PARENT,
838a5e871d2SStephen Boyd 	.ops = &clk_rcg2_ops,
839955f2ea3SAbel Vesa };
840955f2ea3SAbel Vesa 
841955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_wrap1_s7_clk_src = {
842955f2ea3SAbel Vesa 	.cmd_rcgr = 0x18898,
843955f2ea3SAbel Vesa 	.mnd_width = 16,
844955f2ea3SAbel Vesa 	.hid_width = 5,
845955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_0,
846955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s2_clk_src,
847955f2ea3SAbel Vesa 	.clkr.hw.init = &gcc_qupv3_wrap1_s7_clk_src_init,
848955f2ea3SAbel Vesa };
849955f2ea3SAbel Vesa 
850955f2ea3SAbel Vesa static struct clk_init_data gcc_qupv3_wrap2_s0_clk_src_init = {
851955f2ea3SAbel Vesa 	.name = "gcc_qupv3_wrap2_s0_clk_src",
852955f2ea3SAbel Vesa 	.parent_data = gcc_parent_data_0,
853955f2ea3SAbel Vesa 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
854955f2ea3SAbel Vesa 	.flags = CLK_SET_RATE_PARENT,
855a5e871d2SStephen Boyd 	.ops = &clk_rcg2_ops,
856955f2ea3SAbel Vesa };
857955f2ea3SAbel Vesa 
858955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_wrap2_s0_clk_src = {
859955f2ea3SAbel Vesa 	.cmd_rcgr = 0x1e010,
860955f2ea3SAbel Vesa 	.mnd_width = 16,
861955f2ea3SAbel Vesa 	.hid_width = 5,
862955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_0,
863955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,
864955f2ea3SAbel Vesa 	.clkr.hw.init = &gcc_qupv3_wrap2_s0_clk_src_init,
865955f2ea3SAbel Vesa };
866955f2ea3SAbel Vesa 
867955f2ea3SAbel Vesa static struct clk_init_data gcc_qupv3_wrap2_s1_clk_src_init = {
868955f2ea3SAbel Vesa 	.name = "gcc_qupv3_wrap2_s1_clk_src",
869955f2ea3SAbel Vesa 	.parent_data = gcc_parent_data_0,
870955f2ea3SAbel Vesa 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
871955f2ea3SAbel Vesa 	.flags = CLK_SET_RATE_PARENT,
872a5e871d2SStephen Boyd 	.ops = &clk_rcg2_ops,
873955f2ea3SAbel Vesa };
874955f2ea3SAbel Vesa 
875955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_wrap2_s1_clk_src = {
876955f2ea3SAbel Vesa 	.cmd_rcgr = 0x1e148,
877955f2ea3SAbel Vesa 	.mnd_width = 16,
878955f2ea3SAbel Vesa 	.hid_width = 5,
879955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_0,
880955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,
881955f2ea3SAbel Vesa 	.clkr.hw.init = &gcc_qupv3_wrap2_s1_clk_src_init,
882955f2ea3SAbel Vesa };
883955f2ea3SAbel Vesa 
884955f2ea3SAbel Vesa static struct clk_init_data gcc_qupv3_wrap2_s2_clk_src_init = {
885955f2ea3SAbel Vesa 	.name = "gcc_qupv3_wrap2_s2_clk_src",
886955f2ea3SAbel Vesa 	.parent_data = gcc_parent_data_0,
887955f2ea3SAbel Vesa 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
888955f2ea3SAbel Vesa 	.flags = CLK_SET_RATE_PARENT,
889a5e871d2SStephen Boyd 	.ops = &clk_rcg2_ops,
890955f2ea3SAbel Vesa };
891955f2ea3SAbel Vesa 
892955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_wrap2_s2_clk_src = {
893955f2ea3SAbel Vesa 	.cmd_rcgr = 0x1e280,
894955f2ea3SAbel Vesa 	.mnd_width = 16,
895955f2ea3SAbel Vesa 	.hid_width = 5,
896955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_0,
897955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s2_clk_src,
898955f2ea3SAbel Vesa 	.clkr.hw.init = &gcc_qupv3_wrap2_s2_clk_src_init,
899955f2ea3SAbel Vesa };
900955f2ea3SAbel Vesa 
901955f2ea3SAbel Vesa static struct clk_init_data gcc_qupv3_wrap2_s3_clk_src_init = {
902955f2ea3SAbel Vesa 	.name = "gcc_qupv3_wrap2_s3_clk_src",
903955f2ea3SAbel Vesa 	.parent_data = gcc_parent_data_0,
904955f2ea3SAbel Vesa 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
905955f2ea3SAbel Vesa 	.flags = CLK_SET_RATE_PARENT,
906a5e871d2SStephen Boyd 	.ops = &clk_rcg2_ops,
907955f2ea3SAbel Vesa };
908955f2ea3SAbel Vesa 
909955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_wrap2_s3_clk_src = {
910955f2ea3SAbel Vesa 	.cmd_rcgr = 0x1e3b8,
911955f2ea3SAbel Vesa 	.mnd_width = 16,
912955f2ea3SAbel Vesa 	.hid_width = 5,
913955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_0,
914955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s2_clk_src,
915955f2ea3SAbel Vesa 	.clkr.hw.init = &gcc_qupv3_wrap2_s3_clk_src_init,
916955f2ea3SAbel Vesa };
917955f2ea3SAbel Vesa 
918955f2ea3SAbel Vesa static struct clk_init_data gcc_qupv3_wrap2_s4_clk_src_init = {
919955f2ea3SAbel Vesa 	.name = "gcc_qupv3_wrap2_s4_clk_src",
920955f2ea3SAbel Vesa 	.parent_data = gcc_parent_data_0,
921955f2ea3SAbel Vesa 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
922955f2ea3SAbel Vesa 	.flags = CLK_SET_RATE_PARENT,
923a5e871d2SStephen Boyd 	.ops = &clk_rcg2_ops,
924955f2ea3SAbel Vesa };
925955f2ea3SAbel Vesa 
926955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_wrap2_s4_clk_src = {
927955f2ea3SAbel Vesa 	.cmd_rcgr = 0x1e4f0,
928955f2ea3SAbel Vesa 	.mnd_width = 16,
929955f2ea3SAbel Vesa 	.hid_width = 5,
930955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_0,
931955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s2_clk_src,
932955f2ea3SAbel Vesa 	.clkr.hw.init = &gcc_qupv3_wrap2_s4_clk_src_init,
933955f2ea3SAbel Vesa };
934955f2ea3SAbel Vesa 
935955f2ea3SAbel Vesa static struct clk_init_data gcc_qupv3_wrap2_s5_clk_src_init = {
936955f2ea3SAbel Vesa 	.name = "gcc_qupv3_wrap2_s5_clk_src",
937955f2ea3SAbel Vesa 	.parent_data = gcc_parent_data_0,
938955f2ea3SAbel Vesa 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
939955f2ea3SAbel Vesa 	.flags = CLK_SET_RATE_PARENT,
940a5e871d2SStephen Boyd 	.ops = &clk_rcg2_ops,
941955f2ea3SAbel Vesa };
942955f2ea3SAbel Vesa 
943955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_wrap2_s5_clk_src = {
944955f2ea3SAbel Vesa 	.cmd_rcgr = 0x1e628,
945955f2ea3SAbel Vesa 	.mnd_width = 16,
946955f2ea3SAbel Vesa 	.hid_width = 5,
947955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_0,
948955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s2_clk_src,
949955f2ea3SAbel Vesa 	.clkr.hw.init = &gcc_qupv3_wrap2_s5_clk_src_init,
950955f2ea3SAbel Vesa };
951955f2ea3SAbel Vesa 
952955f2ea3SAbel Vesa static const struct freq_tbl ftbl_gcc_qupv3_wrap2_s6_clk_src[] = {
953955f2ea3SAbel Vesa 	F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),
954955f2ea3SAbel Vesa 	F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),
955955f2ea3SAbel Vesa 	F(19200000, P_BI_TCXO, 1, 0, 0),
956955f2ea3SAbel Vesa 	F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),
957955f2ea3SAbel Vesa 	F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),
958955f2ea3SAbel Vesa 	F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),
959955f2ea3SAbel Vesa 	F(51200000, P_GCC_GPLL0_OUT_EVEN, 1, 64, 375),
960955f2ea3SAbel Vesa 	F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),
961955f2ea3SAbel Vesa 	F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
962955f2ea3SAbel Vesa 	F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),
963955f2ea3SAbel Vesa 	F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),
964955f2ea3SAbel Vesa 	F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
965955f2ea3SAbel Vesa 	F(102400000, P_GCC_GPLL0_OUT_EVEN, 1, 128, 375),
966955f2ea3SAbel Vesa 	F(112000000, P_GCC_GPLL0_OUT_EVEN, 1, 28, 75),
967955f2ea3SAbel Vesa 	F(117964800, P_GCC_GPLL0_OUT_EVEN, 1, 6144, 15625),
968955f2ea3SAbel Vesa 	F(120000000, P_GCC_GPLL0_OUT_MAIN, 5, 0, 0),
969955f2ea3SAbel Vesa 	F(125000000, P_GCC_GPLL0_OUT_MAIN, 1, 5, 24),
970955f2ea3SAbel Vesa 	{ }
971955f2ea3SAbel Vesa };
972955f2ea3SAbel Vesa 
973955f2ea3SAbel Vesa static struct clk_init_data gcc_qupv3_wrap2_s6_clk_src_init = {
974955f2ea3SAbel Vesa 	.name = "gcc_qupv3_wrap2_s6_clk_src",
975955f2ea3SAbel Vesa 	.parent_data = gcc_parent_data_8,
976955f2ea3SAbel Vesa 	.num_parents = ARRAY_SIZE(gcc_parent_data_8),
977955f2ea3SAbel Vesa 	.flags = CLK_SET_RATE_PARENT,
978a5e871d2SStephen Boyd 	.ops = &clk_rcg2_ops,
979955f2ea3SAbel Vesa };
980955f2ea3SAbel Vesa 
981955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_wrap2_s6_clk_src = {
982955f2ea3SAbel Vesa 	.cmd_rcgr = 0x1e760,
983955f2ea3SAbel Vesa 	.mnd_width = 16,
984955f2ea3SAbel Vesa 	.hid_width = 5,
985955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_8,
986955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_qupv3_wrap2_s6_clk_src,
987955f2ea3SAbel Vesa 	.clkr.hw.init = &gcc_qupv3_wrap2_s6_clk_src_init,
988955f2ea3SAbel Vesa };
989955f2ea3SAbel Vesa 
990955f2ea3SAbel Vesa static struct clk_init_data gcc_qupv3_wrap2_s7_clk_src_init = {
991955f2ea3SAbel Vesa 	.name = "gcc_qupv3_wrap2_s7_clk_src",
992955f2ea3SAbel Vesa 	.parent_data = gcc_parent_data_0,
993955f2ea3SAbel Vesa 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
994955f2ea3SAbel Vesa 	.flags = CLK_SET_RATE_PARENT,
995a5e871d2SStephen Boyd 	.ops = &clk_rcg2_ops,
996955f2ea3SAbel Vesa };
997955f2ea3SAbel Vesa 
998955f2ea3SAbel Vesa static struct clk_rcg2 gcc_qupv3_wrap2_s7_clk_src = {
999955f2ea3SAbel Vesa 	.cmd_rcgr = 0x1e898,
1000955f2ea3SAbel Vesa 	.mnd_width = 16,
1001955f2ea3SAbel Vesa 	.hid_width = 5,
1002955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_0,
1003955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s2_clk_src,
1004955f2ea3SAbel Vesa 	.clkr.hw.init = &gcc_qupv3_wrap2_s7_clk_src_init,
1005955f2ea3SAbel Vesa };
1006955f2ea3SAbel Vesa 
1007955f2ea3SAbel Vesa static const struct freq_tbl ftbl_gcc_sdcc2_apps_clk_src[] = {
1008955f2ea3SAbel Vesa 	F(400000, P_BI_TCXO, 12, 1, 4),
1009955f2ea3SAbel Vesa 	F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),
1010955f2ea3SAbel Vesa 	F(37500000, P_GCC_GPLL0_OUT_EVEN, 8, 0, 0),
1011955f2ea3SAbel Vesa 	F(50000000, P_GCC_GPLL0_OUT_EVEN, 6, 0, 0),
1012955f2ea3SAbel Vesa 	F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0),
1013955f2ea3SAbel Vesa 	F(202000000, P_GCC_GPLL9_OUT_MAIN, 4, 0, 0),
1014955f2ea3SAbel Vesa 	{ }
1015955f2ea3SAbel Vesa };
1016955f2ea3SAbel Vesa 
1017955f2ea3SAbel Vesa static struct clk_rcg2 gcc_sdcc2_apps_clk_src = {
1018955f2ea3SAbel Vesa 	.cmd_rcgr = 0x14018,
1019955f2ea3SAbel Vesa 	.mnd_width = 8,
1020955f2ea3SAbel Vesa 	.hid_width = 5,
1021955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_9,
1022955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_sdcc2_apps_clk_src,
1023955f2ea3SAbel Vesa 	.clkr.hw.init = &(struct clk_init_data){
1024955f2ea3SAbel Vesa 		.name = "gcc_sdcc2_apps_clk_src",
1025955f2ea3SAbel Vesa 		.parent_data = gcc_parent_data_9,
1026955f2ea3SAbel Vesa 		.num_parents = ARRAY_SIZE(gcc_parent_data_9),
1027955f2ea3SAbel Vesa 		.flags = CLK_SET_RATE_PARENT,
1028053f3547SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1029955f2ea3SAbel Vesa 	},
1030955f2ea3SAbel Vesa };
1031955f2ea3SAbel Vesa 
1032955f2ea3SAbel Vesa static const struct freq_tbl ftbl_gcc_sdcc4_apps_clk_src[] = {
1033955f2ea3SAbel Vesa 	F(400000, P_BI_TCXO, 12, 1, 4),
1034955f2ea3SAbel Vesa 	F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),
1035955f2ea3SAbel Vesa 	F(37500000, P_GCC_GPLL0_OUT_EVEN, 8, 0, 0),
1036955f2ea3SAbel Vesa 	F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
1037955f2ea3SAbel Vesa 	{ }
1038955f2ea3SAbel Vesa };
1039955f2ea3SAbel Vesa 
1040955f2ea3SAbel Vesa static struct clk_rcg2 gcc_sdcc4_apps_clk_src = {
1041955f2ea3SAbel Vesa 	.cmd_rcgr = 0x16018,
1042955f2ea3SAbel Vesa 	.mnd_width = 8,
1043955f2ea3SAbel Vesa 	.hid_width = 5,
1044955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_0,
1045955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_sdcc4_apps_clk_src,
1046955f2ea3SAbel Vesa 	.clkr.hw.init = &(struct clk_init_data){
1047955f2ea3SAbel Vesa 		.name = "gcc_sdcc4_apps_clk_src",
1048955f2ea3SAbel Vesa 		.parent_data = gcc_parent_data_0,
1049955f2ea3SAbel Vesa 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1050955f2ea3SAbel Vesa 		.flags = CLK_SET_RATE_PARENT,
1051053f3547SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1052955f2ea3SAbel Vesa 	},
1053955f2ea3SAbel Vesa };
1054955f2ea3SAbel Vesa 
1055955f2ea3SAbel Vesa static const struct freq_tbl ftbl_gcc_ufs_phy_axi_clk_src[] = {
1056955f2ea3SAbel Vesa 	F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),
1057955f2ea3SAbel Vesa 	F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
1058955f2ea3SAbel Vesa 	F(150000000, P_GCC_GPLL0_OUT_MAIN, 4, 0, 0),
1059955f2ea3SAbel Vesa 	F(300000000, P_GCC_GPLL0_OUT_MAIN, 2, 0, 0),
1060955f2ea3SAbel Vesa 	{ }
1061955f2ea3SAbel Vesa };
1062955f2ea3SAbel Vesa 
1063955f2ea3SAbel Vesa static struct clk_rcg2 gcc_ufs_phy_axi_clk_src = {
1064955f2ea3SAbel Vesa 	.cmd_rcgr = 0x77030,
1065955f2ea3SAbel Vesa 	.mnd_width = 8,
1066955f2ea3SAbel Vesa 	.hid_width = 5,
1067955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_0,
1068955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_ufs_phy_axi_clk_src,
1069955f2ea3SAbel Vesa 	.clkr.hw.init = &(struct clk_init_data){
1070955f2ea3SAbel Vesa 		.name = "gcc_ufs_phy_axi_clk_src",
1071955f2ea3SAbel Vesa 		.parent_data = gcc_parent_data_0,
1072955f2ea3SAbel Vesa 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1073955f2ea3SAbel Vesa 		.flags = CLK_SET_RATE_PARENT,
1074053f3547SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1075955f2ea3SAbel Vesa 	},
1076955f2ea3SAbel Vesa };
1077955f2ea3SAbel Vesa 
1078955f2ea3SAbel Vesa static const struct freq_tbl ftbl_gcc_ufs_phy_ice_core_clk_src[] = {
1079955f2ea3SAbel Vesa 	F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0),
1080955f2ea3SAbel Vesa 	F(201500000, P_GCC_GPLL4_OUT_MAIN, 4, 0, 0),
1081955f2ea3SAbel Vesa 	F(403000000, P_GCC_GPLL4_OUT_MAIN, 2, 0, 0),
1082955f2ea3SAbel Vesa 	{ }
1083955f2ea3SAbel Vesa };
1084955f2ea3SAbel Vesa 
1085955f2ea3SAbel Vesa static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src = {
1086955f2ea3SAbel Vesa 	.cmd_rcgr = 0x77080,
1087955f2ea3SAbel Vesa 	.mnd_width = 0,
1088955f2ea3SAbel Vesa 	.hid_width = 5,
1089955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_3,
1090955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_ufs_phy_ice_core_clk_src,
1091955f2ea3SAbel Vesa 	.clkr.hw.init = &(struct clk_init_data){
1092955f2ea3SAbel Vesa 		.name = "gcc_ufs_phy_ice_core_clk_src",
1093955f2ea3SAbel Vesa 		.parent_data = gcc_parent_data_3,
1094955f2ea3SAbel Vesa 		.num_parents = ARRAY_SIZE(gcc_parent_data_3),
1095955f2ea3SAbel Vesa 		.flags = CLK_SET_RATE_PARENT,
1096053f3547SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1097955f2ea3SAbel Vesa 	},
1098955f2ea3SAbel Vesa };
1099955f2ea3SAbel Vesa 
1100955f2ea3SAbel Vesa static const struct freq_tbl ftbl_gcc_ufs_phy_phy_aux_clk_src[] = {
1101955f2ea3SAbel Vesa 	F(9600000, P_BI_TCXO, 2, 0, 0),
1102955f2ea3SAbel Vesa 	F(19200000, P_BI_TCXO, 1, 0, 0),
1103955f2ea3SAbel Vesa 	{ }
1104955f2ea3SAbel Vesa };
1105955f2ea3SAbel Vesa 
1106955f2ea3SAbel Vesa static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src = {
1107955f2ea3SAbel Vesa 	.cmd_rcgr = 0x770b4,
1108955f2ea3SAbel Vesa 	.mnd_width = 0,
1109955f2ea3SAbel Vesa 	.hid_width = 5,
1110955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_4,
1111955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_ufs_phy_phy_aux_clk_src,
1112955f2ea3SAbel Vesa 	.clkr.hw.init = &(struct clk_init_data){
1113955f2ea3SAbel Vesa 		.name = "gcc_ufs_phy_phy_aux_clk_src",
1114955f2ea3SAbel Vesa 		.parent_data = gcc_parent_data_4,
1115955f2ea3SAbel Vesa 		.num_parents = ARRAY_SIZE(gcc_parent_data_4),
1116955f2ea3SAbel Vesa 		.flags = CLK_SET_RATE_PARENT,
1117053f3547SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1118955f2ea3SAbel Vesa 	},
1119955f2ea3SAbel Vesa };
1120955f2ea3SAbel Vesa 
1121955f2ea3SAbel Vesa static const struct freq_tbl ftbl_gcc_ufs_phy_unipro_core_clk_src[] = {
1122955f2ea3SAbel Vesa 	F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
1123955f2ea3SAbel Vesa 	F(150000000, P_GCC_GPLL0_OUT_MAIN, 4, 0, 0),
1124955f2ea3SAbel Vesa 	F(300000000, P_GCC_GPLL0_OUT_MAIN, 2, 0, 0),
1125955f2ea3SAbel Vesa 	{ }
1126955f2ea3SAbel Vesa };
1127955f2ea3SAbel Vesa 
1128955f2ea3SAbel Vesa static struct clk_rcg2 gcc_ufs_phy_unipro_core_clk_src = {
1129955f2ea3SAbel Vesa 	.cmd_rcgr = 0x77098,
1130955f2ea3SAbel Vesa 	.mnd_width = 0,
1131955f2ea3SAbel Vesa 	.hid_width = 5,
1132955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_0,
1133955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_ufs_phy_unipro_core_clk_src,
1134955f2ea3SAbel Vesa 	.clkr.hw.init = &(struct clk_init_data){
1135955f2ea3SAbel Vesa 		.name = "gcc_ufs_phy_unipro_core_clk_src",
1136955f2ea3SAbel Vesa 		.parent_data = gcc_parent_data_0,
1137955f2ea3SAbel Vesa 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1138955f2ea3SAbel Vesa 		.flags = CLK_SET_RATE_PARENT,
1139053f3547SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1140955f2ea3SAbel Vesa 	},
1141955f2ea3SAbel Vesa };
1142955f2ea3SAbel Vesa 
1143955f2ea3SAbel Vesa static const struct freq_tbl ftbl_gcc_usb30_prim_master_clk_src[] = {
1144955f2ea3SAbel Vesa 	F(66666667, P_GCC_GPLL0_OUT_EVEN, 4.5, 0, 0),
1145955f2ea3SAbel Vesa 	F(133333333, P_GCC_GPLL0_OUT_MAIN, 4.5, 0, 0),
1146955f2ea3SAbel Vesa 	F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0),
1147955f2ea3SAbel Vesa 	F(240000000, P_GCC_GPLL0_OUT_MAIN, 2.5, 0, 0),
1148955f2ea3SAbel Vesa 	{ }
1149955f2ea3SAbel Vesa };
1150955f2ea3SAbel Vesa 
1151955f2ea3SAbel Vesa static struct clk_rcg2 gcc_usb30_prim_master_clk_src = {
1152955f2ea3SAbel Vesa 	.cmd_rcgr = 0x3902c,
1153955f2ea3SAbel Vesa 	.mnd_width = 8,
1154955f2ea3SAbel Vesa 	.hid_width = 5,
1155955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_0,
1156955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_usb30_prim_master_clk_src,
1157955f2ea3SAbel Vesa 	.clkr.hw.init = &(struct clk_init_data){
1158955f2ea3SAbel Vesa 		.name = "gcc_usb30_prim_master_clk_src",
1159955f2ea3SAbel Vesa 		.parent_data = gcc_parent_data_0,
1160955f2ea3SAbel Vesa 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1161955f2ea3SAbel Vesa 		.flags = CLK_SET_RATE_PARENT,
1162*7c391eafSStephen Boyd 		.ops = &clk_rcg2_shared_no_init_park_ops,
1163955f2ea3SAbel Vesa 	},
1164955f2ea3SAbel Vesa };
1165955f2ea3SAbel Vesa 
1166955f2ea3SAbel Vesa static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src = {
1167955f2ea3SAbel Vesa 	.cmd_rcgr = 0x39044,
1168955f2ea3SAbel Vesa 	.mnd_width = 0,
1169955f2ea3SAbel Vesa 	.hid_width = 5,
1170955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_0,
1171955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
1172955f2ea3SAbel Vesa 	.clkr.hw.init = &(struct clk_init_data){
1173955f2ea3SAbel Vesa 		.name = "gcc_usb30_prim_mock_utmi_clk_src",
1174955f2ea3SAbel Vesa 		.parent_data = gcc_parent_data_0,
1175955f2ea3SAbel Vesa 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1176955f2ea3SAbel Vesa 		.flags = CLK_SET_RATE_PARENT,
1177053f3547SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1178955f2ea3SAbel Vesa 	},
1179955f2ea3SAbel Vesa };
1180955f2ea3SAbel Vesa 
1181955f2ea3SAbel Vesa static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src = {
1182955f2ea3SAbel Vesa 	.cmd_rcgr = 0x39070,
1183955f2ea3SAbel Vesa 	.mnd_width = 0,
1184955f2ea3SAbel Vesa 	.hid_width = 5,
1185955f2ea3SAbel Vesa 	.parent_map = gcc_parent_map_2,
1186955f2ea3SAbel Vesa 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
1187955f2ea3SAbel Vesa 	.clkr.hw.init = &(struct clk_init_data){
1188955f2ea3SAbel Vesa 		.name = "gcc_usb3_prim_phy_aux_clk_src",
1189955f2ea3SAbel Vesa 		.parent_data = gcc_parent_data_2,
1190955f2ea3SAbel Vesa 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
1191955f2ea3SAbel Vesa 		.flags = CLK_SET_RATE_PARENT,
1192053f3547SKonrad Dybcio 		.ops = &clk_rcg2_shared_ops,
1193955f2ea3SAbel Vesa 	},
1194955f2ea3SAbel Vesa };
1195955f2ea3SAbel Vesa 
1196955f2ea3SAbel Vesa static struct clk_regmap_div gcc_usb30_prim_mock_utmi_postdiv_clk_src = {
1197955f2ea3SAbel Vesa 	.reg = 0x3905c,
1198955f2ea3SAbel Vesa 	.shift = 0,
1199955f2ea3SAbel Vesa 	.width = 4,
1200955f2ea3SAbel Vesa 	.clkr.hw.init = &(struct clk_init_data) {
1201955f2ea3SAbel Vesa 		.name = "gcc_usb30_prim_mock_utmi_postdiv_clk_src",
120218aa0dc2SDmitry Baryshkov 		.parent_hws = (const struct clk_hw*[]) {
120318aa0dc2SDmitry Baryshkov 			&gcc_usb30_prim_mock_utmi_clk_src.clkr.hw,
1204955f2ea3SAbel Vesa 		},
1205955f2ea3SAbel Vesa 		.num_parents = 1,
1206955f2ea3SAbel Vesa 		.flags = CLK_SET_RATE_PARENT,
1207955f2ea3SAbel Vesa 		.ops = &clk_regmap_div_ro_ops,
1208955f2ea3SAbel Vesa 	},
1209955f2ea3SAbel Vesa };
1210955f2ea3SAbel Vesa 
1211955f2ea3SAbel Vesa static struct clk_branch gcc_aggre_noc_pcie_axi_clk = {
1212955f2ea3SAbel Vesa 	.halt_reg = 0x1003c,
1213955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_SKIP,
1214955f2ea3SAbel Vesa 	.hwcg_reg = 0x1003c,
1215955f2ea3SAbel Vesa 	.hwcg_bit = 1,
1216955f2ea3SAbel Vesa 	.clkr = {
1217955f2ea3SAbel Vesa 		.enable_reg = 0x52000,
1218955f2ea3SAbel Vesa 		.enable_mask = BIT(12),
1219955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1220955f2ea3SAbel Vesa 			.name = "gcc_aggre_noc_pcie_axi_clk",
1221955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1222955f2ea3SAbel Vesa 		},
1223955f2ea3SAbel Vesa 	},
1224955f2ea3SAbel Vesa };
1225955f2ea3SAbel Vesa 
1226955f2ea3SAbel Vesa static struct clk_branch gcc_aggre_ufs_phy_axi_clk = {
1227955f2ea3SAbel Vesa 	.halt_reg = 0x770e4,
1228955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
1229955f2ea3SAbel Vesa 	.hwcg_reg = 0x770e4,
1230955f2ea3SAbel Vesa 	.hwcg_bit = 1,
1231955f2ea3SAbel Vesa 	.clkr = {
1232955f2ea3SAbel Vesa 		.enable_reg = 0x770e4,
1233955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
1234955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1235955f2ea3SAbel Vesa 			.name = "gcc_aggre_ufs_phy_axi_clk",
123618aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
123718aa0dc2SDmitry Baryshkov 				&gcc_ufs_phy_axi_clk_src.clkr.hw,
1238955f2ea3SAbel Vesa 			},
1239955f2ea3SAbel Vesa 			.num_parents = 1,
1240955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
1241955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1242955f2ea3SAbel Vesa 		},
1243955f2ea3SAbel Vesa 	},
1244955f2ea3SAbel Vesa };
1245955f2ea3SAbel Vesa 
1246955f2ea3SAbel Vesa static struct clk_branch gcc_aggre_ufs_phy_axi_hw_ctl_clk = {
1247955f2ea3SAbel Vesa 	.halt_reg = 0x770e4,
1248955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
1249955f2ea3SAbel Vesa 	.hwcg_reg = 0x770e4,
1250955f2ea3SAbel Vesa 	.hwcg_bit = 1,
1251955f2ea3SAbel Vesa 	.clkr = {
1252955f2ea3SAbel Vesa 		.enable_reg = 0x770e4,
1253955f2ea3SAbel Vesa 		.enable_mask = BIT(1),
1254955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1255955f2ea3SAbel Vesa 			.name = "gcc_aggre_ufs_phy_axi_hw_ctl_clk",
125618aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
125718aa0dc2SDmitry Baryshkov 				&gcc_ufs_phy_axi_clk_src.clkr.hw,
1258955f2ea3SAbel Vesa 			},
1259955f2ea3SAbel Vesa 			.num_parents = 1,
1260955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
1261955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1262955f2ea3SAbel Vesa 		},
1263955f2ea3SAbel Vesa 	},
1264955f2ea3SAbel Vesa };
1265955f2ea3SAbel Vesa 
1266955f2ea3SAbel Vesa static struct clk_branch gcc_aggre_usb3_prim_axi_clk = {
1267955f2ea3SAbel Vesa 	.halt_reg = 0x3908c,
1268955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
1269955f2ea3SAbel Vesa 	.hwcg_reg = 0x3908c,
1270955f2ea3SAbel Vesa 	.hwcg_bit = 1,
1271955f2ea3SAbel Vesa 	.clkr = {
1272955f2ea3SAbel Vesa 		.enable_reg = 0x3908c,
1273955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
1274955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1275955f2ea3SAbel Vesa 			.name = "gcc_aggre_usb3_prim_axi_clk",
127618aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
127718aa0dc2SDmitry Baryshkov 				&gcc_usb30_prim_master_clk_src.clkr.hw,
1278955f2ea3SAbel Vesa 			},
1279955f2ea3SAbel Vesa 			.num_parents = 1,
1280955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
1281955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1282955f2ea3SAbel Vesa 		},
1283955f2ea3SAbel Vesa 	},
1284955f2ea3SAbel Vesa };
1285955f2ea3SAbel Vesa 
1286955f2ea3SAbel Vesa static struct clk_branch gcc_boot_rom_ahb_clk = {
1287955f2ea3SAbel Vesa 	.halt_reg = 0x38004,
1288955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
1289955f2ea3SAbel Vesa 	.hwcg_reg = 0x38004,
1290955f2ea3SAbel Vesa 	.hwcg_bit = 1,
1291955f2ea3SAbel Vesa 	.clkr = {
1292955f2ea3SAbel Vesa 		.enable_reg = 0x52000,
1293955f2ea3SAbel Vesa 		.enable_mask = BIT(10),
1294955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1295955f2ea3SAbel Vesa 			.name = "gcc_boot_rom_ahb_clk",
1296955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1297955f2ea3SAbel Vesa 		},
1298955f2ea3SAbel Vesa 	},
1299955f2ea3SAbel Vesa };
1300955f2ea3SAbel Vesa 
1301955f2ea3SAbel Vesa static struct clk_branch gcc_camera_hf_axi_clk = {
1302955f2ea3SAbel Vesa 	.halt_reg = 0x26010,
1303955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_SKIP,
1304955f2ea3SAbel Vesa 	.hwcg_reg = 0x26010,
1305955f2ea3SAbel Vesa 	.hwcg_bit = 1,
1306955f2ea3SAbel Vesa 	.clkr = {
1307955f2ea3SAbel Vesa 		.enable_reg = 0x26010,
1308955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
1309955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1310955f2ea3SAbel Vesa 			.name = "gcc_camera_hf_axi_clk",
1311955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1312955f2ea3SAbel Vesa 		},
1313955f2ea3SAbel Vesa 	},
1314955f2ea3SAbel Vesa };
1315955f2ea3SAbel Vesa 
1316955f2ea3SAbel Vesa static struct clk_branch gcc_camera_sf_axi_clk = {
1317955f2ea3SAbel Vesa 	.halt_reg = 0x2601c,
1318955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_SKIP,
1319955f2ea3SAbel Vesa 	.hwcg_reg = 0x2601c,
1320955f2ea3SAbel Vesa 	.hwcg_bit = 1,
1321955f2ea3SAbel Vesa 	.clkr = {
1322955f2ea3SAbel Vesa 		.enable_reg = 0x2601c,
1323955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
1324955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1325955f2ea3SAbel Vesa 			.name = "gcc_camera_sf_axi_clk",
1326955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1327955f2ea3SAbel Vesa 		},
1328955f2ea3SAbel Vesa 	},
1329955f2ea3SAbel Vesa };
1330955f2ea3SAbel Vesa 
1331955f2ea3SAbel Vesa static struct clk_branch gcc_cfg_noc_pcie_anoc_ahb_clk = {
1332955f2ea3SAbel Vesa 	.halt_reg = 0x10028,
1333955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_SKIP,
1334955f2ea3SAbel Vesa 	.hwcg_reg = 0x10028,
1335955f2ea3SAbel Vesa 	.hwcg_bit = 1,
1336955f2ea3SAbel Vesa 	.clkr = {
1337955f2ea3SAbel Vesa 		.enable_reg = 0x52000,
1338955f2ea3SAbel Vesa 		.enable_mask = BIT(20),
1339955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1340955f2ea3SAbel Vesa 			.name = "gcc_cfg_noc_pcie_anoc_ahb_clk",
1341955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1342955f2ea3SAbel Vesa 		},
1343955f2ea3SAbel Vesa 	},
1344955f2ea3SAbel Vesa };
1345955f2ea3SAbel Vesa 
1346955f2ea3SAbel Vesa static struct clk_branch gcc_cfg_noc_usb3_prim_axi_clk = {
1347955f2ea3SAbel Vesa 	.halt_reg = 0x39088,
1348955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
1349955f2ea3SAbel Vesa 	.hwcg_reg = 0x39088,
1350955f2ea3SAbel Vesa 	.hwcg_bit = 1,
1351955f2ea3SAbel Vesa 	.clkr = {
1352955f2ea3SAbel Vesa 		.enable_reg = 0x39088,
1353955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
1354955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1355955f2ea3SAbel Vesa 			.name = "gcc_cfg_noc_usb3_prim_axi_clk",
135618aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
135718aa0dc2SDmitry Baryshkov 				&gcc_usb30_prim_master_clk_src.clkr.hw,
1358955f2ea3SAbel Vesa 			},
1359955f2ea3SAbel Vesa 			.num_parents = 1,
1360955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
1361955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1362955f2ea3SAbel Vesa 		},
1363955f2ea3SAbel Vesa 	},
1364955f2ea3SAbel Vesa };
1365955f2ea3SAbel Vesa 
1366955f2ea3SAbel Vesa static struct clk_branch gcc_cnoc_pcie_sf_axi_clk = {
1367955f2ea3SAbel Vesa 	.halt_reg = 0x10030,
1368955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
1369955f2ea3SAbel Vesa 	.hwcg_reg = 0x10030,
1370955f2ea3SAbel Vesa 	.hwcg_bit = 1,
1371955f2ea3SAbel Vesa 	.clkr = {
1372955f2ea3SAbel Vesa 		.enable_reg = 0x52008,
1373955f2ea3SAbel Vesa 		.enable_mask = BIT(6),
1374955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1375955f2ea3SAbel Vesa 			.name = "gcc_cnoc_pcie_sf_axi_clk",
1376955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1377955f2ea3SAbel Vesa 		},
1378955f2ea3SAbel Vesa 	},
1379955f2ea3SAbel Vesa };
1380955f2ea3SAbel Vesa 
1381955f2ea3SAbel Vesa static struct clk_branch gcc_ddrss_gpu_axi_clk = {
1382955f2ea3SAbel Vesa 	.halt_reg = 0x71154,
1383955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_SKIP,
1384955f2ea3SAbel Vesa 	.hwcg_reg = 0x71154,
1385955f2ea3SAbel Vesa 	.hwcg_bit = 1,
1386955f2ea3SAbel Vesa 	.clkr = {
1387955f2ea3SAbel Vesa 		.enable_reg = 0x71154,
1388955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
1389955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1390955f2ea3SAbel Vesa 			.name = "gcc_ddrss_gpu_axi_clk",
1391955f2ea3SAbel Vesa 			.ops = &clk_branch2_aon_ops,
1392955f2ea3SAbel Vesa 		},
1393955f2ea3SAbel Vesa 	},
1394955f2ea3SAbel Vesa };
1395955f2ea3SAbel Vesa 
1396955f2ea3SAbel Vesa static struct clk_branch gcc_ddrss_pcie_sf_qtb_clk = {
1397955f2ea3SAbel Vesa 	.halt_reg = 0x1004c,
1398955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_SKIP,
1399955f2ea3SAbel Vesa 	.hwcg_reg = 0x1004c,
1400955f2ea3SAbel Vesa 	.hwcg_bit = 1,
1401955f2ea3SAbel Vesa 	.clkr = {
1402955f2ea3SAbel Vesa 		.enable_reg = 0x52000,
1403955f2ea3SAbel Vesa 		.enable_mask = BIT(19),
1404955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1405955f2ea3SAbel Vesa 			.name = "gcc_ddrss_pcie_sf_qtb_clk",
1406955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1407955f2ea3SAbel Vesa 		},
1408955f2ea3SAbel Vesa 	},
1409955f2ea3SAbel Vesa };
1410955f2ea3SAbel Vesa 
1411955f2ea3SAbel Vesa static struct clk_branch gcc_disp_hf_axi_clk = {
1412955f2ea3SAbel Vesa 	.halt_reg = 0x2700c,
1413955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_SKIP,
1414955f2ea3SAbel Vesa 	.hwcg_reg = 0x2700c,
1415955f2ea3SAbel Vesa 	.hwcg_bit = 1,
1416955f2ea3SAbel Vesa 	.clkr = {
1417955f2ea3SAbel Vesa 		.enable_reg = 0x2700c,
1418955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
1419955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1420955f2ea3SAbel Vesa 			.name = "gcc_disp_hf_axi_clk",
1421955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1422955f2ea3SAbel Vesa 		},
1423955f2ea3SAbel Vesa 	},
1424955f2ea3SAbel Vesa };
1425955f2ea3SAbel Vesa 
1426955f2ea3SAbel Vesa static struct clk_branch gcc_gp1_clk = {
1427955f2ea3SAbel Vesa 	.halt_reg = 0x64000,
1428955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT,
1429955f2ea3SAbel Vesa 	.clkr = {
1430955f2ea3SAbel Vesa 		.enable_reg = 0x64000,
1431955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
1432955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1433955f2ea3SAbel Vesa 			.name = "gcc_gp1_clk",
143418aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
143518aa0dc2SDmitry Baryshkov 				&gcc_gp1_clk_src.clkr.hw,
1436955f2ea3SAbel Vesa 			},
1437955f2ea3SAbel Vesa 			.num_parents = 1,
1438955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
1439955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1440955f2ea3SAbel Vesa 		},
1441955f2ea3SAbel Vesa 	},
1442955f2ea3SAbel Vesa };
1443955f2ea3SAbel Vesa 
1444955f2ea3SAbel Vesa static struct clk_branch gcc_gp2_clk = {
1445955f2ea3SAbel Vesa 	.halt_reg = 0x65000,
1446955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT,
1447955f2ea3SAbel Vesa 	.clkr = {
1448955f2ea3SAbel Vesa 		.enable_reg = 0x65000,
1449955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
1450955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1451955f2ea3SAbel Vesa 			.name = "gcc_gp2_clk",
145218aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
145318aa0dc2SDmitry Baryshkov 				&gcc_gp2_clk_src.clkr.hw,
1454955f2ea3SAbel Vesa 			},
1455955f2ea3SAbel Vesa 			.num_parents = 1,
1456955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
1457955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1458955f2ea3SAbel Vesa 		},
1459955f2ea3SAbel Vesa 	},
1460955f2ea3SAbel Vesa };
1461955f2ea3SAbel Vesa 
1462955f2ea3SAbel Vesa static struct clk_branch gcc_gp3_clk = {
1463955f2ea3SAbel Vesa 	.halt_reg = 0x66000,
1464955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT,
1465955f2ea3SAbel Vesa 	.clkr = {
1466955f2ea3SAbel Vesa 		.enable_reg = 0x66000,
1467955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
1468955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1469955f2ea3SAbel Vesa 			.name = "gcc_gp3_clk",
147018aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
147118aa0dc2SDmitry Baryshkov 				&gcc_gp3_clk_src.clkr.hw,
1472955f2ea3SAbel Vesa 			},
1473955f2ea3SAbel Vesa 			.num_parents = 1,
1474955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
1475955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1476955f2ea3SAbel Vesa 		},
1477955f2ea3SAbel Vesa 	},
1478955f2ea3SAbel Vesa };
1479955f2ea3SAbel Vesa 
1480955f2ea3SAbel Vesa static struct clk_branch gcc_gpu_gpll0_clk_src = {
1481955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_DELAY,
1482955f2ea3SAbel Vesa 	.clkr = {
1483955f2ea3SAbel Vesa 		.enable_reg = 0x52000,
1484955f2ea3SAbel Vesa 		.enable_mask = BIT(15),
1485955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1486955f2ea3SAbel Vesa 			.name = "gcc_gpu_gpll0_clk_src",
148718aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
148818aa0dc2SDmitry Baryshkov 				&gcc_gpll0.clkr.hw,
1489955f2ea3SAbel Vesa 			},
1490955f2ea3SAbel Vesa 			.num_parents = 1,
1491955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
1492955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1493955f2ea3SAbel Vesa 		},
1494955f2ea3SAbel Vesa 	},
1495955f2ea3SAbel Vesa };
1496955f2ea3SAbel Vesa 
1497955f2ea3SAbel Vesa static struct clk_branch gcc_gpu_gpll0_div_clk_src = {
1498955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_DELAY,
1499955f2ea3SAbel Vesa 	.clkr = {
1500955f2ea3SAbel Vesa 		.enable_reg = 0x52000,
1501955f2ea3SAbel Vesa 		.enable_mask = BIT(16),
1502955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1503955f2ea3SAbel Vesa 			.name = "gcc_gpu_gpll0_div_clk_src",
150418aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
150518aa0dc2SDmitry Baryshkov 				&gcc_gpll0_out_even.clkr.hw,
1506955f2ea3SAbel Vesa 			},
1507955f2ea3SAbel Vesa 			.num_parents = 1,
1508955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
1509955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1510955f2ea3SAbel Vesa 		},
1511955f2ea3SAbel Vesa 	},
1512955f2ea3SAbel Vesa };
1513955f2ea3SAbel Vesa 
1514955f2ea3SAbel Vesa static struct clk_branch gcc_gpu_memnoc_gfx_clk = {
1515955f2ea3SAbel Vesa 	.halt_reg = 0x71010,
1516955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
1517955f2ea3SAbel Vesa 	.hwcg_reg = 0x71010,
1518955f2ea3SAbel Vesa 	.hwcg_bit = 1,
1519955f2ea3SAbel Vesa 	.clkr = {
1520955f2ea3SAbel Vesa 		.enable_reg = 0x71010,
1521955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
1522955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1523955f2ea3SAbel Vesa 			.name = "gcc_gpu_memnoc_gfx_clk",
1524955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1525955f2ea3SAbel Vesa 		},
1526955f2ea3SAbel Vesa 	},
1527955f2ea3SAbel Vesa };
1528955f2ea3SAbel Vesa 
1529955f2ea3SAbel Vesa static struct clk_branch gcc_gpu_snoc_dvm_gfx_clk = {
1530955f2ea3SAbel Vesa 	.halt_reg = 0x71018,
1531955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_DELAY,
1532955f2ea3SAbel Vesa 	.clkr = {
1533955f2ea3SAbel Vesa 		.enable_reg = 0x71018,
1534955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
1535955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1536955f2ea3SAbel Vesa 			.name = "gcc_gpu_snoc_dvm_gfx_clk",
1537955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1538955f2ea3SAbel Vesa 		},
1539955f2ea3SAbel Vesa 	},
1540955f2ea3SAbel Vesa };
1541955f2ea3SAbel Vesa 
1542955f2ea3SAbel Vesa static struct clk_branch gcc_pcie_0_aux_clk = {
1543955f2ea3SAbel Vesa 	.halt_reg = 0x6b03c,
1544955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
1545955f2ea3SAbel Vesa 	.clkr = {
1546955f2ea3SAbel Vesa 		.enable_reg = 0x52008,
1547955f2ea3SAbel Vesa 		.enable_mask = BIT(3),
1548955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1549955f2ea3SAbel Vesa 			.name = "gcc_pcie_0_aux_clk",
155018aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
155118aa0dc2SDmitry Baryshkov 				&gcc_pcie_0_aux_clk_src.clkr.hw,
1552955f2ea3SAbel Vesa 			},
1553955f2ea3SAbel Vesa 			.num_parents = 1,
1554955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
1555955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1556955f2ea3SAbel Vesa 		},
1557955f2ea3SAbel Vesa 	},
1558955f2ea3SAbel Vesa };
1559955f2ea3SAbel Vesa 
1560955f2ea3SAbel Vesa static struct clk_branch gcc_pcie_0_cfg_ahb_clk = {
1561955f2ea3SAbel Vesa 	.halt_reg = 0x6b038,
1562955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
1563955f2ea3SAbel Vesa 	.hwcg_reg = 0x6b038,
1564955f2ea3SAbel Vesa 	.hwcg_bit = 1,
1565955f2ea3SAbel Vesa 	.clkr = {
1566955f2ea3SAbel Vesa 		.enable_reg = 0x52008,
1567955f2ea3SAbel Vesa 		.enable_mask = BIT(2),
1568955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1569955f2ea3SAbel Vesa 			.name = "gcc_pcie_0_cfg_ahb_clk",
1570955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1571955f2ea3SAbel Vesa 		},
1572955f2ea3SAbel Vesa 	},
1573955f2ea3SAbel Vesa };
1574955f2ea3SAbel Vesa 
1575955f2ea3SAbel Vesa static struct clk_branch gcc_pcie_0_mstr_axi_clk = {
1576955f2ea3SAbel Vesa 	.halt_reg = 0x6b02c,
1577955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_SKIP,
1578955f2ea3SAbel Vesa 	.hwcg_reg = 0x6b02c,
1579955f2ea3SAbel Vesa 	.hwcg_bit = 1,
1580955f2ea3SAbel Vesa 	.clkr = {
1581955f2ea3SAbel Vesa 		.enable_reg = 0x52008,
1582955f2ea3SAbel Vesa 		.enable_mask = BIT(1),
1583955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1584955f2ea3SAbel Vesa 			.name = "gcc_pcie_0_mstr_axi_clk",
1585955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1586955f2ea3SAbel Vesa 		},
1587955f2ea3SAbel Vesa 	},
1588955f2ea3SAbel Vesa };
1589955f2ea3SAbel Vesa 
1590955f2ea3SAbel Vesa static struct clk_branch gcc_pcie_0_phy_rchng_clk = {
1591955f2ea3SAbel Vesa 	.halt_reg = 0x6b054,
1592955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
1593955f2ea3SAbel Vesa 	.clkr = {
1594955f2ea3SAbel Vesa 		.enable_reg = 0x52000,
1595955f2ea3SAbel Vesa 		.enable_mask = BIT(22),
1596955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1597955f2ea3SAbel Vesa 			.name = "gcc_pcie_0_phy_rchng_clk",
159818aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
159918aa0dc2SDmitry Baryshkov 				&gcc_pcie_0_phy_rchng_clk_src.clkr.hw,
1600955f2ea3SAbel Vesa 			},
1601955f2ea3SAbel Vesa 			.num_parents = 1,
1602955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
1603955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1604955f2ea3SAbel Vesa 		},
1605955f2ea3SAbel Vesa 	},
1606955f2ea3SAbel Vesa };
1607955f2ea3SAbel Vesa 
1608955f2ea3SAbel Vesa static struct clk_branch gcc_pcie_0_pipe_clk = {
1609955f2ea3SAbel Vesa 	.halt_reg = 0x6b048,
1610955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_SKIP,
1611955f2ea3SAbel Vesa 	.clkr = {
1612955f2ea3SAbel Vesa 		.enable_reg = 0x52008,
1613955f2ea3SAbel Vesa 		.enable_mask = BIT(4),
1614955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1615955f2ea3SAbel Vesa 			.name = "gcc_pcie_0_pipe_clk",
161618aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
161718aa0dc2SDmitry Baryshkov 				&gcc_pcie_0_pipe_clk_src.clkr.hw,
1618955f2ea3SAbel Vesa 			},
1619955f2ea3SAbel Vesa 			.num_parents = 1,
1620955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
1621955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1622955f2ea3SAbel Vesa 		},
1623955f2ea3SAbel Vesa 	},
1624955f2ea3SAbel Vesa };
1625955f2ea3SAbel Vesa 
1626955f2ea3SAbel Vesa static struct clk_branch gcc_pcie_0_slv_axi_clk = {
1627955f2ea3SAbel Vesa 	.halt_reg = 0x6b020,
1628955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
1629955f2ea3SAbel Vesa 	.hwcg_reg = 0x6b020,
1630955f2ea3SAbel Vesa 	.hwcg_bit = 1,
1631955f2ea3SAbel Vesa 	.clkr = {
1632955f2ea3SAbel Vesa 		.enable_reg = 0x52008,
1633955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
1634955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1635955f2ea3SAbel Vesa 			.name = "gcc_pcie_0_slv_axi_clk",
1636955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1637955f2ea3SAbel Vesa 		},
1638955f2ea3SAbel Vesa 	},
1639955f2ea3SAbel Vesa };
1640955f2ea3SAbel Vesa 
1641955f2ea3SAbel Vesa static struct clk_branch gcc_pcie_0_slv_q2a_axi_clk = {
1642955f2ea3SAbel Vesa 	.halt_reg = 0x6b01c,
1643955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
1644955f2ea3SAbel Vesa 	.clkr = {
1645955f2ea3SAbel Vesa 		.enable_reg = 0x52008,
1646955f2ea3SAbel Vesa 		.enable_mask = BIT(5),
1647955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1648955f2ea3SAbel Vesa 			.name = "gcc_pcie_0_slv_q2a_axi_clk",
1649955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1650955f2ea3SAbel Vesa 		},
1651955f2ea3SAbel Vesa 	},
1652955f2ea3SAbel Vesa };
1653955f2ea3SAbel Vesa 
1654955f2ea3SAbel Vesa static struct clk_branch gcc_pcie_1_aux_clk = {
1655955f2ea3SAbel Vesa 	.halt_reg = 0x8d038,
1656955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
1657955f2ea3SAbel Vesa 	.clkr = {
1658955f2ea3SAbel Vesa 		.enable_reg = 0x52000,
1659955f2ea3SAbel Vesa 		.enable_mask = BIT(29),
1660955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1661955f2ea3SAbel Vesa 			.name = "gcc_pcie_1_aux_clk",
166218aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
166318aa0dc2SDmitry Baryshkov 				&gcc_pcie_1_aux_clk_src.clkr.hw,
1664955f2ea3SAbel Vesa 			},
1665955f2ea3SAbel Vesa 			.num_parents = 1,
1666955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
1667955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1668955f2ea3SAbel Vesa 		},
1669955f2ea3SAbel Vesa 	},
1670955f2ea3SAbel Vesa };
1671955f2ea3SAbel Vesa 
1672955f2ea3SAbel Vesa static struct clk_branch gcc_pcie_1_cfg_ahb_clk = {
1673955f2ea3SAbel Vesa 	.halt_reg = 0x8d034,
1674955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
1675955f2ea3SAbel Vesa 	.hwcg_reg = 0x8d034,
1676955f2ea3SAbel Vesa 	.hwcg_bit = 1,
1677955f2ea3SAbel Vesa 	.clkr = {
1678955f2ea3SAbel Vesa 		.enable_reg = 0x52000,
1679955f2ea3SAbel Vesa 		.enable_mask = BIT(28),
1680955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1681955f2ea3SAbel Vesa 			.name = "gcc_pcie_1_cfg_ahb_clk",
1682955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1683955f2ea3SAbel Vesa 		},
1684955f2ea3SAbel Vesa 	},
1685955f2ea3SAbel Vesa };
1686955f2ea3SAbel Vesa 
1687955f2ea3SAbel Vesa static struct clk_branch gcc_pcie_1_mstr_axi_clk = {
1688955f2ea3SAbel Vesa 	.halt_reg = 0x8d028,
1689955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_SKIP,
1690955f2ea3SAbel Vesa 	.hwcg_reg = 0x8d028,
1691955f2ea3SAbel Vesa 	.hwcg_bit = 1,
1692955f2ea3SAbel Vesa 	.clkr = {
1693955f2ea3SAbel Vesa 		.enable_reg = 0x52000,
1694955f2ea3SAbel Vesa 		.enable_mask = BIT(27),
1695955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1696955f2ea3SAbel Vesa 			.name = "gcc_pcie_1_mstr_axi_clk",
1697955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1698955f2ea3SAbel Vesa 		},
1699955f2ea3SAbel Vesa 	},
1700955f2ea3SAbel Vesa };
1701955f2ea3SAbel Vesa 
1702955f2ea3SAbel Vesa static struct clk_branch gcc_pcie_1_phy_aux_clk = {
1703955f2ea3SAbel Vesa 	.halt_reg = 0x8d044,
1704955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
1705955f2ea3SAbel Vesa 	.clkr = {
1706955f2ea3SAbel Vesa 		.enable_reg = 0x52000,
1707955f2ea3SAbel Vesa 		.enable_mask = BIT(24),
1708955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1709955f2ea3SAbel Vesa 			.name = "gcc_pcie_1_phy_aux_clk",
171018aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
171118aa0dc2SDmitry Baryshkov 				&gcc_pcie_1_phy_aux_clk_src.clkr.hw,
1712955f2ea3SAbel Vesa 			},
1713955f2ea3SAbel Vesa 			.num_parents = 1,
1714955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
1715955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1716955f2ea3SAbel Vesa 		},
1717955f2ea3SAbel Vesa 	},
1718955f2ea3SAbel Vesa };
1719955f2ea3SAbel Vesa 
1720955f2ea3SAbel Vesa static struct clk_branch gcc_pcie_1_phy_rchng_clk = {
1721955f2ea3SAbel Vesa 	.halt_reg = 0x8d05c,
1722955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
1723955f2ea3SAbel Vesa 	.clkr = {
1724955f2ea3SAbel Vesa 		.enable_reg = 0x52000,
1725955f2ea3SAbel Vesa 		.enable_mask = BIT(23),
1726955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1727955f2ea3SAbel Vesa 			.name = "gcc_pcie_1_phy_rchng_clk",
172818aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
172918aa0dc2SDmitry Baryshkov 				&gcc_pcie_1_phy_rchng_clk_src.clkr.hw,
1730955f2ea3SAbel Vesa 			},
1731955f2ea3SAbel Vesa 			.num_parents = 1,
1732955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
1733955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1734955f2ea3SAbel Vesa 		},
1735955f2ea3SAbel Vesa 	},
1736955f2ea3SAbel Vesa };
1737955f2ea3SAbel Vesa 
1738955f2ea3SAbel Vesa static struct clk_branch gcc_pcie_1_pipe_clk = {
1739955f2ea3SAbel Vesa 	.halt_reg = 0x8d050,
1740955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_SKIP,
1741955f2ea3SAbel Vesa 	.clkr = {
1742955f2ea3SAbel Vesa 		.enable_reg = 0x52000,
1743955f2ea3SAbel Vesa 		.enable_mask = BIT(30),
1744955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1745955f2ea3SAbel Vesa 			.name = "gcc_pcie_1_pipe_clk",
174618aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
174718aa0dc2SDmitry Baryshkov 				&gcc_pcie_1_pipe_clk_src.clkr.hw,
1748955f2ea3SAbel Vesa 			},
1749955f2ea3SAbel Vesa 			.num_parents = 1,
1750955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
1751955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1752955f2ea3SAbel Vesa 		},
1753955f2ea3SAbel Vesa 	},
1754955f2ea3SAbel Vesa };
1755955f2ea3SAbel Vesa 
1756955f2ea3SAbel Vesa static struct clk_branch gcc_pcie_1_slv_axi_clk = {
1757955f2ea3SAbel Vesa 	.halt_reg = 0x8d01c,
1758955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
1759955f2ea3SAbel Vesa 	.hwcg_reg = 0x8d01c,
1760955f2ea3SAbel Vesa 	.hwcg_bit = 1,
1761955f2ea3SAbel Vesa 	.clkr = {
1762955f2ea3SAbel Vesa 		.enable_reg = 0x52000,
1763955f2ea3SAbel Vesa 		.enable_mask = BIT(26),
1764955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1765955f2ea3SAbel Vesa 			.name = "gcc_pcie_1_slv_axi_clk",
1766955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1767955f2ea3SAbel Vesa 		},
1768955f2ea3SAbel Vesa 	},
1769955f2ea3SAbel Vesa };
1770955f2ea3SAbel Vesa 
1771955f2ea3SAbel Vesa static struct clk_branch gcc_pcie_1_slv_q2a_axi_clk = {
1772955f2ea3SAbel Vesa 	.halt_reg = 0x8d018,
1773955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
1774955f2ea3SAbel Vesa 	.clkr = {
1775955f2ea3SAbel Vesa 		.enable_reg = 0x52000,
1776955f2ea3SAbel Vesa 		.enable_mask = BIT(25),
1777955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1778955f2ea3SAbel Vesa 			.name = "gcc_pcie_1_slv_q2a_axi_clk",
1779955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1780955f2ea3SAbel Vesa 		},
1781955f2ea3SAbel Vesa 	},
1782955f2ea3SAbel Vesa };
1783955f2ea3SAbel Vesa 
1784955f2ea3SAbel Vesa static struct clk_branch gcc_pdm2_clk = {
1785955f2ea3SAbel Vesa 	.halt_reg = 0x3300c,
1786955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT,
1787955f2ea3SAbel Vesa 	.clkr = {
1788955f2ea3SAbel Vesa 		.enable_reg = 0x3300c,
1789955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
1790955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1791955f2ea3SAbel Vesa 			.name = "gcc_pdm2_clk",
179218aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
179318aa0dc2SDmitry Baryshkov 				&gcc_pdm2_clk_src.clkr.hw,
1794955f2ea3SAbel Vesa 			},
1795955f2ea3SAbel Vesa 			.num_parents = 1,
1796955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
1797955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1798955f2ea3SAbel Vesa 		},
1799955f2ea3SAbel Vesa 	},
1800955f2ea3SAbel Vesa };
1801955f2ea3SAbel Vesa 
1802955f2ea3SAbel Vesa static struct clk_branch gcc_pdm_ahb_clk = {
1803955f2ea3SAbel Vesa 	.halt_reg = 0x33004,
1804955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
1805955f2ea3SAbel Vesa 	.hwcg_reg = 0x33004,
1806955f2ea3SAbel Vesa 	.hwcg_bit = 1,
1807955f2ea3SAbel Vesa 	.clkr = {
1808955f2ea3SAbel Vesa 		.enable_reg = 0x33004,
1809955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
1810955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1811955f2ea3SAbel Vesa 			.name = "gcc_pdm_ahb_clk",
1812955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1813955f2ea3SAbel Vesa 		},
1814955f2ea3SAbel Vesa 	},
1815955f2ea3SAbel Vesa };
1816955f2ea3SAbel Vesa 
1817955f2ea3SAbel Vesa static struct clk_branch gcc_pdm_xo4_clk = {
1818955f2ea3SAbel Vesa 	.halt_reg = 0x33008,
1819955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT,
1820955f2ea3SAbel Vesa 	.clkr = {
1821955f2ea3SAbel Vesa 		.enable_reg = 0x33008,
1822955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
1823955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1824955f2ea3SAbel Vesa 			.name = "gcc_pdm_xo4_clk",
1825955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1826955f2ea3SAbel Vesa 		},
1827955f2ea3SAbel Vesa 	},
1828955f2ea3SAbel Vesa };
1829955f2ea3SAbel Vesa 
1830955f2ea3SAbel Vesa static struct clk_branch gcc_qmip_camera_nrt_ahb_clk = {
1831955f2ea3SAbel Vesa 	.halt_reg = 0x26008,
1832955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
1833955f2ea3SAbel Vesa 	.hwcg_reg = 0x26008,
1834955f2ea3SAbel Vesa 	.hwcg_bit = 1,
1835955f2ea3SAbel Vesa 	.clkr = {
1836955f2ea3SAbel Vesa 		.enable_reg = 0x26008,
1837955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
1838955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1839955f2ea3SAbel Vesa 			.name = "gcc_qmip_camera_nrt_ahb_clk",
1840955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1841955f2ea3SAbel Vesa 		},
1842955f2ea3SAbel Vesa 	},
1843955f2ea3SAbel Vesa };
1844955f2ea3SAbel Vesa 
1845955f2ea3SAbel Vesa static struct clk_branch gcc_qmip_camera_rt_ahb_clk = {
1846955f2ea3SAbel Vesa 	.halt_reg = 0x2600c,
1847955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
1848955f2ea3SAbel Vesa 	.hwcg_reg = 0x2600c,
1849955f2ea3SAbel Vesa 	.hwcg_bit = 1,
1850955f2ea3SAbel Vesa 	.clkr = {
1851955f2ea3SAbel Vesa 		.enable_reg = 0x2600c,
1852955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
1853955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1854955f2ea3SAbel Vesa 			.name = "gcc_qmip_camera_rt_ahb_clk",
1855955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1856955f2ea3SAbel Vesa 		},
1857955f2ea3SAbel Vesa 	},
1858955f2ea3SAbel Vesa };
1859955f2ea3SAbel Vesa 
1860955f2ea3SAbel Vesa static struct clk_branch gcc_qmip_disp_ahb_clk = {
1861955f2ea3SAbel Vesa 	.halt_reg = 0x27008,
1862955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
1863955f2ea3SAbel Vesa 	.hwcg_reg = 0x27008,
1864955f2ea3SAbel Vesa 	.hwcg_bit = 1,
1865955f2ea3SAbel Vesa 	.clkr = {
1866955f2ea3SAbel Vesa 		.enable_reg = 0x27008,
1867955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
1868955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1869955f2ea3SAbel Vesa 			.name = "gcc_qmip_disp_ahb_clk",
1870955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1871955f2ea3SAbel Vesa 		},
1872955f2ea3SAbel Vesa 	},
1873955f2ea3SAbel Vesa };
1874955f2ea3SAbel Vesa 
1875955f2ea3SAbel Vesa static struct clk_branch gcc_qmip_gpu_ahb_clk = {
1876955f2ea3SAbel Vesa 	.halt_reg = 0x71008,
1877955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
1878955f2ea3SAbel Vesa 	.hwcg_reg = 0x71008,
1879955f2ea3SAbel Vesa 	.hwcg_bit = 1,
1880955f2ea3SAbel Vesa 	.clkr = {
1881955f2ea3SAbel Vesa 		.enable_reg = 0x71008,
1882955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
1883955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1884955f2ea3SAbel Vesa 			.name = "gcc_qmip_gpu_ahb_clk",
1885955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1886955f2ea3SAbel Vesa 		},
1887955f2ea3SAbel Vesa 	},
1888955f2ea3SAbel Vesa };
1889955f2ea3SAbel Vesa 
1890955f2ea3SAbel Vesa static struct clk_branch gcc_qmip_pcie_ahb_clk = {
1891955f2ea3SAbel Vesa 	.halt_reg = 0x6b018,
1892955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
1893955f2ea3SAbel Vesa 	.hwcg_reg = 0x6b018,
1894955f2ea3SAbel Vesa 	.hwcg_bit = 1,
1895955f2ea3SAbel Vesa 	.clkr = {
1896955f2ea3SAbel Vesa 		.enable_reg = 0x52000,
1897955f2ea3SAbel Vesa 		.enable_mask = BIT(11),
1898955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1899955f2ea3SAbel Vesa 			.name = "gcc_qmip_pcie_ahb_clk",
1900955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1901955f2ea3SAbel Vesa 		},
1902955f2ea3SAbel Vesa 	},
1903955f2ea3SAbel Vesa };
1904955f2ea3SAbel Vesa 
1905955f2ea3SAbel Vesa static struct clk_branch gcc_qmip_video_cv_cpu_ahb_clk = {
1906955f2ea3SAbel Vesa 	.halt_reg = 0x32014,
1907955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
1908955f2ea3SAbel Vesa 	.hwcg_reg = 0x32014,
1909955f2ea3SAbel Vesa 	.hwcg_bit = 1,
1910955f2ea3SAbel Vesa 	.clkr = {
1911955f2ea3SAbel Vesa 		.enable_reg = 0x32014,
1912955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
1913955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1914955f2ea3SAbel Vesa 			.name = "gcc_qmip_video_cv_cpu_ahb_clk",
1915955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1916955f2ea3SAbel Vesa 		},
1917955f2ea3SAbel Vesa 	},
1918955f2ea3SAbel Vesa };
1919955f2ea3SAbel Vesa 
1920955f2ea3SAbel Vesa static struct clk_branch gcc_qmip_video_cvp_ahb_clk = {
1921955f2ea3SAbel Vesa 	.halt_reg = 0x32008,
1922955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
1923955f2ea3SAbel Vesa 	.hwcg_reg = 0x32008,
1924955f2ea3SAbel Vesa 	.hwcg_bit = 1,
1925955f2ea3SAbel Vesa 	.clkr = {
1926955f2ea3SAbel Vesa 		.enable_reg = 0x32008,
1927955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
1928955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1929955f2ea3SAbel Vesa 			.name = "gcc_qmip_video_cvp_ahb_clk",
1930955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1931955f2ea3SAbel Vesa 		},
1932955f2ea3SAbel Vesa 	},
1933955f2ea3SAbel Vesa };
1934955f2ea3SAbel Vesa 
1935955f2ea3SAbel Vesa static struct clk_branch gcc_qmip_video_v_cpu_ahb_clk = {
1936955f2ea3SAbel Vesa 	.halt_reg = 0x32010,
1937955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
1938955f2ea3SAbel Vesa 	.hwcg_reg = 0x32010,
1939955f2ea3SAbel Vesa 	.hwcg_bit = 1,
1940955f2ea3SAbel Vesa 	.clkr = {
1941955f2ea3SAbel Vesa 		.enable_reg = 0x32010,
1942955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
1943955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1944955f2ea3SAbel Vesa 			.name = "gcc_qmip_video_v_cpu_ahb_clk",
1945955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1946955f2ea3SAbel Vesa 		},
1947955f2ea3SAbel Vesa 	},
1948955f2ea3SAbel Vesa };
1949955f2ea3SAbel Vesa 
1950955f2ea3SAbel Vesa static struct clk_branch gcc_qmip_video_vcodec_ahb_clk = {
1951955f2ea3SAbel Vesa 	.halt_reg = 0x3200c,
1952955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
1953955f2ea3SAbel Vesa 	.hwcg_reg = 0x3200c,
1954955f2ea3SAbel Vesa 	.hwcg_bit = 1,
1955955f2ea3SAbel Vesa 	.clkr = {
1956955f2ea3SAbel Vesa 		.enable_reg = 0x3200c,
1957955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
1958955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1959955f2ea3SAbel Vesa 			.name = "gcc_qmip_video_vcodec_ahb_clk",
1960955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1961955f2ea3SAbel Vesa 		},
1962955f2ea3SAbel Vesa 	},
1963955f2ea3SAbel Vesa };
1964955f2ea3SAbel Vesa 
1965955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_i2c_core_clk = {
1966955f2ea3SAbel Vesa 	.halt_reg = 0x23144,
1967955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
1968955f2ea3SAbel Vesa 	.clkr = {
1969955f2ea3SAbel Vesa 		.enable_reg = 0x52008,
1970955f2ea3SAbel Vesa 		.enable_mask = BIT(8),
1971955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1972955f2ea3SAbel Vesa 			.name = "gcc_qupv3_i2c_core_clk",
1973955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1974955f2ea3SAbel Vesa 		},
1975955f2ea3SAbel Vesa 	},
1976955f2ea3SAbel Vesa };
1977955f2ea3SAbel Vesa 
1978955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_i2c_s0_clk = {
1979955f2ea3SAbel Vesa 	.halt_reg = 0x17004,
1980955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
1981955f2ea3SAbel Vesa 	.clkr = {
1982955f2ea3SAbel Vesa 		.enable_reg = 0x52008,
1983955f2ea3SAbel Vesa 		.enable_mask = BIT(10),
1984955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
1985955f2ea3SAbel Vesa 			.name = "gcc_qupv3_i2c_s0_clk",
198618aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
198718aa0dc2SDmitry Baryshkov 				&gcc_qupv3_i2c_s0_clk_src.clkr.hw,
1988955f2ea3SAbel Vesa 			},
1989955f2ea3SAbel Vesa 			.num_parents = 1,
1990955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
1991955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
1992955f2ea3SAbel Vesa 		},
1993955f2ea3SAbel Vesa 	},
1994955f2ea3SAbel Vesa };
1995955f2ea3SAbel Vesa 
1996955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_i2c_s1_clk = {
1997955f2ea3SAbel Vesa 	.halt_reg = 0x17020,
1998955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
1999955f2ea3SAbel Vesa 	.clkr = {
2000955f2ea3SAbel Vesa 		.enable_reg = 0x52008,
2001955f2ea3SAbel Vesa 		.enable_mask = BIT(11),
2002955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2003955f2ea3SAbel Vesa 			.name = "gcc_qupv3_i2c_s1_clk",
200418aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
200518aa0dc2SDmitry Baryshkov 				&gcc_qupv3_i2c_s1_clk_src.clkr.hw,
2006955f2ea3SAbel Vesa 			},
2007955f2ea3SAbel Vesa 			.num_parents = 1,
2008955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2009955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2010955f2ea3SAbel Vesa 		},
2011955f2ea3SAbel Vesa 	},
2012955f2ea3SAbel Vesa };
2013955f2ea3SAbel Vesa 
2014955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_i2c_s2_clk = {
2015955f2ea3SAbel Vesa 	.halt_reg = 0x1703c,
2016955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2017955f2ea3SAbel Vesa 	.clkr = {
2018955f2ea3SAbel Vesa 		.enable_reg = 0x52008,
2019955f2ea3SAbel Vesa 		.enable_mask = BIT(12),
2020955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2021955f2ea3SAbel Vesa 			.name = "gcc_qupv3_i2c_s2_clk",
202218aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
202318aa0dc2SDmitry Baryshkov 				&gcc_qupv3_i2c_s2_clk_src.clkr.hw,
2024955f2ea3SAbel Vesa 			},
2025955f2ea3SAbel Vesa 			.num_parents = 1,
2026955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2027955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2028955f2ea3SAbel Vesa 		},
2029955f2ea3SAbel Vesa 	},
2030955f2ea3SAbel Vesa };
2031955f2ea3SAbel Vesa 
2032955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_i2c_s3_clk = {
2033955f2ea3SAbel Vesa 	.halt_reg = 0x17058,
2034955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2035955f2ea3SAbel Vesa 	.clkr = {
2036955f2ea3SAbel Vesa 		.enable_reg = 0x52008,
2037955f2ea3SAbel Vesa 		.enable_mask = BIT(13),
2038955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2039955f2ea3SAbel Vesa 			.name = "gcc_qupv3_i2c_s3_clk",
204018aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
204118aa0dc2SDmitry Baryshkov 				&gcc_qupv3_i2c_s3_clk_src.clkr.hw,
2042955f2ea3SAbel Vesa 			},
2043955f2ea3SAbel Vesa 			.num_parents = 1,
2044955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2045955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2046955f2ea3SAbel Vesa 		},
2047955f2ea3SAbel Vesa 	},
2048955f2ea3SAbel Vesa };
2049955f2ea3SAbel Vesa 
2050955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_i2c_s4_clk = {
2051955f2ea3SAbel Vesa 	.halt_reg = 0x17074,
2052955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2053955f2ea3SAbel Vesa 	.clkr = {
2054955f2ea3SAbel Vesa 		.enable_reg = 0x52008,
2055955f2ea3SAbel Vesa 		.enable_mask = BIT(14),
2056955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2057955f2ea3SAbel Vesa 			.name = "gcc_qupv3_i2c_s4_clk",
205818aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
205918aa0dc2SDmitry Baryshkov 				&gcc_qupv3_i2c_s4_clk_src.clkr.hw,
2060955f2ea3SAbel Vesa 			},
2061955f2ea3SAbel Vesa 			.num_parents = 1,
2062955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2063955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2064955f2ea3SAbel Vesa 		},
2065955f2ea3SAbel Vesa 	},
2066955f2ea3SAbel Vesa };
2067955f2ea3SAbel Vesa 
2068955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_i2c_s5_clk = {
2069955f2ea3SAbel Vesa 	.halt_reg = 0x17090,
2070955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2071955f2ea3SAbel Vesa 	.clkr = {
2072955f2ea3SAbel Vesa 		.enable_reg = 0x52008,
2073955f2ea3SAbel Vesa 		.enable_mask = BIT(15),
2074955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2075955f2ea3SAbel Vesa 			.name = "gcc_qupv3_i2c_s5_clk",
207618aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
207718aa0dc2SDmitry Baryshkov 				&gcc_qupv3_i2c_s5_clk_src.clkr.hw,
2078955f2ea3SAbel Vesa 			},
2079955f2ea3SAbel Vesa 			.num_parents = 1,
2080955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2081955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2082955f2ea3SAbel Vesa 		},
2083955f2ea3SAbel Vesa 	},
2084955f2ea3SAbel Vesa };
2085955f2ea3SAbel Vesa 
2086955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_i2c_s6_clk = {
2087955f2ea3SAbel Vesa 	.halt_reg = 0x170ac,
2088955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2089955f2ea3SAbel Vesa 	.clkr = {
2090955f2ea3SAbel Vesa 		.enable_reg = 0x52008,
2091955f2ea3SAbel Vesa 		.enable_mask = BIT(16),
2092955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2093955f2ea3SAbel Vesa 			.name = "gcc_qupv3_i2c_s6_clk",
209418aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
209518aa0dc2SDmitry Baryshkov 				&gcc_qupv3_i2c_s6_clk_src.clkr.hw,
2096955f2ea3SAbel Vesa 			},
2097955f2ea3SAbel Vesa 			.num_parents = 1,
2098955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2099955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2100955f2ea3SAbel Vesa 		},
2101955f2ea3SAbel Vesa 	},
2102955f2ea3SAbel Vesa };
2103955f2ea3SAbel Vesa 
2104955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_i2c_s7_clk = {
2105955f2ea3SAbel Vesa 	.halt_reg = 0x170c8,
2106955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2107955f2ea3SAbel Vesa 	.clkr = {
2108955f2ea3SAbel Vesa 		.enable_reg = 0x52008,
2109955f2ea3SAbel Vesa 		.enable_mask = BIT(17),
2110955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2111955f2ea3SAbel Vesa 			.name = "gcc_qupv3_i2c_s7_clk",
211218aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
211318aa0dc2SDmitry Baryshkov 				&gcc_qupv3_i2c_s7_clk_src.clkr.hw,
2114955f2ea3SAbel Vesa 			},
2115955f2ea3SAbel Vesa 			.num_parents = 1,
2116955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2117955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2118955f2ea3SAbel Vesa 		},
2119955f2ea3SAbel Vesa 	},
2120955f2ea3SAbel Vesa };
2121955f2ea3SAbel Vesa 
2122955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_i2c_s8_clk = {
2123955f2ea3SAbel Vesa 	.halt_reg = 0x170e4,
2124955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2125955f2ea3SAbel Vesa 	.clkr = {
2126955f2ea3SAbel Vesa 		.enable_reg = 0x52010,
2127955f2ea3SAbel Vesa 		.enable_mask = BIT(14),
2128955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2129955f2ea3SAbel Vesa 			.name = "gcc_qupv3_i2c_s8_clk",
213018aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
213118aa0dc2SDmitry Baryshkov 				&gcc_qupv3_i2c_s8_clk_src.clkr.hw,
2132955f2ea3SAbel Vesa 			},
2133955f2ea3SAbel Vesa 			.num_parents = 1,
2134955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2135955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2136955f2ea3SAbel Vesa 		},
2137955f2ea3SAbel Vesa 	},
2138955f2ea3SAbel Vesa };
2139955f2ea3SAbel Vesa 
2140955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_i2c_s9_clk = {
2141955f2ea3SAbel Vesa 	.halt_reg = 0x17100,
2142955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2143955f2ea3SAbel Vesa 	.clkr = {
2144955f2ea3SAbel Vesa 		.enable_reg = 0x52010,
2145955f2ea3SAbel Vesa 		.enable_mask = BIT(15),
2146955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2147955f2ea3SAbel Vesa 			.name = "gcc_qupv3_i2c_s9_clk",
214818aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
214918aa0dc2SDmitry Baryshkov 				&gcc_qupv3_i2c_s9_clk_src.clkr.hw,
2150955f2ea3SAbel Vesa 			},
2151955f2ea3SAbel Vesa 			.num_parents = 1,
2152955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2153955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2154955f2ea3SAbel Vesa 		},
2155955f2ea3SAbel Vesa 	},
2156955f2ea3SAbel Vesa };
2157955f2ea3SAbel Vesa 
2158955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_i2c_s_ahb_clk = {
2159955f2ea3SAbel Vesa 	.halt_reg = 0x23140,
2160955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2161955f2ea3SAbel Vesa 	.hwcg_reg = 0x23140,
2162955f2ea3SAbel Vesa 	.hwcg_bit = 1,
2163955f2ea3SAbel Vesa 	.clkr = {
2164955f2ea3SAbel Vesa 		.enable_reg = 0x52008,
2165955f2ea3SAbel Vesa 		.enable_mask = BIT(7),
2166955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2167955f2ea3SAbel Vesa 			.name = "gcc_qupv3_i2c_s_ahb_clk",
2168955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2169955f2ea3SAbel Vesa 		},
2170955f2ea3SAbel Vesa 	},
2171955f2ea3SAbel Vesa };
2172955f2ea3SAbel Vesa 
2173955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap1_core_2x_clk = {
2174955f2ea3SAbel Vesa 	.halt_reg = 0x23294,
2175955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2176955f2ea3SAbel Vesa 	.clkr = {
2177955f2ea3SAbel Vesa 		.enable_reg = 0x52008,
2178955f2ea3SAbel Vesa 		.enable_mask = BIT(18),
2179955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2180955f2ea3SAbel Vesa 			.name = "gcc_qupv3_wrap1_core_2x_clk",
2181955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2182955f2ea3SAbel Vesa 		},
2183955f2ea3SAbel Vesa 	},
2184955f2ea3SAbel Vesa };
2185955f2ea3SAbel Vesa 
2186955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap1_core_clk = {
2187955f2ea3SAbel Vesa 	.halt_reg = 0x23284,
2188955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2189955f2ea3SAbel Vesa 	.clkr = {
2190955f2ea3SAbel Vesa 		.enable_reg = 0x52008,
2191955f2ea3SAbel Vesa 		.enable_mask = BIT(19),
2192955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2193955f2ea3SAbel Vesa 			.name = "gcc_qupv3_wrap1_core_clk",
2194955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2195955f2ea3SAbel Vesa 		},
2196955f2ea3SAbel Vesa 	},
2197955f2ea3SAbel Vesa };
2198955f2ea3SAbel Vesa 
2199955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap1_s0_clk = {
2200955f2ea3SAbel Vesa 	.halt_reg = 0x18004,
2201955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2202955f2ea3SAbel Vesa 	.clkr = {
2203955f2ea3SAbel Vesa 		.enable_reg = 0x52008,
2204955f2ea3SAbel Vesa 		.enable_mask = BIT(22),
2205955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2206955f2ea3SAbel Vesa 			.name = "gcc_qupv3_wrap1_s0_clk",
220718aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
220818aa0dc2SDmitry Baryshkov 				&gcc_qupv3_wrap1_s0_clk_src.clkr.hw,
2209955f2ea3SAbel Vesa 			},
2210955f2ea3SAbel Vesa 			.num_parents = 1,
2211955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2212955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2213955f2ea3SAbel Vesa 		},
2214955f2ea3SAbel Vesa 	},
2215955f2ea3SAbel Vesa };
2216955f2ea3SAbel Vesa 
2217955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap1_s1_clk = {
2218955f2ea3SAbel Vesa 	.halt_reg = 0x1813c,
2219955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2220955f2ea3SAbel Vesa 	.clkr = {
2221955f2ea3SAbel Vesa 		.enable_reg = 0x52008,
2222955f2ea3SAbel Vesa 		.enable_mask = BIT(23),
2223955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2224955f2ea3SAbel Vesa 			.name = "gcc_qupv3_wrap1_s1_clk",
222518aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
222618aa0dc2SDmitry Baryshkov 				&gcc_qupv3_wrap1_s1_clk_src.clkr.hw,
2227955f2ea3SAbel Vesa 			},
2228955f2ea3SAbel Vesa 			.num_parents = 1,
2229955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2230955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2231955f2ea3SAbel Vesa 		},
2232955f2ea3SAbel Vesa 	},
2233955f2ea3SAbel Vesa };
2234955f2ea3SAbel Vesa 
2235955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap1_s2_clk = {
2236955f2ea3SAbel Vesa 	.halt_reg = 0x18274,
2237955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2238955f2ea3SAbel Vesa 	.clkr = {
2239955f2ea3SAbel Vesa 		.enable_reg = 0x52008,
2240955f2ea3SAbel Vesa 		.enable_mask = BIT(24),
2241955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2242955f2ea3SAbel Vesa 			.name = "gcc_qupv3_wrap1_s2_clk",
224318aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
224418aa0dc2SDmitry Baryshkov 				&gcc_qupv3_wrap1_s2_clk_src.clkr.hw,
2245955f2ea3SAbel Vesa 			},
2246955f2ea3SAbel Vesa 			.num_parents = 1,
2247955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2248955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2249955f2ea3SAbel Vesa 		},
2250955f2ea3SAbel Vesa 	},
2251955f2ea3SAbel Vesa };
2252955f2ea3SAbel Vesa 
2253955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap1_s3_clk = {
2254955f2ea3SAbel Vesa 	.halt_reg = 0x183ac,
2255955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2256955f2ea3SAbel Vesa 	.clkr = {
2257955f2ea3SAbel Vesa 		.enable_reg = 0x52008,
2258955f2ea3SAbel Vesa 		.enable_mask = BIT(25),
2259955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2260955f2ea3SAbel Vesa 			.name = "gcc_qupv3_wrap1_s3_clk",
226118aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
226218aa0dc2SDmitry Baryshkov 				&gcc_qupv3_wrap1_s3_clk_src.clkr.hw,
2263955f2ea3SAbel Vesa 			},
2264955f2ea3SAbel Vesa 			.num_parents = 1,
2265955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2266955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2267955f2ea3SAbel Vesa 		},
2268955f2ea3SAbel Vesa 	},
2269955f2ea3SAbel Vesa };
2270955f2ea3SAbel Vesa 
2271955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap1_s4_clk = {
2272955f2ea3SAbel Vesa 	.halt_reg = 0x184e4,
2273955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2274955f2ea3SAbel Vesa 	.clkr = {
2275955f2ea3SAbel Vesa 		.enable_reg = 0x52008,
2276955f2ea3SAbel Vesa 		.enable_mask = BIT(26),
2277955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2278955f2ea3SAbel Vesa 			.name = "gcc_qupv3_wrap1_s4_clk",
227918aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
228018aa0dc2SDmitry Baryshkov 				&gcc_qupv3_wrap1_s4_clk_src.clkr.hw,
2281955f2ea3SAbel Vesa 			},
2282955f2ea3SAbel Vesa 			.num_parents = 1,
2283955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2284955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2285955f2ea3SAbel Vesa 		},
2286955f2ea3SAbel Vesa 	},
2287955f2ea3SAbel Vesa };
2288955f2ea3SAbel Vesa 
2289955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap1_s5_clk = {
2290955f2ea3SAbel Vesa 	.halt_reg = 0x1861c,
2291955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2292955f2ea3SAbel Vesa 	.clkr = {
2293955f2ea3SAbel Vesa 		.enable_reg = 0x52008,
2294955f2ea3SAbel Vesa 		.enable_mask = BIT(27),
2295955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2296955f2ea3SAbel Vesa 			.name = "gcc_qupv3_wrap1_s5_clk",
229718aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
229818aa0dc2SDmitry Baryshkov 				&gcc_qupv3_wrap1_s5_clk_src.clkr.hw,
2299955f2ea3SAbel Vesa 			},
2300955f2ea3SAbel Vesa 			.num_parents = 1,
2301955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2302955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2303955f2ea3SAbel Vesa 		},
2304955f2ea3SAbel Vesa 	},
2305955f2ea3SAbel Vesa };
2306955f2ea3SAbel Vesa 
2307955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap1_s6_clk = {
2308955f2ea3SAbel Vesa 	.halt_reg = 0x18754,
2309955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2310955f2ea3SAbel Vesa 	.clkr = {
2311955f2ea3SAbel Vesa 		.enable_reg = 0x52008,
2312955f2ea3SAbel Vesa 		.enable_mask = BIT(28),
2313955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2314955f2ea3SAbel Vesa 			.name = "gcc_qupv3_wrap1_s6_clk",
231518aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
231618aa0dc2SDmitry Baryshkov 				&gcc_qupv3_wrap1_s6_clk_src.clkr.hw,
2317955f2ea3SAbel Vesa 			},
2318955f2ea3SAbel Vesa 			.num_parents = 1,
2319955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2320955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2321955f2ea3SAbel Vesa 		},
2322955f2ea3SAbel Vesa 	},
2323955f2ea3SAbel Vesa };
2324955f2ea3SAbel Vesa 
2325955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap1_s7_clk = {
2326955f2ea3SAbel Vesa 	.halt_reg = 0x1888c,
2327955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2328955f2ea3SAbel Vesa 	.clkr = {
2329955f2ea3SAbel Vesa 		.enable_reg = 0x52010,
2330955f2ea3SAbel Vesa 		.enable_mask = BIT(16),
2331955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2332955f2ea3SAbel Vesa 			.name = "gcc_qupv3_wrap1_s7_clk",
233318aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
233418aa0dc2SDmitry Baryshkov 				&gcc_qupv3_wrap1_s7_clk_src.clkr.hw,
2335955f2ea3SAbel Vesa 			},
2336955f2ea3SAbel Vesa 			.num_parents = 1,
2337955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2338955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2339955f2ea3SAbel Vesa 		},
2340955f2ea3SAbel Vesa 	},
2341955f2ea3SAbel Vesa };
2342955f2ea3SAbel Vesa 
2343955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap2_core_2x_clk = {
2344955f2ea3SAbel Vesa 	.halt_reg = 0x23004,
2345955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2346955f2ea3SAbel Vesa 	.clkr = {
2347955f2ea3SAbel Vesa 		.enable_reg = 0x52010,
2348955f2ea3SAbel Vesa 		.enable_mask = BIT(3),
2349955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2350955f2ea3SAbel Vesa 			.name = "gcc_qupv3_wrap2_core_2x_clk",
2351955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2352955f2ea3SAbel Vesa 		},
2353955f2ea3SAbel Vesa 	},
2354955f2ea3SAbel Vesa };
2355955f2ea3SAbel Vesa 
2356955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap2_core_clk = {
2357955f2ea3SAbel Vesa 	.halt_reg = 0x233d4,
2358955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2359955f2ea3SAbel Vesa 	.clkr = {
2360955f2ea3SAbel Vesa 		.enable_reg = 0x52010,
2361955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
2362955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2363955f2ea3SAbel Vesa 			.name = "gcc_qupv3_wrap2_core_clk",
2364955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2365955f2ea3SAbel Vesa 		},
2366955f2ea3SAbel Vesa 	},
2367955f2ea3SAbel Vesa };
2368955f2ea3SAbel Vesa 
2369955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap2_s0_clk = {
2370955f2ea3SAbel Vesa 	.halt_reg = 0x1e004,
2371955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2372955f2ea3SAbel Vesa 	.clkr = {
2373955f2ea3SAbel Vesa 		.enable_reg = 0x52010,
2374955f2ea3SAbel Vesa 		.enable_mask = BIT(4),
2375955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2376955f2ea3SAbel Vesa 			.name = "gcc_qupv3_wrap2_s0_clk",
237718aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
237818aa0dc2SDmitry Baryshkov 				&gcc_qupv3_wrap2_s0_clk_src.clkr.hw,
2379955f2ea3SAbel Vesa 			},
2380955f2ea3SAbel Vesa 			.num_parents = 1,
2381955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2382955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2383955f2ea3SAbel Vesa 		},
2384955f2ea3SAbel Vesa 	},
2385955f2ea3SAbel Vesa };
2386955f2ea3SAbel Vesa 
2387955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap2_s1_clk = {
2388955f2ea3SAbel Vesa 	.halt_reg = 0x1e13c,
2389955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2390955f2ea3SAbel Vesa 	.clkr = {
2391955f2ea3SAbel Vesa 		.enable_reg = 0x52010,
2392955f2ea3SAbel Vesa 		.enable_mask = BIT(5),
2393955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2394955f2ea3SAbel Vesa 			.name = "gcc_qupv3_wrap2_s1_clk",
239518aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
239618aa0dc2SDmitry Baryshkov 				&gcc_qupv3_wrap2_s1_clk_src.clkr.hw,
2397955f2ea3SAbel Vesa 			},
2398955f2ea3SAbel Vesa 			.num_parents = 1,
2399955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2400955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2401955f2ea3SAbel Vesa 		},
2402955f2ea3SAbel Vesa 	},
2403955f2ea3SAbel Vesa };
2404955f2ea3SAbel Vesa 
2405955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap2_s2_clk = {
2406955f2ea3SAbel Vesa 	.halt_reg = 0x1e274,
2407955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2408955f2ea3SAbel Vesa 	.clkr = {
2409955f2ea3SAbel Vesa 		.enable_reg = 0x52010,
2410955f2ea3SAbel Vesa 		.enable_mask = BIT(6),
2411955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2412955f2ea3SAbel Vesa 			.name = "gcc_qupv3_wrap2_s2_clk",
241318aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
241418aa0dc2SDmitry Baryshkov 				&gcc_qupv3_wrap2_s2_clk_src.clkr.hw,
2415955f2ea3SAbel Vesa 			},
2416955f2ea3SAbel Vesa 			.num_parents = 1,
2417955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2418955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2419955f2ea3SAbel Vesa 		},
2420955f2ea3SAbel Vesa 	},
2421955f2ea3SAbel Vesa };
2422955f2ea3SAbel Vesa 
2423955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap2_s3_clk = {
2424955f2ea3SAbel Vesa 	.halt_reg = 0x1e3ac,
2425955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2426955f2ea3SAbel Vesa 	.clkr = {
2427955f2ea3SAbel Vesa 		.enable_reg = 0x52010,
2428955f2ea3SAbel Vesa 		.enable_mask = BIT(7),
2429955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2430955f2ea3SAbel Vesa 			.name = "gcc_qupv3_wrap2_s3_clk",
243118aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
243218aa0dc2SDmitry Baryshkov 				&gcc_qupv3_wrap2_s3_clk_src.clkr.hw,
2433955f2ea3SAbel Vesa 			},
2434955f2ea3SAbel Vesa 			.num_parents = 1,
2435955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2436955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2437955f2ea3SAbel Vesa 		},
2438955f2ea3SAbel Vesa 	},
2439955f2ea3SAbel Vesa };
2440955f2ea3SAbel Vesa 
2441955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap2_s4_clk = {
2442955f2ea3SAbel Vesa 	.halt_reg = 0x1e4e4,
2443955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2444955f2ea3SAbel Vesa 	.clkr = {
2445955f2ea3SAbel Vesa 		.enable_reg = 0x52010,
2446955f2ea3SAbel Vesa 		.enable_mask = BIT(8),
2447955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2448955f2ea3SAbel Vesa 			.name = "gcc_qupv3_wrap2_s4_clk",
244918aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
245018aa0dc2SDmitry Baryshkov 				&gcc_qupv3_wrap2_s4_clk_src.clkr.hw,
2451955f2ea3SAbel Vesa 			},
2452955f2ea3SAbel Vesa 			.num_parents = 1,
2453955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2454955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2455955f2ea3SAbel Vesa 		},
2456955f2ea3SAbel Vesa 	},
2457955f2ea3SAbel Vesa };
2458955f2ea3SAbel Vesa 
2459955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap2_s5_clk = {
2460955f2ea3SAbel Vesa 	.halt_reg = 0x1e61c,
2461955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2462955f2ea3SAbel Vesa 	.clkr = {
2463955f2ea3SAbel Vesa 		.enable_reg = 0x52010,
2464955f2ea3SAbel Vesa 		.enable_mask = BIT(9),
2465955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2466955f2ea3SAbel Vesa 			.name = "gcc_qupv3_wrap2_s5_clk",
246718aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
246818aa0dc2SDmitry Baryshkov 				&gcc_qupv3_wrap2_s5_clk_src.clkr.hw,
2469955f2ea3SAbel Vesa 			},
2470955f2ea3SAbel Vesa 			.num_parents = 1,
2471955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2472955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2473955f2ea3SAbel Vesa 		},
2474955f2ea3SAbel Vesa 	},
2475955f2ea3SAbel Vesa };
2476955f2ea3SAbel Vesa 
2477955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap2_s6_clk = {
2478955f2ea3SAbel Vesa 	.halt_reg = 0x1e754,
2479955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2480955f2ea3SAbel Vesa 	.clkr = {
2481955f2ea3SAbel Vesa 		.enable_reg = 0x52010,
2482955f2ea3SAbel Vesa 		.enable_mask = BIT(10),
2483955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2484955f2ea3SAbel Vesa 			.name = "gcc_qupv3_wrap2_s6_clk",
248518aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
248618aa0dc2SDmitry Baryshkov 				&gcc_qupv3_wrap2_s6_clk_src.clkr.hw,
2487955f2ea3SAbel Vesa 			},
2488955f2ea3SAbel Vesa 			.num_parents = 1,
2489955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2490955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2491955f2ea3SAbel Vesa 		},
2492955f2ea3SAbel Vesa 	},
2493955f2ea3SAbel Vesa };
2494955f2ea3SAbel Vesa 
2495955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap2_s7_clk = {
2496955f2ea3SAbel Vesa 	.halt_reg = 0x1e88c,
2497955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2498955f2ea3SAbel Vesa 	.clkr = {
2499955f2ea3SAbel Vesa 		.enable_reg = 0x52010,
2500955f2ea3SAbel Vesa 		.enable_mask = BIT(17),
2501955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2502955f2ea3SAbel Vesa 			.name = "gcc_qupv3_wrap2_s7_clk",
250318aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
250418aa0dc2SDmitry Baryshkov 				&gcc_qupv3_wrap2_s7_clk_src.clkr.hw,
2505955f2ea3SAbel Vesa 			},
2506955f2ea3SAbel Vesa 			.num_parents = 1,
2507955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2508955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2509955f2ea3SAbel Vesa 		},
2510955f2ea3SAbel Vesa 	},
2511955f2ea3SAbel Vesa };
2512955f2ea3SAbel Vesa 
2513955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap_1_m_ahb_clk = {
2514955f2ea3SAbel Vesa 	.halt_reg = 0x2327c,
2515955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2516955f2ea3SAbel Vesa 	.hwcg_reg = 0x2327c,
2517955f2ea3SAbel Vesa 	.hwcg_bit = 1,
2518955f2ea3SAbel Vesa 	.clkr = {
2519955f2ea3SAbel Vesa 		.enable_reg = 0x52008,
2520955f2ea3SAbel Vesa 		.enable_mask = BIT(20),
2521955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2522955f2ea3SAbel Vesa 			.name = "gcc_qupv3_wrap_1_m_ahb_clk",
2523955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2524955f2ea3SAbel Vesa 		},
2525955f2ea3SAbel Vesa 	},
2526955f2ea3SAbel Vesa };
2527955f2ea3SAbel Vesa 
2528955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap_1_s_ahb_clk = {
2529955f2ea3SAbel Vesa 	.halt_reg = 0x23280,
2530955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2531955f2ea3SAbel Vesa 	.hwcg_reg = 0x23280,
2532955f2ea3SAbel Vesa 	.hwcg_bit = 1,
2533955f2ea3SAbel Vesa 	.clkr = {
2534955f2ea3SAbel Vesa 		.enable_reg = 0x52008,
2535955f2ea3SAbel Vesa 		.enable_mask = BIT(21),
2536955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2537955f2ea3SAbel Vesa 			.name = "gcc_qupv3_wrap_1_s_ahb_clk",
2538955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2539955f2ea3SAbel Vesa 		},
2540955f2ea3SAbel Vesa 	},
2541955f2ea3SAbel Vesa };
2542955f2ea3SAbel Vesa 
2543955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap_2_m_ahb_clk = {
2544955f2ea3SAbel Vesa 	.halt_reg = 0x233cc,
2545955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2546955f2ea3SAbel Vesa 	.hwcg_reg = 0x233cc,
2547955f2ea3SAbel Vesa 	.hwcg_bit = 1,
2548955f2ea3SAbel Vesa 	.clkr = {
2549955f2ea3SAbel Vesa 		.enable_reg = 0x52010,
2550955f2ea3SAbel Vesa 		.enable_mask = BIT(2),
2551955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2552955f2ea3SAbel Vesa 			.name = "gcc_qupv3_wrap_2_m_ahb_clk",
2553955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2554955f2ea3SAbel Vesa 		},
2555955f2ea3SAbel Vesa 	},
2556955f2ea3SAbel Vesa };
2557955f2ea3SAbel Vesa 
2558955f2ea3SAbel Vesa static struct clk_branch gcc_qupv3_wrap_2_s_ahb_clk = {
2559955f2ea3SAbel Vesa 	.halt_reg = 0x233d0,
2560955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2561955f2ea3SAbel Vesa 	.hwcg_reg = 0x233d0,
2562955f2ea3SAbel Vesa 	.hwcg_bit = 1,
2563955f2ea3SAbel Vesa 	.clkr = {
2564955f2ea3SAbel Vesa 		.enable_reg = 0x52010,
2565955f2ea3SAbel Vesa 		.enable_mask = BIT(1),
2566955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2567955f2ea3SAbel Vesa 			.name = "gcc_qupv3_wrap_2_s_ahb_clk",
2568955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2569955f2ea3SAbel Vesa 		},
2570955f2ea3SAbel Vesa 	},
2571955f2ea3SAbel Vesa };
2572955f2ea3SAbel Vesa 
2573955f2ea3SAbel Vesa static struct clk_branch gcc_sdcc2_ahb_clk = {
2574955f2ea3SAbel Vesa 	.halt_reg = 0x14010,
2575955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT,
2576955f2ea3SAbel Vesa 	.clkr = {
2577955f2ea3SAbel Vesa 		.enable_reg = 0x14010,
2578955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
2579955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2580955f2ea3SAbel Vesa 			.name = "gcc_sdcc2_ahb_clk",
2581955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2582955f2ea3SAbel Vesa 		},
2583955f2ea3SAbel Vesa 	},
2584955f2ea3SAbel Vesa };
2585955f2ea3SAbel Vesa 
2586955f2ea3SAbel Vesa static struct clk_branch gcc_sdcc2_apps_clk = {
2587955f2ea3SAbel Vesa 	.halt_reg = 0x14004,
2588955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT,
2589955f2ea3SAbel Vesa 	.clkr = {
2590955f2ea3SAbel Vesa 		.enable_reg = 0x14004,
2591955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
2592955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2593955f2ea3SAbel Vesa 			.name = "gcc_sdcc2_apps_clk",
259418aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
259518aa0dc2SDmitry Baryshkov 				&gcc_sdcc2_apps_clk_src.clkr.hw,
2596955f2ea3SAbel Vesa 			},
2597955f2ea3SAbel Vesa 			.num_parents = 1,
2598955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2599955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2600955f2ea3SAbel Vesa 		},
2601955f2ea3SAbel Vesa 	},
2602955f2ea3SAbel Vesa };
2603955f2ea3SAbel Vesa 
2604955f2ea3SAbel Vesa static struct clk_branch gcc_sdcc4_ahb_clk = {
2605955f2ea3SAbel Vesa 	.halt_reg = 0x16010,
2606955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT,
2607955f2ea3SAbel Vesa 	.clkr = {
2608955f2ea3SAbel Vesa 		.enable_reg = 0x16010,
2609955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
2610955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2611955f2ea3SAbel Vesa 			.name = "gcc_sdcc4_ahb_clk",
2612955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2613955f2ea3SAbel Vesa 		},
2614955f2ea3SAbel Vesa 	},
2615955f2ea3SAbel Vesa };
2616955f2ea3SAbel Vesa 
2617955f2ea3SAbel Vesa static struct clk_branch gcc_sdcc4_apps_clk = {
2618955f2ea3SAbel Vesa 	.halt_reg = 0x16004,
2619955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT,
2620955f2ea3SAbel Vesa 	.clkr = {
2621955f2ea3SAbel Vesa 		.enable_reg = 0x16004,
2622955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
2623955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2624955f2ea3SAbel Vesa 			.name = "gcc_sdcc4_apps_clk",
262518aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
262618aa0dc2SDmitry Baryshkov 				&gcc_sdcc4_apps_clk_src.clkr.hw,
2627955f2ea3SAbel Vesa 			},
2628955f2ea3SAbel Vesa 			.num_parents = 1,
2629955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2630955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2631955f2ea3SAbel Vesa 		},
2632955f2ea3SAbel Vesa 	},
2633955f2ea3SAbel Vesa };
2634955f2ea3SAbel Vesa 
2635955f2ea3SAbel Vesa static struct clk_branch gcc_ufs_phy_ahb_clk = {
2636955f2ea3SAbel Vesa 	.halt_reg = 0x77024,
2637955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2638955f2ea3SAbel Vesa 	.hwcg_reg = 0x77024,
2639955f2ea3SAbel Vesa 	.hwcg_bit = 1,
2640955f2ea3SAbel Vesa 	.clkr = {
2641955f2ea3SAbel Vesa 		.enable_reg = 0x77024,
2642955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
2643955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2644955f2ea3SAbel Vesa 			.name = "gcc_ufs_phy_ahb_clk",
2645955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2646955f2ea3SAbel Vesa 		},
2647955f2ea3SAbel Vesa 	},
2648955f2ea3SAbel Vesa };
2649955f2ea3SAbel Vesa 
2650955f2ea3SAbel Vesa static struct clk_branch gcc_ufs_phy_axi_clk = {
2651955f2ea3SAbel Vesa 	.halt_reg = 0x77018,
2652955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2653955f2ea3SAbel Vesa 	.hwcg_reg = 0x77018,
2654955f2ea3SAbel Vesa 	.hwcg_bit = 1,
2655955f2ea3SAbel Vesa 	.clkr = {
2656955f2ea3SAbel Vesa 		.enable_reg = 0x77018,
2657955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
2658955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2659955f2ea3SAbel Vesa 			.name = "gcc_ufs_phy_axi_clk",
266018aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
266118aa0dc2SDmitry Baryshkov 				&gcc_ufs_phy_axi_clk_src.clkr.hw,
2662955f2ea3SAbel Vesa 			},
2663955f2ea3SAbel Vesa 			.num_parents = 1,
2664955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2665955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2666955f2ea3SAbel Vesa 		},
2667955f2ea3SAbel Vesa 	},
2668955f2ea3SAbel Vesa };
2669955f2ea3SAbel Vesa 
2670955f2ea3SAbel Vesa static struct clk_branch gcc_ufs_phy_axi_hw_ctl_clk = {
2671955f2ea3SAbel Vesa 	.halt_reg = 0x77018,
2672955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2673955f2ea3SAbel Vesa 	.hwcg_reg = 0x77018,
2674955f2ea3SAbel Vesa 	.hwcg_bit = 1,
2675955f2ea3SAbel Vesa 	.clkr = {
2676955f2ea3SAbel Vesa 		.enable_reg = 0x77018,
2677955f2ea3SAbel Vesa 		.enable_mask = BIT(1),
2678955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2679955f2ea3SAbel Vesa 			.name = "gcc_ufs_phy_axi_hw_ctl_clk",
268018aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
268118aa0dc2SDmitry Baryshkov 				&gcc_ufs_phy_axi_clk_src.clkr.hw,
2682955f2ea3SAbel Vesa 			},
2683955f2ea3SAbel Vesa 			.num_parents = 1,
2684955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2685955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2686955f2ea3SAbel Vesa 		},
2687955f2ea3SAbel Vesa 	},
2688955f2ea3SAbel Vesa };
2689955f2ea3SAbel Vesa 
2690955f2ea3SAbel Vesa static struct clk_branch gcc_ufs_phy_ice_core_clk = {
2691955f2ea3SAbel Vesa 	.halt_reg = 0x77074,
2692955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2693955f2ea3SAbel Vesa 	.hwcg_reg = 0x77074,
2694955f2ea3SAbel Vesa 	.hwcg_bit = 1,
2695955f2ea3SAbel Vesa 	.clkr = {
2696955f2ea3SAbel Vesa 		.enable_reg = 0x77074,
2697955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
2698955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2699955f2ea3SAbel Vesa 			.name = "gcc_ufs_phy_ice_core_clk",
270018aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
270118aa0dc2SDmitry Baryshkov 				&gcc_ufs_phy_ice_core_clk_src.clkr.hw,
2702955f2ea3SAbel Vesa 			},
2703955f2ea3SAbel Vesa 			.num_parents = 1,
2704955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2705955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2706955f2ea3SAbel Vesa 		},
2707955f2ea3SAbel Vesa 	},
2708955f2ea3SAbel Vesa };
2709955f2ea3SAbel Vesa 
2710955f2ea3SAbel Vesa static struct clk_branch gcc_ufs_phy_ice_core_hw_ctl_clk = {
2711955f2ea3SAbel Vesa 	.halt_reg = 0x77074,
2712955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2713955f2ea3SAbel Vesa 	.hwcg_reg = 0x77074,
2714955f2ea3SAbel Vesa 	.hwcg_bit = 1,
2715955f2ea3SAbel Vesa 	.clkr = {
2716955f2ea3SAbel Vesa 		.enable_reg = 0x77074,
2717955f2ea3SAbel Vesa 		.enable_mask = BIT(1),
2718955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2719955f2ea3SAbel Vesa 			.name = "gcc_ufs_phy_ice_core_hw_ctl_clk",
272018aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
272118aa0dc2SDmitry Baryshkov 				&gcc_ufs_phy_ice_core_clk_src.clkr.hw,
2722955f2ea3SAbel Vesa 			},
2723955f2ea3SAbel Vesa 			.num_parents = 1,
2724955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2725955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2726955f2ea3SAbel Vesa 		},
2727955f2ea3SAbel Vesa 	},
2728955f2ea3SAbel Vesa };
2729955f2ea3SAbel Vesa 
2730955f2ea3SAbel Vesa static struct clk_branch gcc_ufs_phy_phy_aux_clk = {
2731955f2ea3SAbel Vesa 	.halt_reg = 0x770b0,
2732955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2733955f2ea3SAbel Vesa 	.hwcg_reg = 0x770b0,
2734955f2ea3SAbel Vesa 	.hwcg_bit = 1,
2735955f2ea3SAbel Vesa 	.clkr = {
2736955f2ea3SAbel Vesa 		.enable_reg = 0x770b0,
2737955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
2738955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2739955f2ea3SAbel Vesa 			.name = "gcc_ufs_phy_phy_aux_clk",
274018aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
274118aa0dc2SDmitry Baryshkov 				&gcc_ufs_phy_phy_aux_clk_src.clkr.hw,
2742955f2ea3SAbel Vesa 			},
2743955f2ea3SAbel Vesa 			.num_parents = 1,
2744955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2745955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2746955f2ea3SAbel Vesa 		},
2747955f2ea3SAbel Vesa 	},
2748955f2ea3SAbel Vesa };
2749955f2ea3SAbel Vesa 
2750955f2ea3SAbel Vesa static struct clk_branch gcc_ufs_phy_phy_aux_hw_ctl_clk = {
2751955f2ea3SAbel Vesa 	.halt_reg = 0x770b0,
2752955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2753955f2ea3SAbel Vesa 	.hwcg_reg = 0x770b0,
2754955f2ea3SAbel Vesa 	.hwcg_bit = 1,
2755955f2ea3SAbel Vesa 	.clkr = {
2756955f2ea3SAbel Vesa 		.enable_reg = 0x770b0,
2757955f2ea3SAbel Vesa 		.enable_mask = BIT(1),
2758955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2759955f2ea3SAbel Vesa 			.name = "gcc_ufs_phy_phy_aux_hw_ctl_clk",
276018aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
276118aa0dc2SDmitry Baryshkov 				&gcc_ufs_phy_phy_aux_clk_src.clkr.hw,
2762955f2ea3SAbel Vesa 			},
2763955f2ea3SAbel Vesa 			.num_parents = 1,
2764955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2765955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2766955f2ea3SAbel Vesa 		},
2767955f2ea3SAbel Vesa 	},
2768955f2ea3SAbel Vesa };
2769955f2ea3SAbel Vesa 
2770955f2ea3SAbel Vesa static struct clk_branch gcc_ufs_phy_rx_symbol_0_clk = {
2771955f2ea3SAbel Vesa 	.halt_reg = 0x7702c,
2772955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_DELAY,
2773955f2ea3SAbel Vesa 	.clkr = {
2774955f2ea3SAbel Vesa 		.enable_reg = 0x7702c,
2775955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
2776955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2777955f2ea3SAbel Vesa 			.name = "gcc_ufs_phy_rx_symbol_0_clk",
277818aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
277918aa0dc2SDmitry Baryshkov 				&gcc_ufs_phy_rx_symbol_0_clk_src.clkr.hw,
2780955f2ea3SAbel Vesa 			},
2781955f2ea3SAbel Vesa 			.num_parents = 1,
2782955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2783955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2784955f2ea3SAbel Vesa 		},
2785955f2ea3SAbel Vesa 	},
2786955f2ea3SAbel Vesa };
2787955f2ea3SAbel Vesa 
2788955f2ea3SAbel Vesa static struct clk_branch gcc_ufs_phy_rx_symbol_1_clk = {
2789955f2ea3SAbel Vesa 	.halt_reg = 0x770cc,
2790955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_DELAY,
2791955f2ea3SAbel Vesa 	.clkr = {
2792955f2ea3SAbel Vesa 		.enable_reg = 0x770cc,
2793955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
2794955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2795955f2ea3SAbel Vesa 			.name = "gcc_ufs_phy_rx_symbol_1_clk",
279618aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
279718aa0dc2SDmitry Baryshkov 				&gcc_ufs_phy_rx_symbol_1_clk_src.clkr.hw,
2798955f2ea3SAbel Vesa 			},
2799955f2ea3SAbel Vesa 			.num_parents = 1,
2800955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2801955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2802955f2ea3SAbel Vesa 		},
2803955f2ea3SAbel Vesa 	},
2804955f2ea3SAbel Vesa };
2805955f2ea3SAbel Vesa 
2806955f2ea3SAbel Vesa static struct clk_branch gcc_ufs_phy_tx_symbol_0_clk = {
2807955f2ea3SAbel Vesa 	.halt_reg = 0x77028,
2808955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_DELAY,
2809955f2ea3SAbel Vesa 	.clkr = {
2810955f2ea3SAbel Vesa 		.enable_reg = 0x77028,
2811955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
2812955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2813955f2ea3SAbel Vesa 			.name = "gcc_ufs_phy_tx_symbol_0_clk",
281418aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
281518aa0dc2SDmitry Baryshkov 				&gcc_ufs_phy_tx_symbol_0_clk_src.clkr.hw,
2816955f2ea3SAbel Vesa 			},
2817955f2ea3SAbel Vesa 			.num_parents = 1,
2818955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2819955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2820955f2ea3SAbel Vesa 		},
2821955f2ea3SAbel Vesa 	},
2822955f2ea3SAbel Vesa };
2823955f2ea3SAbel Vesa 
2824955f2ea3SAbel Vesa static struct clk_branch gcc_ufs_phy_unipro_core_clk = {
2825955f2ea3SAbel Vesa 	.halt_reg = 0x77068,
2826955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2827955f2ea3SAbel Vesa 	.hwcg_reg = 0x77068,
2828955f2ea3SAbel Vesa 	.hwcg_bit = 1,
2829955f2ea3SAbel Vesa 	.clkr = {
2830955f2ea3SAbel Vesa 		.enable_reg = 0x77068,
2831955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
2832955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2833955f2ea3SAbel Vesa 			.name = "gcc_ufs_phy_unipro_core_clk",
283418aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
283518aa0dc2SDmitry Baryshkov 				&gcc_ufs_phy_unipro_core_clk_src.clkr.hw,
2836955f2ea3SAbel Vesa 			},
2837955f2ea3SAbel Vesa 			.num_parents = 1,
2838955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2839955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2840955f2ea3SAbel Vesa 		},
2841955f2ea3SAbel Vesa 	},
2842955f2ea3SAbel Vesa };
2843955f2ea3SAbel Vesa 
2844955f2ea3SAbel Vesa static struct clk_branch gcc_ufs_phy_unipro_core_hw_ctl_clk = {
2845955f2ea3SAbel Vesa 	.halt_reg = 0x77068,
2846955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_VOTED,
2847955f2ea3SAbel Vesa 	.hwcg_reg = 0x77068,
2848955f2ea3SAbel Vesa 	.hwcg_bit = 1,
2849955f2ea3SAbel Vesa 	.clkr = {
2850955f2ea3SAbel Vesa 		.enable_reg = 0x77068,
2851955f2ea3SAbel Vesa 		.enable_mask = BIT(1),
2852955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2853955f2ea3SAbel Vesa 			.name = "gcc_ufs_phy_unipro_core_hw_ctl_clk",
285418aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
285518aa0dc2SDmitry Baryshkov 				&gcc_ufs_phy_unipro_core_clk_src.clkr.hw,
2856955f2ea3SAbel Vesa 			},
2857955f2ea3SAbel Vesa 			.num_parents = 1,
2858955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2859955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2860955f2ea3SAbel Vesa 		},
2861955f2ea3SAbel Vesa 	},
2862955f2ea3SAbel Vesa };
2863955f2ea3SAbel Vesa 
2864955f2ea3SAbel Vesa static struct clk_branch gcc_usb30_prim_master_clk = {
2865955f2ea3SAbel Vesa 	.halt_reg = 0x39018,
2866955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT,
2867955f2ea3SAbel Vesa 	.clkr = {
2868955f2ea3SAbel Vesa 		.enable_reg = 0x39018,
2869955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
2870955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2871955f2ea3SAbel Vesa 			.name = "gcc_usb30_prim_master_clk",
287218aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
287318aa0dc2SDmitry Baryshkov 				&gcc_usb30_prim_master_clk_src.clkr.hw,
2874955f2ea3SAbel Vesa 			},
2875955f2ea3SAbel Vesa 			.num_parents = 1,
2876955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2877955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2878955f2ea3SAbel Vesa 		},
2879955f2ea3SAbel Vesa 	},
2880955f2ea3SAbel Vesa };
2881955f2ea3SAbel Vesa 
2882955f2ea3SAbel Vesa static struct clk_branch gcc_usb30_prim_mock_utmi_clk = {
2883955f2ea3SAbel Vesa 	.halt_reg = 0x39028,
2884955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT,
2885955f2ea3SAbel Vesa 	.clkr = {
2886955f2ea3SAbel Vesa 		.enable_reg = 0x39028,
2887955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
2888955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2889955f2ea3SAbel Vesa 			.name = "gcc_usb30_prim_mock_utmi_clk",
289018aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
289118aa0dc2SDmitry Baryshkov 				&gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr.hw,
2892955f2ea3SAbel Vesa 			},
2893955f2ea3SAbel Vesa 			.num_parents = 1,
2894955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2895955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2896955f2ea3SAbel Vesa 		},
2897955f2ea3SAbel Vesa 	},
2898955f2ea3SAbel Vesa };
2899955f2ea3SAbel Vesa 
2900955f2ea3SAbel Vesa static struct clk_branch gcc_usb30_prim_sleep_clk = {
2901955f2ea3SAbel Vesa 	.halt_reg = 0x39024,
2902955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT,
2903955f2ea3SAbel Vesa 	.clkr = {
2904955f2ea3SAbel Vesa 		.enable_reg = 0x39024,
2905955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
2906955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2907955f2ea3SAbel Vesa 			.name = "gcc_usb30_prim_sleep_clk",
2908955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2909955f2ea3SAbel Vesa 		},
2910955f2ea3SAbel Vesa 	},
2911955f2ea3SAbel Vesa };
2912955f2ea3SAbel Vesa 
2913955f2ea3SAbel Vesa static struct clk_branch gcc_usb3_prim_phy_aux_clk = {
2914955f2ea3SAbel Vesa 	.halt_reg = 0x39060,
2915955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT,
2916955f2ea3SAbel Vesa 	.clkr = {
2917955f2ea3SAbel Vesa 		.enable_reg = 0x39060,
2918955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
2919955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2920955f2ea3SAbel Vesa 			.name = "gcc_usb3_prim_phy_aux_clk",
292118aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
292218aa0dc2SDmitry Baryshkov 				&gcc_usb3_prim_phy_aux_clk_src.clkr.hw,
2923955f2ea3SAbel Vesa 			},
2924955f2ea3SAbel Vesa 			.num_parents = 1,
2925955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2926955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2927955f2ea3SAbel Vesa 		},
2928955f2ea3SAbel Vesa 	},
2929955f2ea3SAbel Vesa };
2930955f2ea3SAbel Vesa 
2931955f2ea3SAbel Vesa static struct clk_branch gcc_usb3_prim_phy_com_aux_clk = {
2932955f2ea3SAbel Vesa 	.halt_reg = 0x39064,
2933955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT,
2934955f2ea3SAbel Vesa 	.clkr = {
2935955f2ea3SAbel Vesa 		.enable_reg = 0x39064,
2936955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
2937955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2938955f2ea3SAbel Vesa 			.name = "gcc_usb3_prim_phy_com_aux_clk",
293918aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
294018aa0dc2SDmitry Baryshkov 				&gcc_usb3_prim_phy_aux_clk_src.clkr.hw,
2941955f2ea3SAbel Vesa 			},
2942955f2ea3SAbel Vesa 			.num_parents = 1,
2943955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2944955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2945955f2ea3SAbel Vesa 		},
2946955f2ea3SAbel Vesa 	},
2947955f2ea3SAbel Vesa };
2948955f2ea3SAbel Vesa 
2949955f2ea3SAbel Vesa static struct clk_branch gcc_usb3_prim_phy_pipe_clk = {
2950955f2ea3SAbel Vesa 	.halt_reg = 0x39068,
2951955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_DELAY,
2952955f2ea3SAbel Vesa 	.hwcg_reg = 0x39068,
2953955f2ea3SAbel Vesa 	.hwcg_bit = 1,
2954955f2ea3SAbel Vesa 	.clkr = {
2955955f2ea3SAbel Vesa 		.enable_reg = 0x39068,
2956955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
2957955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2958955f2ea3SAbel Vesa 			.name = "gcc_usb3_prim_phy_pipe_clk",
295918aa0dc2SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
296018aa0dc2SDmitry Baryshkov 				&gcc_usb3_prim_phy_pipe_clk_src.clkr.hw,
2961955f2ea3SAbel Vesa 			},
2962955f2ea3SAbel Vesa 			.num_parents = 1,
2963955f2ea3SAbel Vesa 			.flags = CLK_SET_RATE_PARENT,
2964955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2965955f2ea3SAbel Vesa 		},
2966955f2ea3SAbel Vesa 	},
2967955f2ea3SAbel Vesa };
2968955f2ea3SAbel Vesa 
2969955f2ea3SAbel Vesa static struct clk_branch gcc_video_axi0_clk = {
2970955f2ea3SAbel Vesa 	.halt_reg = 0x32018,
2971955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_SKIP,
2972955f2ea3SAbel Vesa 	.hwcg_reg = 0x32018,
2973955f2ea3SAbel Vesa 	.hwcg_bit = 1,
2974955f2ea3SAbel Vesa 	.clkr = {
2975955f2ea3SAbel Vesa 		.enable_reg = 0x32018,
2976955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
2977955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2978955f2ea3SAbel Vesa 			.name = "gcc_video_axi0_clk",
2979955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2980955f2ea3SAbel Vesa 		},
2981955f2ea3SAbel Vesa 	},
2982955f2ea3SAbel Vesa };
2983955f2ea3SAbel Vesa 
2984955f2ea3SAbel Vesa static struct clk_branch gcc_video_axi1_clk = {
2985955f2ea3SAbel Vesa 	.halt_reg = 0x32024,
2986955f2ea3SAbel Vesa 	.halt_check = BRANCH_HALT_SKIP,
2987955f2ea3SAbel Vesa 	.hwcg_reg = 0x32024,
2988955f2ea3SAbel Vesa 	.hwcg_bit = 1,
2989955f2ea3SAbel Vesa 	.clkr = {
2990955f2ea3SAbel Vesa 		.enable_reg = 0x32024,
2991955f2ea3SAbel Vesa 		.enable_mask = BIT(0),
2992955f2ea3SAbel Vesa 		.hw.init = &(struct clk_init_data){
2993955f2ea3SAbel Vesa 			.name = "gcc_video_axi1_clk",
2994955f2ea3SAbel Vesa 			.ops = &clk_branch2_ops,
2995955f2ea3SAbel Vesa 		},
2996955f2ea3SAbel Vesa 	},
2997955f2ea3SAbel Vesa };
2998955f2ea3SAbel Vesa 
2999955f2ea3SAbel Vesa static struct gdsc pcie_0_gdsc = {
3000955f2ea3SAbel Vesa 	.gdscr = 0x6b004,
3001a7a5ec56SKonrad Dybcio 	.collapse_ctrl = 0x52020,
3002a7a5ec56SKonrad Dybcio 	.collapse_mask = BIT(0),
3003955f2ea3SAbel Vesa 	.pd = {
3004955f2ea3SAbel Vesa 		.name = "pcie_0_gdsc",
3005955f2ea3SAbel Vesa 	},
3006955f2ea3SAbel Vesa 	.pwrsts = PWRSTS_OFF_ON,
300762f53fe9SKonrad Dybcio 	.flags = VOTABLE | POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
3008955f2ea3SAbel Vesa };
3009955f2ea3SAbel Vesa 
3010955f2ea3SAbel Vesa static struct gdsc pcie_0_phy_gdsc = {
3011955f2ea3SAbel Vesa 	.gdscr = 0x6c000,
3012a7a5ec56SKonrad Dybcio 	.collapse_ctrl = 0x52020,
3013a7a5ec56SKonrad Dybcio 	.collapse_mask = BIT(3),
3014955f2ea3SAbel Vesa 	.pd = {
3015955f2ea3SAbel Vesa 		.name = "pcie_0_phy_gdsc",
3016955f2ea3SAbel Vesa 	},
3017955f2ea3SAbel Vesa 	.pwrsts = PWRSTS_OFF_ON,
301862f53fe9SKonrad Dybcio 	.flags = VOTABLE | POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
3019955f2ea3SAbel Vesa };
3020955f2ea3SAbel Vesa 
3021955f2ea3SAbel Vesa static struct gdsc pcie_1_gdsc = {
3022955f2ea3SAbel Vesa 	.gdscr = 0x8d004,
3023a7a5ec56SKonrad Dybcio 	.collapse_ctrl = 0x52020,
3024a7a5ec56SKonrad Dybcio 	.collapse_mask = BIT(1),
3025955f2ea3SAbel Vesa 	.pd = {
3026955f2ea3SAbel Vesa 		.name = "pcie_1_gdsc",
3027955f2ea3SAbel Vesa 	},
3028955f2ea3SAbel Vesa 	.pwrsts = PWRSTS_OFF_ON,
302962f53fe9SKonrad Dybcio 	.flags = VOTABLE | POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
3030955f2ea3SAbel Vesa };
3031955f2ea3SAbel Vesa 
3032955f2ea3SAbel Vesa static struct gdsc pcie_1_phy_gdsc = {
3033955f2ea3SAbel Vesa 	.gdscr = 0x8e000,
3034a7a5ec56SKonrad Dybcio 	.collapse_ctrl = 0x52020,
3035a7a5ec56SKonrad Dybcio 	.collapse_mask = BIT(4),
3036955f2ea3SAbel Vesa 	.pd = {
3037955f2ea3SAbel Vesa 		.name = "pcie_1_phy_gdsc",
3038955f2ea3SAbel Vesa 	},
3039955f2ea3SAbel Vesa 	.pwrsts = PWRSTS_OFF_ON,
304062f53fe9SKonrad Dybcio 	.flags = VOTABLE | POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
3041955f2ea3SAbel Vesa };
3042955f2ea3SAbel Vesa 
3043955f2ea3SAbel Vesa static struct gdsc ufs_phy_gdsc = {
3044955f2ea3SAbel Vesa 	.gdscr = 0x77004,
3045955f2ea3SAbel Vesa 	.pd = {
3046955f2ea3SAbel Vesa 		.name = "ufs_phy_gdsc",
3047955f2ea3SAbel Vesa 	},
3048955f2ea3SAbel Vesa 	.pwrsts = PWRSTS_OFF_ON,
3049b5782964SKonrad Dybcio 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
3050955f2ea3SAbel Vesa };
3051955f2ea3SAbel Vesa 
3052955f2ea3SAbel Vesa static struct gdsc ufs_mem_phy_gdsc = {
3053955f2ea3SAbel Vesa 	.gdscr = 0x9e000,
3054955f2ea3SAbel Vesa 	.pd = {
3055955f2ea3SAbel Vesa 		.name = "ufs_mem_phy_gdsc",
3056955f2ea3SAbel Vesa 	},
3057955f2ea3SAbel Vesa 	.pwrsts = PWRSTS_OFF_ON,
3058b5782964SKonrad Dybcio 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
3059955f2ea3SAbel Vesa };
3060955f2ea3SAbel Vesa 
3061955f2ea3SAbel Vesa static struct gdsc usb30_prim_gdsc = {
3062955f2ea3SAbel Vesa 	.gdscr = 0x39004,
3063955f2ea3SAbel Vesa 	.pd = {
3064955f2ea3SAbel Vesa 		.name = "usb30_prim_gdsc",
3065955f2ea3SAbel Vesa 	},
3066955f2ea3SAbel Vesa 	.pwrsts = PWRSTS_OFF_ON,
3067b5782964SKonrad Dybcio 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
3068955f2ea3SAbel Vesa };
3069955f2ea3SAbel Vesa 
3070955f2ea3SAbel Vesa static struct gdsc usb3_phy_gdsc = {
3071955f2ea3SAbel Vesa 	.gdscr = 0x50018,
3072955f2ea3SAbel Vesa 	.pd = {
3073955f2ea3SAbel Vesa 		.name = "usb3_phy_gdsc",
3074955f2ea3SAbel Vesa 	},
3075955f2ea3SAbel Vesa 	.pwrsts = PWRSTS_OFF_ON,
3076b5782964SKonrad Dybcio 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
3077955f2ea3SAbel Vesa };
3078955f2ea3SAbel Vesa 
3079955f2ea3SAbel Vesa static struct clk_regmap *gcc_sm8550_clocks[] = {
3080955f2ea3SAbel Vesa 	[GCC_AGGRE_NOC_PCIE_AXI_CLK] = &gcc_aggre_noc_pcie_axi_clk.clkr,
3081955f2ea3SAbel Vesa 	[GCC_AGGRE_UFS_PHY_AXI_CLK] = &gcc_aggre_ufs_phy_axi_clk.clkr,
3082955f2ea3SAbel Vesa 	[GCC_AGGRE_UFS_PHY_AXI_HW_CTL_CLK] = &gcc_aggre_ufs_phy_axi_hw_ctl_clk.clkr,
3083955f2ea3SAbel Vesa 	[GCC_AGGRE_USB3_PRIM_AXI_CLK] = &gcc_aggre_usb3_prim_axi_clk.clkr,
3084955f2ea3SAbel Vesa 	[GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
3085955f2ea3SAbel Vesa 	[GCC_CAMERA_HF_AXI_CLK] = &gcc_camera_hf_axi_clk.clkr,
3086955f2ea3SAbel Vesa 	[GCC_CAMERA_SF_AXI_CLK] = &gcc_camera_sf_axi_clk.clkr,
3087955f2ea3SAbel Vesa 	[GCC_CFG_NOC_PCIE_ANOC_AHB_CLK] = &gcc_cfg_noc_pcie_anoc_ahb_clk.clkr,
3088955f2ea3SAbel Vesa 	[GCC_CFG_NOC_USB3_PRIM_AXI_CLK] = &gcc_cfg_noc_usb3_prim_axi_clk.clkr,
3089955f2ea3SAbel Vesa 	[GCC_CNOC_PCIE_SF_AXI_CLK] = &gcc_cnoc_pcie_sf_axi_clk.clkr,
3090955f2ea3SAbel Vesa 	[GCC_DDRSS_GPU_AXI_CLK] = &gcc_ddrss_gpu_axi_clk.clkr,
3091955f2ea3SAbel Vesa 	[GCC_DDRSS_PCIE_SF_QTB_CLK] = &gcc_ddrss_pcie_sf_qtb_clk.clkr,
3092955f2ea3SAbel Vesa 	[GCC_DISP_HF_AXI_CLK] = &gcc_disp_hf_axi_clk.clkr,
3093955f2ea3SAbel Vesa 	[GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
3094955f2ea3SAbel Vesa 	[GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr,
3095955f2ea3SAbel Vesa 	[GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
3096955f2ea3SAbel Vesa 	[GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr,
3097955f2ea3SAbel Vesa 	[GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
3098955f2ea3SAbel Vesa 	[GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr,
3099955f2ea3SAbel Vesa 	[GCC_GPLL0] = &gcc_gpll0.clkr,
3100955f2ea3SAbel Vesa 	[GCC_GPLL0_OUT_EVEN] = &gcc_gpll0_out_even.clkr,
3101955f2ea3SAbel Vesa 	[GCC_GPLL4] = &gcc_gpll4.clkr,
3102955f2ea3SAbel Vesa 	[GCC_GPLL7] = &gcc_gpll7.clkr,
3103955f2ea3SAbel Vesa 	[GCC_GPLL9] = &gcc_gpll9.clkr,
3104955f2ea3SAbel Vesa 	[GCC_GPU_GPLL0_CLK_SRC] = &gcc_gpu_gpll0_clk_src.clkr,
3105955f2ea3SAbel Vesa 	[GCC_GPU_GPLL0_DIV_CLK_SRC] = &gcc_gpu_gpll0_div_clk_src.clkr,
3106955f2ea3SAbel Vesa 	[GCC_GPU_MEMNOC_GFX_CLK] = &gcc_gpu_memnoc_gfx_clk.clkr,
3107955f2ea3SAbel Vesa 	[GCC_GPU_SNOC_DVM_GFX_CLK] = &gcc_gpu_snoc_dvm_gfx_clk.clkr,
3108955f2ea3SAbel Vesa 	[GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,
3109955f2ea3SAbel Vesa 	[GCC_PCIE_0_AUX_CLK_SRC] = &gcc_pcie_0_aux_clk_src.clkr,
3110955f2ea3SAbel Vesa 	[GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr,
3111955f2ea3SAbel Vesa 	[GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr,
3112955f2ea3SAbel Vesa 	[GCC_PCIE_0_PHY_RCHNG_CLK] = &gcc_pcie_0_phy_rchng_clk.clkr,
3113955f2ea3SAbel Vesa 	[GCC_PCIE_0_PHY_RCHNG_CLK_SRC] = &gcc_pcie_0_phy_rchng_clk_src.clkr,
3114955f2ea3SAbel Vesa 	[GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,
3115955f2ea3SAbel Vesa 	[GCC_PCIE_0_PIPE_CLK_SRC] = &gcc_pcie_0_pipe_clk_src.clkr,
3116955f2ea3SAbel Vesa 	[GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr,
3117955f2ea3SAbel Vesa 	[GCC_PCIE_0_SLV_Q2A_AXI_CLK] = &gcc_pcie_0_slv_q2a_axi_clk.clkr,
3118955f2ea3SAbel Vesa 	[GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,
3119955f2ea3SAbel Vesa 	[GCC_PCIE_1_AUX_CLK_SRC] = &gcc_pcie_1_aux_clk_src.clkr,
3120955f2ea3SAbel Vesa 	[GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr,
3121955f2ea3SAbel Vesa 	[GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr,
3122955f2ea3SAbel Vesa 	[GCC_PCIE_1_PHY_AUX_CLK] = &gcc_pcie_1_phy_aux_clk.clkr,
3123955f2ea3SAbel Vesa 	[GCC_PCIE_1_PHY_AUX_CLK_SRC] = &gcc_pcie_1_phy_aux_clk_src.clkr,
3124955f2ea3SAbel Vesa 	[GCC_PCIE_1_PHY_RCHNG_CLK] = &gcc_pcie_1_phy_rchng_clk.clkr,
3125955f2ea3SAbel Vesa 	[GCC_PCIE_1_PHY_RCHNG_CLK_SRC] = &gcc_pcie_1_phy_rchng_clk_src.clkr,
3126955f2ea3SAbel Vesa 	[GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,
3127955f2ea3SAbel Vesa 	[GCC_PCIE_1_PIPE_CLK_SRC] = &gcc_pcie_1_pipe_clk_src.clkr,
3128955f2ea3SAbel Vesa 	[GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr,
3129955f2ea3SAbel Vesa 	[GCC_PCIE_1_SLV_Q2A_AXI_CLK] = &gcc_pcie_1_slv_q2a_axi_clk.clkr,
3130955f2ea3SAbel Vesa 	[GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
3131955f2ea3SAbel Vesa 	[GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr,
3132955f2ea3SAbel Vesa 	[GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
3133955f2ea3SAbel Vesa 	[GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr,
3134955f2ea3SAbel Vesa 	[GCC_QMIP_CAMERA_NRT_AHB_CLK] = &gcc_qmip_camera_nrt_ahb_clk.clkr,
3135955f2ea3SAbel Vesa 	[GCC_QMIP_CAMERA_RT_AHB_CLK] = &gcc_qmip_camera_rt_ahb_clk.clkr,
3136955f2ea3SAbel Vesa 	[GCC_QMIP_DISP_AHB_CLK] = &gcc_qmip_disp_ahb_clk.clkr,
3137955f2ea3SAbel Vesa 	[GCC_QMIP_GPU_AHB_CLK] = &gcc_qmip_gpu_ahb_clk.clkr,
3138955f2ea3SAbel Vesa 	[GCC_QMIP_PCIE_AHB_CLK] = &gcc_qmip_pcie_ahb_clk.clkr,
3139955f2ea3SAbel Vesa 	[GCC_QMIP_VIDEO_CV_CPU_AHB_CLK] = &gcc_qmip_video_cv_cpu_ahb_clk.clkr,
3140955f2ea3SAbel Vesa 	[GCC_QMIP_VIDEO_CVP_AHB_CLK] = &gcc_qmip_video_cvp_ahb_clk.clkr,
3141955f2ea3SAbel Vesa 	[GCC_QMIP_VIDEO_V_CPU_AHB_CLK] = &gcc_qmip_video_v_cpu_ahb_clk.clkr,
3142955f2ea3SAbel Vesa 	[GCC_QMIP_VIDEO_VCODEC_AHB_CLK] = &gcc_qmip_video_vcodec_ahb_clk.clkr,
3143955f2ea3SAbel Vesa 	[GCC_QUPV3_I2C_CORE_CLK] = &gcc_qupv3_i2c_core_clk.clkr,
3144955f2ea3SAbel Vesa 	[GCC_QUPV3_I2C_S0_CLK] = &gcc_qupv3_i2c_s0_clk.clkr,
3145955f2ea3SAbel Vesa 	[GCC_QUPV3_I2C_S0_CLK_SRC] = &gcc_qupv3_i2c_s0_clk_src.clkr,
3146955f2ea3SAbel Vesa 	[GCC_QUPV3_I2C_S1_CLK] = &gcc_qupv3_i2c_s1_clk.clkr,
3147955f2ea3SAbel Vesa 	[GCC_QUPV3_I2C_S1_CLK_SRC] = &gcc_qupv3_i2c_s1_clk_src.clkr,
3148955f2ea3SAbel Vesa 	[GCC_QUPV3_I2C_S2_CLK] = &gcc_qupv3_i2c_s2_clk.clkr,
3149955f2ea3SAbel Vesa 	[GCC_QUPV3_I2C_S2_CLK_SRC] = &gcc_qupv3_i2c_s2_clk_src.clkr,
3150955f2ea3SAbel Vesa 	[GCC_QUPV3_I2C_S3_CLK] = &gcc_qupv3_i2c_s3_clk.clkr,
3151955f2ea3SAbel Vesa 	[GCC_QUPV3_I2C_S3_CLK_SRC] = &gcc_qupv3_i2c_s3_clk_src.clkr,
3152955f2ea3SAbel Vesa 	[GCC_QUPV3_I2C_S4_CLK] = &gcc_qupv3_i2c_s4_clk.clkr,
3153955f2ea3SAbel Vesa 	[GCC_QUPV3_I2C_S4_CLK_SRC] = &gcc_qupv3_i2c_s4_clk_src.clkr,
3154955f2ea3SAbel Vesa 	[GCC_QUPV3_I2C_S5_CLK] = &gcc_qupv3_i2c_s5_clk.clkr,
3155955f2ea3SAbel Vesa 	[GCC_QUPV3_I2C_S5_CLK_SRC] = &gcc_qupv3_i2c_s5_clk_src.clkr,
3156955f2ea3SAbel Vesa 	[GCC_QUPV3_I2C_S6_CLK] = &gcc_qupv3_i2c_s6_clk.clkr,
3157955f2ea3SAbel Vesa 	[GCC_QUPV3_I2C_S6_CLK_SRC] = &gcc_qupv3_i2c_s6_clk_src.clkr,
3158955f2ea3SAbel Vesa 	[GCC_QUPV3_I2C_S7_CLK] = &gcc_qupv3_i2c_s7_clk.clkr,
3159955f2ea3SAbel Vesa 	[GCC_QUPV3_I2C_S7_CLK_SRC] = &gcc_qupv3_i2c_s7_clk_src.clkr,
3160955f2ea3SAbel Vesa 	[GCC_QUPV3_I2C_S8_CLK] = &gcc_qupv3_i2c_s8_clk.clkr,
3161955f2ea3SAbel Vesa 	[GCC_QUPV3_I2C_S8_CLK_SRC] = &gcc_qupv3_i2c_s8_clk_src.clkr,
3162955f2ea3SAbel Vesa 	[GCC_QUPV3_I2C_S9_CLK] = &gcc_qupv3_i2c_s9_clk.clkr,
3163955f2ea3SAbel Vesa 	[GCC_QUPV3_I2C_S9_CLK_SRC] = &gcc_qupv3_i2c_s9_clk_src.clkr,
3164955f2ea3SAbel Vesa 	[GCC_QUPV3_I2C_S_AHB_CLK] = &gcc_qupv3_i2c_s_ahb_clk.clkr,
3165955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP1_CORE_2X_CLK] = &gcc_qupv3_wrap1_core_2x_clk.clkr,
3166955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP1_CORE_CLK] = &gcc_qupv3_wrap1_core_clk.clkr,
3167955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP1_S0_CLK] = &gcc_qupv3_wrap1_s0_clk.clkr,
3168955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP1_S0_CLK_SRC] = &gcc_qupv3_wrap1_s0_clk_src.clkr,
3169955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP1_S1_CLK] = &gcc_qupv3_wrap1_s1_clk.clkr,
3170955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP1_S1_CLK_SRC] = &gcc_qupv3_wrap1_s1_clk_src.clkr,
3171955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP1_S2_CLK] = &gcc_qupv3_wrap1_s2_clk.clkr,
3172955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP1_S2_CLK_SRC] = &gcc_qupv3_wrap1_s2_clk_src.clkr,
3173955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP1_S3_CLK] = &gcc_qupv3_wrap1_s3_clk.clkr,
3174955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP1_S3_CLK_SRC] = &gcc_qupv3_wrap1_s3_clk_src.clkr,
3175955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP1_S4_CLK] = &gcc_qupv3_wrap1_s4_clk.clkr,
3176955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP1_S4_CLK_SRC] = &gcc_qupv3_wrap1_s4_clk_src.clkr,
3177955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP1_S5_CLK] = &gcc_qupv3_wrap1_s5_clk.clkr,
3178955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP1_S5_CLK_SRC] = &gcc_qupv3_wrap1_s5_clk_src.clkr,
3179955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP1_S6_CLK] = &gcc_qupv3_wrap1_s6_clk.clkr,
3180955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP1_S6_CLK_SRC] = &gcc_qupv3_wrap1_s6_clk_src.clkr,
3181955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP1_S7_CLK] = &gcc_qupv3_wrap1_s7_clk.clkr,
3182955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP1_S7_CLK_SRC] = &gcc_qupv3_wrap1_s7_clk_src.clkr,
3183955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP2_CORE_2X_CLK] = &gcc_qupv3_wrap2_core_2x_clk.clkr,
3184955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP2_CORE_CLK] = &gcc_qupv3_wrap2_core_clk.clkr,
3185955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP2_S0_CLK] = &gcc_qupv3_wrap2_s0_clk.clkr,
3186955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP2_S0_CLK_SRC] = &gcc_qupv3_wrap2_s0_clk_src.clkr,
3187955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP2_S1_CLK] = &gcc_qupv3_wrap2_s1_clk.clkr,
3188955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP2_S1_CLK_SRC] = &gcc_qupv3_wrap2_s1_clk_src.clkr,
3189955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP2_S2_CLK] = &gcc_qupv3_wrap2_s2_clk.clkr,
3190955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP2_S2_CLK_SRC] = &gcc_qupv3_wrap2_s2_clk_src.clkr,
3191955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP2_S3_CLK] = &gcc_qupv3_wrap2_s3_clk.clkr,
3192955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP2_S3_CLK_SRC] = &gcc_qupv3_wrap2_s3_clk_src.clkr,
3193955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP2_S4_CLK] = &gcc_qupv3_wrap2_s4_clk.clkr,
3194955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP2_S4_CLK_SRC] = &gcc_qupv3_wrap2_s4_clk_src.clkr,
3195955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP2_S5_CLK] = &gcc_qupv3_wrap2_s5_clk.clkr,
3196955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP2_S5_CLK_SRC] = &gcc_qupv3_wrap2_s5_clk_src.clkr,
3197955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP2_S6_CLK] = &gcc_qupv3_wrap2_s6_clk.clkr,
3198955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP2_S6_CLK_SRC] = &gcc_qupv3_wrap2_s6_clk_src.clkr,
3199955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP2_S7_CLK] = &gcc_qupv3_wrap2_s7_clk.clkr,
3200955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP2_S7_CLK_SRC] = &gcc_qupv3_wrap2_s7_clk_src.clkr,
3201955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP_1_M_AHB_CLK] = &gcc_qupv3_wrap_1_m_ahb_clk.clkr,
3202955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP_1_S_AHB_CLK] = &gcc_qupv3_wrap_1_s_ahb_clk.clkr,
3203955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP_2_M_AHB_CLK] = &gcc_qupv3_wrap_2_m_ahb_clk.clkr,
3204955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAP_2_S_AHB_CLK] = &gcc_qupv3_wrap_2_s_ahb_clk.clkr,
3205955f2ea3SAbel Vesa 	[GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
3206955f2ea3SAbel Vesa 	[GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
3207955f2ea3SAbel Vesa 	[GCC_SDCC2_APPS_CLK_SRC] = &gcc_sdcc2_apps_clk_src.clkr,
3208955f2ea3SAbel Vesa 	[GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr,
3209955f2ea3SAbel Vesa 	[GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr,
3210955f2ea3SAbel Vesa 	[GCC_SDCC4_APPS_CLK_SRC] = &gcc_sdcc4_apps_clk_src.clkr,
3211955f2ea3SAbel Vesa 	[GCC_UFS_PHY_AHB_CLK] = &gcc_ufs_phy_ahb_clk.clkr,
3212955f2ea3SAbel Vesa 	[GCC_UFS_PHY_AXI_CLK] = &gcc_ufs_phy_axi_clk.clkr,
3213955f2ea3SAbel Vesa 	[GCC_UFS_PHY_AXI_CLK_SRC] = &gcc_ufs_phy_axi_clk_src.clkr,
3214955f2ea3SAbel Vesa 	[GCC_UFS_PHY_AXI_HW_CTL_CLK] = &gcc_ufs_phy_axi_hw_ctl_clk.clkr,
3215955f2ea3SAbel Vesa 	[GCC_UFS_PHY_ICE_CORE_CLK] = &gcc_ufs_phy_ice_core_clk.clkr,
3216955f2ea3SAbel Vesa 	[GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &gcc_ufs_phy_ice_core_clk_src.clkr,
3217955f2ea3SAbel Vesa 	[GCC_UFS_PHY_ICE_CORE_HW_CTL_CLK] = &gcc_ufs_phy_ice_core_hw_ctl_clk.clkr,
3218955f2ea3SAbel Vesa 	[GCC_UFS_PHY_PHY_AUX_CLK] = &gcc_ufs_phy_phy_aux_clk.clkr,
3219955f2ea3SAbel Vesa 	[GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &gcc_ufs_phy_phy_aux_clk_src.clkr,
3220955f2ea3SAbel Vesa 	[GCC_UFS_PHY_PHY_AUX_HW_CTL_CLK] = &gcc_ufs_phy_phy_aux_hw_ctl_clk.clkr,
3221955f2ea3SAbel Vesa 	[GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &gcc_ufs_phy_rx_symbol_0_clk.clkr,
3222955f2ea3SAbel Vesa 	[GCC_UFS_PHY_RX_SYMBOL_0_CLK_SRC] = &gcc_ufs_phy_rx_symbol_0_clk_src.clkr,
3223955f2ea3SAbel Vesa 	[GCC_UFS_PHY_RX_SYMBOL_1_CLK] = &gcc_ufs_phy_rx_symbol_1_clk.clkr,
3224955f2ea3SAbel Vesa 	[GCC_UFS_PHY_RX_SYMBOL_1_CLK_SRC] = &gcc_ufs_phy_rx_symbol_1_clk_src.clkr,
3225955f2ea3SAbel Vesa 	[GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &gcc_ufs_phy_tx_symbol_0_clk.clkr,
3226955f2ea3SAbel Vesa 	[GCC_UFS_PHY_TX_SYMBOL_0_CLK_SRC] = &gcc_ufs_phy_tx_symbol_0_clk_src.clkr,
3227955f2ea3SAbel Vesa 	[GCC_UFS_PHY_UNIPRO_CORE_CLK] = &gcc_ufs_phy_unipro_core_clk.clkr,
3228955f2ea3SAbel Vesa 	[GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC] = &gcc_ufs_phy_unipro_core_clk_src.clkr,
3229955f2ea3SAbel Vesa 	[GCC_UFS_PHY_UNIPRO_CORE_HW_CTL_CLK] = &gcc_ufs_phy_unipro_core_hw_ctl_clk.clkr,
3230955f2ea3SAbel Vesa 	[GCC_USB30_PRIM_MASTER_CLK] = &gcc_usb30_prim_master_clk.clkr,
3231955f2ea3SAbel Vesa 	[GCC_USB30_PRIM_MASTER_CLK_SRC] = &gcc_usb30_prim_master_clk_src.clkr,
3232955f2ea3SAbel Vesa 	[GCC_USB30_PRIM_MOCK_UTMI_CLK] = &gcc_usb30_prim_mock_utmi_clk.clkr,
3233955f2ea3SAbel Vesa 	[GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC] = &gcc_usb30_prim_mock_utmi_clk_src.clkr,
3234955f2ea3SAbel Vesa 	[GCC_USB30_PRIM_MOCK_UTMI_POSTDIV_CLK_SRC] = &gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr,
3235955f2ea3SAbel Vesa 	[GCC_USB30_PRIM_SLEEP_CLK] = &gcc_usb30_prim_sleep_clk.clkr,
3236955f2ea3SAbel Vesa 	[GCC_USB3_PRIM_PHY_AUX_CLK] = &gcc_usb3_prim_phy_aux_clk.clkr,
3237955f2ea3SAbel Vesa 	[GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &gcc_usb3_prim_phy_aux_clk_src.clkr,
3238955f2ea3SAbel Vesa 	[GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &gcc_usb3_prim_phy_com_aux_clk.clkr,
3239955f2ea3SAbel Vesa 	[GCC_USB3_PRIM_PHY_PIPE_CLK] = &gcc_usb3_prim_phy_pipe_clk.clkr,
3240955f2ea3SAbel Vesa 	[GCC_USB3_PRIM_PHY_PIPE_CLK_SRC] = &gcc_usb3_prim_phy_pipe_clk_src.clkr,
3241955f2ea3SAbel Vesa 	[GCC_VIDEO_AXI0_CLK] = &gcc_video_axi0_clk.clkr,
3242955f2ea3SAbel Vesa 	[GCC_VIDEO_AXI1_CLK] = &gcc_video_axi1_clk.clkr,
3243955f2ea3SAbel Vesa };
3244955f2ea3SAbel Vesa 
3245955f2ea3SAbel Vesa static const struct qcom_reset_map gcc_sm8550_resets[] = {
3246955f2ea3SAbel Vesa 	[GCC_CAMERA_BCR] = { 0x26000 },
3247955f2ea3SAbel Vesa 	[GCC_DISPLAY_BCR] = { 0x27000 },
3248955f2ea3SAbel Vesa 	[GCC_GPU_BCR] = { 0x71000 },
3249955f2ea3SAbel Vesa 	[GCC_PCIE_0_BCR] = { 0x6b000 },
3250955f2ea3SAbel Vesa 	[GCC_PCIE_0_LINK_DOWN_BCR] = { 0x6c014 },
3251955f2ea3SAbel Vesa 	[GCC_PCIE_0_NOCSR_COM_PHY_BCR] = { 0x6c020 },
3252955f2ea3SAbel Vesa 	[GCC_PCIE_0_PHY_BCR] = { 0x6c01c },
3253955f2ea3SAbel Vesa 	[GCC_PCIE_0_PHY_NOCSR_COM_PHY_BCR] = { 0x6c028 },
3254955f2ea3SAbel Vesa 	[GCC_PCIE_1_BCR] = { 0x8d000 },
3255955f2ea3SAbel Vesa 	[GCC_PCIE_1_LINK_DOWN_BCR] = { 0x8e014 },
3256955f2ea3SAbel Vesa 	[GCC_PCIE_1_NOCSR_COM_PHY_BCR] = { 0x8e020 },
3257955f2ea3SAbel Vesa 	[GCC_PCIE_1_PHY_BCR] = { 0x8e01c },
3258955f2ea3SAbel Vesa 	[GCC_PCIE_1_PHY_NOCSR_COM_PHY_BCR] = { 0x8e024 },
3259955f2ea3SAbel Vesa 	[GCC_PCIE_PHY_BCR] = { 0x6f000 },
3260955f2ea3SAbel Vesa 	[GCC_PCIE_PHY_CFG_AHB_BCR] = { 0x6f00c },
3261955f2ea3SAbel Vesa 	[GCC_PCIE_PHY_COM_BCR] = { 0x6f010 },
3262955f2ea3SAbel Vesa 	[GCC_PDM_BCR] = { 0x33000 },
3263955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAPPER_1_BCR] = { 0x18000 },
3264955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAPPER_2_BCR] = { 0x1e000 },
3265955f2ea3SAbel Vesa 	[GCC_QUPV3_WRAPPER_I2C_BCR] = { 0x17000 },
3266955f2ea3SAbel Vesa 	[GCC_QUSB2PHY_PRIM_BCR] = { 0x12000 },
3267955f2ea3SAbel Vesa 	[GCC_QUSB2PHY_SEC_BCR] = { 0x12004 },
3268955f2ea3SAbel Vesa 	[GCC_SDCC2_BCR] = { 0x14000 },
3269955f2ea3SAbel Vesa 	[GCC_SDCC4_BCR] = { 0x16000 },
3270955f2ea3SAbel Vesa 	[GCC_UFS_PHY_BCR] = { 0x77000 },
3271955f2ea3SAbel Vesa 	[GCC_USB30_PRIM_BCR] = { 0x39000 },
3272955f2ea3SAbel Vesa 	[GCC_USB3_DP_PHY_PRIM_BCR] = { 0x50008 },
3273955f2ea3SAbel Vesa 	[GCC_USB3_DP_PHY_SEC_BCR] = { 0x50014 },
3274955f2ea3SAbel Vesa 	[GCC_USB3_PHY_PRIM_BCR] = { 0x50000 },
3275955f2ea3SAbel Vesa 	[GCC_USB3_PHY_SEC_BCR] = { 0x5000c },
3276955f2ea3SAbel Vesa 	[GCC_USB3PHY_PHY_PRIM_BCR] = { 0x50004 },
3277955f2ea3SAbel Vesa 	[GCC_USB3PHY_PHY_SEC_BCR] = { 0x50010 },
3278955f2ea3SAbel Vesa 	[GCC_USB_PHY_CFG_AHB2PHY_BCR] = { 0x6a000 },
3279955f2ea3SAbel Vesa 	[GCC_VIDEO_AXI0_CLK_ARES] = { 0x32018, 2 },
3280955f2ea3SAbel Vesa 	[GCC_VIDEO_AXI1_CLK_ARES] = { 0x32024, 2 },
3281955f2ea3SAbel Vesa 	[GCC_VIDEO_BCR] = { 0x32000 },
3282955f2ea3SAbel Vesa };
3283955f2ea3SAbel Vesa 
3284955f2ea3SAbel Vesa static const struct clk_rcg_dfs_data gcc_dfs_clocks[] = {
3285955f2ea3SAbel Vesa 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s0_clk_src),
3286955f2ea3SAbel Vesa 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s1_clk_src),
3287955f2ea3SAbel Vesa 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s2_clk_src),
3288955f2ea3SAbel Vesa 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s3_clk_src),
3289955f2ea3SAbel Vesa 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s4_clk_src),
3290955f2ea3SAbel Vesa 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s5_clk_src),
3291955f2ea3SAbel Vesa 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s6_clk_src),
3292955f2ea3SAbel Vesa 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s7_clk_src),
3293955f2ea3SAbel Vesa 	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s0_clk_src),
3294955f2ea3SAbel Vesa 	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s1_clk_src),
3295955f2ea3SAbel Vesa 	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s2_clk_src),
3296955f2ea3SAbel Vesa 	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s3_clk_src),
3297955f2ea3SAbel Vesa 	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s4_clk_src),
3298955f2ea3SAbel Vesa 	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s5_clk_src),
3299955f2ea3SAbel Vesa 	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s6_clk_src),
3300955f2ea3SAbel Vesa 	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s7_clk_src),
3301955f2ea3SAbel Vesa };
3302955f2ea3SAbel Vesa 
3303955f2ea3SAbel Vesa static struct gdsc *gcc_sm8550_gdscs[] = {
3304955f2ea3SAbel Vesa 	[PCIE_0_GDSC] = &pcie_0_gdsc,
3305955f2ea3SAbel Vesa 	[PCIE_0_PHY_GDSC] = &pcie_0_phy_gdsc,
3306955f2ea3SAbel Vesa 	[PCIE_1_GDSC] = &pcie_1_gdsc,
3307955f2ea3SAbel Vesa 	[PCIE_1_PHY_GDSC] = &pcie_1_phy_gdsc,
3308955f2ea3SAbel Vesa 	[UFS_PHY_GDSC] = &ufs_phy_gdsc,
3309955f2ea3SAbel Vesa 	[UFS_MEM_PHY_GDSC] = &ufs_mem_phy_gdsc,
3310955f2ea3SAbel Vesa 	[USB30_PRIM_GDSC] = &usb30_prim_gdsc,
3311955f2ea3SAbel Vesa 	[USB3_PHY_GDSC] = &usb3_phy_gdsc,
3312955f2ea3SAbel Vesa };
3313955f2ea3SAbel Vesa 
3314955f2ea3SAbel Vesa static const struct regmap_config gcc_sm8550_regmap_config = {
3315955f2ea3SAbel Vesa 	.reg_bits = 32,
3316955f2ea3SAbel Vesa 	.reg_stride = 4,
3317955f2ea3SAbel Vesa 	.val_bits = 32,
3318955f2ea3SAbel Vesa 	.max_register = 0x1f41f0,
3319955f2ea3SAbel Vesa 	.fast_io = true,
3320955f2ea3SAbel Vesa };
3321955f2ea3SAbel Vesa 
3322955f2ea3SAbel Vesa static const struct qcom_cc_desc gcc_sm8550_desc = {
3323955f2ea3SAbel Vesa 	.config = &gcc_sm8550_regmap_config,
3324955f2ea3SAbel Vesa 	.clks = gcc_sm8550_clocks,
3325955f2ea3SAbel Vesa 	.num_clks = ARRAY_SIZE(gcc_sm8550_clocks),
3326955f2ea3SAbel Vesa 	.resets = gcc_sm8550_resets,
3327955f2ea3SAbel Vesa 	.num_resets = ARRAY_SIZE(gcc_sm8550_resets),
3328955f2ea3SAbel Vesa 	.gdscs = gcc_sm8550_gdscs,
3329955f2ea3SAbel Vesa 	.num_gdscs = ARRAY_SIZE(gcc_sm8550_gdscs),
3330955f2ea3SAbel Vesa };
3331955f2ea3SAbel Vesa 
3332955f2ea3SAbel Vesa static const struct of_device_id gcc_sm8550_match_table[] = {
3333955f2ea3SAbel Vesa 	{ .compatible = "qcom,sm8550-gcc" },
3334955f2ea3SAbel Vesa 	{ }
3335955f2ea3SAbel Vesa };
3336955f2ea3SAbel Vesa MODULE_DEVICE_TABLE(of, gcc_sm8550_match_table);
3337955f2ea3SAbel Vesa 
gcc_sm8550_probe(struct platform_device * pdev)3338955f2ea3SAbel Vesa static int gcc_sm8550_probe(struct platform_device *pdev)
3339955f2ea3SAbel Vesa {
3340955f2ea3SAbel Vesa 	struct regmap *regmap;
3341955f2ea3SAbel Vesa 	int ret;
3342955f2ea3SAbel Vesa 
3343955f2ea3SAbel Vesa 	regmap = qcom_cc_map(pdev, &gcc_sm8550_desc);
3344955f2ea3SAbel Vesa 	if (IS_ERR(regmap))
3345955f2ea3SAbel Vesa 		return PTR_ERR(regmap);
3346955f2ea3SAbel Vesa 
3347955f2ea3SAbel Vesa 	ret = qcom_cc_register_rcg_dfs(regmap, gcc_dfs_clocks,
3348955f2ea3SAbel Vesa 				       ARRAY_SIZE(gcc_dfs_clocks));
3349955f2ea3SAbel Vesa 	if (ret)
3350955f2ea3SAbel Vesa 		return ret;
3351955f2ea3SAbel Vesa 
3352955f2ea3SAbel Vesa 	/* FORCE_MEM_CORE_ON for ufs phy ice core clocks */
3353955f2ea3SAbel Vesa 	regmap_update_bits(regmap, gcc_ufs_phy_ice_core_clk.halt_reg, BIT(14), BIT(14));
3354955f2ea3SAbel Vesa 
3355955f2ea3SAbel Vesa 	/*
3356955f2ea3SAbel Vesa 	 * Keep the critical clock always-On
3357955f2ea3SAbel Vesa 	 * gcc_camera_ahb_clk, gcc_camera_xo_clk, gcc_disp_ahb_clk,
3358955f2ea3SAbel Vesa 	 * gcc_disp_xo_clk, gcc_gpu_cfg_ahb_clk, gcc_video_ahb_clk,
3359955f2ea3SAbel Vesa 	 * gcc_video_xo_clk
3360955f2ea3SAbel Vesa 	 */
3361955f2ea3SAbel Vesa 	regmap_update_bits(regmap, 0x26004, BIT(0), BIT(0));
3362955f2ea3SAbel Vesa 	regmap_update_bits(regmap, 0x26028, BIT(0), BIT(0));
3363955f2ea3SAbel Vesa 	regmap_update_bits(regmap, 0x27004, BIT(0), BIT(0));
3364955f2ea3SAbel Vesa 	regmap_update_bits(regmap, 0x27018, BIT(0), BIT(0));
3365955f2ea3SAbel Vesa 	regmap_update_bits(regmap, 0x71004, BIT(0), BIT(0));
3366955f2ea3SAbel Vesa 	regmap_update_bits(regmap, 0x32004, BIT(0), BIT(0));
3367955f2ea3SAbel Vesa 	regmap_update_bits(regmap, 0x32030, BIT(0), BIT(0));
3368955f2ea3SAbel Vesa 
3369955f2ea3SAbel Vesa 	/* Clear GDSC_SLEEP_ENA_VOTE to stop votes being auto-removed in sleep. */
3370955f2ea3SAbel Vesa 	regmap_write(regmap, 0x52024, 0x0);
3371955f2ea3SAbel Vesa 
3372955f2ea3SAbel Vesa 	return qcom_cc_really_probe(pdev, &gcc_sm8550_desc, regmap);
3373955f2ea3SAbel Vesa }
3374955f2ea3SAbel Vesa 
3375955f2ea3SAbel Vesa static struct platform_driver gcc_sm8550_driver = {
3376955f2ea3SAbel Vesa 	.probe = gcc_sm8550_probe,
3377955f2ea3SAbel Vesa 	.driver = {
3378955f2ea3SAbel Vesa 		.name = "gcc-sm8550",
3379955f2ea3SAbel Vesa 		.of_match_table = gcc_sm8550_match_table,
3380955f2ea3SAbel Vesa 	},
3381955f2ea3SAbel Vesa };
3382955f2ea3SAbel Vesa 
gcc_sm8550_init(void)3383955f2ea3SAbel Vesa static int __init gcc_sm8550_init(void)
3384955f2ea3SAbel Vesa {
3385955f2ea3SAbel Vesa 	return platform_driver_register(&gcc_sm8550_driver);
3386955f2ea3SAbel Vesa }
3387955f2ea3SAbel Vesa subsys_initcall(gcc_sm8550_init);
3388955f2ea3SAbel Vesa 
gcc_sm8550_exit(void)3389955f2ea3SAbel Vesa static void __exit gcc_sm8550_exit(void)
3390955f2ea3SAbel Vesa {
3391955f2ea3SAbel Vesa 	platform_driver_unregister(&gcc_sm8550_driver);
3392955f2ea3SAbel Vesa }
3393955f2ea3SAbel Vesa module_exit(gcc_sm8550_exit);
3394955f2ea3SAbel Vesa 
3395955f2ea3SAbel Vesa MODULE_DESCRIPTION("QTI GCC SM8550 Driver");
3396955f2ea3SAbel Vesa MODULE_LICENSE("GPL");
3397