4789 lines · c
1// SPDX-License-Identifier: GPL-2.0-only2/*3 * Copyright (c) 2017, The Linux Foundation. All rights reserved.4 */5 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/clk-provider.h>12#include <linux/regmap.h>13 14#include <dt-bindings/clock/qcom,gcc-ipq8074.h>15 16#include "common.h"17#include "clk-regmap.h"18#include "clk-pll.h"19#include "clk-rcg.h"20#include "clk-branch.h"21#include "clk-alpha-pll.h"22#include "clk-regmap-divider.h"23#include "clk-regmap-mux.h"24#include "gdsc.h"25#include "reset.h"26 27enum {28 P_XO,29 P_GPLL0,30 P_GPLL0_DIV2,31 P_GPLL2,32 P_GPLL4,33 P_GPLL6,34 P_SLEEP_CLK,35 P_PCIE20_PHY0_PIPE,36 P_PCIE20_PHY1_PIPE,37 P_USB3PHY_0_PIPE,38 P_USB3PHY_1_PIPE,39 P_UBI32_PLL,40 P_NSS_CRYPTO_PLL,41 P_BIAS_PLL,42 P_BIAS_PLL_NSS_NOC,43 P_UNIPHY0_RX,44 P_UNIPHY0_TX,45 P_UNIPHY1_RX,46 P_UNIPHY1_TX,47 P_UNIPHY2_RX,48 P_UNIPHY2_TX,49};50 51static struct clk_alpha_pll gpll0_main = {52 .offset = 0x21000,53 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],54 .clkr = {55 .enable_reg = 0x0b000,56 .enable_mask = BIT(0),57 .hw.init = &(struct clk_init_data){58 .name = "gpll0_main",59 .parent_data = &(const struct clk_parent_data){60 .fw_name = "xo",61 .name = "xo",62 },63 .num_parents = 1,64 .ops = &clk_alpha_pll_ops,65 },66 },67};68 69static 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 },79};80 81static struct clk_alpha_pll_postdiv gpll0 = {82 .offset = 0x21000,83 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],84 .width = 4,85 .clkr.hw.init = &(struct clk_init_data){86 .name = "gpll0",87 .parent_hws = (const struct clk_hw *[]){88 &gpll0_main.clkr.hw },89 .num_parents = 1,90 .ops = &clk_alpha_pll_postdiv_ro_ops,91 },92};93 94static struct clk_alpha_pll gpll2_main = {95 .offset = 0x4a000,96 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],97 .clkr = {98 .enable_reg = 0x0b000,99 .enable_mask = BIT(2),100 .hw.init = &(struct clk_init_data){101 .name = "gpll2_main",102 .parent_data = &(const struct clk_parent_data){103 .fw_name = "xo",104 .name = "xo",105 },106 .num_parents = 1,107 .ops = &clk_alpha_pll_ops,108 .flags = CLK_IS_CRITICAL,109 },110 },111};112 113static struct clk_alpha_pll_postdiv gpll2 = {114 .offset = 0x4a000,115 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],116 .width = 4,117 .clkr.hw.init = &(struct clk_init_data){118 .name = "gpll2",119 .parent_hws = (const struct clk_hw *[]){120 &gpll2_main.clkr.hw },121 .num_parents = 1,122 .ops = &clk_alpha_pll_postdiv_ro_ops,123 },124};125 126static struct clk_alpha_pll gpll4_main = {127 .offset = 0x24000,128 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],129 .clkr = {130 .enable_reg = 0x0b000,131 .enable_mask = BIT(5),132 .hw.init = &(struct clk_init_data){133 .name = "gpll4_main",134 .parent_data = &(const struct clk_parent_data){135 .fw_name = "xo",136 .name = "xo",137 },138 .num_parents = 1,139 .ops = &clk_alpha_pll_ops,140 .flags = CLK_IS_CRITICAL,141 },142 },143};144 145static struct clk_alpha_pll_postdiv gpll4 = {146 .offset = 0x24000,147 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],148 .width = 4,149 .clkr.hw.init = &(struct clk_init_data){150 .name = "gpll4",151 .parent_hws = (const struct clk_hw *[]){152 &gpll4_main.clkr.hw },153 .num_parents = 1,154 .ops = &clk_alpha_pll_postdiv_ro_ops,155 },156};157 158static struct clk_alpha_pll gpll6_main = {159 .offset = 0x37000,160 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_BRAMMO],161 .flags = SUPPORTS_DYNAMIC_UPDATE,162 .clkr = {163 .enable_reg = 0x0b000,164 .enable_mask = BIT(7),165 .hw.init = &(struct clk_init_data){166 .name = "gpll6_main",167 .parent_data = &(const struct clk_parent_data){168 .fw_name = "xo",169 .name = "xo",170 },171 .num_parents = 1,172 .ops = &clk_alpha_pll_ops,173 .flags = CLK_IS_CRITICAL,174 },175 },176};177 178static struct clk_alpha_pll_postdiv gpll6 = {179 .offset = 0x37000,180 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_BRAMMO],181 .width = 2,182 .clkr.hw.init = &(struct clk_init_data){183 .name = "gpll6",184 .parent_hws = (const struct clk_hw *[]){185 &gpll6_main.clkr.hw },186 .num_parents = 1,187 .ops = &clk_alpha_pll_postdiv_ro_ops,188 },189};190 191static struct clk_fixed_factor gpll6_out_main_div2 = {192 .mult = 1,193 .div = 2,194 .hw.init = &(struct clk_init_data){195 .name = "gpll6_out_main_div2",196 .parent_hws = (const struct clk_hw *[]){197 &gpll6_main.clkr.hw },198 .num_parents = 1,199 .ops = &clk_fixed_factor_ops,200 },201};202 203static struct clk_alpha_pll ubi32_pll_main = {204 .offset = 0x25000,205 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_HUAYRA],206 .flags = SUPPORTS_DYNAMIC_UPDATE,207 .clkr = {208 .enable_reg = 0x0b000,209 .enable_mask = BIT(6),210 .hw.init = &(struct clk_init_data){211 .name = "ubi32_pll_main",212 .parent_data = &(const struct clk_parent_data){213 .fw_name = "xo",214 .name = "xo",215 },216 .num_parents = 1,217 .ops = &clk_alpha_pll_huayra_ops,218 },219 },220};221 222static struct clk_alpha_pll_postdiv ubi32_pll = {223 .offset = 0x25000,224 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_HUAYRA],225 .width = 2,226 .clkr.hw.init = &(struct clk_init_data){227 .name = "ubi32_pll",228 .parent_hws = (const struct clk_hw *[]){229 &ubi32_pll_main.clkr.hw },230 .num_parents = 1,231 .ops = &clk_alpha_pll_postdiv_ro_ops,232 .flags = CLK_SET_RATE_PARENT,233 },234};235 236static struct clk_alpha_pll nss_crypto_pll_main = {237 .offset = 0x22000,238 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],239 .clkr = {240 .enable_reg = 0x0b000,241 .enable_mask = BIT(4),242 .hw.init = &(struct clk_init_data){243 .name = "nss_crypto_pll_main",244 .parent_data = &(const struct clk_parent_data){245 .fw_name = "xo",246 .name = "xo",247 },248 .num_parents = 1,249 .ops = &clk_alpha_pll_ops,250 },251 },252};253 254static struct clk_alpha_pll_postdiv nss_crypto_pll = {255 .offset = 0x22000,256 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],257 .width = 4,258 .clkr.hw.init = &(struct clk_init_data){259 .name = "nss_crypto_pll",260 .parent_hws = (const struct clk_hw *[]){261 &nss_crypto_pll_main.clkr.hw },262 .num_parents = 1,263 .ops = &clk_alpha_pll_postdiv_ro_ops,264 },265};266 267static const struct freq_tbl ftbl_pcnoc_bfdcd_clk_src[] = {268 F(19200000, P_XO, 1, 0, 0),269 F(50000000, P_GPLL0, 16, 0, 0),270 F(100000000, P_GPLL0, 8, 0, 0),271 { }272};273 274static const struct clk_parent_data gcc_xo_gpll0_gpll0_out_main_div2[] = {275 { .fw_name = "xo", .name = "xo" },276 { .hw = &gpll0.clkr.hw},277 { .hw = &gpll0_out_main_div2.hw},278};279 280static const struct parent_map gcc_xo_gpll0_gpll0_out_main_div2_map[] = {281 { P_XO, 0 },282 { P_GPLL0, 1 },283 { P_GPLL0_DIV2, 4 },284};285 286static struct clk_rcg2 pcnoc_bfdcd_clk_src = {287 .cmd_rcgr = 0x27000,288 .freq_tbl = ftbl_pcnoc_bfdcd_clk_src,289 .hid_width = 5,290 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,291 .clkr.hw.init = &(struct clk_init_data){292 .name = "pcnoc_bfdcd_clk_src",293 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,294 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),295 .ops = &clk_rcg2_ops,296 .flags = CLK_IS_CRITICAL,297 },298};299 300static struct clk_fixed_factor pcnoc_clk_src = {301 .mult = 1,302 .div = 1,303 .hw.init = &(struct clk_init_data){304 .name = "pcnoc_clk_src",305 .parent_hws = (const struct clk_hw *[]){306 &pcnoc_bfdcd_clk_src.clkr.hw },307 .num_parents = 1,308 .ops = &clk_fixed_factor_ops,309 .flags = CLK_SET_RATE_PARENT,310 },311};312 313static struct clk_branch gcc_sleep_clk_src = {314 .halt_reg = 0x30000,315 .clkr = {316 .enable_reg = 0x30000,317 .enable_mask = BIT(1),318 .hw.init = &(struct clk_init_data){319 .name = "gcc_sleep_clk_src",320 .parent_data = &(const struct clk_parent_data){321 .fw_name = "sleep_clk",322 .name = "sleep_clk",323 },324 .num_parents = 1,325 .ops = &clk_branch2_ops,326 .flags = CLK_IS_CRITICAL,327 },328 },329};330 331static const struct freq_tbl ftbl_blsp1_qup_i2c_apps_clk_src[] = {332 F(19200000, P_XO, 1, 0, 0),333 F(25000000, P_GPLL0_DIV2, 16, 0, 0),334 F(50000000, P_GPLL0, 16, 0, 0),335 { }336};337 338static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = {339 .cmd_rcgr = 0x0200c,340 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,341 .hid_width = 5,342 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,343 .clkr.hw.init = &(struct clk_init_data){344 .name = "blsp1_qup1_i2c_apps_clk_src",345 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,346 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),347 .ops = &clk_rcg2_ops,348 },349};350 351static const struct freq_tbl ftbl_blsp1_qup_spi_apps_clk_src[] = {352 F(960000, P_XO, 10, 1, 2),353 F(4800000, P_XO, 4, 0, 0),354 F(9600000, P_XO, 2, 0, 0),355 F(12500000, P_GPLL0_DIV2, 16, 1, 2),356 F(16000000, P_GPLL0, 10, 1, 5),357 F(19200000, P_XO, 1, 0, 0),358 F(25000000, P_GPLL0, 16, 1, 2),359 F(50000000, P_GPLL0, 16, 0, 0),360 { }361};362 363static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = {364 .cmd_rcgr = 0x02024,365 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,366 .mnd_width = 8,367 .hid_width = 5,368 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,369 .clkr.hw.init = &(struct clk_init_data){370 .name = "blsp1_qup1_spi_apps_clk_src",371 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,372 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),373 .ops = &clk_rcg2_ops,374 },375};376 377static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = {378 .cmd_rcgr = 0x03000,379 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,380 .hid_width = 5,381 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,382 .clkr.hw.init = &(struct clk_init_data){383 .name = "blsp1_qup2_i2c_apps_clk_src",384 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,385 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),386 .ops = &clk_rcg2_ops,387 },388};389 390static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = {391 .cmd_rcgr = 0x03014,392 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,393 .mnd_width = 8,394 .hid_width = 5,395 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,396 .clkr.hw.init = &(struct clk_init_data){397 .name = "blsp1_qup2_spi_apps_clk_src",398 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,399 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),400 .ops = &clk_rcg2_ops,401 },402};403 404static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = {405 .cmd_rcgr = 0x04000,406 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,407 .hid_width = 5,408 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,409 .clkr.hw.init = &(struct clk_init_data){410 .name = "blsp1_qup3_i2c_apps_clk_src",411 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,412 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),413 .ops = &clk_rcg2_ops,414 },415};416 417static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = {418 .cmd_rcgr = 0x04014,419 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,420 .mnd_width = 8,421 .hid_width = 5,422 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,423 .clkr.hw.init = &(struct clk_init_data){424 .name = "blsp1_qup3_spi_apps_clk_src",425 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,426 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),427 .ops = &clk_rcg2_ops,428 },429};430 431static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = {432 .cmd_rcgr = 0x05000,433 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,434 .hid_width = 5,435 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,436 .clkr.hw.init = &(struct clk_init_data){437 .name = "blsp1_qup4_i2c_apps_clk_src",438 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,439 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),440 .ops = &clk_rcg2_ops,441 },442};443 444static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = {445 .cmd_rcgr = 0x05014,446 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,447 .mnd_width = 8,448 .hid_width = 5,449 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,450 .clkr.hw.init = &(struct clk_init_data){451 .name = "blsp1_qup4_spi_apps_clk_src",452 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,453 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),454 .ops = &clk_rcg2_ops,455 },456};457 458static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = {459 .cmd_rcgr = 0x06000,460 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,461 .hid_width = 5,462 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,463 .clkr.hw.init = &(struct clk_init_data){464 .name = "blsp1_qup5_i2c_apps_clk_src",465 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,466 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),467 .ops = &clk_rcg2_ops,468 },469};470 471static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = {472 .cmd_rcgr = 0x06014,473 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,474 .mnd_width = 8,475 .hid_width = 5,476 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,477 .clkr.hw.init = &(struct clk_init_data){478 .name = "blsp1_qup5_spi_apps_clk_src",479 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,480 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),481 .ops = &clk_rcg2_ops,482 },483};484 485static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = {486 .cmd_rcgr = 0x07000,487 .freq_tbl = ftbl_blsp1_qup_i2c_apps_clk_src,488 .hid_width = 5,489 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,490 .clkr.hw.init = &(struct clk_init_data){491 .name = "blsp1_qup6_i2c_apps_clk_src",492 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,493 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),494 .ops = &clk_rcg2_ops,495 },496};497 498static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = {499 .cmd_rcgr = 0x07014,500 .freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src,501 .mnd_width = 8,502 .hid_width = 5,503 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,504 .clkr.hw.init = &(struct clk_init_data){505 .name = "blsp1_qup6_spi_apps_clk_src",506 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,507 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),508 .ops = &clk_rcg2_ops,509 },510};511 512static const struct freq_tbl ftbl_blsp1_uart_apps_clk_src[] = {513 F(3686400, P_GPLL0_DIV2, 1, 144, 15625),514 F(7372800, P_GPLL0_DIV2, 1, 288, 15625),515 F(14745600, P_GPLL0_DIV2, 1, 576, 15625),516 F(16000000, P_GPLL0_DIV2, 5, 1, 5),517 F(19200000, P_XO, 1, 0, 0),518 F(24000000, P_GPLL0, 1, 3, 100),519 F(25000000, P_GPLL0, 16, 1, 2),520 F(32000000, P_GPLL0, 1, 1, 25),521 F(40000000, P_GPLL0, 1, 1, 20),522 F(46400000, P_GPLL0, 1, 29, 500),523 F(48000000, P_GPLL0, 1, 3, 50),524 F(51200000, P_GPLL0, 1, 8, 125),525 F(56000000, P_GPLL0, 1, 7, 100),526 F(58982400, P_GPLL0, 1, 1152, 15625),527 F(60000000, P_GPLL0, 1, 3, 40),528 F(64000000, P_GPLL0, 12.5, 1, 1),529 { }530};531 532static struct clk_rcg2 blsp1_uart1_apps_clk_src = {533 .cmd_rcgr = 0x02044,534 .freq_tbl = ftbl_blsp1_uart_apps_clk_src,535 .mnd_width = 16,536 .hid_width = 5,537 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,538 .clkr.hw.init = &(struct clk_init_data){539 .name = "blsp1_uart1_apps_clk_src",540 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,541 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),542 .ops = &clk_rcg2_ops,543 },544};545 546static struct clk_rcg2 blsp1_uart2_apps_clk_src = {547 .cmd_rcgr = 0x03034,548 .freq_tbl = ftbl_blsp1_uart_apps_clk_src,549 .mnd_width = 16,550 .hid_width = 5,551 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,552 .clkr.hw.init = &(struct clk_init_data){553 .name = "blsp1_uart2_apps_clk_src",554 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,555 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),556 .ops = &clk_rcg2_ops,557 },558};559 560static struct clk_rcg2 blsp1_uart3_apps_clk_src = {561 .cmd_rcgr = 0x04034,562 .freq_tbl = ftbl_blsp1_uart_apps_clk_src,563 .mnd_width = 16,564 .hid_width = 5,565 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,566 .clkr.hw.init = &(struct clk_init_data){567 .name = "blsp1_uart3_apps_clk_src",568 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,569 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),570 .ops = &clk_rcg2_ops,571 },572};573 574static struct clk_rcg2 blsp1_uart4_apps_clk_src = {575 .cmd_rcgr = 0x05034,576 .freq_tbl = ftbl_blsp1_uart_apps_clk_src,577 .mnd_width = 16,578 .hid_width = 5,579 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,580 .clkr.hw.init = &(struct clk_init_data){581 .name = "blsp1_uart4_apps_clk_src",582 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,583 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),584 .ops = &clk_rcg2_ops,585 },586};587 588static struct clk_rcg2 blsp1_uart5_apps_clk_src = {589 .cmd_rcgr = 0x06034,590 .freq_tbl = ftbl_blsp1_uart_apps_clk_src,591 .mnd_width = 16,592 .hid_width = 5,593 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,594 .clkr.hw.init = &(struct clk_init_data){595 .name = "blsp1_uart5_apps_clk_src",596 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,597 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),598 .ops = &clk_rcg2_ops,599 },600};601 602static struct clk_rcg2 blsp1_uart6_apps_clk_src = {603 .cmd_rcgr = 0x07034,604 .freq_tbl = ftbl_blsp1_uart_apps_clk_src,605 .mnd_width = 16,606 .hid_width = 5,607 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,608 .clkr.hw.init = &(struct clk_init_data){609 .name = "blsp1_uart6_apps_clk_src",610 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,611 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),612 .ops = &clk_rcg2_ops,613 },614};615 616static const struct clk_parent_data gcc_xo_gpll0[] = {617 { .fw_name = "xo" },618 { .hw = &gpll0.clkr.hw },619};620 621static const struct parent_map gcc_xo_gpll0_map[] = {622 { P_XO, 0 },623 { P_GPLL0, 1 },624};625 626static const struct freq_tbl ftbl_pcie_axi_clk_src[] = {627 F(19200000, P_XO, 1, 0, 0),628 F(200000000, P_GPLL0, 4, 0, 0),629 { }630};631 632static struct clk_rcg2 pcie0_axi_clk_src = {633 .cmd_rcgr = 0x75054,634 .freq_tbl = ftbl_pcie_axi_clk_src,635 .hid_width = 5,636 .parent_map = gcc_xo_gpll0_map,637 .clkr.hw.init = &(struct clk_init_data){638 .name = "pcie0_axi_clk_src",639 .parent_data = gcc_xo_gpll0,640 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),641 .ops = &clk_rcg2_ops,642 },643};644 645static const struct freq_tbl ftbl_pcie_aux_clk_src[] = {646 F(19200000, P_XO, 1, 0, 0),647 { }648};649 650static const struct clk_parent_data gcc_xo_gpll0_sleep_clk[] = {651 { .fw_name = "xo", .name = "xo" },652 { .hw = &gpll0.clkr.hw },653 { .fw_name = "sleep_clk", .name = "sleep_clk" },654};655 656static const struct parent_map gcc_xo_gpll0_sleep_clk_map[] = {657 { P_XO, 0 },658 { P_GPLL0, 2 },659 { P_SLEEP_CLK, 6 },660};661 662static struct clk_rcg2 pcie0_aux_clk_src = {663 .cmd_rcgr = 0x75024,664 .freq_tbl = ftbl_pcie_aux_clk_src,665 .mnd_width = 16,666 .hid_width = 5,667 .parent_map = gcc_xo_gpll0_sleep_clk_map,668 .clkr.hw.init = &(struct clk_init_data){669 .name = "pcie0_aux_clk_src",670 .parent_data = gcc_xo_gpll0_sleep_clk,671 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_sleep_clk),672 .ops = &clk_rcg2_ops,673 },674};675 676static const struct clk_parent_data gcc_pcie20_phy0_pipe_clk_xo[] = {677 { .fw_name = "pcie0_pipe", .name = "pcie20_phy0_pipe_clk" },678 { .fw_name = "xo", .name = "xo" },679};680 681static const struct parent_map gcc_pcie20_phy0_pipe_clk_xo_map[] = {682 { P_PCIE20_PHY0_PIPE, 0 },683 { P_XO, 2 },684};685 686static struct clk_regmap_mux pcie0_pipe_clk_src = {687 .reg = 0x7501c,688 .shift = 8,689 .width = 2,690 .parent_map = gcc_pcie20_phy0_pipe_clk_xo_map,691 .clkr = {692 .hw.init = &(struct clk_init_data){693 .name = "pcie0_pipe_clk_src",694 .parent_data = gcc_pcie20_phy0_pipe_clk_xo,695 .num_parents = ARRAY_SIZE(gcc_pcie20_phy0_pipe_clk_xo),696 .ops = &clk_regmap_mux_closest_ops,697 .flags = CLK_SET_RATE_PARENT,698 },699 },700};701 702static struct clk_rcg2 pcie1_axi_clk_src = {703 .cmd_rcgr = 0x76054,704 .freq_tbl = ftbl_pcie_axi_clk_src,705 .hid_width = 5,706 .parent_map = gcc_xo_gpll0_map,707 .clkr.hw.init = &(struct clk_init_data){708 .name = "pcie1_axi_clk_src",709 .parent_data = gcc_xo_gpll0,710 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),711 .ops = &clk_rcg2_ops,712 },713};714 715static struct clk_rcg2 pcie1_aux_clk_src = {716 .cmd_rcgr = 0x76024,717 .freq_tbl = ftbl_pcie_aux_clk_src,718 .mnd_width = 16,719 .hid_width = 5,720 .parent_map = gcc_xo_gpll0_sleep_clk_map,721 .clkr.hw.init = &(struct clk_init_data){722 .name = "pcie1_aux_clk_src",723 .parent_data = gcc_xo_gpll0_sleep_clk,724 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_sleep_clk),725 .ops = &clk_rcg2_ops,726 },727};728 729static const struct clk_parent_data gcc_pcie20_phy1_pipe_clk_xo[] = {730 { .fw_name = "pcie1_pipe", .name = "pcie20_phy1_pipe_clk" },731 { .fw_name = "xo", .name = "xo" },732};733 734static const struct parent_map gcc_pcie20_phy1_pipe_clk_xo_map[] = {735 { P_PCIE20_PHY1_PIPE, 0 },736 { P_XO, 2 },737};738 739static struct clk_regmap_mux pcie1_pipe_clk_src = {740 .reg = 0x7601c,741 .shift = 8,742 .width = 2,743 .parent_map = gcc_pcie20_phy1_pipe_clk_xo_map,744 .clkr = {745 .hw.init = &(struct clk_init_data){746 .name = "pcie1_pipe_clk_src",747 .parent_data = gcc_pcie20_phy1_pipe_clk_xo,748 .num_parents = ARRAY_SIZE(gcc_pcie20_phy1_pipe_clk_xo),749 .ops = &clk_regmap_mux_closest_ops,750 .flags = CLK_SET_RATE_PARENT,751 },752 },753};754 755static const struct freq_tbl ftbl_sdcc_apps_clk_src[] = {756 F(144000, P_XO, 16, 3, 25),757 F(400000, P_XO, 12, 1, 4),758 F(24000000, P_GPLL2, 12, 1, 4),759 F(48000000, P_GPLL2, 12, 1, 2),760 F(96000000, P_GPLL2, 12, 0, 0),761 F(177777778, P_GPLL0, 4.5, 0, 0),762 F(192000000, P_GPLL2, 6, 0, 0),763 F(384000000, P_GPLL2, 3, 0, 0),764 { }765};766 767static const struct clk_parent_data gcc_xo_gpll0_gpll2_gpll0_out_main_div2[] = {768 { .fw_name = "xo", .name = "xo" },769 { .hw = &gpll0.clkr.hw },770 { .hw = &gpll2.clkr.hw },771 { .hw = &gpll0_out_main_div2.hw },772};773 774static const struct parent_map gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map[] = {775 { P_XO, 0 },776 { P_GPLL0, 1 },777 { P_GPLL2, 2 },778 { P_GPLL0_DIV2, 4 },779};780 781static struct clk_rcg2 sdcc1_apps_clk_src = {782 .cmd_rcgr = 0x42004,783 .freq_tbl = ftbl_sdcc_apps_clk_src,784 .mnd_width = 8,785 .hid_width = 5,786 .parent_map = gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map,787 .clkr.hw.init = &(struct clk_init_data){788 .name = "sdcc1_apps_clk_src",789 .parent_data = gcc_xo_gpll0_gpll2_gpll0_out_main_div2,790 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll2_gpll0_out_main_div2),791 .ops = &clk_rcg2_floor_ops,792 },793};794 795static const struct freq_tbl ftbl_sdcc_ice_core_clk_src[] = {796 F(19200000, P_XO, 1, 0, 0),797 F(160000000, P_GPLL0, 5, 0, 0),798 F(308570000, P_GPLL6, 3.5, 0, 0),799 { }800};801 802static const struct clk_parent_data gcc_xo_gpll0_gpll6_gpll0_div2[] = {803 { .fw_name = "xo", .name = "xo" },804 { .hw = &gpll0.clkr.hw },805 { .hw = &gpll6.clkr.hw },806 { .hw = &gpll0_out_main_div2.hw },807};808 809static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_div2_map[] = {810 { P_XO, 0 },811 { P_GPLL0, 1 },812 { P_GPLL6, 2 },813 { P_GPLL0_DIV2, 4 },814};815 816static struct clk_rcg2 sdcc1_ice_core_clk_src = {817 .cmd_rcgr = 0x5d000,818 .freq_tbl = ftbl_sdcc_ice_core_clk_src,819 .mnd_width = 8,820 .hid_width = 5,821 .parent_map = gcc_xo_gpll0_gpll6_gpll0_div2_map,822 .clkr.hw.init = &(struct clk_init_data){823 .name = "sdcc1_ice_core_clk_src",824 .parent_data = gcc_xo_gpll0_gpll6_gpll0_div2,825 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll6_gpll0_div2),826 .ops = &clk_rcg2_ops,827 },828};829 830static struct clk_rcg2 sdcc2_apps_clk_src = {831 .cmd_rcgr = 0x43004,832 .freq_tbl = ftbl_sdcc_apps_clk_src,833 .mnd_width = 8,834 .hid_width = 5,835 .parent_map = gcc_xo_gpll0_gpll2_gpll0_out_main_div2_map,836 .clkr.hw.init = &(struct clk_init_data){837 .name = "sdcc2_apps_clk_src",838 .parent_data = gcc_xo_gpll0_gpll2_gpll0_out_main_div2,839 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll2_gpll0_out_main_div2),840 .ops = &clk_rcg2_floor_ops,841 },842};843 844static const struct freq_tbl ftbl_usb_master_clk_src[] = {845 F(80000000, P_GPLL0_DIV2, 5, 0, 0),846 F(100000000, P_GPLL0, 8, 0, 0),847 F(133330000, P_GPLL0, 6, 0, 0),848 { }849};850 851static const struct clk_parent_data gcc_xo_gpll0_out_main_div2_gpll0[] = {852 { .fw_name = "xo", .name = "xo" },853 { .hw = &gpll0_out_main_div2.hw },854 { .hw = &gpll0.clkr.hw },855};856 857static const struct parent_map gcc_xo_gpll0_out_main_div2_gpll0_map[] = {858 { P_XO, 0 },859 { P_GPLL0_DIV2, 2 },860 { P_GPLL0, 1 },861};862 863static struct clk_rcg2 usb0_master_clk_src = {864 .cmd_rcgr = 0x3e00c,865 .freq_tbl = ftbl_usb_master_clk_src,866 .mnd_width = 8,867 .hid_width = 5,868 .parent_map = gcc_xo_gpll0_out_main_div2_gpll0_map,869 .clkr.hw.init = &(struct clk_init_data){870 .name = "usb0_master_clk_src",871 .parent_data = gcc_xo_gpll0_out_main_div2_gpll0,872 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_out_main_div2_gpll0),873 .ops = &clk_rcg2_ops,874 },875};876 877static const struct freq_tbl ftbl_usb_aux_clk_src[] = {878 F(19200000, P_XO, 1, 0, 0),879 { }880};881 882static struct clk_rcg2 usb0_aux_clk_src = {883 .cmd_rcgr = 0x3e05c,884 .freq_tbl = ftbl_usb_aux_clk_src,885 .mnd_width = 16,886 .hid_width = 5,887 .parent_map = gcc_xo_gpll0_sleep_clk_map,888 .clkr.hw.init = &(struct clk_init_data){889 .name = "usb0_aux_clk_src",890 .parent_data = gcc_xo_gpll0_sleep_clk,891 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_sleep_clk),892 .ops = &clk_rcg2_ops,893 },894};895 896static const struct freq_tbl ftbl_usb_mock_utmi_clk_src[] = {897 F(19200000, P_XO, 1, 0, 0),898 F(20000000, P_GPLL6, 6, 1, 9),899 F(60000000, P_GPLL6, 6, 1, 3),900 { }901};902 903static const struct clk_parent_data gcc_xo_gpll6_gpll0_gpll0_out_main_div2[] = {904 { .fw_name = "xo", .name = "xo" },905 { .hw = &gpll6.clkr.hw },906 { .hw = &gpll0.clkr.hw },907 { .hw = &gpll0_out_main_div2.hw },908};909 910static const struct parent_map gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map[] = {911 { P_XO, 0 },912 { P_GPLL6, 1 },913 { P_GPLL0, 3 },914 { P_GPLL0_DIV2, 4 },915};916 917static struct clk_rcg2 usb0_mock_utmi_clk_src = {918 .cmd_rcgr = 0x3e020,919 .freq_tbl = ftbl_usb_mock_utmi_clk_src,920 .mnd_width = 8,921 .hid_width = 5,922 .parent_map = gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map,923 .clkr.hw.init = &(struct clk_init_data){924 .name = "usb0_mock_utmi_clk_src",925 .parent_data = gcc_xo_gpll6_gpll0_gpll0_out_main_div2,926 .num_parents = ARRAY_SIZE(gcc_xo_gpll6_gpll0_gpll0_out_main_div2),927 .ops = &clk_rcg2_ops,928 },929};930 931static const struct clk_parent_data gcc_usb3phy_0_cc_pipe_clk_xo[] = {932 { .fw_name = "usb3phy_0_cc_pipe_clk", .name = "usb3phy_0_cc_pipe_clk" },933 { .fw_name = "xo", .name = "xo" },934};935 936static const struct parent_map gcc_usb3phy_0_cc_pipe_clk_xo_map[] = {937 { P_USB3PHY_0_PIPE, 0 },938 { P_XO, 2 },939};940 941static struct clk_regmap_mux usb0_pipe_clk_src = {942 .reg = 0x3e048,943 .shift = 8,944 .width = 2,945 .parent_map = gcc_usb3phy_0_cc_pipe_clk_xo_map,946 .clkr = {947 .hw.init = &(struct clk_init_data){948 .name = "usb0_pipe_clk_src",949 .parent_data = gcc_usb3phy_0_cc_pipe_clk_xo,950 .num_parents = ARRAY_SIZE(gcc_usb3phy_0_cc_pipe_clk_xo),951 .ops = &clk_regmap_mux_closest_ops,952 .flags = CLK_SET_RATE_PARENT,953 },954 },955};956 957static struct clk_rcg2 usb1_master_clk_src = {958 .cmd_rcgr = 0x3f00c,959 .freq_tbl = ftbl_usb_master_clk_src,960 .mnd_width = 8,961 .hid_width = 5,962 .parent_map = gcc_xo_gpll0_out_main_div2_gpll0_map,963 .clkr.hw.init = &(struct clk_init_data){964 .name = "usb1_master_clk_src",965 .parent_data = gcc_xo_gpll0_out_main_div2_gpll0,966 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_out_main_div2_gpll0),967 .ops = &clk_rcg2_ops,968 },969};970 971static struct clk_rcg2 usb1_aux_clk_src = {972 .cmd_rcgr = 0x3f05c,973 .freq_tbl = ftbl_usb_aux_clk_src,974 .mnd_width = 16,975 .hid_width = 5,976 .parent_map = gcc_xo_gpll0_sleep_clk_map,977 .clkr.hw.init = &(struct clk_init_data){978 .name = "usb1_aux_clk_src",979 .parent_data = gcc_xo_gpll0_sleep_clk,980 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_sleep_clk),981 .ops = &clk_rcg2_ops,982 },983};984 985static struct clk_rcg2 usb1_mock_utmi_clk_src = {986 .cmd_rcgr = 0x3f020,987 .freq_tbl = ftbl_usb_mock_utmi_clk_src,988 .mnd_width = 8,989 .hid_width = 5,990 .parent_map = gcc_xo_gpll6_gpll0_gpll0_out_main_div2_map,991 .clkr.hw.init = &(struct clk_init_data){992 .name = "usb1_mock_utmi_clk_src",993 .parent_data = gcc_xo_gpll6_gpll0_gpll0_out_main_div2,994 .num_parents = ARRAY_SIZE(gcc_xo_gpll6_gpll0_gpll0_out_main_div2),995 .ops = &clk_rcg2_ops,996 },997};998 999static const struct clk_parent_data gcc_usb3phy_1_cc_pipe_clk_xo[] = {1000 { .fw_name = "usb3phy_1_cc_pipe_clk", .name = "usb3phy_1_cc_pipe_clk" },1001 { .fw_name = "xo", .name = "xo" },1002};1003 1004static const struct parent_map gcc_usb3phy_1_cc_pipe_clk_xo_map[] = {1005 { P_USB3PHY_1_PIPE, 0 },1006 { P_XO, 2 },1007};1008 1009static struct clk_regmap_mux usb1_pipe_clk_src = {1010 .reg = 0x3f048,1011 .shift = 8,1012 .width = 2,1013 .parent_map = gcc_usb3phy_1_cc_pipe_clk_xo_map,1014 .clkr = {1015 .hw.init = &(struct clk_init_data){1016 .name = "usb1_pipe_clk_src",1017 .parent_data = gcc_usb3phy_1_cc_pipe_clk_xo,1018 .num_parents = ARRAY_SIZE(gcc_usb3phy_1_cc_pipe_clk_xo),1019 .ops = &clk_regmap_mux_closest_ops,1020 .flags = CLK_SET_RATE_PARENT,1021 },1022 },1023};1024 1025static struct clk_branch gcc_xo_clk_src = {1026 .halt_reg = 0x30018,1027 .clkr = {1028 .enable_reg = 0x30018,1029 .enable_mask = BIT(1),1030 .hw.init = &(struct clk_init_data){1031 .name = "gcc_xo_clk_src",1032 .parent_data = &(const struct clk_parent_data){1033 .fw_name = "xo",1034 .name = "xo",1035 },1036 .num_parents = 1,1037 .flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,1038 .ops = &clk_branch2_ops,1039 },1040 },1041};1042 1043static struct clk_fixed_factor gcc_xo_div4_clk_src = {1044 .mult = 1,1045 .div = 4,1046 .hw.init = &(struct clk_init_data){1047 .name = "gcc_xo_div4_clk_src",1048 .parent_hws = (const struct clk_hw *[]){1049 &gcc_xo_clk_src.clkr.hw },1050 .num_parents = 1,1051 .ops = &clk_fixed_factor_ops,1052 .flags = CLK_SET_RATE_PARENT,1053 },1054};1055 1056static const struct freq_tbl ftbl_system_noc_bfdcd_clk_src[] = {1057 F(19200000, P_XO, 1, 0, 0),1058 F(50000000, P_GPLL0_DIV2, 8, 0, 0),1059 F(100000000, P_GPLL0, 8, 0, 0),1060 F(133333333, P_GPLL0, 6, 0, 0),1061 F(160000000, P_GPLL0, 5, 0, 0),1062 F(200000000, P_GPLL0, 4, 0, 0),1063 F(266666667, P_GPLL0, 3, 0, 0),1064 { }1065};1066 1067static const struct clk_parent_data gcc_xo_gpll0_gpll6_gpll0_out_main_div2[] = {1068 { .fw_name = "xo", .name = "xo" },1069 { .hw = &gpll0.clkr.hw },1070 { .hw = &gpll6.clkr.hw },1071 { .hw = &gpll0_out_main_div2.hw },1072};1073 1074static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_out_main_div2_map[] = {1075 { P_XO, 0 },1076 { P_GPLL0, 1 },1077 { P_GPLL6, 2 },1078 { P_GPLL0_DIV2, 3 },1079};1080 1081static struct clk_rcg2 system_noc_bfdcd_clk_src = {1082 .cmd_rcgr = 0x26004,1083 .freq_tbl = ftbl_system_noc_bfdcd_clk_src,1084 .hid_width = 5,1085 .parent_map = gcc_xo_gpll0_gpll6_gpll0_out_main_div2_map,1086 .clkr.hw.init = &(struct clk_init_data){1087 .name = "system_noc_bfdcd_clk_src",1088 .parent_data = gcc_xo_gpll0_gpll6_gpll0_out_main_div2,1089 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll6_gpll0_out_main_div2),1090 .ops = &clk_rcg2_ops,1091 .flags = CLK_IS_CRITICAL,1092 },1093};1094 1095static struct clk_fixed_factor system_noc_clk_src = {1096 .mult = 1,1097 .div = 1,1098 .hw.init = &(struct clk_init_data){1099 .name = "system_noc_clk_src",1100 .parent_hws = (const struct clk_hw *[]){1101 &system_noc_bfdcd_clk_src.clkr.hw },1102 .num_parents = 1,1103 .ops = &clk_fixed_factor_ops,1104 .flags = CLK_SET_RATE_PARENT,1105 },1106};1107 1108static const struct freq_tbl ftbl_nss_ce_clk_src[] = {1109 F(19200000, P_XO, 1, 0, 0),1110 F(200000000, P_GPLL0, 4, 0, 0),1111 { }1112};1113 1114static struct clk_rcg2 nss_ce_clk_src = {1115 .cmd_rcgr = 0x68098,1116 .freq_tbl = ftbl_nss_ce_clk_src,1117 .hid_width = 5,1118 .parent_map = gcc_xo_gpll0_map,1119 .clkr.hw.init = &(struct clk_init_data){1120 .name = "nss_ce_clk_src",1121 .parent_data = gcc_xo_gpll0,1122 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),1123 .ops = &clk_rcg2_ops,1124 },1125};1126 1127static const struct freq_tbl ftbl_nss_noc_bfdcd_clk_src[] = {1128 F(19200000, P_XO, 1, 0, 0),1129 F(461500000, P_BIAS_PLL_NSS_NOC, 1, 0, 0),1130 { }1131};1132 1133static const struct clk_parent_data gcc_xo_bias_pll_nss_noc_clk_gpll0_gpll2[] = {1134 { .fw_name = "xo", .name = "xo" },1135 { .fw_name = "bias_pll_nss_noc_clk", .name = "bias_pll_nss_noc_clk" },1136 { .hw = &gpll0.clkr.hw },1137 { .hw = &gpll2.clkr.hw },1138};1139 1140static const struct parent_map gcc_xo_bias_pll_nss_noc_clk_gpll0_gpll2_map[] = {1141 { P_XO, 0 },1142 { P_BIAS_PLL_NSS_NOC, 1 },1143 { P_GPLL0, 2 },1144 { P_GPLL2, 3 },1145};1146 1147static struct clk_rcg2 nss_noc_bfdcd_clk_src = {1148 .cmd_rcgr = 0x68088,1149 .freq_tbl = ftbl_nss_noc_bfdcd_clk_src,1150 .hid_width = 5,1151 .parent_map = gcc_xo_bias_pll_nss_noc_clk_gpll0_gpll2_map,1152 .clkr.hw.init = &(struct clk_init_data){1153 .name = "nss_noc_bfdcd_clk_src",1154 .parent_data = gcc_xo_bias_pll_nss_noc_clk_gpll0_gpll2,1155 .num_parents = ARRAY_SIZE(gcc_xo_bias_pll_nss_noc_clk_gpll0_gpll2),1156 .ops = &clk_rcg2_ops,1157 },1158};1159 1160static struct clk_fixed_factor nss_noc_clk_src = {1161 .mult = 1,1162 .div = 1,1163 .hw.init = &(struct clk_init_data){1164 .name = "nss_noc_clk_src",1165 .parent_hws = (const struct clk_hw *[]){1166 &nss_noc_bfdcd_clk_src.clkr.hw },1167 .num_parents = 1,1168 .ops = &clk_fixed_factor_ops,1169 .flags = CLK_SET_RATE_PARENT,1170 },1171};1172 1173static const struct freq_tbl ftbl_nss_crypto_clk_src[] = {1174 F(19200000, P_XO, 1, 0, 0),1175 F(600000000, P_NSS_CRYPTO_PLL, 1, 0, 0),1176 { }1177};1178 1179static const struct clk_parent_data gcc_xo_nss_crypto_pll_gpll0[] = {1180 { .fw_name = "xo", .name = "xo" },1181 { .hw = &nss_crypto_pll.clkr.hw },1182 { .hw = &gpll0.clkr.hw },1183};1184 1185static const struct parent_map gcc_xo_nss_crypto_pll_gpll0_map[] = {1186 { P_XO, 0 },1187 { P_NSS_CRYPTO_PLL, 1 },1188 { P_GPLL0, 2 },1189};1190 1191static struct clk_rcg2 nss_crypto_clk_src = {1192 .cmd_rcgr = 0x68144,1193 .freq_tbl = ftbl_nss_crypto_clk_src,1194 .mnd_width = 16,1195 .hid_width = 5,1196 .parent_map = gcc_xo_nss_crypto_pll_gpll0_map,1197 .clkr.hw.init = &(struct clk_init_data){1198 .name = "nss_crypto_clk_src",1199 .parent_data = gcc_xo_nss_crypto_pll_gpll0,1200 .num_parents = ARRAY_SIZE(gcc_xo_nss_crypto_pll_gpll0),1201 .ops = &clk_rcg2_ops,1202 },1203};1204 1205static const struct freq_tbl ftbl_nss_ubi_clk_src[] = {1206 F(19200000, P_XO, 1, 0, 0),1207 F(187200000, P_UBI32_PLL, 8, 0, 0),1208 F(748800000, P_UBI32_PLL, 2, 0, 0),1209 F(1497600000, P_UBI32_PLL, 1, 0, 0),1210 F(1689600000, P_UBI32_PLL, 1, 0, 0),1211 { }1212};1213 1214static const struct clk_parent_data gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6[] = {1215 { .fw_name = "xo", .name = "xo" },1216 { .hw = &ubi32_pll.clkr.hw },1217 { .hw = &gpll0.clkr.hw },1218 { .hw = &gpll2.clkr.hw },1219 { .hw = &gpll4.clkr.hw },1220 { .hw = &gpll6.clkr.hw },1221};1222 1223static const struct parent_map gcc_xo_ubi32_gpll0_gpll2_gpll4_gpll6_map[] = {1224 { P_XO, 0 },1225 { P_UBI32_PLL, 1 },1226 { P_GPLL0, 2 },1227 { P_GPLL2, 3 },1228 { P_GPLL4, 4 },1229 { P_GPLL6, 5 },1230};1231 1232static struct clk_rcg2 nss_ubi0_clk_src = {1233 .cmd_rcgr = 0x68104,1234 .freq_tbl = ftbl_nss_ubi_clk_src,1235 .hid_width = 5,1236 .parent_map = gcc_xo_ubi32_gpll0_gpll2_gpll4_gpll6_map,1237 .clkr.hw.init = &(struct clk_init_data){1238 .name = "nss_ubi0_clk_src",1239 .parent_data = gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6,1240 .num_parents = ARRAY_SIZE(gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6),1241 .ops = &clk_rcg2_ops,1242 .flags = CLK_SET_RATE_PARENT,1243 },1244};1245 1246static struct clk_regmap_div nss_ubi0_div_clk_src = {1247 .reg = 0x68118,1248 .shift = 0,1249 .width = 4,1250 .clkr = {1251 .hw.init = &(struct clk_init_data){1252 .name = "nss_ubi0_div_clk_src",1253 .parent_hws = (const struct clk_hw *[]){1254 &nss_ubi0_clk_src.clkr.hw },1255 .num_parents = 1,1256 .ops = &clk_regmap_div_ro_ops,1257 .flags = CLK_SET_RATE_PARENT,1258 },1259 },1260};1261 1262static struct clk_rcg2 nss_ubi1_clk_src = {1263 .cmd_rcgr = 0x68124,1264 .freq_tbl = ftbl_nss_ubi_clk_src,1265 .hid_width = 5,1266 .parent_map = gcc_xo_ubi32_gpll0_gpll2_gpll4_gpll6_map,1267 .clkr.hw.init = &(struct clk_init_data){1268 .name = "nss_ubi1_clk_src",1269 .parent_data = gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6,1270 .num_parents = ARRAY_SIZE(gcc_xo_ubi32_pll_gpll0_gpll2_gpll4_gpll6),1271 .ops = &clk_rcg2_ops,1272 .flags = CLK_SET_RATE_PARENT,1273 },1274};1275 1276static struct clk_regmap_div nss_ubi1_div_clk_src = {1277 .reg = 0x68138,1278 .shift = 0,1279 .width = 4,1280 .clkr = {1281 .hw.init = &(struct clk_init_data){1282 .name = "nss_ubi1_div_clk_src",1283 .parent_hws = (const struct clk_hw *[]){1284 &nss_ubi1_clk_src.clkr.hw },1285 .num_parents = 1,1286 .ops = &clk_regmap_div_ro_ops,1287 .flags = CLK_SET_RATE_PARENT,1288 },1289 },1290};1291 1292static const struct freq_tbl ftbl_ubi_mpt_clk_src[] = {1293 F(19200000, P_XO, 1, 0, 0),1294 F(25000000, P_GPLL0_DIV2, 16, 0, 0),1295 { }1296};1297 1298static const struct clk_parent_data gcc_xo_gpll0_out_main_div2[] = {1299 { .fw_name = "xo", .name = "xo" },1300 { .hw = &gpll0_out_main_div2.hw },1301};1302 1303static const struct parent_map gcc_xo_gpll0_out_main_div2_map[] = {1304 { P_XO, 0 },1305 { P_GPLL0_DIV2, 1 },1306};1307 1308static struct clk_rcg2 ubi_mpt_clk_src = {1309 .cmd_rcgr = 0x68090,1310 .freq_tbl = ftbl_ubi_mpt_clk_src,1311 .hid_width = 5,1312 .parent_map = gcc_xo_gpll0_out_main_div2_map,1313 .clkr.hw.init = &(struct clk_init_data){1314 .name = "ubi_mpt_clk_src",1315 .parent_data = gcc_xo_gpll0_out_main_div2,1316 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_out_main_div2),1317 .ops = &clk_rcg2_ops,1318 },1319};1320 1321static const struct freq_tbl ftbl_nss_imem_clk_src[] = {1322 F(19200000, P_XO, 1, 0, 0),1323 F(400000000, P_GPLL0, 2, 0, 0),1324 { }1325};1326 1327static const struct clk_parent_data gcc_xo_gpll0_gpll4[] = {1328 { .fw_name = "xo", .name = "xo" },1329 { .hw = &gpll0.clkr.hw },1330 { .hw = &gpll4.clkr.hw },1331};1332 1333static const struct parent_map gcc_xo_gpll0_gpll4_map[] = {1334 { P_XO, 0 },1335 { P_GPLL0, 1 },1336 { P_GPLL4, 2 },1337};1338 1339static struct clk_rcg2 nss_imem_clk_src = {1340 .cmd_rcgr = 0x68158,1341 .freq_tbl = ftbl_nss_imem_clk_src,1342 .hid_width = 5,1343 .parent_map = gcc_xo_gpll0_gpll4_map,1344 .clkr.hw.init = &(struct clk_init_data){1345 .name = "nss_imem_clk_src",1346 .parent_data = gcc_xo_gpll0_gpll4,1347 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll4),1348 .ops = &clk_rcg2_ops,1349 },1350};1351 1352static const struct freq_tbl ftbl_nss_ppe_clk_src[] = {1353 F(19200000, P_XO, 1, 0, 0),1354 F(300000000, P_BIAS_PLL, 1, 0, 0),1355 { }1356};1357 1358static const struct clk_parent_data gcc_xo_bias_gpll0_gpll4_nss_ubi32[] = {1359 { .fw_name = "xo", .name = "xo" },1360 { .fw_name = "bias_pll_cc_clk", .name = "bias_pll_cc_clk" },1361 { .hw = &gpll0.clkr.hw },1362 { .hw = &gpll4.clkr.hw },1363 { .hw = &nss_crypto_pll.clkr.hw },1364 { .hw = &ubi32_pll.clkr.hw },1365};1366 1367static const struct parent_map gcc_xo_bias_gpll0_gpll4_nss_ubi32_map[] = {1368 { P_XO, 0 },1369 { P_BIAS_PLL, 1 },1370 { P_GPLL0, 2 },1371 { P_GPLL4, 3 },1372 { P_NSS_CRYPTO_PLL, 4 },1373 { P_UBI32_PLL, 5 },1374};1375 1376static struct clk_rcg2 nss_ppe_clk_src = {1377 .cmd_rcgr = 0x68080,1378 .freq_tbl = ftbl_nss_ppe_clk_src,1379 .hid_width = 5,1380 .parent_map = gcc_xo_bias_gpll0_gpll4_nss_ubi32_map,1381 .clkr.hw.init = &(struct clk_init_data){1382 .name = "nss_ppe_clk_src",1383 .parent_data = gcc_xo_bias_gpll0_gpll4_nss_ubi32,1384 .num_parents = ARRAY_SIZE(gcc_xo_bias_gpll0_gpll4_nss_ubi32),1385 .ops = &clk_rcg2_ops,1386 },1387};1388 1389static struct clk_fixed_factor nss_ppe_cdiv_clk_src = {1390 .mult = 1,1391 .div = 4,1392 .hw.init = &(struct clk_init_data){1393 .name = "nss_ppe_cdiv_clk_src",1394 .parent_hws = (const struct clk_hw *[]){1395 &nss_ppe_clk_src.clkr.hw },1396 .num_parents = 1,1397 .ops = &clk_fixed_factor_ops,1398 .flags = CLK_SET_RATE_PARENT,1399 },1400};1401 1402static const struct freq_tbl ftbl_nss_port1_rx_clk_src[] = {1403 F(19200000, P_XO, 1, 0, 0),1404 F(25000000, P_UNIPHY0_RX, 5, 0, 0),1405 F(125000000, P_UNIPHY0_RX, 1, 0, 0),1406 { }1407};1408 1409static const struct clk_parent_data gcc_xo_uniphy0_rx_tx_ubi32_bias[] = {1410 { .fw_name = "xo", .name = "xo" },1411 { .fw_name = "uniphy0_gcc_rx_clk", .name = "uniphy0_gcc_rx_clk" },1412 { .fw_name = "uniphy0_gcc_tx_clk", .name = "uniphy0_gcc_tx_clk" },1413 { .hw = &ubi32_pll.clkr.hw },1414 { .fw_name = "bias_pll_cc_clk", .name = "bias_pll_cc_clk" },1415};1416 1417static const struct parent_map gcc_xo_uniphy0_rx_tx_ubi32_bias_map[] = {1418 { P_XO, 0 },1419 { P_UNIPHY0_RX, 1 },1420 { P_UNIPHY0_TX, 2 },1421 { P_UBI32_PLL, 5 },1422 { P_BIAS_PLL, 6 },1423};1424 1425static struct clk_rcg2 nss_port1_rx_clk_src = {1426 .cmd_rcgr = 0x68020,1427 .freq_tbl = ftbl_nss_port1_rx_clk_src,1428 .hid_width = 5,1429 .parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,1430 .clkr.hw.init = &(struct clk_init_data){1431 .name = "nss_port1_rx_clk_src",1432 .parent_data = gcc_xo_uniphy0_rx_tx_ubi32_bias,1433 .num_parents = ARRAY_SIZE(gcc_xo_uniphy0_rx_tx_ubi32_bias),1434 .ops = &clk_rcg2_ops,1435 },1436};1437 1438static struct clk_regmap_div nss_port1_rx_div_clk_src = {1439 .reg = 0x68400,1440 .shift = 0,1441 .width = 4,1442 .clkr = {1443 .hw.init = &(struct clk_init_data){1444 .name = "nss_port1_rx_div_clk_src",1445 .parent_hws = (const struct clk_hw *[]){1446 &nss_port1_rx_clk_src.clkr.hw },1447 .num_parents = 1,1448 .ops = &clk_regmap_div_ops,1449 .flags = CLK_SET_RATE_PARENT,1450 },1451 },1452};1453 1454static const struct freq_tbl ftbl_nss_port1_tx_clk_src[] = {1455 F(19200000, P_XO, 1, 0, 0),1456 F(25000000, P_UNIPHY0_TX, 5, 0, 0),1457 F(125000000, P_UNIPHY0_TX, 1, 0, 0),1458 { }1459};1460 1461static const struct clk_parent_data gcc_xo_uniphy0_tx_rx_ubi32_bias[] = {1462 { .fw_name = "xo", .name = "xo" },1463 { .fw_name = "uniphy0_gcc_tx_clk", .name = "uniphy0_gcc_tx_clk" },1464 { .fw_name = "uniphy0_gcc_rx_clk", .name = "uniphy0_gcc_rx_clk" },1465 { .hw = &ubi32_pll.clkr.hw },1466 { .fw_name = "bias_pll_cc_clk", .name = "bias_pll_cc_clk" },1467};1468 1469static const struct parent_map gcc_xo_uniphy0_tx_rx_ubi32_bias_map[] = {1470 { P_XO, 0 },1471 { P_UNIPHY0_TX, 1 },1472 { P_UNIPHY0_RX, 2 },1473 { P_UBI32_PLL, 5 },1474 { P_BIAS_PLL, 6 },1475};1476 1477static struct clk_rcg2 nss_port1_tx_clk_src = {1478 .cmd_rcgr = 0x68028,1479 .freq_tbl = ftbl_nss_port1_tx_clk_src,1480 .hid_width = 5,1481 .parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,1482 .clkr.hw.init = &(struct clk_init_data){1483 .name = "nss_port1_tx_clk_src",1484 .parent_data = gcc_xo_uniphy0_tx_rx_ubi32_bias,1485 .num_parents = ARRAY_SIZE(gcc_xo_uniphy0_tx_rx_ubi32_bias),1486 .ops = &clk_rcg2_ops,1487 },1488};1489 1490static struct clk_regmap_div nss_port1_tx_div_clk_src = {1491 .reg = 0x68404,1492 .shift = 0,1493 .width = 4,1494 .clkr = {1495 .hw.init = &(struct clk_init_data){1496 .name = "nss_port1_tx_div_clk_src",1497 .parent_hws = (const struct clk_hw *[]){1498 &nss_port1_tx_clk_src.clkr.hw },1499 .num_parents = 1,1500 .ops = &clk_regmap_div_ops,1501 .flags = CLK_SET_RATE_PARENT,1502 },1503 },1504};1505 1506static struct clk_rcg2 nss_port2_rx_clk_src = {1507 .cmd_rcgr = 0x68030,1508 .freq_tbl = ftbl_nss_port1_rx_clk_src,1509 .hid_width = 5,1510 .parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,1511 .clkr.hw.init = &(struct clk_init_data){1512 .name = "nss_port2_rx_clk_src",1513 .parent_data = gcc_xo_uniphy0_rx_tx_ubi32_bias,1514 .num_parents = ARRAY_SIZE(gcc_xo_uniphy0_rx_tx_ubi32_bias),1515 .ops = &clk_rcg2_ops,1516 },1517};1518 1519static struct clk_regmap_div nss_port2_rx_div_clk_src = {1520 .reg = 0x68410,1521 .shift = 0,1522 .width = 4,1523 .clkr = {1524 .hw.init = &(struct clk_init_data){1525 .name = "nss_port2_rx_div_clk_src",1526 .parent_hws = (const struct clk_hw *[]){1527 &nss_port2_rx_clk_src.clkr.hw },1528 .num_parents = 1,1529 .ops = &clk_regmap_div_ops,1530 .flags = CLK_SET_RATE_PARENT,1531 },1532 },1533};1534 1535static struct clk_rcg2 nss_port2_tx_clk_src = {1536 .cmd_rcgr = 0x68038,1537 .freq_tbl = ftbl_nss_port1_tx_clk_src,1538 .hid_width = 5,1539 .parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,1540 .clkr.hw.init = &(struct clk_init_data){1541 .name = "nss_port2_tx_clk_src",1542 .parent_data = gcc_xo_uniphy0_tx_rx_ubi32_bias,1543 .num_parents = ARRAY_SIZE(gcc_xo_uniphy0_tx_rx_ubi32_bias),1544 .ops = &clk_rcg2_ops,1545 },1546};1547 1548static struct clk_regmap_div nss_port2_tx_div_clk_src = {1549 .reg = 0x68414,1550 .shift = 0,1551 .width = 4,1552 .clkr = {1553 .hw.init = &(struct clk_init_data){1554 .name = "nss_port2_tx_div_clk_src",1555 .parent_hws = (const struct clk_hw *[]){1556 &nss_port2_tx_clk_src.clkr.hw },1557 .num_parents = 1,1558 .ops = &clk_regmap_div_ops,1559 .flags = CLK_SET_RATE_PARENT,1560 },1561 },1562};1563 1564static struct clk_rcg2 nss_port3_rx_clk_src = {1565 .cmd_rcgr = 0x68040,1566 .freq_tbl = ftbl_nss_port1_rx_clk_src,1567 .hid_width = 5,1568 .parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,1569 .clkr.hw.init = &(struct clk_init_data){1570 .name = "nss_port3_rx_clk_src",1571 .parent_data = gcc_xo_uniphy0_rx_tx_ubi32_bias,1572 .num_parents = ARRAY_SIZE(gcc_xo_uniphy0_rx_tx_ubi32_bias),1573 .ops = &clk_rcg2_ops,1574 },1575};1576 1577static struct clk_regmap_div nss_port3_rx_div_clk_src = {1578 .reg = 0x68420,1579 .shift = 0,1580 .width = 4,1581 .clkr = {1582 .hw.init = &(struct clk_init_data){1583 .name = "nss_port3_rx_div_clk_src",1584 .parent_hws = (const struct clk_hw *[]){1585 &nss_port3_rx_clk_src.clkr.hw },1586 .num_parents = 1,1587 .ops = &clk_regmap_div_ops,1588 .flags = CLK_SET_RATE_PARENT,1589 },1590 },1591};1592 1593static struct clk_rcg2 nss_port3_tx_clk_src = {1594 .cmd_rcgr = 0x68048,1595 .freq_tbl = ftbl_nss_port1_tx_clk_src,1596 .hid_width = 5,1597 .parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,1598 .clkr.hw.init = &(struct clk_init_data){1599 .name = "nss_port3_tx_clk_src",1600 .parent_data = gcc_xo_uniphy0_tx_rx_ubi32_bias,1601 .num_parents = ARRAY_SIZE(gcc_xo_uniphy0_tx_rx_ubi32_bias),1602 .ops = &clk_rcg2_ops,1603 },1604};1605 1606static struct clk_regmap_div nss_port3_tx_div_clk_src = {1607 .reg = 0x68424,1608 .shift = 0,1609 .width = 4,1610 .clkr = {1611 .hw.init = &(struct clk_init_data){1612 .name = "nss_port3_tx_div_clk_src",1613 .parent_hws = (const struct clk_hw *[]){1614 &nss_port3_tx_clk_src.clkr.hw },1615 .num_parents = 1,1616 .ops = &clk_regmap_div_ops,1617 .flags = CLK_SET_RATE_PARENT,1618 },1619 },1620};1621 1622static struct clk_rcg2 nss_port4_rx_clk_src = {1623 .cmd_rcgr = 0x68050,1624 .freq_tbl = ftbl_nss_port1_rx_clk_src,1625 .hid_width = 5,1626 .parent_map = gcc_xo_uniphy0_rx_tx_ubi32_bias_map,1627 .clkr.hw.init = &(struct clk_init_data){1628 .name = "nss_port4_rx_clk_src",1629 .parent_data = gcc_xo_uniphy0_rx_tx_ubi32_bias,1630 .num_parents = ARRAY_SIZE(gcc_xo_uniphy0_rx_tx_ubi32_bias),1631 .ops = &clk_rcg2_ops,1632 },1633};1634 1635static struct clk_regmap_div nss_port4_rx_div_clk_src = {1636 .reg = 0x68430,1637 .shift = 0,1638 .width = 4,1639 .clkr = {1640 .hw.init = &(struct clk_init_data){1641 .name = "nss_port4_rx_div_clk_src",1642 .parent_hws = (const struct clk_hw *[]){1643 &nss_port4_rx_clk_src.clkr.hw },1644 .num_parents = 1,1645 .ops = &clk_regmap_div_ops,1646 .flags = CLK_SET_RATE_PARENT,1647 },1648 },1649};1650 1651static struct clk_rcg2 nss_port4_tx_clk_src = {1652 .cmd_rcgr = 0x68058,1653 .freq_tbl = ftbl_nss_port1_tx_clk_src,1654 .hid_width = 5,1655 .parent_map = gcc_xo_uniphy0_tx_rx_ubi32_bias_map,1656 .clkr.hw.init = &(struct clk_init_data){1657 .name = "nss_port4_tx_clk_src",1658 .parent_data = gcc_xo_uniphy0_tx_rx_ubi32_bias,1659 .num_parents = ARRAY_SIZE(gcc_xo_uniphy0_tx_rx_ubi32_bias),1660 .ops = &clk_rcg2_ops,1661 },1662};1663 1664static struct clk_regmap_div nss_port4_tx_div_clk_src = {1665 .reg = 0x68434,1666 .shift = 0,1667 .width = 4,1668 .clkr = {1669 .hw.init = &(struct clk_init_data){1670 .name = "nss_port4_tx_div_clk_src",1671 .parent_hws = (const struct clk_hw *[]){1672 &nss_port4_tx_clk_src.clkr.hw },1673 .num_parents = 1,1674 .ops = &clk_regmap_div_ops,1675 .flags = CLK_SET_RATE_PARENT,1676 },1677 },1678};1679 1680static const struct freq_conf ftbl_nss_port5_rx_clk_src_25[] = {1681 C(P_UNIPHY1_RX, 12.5, 0, 0),1682 C(P_UNIPHY0_RX, 5, 0, 0),1683};1684 1685static const struct freq_conf ftbl_nss_port5_rx_clk_src_125[] = {1686 C(P_UNIPHY1_RX, 2.5, 0, 0),1687 C(P_UNIPHY0_RX, 1, 0, 0),1688};1689 1690static const struct freq_multi_tbl ftbl_nss_port5_rx_clk_src[] = {1691 FMS(19200000, P_XO, 1, 0, 0),1692 FM(25000000, ftbl_nss_port5_rx_clk_src_25),1693 FMS(78125000, P_UNIPHY1_RX, 4, 0, 0),1694 FM(125000000, ftbl_nss_port5_rx_clk_src_125),1695 FMS(156250000, P_UNIPHY1_RX, 2, 0, 0),1696 FMS(312500000, P_UNIPHY1_RX, 1, 0, 0),1697 { }1698};1699 1700static const struct clk_parent_data gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias[] = {1701 { .fw_name = "xo", .name = "xo" },1702 { .fw_name = "uniphy0_gcc_rx_clk", .name = "uniphy0_gcc_rx_clk" },1703 { .fw_name = "uniphy0_gcc_tx_clk", .name = "uniphy0_gcc_tx_clk" },1704 { .fw_name = "uniphy1_gcc_rx_clk", .name = "uniphy1_gcc_rx_clk" },1705 { .fw_name = "uniphy1_gcc_tx_clk", .name = "uniphy1_gcc_tx_clk" },1706 { .hw = &ubi32_pll.clkr.hw },1707 { .fw_name = "bias_pll_cc_clk", .name = "bias_pll_cc_clk" },1708};1709 1710static const struct parent_map1711gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias_map[] = {1712 { P_XO, 0 },1713 { P_UNIPHY0_RX, 1 },1714 { P_UNIPHY0_TX, 2 },1715 { P_UNIPHY1_RX, 3 },1716 { P_UNIPHY1_TX, 4 },1717 { P_UBI32_PLL, 5 },1718 { P_BIAS_PLL, 6 },1719};1720 1721static struct clk_rcg2 nss_port5_rx_clk_src = {1722 .cmd_rcgr = 0x68060,1723 .freq_multi_tbl = ftbl_nss_port5_rx_clk_src,1724 .hid_width = 5,1725 .parent_map = gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias_map,1726 .clkr.hw.init = &(struct clk_init_data){1727 .name = "nss_port5_rx_clk_src",1728 .parent_data = gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias,1729 .num_parents = ARRAY_SIZE(gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias),1730 .ops = &clk_rcg2_fm_ops,1731 },1732};1733 1734static struct clk_regmap_div nss_port5_rx_div_clk_src = {1735 .reg = 0x68440,1736 .shift = 0,1737 .width = 4,1738 .clkr = {1739 .hw.init = &(struct clk_init_data){1740 .name = "nss_port5_rx_div_clk_src",1741 .parent_hws = (const struct clk_hw *[]){1742 &nss_port5_rx_clk_src.clkr.hw },1743 .num_parents = 1,1744 .ops = &clk_regmap_div_ops,1745 .flags = CLK_SET_RATE_PARENT,1746 },1747 },1748};1749 1750static const struct freq_conf ftbl_nss_port5_tx_clk_src_25[] = {1751 C(P_UNIPHY1_TX, 12.5, 0, 0),1752 C(P_UNIPHY0_TX, 5, 0, 0),1753};1754 1755static const struct freq_conf ftbl_nss_port5_tx_clk_src_125[] = {1756 C(P_UNIPHY1_TX, 2.5, 0, 0),1757 C(P_UNIPHY0_TX, 1, 0, 0),1758};1759 1760static const struct freq_multi_tbl ftbl_nss_port5_tx_clk_src[] = {1761 FMS(19200000, P_XO, 1, 0, 0),1762 FM(25000000, ftbl_nss_port5_tx_clk_src_25),1763 FMS(78125000, P_UNIPHY1_TX, 4, 0, 0),1764 FM(125000000, ftbl_nss_port5_tx_clk_src_125),1765 FMS(156250000, P_UNIPHY1_TX, 2, 0, 0),1766 FMS(312500000, P_UNIPHY1_TX, 1, 0, 0),1767 { }1768};1769 1770static const struct clk_parent_data gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias[] = {1771 { .fw_name = "xo", .name = "xo" },1772 { .fw_name = "uniphy0_gcc_tx_clk", .name = "uniphy0_gcc_tx_clk" },1773 { .fw_name = "uniphy0_gcc_rx_clk", .name = "uniphy0_gcc_rx_clk" },1774 { .fw_name = "uniphy1_gcc_tx_clk", .name = "uniphy1_gcc_tx_clk" },1775 { .fw_name = "uniphy1_gcc_rx_clk", .name = "uniphy1_gcc_rx_clk" },1776 { .hw = &ubi32_pll.clkr.hw },1777 { .fw_name = "bias_pll_cc_clk", .name = "bias_pll_cc_clk" },1778};1779 1780static const struct parent_map1781gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias_map[] = {1782 { P_XO, 0 },1783 { P_UNIPHY0_TX, 1 },1784 { P_UNIPHY0_RX, 2 },1785 { P_UNIPHY1_TX, 3 },1786 { P_UNIPHY1_RX, 4 },1787 { P_UBI32_PLL, 5 },1788 { P_BIAS_PLL, 6 },1789};1790 1791static struct clk_rcg2 nss_port5_tx_clk_src = {1792 .cmd_rcgr = 0x68068,1793 .freq_multi_tbl = ftbl_nss_port5_tx_clk_src,1794 .hid_width = 5,1795 .parent_map = gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias_map,1796 .clkr.hw.init = &(struct clk_init_data){1797 .name = "nss_port5_tx_clk_src",1798 .parent_data = gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias,1799 .num_parents = ARRAY_SIZE(gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias),1800 .ops = &clk_rcg2_fm_ops,1801 },1802};1803 1804static struct clk_regmap_div nss_port5_tx_div_clk_src = {1805 .reg = 0x68444,1806 .shift = 0,1807 .width = 4,1808 .clkr = {1809 .hw.init = &(struct clk_init_data){1810 .name = "nss_port5_tx_div_clk_src",1811 .parent_hws = (const struct clk_hw *[]){1812 &nss_port5_tx_clk_src.clkr.hw },1813 .num_parents = 1,1814 .ops = &clk_regmap_div_ops,1815 .flags = CLK_SET_RATE_PARENT,1816 },1817 },1818};1819 1820static const struct freq_conf ftbl_nss_port6_rx_clk_src_25[] = {1821 C(P_UNIPHY2_RX, 5, 0, 0),1822 C(P_UNIPHY2_RX, 12.5, 0, 0),1823};1824 1825static const struct freq_conf ftbl_nss_port6_rx_clk_src_125[] = {1826 C(P_UNIPHY2_RX, 1, 0, 0),1827 C(P_UNIPHY2_RX, 2.5, 0, 0),1828};1829 1830static const struct freq_multi_tbl ftbl_nss_port6_rx_clk_src[] = {1831 FMS(19200000, P_XO, 1, 0, 0),1832 FM(25000000, ftbl_nss_port6_rx_clk_src_25),1833 FMS(78125000, P_UNIPHY2_RX, 4, 0, 0),1834 FM(125000000, ftbl_nss_port6_rx_clk_src_125),1835 FMS(156250000, P_UNIPHY2_RX, 2, 0, 0),1836 FMS(312500000, P_UNIPHY2_RX, 1, 0, 0),1837 { }1838};1839 1840static const struct clk_parent_data gcc_xo_uniphy2_rx_tx_ubi32_bias[] = {1841 { .fw_name = "xo", .name = "xo" },1842 { .fw_name = "uniphy2_gcc_rx_clk", .name = "uniphy2_gcc_rx_clk" },1843 { .fw_name = "uniphy2_gcc_tx_clk", .name = "uniphy2_gcc_tx_clk" },1844 { .hw = &ubi32_pll.clkr.hw },1845 { .fw_name = "bias_pll_cc_clk", .name = "bias_pll_cc_clk" },1846};1847 1848static const struct parent_map gcc_xo_uniphy2_rx_tx_ubi32_bias_map[] = {1849 { P_XO, 0 },1850 { P_UNIPHY2_RX, 1 },1851 { P_UNIPHY2_TX, 2 },1852 { P_UBI32_PLL, 5 },1853 { P_BIAS_PLL, 6 },1854};1855 1856static struct clk_rcg2 nss_port6_rx_clk_src = {1857 .cmd_rcgr = 0x68070,1858 .freq_multi_tbl = ftbl_nss_port6_rx_clk_src,1859 .hid_width = 5,1860 .parent_map = gcc_xo_uniphy2_rx_tx_ubi32_bias_map,1861 .clkr.hw.init = &(struct clk_init_data){1862 .name = "nss_port6_rx_clk_src",1863 .parent_data = gcc_xo_uniphy2_rx_tx_ubi32_bias,1864 .num_parents = ARRAY_SIZE(gcc_xo_uniphy2_rx_tx_ubi32_bias),1865 .ops = &clk_rcg2_fm_ops,1866 },1867};1868 1869static struct clk_regmap_div nss_port6_rx_div_clk_src = {1870 .reg = 0x68450,1871 .shift = 0,1872 .width = 4,1873 .clkr = {1874 .hw.init = &(struct clk_init_data){1875 .name = "nss_port6_rx_div_clk_src",1876 .parent_hws = (const struct clk_hw *[]){1877 &nss_port6_rx_clk_src.clkr.hw },1878 .num_parents = 1,1879 .ops = &clk_regmap_div_ops,1880 .flags = CLK_SET_RATE_PARENT,1881 },1882 },1883};1884 1885static const struct freq_conf ftbl_nss_port6_tx_clk_src_25[] = {1886 C(P_UNIPHY2_TX, 5, 0, 0),1887 C(P_UNIPHY2_TX, 12.5, 0, 0),1888};1889 1890static const struct freq_conf ftbl_nss_port6_tx_clk_src_125[] = {1891 C(P_UNIPHY2_TX, 1, 0, 0),1892 C(P_UNIPHY2_TX, 2.5, 0, 0),1893};1894 1895static const struct freq_multi_tbl ftbl_nss_port6_tx_clk_src[] = {1896 FMS(19200000, P_XO, 1, 0, 0),1897 FM(25000000, ftbl_nss_port6_tx_clk_src_25),1898 FMS(78125000, P_UNIPHY1_RX, 4, 0, 0),1899 FM(125000000, ftbl_nss_port6_tx_clk_src_125),1900 FMS(156250000, P_UNIPHY1_RX, 2, 0, 0),1901 FMS(312500000, P_UNIPHY1_RX, 1, 0, 0),1902 { }1903};1904 1905static const struct clk_parent_data gcc_xo_uniphy2_tx_rx_ubi32_bias[] = {1906 { .fw_name = "xo", .name = "xo" },1907 { .fw_name = "uniphy2_gcc_tx_clk", .name = "uniphy2_gcc_tx_clk" },1908 { .fw_name = "uniphy2_gcc_rx_clk", .name = "uniphy2_gcc_rx_clk" },1909 { .hw = &ubi32_pll.clkr.hw },1910 { .fw_name = "bias_pll_cc_clk", .name = "bias_pll_cc_clk" },1911};1912 1913static const struct parent_map gcc_xo_uniphy2_tx_rx_ubi32_bias_map[] = {1914 { P_XO, 0 },1915 { P_UNIPHY2_TX, 1 },1916 { P_UNIPHY2_RX, 2 },1917 { P_UBI32_PLL, 5 },1918 { P_BIAS_PLL, 6 },1919};1920 1921static struct clk_rcg2 nss_port6_tx_clk_src = {1922 .cmd_rcgr = 0x68078,1923 .freq_multi_tbl = ftbl_nss_port6_tx_clk_src,1924 .hid_width = 5,1925 .parent_map = gcc_xo_uniphy2_tx_rx_ubi32_bias_map,1926 .clkr.hw.init = &(struct clk_init_data){1927 .name = "nss_port6_tx_clk_src",1928 .parent_data = gcc_xo_uniphy2_tx_rx_ubi32_bias,1929 .num_parents = ARRAY_SIZE(gcc_xo_uniphy2_tx_rx_ubi32_bias),1930 .ops = &clk_rcg2_fm_ops,1931 },1932};1933 1934static struct clk_regmap_div nss_port6_tx_div_clk_src = {1935 .reg = 0x68454,1936 .shift = 0,1937 .width = 4,1938 .clkr = {1939 .hw.init = &(struct clk_init_data){1940 .name = "nss_port6_tx_div_clk_src",1941 .parent_hws = (const struct clk_hw *[]){1942 &nss_port6_tx_clk_src.clkr.hw },1943 .num_parents = 1,1944 .ops = &clk_regmap_div_ops,1945 .flags = CLK_SET_RATE_PARENT,1946 },1947 },1948};1949 1950static const struct freq_tbl ftbl_crypto_clk_src[] = {1951 F(40000000, P_GPLL0_DIV2, 10, 0, 0),1952 F(80000000, P_GPLL0, 10, 0, 0),1953 F(100000000, P_GPLL0, 8, 0, 0),1954 F(160000000, P_GPLL0, 5, 0, 0),1955 { }1956};1957 1958static struct clk_rcg2 crypto_clk_src = {1959 .cmd_rcgr = 0x16004,1960 .freq_tbl = ftbl_crypto_clk_src,1961 .hid_width = 5,1962 .parent_map = gcc_xo_gpll0_gpll0_out_main_div2_map,1963 .clkr.hw.init = &(struct clk_init_data){1964 .name = "crypto_clk_src",1965 .parent_data = gcc_xo_gpll0_gpll0_out_main_div2,1966 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll0_out_main_div2),1967 .ops = &clk_rcg2_ops,1968 },1969};1970 1971static const struct freq_tbl ftbl_gp_clk_src[] = {1972 F(19200000, P_XO, 1, 0, 0),1973 { }1974};1975 1976static const struct clk_parent_data gcc_xo_gpll0_gpll6_gpll0_sleep_clk[] = {1977 { .fw_name = "xo", .name = "xo" },1978 { .hw = &gpll0.clkr.hw },1979 { .hw = &gpll6.clkr.hw },1980 { .hw = &gpll0_out_main_div2.hw },1981 { .fw_name = "sleep_clk", .name = "sleep_clk" },1982};1983 1984static const struct parent_map gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map[] = {1985 { P_XO, 0 },1986 { P_GPLL0, 1 },1987 { P_GPLL6, 2 },1988 { P_GPLL0_DIV2, 4 },1989 { P_SLEEP_CLK, 6 },1990};1991 1992static struct clk_rcg2 gp1_clk_src = {1993 .cmd_rcgr = 0x08004,1994 .freq_tbl = ftbl_gp_clk_src,1995 .mnd_width = 8,1996 .hid_width = 5,1997 .parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map,1998 .clkr.hw.init = &(struct clk_init_data){1999 .name = "gp1_clk_src",2000 .parent_data = gcc_xo_gpll0_gpll6_gpll0_sleep_clk,2001 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll6_gpll0_sleep_clk),2002 .ops = &clk_rcg2_ops,2003 },2004};2005 2006static struct clk_rcg2 gp2_clk_src = {2007 .cmd_rcgr = 0x09004,2008 .freq_tbl = ftbl_gp_clk_src,2009 .mnd_width = 8,2010 .hid_width = 5,2011 .parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map,2012 .clkr.hw.init = &(struct clk_init_data){2013 .name = "gp2_clk_src",2014 .parent_data = gcc_xo_gpll0_gpll6_gpll0_sleep_clk,2015 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll6_gpll0_sleep_clk),2016 .ops = &clk_rcg2_ops,2017 },2018};2019 2020static struct clk_rcg2 gp3_clk_src = {2021 .cmd_rcgr = 0x0a004,2022 .freq_tbl = ftbl_gp_clk_src,2023 .mnd_width = 8,2024 .hid_width = 5,2025 .parent_map = gcc_xo_gpll0_gpll6_gpll0_sleep_clk_map,2026 .clkr.hw.init = &(struct clk_init_data){2027 .name = "gp3_clk_src",2028 .parent_data = gcc_xo_gpll0_gpll6_gpll0_sleep_clk,2029 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll6_gpll0_sleep_clk),2030 .ops = &clk_rcg2_ops,2031 },2032};2033 2034static struct clk_branch gcc_blsp1_ahb_clk = {2035 .halt_reg = 0x01008,2036 .clkr = {2037 .enable_reg = 0x01008,2038 .enable_mask = BIT(0),2039 .hw.init = &(struct clk_init_data){2040 .name = "gcc_blsp1_ahb_clk",2041 .parent_hws = (const struct clk_hw *[]){2042 &pcnoc_clk_src.hw },2043 .num_parents = 1,2044 .flags = CLK_SET_RATE_PARENT,2045 .ops = &clk_branch2_ops,2046 },2047 },2048};2049 2050static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = {2051 .halt_reg = 0x02008,2052 .clkr = {2053 .enable_reg = 0x02008,2054 .enable_mask = BIT(0),2055 .hw.init = &(struct clk_init_data){2056 .name = "gcc_blsp1_qup1_i2c_apps_clk",2057 .parent_hws = (const struct clk_hw *[]){2058 &blsp1_qup1_i2c_apps_clk_src.clkr.hw },2059 .num_parents = 1,2060 .flags = CLK_SET_RATE_PARENT,2061 .ops = &clk_branch2_ops,2062 },2063 },2064};2065 2066static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = {2067 .halt_reg = 0x02004,2068 .clkr = {2069 .enable_reg = 0x02004,2070 .enable_mask = BIT(0),2071 .hw.init = &(struct clk_init_data){2072 .name = "gcc_blsp1_qup1_spi_apps_clk",2073 .parent_hws = (const struct clk_hw *[]){2074 &blsp1_qup1_spi_apps_clk_src.clkr.hw },2075 .num_parents = 1,2076 .flags = CLK_SET_RATE_PARENT,2077 .ops = &clk_branch2_ops,2078 },2079 },2080};2081 2082static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = {2083 .halt_reg = 0x03010,2084 .clkr = {2085 .enable_reg = 0x03010,2086 .enable_mask = BIT(0),2087 .hw.init = &(struct clk_init_data){2088 .name = "gcc_blsp1_qup2_i2c_apps_clk",2089 .parent_hws = (const struct clk_hw *[]){2090 &blsp1_qup2_i2c_apps_clk_src.clkr.hw },2091 .num_parents = 1,2092 .flags = CLK_SET_RATE_PARENT,2093 .ops = &clk_branch2_ops,2094 },2095 },2096};2097 2098static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = {2099 .halt_reg = 0x0300c,2100 .clkr = {2101 .enable_reg = 0x0300c,2102 .enable_mask = BIT(0),2103 .hw.init = &(struct clk_init_data){2104 .name = "gcc_blsp1_qup2_spi_apps_clk",2105 .parent_hws = (const struct clk_hw *[]){2106 &blsp1_qup2_spi_apps_clk_src.clkr.hw },2107 .num_parents = 1,2108 .flags = CLK_SET_RATE_PARENT,2109 .ops = &clk_branch2_ops,2110 },2111 },2112};2113 2114static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = {2115 .halt_reg = 0x04010,2116 .clkr = {2117 .enable_reg = 0x04010,2118 .enable_mask = BIT(0),2119 .hw.init = &(struct clk_init_data){2120 .name = "gcc_blsp1_qup3_i2c_apps_clk",2121 .parent_hws = (const struct clk_hw *[]){2122 &blsp1_qup3_i2c_apps_clk_src.clkr.hw },2123 .num_parents = 1,2124 .flags = CLK_SET_RATE_PARENT,2125 .ops = &clk_branch2_ops,2126 },2127 },2128};2129 2130static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = {2131 .halt_reg = 0x0400c,2132 .clkr = {2133 .enable_reg = 0x0400c,2134 .enable_mask = BIT(0),2135 .hw.init = &(struct clk_init_data){2136 .name = "gcc_blsp1_qup3_spi_apps_clk",2137 .parent_hws = (const struct clk_hw *[]){2138 &blsp1_qup3_spi_apps_clk_src.clkr.hw },2139 .num_parents = 1,2140 .flags = CLK_SET_RATE_PARENT,2141 .ops = &clk_branch2_ops,2142 },2143 },2144};2145 2146static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = {2147 .halt_reg = 0x05010,2148 .clkr = {2149 .enable_reg = 0x05010,2150 .enable_mask = BIT(0),2151 .hw.init = &(struct clk_init_data){2152 .name = "gcc_blsp1_qup4_i2c_apps_clk",2153 .parent_hws = (const struct clk_hw *[]){2154 &blsp1_qup4_i2c_apps_clk_src.clkr.hw },2155 .num_parents = 1,2156 .flags = CLK_SET_RATE_PARENT,2157 .ops = &clk_branch2_ops,2158 },2159 },2160};2161 2162static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = {2163 .halt_reg = 0x0500c,2164 .clkr = {2165 .enable_reg = 0x0500c,2166 .enable_mask = BIT(0),2167 .hw.init = &(struct clk_init_data){2168 .name = "gcc_blsp1_qup4_spi_apps_clk",2169 .parent_hws = (const struct clk_hw *[]){2170 &blsp1_qup4_spi_apps_clk_src.clkr.hw },2171 .num_parents = 1,2172 .flags = CLK_SET_RATE_PARENT,2173 .ops = &clk_branch2_ops,2174 },2175 },2176};2177 2178static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = {2179 .halt_reg = 0x06010,2180 .clkr = {2181 .enable_reg = 0x06010,2182 .enable_mask = BIT(0),2183 .hw.init = &(struct clk_init_data){2184 .name = "gcc_blsp1_qup5_i2c_apps_clk",2185 .parent_hws = (const struct clk_hw *[]){2186 &blsp1_qup5_i2c_apps_clk_src.clkr.hw },2187 .num_parents = 1,2188 .flags = CLK_SET_RATE_PARENT,2189 .ops = &clk_branch2_ops,2190 },2191 },2192};2193 2194static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = {2195 .halt_reg = 0x0600c,2196 .clkr = {2197 .enable_reg = 0x0600c,2198 .enable_mask = BIT(0),2199 .hw.init = &(struct clk_init_data){2200 .name = "gcc_blsp1_qup5_spi_apps_clk",2201 .parent_hws = (const struct clk_hw *[]){2202 &blsp1_qup5_spi_apps_clk_src.clkr.hw },2203 .num_parents = 1,2204 .flags = CLK_SET_RATE_PARENT,2205 .ops = &clk_branch2_ops,2206 },2207 },2208};2209 2210static struct clk_branch gcc_blsp1_qup6_i2c_apps_clk = {2211 .halt_reg = 0x07010,2212 .clkr = {2213 .enable_reg = 0x07010,2214 .enable_mask = BIT(0),2215 .hw.init = &(struct clk_init_data){2216 .name = "gcc_blsp1_qup6_i2c_apps_clk",2217 .parent_hws = (const struct clk_hw *[]){2218 &blsp1_qup6_i2c_apps_clk_src.clkr.hw },2219 .num_parents = 1,2220 .flags = CLK_SET_RATE_PARENT,2221 .ops = &clk_branch2_ops,2222 },2223 },2224};2225 2226static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = {2227 .halt_reg = 0x0700c,2228 .clkr = {2229 .enable_reg = 0x0700c,2230 .enable_mask = BIT(0),2231 .hw.init = &(struct clk_init_data){2232 .name = "gcc_blsp1_qup6_spi_apps_clk",2233 .parent_hws = (const struct clk_hw *[]){2234 &blsp1_qup6_spi_apps_clk_src.clkr.hw },2235 .num_parents = 1,2236 .flags = CLK_SET_RATE_PARENT,2237 .ops = &clk_branch2_ops,2238 },2239 },2240};2241 2242static struct clk_branch gcc_blsp1_uart1_apps_clk = {2243 .halt_reg = 0x0203c,2244 .clkr = {2245 .enable_reg = 0x0203c,2246 .enable_mask = BIT(0),2247 .hw.init = &(struct clk_init_data){2248 .name = "gcc_blsp1_uart1_apps_clk",2249 .parent_hws = (const struct clk_hw *[]){2250 &blsp1_uart1_apps_clk_src.clkr.hw },2251 .num_parents = 1,2252 .flags = CLK_SET_RATE_PARENT,2253 .ops = &clk_branch2_ops,2254 },2255 },2256};2257 2258static struct clk_branch gcc_blsp1_uart2_apps_clk = {2259 .halt_reg = 0x0302c,2260 .clkr = {2261 .enable_reg = 0x0302c,2262 .enable_mask = BIT(0),2263 .hw.init = &(struct clk_init_data){2264 .name = "gcc_blsp1_uart2_apps_clk",2265 .parent_hws = (const struct clk_hw *[]){2266 &blsp1_uart2_apps_clk_src.clkr.hw },2267 .num_parents = 1,2268 .flags = CLK_SET_RATE_PARENT,2269 .ops = &clk_branch2_ops,2270 },2271 },2272};2273 2274static struct clk_branch gcc_blsp1_uart3_apps_clk = {2275 .halt_reg = 0x0402c,2276 .clkr = {2277 .enable_reg = 0x0402c,2278 .enable_mask = BIT(0),2279 .hw.init = &(struct clk_init_data){2280 .name = "gcc_blsp1_uart3_apps_clk",2281 .parent_hws = (const struct clk_hw *[]){2282 &blsp1_uart3_apps_clk_src.clkr.hw },2283 .num_parents = 1,2284 .flags = CLK_SET_RATE_PARENT,2285 .ops = &clk_branch2_ops,2286 },2287 },2288};2289 2290static struct clk_branch gcc_blsp1_uart4_apps_clk = {2291 .halt_reg = 0x0502c,2292 .clkr = {2293 .enable_reg = 0x0502c,2294 .enable_mask = BIT(0),2295 .hw.init = &(struct clk_init_data){2296 .name = "gcc_blsp1_uart4_apps_clk",2297 .parent_hws = (const struct clk_hw *[]){2298 &blsp1_uart4_apps_clk_src.clkr.hw },2299 .num_parents = 1,2300 .flags = CLK_SET_RATE_PARENT,2301 .ops = &clk_branch2_ops,2302 },2303 },2304};2305 2306static struct clk_branch gcc_blsp1_uart5_apps_clk = {2307 .halt_reg = 0x0602c,2308 .clkr = {2309 .enable_reg = 0x0602c,2310 .enable_mask = BIT(0),2311 .hw.init = &(struct clk_init_data){2312 .name = "gcc_blsp1_uart5_apps_clk",2313 .parent_hws = (const struct clk_hw *[]){2314 &blsp1_uart5_apps_clk_src.clkr.hw },2315 .num_parents = 1,2316 .flags = CLK_SET_RATE_PARENT,2317 .ops = &clk_branch2_ops,2318 },2319 },2320};2321 2322static struct clk_branch gcc_blsp1_uart6_apps_clk = {2323 .halt_reg = 0x0702c,2324 .clkr = {2325 .enable_reg = 0x0702c,2326 .enable_mask = BIT(0),2327 .hw.init = &(struct clk_init_data){2328 .name = "gcc_blsp1_uart6_apps_clk",2329 .parent_hws = (const struct clk_hw *[]){2330 &blsp1_uart6_apps_clk_src.clkr.hw },2331 .num_parents = 1,2332 .flags = CLK_SET_RATE_PARENT,2333 .ops = &clk_branch2_ops,2334 },2335 },2336};2337 2338static struct clk_branch gcc_prng_ahb_clk = {2339 .halt_reg = 0x13004,2340 .halt_check = BRANCH_HALT_VOTED,2341 .clkr = {2342 .enable_reg = 0x0b004,2343 .enable_mask = BIT(8),2344 .hw.init = &(struct clk_init_data){2345 .name = "gcc_prng_ahb_clk",2346 .parent_hws = (const struct clk_hw *[]){2347 &pcnoc_clk_src.hw },2348 .num_parents = 1,2349 .flags = CLK_SET_RATE_PARENT,2350 .ops = &clk_branch2_ops,2351 },2352 },2353};2354 2355static struct clk_branch gcc_qpic_ahb_clk = {2356 .halt_reg = 0x57024,2357 .clkr = {2358 .enable_reg = 0x57024,2359 .enable_mask = BIT(0),2360 .hw.init = &(struct clk_init_data){2361 .name = "gcc_qpic_ahb_clk",2362 .parent_hws = (const struct clk_hw *[]){2363 &pcnoc_clk_src.hw },2364 .num_parents = 1,2365 .flags = CLK_SET_RATE_PARENT,2366 .ops = &clk_branch2_ops,2367 },2368 },2369};2370 2371static struct clk_branch gcc_qpic_clk = {2372 .halt_reg = 0x57020,2373 .clkr = {2374 .enable_reg = 0x57020,2375 .enable_mask = BIT(0),2376 .hw.init = &(struct clk_init_data){2377 .name = "gcc_qpic_clk",2378 .parent_hws = (const struct clk_hw *[]){2379 &pcnoc_clk_src.hw },2380 .num_parents = 1,2381 .flags = CLK_SET_RATE_PARENT,2382 .ops = &clk_branch2_ops,2383 },2384 },2385};2386 2387static struct clk_branch gcc_pcie0_ahb_clk = {2388 .halt_reg = 0x75010,2389 .clkr = {2390 .enable_reg = 0x75010,2391 .enable_mask = BIT(0),2392 .hw.init = &(struct clk_init_data){2393 .name = "gcc_pcie0_ahb_clk",2394 .parent_hws = (const struct clk_hw *[]){2395 &pcnoc_clk_src.hw },2396 .num_parents = 1,2397 .flags = CLK_SET_RATE_PARENT,2398 .ops = &clk_branch2_ops,2399 },2400 },2401};2402 2403static struct clk_branch gcc_pcie0_aux_clk = {2404 .halt_reg = 0x75014,2405 .clkr = {2406 .enable_reg = 0x75014,2407 .enable_mask = BIT(0),2408 .hw.init = &(struct clk_init_data){2409 .name = "gcc_pcie0_aux_clk",2410 .parent_hws = (const struct clk_hw *[]){2411 &pcie0_aux_clk_src.clkr.hw },2412 .num_parents = 1,2413 .flags = CLK_SET_RATE_PARENT,2414 .ops = &clk_branch2_ops,2415 },2416 },2417};2418 2419static struct clk_branch gcc_pcie0_axi_m_clk = {2420 .halt_reg = 0x75008,2421 .clkr = {2422 .enable_reg = 0x75008,2423 .enable_mask = BIT(0),2424 .hw.init = &(struct clk_init_data){2425 .name = "gcc_pcie0_axi_m_clk",2426 .parent_hws = (const struct clk_hw *[]){2427 &pcie0_axi_clk_src.clkr.hw },2428 .num_parents = 1,2429 .flags = CLK_SET_RATE_PARENT,2430 .ops = &clk_branch2_ops,2431 },2432 },2433};2434 2435static struct clk_branch gcc_pcie0_axi_s_clk = {2436 .halt_reg = 0x7500c,2437 .clkr = {2438 .enable_reg = 0x7500c,2439 .enable_mask = BIT(0),2440 .hw.init = &(struct clk_init_data){2441 .name = "gcc_pcie0_axi_s_clk",2442 .parent_hws = (const struct clk_hw *[]){2443 &pcie0_axi_clk_src.clkr.hw },2444 .num_parents = 1,2445 .flags = CLK_SET_RATE_PARENT,2446 .ops = &clk_branch2_ops,2447 },2448 },2449};2450 2451static struct clk_branch gcc_pcie0_pipe_clk = {2452 .halt_reg = 0x75018,2453 .halt_check = BRANCH_HALT_DELAY,2454 .clkr = {2455 .enable_reg = 0x75018,2456 .enable_mask = BIT(0),2457 .hw.init = &(struct clk_init_data){2458 .name = "gcc_pcie0_pipe_clk",2459 .parent_hws = (const struct clk_hw *[]){2460 &pcie0_pipe_clk_src.clkr.hw },2461 .num_parents = 1,2462 .flags = CLK_SET_RATE_PARENT,2463 .ops = &clk_branch2_ops,2464 },2465 },2466};2467 2468static struct clk_branch gcc_sys_noc_pcie0_axi_clk = {2469 .halt_reg = 0x26048,2470 .clkr = {2471 .enable_reg = 0x26048,2472 .enable_mask = BIT(0),2473 .hw.init = &(struct clk_init_data){2474 .name = "gcc_sys_noc_pcie0_axi_clk",2475 .parent_hws = (const struct clk_hw *[]){2476 &pcie0_axi_clk_src.clkr.hw },2477 .num_parents = 1,2478 .flags = CLK_SET_RATE_PARENT,2479 .ops = &clk_branch2_ops,2480 },2481 },2482};2483 2484static struct clk_branch gcc_pcie1_ahb_clk = {2485 .halt_reg = 0x76010,2486 .clkr = {2487 .enable_reg = 0x76010,2488 .enable_mask = BIT(0),2489 .hw.init = &(struct clk_init_data){2490 .name = "gcc_pcie1_ahb_clk",2491 .parent_hws = (const struct clk_hw *[]){2492 &pcnoc_clk_src.hw },2493 .num_parents = 1,2494 .flags = CLK_SET_RATE_PARENT,2495 .ops = &clk_branch2_ops,2496 },2497 },2498};2499 2500static struct clk_branch gcc_pcie1_aux_clk = {2501 .halt_reg = 0x76014,2502 .clkr = {2503 .enable_reg = 0x76014,2504 .enable_mask = BIT(0),2505 .hw.init = &(struct clk_init_data){2506 .name = "gcc_pcie1_aux_clk",2507 .parent_hws = (const struct clk_hw *[]){2508 &pcie1_aux_clk_src.clkr.hw },2509 .num_parents = 1,2510 .flags = CLK_SET_RATE_PARENT,2511 .ops = &clk_branch2_ops,2512 },2513 },2514};2515 2516static struct clk_branch gcc_pcie1_axi_m_clk = {2517 .halt_reg = 0x76008,2518 .clkr = {2519 .enable_reg = 0x76008,2520 .enable_mask = BIT(0),2521 .hw.init = &(struct clk_init_data){2522 .name = "gcc_pcie1_axi_m_clk",2523 .parent_hws = (const struct clk_hw *[]){2524 &pcie1_axi_clk_src.clkr.hw },2525 .num_parents = 1,2526 .flags = CLK_SET_RATE_PARENT,2527 .ops = &clk_branch2_ops,2528 },2529 },2530};2531 2532static struct clk_branch gcc_pcie1_axi_s_clk = {2533 .halt_reg = 0x7600c,2534 .clkr = {2535 .enable_reg = 0x7600c,2536 .enable_mask = BIT(0),2537 .hw.init = &(struct clk_init_data){2538 .name = "gcc_pcie1_axi_s_clk",2539 .parent_hws = (const struct clk_hw *[]){2540 &pcie1_axi_clk_src.clkr.hw },2541 .num_parents = 1,2542 .flags = CLK_SET_RATE_PARENT,2543 .ops = &clk_branch2_ops,2544 },2545 },2546};2547 2548static struct clk_branch gcc_pcie1_pipe_clk = {2549 .halt_reg = 0x76018,2550 .halt_check = BRANCH_HALT_DELAY,2551 .clkr = {2552 .enable_reg = 0x76018,2553 .enable_mask = BIT(0),2554 .hw.init = &(struct clk_init_data){2555 .name = "gcc_pcie1_pipe_clk",2556 .parent_hws = (const struct clk_hw *[]){2557 &pcie1_pipe_clk_src.clkr.hw },2558 .num_parents = 1,2559 .flags = CLK_SET_RATE_PARENT,2560 .ops = &clk_branch2_ops,2561 },2562 },2563};2564 2565static struct clk_branch gcc_sys_noc_pcie1_axi_clk = {2566 .halt_reg = 0x2604c,2567 .clkr = {2568 .enable_reg = 0x2604c,2569 .enable_mask = BIT(0),2570 .hw.init = &(struct clk_init_data){2571 .name = "gcc_sys_noc_pcie1_axi_clk",2572 .parent_hws = (const struct clk_hw *[]){2573 &pcie1_axi_clk_src.clkr.hw },2574 .num_parents = 1,2575 .flags = CLK_SET_RATE_PARENT,2576 .ops = &clk_branch2_ops,2577 },2578 },2579};2580 2581static struct clk_branch gcc_usb0_aux_clk = {2582 .halt_reg = 0x3e044,2583 .clkr = {2584 .enable_reg = 0x3e044,2585 .enable_mask = BIT(0),2586 .hw.init = &(struct clk_init_data){2587 .name = "gcc_usb0_aux_clk",2588 .parent_hws = (const struct clk_hw *[]){2589 &usb0_aux_clk_src.clkr.hw },2590 .num_parents = 1,2591 .flags = CLK_SET_RATE_PARENT,2592 .ops = &clk_branch2_ops,2593 },2594 },2595};2596 2597static struct clk_branch gcc_sys_noc_usb0_axi_clk = {2598 .halt_reg = 0x26040,2599 .clkr = {2600 .enable_reg = 0x26040,2601 .enable_mask = BIT(0),2602 .hw.init = &(struct clk_init_data){2603 .name = "gcc_sys_noc_usb0_axi_clk",2604 .parent_hws = (const struct clk_hw *[]){2605 &usb0_master_clk_src.clkr.hw },2606 .num_parents = 1,2607 .flags = CLK_SET_RATE_PARENT,2608 .ops = &clk_branch2_ops,2609 },2610 },2611};2612 2613static struct clk_branch gcc_usb0_master_clk = {2614 .halt_reg = 0x3e000,2615 .clkr = {2616 .enable_reg = 0x3e000,2617 .enable_mask = BIT(0),2618 .hw.init = &(struct clk_init_data){2619 .name = "gcc_usb0_master_clk",2620 .parent_hws = (const struct clk_hw *[]){2621 &usb0_master_clk_src.clkr.hw },2622 .num_parents = 1,2623 .flags = CLK_SET_RATE_PARENT,2624 .ops = &clk_branch2_ops,2625 },2626 },2627};2628 2629static struct clk_branch gcc_usb0_mock_utmi_clk = {2630 .halt_reg = 0x3e008,2631 .clkr = {2632 .enable_reg = 0x3e008,2633 .enable_mask = BIT(0),2634 .hw.init = &(struct clk_init_data){2635 .name = "gcc_usb0_mock_utmi_clk",2636 .parent_hws = (const struct clk_hw *[]){2637 &usb0_mock_utmi_clk_src.clkr.hw },2638 .num_parents = 1,2639 .flags = CLK_SET_RATE_PARENT,2640 .ops = &clk_branch2_ops,2641 },2642 },2643};2644 2645static struct clk_branch gcc_usb0_phy_cfg_ahb_clk = {2646 .halt_reg = 0x3e080,2647 .clkr = {2648 .enable_reg = 0x3e080,2649 .enable_mask = BIT(0),2650 .hw.init = &(struct clk_init_data){2651 .name = "gcc_usb0_phy_cfg_ahb_clk",2652 .parent_hws = (const struct clk_hw *[]){2653 &pcnoc_clk_src.hw },2654 .num_parents = 1,2655 .flags = CLK_SET_RATE_PARENT,2656 .ops = &clk_branch2_ops,2657 },2658 },2659};2660 2661static struct clk_branch gcc_usb0_pipe_clk = {2662 .halt_reg = 0x3e040,2663 .halt_check = BRANCH_HALT_DELAY,2664 .clkr = {2665 .enable_reg = 0x3e040,2666 .enable_mask = BIT(0),2667 .hw.init = &(struct clk_init_data){2668 .name = "gcc_usb0_pipe_clk",2669 .parent_hws = (const struct clk_hw *[]){2670 &usb0_pipe_clk_src.clkr.hw },2671 .num_parents = 1,2672 .flags = CLK_SET_RATE_PARENT,2673 .ops = &clk_branch2_ops,2674 },2675 },2676};2677 2678static struct clk_branch gcc_usb0_sleep_clk = {2679 .halt_reg = 0x3e004,2680 .clkr = {2681 .enable_reg = 0x3e004,2682 .enable_mask = BIT(0),2683 .hw.init = &(struct clk_init_data){2684 .name = "gcc_usb0_sleep_clk",2685 .parent_hws = (const struct clk_hw *[]){2686 &gcc_sleep_clk_src.clkr.hw },2687 .num_parents = 1,2688 .flags = CLK_SET_RATE_PARENT,2689 .ops = &clk_branch2_ops,2690 },2691 },2692};2693 2694static struct clk_branch gcc_usb1_aux_clk = {2695 .halt_reg = 0x3f044,2696 .clkr = {2697 .enable_reg = 0x3f044,2698 .enable_mask = BIT(0),2699 .hw.init = &(struct clk_init_data){2700 .name = "gcc_usb1_aux_clk",2701 .parent_hws = (const struct clk_hw *[]){2702 &usb1_aux_clk_src.clkr.hw },2703 .num_parents = 1,2704 .flags = CLK_SET_RATE_PARENT,2705 .ops = &clk_branch2_ops,2706 },2707 },2708};2709 2710static struct clk_branch gcc_sys_noc_usb1_axi_clk = {2711 .halt_reg = 0x26044,2712 .clkr = {2713 .enable_reg = 0x26044,2714 .enable_mask = BIT(0),2715 .hw.init = &(struct clk_init_data){2716 .name = "gcc_sys_noc_usb1_axi_clk",2717 .parent_hws = (const struct clk_hw *[]){2718 &usb1_master_clk_src.clkr.hw },2719 .num_parents = 1,2720 .flags = CLK_SET_RATE_PARENT,2721 .ops = &clk_branch2_ops,2722 },2723 },2724};2725 2726static struct clk_branch gcc_usb1_master_clk = {2727 .halt_reg = 0x3f000,2728 .clkr = {2729 .enable_reg = 0x3f000,2730 .enable_mask = BIT(0),2731 .hw.init = &(struct clk_init_data){2732 .name = "gcc_usb1_master_clk",2733 .parent_hws = (const struct clk_hw *[]){2734 &usb1_master_clk_src.clkr.hw },2735 .num_parents = 1,2736 .flags = CLK_SET_RATE_PARENT,2737 .ops = &clk_branch2_ops,2738 },2739 },2740};2741 2742static struct clk_branch gcc_usb1_mock_utmi_clk = {2743 .halt_reg = 0x3f008,2744 .clkr = {2745 .enable_reg = 0x3f008,2746 .enable_mask = BIT(0),2747 .hw.init = &(struct clk_init_data){2748 .name = "gcc_usb1_mock_utmi_clk",2749 .parent_hws = (const struct clk_hw *[]){2750 &usb1_mock_utmi_clk_src.clkr.hw },2751 .num_parents = 1,2752 .flags = CLK_SET_RATE_PARENT,2753 .ops = &clk_branch2_ops,2754 },2755 },2756};2757 2758static struct clk_branch gcc_usb1_phy_cfg_ahb_clk = {2759 .halt_reg = 0x3f080,2760 .clkr = {2761 .enable_reg = 0x3f080,2762 .enable_mask = BIT(0),2763 .hw.init = &(struct clk_init_data){2764 .name = "gcc_usb1_phy_cfg_ahb_clk",2765 .parent_hws = (const struct clk_hw *[]){2766 &pcnoc_clk_src.hw },2767 .num_parents = 1,2768 .flags = CLK_SET_RATE_PARENT,2769 .ops = &clk_branch2_ops,2770 },2771 },2772};2773 2774static struct clk_branch gcc_usb1_pipe_clk = {2775 .halt_reg = 0x3f040,2776 .halt_check = BRANCH_HALT_DELAY,2777 .clkr = {2778 .enable_reg = 0x3f040,2779 .enable_mask = BIT(0),2780 .hw.init = &(struct clk_init_data){2781 .name = "gcc_usb1_pipe_clk",2782 .parent_hws = (const struct clk_hw *[]){2783 &usb1_pipe_clk_src.clkr.hw },2784 .num_parents = 1,2785 .flags = CLK_SET_RATE_PARENT,2786 .ops = &clk_branch2_ops,2787 },2788 },2789};2790 2791static struct clk_branch gcc_usb1_sleep_clk = {2792 .halt_reg = 0x3f004,2793 .clkr = {2794 .enable_reg = 0x3f004,2795 .enable_mask = BIT(0),2796 .hw.init = &(struct clk_init_data){2797 .name = "gcc_usb1_sleep_clk",2798 .parent_hws = (const struct clk_hw *[]){2799 &gcc_sleep_clk_src.clkr.hw },2800 .num_parents = 1,2801 .flags = CLK_SET_RATE_PARENT,2802 .ops = &clk_branch2_ops,2803 },2804 },2805};2806 2807static struct clk_branch gcc_sdcc1_ahb_clk = {2808 .halt_reg = 0x4201c,2809 .clkr = {2810 .enable_reg = 0x4201c,2811 .enable_mask = BIT(0),2812 .hw.init = &(struct clk_init_data){2813 .name = "gcc_sdcc1_ahb_clk",2814 .parent_hws = (const struct clk_hw *[]){2815 &pcnoc_clk_src.hw },2816 .num_parents = 1,2817 .flags = CLK_SET_RATE_PARENT,2818 .ops = &clk_branch2_ops,2819 },2820 },2821};2822 2823static struct clk_branch gcc_sdcc1_apps_clk = {2824 .halt_reg = 0x42018,2825 .clkr = {2826 .enable_reg = 0x42018,2827 .enable_mask = BIT(0),2828 .hw.init = &(struct clk_init_data){2829 .name = "gcc_sdcc1_apps_clk",2830 .parent_hws = (const struct clk_hw *[]){2831 &sdcc1_apps_clk_src.clkr.hw },2832 .num_parents = 1,2833 .flags = CLK_SET_RATE_PARENT,2834 .ops = &clk_branch2_ops,2835 },2836 },2837};2838 2839static struct clk_branch gcc_sdcc1_ice_core_clk = {2840 .halt_reg = 0x5d014,2841 .clkr = {2842 .enable_reg = 0x5d014,2843 .enable_mask = BIT(0),2844 .hw.init = &(struct clk_init_data){2845 .name = "gcc_sdcc1_ice_core_clk",2846 .parent_hws = (const struct clk_hw *[]){2847 &sdcc1_ice_core_clk_src.clkr.hw },2848 .num_parents = 1,2849 .flags = CLK_SET_RATE_PARENT,2850 .ops = &clk_branch2_ops,2851 },2852 },2853};2854 2855static struct clk_branch gcc_sdcc2_ahb_clk = {2856 .halt_reg = 0x4301c,2857 .clkr = {2858 .enable_reg = 0x4301c,2859 .enable_mask = BIT(0),2860 .hw.init = &(struct clk_init_data){2861 .name = "gcc_sdcc2_ahb_clk",2862 .parent_hws = (const struct clk_hw *[]){2863 &pcnoc_clk_src.hw },2864 .num_parents = 1,2865 .flags = CLK_SET_RATE_PARENT,2866 .ops = &clk_branch2_ops,2867 },2868 },2869};2870 2871static struct clk_branch gcc_sdcc2_apps_clk = {2872 .halt_reg = 0x43018,2873 .clkr = {2874 .enable_reg = 0x43018,2875 .enable_mask = BIT(0),2876 .hw.init = &(struct clk_init_data){2877 .name = "gcc_sdcc2_apps_clk",2878 .parent_hws = (const struct clk_hw *[]){2879 &sdcc2_apps_clk_src.clkr.hw },2880 .num_parents = 1,2881 .flags = CLK_SET_RATE_PARENT,2882 .ops = &clk_branch2_ops,2883 },2884 },2885};2886 2887static struct clk_branch gcc_mem_noc_nss_axi_clk = {2888 .halt_reg = 0x1d03c,2889 .clkr = {2890 .enable_reg = 0x1d03c,2891 .enable_mask = BIT(0),2892 .hw.init = &(struct clk_init_data){2893 .name = "gcc_mem_noc_nss_axi_clk",2894 .parent_hws = (const struct clk_hw *[]){2895 &nss_noc_clk_src.hw },2896 .num_parents = 1,2897 .flags = CLK_SET_RATE_PARENT,2898 .ops = &clk_branch2_ops,2899 },2900 },2901};2902 2903static struct clk_branch gcc_nss_ce_apb_clk = {2904 .halt_reg = 0x68174,2905 .clkr = {2906 .enable_reg = 0x68174,2907 .enable_mask = BIT(0),2908 .hw.init = &(struct clk_init_data){2909 .name = "gcc_nss_ce_apb_clk",2910 .parent_hws = (const struct clk_hw *[]){2911 &nss_ce_clk_src.clkr.hw },2912 .num_parents = 1,2913 .flags = CLK_SET_RATE_PARENT,2914 .ops = &clk_branch2_ops,2915 },2916 },2917};2918 2919static struct clk_branch gcc_nss_ce_axi_clk = {2920 .halt_reg = 0x68170,2921 .clkr = {2922 .enable_reg = 0x68170,2923 .enable_mask = BIT(0),2924 .hw.init = &(struct clk_init_data){2925 .name = "gcc_nss_ce_axi_clk",2926 .parent_hws = (const struct clk_hw *[]){2927 &nss_ce_clk_src.clkr.hw },2928 .num_parents = 1,2929 .flags = CLK_SET_RATE_PARENT,2930 .ops = &clk_branch2_ops,2931 },2932 },2933};2934 2935static struct clk_branch gcc_nss_cfg_clk = {2936 .halt_reg = 0x68160,2937 .clkr = {2938 .enable_reg = 0x68160,2939 .enable_mask = BIT(0),2940 .hw.init = &(struct clk_init_data){2941 .name = "gcc_nss_cfg_clk",2942 .parent_hws = (const struct clk_hw *[]){2943 &pcnoc_clk_src.hw },2944 .num_parents = 1,2945 .flags = CLK_SET_RATE_PARENT,2946 .ops = &clk_branch2_ops,2947 },2948 },2949};2950 2951static struct clk_branch gcc_nss_crypto_clk = {2952 .halt_reg = 0x68164,2953 .clkr = {2954 .enable_reg = 0x68164,2955 .enable_mask = BIT(0),2956 .hw.init = &(struct clk_init_data){2957 .name = "gcc_nss_crypto_clk",2958 .parent_hws = (const struct clk_hw *[]){2959 &nss_crypto_clk_src.clkr.hw },2960 .num_parents = 1,2961 .flags = CLK_SET_RATE_PARENT,2962 .ops = &clk_branch2_ops,2963 },2964 },2965};2966 2967static struct clk_branch gcc_nss_csr_clk = {2968 .halt_reg = 0x68318,2969 .clkr = {2970 .enable_reg = 0x68318,2971 .enable_mask = BIT(0),2972 .hw.init = &(struct clk_init_data){2973 .name = "gcc_nss_csr_clk",2974 .parent_hws = (const struct clk_hw *[]){2975 &nss_ce_clk_src.clkr.hw },2976 .num_parents = 1,2977 .flags = CLK_SET_RATE_PARENT,2978 .ops = &clk_branch2_ops,2979 },2980 },2981};2982 2983static struct clk_branch gcc_nss_edma_cfg_clk = {2984 .halt_reg = 0x6819c,2985 .clkr = {2986 .enable_reg = 0x6819c,2987 .enable_mask = BIT(0),2988 .hw.init = &(struct clk_init_data){2989 .name = "gcc_nss_edma_cfg_clk",2990 .parent_hws = (const struct clk_hw *[]){2991 &nss_ppe_clk_src.clkr.hw },2992 .num_parents = 1,2993 .flags = CLK_SET_RATE_PARENT,2994 .ops = &clk_branch2_ops,2995 },2996 },2997};2998 2999static struct clk_branch gcc_nss_edma_clk = {3000 .halt_reg = 0x68198,3001 .clkr = {3002 .enable_reg = 0x68198,3003 .enable_mask = BIT(0),3004 .hw.init = &(struct clk_init_data){3005 .name = "gcc_nss_edma_clk",3006 .parent_hws = (const struct clk_hw *[]){3007 &nss_ppe_clk_src.clkr.hw },3008 .num_parents = 1,3009 .flags = CLK_SET_RATE_PARENT,3010 .ops = &clk_branch2_ops,3011 },3012 },3013};3014 3015static struct clk_branch gcc_nss_imem_clk = {3016 .halt_reg = 0x68178,3017 .clkr = {3018 .enable_reg = 0x68178,3019 .enable_mask = BIT(0),3020 .hw.init = &(struct clk_init_data){3021 .name = "gcc_nss_imem_clk",3022 .parent_hws = (const struct clk_hw *[]){3023 &nss_imem_clk_src.clkr.hw },3024 .num_parents = 1,3025 .flags = CLK_SET_RATE_PARENT,3026 .ops = &clk_branch2_ops,3027 },3028 },3029};3030 3031static struct clk_branch gcc_nss_noc_clk = {3032 .halt_reg = 0x68168,3033 .clkr = {3034 .enable_reg = 0x68168,3035 .enable_mask = BIT(0),3036 .hw.init = &(struct clk_init_data){3037 .name = "gcc_nss_noc_clk",3038 .parent_hws = (const struct clk_hw *[]){3039 &nss_noc_clk_src.hw },3040 .num_parents = 1,3041 .flags = CLK_SET_RATE_PARENT,3042 .ops = &clk_branch2_ops,3043 },3044 },3045};3046 3047static struct clk_branch gcc_nss_ppe_btq_clk = {3048 .halt_reg = 0x6833c,3049 .clkr = {3050 .enable_reg = 0x6833c,3051 .enable_mask = BIT(0),3052 .hw.init = &(struct clk_init_data){3053 .name = "gcc_nss_ppe_btq_clk",3054 .parent_hws = (const struct clk_hw *[]){3055 &nss_ppe_clk_src.clkr.hw },3056 .num_parents = 1,3057 .flags = CLK_SET_RATE_PARENT,3058 .ops = &clk_branch2_ops,3059 },3060 },3061};3062 3063static struct clk_branch gcc_nss_ppe_cfg_clk = {3064 .halt_reg = 0x68194,3065 .clkr = {3066 .enable_reg = 0x68194,3067 .enable_mask = BIT(0),3068 .hw.init = &(struct clk_init_data){3069 .name = "gcc_nss_ppe_cfg_clk",3070 .parent_hws = (const struct clk_hw *[]){3071 &nss_ppe_clk_src.clkr.hw },3072 .num_parents = 1,3073 .flags = CLK_SET_RATE_PARENT,3074 .ops = &clk_branch2_ops,3075 },3076 },3077};3078 3079static struct clk_branch gcc_nss_ppe_clk = {3080 .halt_reg = 0x68190,3081 .clkr = {3082 .enable_reg = 0x68190,3083 .enable_mask = BIT(0),3084 .hw.init = &(struct clk_init_data){3085 .name = "gcc_nss_ppe_clk",3086 .parent_hws = (const struct clk_hw *[]){3087 &nss_ppe_clk_src.clkr.hw },3088 .num_parents = 1,3089 .flags = CLK_SET_RATE_PARENT,3090 .ops = &clk_branch2_ops,3091 },3092 },3093};3094 3095static struct clk_branch gcc_nss_ppe_ipe_clk = {3096 .halt_reg = 0x68338,3097 .clkr = {3098 .enable_reg = 0x68338,3099 .enable_mask = BIT(0),3100 .hw.init = &(struct clk_init_data){3101 .name = "gcc_nss_ppe_ipe_clk",3102 .parent_hws = (const struct clk_hw *[]){3103 &nss_ppe_clk_src.clkr.hw },3104 .num_parents = 1,3105 .flags = CLK_SET_RATE_PARENT,3106 .ops = &clk_branch2_ops,3107 },3108 },3109};3110 3111static struct clk_branch gcc_nss_ptp_ref_clk = {3112 .halt_reg = 0x6816c,3113 .clkr = {3114 .enable_reg = 0x6816c,3115 .enable_mask = BIT(0),3116 .hw.init = &(struct clk_init_data){3117 .name = "gcc_nss_ptp_ref_clk",3118 .parent_hws = (const struct clk_hw *[]){3119 &nss_ppe_cdiv_clk_src.hw },3120 .num_parents = 1,3121 .flags = CLK_SET_RATE_PARENT,3122 .ops = &clk_branch2_ops,3123 },3124 },3125};3126 3127static struct clk_branch gcc_crypto_ppe_clk = {3128 .halt_reg = 0x68310,3129 .halt_bit = 31,3130 .clkr = {3131 .enable_reg = 0x68310,3132 .enable_mask = BIT(0),3133 .hw.init = &(struct clk_init_data){3134 .name = "gcc_crypto_ppe_clk",3135 .parent_hws = (const struct clk_hw *[]){3136 &nss_ppe_clk_src.clkr.hw },3137 .num_parents = 1,3138 .flags = CLK_SET_RATE_PARENT,3139 .ops = &clk_branch2_ops,3140 },3141 },3142};3143 3144static struct clk_branch gcc_nssnoc_ce_apb_clk = {3145 .halt_reg = 0x6830c,3146 .clkr = {3147 .enable_reg = 0x6830c,3148 .enable_mask = BIT(0),3149 .hw.init = &(struct clk_init_data){3150 .name = "gcc_nssnoc_ce_apb_clk",3151 .parent_hws = (const struct clk_hw *[]){3152 &nss_ce_clk_src.clkr.hw },3153 .num_parents = 1,3154 .flags = CLK_SET_RATE_PARENT,3155 .ops = &clk_branch2_ops,3156 },3157 },3158};3159 3160static struct clk_branch gcc_nssnoc_ce_axi_clk = {3161 .halt_reg = 0x68308,3162 .clkr = {3163 .enable_reg = 0x68308,3164 .enable_mask = BIT(0),3165 .hw.init = &(struct clk_init_data){3166 .name = "gcc_nssnoc_ce_axi_clk",3167 .parent_hws = (const struct clk_hw *[]){3168 &nss_ce_clk_src.clkr.hw },3169 .num_parents = 1,3170 .flags = CLK_SET_RATE_PARENT,3171 .ops = &clk_branch2_ops,3172 },3173 },3174};3175 3176static struct clk_branch gcc_nssnoc_crypto_clk = {3177 .halt_reg = 0x68314,3178 .clkr = {3179 .enable_reg = 0x68314,3180 .enable_mask = BIT(0),3181 .hw.init = &(struct clk_init_data){3182 .name = "gcc_nssnoc_crypto_clk",3183 .parent_hws = (const struct clk_hw *[]){3184 &nss_crypto_clk_src.clkr.hw },3185 .num_parents = 1,3186 .flags = CLK_SET_RATE_PARENT,3187 .ops = &clk_branch2_ops,3188 },3189 },3190};3191 3192static struct clk_branch gcc_nssnoc_ppe_cfg_clk = {3193 .halt_reg = 0x68304,3194 .clkr = {3195 .enable_reg = 0x68304,3196 .enable_mask = BIT(0),3197 .hw.init = &(struct clk_init_data){3198 .name = "gcc_nssnoc_ppe_cfg_clk",3199 .parent_hws = (const struct clk_hw *[]){3200 &nss_ppe_clk_src.clkr.hw },3201 .num_parents = 1,3202 .flags = CLK_SET_RATE_PARENT,3203 .ops = &clk_branch2_ops,3204 },3205 },3206};3207 3208static struct clk_branch gcc_nssnoc_ppe_clk = {3209 .halt_reg = 0x68300,3210 .clkr = {3211 .enable_reg = 0x68300,3212 .enable_mask = BIT(0),3213 .hw.init = &(struct clk_init_data){3214 .name = "gcc_nssnoc_ppe_clk",3215 .parent_hws = (const struct clk_hw *[]){3216 &nss_ppe_clk_src.clkr.hw },3217 .num_parents = 1,3218 .flags = CLK_SET_RATE_PARENT,3219 .ops = &clk_branch2_ops,3220 },3221 },3222};3223 3224static struct clk_branch gcc_nssnoc_qosgen_ref_clk = {3225 .halt_reg = 0x68180,3226 .clkr = {3227 .enable_reg = 0x68180,3228 .enable_mask = BIT(0),3229 .hw.init = &(struct clk_init_data){3230 .name = "gcc_nssnoc_qosgen_ref_clk",3231 .parent_hws = (const struct clk_hw *[]){3232 &gcc_xo_clk_src.clkr.hw },3233 .num_parents = 1,3234 .flags = CLK_SET_RATE_PARENT,3235 .ops = &clk_branch2_ops,3236 },3237 },3238};3239 3240static struct clk_branch gcc_nssnoc_snoc_clk = {3241 .halt_reg = 0x68188,3242 .clkr = {3243 .enable_reg = 0x68188,3244 .enable_mask = BIT(0),3245 .hw.init = &(struct clk_init_data){3246 .name = "gcc_nssnoc_snoc_clk",3247 .parent_hws = (const struct clk_hw *[]){3248 &system_noc_clk_src.hw },3249 .num_parents = 1,3250 .flags = CLK_SET_RATE_PARENT,3251 .ops = &clk_branch2_ops,3252 },3253 },3254};3255 3256static struct clk_branch gcc_nssnoc_timeout_ref_clk = {3257 .halt_reg = 0x68184,3258 .clkr = {3259 .enable_reg = 0x68184,3260 .enable_mask = BIT(0),3261 .hw.init = &(struct clk_init_data){3262 .name = "gcc_nssnoc_timeout_ref_clk",3263 .parent_hws = (const struct clk_hw *[]){3264 &gcc_xo_div4_clk_src.hw },3265 .num_parents = 1,3266 .flags = CLK_SET_RATE_PARENT,3267 .ops = &clk_branch2_ops,3268 },3269 },3270};3271 3272static struct clk_branch gcc_nssnoc_ubi0_ahb_clk = {3273 .halt_reg = 0x68270,3274 .clkr = {3275 .enable_reg = 0x68270,3276 .enable_mask = BIT(0),3277 .hw.init = &(struct clk_init_data){3278 .name = "gcc_nssnoc_ubi0_ahb_clk",3279 .parent_hws = (const struct clk_hw *[]){3280 &nss_ce_clk_src.clkr.hw },3281 .num_parents = 1,3282 .flags = CLK_SET_RATE_PARENT,3283 .ops = &clk_branch2_ops,3284 },3285 },3286};3287 3288static struct clk_branch gcc_nssnoc_ubi1_ahb_clk = {3289 .halt_reg = 0x68274,3290 .clkr = {3291 .enable_reg = 0x68274,3292 .enable_mask = BIT(0),3293 .hw.init = &(struct clk_init_data){3294 .name = "gcc_nssnoc_ubi1_ahb_clk",3295 .parent_hws = (const struct clk_hw *[]){3296 &nss_ce_clk_src.clkr.hw },3297 .num_parents = 1,3298 .flags = CLK_SET_RATE_PARENT,3299 .ops = &clk_branch2_ops,3300 },3301 },3302};3303 3304static struct clk_branch gcc_ubi0_ahb_clk = {3305 .halt_reg = 0x6820c,3306 .halt_check = BRANCH_HALT_DELAY,3307 .clkr = {3308 .enable_reg = 0x6820c,3309 .enable_mask = BIT(0),3310 .hw.init = &(struct clk_init_data){3311 .name = "gcc_ubi0_ahb_clk",3312 .parent_hws = (const struct clk_hw *[]){3313 &nss_ce_clk_src.clkr.hw },3314 .num_parents = 1,3315 .flags = CLK_SET_RATE_PARENT,3316 .ops = &clk_branch2_ops,3317 },3318 },3319};3320 3321static struct clk_branch gcc_ubi0_axi_clk = {3322 .halt_reg = 0x68200,3323 .halt_check = BRANCH_HALT_DELAY,3324 .clkr = {3325 .enable_reg = 0x68200,3326 .enable_mask = BIT(0),3327 .hw.init = &(struct clk_init_data){3328 .name = "gcc_ubi0_axi_clk",3329 .parent_hws = (const struct clk_hw *[]){3330 &nss_noc_clk_src.hw },3331 .num_parents = 1,3332 .flags = CLK_SET_RATE_PARENT,3333 .ops = &clk_branch2_ops,3334 },3335 },3336};3337 3338static struct clk_branch gcc_ubi0_nc_axi_clk = {3339 .halt_reg = 0x68204,3340 .halt_check = BRANCH_HALT_DELAY,3341 .clkr = {3342 .enable_reg = 0x68204,3343 .enable_mask = BIT(0),3344 .hw.init = &(struct clk_init_data){3345 .name = "gcc_ubi0_nc_axi_clk",3346 .parent_hws = (const struct clk_hw *[]){3347 &nss_noc_clk_src.hw },3348 .num_parents = 1,3349 .flags = CLK_SET_RATE_PARENT,3350 .ops = &clk_branch2_ops,3351 },3352 },3353};3354 3355static struct clk_branch gcc_ubi0_core_clk = {3356 .halt_reg = 0x68210,3357 .halt_check = BRANCH_HALT_DELAY,3358 .clkr = {3359 .enable_reg = 0x68210,3360 .enable_mask = BIT(0),3361 .hw.init = &(struct clk_init_data){3362 .name = "gcc_ubi0_core_clk",3363 .parent_hws = (const struct clk_hw *[]){3364 &nss_ubi0_div_clk_src.clkr.hw },3365 .num_parents = 1,3366 .flags = CLK_SET_RATE_PARENT,3367 .ops = &clk_branch2_ops,3368 },3369 },3370};3371 3372static struct clk_branch gcc_ubi0_mpt_clk = {3373 .halt_reg = 0x68208,3374 .halt_check = BRANCH_HALT_DELAY,3375 .clkr = {3376 .enable_reg = 0x68208,3377 .enable_mask = BIT(0),3378 .hw.init = &(struct clk_init_data){3379 .name = "gcc_ubi0_mpt_clk",3380 .parent_hws = (const struct clk_hw *[]){3381 &ubi_mpt_clk_src.clkr.hw },3382 .num_parents = 1,3383 .flags = CLK_SET_RATE_PARENT,3384 .ops = &clk_branch2_ops,3385 },3386 },3387};3388 3389static struct clk_branch gcc_ubi1_ahb_clk = {3390 .halt_reg = 0x6822c,3391 .halt_check = BRANCH_HALT_DELAY,3392 .clkr = {3393 .enable_reg = 0x6822c,3394 .enable_mask = BIT(0),3395 .hw.init = &(struct clk_init_data){3396 .name = "gcc_ubi1_ahb_clk",3397 .parent_hws = (const struct clk_hw *[]){3398 &nss_ce_clk_src.clkr.hw },3399 .num_parents = 1,3400 .flags = CLK_SET_RATE_PARENT,3401 .ops = &clk_branch2_ops,3402 },3403 },3404};3405 3406static struct clk_branch gcc_ubi1_axi_clk = {3407 .halt_reg = 0x68220,3408 .halt_check = BRANCH_HALT_DELAY,3409 .clkr = {3410 .enable_reg = 0x68220,3411 .enable_mask = BIT(0),3412 .hw.init = &(struct clk_init_data){3413 .name = "gcc_ubi1_axi_clk",3414 .parent_hws = (const struct clk_hw *[]){3415 &nss_noc_clk_src.hw },3416 .num_parents = 1,3417 .flags = CLK_SET_RATE_PARENT,3418 .ops = &clk_branch2_ops,3419 },3420 },3421};3422 3423static struct clk_branch gcc_ubi1_nc_axi_clk = {3424 .halt_reg = 0x68224,3425 .halt_check = BRANCH_HALT_DELAY,3426 .clkr = {3427 .enable_reg = 0x68224,3428 .enable_mask = BIT(0),3429 .hw.init = &(struct clk_init_data){3430 .name = "gcc_ubi1_nc_axi_clk",3431 .parent_hws = (const struct clk_hw *[]){3432 &nss_noc_clk_src.hw },3433 .num_parents = 1,3434 .flags = CLK_SET_RATE_PARENT,3435 .ops = &clk_branch2_ops,3436 },3437 },3438};3439 3440static struct clk_branch gcc_ubi1_core_clk = {3441 .halt_reg = 0x68230,3442 .halt_check = BRANCH_HALT_DELAY,3443 .clkr = {3444 .enable_reg = 0x68230,3445 .enable_mask = BIT(0),3446 .hw.init = &(struct clk_init_data){3447 .name = "gcc_ubi1_core_clk",3448 .parent_hws = (const struct clk_hw *[]){3449 &nss_ubi1_div_clk_src.clkr.hw },3450 .num_parents = 1,3451 .flags = CLK_SET_RATE_PARENT,3452 .ops = &clk_branch2_ops,3453 },3454 },3455};3456 3457static struct clk_branch gcc_ubi1_mpt_clk = {3458 .halt_reg = 0x68228,3459 .halt_check = BRANCH_HALT_DELAY,3460 .clkr = {3461 .enable_reg = 0x68228,3462 .enable_mask = BIT(0),3463 .hw.init = &(struct clk_init_data){3464 .name = "gcc_ubi1_mpt_clk",3465 .parent_hws = (const struct clk_hw *[]){3466 &ubi_mpt_clk_src.clkr.hw },3467 .num_parents = 1,3468 .flags = CLK_SET_RATE_PARENT,3469 .ops = &clk_branch2_ops,3470 },3471 },3472};3473 3474static struct clk_branch gcc_cmn_12gpll_ahb_clk = {3475 .halt_reg = 0x56308,3476 .clkr = {3477 .enable_reg = 0x56308,3478 .enable_mask = BIT(0),3479 .hw.init = &(struct clk_init_data){3480 .name = "gcc_cmn_12gpll_ahb_clk",3481 .parent_hws = (const struct clk_hw *[]){3482 &pcnoc_clk_src.hw },3483 .num_parents = 1,3484 .flags = CLK_SET_RATE_PARENT,3485 .ops = &clk_branch2_ops,3486 },3487 },3488};3489 3490static struct clk_branch gcc_cmn_12gpll_sys_clk = {3491 .halt_reg = 0x5630c,3492 .clkr = {3493 .enable_reg = 0x5630c,3494 .enable_mask = BIT(0),3495 .hw.init = &(struct clk_init_data){3496 .name = "gcc_cmn_12gpll_sys_clk",3497 .parent_hws = (const struct clk_hw *[]){3498 &gcc_xo_clk_src.clkr.hw },3499 .num_parents = 1,3500 .flags = CLK_SET_RATE_PARENT,3501 .ops = &clk_branch2_ops,3502 },3503 },3504};3505 3506static struct clk_branch gcc_mdio_ahb_clk = {3507 .halt_reg = 0x58004,3508 .clkr = {3509 .enable_reg = 0x58004,3510 .enable_mask = BIT(0),3511 .hw.init = &(struct clk_init_data){3512 .name = "gcc_mdio_ahb_clk",3513 .parent_hws = (const struct clk_hw *[]){3514 &pcnoc_clk_src.hw },3515 .num_parents = 1,3516 .flags = CLK_SET_RATE_PARENT,3517 .ops = &clk_branch2_ops,3518 },3519 },3520};3521 3522static struct clk_branch gcc_uniphy0_ahb_clk = {3523 .halt_reg = 0x56008,3524 .clkr = {3525 .enable_reg = 0x56008,3526 .enable_mask = BIT(0),3527 .hw.init = &(struct clk_init_data){3528 .name = "gcc_uniphy0_ahb_clk",3529 .parent_hws = (const struct clk_hw *[]){3530 &pcnoc_clk_src.hw },3531 .num_parents = 1,3532 .flags = CLK_SET_RATE_PARENT,3533 .ops = &clk_branch2_ops,3534 },3535 },3536};3537 3538static struct clk_branch gcc_uniphy0_sys_clk = {3539 .halt_reg = 0x5600c,3540 .clkr = {3541 .enable_reg = 0x5600c,3542 .enable_mask = BIT(0),3543 .hw.init = &(struct clk_init_data){3544 .name = "gcc_uniphy0_sys_clk",3545 .parent_hws = (const struct clk_hw *[]){3546 &gcc_xo_clk_src.clkr.hw },3547 .num_parents = 1,3548 .flags = CLK_SET_RATE_PARENT,3549 .ops = &clk_branch2_ops,3550 },3551 },3552};3553 3554static struct clk_branch gcc_uniphy1_ahb_clk = {3555 .halt_reg = 0x56108,3556 .clkr = {3557 .enable_reg = 0x56108,3558 .enable_mask = BIT(0),3559 .hw.init = &(struct clk_init_data){3560 .name = "gcc_uniphy1_ahb_clk",3561 .parent_hws = (const struct clk_hw *[]){3562 &pcnoc_clk_src.hw },3563 .num_parents = 1,3564 .flags = CLK_SET_RATE_PARENT,3565 .ops = &clk_branch2_ops,3566 },3567 },3568};3569 3570static struct clk_branch gcc_uniphy1_sys_clk = {3571 .halt_reg = 0x5610c,3572 .clkr = {3573 .enable_reg = 0x5610c,3574 .enable_mask = BIT(0),3575 .hw.init = &(struct clk_init_data){3576 .name = "gcc_uniphy1_sys_clk",3577 .parent_hws = (const struct clk_hw *[]){3578 &gcc_xo_clk_src.clkr.hw },3579 .num_parents = 1,3580 .flags = CLK_SET_RATE_PARENT,3581 .ops = &clk_branch2_ops,3582 },3583 },3584};3585 3586static struct clk_branch gcc_uniphy2_ahb_clk = {3587 .halt_reg = 0x56208,3588 .clkr = {3589 .enable_reg = 0x56208,3590 .enable_mask = BIT(0),3591 .hw.init = &(struct clk_init_data){3592 .name = "gcc_uniphy2_ahb_clk",3593 .parent_hws = (const struct clk_hw *[]){3594 &pcnoc_clk_src.hw },3595 .num_parents = 1,3596 .flags = CLK_SET_RATE_PARENT,3597 .ops = &clk_branch2_ops,3598 },3599 },3600};3601 3602static struct clk_branch gcc_uniphy2_sys_clk = {3603 .halt_reg = 0x5620c,3604 .clkr = {3605 .enable_reg = 0x5620c,3606 .enable_mask = BIT(0),3607 .hw.init = &(struct clk_init_data){3608 .name = "gcc_uniphy2_sys_clk",3609 .parent_hws = (const struct clk_hw *[]){3610 &gcc_xo_clk_src.clkr.hw },3611 .num_parents = 1,3612 .flags = CLK_SET_RATE_PARENT,3613 .ops = &clk_branch2_ops,3614 },3615 },3616};3617 3618static struct clk_branch gcc_nss_port1_rx_clk = {3619 .halt_reg = 0x68240,3620 .clkr = {3621 .enable_reg = 0x68240,3622 .enable_mask = BIT(0),3623 .hw.init = &(struct clk_init_data){3624 .name = "gcc_nss_port1_rx_clk",3625 .parent_hws = (const struct clk_hw *[]){3626 &nss_port1_rx_div_clk_src.clkr.hw },3627 .num_parents = 1,3628 .flags = CLK_SET_RATE_PARENT,3629 .ops = &clk_branch2_ops,3630 },3631 },3632};3633 3634static struct clk_branch gcc_nss_port1_tx_clk = {3635 .halt_reg = 0x68244,3636 .clkr = {3637 .enable_reg = 0x68244,3638 .enable_mask = BIT(0),3639 .hw.init = &(struct clk_init_data){3640 .name = "gcc_nss_port1_tx_clk",3641 .parent_hws = (const struct clk_hw *[]){3642 &nss_port1_tx_div_clk_src.clkr.hw },3643 .num_parents = 1,3644 .flags = CLK_SET_RATE_PARENT,3645 .ops = &clk_branch2_ops,3646 },3647 },3648};3649 3650static struct clk_branch gcc_nss_port2_rx_clk = {3651 .halt_reg = 0x68248,3652 .clkr = {3653 .enable_reg = 0x68248,3654 .enable_mask = BIT(0),3655 .hw.init = &(struct clk_init_data){3656 .name = "gcc_nss_port2_rx_clk",3657 .parent_hws = (const struct clk_hw *[]){3658 &nss_port2_rx_div_clk_src.clkr.hw },3659 .num_parents = 1,3660 .flags = CLK_SET_RATE_PARENT,3661 .ops = &clk_branch2_ops,3662 },3663 },3664};3665 3666static struct clk_branch gcc_nss_port2_tx_clk = {3667 .halt_reg = 0x6824c,3668 .clkr = {3669 .enable_reg = 0x6824c,3670 .enable_mask = BIT(0),3671 .hw.init = &(struct clk_init_data){3672 .name = "gcc_nss_port2_tx_clk",3673 .parent_hws = (const struct clk_hw *[]){3674 &nss_port2_tx_div_clk_src.clkr.hw },3675 .num_parents = 1,3676 .flags = CLK_SET_RATE_PARENT,3677 .ops = &clk_branch2_ops,3678 },3679 },3680};3681 3682static struct clk_branch gcc_nss_port3_rx_clk = {3683 .halt_reg = 0x68250,3684 .clkr = {3685 .enable_reg = 0x68250,3686 .enable_mask = BIT(0),3687 .hw.init = &(struct clk_init_data){3688 .name = "gcc_nss_port3_rx_clk",3689 .parent_hws = (const struct clk_hw *[]){3690 &nss_port3_rx_div_clk_src.clkr.hw },3691 .num_parents = 1,3692 .flags = CLK_SET_RATE_PARENT,3693 .ops = &clk_branch2_ops,3694 },3695 },3696};3697 3698static struct clk_branch gcc_nss_port3_tx_clk = {3699 .halt_reg = 0x68254,3700 .clkr = {3701 .enable_reg = 0x68254,3702 .enable_mask = BIT(0),3703 .hw.init = &(struct clk_init_data){3704 .name = "gcc_nss_port3_tx_clk",3705 .parent_hws = (const struct clk_hw *[]){3706 &nss_port3_tx_div_clk_src.clkr.hw },3707 .num_parents = 1,3708 .flags = CLK_SET_RATE_PARENT,3709 .ops = &clk_branch2_ops,3710 },3711 },3712};3713 3714static struct clk_branch gcc_nss_port4_rx_clk = {3715 .halt_reg = 0x68258,3716 .clkr = {3717 .enable_reg = 0x68258,3718 .enable_mask = BIT(0),3719 .hw.init = &(struct clk_init_data){3720 .name = "gcc_nss_port4_rx_clk",3721 .parent_hws = (const struct clk_hw *[]){3722 &nss_port4_rx_div_clk_src.clkr.hw },3723 .num_parents = 1,3724 .flags = CLK_SET_RATE_PARENT,3725 .ops = &clk_branch2_ops,3726 },3727 },3728};3729 3730static struct clk_branch gcc_nss_port4_tx_clk = {3731 .halt_reg = 0x6825c,3732 .clkr = {3733 .enable_reg = 0x6825c,3734 .enable_mask = BIT(0),3735 .hw.init = &(struct clk_init_data){3736 .name = "gcc_nss_port4_tx_clk",3737 .parent_hws = (const struct clk_hw *[]){3738 &nss_port4_tx_div_clk_src.clkr.hw },3739 .num_parents = 1,3740 .flags = CLK_SET_RATE_PARENT,3741 .ops = &clk_branch2_ops,3742 },3743 },3744};3745 3746static struct clk_branch gcc_nss_port5_rx_clk = {3747 .halt_reg = 0x68260,3748 .clkr = {3749 .enable_reg = 0x68260,3750 .enable_mask = BIT(0),3751 .hw.init = &(struct clk_init_data){3752 .name = "gcc_nss_port5_rx_clk",3753 .parent_hws = (const struct clk_hw *[]){3754 &nss_port5_rx_div_clk_src.clkr.hw },3755 .num_parents = 1,3756 .flags = CLK_SET_RATE_PARENT,3757 .ops = &clk_branch2_ops,3758 },3759 },3760};3761 3762static struct clk_branch gcc_nss_port5_tx_clk = {3763 .halt_reg = 0x68264,3764 .clkr = {3765 .enable_reg = 0x68264,3766 .enable_mask = BIT(0),3767 .hw.init = &(struct clk_init_data){3768 .name = "gcc_nss_port5_tx_clk",3769 .parent_hws = (const struct clk_hw *[]){3770 &nss_port5_tx_div_clk_src.clkr.hw },3771 .num_parents = 1,3772 .flags = CLK_SET_RATE_PARENT,3773 .ops = &clk_branch2_ops,3774 },3775 },3776};3777 3778static struct clk_branch gcc_nss_port6_rx_clk = {3779 .halt_reg = 0x68268,3780 .clkr = {3781 .enable_reg = 0x68268,3782 .enable_mask = BIT(0),3783 .hw.init = &(struct clk_init_data){3784 .name = "gcc_nss_port6_rx_clk",3785 .parent_hws = (const struct clk_hw *[]){3786 &nss_port6_rx_div_clk_src.clkr.hw },3787 .num_parents = 1,3788 .flags = CLK_SET_RATE_PARENT,3789 .ops = &clk_branch2_ops,3790 },3791 },3792};3793 3794static struct clk_branch gcc_nss_port6_tx_clk = {3795 .halt_reg = 0x6826c,3796 .clkr = {3797 .enable_reg = 0x6826c,3798 .enable_mask = BIT(0),3799 .hw.init = &(struct clk_init_data){3800 .name = "gcc_nss_port6_tx_clk",3801 .parent_hws = (const struct clk_hw *[]){3802 &nss_port6_tx_div_clk_src.clkr.hw },3803 .num_parents = 1,3804 .flags = CLK_SET_RATE_PARENT,3805 .ops = &clk_branch2_ops,3806 },3807 },3808};3809 3810static struct clk_branch gcc_port1_mac_clk = {3811 .halt_reg = 0x68320,3812 .clkr = {3813 .enable_reg = 0x68320,3814 .enable_mask = BIT(0),3815 .hw.init = &(struct clk_init_data){3816 .name = "gcc_port1_mac_clk",3817 .parent_hws = (const struct clk_hw *[]){3818 &nss_ppe_clk_src.clkr.hw },3819 .num_parents = 1,3820 .flags = CLK_SET_RATE_PARENT,3821 .ops = &clk_branch2_ops,3822 },3823 },3824};3825 3826static struct clk_branch gcc_port2_mac_clk = {3827 .halt_reg = 0x68324,3828 .clkr = {3829 .enable_reg = 0x68324,3830 .enable_mask = BIT(0),3831 .hw.init = &(struct clk_init_data){3832 .name = "gcc_port2_mac_clk",3833 .parent_hws = (const struct clk_hw *[]){3834 &nss_ppe_clk_src.clkr.hw },3835 .num_parents = 1,3836 .flags = CLK_SET_RATE_PARENT,3837 .ops = &clk_branch2_ops,3838 },3839 },3840};3841 3842static struct clk_branch gcc_port3_mac_clk = {3843 .halt_reg = 0x68328,3844 .clkr = {3845 .enable_reg = 0x68328,3846 .enable_mask = BIT(0),3847 .hw.init = &(struct clk_init_data){3848 .name = "gcc_port3_mac_clk",3849 .parent_hws = (const struct clk_hw *[]){3850 &nss_ppe_clk_src.clkr.hw },3851 .num_parents = 1,3852 .flags = CLK_SET_RATE_PARENT,3853 .ops = &clk_branch2_ops,3854 },3855 },3856};3857 3858static struct clk_branch gcc_port4_mac_clk = {3859 .halt_reg = 0x6832c,3860 .clkr = {3861 .enable_reg = 0x6832c,3862 .enable_mask = BIT(0),3863 .hw.init = &(struct clk_init_data){3864 .name = "gcc_port4_mac_clk",3865 .parent_hws = (const struct clk_hw *[]){3866 &nss_ppe_clk_src.clkr.hw },3867 .num_parents = 1,3868 .flags = CLK_SET_RATE_PARENT,3869 .ops = &clk_branch2_ops,3870 },3871 },3872};3873 3874static struct clk_branch gcc_port5_mac_clk = {3875 .halt_reg = 0x68330,3876 .clkr = {3877 .enable_reg = 0x68330,3878 .enable_mask = BIT(0),3879 .hw.init = &(struct clk_init_data){3880 .name = "gcc_port5_mac_clk",3881 .parent_hws = (const struct clk_hw *[]){3882 &nss_ppe_clk_src.clkr.hw },3883 .num_parents = 1,3884 .flags = CLK_SET_RATE_PARENT,3885 .ops = &clk_branch2_ops,3886 },3887 },3888};3889 3890static struct clk_branch gcc_port6_mac_clk = {3891 .halt_reg = 0x68334,3892 .clkr = {3893 .enable_reg = 0x68334,3894 .enable_mask = BIT(0),3895 .hw.init = &(struct clk_init_data){3896 .name = "gcc_port6_mac_clk",3897 .parent_hws = (const struct clk_hw *[]){3898 &nss_ppe_clk_src.clkr.hw },3899 .num_parents = 1,3900 .flags = CLK_SET_RATE_PARENT,3901 .ops = &clk_branch2_ops,3902 },3903 },3904};3905 3906static struct clk_branch gcc_uniphy0_port1_rx_clk = {3907 .halt_reg = 0x56010,3908 .clkr = {3909 .enable_reg = 0x56010,3910 .enable_mask = BIT(0),3911 .hw.init = &(struct clk_init_data){3912 .name = "gcc_uniphy0_port1_rx_clk",3913 .parent_hws = (const struct clk_hw *[]){3914 &nss_port1_rx_div_clk_src.clkr.hw },3915 .num_parents = 1,3916 .flags = CLK_SET_RATE_PARENT,3917 .ops = &clk_branch2_ops,3918 },3919 },3920};3921 3922static struct clk_branch gcc_uniphy0_port1_tx_clk = {3923 .halt_reg = 0x56014,3924 .clkr = {3925 .enable_reg = 0x56014,3926 .enable_mask = BIT(0),3927 .hw.init = &(struct clk_init_data){3928 .name = "gcc_uniphy0_port1_tx_clk",3929 .parent_hws = (const struct clk_hw *[]){3930 &nss_port1_tx_div_clk_src.clkr.hw },3931 .num_parents = 1,3932 .flags = CLK_SET_RATE_PARENT,3933 .ops = &clk_branch2_ops,3934 },3935 },3936};3937 3938static struct clk_branch gcc_uniphy0_port2_rx_clk = {3939 .halt_reg = 0x56018,3940 .clkr = {3941 .enable_reg = 0x56018,3942 .enable_mask = BIT(0),3943 .hw.init = &(struct clk_init_data){3944 .name = "gcc_uniphy0_port2_rx_clk",3945 .parent_hws = (const struct clk_hw *[]){3946 &nss_port2_rx_div_clk_src.clkr.hw },3947 .num_parents = 1,3948 .flags = CLK_SET_RATE_PARENT,3949 .ops = &clk_branch2_ops,3950 },3951 },3952};3953 3954static struct clk_branch gcc_uniphy0_port2_tx_clk = {3955 .halt_reg = 0x5601c,3956 .clkr = {3957 .enable_reg = 0x5601c,3958 .enable_mask = BIT(0),3959 .hw.init = &(struct clk_init_data){3960 .name = "gcc_uniphy0_port2_tx_clk",3961 .parent_hws = (const struct clk_hw *[]){3962 &nss_port2_tx_div_clk_src.clkr.hw },3963 .num_parents = 1,3964 .flags = CLK_SET_RATE_PARENT,3965 .ops = &clk_branch2_ops,3966 },3967 },3968};3969 3970static struct clk_branch gcc_uniphy0_port3_rx_clk = {3971 .halt_reg = 0x56020,3972 .clkr = {3973 .enable_reg = 0x56020,3974 .enable_mask = BIT(0),3975 .hw.init = &(struct clk_init_data){3976 .name = "gcc_uniphy0_port3_rx_clk",3977 .parent_hws = (const struct clk_hw *[]){3978 &nss_port3_rx_div_clk_src.clkr.hw },3979 .num_parents = 1,3980 .flags = CLK_SET_RATE_PARENT,3981 .ops = &clk_branch2_ops,3982 },3983 },3984};3985 3986static struct clk_branch gcc_uniphy0_port3_tx_clk = {3987 .halt_reg = 0x56024,3988 .clkr = {3989 .enable_reg = 0x56024,3990 .enable_mask = BIT(0),3991 .hw.init = &(struct clk_init_data){3992 .name = "gcc_uniphy0_port3_tx_clk",3993 .parent_hws = (const struct clk_hw *[]){3994 &nss_port3_tx_div_clk_src.clkr.hw },3995 .num_parents = 1,3996 .flags = CLK_SET_RATE_PARENT,3997 .ops = &clk_branch2_ops,3998 },3999 },4000};4001 4002static struct clk_branch gcc_uniphy0_port4_rx_clk = {4003 .halt_reg = 0x56028,4004 .clkr = {4005 .enable_reg = 0x56028,4006 .enable_mask = BIT(0),4007 .hw.init = &(struct clk_init_data){4008 .name = "gcc_uniphy0_port4_rx_clk",4009 .parent_hws = (const struct clk_hw *[]){4010 &nss_port4_rx_div_clk_src.clkr.hw },4011 .num_parents = 1,4012 .flags = CLK_SET_RATE_PARENT,4013 .ops = &clk_branch2_ops,4014 },4015 },4016};4017 4018static struct clk_branch gcc_uniphy0_port4_tx_clk = {4019 .halt_reg = 0x5602c,4020 .clkr = {4021 .enable_reg = 0x5602c,4022 .enable_mask = BIT(0),4023 .hw.init = &(struct clk_init_data){4024 .name = "gcc_uniphy0_port4_tx_clk",4025 .parent_hws = (const struct clk_hw *[]){4026 &nss_port4_tx_div_clk_src.clkr.hw },4027 .num_parents = 1,4028 .flags = CLK_SET_RATE_PARENT,4029 .ops = &clk_branch2_ops,4030 },4031 },4032};4033 4034static struct clk_branch gcc_uniphy0_port5_rx_clk = {4035 .halt_reg = 0x56030,4036 .clkr = {4037 .enable_reg = 0x56030,4038 .enable_mask = BIT(0),4039 .hw.init = &(struct clk_init_data){4040 .name = "gcc_uniphy0_port5_rx_clk",4041 .parent_hws = (const struct clk_hw *[]){4042 &nss_port5_rx_div_clk_src.clkr.hw },4043 .num_parents = 1,4044 .flags = CLK_SET_RATE_PARENT,4045 .ops = &clk_branch2_ops,4046 },4047 },4048};4049 4050static struct clk_branch gcc_uniphy0_port5_tx_clk = {4051 .halt_reg = 0x56034,4052 .clkr = {4053 .enable_reg = 0x56034,4054 .enable_mask = BIT(0),4055 .hw.init = &(struct clk_init_data){4056 .name = "gcc_uniphy0_port5_tx_clk",4057 .parent_hws = (const struct clk_hw *[]){4058 &nss_port5_tx_div_clk_src.clkr.hw },4059 .num_parents = 1,4060 .flags = CLK_SET_RATE_PARENT,4061 .ops = &clk_branch2_ops,4062 },4063 },4064};4065 4066static struct clk_branch gcc_uniphy1_port5_rx_clk = {4067 .halt_reg = 0x56110,4068 .clkr = {4069 .enable_reg = 0x56110,4070 .enable_mask = BIT(0),4071 .hw.init = &(struct clk_init_data){4072 .name = "gcc_uniphy1_port5_rx_clk",4073 .parent_hws = (const struct clk_hw *[]){4074 &nss_port5_rx_div_clk_src.clkr.hw },4075 .num_parents = 1,4076 .flags = CLK_SET_RATE_PARENT,4077 .ops = &clk_branch2_ops,4078 },4079 },4080};4081 4082static struct clk_branch gcc_uniphy1_port5_tx_clk = {4083 .halt_reg = 0x56114,4084 .clkr = {4085 .enable_reg = 0x56114,4086 .enable_mask = BIT(0),4087 .hw.init = &(struct clk_init_data){4088 .name = "gcc_uniphy1_port5_tx_clk",4089 .parent_hws = (const struct clk_hw *[]){4090 &nss_port5_tx_div_clk_src.clkr.hw },4091 .num_parents = 1,4092 .flags = CLK_SET_RATE_PARENT,4093 .ops = &clk_branch2_ops,4094 },4095 },4096};4097 4098static struct clk_branch gcc_uniphy2_port6_rx_clk = {4099 .halt_reg = 0x56210,4100 .clkr = {4101 .enable_reg = 0x56210,4102 .enable_mask = BIT(0),4103 .hw.init = &(struct clk_init_data){4104 .name = "gcc_uniphy2_port6_rx_clk",4105 .parent_hws = (const struct clk_hw *[]){4106 &nss_port6_rx_div_clk_src.clkr.hw },4107 .num_parents = 1,4108 .flags = CLK_SET_RATE_PARENT,4109 .ops = &clk_branch2_ops,4110 },4111 },4112};4113 4114static struct clk_branch gcc_uniphy2_port6_tx_clk = {4115 .halt_reg = 0x56214,4116 .clkr = {4117 .enable_reg = 0x56214,4118 .enable_mask = BIT(0),4119 .hw.init = &(struct clk_init_data){4120 .name = "gcc_uniphy2_port6_tx_clk",4121 .parent_hws = (const struct clk_hw *[]){4122 &nss_port6_tx_div_clk_src.clkr.hw },4123 .num_parents = 1,4124 .flags = CLK_SET_RATE_PARENT,4125 .ops = &clk_branch2_ops,4126 },4127 },4128};4129 4130static struct clk_branch gcc_crypto_ahb_clk = {4131 .halt_reg = 0x16024,4132 .halt_check = BRANCH_HALT_VOTED,4133 .clkr = {4134 .enable_reg = 0x0b004,4135 .enable_mask = BIT(0),4136 .hw.init = &(struct clk_init_data){4137 .name = "gcc_crypto_ahb_clk",4138 .parent_hws = (const struct clk_hw *[]){4139 &pcnoc_clk_src.hw },4140 .num_parents = 1,4141 .flags = CLK_SET_RATE_PARENT,4142 .ops = &clk_branch2_ops,4143 },4144 },4145};4146 4147static struct clk_branch gcc_crypto_axi_clk = {4148 .halt_reg = 0x16020,4149 .halt_check = BRANCH_HALT_VOTED,4150 .clkr = {4151 .enable_reg = 0x0b004,4152 .enable_mask = BIT(1),4153 .hw.init = &(struct clk_init_data){4154 .name = "gcc_crypto_axi_clk",4155 .parent_hws = (const struct clk_hw *[]){4156 &pcnoc_clk_src.hw },4157 .num_parents = 1,4158 .flags = CLK_SET_RATE_PARENT,4159 .ops = &clk_branch2_ops,4160 },4161 },4162};4163 4164static struct clk_branch gcc_crypto_clk = {4165 .halt_reg = 0x1601c,4166 .halt_check = BRANCH_HALT_VOTED,4167 .clkr = {4168 .enable_reg = 0x0b004,4169 .enable_mask = BIT(2),4170 .hw.init = &(struct clk_init_data){4171 .name = "gcc_crypto_clk",4172 .parent_hws = (const struct clk_hw *[]){4173 &crypto_clk_src.clkr.hw },4174 .num_parents = 1,4175 .flags = CLK_SET_RATE_PARENT,4176 .ops = &clk_branch2_ops,4177 },4178 },4179};4180 4181static struct clk_branch gcc_gp1_clk = {4182 .halt_reg = 0x08000,4183 .clkr = {4184 .enable_reg = 0x08000,4185 .enable_mask = BIT(0),4186 .hw.init = &(struct clk_init_data){4187 .name = "gcc_gp1_clk",4188 .parent_hws = (const struct clk_hw *[]){4189 &gp1_clk_src.clkr.hw },4190 .num_parents = 1,4191 .flags = CLK_SET_RATE_PARENT,4192 .ops = &clk_branch2_ops,4193 },4194 },4195};4196 4197static struct clk_branch gcc_gp2_clk = {4198 .halt_reg = 0x09000,4199 .clkr = {4200 .enable_reg = 0x09000,4201 .enable_mask = BIT(0),4202 .hw.init = &(struct clk_init_data){4203 .name = "gcc_gp2_clk",4204 .parent_hws = (const struct clk_hw *[]){4205 &gp2_clk_src.clkr.hw },4206 .num_parents = 1,4207 .flags = CLK_SET_RATE_PARENT,4208 .ops = &clk_branch2_ops,4209 },4210 },4211};4212 4213static struct clk_branch gcc_gp3_clk = {4214 .halt_reg = 0x0a000,4215 .clkr = {4216 .enable_reg = 0x0a000,4217 .enable_mask = BIT(0),4218 .hw.init = &(struct clk_init_data){4219 .name = "gcc_gp3_clk",4220 .parent_hws = (const struct clk_hw *[]){4221 &gp3_clk_src.clkr.hw },4222 .num_parents = 1,4223 .flags = CLK_SET_RATE_PARENT,4224 .ops = &clk_branch2_ops,4225 },4226 },4227};4228 4229static const struct freq_tbl ftbl_pcie_rchng_clk_src[] = {4230 F(19200000, P_XO, 1, 0, 0),4231 F(100000000, P_GPLL0, 8, 0, 0),4232 { }4233};4234 4235static struct clk_rcg2 pcie0_rchng_clk_src = {4236 .cmd_rcgr = 0x75070,4237 .freq_tbl = ftbl_pcie_rchng_clk_src,4238 .hid_width = 5,4239 .parent_map = gcc_xo_gpll0_map,4240 .clkr.hw.init = &(struct clk_init_data){4241 .name = "pcie0_rchng_clk_src",4242 .parent_data = gcc_xo_gpll0,4243 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),4244 .ops = &clk_rcg2_ops,4245 },4246};4247 4248static struct clk_branch gcc_pcie0_rchng_clk = {4249 .halt_reg = 0x75070,4250 .halt_bit = 31,4251 .clkr = {4252 .enable_reg = 0x75070,4253 .enable_mask = BIT(1),4254 .hw.init = &(struct clk_init_data){4255 .name = "gcc_pcie0_rchng_clk",4256 .parent_hws = (const struct clk_hw *[]){4257 &pcie0_rchng_clk_src.clkr.hw,4258 },4259 .num_parents = 1,4260 .flags = CLK_SET_RATE_PARENT,4261 .ops = &clk_branch2_ops,4262 },4263 },4264};4265 4266static struct clk_branch gcc_pcie0_axi_s_bridge_clk = {4267 .halt_reg = 0x75048,4268 .halt_bit = 31,4269 .clkr = {4270 .enable_reg = 0x75048,4271 .enable_mask = BIT(0),4272 .hw.init = &(struct clk_init_data){4273 .name = "gcc_pcie0_axi_s_bridge_clk",4274 .parent_hws = (const struct clk_hw *[]){4275 &pcie0_axi_clk_src.clkr.hw,4276 },4277 .num_parents = 1,4278 .flags = CLK_SET_RATE_PARENT,4279 .ops = &clk_branch2_ops,4280 },4281 },4282};4283 4284static struct gdsc usb0_gdsc = {4285 .gdscr = 0x3e078,4286 .pd = {4287 .name = "usb0_gdsc",4288 },4289 .pwrsts = PWRSTS_OFF_ON,4290};4291 4292static struct gdsc usb1_gdsc = {4293 .gdscr = 0x3f078,4294 .pd = {4295 .name = "usb1_gdsc",4296 },4297 .pwrsts = PWRSTS_OFF_ON,4298};4299 4300static const struct alpha_pll_config ubi32_pll_config = {4301 .l = 0x4e,4302 .config_ctl_val = 0x200d4aa8,4303 .config_ctl_hi_val = 0x3c2,4304 .main_output_mask = BIT(0),4305 .aux_output_mask = BIT(1),4306 .pre_div_val = 0x0,4307 .pre_div_mask = BIT(12),4308 .post_div_val = 0x0,4309 .post_div_mask = GENMASK(9, 8),4310};4311 4312static const struct alpha_pll_config nss_crypto_pll_config = {4313 .l = 0x3e,4314 .alpha = 0x0,4315 .alpha_hi = 0x80,4316 .config_ctl_val = 0x4001055b,4317 .main_output_mask = BIT(0),4318 .pre_div_val = 0x0,4319 .pre_div_mask = GENMASK(14, 12),4320 .post_div_val = 0x1 << 8,4321 .post_div_mask = GENMASK(11, 8),4322 .vco_mask = GENMASK(21, 20),4323 .vco_val = 0x0,4324 .alpha_en_mask = BIT(24),4325};4326 4327static struct clk_hw *gcc_ipq8074_hws[] = {4328 &gpll0_out_main_div2.hw,4329 &gpll6_out_main_div2.hw,4330 &pcnoc_clk_src.hw,4331 &system_noc_clk_src.hw,4332 &gcc_xo_div4_clk_src.hw,4333 &nss_noc_clk_src.hw,4334 &nss_ppe_cdiv_clk_src.hw,4335};4336 4337static struct clk_regmap *gcc_ipq8074_clks[] = {4338 [GPLL0_MAIN] = &gpll0_main.clkr,4339 [GPLL0] = &gpll0.clkr,4340 [GPLL2_MAIN] = &gpll2_main.clkr,4341 [GPLL2] = &gpll2.clkr,4342 [GPLL4_MAIN] = &gpll4_main.clkr,4343 [GPLL4] = &gpll4.clkr,4344 [GPLL6_MAIN] = &gpll6_main.clkr,4345 [GPLL6] = &gpll6.clkr,4346 [UBI32_PLL_MAIN] = &ubi32_pll_main.clkr,4347 [UBI32_PLL] = &ubi32_pll.clkr,4348 [NSS_CRYPTO_PLL_MAIN] = &nss_crypto_pll_main.clkr,4349 [NSS_CRYPTO_PLL] = &nss_crypto_pll.clkr,4350 [PCNOC_BFDCD_CLK_SRC] = &pcnoc_bfdcd_clk_src.clkr,4351 [GCC_SLEEP_CLK_SRC] = &gcc_sleep_clk_src.clkr,4352 [BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr,4353 [BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr,4354 [BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr,4355 [BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr,4356 [BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr,4357 [BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr,4358 [BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr,4359 [BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr,4360 [BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr,4361 [BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr,4362 [BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr,4363 [BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr,4364 [BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr,4365 [BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr,4366 [BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr,4367 [BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr,4368 [BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr,4369 [BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr,4370 [PCIE0_AXI_CLK_SRC] = &pcie0_axi_clk_src.clkr,4371 [PCIE0_AUX_CLK_SRC] = &pcie0_aux_clk_src.clkr,4372 [PCIE0_PIPE_CLK_SRC] = &pcie0_pipe_clk_src.clkr,4373 [PCIE1_AXI_CLK_SRC] = &pcie1_axi_clk_src.clkr,4374 [PCIE1_AUX_CLK_SRC] = &pcie1_aux_clk_src.clkr,4375 [PCIE1_PIPE_CLK_SRC] = &pcie1_pipe_clk_src.clkr,4376 [SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr,4377 [SDCC1_ICE_CORE_CLK_SRC] = &sdcc1_ice_core_clk_src.clkr,4378 [SDCC2_APPS_CLK_SRC] = &sdcc2_apps_clk_src.clkr,4379 [USB0_MASTER_CLK_SRC] = &usb0_master_clk_src.clkr,4380 [USB0_AUX_CLK_SRC] = &usb0_aux_clk_src.clkr,4381 [USB0_MOCK_UTMI_CLK_SRC] = &usb0_mock_utmi_clk_src.clkr,4382 [USB0_PIPE_CLK_SRC] = &usb0_pipe_clk_src.clkr,4383 [USB1_MASTER_CLK_SRC] = &usb1_master_clk_src.clkr,4384 [USB1_AUX_CLK_SRC] = &usb1_aux_clk_src.clkr,4385 [USB1_MOCK_UTMI_CLK_SRC] = &usb1_mock_utmi_clk_src.clkr,4386 [USB1_PIPE_CLK_SRC] = &usb1_pipe_clk_src.clkr,4387 [GCC_XO_CLK_SRC] = &gcc_xo_clk_src.clkr,4388 [SYSTEM_NOC_BFDCD_CLK_SRC] = &system_noc_bfdcd_clk_src.clkr,4389 [NSS_CE_CLK_SRC] = &nss_ce_clk_src.clkr,4390 [NSS_NOC_BFDCD_CLK_SRC] = &nss_noc_bfdcd_clk_src.clkr,4391 [NSS_CRYPTO_CLK_SRC] = &nss_crypto_clk_src.clkr,4392 [NSS_UBI0_CLK_SRC] = &nss_ubi0_clk_src.clkr,4393 [NSS_UBI0_DIV_CLK_SRC] = &nss_ubi0_div_clk_src.clkr,4394 [NSS_UBI1_CLK_SRC] = &nss_ubi1_clk_src.clkr,4395 [NSS_UBI1_DIV_CLK_SRC] = &nss_ubi1_div_clk_src.clkr,4396 [UBI_MPT_CLK_SRC] = &ubi_mpt_clk_src.clkr,4397 [NSS_IMEM_CLK_SRC] = &nss_imem_clk_src.clkr,4398 [NSS_PPE_CLK_SRC] = &nss_ppe_clk_src.clkr,4399 [NSS_PORT1_RX_CLK_SRC] = &nss_port1_rx_clk_src.clkr,4400 [NSS_PORT1_RX_DIV_CLK_SRC] = &nss_port1_rx_div_clk_src.clkr,4401 [NSS_PORT1_TX_CLK_SRC] = &nss_port1_tx_clk_src.clkr,4402 [NSS_PORT1_TX_DIV_CLK_SRC] = &nss_port1_tx_div_clk_src.clkr,4403 [NSS_PORT2_RX_CLK_SRC] = &nss_port2_rx_clk_src.clkr,4404 [NSS_PORT2_RX_DIV_CLK_SRC] = &nss_port2_rx_div_clk_src.clkr,4405 [NSS_PORT2_TX_CLK_SRC] = &nss_port2_tx_clk_src.clkr,4406 [NSS_PORT2_TX_DIV_CLK_SRC] = &nss_port2_tx_div_clk_src.clkr,4407 [NSS_PORT3_RX_CLK_SRC] = &nss_port3_rx_clk_src.clkr,4408 [NSS_PORT3_RX_DIV_CLK_SRC] = &nss_port3_rx_div_clk_src.clkr,4409 [NSS_PORT3_TX_CLK_SRC] = &nss_port3_tx_clk_src.clkr,4410 [NSS_PORT3_TX_DIV_CLK_SRC] = &nss_port3_tx_div_clk_src.clkr,4411 [NSS_PORT4_RX_CLK_SRC] = &nss_port4_rx_clk_src.clkr,4412 [NSS_PORT4_RX_DIV_CLK_SRC] = &nss_port4_rx_div_clk_src.clkr,4413 [NSS_PORT4_TX_CLK_SRC] = &nss_port4_tx_clk_src.clkr,4414 [NSS_PORT4_TX_DIV_CLK_SRC] = &nss_port4_tx_div_clk_src.clkr,4415 [NSS_PORT5_RX_CLK_SRC] = &nss_port5_rx_clk_src.clkr,4416 [NSS_PORT5_RX_DIV_CLK_SRC] = &nss_port5_rx_div_clk_src.clkr,4417 [NSS_PORT5_TX_CLK_SRC] = &nss_port5_tx_clk_src.clkr,4418 [NSS_PORT5_TX_DIV_CLK_SRC] = &nss_port5_tx_div_clk_src.clkr,4419 [NSS_PORT6_RX_CLK_SRC] = &nss_port6_rx_clk_src.clkr,4420 [NSS_PORT6_RX_DIV_CLK_SRC] = &nss_port6_rx_div_clk_src.clkr,4421 [NSS_PORT6_TX_CLK_SRC] = &nss_port6_tx_clk_src.clkr,4422 [NSS_PORT6_TX_DIV_CLK_SRC] = &nss_port6_tx_div_clk_src.clkr,4423 [CRYPTO_CLK_SRC] = &crypto_clk_src.clkr,4424 [GP1_CLK_SRC] = &gp1_clk_src.clkr,4425 [GP2_CLK_SRC] = &gp2_clk_src.clkr,4426 [GP3_CLK_SRC] = &gp3_clk_src.clkr,4427 [GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr,4428 [GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr,4429 [GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr,4430 [GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr,4431 [GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr,4432 [GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr,4433 [GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr,4434 [GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr,4435 [GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr,4436 [GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr,4437 [GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr,4438 [GCC_BLSP1_QUP6_I2C_APPS_CLK] = &gcc_blsp1_qup6_i2c_apps_clk.clkr,4439 [GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr,4440 [GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr,4441 [GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr,4442 [GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr,4443 [GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr,4444 [GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr,4445 [GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr,4446 [GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,4447 [GCC_QPIC_AHB_CLK] = &gcc_qpic_ahb_clk.clkr,4448 [GCC_QPIC_CLK] = &gcc_qpic_clk.clkr,4449 [GCC_PCIE0_AHB_CLK] = &gcc_pcie0_ahb_clk.clkr,4450 [GCC_PCIE0_AUX_CLK] = &gcc_pcie0_aux_clk.clkr,4451 [GCC_PCIE0_AXI_M_CLK] = &gcc_pcie0_axi_m_clk.clkr,4452 [GCC_PCIE0_AXI_S_CLK] = &gcc_pcie0_axi_s_clk.clkr,4453 [GCC_PCIE0_PIPE_CLK] = &gcc_pcie0_pipe_clk.clkr,4454 [GCC_SYS_NOC_PCIE0_AXI_CLK] = &gcc_sys_noc_pcie0_axi_clk.clkr,4455 [GCC_PCIE1_AHB_CLK] = &gcc_pcie1_ahb_clk.clkr,4456 [GCC_PCIE1_AUX_CLK] = &gcc_pcie1_aux_clk.clkr,4457 [GCC_PCIE1_AXI_M_CLK] = &gcc_pcie1_axi_m_clk.clkr,4458 [GCC_PCIE1_AXI_S_CLK] = &gcc_pcie1_axi_s_clk.clkr,4459 [GCC_PCIE1_PIPE_CLK] = &gcc_pcie1_pipe_clk.clkr,4460 [GCC_SYS_NOC_PCIE1_AXI_CLK] = &gcc_sys_noc_pcie1_axi_clk.clkr,4461 [GCC_USB0_AUX_CLK] = &gcc_usb0_aux_clk.clkr,4462 [GCC_SYS_NOC_USB0_AXI_CLK] = &gcc_sys_noc_usb0_axi_clk.clkr,4463 [GCC_USB0_MASTER_CLK] = &gcc_usb0_master_clk.clkr,4464 [GCC_USB0_MOCK_UTMI_CLK] = &gcc_usb0_mock_utmi_clk.clkr,4465 [GCC_USB0_PHY_CFG_AHB_CLK] = &gcc_usb0_phy_cfg_ahb_clk.clkr,4466 [GCC_USB0_PIPE_CLK] = &gcc_usb0_pipe_clk.clkr,4467 [GCC_USB0_SLEEP_CLK] = &gcc_usb0_sleep_clk.clkr,4468 [GCC_USB1_AUX_CLK] = &gcc_usb1_aux_clk.clkr,4469 [GCC_SYS_NOC_USB1_AXI_CLK] = &gcc_sys_noc_usb1_axi_clk.clkr,4470 [GCC_USB1_MASTER_CLK] = &gcc_usb1_master_clk.clkr,4471 [GCC_USB1_MOCK_UTMI_CLK] = &gcc_usb1_mock_utmi_clk.clkr,4472 [GCC_USB1_PHY_CFG_AHB_CLK] = &gcc_usb1_phy_cfg_ahb_clk.clkr,4473 [GCC_USB1_PIPE_CLK] = &gcc_usb1_pipe_clk.clkr,4474 [GCC_USB1_SLEEP_CLK] = &gcc_usb1_sleep_clk.clkr,4475 [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,4476 [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,4477 [GCC_SDCC1_ICE_CORE_CLK] = &gcc_sdcc1_ice_core_clk.clkr,4478 [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,4479 [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,4480 [GCC_MEM_NOC_NSS_AXI_CLK] = &gcc_mem_noc_nss_axi_clk.clkr,4481 [GCC_NSS_CE_APB_CLK] = &gcc_nss_ce_apb_clk.clkr,4482 [GCC_NSS_CE_AXI_CLK] = &gcc_nss_ce_axi_clk.clkr,4483 [GCC_NSS_CFG_CLK] = &gcc_nss_cfg_clk.clkr,4484 [GCC_NSS_CRYPTO_CLK] = &gcc_nss_crypto_clk.clkr,4485 [GCC_NSS_CSR_CLK] = &gcc_nss_csr_clk.clkr,4486 [GCC_NSS_EDMA_CFG_CLK] = &gcc_nss_edma_cfg_clk.clkr,4487 [GCC_NSS_EDMA_CLK] = &gcc_nss_edma_clk.clkr,4488 [GCC_NSS_IMEM_CLK] = &gcc_nss_imem_clk.clkr,4489 [GCC_NSS_NOC_CLK] = &gcc_nss_noc_clk.clkr,4490 [GCC_NSS_PPE_BTQ_CLK] = &gcc_nss_ppe_btq_clk.clkr,4491 [GCC_NSS_PPE_CFG_CLK] = &gcc_nss_ppe_cfg_clk.clkr,4492 [GCC_NSS_PPE_CLK] = &gcc_nss_ppe_clk.clkr,4493 [GCC_NSS_PPE_IPE_CLK] = &gcc_nss_ppe_ipe_clk.clkr,4494 [GCC_NSS_PTP_REF_CLK] = &gcc_nss_ptp_ref_clk.clkr,4495 [GCC_NSSNOC_CE_APB_CLK] = &gcc_nssnoc_ce_apb_clk.clkr,4496 [GCC_NSSNOC_CE_AXI_CLK] = &gcc_nssnoc_ce_axi_clk.clkr,4497 [GCC_NSSNOC_CRYPTO_CLK] = &gcc_nssnoc_crypto_clk.clkr,4498 [GCC_NSSNOC_PPE_CFG_CLK] = &gcc_nssnoc_ppe_cfg_clk.clkr,4499 [GCC_NSSNOC_PPE_CLK] = &gcc_nssnoc_ppe_clk.clkr,4500 [GCC_NSSNOC_QOSGEN_REF_CLK] = &gcc_nssnoc_qosgen_ref_clk.clkr,4501 [GCC_NSSNOC_SNOC_CLK] = &gcc_nssnoc_snoc_clk.clkr,4502 [GCC_NSSNOC_TIMEOUT_REF_CLK] = &gcc_nssnoc_timeout_ref_clk.clkr,4503 [GCC_NSSNOC_UBI0_AHB_CLK] = &gcc_nssnoc_ubi0_ahb_clk.clkr,4504 [GCC_NSSNOC_UBI1_AHB_CLK] = &gcc_nssnoc_ubi1_ahb_clk.clkr,4505 [GCC_UBI0_AHB_CLK] = &gcc_ubi0_ahb_clk.clkr,4506 [GCC_UBI0_AXI_CLK] = &gcc_ubi0_axi_clk.clkr,4507 [GCC_UBI0_NC_AXI_CLK] = &gcc_ubi0_nc_axi_clk.clkr,4508 [GCC_UBI0_CORE_CLK] = &gcc_ubi0_core_clk.clkr,4509 [GCC_UBI0_MPT_CLK] = &gcc_ubi0_mpt_clk.clkr,4510 [GCC_UBI1_AHB_CLK] = &gcc_ubi1_ahb_clk.clkr,4511 [GCC_UBI1_AXI_CLK] = &gcc_ubi1_axi_clk.clkr,4512 [GCC_UBI1_NC_AXI_CLK] = &gcc_ubi1_nc_axi_clk.clkr,4513 [GCC_UBI1_CORE_CLK] = &gcc_ubi1_core_clk.clkr,4514 [GCC_UBI1_MPT_CLK] = &gcc_ubi1_mpt_clk.clkr,4515 [GCC_CMN_12GPLL_AHB_CLK] = &gcc_cmn_12gpll_ahb_clk.clkr,4516 [GCC_CMN_12GPLL_SYS_CLK] = &gcc_cmn_12gpll_sys_clk.clkr,4517 [GCC_MDIO_AHB_CLK] = &gcc_mdio_ahb_clk.clkr,4518 [GCC_UNIPHY0_AHB_CLK] = &gcc_uniphy0_ahb_clk.clkr,4519 [GCC_UNIPHY0_SYS_CLK] = &gcc_uniphy0_sys_clk.clkr,4520 [GCC_UNIPHY1_AHB_CLK] = &gcc_uniphy1_ahb_clk.clkr,4521 [GCC_UNIPHY1_SYS_CLK] = &gcc_uniphy1_sys_clk.clkr,4522 [GCC_UNIPHY2_AHB_CLK] = &gcc_uniphy2_ahb_clk.clkr,4523 [GCC_UNIPHY2_SYS_CLK] = &gcc_uniphy2_sys_clk.clkr,4524 [GCC_NSS_PORT1_RX_CLK] = &gcc_nss_port1_rx_clk.clkr,4525 [GCC_NSS_PORT1_TX_CLK] = &gcc_nss_port1_tx_clk.clkr,4526 [GCC_NSS_PORT2_RX_CLK] = &gcc_nss_port2_rx_clk.clkr,4527 [GCC_NSS_PORT2_TX_CLK] = &gcc_nss_port2_tx_clk.clkr,4528 [GCC_NSS_PORT3_RX_CLK] = &gcc_nss_port3_rx_clk.clkr,4529 [GCC_NSS_PORT3_TX_CLK] = &gcc_nss_port3_tx_clk.clkr,4530 [GCC_NSS_PORT4_RX_CLK] = &gcc_nss_port4_rx_clk.clkr,4531 [GCC_NSS_PORT4_TX_CLK] = &gcc_nss_port4_tx_clk.clkr,4532 [GCC_NSS_PORT5_RX_CLK] = &gcc_nss_port5_rx_clk.clkr,4533 [GCC_NSS_PORT5_TX_CLK] = &gcc_nss_port5_tx_clk.clkr,4534 [GCC_NSS_PORT6_RX_CLK] = &gcc_nss_port6_rx_clk.clkr,4535 [GCC_NSS_PORT6_TX_CLK] = &gcc_nss_port6_tx_clk.clkr,4536 [GCC_PORT1_MAC_CLK] = &gcc_port1_mac_clk.clkr,4537 [GCC_PORT2_MAC_CLK] = &gcc_port2_mac_clk.clkr,4538 [GCC_PORT3_MAC_CLK] = &gcc_port3_mac_clk.clkr,4539 [GCC_PORT4_MAC_CLK] = &gcc_port4_mac_clk.clkr,4540 [GCC_PORT5_MAC_CLK] = &gcc_port5_mac_clk.clkr,4541 [GCC_PORT6_MAC_CLK] = &gcc_port6_mac_clk.clkr,4542 [GCC_UNIPHY0_PORT1_RX_CLK] = &gcc_uniphy0_port1_rx_clk.clkr,4543 [GCC_UNIPHY0_PORT1_TX_CLK] = &gcc_uniphy0_port1_tx_clk.clkr,4544 [GCC_UNIPHY0_PORT2_RX_CLK] = &gcc_uniphy0_port2_rx_clk.clkr,4545 [GCC_UNIPHY0_PORT2_TX_CLK] = &gcc_uniphy0_port2_tx_clk.clkr,4546 [GCC_UNIPHY0_PORT3_RX_CLK] = &gcc_uniphy0_port3_rx_clk.clkr,4547 [GCC_UNIPHY0_PORT3_TX_CLK] = &gcc_uniphy0_port3_tx_clk.clkr,4548 [GCC_UNIPHY0_PORT4_RX_CLK] = &gcc_uniphy0_port4_rx_clk.clkr,4549 [GCC_UNIPHY0_PORT4_TX_CLK] = &gcc_uniphy0_port4_tx_clk.clkr,4550 [GCC_UNIPHY0_PORT5_RX_CLK] = &gcc_uniphy0_port5_rx_clk.clkr,4551 [GCC_UNIPHY0_PORT5_TX_CLK] = &gcc_uniphy0_port5_tx_clk.clkr,4552 [GCC_UNIPHY1_PORT5_RX_CLK] = &gcc_uniphy1_port5_rx_clk.clkr,4553 [GCC_UNIPHY1_PORT5_TX_CLK] = &gcc_uniphy1_port5_tx_clk.clkr,4554 [GCC_UNIPHY2_PORT6_RX_CLK] = &gcc_uniphy2_port6_rx_clk.clkr,4555 [GCC_UNIPHY2_PORT6_TX_CLK] = &gcc_uniphy2_port6_tx_clk.clkr,4556 [GCC_CRYPTO_AHB_CLK] = &gcc_crypto_ahb_clk.clkr,4557 [GCC_CRYPTO_AXI_CLK] = &gcc_crypto_axi_clk.clkr,4558 [GCC_CRYPTO_CLK] = &gcc_crypto_clk.clkr,4559 [GCC_GP1_CLK] = &gcc_gp1_clk.clkr,4560 [GCC_GP2_CLK] = &gcc_gp2_clk.clkr,4561 [GCC_GP3_CLK] = &gcc_gp3_clk.clkr,4562 [GCC_PCIE0_RCHNG_CLK_SRC] = &pcie0_rchng_clk_src.clkr,4563 [GCC_PCIE0_RCHNG_CLK] = &gcc_pcie0_rchng_clk.clkr,4564 [GCC_PCIE0_AXI_S_BRIDGE_CLK] = &gcc_pcie0_axi_s_bridge_clk.clkr,4565 [GCC_CRYPTO_PPE_CLK] = &gcc_crypto_ppe_clk.clkr,4566};4567 4568static const struct qcom_reset_map gcc_ipq8074_resets[] = {4569 [GCC_BLSP1_BCR] = { 0x01000, 0 },4570 [GCC_BLSP1_QUP1_BCR] = { 0x02000, 0 },4571 [GCC_BLSP1_UART1_BCR] = { 0x02038, 0 },4572 [GCC_BLSP1_QUP2_BCR] = { 0x03008, 0 },4573 [GCC_BLSP1_UART2_BCR] = { 0x03028, 0 },4574 [GCC_BLSP1_QUP3_BCR] = { 0x04008, 0 },4575 [GCC_BLSP1_UART3_BCR] = { 0x04028, 0 },4576 [GCC_BLSP1_QUP4_BCR] = { 0x05008, 0 },4577 [GCC_BLSP1_UART4_BCR] = { 0x05028, 0 },4578 [GCC_BLSP1_QUP5_BCR] = { 0x06008, 0 },4579 [GCC_BLSP1_UART5_BCR] = { 0x06028, 0 },4580 [GCC_BLSP1_QUP6_BCR] = { 0x07008, 0 },4581 [GCC_BLSP1_UART6_BCR] = { 0x07028, 0 },4582 [GCC_IMEM_BCR] = { 0x0e000, 0 },4583 [GCC_SMMU_BCR] = { 0x12000, 0 },4584 [GCC_APSS_TCU_BCR] = { 0x12050, 0 },4585 [GCC_SMMU_XPU_BCR] = { 0x12054, 0 },4586 [GCC_PCNOC_TBU_BCR] = { 0x12058, 0 },4587 [GCC_SMMU_CFG_BCR] = { 0x1208c, 0 },4588 [GCC_PRNG_BCR] = { 0x13000, 0 },4589 [GCC_BOOT_ROM_BCR] = { 0x13008, 0 },4590 [GCC_CRYPTO_BCR] = { 0x16000, 0 },4591 [GCC_WCSS_BCR] = { 0x18000, 0 },4592 [GCC_WCSS_Q6_BCR] = { 0x18100, 0 },4593 [GCC_NSS_BCR] = { 0x19000, 0 },4594 [GCC_SEC_CTRL_BCR] = { 0x1a000, 0 },4595 [GCC_ADSS_BCR] = { 0x1c000, 0 },4596 [GCC_DDRSS_BCR] = { 0x1e000, 0 },4597 [GCC_SYSTEM_NOC_BCR] = { 0x26000, 0 },4598 [GCC_PCNOC_BCR] = { 0x27018, 0 },4599 [GCC_TCSR_BCR] = { 0x28000, 0 },4600 [GCC_QDSS_BCR] = { 0x29000, 0 },4601 [GCC_DCD_BCR] = { 0x2a000, 0 },4602 [GCC_MSG_RAM_BCR] = { 0x2b000, 0 },4603 [GCC_MPM_BCR] = { 0x2c000, 0 },4604 [GCC_SPMI_BCR] = { 0x2e000, 0 },4605 [GCC_SPDM_BCR] = { 0x2f000, 0 },4606 [GCC_RBCPR_BCR] = { 0x33000, 0 },4607 [GCC_RBCPR_MX_BCR] = { 0x33014, 0 },4608 [GCC_TLMM_BCR] = { 0x34000, 0 },4609 [GCC_RBCPR_WCSS_BCR] = { 0x3a000, 0 },4610 [GCC_USB0_PHY_BCR] = { 0x3e034, 0 },4611 [GCC_USB3PHY_0_PHY_BCR] = { 0x3e03c, 0 },4612 [GCC_USB0_BCR] = { 0x3e070, 0 },4613 [GCC_USB1_PHY_BCR] = { 0x3f034, 0 },4614 [GCC_USB3PHY_1_PHY_BCR] = { 0x3f03c, 0 },4615 [GCC_USB1_BCR] = { 0x3f070, 0 },4616 [GCC_QUSB2_0_PHY_BCR] = { 0x4103c, 0 },4617 [GCC_QUSB2_1_PHY_BCR] = { 0x41040, 0 },4618 [GCC_SDCC1_BCR] = { 0x42000, 0 },4619 [GCC_SDCC2_BCR] = { 0x43000, 0 },4620 [GCC_SNOC_BUS_TIMEOUT0_BCR] = { 0x47000, 0 },4621 [GCC_SNOC_BUS_TIMEOUT2_BCR] = { 0x47008, 0 },4622 [GCC_SNOC_BUS_TIMEOUT3_BCR] = { 0x47010, 0 },4623 [GCC_PCNOC_BUS_TIMEOUT0_BCR] = { 0x48000, 0 },4624 [GCC_PCNOC_BUS_TIMEOUT1_BCR] = { 0x48008, 0 },4625 [GCC_PCNOC_BUS_TIMEOUT2_BCR] = { 0x48010, 0 },4626 [GCC_PCNOC_BUS_TIMEOUT3_BCR] = { 0x48018, 0 },4627 [GCC_PCNOC_BUS_TIMEOUT4_BCR] = { 0x48020, 0 },4628 [GCC_PCNOC_BUS_TIMEOUT5_BCR] = { 0x48028, 0 },4629 [GCC_PCNOC_BUS_TIMEOUT6_BCR] = { 0x48030, 0 },4630 [GCC_PCNOC_BUS_TIMEOUT7_BCR] = { 0x48038, 0 },4631 [GCC_PCNOC_BUS_TIMEOUT8_BCR] = { 0x48040, 0 },4632 [GCC_PCNOC_BUS_TIMEOUT9_BCR] = { 0x48048, 0 },4633 [GCC_UNIPHY0_BCR] = { 0x56000, 0 },4634 [GCC_UNIPHY1_BCR] = { 0x56100, 0 },4635 [GCC_UNIPHY2_BCR] = { 0x56200, 0 },4636 [GCC_CMN_12GPLL_BCR] = { 0x56300, 0 },4637 [GCC_QPIC_BCR] = { 0x57018, 0 },4638 [GCC_MDIO_BCR] = { 0x58000, 0 },4639 [GCC_PCIE1_TBU_BCR] = { 0x65000, 0 },4640 [GCC_WCSS_CORE_TBU_BCR] = { 0x66000, 0 },4641 [GCC_WCSS_Q6_TBU_BCR] = { 0x67000, 0 },4642 [GCC_USB0_TBU_BCR] = { 0x6a000, 0 },4643 [GCC_USB1_TBU_BCR] = { 0x6a004, 0 },4644 [GCC_PCIE0_TBU_BCR] = { 0x6b000, 0 },4645 [GCC_NSS_NOC_TBU_BCR] = { 0x6e000, 0 },4646 [GCC_PCIE0_BCR] = { 0x75004, 0 },4647 [GCC_PCIE0_PHY_BCR] = { 0x75038, 0 },4648 [GCC_PCIE0PHY_PHY_BCR] = { 0x7503c, 0 },4649 [GCC_PCIE0_LINK_DOWN_BCR] = { 0x75044, 0 },4650 [GCC_PCIE1_BCR] = { 0x76004, 0 },4651 [GCC_PCIE1_PHY_BCR] = { 0x76038, 0 },4652 [GCC_PCIE1PHY_PHY_BCR] = { 0x7603c, 0 },4653 [GCC_PCIE1_LINK_DOWN_BCR] = { 0x76044, 0 },4654 [GCC_DCC_BCR] = { 0x77000, 0 },4655 [GCC_APC0_VOLTAGE_DROOP_DETECTOR_BCR] = { 0x78000, 0 },4656 [GCC_APC1_VOLTAGE_DROOP_DETECTOR_BCR] = { 0x79000, 0 },4657 [GCC_SMMU_CATS_BCR] = { 0x7c000, 0 },4658 [GCC_UBI0_AXI_ARES] = { 0x68010, 0 },4659 [GCC_UBI0_AHB_ARES] = { 0x68010, 1 },4660 [GCC_UBI0_NC_AXI_ARES] = { 0x68010, 2 },4661 [GCC_UBI0_DBG_ARES] = { 0x68010, 3 },4662 [GCC_UBI0_CORE_CLAMP_ENABLE] = { 0x68010, 4 },4663 [GCC_UBI0_CLKRST_CLAMP_ENABLE] = { 0x68010, 5 },4664 [GCC_UBI1_AXI_ARES] = { 0x68010, 8 },4665 [GCC_UBI1_AHB_ARES] = { 0x68010, 9 },4666 [GCC_UBI1_NC_AXI_ARES] = { 0x68010, 10 },4667 [GCC_UBI1_DBG_ARES] = { 0x68010, 11 },4668 [GCC_UBI1_CORE_CLAMP_ENABLE] = { 0x68010, 12 },4669 [GCC_UBI1_CLKRST_CLAMP_ENABLE] = { 0x68010, 13 },4670 [GCC_NSS_CFG_ARES] = { 0x68010, 16 },4671 [GCC_NSS_IMEM_ARES] = { 0x68010, 17 },4672 [GCC_NSS_NOC_ARES] = { 0x68010, 18 },4673 [GCC_NSS_CRYPTO_ARES] = { 0x68010, 19 },4674 [GCC_NSS_CSR_ARES] = { 0x68010, 20 },4675 [GCC_NSS_CE_APB_ARES] = { 0x68010, 21 },4676 [GCC_NSS_CE_AXI_ARES] = { 0x68010, 22 },4677 [GCC_NSSNOC_CE_APB_ARES] = { 0x68010, 23 },4678 [GCC_NSSNOC_CE_AXI_ARES] = { 0x68010, 24 },4679 [GCC_NSSNOC_UBI0_AHB_ARES] = { 0x68010, 25 },4680 [GCC_NSSNOC_UBI1_AHB_ARES] = { 0x68010, 26 },4681 [GCC_NSSNOC_SNOC_ARES] = { 0x68010, 27 },4682 [GCC_NSSNOC_CRYPTO_ARES] = { 0x68010, 28 },4683 [GCC_NSSNOC_ATB_ARES] = { 0x68010, 29 },4684 [GCC_NSSNOC_QOSGEN_REF_ARES] = { 0x68010, 30 },4685 [GCC_NSSNOC_TIMEOUT_REF_ARES] = { 0x68010, 31 },4686 [GCC_PCIE0_PIPE_ARES] = { 0x75040, 0 },4687 [GCC_PCIE0_SLEEP_ARES] = { 0x75040, 1 },4688 [GCC_PCIE0_CORE_STICKY_ARES] = { 0x75040, 2 },4689 [GCC_PCIE0_AXI_MASTER_ARES] = { 0x75040, 3 },4690 [GCC_PCIE0_AXI_SLAVE_ARES] = { 0x75040, 4 },4691 [GCC_PCIE0_AHB_ARES] = { 0x75040, 5 },4692 [GCC_PCIE0_AXI_MASTER_STICKY_ARES] = { 0x75040, 6 },4693 [GCC_PCIE0_AXI_SLAVE_STICKY_ARES] = { 0x75040, 7 },4694 [GCC_PCIE1_PIPE_ARES] = { 0x76040, 0 },4695 [GCC_PCIE1_SLEEP_ARES] = { 0x76040, 1 },4696 [GCC_PCIE1_CORE_STICKY_ARES] = { 0x76040, 2 },4697 [GCC_PCIE1_AXI_MASTER_ARES] = { 0x76040, 3 },4698 [GCC_PCIE1_AXI_SLAVE_ARES] = { 0x76040, 4 },4699 [GCC_PCIE1_AHB_ARES] = { 0x76040, 5 },4700 [GCC_PCIE1_AXI_MASTER_STICKY_ARES] = { 0x76040, 6 },4701 [GCC_PPE_FULL_RESET] = { .reg = 0x68014, .bitmask = GENMASK(19, 16) },4702 [GCC_UNIPHY0_SOFT_RESET] = { .reg = 0x56004, .bitmask = GENMASK(13, 4) | BIT(1) },4703 [GCC_UNIPHY0_XPCS_RESET] = { 0x56004, 2 },4704 [GCC_UNIPHY1_SOFT_RESET] = { .reg = 0x56104, .bitmask = GENMASK(5, 4) | BIT(1) },4705 [GCC_UNIPHY1_XPCS_RESET] = { 0x56104, 2 },4706 [GCC_UNIPHY2_SOFT_RESET] = { .reg = 0x56204, .bitmask = GENMASK(5, 4) | BIT(1) },4707 [GCC_UNIPHY2_XPCS_RESET] = { 0x56204, 2 },4708 [GCC_EDMA_HW_RESET] = { .reg = 0x68014, .bitmask = GENMASK(21, 20) },4709 [GCC_NSSPORT1_RESET] = { .reg = 0x68014, .bitmask = BIT(24) | GENMASK(1, 0) },4710 [GCC_NSSPORT2_RESET] = { .reg = 0x68014, .bitmask = BIT(25) | GENMASK(3, 2) },4711 [GCC_NSSPORT3_RESET] = { .reg = 0x68014, .bitmask = BIT(26) | GENMASK(5, 4) },4712 [GCC_NSSPORT4_RESET] = { .reg = 0x68014, .bitmask = BIT(27) | GENMASK(9, 8) },4713 [GCC_NSSPORT5_RESET] = { .reg = 0x68014, .bitmask = BIT(28) | GENMASK(11, 10) },4714 [GCC_NSSPORT6_RESET] = { .reg = 0x68014, .bitmask = BIT(29) | GENMASK(13, 12) },4715};4716 4717static struct gdsc *gcc_ipq8074_gdscs[] = {4718 [USB0_GDSC] = &usb0_gdsc,4719 [USB1_GDSC] = &usb1_gdsc,4720};4721 4722static const struct of_device_id gcc_ipq8074_match_table[] = {4723 { .compatible = "qcom,gcc-ipq8074" },4724 { }4725};4726MODULE_DEVICE_TABLE(of, gcc_ipq8074_match_table);4727 4728static const struct regmap_config gcc_ipq8074_regmap_config = {4729 .reg_bits = 32,4730 .reg_stride = 4,4731 .val_bits = 32,4732 .max_register = 0x7fffc,4733 .fast_io = true,4734};4735 4736static const struct qcom_cc_desc gcc_ipq8074_desc = {4737 .config = &gcc_ipq8074_regmap_config,4738 .clks = gcc_ipq8074_clks,4739 .num_clks = ARRAY_SIZE(gcc_ipq8074_clks),4740 .resets = gcc_ipq8074_resets,4741 .num_resets = ARRAY_SIZE(gcc_ipq8074_resets),4742 .clk_hws = gcc_ipq8074_hws,4743 .num_clk_hws = ARRAY_SIZE(gcc_ipq8074_hws),4744 .gdscs = gcc_ipq8074_gdscs,4745 .num_gdscs = ARRAY_SIZE(gcc_ipq8074_gdscs),4746};4747 4748static int gcc_ipq8074_probe(struct platform_device *pdev)4749{4750 struct regmap *regmap;4751 4752 regmap = qcom_cc_map(pdev, &gcc_ipq8074_desc);4753 if (IS_ERR(regmap))4754 return PTR_ERR(regmap);4755 4756 /* SW Workaround for UBI32 Huayra PLL */4757 regmap_update_bits(regmap, 0x2501c, BIT(26), BIT(26));4758 4759 clk_alpha_pll_configure(&ubi32_pll_main, regmap, &ubi32_pll_config);4760 clk_alpha_pll_configure(&nss_crypto_pll_main, regmap,4761 &nss_crypto_pll_config);4762 4763 return qcom_cc_really_probe(&pdev->dev, &gcc_ipq8074_desc, regmap);4764}4765 4766static struct platform_driver gcc_ipq8074_driver = {4767 .probe = gcc_ipq8074_probe,4768 .driver = {4769 .name = "qcom,gcc-ipq8074",4770 .of_match_table = gcc_ipq8074_match_table,4771 },4772};4773 4774static int __init gcc_ipq8074_init(void)4775{4776 return platform_driver_register(&gcc_ipq8074_driver);4777}4778core_initcall(gcc_ipq8074_init);4779 4780static void __exit gcc_ipq8074_exit(void)4781{4782 platform_driver_unregister(&gcc_ipq8074_driver);4783}4784module_exit(gcc_ipq8074_exit);4785 4786MODULE_DESCRIPTION("QCOM GCC IPQ8074 Driver");4787MODULE_LICENSE("GPL v2");4788MODULE_ALIAS("platform:gcc-ipq8074");4789