Merge tag 'trace-v5.11-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt...
[linux/fpc-iii.git] / drivers / clk / qcom / gcc-ipq6018.c
blob3f9c2f61a5d93495f77659b6d42e68d2aa05ff27
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3 * Copyright (c) 2018, The Linux Foundation. All rights reserved.
4 */
6 #include <linux/kernel.h>
7 #include <linux/err.h>
8 #include <linux/platform_device.h>
9 #include <linux/module.h>
10 #include <linux/of.h>
11 #include <linux/of_device.h>
12 #include <linux/clk-provider.h>
13 #include <linux/regmap.h>
15 #include <linux/reset-controller.h>
16 #include <dt-bindings/clock/qcom,gcc-ipq6018.h>
17 #include <dt-bindings/reset/qcom,gcc-ipq6018.h>
19 #include "common.h"
20 #include "clk-regmap.h"
21 #include "clk-pll.h"
22 #include "clk-rcg.h"
23 #include "clk-branch.h"
24 #include "clk-alpha-pll.h"
25 #include "clk-regmap-divider.h"
26 #include "clk-regmap-mux.h"
27 #include "reset.h"
29 #define F(f, s, h, m, n) { (f), (s), (2 * (h) - 1), (m), (n) }
31 enum {
32 P_XO,
33 P_BIAS_PLL,
34 P_UNIPHY0_RX,
35 P_UNIPHY0_TX,
36 P_UNIPHY1_RX,
37 P_BIAS_PLL_NSS_NOC,
38 P_UNIPHY1_TX,
39 P_PCIE20_PHY0_PIPE,
40 P_USB3PHY_0_PIPE,
41 P_GPLL0,
42 P_GPLL0_DIV2,
43 P_GPLL2,
44 P_GPLL4,
45 P_GPLL6,
46 P_SLEEP_CLK,
47 P_UBI32_PLL,
48 P_NSS_CRYPTO_PLL,
49 P_PI_SLEEP,
52 static struct clk_alpha_pll gpll0_main = {
53 .offset = 0x21000,
54 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
55 .clkr = {
56 .enable_reg = 0x0b000,
57 .enable_mask = BIT(0),
58 .hw.init = &(struct clk_init_data){
59 .name = "gpll0_main",
60 .parent_data = &(const struct clk_parent_data){
61 .fw_name = "xo",
63 .num_parents = 1,
64 .ops = &clk_alpha_pll_ops,
69 static struct clk_fixed_factor gpll0_out_main_div2 = {
70 .mult = 1,
71 .div = 2,
72 .hw.init = &(struct clk_init_data){
73 .name = "gpll0_out_main_div2",
74 .parent_hws = (const struct clk_hw *[]){
75 &gpll0_main.clkr.hw },
76 .num_parents = 1,
77 .ops = &clk_fixed_factor_ops,
78 .flags = CLK_SET_RATE_PARENT,
82 static struct clk_alpha_pll_postdiv gpll0 = {
83 .offset = 0x21000,
84 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
85 .width = 4,
86 .clkr.hw.init = &(struct clk_init_data){
87 .name = "gpll0",
88 .parent_hws = (const struct clk_hw *[]){
89 &gpll0_main.clkr.hw },
90 .num_parents = 1,
91 .ops = &clk_alpha_pll_postdiv_ro_ops,
92 .flags = CLK_SET_RATE_PARENT,
96 static const struct clk_parent_data gcc_xo_gpll0_gpll0_out_main_div2[] = {
97 { .fw_name = "xo" },
98 { .hw = &gpll0.clkr.hw},
99 { .hw = &gpll0_out_main_div2.hw},
102 static const struct parent_map gcc_xo_gpll0_gpll0_out_main_div2_map[] = {
103 { P_XO, 0 },
104 { P_GPLL0, 1 },
105 { P_GPLL0_DIV2, 4 },
108 static struct clk_alpha_pll ubi32_pll_main = {
109 .offset = 0x25000,
110 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_HUAYRA],
111 .flags = SUPPORTS_DYNAMIC_UPDATE,
112 .clkr = {
113 .enable_reg = 0x0b000,
114 .enable_mask = BIT(6),
115 .hw.init = &(struct clk_init_data){
116 .name = "ubi32_pll_main",
117 .parent_data = &(const struct clk_parent_data){
118 .fw_name = "xo",
120 .num_parents = 1,
121 .ops = &clk_alpha_pll_huayra_ops,
126 static struct clk_alpha_pll_postdiv ubi32_pll = {
127 .offset = 0x25000,
128 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_HUAYRA],
129 .width = 2,
130 .clkr.hw.init = &(struct clk_init_data){
131 .name = "ubi32_pll",
132 .parent_hws = (const struct clk_hw *[]){
133 &ubi32_pll_main.clkr.hw },
134 .num_parents = 1,
135 .ops = &clk_alpha_pll_postdiv_ro_ops,
136 .flags = CLK_SET_RATE_PARENT,
140 static struct clk_alpha_pll gpll6_main = {
141 .offset = 0x37000,
142 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_BRAMMO],
143 .clkr = {
144 .enable_reg = 0x0b000,
145 .enable_mask = BIT(7),
146 .hw.init = &(struct clk_init_data){
147 .name = "gpll6_main",
148 .parent_data = &(const struct clk_parent_data){
149 .fw_name = "xo",
151 .num_parents = 1,
152 .ops = &clk_alpha_pll_ops,
157 static struct clk_alpha_pll_postdiv gpll6 = {
158 .offset = 0x37000,
159 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_BRAMMO],
160 .width = 2,
161 .clkr.hw.init = &(struct clk_init_data){
162 .name = "gpll6",
163 .parent_hws = (const struct clk_hw *[]){
164 &gpll6_main.clkr.hw },
165 .num_parents = 1,
166 .ops = &clk_alpha_pll_postdiv_ro_ops,
167 .flags = CLK_SET_RATE_PARENT,
171 static struct clk_alpha_pll gpll4_main = {
172 .offset = 0x24000,
173 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
174 .clkr = {
175 .enable_reg = 0x0b000,
176 .enable_mask = BIT(5),
177 .hw.init = &(struct clk_init_data){
178 .name = "gpll4_main",
179 .parent_data = &(const struct clk_parent_data){
180 .fw_name = "xo",
182 .num_parents = 1,
183 .ops = &clk_alpha_pll_ops,
188 static struct clk_alpha_pll_postdiv gpll4 = {
189 .offset = 0x24000,
190 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
191 .width = 4,
192 .clkr.hw.init = &(struct clk_init_data){
193 .name = "gpll4",
194 .parent_hws = (const struct clk_hw *[]){
195 &gpll4_main.clkr.hw },
196 .num_parents = 1,
197 .ops = &clk_alpha_pll_postdiv_ro_ops,
198 .flags = CLK_SET_RATE_PARENT,
202 static const struct freq_tbl ftbl_pcnoc_bfdcd_clk_src[] = {
203 F(24000000, P_XO, 1, 0, 0),
204 F(50000000, P_GPLL0, 16, 0, 0),
205 F(100000000, P_GPLL0, 8, 0, 0),
209 static struct clk_rcg2 pcnoc_bfdcd_clk_src = {
210 .cmd_rcgr = 0x27000,
211 .freq_tbl = ftbl_pcnoc_bfdcd_clk_src,
212 .hid_width = 5,
213 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
214 .clkr.hw.init = &(struct clk_init_data){
215 .name = "pcnoc_bfdcd_clk_src",
216 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
217 .num_parents = 3,
218 .ops = &clk_rcg2_ops,
222 static struct clk_alpha_pll gpll2_main = {
223 .offset = 0x4a000,
224 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
225 .clkr = {
226 .enable_reg = 0x0b000,
227 .enable_mask = BIT(2),
228 .hw.init = &(struct clk_init_data){
229 .name = "gpll2_main",
230 .parent_data = &(const struct clk_parent_data){
231 .fw_name = "xo",
233 .num_parents = 1,
234 .ops = &clk_alpha_pll_ops,
239 static struct clk_alpha_pll_postdiv gpll2 = {
240 .offset = 0x4a000,
241 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
242 .width = 4,
243 .clkr.hw.init = &(struct clk_init_data){
244 .name = "gpll2",
245 .parent_hws = (const struct clk_hw *[]){
246 &gpll2_main.clkr.hw },
247 .num_parents = 1,
248 .ops = &clk_alpha_pll_postdiv_ro_ops,
249 .flags = CLK_SET_RATE_PARENT,
253 static struct clk_alpha_pll nss_crypto_pll_main = {
254 .offset = 0x22000,
255 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
256 .clkr = {
257 .enable_reg = 0x0b000,
258 .enable_mask = BIT(4),
259 .hw.init = &(struct clk_init_data){
260 .name = "nss_crypto_pll_main",
261 .parent_data = &(const struct clk_parent_data){
262 .fw_name = "xo",
264 .num_parents = 1,
265 .ops = &clk_alpha_pll_ops,
270 static struct clk_alpha_pll_postdiv nss_crypto_pll = {
271 .offset = 0x22000,
272 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
273 .width = 4,
274 .clkr.hw.init = &(struct clk_init_data){
275 .name = "nss_crypto_pll",
276 .parent_hws = (const struct clk_hw *[]){
277 &nss_crypto_pll_main.clkr.hw },
278 .num_parents = 1,
279 .ops = &clk_alpha_pll_postdiv_ro_ops,
280 .flags = CLK_SET_RATE_PARENT,
284 static const struct freq_tbl ftbl_qdss_tsctr_clk_src[] = {
285 F(160000000, P_GPLL0_DIV2, 2.5, 0, 0),
286 F(320000000, P_GPLL0, 2.5, 0, 0),
287 F(600000000, P_GPLL4, 2, 0, 0),
291 static const struct clk_parent_data gcc_xo_gpll4_gpll0_gpll6_gpll0_div2[] = {
292 { .fw_name = "xo" },
293 { .hw = &gpll4.clkr.hw },
294 { .hw = &gpll0.clkr.hw },
295 { .hw = &gpll6.clkr.hw },
296 { .hw = &gpll0_out_main_div2.hw },
299 static const struct parent_map gcc_xo_gpll4_gpll0_gpll6_gpll0_div2_map[] = {
300 { P_XO, 0 },
301 { P_GPLL4, 1 },
302 { P_GPLL0, 2 },
303 { P_GPLL6, 3 },
304 { P_GPLL0_DIV2, 4 },
307 static struct clk_rcg2 qdss_tsctr_clk_src = {
308 .cmd_rcgr = 0x29064,
309 .freq_tbl = ftbl_qdss_tsctr_clk_src,
310 .hid_width = 5,
311 .parent_map = gcc_xo_gpll4_gpll0_gpll6_gpll0_div2_map,
312 .clkr.hw.init = &(struct clk_init_data){
313 .name = "qdss_tsctr_clk_src",
314 .parent_data = gcc_xo_gpll4_gpll0_gpll6_gpll0_div2,
315 .num_parents = 5,
316 .ops = &clk_rcg2_ops,
320 static struct clk_fixed_factor qdss_dap_sync_clk_src = {
321 .mult = 1,
322 .div = 4,
323 .hw.init = &(struct clk_init_data){
324 .name = "qdss_dap_sync_clk_src",
325 .parent_hws = (const struct clk_hw *[]){
326 &qdss_tsctr_clk_src.clkr.hw },
327 .num_parents = 1,
328 .ops = &clk_fixed_factor_ops,
332 static const struct freq_tbl ftbl_qdss_at_clk_src[] = {
333 F(66670000, P_GPLL0_DIV2, 6, 0, 0),
334 F(240000000, P_GPLL4, 5, 0, 0),
338 static struct clk_rcg2 qdss_at_clk_src = {
339 .cmd_rcgr = 0x2900c,
340 .freq_tbl = ftbl_qdss_at_clk_src,
341 .hid_width = 5,
342 .parent_map = gcc_xo_gpll4_gpll0_gpll6_gpll0_div2_map,
343 .clkr.hw.init = &(struct clk_init_data){
344 .name = "qdss_at_clk_src",
345 .parent_data = gcc_xo_gpll4_gpll0_gpll6_gpll0_div2,
346 .num_parents = 5,
347 .ops = &clk_rcg2_ops,
351 static struct clk_fixed_factor qdss_tsctr_div2_clk_src = {
352 .mult = 1,
353 .div = 2,
354 .hw.init = &(struct clk_init_data){
355 .name = "qdss_tsctr_div2_clk_src",
356 .parent_hws = (const struct clk_hw *[]){
357 &qdss_tsctr_clk_src.clkr.hw },
358 .num_parents = 1,
359 .flags = CLK_SET_RATE_PARENT,
360 .ops = &clk_fixed_factor_ops,
364 static const struct freq_tbl ftbl_nss_ppe_clk_src[] = {
365 F(24000000, P_XO, 1, 0, 0),
366 F(300000000, P_BIAS_PLL, 1, 0, 0),
370 static const struct clk_parent_data gcc_xo_bias_gpll0_gpll4_nss_ubi32[] = {
371 { .fw_name = "xo" },
372 { .fw_name = "bias_pll_cc_clk" },
373 { .hw = &gpll0.clkr.hw },
374 { .hw = &gpll4.clkr.hw },
375 { .hw = &nss_crypto_pll.clkr.hw },
376 { .hw = &ubi32_pll.clkr.hw },
379 static const struct parent_map gcc_xo_bias_gpll0_gpll4_nss_ubi32_map[] = {
380 { P_XO, 0 },
381 { P_BIAS_PLL, 1 },
382 { P_GPLL0, 2 },
383 { P_GPLL4, 3 },
384 { P_NSS_CRYPTO_PLL, 4 },
385 { P_UBI32_PLL, 5 },
388 static struct clk_rcg2 nss_ppe_clk_src = {
389 .cmd_rcgr = 0x68080,
390 .freq_tbl = ftbl_nss_ppe_clk_src,
391 .hid_width = 5,
392 .parent_map = gcc_xo_bias_gpll0_gpll4_nss_ubi32_map,
393 .clkr.hw.init = &(struct clk_init_data){
394 .name = "nss_ppe_clk_src",
395 .parent_data = gcc_xo_bias_gpll0_gpll4_nss_ubi32,
396 .num_parents = 6,
397 .ops = &clk_rcg2_ops,
401 static struct clk_branch gcc_xo_clk_src = {
402 .halt_reg = 0x30018,
403 .clkr = {
404 .enable_reg = 0x30018,
405 .enable_mask = BIT(1),
406 .hw.init = &(struct clk_init_data){
407 .name = "gcc_xo_clk_src",
408 .parent_data = &(const struct clk_parent_data){
409 .fw_name = "xo",
411 .num_parents = 1,
412 .flags = CLK_SET_RATE_PARENT,
413 .ops = &clk_branch2_ops,
418 static const struct freq_tbl ftbl_nss_ce_clk_src[] = {
419 F(24000000, P_XO, 1, 0, 0),
420 F(200000000, P_GPLL0, 4, 0, 0),
424 static const struct clk_parent_data gcc_xo_gpll0[] = {
425 { .fw_name = "xo" },
426 { .hw = &gpll0.clkr.hw },
429 static const struct parent_map gcc_xo_gpll0_map[] = {
430 { P_XO, 0 },
431 { P_GPLL0, 1 },
434 static struct clk_rcg2 nss_ce_clk_src = {
435 .cmd_rcgr = 0x68098,
436 .freq_tbl = ftbl_nss_ce_clk_src,
437 .hid_width = 5,
438 .parent_map = gcc_xo_gpll0_map,
439 .clkr.hw.init = &(struct clk_init_data){
440 .name = "nss_ce_clk_src",
441 .parent_data = gcc_xo_gpll0,
442 .num_parents = 2,
443 .ops = &clk_rcg2_ops,
447 static struct clk_branch gcc_sleep_clk_src = {
448 .halt_reg = 0x30000,
449 .clkr = {
450 .enable_reg = 0x30000,
451 .enable_mask = BIT(1),
452 .hw.init = &(struct clk_init_data){
453 .name = "gcc_sleep_clk_src",
454 .parent_data = &(const struct clk_parent_data){
455 .fw_name = "sleep_clk",
457 .num_parents = 1,
458 .ops = &clk_branch2_ops,
463 static const struct freq_tbl ftbl_snoc_nssnoc_bfdcd_clk_src[] = {
464 F(24000000, P_XO, 1, 0, 0),
465 F(50000000, P_GPLL0_DIV2, 8, 0, 0),
466 F(100000000, P_GPLL0, 8, 0, 0),
467 F(133333333, P_GPLL0, 6, 0, 0),
468 F(160000000, P_GPLL0, 5, 0, 0),
469 F(200000000, P_GPLL0, 4, 0, 0),
470 F(266666667, P_GPLL0, 3, 0, 0),
474 static const struct clk_parent_data
475 gcc_xo_gpll0_gpll6_gpll0_out_main_div2[] = {
476 { .fw_name = "xo" },
477 { .hw = &gpll0.clkr.hw },
478 { .hw = &gpll6.clkr.hw },
479 { .hw = &gpll0_out_main_div2.hw },
482 static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_out_main_div2_map[] = {
483 { P_XO, 0 },
484 { P_GPLL0, 1 },
485 { P_GPLL6, 2 },
486 { P_GPLL0_DIV2, 3 },
489 static struct clk_rcg2 snoc_nssnoc_bfdcd_clk_src = {
490 .cmd_rcgr = 0x76054,
491 .freq_tbl = ftbl_snoc_nssnoc_bfdcd_clk_src,
492 .hid_width = 5,
493 .parent_map = gcc_xo_gpll0_gpll6_gpll0_out_main_div2_map,
494 .clkr.hw.init = &(struct clk_init_data){
495 .name = "snoc_nssnoc_bfdcd_clk_src",
496 .parent_data = gcc_xo_gpll0_gpll6_gpll0_out_main_div2,
497 .num_parents = 4,
498 .ops = &clk_rcg2_ops,
502 static const struct freq_tbl ftbl_apss_ahb_clk_src[] = {
503 F(24000000, P_XO, 1, 0, 0),
504 F(25000000, P_GPLL0_DIV2, 16, 0, 0),
505 F(50000000, P_GPLL0, 16, 0, 0),
506 F(100000000, P_GPLL0, 8, 0, 0),
510 static struct clk_rcg2 apss_ahb_clk_src = {
511 .cmd_rcgr = 0x46000,
512 .freq_tbl = ftbl_apss_ahb_clk_src,
513 .hid_width = 5,
514 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
515 .clkr.hw.init = &(struct clk_init_data){
516 .name = "apss_ahb_clk_src",
517 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
518 .num_parents = 3,
519 .ops = &clk_rcg2_ops,
523 static const struct freq_tbl ftbl_nss_port5_rx_clk_src[] = {
524 F(24000000, P_XO, 1, 0, 0),
525 F(25000000, P_UNIPHY1_RX, 12.5, 0, 0),
526 F(25000000, P_UNIPHY0_RX, 5, 0, 0),
527 F(78125000, P_UNIPHY1_RX, 4, 0, 0),
528 F(125000000, P_UNIPHY1_RX, 2.5, 0, 0),
529 F(125000000, P_UNIPHY0_RX, 1, 0, 0),
530 F(156250000, P_UNIPHY1_RX, 2, 0, 0),
531 F(312500000, P_UNIPHY1_RX, 1, 0, 0),
535 static const struct clk_parent_data
536 gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias[] = {
537 { .fw_name = "xo" },
538 { .fw_name = "uniphy0_gcc_rx_clk" },
539 { .fw_name = "uniphy0_gcc_tx_clk" },
540 { .fw_name = "uniphy1_gcc_rx_clk" },
541 { .fw_name = "uniphy1_gcc_tx_clk" },
542 { .hw = &ubi32_pll.clkr.hw },
543 { .fw_name = "bias_pll_cc_clk" },
546 static const struct parent_map
547 gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias_map[] = {
548 { P_XO, 0 },
549 { P_UNIPHY0_RX, 1 },
550 { P_UNIPHY0_TX, 2 },
551 { P_UNIPHY1_RX, 3 },
552 { P_UNIPHY1_TX, 4 },
553 { P_UBI32_PLL, 5 },
554 { P_BIAS_PLL, 6 },
557 static struct clk_rcg2 nss_port5_rx_clk_src = {
558 .cmd_rcgr = 0x68060,
559 .freq_tbl = ftbl_nss_port5_rx_clk_src,
560 .hid_width = 5,
561 .parent_map = gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias_map,
562 .clkr.hw.init = &(struct clk_init_data){
563 .name = "nss_port5_rx_clk_src",
564 .parent_data = gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias,
565 .num_parents = 7,
566 .ops = &clk_rcg2_ops,
570 static const struct freq_tbl ftbl_nss_port5_tx_clk_src[] = {
571 F(24000000, P_XO, 1, 0, 0),
572 F(25000000, P_UNIPHY1_TX, 12.5, 0, 0),
573 F(25000000, P_UNIPHY0_TX, 5, 0, 0),
574 F(78125000, P_UNIPHY1_TX, 4, 0, 0),
575 F(125000000, P_UNIPHY1_TX, 2.5, 0, 0),
576 F(125000000, P_UNIPHY0_TX, 1, 0, 0),
577 F(156250000, P_UNIPHY1_TX, 2, 0, 0),
578 F(312500000, P_UNIPHY1_TX, 1, 0, 0),
582 static const struct clk_parent_data
583 gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias[] = {
584 { .fw_name = "xo" },
585 { .fw_name = "uniphy0_gcc_tx_clk" },
586 { .fw_name = "uniphy0_gcc_rx_clk" },
587 { .fw_name = "uniphy1_gcc_tx_clk" },
588 { .fw_name = "uniphy1_gcc_rx_clk" },
589 { .hw = &ubi32_pll.clkr.hw },
590 { .fw_name = "bias_pll_cc_clk" },
593 static const struct parent_map
594 gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias_map[] = {
595 { P_XO, 0 },
596 { P_UNIPHY0_TX, 1 },
597 { P_UNIPHY0_RX, 2 },
598 { P_UNIPHY1_TX, 3 },
599 { P_UNIPHY1_RX, 4 },
600 { P_UBI32_PLL, 5 },
601 { P_BIAS_PLL, 6 },
604 static struct clk_rcg2 nss_port5_tx_clk_src = {
605 .cmd_rcgr = 0x68068,
606 .freq_tbl = ftbl_nss_port5_tx_clk_src,
607 .hid_width = 5,
608 .parent_map = gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias_map,
609 .clkr.hw.init = &(struct clk_init_data){
610 .name = "nss_port5_tx_clk_src",
611 .parent_data = gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias,
612 .num_parents = 7,
613 .ops = &clk_rcg2_ops,
617 static const struct freq_tbl ftbl_pcie_axi_clk_src[] = {
618 F(24000000, P_XO, 1, 0, 0),
619 F(200000000, P_GPLL0, 4, 0, 0),
620 F(240000000, P_GPLL4, 5, 0, 0),
624 static const struct freq_tbl ftbl_pcie_rchng_clk_src[] = {
625 F(24000000, P_XO, 1, 0, 0),
626 F(100000000, P_GPLL0, 8, 0, 0),
630 static const struct clk_parent_data gcc_xo_gpll0_gpll4[] = {
631 { .fw_name = "xo" },
632 { .hw = &gpll0.clkr.hw },
633 { .hw = &gpll4.clkr.hw },
636 static const struct parent_map gcc_xo_gpll0_gpll4_map[] = {
637 { P_XO, 0 },
638 { P_GPLL0, 1 },
639 { P_GPLL4, 2 },
642 static struct clk_rcg2 pcie0_axi_clk_src = {
643 .cmd_rcgr = 0x75054,
644 .freq_tbl = ftbl_pcie_axi_clk_src,
645 .hid_width = 5,
646 .parent_map = gcc_xo_gpll0_gpll4_map,
647 .clkr.hw.init = &(struct clk_init_data){
648 .name = "pcie0_axi_clk_src",
649 .parent_data = gcc_xo_gpll0_gpll4,
650 .num_parents = 3,
651 .ops = &clk_rcg2_ops,
655 static const struct freq_tbl ftbl_usb0_master_clk_src[] = {
656 F(80000000, P_GPLL0_DIV2, 5, 0, 0),
657 F(100000000, P_GPLL0, 8, 0, 0),
658 F(133330000, P_GPLL0, 6, 0, 0),
659 F(200000000, P_GPLL0, 4, 0, 0),
663 static const struct clk_parent_data gcc_xo_gpll0_out_main_div2_gpll0[] = {
664 { .fw_name = "xo" },
665 { .hw = &gpll0_out_main_div2.hw },
666 { .hw = &gpll0.clkr.hw },
669 static const struct parent_map gcc_xo_gpll0_out_main_div2_gpll0_map[] = {
670 { P_XO, 0 },
671 { P_GPLL0_DIV2, 2 },
672 { P_GPLL0, 1 },
675 static struct clk_rcg2 usb0_master_clk_src = {
676 .cmd_rcgr = 0x3e00c,
677 .freq_tbl = ftbl_usb0_master_clk_src,
678 .mnd_width = 8,
679 .hid_width = 5,
680 .parent_map = gcc_xo_gpll0_out_main_div2_gpll0_map,
681 .clkr.hw.init = &(struct clk_init_data){
682 .name = "usb0_master_clk_src",
683 .parent_data = gcc_xo_gpll0_out_main_div2_gpll0,
684 .num_parents = 3,
685 .ops = &clk_rcg2_ops,
689 static struct clk_regmap_div apss_ahb_postdiv_clk_src = {
690 .reg = 0x46018,
691 .shift = 4,
692 .width = 4,
693 .clkr = {
694 .hw.init = &(struct clk_init_data){
695 .name = "apss_ahb_postdiv_clk_src",
696 .parent_hws = (const struct clk_hw *[]){
697 &apss_ahb_clk_src.clkr.hw },
698 .num_parents = 1,
699 .ops = &clk_regmap_div_ops,
704 static struct clk_fixed_factor gcc_xo_div4_clk_src = {
705 .mult = 1,
706 .div = 4,
707 .hw.init = &(struct clk_init_data){
708 .name = "gcc_xo_div4_clk_src",
709 .parent_hws = (const struct clk_hw *[]){
710 &gcc_xo_clk_src.clkr.hw },
711 .num_parents = 1,
712 .ops = &clk_fixed_factor_ops,
713 .flags = CLK_SET_RATE_PARENT,
717 static const struct freq_tbl ftbl_nss_port1_rx_clk_src[] = {
718 F(24000000, P_XO, 1, 0, 0),
719 F(25000000, P_UNIPHY0_RX, 5, 0, 0),
720 F(125000000, P_UNIPHY0_RX, 1, 0, 0),
724 static const struct clk_parent_data gcc_xo_uniphy0_rx_tx_ubi32_bias[] = {
725 { .fw_name = "xo" },
726 { .fw_name = "uniphy0_gcc_rx_clk" },
727 { .fw_name = "uniphy0_gcc_tx_clk" },
728 { .hw = &ubi32_pll.clkr.hw },
729 { .fw_name = "bias_pll_cc_clk" },
732 static const struct parent_map gcc_xo_uniphy0_rx_tx_ubi32_bias_map[] = {
733 { P_XO, 0 },
734 { P_UNIPHY0_RX, 1 },
735 { P_UNIPHY0_TX, 2 },
736 { P_UBI32_PLL, 5 },
737 { P_BIAS_PLL, 6 },
740 static struct clk_rcg2 nss_port1_rx_clk_src = {
741 .cmd_rcgr = 0x68020,
742 .freq_tbl = ftbl_nss_port1_rx_clk_src,
743 .hid_width = 5,
744 .parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
745 .clkr.hw.init = &(struct clk_init_data){
746 .name = "nss_port1_rx_clk_src",
747 .parent_data = gcc_xo_uniphy0_rx_tx_ubi32_bias,
748 .num_parents = 5,
749 .ops = &clk_rcg2_ops,
753 static const struct freq_tbl ftbl_nss_port1_tx_clk_src[] = {
754 F(24000000, P_XO, 1, 0, 0),
755 F(25000000, P_UNIPHY0_TX, 5, 0, 0),
756 F(125000000, P_UNIPHY0_TX, 1, 0, 0),
760 static const struct clk_parent_data gcc_xo_uniphy0_tx_rx_ubi32_bias[] = {
761 { .fw_name = "xo" },
762 { .fw_name = "uniphy0_gcc_tx_clk" },
763 { .fw_name = "uniphy0_gcc_rx_clk" },
764 { .hw = &ubi32_pll.clkr.hw },
765 { .fw_name = "bias_pll_cc_clk" },
768 static const struct parent_map gcc_xo_uniphy0_tx_rx_ubi32_bias_map[] = {
769 { P_XO, 0 },
770 { P_UNIPHY0_TX, 1 },
771 { P_UNIPHY0_RX, 2 },
772 { P_UBI32_PLL, 5 },
773 { P_BIAS_PLL, 6 },
776 static struct clk_rcg2 nss_port1_tx_clk_src = {
777 .cmd_rcgr = 0x68028,
778 .freq_tbl = ftbl_nss_port1_tx_clk_src,
779 .hid_width = 5,
780 .parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
781 .clkr.hw.init = &(struct clk_init_data){
782 .name = "nss_port1_tx_clk_src",
783 .parent_data = gcc_xo_uniphy0_tx_rx_ubi32_bias,
784 .num_parents = 5,
785 .ops = &clk_rcg2_ops,
789 static struct clk_rcg2 nss_port2_rx_clk_src = {
790 .cmd_rcgr = 0x68030,
791 .freq_tbl = ftbl_nss_port1_rx_clk_src,
792 .hid_width = 5,
793 .parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
794 .clkr.hw.init = &(struct clk_init_data){
795 .name = "nss_port2_rx_clk_src",
796 .parent_data = gcc_xo_uniphy0_rx_tx_ubi32_bias,
797 .num_parents = 5,
798 .ops = &clk_rcg2_ops,
802 static struct clk_rcg2 nss_port2_tx_clk_src = {
803 .cmd_rcgr = 0x68038,
804 .freq_tbl = ftbl_nss_port1_tx_clk_src,
805 .hid_width = 5,
806 .parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
807 .clkr.hw.init = &(struct clk_init_data){
808 .name = "nss_port2_tx_clk_src",
809 .parent_data = gcc_xo_uniphy0_tx_rx_ubi32_bias,
810 .num_parents = 5,
811 .ops = &clk_rcg2_ops,
815 static struct clk_rcg2 nss_port3_rx_clk_src = {
816 .cmd_rcgr = 0x68040,
817 .freq_tbl = ftbl_nss_port1_rx_clk_src,
818 .hid_width = 5,
819 .parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
820 .clkr.hw.init = &(struct clk_init_data){
821 .name = "nss_port3_rx_clk_src",
822 .parent_data = gcc_xo_uniphy0_rx_tx_ubi32_bias,
823 .num_parents = 5,
824 .ops = &clk_rcg2_ops,
828 static struct clk_rcg2 nss_port3_tx_clk_src = {
829 .cmd_rcgr = 0x68048,
830 .freq_tbl = ftbl_nss_port1_tx_clk_src,
831 .hid_width = 5,
832 .parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
833 .clkr.hw.init = &(struct clk_init_data){
834 .name = "nss_port3_tx_clk_src",
835 .parent_data = gcc_xo_uniphy0_tx_rx_ubi32_bias,
836 .num_parents = 5,
837 .ops = &clk_rcg2_ops,
841 static struct clk_rcg2 nss_port4_rx_clk_src = {
842 .cmd_rcgr = 0x68050,
843 .freq_tbl = ftbl_nss_port1_rx_clk_src,
844 .hid_width = 5,
845 .parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,
846 .clkr.hw.init = &(struct clk_init_data){
847 .name = "nss_port4_rx_clk_src",
848 .parent_data = gcc_xo_uniphy0_rx_tx_ubi32_bias,
849 .num_parents = 5,
850 .ops = &clk_rcg2_ops,
854 static struct clk_rcg2 nss_port4_tx_clk_src = {
855 .cmd_rcgr = 0x68058,
856 .freq_tbl = ftbl_nss_port1_tx_clk_src,
857 .hid_width = 5,
858 .parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,
859 .clkr.hw.init = &(struct clk_init_data){
860 .name = "nss_port4_tx_clk_src",
861 .parent_data = gcc_xo_uniphy0_tx_rx_ubi32_bias,
862 .num_parents = 5,
863 .ops = &clk_rcg2_ops,
867 static struct clk_regmap_div nss_port5_rx_div_clk_src = {
868 .reg = 0x68440,
869 .shift = 0,
870 .width = 4,
871 .clkr = {
872 .hw.init = &(struct clk_init_data){
873 .name = "nss_port5_rx_div_clk_src",
874 .parent_hws = (const struct clk_hw *[]){
875 &nss_port5_rx_clk_src.clkr.hw },
876 .num_parents = 1,
877 .ops = &clk_regmap_div_ops,
878 .flags = CLK_SET_RATE_PARENT,
883 static struct clk_regmap_div nss_port5_tx_div_clk_src = {
884 .reg = 0x68444,
885 .shift = 0,
886 .width = 4,
887 .clkr = {
888 .hw.init = &(struct clk_init_data){
889 .name = "nss_port5_tx_div_clk_src",
890 .parent_hws = (const struct clk_hw *[]){
891 &nss_port5_tx_clk_src.clkr.hw },
892 .num_parents = 1,
893 .ops = &clk_regmap_div_ops,
894 .flags = CLK_SET_RATE_PARENT,
899 static const struct freq_tbl ftbl_apss_axi_clk_src[] = {
900 F(24000000, P_XO, 1, 0, 0),
901 F(100000000, P_GPLL0_DIV2, 4, 0, 0),
902 F(200000000, P_GPLL0, 4, 0, 0),
903 F(308570000, P_GPLL6, 3.5, 0, 0),
904 F(400000000, P_GPLL0, 2, 0, 0),
905 F(533000000, P_GPLL0, 1.5, 0, 0),
909 static const struct clk_parent_data gcc_xo_gpll0_gpll6_ubi32_gpll0_div2[] = {
910 { .fw_name = "xo" },
911 { .hw = &gpll0.clkr.hw },
912 { .hw = &gpll6.clkr.hw },
913 { .hw = &ubi32_pll.clkr.hw },
914 { .hw = &gpll0_out_main_div2.hw },
917 static const struct parent_map
918 gcc_xo_gpll0_gpll6_ubi32_gpll0_div2_map[] = {
919 { P_XO, 0 },
920 { P_GPLL0, 1 },
921 { P_GPLL6, 2 },
922 { P_UBI32_PLL, 3 },
923 { P_GPLL0_DIV2, 6 },
926 static struct clk_rcg2 apss_axi_clk_src = {
927 .cmd_rcgr = 0x38048,
928 .freq_tbl = ftbl_apss_axi_clk_src,
929 .hid_width = 5,
930 .parent_map = gcc_xo_gpll0_gpll6_ubi32_gpll0_div2_map,
931 .clkr.hw.init = &(struct clk_init_data){
932 .name = "apss_axi_clk_src",
933 .parent_data = gcc_xo_gpll0_gpll6_ubi32_gpll0_div2,
934 .num_parents = 5,
935 .ops = &clk_rcg2_ops,
939 static const struct freq_tbl ftbl_nss_crypto_clk_src[] = {
940 F(24000000, P_XO, 1, 0, 0),
941 F(300000000, P_NSS_CRYPTO_PLL, 2, 0, 0),
945 static const struct clk_parent_data gcc_xo_nss_crypto_pll_gpll0[] = {
946 { .fw_name = "xo" },
947 { .hw = &nss_crypto_pll.clkr.hw },
948 { .hw = &gpll0.clkr.hw },
951 static const struct parent_map gcc_xo_nss_crypto_pll_gpll0_map[] = {
952 { P_XO, 0 },
953 { P_NSS_CRYPTO_PLL, 1 },
954 { P_GPLL0, 2 },
957 static struct clk_rcg2 nss_crypto_clk_src = {
958 .cmd_rcgr = 0x68144,
959 .freq_tbl = ftbl_nss_crypto_clk_src,
960 .mnd_width = 16,
961 .hid_width = 5,
962 .parent_map = gcc_xo_nss_crypto_pll_gpll0_map,
963 .clkr.hw.init = &(struct clk_init_data){
964 .name = "nss_crypto_clk_src",
965 .parent_data = gcc_xo_nss_crypto_pll_gpll0,
966 .num_parents = 3,
967 .ops = &clk_rcg2_ops,
971 static struct clk_regmap_div nss_port1_rx_div_clk_src = {
972 .reg = 0x68400,
973 .shift = 0,
974 .width = 4,
975 .clkr = {
976 .hw.init = &(struct clk_init_data){
977 .name = "nss_port1_rx_div_clk_src",
978 .parent_hws = (const struct clk_hw *[]){
979 &nss_port1_rx_clk_src.clkr.hw },
980 .num_parents = 1,
981 .ops = &clk_regmap_div_ops,
982 .flags = CLK_SET_RATE_PARENT,
987 static struct clk_regmap_div nss_port1_tx_div_clk_src = {
988 .reg = 0x68404,
989 .shift = 0,
990 .width = 4,
991 .clkr = {
992 .hw.init = &(struct clk_init_data){
993 .name = "nss_port1_tx_div_clk_src",
994 .parent_hws = (const struct clk_hw *[]){
995 &nss_port1_tx_clk_src.clkr.hw },
996 .num_parents = 1,
997 .ops = &clk_regmap_div_ops,
998 .flags = CLK_SET_RATE_PARENT,
1003 static struct clk_regmap_div nss_port2_rx_div_clk_src = {
1004 .reg = 0x68410,
1005 .shift = 0,
1006 .width = 4,
1007 .clkr = {
1008 .hw.init = &(struct clk_init_data){
1009 .name = "nss_port2_rx_div_clk_src",
1010 .parent_hws = (const struct clk_hw *[]){
1011 &nss_port2_rx_clk_src.clkr.hw },
1012 .num_parents = 1,
1013 .ops = &clk_regmap_div_ops,
1014 .flags = CLK_SET_RATE_PARENT,
1019 static struct clk_regmap_div nss_port2_tx_div_clk_src = {
1020 .reg = 0x68414,
1021 .shift = 0,
1022 .width = 4,
1023 .clkr = {
1024 .hw.init = &(struct clk_init_data){
1025 .name = "nss_port2_tx_div_clk_src",
1026 .parent_hws = (const struct clk_hw *[]){
1027 &nss_port2_tx_clk_src.clkr.hw },
1028 .num_parents = 1,
1029 .ops = &clk_regmap_div_ops,
1030 .flags = CLK_SET_RATE_PARENT,
1035 static struct clk_regmap_div nss_port3_rx_div_clk_src = {
1036 .reg = 0x68420,
1037 .shift = 0,
1038 .width = 4,
1039 .clkr = {
1040 .hw.init = &(struct clk_init_data){
1041 .name = "nss_port3_rx_div_clk_src",
1042 .parent_hws = (const struct clk_hw *[]){
1043 &nss_port3_rx_clk_src.clkr.hw },
1044 .num_parents = 1,
1045 .ops = &clk_regmap_div_ops,
1046 .flags = CLK_SET_RATE_PARENT,
1051 static struct clk_regmap_div nss_port3_tx_div_clk_src = {
1052 .reg = 0x68424,
1053 .shift = 0,
1054 .width = 4,
1055 .clkr = {
1056 .hw.init = &(struct clk_init_data){
1057 .name = "nss_port3_tx_div_clk_src",
1058 .parent_hws = (const struct clk_hw *[]){
1059 &nss_port3_tx_clk_src.clkr.hw },
1060 .num_parents = 1,
1061 .ops = &clk_regmap_div_ops,
1062 .flags = CLK_SET_RATE_PARENT,
1067 static struct clk_regmap_div nss_port4_rx_div_clk_src = {
1068 .reg = 0x68430,
1069 .shift = 0,
1070 .width = 4,
1071 .clkr = {
1072 .hw.init = &(struct clk_init_data){
1073 .name = "nss_port4_rx_div_clk_src",
1074 .parent_hws = (const struct clk_hw *[]){
1075 &nss_port4_rx_clk_src.clkr.hw },
1076 .num_parents = 1,
1077 .ops = &clk_regmap_div_ops,
1078 .flags = CLK_SET_RATE_PARENT,
1083 static struct clk_regmap_div nss_port4_tx_div_clk_src = {
1084 .reg = 0x68434,
1085 .shift = 0,
1086 .width = 4,
1087 .clkr = {
1088 .hw.init = &(struct clk_init_data){
1089 .name = "nss_port4_tx_div_clk_src",
1090 .parent_hws = (const struct clk_hw *[]){
1091 &nss_port4_tx_clk_src.clkr.hw },
1092 .num_parents = 1,
1093 .ops = &clk_regmap_div_ops,
1094 .flags = CLK_SET_RATE_PARENT,
1099 static const struct freq_tbl ftbl_nss_ubi_clk_src[] = {
1100 F(24000000, P_XO, 1, 0, 0),
1101 F(149760000, P_UBI32_PLL, 10, 0, 0),
1102 F(187200000, P_UBI32_PLL, 8, 0, 0),
1103 F(249600000, P_UBI32_PLL, 6, 0, 0),
1104 F(374400000, P_UBI32_PLL, 4, 0, 0),
1105 F(748800000, P_UBI32_PLL, 2, 0, 0),
1106 F(1497600000, P_UBI32_PLL, 1, 0, 0),
1110 static const struct clk_parent_data
1111 gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6[] = {
1112 { .fw_name = "xo" },
1113 { .hw = &ubi32_pll.clkr.hw },
1114 { .hw = &gpll0.clkr.hw },
1115 { .hw = &gpll2.clkr.hw },
1116 { .hw = &gpll4.clkr.hw },
1117 { .hw = &gpll6.clkr.hw },
1120 static const struct parent_map gcc_xo_ubi32_gpll0_gpll2_gpll4_gpll6_map[] = {
1121 { P_XO, 0 },
1122 { P_UBI32_PLL, 1 },
1123 { P_GPLL0, 2 },
1124 { P_GPLL2, 3 },
1125 { P_GPLL4, 4 },
1126 { P_GPLL6, 5 },
1129 static struct clk_rcg2 nss_ubi0_clk_src = {
1130 .cmd_rcgr = 0x68104,
1131 .freq_tbl = ftbl_nss_ubi_clk_src,
1132 .hid_width = 5,
1133 .parent_map = gcc_xo_ubi32_gpll0_gpll2_gpll4_gpll6_map,
1134 .clkr.hw.init = &(struct clk_init_data){
1135 .name = "nss_ubi0_clk_src",
1136 .parent_data = gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6,
1137 .num_parents = 6,
1138 .ops = &clk_rcg2_ops,
1139 .flags = CLK_SET_RATE_PARENT,
1143 static const struct freq_tbl ftbl_adss_pwm_clk_src[] = {
1144 F(24000000, P_XO, 1, 0, 0),
1145 F(100000000, P_GPLL0, 8, 0, 0),
1149 static struct clk_rcg2 adss_pwm_clk_src = {
1150 .cmd_rcgr = 0x1c008,
1151 .freq_tbl = ftbl_adss_pwm_clk_src,
1152 .hid_width = 5,
1153 .parent_map = gcc_xo_gpll0_map,
1154 .clkr.hw.init = &(struct clk_init_data){
1155 .name = "adss_pwm_clk_src",
1156 .parent_data = gcc_xo_gpll0,
1157 .num_parents = 2,
1158 .ops = &clk_rcg2_ops,
1162 static const struct freq_tbl ftbl_blsp1_qup_i2c_apps_clk_src[] = {
1163 F(24000000, P_XO, 1, 0, 0),
1164 F(25000000, P_GPLL0_DIV2, 16, 0, 0),
1165 F(50000000, P_GPLL0, 16, 0, 0),
1169 static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = {
1170 .cmd_rcgr = 0x0200c,
1171 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
1172 .hid_width = 5,
1173 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1174 .clkr.hw.init = &(struct clk_init_data){
1175 .name = "blsp1_qup1_i2c_apps_clk_src",
1176 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1177 .num_parents = 3,
1178 .ops = &clk_rcg2_ops,
1182 static const struct freq_tbl ftbl_blsp1_qup_spi_apps_clk_src[] = {
1183 F(960000, P_XO, 10, 2, 5),
1184 F(4800000, P_XO, 5, 0, 0),
1185 F(9600000, P_XO, 2, 4, 5),
1186 F(12500000, P_GPLL0_DIV2, 16, 1, 2),
1187 F(16000000, P_GPLL0, 10, 1, 5),
1188 F(24000000, P_XO, 1, 0, 0),
1189 F(25000000, P_GPLL0, 16, 1, 2),
1190 F(50000000, P_GPLL0, 16, 0, 0),
1194 static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = {
1195 .cmd_rcgr = 0x02024,
1196 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
1197 .mnd_width = 8,
1198 .hid_width = 5,
1199 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1200 .clkr.hw.init = &(struct clk_init_data){
1201 .name = "blsp1_qup1_spi_apps_clk_src",
1202 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1203 .num_parents = 3,
1204 .ops = &clk_rcg2_ops,
1208 static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = {
1209 .cmd_rcgr = 0x03000,
1210 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
1211 .hid_width = 5,
1212 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1213 .clkr.hw.init = &(struct clk_init_data){
1214 .name = "blsp1_qup2_i2c_apps_clk_src",
1215 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1216 .num_parents = 3,
1217 .ops = &clk_rcg2_ops,
1221 static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = {
1222 .cmd_rcgr = 0x03014,
1223 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
1224 .mnd_width = 8,
1225 .hid_width = 5,
1226 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1227 .clkr.hw.init = &(struct clk_init_data){
1228 .name = "blsp1_qup2_spi_apps_clk_src",
1229 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1230 .num_parents = 3,
1231 .ops = &clk_rcg2_ops,
1235 static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = {
1236 .cmd_rcgr = 0x04000,
1237 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
1238 .hid_width = 5,
1239 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1240 .clkr.hw.init = &(struct clk_init_data){
1241 .name = "blsp1_qup3_i2c_apps_clk_src",
1242 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1243 .num_parents = 3,
1244 .ops = &clk_rcg2_ops,
1248 static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = {
1249 .cmd_rcgr = 0x04014,
1250 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
1251 .mnd_width = 8,
1252 .hid_width = 5,
1253 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1254 .clkr.hw.init = &(struct clk_init_data){
1255 .name = "blsp1_qup3_spi_apps_clk_src",
1256 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1257 .num_parents = 3,
1258 .ops = &clk_rcg2_ops,
1262 static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = {
1263 .cmd_rcgr = 0x05000,
1264 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
1265 .hid_width = 5,
1266 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1267 .clkr.hw.init = &(struct clk_init_data){
1268 .name = "blsp1_qup4_i2c_apps_clk_src",
1269 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1270 .num_parents = 3,
1271 .ops = &clk_rcg2_ops,
1275 static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = {
1276 .cmd_rcgr = 0x05014,
1277 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
1278 .mnd_width = 8,
1279 .hid_width = 5,
1280 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1281 .clkr.hw.init = &(struct clk_init_data){
1282 .name = "blsp1_qup4_spi_apps_clk_src",
1283 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1284 .num_parents = 3,
1285 .ops = &clk_rcg2_ops,
1289 static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = {
1290 .cmd_rcgr = 0x06000,
1291 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
1292 .hid_width = 5,
1293 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1294 .clkr.hw.init = &(struct clk_init_data){
1295 .name = "blsp1_qup5_i2c_apps_clk_src",
1296 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1297 .num_parents = 3,
1298 .ops = &clk_rcg2_ops,
1302 static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = {
1303 .cmd_rcgr = 0x06014,
1304 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
1305 .mnd_width = 8,
1306 .hid_width = 5,
1307 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1308 .clkr.hw.init = &(struct clk_init_data){
1309 .name = "blsp1_qup5_spi_apps_clk_src",
1310 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1311 .num_parents = 3,
1312 .ops = &clk_rcg2_ops,
1316 static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = {
1317 .cmd_rcgr = 0x07000,
1318 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,
1319 .hid_width = 5,
1320 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1321 .clkr.hw.init = &(struct clk_init_data){
1322 .name = "blsp1_qup6_i2c_apps_clk_src",
1323 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1324 .num_parents = 3,
1325 .ops = &clk_rcg2_ops,
1329 static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = {
1330 .cmd_rcgr = 0x07014,
1331 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,
1332 .mnd_width = 8,
1333 .hid_width = 5,
1334 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1335 .clkr.hw.init = &(struct clk_init_data){
1336 .name = "blsp1_qup6_spi_apps_clk_src",
1337 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1338 .num_parents = 3,
1339 .ops = &clk_rcg2_ops,
1343 static const struct freq_tbl ftbl_blsp1_uart_apps_clk_src[] = {
1344 F(3686400, P_GPLL0_DIV2, 1, 144, 15625),
1345 F(7372800, P_GPLL0_DIV2, 1, 288, 15625),
1346 F(14745600, P_GPLL0_DIV2, 1, 576, 15625),
1347 F(16000000, P_GPLL0_DIV2, 5, 1, 5),
1348 F(24000000, P_XO, 1, 0, 0),
1349 F(24000000, P_GPLL0, 1, 3, 100),
1350 F(25000000, P_GPLL0, 16, 1, 2),
1351 F(32000000, P_GPLL0, 1, 1, 25),
1352 F(40000000, P_GPLL0, 1, 1, 20),
1353 F(46400000, P_GPLL0, 1, 29, 500),
1354 F(48000000, P_GPLL0, 1, 3, 50),
1355 F(51200000, P_GPLL0, 1, 8, 125),
1356 F(56000000, P_GPLL0, 1, 7, 100),
1357 F(58982400, P_GPLL0, 1, 1152, 15625),
1358 F(60000000, P_GPLL0, 1, 3, 40),
1359 F(64000000, P_GPLL0, 12.5, 1, 1),
1363 static struct clk_rcg2 blsp1_uart1_apps_clk_src = {
1364 .cmd_rcgr = 0x02044,
1365 .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
1366 .mnd_width = 16,
1367 .hid_width = 5,
1368 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1369 .clkr.hw.init = &(struct clk_init_data){
1370 .name = "blsp1_uart1_apps_clk_src",
1371 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1372 .num_parents = 3,
1373 .ops = &clk_rcg2_ops,
1377 static struct clk_rcg2 blsp1_uart2_apps_clk_src = {
1378 .cmd_rcgr = 0x03034,
1379 .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
1380 .mnd_width = 16,
1381 .hid_width = 5,
1382 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1383 .clkr.hw.init = &(struct clk_init_data){
1384 .name = "blsp1_uart2_apps_clk_src",
1385 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1386 .num_parents = 3,
1387 .ops = &clk_rcg2_ops,
1391 static struct clk_rcg2 blsp1_uart3_apps_clk_src = {
1392 .cmd_rcgr = 0x04034,
1393 .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
1394 .mnd_width = 16,
1395 .hid_width = 5,
1396 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1397 .clkr.hw.init = &(struct clk_init_data){
1398 .name = "blsp1_uart3_apps_clk_src",
1399 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1400 .num_parents = 3,
1401 .ops = &clk_rcg2_ops,
1405 static struct clk_rcg2 blsp1_uart4_apps_clk_src = {
1406 .cmd_rcgr = 0x05034,
1407 .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
1408 .mnd_width = 16,
1409 .hid_width = 5,
1410 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1411 .clkr.hw.init = &(struct clk_init_data){
1412 .name = "blsp1_uart4_apps_clk_src",
1413 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1414 .num_parents = 3,
1415 .ops = &clk_rcg2_ops,
1419 static struct clk_rcg2 blsp1_uart5_apps_clk_src = {
1420 .cmd_rcgr = 0x06034,
1421 .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
1422 .mnd_width = 16,
1423 .hid_width = 5,
1424 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1425 .clkr.hw.init = &(struct clk_init_data){
1426 .name = "blsp1_uart5_apps_clk_src",
1427 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1428 .num_parents = 3,
1429 .ops = &clk_rcg2_ops,
1433 static struct clk_rcg2 blsp1_uart6_apps_clk_src = {
1434 .cmd_rcgr = 0x07034,
1435 .freq_tbl = ftbl_blsp1_uart_apps_clk_src,
1436 .mnd_width = 16,
1437 .hid_width = 5,
1438 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1439 .clkr.hw.init = &(struct clk_init_data){
1440 .name = "blsp1_uart6_apps_clk_src",
1441 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1442 .num_parents = 3,
1443 .ops = &clk_rcg2_ops,
1447 static const struct freq_tbl ftbl_crypto_clk_src[] = {
1448 F(40000000, P_GPLL0_DIV2, 10, 0, 0),
1449 F(80000000, P_GPLL0, 10, 0, 0),
1450 F(100000000, P_GPLL0, 8, 0, 0),
1451 F(160000000, P_GPLL0, 5, 0, 0),
1455 static struct clk_rcg2 crypto_clk_src = {
1456 .cmd_rcgr = 0x16004,
1457 .freq_tbl = ftbl_crypto_clk_src,
1458 .hid_width = 5,
1459 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1460 .clkr.hw.init = &(struct clk_init_data){
1461 .name = "crypto_clk_src",
1462 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1463 .num_parents = 3,
1464 .ops = &clk_rcg2_ops,
1468 static const struct freq_tbl ftbl_gp_clk_src[] = {
1469 F(24000000, P_XO, 1, 0, 0),
1470 F(50000000, P_GPLL0_DIV2, 8, 0, 0),
1471 F(100000000, P_GPLL0, 8, 0, 0),
1472 F(200000000, P_GPLL0, 4, 0, 0),
1473 F(266666666, P_GPLL0, 3, 0, 0),
1477 static const struct clk_parent_data gcc_xo_gpll0_gpll6_gpll0_sleep_clk[] = {
1478 { .fw_name = "xo" },
1479 { .hw = &gpll0.clkr.hw },
1480 { .hw = &gpll6.clkr.hw },
1481 { .hw = &gpll0_out_main_div2.hw },
1482 { .fw_name = "sleep_clk" },
1485 static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map[] = {
1486 { P_XO, 0 },
1487 { P_GPLL0, 1 },
1488 { P_GPLL6, 2 },
1489 { P_GPLL0_DIV2, 4 },
1490 { P_SLEEP_CLK, 6 },
1493 static struct clk_rcg2 gp1_clk_src = {
1494 .cmd_rcgr = 0x08004,
1495 .freq_tbl = ftbl_gp_clk_src,
1496 .mnd_width = 8,
1497 .hid_width = 5,
1498 .parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map,
1499 .clkr.hw.init = &(struct clk_init_data){
1500 .name = "gp1_clk_src",
1501 .parent_data = gcc_xo_gpll0_gpll6_gpll0_sleep_clk,
1502 .num_parents = 5,
1503 .ops = &clk_rcg2_ops,
1507 static struct clk_rcg2 gp2_clk_src = {
1508 .cmd_rcgr = 0x09004,
1509 .freq_tbl = ftbl_gp_clk_src,
1510 .mnd_width = 8,
1511 .hid_width = 5,
1512 .parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map,
1513 .clkr.hw.init = &(struct clk_init_data){
1514 .name = "gp2_clk_src",
1515 .parent_data = gcc_xo_gpll0_gpll6_gpll0_sleep_clk,
1516 .num_parents = 5,
1517 .ops = &clk_rcg2_ops,
1521 static struct clk_rcg2 gp3_clk_src = {
1522 .cmd_rcgr = 0x0a004,
1523 .freq_tbl = ftbl_gp_clk_src,
1524 .mnd_width = 8,
1525 .hid_width = 5,
1526 .parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map,
1527 .clkr.hw.init = &(struct clk_init_data){
1528 .name = "gp3_clk_src",
1529 .parent_data = gcc_xo_gpll0_gpll6_gpll0_sleep_clk,
1530 .num_parents = 5,
1531 .ops = &clk_rcg2_ops,
1535 static struct clk_fixed_factor nss_ppe_cdiv_clk_src = {
1536 .mult = 1,
1537 .div = 4,
1538 .hw.init = &(struct clk_init_data){
1539 .name = "nss_ppe_cdiv_clk_src",
1540 .parent_hws = (const struct clk_hw *[]){
1541 &nss_ppe_clk_src.clkr.hw },
1542 .num_parents = 1,
1543 .ops = &clk_fixed_factor_ops,
1544 .flags = CLK_SET_RATE_PARENT,
1548 static struct clk_regmap_div nss_ubi0_div_clk_src = {
1549 .reg = 0x68118,
1550 .shift = 0,
1551 .width = 4,
1552 .clkr = {
1553 .hw.init = &(struct clk_init_data){
1554 .name = "nss_ubi0_div_clk_src",
1555 .parent_hws = (const struct clk_hw *[]){
1556 &nss_ubi0_clk_src.clkr.hw },
1557 .num_parents = 1,
1558 .ops = &clk_regmap_div_ro_ops,
1559 .flags = CLK_SET_RATE_PARENT,
1564 static const struct freq_tbl ftbl_pcie_aux_clk_src[] = {
1565 F(24000000, P_XO, 1, 0, 0),
1568 static const struct clk_parent_data gcc_xo_gpll0_core_pi_sleep_clk[] = {
1569 { .fw_name = "xo" },
1570 { .hw = &gpll0.clkr.hw },
1571 { .fw_name = "sleep_clk" },
1574 static const struct parent_map gcc_xo_gpll0_core_pi_sleep_clk_map[] = {
1575 { P_XO, 0 },
1576 { P_GPLL0, 2 },
1577 { P_PI_SLEEP, 6 },
1580 static struct clk_rcg2 pcie0_aux_clk_src = {
1581 .cmd_rcgr = 0x75024,
1582 .freq_tbl = ftbl_pcie_aux_clk_src,
1583 .mnd_width = 16,
1584 .hid_width = 5,
1585 .parent_map = gcc_xo_gpll0_core_pi_sleep_clk_map,
1586 .clkr.hw.init = &(struct clk_init_data){
1587 .name = "pcie0_aux_clk_src",
1588 .parent_data = gcc_xo_gpll0_core_pi_sleep_clk,
1589 .num_parents = 3,
1590 .ops = &clk_rcg2_ops,
1594 static const struct clk_parent_data gcc_pcie20_phy0_pipe_clk_xo[] = {
1595 { .fw_name = "pcie20_phy0_pipe_clk" },
1596 { .fw_name = "xo" },
1599 static const struct parent_map gcc_pcie20_phy0_pipe_clk_xo_map[] = {
1600 { P_PCIE20_PHY0_PIPE, 0 },
1601 { P_XO, 2 },
1604 static struct clk_regmap_mux pcie0_pipe_clk_src = {
1605 .reg = 0x7501c,
1606 .shift = 8,
1607 .width = 2,
1608 .parent_map = gcc_pcie20_phy0_pipe_clk_xo_map,
1609 .clkr = {
1610 .hw.init = &(struct clk_init_data){
1611 .name = "pcie0_pipe_clk_src",
1612 .parent_data = gcc_pcie20_phy0_pipe_clk_xo,
1613 .num_parents = 2,
1614 .ops = &clk_regmap_mux_closest_ops,
1615 .flags = CLK_SET_RATE_PARENT,
1620 static const struct freq_tbl ftbl_sdcc_apps_clk_src[] = {
1621 F(144000, P_XO, 16, 12, 125),
1622 F(400000, P_XO, 12, 1, 5),
1623 F(24000000, P_GPLL2, 12, 1, 4),
1624 F(48000000, P_GPLL2, 12, 1, 2),
1625 F(96000000, P_GPLL2, 12, 0, 0),
1626 F(177777778, P_GPLL0, 4.5, 0, 0),
1627 F(192000000, P_GPLL2, 6, 0, 0),
1628 F(384000000, P_GPLL2, 3, 0, 0),
1632 static const struct clk_parent_data
1633 gcc_xo_gpll0_gpll2_gpll0_out_main_div2[] = {
1634 { .fw_name = "xo" },
1635 { .hw = &gpll0.clkr.hw },
1636 { .hw = &gpll2.clkr.hw },
1637 { .hw = &gpll0_out_main_div2.hw },
1640 static const struct parent_map gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map[] = {
1641 { P_XO, 0 },
1642 { P_GPLL0, 1 },
1643 { P_GPLL2, 2 },
1644 { P_GPLL0_DIV2, 4 },
1647 static struct clk_rcg2 sdcc1_apps_clk_src = {
1648 .cmd_rcgr = 0x42004,
1649 .freq_tbl = ftbl_sdcc_apps_clk_src,
1650 .mnd_width = 8,
1651 .hid_width = 5,
1652 .parent_map = gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map,
1653 .clkr.hw.init = &(struct clk_init_data){
1654 .name = "sdcc1_apps_clk_src",
1655 .parent_data = gcc_xo_gpll0_gpll2_gpll0_out_main_div2,
1656 .num_parents = 4,
1657 .ops = &clk_rcg2_ops,
1661 static const struct freq_tbl ftbl_usb_aux_clk_src[] = {
1662 F(24000000, P_XO, 1, 0, 0),
1666 static struct clk_rcg2 usb0_aux_clk_src = {
1667 .cmd_rcgr = 0x3e05c,
1668 .freq_tbl = ftbl_usb_aux_clk_src,
1669 .mnd_width = 16,
1670 .hid_width = 5,
1671 .parent_map = gcc_xo_gpll0_core_pi_sleep_clk_map,
1672 .clkr.hw.init = &(struct clk_init_data){
1673 .name = "usb0_aux_clk_src",
1674 .parent_data = gcc_xo_gpll0_core_pi_sleep_clk,
1675 .num_parents = 3,
1676 .ops = &clk_rcg2_ops,
1680 static const struct freq_tbl ftbl_usb_mock_utmi_clk_src[] = {
1681 F(24000000, P_XO, 1, 0, 0),
1682 F(60000000, P_GPLL6, 6, 1, 3),
1686 static const struct clk_parent_data
1687 gcc_xo_gpll6_gpll0_gpll0_out_main_div2[] = {
1688 { .fw_name = "xo" },
1689 { .hw = &gpll6.clkr.hw },
1690 { .hw = &gpll0.clkr.hw },
1691 { .hw = &gpll0_out_main_div2.hw },
1694 static const struct parent_map gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map[] = {
1695 { P_XO, 0 },
1696 { P_GPLL6, 1 },
1697 { P_GPLL0, 3 },
1698 { P_GPLL0_DIV2, 4 },
1701 static struct clk_rcg2 usb0_mock_utmi_clk_src = {
1702 .cmd_rcgr = 0x3e020,
1703 .freq_tbl = ftbl_usb_mock_utmi_clk_src,
1704 .mnd_width = 8,
1705 .hid_width = 5,
1706 .parent_map = gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map,
1707 .clkr.hw.init = &(struct clk_init_data){
1708 .name = "usb0_mock_utmi_clk_src",
1709 .parent_data = gcc_xo_gpll6_gpll0_gpll0_out_main_div2,
1710 .num_parents = 4,
1711 .ops = &clk_rcg2_ops,
1715 static const struct clk_parent_data gcc_usb3phy_0_cc_pipe_clk_xo[] = {
1716 { .fw_name = "usb3phy_0_cc_pipe_clk" },
1717 { .fw_name = "xo" },
1720 static const struct parent_map gcc_usb3phy_0_cc_pipe_clk_xo_map[] = {
1721 { P_USB3PHY_0_PIPE, 0 },
1722 { P_XO, 2 },
1725 static struct clk_regmap_mux usb0_pipe_clk_src = {
1726 .reg = 0x3e048,
1727 .shift = 8,
1728 .width = 2,
1729 .parent_map = gcc_usb3phy_0_cc_pipe_clk_xo_map,
1730 .clkr = {
1731 .hw.init = &(struct clk_init_data){
1732 .name = "usb0_pipe_clk_src",
1733 .parent_data = gcc_usb3phy_0_cc_pipe_clk_xo,
1734 .num_parents = 2,
1735 .ops = &clk_regmap_mux_closest_ops,
1736 .flags = CLK_SET_RATE_PARENT,
1741 static const struct freq_tbl ftbl_sdcc_ice_core_clk_src[] = {
1742 F(80000000, P_GPLL0_DIV2, 5, 0, 0),
1743 F(160000000, P_GPLL0, 5, 0, 0),
1744 F(216000000, P_GPLL6, 5, 0, 0),
1745 F(308570000, P_GPLL6, 3.5, 0, 0),
1748 static const struct clk_parent_data gcc_xo_gpll0_gpll6_gpll0_div2[] = {
1749 { .fw_name = "xo"},
1750 { .hw = &gpll0.clkr.hw },
1751 { .hw = &gpll6.clkr.hw },
1752 { .hw = &gpll0_out_main_div2.hw },
1755 static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_div2_map[] = {
1756 { P_XO, 0 },
1757 { P_GPLL0, 1 },
1758 { P_GPLL6, 2 },
1759 { P_GPLL0_DIV2, 4 },
1762 static struct clk_rcg2 sdcc1_ice_core_clk_src = {
1763 .cmd_rcgr = 0x5d000,
1764 .freq_tbl = ftbl_sdcc_ice_core_clk_src,
1765 .mnd_width = 8,
1766 .hid_width = 5,
1767 .parent_map = gcc_xo_gpll0_gpll6_gpll0_div2_map,
1768 .clkr.hw.init = &(struct clk_init_data){
1769 .name = "sdcc1_ice_core_clk_src",
1770 .parent_data = gcc_xo_gpll0_gpll6_gpll0_div2,
1771 .num_parents = 4,
1772 .ops = &clk_rcg2_ops,
1776 static const struct freq_tbl ftbl_qdss_stm_clk_src[] = {
1777 F(24000000, P_XO, 1, 0, 0),
1778 F(50000000, P_GPLL0_DIV2, 8, 0, 0),
1779 F(100000000, P_GPLL0, 8, 0, 0),
1780 F(200000000, P_GPLL0, 4, 0, 0),
1784 static struct clk_rcg2 qdss_stm_clk_src = {
1785 .cmd_rcgr = 0x2902C,
1786 .freq_tbl = ftbl_qdss_stm_clk_src,
1787 .hid_width = 5,
1788 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,
1789 .clkr.hw.init = &(struct clk_init_data){
1790 .name = "qdss_stm_clk_src",
1791 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,
1792 .num_parents = 3,
1793 .ops = &clk_rcg2_ops,
1797 static const struct freq_tbl ftbl_qdss_traceclkin_clk_src[] = {
1798 F(80000000, P_GPLL0_DIV2, 5, 0, 0),
1799 F(160000000, P_GPLL0, 5, 0, 0),
1800 F(300000000, P_GPLL4, 4, 0, 0),
1804 static const struct clk_parent_data gcc_xo_gpll4_gpll0_gpll0_div2[] = {
1805 { .fw_name = "xo" },
1806 { .hw = &gpll4.clkr.hw },
1807 { .hw = &gpll0.clkr.hw },
1808 { .hw = &gpll0_out_main_div2.hw },
1811 static const struct parent_map gcc_xo_gpll4_gpll0_gpll0_div2_map[] = {
1812 { P_XO, 0 },
1813 { P_GPLL4, 1 },
1814 { P_GPLL0, 2 },
1815 { P_GPLL0_DIV2, 4 },
1818 static struct clk_rcg2 qdss_traceclkin_clk_src = {
1819 .cmd_rcgr = 0x29048,
1820 .freq_tbl = ftbl_qdss_traceclkin_clk_src,
1821 .hid_width = 5,
1822 .parent_map = gcc_xo_gpll4_gpll0_gpll0_div2_map,
1823 .clkr.hw.init = &(struct clk_init_data){
1824 .name = "qdss_traceclkin_clk_src",
1825 .parent_data = gcc_xo_gpll4_gpll0_gpll0_div2,
1826 .num_parents = 4,
1827 .ops = &clk_rcg2_ops,
1831 static struct clk_rcg2 usb1_mock_utmi_clk_src = {
1832 .cmd_rcgr = 0x3f020,
1833 .freq_tbl = ftbl_usb_mock_utmi_clk_src,
1834 .mnd_width = 8,
1835 .hid_width = 5,
1836 .parent_map = gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map,
1837 .clkr.hw.init = &(struct clk_init_data){
1838 .name = "usb1_mock_utmi_clk_src",
1839 .parent_data = gcc_xo_gpll6_gpll0_gpll0_out_main_div2,
1840 .num_parents = 4,
1841 .ops = &clk_rcg2_ops,
1845 static struct clk_branch gcc_adss_pwm_clk = {
1846 .halt_reg = 0x1c020,
1847 .clkr = {
1848 .enable_reg = 0x1c020,
1849 .enable_mask = BIT(0),
1850 .hw.init = &(struct clk_init_data){
1851 .name = "gcc_adss_pwm_clk",
1852 .parent_hws = (const struct clk_hw *[]){
1853 &adss_pwm_clk_src.clkr.hw },
1854 .num_parents = 1,
1855 .flags = CLK_SET_RATE_PARENT,
1856 .ops = &clk_branch2_ops,
1861 static struct clk_branch gcc_apss_ahb_clk = {
1862 .halt_reg = 0x4601c,
1863 .halt_check = BRANCH_HALT_VOTED,
1864 .clkr = {
1865 .enable_reg = 0x0b004,
1866 .enable_mask = BIT(14),
1867 .hw.init = &(struct clk_init_data){
1868 .name = "gcc_apss_ahb_clk",
1869 .parent_hws = (const struct clk_hw *[]){
1870 &apss_ahb_postdiv_clk_src.clkr.hw },
1871 .num_parents = 1,
1872 .flags = CLK_SET_RATE_PARENT,
1873 .ops = &clk_branch2_ops,
1878 static const struct freq_tbl ftbl_system_noc_bfdcd_clk_src[] = {
1879 F(24000000, P_XO, 1, 0, 0),
1880 F(50000000, P_GPLL0_DIV2, 8, 0, 0),
1881 F(100000000, P_GPLL0, 8, 0, 0),
1882 F(133333333, P_GPLL0, 6, 0, 0),
1883 F(160000000, P_GPLL0, 5, 0, 0),
1884 F(200000000, P_GPLL0, 4, 0, 0),
1885 F(266666667, P_GPLL0, 3, 0, 0),
1889 static struct clk_rcg2 system_noc_bfdcd_clk_src = {
1890 .cmd_rcgr = 0x26004,
1891 .freq_tbl = ftbl_system_noc_bfdcd_clk_src,
1892 .hid_width = 5,
1893 .parent_map = gcc_xo_gpll0_gpll6_gpll0_out_main_div2_map,
1894 .clkr.hw.init = &(struct clk_init_data){
1895 .name = "system_noc_bfdcd_clk_src",
1896 .parent_data = gcc_xo_gpll0_gpll6_gpll0_out_main_div2,
1897 .num_parents = 4,
1898 .ops = &clk_rcg2_ops,
1902 static const struct freq_tbl ftbl_ubi32_mem_noc_bfdcd_clk_src[] = {
1903 F(24000000, P_XO, 1, 0, 0),
1904 F(307670000, P_BIAS_PLL_NSS_NOC, 1.5, 0, 0),
1905 F(533333333, P_GPLL0, 1.5, 0, 0),
1909 static const struct clk_parent_data
1910 gcc_xo_gpll0_gpll2_bias_pll_nss_noc_clk[] = {
1911 { .fw_name = "xo" },
1912 { .hw = &gpll0.clkr.hw },
1913 { .hw = &gpll2.clkr.hw },
1914 { .fw_name = "bias_pll_nss_noc_clk" },
1917 static const struct parent_map gcc_xo_gpll0_gpll2_bias_pll_nss_noc_clk_map[] = {
1918 { P_XO, 0 },
1919 { P_GPLL0, 1 },
1920 { P_GPLL2, 3 },
1921 { P_BIAS_PLL_NSS_NOC, 4 },
1924 static struct clk_rcg2 ubi32_mem_noc_bfdcd_clk_src = {
1925 .cmd_rcgr = 0x68088,
1926 .freq_tbl = ftbl_ubi32_mem_noc_bfdcd_clk_src,
1927 .hid_width = 5,
1928 .parent_map = gcc_xo_gpll0_gpll2_bias_pll_nss_noc_clk_map,
1929 .clkr.hw.init = &(struct clk_init_data){
1930 .name = "ubi32_mem_noc_bfdcd_clk_src",
1931 .parent_data = gcc_xo_gpll0_gpll2_bias_pll_nss_noc_clk,
1932 .num_parents = 4,
1933 .ops = &clk_rcg2_ops,
1937 static struct clk_branch gcc_apss_axi_clk = {
1938 .halt_reg = 0x46020,
1939 .halt_check = BRANCH_HALT_VOTED,
1940 .clkr = {
1941 .enable_reg = 0x0b004,
1942 .enable_mask = BIT(13),
1943 .hw.init = &(struct clk_init_data){
1944 .name = "gcc_apss_axi_clk",
1945 .parent_hws = (const struct clk_hw *[]){
1946 &apss_axi_clk_src.clkr.hw },
1947 .num_parents = 1,
1948 .flags = CLK_SET_RATE_PARENT,
1949 .ops = &clk_branch2_ops,
1954 static struct clk_branch gcc_blsp1_ahb_clk = {
1955 .halt_reg = 0x01008,
1956 .halt_check = BRANCH_HALT_VOTED,
1957 .clkr = {
1958 .enable_reg = 0x0b004,
1959 .enable_mask = BIT(10),
1960 .hw.init = &(struct clk_init_data){
1961 .name = "gcc_blsp1_ahb_clk",
1962 .parent_hws = (const struct clk_hw *[]){
1963 &pcnoc_bfdcd_clk_src.clkr.hw },
1964 .num_parents = 1,
1965 .flags = CLK_SET_RATE_PARENT,
1966 .ops = &clk_branch2_ops,
1971 static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = {
1972 .halt_reg = 0x02008,
1973 .clkr = {
1974 .enable_reg = 0x02008,
1975 .enable_mask = BIT(0),
1976 .hw.init = &(struct clk_init_data){
1977 .name = "gcc_blsp1_qup1_i2c_apps_clk",
1978 .parent_hws = (const struct clk_hw *[]){
1979 &blsp1_qup1_i2c_apps_clk_src.clkr.hw },
1980 .num_parents = 1,
1981 .flags = CLK_SET_RATE_PARENT,
1982 .ops = &clk_branch2_ops,
1987 static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = {
1988 .halt_reg = 0x02004,
1989 .clkr = {
1990 .enable_reg = 0x02004,
1991 .enable_mask = BIT(0),
1992 .hw.init = &(struct clk_init_data){
1993 .name = "gcc_blsp1_qup1_spi_apps_clk",
1994 .parent_hws = (const struct clk_hw *[]){
1995 &blsp1_qup1_spi_apps_clk_src.clkr.hw },
1996 .num_parents = 1,
1997 .flags = CLK_SET_RATE_PARENT,
1998 .ops = &clk_branch2_ops,
2003 static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = {
2004 .halt_reg = 0x03010,
2005 .clkr = {
2006 .enable_reg = 0x03010,
2007 .enable_mask = BIT(0),
2008 .hw.init = &(struct clk_init_data){
2009 .name = "gcc_blsp1_qup2_i2c_apps_clk",
2010 .parent_hws = (const struct clk_hw *[]){
2011 &blsp1_qup2_i2c_apps_clk_src.clkr.hw },
2012 .num_parents = 1,
2013 .flags = CLK_SET_RATE_PARENT,
2014 .ops = &clk_branch2_ops,
2019 static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = {
2020 .halt_reg = 0x0300c,
2021 .clkr = {
2022 .enable_reg = 0x0300c,
2023 .enable_mask = BIT(0),
2024 .hw.init = &(struct clk_init_data){
2025 .name = "gcc_blsp1_qup2_spi_apps_clk",
2026 .parent_hws = (const struct clk_hw *[]){
2027 &blsp1_qup2_spi_apps_clk_src.clkr.hw },
2028 .num_parents = 1,
2029 .flags = CLK_SET_RATE_PARENT,
2030 .ops = &clk_branch2_ops,
2035 static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = {
2036 .halt_reg = 0x04010,
2037 .clkr = {
2038 .enable_reg = 0x04010,
2039 .enable_mask = BIT(0),
2040 .hw.init = &(struct clk_init_data){
2041 .name = "gcc_blsp1_qup3_i2c_apps_clk",
2042 .parent_hws = (const struct clk_hw *[]){
2043 &blsp1_qup3_i2c_apps_clk_src.clkr.hw },
2044 .num_parents = 1,
2045 .flags = CLK_SET_RATE_PARENT,
2046 .ops = &clk_branch2_ops,
2051 static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = {
2052 .halt_reg = 0x0400c,
2053 .clkr = {
2054 .enable_reg = 0x0400c,
2055 .enable_mask = BIT(0),
2056 .hw.init = &(struct clk_init_data){
2057 .name = "gcc_blsp1_qup3_spi_apps_clk",
2058 .parent_hws = (const struct clk_hw *[]){
2059 &blsp1_qup3_spi_apps_clk_src.clkr.hw },
2060 .num_parents = 1,
2061 .flags = CLK_SET_RATE_PARENT,
2062 .ops = &clk_branch2_ops,
2067 static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = {
2068 .halt_reg = 0x05010,
2069 .clkr = {
2070 .enable_reg = 0x05010,
2071 .enable_mask = BIT(0),
2072 .hw.init = &(struct clk_init_data){
2073 .name = "gcc_blsp1_qup4_i2c_apps_clk",
2074 .parent_hws = (const struct clk_hw *[]){
2075 &blsp1_qup4_i2c_apps_clk_src.clkr.hw },
2076 .num_parents = 1,
2077 .flags = CLK_SET_RATE_PARENT,
2078 .ops = &clk_branch2_ops,
2083 static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = {
2084 .halt_reg = 0x0500c,
2085 .clkr = {
2086 .enable_reg = 0x0500c,
2087 .enable_mask = BIT(0),
2088 .hw.init = &(struct clk_init_data){
2089 .name = "gcc_blsp1_qup4_spi_apps_clk",
2090 .parent_hws = (const struct clk_hw *[]){
2091 &blsp1_qup4_spi_apps_clk_src.clkr.hw },
2092 .num_parents = 1,
2093 .flags = CLK_SET_RATE_PARENT,
2094 .ops = &clk_branch2_ops,
2099 static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = {
2100 .halt_reg = 0x06010,
2101 .clkr = {
2102 .enable_reg = 0x06010,
2103 .enable_mask = BIT(0),
2104 .hw.init = &(struct clk_init_data){
2105 .name = "gcc_blsp1_qup5_i2c_apps_clk",
2106 .parent_hws = (const struct clk_hw *[]){
2107 &blsp1_qup5_i2c_apps_clk_src.clkr.hw },
2108 .num_parents = 1,
2109 .flags = CLK_SET_RATE_PARENT,
2110 .ops = &clk_branch2_ops,
2115 static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = {
2116 .halt_reg = 0x0600c,
2117 .clkr = {
2118 .enable_reg = 0x0600c,
2119 .enable_mask = BIT(0),
2120 .hw.init = &(struct clk_init_data){
2121 .name = "gcc_blsp1_qup5_spi_apps_clk",
2122 .parent_hws = (const struct clk_hw *[]){
2123 &blsp1_qup5_spi_apps_clk_src.clkr.hw },
2124 .num_parents = 1,
2125 .flags = CLK_SET_RATE_PARENT,
2126 .ops = &clk_branch2_ops,
2131 static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = {
2132 .halt_reg = 0x0700c,
2133 .clkr = {
2134 .enable_reg = 0x0700c,
2135 .enable_mask = BIT(0),
2136 .hw.init = &(struct clk_init_data){
2137 .name = "gcc_blsp1_qup6_spi_apps_clk",
2138 .parent_hws = (const struct clk_hw *[]){
2139 &blsp1_qup6_spi_apps_clk_src.clkr.hw },
2140 .num_parents = 1,
2141 .flags = CLK_SET_RATE_PARENT,
2142 .ops = &clk_branch2_ops,
2147 static struct clk_branch gcc_blsp1_uart1_apps_clk = {
2148 .halt_reg = 0x0203c,
2149 .clkr = {
2150 .enable_reg = 0x0203c,
2151 .enable_mask = BIT(0),
2152 .hw.init = &(struct clk_init_data){
2153 .name = "gcc_blsp1_uart1_apps_clk",
2154 .parent_hws = (const struct clk_hw *[]){
2155 &blsp1_uart1_apps_clk_src.clkr.hw },
2156 .num_parents = 1,
2157 .flags = CLK_SET_RATE_PARENT,
2158 .ops = &clk_branch2_ops,
2163 static struct clk_branch gcc_blsp1_uart2_apps_clk = {
2164 .halt_reg = 0x0302c,
2165 .clkr = {
2166 .enable_reg = 0x0302c,
2167 .enable_mask = BIT(0),
2168 .hw.init = &(struct clk_init_data){
2169 .name = "gcc_blsp1_uart2_apps_clk",
2170 .parent_hws = (const struct clk_hw *[]){
2171 &blsp1_uart2_apps_clk_src.clkr.hw },
2172 .num_parents = 1,
2173 .flags = CLK_SET_RATE_PARENT,
2174 .ops = &clk_branch2_ops,
2179 static struct clk_branch gcc_blsp1_uart3_apps_clk = {
2180 .halt_reg = 0x0402c,
2181 .clkr = {
2182 .enable_reg = 0x0402c,
2183 .enable_mask = BIT(0),
2184 .hw.init = &(struct clk_init_data){
2185 .name = "gcc_blsp1_uart3_apps_clk",
2186 .parent_hws = (const struct clk_hw *[]){
2187 &blsp1_uart3_apps_clk_src.clkr.hw },
2188 .num_parents = 1,
2189 .flags = CLK_SET_RATE_PARENT,
2190 .ops = &clk_branch2_ops,
2195 static struct clk_branch gcc_blsp1_uart4_apps_clk = {
2196 .halt_reg = 0x0502c,
2197 .clkr = {
2198 .enable_reg = 0x0502c,
2199 .enable_mask = BIT(0),
2200 .hw.init = &(struct clk_init_data){
2201 .name = "gcc_blsp1_uart4_apps_clk",
2202 .parent_hws = (const struct clk_hw *[]){
2203 &blsp1_uart4_apps_clk_src.clkr.hw },
2204 .num_parents = 1,
2205 .flags = CLK_SET_RATE_PARENT,
2206 .ops = &clk_branch2_ops,
2211 static struct clk_branch gcc_blsp1_uart5_apps_clk = {
2212 .halt_reg = 0x0602c,
2213 .clkr = {
2214 .enable_reg = 0x0602c,
2215 .enable_mask = BIT(0),
2216 .hw.init = &(struct clk_init_data){
2217 .name = "gcc_blsp1_uart5_apps_clk",
2218 .parent_hws = (const struct clk_hw *[]){
2219 &blsp1_uart5_apps_clk_src.clkr.hw },
2220 .num_parents = 1,
2221 .flags = CLK_SET_RATE_PARENT,
2222 .ops = &clk_branch2_ops,
2227 static struct clk_branch gcc_blsp1_uart6_apps_clk = {
2228 .halt_reg = 0x0702c,
2229 .clkr = {
2230 .enable_reg = 0x0702c,
2231 .enable_mask = BIT(0),
2232 .hw.init = &(struct clk_init_data){
2233 .name = "gcc_blsp1_uart6_apps_clk",
2234 .parent_hws = (const struct clk_hw *[]){
2235 &blsp1_uart6_apps_clk_src.clkr.hw },
2236 .num_parents = 1,
2237 .flags = CLK_SET_RATE_PARENT,
2238 .ops = &clk_branch2_ops,
2243 static struct clk_branch gcc_crypto_ahb_clk = {
2244 .halt_reg = 0x16024,
2245 .halt_check = BRANCH_HALT_VOTED,
2246 .clkr = {
2247 .enable_reg = 0x0b004,
2248 .enable_mask = BIT(0),
2249 .hw.init = &(struct clk_init_data){
2250 .name = "gcc_crypto_ahb_clk",
2251 .parent_hws = (const struct clk_hw *[]){
2252 &pcnoc_bfdcd_clk_src.clkr.hw },
2253 .num_parents = 1,
2254 .flags = CLK_SET_RATE_PARENT,
2255 .ops = &clk_branch2_ops,
2260 static struct clk_branch gcc_crypto_axi_clk = {
2261 .halt_reg = 0x16020,
2262 .halt_check = BRANCH_HALT_VOTED,
2263 .clkr = {
2264 .enable_reg = 0x0b004,
2265 .enable_mask = BIT(1),
2266 .hw.init = &(struct clk_init_data){
2267 .name = "gcc_crypto_axi_clk",
2268 .parent_hws = (const struct clk_hw *[]){
2269 &pcnoc_bfdcd_clk_src.clkr.hw },
2270 .num_parents = 1,
2271 .flags = CLK_SET_RATE_PARENT,
2272 .ops = &clk_branch2_ops,
2277 static struct clk_branch gcc_crypto_clk = {
2278 .halt_reg = 0x1601c,
2279 .halt_check = BRANCH_HALT_VOTED,
2280 .clkr = {
2281 .enable_reg = 0x0b004,
2282 .enable_mask = BIT(2),
2283 .hw.init = &(struct clk_init_data){
2284 .name = "gcc_crypto_clk",
2285 .parent_hws = (const struct clk_hw *[]){
2286 &crypto_clk_src.clkr.hw },
2287 .num_parents = 1,
2288 .flags = CLK_SET_RATE_PARENT,
2289 .ops = &clk_branch2_ops,
2294 static struct clk_fixed_factor gpll6_out_main_div2 = {
2295 .mult = 1,
2296 .div = 2,
2297 .hw.init = &(struct clk_init_data){
2298 .name = "gpll6_out_main_div2",
2299 .parent_hws = (const struct clk_hw *[]){
2300 &gpll6_main.clkr.hw },
2301 .num_parents = 1,
2302 .ops = &clk_fixed_factor_ops,
2303 .flags = CLK_SET_RATE_PARENT,
2307 static struct clk_branch gcc_xo_clk = {
2308 .halt_reg = 0x30030,
2309 .clkr = {
2310 .enable_reg = 0x30030,
2311 .enable_mask = BIT(0),
2312 .hw.init = &(struct clk_init_data){
2313 .name = "gcc_xo_clk",
2314 .parent_hws = (const struct clk_hw *[]){
2315 &gcc_xo_clk_src.clkr.hw },
2316 .num_parents = 1,
2317 .flags = CLK_SET_RATE_PARENT,
2318 .ops = &clk_branch2_ops,
2323 static struct clk_branch gcc_gp1_clk = {
2324 .halt_reg = 0x08000,
2325 .clkr = {
2326 .enable_reg = 0x08000,
2327 .enable_mask = BIT(0),
2328 .hw.init = &(struct clk_init_data){
2329 .name = "gcc_gp1_clk",
2330 .parent_hws = (const struct clk_hw *[]){
2331 &gp1_clk_src.clkr.hw },
2332 .num_parents = 1,
2333 .flags = CLK_SET_RATE_PARENT,
2334 .ops = &clk_branch2_ops,
2339 static struct clk_branch gcc_gp2_clk = {
2340 .halt_reg = 0x09000,
2341 .clkr = {
2342 .enable_reg = 0x09000,
2343 .enable_mask = BIT(0),
2344 .hw.init = &(struct clk_init_data){
2345 .name = "gcc_gp2_clk",
2346 .parent_hws = (const struct clk_hw *[]){
2347 &gp2_clk_src.clkr.hw },
2348 .num_parents = 1,
2349 .flags = CLK_SET_RATE_PARENT,
2350 .ops = &clk_branch2_ops,
2355 static struct clk_branch gcc_gp3_clk = {
2356 .halt_reg = 0x0a000,
2357 .clkr = {
2358 .enable_reg = 0x0a000,
2359 .enable_mask = BIT(0),
2360 .hw.init = &(struct clk_init_data){
2361 .name = "gcc_gp3_clk",
2362 .parent_hws = (const struct clk_hw *[]){
2363 &gp3_clk_src.clkr.hw },
2364 .num_parents = 1,
2365 .flags = CLK_SET_RATE_PARENT,
2366 .ops = &clk_branch2_ops,
2371 static struct clk_branch gcc_mdio_ahb_clk = {
2372 .halt_reg = 0x58004,
2373 .clkr = {
2374 .enable_reg = 0x58004,
2375 .enable_mask = BIT(0),
2376 .hw.init = &(struct clk_init_data){
2377 .name = "gcc_mdio_ahb_clk",
2378 .parent_hws = (const struct clk_hw *[]){
2379 &pcnoc_bfdcd_clk_src.clkr.hw },
2380 .num_parents = 1,
2381 .flags = CLK_SET_RATE_PARENT,
2382 .ops = &clk_branch2_ops,
2387 static struct clk_branch gcc_crypto_ppe_clk = {
2388 .halt_reg = 0x68310,
2389 .clkr = {
2390 .enable_reg = 0x68310,
2391 .enable_mask = BIT(0),
2392 .hw.init = &(struct clk_init_data){
2393 .name = "gcc_crypto_ppe_clk",
2394 .parent_hws = (const struct clk_hw *[]){
2395 &nss_ppe_clk_src.clkr.hw },
2396 .num_parents = 1,
2397 .flags = CLK_SET_RATE_PARENT,
2398 .ops = &clk_branch2_ops,
2403 static struct clk_branch gcc_nss_ce_apb_clk = {
2404 .halt_reg = 0x68174,
2405 .clkr = {
2406 .enable_reg = 0x68174,
2407 .enable_mask = BIT(0),
2408 .hw.init = &(struct clk_init_data){
2409 .name = "gcc_nss_ce_apb_clk",
2410 .parent_hws = (const struct clk_hw *[]){
2411 &nss_ce_clk_src.clkr.hw },
2412 .num_parents = 1,
2413 .flags = CLK_SET_RATE_PARENT,
2414 .ops = &clk_branch2_ops,
2419 static struct clk_branch gcc_nss_ce_axi_clk = {
2420 .halt_reg = 0x68170,
2421 .clkr = {
2422 .enable_reg = 0x68170,
2423 .enable_mask = BIT(0),
2424 .hw.init = &(struct clk_init_data){
2425 .name = "gcc_nss_ce_axi_clk",
2426 .parent_hws = (const struct clk_hw *[]){
2427 &nss_ce_clk_src.clkr.hw },
2428 .num_parents = 1,
2429 .flags = CLK_SET_RATE_PARENT,
2430 .ops = &clk_branch2_ops,
2435 static struct clk_branch gcc_nss_cfg_clk = {
2436 .halt_reg = 0x68160,
2437 .clkr = {
2438 .enable_reg = 0x68160,
2439 .enable_mask = BIT(0),
2440 .hw.init = &(struct clk_init_data){
2441 .name = "gcc_nss_cfg_clk",
2442 .parent_hws = (const struct clk_hw *[]){
2443 &pcnoc_bfdcd_clk_src.clkr.hw },
2444 .num_parents = 1,
2445 .flags = CLK_SET_RATE_PARENT,
2446 .ops = &clk_branch2_ops,
2451 static struct clk_branch gcc_nss_crypto_clk = {
2452 .halt_reg = 0x68164,
2453 .clkr = {
2454 .enable_reg = 0x68164,
2455 .enable_mask = BIT(0),
2456 .hw.init = &(struct clk_init_data){
2457 .name = "gcc_nss_crypto_clk",
2458 .parent_hws = (const struct clk_hw *[]){
2459 &nss_crypto_clk_src.clkr.hw },
2460 .num_parents = 1,
2461 .flags = CLK_SET_RATE_PARENT,
2462 .ops = &clk_branch2_ops,
2467 static struct clk_branch gcc_nss_csr_clk = {
2468 .halt_reg = 0x68318,
2469 .clkr = {
2470 .enable_reg = 0x68318,
2471 .enable_mask = BIT(0),
2472 .hw.init = &(struct clk_init_data){
2473 .name = "gcc_nss_csr_clk",
2474 .parent_hws = (const struct clk_hw *[]){
2475 &nss_ce_clk_src.clkr.hw },
2476 .num_parents = 1,
2477 .flags = CLK_SET_RATE_PARENT,
2478 .ops = &clk_branch2_ops,
2483 static struct clk_branch gcc_nss_edma_cfg_clk = {
2484 .halt_reg = 0x6819C,
2485 .clkr = {
2486 .enable_reg = 0x6819C,
2487 .enable_mask = BIT(0),
2488 .hw.init = &(struct clk_init_data){
2489 .name = "gcc_nss_edma_cfg_clk",
2490 .parent_hws = (const struct clk_hw *[]){
2491 &nss_ppe_clk_src.clkr.hw },
2492 .num_parents = 1,
2493 .flags = CLK_SET_RATE_PARENT,
2494 .ops = &clk_branch2_ops,
2499 static struct clk_branch gcc_nss_edma_clk = {
2500 .halt_reg = 0x68198,
2501 .clkr = {
2502 .enable_reg = 0x68198,
2503 .enable_mask = BIT(0),
2504 .hw.init = &(struct clk_init_data){
2505 .name = "gcc_nss_edma_clk",
2506 .parent_hws = (const struct clk_hw *[]){
2507 &nss_ppe_clk_src.clkr.hw },
2508 .num_parents = 1,
2509 .flags = CLK_SET_RATE_PARENT,
2510 .ops = &clk_branch2_ops,
2515 static struct clk_branch gcc_nss_noc_clk = {
2516 .halt_reg = 0x68168,
2517 .clkr = {
2518 .enable_reg = 0x68168,
2519 .enable_mask = BIT(0),
2520 .hw.init = &(struct clk_init_data){
2521 .name = "gcc_nss_noc_clk",
2522 .parent_hws = (const struct clk_hw *[]){
2523 &snoc_nssnoc_bfdcd_clk_src.clkr.hw },
2524 .num_parents = 1,
2525 .flags = CLK_SET_RATE_PARENT,
2526 .ops = &clk_branch2_ops,
2531 static struct clk_branch gcc_ubi0_utcm_clk = {
2532 .halt_reg = 0x2606c,
2533 .clkr = {
2534 .enable_reg = 0x2606c,
2535 .enable_mask = BIT(0),
2536 .hw.init = &(struct clk_init_data){
2537 .name = "gcc_ubi0_utcm_clk",
2538 .parent_hws = (const struct clk_hw *[]){
2539 &snoc_nssnoc_bfdcd_clk_src.clkr.hw },
2540 .num_parents = 1,
2541 .flags = CLK_SET_RATE_PARENT,
2542 .ops = &clk_branch2_ops,
2547 static struct clk_branch gcc_snoc_nssnoc_clk = {
2548 .halt_reg = 0x26070,
2549 .clkr = {
2550 .enable_reg = 0x26070,
2551 .enable_mask = BIT(0),
2552 .hw.init = &(struct clk_init_data){
2553 .name = "gcc_snoc_nssnoc_clk",
2554 .parent_hws = (const struct clk_hw *[]){
2555 &snoc_nssnoc_bfdcd_clk_src.clkr.hw },
2556 .num_parents = 1,
2557 .flags = CLK_SET_RATE_PARENT,
2558 .ops = &clk_branch2_ops,
2563 static const struct freq_tbl ftbl_wcss_ahb_clk_src[] = {
2564 F(24000000, P_XO, 1, 0, 0),
2565 F(133333333, P_GPLL0, 6, 0, 0),
2569 static const struct freq_tbl ftbl_q6_axi_clk_src[] = {
2570 F(24000000, P_XO, 1, 0, 0),
2571 F(400000000, P_GPLL0, 2, 0, 0),
2575 static struct clk_rcg2 wcss_ahb_clk_src = {
2576 .cmd_rcgr = 0x59020,
2577 .freq_tbl = ftbl_wcss_ahb_clk_src,
2578 .hid_width = 5,
2579 .parent_map = gcc_xo_gpll0_map,
2580 .clkr.hw.init = &(struct clk_init_data){
2581 .name = "wcss_ahb_clk_src",
2582 .parent_data = gcc_xo_gpll0,
2583 .num_parents = 2,
2584 .ops = &clk_rcg2_ops,
2588 static const struct clk_parent_data gcc_xo_gpll0_gpll2_gpll4_gpll6[] = {
2589 { .fw_name = "xo" },
2590 { .hw = &gpll0.clkr.hw },
2591 { .hw = &gpll2.clkr.hw },
2592 { .hw = &gpll4.clkr.hw },
2593 { .hw = &gpll6.clkr.hw },
2596 static const struct parent_map gcc_xo_gpll0_gpll2_gpll4_gpll6_map[] = {
2597 { P_XO, 0 },
2598 { P_GPLL0, 1 },
2599 { P_GPLL2, 2 },
2600 { P_GPLL4, 3 },
2601 { P_GPLL6, 4 },
2604 static struct clk_rcg2 q6_axi_clk_src = {
2605 .cmd_rcgr = 0x59120,
2606 .freq_tbl = ftbl_q6_axi_clk_src,
2607 .hid_width = 5,
2608 .parent_map = gcc_xo_gpll0_gpll2_gpll4_gpll6_map,
2609 .clkr.hw.init = &(struct clk_init_data){
2610 .name = "q6_axi_clk_src",
2611 .parent_data = gcc_xo_gpll0_gpll2_gpll4_gpll6,
2612 .num_parents = 5,
2613 .ops = &clk_rcg2_ops,
2617 static const struct freq_tbl ftbl_lpass_core_axim_clk_src[] = {
2618 F(24000000, P_XO, 1, 0, 0),
2619 F(100000000, P_GPLL0, 8, 0, 0),
2623 static struct clk_rcg2 lpass_core_axim_clk_src = {
2624 .cmd_rcgr = 0x1F020,
2625 .freq_tbl = ftbl_lpass_core_axim_clk_src,
2626 .hid_width = 5,
2627 .parent_map = gcc_xo_gpll0_map,
2628 .clkr.hw.init = &(struct clk_init_data){
2629 .name = "lpass_core_axim_clk_src",
2630 .parent_data = gcc_xo_gpll0,
2631 .num_parents = 2,
2632 .ops = &clk_rcg2_ops,
2636 static const struct freq_tbl ftbl_lpass_snoc_cfg_clk_src[] = {
2637 F(24000000, P_XO, 1, 0, 0),
2638 F(266666667, P_GPLL0, 3, 0, 0),
2642 static struct clk_rcg2 lpass_snoc_cfg_clk_src = {
2643 .cmd_rcgr = 0x1F040,
2644 .freq_tbl = ftbl_lpass_snoc_cfg_clk_src,
2645 .hid_width = 5,
2646 .parent_map = gcc_xo_gpll0_map,
2647 .clkr.hw.init = &(struct clk_init_data){
2648 .name = "lpass_snoc_cfg_clk_src",
2649 .parent_data = gcc_xo_gpll0,
2650 .num_parents = 2,
2651 .ops = &clk_rcg2_ops,
2655 static const struct freq_tbl ftbl_lpass_q6_axim_clk_src[] = {
2656 F(24000000, P_XO, 1, 0, 0),
2657 F(400000000, P_GPLL0, 2, 0, 0),
2661 static struct clk_rcg2 lpass_q6_axim_clk_src = {
2662 .cmd_rcgr = 0x1F008,
2663 .freq_tbl = ftbl_lpass_q6_axim_clk_src,
2664 .hid_width = 5,
2665 .parent_map = gcc_xo_gpll0_map,
2666 .clkr.hw.init = &(struct clk_init_data){
2667 .name = "lpass_q6_axim_clk_src",
2668 .parent_data = gcc_xo_gpll0,
2669 .num_parents = 2,
2670 .ops = &clk_rcg2_ops,
2674 static struct freq_tbl ftbl_rbcpr_wcss_clk_src[] = {
2675 F(24000000, P_XO, 1, 0, 0),
2676 F(50000000, P_GPLL0, 16, 0, 0),
2680 static struct clk_rcg2 rbcpr_wcss_clk_src = {
2681 .cmd_rcgr = 0x3a00c,
2682 .freq_tbl = ftbl_rbcpr_wcss_clk_src,
2683 .hid_width = 5,
2684 .parent_map = gcc_xo_gpll0_out_main_div2_gpll0_map,
2685 .clkr.hw.init = &(struct clk_init_data){
2686 .name = "rbcpr_wcss_clk_src",
2687 .parent_data = gcc_xo_gpll0_out_main_div2_gpll0,
2688 .num_parents = 3,
2689 .ops = &clk_rcg2_ops,
2693 static struct clk_branch gcc_lpass_core_axim_clk = {
2694 .halt_reg = 0x1F028,
2695 .clkr = {
2696 .enable_reg = 0x1F028,
2697 .enable_mask = BIT(0),
2698 .hw.init = &(struct clk_init_data){
2699 .name = "gcc_lpass_core_axim_clk",
2700 .parent_hws = (const struct clk_hw *[]){
2701 &lpass_core_axim_clk_src.clkr.hw },
2702 .num_parents = 1,
2703 .flags = CLK_SET_RATE_PARENT,
2704 .ops = &clk_branch2_ops,
2709 static struct clk_branch gcc_lpass_snoc_cfg_clk = {
2710 .halt_reg = 0x1F048,
2711 .clkr = {
2712 .enable_reg = 0x1F048,
2713 .enable_mask = BIT(0),
2714 .hw.init = &(struct clk_init_data){
2715 .name = "gcc_lpass_snoc_cfg_clk",
2716 .parent_hws = (const struct clk_hw *[]){
2717 &lpass_snoc_cfg_clk_src.clkr.hw },
2718 .num_parents = 1,
2719 .flags = CLK_SET_RATE_PARENT,
2720 .ops = &clk_branch2_ops,
2725 static struct clk_branch gcc_lpass_q6_axim_clk = {
2726 .halt_reg = 0x1F010,
2727 .clkr = {
2728 .enable_reg = 0x1F010,
2729 .enable_mask = BIT(0),
2730 .hw.init = &(struct clk_init_data){
2731 .name = "gcc_lpass_q6_axim_clk",
2732 .parent_hws = (const struct clk_hw *[]){
2733 &lpass_q6_axim_clk_src.clkr.hw },
2734 .num_parents = 1,
2735 .flags = CLK_SET_RATE_PARENT,
2736 .ops = &clk_branch2_ops,
2741 static struct clk_branch gcc_lpass_q6_atbm_at_clk = {
2742 .halt_reg = 0x1F018,
2743 .clkr = {
2744 .enable_reg = 0x1F018,
2745 .enable_mask = BIT(0),
2746 .hw.init = &(struct clk_init_data){
2747 .name = "gcc_lpass_q6_atbm_at_clk",
2748 .parent_hws = (const struct clk_hw *[]){
2749 &qdss_at_clk_src.clkr.hw },
2750 .num_parents = 1,
2751 .flags = CLK_SET_RATE_PARENT,
2752 .ops = &clk_branch2_ops,
2757 static struct clk_branch gcc_lpass_q6_pclkdbg_clk = {
2758 .halt_reg = 0x1F01C,
2759 .clkr = {
2760 .enable_reg = 0x1F01C,
2761 .enable_mask = BIT(0),
2762 .hw.init = &(struct clk_init_data){
2763 .name = "gcc_lpass_q6_pclkdbg_clk",
2764 .parent_hws = (const struct clk_hw *[]){
2765 &qdss_dap_sync_clk_src.hw },
2766 .num_parents = 1,
2767 .flags = CLK_SET_RATE_PARENT,
2768 .ops = &clk_branch2_ops,
2773 static struct clk_branch gcc_lpass_q6ss_tsctr_1to2_clk = {
2774 .halt_reg = 0x1F014,
2775 .clkr = {
2776 .enable_reg = 0x1F014,
2777 .enable_mask = BIT(0),
2778 .hw.init = &(struct clk_init_data){
2779 .name = "gcc_lpass_q6ss_tsctr_1to2_clk",
2780 .parent_hws = (const struct clk_hw *[]){
2781 &qdss_tsctr_div2_clk_src.hw },
2782 .num_parents = 1,
2783 .flags = CLK_SET_RATE_PARENT,
2784 .ops = &clk_branch2_ops,
2789 static struct clk_branch gcc_lpass_q6ss_trig_clk = {
2790 .halt_reg = 0x1F038,
2791 .clkr = {
2792 .enable_reg = 0x1F038,
2793 .enable_mask = BIT(0),
2794 .hw.init = &(struct clk_init_data){
2795 .name = "gcc_lpass_q6ss_trig_clk",
2796 .parent_hws = (const struct clk_hw *[]){
2797 &qdss_dap_sync_clk_src.hw },
2798 .num_parents = 1,
2799 .flags = CLK_SET_RATE_PARENT,
2800 .ops = &clk_branch2_ops,
2805 static struct clk_branch gcc_lpass_tbu_clk = {
2806 .halt_reg = 0x12094,
2807 .clkr = {
2808 .enable_reg = 0xb00c,
2809 .enable_mask = BIT(10),
2810 .hw.init = &(struct clk_init_data){
2811 .name = "gcc_lpass_tbu_clk",
2812 .parent_hws = (const struct clk_hw *[]){
2813 &lpass_q6_axim_clk_src.clkr.hw },
2814 .num_parents = 1,
2815 .flags = CLK_SET_RATE_PARENT,
2816 .ops = &clk_branch2_ops,
2821 static struct clk_branch gcc_pcnoc_lpass_clk = {
2822 .halt_reg = 0x27020,
2823 .clkr = {
2824 .enable_reg = 0x27020,
2825 .enable_mask = BIT(0),
2826 .hw.init = &(struct clk_init_data){
2827 .name = "gcc_pcnoc_lpass_clk",
2828 .parent_hws = (const struct clk_hw *[]){
2829 &lpass_core_axim_clk_src.clkr.hw },
2830 .num_parents = 1,
2831 .flags = CLK_SET_RATE_PARENT,
2832 .ops = &clk_branch2_ops,
2837 static struct clk_branch gcc_mem_noc_lpass_clk = {
2838 .halt_reg = 0x1D044,
2839 .clkr = {
2840 .enable_reg = 0x1D044,
2841 .enable_mask = BIT(0),
2842 .hw.init = &(struct clk_init_data){
2843 .name = "gcc_mem_noc_lpass_clk",
2844 .parent_hws = (const struct clk_hw *[]){
2845 &lpass_q6_axim_clk_src.clkr.hw },
2846 .num_parents = 1,
2847 .flags = CLK_SET_RATE_PARENT,
2848 .ops = &clk_branch2_ops,
2853 static struct clk_branch gcc_snoc_lpass_cfg_clk = {
2854 .halt_reg = 0x26074,
2855 .clkr = {
2856 .enable_reg = 0x26074,
2857 .enable_mask = BIT(0),
2858 .hw.init = &(struct clk_init_data){
2859 .name = "gcc_snoc_lpass_cfg_clk",
2860 .parent_hws = (const struct clk_hw *[]){
2861 &lpass_snoc_cfg_clk_src.clkr.hw },
2862 .num_parents = 1,
2863 .flags = CLK_SET_RATE_PARENT,
2864 .ops = &clk_branch2_ops,
2869 static struct clk_branch gcc_mem_noc_ubi32_clk = {
2870 .halt_reg = 0x1D03C,
2871 .clkr = {
2872 .enable_reg = 0x1D03C,
2873 .enable_mask = BIT(0),
2874 .hw.init = &(struct clk_init_data){
2875 .name = "gcc_mem_noc_ubi32_clk",
2876 .parent_hws = (const struct clk_hw *[]){
2877 &ubi32_mem_noc_bfdcd_clk_src.clkr.hw },
2878 .num_parents = 1,
2879 .flags = CLK_SET_RATE_PARENT,
2880 .ops = &clk_branch2_ops,
2885 static struct clk_branch gcc_nss_port1_rx_clk = {
2886 .halt_reg = 0x68240,
2887 .clkr = {
2888 .enable_reg = 0x68240,
2889 .enable_mask = BIT(0),
2890 .hw.init = &(struct clk_init_data){
2891 .name = "gcc_nss_port1_rx_clk",
2892 .parent_hws = (const struct clk_hw *[]){
2893 &nss_port1_rx_div_clk_src.clkr.hw },
2894 .num_parents = 1,
2895 .flags = CLK_SET_RATE_PARENT,
2896 .ops = &clk_branch2_ops,
2901 static struct clk_branch gcc_nss_port1_tx_clk = {
2902 .halt_reg = 0x68244,
2903 .clkr = {
2904 .enable_reg = 0x68244,
2905 .enable_mask = BIT(0),
2906 .hw.init = &(struct clk_init_data){
2907 .name = "gcc_nss_port1_tx_clk",
2908 .parent_hws = (const struct clk_hw *[]){
2909 &nss_port1_tx_div_clk_src.clkr.hw },
2910 .num_parents = 1,
2911 .flags = CLK_SET_RATE_PARENT,
2912 .ops = &clk_branch2_ops,
2917 static struct clk_branch gcc_nss_port2_rx_clk = {
2918 .halt_reg = 0x68248,
2919 .clkr = {
2920 .enable_reg = 0x68248,
2921 .enable_mask = BIT(0),
2922 .hw.init = &(struct clk_init_data){
2923 .name = "gcc_nss_port2_rx_clk",
2924 .parent_hws = (const struct clk_hw *[]){
2925 &nss_port2_rx_div_clk_src.clkr.hw },
2926 .num_parents = 1,
2927 .flags = CLK_SET_RATE_PARENT,
2928 .ops = &clk_branch2_ops,
2933 static struct clk_branch gcc_nss_port2_tx_clk = {
2934 .halt_reg = 0x6824c,
2935 .clkr = {
2936 .enable_reg = 0x6824c,
2937 .enable_mask = BIT(0),
2938 .hw.init = &(struct clk_init_data){
2939 .name = "gcc_nss_port2_tx_clk",
2940 .parent_hws = (const struct clk_hw *[]){
2941 &nss_port2_tx_div_clk_src.clkr.hw },
2942 .num_parents = 1,
2943 .flags = CLK_SET_RATE_PARENT,
2944 .ops = &clk_branch2_ops,
2949 static struct clk_branch gcc_nss_port3_rx_clk = {
2950 .halt_reg = 0x68250,
2951 .clkr = {
2952 .enable_reg = 0x68250,
2953 .enable_mask = BIT(0),
2954 .hw.init = &(struct clk_init_data){
2955 .name = "gcc_nss_port3_rx_clk",
2956 .parent_hws = (const struct clk_hw *[]){
2957 &nss_port3_rx_div_clk_src.clkr.hw },
2958 .num_parents = 1,
2959 .flags = CLK_SET_RATE_PARENT,
2960 .ops = &clk_branch2_ops,
2965 static struct clk_branch gcc_nss_port3_tx_clk = {
2966 .halt_reg = 0x68254,
2967 .clkr = {
2968 .enable_reg = 0x68254,
2969 .enable_mask = BIT(0),
2970 .hw.init = &(struct clk_init_data){
2971 .name = "gcc_nss_port3_tx_clk",
2972 .parent_hws = (const struct clk_hw *[]){
2973 &nss_port3_tx_div_clk_src.clkr.hw },
2974 .num_parents = 1,
2975 .flags = CLK_SET_RATE_PARENT,
2976 .ops = &clk_branch2_ops,
2981 static struct clk_branch gcc_nss_port4_rx_clk = {
2982 .halt_reg = 0x68258,
2983 .clkr = {
2984 .enable_reg = 0x68258,
2985 .enable_mask = BIT(0),
2986 .hw.init = &(struct clk_init_data){
2987 .name = "gcc_nss_port4_rx_clk",
2988 .parent_hws = (const struct clk_hw *[]){
2989 &nss_port4_rx_div_clk_src.clkr.hw },
2990 .num_parents = 1,
2991 .flags = CLK_SET_RATE_PARENT,
2992 .ops = &clk_branch2_ops,
2997 static struct clk_branch gcc_nss_port4_tx_clk = {
2998 .halt_reg = 0x6825c,
2999 .clkr = {
3000 .enable_reg = 0x6825c,
3001 .enable_mask = BIT(0),
3002 .hw.init = &(struct clk_init_data){
3003 .name = "gcc_nss_port4_tx_clk",
3004 .parent_hws = (const struct clk_hw *[]){
3005 &nss_port4_tx_div_clk_src.clkr.hw },
3006 .num_parents = 1,
3007 .flags = CLK_SET_RATE_PARENT,
3008 .ops = &clk_branch2_ops,
3013 static struct clk_branch gcc_nss_port5_rx_clk = {
3014 .halt_reg = 0x68260,
3015 .clkr = {
3016 .enable_reg = 0x68260,
3017 .enable_mask = BIT(0),
3018 .hw.init = &(struct clk_init_data){
3019 .name = "gcc_nss_port5_rx_clk",
3020 .parent_hws = (const struct clk_hw *[]){
3021 &nss_port5_rx_div_clk_src.clkr.hw },
3022 .num_parents = 1,
3023 .flags = CLK_SET_RATE_PARENT,
3024 .ops = &clk_branch2_ops,
3029 static struct clk_branch gcc_nss_port5_tx_clk = {
3030 .halt_reg = 0x68264,
3031 .clkr = {
3032 .enable_reg = 0x68264,
3033 .enable_mask = BIT(0),
3034 .hw.init = &(struct clk_init_data){
3035 .name = "gcc_nss_port5_tx_clk",
3036 .parent_hws = (const struct clk_hw *[]){
3037 &nss_port5_tx_div_clk_src.clkr.hw },
3038 .num_parents = 1,
3039 .flags = CLK_SET_RATE_PARENT,
3040 .ops = &clk_branch2_ops,
3045 static struct clk_branch gcc_nss_ppe_cfg_clk = {
3046 .halt_reg = 0x68194,
3047 .clkr = {
3048 .enable_reg = 0x68194,
3049 .enable_mask = BIT(0),
3050 .hw.init = &(struct clk_init_data){
3051 .name = "gcc_nss_ppe_cfg_clk",
3052 .parent_hws = (const struct clk_hw *[]){
3053 &nss_ppe_clk_src.clkr.hw },
3054 .num_parents = 1,
3055 .flags = CLK_SET_RATE_PARENT,
3056 .ops = &clk_branch2_ops,
3061 static struct clk_branch gcc_nss_ppe_clk = {
3062 .halt_reg = 0x68190,
3063 .clkr = {
3064 .enable_reg = 0x68190,
3065 .enable_mask = BIT(0),
3066 .hw.init = &(struct clk_init_data){
3067 .name = "gcc_nss_ppe_clk",
3068 .parent_hws = (const struct clk_hw *[]){
3069 &nss_ppe_clk_src.clkr.hw },
3070 .num_parents = 1,
3071 .flags = CLK_SET_RATE_PARENT,
3072 .ops = &clk_branch2_ops,
3077 static struct clk_branch gcc_nss_ppe_ipe_clk = {
3078 .halt_reg = 0x68338,
3079 .clkr = {
3080 .enable_reg = 0x68338,
3081 .enable_mask = BIT(0),
3082 .hw.init = &(struct clk_init_data){
3083 .name = "gcc_nss_ppe_ipe_clk",
3084 .parent_hws = (const struct clk_hw *[]){
3085 &nss_ppe_clk_src.clkr.hw },
3086 .num_parents = 1,
3087 .flags = CLK_SET_RATE_PARENT,
3088 .ops = &clk_branch2_ops,
3093 static struct clk_branch gcc_nss_ptp_ref_clk = {
3094 .halt_reg = 0x6816C,
3095 .clkr = {
3096 .enable_reg = 0x6816C,
3097 .enable_mask = BIT(0),
3098 .hw.init = &(struct clk_init_data){
3099 .name = "gcc_nss_ptp_ref_clk",
3100 .parent_hws = (const struct clk_hw *[]){
3101 &nss_ppe_cdiv_clk_src.hw },
3102 .num_parents = 1,
3103 .flags = CLK_SET_RATE_PARENT,
3104 .ops = &clk_branch2_ops,
3109 static struct clk_branch gcc_nssnoc_ce_apb_clk = {
3110 .halt_reg = 0x6830C,
3111 .clkr = {
3112 .enable_reg = 0x6830C,
3113 .enable_mask = BIT(0),
3114 .hw.init = &(struct clk_init_data){
3115 .name = "gcc_nssnoc_ce_apb_clk",
3116 .parent_hws = (const struct clk_hw *[]){
3117 &nss_ce_clk_src.clkr.hw },
3118 .num_parents = 1,
3119 .flags = CLK_SET_RATE_PARENT,
3120 .ops = &clk_branch2_ops,
3125 static struct clk_branch gcc_nssnoc_ce_axi_clk = {
3126 .halt_reg = 0x68308,
3127 .clkr = {
3128 .enable_reg = 0x68308,
3129 .enable_mask = BIT(0),
3130 .hw.init = &(struct clk_init_data){
3131 .name = "gcc_nssnoc_ce_axi_clk",
3132 .parent_hws = (const struct clk_hw *[]){
3133 &nss_ce_clk_src.clkr.hw },
3134 .num_parents = 1,
3135 .flags = CLK_SET_RATE_PARENT,
3136 .ops = &clk_branch2_ops,
3141 static struct clk_branch gcc_nssnoc_crypto_clk = {
3142 .halt_reg = 0x68314,
3143 .clkr = {
3144 .enable_reg = 0x68314,
3145 .enable_mask = BIT(0),
3146 .hw.init = &(struct clk_init_data){
3147 .name = "gcc_nssnoc_crypto_clk",
3148 .parent_hws = (const struct clk_hw *[]){
3149 &nss_crypto_clk_src.clkr.hw },
3150 .num_parents = 1,
3151 .flags = CLK_SET_RATE_PARENT,
3152 .ops = &clk_branch2_ops,
3157 static struct clk_branch gcc_nssnoc_ppe_cfg_clk = {
3158 .halt_reg = 0x68304,
3159 .clkr = {
3160 .enable_reg = 0x68304,
3161 .enable_mask = BIT(0),
3162 .hw.init = &(struct clk_init_data){
3163 .name = "gcc_nssnoc_ppe_cfg_clk",
3164 .parent_hws = (const struct clk_hw *[]){
3165 &nss_ppe_clk_src.clkr.hw },
3166 .flags = CLK_SET_RATE_PARENT,
3167 .ops = &clk_branch2_ops,
3172 static struct clk_branch gcc_nssnoc_ppe_clk = {
3173 .halt_reg = 0x68300,
3174 .clkr = {
3175 .enable_reg = 0x68300,
3176 .enable_mask = BIT(0),
3177 .hw.init = &(struct clk_init_data){
3178 .name = "gcc_nssnoc_ppe_clk",
3179 .parent_hws = (const struct clk_hw *[]){
3180 &nss_ppe_clk_src.clkr.hw },
3181 .num_parents = 1,
3182 .flags = CLK_SET_RATE_PARENT,
3183 .ops = &clk_branch2_ops,
3188 static struct clk_branch gcc_nssnoc_qosgen_ref_clk = {
3189 .halt_reg = 0x68180,
3190 .clkr = {
3191 .enable_reg = 0x68180,
3192 .enable_mask = BIT(0),
3193 .hw.init = &(struct clk_init_data){
3194 .name = "gcc_nssnoc_qosgen_ref_clk",
3195 .parent_hws = (const struct clk_hw *[]){
3196 &gcc_xo_clk_src.clkr.hw },
3197 .num_parents = 1,
3198 .flags = CLK_SET_RATE_PARENT,
3199 .ops = &clk_branch2_ops,
3204 static struct clk_branch gcc_nssnoc_snoc_clk = {
3205 .halt_reg = 0x68188,
3206 .clkr = {
3207 .enable_reg = 0x68188,
3208 .enable_mask = BIT(0),
3209 .hw.init = &(struct clk_init_data){
3210 .name = "gcc_nssnoc_snoc_clk",
3211 .parent_hws = (const struct clk_hw *[]){
3212 &system_noc_bfdcd_clk_src.clkr.hw },
3213 .num_parents = 1,
3214 .flags = CLK_SET_RATE_PARENT,
3215 .ops = &clk_branch2_ops,
3220 static struct clk_branch gcc_nssnoc_timeout_ref_clk = {
3221 .halt_reg = 0x68184,
3222 .clkr = {
3223 .enable_reg = 0x68184,
3224 .enable_mask = BIT(0),
3225 .hw.init = &(struct clk_init_data){
3226 .name = "gcc_nssnoc_timeout_ref_clk",
3227 .parent_hws = (const struct clk_hw *[]){
3228 &gcc_xo_div4_clk_src.hw },
3229 .num_parents = 1,
3230 .flags = CLK_SET_RATE_PARENT,
3231 .ops = &clk_branch2_ops,
3236 static struct clk_branch gcc_nssnoc_ubi0_ahb_clk = {
3237 .halt_reg = 0x68270,
3238 .clkr = {
3239 .enable_reg = 0x68270,
3240 .enable_mask = BIT(0),
3241 .hw.init = &(struct clk_init_data){
3242 .name = "gcc_nssnoc_ubi0_ahb_clk",
3243 .parent_hws = (const struct clk_hw *[]){
3244 &nss_ce_clk_src.clkr.hw },
3245 .num_parents = 1,
3246 .flags = CLK_SET_RATE_PARENT,
3247 .ops = &clk_branch2_ops,
3252 static struct clk_branch gcc_port1_mac_clk = {
3253 .halt_reg = 0x68320,
3254 .clkr = {
3255 .enable_reg = 0x68320,
3256 .enable_mask = BIT(0),
3257 .hw.init = &(struct clk_init_data){
3258 .name = "gcc_port1_mac_clk",
3259 .parent_hws = (const struct clk_hw *[]){
3260 &nss_ppe_clk_src.clkr.hw },
3261 .num_parents = 1,
3262 .flags = CLK_SET_RATE_PARENT,
3263 .ops = &clk_branch2_ops,
3268 static struct clk_branch gcc_port2_mac_clk = {
3269 .halt_reg = 0x68324,
3270 .clkr = {
3271 .enable_reg = 0x68324,
3272 .enable_mask = BIT(0),
3273 .hw.init = &(struct clk_init_data){
3274 .name = "gcc_port2_mac_clk",
3275 .parent_hws = (const struct clk_hw *[]){
3276 &nss_ppe_clk_src.clkr.hw },
3277 .num_parents = 1,
3278 .flags = CLK_SET_RATE_PARENT,
3279 .ops = &clk_branch2_ops,
3284 static struct clk_branch gcc_port3_mac_clk = {
3285 .halt_reg = 0x68328,
3286 .clkr = {
3287 .enable_reg = 0x68328,
3288 .enable_mask = BIT(0),
3289 .hw.init = &(struct clk_init_data){
3290 .name = "gcc_port3_mac_clk",
3291 .parent_hws = (const struct clk_hw *[]){
3292 &nss_ppe_clk_src.clkr.hw },
3293 .num_parents = 1,
3294 .flags = CLK_SET_RATE_PARENT,
3295 .ops = &clk_branch2_ops,
3300 static struct clk_branch gcc_port4_mac_clk = {
3301 .halt_reg = 0x6832c,
3302 .clkr = {
3303 .enable_reg = 0x6832c,
3304 .enable_mask = BIT(0),
3305 .hw.init = &(struct clk_init_data){
3306 .name = "gcc_port4_mac_clk",
3307 .parent_hws = (const struct clk_hw *[]){
3308 &nss_ppe_clk_src.clkr.hw },
3309 .num_parents = 1,
3310 .flags = CLK_SET_RATE_PARENT,
3311 .ops = &clk_branch2_ops,
3316 static struct clk_branch gcc_port5_mac_clk = {
3317 .halt_reg = 0x68330,
3318 .clkr = {
3319 .enable_reg = 0x68330,
3320 .enable_mask = BIT(0),
3321 .hw.init = &(struct clk_init_data){
3322 .name = "gcc_port5_mac_clk",
3323 .parent_hws = (const struct clk_hw *[]){
3324 &nss_ppe_clk_src.clkr.hw },
3325 .num_parents = 1,
3326 .flags = CLK_SET_RATE_PARENT,
3327 .ops = &clk_branch2_ops,
3332 static struct clk_branch gcc_ubi0_ahb_clk = {
3333 .halt_reg = 0x6820C,
3334 .halt_check = BRANCH_HALT_DELAY,
3335 .clkr = {
3336 .enable_reg = 0x6820C,
3337 .enable_mask = BIT(0),
3338 .hw.init = &(struct clk_init_data){
3339 .name = "gcc_ubi0_ahb_clk",
3340 .parent_hws = (const struct clk_hw *[]){
3341 &nss_ce_clk_src.clkr.hw },
3342 .num_parents = 1,
3343 .flags = CLK_SET_RATE_PARENT,
3344 .ops = &clk_branch2_ops,
3349 static struct clk_branch gcc_ubi0_axi_clk = {
3350 .halt_reg = 0x68200,
3351 .halt_check = BRANCH_HALT_DELAY,
3352 .clkr = {
3353 .enable_reg = 0x68200,
3354 .enable_mask = BIT(0),
3355 .hw.init = &(struct clk_init_data){
3356 .name = "gcc_ubi0_axi_clk",
3357 .parent_hws = (const struct clk_hw *[]){
3358 &ubi32_mem_noc_bfdcd_clk_src.clkr.hw },
3359 .num_parents = 1,
3360 .flags = CLK_SET_RATE_PARENT,
3361 .ops = &clk_branch2_ops,
3366 static struct clk_branch gcc_ubi0_nc_axi_clk = {
3367 .halt_reg = 0x68204,
3368 .halt_check = BRANCH_HALT_DELAY,
3369 .clkr = {
3370 .enable_reg = 0x68204,
3371 .enable_mask = BIT(0),
3372 .hw.init = &(struct clk_init_data){
3373 .name = "gcc_ubi0_nc_axi_clk",
3374 .parent_hws = (const struct clk_hw *[]){
3375 &snoc_nssnoc_bfdcd_clk_src.clkr.hw },
3376 .num_parents = 1,
3377 .flags = CLK_SET_RATE_PARENT,
3378 .ops = &clk_branch2_ops,
3383 static struct clk_branch gcc_ubi0_core_clk = {
3384 .halt_reg = 0x68210,
3385 .halt_check = BRANCH_HALT_DELAY,
3386 .clkr = {
3387 .enable_reg = 0x68210,
3388 .enable_mask = BIT(0),
3389 .hw.init = &(struct clk_init_data){
3390 .name = "gcc_ubi0_core_clk",
3391 .parent_hws = (const struct clk_hw *[]){
3392 &nss_ubi0_div_clk_src.clkr.hw },
3393 .num_parents = 1,
3394 .flags = CLK_SET_RATE_PARENT,
3395 .ops = &clk_branch2_ops,
3400 static struct clk_branch gcc_pcie0_ahb_clk = {
3401 .halt_reg = 0x75010,
3402 .clkr = {
3403 .enable_reg = 0x75010,
3404 .enable_mask = BIT(0),
3405 .hw.init = &(struct clk_init_data){
3406 .name = "gcc_pcie0_ahb_clk",
3407 .parent_hws = (const struct clk_hw *[]){
3408 &pcnoc_bfdcd_clk_src.clkr.hw },
3409 .num_parents = 1,
3410 .flags = CLK_SET_RATE_PARENT,
3411 .ops = &clk_branch2_ops,
3416 static struct clk_branch gcc_pcie0_aux_clk = {
3417 .halt_reg = 0x75014,
3418 .clkr = {
3419 .enable_reg = 0x75014,
3420 .enable_mask = BIT(0),
3421 .hw.init = &(struct clk_init_data){
3422 .name = "gcc_pcie0_aux_clk",
3423 .parent_hws = (const struct clk_hw *[]){
3424 &pcie0_aux_clk_src.clkr.hw },
3425 .num_parents = 1,
3426 .flags = CLK_SET_RATE_PARENT,
3427 .ops = &clk_branch2_ops,
3432 static struct clk_branch gcc_pcie0_axi_m_clk = {
3433 .halt_reg = 0x75008,
3434 .clkr = {
3435 .enable_reg = 0x75008,
3436 .enable_mask = BIT(0),
3437 .hw.init = &(struct clk_init_data){
3438 .name = "gcc_pcie0_axi_m_clk",
3439 .parent_hws = (const struct clk_hw *[]){
3440 &pcie0_axi_clk_src.clkr.hw },
3441 .num_parents = 1,
3442 .flags = CLK_SET_RATE_PARENT,
3443 .ops = &clk_branch2_ops,
3448 static struct clk_branch gcc_pcie0_axi_s_clk = {
3449 .halt_reg = 0x7500c,
3450 .clkr = {
3451 .enable_reg = 0x7500c,
3452 .enable_mask = BIT(0),
3453 .hw.init = &(struct clk_init_data){
3454 .name = "gcc_pcie0_axi_s_clk",
3455 .parent_hws = (const struct clk_hw *[]){
3456 &pcie0_axi_clk_src.clkr.hw },
3457 .num_parents = 1,
3458 .flags = CLK_SET_RATE_PARENT,
3459 .ops = &clk_branch2_ops,
3464 static struct clk_branch gcc_sys_noc_pcie0_axi_clk = {
3465 .halt_reg = 0x26048,
3466 .clkr = {
3467 .enable_reg = 0x26048,
3468 .enable_mask = BIT(0),
3469 .hw.init = &(struct clk_init_data){
3470 .name = "gcc_sys_noc_pcie0_axi_clk",
3471 .parent_hws = (const struct clk_hw *[]){
3472 &pcie0_axi_clk_src.clkr.hw },
3473 .num_parents = 1,
3474 .flags = CLK_SET_RATE_PARENT,
3475 .ops = &clk_branch2_ops,
3480 static struct clk_branch gcc_pcie0_pipe_clk = {
3481 .halt_reg = 0x75018,
3482 .halt_check = BRANCH_HALT_DELAY,
3483 .clkr = {
3484 .enable_reg = 0x75018,
3485 .enable_mask = BIT(0),
3486 .hw.init = &(struct clk_init_data){
3487 .name = "gcc_pcie0_pipe_clk",
3488 .parent_hws = (const struct clk_hw *[]){
3489 &pcie0_pipe_clk_src.clkr.hw },
3490 .num_parents = 1,
3491 .flags = CLK_SET_RATE_PARENT,
3492 .ops = &clk_branch2_ops,
3497 static struct clk_branch gcc_prng_ahb_clk = {
3498 .halt_reg = 0x13004,
3499 .halt_check = BRANCH_HALT_VOTED,
3500 .clkr = {
3501 .enable_reg = 0x0b004,
3502 .enable_mask = BIT(8),
3503 .hw.init = &(struct clk_init_data){
3504 .name = "gcc_prng_ahb_clk",
3505 .parent_hws = (const struct clk_hw *[]){
3506 &pcnoc_bfdcd_clk_src.clkr.hw },
3507 .num_parents = 1,
3508 .flags = CLK_SET_RATE_PARENT,
3509 .ops = &clk_branch2_ops,
3514 static struct clk_branch gcc_qdss_dap_clk = {
3515 .halt_reg = 0x29084,
3516 .clkr = {
3517 .enable_reg = 0x29084,
3518 .enable_mask = BIT(0),
3519 .hw.init = &(struct clk_init_data){
3520 .name = "gcc_qdss_dap_clk",
3521 .parent_hws = (const struct clk_hw *[]){
3522 &qdss_dap_sync_clk_src.hw },
3523 .num_parents = 1,
3524 .flags = CLK_SET_RATE_PARENT,
3525 .ops = &clk_branch2_ops,
3530 static struct clk_branch gcc_qpic_ahb_clk = {
3531 .halt_reg = 0x57024,
3532 .clkr = {
3533 .enable_reg = 0x57024,
3534 .enable_mask = BIT(0),
3535 .hw.init = &(struct clk_init_data){
3536 .name = "gcc_qpic_ahb_clk",
3537 .parent_hws = (const struct clk_hw *[]){
3538 &pcnoc_bfdcd_clk_src.clkr.hw },
3539 .num_parents = 1,
3540 .flags = CLK_SET_RATE_PARENT,
3541 .ops = &clk_branch2_ops,
3546 static struct clk_branch gcc_qpic_clk = {
3547 .halt_reg = 0x57020,
3548 .clkr = {
3549 .enable_reg = 0x57020,
3550 .enable_mask = BIT(0),
3551 .hw.init = &(struct clk_init_data){
3552 .name = "gcc_qpic_clk",
3553 .parent_hws = (const struct clk_hw *[]){
3554 &pcnoc_bfdcd_clk_src.clkr.hw },
3555 .num_parents = 1,
3556 .flags = CLK_SET_RATE_PARENT,
3557 .ops = &clk_branch2_ops,
3562 static struct clk_branch gcc_sdcc1_ahb_clk = {
3563 .halt_reg = 0x4201c,
3564 .clkr = {
3565 .enable_reg = 0x4201c,
3566 .enable_mask = BIT(0),
3567 .hw.init = &(struct clk_init_data){
3568 .name = "gcc_sdcc1_ahb_clk",
3569 .parent_hws = (const struct clk_hw *[]){
3570 &pcnoc_bfdcd_clk_src.clkr.hw },
3571 .num_parents = 1,
3572 .flags = CLK_SET_RATE_PARENT,
3573 .ops = &clk_branch2_ops,
3578 static struct clk_branch gcc_sdcc1_apps_clk = {
3579 .halt_reg = 0x42018,
3580 .clkr = {
3581 .enable_reg = 0x42018,
3582 .enable_mask = BIT(0),
3583 .hw.init = &(struct clk_init_data){
3584 .name = "gcc_sdcc1_apps_clk",
3585 .parent_hws = (const struct clk_hw *[]){
3586 &sdcc1_apps_clk_src.clkr.hw },
3587 .num_parents = 1,
3588 .flags = CLK_SET_RATE_PARENT,
3589 .ops = &clk_branch2_ops,
3594 static struct clk_branch gcc_uniphy0_ahb_clk = {
3595 .halt_reg = 0x56008,
3596 .clkr = {
3597 .enable_reg = 0x56008,
3598 .enable_mask = BIT(0),
3599 .hw.init = &(struct clk_init_data){
3600 .name = "gcc_uniphy0_ahb_clk",
3601 .parent_hws = (const struct clk_hw *[]){
3602 &pcnoc_bfdcd_clk_src.clkr.hw },
3603 .num_parents = 1,
3604 .flags = CLK_SET_RATE_PARENT,
3605 .ops = &clk_branch2_ops,
3610 static struct clk_branch gcc_uniphy0_port1_rx_clk = {
3611 .halt_reg = 0x56010,
3612 .clkr = {
3613 .enable_reg = 0x56010,
3614 .enable_mask = BIT(0),
3615 .hw.init = &(struct clk_init_data){
3616 .name = "gcc_uniphy0_port1_rx_clk",
3617 .parent_hws = (const struct clk_hw *[]){
3618 &nss_port1_rx_div_clk_src.clkr.hw },
3619 .num_parents = 1,
3620 .flags = CLK_SET_RATE_PARENT,
3621 .ops = &clk_branch2_ops,
3626 static struct clk_branch gcc_uniphy0_port1_tx_clk = {
3627 .halt_reg = 0x56014,
3628 .clkr = {
3629 .enable_reg = 0x56014,
3630 .enable_mask = BIT(0),
3631 .hw.init = &(struct clk_init_data){
3632 .name = "gcc_uniphy0_port1_tx_clk",
3633 .parent_hws = (const struct clk_hw *[]){
3634 &nss_port1_tx_div_clk_src.clkr.hw },
3635 .num_parents = 1,
3636 .flags = CLK_SET_RATE_PARENT,
3637 .ops = &clk_branch2_ops,
3642 static struct clk_branch gcc_uniphy0_port2_rx_clk = {
3643 .halt_reg = 0x56018,
3644 .clkr = {
3645 .enable_reg = 0x56018,
3646 .enable_mask = BIT(0),
3647 .hw.init = &(struct clk_init_data){
3648 .name = "gcc_uniphy0_port2_rx_clk",
3649 .parent_hws = (const struct clk_hw *[]){
3650 &nss_port2_rx_div_clk_src.clkr.hw },
3651 .num_parents = 1,
3652 .flags = CLK_SET_RATE_PARENT,
3653 .ops = &clk_branch2_ops,
3658 static struct clk_branch gcc_uniphy0_port2_tx_clk = {
3659 .halt_reg = 0x5601c,
3660 .clkr = {
3661 .enable_reg = 0x5601c,
3662 .enable_mask = BIT(0),
3663 .hw.init = &(struct clk_init_data){
3664 .name = "gcc_uniphy0_port2_tx_clk",
3665 .parent_hws = (const struct clk_hw *[]){
3666 &nss_port2_tx_div_clk_src.clkr.hw },
3667 .num_parents = 1,
3668 .flags = CLK_SET_RATE_PARENT,
3669 .ops = &clk_branch2_ops,
3674 static struct clk_branch gcc_uniphy0_port3_rx_clk = {
3675 .halt_reg = 0x56020,
3676 .clkr = {
3677 .enable_reg = 0x56020,
3678 .enable_mask = BIT(0),
3679 .hw.init = &(struct clk_init_data){
3680 .name = "gcc_uniphy0_port3_rx_clk",
3681 .parent_hws = (const struct clk_hw *[]){
3682 &nss_port3_rx_div_clk_src.clkr.hw },
3683 .num_parents = 1,
3684 .flags = CLK_SET_RATE_PARENT,
3685 .ops = &clk_branch2_ops,
3690 static struct clk_branch gcc_uniphy0_port3_tx_clk = {
3691 .halt_reg = 0x56024,
3692 .clkr = {
3693 .enable_reg = 0x56024,
3694 .enable_mask = BIT(0),
3695 .hw.init = &(struct clk_init_data){
3696 .name = "gcc_uniphy0_port3_tx_clk",
3697 .parent_hws = (const struct clk_hw *[]){
3698 &nss_port3_tx_div_clk_src.clkr.hw },
3699 .num_parents = 1,
3700 .flags = CLK_SET_RATE_PARENT,
3701 .ops = &clk_branch2_ops,
3706 static struct clk_branch gcc_uniphy0_port4_rx_clk = {
3707 .halt_reg = 0x56028,
3708 .clkr = {
3709 .enable_reg = 0x56028,
3710 .enable_mask = BIT(0),
3711 .hw.init = &(struct clk_init_data){
3712 .name = "gcc_uniphy0_port4_rx_clk",
3713 .parent_hws = (const struct clk_hw *[]){
3714 &nss_port4_rx_div_clk_src.clkr.hw },
3715 .num_parents = 1,
3716 .flags = CLK_SET_RATE_PARENT,
3717 .ops = &clk_branch2_ops,
3722 static struct clk_branch gcc_uniphy0_port4_tx_clk = {
3723 .halt_reg = 0x5602c,
3724 .clkr = {
3725 .enable_reg = 0x5602c,
3726 .enable_mask = BIT(0),
3727 .hw.init = &(struct clk_init_data){
3728 .name = "gcc_uniphy0_port4_tx_clk",
3729 .parent_hws = (const struct clk_hw *[]){
3730 &nss_port4_tx_div_clk_src.clkr.hw },
3731 .num_parents = 1,
3732 .flags = CLK_SET_RATE_PARENT,
3733 .ops = &clk_branch2_ops,
3738 static struct clk_branch gcc_uniphy0_port5_rx_clk = {
3739 .halt_reg = 0x56030,
3740 .clkr = {
3741 .enable_reg = 0x56030,
3742 .enable_mask = BIT(0),
3743 .hw.init = &(struct clk_init_data){
3744 .name = "gcc_uniphy0_port5_rx_clk",
3745 .parent_hws = (const struct clk_hw *[]){
3746 &nss_port5_rx_div_clk_src.clkr.hw },
3747 .num_parents = 1,
3748 .flags = CLK_SET_RATE_PARENT,
3749 .ops = &clk_branch2_ops,
3754 static struct clk_branch gcc_uniphy0_port5_tx_clk = {
3755 .halt_reg = 0x56034,
3756 .clkr = {
3757 .enable_reg = 0x56034,
3758 .enable_mask = BIT(0),
3759 .hw.init = &(struct clk_init_data){
3760 .name = "gcc_uniphy0_port5_tx_clk",
3761 .parent_hws = (const struct clk_hw *[]){
3762 &nss_port5_tx_div_clk_src.clkr.hw },
3763 .num_parents = 1,
3764 .flags = CLK_SET_RATE_PARENT,
3765 .ops = &clk_branch2_ops,
3770 static struct clk_branch gcc_uniphy0_sys_clk = {
3771 .halt_reg = 0x5600C,
3772 .clkr = {
3773 .enable_reg = 0x5600C,
3774 .enable_mask = BIT(0),
3775 .hw.init = &(struct clk_init_data){
3776 .name = "gcc_uniphy0_sys_clk",
3777 .parent_hws = (const struct clk_hw *[]){
3778 &gcc_xo_clk_src.clkr.hw },
3779 .num_parents = 1,
3780 .flags = CLK_SET_RATE_PARENT,
3781 .ops = &clk_branch2_ops,
3786 static struct clk_branch gcc_uniphy1_ahb_clk = {
3787 .halt_reg = 0x56108,
3788 .clkr = {
3789 .enable_reg = 0x56108,
3790 .enable_mask = BIT(0),
3791 .hw.init = &(struct clk_init_data){
3792 .name = "gcc_uniphy1_ahb_clk",
3793 .parent_hws = (const struct clk_hw *[]){
3794 &pcnoc_bfdcd_clk_src.clkr.hw },
3795 .num_parents = 1,
3796 .flags = CLK_SET_RATE_PARENT,
3797 .ops = &clk_branch2_ops,
3802 static struct clk_branch gcc_uniphy1_port5_rx_clk = {
3803 .halt_reg = 0x56110,
3804 .clkr = {
3805 .enable_reg = 0x56110,
3806 .enable_mask = BIT(0),
3807 .hw.init = &(struct clk_init_data){
3808 .name = "gcc_uniphy1_port5_rx_clk",
3809 .parent_hws = (const struct clk_hw *[]){
3810 &nss_port5_rx_div_clk_src.clkr.hw },
3811 .num_parents = 1,
3812 .flags = CLK_SET_RATE_PARENT,
3813 .ops = &clk_branch2_ops,
3818 static struct clk_branch gcc_uniphy1_port5_tx_clk = {
3819 .halt_reg = 0x56114,
3820 .clkr = {
3821 .enable_reg = 0x56114,
3822 .enable_mask = BIT(0),
3823 .hw.init = &(struct clk_init_data){
3824 .name = "gcc_uniphy1_port5_tx_clk",
3825 .parent_hws = (const struct clk_hw *[]){
3826 &nss_port5_tx_div_clk_src.clkr.hw },
3827 .num_parents = 1,
3828 .flags = CLK_SET_RATE_PARENT,
3829 .ops = &clk_branch2_ops,
3834 static struct clk_branch gcc_uniphy1_sys_clk = {
3835 .halt_reg = 0x5610C,
3836 .clkr = {
3837 .enable_reg = 0x5610C,
3838 .enable_mask = BIT(0),
3839 .hw.init = &(struct clk_init_data){
3840 .name = "gcc_uniphy1_sys_clk",
3841 .parent_hws = (const struct clk_hw *[]){
3842 &gcc_xo_clk_src.clkr.hw },
3843 .num_parents = 1,
3844 .flags = CLK_SET_RATE_PARENT,
3845 .ops = &clk_branch2_ops,
3850 static struct clk_branch gcc_usb0_aux_clk = {
3851 .halt_reg = 0x3e044,
3852 .clkr = {
3853 .enable_reg = 0x3e044,
3854 .enable_mask = BIT(0),
3855 .hw.init = &(struct clk_init_data){
3856 .name = "gcc_usb0_aux_clk",
3857 .parent_hws = (const struct clk_hw *[]){
3858 &usb0_aux_clk_src.clkr.hw },
3859 .num_parents = 1,
3860 .flags = CLK_SET_RATE_PARENT,
3861 .ops = &clk_branch2_ops,
3866 static struct clk_branch gcc_usb0_master_clk = {
3867 .halt_reg = 0x3e000,
3868 .clkr = {
3869 .enable_reg = 0x3e000,
3870 .enable_mask = BIT(0),
3871 .hw.init = &(struct clk_init_data){
3872 .name = "gcc_usb0_master_clk",
3873 .parent_hws = (const struct clk_hw *[]){
3874 &usb0_master_clk_src.clkr.hw },
3875 .num_parents = 1,
3876 .flags = CLK_SET_RATE_PARENT,
3877 .ops = &clk_branch2_ops,
3882 static struct clk_branch gcc_snoc_bus_timeout2_ahb_clk = {
3883 .halt_reg = 0x47014,
3884 .clkr = {
3885 .enable_reg = 0x47014,
3886 .enable_mask = BIT(0),
3887 .hw.init = &(struct clk_init_data){
3888 .name = "gcc_snoc_bus_timeout2_ahb_clk",
3889 .parent_hws = (const struct clk_hw *[]){
3890 &usb0_master_clk_src.clkr.hw },
3891 .num_parents = 1,
3892 .flags = CLK_SET_RATE_PARENT,
3893 .ops = &clk_branch2_ops,
3898 static struct clk_rcg2 pcie0_rchng_clk_src = {
3899 .cmd_rcgr = 0x75070,
3900 .freq_tbl = ftbl_pcie_rchng_clk_src,
3901 .hid_width = 5,
3902 .parent_map = gcc_xo_gpll0_map,
3903 .clkr.hw.init = &(struct clk_init_data){
3904 .name = "pcie0_rchng_clk_src",
3905 .parent_data = gcc_xo_gpll0,
3906 .num_parents = 2,
3907 .ops = &clk_rcg2_ops,
3911 static struct clk_branch gcc_pcie0_rchng_clk = {
3912 .halt_reg = 0x75070,
3913 .clkr = {
3914 .enable_reg = 0x75070,
3915 .enable_mask = BIT(1),
3916 .hw.init = &(struct clk_init_data){
3917 .name = "gcc_pcie0_rchng_clk",
3918 .parent_hws = (const struct clk_hw *[]){
3919 &pcie0_rchng_clk_src.clkr.hw },
3920 .num_parents = 1,
3921 .flags = CLK_SET_RATE_PARENT,
3922 .ops = &clk_branch2_ops,
3927 static struct clk_branch gcc_pcie0_axi_s_bridge_clk = {
3928 .halt_reg = 0x75048,
3929 .clkr = {
3930 .enable_reg = 0x75048,
3931 .enable_mask = BIT(0),
3932 .hw.init = &(struct clk_init_data){
3933 .name = "gcc_pcie0_axi_s_bridge_clk",
3934 .parent_hws = (const struct clk_hw *[]){
3935 &pcie0_axi_clk_src.clkr.hw },
3936 .num_parents = 1,
3937 .flags = CLK_SET_RATE_PARENT,
3938 .ops = &clk_branch2_ops,
3943 static struct clk_branch gcc_sys_noc_usb0_axi_clk = {
3944 .halt_reg = 0x26040,
3945 .clkr = {
3946 .enable_reg = 0x26040,
3947 .enable_mask = BIT(0),
3948 .hw.init = &(struct clk_init_data){
3949 .name = "gcc_sys_noc_usb0_axi_clk",
3950 .parent_hws = (const struct clk_hw *[]){
3951 &usb0_master_clk_src.clkr.hw },
3952 .num_parents = 1,
3953 .flags = CLK_SET_RATE_PARENT,
3954 .ops = &clk_branch2_ops,
3959 static struct clk_branch gcc_usb0_mock_utmi_clk = {
3960 .halt_reg = 0x3e008,
3961 .clkr = {
3962 .enable_reg = 0x3e008,
3963 .enable_mask = BIT(0),
3964 .hw.init = &(struct clk_init_data){
3965 .name = "gcc_usb0_mock_utmi_clk",
3966 .parent_hws = (const struct clk_hw *[]){
3967 &usb0_mock_utmi_clk_src.clkr.hw },
3968 .num_parents = 1,
3969 .flags = CLK_SET_RATE_PARENT,
3970 .ops = &clk_branch2_ops,
3975 static struct clk_branch gcc_usb0_phy_cfg_ahb_clk = {
3976 .halt_reg = 0x3e080,
3977 .clkr = {
3978 .enable_reg = 0x3e080,
3979 .enable_mask = BIT(0),
3980 .hw.init = &(struct clk_init_data){
3981 .name = "gcc_usb0_phy_cfg_ahb_clk",
3982 .parent_hws = (const struct clk_hw *[]){
3983 &pcnoc_bfdcd_clk_src.clkr.hw },
3984 .num_parents = 1,
3985 .flags = CLK_SET_RATE_PARENT,
3986 .ops = &clk_branch2_ops,
3991 static struct clk_branch gcc_usb0_pipe_clk = {
3992 .halt_reg = 0x3e040,
3993 .halt_check = BRANCH_HALT_DELAY,
3994 .clkr = {
3995 .enable_reg = 0x3e040,
3996 .enable_mask = BIT(0),
3997 .hw.init = &(struct clk_init_data){
3998 .name = "gcc_usb0_pipe_clk",
3999 .parent_hws = (const struct clk_hw *[]){
4000 &usb0_pipe_clk_src.clkr.hw },
4001 .num_parents = 1,
4002 .flags = CLK_SET_RATE_PARENT,
4003 .ops = &clk_branch2_ops,
4008 static struct clk_branch gcc_usb0_sleep_clk = {
4009 .halt_reg = 0x3e004,
4010 .clkr = {
4011 .enable_reg = 0x3e004,
4012 .enable_mask = BIT(0),
4013 .hw.init = &(struct clk_init_data){
4014 .name = "gcc_usb0_sleep_clk",
4015 .parent_hws = (const struct clk_hw *[]){
4016 &gcc_sleep_clk_src.clkr.hw },
4017 .num_parents = 1,
4018 .flags = CLK_SET_RATE_PARENT,
4019 .ops = &clk_branch2_ops,
4024 static struct clk_branch gcc_usb1_master_clk = {
4025 .halt_reg = 0x3f000,
4026 .clkr = {
4027 .enable_reg = 0x3f000,
4028 .enable_mask = BIT(0),
4029 .hw.init = &(struct clk_init_data){
4030 .name = "gcc_usb1_master_clk",
4031 .parent_hws = (const struct clk_hw *[]){
4032 &pcnoc_bfdcd_clk_src.clkr.hw },
4033 .num_parents = 1,
4034 .flags = CLK_SET_RATE_PARENT,
4035 .ops = &clk_branch2_ops,
4040 static struct clk_branch gcc_usb1_mock_utmi_clk = {
4041 .halt_reg = 0x3f008,
4042 .clkr = {
4043 .enable_reg = 0x3f008,
4044 .enable_mask = BIT(0),
4045 .hw.init = &(struct clk_init_data){
4046 .name = "gcc_usb1_mock_utmi_clk",
4047 .parent_hws = (const struct clk_hw *[]){
4048 &usb1_mock_utmi_clk_src.clkr.hw },
4049 .num_parents = 1,
4050 .flags = CLK_SET_RATE_PARENT,
4051 .ops = &clk_branch2_ops,
4056 static struct clk_branch gcc_usb1_phy_cfg_ahb_clk = {
4057 .halt_reg = 0x3f080,
4058 .clkr = {
4059 .enable_reg = 0x3f080,
4060 .enable_mask = BIT(0),
4061 .hw.init = &(struct clk_init_data){
4062 .name = "gcc_usb1_phy_cfg_ahb_clk",
4063 .parent_hws = (const struct clk_hw *[]){
4064 &pcnoc_bfdcd_clk_src.clkr.hw },
4065 .num_parents = 1,
4066 .flags = CLK_SET_RATE_PARENT,
4067 .ops = &clk_branch2_ops,
4072 static struct clk_branch gcc_usb1_sleep_clk = {
4073 .halt_reg = 0x3f004,
4074 .clkr = {
4075 .enable_reg = 0x3f004,
4076 .enable_mask = BIT(0),
4077 .hw.init = &(struct clk_init_data){
4078 .name = "gcc_usb1_sleep_clk",
4079 .parent_hws = (const struct clk_hw *[]){
4080 &gcc_sleep_clk_src.clkr.hw },
4081 .num_parents = 1,
4082 .flags = CLK_SET_RATE_PARENT,
4083 .ops = &clk_branch2_ops,
4088 static struct clk_branch gcc_cmn_12gpll_ahb_clk = {
4089 .halt_reg = 0x56308,
4090 .clkr = {
4091 .enable_reg = 0x56308,
4092 .enable_mask = BIT(0),
4093 .hw.init = &(struct clk_init_data){
4094 .name = "gcc_cmn_12gpll_ahb_clk",
4095 .parent_hws = (const struct clk_hw *[]){
4096 &pcnoc_bfdcd_clk_src.clkr.hw },
4097 .num_parents = 1,
4098 .flags = CLK_SET_RATE_PARENT,
4099 .ops = &clk_branch2_ops,
4104 static struct clk_branch gcc_cmn_12gpll_sys_clk = {
4105 .halt_reg = 0x5630c,
4106 .clkr = {
4107 .enable_reg = 0x5630c,
4108 .enable_mask = BIT(0),
4109 .hw.init = &(struct clk_init_data){
4110 .name = "gcc_cmn_12gpll_sys_clk",
4111 .parent_hws = (const struct clk_hw *[]){
4112 &gcc_xo_clk_src.clkr.hw },
4113 .num_parents = 1,
4114 .flags = CLK_SET_RATE_PARENT,
4115 .ops = &clk_branch2_ops,
4120 static struct clk_branch gcc_sdcc1_ice_core_clk = {
4121 .halt_reg = 0x5d014,
4122 .clkr = {
4123 .enable_reg = 0x5d014,
4124 .enable_mask = BIT(0),
4125 .hw.init = &(struct clk_init_data){
4126 .name = "gcc_sdcc1_ice_core_clk",
4127 .parent_hws = (const struct clk_hw *[]){
4128 &sdcc1_ice_core_clk_src.clkr.hw },
4129 .num_parents = 1,
4130 .flags = CLK_SET_RATE_PARENT,
4131 .ops = &clk_branch2_ops,
4136 static struct clk_branch gcc_dcc_clk = {
4137 .halt_reg = 0x77004,
4138 .clkr = {
4139 .enable_reg = 0x77004,
4140 .enable_mask = BIT(0),
4141 .hw.init = &(struct clk_init_data){
4142 .name = "gcc_dcc_clk",
4143 .parent_hws = (const struct clk_hw *[]){
4144 &pcnoc_bfdcd_clk_src.clkr.hw },
4145 .num_parents = 1,
4146 .flags = CLK_SET_RATE_PARENT,
4147 .ops = &clk_branch2_ops,
4152 static const struct alpha_pll_config ubi32_pll_config = {
4153 .l = 0x3e,
4154 .alpha = 0x57,
4155 .config_ctl_val = 0x240d6aa8,
4156 .config_ctl_hi_val = 0x3c2,
4157 .main_output_mask = BIT(0),
4158 .aux_output_mask = BIT(1),
4159 .pre_div_val = 0x0,
4160 .pre_div_mask = BIT(12),
4161 .post_div_val = 0x0,
4162 .post_div_mask = GENMASK(9, 8),
4165 static const struct alpha_pll_config nss_crypto_pll_config = {
4166 .l = 0x32,
4167 .alpha = 0x0,
4168 .alpha_hi = 0x0,
4169 .config_ctl_val = 0x4001055b,
4170 .main_output_mask = BIT(0),
4171 .pre_div_val = 0x0,
4172 .pre_div_mask = GENMASK(14, 12),
4173 .post_div_val = 0x1 << 8,
4174 .post_div_mask = GENMASK(11, 8),
4175 .vco_mask = GENMASK(21, 20),
4176 .vco_val = 0x0,
4177 .alpha_en_mask = BIT(24),
4180 static struct clk_hw *gcc_ipq6018_hws[] = {
4181 &gpll0_out_main_div2.hw,
4182 &gcc_xo_div4_clk_src.hw,
4183 &nss_ppe_cdiv_clk_src.hw,
4184 &gpll6_out_main_div2.hw,
4185 &qdss_dap_sync_clk_src.hw,
4186 &qdss_tsctr_div2_clk_src.hw,
4189 static struct clk_regmap *gcc_ipq6018_clks[] = {
4190 [GPLL0_MAIN] = &gpll0_main.clkr,
4191 [GPLL0] = &gpll0.clkr,
4192 [UBI32_PLL_MAIN] = &ubi32_pll_main.clkr,
4193 [UBI32_PLL] = &ubi32_pll.clkr,
4194 [GPLL6_MAIN] = &gpll6_main.clkr,
4195 [GPLL6] = &gpll6.clkr,
4196 [GPLL4_MAIN] = &gpll4_main.clkr,
4197 [GPLL4] = &gpll4.clkr,
4198 [PCNOC_BFDCD_CLK_SRC] = &pcnoc_bfdcd_clk_src.clkr,
4199 [GPLL2_MAIN] = &gpll2_main.clkr,
4200 [GPLL2] = &gpll2.clkr,
4201 [NSS_CRYPTO_PLL_MAIN] = &nss_crypto_pll_main.clkr,
4202 [NSS_CRYPTO_PLL] = &nss_crypto_pll.clkr,
4203 [QDSS_TSCTR_CLK_SRC] = &qdss_tsctr_clk_src.clkr,
4204 [QDSS_AT_CLK_SRC] = &qdss_at_clk_src.clkr,
4205 [NSS_PPE_CLK_SRC] = &nss_ppe_clk_src.clkr,
4206 [GCC_XO_CLK_SRC] = &gcc_xo_clk_src.clkr,
4207 [SYSTEM_NOC_BFDCD_CLK_SRC] = &system_noc_bfdcd_clk_src.clkr,
4208 [SNOC_NSSNOC_BFDCD_CLK_SRC] = &snoc_nssnoc_bfdcd_clk_src.clkr,
4209 [NSS_CE_CLK_SRC] = &nss_ce_clk_src.clkr,
4210 [GCC_SLEEP_CLK_SRC] = &gcc_sleep_clk_src.clkr,
4211 [APSS_AHB_CLK_SRC] = &apss_ahb_clk_src.clkr,
4212 [NSS_PORT5_RX_CLK_SRC] = &nss_port5_rx_clk_src.clkr,
4213 [NSS_PORT5_TX_CLK_SRC] = &nss_port5_tx_clk_src.clkr,
4214 [UBI32_MEM_NOC_BFDCD_CLK_SRC] = &ubi32_mem_noc_bfdcd_clk_src.clkr,
4215 [PCIE0_AXI_CLK_SRC] = &pcie0_axi_clk_src.clkr,
4216 [USB0_MASTER_CLK_SRC] = &usb0_master_clk_src.clkr,
4217 [APSS_AHB_POSTDIV_CLK_SRC] = &apss_ahb_postdiv_clk_src.clkr,
4218 [NSS_PORT1_RX_CLK_SRC] = &nss_port1_rx_clk_src.clkr,
4219 [NSS_PORT1_TX_CLK_SRC] = &nss_port1_tx_clk_src.clkr,
4220 [NSS_PORT2_RX_CLK_SRC] = &nss_port2_rx_clk_src.clkr,
4221 [NSS_PORT2_TX_CLK_SRC] = &nss_port2_tx_clk_src.clkr,
4222 [NSS_PORT3_RX_CLK_SRC] = &nss_port3_rx_clk_src.clkr,
4223 [NSS_PORT3_TX_CLK_SRC] = &nss_port3_tx_clk_src.clkr,
4224 [NSS_PORT4_RX_CLK_SRC] = &nss_port4_rx_clk_src.clkr,
4225 [NSS_PORT4_TX_CLK_SRC] = &nss_port4_tx_clk_src.clkr,
4226 [NSS_PORT5_RX_DIV_CLK_SRC] = &nss_port5_rx_div_clk_src.clkr,
4227 [NSS_PORT5_TX_DIV_CLK_SRC] = &nss_port5_tx_div_clk_src.clkr,
4228 [APSS_AXI_CLK_SRC] = &apss_axi_clk_src.clkr,
4229 [NSS_CRYPTO_CLK_SRC] = &nss_crypto_clk_src.clkr,
4230 [NSS_PORT1_RX_DIV_CLK_SRC] = &nss_port1_rx_div_clk_src.clkr,
4231 [NSS_PORT1_TX_DIV_CLK_SRC] = &nss_port1_tx_div_clk_src.clkr,
4232 [NSS_PORT2_RX_DIV_CLK_SRC] = &nss_port2_rx_div_clk_src.clkr,
4233 [NSS_PORT2_TX_DIV_CLK_SRC] = &nss_port2_tx_div_clk_src.clkr,
4234 [NSS_PORT3_RX_DIV_CLK_SRC] = &nss_port3_rx_div_clk_src.clkr,
4235 [NSS_PORT3_TX_DIV_CLK_SRC] = &nss_port3_tx_div_clk_src.clkr,
4236 [NSS_PORT4_RX_DIV_CLK_SRC] = &nss_port4_rx_div_clk_src.clkr,
4237 [NSS_PORT4_TX_DIV_CLK_SRC] = &nss_port4_tx_div_clk_src.clkr,
4238 [NSS_UBI0_CLK_SRC] = &nss_ubi0_clk_src.clkr,
4239 [ADSS_PWM_CLK_SRC] = &adss_pwm_clk_src.clkr,
4240 [BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr,
4241 [BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr,
4242 [BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr,
4243 [BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr,
4244 [BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr,
4245 [BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr,
4246 [BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr,
4247 [BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr,
4248 [BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr,
4249 [BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr,
4250 [BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr,
4251 [BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr,
4252 [BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr,
4253 [BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr,
4254 [BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr,
4255 [BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr,
4256 [BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr,
4257 [BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr,
4258 [CRYPTO_CLK_SRC] = &crypto_clk_src.clkr,
4259 [GP1_CLK_SRC] = &gp1_clk_src.clkr,
4260 [GP2_CLK_SRC] = &gp2_clk_src.clkr,
4261 [GP3_CLK_SRC] = &gp3_clk_src.clkr,
4262 [NSS_UBI0_DIV_CLK_SRC] = &nss_ubi0_div_clk_src.clkr,
4263 [PCIE0_AUX_CLK_SRC] = &pcie0_aux_clk_src.clkr,
4264 [PCIE0_PIPE_CLK_SRC] = &pcie0_pipe_clk_src.clkr,
4265 [SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr,
4266 [USB0_AUX_CLK_SRC] = &usb0_aux_clk_src.clkr,
4267 [USB0_MOCK_UTMI_CLK_SRC] = &usb0_mock_utmi_clk_src.clkr,
4268 [USB0_PIPE_CLK_SRC] = &usb0_pipe_clk_src.clkr,
4269 [USB1_MOCK_UTMI_CLK_SRC] = &usb1_mock_utmi_clk_src.clkr,
4270 [GCC_ADSS_PWM_CLK] = &gcc_adss_pwm_clk.clkr,
4271 [GCC_APSS_AHB_CLK] = &gcc_apss_ahb_clk.clkr,
4272 [GCC_APSS_AXI_CLK] = &gcc_apss_axi_clk.clkr,
4273 [GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr,
4274 [GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr,
4275 [GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr,
4276 [GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr,
4277 [GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr,
4278 [GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr,
4279 [GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr,
4280 [GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr,
4281 [GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr,
4282 [GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr,
4283 [GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr,
4284 [GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr,
4285 [GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr,
4286 [GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr,
4287 [GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr,
4288 [GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr,
4289 [GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr,
4290 [GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr,
4291 [GCC_CRYPTO_AHB_CLK] = &gcc_crypto_ahb_clk.clkr,
4292 [GCC_CRYPTO_AXI_CLK] = &gcc_crypto_axi_clk.clkr,
4293 [GCC_CRYPTO_CLK] = &gcc_crypto_clk.clkr,
4294 [GCC_XO_CLK] = &gcc_xo_clk.clkr,
4295 [GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
4296 [GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
4297 [GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
4298 [GCC_MDIO_AHB_CLK] = &gcc_mdio_ahb_clk.clkr,
4299 [GCC_CRYPTO_PPE_CLK] = &gcc_crypto_ppe_clk.clkr,
4300 [GCC_NSS_CE_APB_CLK] = &gcc_nss_ce_apb_clk.clkr,
4301 [GCC_NSS_CE_AXI_CLK] = &gcc_nss_ce_axi_clk.clkr,
4302 [GCC_NSS_CFG_CLK] = &gcc_nss_cfg_clk.clkr,
4303 [GCC_NSS_CRYPTO_CLK] = &gcc_nss_crypto_clk.clkr,
4304 [GCC_NSS_CSR_CLK] = &gcc_nss_csr_clk.clkr,
4305 [GCC_NSS_EDMA_CFG_CLK] = &gcc_nss_edma_cfg_clk.clkr,
4306 [GCC_NSS_EDMA_CLK] = &gcc_nss_edma_clk.clkr,
4307 [GCC_NSS_NOC_CLK] = &gcc_nss_noc_clk.clkr,
4308 [GCC_UBI0_UTCM_CLK] = &gcc_ubi0_utcm_clk.clkr,
4309 [GCC_SNOC_NSSNOC_CLK] = &gcc_snoc_nssnoc_clk.clkr,
4310 [GCC_NSS_PORT1_RX_CLK] = &gcc_nss_port1_rx_clk.clkr,
4311 [GCC_NSS_PORT1_TX_CLK] = &gcc_nss_port1_tx_clk.clkr,
4312 [GCC_NSS_PORT2_RX_CLK] = &gcc_nss_port2_rx_clk.clkr,
4313 [GCC_NSS_PORT2_TX_CLK] = &gcc_nss_port2_tx_clk.clkr,
4314 [GCC_NSS_PORT3_RX_CLK] = &gcc_nss_port3_rx_clk.clkr,
4315 [GCC_NSS_PORT3_TX_CLK] = &gcc_nss_port3_tx_clk.clkr,
4316 [GCC_NSS_PORT4_RX_CLK] = &gcc_nss_port4_rx_clk.clkr,
4317 [GCC_NSS_PORT4_TX_CLK] = &gcc_nss_port4_tx_clk.clkr,
4318 [GCC_NSS_PORT5_RX_CLK] = &gcc_nss_port5_rx_clk.clkr,
4319 [GCC_NSS_PORT5_TX_CLK] = &gcc_nss_port5_tx_clk.clkr,
4320 [GCC_NSS_PPE_CFG_CLK] = &gcc_nss_ppe_cfg_clk.clkr,
4321 [GCC_NSS_PPE_CLK] = &gcc_nss_ppe_clk.clkr,
4322 [GCC_NSS_PPE_IPE_CLK] = &gcc_nss_ppe_ipe_clk.clkr,
4323 [GCC_NSS_PTP_REF_CLK] = &gcc_nss_ptp_ref_clk.clkr,
4324 [GCC_NSSNOC_CE_APB_CLK] = &gcc_nssnoc_ce_apb_clk.clkr,
4325 [GCC_NSSNOC_CE_AXI_CLK] = &gcc_nssnoc_ce_axi_clk.clkr,
4326 [GCC_NSSNOC_CRYPTO_CLK] = &gcc_nssnoc_crypto_clk.clkr,
4327 [GCC_NSSNOC_PPE_CFG_CLK] = &gcc_nssnoc_ppe_cfg_clk.clkr,
4328 [GCC_NSSNOC_PPE_CLK] = &gcc_nssnoc_ppe_clk.clkr,
4329 [GCC_NSSNOC_QOSGEN_REF_CLK] = &gcc_nssnoc_qosgen_ref_clk.clkr,
4330 [GCC_NSSNOC_SNOC_CLK] = &gcc_nssnoc_snoc_clk.clkr,
4331 [GCC_NSSNOC_TIMEOUT_REF_CLK] = &gcc_nssnoc_timeout_ref_clk.clkr,
4332 [GCC_NSSNOC_UBI0_AHB_CLK] = &gcc_nssnoc_ubi0_ahb_clk.clkr,
4333 [GCC_PORT1_MAC_CLK] = &gcc_port1_mac_clk.clkr,
4334 [GCC_PORT2_MAC_CLK] = &gcc_port2_mac_clk.clkr,
4335 [GCC_PORT3_MAC_CLK] = &gcc_port3_mac_clk.clkr,
4336 [GCC_PORT4_MAC_CLK] = &gcc_port4_mac_clk.clkr,
4337 [GCC_PORT5_MAC_CLK] = &gcc_port5_mac_clk.clkr,
4338 [GCC_UBI0_AHB_CLK] = &gcc_ubi0_ahb_clk.clkr,
4339 [GCC_UBI0_AXI_CLK] = &gcc_ubi0_axi_clk.clkr,
4340 [GCC_UBI0_NC_AXI_CLK] = &gcc_ubi0_nc_axi_clk.clkr,
4341 [GCC_UBI0_CORE_CLK] = &gcc_ubi0_core_clk.clkr,
4342 [GCC_PCIE0_AHB_CLK] = &gcc_pcie0_ahb_clk.clkr,
4343 [GCC_PCIE0_AUX_CLK] = &gcc_pcie0_aux_clk.clkr,
4344 [GCC_PCIE0_AXI_M_CLK] = &gcc_pcie0_axi_m_clk.clkr,
4345 [GCC_PCIE0_AXI_S_CLK] = &gcc_pcie0_axi_s_clk.clkr,
4346 [GCC_SYS_NOC_PCIE0_AXI_CLK] = &gcc_sys_noc_pcie0_axi_clk.clkr,
4347 [GCC_PCIE0_PIPE_CLK] = &gcc_pcie0_pipe_clk.clkr,
4348 [GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
4349 [GCC_QDSS_DAP_CLK] = &gcc_qdss_dap_clk.clkr,
4350 [GCC_QPIC_AHB_CLK] = &gcc_qpic_ahb_clk.clkr,
4351 [GCC_QPIC_CLK] = &gcc_qpic_clk.clkr,
4352 [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
4353 [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
4354 [GCC_UNIPHY0_AHB_CLK] = &gcc_uniphy0_ahb_clk.clkr,
4355 [GCC_UNIPHY0_PORT1_RX_CLK] = &gcc_uniphy0_port1_rx_clk.clkr,
4356 [GCC_UNIPHY0_PORT1_TX_CLK] = &gcc_uniphy0_port1_tx_clk.clkr,
4357 [GCC_UNIPHY0_PORT2_RX_CLK] = &gcc_uniphy0_port2_rx_clk.clkr,
4358 [GCC_UNIPHY0_PORT2_TX_CLK] = &gcc_uniphy0_port2_tx_clk.clkr,
4359 [GCC_UNIPHY0_PORT3_RX_CLK] = &gcc_uniphy0_port3_rx_clk.clkr,
4360 [GCC_UNIPHY0_PORT3_TX_CLK] = &gcc_uniphy0_port3_tx_clk.clkr,
4361 [GCC_UNIPHY0_PORT4_RX_CLK] = &gcc_uniphy0_port4_rx_clk.clkr,
4362 [GCC_UNIPHY0_PORT4_TX_CLK] = &gcc_uniphy0_port4_tx_clk.clkr,
4363 [GCC_UNIPHY0_PORT5_RX_CLK] = &gcc_uniphy0_port5_rx_clk.clkr,
4364 [GCC_UNIPHY0_PORT5_TX_CLK] = &gcc_uniphy0_port5_tx_clk.clkr,
4365 [GCC_UNIPHY0_SYS_CLK] = &gcc_uniphy0_sys_clk.clkr,
4366 [GCC_UNIPHY1_AHB_CLK] = &gcc_uniphy1_ahb_clk.clkr,
4367 [GCC_UNIPHY1_PORT5_RX_CLK] = &gcc_uniphy1_port5_rx_clk.clkr,
4368 [GCC_UNIPHY1_PORT5_TX_CLK] = &gcc_uniphy1_port5_tx_clk.clkr,
4369 [GCC_UNIPHY1_SYS_CLK] = &gcc_uniphy1_sys_clk.clkr,
4370 [GCC_USB0_AUX_CLK] = &gcc_usb0_aux_clk.clkr,
4371 [GCC_SYS_NOC_USB0_AXI_CLK] = &gcc_sys_noc_usb0_axi_clk.clkr,
4372 [GCC_SNOC_BUS_TIMEOUT2_AHB_CLK] = &gcc_snoc_bus_timeout2_ahb_clk.clkr,
4373 [GCC_USB0_MASTER_CLK] = &gcc_usb0_master_clk.clkr,
4374 [GCC_USB0_MOCK_UTMI_CLK] = &gcc_usb0_mock_utmi_clk.clkr,
4375 [GCC_USB0_PHY_CFG_AHB_CLK] = &gcc_usb0_phy_cfg_ahb_clk.clkr,
4376 [GCC_USB0_PIPE_CLK] = &gcc_usb0_pipe_clk.clkr,
4377 [GCC_USB0_SLEEP_CLK] = &gcc_usb0_sleep_clk.clkr,
4378 [GCC_USB1_MASTER_CLK] = &gcc_usb1_master_clk.clkr,
4379 [GCC_USB1_MOCK_UTMI_CLK] = &gcc_usb1_mock_utmi_clk.clkr,
4380 [GCC_USB1_PHY_CFG_AHB_CLK] = &gcc_usb1_phy_cfg_ahb_clk.clkr,
4381 [GCC_USB1_SLEEP_CLK] = &gcc_usb1_sleep_clk.clkr,
4382 [GCC_CMN_12GPLL_AHB_CLK] = &gcc_cmn_12gpll_ahb_clk.clkr,
4383 [GCC_CMN_12GPLL_SYS_CLK] = &gcc_cmn_12gpll_sys_clk.clkr,
4384 [GCC_SDCC1_ICE_CORE_CLK] = &gcc_sdcc1_ice_core_clk.clkr,
4385 [SDCC1_ICE_CORE_CLK_SRC] = &sdcc1_ice_core_clk_src.clkr,
4386 [GCC_DCC_CLK] = &gcc_dcc_clk.clkr,
4387 [PCIE0_RCHNG_CLK_SRC] = &pcie0_rchng_clk_src.clkr,
4388 [GCC_PCIE0_AXI_S_BRIDGE_CLK] = &gcc_pcie0_axi_s_bridge_clk.clkr,
4389 [PCIE0_RCHNG_CLK] = &gcc_pcie0_rchng_clk.clkr,
4390 [WCSS_AHB_CLK_SRC] = &wcss_ahb_clk_src.clkr,
4391 [Q6_AXI_CLK_SRC] = &q6_axi_clk_src.clkr,
4392 [RBCPR_WCSS_CLK_SRC] = &rbcpr_wcss_clk_src.clkr,
4393 [GCC_LPASS_CORE_AXIM_CLK] = &gcc_lpass_core_axim_clk.clkr,
4394 [LPASS_CORE_AXIM_CLK_SRC] = &lpass_core_axim_clk_src.clkr,
4395 [GCC_LPASS_SNOC_CFG_CLK] = &gcc_lpass_snoc_cfg_clk.clkr,
4396 [LPASS_SNOC_CFG_CLK_SRC] = &lpass_snoc_cfg_clk_src.clkr,
4397 [GCC_LPASS_Q6_AXIM_CLK] = &gcc_lpass_q6_axim_clk.clkr,
4398 [LPASS_Q6_AXIM_CLK_SRC] = &lpass_q6_axim_clk_src.clkr,
4399 [GCC_LPASS_Q6_ATBM_AT_CLK] = &gcc_lpass_q6_atbm_at_clk.clkr,
4400 [GCC_LPASS_Q6_PCLKDBG_CLK] = &gcc_lpass_q6_pclkdbg_clk.clkr,
4401 [GCC_LPASS_Q6SS_TSCTR_1TO2_CLK] = &gcc_lpass_q6ss_tsctr_1to2_clk.clkr,
4402 [GCC_LPASS_Q6SS_TRIG_CLK] = &gcc_lpass_q6ss_trig_clk.clkr,
4403 [GCC_LPASS_TBU_CLK] = &gcc_lpass_tbu_clk.clkr,
4404 [GCC_PCNOC_LPASS_CLK] = &gcc_pcnoc_lpass_clk.clkr,
4405 [GCC_MEM_NOC_UBI32_CLK] = &gcc_mem_noc_ubi32_clk.clkr,
4406 [GCC_MEM_NOC_LPASS_CLK] = &gcc_mem_noc_lpass_clk.clkr,
4407 [GCC_SNOC_LPASS_CFG_CLK] = &gcc_snoc_lpass_cfg_clk.clkr,
4408 [QDSS_STM_CLK_SRC] = &qdss_stm_clk_src.clkr,
4409 [QDSS_TRACECLKIN_CLK_SRC] = &qdss_traceclkin_clk_src.clkr,
4412 static const struct qcom_reset_map gcc_ipq6018_resets[] = {
4413 [GCC_BLSP1_BCR] = { 0x01000, 0 },
4414 [GCC_BLSP1_QUP1_BCR] = { 0x02000, 0 },
4415 [GCC_BLSP1_UART1_BCR] = { 0x02038, 0 },
4416 [GCC_BLSP1_QUP2_BCR] = { 0x03008, 0 },
4417 [GCC_BLSP1_UART2_BCR] = { 0x03028, 0 },
4418 [GCC_BLSP1_QUP3_BCR] = { 0x04008, 0 },
4419 [GCC_BLSP1_UART3_BCR] = { 0x04028, 0 },
4420 [GCC_BLSP1_QUP4_BCR] = { 0x05008, 0 },
4421 [GCC_BLSP1_UART4_BCR] = { 0x05028, 0 },
4422 [GCC_BLSP1_QUP5_BCR] = { 0x06008, 0 },
4423 [GCC_BLSP1_UART5_BCR] = { 0x06028, 0 },
4424 [GCC_BLSP1_QUP6_BCR] = { 0x07008, 0 },
4425 [GCC_BLSP1_UART6_BCR] = { 0x07028, 0 },
4426 [GCC_IMEM_BCR] = { 0x0e000, 0 },
4427 [GCC_SMMU_BCR] = { 0x12000, 0 },
4428 [GCC_APSS_TCU_BCR] = { 0x12050, 0 },
4429 [GCC_SMMU_XPU_BCR] = { 0x12054, 0 },
4430 [GCC_PCNOC_TBU_BCR] = { 0x12058, 0 },
4431 [GCC_SMMU_CFG_BCR] = { 0x1208c, 0 },
4432 [GCC_PRNG_BCR] = { 0x13000, 0 },
4433 [GCC_BOOT_ROM_BCR] = { 0x13008, 0 },
4434 [GCC_CRYPTO_BCR] = { 0x16000, 0 },
4435 [GCC_WCSS_BCR] = { 0x18000, 0 },
4436 [GCC_WCSS_Q6_BCR] = { 0x18100, 0 },
4437 [GCC_NSS_BCR] = { 0x19000, 0 },
4438 [GCC_SEC_CTRL_BCR] = { 0x1a000, 0 },
4439 [GCC_ADSS_BCR] = { 0x1c000, 0 },
4440 [GCC_DDRSS_BCR] = { 0x1e000, 0 },
4441 [GCC_SYSTEM_NOC_BCR] = { 0x26000, 0 },
4442 [GCC_PCNOC_BCR] = { 0x27018, 0 },
4443 [GCC_TCSR_BCR] = { 0x28000, 0 },
4444 [GCC_QDSS_BCR] = { 0x29000, 0 },
4445 [GCC_DCD_BCR] = { 0x2a000, 0 },
4446 [GCC_MSG_RAM_BCR] = { 0x2b000, 0 },
4447 [GCC_MPM_BCR] = { 0x2c000, 0 },
4448 [GCC_SPDM_BCR] = { 0x2f000, 0 },
4449 [GCC_RBCPR_BCR] = { 0x33000, 0 },
4450 [GCC_RBCPR_MX_BCR] = { 0x33014, 0 },
4451 [GCC_TLMM_BCR] = { 0x34000, 0 },
4452 [GCC_RBCPR_WCSS_BCR] = { 0x3a000, 0 },
4453 [GCC_USB0_PHY_BCR] = { 0x3e034, 0 },
4454 [GCC_USB3PHY_0_PHY_BCR] = { 0x3e03c, 0 },
4455 [GCC_USB0_BCR] = { 0x3e070, 0 },
4456 [GCC_USB1_BCR] = { 0x3f070, 0 },
4457 [GCC_QUSB2_0_PHY_BCR] = { 0x4103c, 0 },
4458 [GCC_QUSB2_1_PHY_BCR] = { 0x41040, 0 },
4459 [GCC_SDCC1_BCR] = { 0x42000, 0 },
4460 [GCC_SNOC_BUS_TIMEOUT0_BCR] = { 0x47000, 0 },
4461 [GCC_SNOC_BUS_TIMEOUT1_BCR] = { 0x47008, 0 },
4462 [GCC_SNOC_BUS_TIMEOUT2_BCR] = { 0x47010, 0 },
4463 [GCC_PCNOC_BUS_TIMEOUT0_BCR] = { 0x48000, 0 },
4464 [GCC_PCNOC_BUS_TIMEOUT1_BCR] = { 0x48008, 0 },
4465 [GCC_PCNOC_BUS_TIMEOUT2_BCR] = { 0x48010, 0 },
4466 [GCC_PCNOC_BUS_TIMEOUT3_BCR] = { 0x48018, 0 },
4467 [GCC_PCNOC_BUS_TIMEOUT4_BCR] = { 0x48020, 0 },
4468 [GCC_PCNOC_BUS_TIMEOUT5_BCR] = { 0x48028, 0 },
4469 [GCC_PCNOC_BUS_TIMEOUT6_BCR] = { 0x48030, 0 },
4470 [GCC_PCNOC_BUS_TIMEOUT7_BCR] = { 0x48038, 0 },
4471 [GCC_PCNOC_BUS_TIMEOUT8_BCR] = { 0x48040, 0 },
4472 [GCC_PCNOC_BUS_TIMEOUT9_BCR] = { 0x48048, 0 },
4473 [GCC_UNIPHY0_BCR] = { 0x56000, 0 },
4474 [GCC_UNIPHY1_BCR] = { 0x56100, 0 },
4475 [GCC_CMN_12GPLL_BCR] = { 0x56300, 0 },
4476 [GCC_QPIC_BCR] = { 0x57018, 0 },
4477 [GCC_MDIO_BCR] = { 0x58000, 0 },
4478 [GCC_WCSS_CORE_TBU_BCR] = { 0x66000, 0 },
4479 [GCC_WCSS_Q6_TBU_BCR] = { 0x67000, 0 },
4480 [GCC_USB0_TBU_BCR] = { 0x6a000, 0 },
4481 [GCC_PCIE0_TBU_BCR] = { 0x6b000, 0 },
4482 [GCC_NSS_NOC_TBU_BCR] = { 0x6e000, 0 },
4483 [GCC_PCIE0_BCR] = { 0x75004, 0 },
4484 [GCC_PCIE0_PHY_BCR] = { 0x75038, 0 },
4485 [GCC_PCIE0PHY_PHY_BCR] = { 0x7503c, 0 },
4486 [GCC_PCIE0_LINK_DOWN_BCR] = { 0x75044, 0 },
4487 [GCC_DCC_BCR] = { 0x77000, 0 },
4488 [GCC_APC0_VOLTAGE_DROOP_DETECTOR_BCR] = { 0x78000, 0 },
4489 [GCC_SMMU_CATS_BCR] = { 0x7c000, 0 },
4490 [GCC_UBI0_AXI_ARES] = { 0x68010, 0 },
4491 [GCC_UBI0_AHB_ARES] = { 0x68010, 1 },
4492 [GCC_UBI0_NC_AXI_ARES] = { 0x68010, 2 },
4493 [GCC_UBI0_DBG_ARES] = { 0x68010, 3 },
4494 [GCC_UBI0_CORE_CLAMP_ENABLE] = { 0x68010, 4 },
4495 [GCC_UBI0_CLKRST_CLAMP_ENABLE] = { 0x68010, 5 },
4496 [GCC_UBI0_UTCM_ARES] = { 0x68010, 6 },
4497 [GCC_UBI0_CORE_ARES] = { 0x68010, 7 },
4498 [GCC_NSS_CFG_ARES] = { 0x68010, 16 },
4499 [GCC_NSS_NOC_ARES] = { 0x68010, 18 },
4500 [GCC_NSS_CRYPTO_ARES] = { 0x68010, 19 },
4501 [GCC_NSS_CSR_ARES] = { 0x68010, 20 },
4502 [GCC_NSS_CE_APB_ARES] = { 0x68010, 21 },
4503 [GCC_NSS_CE_AXI_ARES] = { 0x68010, 22 },
4504 [GCC_NSSNOC_CE_APB_ARES] = { 0x68010, 23 },
4505 [GCC_NSSNOC_CE_AXI_ARES] = { 0x68010, 24 },
4506 [GCC_NSSNOC_UBI0_AHB_ARES] = { 0x68010, 25 },
4507 [GCC_NSSNOC_SNOC_ARES] = { 0x68010, 27 },
4508 [GCC_NSSNOC_CRYPTO_ARES] = { 0x68010, 28 },
4509 [GCC_NSSNOC_ATB_ARES] = { 0x68010, 29 },
4510 [GCC_NSSNOC_QOSGEN_REF_ARES] = { 0x68010, 30 },
4511 [GCC_NSSNOC_TIMEOUT_REF_ARES] = { 0x68010, 31 },
4512 [GCC_PCIE0_PIPE_ARES] = { 0x75040, 0 },
4513 [GCC_PCIE0_SLEEP_ARES] = { 0x75040, 1 },
4514 [GCC_PCIE0_CORE_STICKY_ARES] = { 0x75040, 2 },
4515 [GCC_PCIE0_AXI_MASTER_ARES] = { 0x75040, 3 },
4516 [GCC_PCIE0_AXI_SLAVE_ARES] = { 0x75040, 4 },
4517 [GCC_PCIE0_AHB_ARES] = { 0x75040, 5 },
4518 [GCC_PCIE0_AXI_MASTER_STICKY_ARES] = { 0x75040, 6 },
4519 [GCC_PCIE0_AXI_SLAVE_STICKY_ARES] = { 0x75040, 7 },
4520 [GCC_PPE_FULL_RESET] = { 0x68014, 0 },
4521 [GCC_UNIPHY0_SOFT_RESET] = { 0x56004, 0 },
4522 [GCC_UNIPHY0_XPCS_RESET] = { 0x56004, 2 },
4523 [GCC_UNIPHY1_SOFT_RESET] = { 0x56104, 0 },
4524 [GCC_UNIPHY1_XPCS_RESET] = { 0x56104, 2 },
4525 [GCC_EDMA_HW_RESET] = { 0x68014, 0 },
4526 [GCC_NSSPORT1_RESET] = { 0x68014, 0 },
4527 [GCC_NSSPORT2_RESET] = { 0x68014, 0 },
4528 [GCC_NSSPORT3_RESET] = { 0x68014, 0 },
4529 [GCC_NSSPORT4_RESET] = { 0x68014, 0 },
4530 [GCC_NSSPORT5_RESET] = { 0x68014, 0 },
4531 [GCC_UNIPHY0_PORT1_ARES] = { 0x56004, 0 },
4532 [GCC_UNIPHY0_PORT2_ARES] = { 0x56004, 0 },
4533 [GCC_UNIPHY0_PORT3_ARES] = { 0x56004, 0 },
4534 [GCC_UNIPHY0_PORT4_ARES] = { 0x56004, 0 },
4535 [GCC_UNIPHY0_PORT5_ARES] = { 0x56004, 0 },
4536 [GCC_UNIPHY0_PORT_4_5_RESET] = { 0x56004, 0 },
4537 [GCC_UNIPHY0_PORT_4_RESET] = { 0x56004, 0 },
4538 [GCC_LPASS_BCR] = {0x1F000, 0},
4539 [GCC_UBI32_TBU_BCR] = {0x65000, 0},
4540 [GCC_LPASS_TBU_BCR] = {0x6C000, 0},
4541 [GCC_WCSSAON_RESET] = {0x59010, 0},
4542 [GCC_LPASS_Q6_AXIM_ARES] = {0x1F004, 0},
4543 [GCC_LPASS_Q6SS_TSCTR_1TO2_ARES] = {0x1F004, 1},
4544 [GCC_LPASS_Q6SS_TRIG_ARES] = {0x1F004, 2},
4545 [GCC_LPASS_Q6_ATBM_AT_ARES] = {0x1F004, 3},
4546 [GCC_LPASS_Q6_PCLKDBG_ARES] = {0x1F004, 4},
4547 [GCC_LPASS_CORE_AXIM_ARES] = {0x1F004, 5},
4548 [GCC_LPASS_SNOC_CFG_ARES] = {0x1F004, 6},
4549 [GCC_WCSS_DBG_ARES] = {0x59008, 0},
4550 [GCC_WCSS_ECAHB_ARES] = {0x59008, 1},
4551 [GCC_WCSS_ACMT_ARES] = {0x59008, 2},
4552 [GCC_WCSS_DBG_BDG_ARES] = {0x59008, 3},
4553 [GCC_WCSS_AHB_S_ARES] = {0x59008, 4},
4554 [GCC_WCSS_AXI_M_ARES] = {0x59008, 5},
4555 [GCC_Q6SS_DBG_ARES] = {0x59110, 0},
4556 [GCC_Q6_AHB_S_ARES] = {0x59110, 1},
4557 [GCC_Q6_AHB_ARES] = {0x59110, 2},
4558 [GCC_Q6_AXIM2_ARES] = {0x59110, 3},
4559 [GCC_Q6_AXIM_ARES] = {0x59110, 4},
4562 static const struct of_device_id gcc_ipq6018_match_table[] = {
4563 { .compatible = "qcom,gcc-ipq6018" },
4566 MODULE_DEVICE_TABLE(of, gcc_ipq6018_match_table);
4568 static const struct regmap_config gcc_ipq6018_regmap_config = {
4569 .reg_bits = 32,
4570 .reg_stride = 4,
4571 .val_bits = 32,
4572 .max_register = 0x7fffc,
4573 .fast_io = true,
4576 static const struct qcom_cc_desc gcc_ipq6018_desc = {
4577 .config = &gcc_ipq6018_regmap_config,
4578 .clks = gcc_ipq6018_clks,
4579 .num_clks = ARRAY_SIZE(gcc_ipq6018_clks),
4580 .resets = gcc_ipq6018_resets,
4581 .num_resets = ARRAY_SIZE(gcc_ipq6018_resets),
4582 .clk_hws = gcc_ipq6018_hws,
4583 .num_clk_hws = ARRAY_SIZE(gcc_ipq6018_hws),
4586 static int gcc_ipq6018_probe(struct platform_device *pdev)
4588 struct regmap *regmap;
4590 regmap = qcom_cc_map(pdev, &gcc_ipq6018_desc);
4591 if (IS_ERR(regmap))
4592 return PTR_ERR(regmap);
4594 /* Disable SW_COLLAPSE for USB0 GDSCR */
4595 regmap_update_bits(regmap, 0x3e078, BIT(0), 0x0);
4596 /* Enable SW_OVERRIDE for USB0 GDSCR */
4597 regmap_update_bits(regmap, 0x3e078, BIT(2), BIT(2));
4598 /* Disable SW_COLLAPSE for USB1 GDSCR */
4599 regmap_update_bits(regmap, 0x3f078, BIT(0), 0x0);
4600 /* Enable SW_OVERRIDE for USB1 GDSCR */
4601 regmap_update_bits(regmap, 0x3f078, BIT(2), BIT(2));
4603 /* SW Workaround for UBI Huyara PLL */
4604 regmap_update_bits(regmap, 0x2501c, BIT(26), BIT(26));
4606 clk_alpha_pll_configure(&ubi32_pll_main, regmap, &ubi32_pll_config);
4608 clk_alpha_pll_configure(&nss_crypto_pll_main, regmap,
4609 &nss_crypto_pll_config);
4611 return qcom_cc_really_probe(pdev, &gcc_ipq6018_desc, regmap);
4614 static struct platform_driver gcc_ipq6018_driver = {
4615 .probe = gcc_ipq6018_probe,
4616 .driver = {
4617 .name = "qcom,gcc-ipq6018",
4618 .of_match_table = gcc_ipq6018_match_table,
4622 static int __init gcc_ipq6018_init(void)
4624 return platform_driver_register(&gcc_ipq6018_driver);
4626 core_initcall(gcc_ipq6018_init);
4628 static void __exit gcc_ipq6018_exit(void)
4630 platform_driver_unregister(&gcc_ipq6018_driver);
4632 module_exit(gcc_ipq6018_exit);
4634 MODULE_DESCRIPTION("Qualcomm Technologies, Inc. GCC IPQ6018 Driver");
4635 MODULE_LICENSE("GPL v2");