1*95eeb2ffSImran Shaik // SPDX-License-Identifier: GPL-2.0-only
2*95eeb2ffSImran Shaik /*
3*95eeb2ffSImran Shaik * Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved.
4*95eeb2ffSImran Shaik */
5*95eeb2ffSImran Shaik
6*95eeb2ffSImran Shaik #include <linux/clk-provider.h>
7*95eeb2ffSImran Shaik #include <linux/module.h>
8*95eeb2ffSImran Shaik #include <linux/mod_devicetable.h>
9*95eeb2ffSImran Shaik #include <linux/of.h>
10*95eeb2ffSImran Shaik #include <linux/platform_device.h>
11*95eeb2ffSImran Shaik #include <linux/regmap.h>
12*95eeb2ffSImran Shaik
13*95eeb2ffSImran Shaik #include <dt-bindings/clock/qcom,qcs8300-gcc.h>
14*95eeb2ffSImran Shaik
15*95eeb2ffSImran Shaik #include "clk-alpha-pll.h"
16*95eeb2ffSImran Shaik #include "clk-branch.h"
17*95eeb2ffSImran Shaik #include "clk-pll.h"
18*95eeb2ffSImran Shaik #include "clk-rcg.h"
19*95eeb2ffSImran Shaik #include "clk-regmap.h"
20*95eeb2ffSImran Shaik #include "clk-regmap-divider.h"
21*95eeb2ffSImran Shaik #include "clk-regmap-mux.h"
22*95eeb2ffSImran Shaik #include "clk-regmap-phy-mux.h"
23*95eeb2ffSImran Shaik #include "common.h"
24*95eeb2ffSImran Shaik #include "gdsc.h"
25*95eeb2ffSImran Shaik #include "reset.h"
26*95eeb2ffSImran Shaik
27*95eeb2ffSImran Shaik enum {
28*95eeb2ffSImran Shaik DT_BI_TCXO,
29*95eeb2ffSImran Shaik DT_SLEEP_CLK,
30*95eeb2ffSImran Shaik DT_PCIE_0_PIPE_CLK,
31*95eeb2ffSImran Shaik DT_PCIE_1_PIPE_CLK,
32*95eeb2ffSImran Shaik DT_PCIE_PHY_AUX_CLK,
33*95eeb2ffSImran Shaik DT_RXC0_REF_CLK,
34*95eeb2ffSImran Shaik DT_UFS_PHY_RX_SYMBOL_0_CLK,
35*95eeb2ffSImran Shaik DT_UFS_PHY_RX_SYMBOL_1_CLK,
36*95eeb2ffSImran Shaik DT_UFS_PHY_TX_SYMBOL_0_CLK,
37*95eeb2ffSImran Shaik DT_USB3_PHY_WRAPPER_GCC_USB30_PRIM_PIPE_CLK,
38*95eeb2ffSImran Shaik };
39*95eeb2ffSImran Shaik
40*95eeb2ffSImran Shaik enum {
41*95eeb2ffSImran Shaik P_BI_TCXO,
42*95eeb2ffSImran Shaik P_GCC_GPLL0_OUT_EVEN,
43*95eeb2ffSImran Shaik P_GCC_GPLL0_OUT_MAIN,
44*95eeb2ffSImran Shaik P_GCC_GPLL1_OUT_MAIN,
45*95eeb2ffSImran Shaik P_GCC_GPLL4_OUT_MAIN,
46*95eeb2ffSImran Shaik P_GCC_GPLL7_OUT_MAIN,
47*95eeb2ffSImran Shaik P_GCC_GPLL9_OUT_MAIN,
48*95eeb2ffSImran Shaik P_PCIE_0_PIPE_CLK,
49*95eeb2ffSImran Shaik P_PCIE_1_PIPE_CLK,
50*95eeb2ffSImran Shaik P_PCIE_PHY_AUX_CLK,
51*95eeb2ffSImran Shaik P_RXC0_REF_CLK,
52*95eeb2ffSImran Shaik P_SLEEP_CLK,
53*95eeb2ffSImran Shaik P_UFS_PHY_RX_SYMBOL_0_CLK,
54*95eeb2ffSImran Shaik P_UFS_PHY_RX_SYMBOL_1_CLK,
55*95eeb2ffSImran Shaik P_UFS_PHY_TX_SYMBOL_0_CLK,
56*95eeb2ffSImran Shaik P_USB3_PHY_WRAPPER_GCC_USB30_PRIM_PIPE_CLK,
57*95eeb2ffSImran Shaik };
58*95eeb2ffSImran Shaik
59*95eeb2ffSImran Shaik static struct clk_alpha_pll gcc_gpll0 = {
60*95eeb2ffSImran Shaik .offset = 0x0,
61*95eeb2ffSImran Shaik .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
62*95eeb2ffSImran Shaik .clkr = {
63*95eeb2ffSImran Shaik .enable_reg = 0x4b028,
64*95eeb2ffSImran Shaik .enable_mask = BIT(0),
65*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
66*95eeb2ffSImran Shaik .name = "gcc_gpll0",
67*95eeb2ffSImran Shaik .parent_data = &(const struct clk_parent_data) {
68*95eeb2ffSImran Shaik .index = DT_BI_TCXO,
69*95eeb2ffSImran Shaik },
70*95eeb2ffSImran Shaik .num_parents = 1,
71*95eeb2ffSImran Shaik .ops = &clk_alpha_pll_fixed_lucid_evo_ops,
72*95eeb2ffSImran Shaik },
73*95eeb2ffSImran Shaik },
74*95eeb2ffSImran Shaik };
75*95eeb2ffSImran Shaik
76*95eeb2ffSImran Shaik static const struct clk_div_table post_div_table_gcc_gpll0_out_even[] = {
77*95eeb2ffSImran Shaik { 0x1, 2 },
78*95eeb2ffSImran Shaik { }
79*95eeb2ffSImran Shaik };
80*95eeb2ffSImran Shaik
81*95eeb2ffSImran Shaik static struct clk_alpha_pll_postdiv gcc_gpll0_out_even = {
82*95eeb2ffSImran Shaik .offset = 0x0,
83*95eeb2ffSImran Shaik .post_div_shift = 10,
84*95eeb2ffSImran Shaik .post_div_table = post_div_table_gcc_gpll0_out_even,
85*95eeb2ffSImran Shaik .num_post_div = ARRAY_SIZE(post_div_table_gcc_gpll0_out_even),
86*95eeb2ffSImran Shaik .width = 4,
87*95eeb2ffSImran Shaik .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
88*95eeb2ffSImran Shaik .clkr.hw.init = &(const struct clk_init_data) {
89*95eeb2ffSImran Shaik .name = "gcc_gpll0_out_even",
90*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
91*95eeb2ffSImran Shaik &gcc_gpll0.clkr.hw,
92*95eeb2ffSImran Shaik },
93*95eeb2ffSImran Shaik .num_parents = 1,
94*95eeb2ffSImran Shaik .ops = &clk_alpha_pll_postdiv_lucid_evo_ops,
95*95eeb2ffSImran Shaik },
96*95eeb2ffSImran Shaik };
97*95eeb2ffSImran Shaik
98*95eeb2ffSImran Shaik static struct clk_alpha_pll gcc_gpll1 = {
99*95eeb2ffSImran Shaik .offset = 0x1000,
100*95eeb2ffSImran Shaik .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
101*95eeb2ffSImran Shaik .clkr = {
102*95eeb2ffSImran Shaik .enable_reg = 0x4b028,
103*95eeb2ffSImran Shaik .enable_mask = BIT(1),
104*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
105*95eeb2ffSImran Shaik .name = "gcc_gpll1",
106*95eeb2ffSImran Shaik .parent_data = &(const struct clk_parent_data) {
107*95eeb2ffSImran Shaik .index = DT_BI_TCXO,
108*95eeb2ffSImran Shaik },
109*95eeb2ffSImran Shaik .num_parents = 1,
110*95eeb2ffSImran Shaik .ops = &clk_alpha_pll_fixed_lucid_evo_ops,
111*95eeb2ffSImran Shaik },
112*95eeb2ffSImran Shaik },
113*95eeb2ffSImran Shaik };
114*95eeb2ffSImran Shaik
115*95eeb2ffSImran Shaik static struct clk_alpha_pll gcc_gpll4 = {
116*95eeb2ffSImran Shaik .offset = 0x4000,
117*95eeb2ffSImran Shaik .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
118*95eeb2ffSImran Shaik .clkr = {
119*95eeb2ffSImran Shaik .enable_reg = 0x4b028,
120*95eeb2ffSImran Shaik .enable_mask = BIT(4),
121*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
122*95eeb2ffSImran Shaik .name = "gcc_gpll4",
123*95eeb2ffSImran Shaik .parent_data = &(const struct clk_parent_data) {
124*95eeb2ffSImran Shaik .index = DT_BI_TCXO,
125*95eeb2ffSImran Shaik },
126*95eeb2ffSImran Shaik .num_parents = 1,
127*95eeb2ffSImran Shaik .ops = &clk_alpha_pll_fixed_lucid_evo_ops,
128*95eeb2ffSImran Shaik },
129*95eeb2ffSImran Shaik },
130*95eeb2ffSImran Shaik };
131*95eeb2ffSImran Shaik
132*95eeb2ffSImran Shaik static struct clk_alpha_pll gcc_gpll7 = {
133*95eeb2ffSImran Shaik .offset = 0x7000,
134*95eeb2ffSImran Shaik .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
135*95eeb2ffSImran Shaik .clkr = {
136*95eeb2ffSImran Shaik .enable_reg = 0x4b028,
137*95eeb2ffSImran Shaik .enable_mask = BIT(7),
138*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
139*95eeb2ffSImran Shaik .name = "gcc_gpll7",
140*95eeb2ffSImran Shaik .parent_data = &(const struct clk_parent_data) {
141*95eeb2ffSImran Shaik .index = DT_BI_TCXO,
142*95eeb2ffSImran Shaik },
143*95eeb2ffSImran Shaik .num_parents = 1,
144*95eeb2ffSImran Shaik .ops = &clk_alpha_pll_fixed_lucid_evo_ops,
145*95eeb2ffSImran Shaik },
146*95eeb2ffSImran Shaik },
147*95eeb2ffSImran Shaik };
148*95eeb2ffSImran Shaik
149*95eeb2ffSImran Shaik static struct clk_alpha_pll gcc_gpll9 = {
150*95eeb2ffSImran Shaik .offset = 0x9000,
151*95eeb2ffSImran Shaik .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
152*95eeb2ffSImran Shaik .clkr = {
153*95eeb2ffSImran Shaik .enable_reg = 0x4b028,
154*95eeb2ffSImran Shaik .enable_mask = BIT(9),
155*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
156*95eeb2ffSImran Shaik .name = "gcc_gpll9",
157*95eeb2ffSImran Shaik .parent_data = &(const struct clk_parent_data) {
158*95eeb2ffSImran Shaik .index = DT_BI_TCXO,
159*95eeb2ffSImran Shaik },
160*95eeb2ffSImran Shaik .num_parents = 1,
161*95eeb2ffSImran Shaik .ops = &clk_alpha_pll_fixed_lucid_evo_ops,
162*95eeb2ffSImran Shaik },
163*95eeb2ffSImran Shaik },
164*95eeb2ffSImran Shaik };
165*95eeb2ffSImran Shaik
166*95eeb2ffSImran Shaik static const struct parent_map gcc_parent_map_0[] = {
167*95eeb2ffSImran Shaik { P_BI_TCXO, 0 },
168*95eeb2ffSImran Shaik { P_GCC_GPLL0_OUT_MAIN, 1 },
169*95eeb2ffSImran Shaik { P_GCC_GPLL0_OUT_EVEN, 6 },
170*95eeb2ffSImran Shaik };
171*95eeb2ffSImran Shaik
172*95eeb2ffSImran Shaik static const struct clk_parent_data gcc_parent_data_0[] = {
173*95eeb2ffSImran Shaik { .index = DT_BI_TCXO },
174*95eeb2ffSImran Shaik { .hw = &gcc_gpll0.clkr.hw },
175*95eeb2ffSImran Shaik { .hw = &gcc_gpll0_out_even.clkr.hw },
176*95eeb2ffSImran Shaik };
177*95eeb2ffSImran Shaik
178*95eeb2ffSImran Shaik static const struct parent_map gcc_parent_map_1[] = {
179*95eeb2ffSImran Shaik { P_BI_TCXO, 0 },
180*95eeb2ffSImran Shaik { P_GCC_GPLL0_OUT_MAIN, 1 },
181*95eeb2ffSImran Shaik { P_SLEEP_CLK, 5 },
182*95eeb2ffSImran Shaik { P_GCC_GPLL0_OUT_EVEN, 6 },
183*95eeb2ffSImran Shaik };
184*95eeb2ffSImran Shaik
185*95eeb2ffSImran Shaik static const struct clk_parent_data gcc_parent_data_1[] = {
186*95eeb2ffSImran Shaik { .index = DT_BI_TCXO },
187*95eeb2ffSImran Shaik { .hw = &gcc_gpll0.clkr.hw },
188*95eeb2ffSImran Shaik { .index = DT_SLEEP_CLK },
189*95eeb2ffSImran Shaik { .hw = &gcc_gpll0_out_even.clkr.hw },
190*95eeb2ffSImran Shaik };
191*95eeb2ffSImran Shaik
192*95eeb2ffSImran Shaik static const struct parent_map gcc_parent_map_2[] = {
193*95eeb2ffSImran Shaik { P_BI_TCXO, 0 },
194*95eeb2ffSImran Shaik { P_SLEEP_CLK, 5 },
195*95eeb2ffSImran Shaik };
196*95eeb2ffSImran Shaik
197*95eeb2ffSImran Shaik static const struct clk_parent_data gcc_parent_data_2[] = {
198*95eeb2ffSImran Shaik { .index = DT_BI_TCXO },
199*95eeb2ffSImran Shaik { .index = DT_SLEEP_CLK },
200*95eeb2ffSImran Shaik };
201*95eeb2ffSImran Shaik
202*95eeb2ffSImran Shaik static const struct parent_map gcc_parent_map_3[] = {
203*95eeb2ffSImran Shaik { P_BI_TCXO, 0 },
204*95eeb2ffSImran Shaik { P_GCC_GPLL0_OUT_MAIN, 1 },
205*95eeb2ffSImran Shaik { P_GCC_GPLL1_OUT_MAIN, 4 },
206*95eeb2ffSImran Shaik { P_GCC_GPLL4_OUT_MAIN, 5 },
207*95eeb2ffSImran Shaik { P_GCC_GPLL0_OUT_EVEN, 6 },
208*95eeb2ffSImran Shaik };
209*95eeb2ffSImran Shaik
210*95eeb2ffSImran Shaik static const struct clk_parent_data gcc_parent_data_3[] = {
211*95eeb2ffSImran Shaik { .index = DT_BI_TCXO },
212*95eeb2ffSImran Shaik { .hw = &gcc_gpll0.clkr.hw },
213*95eeb2ffSImran Shaik { .hw = &gcc_gpll1.clkr.hw },
214*95eeb2ffSImran Shaik { .hw = &gcc_gpll4.clkr.hw },
215*95eeb2ffSImran Shaik { .hw = &gcc_gpll0_out_even.clkr.hw },
216*95eeb2ffSImran Shaik };
217*95eeb2ffSImran Shaik
218*95eeb2ffSImran Shaik static const struct parent_map gcc_parent_map_4[] = {
219*95eeb2ffSImran Shaik { P_BI_TCXO, 0 },
220*95eeb2ffSImran Shaik { P_GCC_GPLL0_OUT_MAIN, 1 },
221*95eeb2ffSImran Shaik { P_GCC_GPLL4_OUT_MAIN, 5 },
222*95eeb2ffSImran Shaik { P_GCC_GPLL0_OUT_EVEN, 6 },
223*95eeb2ffSImran Shaik };
224*95eeb2ffSImran Shaik
225*95eeb2ffSImran Shaik static const struct clk_parent_data gcc_parent_data_4[] = {
226*95eeb2ffSImran Shaik { .index = DT_BI_TCXO },
227*95eeb2ffSImran Shaik { .hw = &gcc_gpll0.clkr.hw },
228*95eeb2ffSImran Shaik { .hw = &gcc_gpll4.clkr.hw },
229*95eeb2ffSImran Shaik { .hw = &gcc_gpll0_out_even.clkr.hw },
230*95eeb2ffSImran Shaik };
231*95eeb2ffSImran Shaik
232*95eeb2ffSImran Shaik static const struct parent_map gcc_parent_map_5[] = {
233*95eeb2ffSImran Shaik { P_BI_TCXO, 0 },
234*95eeb2ffSImran Shaik };
235*95eeb2ffSImran Shaik
236*95eeb2ffSImran Shaik static const struct clk_parent_data gcc_parent_data_5[] = {
237*95eeb2ffSImran Shaik { .index = DT_BI_TCXO },
238*95eeb2ffSImran Shaik };
239*95eeb2ffSImran Shaik
240*95eeb2ffSImran Shaik static const struct parent_map gcc_parent_map_6[] = {
241*95eeb2ffSImran Shaik { P_BI_TCXO, 0 },
242*95eeb2ffSImran Shaik { P_GCC_GPLL7_OUT_MAIN, 2 },
243*95eeb2ffSImran Shaik { P_GCC_GPLL4_OUT_MAIN, 5 },
244*95eeb2ffSImran Shaik { P_GCC_GPLL0_OUT_EVEN, 6 },
245*95eeb2ffSImran Shaik };
246*95eeb2ffSImran Shaik
247*95eeb2ffSImran Shaik static const struct clk_parent_data gcc_parent_data_6[] = {
248*95eeb2ffSImran Shaik { .index = DT_BI_TCXO },
249*95eeb2ffSImran Shaik { .hw = &gcc_gpll7.clkr.hw },
250*95eeb2ffSImran Shaik { .hw = &gcc_gpll4.clkr.hw },
251*95eeb2ffSImran Shaik { .hw = &gcc_gpll0_out_even.clkr.hw },
252*95eeb2ffSImran Shaik };
253*95eeb2ffSImran Shaik
254*95eeb2ffSImran Shaik static const struct parent_map gcc_parent_map_7[] = {
255*95eeb2ffSImran Shaik { P_BI_TCXO, 0 },
256*95eeb2ffSImran Shaik { P_GCC_GPLL7_OUT_MAIN, 2 },
257*95eeb2ffSImran Shaik { P_RXC0_REF_CLK, 3 },
258*95eeb2ffSImran Shaik { P_GCC_GPLL0_OUT_EVEN, 6 },
259*95eeb2ffSImran Shaik };
260*95eeb2ffSImran Shaik
261*95eeb2ffSImran Shaik static const struct clk_parent_data gcc_parent_data_7[] = {
262*95eeb2ffSImran Shaik { .index = DT_BI_TCXO },
263*95eeb2ffSImran Shaik { .hw = &gcc_gpll7.clkr.hw },
264*95eeb2ffSImran Shaik { .index = DT_RXC0_REF_CLK },
265*95eeb2ffSImran Shaik { .hw = &gcc_gpll0_out_even.clkr.hw },
266*95eeb2ffSImran Shaik };
267*95eeb2ffSImran Shaik
268*95eeb2ffSImran Shaik static const struct parent_map gcc_parent_map_8[] = {
269*95eeb2ffSImran Shaik { P_PCIE_PHY_AUX_CLK, 1 },
270*95eeb2ffSImran Shaik { P_BI_TCXO, 2 },
271*95eeb2ffSImran Shaik };
272*95eeb2ffSImran Shaik
273*95eeb2ffSImran Shaik static const struct clk_parent_data gcc_parent_data_8[] = {
274*95eeb2ffSImran Shaik { .index = DT_PCIE_PHY_AUX_CLK },
275*95eeb2ffSImran Shaik { .index = DT_BI_TCXO },
276*95eeb2ffSImran Shaik };
277*95eeb2ffSImran Shaik
278*95eeb2ffSImran Shaik static const struct parent_map gcc_parent_map_10[] = {
279*95eeb2ffSImran Shaik { P_PCIE_PHY_AUX_CLK, 1 },
280*95eeb2ffSImran Shaik { P_BI_TCXO, 2 },
281*95eeb2ffSImran Shaik };
282*95eeb2ffSImran Shaik
283*95eeb2ffSImran Shaik static const struct clk_parent_data gcc_parent_data_10[] = {
284*95eeb2ffSImran Shaik { .index = DT_PCIE_PHY_AUX_CLK },
285*95eeb2ffSImran Shaik { .index = DT_BI_TCXO },
286*95eeb2ffSImran Shaik };
287*95eeb2ffSImran Shaik
288*95eeb2ffSImran Shaik static const struct parent_map gcc_parent_map_12[] = {
289*95eeb2ffSImran Shaik { P_BI_TCXO, 0 },
290*95eeb2ffSImran Shaik { P_GCC_GPLL0_OUT_MAIN, 1 },
291*95eeb2ffSImran Shaik { P_GCC_GPLL9_OUT_MAIN, 2 },
292*95eeb2ffSImran Shaik { P_GCC_GPLL4_OUT_MAIN, 5 },
293*95eeb2ffSImran Shaik { P_GCC_GPLL0_OUT_EVEN, 6 },
294*95eeb2ffSImran Shaik };
295*95eeb2ffSImran Shaik
296*95eeb2ffSImran Shaik static const struct clk_parent_data gcc_parent_data_12[] = {
297*95eeb2ffSImran Shaik { .index = DT_BI_TCXO },
298*95eeb2ffSImran Shaik { .hw = &gcc_gpll0.clkr.hw },
299*95eeb2ffSImran Shaik { .hw = &gcc_gpll9.clkr.hw },
300*95eeb2ffSImran Shaik { .hw = &gcc_gpll4.clkr.hw },
301*95eeb2ffSImran Shaik { .hw = &gcc_gpll0_out_even.clkr.hw },
302*95eeb2ffSImran Shaik };
303*95eeb2ffSImran Shaik
304*95eeb2ffSImran Shaik static const struct parent_map gcc_parent_map_13[] = {
305*95eeb2ffSImran Shaik { P_BI_TCXO, 0 },
306*95eeb2ffSImran Shaik { P_GCC_GPLL0_OUT_MAIN, 1 },
307*95eeb2ffSImran Shaik };
308*95eeb2ffSImran Shaik
309*95eeb2ffSImran Shaik static const struct clk_parent_data gcc_parent_data_13[] = {
310*95eeb2ffSImran Shaik { .index = DT_BI_TCXO },
311*95eeb2ffSImran Shaik { .hw = &gcc_gpll0.clkr.hw },
312*95eeb2ffSImran Shaik };
313*95eeb2ffSImran Shaik
314*95eeb2ffSImran Shaik static const struct parent_map gcc_parent_map_14[] = {
315*95eeb2ffSImran Shaik { P_BI_TCXO, 0 },
316*95eeb2ffSImran Shaik { P_GCC_GPLL0_OUT_MAIN, 1 },
317*95eeb2ffSImran Shaik { P_GCC_GPLL4_OUT_MAIN, 3 },
318*95eeb2ffSImran Shaik { P_GCC_GPLL0_OUT_EVEN, 6 },
319*95eeb2ffSImran Shaik };
320*95eeb2ffSImran Shaik
321*95eeb2ffSImran Shaik static const struct clk_parent_data gcc_parent_data_14[] = {
322*95eeb2ffSImran Shaik { .index = DT_BI_TCXO },
323*95eeb2ffSImran Shaik { .hw = &gcc_gpll0.clkr.hw },
324*95eeb2ffSImran Shaik { .hw = &gcc_gpll4.clkr.hw },
325*95eeb2ffSImran Shaik { .hw = &gcc_gpll0_out_even.clkr.hw },
326*95eeb2ffSImran Shaik };
327*95eeb2ffSImran Shaik
328*95eeb2ffSImran Shaik static const struct parent_map gcc_parent_map_15[] = {
329*95eeb2ffSImran Shaik { P_UFS_PHY_RX_SYMBOL_0_CLK, 0 },
330*95eeb2ffSImran Shaik { P_BI_TCXO, 2 },
331*95eeb2ffSImran Shaik };
332*95eeb2ffSImran Shaik
333*95eeb2ffSImran Shaik static const struct clk_parent_data gcc_parent_data_15[] = {
334*95eeb2ffSImran Shaik { .index = DT_UFS_PHY_RX_SYMBOL_0_CLK },
335*95eeb2ffSImran Shaik { .index = DT_BI_TCXO },
336*95eeb2ffSImran Shaik };
337*95eeb2ffSImran Shaik
338*95eeb2ffSImran Shaik static const struct parent_map gcc_parent_map_16[] = {
339*95eeb2ffSImran Shaik { P_UFS_PHY_RX_SYMBOL_1_CLK, 0 },
340*95eeb2ffSImran Shaik { P_BI_TCXO, 2 },
341*95eeb2ffSImran Shaik };
342*95eeb2ffSImran Shaik
343*95eeb2ffSImran Shaik static const struct clk_parent_data gcc_parent_data_16[] = {
344*95eeb2ffSImran Shaik { .index = DT_UFS_PHY_RX_SYMBOL_1_CLK },
345*95eeb2ffSImran Shaik { .index = DT_BI_TCXO },
346*95eeb2ffSImran Shaik };
347*95eeb2ffSImran Shaik
348*95eeb2ffSImran Shaik static const struct parent_map gcc_parent_map_17[] = {
349*95eeb2ffSImran Shaik { P_UFS_PHY_TX_SYMBOL_0_CLK, 0 },
350*95eeb2ffSImran Shaik { P_BI_TCXO, 2 },
351*95eeb2ffSImran Shaik };
352*95eeb2ffSImran Shaik
353*95eeb2ffSImran Shaik static const struct clk_parent_data gcc_parent_data_17[] = {
354*95eeb2ffSImran Shaik { .index = DT_UFS_PHY_TX_SYMBOL_0_CLK },
355*95eeb2ffSImran Shaik { .index = DT_BI_TCXO },
356*95eeb2ffSImran Shaik };
357*95eeb2ffSImran Shaik
358*95eeb2ffSImran Shaik static const struct parent_map gcc_parent_map_18[] = {
359*95eeb2ffSImran Shaik { P_USB3_PHY_WRAPPER_GCC_USB30_PRIM_PIPE_CLK, 0 },
360*95eeb2ffSImran Shaik { P_BI_TCXO, 2 },
361*95eeb2ffSImran Shaik };
362*95eeb2ffSImran Shaik
363*95eeb2ffSImran Shaik static const struct clk_parent_data gcc_parent_data_18[] = {
364*95eeb2ffSImran Shaik { .index = DT_USB3_PHY_WRAPPER_GCC_USB30_PRIM_PIPE_CLK },
365*95eeb2ffSImran Shaik { .index = DT_BI_TCXO },
366*95eeb2ffSImran Shaik };
367*95eeb2ffSImran Shaik
368*95eeb2ffSImran Shaik static struct clk_regmap_mux gcc_pcie_0_phy_aux_clk_src = {
369*95eeb2ffSImran Shaik .reg = 0xa9074,
370*95eeb2ffSImran Shaik .shift = 0,
371*95eeb2ffSImran Shaik .width = 2,
372*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_8,
373*95eeb2ffSImran Shaik .clkr = {
374*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
375*95eeb2ffSImran Shaik .name = "gcc_pcie_0_phy_aux_clk_src",
376*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_8,
377*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_8),
378*95eeb2ffSImran Shaik .ops = &clk_regmap_mux_closest_ops,
379*95eeb2ffSImran Shaik },
380*95eeb2ffSImran Shaik },
381*95eeb2ffSImran Shaik };
382*95eeb2ffSImran Shaik
383*95eeb2ffSImran Shaik static struct clk_regmap_phy_mux gcc_pcie_0_pipe_clk_src = {
384*95eeb2ffSImran Shaik .reg = 0xa906c,
385*95eeb2ffSImran Shaik .clkr = {
386*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
387*95eeb2ffSImran Shaik .name = "gcc_pcie_0_pipe_clk_src",
388*95eeb2ffSImran Shaik .parent_data = &(const struct clk_parent_data) {
389*95eeb2ffSImran Shaik .index = DT_PCIE_0_PIPE_CLK,
390*95eeb2ffSImran Shaik },
391*95eeb2ffSImran Shaik .num_parents = 1,
392*95eeb2ffSImran Shaik .ops = &clk_regmap_phy_mux_ops,
393*95eeb2ffSImran Shaik },
394*95eeb2ffSImran Shaik },
395*95eeb2ffSImran Shaik };
396*95eeb2ffSImran Shaik
397*95eeb2ffSImran Shaik static struct clk_regmap_mux gcc_pcie_1_phy_aux_clk_src = {
398*95eeb2ffSImran Shaik .reg = 0x77074,
399*95eeb2ffSImran Shaik .shift = 0,
400*95eeb2ffSImran Shaik .width = 2,
401*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_10,
402*95eeb2ffSImran Shaik .clkr = {
403*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
404*95eeb2ffSImran Shaik .name = "gcc_pcie_1_phy_aux_clk_src",
405*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_10,
406*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_10),
407*95eeb2ffSImran Shaik .ops = &clk_regmap_mux_closest_ops,
408*95eeb2ffSImran Shaik },
409*95eeb2ffSImran Shaik },
410*95eeb2ffSImran Shaik };
411*95eeb2ffSImran Shaik
412*95eeb2ffSImran Shaik static struct clk_regmap_phy_mux gcc_pcie_1_pipe_clk_src = {
413*95eeb2ffSImran Shaik .reg = 0x7706c,
414*95eeb2ffSImran Shaik .clkr = {
415*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
416*95eeb2ffSImran Shaik .name = "gcc_pcie_1_pipe_clk_src",
417*95eeb2ffSImran Shaik .parent_data = &(const struct clk_parent_data) {
418*95eeb2ffSImran Shaik .index = DT_PCIE_1_PIPE_CLK,
419*95eeb2ffSImran Shaik },
420*95eeb2ffSImran Shaik .num_parents = 1,
421*95eeb2ffSImran Shaik .ops = &clk_regmap_phy_mux_ops,
422*95eeb2ffSImran Shaik },
423*95eeb2ffSImran Shaik },
424*95eeb2ffSImran Shaik };
425*95eeb2ffSImran Shaik
426*95eeb2ffSImran Shaik static struct clk_regmap_mux gcc_ufs_phy_rx_symbol_0_clk_src = {
427*95eeb2ffSImran Shaik .reg = 0x83060,
428*95eeb2ffSImran Shaik .shift = 0,
429*95eeb2ffSImran Shaik .width = 2,
430*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_15,
431*95eeb2ffSImran Shaik .clkr = {
432*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
433*95eeb2ffSImran Shaik .name = "gcc_ufs_phy_rx_symbol_0_clk_src",
434*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_15,
435*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_15),
436*95eeb2ffSImran Shaik .ops = &clk_regmap_mux_closest_ops,
437*95eeb2ffSImran Shaik },
438*95eeb2ffSImran Shaik },
439*95eeb2ffSImran Shaik };
440*95eeb2ffSImran Shaik
441*95eeb2ffSImran Shaik static struct clk_regmap_mux gcc_ufs_phy_rx_symbol_1_clk_src = {
442*95eeb2ffSImran Shaik .reg = 0x830d0,
443*95eeb2ffSImran Shaik .shift = 0,
444*95eeb2ffSImran Shaik .width = 2,
445*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_16,
446*95eeb2ffSImran Shaik .clkr = {
447*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
448*95eeb2ffSImran Shaik .name = "gcc_ufs_phy_rx_symbol_1_clk_src",
449*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_16,
450*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_16),
451*95eeb2ffSImran Shaik .ops = &clk_regmap_mux_closest_ops,
452*95eeb2ffSImran Shaik },
453*95eeb2ffSImran Shaik },
454*95eeb2ffSImran Shaik };
455*95eeb2ffSImran Shaik
456*95eeb2ffSImran Shaik static struct clk_regmap_mux gcc_ufs_phy_tx_symbol_0_clk_src = {
457*95eeb2ffSImran Shaik .reg = 0x83050,
458*95eeb2ffSImran Shaik .shift = 0,
459*95eeb2ffSImran Shaik .width = 2,
460*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_17,
461*95eeb2ffSImran Shaik .clkr = {
462*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
463*95eeb2ffSImran Shaik .name = "gcc_ufs_phy_tx_symbol_0_clk_src",
464*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_17,
465*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_17),
466*95eeb2ffSImran Shaik .ops = &clk_regmap_mux_closest_ops,
467*95eeb2ffSImran Shaik },
468*95eeb2ffSImran Shaik },
469*95eeb2ffSImran Shaik };
470*95eeb2ffSImran Shaik
471*95eeb2ffSImran Shaik static struct clk_regmap_mux gcc_usb3_prim_phy_pipe_clk_src = {
472*95eeb2ffSImran Shaik .reg = 0x1b068,
473*95eeb2ffSImran Shaik .shift = 0,
474*95eeb2ffSImran Shaik .width = 2,
475*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_18,
476*95eeb2ffSImran Shaik .clkr = {
477*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
478*95eeb2ffSImran Shaik .name = "gcc_usb3_prim_phy_pipe_clk_src",
479*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_18,
480*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_18),
481*95eeb2ffSImran Shaik .ops = &clk_regmap_mux_closest_ops,
482*95eeb2ffSImran Shaik },
483*95eeb2ffSImran Shaik },
484*95eeb2ffSImran Shaik };
485*95eeb2ffSImran Shaik
486*95eeb2ffSImran Shaik static const struct freq_tbl ftbl_gcc_emac0_phy_aux_clk_src[] = {
487*95eeb2ffSImran Shaik F(19200000, P_BI_TCXO, 1, 0, 0),
488*95eeb2ffSImran Shaik { }
489*95eeb2ffSImran Shaik };
490*95eeb2ffSImran Shaik
491*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_emac0_phy_aux_clk_src = {
492*95eeb2ffSImran Shaik .cmd_rcgr = 0xb6028,
493*95eeb2ffSImran Shaik .mnd_width = 0,
494*95eeb2ffSImran Shaik .hid_width = 5,
495*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_2,
496*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_emac0_phy_aux_clk_src,
497*95eeb2ffSImran Shaik .clkr.hw.init = &(const struct clk_init_data) {
498*95eeb2ffSImran Shaik .name = "gcc_emac0_phy_aux_clk_src",
499*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_2,
500*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_2),
501*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
502*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
503*95eeb2ffSImran Shaik },
504*95eeb2ffSImran Shaik };
505*95eeb2ffSImran Shaik
506*95eeb2ffSImran Shaik static const struct freq_tbl ftbl_gcc_emac0_ptp_clk_src[] = {
507*95eeb2ffSImran Shaik F(125000000, P_GCC_GPLL7_OUT_MAIN, 8, 0, 0),
508*95eeb2ffSImran Shaik F(230400000, P_GCC_GPLL4_OUT_MAIN, 3.5, 0, 0),
509*95eeb2ffSImran Shaik { }
510*95eeb2ffSImran Shaik };
511*95eeb2ffSImran Shaik
512*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_emac0_ptp_clk_src = {
513*95eeb2ffSImran Shaik .cmd_rcgr = 0xb6060,
514*95eeb2ffSImran Shaik .mnd_width = 16,
515*95eeb2ffSImran Shaik .hid_width = 5,
516*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_6,
517*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_emac0_ptp_clk_src,
518*95eeb2ffSImran Shaik .clkr.hw.init = &(const struct clk_init_data) {
519*95eeb2ffSImran Shaik .name = "gcc_emac0_ptp_clk_src",
520*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_6,
521*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_6),
522*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
523*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
524*95eeb2ffSImran Shaik },
525*95eeb2ffSImran Shaik };
526*95eeb2ffSImran Shaik
527*95eeb2ffSImran Shaik static const struct freq_tbl ftbl_gcc_emac0_rgmii_clk_src[] = {
528*95eeb2ffSImran Shaik F(5000000, P_GCC_GPLL0_OUT_EVEN, 10, 1, 6),
529*95eeb2ffSImran Shaik F(50000000, P_GCC_GPLL0_OUT_EVEN, 6, 0, 0),
530*95eeb2ffSImran Shaik F(125000000, P_GCC_GPLL7_OUT_MAIN, 8, 0, 0),
531*95eeb2ffSImran Shaik F(250000000, P_GCC_GPLL7_OUT_MAIN, 4, 0, 0),
532*95eeb2ffSImran Shaik { }
533*95eeb2ffSImran Shaik };
534*95eeb2ffSImran Shaik
535*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_emac0_rgmii_clk_src = {
536*95eeb2ffSImran Shaik .cmd_rcgr = 0xb6048,
537*95eeb2ffSImran Shaik .mnd_width = 16,
538*95eeb2ffSImran Shaik .hid_width = 5,
539*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_7,
540*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_emac0_rgmii_clk_src,
541*95eeb2ffSImran Shaik .clkr.hw.init = &(const struct clk_init_data) {
542*95eeb2ffSImran Shaik .name = "gcc_emac0_rgmii_clk_src",
543*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_7,
544*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_7),
545*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
546*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
547*95eeb2ffSImran Shaik },
548*95eeb2ffSImran Shaik };
549*95eeb2ffSImran Shaik
550*95eeb2ffSImran Shaik static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = {
551*95eeb2ffSImran Shaik F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
552*95eeb2ffSImran Shaik F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0),
553*95eeb2ffSImran Shaik { }
554*95eeb2ffSImran Shaik };
555*95eeb2ffSImran Shaik
556*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_gp1_clk_src = {
557*95eeb2ffSImran Shaik .cmd_rcgr = 0x70004,
558*95eeb2ffSImran Shaik .mnd_width = 16,
559*95eeb2ffSImran Shaik .hid_width = 5,
560*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_1,
561*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_gp1_clk_src,
562*95eeb2ffSImran Shaik .clkr.hw.init = &(const struct clk_init_data) {
563*95eeb2ffSImran Shaik .name = "gcc_gp1_clk_src",
564*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_1,
565*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_1),
566*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
567*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
568*95eeb2ffSImran Shaik },
569*95eeb2ffSImran Shaik };
570*95eeb2ffSImran Shaik
571*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_gp2_clk_src = {
572*95eeb2ffSImran Shaik .cmd_rcgr = 0x71004,
573*95eeb2ffSImran Shaik .mnd_width = 16,
574*95eeb2ffSImran Shaik .hid_width = 5,
575*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_1,
576*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_gp1_clk_src,
577*95eeb2ffSImran Shaik .clkr.hw.init = &(const struct clk_init_data) {
578*95eeb2ffSImran Shaik .name = "gcc_gp2_clk_src",
579*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_1,
580*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_1),
581*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
582*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
583*95eeb2ffSImran Shaik },
584*95eeb2ffSImran Shaik };
585*95eeb2ffSImran Shaik
586*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_gp3_clk_src = {
587*95eeb2ffSImran Shaik .cmd_rcgr = 0x62004,
588*95eeb2ffSImran Shaik .mnd_width = 16,
589*95eeb2ffSImran Shaik .hid_width = 5,
590*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_1,
591*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_gp1_clk_src,
592*95eeb2ffSImran Shaik .clkr.hw.init = &(const struct clk_init_data) {
593*95eeb2ffSImran Shaik .name = "gcc_gp3_clk_src",
594*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_1,
595*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_1),
596*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
597*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
598*95eeb2ffSImran Shaik },
599*95eeb2ffSImran Shaik };
600*95eeb2ffSImran Shaik
601*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_gp4_clk_src = {
602*95eeb2ffSImran Shaik .cmd_rcgr = 0x1e004,
603*95eeb2ffSImran Shaik .mnd_width = 16,
604*95eeb2ffSImran Shaik .hid_width = 5,
605*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_1,
606*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_gp1_clk_src,
607*95eeb2ffSImran Shaik .clkr.hw.init = &(const struct clk_init_data) {
608*95eeb2ffSImran Shaik .name = "gcc_gp4_clk_src",
609*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_1,
610*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_1),
611*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
612*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
613*95eeb2ffSImran Shaik },
614*95eeb2ffSImran Shaik };
615*95eeb2ffSImran Shaik
616*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_gp5_clk_src = {
617*95eeb2ffSImran Shaik .cmd_rcgr = 0x1f004,
618*95eeb2ffSImran Shaik .mnd_width = 16,
619*95eeb2ffSImran Shaik .hid_width = 5,
620*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_1,
621*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_gp1_clk_src,
622*95eeb2ffSImran Shaik .clkr.hw.init = &(const struct clk_init_data) {
623*95eeb2ffSImran Shaik .name = "gcc_gp5_clk_src",
624*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_1,
625*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_1),
626*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
627*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
628*95eeb2ffSImran Shaik },
629*95eeb2ffSImran Shaik };
630*95eeb2ffSImran Shaik
631*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_pcie_0_aux_clk_src = {
632*95eeb2ffSImran Shaik .cmd_rcgr = 0xa9078,
633*95eeb2ffSImran Shaik .mnd_width = 16,
634*95eeb2ffSImran Shaik .hid_width = 5,
635*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_2,
636*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_emac0_phy_aux_clk_src,
637*95eeb2ffSImran Shaik .clkr.hw.init = &(const struct clk_init_data) {
638*95eeb2ffSImran Shaik .name = "gcc_pcie_0_aux_clk_src",
639*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_2,
640*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_2),
641*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
642*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
643*95eeb2ffSImran Shaik },
644*95eeb2ffSImran Shaik };
645*95eeb2ffSImran Shaik
646*95eeb2ffSImran Shaik static const struct freq_tbl ftbl_gcc_pcie_0_phy_rchng_clk_src[] = {
647*95eeb2ffSImran Shaik F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
648*95eeb2ffSImran Shaik { }
649*95eeb2ffSImran Shaik };
650*95eeb2ffSImran Shaik
651*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_pcie_0_phy_rchng_clk_src = {
652*95eeb2ffSImran Shaik .cmd_rcgr = 0xa9054,
653*95eeb2ffSImran Shaik .mnd_width = 0,
654*95eeb2ffSImran Shaik .hid_width = 5,
655*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_0,
656*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,
657*95eeb2ffSImran Shaik .clkr.hw.init = &(const struct clk_init_data) {
658*95eeb2ffSImran Shaik .name = "gcc_pcie_0_phy_rchng_clk_src",
659*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_0,
660*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_0),
661*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
662*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
663*95eeb2ffSImran Shaik },
664*95eeb2ffSImran Shaik };
665*95eeb2ffSImran Shaik
666*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_pcie_1_aux_clk_src = {
667*95eeb2ffSImran Shaik .cmd_rcgr = 0x77078,
668*95eeb2ffSImran Shaik .mnd_width = 16,
669*95eeb2ffSImran Shaik .hid_width = 5,
670*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_2,
671*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_emac0_phy_aux_clk_src,
672*95eeb2ffSImran Shaik .clkr.hw.init = &(const struct clk_init_data) {
673*95eeb2ffSImran Shaik .name = "gcc_pcie_1_aux_clk_src",
674*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_2,
675*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_2),
676*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
677*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
678*95eeb2ffSImran Shaik },
679*95eeb2ffSImran Shaik };
680*95eeb2ffSImran Shaik
681*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_pcie_1_phy_rchng_clk_src = {
682*95eeb2ffSImran Shaik .cmd_rcgr = 0x77054,
683*95eeb2ffSImran Shaik .mnd_width = 0,
684*95eeb2ffSImran Shaik .hid_width = 5,
685*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_0,
686*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,
687*95eeb2ffSImran Shaik .clkr.hw.init = &(const struct clk_init_data) {
688*95eeb2ffSImran Shaik .name = "gcc_pcie_1_phy_rchng_clk_src",
689*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_0,
690*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_0),
691*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
692*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
693*95eeb2ffSImran Shaik },
694*95eeb2ffSImran Shaik };
695*95eeb2ffSImran Shaik
696*95eeb2ffSImran Shaik static const struct freq_tbl ftbl_gcc_pdm2_clk_src[] = {
697*95eeb2ffSImran Shaik F(60000000, P_GCC_GPLL0_OUT_MAIN, 10, 0, 0),
698*95eeb2ffSImran Shaik { }
699*95eeb2ffSImran Shaik };
700*95eeb2ffSImran Shaik
701*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_pdm2_clk_src = {
702*95eeb2ffSImran Shaik .cmd_rcgr = 0x3f010,
703*95eeb2ffSImran Shaik .mnd_width = 0,
704*95eeb2ffSImran Shaik .hid_width = 5,
705*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_0,
706*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_pdm2_clk_src,
707*95eeb2ffSImran Shaik .clkr.hw.init = &(const struct clk_init_data) {
708*95eeb2ffSImran Shaik .name = "gcc_pdm2_clk_src",
709*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_0,
710*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_0),
711*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
712*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
713*95eeb2ffSImran Shaik },
714*95eeb2ffSImran Shaik };
715*95eeb2ffSImran Shaik
716*95eeb2ffSImran Shaik static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s0_clk_src[] = {
717*95eeb2ffSImran Shaik F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),
718*95eeb2ffSImran Shaik F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),
719*95eeb2ffSImran Shaik F(19200000, P_BI_TCXO, 1, 0, 0),
720*95eeb2ffSImran Shaik F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),
721*95eeb2ffSImran Shaik F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),
722*95eeb2ffSImran Shaik F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),
723*95eeb2ffSImran Shaik F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),
724*95eeb2ffSImran Shaik F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),
725*95eeb2ffSImran Shaik F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),
726*95eeb2ffSImran Shaik F(120000000, P_GCC_GPLL0_OUT_MAIN, 5, 0, 0),
727*95eeb2ffSImran Shaik { }
728*95eeb2ffSImran Shaik };
729*95eeb2ffSImran Shaik
730*95eeb2ffSImran Shaik static struct clk_init_data gcc_qupv3_wrap0_s0_clk_src_init = {
731*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap0_s0_clk_src",
732*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_0,
733*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_0),
734*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
735*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
736*95eeb2ffSImran Shaik };
737*95eeb2ffSImran Shaik
738*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_qupv3_wrap0_s0_clk_src = {
739*95eeb2ffSImran Shaik .cmd_rcgr = 0x23154,
740*95eeb2ffSImran Shaik .mnd_width = 16,
741*95eeb2ffSImran Shaik .hid_width = 5,
742*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_0,
743*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
744*95eeb2ffSImran Shaik .clkr.hw.init = &gcc_qupv3_wrap0_s0_clk_src_init,
745*95eeb2ffSImran Shaik };
746*95eeb2ffSImran Shaik
747*95eeb2ffSImran Shaik static struct clk_init_data gcc_qupv3_wrap0_s1_clk_src_init = {
748*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap0_s1_clk_src",
749*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_0,
750*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_0),
751*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
752*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
753*95eeb2ffSImran Shaik };
754*95eeb2ffSImran Shaik
755*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_qupv3_wrap0_s1_clk_src = {
756*95eeb2ffSImran Shaik .cmd_rcgr = 0x23288,
757*95eeb2ffSImran Shaik .mnd_width = 16,
758*95eeb2ffSImran Shaik .hid_width = 5,
759*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_0,
760*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
761*95eeb2ffSImran Shaik .clkr.hw.init = &gcc_qupv3_wrap0_s1_clk_src_init,
762*95eeb2ffSImran Shaik };
763*95eeb2ffSImran Shaik
764*95eeb2ffSImran Shaik static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s2_clk_src[] = {
765*95eeb2ffSImran Shaik F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),
766*95eeb2ffSImran Shaik F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),
767*95eeb2ffSImran Shaik F(19200000, P_BI_TCXO, 1, 0, 0),
768*95eeb2ffSImran Shaik F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),
769*95eeb2ffSImran Shaik F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),
770*95eeb2ffSImran Shaik F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),
771*95eeb2ffSImran Shaik F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),
772*95eeb2ffSImran Shaik F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),
773*95eeb2ffSImran Shaik F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),
774*95eeb2ffSImran Shaik F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
775*95eeb2ffSImran Shaik { }
776*95eeb2ffSImran Shaik };
777*95eeb2ffSImran Shaik
778*95eeb2ffSImran Shaik static struct clk_init_data gcc_qupv3_wrap0_s2_clk_src_init = {
779*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap0_s2_clk_src",
780*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_0,
781*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_0),
782*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
783*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
784*95eeb2ffSImran Shaik };
785*95eeb2ffSImran Shaik
786*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_qupv3_wrap0_s2_clk_src = {
787*95eeb2ffSImran Shaik .cmd_rcgr = 0x233bc,
788*95eeb2ffSImran Shaik .mnd_width = 16,
789*95eeb2ffSImran Shaik .hid_width = 5,
790*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_0,
791*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
792*95eeb2ffSImran Shaik .clkr.hw.init = &gcc_qupv3_wrap0_s2_clk_src_init,
793*95eeb2ffSImran Shaik };
794*95eeb2ffSImran Shaik
795*95eeb2ffSImran Shaik static struct clk_init_data gcc_qupv3_wrap0_s3_clk_src_init = {
796*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap0_s3_clk_src",
797*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_0,
798*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_0),
799*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
800*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
801*95eeb2ffSImran Shaik };
802*95eeb2ffSImran Shaik
803*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_qupv3_wrap0_s3_clk_src = {
804*95eeb2ffSImran Shaik .cmd_rcgr = 0x234f0,
805*95eeb2ffSImran Shaik .mnd_width = 16,
806*95eeb2ffSImran Shaik .hid_width = 5,
807*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_0,
808*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
809*95eeb2ffSImran Shaik .clkr.hw.init = &gcc_qupv3_wrap0_s3_clk_src_init,
810*95eeb2ffSImran Shaik };
811*95eeb2ffSImran Shaik
812*95eeb2ffSImran Shaik static struct clk_init_data gcc_qupv3_wrap0_s4_clk_src_init = {
813*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap0_s4_clk_src",
814*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_4,
815*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_4),
816*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
817*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
818*95eeb2ffSImran Shaik };
819*95eeb2ffSImran Shaik
820*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_qupv3_wrap0_s4_clk_src = {
821*95eeb2ffSImran Shaik .cmd_rcgr = 0x23624,
822*95eeb2ffSImran Shaik .mnd_width = 16,
823*95eeb2ffSImran Shaik .hid_width = 5,
824*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_4,
825*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
826*95eeb2ffSImran Shaik .clkr.hw.init = &gcc_qupv3_wrap0_s4_clk_src_init,
827*95eeb2ffSImran Shaik };
828*95eeb2ffSImran Shaik
829*95eeb2ffSImran Shaik static struct clk_init_data gcc_qupv3_wrap0_s5_clk_src_init = {
830*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap0_s5_clk_src",
831*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_0,
832*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_0),
833*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
834*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
835*95eeb2ffSImran Shaik };
836*95eeb2ffSImran Shaik
837*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_qupv3_wrap0_s5_clk_src = {
838*95eeb2ffSImran Shaik .cmd_rcgr = 0x23758,
839*95eeb2ffSImran Shaik .mnd_width = 16,
840*95eeb2ffSImran Shaik .hid_width = 5,
841*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_0,
842*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
843*95eeb2ffSImran Shaik .clkr.hw.init = &gcc_qupv3_wrap0_s5_clk_src_init,
844*95eeb2ffSImran Shaik };
845*95eeb2ffSImran Shaik
846*95eeb2ffSImran Shaik static struct clk_init_data gcc_qupv3_wrap0_s6_clk_src_init = {
847*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap0_s6_clk_src",
848*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_0,
849*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_0),
850*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
851*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
852*95eeb2ffSImran Shaik };
853*95eeb2ffSImran Shaik
854*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_qupv3_wrap0_s6_clk_src = {
855*95eeb2ffSImran Shaik .cmd_rcgr = 0x2388c,
856*95eeb2ffSImran Shaik .mnd_width = 16,
857*95eeb2ffSImran Shaik .hid_width = 5,
858*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_0,
859*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
860*95eeb2ffSImran Shaik .clkr.hw.init = &gcc_qupv3_wrap0_s6_clk_src_init,
861*95eeb2ffSImran Shaik };
862*95eeb2ffSImran Shaik
863*95eeb2ffSImran Shaik static struct clk_init_data gcc_qupv3_wrap0_s7_clk_src_init = {
864*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap0_s7_clk_src",
865*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_0,
866*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_0),
867*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
868*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
869*95eeb2ffSImran Shaik };
870*95eeb2ffSImran Shaik
871*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_qupv3_wrap0_s7_clk_src = {
872*95eeb2ffSImran Shaik .cmd_rcgr = 0x239c0,
873*95eeb2ffSImran Shaik .mnd_width = 16,
874*95eeb2ffSImran Shaik .hid_width = 5,
875*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_0,
876*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
877*95eeb2ffSImran Shaik .clkr.hw.init = &gcc_qupv3_wrap0_s7_clk_src_init,
878*95eeb2ffSImran Shaik };
879*95eeb2ffSImran Shaik
880*95eeb2ffSImran Shaik static struct clk_init_data gcc_qupv3_wrap1_s0_clk_src_init = {
881*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap1_s0_clk_src",
882*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_0,
883*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_0),
884*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
885*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
886*95eeb2ffSImran Shaik };
887*95eeb2ffSImran Shaik
888*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_qupv3_wrap1_s0_clk_src = {
889*95eeb2ffSImran Shaik .cmd_rcgr = 0x24154,
890*95eeb2ffSImran Shaik .mnd_width = 16,
891*95eeb2ffSImran Shaik .hid_width = 5,
892*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_0,
893*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
894*95eeb2ffSImran Shaik .clkr.hw.init = &gcc_qupv3_wrap1_s0_clk_src_init,
895*95eeb2ffSImran Shaik };
896*95eeb2ffSImran Shaik
897*95eeb2ffSImran Shaik static struct clk_init_data gcc_qupv3_wrap1_s1_clk_src_init = {
898*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap1_s1_clk_src",
899*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_0,
900*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_0),
901*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
902*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
903*95eeb2ffSImran Shaik };
904*95eeb2ffSImran Shaik
905*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_qupv3_wrap1_s1_clk_src = {
906*95eeb2ffSImran Shaik .cmd_rcgr = 0x24288,
907*95eeb2ffSImran Shaik .mnd_width = 16,
908*95eeb2ffSImran Shaik .hid_width = 5,
909*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_0,
910*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
911*95eeb2ffSImran Shaik .clkr.hw.init = &gcc_qupv3_wrap1_s1_clk_src_init,
912*95eeb2ffSImran Shaik };
913*95eeb2ffSImran Shaik
914*95eeb2ffSImran Shaik static struct clk_init_data gcc_qupv3_wrap1_s2_clk_src_init = {
915*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap1_s2_clk_src",
916*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_0,
917*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_0),
918*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
919*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
920*95eeb2ffSImran Shaik };
921*95eeb2ffSImran Shaik
922*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_qupv3_wrap1_s2_clk_src = {
923*95eeb2ffSImran Shaik .cmd_rcgr = 0x243bc,
924*95eeb2ffSImran Shaik .mnd_width = 16,
925*95eeb2ffSImran Shaik .hid_width = 5,
926*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_0,
927*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
928*95eeb2ffSImran Shaik .clkr.hw.init = &gcc_qupv3_wrap1_s2_clk_src_init,
929*95eeb2ffSImran Shaik };
930*95eeb2ffSImran Shaik
931*95eeb2ffSImran Shaik static struct clk_init_data gcc_qupv3_wrap1_s3_clk_src_init = {
932*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap1_s3_clk_src",
933*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_0,
934*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_0),
935*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
936*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
937*95eeb2ffSImran Shaik };
938*95eeb2ffSImran Shaik
939*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_qupv3_wrap1_s3_clk_src = {
940*95eeb2ffSImran Shaik .cmd_rcgr = 0x244f0,
941*95eeb2ffSImran Shaik .mnd_width = 16,
942*95eeb2ffSImran Shaik .hid_width = 5,
943*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_0,
944*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
945*95eeb2ffSImran Shaik .clkr.hw.init = &gcc_qupv3_wrap1_s3_clk_src_init,
946*95eeb2ffSImran Shaik };
947*95eeb2ffSImran Shaik
948*95eeb2ffSImran Shaik static struct clk_init_data gcc_qupv3_wrap1_s4_clk_src_init = {
949*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap1_s4_clk_src",
950*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_4,
951*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_4),
952*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
953*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
954*95eeb2ffSImran Shaik };
955*95eeb2ffSImran Shaik
956*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_qupv3_wrap1_s4_clk_src = {
957*95eeb2ffSImran Shaik .cmd_rcgr = 0x24624,
958*95eeb2ffSImran Shaik .mnd_width = 16,
959*95eeb2ffSImran Shaik .hid_width = 5,
960*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_4,
961*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
962*95eeb2ffSImran Shaik .clkr.hw.init = &gcc_qupv3_wrap1_s4_clk_src_init,
963*95eeb2ffSImran Shaik };
964*95eeb2ffSImran Shaik
965*95eeb2ffSImran Shaik static struct clk_init_data gcc_qupv3_wrap1_s5_clk_src_init = {
966*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap1_s5_clk_src",
967*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_0,
968*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_0),
969*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
970*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
971*95eeb2ffSImran Shaik };
972*95eeb2ffSImran Shaik
973*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_qupv3_wrap1_s5_clk_src = {
974*95eeb2ffSImran Shaik .cmd_rcgr = 0x24758,
975*95eeb2ffSImran Shaik .mnd_width = 16,
976*95eeb2ffSImran Shaik .hid_width = 5,
977*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_0,
978*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
979*95eeb2ffSImran Shaik .clkr.hw.init = &gcc_qupv3_wrap1_s5_clk_src_init,
980*95eeb2ffSImran Shaik };
981*95eeb2ffSImran Shaik
982*95eeb2ffSImran Shaik static struct clk_init_data gcc_qupv3_wrap1_s6_clk_src_init = {
983*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap1_s6_clk_src",
984*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_0,
985*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_0),
986*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
987*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
988*95eeb2ffSImran Shaik };
989*95eeb2ffSImran Shaik
990*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_qupv3_wrap1_s6_clk_src = {
991*95eeb2ffSImran Shaik .cmd_rcgr = 0x2488c,
992*95eeb2ffSImran Shaik .mnd_width = 16,
993*95eeb2ffSImran Shaik .hid_width = 5,
994*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_0,
995*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
996*95eeb2ffSImran Shaik .clkr.hw.init = &gcc_qupv3_wrap1_s6_clk_src_init,
997*95eeb2ffSImran Shaik };
998*95eeb2ffSImran Shaik
999*95eeb2ffSImran Shaik static struct clk_init_data gcc_qupv3_wrap1_s7_clk_src_init = {
1000*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap1_s7_clk_src",
1001*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_0,
1002*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1003*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1004*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
1005*95eeb2ffSImran Shaik };
1006*95eeb2ffSImran Shaik
1007*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_qupv3_wrap1_s7_clk_src = {
1008*95eeb2ffSImran Shaik .cmd_rcgr = 0x249c0,
1009*95eeb2ffSImran Shaik .mnd_width = 16,
1010*95eeb2ffSImran Shaik .hid_width = 5,
1011*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_0,
1012*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_qupv3_wrap0_s2_clk_src,
1013*95eeb2ffSImran Shaik .clkr.hw.init = &gcc_qupv3_wrap1_s7_clk_src_init,
1014*95eeb2ffSImran Shaik };
1015*95eeb2ffSImran Shaik
1016*95eeb2ffSImran Shaik static const struct freq_tbl ftbl_gcc_qupv3_wrap3_s0_clk_src[] = {
1017*95eeb2ffSImran Shaik F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),
1018*95eeb2ffSImran Shaik F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),
1019*95eeb2ffSImran Shaik F(19200000, P_BI_TCXO, 1, 0, 0),
1020*95eeb2ffSImran Shaik F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),
1021*95eeb2ffSImran Shaik F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),
1022*95eeb2ffSImran Shaik F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),
1023*95eeb2ffSImran Shaik F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),
1024*95eeb2ffSImran Shaik F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
1025*95eeb2ffSImran Shaik F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),
1026*95eeb2ffSImran Shaik F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),
1027*95eeb2ffSImran Shaik F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
1028*95eeb2ffSImran Shaik F(403200000, P_GCC_GPLL4_OUT_MAIN, 2, 0, 0),
1029*95eeb2ffSImran Shaik { }
1030*95eeb2ffSImran Shaik };
1031*95eeb2ffSImran Shaik
1032*95eeb2ffSImran Shaik static struct clk_init_data gcc_qupv3_wrap3_s0_clk_src_init = {
1033*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap3_s0_clk_src",
1034*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_3,
1035*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_3),
1036*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1037*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
1038*95eeb2ffSImran Shaik };
1039*95eeb2ffSImran Shaik
1040*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_qupv3_wrap3_s0_clk_src = {
1041*95eeb2ffSImran Shaik .cmd_rcgr = 0xc4158,
1042*95eeb2ffSImran Shaik .mnd_width = 16,
1043*95eeb2ffSImran Shaik .hid_width = 5,
1044*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_3,
1045*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_qupv3_wrap3_s0_clk_src,
1046*95eeb2ffSImran Shaik .clkr.hw.init = &gcc_qupv3_wrap3_s0_clk_src_init,
1047*95eeb2ffSImran Shaik };
1048*95eeb2ffSImran Shaik
1049*95eeb2ffSImran Shaik static const struct freq_tbl ftbl_gcc_sdcc1_apps_clk_src[] = {
1050*95eeb2ffSImran Shaik F(144000, P_BI_TCXO, 16, 3, 25),
1051*95eeb2ffSImran Shaik F(400000, P_BI_TCXO, 12, 1, 4),
1052*95eeb2ffSImran Shaik F(19200000, P_BI_TCXO, 1, 0, 0),
1053*95eeb2ffSImran Shaik F(20000000, P_GCC_GPLL0_OUT_EVEN, 5, 1, 3),
1054*95eeb2ffSImran Shaik F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),
1055*95eeb2ffSImran Shaik F(50000000, P_GCC_GPLL0_OUT_EVEN, 6, 0, 0),
1056*95eeb2ffSImran Shaik F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0),
1057*95eeb2ffSImran Shaik F(192000000, P_GCC_GPLL9_OUT_MAIN, 4, 0, 0),
1058*95eeb2ffSImran Shaik F(384000000, P_GCC_GPLL9_OUT_MAIN, 2, 0, 0),
1059*95eeb2ffSImran Shaik { }
1060*95eeb2ffSImran Shaik };
1061*95eeb2ffSImran Shaik
1062*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_sdcc1_apps_clk_src = {
1063*95eeb2ffSImran Shaik .cmd_rcgr = 0x20014,
1064*95eeb2ffSImran Shaik .mnd_width = 8,
1065*95eeb2ffSImran Shaik .hid_width = 5,
1066*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_12,
1067*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_sdcc1_apps_clk_src,
1068*95eeb2ffSImran Shaik .clkr.hw.init = &(const struct clk_init_data) {
1069*95eeb2ffSImran Shaik .name = "gcc_sdcc1_apps_clk_src",
1070*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_12,
1071*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_12),
1072*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1073*95eeb2ffSImran Shaik .ops = &clk_rcg2_floor_ops,
1074*95eeb2ffSImran Shaik },
1075*95eeb2ffSImran Shaik };
1076*95eeb2ffSImran Shaik
1077*95eeb2ffSImran Shaik static const struct freq_tbl ftbl_gcc_sdcc1_ice_core_clk_src[] = {
1078*95eeb2ffSImran Shaik F(150000000, P_GCC_GPLL0_OUT_MAIN, 4, 0, 0),
1079*95eeb2ffSImran Shaik F(300000000, P_GCC_GPLL0_OUT_MAIN, 2, 0, 0),
1080*95eeb2ffSImran Shaik { }
1081*95eeb2ffSImran Shaik };
1082*95eeb2ffSImran Shaik
1083*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_sdcc1_ice_core_clk_src = {
1084*95eeb2ffSImran Shaik .cmd_rcgr = 0x2002c,
1085*95eeb2ffSImran Shaik .mnd_width = 0,
1086*95eeb2ffSImran Shaik .hid_width = 5,
1087*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_13,
1088*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_sdcc1_ice_core_clk_src,
1089*95eeb2ffSImran Shaik .clkr.hw.init = &(const struct clk_init_data) {
1090*95eeb2ffSImran Shaik .name = "gcc_sdcc1_ice_core_clk_src",
1091*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_13,
1092*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_13),
1093*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1094*95eeb2ffSImran Shaik .ops = &clk_rcg2_floor_ops,
1095*95eeb2ffSImran Shaik },
1096*95eeb2ffSImran Shaik };
1097*95eeb2ffSImran Shaik
1098*95eeb2ffSImran Shaik static const struct freq_tbl ftbl_gcc_ufs_phy_axi_clk_src[] = {
1099*95eeb2ffSImran Shaik F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),
1100*95eeb2ffSImran Shaik F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
1101*95eeb2ffSImran Shaik F(150000000, P_GCC_GPLL0_OUT_MAIN, 4, 0, 0),
1102*95eeb2ffSImran Shaik F(300000000, P_GCC_GPLL0_OUT_MAIN, 2, 0, 0),
1103*95eeb2ffSImran Shaik { }
1104*95eeb2ffSImran Shaik };
1105*95eeb2ffSImran Shaik
1106*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_ufs_phy_axi_clk_src = {
1107*95eeb2ffSImran Shaik .cmd_rcgr = 0x8302c,
1108*95eeb2ffSImran Shaik .mnd_width = 8,
1109*95eeb2ffSImran Shaik .hid_width = 5,
1110*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_0,
1111*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_ufs_phy_axi_clk_src,
1112*95eeb2ffSImran Shaik .clkr.hw.init = &(const struct clk_init_data) {
1113*95eeb2ffSImran Shaik .name = "gcc_ufs_phy_axi_clk_src",
1114*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_0,
1115*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1116*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1117*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
1118*95eeb2ffSImran Shaik },
1119*95eeb2ffSImran Shaik };
1120*95eeb2ffSImran Shaik
1121*95eeb2ffSImran Shaik static const struct freq_tbl ftbl_gcc_ufs_phy_ice_core_clk_src[] = {
1122*95eeb2ffSImran Shaik F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
1123*95eeb2ffSImran Shaik F(201600000, P_GCC_GPLL4_OUT_MAIN, 4, 0, 0),
1124*95eeb2ffSImran Shaik F(403200000, P_GCC_GPLL4_OUT_MAIN, 2, 0, 0),
1125*95eeb2ffSImran Shaik { }
1126*95eeb2ffSImran Shaik };
1127*95eeb2ffSImran Shaik
1128*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src = {
1129*95eeb2ffSImran Shaik .cmd_rcgr = 0x83074,
1130*95eeb2ffSImran Shaik .mnd_width = 0,
1131*95eeb2ffSImran Shaik .hid_width = 5,
1132*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_14,
1133*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_ufs_phy_ice_core_clk_src,
1134*95eeb2ffSImran Shaik .clkr.hw.init = &(const struct clk_init_data) {
1135*95eeb2ffSImran Shaik .name = "gcc_ufs_phy_ice_core_clk_src",
1136*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_14,
1137*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_14),
1138*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1139*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
1140*95eeb2ffSImran Shaik },
1141*95eeb2ffSImran Shaik };
1142*95eeb2ffSImran Shaik
1143*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src = {
1144*95eeb2ffSImran Shaik .cmd_rcgr = 0x830a8,
1145*95eeb2ffSImran Shaik .mnd_width = 0,
1146*95eeb2ffSImran Shaik .hid_width = 5,
1147*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_5,
1148*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_emac0_phy_aux_clk_src,
1149*95eeb2ffSImran Shaik .clkr.hw.init = &(const struct clk_init_data) {
1150*95eeb2ffSImran Shaik .name = "gcc_ufs_phy_phy_aux_clk_src",
1151*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_5,
1152*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_5),
1153*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1154*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
1155*95eeb2ffSImran Shaik },
1156*95eeb2ffSImran Shaik };
1157*95eeb2ffSImran Shaik
1158*95eeb2ffSImran Shaik static const struct freq_tbl ftbl_gcc_ufs_phy_unipro_core_clk_src[] = {
1159*95eeb2ffSImran Shaik F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
1160*95eeb2ffSImran Shaik F(150000000, P_GCC_GPLL0_OUT_MAIN, 4, 0, 0),
1161*95eeb2ffSImran Shaik F(300000000, P_GCC_GPLL0_OUT_MAIN, 2, 0, 0),
1162*95eeb2ffSImran Shaik { }
1163*95eeb2ffSImran Shaik };
1164*95eeb2ffSImran Shaik
1165*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_ufs_phy_unipro_core_clk_src = {
1166*95eeb2ffSImran Shaik .cmd_rcgr = 0x8308c,
1167*95eeb2ffSImran Shaik .mnd_width = 0,
1168*95eeb2ffSImran Shaik .hid_width = 5,
1169*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_0,
1170*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_ufs_phy_unipro_core_clk_src,
1171*95eeb2ffSImran Shaik .clkr.hw.init = &(const struct clk_init_data) {
1172*95eeb2ffSImran Shaik .name = "gcc_ufs_phy_unipro_core_clk_src",
1173*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_0,
1174*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1175*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1176*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
1177*95eeb2ffSImran Shaik },
1178*95eeb2ffSImran Shaik };
1179*95eeb2ffSImran Shaik
1180*95eeb2ffSImran Shaik static const struct freq_tbl ftbl_gcc_usb20_master_clk_src[] = {
1181*95eeb2ffSImran Shaik F(120000000, P_GCC_GPLL0_OUT_MAIN, 5, 0, 0),
1182*95eeb2ffSImran Shaik { }
1183*95eeb2ffSImran Shaik };
1184*95eeb2ffSImran Shaik
1185*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_usb20_master_clk_src = {
1186*95eeb2ffSImran Shaik .cmd_rcgr = 0x1c028,
1187*95eeb2ffSImran Shaik .mnd_width = 8,
1188*95eeb2ffSImran Shaik .hid_width = 5,
1189*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_0,
1190*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_usb20_master_clk_src,
1191*95eeb2ffSImran Shaik .clkr.hw.init = &(const struct clk_init_data) {
1192*95eeb2ffSImran Shaik .name = "gcc_usb20_master_clk_src",
1193*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_0,
1194*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1195*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1196*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
1197*95eeb2ffSImran Shaik },
1198*95eeb2ffSImran Shaik };
1199*95eeb2ffSImran Shaik
1200*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_usb20_mock_utmi_clk_src = {
1201*95eeb2ffSImran Shaik .cmd_rcgr = 0x1c040,
1202*95eeb2ffSImran Shaik .mnd_width = 0,
1203*95eeb2ffSImran Shaik .hid_width = 5,
1204*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_0,
1205*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_emac0_phy_aux_clk_src,
1206*95eeb2ffSImran Shaik .clkr.hw.init = &(const struct clk_init_data) {
1207*95eeb2ffSImran Shaik .name = "gcc_usb20_mock_utmi_clk_src",
1208*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_0,
1209*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1210*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1211*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
1212*95eeb2ffSImran Shaik },
1213*95eeb2ffSImran Shaik };
1214*95eeb2ffSImran Shaik
1215*95eeb2ffSImran Shaik static const struct freq_tbl ftbl_gcc_usb30_prim_master_clk_src[] = {
1216*95eeb2ffSImran Shaik F(133333333, P_GCC_GPLL0_OUT_MAIN, 4.5, 0, 0),
1217*95eeb2ffSImran Shaik F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0),
1218*95eeb2ffSImran Shaik F(240000000, P_GCC_GPLL0_OUT_MAIN, 2.5, 0, 0),
1219*95eeb2ffSImran Shaik { }
1220*95eeb2ffSImran Shaik };
1221*95eeb2ffSImran Shaik
1222*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_usb30_prim_master_clk_src = {
1223*95eeb2ffSImran Shaik .cmd_rcgr = 0x1b028,
1224*95eeb2ffSImran Shaik .mnd_width = 8,
1225*95eeb2ffSImran Shaik .hid_width = 5,
1226*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_0,
1227*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_usb30_prim_master_clk_src,
1228*95eeb2ffSImran Shaik .clkr.hw.init = &(const struct clk_init_data) {
1229*95eeb2ffSImran Shaik .name = "gcc_usb30_prim_master_clk_src",
1230*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_0,
1231*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1232*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1233*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
1234*95eeb2ffSImran Shaik },
1235*95eeb2ffSImran Shaik };
1236*95eeb2ffSImran Shaik
1237*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src = {
1238*95eeb2ffSImran Shaik .cmd_rcgr = 0x1b040,
1239*95eeb2ffSImran Shaik .mnd_width = 0,
1240*95eeb2ffSImran Shaik .hid_width = 5,
1241*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_0,
1242*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_emac0_phy_aux_clk_src,
1243*95eeb2ffSImran Shaik .clkr.hw.init = &(const struct clk_init_data) {
1244*95eeb2ffSImran Shaik .name = "gcc_usb30_prim_mock_utmi_clk_src",
1245*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_0,
1246*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1247*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1248*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
1249*95eeb2ffSImran Shaik },
1250*95eeb2ffSImran Shaik };
1251*95eeb2ffSImran Shaik
1252*95eeb2ffSImran Shaik static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src = {
1253*95eeb2ffSImran Shaik .cmd_rcgr = 0x1b06c,
1254*95eeb2ffSImran Shaik .mnd_width = 0,
1255*95eeb2ffSImran Shaik .hid_width = 5,
1256*95eeb2ffSImran Shaik .parent_map = gcc_parent_map_2,
1257*95eeb2ffSImran Shaik .freq_tbl = ftbl_gcc_emac0_phy_aux_clk_src,
1258*95eeb2ffSImran Shaik .clkr.hw.init = &(const struct clk_init_data) {
1259*95eeb2ffSImran Shaik .name = "gcc_usb3_prim_phy_aux_clk_src",
1260*95eeb2ffSImran Shaik .parent_data = gcc_parent_data_2,
1261*95eeb2ffSImran Shaik .num_parents = ARRAY_SIZE(gcc_parent_data_2),
1262*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1263*95eeb2ffSImran Shaik .ops = &clk_rcg2_shared_ops,
1264*95eeb2ffSImran Shaik },
1265*95eeb2ffSImran Shaik };
1266*95eeb2ffSImran Shaik
1267*95eeb2ffSImran Shaik static struct clk_regmap_div gcc_pcie_0_pipe_div_clk_src = {
1268*95eeb2ffSImran Shaik .reg = 0xa9070,
1269*95eeb2ffSImran Shaik .shift = 0,
1270*95eeb2ffSImran Shaik .width = 4,
1271*95eeb2ffSImran Shaik .clkr.hw.init = &(const struct clk_init_data) {
1272*95eeb2ffSImran Shaik .name = "gcc_pcie_0_pipe_div_clk_src",
1273*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
1274*95eeb2ffSImran Shaik &gcc_pcie_0_pipe_clk_src.clkr.hw,
1275*95eeb2ffSImran Shaik },
1276*95eeb2ffSImran Shaik .num_parents = 1,
1277*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1278*95eeb2ffSImran Shaik .ops = &clk_regmap_div_ro_ops,
1279*95eeb2ffSImran Shaik },
1280*95eeb2ffSImran Shaik };
1281*95eeb2ffSImran Shaik
1282*95eeb2ffSImran Shaik static struct clk_regmap_div gcc_pcie_1_pipe_div_clk_src = {
1283*95eeb2ffSImran Shaik .reg = 0x77070,
1284*95eeb2ffSImran Shaik .shift = 0,
1285*95eeb2ffSImran Shaik .width = 4,
1286*95eeb2ffSImran Shaik .clkr.hw.init = &(const struct clk_init_data) {
1287*95eeb2ffSImran Shaik .name = "gcc_pcie_1_pipe_div_clk_src",
1288*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
1289*95eeb2ffSImran Shaik &gcc_pcie_1_pipe_clk_src.clkr.hw,
1290*95eeb2ffSImran Shaik },
1291*95eeb2ffSImran Shaik .num_parents = 1,
1292*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1293*95eeb2ffSImran Shaik .ops = &clk_regmap_div_ro_ops,
1294*95eeb2ffSImran Shaik },
1295*95eeb2ffSImran Shaik };
1296*95eeb2ffSImran Shaik
1297*95eeb2ffSImran Shaik static struct clk_regmap_div gcc_qupv3_wrap3_s0_div_clk_src = {
1298*95eeb2ffSImran Shaik .reg = 0xc4288,
1299*95eeb2ffSImran Shaik .shift = 0,
1300*95eeb2ffSImran Shaik .width = 4,
1301*95eeb2ffSImran Shaik .clkr.hw.init = &(const struct clk_init_data) {
1302*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap3_s0_div_clk_src",
1303*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
1304*95eeb2ffSImran Shaik &gcc_qupv3_wrap3_s0_clk_src.clkr.hw,
1305*95eeb2ffSImran Shaik },
1306*95eeb2ffSImran Shaik .num_parents = 1,
1307*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1308*95eeb2ffSImran Shaik .ops = &clk_regmap_div_ro_ops,
1309*95eeb2ffSImran Shaik },
1310*95eeb2ffSImran Shaik };
1311*95eeb2ffSImran Shaik
1312*95eeb2ffSImran Shaik static struct clk_regmap_div gcc_usb20_mock_utmi_postdiv_clk_src = {
1313*95eeb2ffSImran Shaik .reg = 0x1c058,
1314*95eeb2ffSImran Shaik .shift = 0,
1315*95eeb2ffSImran Shaik .width = 4,
1316*95eeb2ffSImran Shaik .clkr.hw.init = &(const struct clk_init_data) {
1317*95eeb2ffSImran Shaik .name = "gcc_usb20_mock_utmi_postdiv_clk_src",
1318*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
1319*95eeb2ffSImran Shaik &gcc_usb20_mock_utmi_clk_src.clkr.hw,
1320*95eeb2ffSImran Shaik },
1321*95eeb2ffSImran Shaik .num_parents = 1,
1322*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1323*95eeb2ffSImran Shaik .ops = &clk_regmap_div_ro_ops,
1324*95eeb2ffSImran Shaik },
1325*95eeb2ffSImran Shaik };
1326*95eeb2ffSImran Shaik
1327*95eeb2ffSImran Shaik static struct clk_regmap_div gcc_usb30_prim_mock_utmi_postdiv_clk_src = {
1328*95eeb2ffSImran Shaik .reg = 0x1b058,
1329*95eeb2ffSImran Shaik .shift = 0,
1330*95eeb2ffSImran Shaik .width = 4,
1331*95eeb2ffSImran Shaik .clkr.hw.init = &(const struct clk_init_data) {
1332*95eeb2ffSImran Shaik .name = "gcc_usb30_prim_mock_utmi_postdiv_clk_src",
1333*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
1334*95eeb2ffSImran Shaik &gcc_usb30_prim_mock_utmi_clk_src.clkr.hw,
1335*95eeb2ffSImran Shaik },
1336*95eeb2ffSImran Shaik .num_parents = 1,
1337*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1338*95eeb2ffSImran Shaik .ops = &clk_regmap_div_ro_ops,
1339*95eeb2ffSImran Shaik },
1340*95eeb2ffSImran Shaik };
1341*95eeb2ffSImran Shaik
1342*95eeb2ffSImran Shaik static struct clk_branch gcc_aggre_noc_qupv3_axi_clk = {
1343*95eeb2ffSImran Shaik .halt_reg = 0x8e200,
1344*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
1345*95eeb2ffSImran Shaik .hwcg_reg = 0x8e200,
1346*95eeb2ffSImran Shaik .hwcg_bit = 1,
1347*95eeb2ffSImran Shaik .clkr = {
1348*95eeb2ffSImran Shaik .enable_reg = 0x4b000,
1349*95eeb2ffSImran Shaik .enable_mask = BIT(28),
1350*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1351*95eeb2ffSImran Shaik .name = "gcc_aggre_noc_qupv3_axi_clk",
1352*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
1353*95eeb2ffSImran Shaik },
1354*95eeb2ffSImran Shaik },
1355*95eeb2ffSImran Shaik };
1356*95eeb2ffSImran Shaik
1357*95eeb2ffSImran Shaik static struct clk_branch gcc_aggre_ufs_phy_axi_clk = {
1358*95eeb2ffSImran Shaik .halt_reg = 0x830d4,
1359*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
1360*95eeb2ffSImran Shaik .hwcg_reg = 0x830d4,
1361*95eeb2ffSImran Shaik .hwcg_bit = 1,
1362*95eeb2ffSImran Shaik .clkr = {
1363*95eeb2ffSImran Shaik .enable_reg = 0x830d4,
1364*95eeb2ffSImran Shaik .enable_mask = BIT(0),
1365*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1366*95eeb2ffSImran Shaik .name = "gcc_aggre_ufs_phy_axi_clk",
1367*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
1368*95eeb2ffSImran Shaik &gcc_ufs_phy_axi_clk_src.clkr.hw,
1369*95eeb2ffSImran Shaik },
1370*95eeb2ffSImran Shaik .num_parents = 1,
1371*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1372*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
1373*95eeb2ffSImran Shaik },
1374*95eeb2ffSImran Shaik },
1375*95eeb2ffSImran Shaik };
1376*95eeb2ffSImran Shaik
1377*95eeb2ffSImran Shaik static struct clk_branch gcc_aggre_usb2_prim_axi_clk = {
1378*95eeb2ffSImran Shaik .halt_reg = 0x1c05c,
1379*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
1380*95eeb2ffSImran Shaik .hwcg_reg = 0x1c05c,
1381*95eeb2ffSImran Shaik .hwcg_bit = 1,
1382*95eeb2ffSImran Shaik .clkr = {
1383*95eeb2ffSImran Shaik .enable_reg = 0x1c05c,
1384*95eeb2ffSImran Shaik .enable_mask = BIT(0),
1385*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1386*95eeb2ffSImran Shaik .name = "gcc_aggre_usb2_prim_axi_clk",
1387*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
1388*95eeb2ffSImran Shaik &gcc_usb20_master_clk_src.clkr.hw,
1389*95eeb2ffSImran Shaik },
1390*95eeb2ffSImran Shaik .num_parents = 1,
1391*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1392*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
1393*95eeb2ffSImran Shaik },
1394*95eeb2ffSImran Shaik },
1395*95eeb2ffSImran Shaik };
1396*95eeb2ffSImran Shaik
1397*95eeb2ffSImran Shaik static struct clk_branch gcc_aggre_usb3_prim_axi_clk = {
1398*95eeb2ffSImran Shaik .halt_reg = 0x1b084,
1399*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
1400*95eeb2ffSImran Shaik .hwcg_reg = 0x1b084,
1401*95eeb2ffSImran Shaik .hwcg_bit = 1,
1402*95eeb2ffSImran Shaik .clkr = {
1403*95eeb2ffSImran Shaik .enable_reg = 0x1b084,
1404*95eeb2ffSImran Shaik .enable_mask = BIT(0),
1405*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1406*95eeb2ffSImran Shaik .name = "gcc_aggre_usb3_prim_axi_clk",
1407*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
1408*95eeb2ffSImran Shaik &gcc_usb30_prim_master_clk_src.clkr.hw,
1409*95eeb2ffSImran Shaik },
1410*95eeb2ffSImran Shaik .num_parents = 1,
1411*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1412*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
1413*95eeb2ffSImran Shaik },
1414*95eeb2ffSImran Shaik },
1415*95eeb2ffSImran Shaik };
1416*95eeb2ffSImran Shaik
1417*95eeb2ffSImran Shaik static struct clk_branch gcc_ahb2phy0_clk = {
1418*95eeb2ffSImran Shaik .halt_reg = 0x76004,
1419*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
1420*95eeb2ffSImran Shaik .hwcg_reg = 0x76004,
1421*95eeb2ffSImran Shaik .hwcg_bit = 1,
1422*95eeb2ffSImran Shaik .clkr = {
1423*95eeb2ffSImran Shaik .enable_reg = 0x76004,
1424*95eeb2ffSImran Shaik .enable_mask = BIT(0),
1425*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1426*95eeb2ffSImran Shaik .name = "gcc_ahb2phy0_clk",
1427*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
1428*95eeb2ffSImran Shaik },
1429*95eeb2ffSImran Shaik },
1430*95eeb2ffSImran Shaik };
1431*95eeb2ffSImran Shaik
1432*95eeb2ffSImran Shaik static struct clk_branch gcc_ahb2phy2_clk = {
1433*95eeb2ffSImran Shaik .halt_reg = 0x76008,
1434*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
1435*95eeb2ffSImran Shaik .hwcg_reg = 0x76008,
1436*95eeb2ffSImran Shaik .hwcg_bit = 1,
1437*95eeb2ffSImran Shaik .clkr = {
1438*95eeb2ffSImran Shaik .enable_reg = 0x76008,
1439*95eeb2ffSImran Shaik .enable_mask = BIT(0),
1440*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1441*95eeb2ffSImran Shaik .name = "gcc_ahb2phy2_clk",
1442*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
1443*95eeb2ffSImran Shaik },
1444*95eeb2ffSImran Shaik },
1445*95eeb2ffSImran Shaik };
1446*95eeb2ffSImran Shaik
1447*95eeb2ffSImran Shaik static struct clk_branch gcc_ahb2phy3_clk = {
1448*95eeb2ffSImran Shaik .halt_reg = 0x7600c,
1449*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
1450*95eeb2ffSImran Shaik .hwcg_reg = 0x7600c,
1451*95eeb2ffSImran Shaik .hwcg_bit = 1,
1452*95eeb2ffSImran Shaik .clkr = {
1453*95eeb2ffSImran Shaik .enable_reg = 0x7600c,
1454*95eeb2ffSImran Shaik .enable_mask = BIT(0),
1455*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1456*95eeb2ffSImran Shaik .name = "gcc_ahb2phy3_clk",
1457*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
1458*95eeb2ffSImran Shaik },
1459*95eeb2ffSImran Shaik },
1460*95eeb2ffSImran Shaik };
1461*95eeb2ffSImran Shaik
1462*95eeb2ffSImran Shaik static struct clk_branch gcc_boot_rom_ahb_clk = {
1463*95eeb2ffSImran Shaik .halt_reg = 0x44004,
1464*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
1465*95eeb2ffSImran Shaik .hwcg_reg = 0x44004,
1466*95eeb2ffSImran Shaik .hwcg_bit = 1,
1467*95eeb2ffSImran Shaik .clkr = {
1468*95eeb2ffSImran Shaik .enable_reg = 0x4b000,
1469*95eeb2ffSImran Shaik .enable_mask = BIT(10),
1470*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1471*95eeb2ffSImran Shaik .name = "gcc_boot_rom_ahb_clk",
1472*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
1473*95eeb2ffSImran Shaik },
1474*95eeb2ffSImran Shaik },
1475*95eeb2ffSImran Shaik };
1476*95eeb2ffSImran Shaik
1477*95eeb2ffSImran Shaik static struct clk_branch gcc_camera_hf_axi_clk = {
1478*95eeb2ffSImran Shaik .halt_reg = 0x32010,
1479*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_SKIP,
1480*95eeb2ffSImran Shaik .hwcg_reg = 0x32010,
1481*95eeb2ffSImran Shaik .hwcg_bit = 1,
1482*95eeb2ffSImran Shaik .clkr = {
1483*95eeb2ffSImran Shaik .enable_reg = 0x32010,
1484*95eeb2ffSImran Shaik .enable_mask = BIT(0),
1485*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1486*95eeb2ffSImran Shaik .name = "gcc_camera_hf_axi_clk",
1487*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
1488*95eeb2ffSImran Shaik },
1489*95eeb2ffSImran Shaik },
1490*95eeb2ffSImran Shaik };
1491*95eeb2ffSImran Shaik
1492*95eeb2ffSImran Shaik static struct clk_branch gcc_camera_sf_axi_clk = {
1493*95eeb2ffSImran Shaik .halt_reg = 0x32018,
1494*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_SKIP,
1495*95eeb2ffSImran Shaik .hwcg_reg = 0x32018,
1496*95eeb2ffSImran Shaik .hwcg_bit = 1,
1497*95eeb2ffSImran Shaik .clkr = {
1498*95eeb2ffSImran Shaik .enable_reg = 0x32018,
1499*95eeb2ffSImran Shaik .enable_mask = BIT(0),
1500*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1501*95eeb2ffSImran Shaik .name = "gcc_camera_sf_axi_clk",
1502*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
1503*95eeb2ffSImran Shaik },
1504*95eeb2ffSImran Shaik },
1505*95eeb2ffSImran Shaik };
1506*95eeb2ffSImran Shaik
1507*95eeb2ffSImran Shaik static struct clk_branch gcc_camera_throttle_xo_clk = {
1508*95eeb2ffSImran Shaik .halt_reg = 0x32024,
1509*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT,
1510*95eeb2ffSImran Shaik .clkr = {
1511*95eeb2ffSImran Shaik .enable_reg = 0x32024,
1512*95eeb2ffSImran Shaik .enable_mask = BIT(0),
1513*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1514*95eeb2ffSImran Shaik .name = "gcc_camera_throttle_xo_clk",
1515*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
1516*95eeb2ffSImran Shaik },
1517*95eeb2ffSImran Shaik },
1518*95eeb2ffSImran Shaik };
1519*95eeb2ffSImran Shaik
1520*95eeb2ffSImran Shaik static struct clk_branch gcc_cfg_noc_usb2_prim_axi_clk = {
1521*95eeb2ffSImran Shaik .halt_reg = 0x1c060,
1522*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
1523*95eeb2ffSImran Shaik .hwcg_reg = 0x1c060,
1524*95eeb2ffSImran Shaik .hwcg_bit = 1,
1525*95eeb2ffSImran Shaik .clkr = {
1526*95eeb2ffSImran Shaik .enable_reg = 0x1c060,
1527*95eeb2ffSImran Shaik .enable_mask = BIT(0),
1528*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1529*95eeb2ffSImran Shaik .name = "gcc_cfg_noc_usb2_prim_axi_clk",
1530*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
1531*95eeb2ffSImran Shaik &gcc_usb20_master_clk_src.clkr.hw,
1532*95eeb2ffSImran Shaik },
1533*95eeb2ffSImran Shaik .num_parents = 1,
1534*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1535*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
1536*95eeb2ffSImran Shaik },
1537*95eeb2ffSImran Shaik },
1538*95eeb2ffSImran Shaik };
1539*95eeb2ffSImran Shaik
1540*95eeb2ffSImran Shaik static struct clk_branch gcc_cfg_noc_usb3_prim_axi_clk = {
1541*95eeb2ffSImran Shaik .halt_reg = 0x1b088,
1542*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
1543*95eeb2ffSImran Shaik .hwcg_reg = 0x1b088,
1544*95eeb2ffSImran Shaik .hwcg_bit = 1,
1545*95eeb2ffSImran Shaik .clkr = {
1546*95eeb2ffSImran Shaik .enable_reg = 0x1b088,
1547*95eeb2ffSImran Shaik .enable_mask = BIT(0),
1548*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1549*95eeb2ffSImran Shaik .name = "gcc_cfg_noc_usb3_prim_axi_clk",
1550*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
1551*95eeb2ffSImran Shaik &gcc_usb30_prim_master_clk_src.clkr.hw,
1552*95eeb2ffSImran Shaik },
1553*95eeb2ffSImran Shaik .num_parents = 1,
1554*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1555*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
1556*95eeb2ffSImran Shaik },
1557*95eeb2ffSImran Shaik },
1558*95eeb2ffSImran Shaik };
1559*95eeb2ffSImran Shaik
1560*95eeb2ffSImran Shaik static struct clk_branch gcc_ddrss_gpu_axi_clk = {
1561*95eeb2ffSImran Shaik .halt_reg = 0x7d164,
1562*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
1563*95eeb2ffSImran Shaik .hwcg_reg = 0x7d164,
1564*95eeb2ffSImran Shaik .hwcg_bit = 1,
1565*95eeb2ffSImran Shaik .clkr = {
1566*95eeb2ffSImran Shaik .enable_reg = 0x7d164,
1567*95eeb2ffSImran Shaik .enable_mask = BIT(0),
1568*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1569*95eeb2ffSImran Shaik .name = "gcc_ddrss_gpu_axi_clk",
1570*95eeb2ffSImran Shaik .ops = &clk_branch2_aon_ops,
1571*95eeb2ffSImran Shaik },
1572*95eeb2ffSImran Shaik },
1573*95eeb2ffSImran Shaik };
1574*95eeb2ffSImran Shaik
1575*95eeb2ffSImran Shaik static struct clk_branch gcc_disp_hf_axi_clk = {
1576*95eeb2ffSImran Shaik .halt_reg = 0x33010,
1577*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
1578*95eeb2ffSImran Shaik .hwcg_reg = 0x33010,
1579*95eeb2ffSImran Shaik .hwcg_bit = 1,
1580*95eeb2ffSImran Shaik .clkr = {
1581*95eeb2ffSImran Shaik .enable_reg = 0x33010,
1582*95eeb2ffSImran Shaik .enable_mask = BIT(0),
1583*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1584*95eeb2ffSImran Shaik .name = "gcc_disp_hf_axi_clk",
1585*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
1586*95eeb2ffSImran Shaik },
1587*95eeb2ffSImran Shaik },
1588*95eeb2ffSImran Shaik };
1589*95eeb2ffSImran Shaik
1590*95eeb2ffSImran Shaik static struct clk_branch gcc_edp_ref_clkref_en = {
1591*95eeb2ffSImran Shaik .halt_reg = 0x97448,
1592*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_DELAY,
1593*95eeb2ffSImran Shaik .clkr = {
1594*95eeb2ffSImran Shaik .enable_reg = 0x97448,
1595*95eeb2ffSImran Shaik .enable_mask = BIT(0),
1596*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1597*95eeb2ffSImran Shaik .name = "gcc_edp_ref_clkref_en",
1598*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
1599*95eeb2ffSImran Shaik },
1600*95eeb2ffSImran Shaik },
1601*95eeb2ffSImran Shaik };
1602*95eeb2ffSImran Shaik
1603*95eeb2ffSImran Shaik static struct clk_branch gcc_emac0_axi_clk = {
1604*95eeb2ffSImran Shaik .halt_reg = 0xb6018,
1605*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
1606*95eeb2ffSImran Shaik .hwcg_reg = 0xb6018,
1607*95eeb2ffSImran Shaik .hwcg_bit = 1,
1608*95eeb2ffSImran Shaik .clkr = {
1609*95eeb2ffSImran Shaik .enable_reg = 0xb6018,
1610*95eeb2ffSImran Shaik .enable_mask = BIT(0),
1611*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1612*95eeb2ffSImran Shaik .name = "gcc_emac0_axi_clk",
1613*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
1614*95eeb2ffSImran Shaik },
1615*95eeb2ffSImran Shaik },
1616*95eeb2ffSImran Shaik };
1617*95eeb2ffSImran Shaik
1618*95eeb2ffSImran Shaik static struct clk_branch gcc_emac0_phy_aux_clk = {
1619*95eeb2ffSImran Shaik .halt_reg = 0xb6024,
1620*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT,
1621*95eeb2ffSImran Shaik .clkr = {
1622*95eeb2ffSImran Shaik .enable_reg = 0xb6024,
1623*95eeb2ffSImran Shaik .enable_mask = BIT(0),
1624*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1625*95eeb2ffSImran Shaik .name = "gcc_emac0_phy_aux_clk",
1626*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
1627*95eeb2ffSImran Shaik &gcc_emac0_phy_aux_clk_src.clkr.hw,
1628*95eeb2ffSImran Shaik },
1629*95eeb2ffSImran Shaik .num_parents = 1,
1630*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1631*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
1632*95eeb2ffSImran Shaik },
1633*95eeb2ffSImran Shaik },
1634*95eeb2ffSImran Shaik };
1635*95eeb2ffSImran Shaik
1636*95eeb2ffSImran Shaik static struct clk_branch gcc_emac0_ptp_clk = {
1637*95eeb2ffSImran Shaik .halt_reg = 0xb6040,
1638*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT,
1639*95eeb2ffSImran Shaik .clkr = {
1640*95eeb2ffSImran Shaik .enable_reg = 0xb6040,
1641*95eeb2ffSImran Shaik .enable_mask = BIT(0),
1642*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1643*95eeb2ffSImran Shaik .name = "gcc_emac0_ptp_clk",
1644*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
1645*95eeb2ffSImran Shaik &gcc_emac0_ptp_clk_src.clkr.hw,
1646*95eeb2ffSImran Shaik },
1647*95eeb2ffSImran Shaik .num_parents = 1,
1648*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1649*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
1650*95eeb2ffSImran Shaik },
1651*95eeb2ffSImran Shaik },
1652*95eeb2ffSImran Shaik };
1653*95eeb2ffSImran Shaik
1654*95eeb2ffSImran Shaik static struct clk_branch gcc_emac0_rgmii_clk = {
1655*95eeb2ffSImran Shaik .halt_reg = 0xb6044,
1656*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT,
1657*95eeb2ffSImran Shaik .clkr = {
1658*95eeb2ffSImran Shaik .enable_reg = 0xb6044,
1659*95eeb2ffSImran Shaik .enable_mask = BIT(0),
1660*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1661*95eeb2ffSImran Shaik .name = "gcc_emac0_rgmii_clk",
1662*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
1663*95eeb2ffSImran Shaik &gcc_emac0_rgmii_clk_src.clkr.hw,
1664*95eeb2ffSImran Shaik },
1665*95eeb2ffSImran Shaik .num_parents = 1,
1666*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1667*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
1668*95eeb2ffSImran Shaik },
1669*95eeb2ffSImran Shaik },
1670*95eeb2ffSImran Shaik };
1671*95eeb2ffSImran Shaik
1672*95eeb2ffSImran Shaik static struct clk_branch gcc_emac0_slv_ahb_clk = {
1673*95eeb2ffSImran Shaik .halt_reg = 0xb6020,
1674*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
1675*95eeb2ffSImran Shaik .hwcg_reg = 0xb6020,
1676*95eeb2ffSImran Shaik .hwcg_bit = 1,
1677*95eeb2ffSImran Shaik .clkr = {
1678*95eeb2ffSImran Shaik .enable_reg = 0xb6020,
1679*95eeb2ffSImran Shaik .enable_mask = BIT(0),
1680*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1681*95eeb2ffSImran Shaik .name = "gcc_emac0_slv_ahb_clk",
1682*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
1683*95eeb2ffSImran Shaik },
1684*95eeb2ffSImran Shaik },
1685*95eeb2ffSImran Shaik };
1686*95eeb2ffSImran Shaik
1687*95eeb2ffSImran Shaik static struct clk_branch gcc_gp1_clk = {
1688*95eeb2ffSImran Shaik .halt_reg = 0x70000,
1689*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT,
1690*95eeb2ffSImran Shaik .clkr = {
1691*95eeb2ffSImran Shaik .enable_reg = 0x70000,
1692*95eeb2ffSImran Shaik .enable_mask = BIT(0),
1693*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1694*95eeb2ffSImran Shaik .name = "gcc_gp1_clk",
1695*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
1696*95eeb2ffSImran Shaik &gcc_gp1_clk_src.clkr.hw,
1697*95eeb2ffSImran Shaik },
1698*95eeb2ffSImran Shaik .num_parents = 1,
1699*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1700*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
1701*95eeb2ffSImran Shaik },
1702*95eeb2ffSImran Shaik },
1703*95eeb2ffSImran Shaik };
1704*95eeb2ffSImran Shaik
1705*95eeb2ffSImran Shaik static struct clk_branch gcc_gp2_clk = {
1706*95eeb2ffSImran Shaik .halt_reg = 0x71000,
1707*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT,
1708*95eeb2ffSImran Shaik .clkr = {
1709*95eeb2ffSImran Shaik .enable_reg = 0x71000,
1710*95eeb2ffSImran Shaik .enable_mask = BIT(0),
1711*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1712*95eeb2ffSImran Shaik .name = "gcc_gp2_clk",
1713*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
1714*95eeb2ffSImran Shaik &gcc_gp2_clk_src.clkr.hw,
1715*95eeb2ffSImran Shaik },
1716*95eeb2ffSImran Shaik .num_parents = 1,
1717*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1718*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
1719*95eeb2ffSImran Shaik },
1720*95eeb2ffSImran Shaik },
1721*95eeb2ffSImran Shaik };
1722*95eeb2ffSImran Shaik
1723*95eeb2ffSImran Shaik static struct clk_branch gcc_gp3_clk = {
1724*95eeb2ffSImran Shaik .halt_reg = 0x62000,
1725*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT,
1726*95eeb2ffSImran Shaik .clkr = {
1727*95eeb2ffSImran Shaik .enable_reg = 0x62000,
1728*95eeb2ffSImran Shaik .enable_mask = BIT(0),
1729*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1730*95eeb2ffSImran Shaik .name = "gcc_gp3_clk",
1731*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
1732*95eeb2ffSImran Shaik &gcc_gp3_clk_src.clkr.hw,
1733*95eeb2ffSImran Shaik },
1734*95eeb2ffSImran Shaik .num_parents = 1,
1735*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1736*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
1737*95eeb2ffSImran Shaik },
1738*95eeb2ffSImran Shaik },
1739*95eeb2ffSImran Shaik };
1740*95eeb2ffSImran Shaik
1741*95eeb2ffSImran Shaik static struct clk_branch gcc_gp4_clk = {
1742*95eeb2ffSImran Shaik .halt_reg = 0x1e000,
1743*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT,
1744*95eeb2ffSImran Shaik .clkr = {
1745*95eeb2ffSImran Shaik .enable_reg = 0x1e000,
1746*95eeb2ffSImran Shaik .enable_mask = BIT(0),
1747*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1748*95eeb2ffSImran Shaik .name = "gcc_gp4_clk",
1749*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
1750*95eeb2ffSImran Shaik &gcc_gp4_clk_src.clkr.hw,
1751*95eeb2ffSImran Shaik },
1752*95eeb2ffSImran Shaik .num_parents = 1,
1753*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1754*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
1755*95eeb2ffSImran Shaik },
1756*95eeb2ffSImran Shaik },
1757*95eeb2ffSImran Shaik };
1758*95eeb2ffSImran Shaik
1759*95eeb2ffSImran Shaik static struct clk_branch gcc_gp5_clk = {
1760*95eeb2ffSImran Shaik .halt_reg = 0x1f000,
1761*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT,
1762*95eeb2ffSImran Shaik .clkr = {
1763*95eeb2ffSImran Shaik .enable_reg = 0x1f000,
1764*95eeb2ffSImran Shaik .enable_mask = BIT(0),
1765*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1766*95eeb2ffSImran Shaik .name = "gcc_gp5_clk",
1767*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
1768*95eeb2ffSImran Shaik &gcc_gp5_clk_src.clkr.hw,
1769*95eeb2ffSImran Shaik },
1770*95eeb2ffSImran Shaik .num_parents = 1,
1771*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1772*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
1773*95eeb2ffSImran Shaik },
1774*95eeb2ffSImran Shaik },
1775*95eeb2ffSImran Shaik };
1776*95eeb2ffSImran Shaik
1777*95eeb2ffSImran Shaik static struct clk_branch gcc_gpu_gpll0_clk_src = {
1778*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_DELAY,
1779*95eeb2ffSImran Shaik .clkr = {
1780*95eeb2ffSImran Shaik .enable_reg = 0x4b000,
1781*95eeb2ffSImran Shaik .enable_mask = BIT(15),
1782*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1783*95eeb2ffSImran Shaik .name = "gcc_gpu_gpll0_clk_src",
1784*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
1785*95eeb2ffSImran Shaik &gcc_gpll0.clkr.hw,
1786*95eeb2ffSImran Shaik },
1787*95eeb2ffSImran Shaik .num_parents = 1,
1788*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1789*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
1790*95eeb2ffSImran Shaik },
1791*95eeb2ffSImran Shaik },
1792*95eeb2ffSImran Shaik };
1793*95eeb2ffSImran Shaik
1794*95eeb2ffSImran Shaik static struct clk_branch gcc_gpu_gpll0_div_clk_src = {
1795*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_DELAY,
1796*95eeb2ffSImran Shaik .clkr = {
1797*95eeb2ffSImran Shaik .enable_reg = 0x4b000,
1798*95eeb2ffSImran Shaik .enable_mask = BIT(16),
1799*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1800*95eeb2ffSImran Shaik .name = "gcc_gpu_gpll0_div_clk_src",
1801*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
1802*95eeb2ffSImran Shaik &gcc_gpll0_out_even.clkr.hw,
1803*95eeb2ffSImran Shaik },
1804*95eeb2ffSImran Shaik .num_parents = 1,
1805*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1806*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
1807*95eeb2ffSImran Shaik },
1808*95eeb2ffSImran Shaik },
1809*95eeb2ffSImran Shaik };
1810*95eeb2ffSImran Shaik
1811*95eeb2ffSImran Shaik static struct clk_branch gcc_gpu_memnoc_gfx_center_pipeline_clk = {
1812*95eeb2ffSImran Shaik .halt_reg = 0x7d160,
1813*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
1814*95eeb2ffSImran Shaik .hwcg_reg = 0x7d160,
1815*95eeb2ffSImran Shaik .hwcg_bit = 1,
1816*95eeb2ffSImran Shaik .clkr = {
1817*95eeb2ffSImran Shaik .enable_reg = 0x7d160,
1818*95eeb2ffSImran Shaik .enable_mask = BIT(0),
1819*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1820*95eeb2ffSImran Shaik .name = "gcc_gpu_memnoc_gfx_center_pipeline_clk",
1821*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
1822*95eeb2ffSImran Shaik },
1823*95eeb2ffSImran Shaik },
1824*95eeb2ffSImran Shaik };
1825*95eeb2ffSImran Shaik
1826*95eeb2ffSImran Shaik static struct clk_branch gcc_gpu_memnoc_gfx_clk = {
1827*95eeb2ffSImran Shaik .halt_reg = 0x7d010,
1828*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
1829*95eeb2ffSImran Shaik .hwcg_reg = 0x7d010,
1830*95eeb2ffSImran Shaik .hwcg_bit = 1,
1831*95eeb2ffSImran Shaik .clkr = {
1832*95eeb2ffSImran Shaik .enable_reg = 0x7d010,
1833*95eeb2ffSImran Shaik .enable_mask = BIT(0),
1834*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1835*95eeb2ffSImran Shaik .name = "gcc_gpu_memnoc_gfx_clk",
1836*95eeb2ffSImran Shaik .ops = &clk_branch2_aon_ops,
1837*95eeb2ffSImran Shaik },
1838*95eeb2ffSImran Shaik },
1839*95eeb2ffSImran Shaik };
1840*95eeb2ffSImran Shaik
1841*95eeb2ffSImran Shaik static struct clk_branch gcc_gpu_snoc_dvm_gfx_clk = {
1842*95eeb2ffSImran Shaik .halt_reg = 0x7d01c,
1843*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_DELAY,
1844*95eeb2ffSImran Shaik .clkr = {
1845*95eeb2ffSImran Shaik .enable_reg = 0x7d01c,
1846*95eeb2ffSImran Shaik .enable_mask = BIT(0),
1847*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1848*95eeb2ffSImran Shaik .name = "gcc_gpu_snoc_dvm_gfx_clk",
1849*95eeb2ffSImran Shaik .ops = &clk_branch2_aon_ops,
1850*95eeb2ffSImran Shaik },
1851*95eeb2ffSImran Shaik },
1852*95eeb2ffSImran Shaik };
1853*95eeb2ffSImran Shaik
1854*95eeb2ffSImran Shaik static struct clk_branch gcc_gpu_tcu_throttle_ahb_clk = {
1855*95eeb2ffSImran Shaik .halt_reg = 0x7d008,
1856*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
1857*95eeb2ffSImran Shaik .hwcg_reg = 0x7d008,
1858*95eeb2ffSImran Shaik .hwcg_bit = 1,
1859*95eeb2ffSImran Shaik .clkr = {
1860*95eeb2ffSImran Shaik .enable_reg = 0x7d008,
1861*95eeb2ffSImran Shaik .enable_mask = BIT(0),
1862*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1863*95eeb2ffSImran Shaik .name = "gcc_gpu_tcu_throttle_ahb_clk",
1864*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
1865*95eeb2ffSImran Shaik },
1866*95eeb2ffSImran Shaik },
1867*95eeb2ffSImran Shaik };
1868*95eeb2ffSImran Shaik
1869*95eeb2ffSImran Shaik static struct clk_branch gcc_gpu_tcu_throttle_clk = {
1870*95eeb2ffSImran Shaik .halt_reg = 0x7d014,
1871*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
1872*95eeb2ffSImran Shaik .hwcg_reg = 0x7d014,
1873*95eeb2ffSImran Shaik .hwcg_bit = 1,
1874*95eeb2ffSImran Shaik .clkr = {
1875*95eeb2ffSImran Shaik .enable_reg = 0x7d014,
1876*95eeb2ffSImran Shaik .enable_mask = BIT(0),
1877*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1878*95eeb2ffSImran Shaik .name = "gcc_gpu_tcu_throttle_clk",
1879*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
1880*95eeb2ffSImran Shaik },
1881*95eeb2ffSImran Shaik },
1882*95eeb2ffSImran Shaik };
1883*95eeb2ffSImran Shaik
1884*95eeb2ffSImran Shaik static struct clk_branch gcc_pcie_0_aux_clk = {
1885*95eeb2ffSImran Shaik .halt_reg = 0xa9038,
1886*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
1887*95eeb2ffSImran Shaik .clkr = {
1888*95eeb2ffSImran Shaik .enable_reg = 0x4b010,
1889*95eeb2ffSImran Shaik .enable_mask = BIT(16),
1890*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1891*95eeb2ffSImran Shaik .name = "gcc_pcie_0_aux_clk",
1892*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
1893*95eeb2ffSImran Shaik &gcc_pcie_0_aux_clk_src.clkr.hw,
1894*95eeb2ffSImran Shaik },
1895*95eeb2ffSImran Shaik .num_parents = 1,
1896*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1897*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
1898*95eeb2ffSImran Shaik },
1899*95eeb2ffSImran Shaik },
1900*95eeb2ffSImran Shaik };
1901*95eeb2ffSImran Shaik
1902*95eeb2ffSImran Shaik static struct clk_branch gcc_pcie_0_cfg_ahb_clk = {
1903*95eeb2ffSImran Shaik .halt_reg = 0xa902c,
1904*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
1905*95eeb2ffSImran Shaik .hwcg_reg = 0xa902c,
1906*95eeb2ffSImran Shaik .hwcg_bit = 1,
1907*95eeb2ffSImran Shaik .clkr = {
1908*95eeb2ffSImran Shaik .enable_reg = 0x4b010,
1909*95eeb2ffSImran Shaik .enable_mask = BIT(12),
1910*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1911*95eeb2ffSImran Shaik .name = "gcc_pcie_0_cfg_ahb_clk",
1912*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
1913*95eeb2ffSImran Shaik },
1914*95eeb2ffSImran Shaik },
1915*95eeb2ffSImran Shaik };
1916*95eeb2ffSImran Shaik
1917*95eeb2ffSImran Shaik static struct clk_branch gcc_pcie_0_mstr_axi_clk = {
1918*95eeb2ffSImran Shaik .halt_reg = 0xa9024,
1919*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
1920*95eeb2ffSImran Shaik .clkr = {
1921*95eeb2ffSImran Shaik .enable_reg = 0x4b010,
1922*95eeb2ffSImran Shaik .enable_mask = BIT(11),
1923*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1924*95eeb2ffSImran Shaik .name = "gcc_pcie_0_mstr_axi_clk",
1925*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
1926*95eeb2ffSImran Shaik },
1927*95eeb2ffSImran Shaik },
1928*95eeb2ffSImran Shaik };
1929*95eeb2ffSImran Shaik
1930*95eeb2ffSImran Shaik static struct clk_branch gcc_pcie_0_phy_aux_clk = {
1931*95eeb2ffSImran Shaik .halt_reg = 0xa9030,
1932*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
1933*95eeb2ffSImran Shaik .clkr = {
1934*95eeb2ffSImran Shaik .enable_reg = 0x4b010,
1935*95eeb2ffSImran Shaik .enable_mask = BIT(13),
1936*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1937*95eeb2ffSImran Shaik .name = "gcc_pcie_0_phy_aux_clk",
1938*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
1939*95eeb2ffSImran Shaik &gcc_pcie_0_phy_aux_clk_src.clkr.hw,
1940*95eeb2ffSImran Shaik },
1941*95eeb2ffSImran Shaik .num_parents = 1,
1942*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1943*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
1944*95eeb2ffSImran Shaik },
1945*95eeb2ffSImran Shaik },
1946*95eeb2ffSImran Shaik };
1947*95eeb2ffSImran Shaik
1948*95eeb2ffSImran Shaik static struct clk_branch gcc_pcie_0_phy_rchng_clk = {
1949*95eeb2ffSImran Shaik .halt_reg = 0xa9050,
1950*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
1951*95eeb2ffSImran Shaik .clkr = {
1952*95eeb2ffSImran Shaik .enable_reg = 0x4b010,
1953*95eeb2ffSImran Shaik .enable_mask = BIT(15),
1954*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1955*95eeb2ffSImran Shaik .name = "gcc_pcie_0_phy_rchng_clk",
1956*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
1957*95eeb2ffSImran Shaik &gcc_pcie_0_phy_rchng_clk_src.clkr.hw,
1958*95eeb2ffSImran Shaik },
1959*95eeb2ffSImran Shaik .num_parents = 1,
1960*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1961*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
1962*95eeb2ffSImran Shaik },
1963*95eeb2ffSImran Shaik },
1964*95eeb2ffSImran Shaik };
1965*95eeb2ffSImran Shaik
1966*95eeb2ffSImran Shaik static struct clk_branch gcc_pcie_0_pipe_clk = {
1967*95eeb2ffSImran Shaik .halt_reg = 0xa9040,
1968*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_SKIP,
1969*95eeb2ffSImran Shaik .clkr = {
1970*95eeb2ffSImran Shaik .enable_reg = 0x4b010,
1971*95eeb2ffSImran Shaik .enable_mask = BIT(14),
1972*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1973*95eeb2ffSImran Shaik .name = "gcc_pcie_0_pipe_clk",
1974*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
1975*95eeb2ffSImran Shaik &gcc_pcie_0_pipe_clk_src.clkr.hw,
1976*95eeb2ffSImran Shaik },
1977*95eeb2ffSImran Shaik .num_parents = 1,
1978*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1979*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
1980*95eeb2ffSImran Shaik },
1981*95eeb2ffSImran Shaik },
1982*95eeb2ffSImran Shaik };
1983*95eeb2ffSImran Shaik
1984*95eeb2ffSImran Shaik static struct clk_branch gcc_pcie_0_pipediv2_clk = {
1985*95eeb2ffSImran Shaik .halt_reg = 0xa9048,
1986*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_SKIP,
1987*95eeb2ffSImran Shaik .clkr = {
1988*95eeb2ffSImran Shaik .enable_reg = 0x4b018,
1989*95eeb2ffSImran Shaik .enable_mask = BIT(22),
1990*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
1991*95eeb2ffSImran Shaik .name = "gcc_pcie_0_pipediv2_clk",
1992*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
1993*95eeb2ffSImran Shaik &gcc_pcie_0_pipe_div_clk_src.clkr.hw,
1994*95eeb2ffSImran Shaik },
1995*95eeb2ffSImran Shaik .num_parents = 1,
1996*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
1997*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
1998*95eeb2ffSImran Shaik },
1999*95eeb2ffSImran Shaik },
2000*95eeb2ffSImran Shaik };
2001*95eeb2ffSImran Shaik
2002*95eeb2ffSImran Shaik static struct clk_branch gcc_pcie_0_slv_axi_clk = {
2003*95eeb2ffSImran Shaik .halt_reg = 0xa901c,
2004*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2005*95eeb2ffSImran Shaik .clkr = {
2006*95eeb2ffSImran Shaik .enable_reg = 0x4b010,
2007*95eeb2ffSImran Shaik .enable_mask = BIT(10),
2008*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2009*95eeb2ffSImran Shaik .name = "gcc_pcie_0_slv_axi_clk",
2010*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2011*95eeb2ffSImran Shaik },
2012*95eeb2ffSImran Shaik },
2013*95eeb2ffSImran Shaik };
2014*95eeb2ffSImran Shaik
2015*95eeb2ffSImran Shaik static struct clk_branch gcc_pcie_0_slv_q2a_axi_clk = {
2016*95eeb2ffSImran Shaik .halt_reg = 0xa9018,
2017*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2018*95eeb2ffSImran Shaik .clkr = {
2019*95eeb2ffSImran Shaik .enable_reg = 0x4b018,
2020*95eeb2ffSImran Shaik .enable_mask = BIT(12),
2021*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2022*95eeb2ffSImran Shaik .name = "gcc_pcie_0_slv_q2a_axi_clk",
2023*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2024*95eeb2ffSImran Shaik },
2025*95eeb2ffSImran Shaik },
2026*95eeb2ffSImran Shaik };
2027*95eeb2ffSImran Shaik
2028*95eeb2ffSImran Shaik static struct clk_branch gcc_pcie_1_aux_clk = {
2029*95eeb2ffSImran Shaik .halt_reg = 0x77038,
2030*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2031*95eeb2ffSImran Shaik .clkr = {
2032*95eeb2ffSImran Shaik .enable_reg = 0x4b000,
2033*95eeb2ffSImran Shaik .enable_mask = BIT(31),
2034*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2035*95eeb2ffSImran Shaik .name = "gcc_pcie_1_aux_clk",
2036*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
2037*95eeb2ffSImran Shaik &gcc_pcie_1_aux_clk_src.clkr.hw,
2038*95eeb2ffSImran Shaik },
2039*95eeb2ffSImran Shaik .num_parents = 1,
2040*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
2041*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2042*95eeb2ffSImran Shaik },
2043*95eeb2ffSImran Shaik },
2044*95eeb2ffSImran Shaik };
2045*95eeb2ffSImran Shaik
2046*95eeb2ffSImran Shaik static struct clk_branch gcc_pcie_1_cfg_ahb_clk = {
2047*95eeb2ffSImran Shaik .halt_reg = 0x7702c,
2048*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2049*95eeb2ffSImran Shaik .hwcg_reg = 0x7702c,
2050*95eeb2ffSImran Shaik .hwcg_bit = 1,
2051*95eeb2ffSImran Shaik .clkr = {
2052*95eeb2ffSImran Shaik .enable_reg = 0x4b008,
2053*95eeb2ffSImran Shaik .enable_mask = BIT(2),
2054*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2055*95eeb2ffSImran Shaik .name = "gcc_pcie_1_cfg_ahb_clk",
2056*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2057*95eeb2ffSImran Shaik },
2058*95eeb2ffSImran Shaik },
2059*95eeb2ffSImran Shaik };
2060*95eeb2ffSImran Shaik
2061*95eeb2ffSImran Shaik static struct clk_branch gcc_pcie_1_mstr_axi_clk = {
2062*95eeb2ffSImran Shaik .halt_reg = 0x77024,
2063*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2064*95eeb2ffSImran Shaik .clkr = {
2065*95eeb2ffSImran Shaik .enable_reg = 0x4b008,
2066*95eeb2ffSImran Shaik .enable_mask = BIT(1),
2067*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2068*95eeb2ffSImran Shaik .name = "gcc_pcie_1_mstr_axi_clk",
2069*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2070*95eeb2ffSImran Shaik },
2071*95eeb2ffSImran Shaik },
2072*95eeb2ffSImran Shaik };
2073*95eeb2ffSImran Shaik
2074*95eeb2ffSImran Shaik static struct clk_branch gcc_pcie_1_phy_aux_clk = {
2075*95eeb2ffSImran Shaik .halt_reg = 0x77030,
2076*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2077*95eeb2ffSImran Shaik .clkr = {
2078*95eeb2ffSImran Shaik .enable_reg = 0x4b008,
2079*95eeb2ffSImran Shaik .enable_mask = BIT(3),
2080*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2081*95eeb2ffSImran Shaik .name = "gcc_pcie_1_phy_aux_clk",
2082*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
2083*95eeb2ffSImran Shaik &gcc_pcie_1_phy_aux_clk_src.clkr.hw,
2084*95eeb2ffSImran Shaik },
2085*95eeb2ffSImran Shaik .num_parents = 1,
2086*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
2087*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2088*95eeb2ffSImran Shaik },
2089*95eeb2ffSImran Shaik },
2090*95eeb2ffSImran Shaik };
2091*95eeb2ffSImran Shaik
2092*95eeb2ffSImran Shaik static struct clk_branch gcc_pcie_1_phy_rchng_clk = {
2093*95eeb2ffSImran Shaik .halt_reg = 0x77050,
2094*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2095*95eeb2ffSImran Shaik .clkr = {
2096*95eeb2ffSImran Shaik .enable_reg = 0x4b000,
2097*95eeb2ffSImran Shaik .enable_mask = BIT(22),
2098*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2099*95eeb2ffSImran Shaik .name = "gcc_pcie_1_phy_rchng_clk",
2100*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
2101*95eeb2ffSImran Shaik &gcc_pcie_1_phy_rchng_clk_src.clkr.hw,
2102*95eeb2ffSImran Shaik },
2103*95eeb2ffSImran Shaik .num_parents = 1,
2104*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
2105*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2106*95eeb2ffSImran Shaik },
2107*95eeb2ffSImran Shaik },
2108*95eeb2ffSImran Shaik };
2109*95eeb2ffSImran Shaik
2110*95eeb2ffSImran Shaik static struct clk_branch gcc_pcie_1_pipe_clk = {
2111*95eeb2ffSImran Shaik .halt_reg = 0x77040,
2112*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_SKIP,
2113*95eeb2ffSImran Shaik .clkr = {
2114*95eeb2ffSImran Shaik .enable_reg = 0x4b008,
2115*95eeb2ffSImran Shaik .enable_mask = BIT(4),
2116*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2117*95eeb2ffSImran Shaik .name = "gcc_pcie_1_pipe_clk",
2118*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
2119*95eeb2ffSImran Shaik &gcc_pcie_1_pipe_clk_src.clkr.hw,
2120*95eeb2ffSImran Shaik },
2121*95eeb2ffSImran Shaik .num_parents = 1,
2122*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
2123*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2124*95eeb2ffSImran Shaik },
2125*95eeb2ffSImran Shaik },
2126*95eeb2ffSImran Shaik };
2127*95eeb2ffSImran Shaik
2128*95eeb2ffSImran Shaik static struct clk_branch gcc_pcie_1_pipediv2_clk = {
2129*95eeb2ffSImran Shaik .halt_reg = 0x77048,
2130*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_SKIP,
2131*95eeb2ffSImran Shaik .clkr = {
2132*95eeb2ffSImran Shaik .enable_reg = 0x4b018,
2133*95eeb2ffSImran Shaik .enable_mask = BIT(16),
2134*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2135*95eeb2ffSImran Shaik .name = "gcc_pcie_1_pipediv2_clk",
2136*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
2137*95eeb2ffSImran Shaik &gcc_pcie_1_pipe_div_clk_src.clkr.hw,
2138*95eeb2ffSImran Shaik },
2139*95eeb2ffSImran Shaik .num_parents = 1,
2140*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
2141*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2142*95eeb2ffSImran Shaik },
2143*95eeb2ffSImran Shaik },
2144*95eeb2ffSImran Shaik };
2145*95eeb2ffSImran Shaik
2146*95eeb2ffSImran Shaik static struct clk_branch gcc_pcie_1_slv_axi_clk = {
2147*95eeb2ffSImran Shaik .halt_reg = 0x7701c,
2148*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2149*95eeb2ffSImran Shaik .clkr = {
2150*95eeb2ffSImran Shaik .enable_reg = 0x4b008,
2151*95eeb2ffSImran Shaik .enable_mask = BIT(0),
2152*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2153*95eeb2ffSImran Shaik .name = "gcc_pcie_1_slv_axi_clk",
2154*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2155*95eeb2ffSImran Shaik },
2156*95eeb2ffSImran Shaik },
2157*95eeb2ffSImran Shaik };
2158*95eeb2ffSImran Shaik
2159*95eeb2ffSImran Shaik static struct clk_branch gcc_pcie_1_slv_q2a_axi_clk = {
2160*95eeb2ffSImran Shaik .halt_reg = 0x77018,
2161*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2162*95eeb2ffSImran Shaik .clkr = {
2163*95eeb2ffSImran Shaik .enable_reg = 0x4b008,
2164*95eeb2ffSImran Shaik .enable_mask = BIT(5),
2165*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2166*95eeb2ffSImran Shaik .name = "gcc_pcie_1_slv_q2a_axi_clk",
2167*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2168*95eeb2ffSImran Shaik },
2169*95eeb2ffSImran Shaik },
2170*95eeb2ffSImran Shaik };
2171*95eeb2ffSImran Shaik
2172*95eeb2ffSImran Shaik static struct clk_branch gcc_pcie_clkref_en = {
2173*95eeb2ffSImran Shaik .halt_reg = 0x9746c,
2174*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_DELAY,
2175*95eeb2ffSImran Shaik .clkr = {
2176*95eeb2ffSImran Shaik .enable_reg = 0x9746c,
2177*95eeb2ffSImran Shaik .enable_mask = BIT(0),
2178*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2179*95eeb2ffSImran Shaik .name = "gcc_pcie_clkref_en",
2180*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2181*95eeb2ffSImran Shaik },
2182*95eeb2ffSImran Shaik },
2183*95eeb2ffSImran Shaik };
2184*95eeb2ffSImran Shaik
2185*95eeb2ffSImran Shaik static struct clk_branch gcc_pcie_throttle_cfg_clk = {
2186*95eeb2ffSImran Shaik .halt_reg = 0xb2034,
2187*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2188*95eeb2ffSImran Shaik .clkr = {
2189*95eeb2ffSImran Shaik .enable_reg = 0x4b020,
2190*95eeb2ffSImran Shaik .enable_mask = BIT(15),
2191*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2192*95eeb2ffSImran Shaik .name = "gcc_pcie_throttle_cfg_clk",
2193*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2194*95eeb2ffSImran Shaik },
2195*95eeb2ffSImran Shaik },
2196*95eeb2ffSImran Shaik };
2197*95eeb2ffSImran Shaik
2198*95eeb2ffSImran Shaik static struct clk_branch gcc_pdm2_clk = {
2199*95eeb2ffSImran Shaik .halt_reg = 0x3f00c,
2200*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT,
2201*95eeb2ffSImran Shaik .clkr = {
2202*95eeb2ffSImran Shaik .enable_reg = 0x3f00c,
2203*95eeb2ffSImran Shaik .enable_mask = BIT(0),
2204*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2205*95eeb2ffSImran Shaik .name = "gcc_pdm2_clk",
2206*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
2207*95eeb2ffSImran Shaik &gcc_pdm2_clk_src.clkr.hw,
2208*95eeb2ffSImran Shaik },
2209*95eeb2ffSImran Shaik .num_parents = 1,
2210*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
2211*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2212*95eeb2ffSImran Shaik },
2213*95eeb2ffSImran Shaik },
2214*95eeb2ffSImran Shaik };
2215*95eeb2ffSImran Shaik
2216*95eeb2ffSImran Shaik static struct clk_branch gcc_pdm_ahb_clk = {
2217*95eeb2ffSImran Shaik .halt_reg = 0x3f004,
2218*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2219*95eeb2ffSImran Shaik .hwcg_reg = 0x3f004,
2220*95eeb2ffSImran Shaik .hwcg_bit = 1,
2221*95eeb2ffSImran Shaik .clkr = {
2222*95eeb2ffSImran Shaik .enable_reg = 0x3f004,
2223*95eeb2ffSImran Shaik .enable_mask = BIT(0),
2224*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2225*95eeb2ffSImran Shaik .name = "gcc_pdm_ahb_clk",
2226*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2227*95eeb2ffSImran Shaik },
2228*95eeb2ffSImran Shaik },
2229*95eeb2ffSImran Shaik };
2230*95eeb2ffSImran Shaik
2231*95eeb2ffSImran Shaik static struct clk_branch gcc_pdm_xo4_clk = {
2232*95eeb2ffSImran Shaik .halt_reg = 0x3f008,
2233*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT,
2234*95eeb2ffSImran Shaik .clkr = {
2235*95eeb2ffSImran Shaik .enable_reg = 0x3f008,
2236*95eeb2ffSImran Shaik .enable_mask = BIT(0),
2237*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2238*95eeb2ffSImran Shaik .name = "gcc_pdm_xo4_clk",
2239*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2240*95eeb2ffSImran Shaik },
2241*95eeb2ffSImran Shaik },
2242*95eeb2ffSImran Shaik };
2243*95eeb2ffSImran Shaik
2244*95eeb2ffSImran Shaik static struct clk_branch gcc_qmip_camera_nrt_ahb_clk = {
2245*95eeb2ffSImran Shaik .halt_reg = 0x32008,
2246*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2247*95eeb2ffSImran Shaik .hwcg_reg = 0x32008,
2248*95eeb2ffSImran Shaik .hwcg_bit = 1,
2249*95eeb2ffSImran Shaik .clkr = {
2250*95eeb2ffSImran Shaik .enable_reg = 0x32008,
2251*95eeb2ffSImran Shaik .enable_mask = BIT(0),
2252*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2253*95eeb2ffSImran Shaik .name = "gcc_qmip_camera_nrt_ahb_clk",
2254*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2255*95eeb2ffSImran Shaik },
2256*95eeb2ffSImran Shaik },
2257*95eeb2ffSImran Shaik };
2258*95eeb2ffSImran Shaik
2259*95eeb2ffSImran Shaik static struct clk_branch gcc_qmip_camera_rt_ahb_clk = {
2260*95eeb2ffSImran Shaik .halt_reg = 0x3200c,
2261*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2262*95eeb2ffSImran Shaik .hwcg_reg = 0x3200c,
2263*95eeb2ffSImran Shaik .hwcg_bit = 1,
2264*95eeb2ffSImran Shaik .clkr = {
2265*95eeb2ffSImran Shaik .enable_reg = 0x3200c,
2266*95eeb2ffSImran Shaik .enable_mask = BIT(0),
2267*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2268*95eeb2ffSImran Shaik .name = "gcc_qmip_camera_rt_ahb_clk",
2269*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2270*95eeb2ffSImran Shaik },
2271*95eeb2ffSImran Shaik },
2272*95eeb2ffSImran Shaik };
2273*95eeb2ffSImran Shaik
2274*95eeb2ffSImran Shaik static struct clk_branch gcc_qmip_disp_ahb_clk = {
2275*95eeb2ffSImran Shaik .halt_reg = 0x33008,
2276*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2277*95eeb2ffSImran Shaik .hwcg_reg = 0x33008,
2278*95eeb2ffSImran Shaik .hwcg_bit = 1,
2279*95eeb2ffSImran Shaik .clkr = {
2280*95eeb2ffSImran Shaik .enable_reg = 0x33008,
2281*95eeb2ffSImran Shaik .enable_mask = BIT(0),
2282*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2283*95eeb2ffSImran Shaik .name = "gcc_qmip_disp_ahb_clk",
2284*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2285*95eeb2ffSImran Shaik },
2286*95eeb2ffSImran Shaik },
2287*95eeb2ffSImran Shaik };
2288*95eeb2ffSImran Shaik
2289*95eeb2ffSImran Shaik static struct clk_branch gcc_qmip_disp_rot_ahb_clk = {
2290*95eeb2ffSImran Shaik .halt_reg = 0x3300c,
2291*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2292*95eeb2ffSImran Shaik .clkr = {
2293*95eeb2ffSImran Shaik .enable_reg = 0x3300c,
2294*95eeb2ffSImran Shaik .enable_mask = BIT(0),
2295*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2296*95eeb2ffSImran Shaik .name = "gcc_qmip_disp_rot_ahb_clk",
2297*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2298*95eeb2ffSImran Shaik },
2299*95eeb2ffSImran Shaik },
2300*95eeb2ffSImran Shaik };
2301*95eeb2ffSImran Shaik
2302*95eeb2ffSImran Shaik static struct clk_branch gcc_qmip_video_cvp_ahb_clk = {
2303*95eeb2ffSImran Shaik .halt_reg = 0x34008,
2304*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2305*95eeb2ffSImran Shaik .hwcg_reg = 0x34008,
2306*95eeb2ffSImran Shaik .hwcg_bit = 1,
2307*95eeb2ffSImran Shaik .clkr = {
2308*95eeb2ffSImran Shaik .enable_reg = 0x34008,
2309*95eeb2ffSImran Shaik .enable_mask = BIT(0),
2310*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2311*95eeb2ffSImran Shaik .name = "gcc_qmip_video_cvp_ahb_clk",
2312*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2313*95eeb2ffSImran Shaik },
2314*95eeb2ffSImran Shaik },
2315*95eeb2ffSImran Shaik };
2316*95eeb2ffSImran Shaik
2317*95eeb2ffSImran Shaik static struct clk_branch gcc_qmip_video_vcodec_ahb_clk = {
2318*95eeb2ffSImran Shaik .halt_reg = 0x3400c,
2319*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2320*95eeb2ffSImran Shaik .hwcg_reg = 0x3400c,
2321*95eeb2ffSImran Shaik .hwcg_bit = 1,
2322*95eeb2ffSImran Shaik .clkr = {
2323*95eeb2ffSImran Shaik .enable_reg = 0x3400c,
2324*95eeb2ffSImran Shaik .enable_mask = BIT(0),
2325*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2326*95eeb2ffSImran Shaik .name = "gcc_qmip_video_vcodec_ahb_clk",
2327*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2328*95eeb2ffSImran Shaik },
2329*95eeb2ffSImran Shaik },
2330*95eeb2ffSImran Shaik };
2331*95eeb2ffSImran Shaik
2332*95eeb2ffSImran Shaik static struct clk_branch gcc_qmip_video_vcpu_ahb_clk = {
2333*95eeb2ffSImran Shaik .halt_reg = 0x34010,
2334*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2335*95eeb2ffSImran Shaik .hwcg_reg = 0x34010,
2336*95eeb2ffSImran Shaik .hwcg_bit = 1,
2337*95eeb2ffSImran Shaik .clkr = {
2338*95eeb2ffSImran Shaik .enable_reg = 0x34010,
2339*95eeb2ffSImran Shaik .enable_mask = BIT(0),
2340*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2341*95eeb2ffSImran Shaik .name = "gcc_qmip_video_vcpu_ahb_clk",
2342*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2343*95eeb2ffSImran Shaik },
2344*95eeb2ffSImran Shaik },
2345*95eeb2ffSImran Shaik };
2346*95eeb2ffSImran Shaik
2347*95eeb2ffSImran Shaik static struct clk_branch gcc_qupv3_wrap0_core_2x_clk = {
2348*95eeb2ffSImran Shaik .halt_reg = 0x23018,
2349*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2350*95eeb2ffSImran Shaik .clkr = {
2351*95eeb2ffSImran Shaik .enable_reg = 0x4b008,
2352*95eeb2ffSImran Shaik .enable_mask = BIT(9),
2353*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2354*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap0_core_2x_clk",
2355*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2356*95eeb2ffSImran Shaik },
2357*95eeb2ffSImran Shaik },
2358*95eeb2ffSImran Shaik };
2359*95eeb2ffSImran Shaik
2360*95eeb2ffSImran Shaik static struct clk_branch gcc_qupv3_wrap0_core_clk = {
2361*95eeb2ffSImran Shaik .halt_reg = 0x2300c,
2362*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2363*95eeb2ffSImran Shaik .clkr = {
2364*95eeb2ffSImran Shaik .enable_reg = 0x4b008,
2365*95eeb2ffSImran Shaik .enable_mask = BIT(8),
2366*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2367*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap0_core_clk",
2368*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2369*95eeb2ffSImran Shaik },
2370*95eeb2ffSImran Shaik },
2371*95eeb2ffSImran Shaik };
2372*95eeb2ffSImran Shaik
2373*95eeb2ffSImran Shaik static struct clk_branch gcc_qupv3_wrap0_s0_clk = {
2374*95eeb2ffSImran Shaik .halt_reg = 0x2314c,
2375*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2376*95eeb2ffSImran Shaik .clkr = {
2377*95eeb2ffSImran Shaik .enable_reg = 0x4b008,
2378*95eeb2ffSImran Shaik .enable_mask = BIT(10),
2379*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2380*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap0_s0_clk",
2381*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
2382*95eeb2ffSImran Shaik &gcc_qupv3_wrap0_s0_clk_src.clkr.hw,
2383*95eeb2ffSImran Shaik },
2384*95eeb2ffSImran Shaik .num_parents = 1,
2385*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
2386*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2387*95eeb2ffSImran Shaik },
2388*95eeb2ffSImran Shaik },
2389*95eeb2ffSImran Shaik };
2390*95eeb2ffSImran Shaik
2391*95eeb2ffSImran Shaik static struct clk_branch gcc_qupv3_wrap0_s1_clk = {
2392*95eeb2ffSImran Shaik .halt_reg = 0x23280,
2393*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2394*95eeb2ffSImran Shaik .clkr = {
2395*95eeb2ffSImran Shaik .enable_reg = 0x4b008,
2396*95eeb2ffSImran Shaik .enable_mask = BIT(11),
2397*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2398*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap0_s1_clk",
2399*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
2400*95eeb2ffSImran Shaik &gcc_qupv3_wrap0_s1_clk_src.clkr.hw,
2401*95eeb2ffSImran Shaik },
2402*95eeb2ffSImran Shaik .num_parents = 1,
2403*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
2404*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2405*95eeb2ffSImran Shaik },
2406*95eeb2ffSImran Shaik },
2407*95eeb2ffSImran Shaik };
2408*95eeb2ffSImran Shaik
2409*95eeb2ffSImran Shaik static struct clk_branch gcc_qupv3_wrap0_s2_clk = {
2410*95eeb2ffSImran Shaik .halt_reg = 0x233b4,
2411*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2412*95eeb2ffSImran Shaik .clkr = {
2413*95eeb2ffSImran Shaik .enable_reg = 0x4b008,
2414*95eeb2ffSImran Shaik .enable_mask = BIT(12),
2415*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2416*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap0_s2_clk",
2417*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
2418*95eeb2ffSImran Shaik &gcc_qupv3_wrap0_s2_clk_src.clkr.hw,
2419*95eeb2ffSImran Shaik },
2420*95eeb2ffSImran Shaik .num_parents = 1,
2421*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
2422*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2423*95eeb2ffSImran Shaik },
2424*95eeb2ffSImran Shaik },
2425*95eeb2ffSImran Shaik };
2426*95eeb2ffSImran Shaik
2427*95eeb2ffSImran Shaik static struct clk_branch gcc_qupv3_wrap0_s3_clk = {
2428*95eeb2ffSImran Shaik .halt_reg = 0x234e8,
2429*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2430*95eeb2ffSImran Shaik .clkr = {
2431*95eeb2ffSImran Shaik .enable_reg = 0x4b008,
2432*95eeb2ffSImran Shaik .enable_mask = BIT(13),
2433*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2434*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap0_s3_clk",
2435*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
2436*95eeb2ffSImran Shaik &gcc_qupv3_wrap0_s3_clk_src.clkr.hw,
2437*95eeb2ffSImran Shaik },
2438*95eeb2ffSImran Shaik .num_parents = 1,
2439*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
2440*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2441*95eeb2ffSImran Shaik },
2442*95eeb2ffSImran Shaik },
2443*95eeb2ffSImran Shaik };
2444*95eeb2ffSImran Shaik
2445*95eeb2ffSImran Shaik static struct clk_branch gcc_qupv3_wrap0_s4_clk = {
2446*95eeb2ffSImran Shaik .halt_reg = 0x2361c,
2447*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2448*95eeb2ffSImran Shaik .clkr = {
2449*95eeb2ffSImran Shaik .enable_reg = 0x4b008,
2450*95eeb2ffSImran Shaik .enable_mask = BIT(14),
2451*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2452*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap0_s4_clk",
2453*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
2454*95eeb2ffSImran Shaik &gcc_qupv3_wrap0_s4_clk_src.clkr.hw,
2455*95eeb2ffSImran Shaik },
2456*95eeb2ffSImran Shaik .num_parents = 1,
2457*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
2458*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2459*95eeb2ffSImran Shaik },
2460*95eeb2ffSImran Shaik },
2461*95eeb2ffSImran Shaik };
2462*95eeb2ffSImran Shaik
2463*95eeb2ffSImran Shaik static struct clk_branch gcc_qupv3_wrap0_s5_clk = {
2464*95eeb2ffSImran Shaik .halt_reg = 0x23750,
2465*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2466*95eeb2ffSImran Shaik .clkr = {
2467*95eeb2ffSImran Shaik .enable_reg = 0x4b008,
2468*95eeb2ffSImran Shaik .enable_mask = BIT(15),
2469*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2470*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap0_s5_clk",
2471*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
2472*95eeb2ffSImran Shaik &gcc_qupv3_wrap0_s5_clk_src.clkr.hw,
2473*95eeb2ffSImran Shaik },
2474*95eeb2ffSImran Shaik .num_parents = 1,
2475*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
2476*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2477*95eeb2ffSImran Shaik },
2478*95eeb2ffSImran Shaik },
2479*95eeb2ffSImran Shaik };
2480*95eeb2ffSImran Shaik
2481*95eeb2ffSImran Shaik static struct clk_branch gcc_qupv3_wrap0_s6_clk = {
2482*95eeb2ffSImran Shaik .halt_reg = 0x23884,
2483*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2484*95eeb2ffSImran Shaik .clkr = {
2485*95eeb2ffSImran Shaik .enable_reg = 0x4b008,
2486*95eeb2ffSImran Shaik .enable_mask = BIT(16),
2487*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2488*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap0_s6_clk",
2489*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
2490*95eeb2ffSImran Shaik &gcc_qupv3_wrap0_s6_clk_src.clkr.hw,
2491*95eeb2ffSImran Shaik },
2492*95eeb2ffSImran Shaik .num_parents = 1,
2493*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
2494*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2495*95eeb2ffSImran Shaik },
2496*95eeb2ffSImran Shaik },
2497*95eeb2ffSImran Shaik };
2498*95eeb2ffSImran Shaik
2499*95eeb2ffSImran Shaik static struct clk_branch gcc_qupv3_wrap0_s7_clk = {
2500*95eeb2ffSImran Shaik .halt_reg = 0x239b8,
2501*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2502*95eeb2ffSImran Shaik .clkr = {
2503*95eeb2ffSImran Shaik .enable_reg = 0x4b008,
2504*95eeb2ffSImran Shaik .enable_mask = BIT(17),
2505*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2506*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap0_s7_clk",
2507*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
2508*95eeb2ffSImran Shaik &gcc_qupv3_wrap0_s7_clk_src.clkr.hw,
2509*95eeb2ffSImran Shaik },
2510*95eeb2ffSImran Shaik .num_parents = 1,
2511*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
2512*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2513*95eeb2ffSImran Shaik },
2514*95eeb2ffSImran Shaik },
2515*95eeb2ffSImran Shaik };
2516*95eeb2ffSImran Shaik
2517*95eeb2ffSImran Shaik static struct clk_branch gcc_qupv3_wrap1_core_2x_clk = {
2518*95eeb2ffSImran Shaik .halt_reg = 0x24018,
2519*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2520*95eeb2ffSImran Shaik .clkr = {
2521*95eeb2ffSImran Shaik .enable_reg = 0x4b008,
2522*95eeb2ffSImran Shaik .enable_mask = BIT(18),
2523*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2524*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap1_core_2x_clk",
2525*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2526*95eeb2ffSImran Shaik },
2527*95eeb2ffSImran Shaik },
2528*95eeb2ffSImran Shaik };
2529*95eeb2ffSImran Shaik
2530*95eeb2ffSImran Shaik static struct clk_branch gcc_qupv3_wrap1_core_clk = {
2531*95eeb2ffSImran Shaik .halt_reg = 0x2400c,
2532*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2533*95eeb2ffSImran Shaik .clkr = {
2534*95eeb2ffSImran Shaik .enable_reg = 0x4b008,
2535*95eeb2ffSImran Shaik .enable_mask = BIT(19),
2536*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2537*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap1_core_clk",
2538*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2539*95eeb2ffSImran Shaik },
2540*95eeb2ffSImran Shaik },
2541*95eeb2ffSImran Shaik };
2542*95eeb2ffSImran Shaik
2543*95eeb2ffSImran Shaik static struct clk_branch gcc_qupv3_wrap1_s0_clk = {
2544*95eeb2ffSImran Shaik .halt_reg = 0x2414c,
2545*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2546*95eeb2ffSImran Shaik .clkr = {
2547*95eeb2ffSImran Shaik .enable_reg = 0x4b008,
2548*95eeb2ffSImran Shaik .enable_mask = BIT(22),
2549*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2550*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap1_s0_clk",
2551*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
2552*95eeb2ffSImran Shaik &gcc_qupv3_wrap1_s0_clk_src.clkr.hw,
2553*95eeb2ffSImran Shaik },
2554*95eeb2ffSImran Shaik .num_parents = 1,
2555*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
2556*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2557*95eeb2ffSImran Shaik },
2558*95eeb2ffSImran Shaik },
2559*95eeb2ffSImran Shaik };
2560*95eeb2ffSImran Shaik
2561*95eeb2ffSImran Shaik static struct clk_branch gcc_qupv3_wrap1_s1_clk = {
2562*95eeb2ffSImran Shaik .halt_reg = 0x24280,
2563*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2564*95eeb2ffSImran Shaik .clkr = {
2565*95eeb2ffSImran Shaik .enable_reg = 0x4b008,
2566*95eeb2ffSImran Shaik .enable_mask = BIT(23),
2567*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2568*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap1_s1_clk",
2569*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
2570*95eeb2ffSImran Shaik &gcc_qupv3_wrap1_s1_clk_src.clkr.hw,
2571*95eeb2ffSImran Shaik },
2572*95eeb2ffSImran Shaik .num_parents = 1,
2573*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
2574*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2575*95eeb2ffSImran Shaik },
2576*95eeb2ffSImran Shaik },
2577*95eeb2ffSImran Shaik };
2578*95eeb2ffSImran Shaik
2579*95eeb2ffSImran Shaik static struct clk_branch gcc_qupv3_wrap1_s2_clk = {
2580*95eeb2ffSImran Shaik .halt_reg = 0x243b4,
2581*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2582*95eeb2ffSImran Shaik .clkr = {
2583*95eeb2ffSImran Shaik .enable_reg = 0x4b008,
2584*95eeb2ffSImran Shaik .enable_mask = BIT(24),
2585*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2586*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap1_s2_clk",
2587*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
2588*95eeb2ffSImran Shaik &gcc_qupv3_wrap1_s2_clk_src.clkr.hw,
2589*95eeb2ffSImran Shaik },
2590*95eeb2ffSImran Shaik .num_parents = 1,
2591*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
2592*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2593*95eeb2ffSImran Shaik },
2594*95eeb2ffSImran Shaik },
2595*95eeb2ffSImran Shaik };
2596*95eeb2ffSImran Shaik
2597*95eeb2ffSImran Shaik static struct clk_branch gcc_qupv3_wrap1_s3_clk = {
2598*95eeb2ffSImran Shaik .halt_reg = 0x244e8,
2599*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2600*95eeb2ffSImran Shaik .clkr = {
2601*95eeb2ffSImran Shaik .enable_reg = 0x4b008,
2602*95eeb2ffSImran Shaik .enable_mask = BIT(25),
2603*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2604*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap1_s3_clk",
2605*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
2606*95eeb2ffSImran Shaik &gcc_qupv3_wrap1_s3_clk_src.clkr.hw,
2607*95eeb2ffSImran Shaik },
2608*95eeb2ffSImran Shaik .num_parents = 1,
2609*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
2610*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2611*95eeb2ffSImran Shaik },
2612*95eeb2ffSImran Shaik },
2613*95eeb2ffSImran Shaik };
2614*95eeb2ffSImran Shaik
2615*95eeb2ffSImran Shaik static struct clk_branch gcc_qupv3_wrap1_s4_clk = {
2616*95eeb2ffSImran Shaik .halt_reg = 0x2461c,
2617*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2618*95eeb2ffSImran Shaik .clkr = {
2619*95eeb2ffSImran Shaik .enable_reg = 0x4b008,
2620*95eeb2ffSImran Shaik .enable_mask = BIT(26),
2621*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2622*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap1_s4_clk",
2623*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
2624*95eeb2ffSImran Shaik &gcc_qupv3_wrap1_s4_clk_src.clkr.hw,
2625*95eeb2ffSImran Shaik },
2626*95eeb2ffSImran Shaik .num_parents = 1,
2627*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
2628*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2629*95eeb2ffSImran Shaik },
2630*95eeb2ffSImran Shaik },
2631*95eeb2ffSImran Shaik };
2632*95eeb2ffSImran Shaik
2633*95eeb2ffSImran Shaik static struct clk_branch gcc_qupv3_wrap1_s5_clk = {
2634*95eeb2ffSImran Shaik .halt_reg = 0x24750,
2635*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2636*95eeb2ffSImran Shaik .clkr = {
2637*95eeb2ffSImran Shaik .enable_reg = 0x4b008,
2638*95eeb2ffSImran Shaik .enable_mask = BIT(27),
2639*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2640*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap1_s5_clk",
2641*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
2642*95eeb2ffSImran Shaik &gcc_qupv3_wrap1_s5_clk_src.clkr.hw,
2643*95eeb2ffSImran Shaik },
2644*95eeb2ffSImran Shaik .num_parents = 1,
2645*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
2646*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2647*95eeb2ffSImran Shaik },
2648*95eeb2ffSImran Shaik },
2649*95eeb2ffSImran Shaik };
2650*95eeb2ffSImran Shaik
2651*95eeb2ffSImran Shaik static struct clk_branch gcc_qupv3_wrap1_s6_clk = {
2652*95eeb2ffSImran Shaik .halt_reg = 0x24884,
2653*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2654*95eeb2ffSImran Shaik .clkr = {
2655*95eeb2ffSImran Shaik .enable_reg = 0x4b018,
2656*95eeb2ffSImran Shaik .enable_mask = BIT(27),
2657*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2658*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap1_s6_clk",
2659*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
2660*95eeb2ffSImran Shaik &gcc_qupv3_wrap1_s6_clk_src.clkr.hw,
2661*95eeb2ffSImran Shaik },
2662*95eeb2ffSImran Shaik .num_parents = 1,
2663*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
2664*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2665*95eeb2ffSImran Shaik },
2666*95eeb2ffSImran Shaik },
2667*95eeb2ffSImran Shaik };
2668*95eeb2ffSImran Shaik
2669*95eeb2ffSImran Shaik static struct clk_branch gcc_qupv3_wrap1_s7_clk = {
2670*95eeb2ffSImran Shaik .halt_reg = 0x249b8,
2671*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2672*95eeb2ffSImran Shaik .clkr = {
2673*95eeb2ffSImran Shaik .enable_reg = 0x4b018,
2674*95eeb2ffSImran Shaik .enable_mask = BIT(28),
2675*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2676*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap1_s7_clk",
2677*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
2678*95eeb2ffSImran Shaik &gcc_qupv3_wrap1_s7_clk_src.clkr.hw,
2679*95eeb2ffSImran Shaik },
2680*95eeb2ffSImran Shaik .num_parents = 1,
2681*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
2682*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2683*95eeb2ffSImran Shaik },
2684*95eeb2ffSImran Shaik },
2685*95eeb2ffSImran Shaik };
2686*95eeb2ffSImran Shaik
2687*95eeb2ffSImran Shaik static struct clk_branch gcc_qupv3_wrap3_core_2x_clk = {
2688*95eeb2ffSImran Shaik .halt_reg = 0xc4018,
2689*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2690*95eeb2ffSImran Shaik .clkr = {
2691*95eeb2ffSImran Shaik .enable_reg = 0x4b000,
2692*95eeb2ffSImran Shaik .enable_mask = BIT(24),
2693*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2694*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap3_core_2x_clk",
2695*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2696*95eeb2ffSImran Shaik },
2697*95eeb2ffSImran Shaik },
2698*95eeb2ffSImran Shaik };
2699*95eeb2ffSImran Shaik
2700*95eeb2ffSImran Shaik static struct clk_branch gcc_qupv3_wrap3_core_clk = {
2701*95eeb2ffSImran Shaik .halt_reg = 0xc400c,
2702*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2703*95eeb2ffSImran Shaik .clkr = {
2704*95eeb2ffSImran Shaik .enable_reg = 0x4b000,
2705*95eeb2ffSImran Shaik .enable_mask = BIT(23),
2706*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2707*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap3_core_clk",
2708*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2709*95eeb2ffSImran Shaik },
2710*95eeb2ffSImran Shaik },
2711*95eeb2ffSImran Shaik };
2712*95eeb2ffSImran Shaik
2713*95eeb2ffSImran Shaik static struct clk_branch gcc_qupv3_wrap3_qspi_clk = {
2714*95eeb2ffSImran Shaik .halt_reg = 0xc4284,
2715*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2716*95eeb2ffSImran Shaik .clkr = {
2717*95eeb2ffSImran Shaik .enable_reg = 0x4b000,
2718*95eeb2ffSImran Shaik .enable_mask = BIT(26),
2719*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2720*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap3_qspi_clk",
2721*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
2722*95eeb2ffSImran Shaik &gcc_qupv3_wrap3_s0_clk_src.clkr.hw,
2723*95eeb2ffSImran Shaik },
2724*95eeb2ffSImran Shaik .num_parents = 1,
2725*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
2726*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2727*95eeb2ffSImran Shaik },
2728*95eeb2ffSImran Shaik },
2729*95eeb2ffSImran Shaik };
2730*95eeb2ffSImran Shaik
2731*95eeb2ffSImran Shaik static struct clk_branch gcc_qupv3_wrap3_s0_clk = {
2732*95eeb2ffSImran Shaik .halt_reg = 0xc4150,
2733*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2734*95eeb2ffSImran Shaik .clkr = {
2735*95eeb2ffSImran Shaik .enable_reg = 0x4b000,
2736*95eeb2ffSImran Shaik .enable_mask = BIT(25),
2737*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2738*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap3_s0_clk",
2739*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
2740*95eeb2ffSImran Shaik &gcc_qupv3_wrap3_s0_div_clk_src.clkr.hw,
2741*95eeb2ffSImran Shaik },
2742*95eeb2ffSImran Shaik .num_parents = 1,
2743*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
2744*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2745*95eeb2ffSImran Shaik },
2746*95eeb2ffSImran Shaik },
2747*95eeb2ffSImran Shaik };
2748*95eeb2ffSImran Shaik
2749*95eeb2ffSImran Shaik static struct clk_branch gcc_qupv3_wrap_0_m_ahb_clk = {
2750*95eeb2ffSImran Shaik .halt_reg = 0x23004,
2751*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2752*95eeb2ffSImran Shaik .hwcg_reg = 0x23004,
2753*95eeb2ffSImran Shaik .hwcg_bit = 1,
2754*95eeb2ffSImran Shaik .clkr = {
2755*95eeb2ffSImran Shaik .enable_reg = 0x4b008,
2756*95eeb2ffSImran Shaik .enable_mask = BIT(6),
2757*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2758*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap_0_m_ahb_clk",
2759*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2760*95eeb2ffSImran Shaik },
2761*95eeb2ffSImran Shaik },
2762*95eeb2ffSImran Shaik };
2763*95eeb2ffSImran Shaik
2764*95eeb2ffSImran Shaik static struct clk_branch gcc_qupv3_wrap_0_s_ahb_clk = {
2765*95eeb2ffSImran Shaik .halt_reg = 0x23008,
2766*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2767*95eeb2ffSImran Shaik .hwcg_reg = 0x23008,
2768*95eeb2ffSImran Shaik .hwcg_bit = 1,
2769*95eeb2ffSImran Shaik .clkr = {
2770*95eeb2ffSImran Shaik .enable_reg = 0x4b008,
2771*95eeb2ffSImran Shaik .enable_mask = BIT(7),
2772*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2773*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap_0_s_ahb_clk",
2774*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2775*95eeb2ffSImran Shaik },
2776*95eeb2ffSImran Shaik },
2777*95eeb2ffSImran Shaik };
2778*95eeb2ffSImran Shaik
2779*95eeb2ffSImran Shaik static struct clk_branch gcc_qupv3_wrap_1_m_ahb_clk = {
2780*95eeb2ffSImran Shaik .halt_reg = 0x24004,
2781*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2782*95eeb2ffSImran Shaik .hwcg_reg = 0x24004,
2783*95eeb2ffSImran Shaik .hwcg_bit = 1,
2784*95eeb2ffSImran Shaik .clkr = {
2785*95eeb2ffSImran Shaik .enable_reg = 0x4b008,
2786*95eeb2ffSImran Shaik .enable_mask = BIT(20),
2787*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2788*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap_1_m_ahb_clk",
2789*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2790*95eeb2ffSImran Shaik },
2791*95eeb2ffSImran Shaik },
2792*95eeb2ffSImran Shaik };
2793*95eeb2ffSImran Shaik
2794*95eeb2ffSImran Shaik static struct clk_branch gcc_qupv3_wrap_1_s_ahb_clk = {
2795*95eeb2ffSImran Shaik .halt_reg = 0x24008,
2796*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2797*95eeb2ffSImran Shaik .hwcg_reg = 0x24008,
2798*95eeb2ffSImran Shaik .hwcg_bit = 1,
2799*95eeb2ffSImran Shaik .clkr = {
2800*95eeb2ffSImran Shaik .enable_reg = 0x4b008,
2801*95eeb2ffSImran Shaik .enable_mask = BIT(21),
2802*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2803*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap_1_s_ahb_clk",
2804*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2805*95eeb2ffSImran Shaik },
2806*95eeb2ffSImran Shaik },
2807*95eeb2ffSImran Shaik };
2808*95eeb2ffSImran Shaik
2809*95eeb2ffSImran Shaik static struct clk_branch gcc_qupv3_wrap_3_m_ahb_clk = {
2810*95eeb2ffSImran Shaik .halt_reg = 0xc4004,
2811*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2812*95eeb2ffSImran Shaik .hwcg_reg = 0xc4004,
2813*95eeb2ffSImran Shaik .hwcg_bit = 1,
2814*95eeb2ffSImran Shaik .clkr = {
2815*95eeb2ffSImran Shaik .enable_reg = 0x4b000,
2816*95eeb2ffSImran Shaik .enable_mask = BIT(27),
2817*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2818*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap_3_m_ahb_clk",
2819*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2820*95eeb2ffSImran Shaik },
2821*95eeb2ffSImran Shaik },
2822*95eeb2ffSImran Shaik };
2823*95eeb2ffSImran Shaik
2824*95eeb2ffSImran Shaik static struct clk_branch gcc_qupv3_wrap_3_s_ahb_clk = {
2825*95eeb2ffSImran Shaik .halt_reg = 0xc4008,
2826*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2827*95eeb2ffSImran Shaik .hwcg_reg = 0xc4008,
2828*95eeb2ffSImran Shaik .hwcg_bit = 1,
2829*95eeb2ffSImran Shaik .clkr = {
2830*95eeb2ffSImran Shaik .enable_reg = 0x4b000,
2831*95eeb2ffSImran Shaik .enable_mask = BIT(20),
2832*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2833*95eeb2ffSImran Shaik .name = "gcc_qupv3_wrap_3_s_ahb_clk",
2834*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2835*95eeb2ffSImran Shaik },
2836*95eeb2ffSImran Shaik },
2837*95eeb2ffSImran Shaik };
2838*95eeb2ffSImran Shaik
2839*95eeb2ffSImran Shaik static struct clk_branch gcc_sdcc1_ahb_clk = {
2840*95eeb2ffSImran Shaik .halt_reg = 0x2000c,
2841*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT,
2842*95eeb2ffSImran Shaik .clkr = {
2843*95eeb2ffSImran Shaik .enable_reg = 0x2000c,
2844*95eeb2ffSImran Shaik .enable_mask = BIT(0),
2845*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2846*95eeb2ffSImran Shaik .name = "gcc_sdcc1_ahb_clk",
2847*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2848*95eeb2ffSImran Shaik },
2849*95eeb2ffSImran Shaik },
2850*95eeb2ffSImran Shaik };
2851*95eeb2ffSImran Shaik
2852*95eeb2ffSImran Shaik static struct clk_branch gcc_sdcc1_apps_clk = {
2853*95eeb2ffSImran Shaik .halt_reg = 0x20004,
2854*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT,
2855*95eeb2ffSImran Shaik .clkr = {
2856*95eeb2ffSImran Shaik .enable_reg = 0x20004,
2857*95eeb2ffSImran Shaik .enable_mask = BIT(0),
2858*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2859*95eeb2ffSImran Shaik .name = "gcc_sdcc1_apps_clk",
2860*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
2861*95eeb2ffSImran Shaik &gcc_sdcc1_apps_clk_src.clkr.hw,
2862*95eeb2ffSImran Shaik },
2863*95eeb2ffSImran Shaik .num_parents = 1,
2864*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
2865*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2866*95eeb2ffSImran Shaik },
2867*95eeb2ffSImran Shaik },
2868*95eeb2ffSImran Shaik };
2869*95eeb2ffSImran Shaik
2870*95eeb2ffSImran Shaik static struct clk_branch gcc_sdcc1_ice_core_clk = {
2871*95eeb2ffSImran Shaik .halt_reg = 0x20044,
2872*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2873*95eeb2ffSImran Shaik .hwcg_reg = 0x20044,
2874*95eeb2ffSImran Shaik .hwcg_bit = 1,
2875*95eeb2ffSImran Shaik .clkr = {
2876*95eeb2ffSImran Shaik .enable_reg = 0x20044,
2877*95eeb2ffSImran Shaik .enable_mask = BIT(0),
2878*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2879*95eeb2ffSImran Shaik .name = "gcc_sdcc1_ice_core_clk",
2880*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
2881*95eeb2ffSImran Shaik &gcc_sdcc1_ice_core_clk_src.clkr.hw,
2882*95eeb2ffSImran Shaik },
2883*95eeb2ffSImran Shaik .num_parents = 1,
2884*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
2885*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2886*95eeb2ffSImran Shaik },
2887*95eeb2ffSImran Shaik },
2888*95eeb2ffSImran Shaik };
2889*95eeb2ffSImran Shaik
2890*95eeb2ffSImran Shaik static struct clk_branch gcc_sgmi_clkref_en = {
2891*95eeb2ffSImran Shaik .halt_reg = 0x97034,
2892*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_DELAY,
2893*95eeb2ffSImran Shaik .clkr = {
2894*95eeb2ffSImran Shaik .enable_reg = 0x97034,
2895*95eeb2ffSImran Shaik .enable_mask = BIT(0),
2896*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2897*95eeb2ffSImran Shaik .name = "gcc_sgmi_clkref_en",
2898*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2899*95eeb2ffSImran Shaik },
2900*95eeb2ffSImran Shaik },
2901*95eeb2ffSImran Shaik };
2902*95eeb2ffSImran Shaik
2903*95eeb2ffSImran Shaik static struct clk_branch gcc_ufs_phy_ahb_clk = {
2904*95eeb2ffSImran Shaik .halt_reg = 0x83020,
2905*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2906*95eeb2ffSImran Shaik .hwcg_reg = 0x83020,
2907*95eeb2ffSImran Shaik .hwcg_bit = 1,
2908*95eeb2ffSImran Shaik .clkr = {
2909*95eeb2ffSImran Shaik .enable_reg = 0x83020,
2910*95eeb2ffSImran Shaik .enable_mask = BIT(0),
2911*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2912*95eeb2ffSImran Shaik .name = "gcc_ufs_phy_ahb_clk",
2913*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2914*95eeb2ffSImran Shaik },
2915*95eeb2ffSImran Shaik },
2916*95eeb2ffSImran Shaik };
2917*95eeb2ffSImran Shaik
2918*95eeb2ffSImran Shaik static struct clk_branch gcc_ufs_phy_axi_clk = {
2919*95eeb2ffSImran Shaik .halt_reg = 0x83018,
2920*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2921*95eeb2ffSImran Shaik .hwcg_reg = 0x83018,
2922*95eeb2ffSImran Shaik .hwcg_bit = 1,
2923*95eeb2ffSImran Shaik .clkr = {
2924*95eeb2ffSImran Shaik .enable_reg = 0x83018,
2925*95eeb2ffSImran Shaik .enable_mask = BIT(0),
2926*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2927*95eeb2ffSImran Shaik .name = "gcc_ufs_phy_axi_clk",
2928*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
2929*95eeb2ffSImran Shaik &gcc_ufs_phy_axi_clk_src.clkr.hw,
2930*95eeb2ffSImran Shaik },
2931*95eeb2ffSImran Shaik .num_parents = 1,
2932*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
2933*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2934*95eeb2ffSImran Shaik },
2935*95eeb2ffSImran Shaik },
2936*95eeb2ffSImran Shaik };
2937*95eeb2ffSImran Shaik
2938*95eeb2ffSImran Shaik static struct clk_branch gcc_ufs_phy_ice_core_clk = {
2939*95eeb2ffSImran Shaik .halt_reg = 0x8306c,
2940*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2941*95eeb2ffSImran Shaik .hwcg_reg = 0x8306c,
2942*95eeb2ffSImran Shaik .hwcg_bit = 1,
2943*95eeb2ffSImran Shaik .clkr = {
2944*95eeb2ffSImran Shaik .enable_reg = 0x8306c,
2945*95eeb2ffSImran Shaik .enable_mask = BIT(0),
2946*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2947*95eeb2ffSImran Shaik .name = "gcc_ufs_phy_ice_core_clk",
2948*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
2949*95eeb2ffSImran Shaik &gcc_ufs_phy_ice_core_clk_src.clkr.hw,
2950*95eeb2ffSImran Shaik },
2951*95eeb2ffSImran Shaik .num_parents = 1,
2952*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
2953*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2954*95eeb2ffSImran Shaik },
2955*95eeb2ffSImran Shaik },
2956*95eeb2ffSImran Shaik };
2957*95eeb2ffSImran Shaik
2958*95eeb2ffSImran Shaik static struct clk_branch gcc_ufs_phy_phy_aux_clk = {
2959*95eeb2ffSImran Shaik .halt_reg = 0x830a4,
2960*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
2961*95eeb2ffSImran Shaik .hwcg_reg = 0x830a4,
2962*95eeb2ffSImran Shaik .hwcg_bit = 1,
2963*95eeb2ffSImran Shaik .clkr = {
2964*95eeb2ffSImran Shaik .enable_reg = 0x830a4,
2965*95eeb2ffSImran Shaik .enable_mask = BIT(0),
2966*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2967*95eeb2ffSImran Shaik .name = "gcc_ufs_phy_phy_aux_clk",
2968*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
2969*95eeb2ffSImran Shaik &gcc_ufs_phy_phy_aux_clk_src.clkr.hw,
2970*95eeb2ffSImran Shaik },
2971*95eeb2ffSImran Shaik .num_parents = 1,
2972*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
2973*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2974*95eeb2ffSImran Shaik },
2975*95eeb2ffSImran Shaik },
2976*95eeb2ffSImran Shaik };
2977*95eeb2ffSImran Shaik
2978*95eeb2ffSImran Shaik static struct clk_branch gcc_ufs_phy_rx_symbol_0_clk = {
2979*95eeb2ffSImran Shaik .halt_reg = 0x83028,
2980*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_DELAY,
2981*95eeb2ffSImran Shaik .clkr = {
2982*95eeb2ffSImran Shaik .enable_reg = 0x83028,
2983*95eeb2ffSImran Shaik .enable_mask = BIT(0),
2984*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
2985*95eeb2ffSImran Shaik .name = "gcc_ufs_phy_rx_symbol_0_clk",
2986*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
2987*95eeb2ffSImran Shaik &gcc_ufs_phy_rx_symbol_0_clk_src.clkr.hw,
2988*95eeb2ffSImran Shaik },
2989*95eeb2ffSImran Shaik .num_parents = 1,
2990*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
2991*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
2992*95eeb2ffSImran Shaik },
2993*95eeb2ffSImran Shaik },
2994*95eeb2ffSImran Shaik };
2995*95eeb2ffSImran Shaik
2996*95eeb2ffSImran Shaik static struct clk_branch gcc_ufs_phy_rx_symbol_1_clk = {
2997*95eeb2ffSImran Shaik .halt_reg = 0x830c0,
2998*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_DELAY,
2999*95eeb2ffSImran Shaik .clkr = {
3000*95eeb2ffSImran Shaik .enable_reg = 0x830c0,
3001*95eeb2ffSImran Shaik .enable_mask = BIT(0),
3002*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
3003*95eeb2ffSImran Shaik .name = "gcc_ufs_phy_rx_symbol_1_clk",
3004*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
3005*95eeb2ffSImran Shaik &gcc_ufs_phy_rx_symbol_1_clk_src.clkr.hw,
3006*95eeb2ffSImran Shaik },
3007*95eeb2ffSImran Shaik .num_parents = 1,
3008*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
3009*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
3010*95eeb2ffSImran Shaik },
3011*95eeb2ffSImran Shaik },
3012*95eeb2ffSImran Shaik };
3013*95eeb2ffSImran Shaik
3014*95eeb2ffSImran Shaik static struct clk_branch gcc_ufs_phy_tx_symbol_0_clk = {
3015*95eeb2ffSImran Shaik .halt_reg = 0x83024,
3016*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_DELAY,
3017*95eeb2ffSImran Shaik .clkr = {
3018*95eeb2ffSImran Shaik .enable_reg = 0x83024,
3019*95eeb2ffSImran Shaik .enable_mask = BIT(0),
3020*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
3021*95eeb2ffSImran Shaik .name = "gcc_ufs_phy_tx_symbol_0_clk",
3022*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
3023*95eeb2ffSImran Shaik &gcc_ufs_phy_tx_symbol_0_clk_src.clkr.hw,
3024*95eeb2ffSImran Shaik },
3025*95eeb2ffSImran Shaik .num_parents = 1,
3026*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
3027*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
3028*95eeb2ffSImran Shaik },
3029*95eeb2ffSImran Shaik },
3030*95eeb2ffSImran Shaik };
3031*95eeb2ffSImran Shaik
3032*95eeb2ffSImran Shaik static struct clk_branch gcc_ufs_phy_unipro_core_clk = {
3033*95eeb2ffSImran Shaik .halt_reg = 0x83064,
3034*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
3035*95eeb2ffSImran Shaik .hwcg_reg = 0x83064,
3036*95eeb2ffSImran Shaik .hwcg_bit = 1,
3037*95eeb2ffSImran Shaik .clkr = {
3038*95eeb2ffSImran Shaik .enable_reg = 0x83064,
3039*95eeb2ffSImran Shaik .enable_mask = BIT(0),
3040*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
3041*95eeb2ffSImran Shaik .name = "gcc_ufs_phy_unipro_core_clk",
3042*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
3043*95eeb2ffSImran Shaik &gcc_ufs_phy_unipro_core_clk_src.clkr.hw,
3044*95eeb2ffSImran Shaik },
3045*95eeb2ffSImran Shaik .num_parents = 1,
3046*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
3047*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
3048*95eeb2ffSImran Shaik },
3049*95eeb2ffSImran Shaik },
3050*95eeb2ffSImran Shaik };
3051*95eeb2ffSImran Shaik
3052*95eeb2ffSImran Shaik static struct clk_branch gcc_usb20_master_clk = {
3053*95eeb2ffSImran Shaik .halt_reg = 0x1c018,
3054*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT,
3055*95eeb2ffSImran Shaik .clkr = {
3056*95eeb2ffSImran Shaik .enable_reg = 0x1c018,
3057*95eeb2ffSImran Shaik .enable_mask = BIT(0),
3058*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
3059*95eeb2ffSImran Shaik .name = "gcc_usb20_master_clk",
3060*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
3061*95eeb2ffSImran Shaik &gcc_usb20_master_clk_src.clkr.hw,
3062*95eeb2ffSImran Shaik },
3063*95eeb2ffSImran Shaik .num_parents = 1,
3064*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
3065*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
3066*95eeb2ffSImran Shaik },
3067*95eeb2ffSImran Shaik },
3068*95eeb2ffSImran Shaik };
3069*95eeb2ffSImran Shaik
3070*95eeb2ffSImran Shaik static struct clk_branch gcc_usb20_mock_utmi_clk = {
3071*95eeb2ffSImran Shaik .halt_reg = 0x1c024,
3072*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT,
3073*95eeb2ffSImran Shaik .clkr = {
3074*95eeb2ffSImran Shaik .enable_reg = 0x1c024,
3075*95eeb2ffSImran Shaik .enable_mask = BIT(0),
3076*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
3077*95eeb2ffSImran Shaik .name = "gcc_usb20_mock_utmi_clk",
3078*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
3079*95eeb2ffSImran Shaik &gcc_usb20_mock_utmi_postdiv_clk_src.clkr.hw,
3080*95eeb2ffSImran Shaik },
3081*95eeb2ffSImran Shaik .num_parents = 1,
3082*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
3083*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
3084*95eeb2ffSImran Shaik },
3085*95eeb2ffSImran Shaik },
3086*95eeb2ffSImran Shaik };
3087*95eeb2ffSImran Shaik
3088*95eeb2ffSImran Shaik static struct clk_branch gcc_usb20_sleep_clk = {
3089*95eeb2ffSImran Shaik .halt_reg = 0x1c020,
3090*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT,
3091*95eeb2ffSImran Shaik .clkr = {
3092*95eeb2ffSImran Shaik .enable_reg = 0x1c020,
3093*95eeb2ffSImran Shaik .enable_mask = BIT(0),
3094*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
3095*95eeb2ffSImran Shaik .name = "gcc_usb20_sleep_clk",
3096*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
3097*95eeb2ffSImran Shaik },
3098*95eeb2ffSImran Shaik },
3099*95eeb2ffSImran Shaik };
3100*95eeb2ffSImran Shaik
3101*95eeb2ffSImran Shaik static struct clk_branch gcc_usb30_prim_master_clk = {
3102*95eeb2ffSImran Shaik .halt_reg = 0x1b018,
3103*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT,
3104*95eeb2ffSImran Shaik .clkr = {
3105*95eeb2ffSImran Shaik .enable_reg = 0x1b018,
3106*95eeb2ffSImran Shaik .enable_mask = BIT(0),
3107*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
3108*95eeb2ffSImran Shaik .name = "gcc_usb30_prim_master_clk",
3109*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
3110*95eeb2ffSImran Shaik &gcc_usb30_prim_master_clk_src.clkr.hw,
3111*95eeb2ffSImran Shaik },
3112*95eeb2ffSImran Shaik .num_parents = 1,
3113*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
3114*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
3115*95eeb2ffSImran Shaik },
3116*95eeb2ffSImran Shaik },
3117*95eeb2ffSImran Shaik };
3118*95eeb2ffSImran Shaik
3119*95eeb2ffSImran Shaik static struct clk_branch gcc_usb30_prim_mock_utmi_clk = {
3120*95eeb2ffSImran Shaik .halt_reg = 0x1b024,
3121*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT,
3122*95eeb2ffSImran Shaik .clkr = {
3123*95eeb2ffSImran Shaik .enable_reg = 0x1b024,
3124*95eeb2ffSImran Shaik .enable_mask = BIT(0),
3125*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
3126*95eeb2ffSImran Shaik .name = "gcc_usb30_prim_mock_utmi_clk",
3127*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
3128*95eeb2ffSImran Shaik &gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr.hw,
3129*95eeb2ffSImran Shaik },
3130*95eeb2ffSImran Shaik .num_parents = 1,
3131*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
3132*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
3133*95eeb2ffSImran Shaik },
3134*95eeb2ffSImran Shaik },
3135*95eeb2ffSImran Shaik };
3136*95eeb2ffSImran Shaik
3137*95eeb2ffSImran Shaik static struct clk_branch gcc_usb30_prim_sleep_clk = {
3138*95eeb2ffSImran Shaik .halt_reg = 0x1b020,
3139*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT,
3140*95eeb2ffSImran Shaik .clkr = {
3141*95eeb2ffSImran Shaik .enable_reg = 0x1b020,
3142*95eeb2ffSImran Shaik .enable_mask = BIT(0),
3143*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
3144*95eeb2ffSImran Shaik .name = "gcc_usb30_prim_sleep_clk",
3145*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
3146*95eeb2ffSImran Shaik },
3147*95eeb2ffSImran Shaik },
3148*95eeb2ffSImran Shaik };
3149*95eeb2ffSImran Shaik
3150*95eeb2ffSImran Shaik static struct clk_branch gcc_usb3_prim_phy_aux_clk = {
3151*95eeb2ffSImran Shaik .halt_reg = 0x1b05c,
3152*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT,
3153*95eeb2ffSImran Shaik .clkr = {
3154*95eeb2ffSImran Shaik .enable_reg = 0x1b05c,
3155*95eeb2ffSImran Shaik .enable_mask = BIT(0),
3156*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
3157*95eeb2ffSImran Shaik .name = "gcc_usb3_prim_phy_aux_clk",
3158*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
3159*95eeb2ffSImran Shaik &gcc_usb3_prim_phy_aux_clk_src.clkr.hw,
3160*95eeb2ffSImran Shaik },
3161*95eeb2ffSImran Shaik .num_parents = 1,
3162*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
3163*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
3164*95eeb2ffSImran Shaik },
3165*95eeb2ffSImran Shaik },
3166*95eeb2ffSImran Shaik };
3167*95eeb2ffSImran Shaik
3168*95eeb2ffSImran Shaik static struct clk_branch gcc_usb3_prim_phy_com_aux_clk = {
3169*95eeb2ffSImran Shaik .halt_reg = 0x1b060,
3170*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT,
3171*95eeb2ffSImran Shaik .clkr = {
3172*95eeb2ffSImran Shaik .enable_reg = 0x1b060,
3173*95eeb2ffSImran Shaik .enable_mask = BIT(0),
3174*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
3175*95eeb2ffSImran Shaik .name = "gcc_usb3_prim_phy_com_aux_clk",
3176*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
3177*95eeb2ffSImran Shaik &gcc_usb3_prim_phy_aux_clk_src.clkr.hw,
3178*95eeb2ffSImran Shaik },
3179*95eeb2ffSImran Shaik .num_parents = 1,
3180*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
3181*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
3182*95eeb2ffSImran Shaik },
3183*95eeb2ffSImran Shaik },
3184*95eeb2ffSImran Shaik };
3185*95eeb2ffSImran Shaik
3186*95eeb2ffSImran Shaik static struct clk_branch gcc_usb3_prim_phy_pipe_clk = {
3187*95eeb2ffSImran Shaik .halt_reg = 0x1b064,
3188*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_DELAY,
3189*95eeb2ffSImran Shaik .hwcg_reg = 0x1b064,
3190*95eeb2ffSImran Shaik .hwcg_bit = 1,
3191*95eeb2ffSImran Shaik .clkr = {
3192*95eeb2ffSImran Shaik .enable_reg = 0x1b064,
3193*95eeb2ffSImran Shaik .enable_mask = BIT(0),
3194*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
3195*95eeb2ffSImran Shaik .name = "gcc_usb3_prim_phy_pipe_clk",
3196*95eeb2ffSImran Shaik .parent_hws = (const struct clk_hw*[]) {
3197*95eeb2ffSImran Shaik &gcc_usb3_prim_phy_pipe_clk_src.clkr.hw,
3198*95eeb2ffSImran Shaik },
3199*95eeb2ffSImran Shaik .num_parents = 1,
3200*95eeb2ffSImran Shaik .flags = CLK_SET_RATE_PARENT,
3201*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
3202*95eeb2ffSImran Shaik },
3203*95eeb2ffSImran Shaik },
3204*95eeb2ffSImran Shaik };
3205*95eeb2ffSImran Shaik
3206*95eeb2ffSImran Shaik static struct clk_branch gcc_usb_clkref_en = {
3207*95eeb2ffSImran Shaik .halt_reg = 0x97468,
3208*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_DELAY,
3209*95eeb2ffSImran Shaik .clkr = {
3210*95eeb2ffSImran Shaik .enable_reg = 0x97468,
3211*95eeb2ffSImran Shaik .enable_mask = BIT(0),
3212*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
3213*95eeb2ffSImran Shaik .name = "gcc_usb_clkref_en",
3214*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
3215*95eeb2ffSImran Shaik },
3216*95eeb2ffSImran Shaik },
3217*95eeb2ffSImran Shaik };
3218*95eeb2ffSImran Shaik
3219*95eeb2ffSImran Shaik static struct clk_branch gcc_video_axi0_clk = {
3220*95eeb2ffSImran Shaik .halt_reg = 0x34014,
3221*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
3222*95eeb2ffSImran Shaik .hwcg_reg = 0x34014,
3223*95eeb2ffSImran Shaik .hwcg_bit = 1,
3224*95eeb2ffSImran Shaik .clkr = {
3225*95eeb2ffSImran Shaik .enable_reg = 0x34014,
3226*95eeb2ffSImran Shaik .enable_mask = BIT(0),
3227*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
3228*95eeb2ffSImran Shaik .name = "gcc_video_axi0_clk",
3229*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
3230*95eeb2ffSImran Shaik },
3231*95eeb2ffSImran Shaik },
3232*95eeb2ffSImran Shaik };
3233*95eeb2ffSImran Shaik
3234*95eeb2ffSImran Shaik static struct clk_branch gcc_video_axi1_clk = {
3235*95eeb2ffSImran Shaik .halt_reg = 0x3401c,
3236*95eeb2ffSImran Shaik .halt_check = BRANCH_HALT_VOTED,
3237*95eeb2ffSImran Shaik .hwcg_reg = 0x3401c,
3238*95eeb2ffSImran Shaik .hwcg_bit = 1,
3239*95eeb2ffSImran Shaik .clkr = {
3240*95eeb2ffSImran Shaik .enable_reg = 0x3401c,
3241*95eeb2ffSImran Shaik .enable_mask = BIT(0),
3242*95eeb2ffSImran Shaik .hw.init = &(const struct clk_init_data) {
3243*95eeb2ffSImran Shaik .name = "gcc_video_axi1_clk",
3244*95eeb2ffSImran Shaik .ops = &clk_branch2_ops,
3245*95eeb2ffSImran Shaik },
3246*95eeb2ffSImran Shaik },
3247*95eeb2ffSImran Shaik };
3248*95eeb2ffSImran Shaik
3249*95eeb2ffSImran Shaik static struct gdsc gcc_emac0_gdsc = {
3250*95eeb2ffSImran Shaik .gdscr = 0xb6004,
3251*95eeb2ffSImran Shaik .en_rest_wait_val = 0x2,
3252*95eeb2ffSImran Shaik .en_few_wait_val = 0x2,
3253*95eeb2ffSImran Shaik .clk_dis_wait_val = 0xf,
3254*95eeb2ffSImran Shaik .pd = {
3255*95eeb2ffSImran Shaik .name = "gcc_emac0_gdsc",
3256*95eeb2ffSImran Shaik },
3257*95eeb2ffSImran Shaik .pwrsts = PWRSTS_OFF_ON,
3258*95eeb2ffSImran Shaik .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
3259*95eeb2ffSImran Shaik };
3260*95eeb2ffSImran Shaik
3261*95eeb2ffSImran Shaik static struct gdsc gcc_pcie_0_gdsc = {
3262*95eeb2ffSImran Shaik .gdscr = 0xa9004,
3263*95eeb2ffSImran Shaik .collapse_ctrl = 0x4b104,
3264*95eeb2ffSImran Shaik .collapse_mask = BIT(0),
3265*95eeb2ffSImran Shaik .en_rest_wait_val = 0x2,
3266*95eeb2ffSImran Shaik .en_few_wait_val = 0x2,
3267*95eeb2ffSImran Shaik .clk_dis_wait_val = 0xf,
3268*95eeb2ffSImran Shaik .pd = {
3269*95eeb2ffSImran Shaik .name = "gcc_pcie_0_gdsc",
3270*95eeb2ffSImran Shaik },
3271*95eeb2ffSImran Shaik .pwrsts = PWRSTS_OFF_ON,
3272*95eeb2ffSImran Shaik .flags = VOTABLE | RETAIN_FF_ENABLE | POLL_CFG_GDSCR,
3273*95eeb2ffSImran Shaik };
3274*95eeb2ffSImran Shaik
3275*95eeb2ffSImran Shaik static struct gdsc gcc_pcie_1_gdsc = {
3276*95eeb2ffSImran Shaik .gdscr = 0x77004,
3277*95eeb2ffSImran Shaik .collapse_ctrl = 0x4b104,
3278*95eeb2ffSImran Shaik .collapse_mask = BIT(1),
3279*95eeb2ffSImran Shaik .en_rest_wait_val = 0x2,
3280*95eeb2ffSImran Shaik .en_few_wait_val = 0x2,
3281*95eeb2ffSImran Shaik .clk_dis_wait_val = 0xf,
3282*95eeb2ffSImran Shaik .pd = {
3283*95eeb2ffSImran Shaik .name = "gcc_pcie_1_gdsc",
3284*95eeb2ffSImran Shaik },
3285*95eeb2ffSImran Shaik .pwrsts = PWRSTS_OFF_ON,
3286*95eeb2ffSImran Shaik .flags = VOTABLE | RETAIN_FF_ENABLE | POLL_CFG_GDSCR,
3287*95eeb2ffSImran Shaik };
3288*95eeb2ffSImran Shaik
3289*95eeb2ffSImran Shaik static struct gdsc gcc_ufs_phy_gdsc = {
3290*95eeb2ffSImran Shaik .gdscr = 0x83004,
3291*95eeb2ffSImran Shaik .en_rest_wait_val = 0x2,
3292*95eeb2ffSImran Shaik .en_few_wait_val = 0x2,
3293*95eeb2ffSImran Shaik .clk_dis_wait_val = 0xf,
3294*95eeb2ffSImran Shaik .pd = {
3295*95eeb2ffSImran Shaik .name = "gcc_ufs_phy_gdsc",
3296*95eeb2ffSImran Shaik },
3297*95eeb2ffSImran Shaik .pwrsts = PWRSTS_OFF_ON,
3298*95eeb2ffSImran Shaik .flags = RETAIN_FF_ENABLE | POLL_CFG_GDSCR,
3299*95eeb2ffSImran Shaik };
3300*95eeb2ffSImran Shaik
3301*95eeb2ffSImran Shaik static struct gdsc gcc_usb20_prim_gdsc = {
3302*95eeb2ffSImran Shaik .gdscr = 0x1c004,
3303*95eeb2ffSImran Shaik .en_rest_wait_val = 0x2,
3304*95eeb2ffSImran Shaik .en_few_wait_val = 0x2,
3305*95eeb2ffSImran Shaik .clk_dis_wait_val = 0xf,
3306*95eeb2ffSImran Shaik .pd = {
3307*95eeb2ffSImran Shaik .name = "gcc_usb20_prim_gdsc",
3308*95eeb2ffSImran Shaik },
3309*95eeb2ffSImran Shaik .pwrsts = PWRSTS_OFF_ON,
3310*95eeb2ffSImran Shaik .flags = RETAIN_FF_ENABLE | POLL_CFG_GDSCR,
3311*95eeb2ffSImran Shaik };
3312*95eeb2ffSImran Shaik
3313*95eeb2ffSImran Shaik static struct gdsc gcc_usb30_prim_gdsc = {
3314*95eeb2ffSImran Shaik .gdscr = 0x1b004,
3315*95eeb2ffSImran Shaik .en_rest_wait_val = 0x2,
3316*95eeb2ffSImran Shaik .en_few_wait_val = 0x2,
3317*95eeb2ffSImran Shaik .clk_dis_wait_val = 0xf,
3318*95eeb2ffSImran Shaik .pd = {
3319*95eeb2ffSImran Shaik .name = "gcc_usb30_prim_gdsc",
3320*95eeb2ffSImran Shaik },
3321*95eeb2ffSImran Shaik .pwrsts = PWRSTS_OFF_ON,
3322*95eeb2ffSImran Shaik .flags = RETAIN_FF_ENABLE | POLL_CFG_GDSCR,
3323*95eeb2ffSImran Shaik };
3324*95eeb2ffSImran Shaik
3325*95eeb2ffSImran Shaik static struct clk_regmap *gcc_qcs8300_clocks[] = {
3326*95eeb2ffSImran Shaik [GCC_AGGRE_NOC_QUPV3_AXI_CLK] = &gcc_aggre_noc_qupv3_axi_clk.clkr,
3327*95eeb2ffSImran Shaik [GCC_AGGRE_UFS_PHY_AXI_CLK] = &gcc_aggre_ufs_phy_axi_clk.clkr,
3328*95eeb2ffSImran Shaik [GCC_AGGRE_USB2_PRIM_AXI_CLK] = &gcc_aggre_usb2_prim_axi_clk.clkr,
3329*95eeb2ffSImran Shaik [GCC_AGGRE_USB3_PRIM_AXI_CLK] = &gcc_aggre_usb3_prim_axi_clk.clkr,
3330*95eeb2ffSImran Shaik [GCC_AHB2PHY0_CLK] = &gcc_ahb2phy0_clk.clkr,
3331*95eeb2ffSImran Shaik [GCC_AHB2PHY2_CLK] = &gcc_ahb2phy2_clk.clkr,
3332*95eeb2ffSImran Shaik [GCC_AHB2PHY3_CLK] = &gcc_ahb2phy3_clk.clkr,
3333*95eeb2ffSImran Shaik [GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
3334*95eeb2ffSImran Shaik [GCC_CAMERA_HF_AXI_CLK] = &gcc_camera_hf_axi_clk.clkr,
3335*95eeb2ffSImran Shaik [GCC_CAMERA_SF_AXI_CLK] = &gcc_camera_sf_axi_clk.clkr,
3336*95eeb2ffSImran Shaik [GCC_CAMERA_THROTTLE_XO_CLK] = &gcc_camera_throttle_xo_clk.clkr,
3337*95eeb2ffSImran Shaik [GCC_CFG_NOC_USB2_PRIM_AXI_CLK] = &gcc_cfg_noc_usb2_prim_axi_clk.clkr,
3338*95eeb2ffSImran Shaik [GCC_CFG_NOC_USB3_PRIM_AXI_CLK] = &gcc_cfg_noc_usb3_prim_axi_clk.clkr,
3339*95eeb2ffSImran Shaik [GCC_DDRSS_GPU_AXI_CLK] = &gcc_ddrss_gpu_axi_clk.clkr,
3340*95eeb2ffSImran Shaik [GCC_DISP_HF_AXI_CLK] = &gcc_disp_hf_axi_clk.clkr,
3341*95eeb2ffSImran Shaik [GCC_EDP_REF_CLKREF_EN] = &gcc_edp_ref_clkref_en.clkr,
3342*95eeb2ffSImran Shaik [GCC_EMAC0_AXI_CLK] = &gcc_emac0_axi_clk.clkr,
3343*95eeb2ffSImran Shaik [GCC_EMAC0_PHY_AUX_CLK] = &gcc_emac0_phy_aux_clk.clkr,
3344*95eeb2ffSImran Shaik [GCC_EMAC0_PHY_AUX_CLK_SRC] = &gcc_emac0_phy_aux_clk_src.clkr,
3345*95eeb2ffSImran Shaik [GCC_EMAC0_PTP_CLK] = &gcc_emac0_ptp_clk.clkr,
3346*95eeb2ffSImran Shaik [GCC_EMAC0_PTP_CLK_SRC] = &gcc_emac0_ptp_clk_src.clkr,
3347*95eeb2ffSImran Shaik [GCC_EMAC0_RGMII_CLK] = &gcc_emac0_rgmii_clk.clkr,
3348*95eeb2ffSImran Shaik [GCC_EMAC0_RGMII_CLK_SRC] = &gcc_emac0_rgmii_clk_src.clkr,
3349*95eeb2ffSImran Shaik [GCC_EMAC0_SLV_AHB_CLK] = &gcc_emac0_slv_ahb_clk.clkr,
3350*95eeb2ffSImran Shaik [GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
3351*95eeb2ffSImran Shaik [GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr,
3352*95eeb2ffSImran Shaik [GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
3353*95eeb2ffSImran Shaik [GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr,
3354*95eeb2ffSImran Shaik [GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
3355*95eeb2ffSImran Shaik [GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr,
3356*95eeb2ffSImran Shaik [GCC_GP4_CLK] = &gcc_gp4_clk.clkr,
3357*95eeb2ffSImran Shaik [GCC_GP4_CLK_SRC] = &gcc_gp4_clk_src.clkr,
3358*95eeb2ffSImran Shaik [GCC_GP5_CLK] = &gcc_gp5_clk.clkr,
3359*95eeb2ffSImran Shaik [GCC_GP5_CLK_SRC] = &gcc_gp5_clk_src.clkr,
3360*95eeb2ffSImran Shaik [GCC_GPLL0] = &gcc_gpll0.clkr,
3361*95eeb2ffSImran Shaik [GCC_GPLL0_OUT_EVEN] = &gcc_gpll0_out_even.clkr,
3362*95eeb2ffSImran Shaik [GCC_GPLL1] = &gcc_gpll1.clkr,
3363*95eeb2ffSImran Shaik [GCC_GPLL4] = &gcc_gpll4.clkr,
3364*95eeb2ffSImran Shaik [GCC_GPLL7] = &gcc_gpll7.clkr,
3365*95eeb2ffSImran Shaik [GCC_GPLL9] = &gcc_gpll9.clkr,
3366*95eeb2ffSImran Shaik [GCC_GPU_GPLL0_CLK_SRC] = &gcc_gpu_gpll0_clk_src.clkr,
3367*95eeb2ffSImran Shaik [GCC_GPU_GPLL0_DIV_CLK_SRC] = &gcc_gpu_gpll0_div_clk_src.clkr,
3368*95eeb2ffSImran Shaik [GCC_GPU_MEMNOC_GFX_CENTER_PIPELINE_CLK] = &gcc_gpu_memnoc_gfx_center_pipeline_clk.clkr,
3369*95eeb2ffSImran Shaik [GCC_GPU_MEMNOC_GFX_CLK] = &gcc_gpu_memnoc_gfx_clk.clkr,
3370*95eeb2ffSImran Shaik [GCC_GPU_SNOC_DVM_GFX_CLK] = &gcc_gpu_snoc_dvm_gfx_clk.clkr,
3371*95eeb2ffSImran Shaik [GCC_GPU_TCU_THROTTLE_AHB_CLK] = &gcc_gpu_tcu_throttle_ahb_clk.clkr,
3372*95eeb2ffSImran Shaik [GCC_GPU_TCU_THROTTLE_CLK] = &gcc_gpu_tcu_throttle_clk.clkr,
3373*95eeb2ffSImran Shaik [GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,
3374*95eeb2ffSImran Shaik [GCC_PCIE_0_AUX_CLK_SRC] = &gcc_pcie_0_aux_clk_src.clkr,
3375*95eeb2ffSImran Shaik [GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr,
3376*95eeb2ffSImran Shaik [GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr,
3377*95eeb2ffSImran Shaik [GCC_PCIE_0_PHY_AUX_CLK] = &gcc_pcie_0_phy_aux_clk.clkr,
3378*95eeb2ffSImran Shaik [GCC_PCIE_0_PHY_AUX_CLK_SRC] = &gcc_pcie_0_phy_aux_clk_src.clkr,
3379*95eeb2ffSImran Shaik [GCC_PCIE_0_PHY_RCHNG_CLK] = &gcc_pcie_0_phy_rchng_clk.clkr,
3380*95eeb2ffSImran Shaik [GCC_PCIE_0_PHY_RCHNG_CLK_SRC] = &gcc_pcie_0_phy_rchng_clk_src.clkr,
3381*95eeb2ffSImran Shaik [GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,
3382*95eeb2ffSImran Shaik [GCC_PCIE_0_PIPE_CLK_SRC] = &gcc_pcie_0_pipe_clk_src.clkr,
3383*95eeb2ffSImran Shaik [GCC_PCIE_0_PIPE_DIV_CLK_SRC] = &gcc_pcie_0_pipe_div_clk_src.clkr,
3384*95eeb2ffSImran Shaik [GCC_PCIE_0_PIPEDIV2_CLK] = &gcc_pcie_0_pipediv2_clk.clkr,
3385*95eeb2ffSImran Shaik [GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr,
3386*95eeb2ffSImran Shaik [GCC_PCIE_0_SLV_Q2A_AXI_CLK] = &gcc_pcie_0_slv_q2a_axi_clk.clkr,
3387*95eeb2ffSImran Shaik [GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,
3388*95eeb2ffSImran Shaik [GCC_PCIE_1_AUX_CLK_SRC] = &gcc_pcie_1_aux_clk_src.clkr,
3389*95eeb2ffSImran Shaik [GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr,
3390*95eeb2ffSImran Shaik [GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr,
3391*95eeb2ffSImran Shaik [GCC_PCIE_1_PHY_AUX_CLK] = &gcc_pcie_1_phy_aux_clk.clkr,
3392*95eeb2ffSImran Shaik [GCC_PCIE_1_PHY_AUX_CLK_SRC] = &gcc_pcie_1_phy_aux_clk_src.clkr,
3393*95eeb2ffSImran Shaik [GCC_PCIE_1_PHY_RCHNG_CLK] = &gcc_pcie_1_phy_rchng_clk.clkr,
3394*95eeb2ffSImran Shaik [GCC_PCIE_1_PHY_RCHNG_CLK_SRC] = &gcc_pcie_1_phy_rchng_clk_src.clkr,
3395*95eeb2ffSImran Shaik [GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,
3396*95eeb2ffSImran Shaik [GCC_PCIE_1_PIPE_CLK_SRC] = &gcc_pcie_1_pipe_clk_src.clkr,
3397*95eeb2ffSImran Shaik [GCC_PCIE_1_PIPE_DIV_CLK_SRC] = &gcc_pcie_1_pipe_div_clk_src.clkr,
3398*95eeb2ffSImran Shaik [GCC_PCIE_1_PIPEDIV2_CLK] = &gcc_pcie_1_pipediv2_clk.clkr,
3399*95eeb2ffSImran Shaik [GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr,
3400*95eeb2ffSImran Shaik [GCC_PCIE_1_SLV_Q2A_AXI_CLK] = &gcc_pcie_1_slv_q2a_axi_clk.clkr,
3401*95eeb2ffSImran Shaik [GCC_PCIE_CLKREF_EN] = &gcc_pcie_clkref_en.clkr,
3402*95eeb2ffSImran Shaik [GCC_PCIE_THROTTLE_CFG_CLK] = &gcc_pcie_throttle_cfg_clk.clkr,
3403*95eeb2ffSImran Shaik [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
3404*95eeb2ffSImran Shaik [GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr,
3405*95eeb2ffSImran Shaik [GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
3406*95eeb2ffSImran Shaik [GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr,
3407*95eeb2ffSImran Shaik [GCC_QMIP_CAMERA_NRT_AHB_CLK] = &gcc_qmip_camera_nrt_ahb_clk.clkr,
3408*95eeb2ffSImran Shaik [GCC_QMIP_CAMERA_RT_AHB_CLK] = &gcc_qmip_camera_rt_ahb_clk.clkr,
3409*95eeb2ffSImran Shaik [GCC_QMIP_DISP_AHB_CLK] = &gcc_qmip_disp_ahb_clk.clkr,
3410*95eeb2ffSImran Shaik [GCC_QMIP_DISP_ROT_AHB_CLK] = &gcc_qmip_disp_rot_ahb_clk.clkr,
3411*95eeb2ffSImran Shaik [GCC_QMIP_VIDEO_CVP_AHB_CLK] = &gcc_qmip_video_cvp_ahb_clk.clkr,
3412*95eeb2ffSImran Shaik [GCC_QMIP_VIDEO_VCODEC_AHB_CLK] = &gcc_qmip_video_vcodec_ahb_clk.clkr,
3413*95eeb2ffSImran Shaik [GCC_QMIP_VIDEO_VCPU_AHB_CLK] = &gcc_qmip_video_vcpu_ahb_clk.clkr,
3414*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP0_CORE_2X_CLK] = &gcc_qupv3_wrap0_core_2x_clk.clkr,
3415*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP0_CORE_CLK] = &gcc_qupv3_wrap0_core_clk.clkr,
3416*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP0_S0_CLK] = &gcc_qupv3_wrap0_s0_clk.clkr,
3417*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP0_S0_CLK_SRC] = &gcc_qupv3_wrap0_s0_clk_src.clkr,
3418*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP0_S1_CLK] = &gcc_qupv3_wrap0_s1_clk.clkr,
3419*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP0_S1_CLK_SRC] = &gcc_qupv3_wrap0_s1_clk_src.clkr,
3420*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP0_S2_CLK] = &gcc_qupv3_wrap0_s2_clk.clkr,
3421*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP0_S2_CLK_SRC] = &gcc_qupv3_wrap0_s2_clk_src.clkr,
3422*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP0_S3_CLK] = &gcc_qupv3_wrap0_s3_clk.clkr,
3423*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP0_S3_CLK_SRC] = &gcc_qupv3_wrap0_s3_clk_src.clkr,
3424*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP0_S4_CLK] = &gcc_qupv3_wrap0_s4_clk.clkr,
3425*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP0_S4_CLK_SRC] = &gcc_qupv3_wrap0_s4_clk_src.clkr,
3426*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP0_S5_CLK] = &gcc_qupv3_wrap0_s5_clk.clkr,
3427*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP0_S5_CLK_SRC] = &gcc_qupv3_wrap0_s5_clk_src.clkr,
3428*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP0_S6_CLK] = &gcc_qupv3_wrap0_s6_clk.clkr,
3429*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP0_S6_CLK_SRC] = &gcc_qupv3_wrap0_s6_clk_src.clkr,
3430*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP0_S7_CLK] = &gcc_qupv3_wrap0_s7_clk.clkr,
3431*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP0_S7_CLK_SRC] = &gcc_qupv3_wrap0_s7_clk_src.clkr,
3432*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP1_CORE_2X_CLK] = &gcc_qupv3_wrap1_core_2x_clk.clkr,
3433*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP1_CORE_CLK] = &gcc_qupv3_wrap1_core_clk.clkr,
3434*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP1_S0_CLK] = &gcc_qupv3_wrap1_s0_clk.clkr,
3435*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP1_S0_CLK_SRC] = &gcc_qupv3_wrap1_s0_clk_src.clkr,
3436*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP1_S1_CLK] = &gcc_qupv3_wrap1_s1_clk.clkr,
3437*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP1_S1_CLK_SRC] = &gcc_qupv3_wrap1_s1_clk_src.clkr,
3438*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP1_S2_CLK] = &gcc_qupv3_wrap1_s2_clk.clkr,
3439*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP1_S2_CLK_SRC] = &gcc_qupv3_wrap1_s2_clk_src.clkr,
3440*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP1_S3_CLK] = &gcc_qupv3_wrap1_s3_clk.clkr,
3441*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP1_S3_CLK_SRC] = &gcc_qupv3_wrap1_s3_clk_src.clkr,
3442*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP1_S4_CLK] = &gcc_qupv3_wrap1_s4_clk.clkr,
3443*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP1_S4_CLK_SRC] = &gcc_qupv3_wrap1_s4_clk_src.clkr,
3444*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP1_S5_CLK] = &gcc_qupv3_wrap1_s5_clk.clkr,
3445*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP1_S5_CLK_SRC] = &gcc_qupv3_wrap1_s5_clk_src.clkr,
3446*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP1_S6_CLK] = &gcc_qupv3_wrap1_s6_clk.clkr,
3447*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP1_S6_CLK_SRC] = &gcc_qupv3_wrap1_s6_clk_src.clkr,
3448*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP1_S7_CLK] = &gcc_qupv3_wrap1_s7_clk.clkr,
3449*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP1_S7_CLK_SRC] = &gcc_qupv3_wrap1_s7_clk_src.clkr,
3450*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP3_CORE_2X_CLK] = &gcc_qupv3_wrap3_core_2x_clk.clkr,
3451*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP3_CORE_CLK] = &gcc_qupv3_wrap3_core_clk.clkr,
3452*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP3_QSPI_CLK] = &gcc_qupv3_wrap3_qspi_clk.clkr,
3453*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP3_S0_CLK] = &gcc_qupv3_wrap3_s0_clk.clkr,
3454*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP3_S0_CLK_SRC] = &gcc_qupv3_wrap3_s0_clk_src.clkr,
3455*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP3_S0_DIV_CLK_SRC] = &gcc_qupv3_wrap3_s0_div_clk_src.clkr,
3456*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP_0_M_AHB_CLK] = &gcc_qupv3_wrap_0_m_ahb_clk.clkr,
3457*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP_0_S_AHB_CLK] = &gcc_qupv3_wrap_0_s_ahb_clk.clkr,
3458*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP_1_M_AHB_CLK] = &gcc_qupv3_wrap_1_m_ahb_clk.clkr,
3459*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP_1_S_AHB_CLK] = &gcc_qupv3_wrap_1_s_ahb_clk.clkr,
3460*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP_3_M_AHB_CLK] = &gcc_qupv3_wrap_3_m_ahb_clk.clkr,
3461*95eeb2ffSImran Shaik [GCC_QUPV3_WRAP_3_S_AHB_CLK] = &gcc_qupv3_wrap_3_s_ahb_clk.clkr,
3462*95eeb2ffSImran Shaik [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
3463*95eeb2ffSImran Shaik [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
3464*95eeb2ffSImran Shaik [GCC_SDCC1_APPS_CLK_SRC] = &gcc_sdcc1_apps_clk_src.clkr,
3465*95eeb2ffSImran Shaik [GCC_SDCC1_ICE_CORE_CLK] = &gcc_sdcc1_ice_core_clk.clkr,
3466*95eeb2ffSImran Shaik [GCC_SDCC1_ICE_CORE_CLK_SRC] = &gcc_sdcc1_ice_core_clk_src.clkr,
3467*95eeb2ffSImran Shaik [GCC_SGMI_CLKREF_EN] = &gcc_sgmi_clkref_en.clkr,
3468*95eeb2ffSImran Shaik [GCC_UFS_PHY_AHB_CLK] = &gcc_ufs_phy_ahb_clk.clkr,
3469*95eeb2ffSImran Shaik [GCC_UFS_PHY_AXI_CLK] = &gcc_ufs_phy_axi_clk.clkr,
3470*95eeb2ffSImran Shaik [GCC_UFS_PHY_AXI_CLK_SRC] = &gcc_ufs_phy_axi_clk_src.clkr,
3471*95eeb2ffSImran Shaik [GCC_UFS_PHY_ICE_CORE_CLK] = &gcc_ufs_phy_ice_core_clk.clkr,
3472*95eeb2ffSImran Shaik [GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &gcc_ufs_phy_ice_core_clk_src.clkr,
3473*95eeb2ffSImran Shaik [GCC_UFS_PHY_PHY_AUX_CLK] = &gcc_ufs_phy_phy_aux_clk.clkr,
3474*95eeb2ffSImran Shaik [GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &gcc_ufs_phy_phy_aux_clk_src.clkr,
3475*95eeb2ffSImran Shaik [GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &gcc_ufs_phy_rx_symbol_0_clk.clkr,
3476*95eeb2ffSImran Shaik [GCC_UFS_PHY_RX_SYMBOL_0_CLK_SRC] = &gcc_ufs_phy_rx_symbol_0_clk_src.clkr,
3477*95eeb2ffSImran Shaik [GCC_UFS_PHY_RX_SYMBOL_1_CLK] = &gcc_ufs_phy_rx_symbol_1_clk.clkr,
3478*95eeb2ffSImran Shaik [GCC_UFS_PHY_RX_SYMBOL_1_CLK_SRC] = &gcc_ufs_phy_rx_symbol_1_clk_src.clkr,
3479*95eeb2ffSImran Shaik [GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &gcc_ufs_phy_tx_symbol_0_clk.clkr,
3480*95eeb2ffSImran Shaik [GCC_UFS_PHY_TX_SYMBOL_0_CLK_SRC] = &gcc_ufs_phy_tx_symbol_0_clk_src.clkr,
3481*95eeb2ffSImran Shaik [GCC_UFS_PHY_UNIPRO_CORE_CLK] = &gcc_ufs_phy_unipro_core_clk.clkr,
3482*95eeb2ffSImran Shaik [GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC] = &gcc_ufs_phy_unipro_core_clk_src.clkr,
3483*95eeb2ffSImran Shaik [GCC_USB20_MASTER_CLK] = &gcc_usb20_master_clk.clkr,
3484*95eeb2ffSImran Shaik [GCC_USB20_MASTER_CLK_SRC] = &gcc_usb20_master_clk_src.clkr,
3485*95eeb2ffSImran Shaik [GCC_USB20_MOCK_UTMI_CLK] = &gcc_usb20_mock_utmi_clk.clkr,
3486*95eeb2ffSImran Shaik [GCC_USB20_MOCK_UTMI_CLK_SRC] = &gcc_usb20_mock_utmi_clk_src.clkr,
3487*95eeb2ffSImran Shaik [GCC_USB20_MOCK_UTMI_POSTDIV_CLK_SRC] = &gcc_usb20_mock_utmi_postdiv_clk_src.clkr,
3488*95eeb2ffSImran Shaik [GCC_USB20_SLEEP_CLK] = &gcc_usb20_sleep_clk.clkr,
3489*95eeb2ffSImran Shaik [GCC_USB30_PRIM_MASTER_CLK] = &gcc_usb30_prim_master_clk.clkr,
3490*95eeb2ffSImran Shaik [GCC_USB30_PRIM_MASTER_CLK_SRC] = &gcc_usb30_prim_master_clk_src.clkr,
3491*95eeb2ffSImran Shaik [GCC_USB30_PRIM_MOCK_UTMI_CLK] = &gcc_usb30_prim_mock_utmi_clk.clkr,
3492*95eeb2ffSImran Shaik [GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC] = &gcc_usb30_prim_mock_utmi_clk_src.clkr,
3493*95eeb2ffSImran Shaik [GCC_USB30_PRIM_MOCK_UTMI_POSTDIV_CLK_SRC] = &gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr,
3494*95eeb2ffSImran Shaik [GCC_USB30_PRIM_SLEEP_CLK] = &gcc_usb30_prim_sleep_clk.clkr,
3495*95eeb2ffSImran Shaik [GCC_USB3_PRIM_PHY_AUX_CLK] = &gcc_usb3_prim_phy_aux_clk.clkr,
3496*95eeb2ffSImran Shaik [GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &gcc_usb3_prim_phy_aux_clk_src.clkr,
3497*95eeb2ffSImran Shaik [GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &gcc_usb3_prim_phy_com_aux_clk.clkr,
3498*95eeb2ffSImran Shaik [GCC_USB3_PRIM_PHY_PIPE_CLK] = &gcc_usb3_prim_phy_pipe_clk.clkr,
3499*95eeb2ffSImran Shaik [GCC_USB3_PRIM_PHY_PIPE_CLK_SRC] = &gcc_usb3_prim_phy_pipe_clk_src.clkr,
3500*95eeb2ffSImran Shaik [GCC_USB_CLKREF_EN] = &gcc_usb_clkref_en.clkr,
3501*95eeb2ffSImran Shaik [GCC_VIDEO_AXI0_CLK] = &gcc_video_axi0_clk.clkr,
3502*95eeb2ffSImran Shaik [GCC_VIDEO_AXI1_CLK] = &gcc_video_axi1_clk.clkr,
3503*95eeb2ffSImran Shaik };
3504*95eeb2ffSImran Shaik
3505*95eeb2ffSImran Shaik static struct gdsc *gcc_qcs8300_gdscs[] = {
3506*95eeb2ffSImran Shaik [GCC_EMAC0_GDSC] = &gcc_emac0_gdsc,
3507*95eeb2ffSImran Shaik [GCC_PCIE_0_GDSC] = &gcc_pcie_0_gdsc,
3508*95eeb2ffSImran Shaik [GCC_PCIE_1_GDSC] = &gcc_pcie_1_gdsc,
3509*95eeb2ffSImran Shaik [GCC_UFS_PHY_GDSC] = &gcc_ufs_phy_gdsc,
3510*95eeb2ffSImran Shaik [GCC_USB20_PRIM_GDSC] = &gcc_usb20_prim_gdsc,
3511*95eeb2ffSImran Shaik [GCC_USB30_PRIM_GDSC] = &gcc_usb30_prim_gdsc,
3512*95eeb2ffSImran Shaik };
3513*95eeb2ffSImran Shaik
3514*95eeb2ffSImran Shaik static const struct qcom_reset_map gcc_qcs8300_resets[] = {
3515*95eeb2ffSImran Shaik [GCC_EMAC0_BCR] = { 0xb6000 },
3516*95eeb2ffSImran Shaik [GCC_PCIE_0_BCR] = { 0xa9000 },
3517*95eeb2ffSImran Shaik [GCC_PCIE_0_LINK_DOWN_BCR] = { 0xbf000 },
3518*95eeb2ffSImran Shaik [GCC_PCIE_0_NOCSR_COM_PHY_BCR] = { 0xbf008 },
3519*95eeb2ffSImran Shaik [GCC_PCIE_0_PHY_BCR] = { 0xa9144 },
3520*95eeb2ffSImran Shaik [GCC_PCIE_0_PHY_NOCSR_COM_PHY_BCR] = { 0xbf00c },
3521*95eeb2ffSImran Shaik [GCC_PCIE_1_BCR] = { 0x77000 },
3522*95eeb2ffSImran Shaik [GCC_PCIE_1_LINK_DOWN_BCR] = { 0xae084 },
3523*95eeb2ffSImran Shaik [GCC_PCIE_1_NOCSR_COM_PHY_BCR] = { 0xae090 },
3524*95eeb2ffSImran Shaik [GCC_PCIE_1_PHY_BCR] = { 0xae08c },
3525*95eeb2ffSImran Shaik [GCC_PCIE_1_PHY_NOCSR_COM_PHY_BCR] = { 0xae094 },
3526*95eeb2ffSImran Shaik [GCC_SDCC1_BCR] = { 0x20000 },
3527*95eeb2ffSImran Shaik [GCC_UFS_PHY_BCR] = { 0x83000 },
3528*95eeb2ffSImran Shaik [GCC_USB20_PRIM_BCR] = { 0x1c000 },
3529*95eeb2ffSImran Shaik [GCC_USB2_PHY_PRIM_BCR] = { 0x5c01c },
3530*95eeb2ffSImran Shaik [GCC_USB2_PHY_SEC_BCR] = { 0x5c020 },
3531*95eeb2ffSImran Shaik [GCC_USB30_PRIM_BCR] = { 0x1b000 },
3532*95eeb2ffSImran Shaik [GCC_USB3_DP_PHY_PRIM_BCR] = { 0x5c008 },
3533*95eeb2ffSImran Shaik [GCC_USB3_PHY_PRIM_BCR] = { 0x5c000 },
3534*95eeb2ffSImran Shaik [GCC_USB3_PHY_TERT_BCR] = { 0x5c024 },
3535*95eeb2ffSImran Shaik [GCC_USB3_UNIPHY_MP0_BCR] = { 0x5c00c },
3536*95eeb2ffSImran Shaik [GCC_USB3_UNIPHY_MP1_BCR] = { 0x5c010 },
3537*95eeb2ffSImran Shaik [GCC_USB3PHY_PHY_PRIM_BCR] = { 0x5c004 },
3538*95eeb2ffSImran Shaik [GCC_USB3UNIPHY_PHY_MP0_BCR] = { 0x5c014 },
3539*95eeb2ffSImran Shaik [GCC_USB3UNIPHY_PHY_MP1_BCR] = { 0x5c018 },
3540*95eeb2ffSImran Shaik [GCC_USB_PHY_CFG_AHB2PHY_BCR] = { 0x76000 },
3541*95eeb2ffSImran Shaik [GCC_VIDEO_AXI0_CLK_ARES] = { 0x34014, 2 },
3542*95eeb2ffSImran Shaik [GCC_VIDEO_AXI1_CLK_ARES] = { 0x3401c, 2 },
3543*95eeb2ffSImran Shaik [GCC_VIDEO_BCR] = { 0x34000 },
3544*95eeb2ffSImran Shaik };
3545*95eeb2ffSImran Shaik
3546*95eeb2ffSImran Shaik static const struct clk_rcg_dfs_data gcc_dfs_clocks[] = {
3547*95eeb2ffSImran Shaik DEFINE_RCG_DFS(gcc_qupv3_wrap0_s0_clk_src),
3548*95eeb2ffSImran Shaik DEFINE_RCG_DFS(gcc_qupv3_wrap0_s1_clk_src),
3549*95eeb2ffSImran Shaik DEFINE_RCG_DFS(gcc_qupv3_wrap0_s2_clk_src),
3550*95eeb2ffSImran Shaik DEFINE_RCG_DFS(gcc_qupv3_wrap0_s3_clk_src),
3551*95eeb2ffSImran Shaik DEFINE_RCG_DFS(gcc_qupv3_wrap0_s4_clk_src),
3552*95eeb2ffSImran Shaik DEFINE_RCG_DFS(gcc_qupv3_wrap0_s5_clk_src),
3553*95eeb2ffSImran Shaik DEFINE_RCG_DFS(gcc_qupv3_wrap0_s6_clk_src),
3554*95eeb2ffSImran Shaik DEFINE_RCG_DFS(gcc_qupv3_wrap0_s7_clk_src),
3555*95eeb2ffSImran Shaik DEFINE_RCG_DFS(gcc_qupv3_wrap1_s0_clk_src),
3556*95eeb2ffSImran Shaik DEFINE_RCG_DFS(gcc_qupv3_wrap1_s1_clk_src),
3557*95eeb2ffSImran Shaik DEFINE_RCG_DFS(gcc_qupv3_wrap1_s2_clk_src),
3558*95eeb2ffSImran Shaik DEFINE_RCG_DFS(gcc_qupv3_wrap1_s3_clk_src),
3559*95eeb2ffSImran Shaik DEFINE_RCG_DFS(gcc_qupv3_wrap1_s4_clk_src),
3560*95eeb2ffSImran Shaik DEFINE_RCG_DFS(gcc_qupv3_wrap1_s5_clk_src),
3561*95eeb2ffSImran Shaik DEFINE_RCG_DFS(gcc_qupv3_wrap1_s6_clk_src),
3562*95eeb2ffSImran Shaik DEFINE_RCG_DFS(gcc_qupv3_wrap1_s7_clk_src),
3563*95eeb2ffSImran Shaik DEFINE_RCG_DFS(gcc_qupv3_wrap3_s0_clk_src),
3564*95eeb2ffSImran Shaik };
3565*95eeb2ffSImran Shaik
3566*95eeb2ffSImran Shaik static const struct regmap_config gcc_qcs8300_regmap_config = {
3567*95eeb2ffSImran Shaik .reg_bits = 32,
3568*95eeb2ffSImran Shaik .reg_stride = 4,
3569*95eeb2ffSImran Shaik .val_bits = 32,
3570*95eeb2ffSImran Shaik .max_register = 0x472cffc,
3571*95eeb2ffSImran Shaik .fast_io = true,
3572*95eeb2ffSImran Shaik };
3573*95eeb2ffSImran Shaik
3574*95eeb2ffSImran Shaik static const struct qcom_cc_desc gcc_qcs8300_desc = {
3575*95eeb2ffSImran Shaik .config = &gcc_qcs8300_regmap_config,
3576*95eeb2ffSImran Shaik .clks = gcc_qcs8300_clocks,
3577*95eeb2ffSImran Shaik .num_clks = ARRAY_SIZE(gcc_qcs8300_clocks),
3578*95eeb2ffSImran Shaik .resets = gcc_qcs8300_resets,
3579*95eeb2ffSImran Shaik .num_resets = ARRAY_SIZE(gcc_qcs8300_resets),
3580*95eeb2ffSImran Shaik .gdscs = gcc_qcs8300_gdscs,
3581*95eeb2ffSImran Shaik .num_gdscs = ARRAY_SIZE(gcc_qcs8300_gdscs),
3582*95eeb2ffSImran Shaik };
3583*95eeb2ffSImran Shaik
3584*95eeb2ffSImran Shaik static const struct of_device_id gcc_qcs8300_match_table[] = {
3585*95eeb2ffSImran Shaik { .compatible = "qcom,qcs8300-gcc" },
3586*95eeb2ffSImran Shaik { }
3587*95eeb2ffSImran Shaik };
3588*95eeb2ffSImran Shaik MODULE_DEVICE_TABLE(of, gcc_qcs8300_match_table);
3589*95eeb2ffSImran Shaik
gcc_qcs8300_probe(struct platform_device * pdev)3590*95eeb2ffSImran Shaik static int gcc_qcs8300_probe(struct platform_device *pdev)
3591*95eeb2ffSImran Shaik {
3592*95eeb2ffSImran Shaik struct regmap *regmap;
3593*95eeb2ffSImran Shaik int ret;
3594*95eeb2ffSImran Shaik
3595*95eeb2ffSImran Shaik regmap = qcom_cc_map(pdev, &gcc_qcs8300_desc);
3596*95eeb2ffSImran Shaik if (IS_ERR(regmap))
3597*95eeb2ffSImran Shaik return PTR_ERR(regmap);
3598*95eeb2ffSImran Shaik
3599*95eeb2ffSImran Shaik ret = qcom_cc_register_rcg_dfs(regmap, gcc_dfs_clocks,
3600*95eeb2ffSImran Shaik ARRAY_SIZE(gcc_dfs_clocks));
3601*95eeb2ffSImran Shaik if (ret)
3602*95eeb2ffSImran Shaik return ret;
3603*95eeb2ffSImran Shaik
3604*95eeb2ffSImran Shaik /* Keep some clocks always enabled */
3605*95eeb2ffSImran Shaik qcom_branch_set_clk_en(regmap, 0x32004); /* GCC_CAMERA_AHB_CLK */
3606*95eeb2ffSImran Shaik qcom_branch_set_clk_en(regmap, 0x32020); /* GCC_CAMERA_XO_CLK */
3607*95eeb2ffSImran Shaik qcom_branch_set_clk_en(regmap, 0x33004); /* GCC_DISP_AHB_CLK */
3608*95eeb2ffSImran Shaik qcom_branch_set_clk_en(regmap, 0x33018); /* GCC_DISP_XO_CLK */
3609*95eeb2ffSImran Shaik qcom_branch_set_clk_en(regmap, 0x7d004); /* GCC_GPU_CFG_AHB_CLK */
3610*95eeb2ffSImran Shaik qcom_branch_set_clk_en(regmap, 0x34004); /* GCC_VIDEO_AHB_CLK */
3611*95eeb2ffSImran Shaik qcom_branch_set_clk_en(regmap, 0x34024); /* GCC_VIDEO_XO_CLK */
3612*95eeb2ffSImran Shaik
3613*95eeb2ffSImran Shaik /* FORCE_MEM_CORE_ON for ufs phy ice core clocks */
3614*95eeb2ffSImran Shaik qcom_branch_set_force_mem_core(regmap, gcc_ufs_phy_ice_core_clk, true);
3615*95eeb2ffSImran Shaik
3616*95eeb2ffSImran Shaik return qcom_cc_really_probe(&pdev->dev, &gcc_qcs8300_desc, regmap);
3617*95eeb2ffSImran Shaik }
3618*95eeb2ffSImran Shaik
3619*95eeb2ffSImran Shaik static struct platform_driver gcc_qcs8300_driver = {
3620*95eeb2ffSImran Shaik .probe = gcc_qcs8300_probe,
3621*95eeb2ffSImran Shaik .driver = {
3622*95eeb2ffSImran Shaik .name = "gcc-qcs8300",
3623*95eeb2ffSImran Shaik .of_match_table = gcc_qcs8300_match_table,
3624*95eeb2ffSImran Shaik },
3625*95eeb2ffSImran Shaik };
3626*95eeb2ffSImran Shaik
gcc_qcs8300_init(void)3627*95eeb2ffSImran Shaik static int __init gcc_qcs8300_init(void)
3628*95eeb2ffSImran Shaik {
3629*95eeb2ffSImran Shaik return platform_driver_register(&gcc_qcs8300_driver);
3630*95eeb2ffSImran Shaik }
3631*95eeb2ffSImran Shaik subsys_initcall(gcc_qcs8300_init);
3632*95eeb2ffSImran Shaik
gcc_qcs8300_exit(void)3633*95eeb2ffSImran Shaik static void __exit gcc_qcs8300_exit(void)
3634*95eeb2ffSImran Shaik {
3635*95eeb2ffSImran Shaik platform_driver_unregister(&gcc_qcs8300_driver);
3636*95eeb2ffSImran Shaik }
3637*95eeb2ffSImran Shaik module_exit(gcc_qcs8300_exit);
3638*95eeb2ffSImran Shaik
3639*95eeb2ffSImran Shaik MODULE_DESCRIPTION("QTI GCC QCS8300 Driver");
3640*95eeb2ffSImran Shaik MODULE_LICENSE("GPL");
3641