1 // SPDX-License-Identifier: GPL-2.0-only 2 /* Copyright (c) 2013-2016, The Linux Foundation. All rights reserved. 3 */ 4 5 #include <linux/kernel.h> 6 #include <linux/init.h> 7 #include <linux/err.h> 8 #include <linux/ctype.h> 9 #include <linux/io.h> 10 #include <linux/of.h> 11 #include <linux/platform_device.h> 12 #include <linux/module.h> 13 #include <linux/regmap.h> 14 15 #include <dt-bindings/clock/qcom,gcc-msm8994.h> 16 17 #include "common.h" 18 #include "clk-regmap.h" 19 #include "clk-alpha-pll.h" 20 #include "clk-rcg.h" 21 #include "clk-branch.h" 22 #include "reset.h" 23 #include "gdsc.h" 24 25 enum { 26 P_XO, 27 P_GPLL0, 28 P_GPLL4, 29 }; 30 31 static struct clk_alpha_pll gpll0_early = { 32 .offset = 0, 33 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 34 .clkr = { 35 .enable_reg = 0x1480, 36 .enable_mask = BIT(0), 37 .hw.init = &(struct clk_init_data){ 38 .name = "gpll0_early", 39 .parent_data = &(const struct clk_parent_data){ 40 .fw_name = "xo", 41 }, 42 .num_parents = 1, 43 .ops = &clk_alpha_pll_ops, 44 }, 45 }, 46 }; 47 48 static struct clk_alpha_pll_postdiv gpll0 = { 49 .offset = 0, 50 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 51 .clkr.hw.init = &(struct clk_init_data){ 52 .name = "gpll0", 53 .parent_names = (const char *[]) { "gpll0_early" }, 54 .num_parents = 1, 55 .ops = &clk_alpha_pll_postdiv_ops, 56 }, 57 }; 58 59 static struct clk_alpha_pll gpll4_early = { 60 .offset = 0x1dc0, 61 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 62 .clkr = { 63 .enable_reg = 0x1480, 64 .enable_mask = BIT(4), 65 .hw.init = &(struct clk_init_data){ 66 .name = "gpll4_early", 67 .parent_data = &(const struct clk_parent_data){ 68 .fw_name = "xo", 69 }, 70 .num_parents = 1, 71 .ops = &clk_alpha_pll_ops, 72 }, 73 }, 74 }; 75 76 static struct clk_alpha_pll_postdiv gpll4 = { 77 .offset = 0x1dc0, 78 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 79 .clkr.hw.init = &(struct clk_init_data){ 80 .name = "gpll4", 81 .parent_names = (const char *[]) { "gpll4_early" }, 82 .num_parents = 1, 83 .ops = &clk_alpha_pll_postdiv_ops, 84 }, 85 }; 86 87 static const struct parent_map gcc_xo_gpll0_map[] = { 88 { P_XO, 0 }, 89 { P_GPLL0, 1 }, 90 }; 91 92 static const struct clk_parent_data gcc_xo_gpll0[] = { 93 { .fw_name = "xo" }, 94 { .hw = &gpll0.clkr.hw }, 95 }; 96 97 static const struct parent_map gcc_xo_gpll0_gpll4_map[] = { 98 { P_XO, 0 }, 99 { P_GPLL0, 1 }, 100 { P_GPLL4, 5 }, 101 }; 102 103 static const struct clk_parent_data gcc_xo_gpll0_gpll4[] = { 104 { .fw_name = "xo" }, 105 { .hw = &gpll0.clkr.hw }, 106 { .hw = &gpll4.clkr.hw }, 107 }; 108 109 static struct clk_rcg2 system_noc_clk_src = { 110 .cmd_rcgr = 0x0120, 111 .hid_width = 5, 112 .parent_map = gcc_xo_gpll0_map, 113 .clkr.hw.init = &(struct clk_init_data){ 114 .name = "system_noc_clk_src", 115 .parent_data = gcc_xo_gpll0, 116 .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 117 .ops = &clk_rcg2_ops, 118 }, 119 }; 120 121 static struct clk_rcg2 config_noc_clk_src = { 122 .cmd_rcgr = 0x0150, 123 .hid_width = 5, 124 .parent_map = gcc_xo_gpll0_map, 125 .clkr.hw.init = &(struct clk_init_data){ 126 .name = "config_noc_clk_src", 127 .parent_data = gcc_xo_gpll0, 128 .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 129 .ops = &clk_rcg2_ops, 130 }, 131 }; 132 133 static struct clk_rcg2 periph_noc_clk_src = { 134 .cmd_rcgr = 0x0190, 135 .hid_width = 5, 136 .parent_map = gcc_xo_gpll0_map, 137 .clkr.hw.init = &(struct clk_init_data){ 138 .name = "periph_noc_clk_src", 139 .parent_data = gcc_xo_gpll0, 140 .num_parents = ARRAY_SIZE(gcc_xo_gpll0), 141 .ops = &clk_rcg2_ops, 142 }, 143 }; 144 145 static struct freq_tbl ftbl_ufs_axi_clk_src[] = { 146 F(50000000, P_GPLL0, 12, 0, 0), 147 F(100000000, P_GPLL0, 6, 0, 0), 148 F(150000000, P_GPLL0, 4, 0, 0), 149 F(171430000, P_GPLL0, 3.5, 0, 0), 150 F(200000000, P_GPLL0, 3, 0, 0), 151 F(240000000, P_GPLL0, 2.5, 0, 0), 152 { } 153 }; 154 155 static struct clk_rcg2 ufs_axi_clk_src = { 156 .cmd_rcgr = 0x1d68, 157 .mnd_width = 8, 158 .hid_width = 5, 159 .parent_map = gcc_xo_gpll0_map, 160 .freq_tbl = ftbl_ufs_axi_clk_src, 161 .clkr.hw.init = &(struct clk_init_data){ 162 .name = "ufs_axi_clk_src", 163 .parent_data = gcc_xo_gpll0, 164 .num_parents = 2, 165 .ops = &clk_rcg2_ops, 166 }, 167 }; 168 169 static struct freq_tbl ftbl_usb30_master_clk_src[] = { 170 F(19200000, P_XO, 1, 0, 0), 171 F(125000000, P_GPLL0, 1, 5, 24), 172 { } 173 }; 174 175 static struct clk_rcg2 usb30_master_clk_src = { 176 .cmd_rcgr = 0x03d4, 177 .mnd_width = 8, 178 .hid_width = 5, 179 .parent_map = gcc_xo_gpll0_map, 180 .freq_tbl = ftbl_usb30_master_clk_src, 181 .clkr.hw.init = &(struct clk_init_data){ 182 .name = "usb30_master_clk_src", 183 .parent_data = gcc_xo_gpll0, 184 .num_parents = 2, 185 .ops = &clk_rcg2_ops, 186 }, 187 }; 188 189 static struct freq_tbl ftbl_blsp_i2c_apps_clk_src[] = { 190 F(19200000, P_XO, 1, 0, 0), 191 F(50000000, P_GPLL0, 12, 0, 0), 192 { } 193 }; 194 195 static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = { 196 .cmd_rcgr = 0x0660, 197 .hid_width = 5, 198 .parent_map = gcc_xo_gpll0_map, 199 .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 200 .clkr.hw.init = &(struct clk_init_data){ 201 .name = "blsp1_qup1_i2c_apps_clk_src", 202 .parent_data = gcc_xo_gpll0, 203 .num_parents = 2, 204 .ops = &clk_rcg2_ops, 205 }, 206 }; 207 208 static struct freq_tbl ftbl_blsp1_qup1_spi_apps_clk_src[] = { 209 F(960000, P_XO, 10, 1, 2), 210 F(4800000, P_XO, 4, 0, 0), 211 F(9600000, P_XO, 2, 0, 0), 212 F(15000000, P_GPLL0, 10, 1, 4), 213 F(19200000, P_XO, 1, 0, 0), 214 F(24000000, P_GPLL0, 12.5, 1, 2), 215 F(25000000, P_GPLL0, 12, 1, 2), 216 F(48000000, P_GPLL0, 12.5, 0, 0), 217 F(50000000, P_GPLL0, 12, 0, 0), 218 { } 219 }; 220 221 static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = { 222 .cmd_rcgr = 0x064c, 223 .mnd_width = 8, 224 .hid_width = 5, 225 .parent_map = gcc_xo_gpll0_map, 226 .freq_tbl = ftbl_blsp1_qup1_spi_apps_clk_src, 227 .clkr.hw.init = &(struct clk_init_data){ 228 .name = "blsp1_qup1_spi_apps_clk_src", 229 .parent_data = gcc_xo_gpll0, 230 .num_parents = 2, 231 .ops = &clk_rcg2_ops, 232 }, 233 }; 234 235 static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = { 236 .cmd_rcgr = 0x06e0, 237 .hid_width = 5, 238 .parent_map = gcc_xo_gpll0_map, 239 .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 240 .clkr.hw.init = &(struct clk_init_data){ 241 .name = "blsp1_qup2_i2c_apps_clk_src", 242 .parent_data = gcc_xo_gpll0, 243 .num_parents = 2, 244 .ops = &clk_rcg2_ops, 245 }, 246 }; 247 248 static struct freq_tbl ftbl_blsp1_qup2_spi_apps_clk_src[] = { 249 F(960000, P_XO, 10, 1, 2), 250 F(4800000, P_XO, 4, 0, 0), 251 F(9600000, P_XO, 2, 0, 0), 252 F(15000000, P_GPLL0, 10, 1, 4), 253 F(19200000, P_XO, 1, 0, 0), 254 F(24000000, P_GPLL0, 12.5, 1, 2), 255 F(25000000, P_GPLL0, 12, 1, 2), 256 F(42860000, P_GPLL0, 14, 0, 0), 257 F(46150000, P_GPLL0, 13, 0, 0), 258 { } 259 }; 260 261 static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = { 262 .cmd_rcgr = 0x06cc, 263 .mnd_width = 8, 264 .hid_width = 5, 265 .parent_map = gcc_xo_gpll0_map, 266 .freq_tbl = ftbl_blsp1_qup2_spi_apps_clk_src, 267 .clkr.hw.init = &(struct clk_init_data){ 268 .name = "blsp1_qup2_spi_apps_clk_src", 269 .parent_data = gcc_xo_gpll0, 270 .num_parents = 2, 271 .ops = &clk_rcg2_ops, 272 }, 273 }; 274 275 static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = { 276 .cmd_rcgr = 0x0760, 277 .hid_width = 5, 278 .parent_map = gcc_xo_gpll0_map, 279 .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 280 .clkr.hw.init = &(struct clk_init_data){ 281 .name = "blsp1_qup3_i2c_apps_clk_src", 282 .parent_data = gcc_xo_gpll0, 283 .num_parents = 2, 284 .ops = &clk_rcg2_ops, 285 }, 286 }; 287 288 static struct freq_tbl ftbl_blsp1_qup3_4_spi_apps_clk_src[] = { 289 F(960000, P_XO, 10, 1, 2), 290 F(4800000, P_XO, 4, 0, 0), 291 F(9600000, P_XO, 2, 0, 0), 292 F(15000000, P_GPLL0, 10, 1, 4), 293 F(19200000, P_XO, 1, 0, 0), 294 F(24000000, P_GPLL0, 12.5, 1, 2), 295 F(25000000, P_GPLL0, 12, 1, 2), 296 F(42860000, P_GPLL0, 14, 0, 0), 297 F(44440000, P_GPLL0, 13.5, 0, 0), 298 { } 299 }; 300 301 static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = { 302 .cmd_rcgr = 0x074c, 303 .mnd_width = 8, 304 .hid_width = 5, 305 .parent_map = gcc_xo_gpll0_map, 306 .freq_tbl = ftbl_blsp1_qup3_4_spi_apps_clk_src, 307 .clkr.hw.init = &(struct clk_init_data){ 308 .name = "blsp1_qup3_spi_apps_clk_src", 309 .parent_data = gcc_xo_gpll0, 310 .num_parents = 2, 311 .ops = &clk_rcg2_ops, 312 }, 313 }; 314 315 static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = { 316 .cmd_rcgr = 0x07e0, 317 .hid_width = 5, 318 .parent_map = gcc_xo_gpll0_map, 319 .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 320 .clkr.hw.init = &(struct clk_init_data){ 321 .name = "blsp1_qup4_i2c_apps_clk_src", 322 .parent_data = gcc_xo_gpll0, 323 .num_parents = 2, 324 .ops = &clk_rcg2_ops, 325 }, 326 }; 327 328 static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = { 329 .cmd_rcgr = 0x07cc, 330 .mnd_width = 8, 331 .hid_width = 5, 332 .parent_map = gcc_xo_gpll0_map, 333 .freq_tbl = ftbl_blsp1_qup3_4_spi_apps_clk_src, 334 .clkr.hw.init = &(struct clk_init_data){ 335 .name = "blsp1_qup4_spi_apps_clk_src", 336 .parent_data = gcc_xo_gpll0, 337 .num_parents = 2, 338 .ops = &clk_rcg2_ops, 339 }, 340 }; 341 342 static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = { 343 .cmd_rcgr = 0x0860, 344 .hid_width = 5, 345 .parent_map = gcc_xo_gpll0_map, 346 .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 347 .clkr.hw.init = &(struct clk_init_data){ 348 .name = "blsp1_qup5_i2c_apps_clk_src", 349 .parent_data = gcc_xo_gpll0, 350 .num_parents = 2, 351 .ops = &clk_rcg2_ops, 352 }, 353 }; 354 355 static struct freq_tbl ftbl_blsp1_qup5_spi_apps_clk_src[] = { 356 F(960000, P_XO, 10, 1, 2), 357 F(4800000, P_XO, 4, 0, 0), 358 F(9600000, P_XO, 2, 0, 0), 359 F(15000000, P_GPLL0, 10, 1, 4), 360 F(19200000, P_XO, 1, 0, 0), 361 F(24000000, P_GPLL0, 12.5, 1, 2), 362 F(25000000, P_GPLL0, 12, 1, 2), 363 F(40000000, P_GPLL0, 15, 0, 0), 364 F(42860000, P_GPLL0, 14, 0, 0), 365 { } 366 }; 367 368 static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = { 369 .cmd_rcgr = 0x084c, 370 .mnd_width = 8, 371 .hid_width = 5, 372 .parent_map = gcc_xo_gpll0_map, 373 .freq_tbl = ftbl_blsp1_qup5_spi_apps_clk_src, 374 .clkr.hw.init = &(struct clk_init_data){ 375 .name = "blsp1_qup5_spi_apps_clk_src", 376 .parent_data = gcc_xo_gpll0, 377 .num_parents = 2, 378 .ops = &clk_rcg2_ops, 379 }, 380 }; 381 382 static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = { 383 .cmd_rcgr = 0x08e0, 384 .hid_width = 5, 385 .parent_map = gcc_xo_gpll0_map, 386 .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 387 .clkr.hw.init = &(struct clk_init_data){ 388 .name = "blsp1_qup6_i2c_apps_clk_src", 389 .parent_data = gcc_xo_gpll0, 390 .num_parents = 2, 391 .ops = &clk_rcg2_ops, 392 }, 393 }; 394 395 static struct freq_tbl ftbl_blsp1_qup6_spi_apps_clk_src[] = { 396 F(960000, P_XO, 10, 1, 2), 397 F(4800000, P_XO, 4, 0, 0), 398 F(9600000, P_XO, 2, 0, 0), 399 F(15000000, P_GPLL0, 10, 1, 4), 400 F(19200000, P_XO, 1, 0, 0), 401 F(24000000, P_GPLL0, 12.5, 1, 2), 402 F(27906976, P_GPLL0, 1, 2, 43), 403 F(41380000, P_GPLL0, 15, 0, 0), 404 F(42860000, P_GPLL0, 14, 0, 0), 405 { } 406 }; 407 408 static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = { 409 .cmd_rcgr = 0x08cc, 410 .mnd_width = 8, 411 .hid_width = 5, 412 .parent_map = gcc_xo_gpll0_map, 413 .freq_tbl = ftbl_blsp1_qup6_spi_apps_clk_src, 414 .clkr.hw.init = &(struct clk_init_data){ 415 .name = "blsp1_qup6_spi_apps_clk_src", 416 .parent_data = gcc_xo_gpll0, 417 .num_parents = 2, 418 .ops = &clk_rcg2_ops, 419 }, 420 }; 421 422 static struct freq_tbl ftbl_blsp_uart_apps_clk_src[] = { 423 F(3686400, P_GPLL0, 1, 96, 15625), 424 F(7372800, P_GPLL0, 1, 192, 15625), 425 F(14745600, P_GPLL0, 1, 384, 15625), 426 F(16000000, P_GPLL0, 5, 2, 15), 427 F(19200000, P_XO, 1, 0, 0), 428 F(24000000, P_GPLL0, 5, 1, 5), 429 F(32000000, P_GPLL0, 1, 4, 75), 430 F(40000000, P_GPLL0, 15, 0, 0), 431 F(46400000, P_GPLL0, 1, 29, 375), 432 F(48000000, P_GPLL0, 12.5, 0, 0), 433 F(51200000, P_GPLL0, 1, 32, 375), 434 F(56000000, P_GPLL0, 1, 7, 75), 435 F(58982400, P_GPLL0, 1, 1536, 15625), 436 F(60000000, P_GPLL0, 10, 0, 0), 437 F(63160000, P_GPLL0, 9.5, 0, 0), 438 { } 439 }; 440 441 static struct clk_rcg2 blsp1_uart1_apps_clk_src = { 442 .cmd_rcgr = 0x068c, 443 .mnd_width = 16, 444 .hid_width = 5, 445 .parent_map = gcc_xo_gpll0_map, 446 .freq_tbl = ftbl_blsp_uart_apps_clk_src, 447 .clkr.hw.init = &(struct clk_init_data){ 448 .name = "blsp1_uart1_apps_clk_src", 449 .parent_data = gcc_xo_gpll0, 450 .num_parents = 2, 451 .ops = &clk_rcg2_ops, 452 }, 453 }; 454 455 static struct clk_rcg2 blsp1_uart2_apps_clk_src = { 456 .cmd_rcgr = 0x070c, 457 .mnd_width = 16, 458 .hid_width = 5, 459 .parent_map = gcc_xo_gpll0_map, 460 .freq_tbl = ftbl_blsp_uart_apps_clk_src, 461 .clkr.hw.init = &(struct clk_init_data){ 462 .name = "blsp1_uart2_apps_clk_src", 463 .parent_data = gcc_xo_gpll0, 464 .num_parents = 2, 465 .ops = &clk_rcg2_ops, 466 }, 467 }; 468 469 static struct clk_rcg2 blsp1_uart3_apps_clk_src = { 470 .cmd_rcgr = 0x078c, 471 .mnd_width = 16, 472 .hid_width = 5, 473 .parent_map = gcc_xo_gpll0_map, 474 .freq_tbl = ftbl_blsp_uart_apps_clk_src, 475 .clkr.hw.init = &(struct clk_init_data){ 476 .name = "blsp1_uart3_apps_clk_src", 477 .parent_data = gcc_xo_gpll0, 478 .num_parents = 2, 479 .ops = &clk_rcg2_ops, 480 }, 481 }; 482 483 static struct clk_rcg2 blsp1_uart4_apps_clk_src = { 484 .cmd_rcgr = 0x080c, 485 .mnd_width = 16, 486 .hid_width = 5, 487 .parent_map = gcc_xo_gpll0_map, 488 .freq_tbl = ftbl_blsp_uart_apps_clk_src, 489 .clkr.hw.init = &(struct clk_init_data){ 490 .name = "blsp1_uart4_apps_clk_src", 491 .parent_data = gcc_xo_gpll0, 492 .num_parents = 2, 493 .ops = &clk_rcg2_ops, 494 }, 495 }; 496 497 static struct clk_rcg2 blsp1_uart5_apps_clk_src = { 498 .cmd_rcgr = 0x088c, 499 .mnd_width = 16, 500 .hid_width = 5, 501 .parent_map = gcc_xo_gpll0_map, 502 .freq_tbl = ftbl_blsp_uart_apps_clk_src, 503 .clkr.hw.init = &(struct clk_init_data){ 504 .name = "blsp1_uart5_apps_clk_src", 505 .parent_data = gcc_xo_gpll0, 506 .num_parents = 2, 507 .ops = &clk_rcg2_ops, 508 }, 509 }; 510 511 static struct clk_rcg2 blsp1_uart6_apps_clk_src = { 512 .cmd_rcgr = 0x090c, 513 .mnd_width = 16, 514 .hid_width = 5, 515 .parent_map = gcc_xo_gpll0_map, 516 .freq_tbl = ftbl_blsp_uart_apps_clk_src, 517 .clkr.hw.init = &(struct clk_init_data){ 518 .name = "blsp1_uart6_apps_clk_src", 519 .parent_data = gcc_xo_gpll0, 520 .num_parents = 2, 521 .ops = &clk_rcg2_ops, 522 }, 523 }; 524 525 static struct clk_rcg2 blsp2_qup1_i2c_apps_clk_src = { 526 .cmd_rcgr = 0x09a0, 527 .hid_width = 5, 528 .parent_map = gcc_xo_gpll0_map, 529 .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 530 .clkr.hw.init = &(struct clk_init_data){ 531 .name = "blsp2_qup1_i2c_apps_clk_src", 532 .parent_data = gcc_xo_gpll0, 533 .num_parents = 2, 534 .ops = &clk_rcg2_ops, 535 }, 536 }; 537 538 static struct freq_tbl ftbl_blsp2_qup1_2_spi_apps_clk_src[] = { 539 F(960000, P_XO, 10, 1, 2), 540 F(4800000, P_XO, 4, 0, 0), 541 F(9600000, P_XO, 2, 0, 0), 542 F(15000000, P_GPLL0, 10, 1, 4), 543 F(19200000, P_XO, 1, 0, 0), 544 F(24000000, P_GPLL0, 12.5, 1, 2), 545 F(25000000, P_GPLL0, 12, 1, 2), 546 F(42860000, P_GPLL0, 14, 0, 0), 547 F(44440000, P_GPLL0, 13.5, 0, 0), 548 { } 549 }; 550 551 static struct clk_rcg2 blsp2_qup1_spi_apps_clk_src = { 552 .cmd_rcgr = 0x098c, 553 .mnd_width = 8, 554 .hid_width = 5, 555 .parent_map = gcc_xo_gpll0_map, 556 .freq_tbl = ftbl_blsp2_qup1_2_spi_apps_clk_src, 557 .clkr.hw.init = &(struct clk_init_data){ 558 .name = "blsp2_qup1_spi_apps_clk_src", 559 .parent_data = gcc_xo_gpll0, 560 .num_parents = 2, 561 .ops = &clk_rcg2_ops, 562 }, 563 }; 564 565 static struct clk_rcg2 blsp2_qup2_i2c_apps_clk_src = { 566 .cmd_rcgr = 0x0a20, 567 .hid_width = 5, 568 .parent_map = gcc_xo_gpll0_map, 569 .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 570 .clkr.hw.init = &(struct clk_init_data){ 571 .name = "blsp2_qup2_i2c_apps_clk_src", 572 .parent_data = gcc_xo_gpll0, 573 .num_parents = 2, 574 .ops = &clk_rcg2_ops, 575 }, 576 }; 577 578 static struct clk_rcg2 blsp2_qup2_spi_apps_clk_src = { 579 .cmd_rcgr = 0x0a0c, 580 .mnd_width = 8, 581 .hid_width = 5, 582 .parent_map = gcc_xo_gpll0_map, 583 .freq_tbl = ftbl_blsp2_qup1_2_spi_apps_clk_src, 584 .clkr.hw.init = &(struct clk_init_data){ 585 .name = "blsp2_qup2_spi_apps_clk_src", 586 .parent_data = gcc_xo_gpll0, 587 .num_parents = 2, 588 .ops = &clk_rcg2_ops, 589 }, 590 }; 591 592 static struct freq_tbl ftbl_blsp2_qup3_4_spi_apps_clk_src[] = { 593 F(960000, P_XO, 10, 1, 2), 594 F(4800000, P_XO, 4, 0, 0), 595 F(9600000, P_XO, 2, 0, 0), 596 F(15000000, P_GPLL0, 10, 1, 4), 597 F(19200000, P_XO, 1, 0, 0), 598 F(24000000, P_GPLL0, 12.5, 1, 2), 599 F(25000000, P_GPLL0, 12, 1, 2), 600 F(42860000, P_GPLL0, 14, 0, 0), 601 F(48000000, P_GPLL0, 12.5, 0, 0), 602 { } 603 }; 604 605 static struct clk_rcg2 blsp2_qup3_i2c_apps_clk_src = { 606 .cmd_rcgr = 0x0aa0, 607 .hid_width = 5, 608 .parent_map = gcc_xo_gpll0_map, 609 .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 610 .clkr.hw.init = &(struct clk_init_data){ 611 .name = "blsp2_qup3_i2c_apps_clk_src", 612 .parent_data = gcc_xo_gpll0, 613 .num_parents = 2, 614 .ops = &clk_rcg2_ops, 615 }, 616 }; 617 618 static struct clk_rcg2 blsp2_qup3_spi_apps_clk_src = { 619 .cmd_rcgr = 0x0a8c, 620 .mnd_width = 8, 621 .hid_width = 5, 622 .parent_map = gcc_xo_gpll0_map, 623 .freq_tbl = ftbl_blsp2_qup3_4_spi_apps_clk_src, 624 .clkr.hw.init = &(struct clk_init_data){ 625 .name = "blsp2_qup3_spi_apps_clk_src", 626 .parent_data = gcc_xo_gpll0, 627 .num_parents = 2, 628 .ops = &clk_rcg2_ops, 629 }, 630 }; 631 632 static struct clk_rcg2 blsp2_qup4_i2c_apps_clk_src = { 633 .cmd_rcgr = 0x0b20, 634 .hid_width = 5, 635 .parent_map = gcc_xo_gpll0_map, 636 .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 637 .clkr.hw.init = &(struct clk_init_data){ 638 .name = "blsp2_qup4_i2c_apps_clk_src", 639 .parent_data = gcc_xo_gpll0, 640 .num_parents = 2, 641 .ops = &clk_rcg2_ops, 642 }, 643 }; 644 645 static struct clk_rcg2 blsp2_qup4_spi_apps_clk_src = { 646 .cmd_rcgr = 0x0b0c, 647 .mnd_width = 8, 648 .hid_width = 5, 649 .parent_map = gcc_xo_gpll0_map, 650 .freq_tbl = ftbl_blsp2_qup3_4_spi_apps_clk_src, 651 .clkr.hw.init = &(struct clk_init_data){ 652 .name = "blsp2_qup4_spi_apps_clk_src", 653 .parent_data = gcc_xo_gpll0, 654 .num_parents = 2, 655 .ops = &clk_rcg2_ops, 656 }, 657 }; 658 659 static struct clk_rcg2 blsp2_qup5_i2c_apps_clk_src = { 660 .cmd_rcgr = 0x0ba0, 661 .hid_width = 5, 662 .parent_map = gcc_xo_gpll0_map, 663 .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 664 .clkr.hw.init = &(struct clk_init_data){ 665 .name = "blsp2_qup5_i2c_apps_clk_src", 666 .parent_data = gcc_xo_gpll0, 667 .num_parents = 2, 668 .ops = &clk_rcg2_ops, 669 }, 670 }; 671 672 static struct clk_rcg2 blsp2_qup5_spi_apps_clk_src = { 673 .cmd_rcgr = 0x0b8c, 674 .mnd_width = 8, 675 .hid_width = 5, 676 .parent_map = gcc_xo_gpll0_map, 677 /* BLSP1 QUP1 and BLSP2 QUP5 use the same freqs */ 678 .freq_tbl = ftbl_blsp1_qup1_spi_apps_clk_src, 679 .clkr.hw.init = &(struct clk_init_data){ 680 .name = "blsp2_qup5_spi_apps_clk_src", 681 .parent_data = gcc_xo_gpll0, 682 .num_parents = 2, 683 .ops = &clk_rcg2_ops, 684 }, 685 }; 686 687 static struct clk_rcg2 blsp2_qup6_i2c_apps_clk_src = { 688 .cmd_rcgr = 0x0c20, 689 .hid_width = 5, 690 .parent_map = gcc_xo_gpll0_map, 691 .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 692 .clkr.hw.init = &(struct clk_init_data){ 693 .name = "blsp2_qup6_i2c_apps_clk_src", 694 .parent_data = gcc_xo_gpll0, 695 .num_parents = 2, 696 .ops = &clk_rcg2_ops, 697 }, 698 }; 699 700 static struct freq_tbl ftbl_blsp2_qup6_spi_apps_clk_src[] = { 701 F(960000, P_XO, 10, 1, 2), 702 F(4800000, P_XO, 4, 0, 0), 703 F(9600000, P_XO, 2, 0, 0), 704 F(15000000, P_GPLL0, 10, 1, 4), 705 F(19200000, P_XO, 1, 0, 0), 706 F(24000000, P_GPLL0, 12.5, 1, 2), 707 F(25000000, P_GPLL0, 12, 1, 2), 708 F(44440000, P_GPLL0, 13.5, 0, 0), 709 F(48000000, P_GPLL0, 12.5, 0, 0), 710 { } 711 }; 712 713 static struct clk_rcg2 blsp2_qup6_spi_apps_clk_src = { 714 .cmd_rcgr = 0x0c0c, 715 .mnd_width = 8, 716 .hid_width = 5, 717 .parent_map = gcc_xo_gpll0_map, 718 .freq_tbl = ftbl_blsp2_qup6_spi_apps_clk_src, 719 .clkr.hw.init = &(struct clk_init_data){ 720 .name = "blsp2_qup6_spi_apps_clk_src", 721 .parent_data = gcc_xo_gpll0, 722 .num_parents = 2, 723 .ops = &clk_rcg2_ops, 724 }, 725 }; 726 727 static struct clk_rcg2 blsp2_uart1_apps_clk_src = { 728 .cmd_rcgr = 0x09cc, 729 .mnd_width = 16, 730 .hid_width = 5, 731 .parent_map = gcc_xo_gpll0_map, 732 .freq_tbl = ftbl_blsp_uart_apps_clk_src, 733 .clkr.hw.init = &(struct clk_init_data){ 734 .name = "blsp2_uart1_apps_clk_src", 735 .parent_data = gcc_xo_gpll0, 736 .num_parents = 2, 737 .ops = &clk_rcg2_ops, 738 }, 739 }; 740 741 static struct clk_rcg2 blsp2_uart2_apps_clk_src = { 742 .cmd_rcgr = 0x0a4c, 743 .mnd_width = 16, 744 .hid_width = 5, 745 .parent_map = gcc_xo_gpll0_map, 746 .freq_tbl = ftbl_blsp_uart_apps_clk_src, 747 .clkr.hw.init = &(struct clk_init_data){ 748 .name = "blsp2_uart2_apps_clk_src", 749 .parent_data = gcc_xo_gpll0, 750 .num_parents = 2, 751 .ops = &clk_rcg2_ops, 752 }, 753 }; 754 755 static struct clk_rcg2 blsp2_uart3_apps_clk_src = { 756 .cmd_rcgr = 0x0acc, 757 .mnd_width = 16, 758 .hid_width = 5, 759 .parent_map = gcc_xo_gpll0_map, 760 .freq_tbl = ftbl_blsp_uart_apps_clk_src, 761 .clkr.hw.init = &(struct clk_init_data){ 762 .name = "blsp2_uart3_apps_clk_src", 763 .parent_data = gcc_xo_gpll0, 764 .num_parents = 2, 765 .ops = &clk_rcg2_ops, 766 }, 767 }; 768 769 static struct clk_rcg2 blsp2_uart4_apps_clk_src = { 770 .cmd_rcgr = 0x0b4c, 771 .mnd_width = 16, 772 .hid_width = 5, 773 .parent_map = gcc_xo_gpll0_map, 774 .freq_tbl = ftbl_blsp_uart_apps_clk_src, 775 .clkr.hw.init = &(struct clk_init_data){ 776 .name = "blsp2_uart4_apps_clk_src", 777 .parent_data = gcc_xo_gpll0, 778 .num_parents = 2, 779 .ops = &clk_rcg2_ops, 780 }, 781 }; 782 783 static struct clk_rcg2 blsp2_uart5_apps_clk_src = { 784 .cmd_rcgr = 0x0bcc, 785 .mnd_width = 16, 786 .hid_width = 5, 787 .parent_map = gcc_xo_gpll0_map, 788 .freq_tbl = ftbl_blsp_uart_apps_clk_src, 789 .clkr.hw.init = &(struct clk_init_data){ 790 .name = "blsp2_uart5_apps_clk_src", 791 .parent_data = gcc_xo_gpll0, 792 .num_parents = 2, 793 .ops = &clk_rcg2_ops, 794 }, 795 }; 796 797 static struct clk_rcg2 blsp2_uart6_apps_clk_src = { 798 .cmd_rcgr = 0x0c4c, 799 .mnd_width = 16, 800 .hid_width = 5, 801 .parent_map = gcc_xo_gpll0_map, 802 .freq_tbl = ftbl_blsp_uart_apps_clk_src, 803 .clkr.hw.init = &(struct clk_init_data){ 804 .name = "blsp2_uart6_apps_clk_src", 805 .parent_data = gcc_xo_gpll0, 806 .num_parents = 2, 807 .ops = &clk_rcg2_ops, 808 }, 809 }; 810 811 static struct freq_tbl ftbl_gp1_clk_src[] = { 812 F(19200000, P_XO, 1, 0, 0), 813 F(100000000, P_GPLL0, 6, 0, 0), 814 F(200000000, P_GPLL0, 3, 0, 0), 815 { } 816 }; 817 818 static struct clk_rcg2 gp1_clk_src = { 819 .cmd_rcgr = 0x1904, 820 .mnd_width = 8, 821 .hid_width = 5, 822 .parent_map = gcc_xo_gpll0_map, 823 .freq_tbl = ftbl_gp1_clk_src, 824 .clkr.hw.init = &(struct clk_init_data){ 825 .name = "gp1_clk_src", 826 .parent_data = gcc_xo_gpll0, 827 .num_parents = 2, 828 .ops = &clk_rcg2_ops, 829 }, 830 }; 831 832 static struct freq_tbl ftbl_gp2_clk_src[] = { 833 F(19200000, P_XO, 1, 0, 0), 834 F(100000000, P_GPLL0, 6, 0, 0), 835 F(200000000, P_GPLL0, 3, 0, 0), 836 { } 837 }; 838 839 static struct clk_rcg2 gp2_clk_src = { 840 .cmd_rcgr = 0x1944, 841 .mnd_width = 8, 842 .hid_width = 5, 843 .parent_map = gcc_xo_gpll0_map, 844 .freq_tbl = ftbl_gp2_clk_src, 845 .clkr.hw.init = &(struct clk_init_data){ 846 .name = "gp2_clk_src", 847 .parent_data = gcc_xo_gpll0, 848 .num_parents = 2, 849 .ops = &clk_rcg2_ops, 850 }, 851 }; 852 853 static struct freq_tbl ftbl_gp3_clk_src[] = { 854 F(19200000, P_XO, 1, 0, 0), 855 F(100000000, P_GPLL0, 6, 0, 0), 856 F(200000000, P_GPLL0, 3, 0, 0), 857 { } 858 }; 859 860 static struct clk_rcg2 gp3_clk_src = { 861 .cmd_rcgr = 0x1984, 862 .mnd_width = 8, 863 .hid_width = 5, 864 .parent_map = gcc_xo_gpll0_map, 865 .freq_tbl = ftbl_gp3_clk_src, 866 .clkr.hw.init = &(struct clk_init_data){ 867 .name = "gp3_clk_src", 868 .parent_data = gcc_xo_gpll0, 869 .num_parents = 2, 870 .ops = &clk_rcg2_ops, 871 }, 872 }; 873 874 static struct freq_tbl ftbl_pcie_0_aux_clk_src[] = { 875 F(1011000, P_XO, 1, 1, 19), 876 { } 877 }; 878 879 static struct clk_rcg2 pcie_0_aux_clk_src = { 880 .cmd_rcgr = 0x1b00, 881 .mnd_width = 8, 882 .hid_width = 5, 883 .freq_tbl = ftbl_pcie_0_aux_clk_src, 884 .clkr.hw.init = &(struct clk_init_data){ 885 .name = "pcie_0_aux_clk_src", 886 .parent_data = &(const struct clk_parent_data){ 887 .fw_name = "xo", 888 }, 889 .num_parents = 1, 890 .ops = &clk_rcg2_ops, 891 }, 892 }; 893 894 static struct freq_tbl ftbl_pcie_pipe_clk_src[] = { 895 F(125000000, P_XO, 1, 0, 0), 896 { } 897 }; 898 899 static struct clk_rcg2 pcie_0_pipe_clk_src = { 900 .cmd_rcgr = 0x1adc, 901 .hid_width = 5, 902 .freq_tbl = ftbl_pcie_pipe_clk_src, 903 .clkr.hw.init = &(struct clk_init_data){ 904 .name = "pcie_0_pipe_clk_src", 905 .parent_data = &(const struct clk_parent_data){ 906 .fw_name = "xo", 907 }, 908 .num_parents = 1, 909 .ops = &clk_rcg2_ops, 910 }, 911 }; 912 913 static struct freq_tbl ftbl_pcie_1_aux_clk_src[] = { 914 F(1011000, P_XO, 1, 1, 19), 915 { } 916 }; 917 918 static struct clk_rcg2 pcie_1_aux_clk_src = { 919 .cmd_rcgr = 0x1b80, 920 .mnd_width = 8, 921 .hid_width = 5, 922 .freq_tbl = ftbl_pcie_1_aux_clk_src, 923 .clkr.hw.init = &(struct clk_init_data){ 924 .name = "pcie_1_aux_clk_src", 925 .parent_data = &(const struct clk_parent_data){ 926 .fw_name = "xo", 927 }, 928 .num_parents = 1, 929 .ops = &clk_rcg2_ops, 930 }, 931 }; 932 933 static struct clk_rcg2 pcie_1_pipe_clk_src = { 934 .cmd_rcgr = 0x1b5c, 935 .hid_width = 5, 936 .freq_tbl = ftbl_pcie_pipe_clk_src, 937 .clkr.hw.init = &(struct clk_init_data){ 938 .name = "pcie_1_pipe_clk_src", 939 .parent_data = &(const struct clk_parent_data){ 940 .fw_name = "xo", 941 }, 942 .num_parents = 1, 943 .ops = &clk_rcg2_ops, 944 }, 945 }; 946 947 static struct freq_tbl ftbl_pdm2_clk_src[] = { 948 F(60000000, P_GPLL0, 10, 0, 0), 949 { } 950 }; 951 952 static struct clk_rcg2 pdm2_clk_src = { 953 .cmd_rcgr = 0x0cd0, 954 .hid_width = 5, 955 .parent_map = gcc_xo_gpll0_map, 956 .freq_tbl = ftbl_pdm2_clk_src, 957 .clkr.hw.init = &(struct clk_init_data){ 958 .name = "pdm2_clk_src", 959 .parent_data = gcc_xo_gpll0, 960 .num_parents = 2, 961 .ops = &clk_rcg2_ops, 962 }, 963 }; 964 965 static struct freq_tbl ftbl_sdcc1_apps_clk_src[] = { 966 F(144000, P_XO, 16, 3, 25), 967 F(400000, P_XO, 12, 1, 4), 968 F(20000000, P_GPLL0, 15, 1, 2), 969 F(25000000, P_GPLL0, 12, 1, 2), 970 F(50000000, P_GPLL0, 12, 0, 0), 971 F(100000000, P_GPLL0, 6, 0, 0), 972 F(192000000, P_GPLL4, 2, 0, 0), 973 F(384000000, P_GPLL4, 1, 0, 0), 974 { } 975 }; 976 977 static struct clk_rcg2 sdcc1_apps_clk_src = { 978 .cmd_rcgr = 0x04d0, 979 .mnd_width = 8, 980 .hid_width = 5, 981 .parent_map = gcc_xo_gpll0_gpll4_map, 982 .freq_tbl = ftbl_sdcc1_apps_clk_src, 983 .clkr.hw.init = &(struct clk_init_data){ 984 .name = "sdcc1_apps_clk_src", 985 .parent_data = gcc_xo_gpll0_gpll4, 986 .num_parents = 3, 987 .ops = &clk_rcg2_floor_ops, 988 }, 989 }; 990 991 static struct freq_tbl ftbl_sdcc2_4_apps_clk_src[] = { 992 F(144000, P_XO, 16, 3, 25), 993 F(400000, P_XO, 12, 1, 4), 994 F(20000000, P_GPLL0, 15, 1, 2), 995 F(25000000, P_GPLL0, 12, 1, 2), 996 F(50000000, P_GPLL0, 12, 0, 0), 997 F(100000000, P_GPLL0, 6, 0, 0), 998 F(200000000, P_GPLL0, 3, 0, 0), 999 { } 1000 }; 1001 1002 static struct clk_rcg2 sdcc2_apps_clk_src = { 1003 .cmd_rcgr = 0x0510, 1004 .mnd_width = 8, 1005 .hid_width = 5, 1006 .parent_map = gcc_xo_gpll0_map, 1007 .freq_tbl = ftbl_sdcc2_4_apps_clk_src, 1008 .clkr.hw.init = &(struct clk_init_data){ 1009 .name = "sdcc2_apps_clk_src", 1010 .parent_data = gcc_xo_gpll0, 1011 .num_parents = 2, 1012 .ops = &clk_rcg2_floor_ops, 1013 }, 1014 }; 1015 1016 static struct clk_rcg2 sdcc3_apps_clk_src = { 1017 .cmd_rcgr = 0x0550, 1018 .mnd_width = 8, 1019 .hid_width = 5, 1020 .parent_map = gcc_xo_gpll0_map, 1021 .freq_tbl = ftbl_sdcc2_4_apps_clk_src, 1022 .clkr.hw.init = &(struct clk_init_data){ 1023 .name = "sdcc3_apps_clk_src", 1024 .parent_data = gcc_xo_gpll0, 1025 .num_parents = 2, 1026 .ops = &clk_rcg2_floor_ops, 1027 }, 1028 }; 1029 1030 static struct clk_rcg2 sdcc4_apps_clk_src = { 1031 .cmd_rcgr = 0x0590, 1032 .mnd_width = 8, 1033 .hid_width = 5, 1034 .parent_map = gcc_xo_gpll0_map, 1035 .freq_tbl = ftbl_sdcc2_4_apps_clk_src, 1036 .clkr.hw.init = &(struct clk_init_data){ 1037 .name = "sdcc4_apps_clk_src", 1038 .parent_data = gcc_xo_gpll0, 1039 .num_parents = 2, 1040 .ops = &clk_rcg2_floor_ops, 1041 }, 1042 }; 1043 1044 static struct freq_tbl ftbl_tsif_ref_clk_src[] = { 1045 F(105500, P_XO, 1, 1, 182), 1046 { } 1047 }; 1048 1049 static struct clk_rcg2 tsif_ref_clk_src = { 1050 .cmd_rcgr = 0x0d90, 1051 .mnd_width = 8, 1052 .hid_width = 5, 1053 .freq_tbl = ftbl_tsif_ref_clk_src, 1054 .clkr.hw.init = &(struct clk_init_data){ 1055 .name = "tsif_ref_clk_src", 1056 .parent_data = &(const struct clk_parent_data){ 1057 .fw_name = "xo", 1058 }, 1059 .num_parents = 1, 1060 .ops = &clk_rcg2_ops, 1061 }, 1062 }; 1063 1064 static struct freq_tbl ftbl_usb30_mock_utmi_clk_src[] = { 1065 F(19200000, P_XO, 1, 0, 0), 1066 F(60000000, P_GPLL0, 10, 0, 0), 1067 { } 1068 }; 1069 1070 static struct clk_rcg2 usb30_mock_utmi_clk_src = { 1071 .cmd_rcgr = 0x03e8, 1072 .hid_width = 5, 1073 .parent_map = gcc_xo_gpll0_map, 1074 .freq_tbl = ftbl_usb30_mock_utmi_clk_src, 1075 .clkr.hw.init = &(struct clk_init_data){ 1076 .name = "usb30_mock_utmi_clk_src", 1077 .parent_data = gcc_xo_gpll0, 1078 .num_parents = 2, 1079 .ops = &clk_rcg2_ops, 1080 }, 1081 }; 1082 1083 static struct freq_tbl ftbl_usb3_phy_aux_clk_src[] = { 1084 F(1200000, P_XO, 16, 0, 0), 1085 { } 1086 }; 1087 1088 static struct clk_rcg2 usb3_phy_aux_clk_src = { 1089 .cmd_rcgr = 0x1414, 1090 .hid_width = 5, 1091 .freq_tbl = ftbl_usb3_phy_aux_clk_src, 1092 .clkr.hw.init = &(struct clk_init_data){ 1093 .name = "usb3_phy_aux_clk_src", 1094 .parent_data = &(const struct clk_parent_data){ 1095 .fw_name = "xo", 1096 }, 1097 .num_parents = 1, 1098 .ops = &clk_rcg2_ops, 1099 }, 1100 }; 1101 1102 static struct freq_tbl ftbl_usb_hs_system_clk_src[] = { 1103 F(75000000, P_GPLL0, 8, 0, 0), 1104 { } 1105 }; 1106 1107 static struct clk_rcg2 usb_hs_system_clk_src = { 1108 .cmd_rcgr = 0x0490, 1109 .hid_width = 5, 1110 .parent_map = gcc_xo_gpll0_map, 1111 .freq_tbl = ftbl_usb_hs_system_clk_src, 1112 .clkr.hw.init = &(struct clk_init_data){ 1113 .name = "usb_hs_system_clk_src", 1114 .parent_data = gcc_xo_gpll0, 1115 .num_parents = 2, 1116 .ops = &clk_rcg2_ops, 1117 }, 1118 }; 1119 1120 static struct clk_branch gcc_blsp1_ahb_clk = { 1121 .halt_reg = 0x05c4, 1122 .halt_check = BRANCH_HALT_VOTED, 1123 .clkr = { 1124 .enable_reg = 0x1484, 1125 .enable_mask = BIT(17), 1126 .hw.init = &(struct clk_init_data){ 1127 .name = "gcc_blsp1_ahb_clk", 1128 .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 1129 .num_parents = 1, 1130 .ops = &clk_branch2_ops, 1131 }, 1132 }, 1133 }; 1134 1135 static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = { 1136 .halt_reg = 0x0648, 1137 .clkr = { 1138 .enable_reg = 0x0648, 1139 .enable_mask = BIT(0), 1140 .hw.init = &(struct clk_init_data){ 1141 .name = "gcc_blsp1_qup1_i2c_apps_clk", 1142 .parent_hws = (const struct clk_hw *[]){ &blsp1_qup1_i2c_apps_clk_src.clkr.hw }, 1143 .num_parents = 1, 1144 .flags = CLK_SET_RATE_PARENT, 1145 .ops = &clk_branch2_ops, 1146 }, 1147 }, 1148 }; 1149 1150 static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = { 1151 .halt_reg = 0x0644, 1152 .clkr = { 1153 .enable_reg = 0x0644, 1154 .enable_mask = BIT(0), 1155 .hw.init = &(struct clk_init_data){ 1156 .name = "gcc_blsp1_qup1_spi_apps_clk", 1157 .parent_hws = (const struct clk_hw *[]){ &blsp1_qup1_spi_apps_clk_src.clkr.hw }, 1158 .num_parents = 1, 1159 .flags = CLK_SET_RATE_PARENT, 1160 .ops = &clk_branch2_ops, 1161 }, 1162 }, 1163 }; 1164 1165 static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = { 1166 .halt_reg = 0x06c8, 1167 .clkr = { 1168 .enable_reg = 0x06c8, 1169 .enable_mask = BIT(0), 1170 .hw.init = &(struct clk_init_data){ 1171 .name = "gcc_blsp1_qup2_i2c_apps_clk", 1172 .parent_hws = (const struct clk_hw *[]){ &blsp1_qup2_i2c_apps_clk_src.clkr.hw }, 1173 .num_parents = 1, 1174 .flags = CLK_SET_RATE_PARENT, 1175 .ops = &clk_branch2_ops, 1176 }, 1177 }, 1178 }; 1179 1180 static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = { 1181 .halt_reg = 0x06c4, 1182 .clkr = { 1183 .enable_reg = 0x06c4, 1184 .enable_mask = BIT(0), 1185 .hw.init = &(struct clk_init_data){ 1186 .name = "gcc_blsp1_qup2_spi_apps_clk", 1187 .parent_hws = (const struct clk_hw *[]){ &blsp1_qup2_spi_apps_clk_src.clkr.hw }, 1188 .num_parents = 1, 1189 .flags = CLK_SET_RATE_PARENT, 1190 .ops = &clk_branch2_ops, 1191 }, 1192 }, 1193 }; 1194 1195 static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = { 1196 .halt_reg = 0x0748, 1197 .clkr = { 1198 .enable_reg = 0x0748, 1199 .enable_mask = BIT(0), 1200 .hw.init = &(struct clk_init_data){ 1201 .name = "gcc_blsp1_qup3_i2c_apps_clk", 1202 .parent_hws = (const struct clk_hw *[]){ &blsp1_qup3_i2c_apps_clk_src.clkr.hw }, 1203 .num_parents = 1, 1204 .flags = CLK_SET_RATE_PARENT, 1205 .ops = &clk_branch2_ops, 1206 }, 1207 }, 1208 }; 1209 1210 static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = { 1211 .halt_reg = 0x0744, 1212 .clkr = { 1213 .enable_reg = 0x0744, 1214 .enable_mask = BIT(0), 1215 .hw.init = &(struct clk_init_data){ 1216 .name = "gcc_blsp1_qup3_spi_apps_clk", 1217 .parent_hws = (const struct clk_hw *[]){ &blsp1_qup3_spi_apps_clk_src.clkr.hw }, 1218 .num_parents = 1, 1219 .flags = CLK_SET_RATE_PARENT, 1220 .ops = &clk_branch2_ops, 1221 }, 1222 }, 1223 }; 1224 1225 static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = { 1226 .halt_reg = 0x07c8, 1227 .clkr = { 1228 .enable_reg = 0x07c8, 1229 .enable_mask = BIT(0), 1230 .hw.init = &(struct clk_init_data){ 1231 .name = "gcc_blsp1_qup4_i2c_apps_clk", 1232 .parent_hws = (const struct clk_hw *[]){ &blsp1_qup4_i2c_apps_clk_src.clkr.hw }, 1233 .num_parents = 1, 1234 .flags = CLK_SET_RATE_PARENT, 1235 .ops = &clk_branch2_ops, 1236 }, 1237 }, 1238 }; 1239 1240 static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = { 1241 .halt_reg = 0x07c4, 1242 .clkr = { 1243 .enable_reg = 0x07c4, 1244 .enable_mask = BIT(0), 1245 .hw.init = &(struct clk_init_data){ 1246 .name = "gcc_blsp1_qup4_spi_apps_clk", 1247 .parent_hws = (const struct clk_hw *[]){ &blsp1_qup4_spi_apps_clk_src.clkr.hw }, 1248 .num_parents = 1, 1249 .flags = CLK_SET_RATE_PARENT, 1250 .ops = &clk_branch2_ops, 1251 }, 1252 }, 1253 }; 1254 1255 static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = { 1256 .halt_reg = 0x0848, 1257 .clkr = { 1258 .enable_reg = 0x0848, 1259 .enable_mask = BIT(0), 1260 .hw.init = &(struct clk_init_data){ 1261 .name = "gcc_blsp1_qup5_i2c_apps_clk", 1262 .parent_hws = (const struct clk_hw *[]){ &blsp1_qup5_i2c_apps_clk_src.clkr.hw }, 1263 .num_parents = 1, 1264 .flags = CLK_SET_RATE_PARENT, 1265 .ops = &clk_branch2_ops, 1266 }, 1267 }, 1268 }; 1269 1270 static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = { 1271 .halt_reg = 0x0844, 1272 .clkr = { 1273 .enable_reg = 0x0844, 1274 .enable_mask = BIT(0), 1275 .hw.init = &(struct clk_init_data){ 1276 .name = "gcc_blsp1_qup5_spi_apps_clk", 1277 .parent_hws = (const struct clk_hw *[]){ &blsp1_qup5_spi_apps_clk_src.clkr.hw }, 1278 .num_parents = 1, 1279 .flags = CLK_SET_RATE_PARENT, 1280 .ops = &clk_branch2_ops, 1281 }, 1282 }, 1283 }; 1284 1285 static struct clk_branch gcc_blsp1_qup6_i2c_apps_clk = { 1286 .halt_reg = 0x08c8, 1287 .clkr = { 1288 .enable_reg = 0x08c8, 1289 .enable_mask = BIT(0), 1290 .hw.init = &(struct clk_init_data){ 1291 .name = "gcc_blsp1_qup6_i2c_apps_clk", 1292 .parent_hws = (const struct clk_hw *[]){ &blsp1_qup6_i2c_apps_clk_src.clkr.hw }, 1293 .num_parents = 1, 1294 .flags = CLK_SET_RATE_PARENT, 1295 .ops = &clk_branch2_ops, 1296 }, 1297 }, 1298 }; 1299 1300 static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = { 1301 .halt_reg = 0x08c4, 1302 .clkr = { 1303 .enable_reg = 0x08c4, 1304 .enable_mask = BIT(0), 1305 .hw.init = &(struct clk_init_data){ 1306 .name = "gcc_blsp1_qup6_spi_apps_clk", 1307 .parent_hws = (const struct clk_hw *[]){ &blsp1_qup6_spi_apps_clk_src.clkr.hw }, 1308 .num_parents = 1, 1309 .flags = CLK_SET_RATE_PARENT, 1310 .ops = &clk_branch2_ops, 1311 }, 1312 }, 1313 }; 1314 1315 static struct clk_branch gcc_blsp1_uart1_apps_clk = { 1316 .halt_reg = 0x0684, 1317 .clkr = { 1318 .enable_reg = 0x0684, 1319 .enable_mask = BIT(0), 1320 .hw.init = &(struct clk_init_data){ 1321 .name = "gcc_blsp1_uart1_apps_clk", 1322 .parent_hws = (const struct clk_hw *[]){ &blsp1_uart1_apps_clk_src.clkr.hw }, 1323 .num_parents = 1, 1324 .flags = CLK_SET_RATE_PARENT, 1325 .ops = &clk_branch2_ops, 1326 }, 1327 }, 1328 }; 1329 1330 static struct clk_branch gcc_blsp1_uart2_apps_clk = { 1331 .halt_reg = 0x0704, 1332 .clkr = { 1333 .enable_reg = 0x0704, 1334 .enable_mask = BIT(0), 1335 .hw.init = &(struct clk_init_data){ 1336 .name = "gcc_blsp1_uart2_apps_clk", 1337 .parent_hws = (const struct clk_hw *[]){ &blsp1_uart2_apps_clk_src.clkr.hw }, 1338 .num_parents = 1, 1339 .flags = CLK_SET_RATE_PARENT, 1340 .ops = &clk_branch2_ops, 1341 }, 1342 }, 1343 }; 1344 1345 static struct clk_branch gcc_blsp1_uart3_apps_clk = { 1346 .halt_reg = 0x0784, 1347 .clkr = { 1348 .enable_reg = 0x0784, 1349 .enable_mask = BIT(0), 1350 .hw.init = &(struct clk_init_data){ 1351 .name = "gcc_blsp1_uart3_apps_clk", 1352 .parent_hws = (const struct clk_hw *[]){ &blsp1_uart3_apps_clk_src.clkr.hw }, 1353 .num_parents = 1, 1354 .flags = CLK_SET_RATE_PARENT, 1355 .ops = &clk_branch2_ops, 1356 }, 1357 }, 1358 }; 1359 1360 static struct clk_branch gcc_blsp1_uart4_apps_clk = { 1361 .halt_reg = 0x0804, 1362 .clkr = { 1363 .enable_reg = 0x0804, 1364 .enable_mask = BIT(0), 1365 .hw.init = &(struct clk_init_data){ 1366 .name = "gcc_blsp1_uart4_apps_clk", 1367 .parent_hws = (const struct clk_hw *[]){ &blsp1_uart4_apps_clk_src.clkr.hw }, 1368 .num_parents = 1, 1369 .flags = CLK_SET_RATE_PARENT, 1370 .ops = &clk_branch2_ops, 1371 }, 1372 }, 1373 }; 1374 1375 static struct clk_branch gcc_blsp1_uart5_apps_clk = { 1376 .halt_reg = 0x0884, 1377 .clkr = { 1378 .enable_reg = 0x0884, 1379 .enable_mask = BIT(0), 1380 .hw.init = &(struct clk_init_data){ 1381 .name = "gcc_blsp1_uart5_apps_clk", 1382 .parent_hws = (const struct clk_hw *[]){ &blsp1_uart5_apps_clk_src.clkr.hw }, 1383 .num_parents = 1, 1384 .flags = CLK_SET_RATE_PARENT, 1385 .ops = &clk_branch2_ops, 1386 }, 1387 }, 1388 }; 1389 1390 static struct clk_branch gcc_blsp1_uart6_apps_clk = { 1391 .halt_reg = 0x0904, 1392 .clkr = { 1393 .enable_reg = 0x0904, 1394 .enable_mask = BIT(0), 1395 .hw.init = &(struct clk_init_data){ 1396 .name = "gcc_blsp1_uart6_apps_clk", 1397 .parent_hws = (const struct clk_hw *[]){ &blsp1_uart6_apps_clk_src.clkr.hw }, 1398 .num_parents = 1, 1399 .flags = CLK_SET_RATE_PARENT, 1400 .ops = &clk_branch2_ops, 1401 }, 1402 }, 1403 }; 1404 1405 static struct clk_branch gcc_blsp2_ahb_clk = { 1406 .halt_reg = 0x0944, 1407 .halt_check = BRANCH_HALT_VOTED, 1408 .clkr = { 1409 .enable_reg = 0x1484, 1410 .enable_mask = BIT(15), 1411 .hw.init = &(struct clk_init_data){ 1412 .name = "gcc_blsp2_ahb_clk", 1413 .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 1414 .num_parents = 1, 1415 .ops = &clk_branch2_ops, 1416 }, 1417 }, 1418 }; 1419 1420 static struct clk_branch gcc_blsp2_qup1_i2c_apps_clk = { 1421 .halt_reg = 0x0988, 1422 .clkr = { 1423 .enable_reg = 0x0988, 1424 .enable_mask = BIT(0), 1425 .hw.init = &(struct clk_init_data){ 1426 .name = "gcc_blsp2_qup1_i2c_apps_clk", 1427 .parent_hws = (const struct clk_hw *[]){ &blsp2_qup1_i2c_apps_clk_src.clkr.hw }, 1428 .num_parents = 1, 1429 .flags = CLK_SET_RATE_PARENT, 1430 .ops = &clk_branch2_ops, 1431 }, 1432 }, 1433 }; 1434 1435 static struct clk_branch gcc_blsp2_qup1_spi_apps_clk = { 1436 .halt_reg = 0x0984, 1437 .clkr = { 1438 .enable_reg = 0x0984, 1439 .enable_mask = BIT(0), 1440 .hw.init = &(struct clk_init_data){ 1441 .name = "gcc_blsp2_qup1_spi_apps_clk", 1442 .parent_hws = (const struct clk_hw *[]){ &blsp2_qup1_spi_apps_clk_src.clkr.hw }, 1443 .num_parents = 1, 1444 .flags = CLK_SET_RATE_PARENT, 1445 .ops = &clk_branch2_ops, 1446 }, 1447 }, 1448 }; 1449 1450 static struct clk_branch gcc_blsp2_qup2_i2c_apps_clk = { 1451 .halt_reg = 0x0a08, 1452 .clkr = { 1453 .enable_reg = 0x0a08, 1454 .enable_mask = BIT(0), 1455 .hw.init = &(struct clk_init_data){ 1456 .name = "gcc_blsp2_qup2_i2c_apps_clk", 1457 .parent_hws = (const struct clk_hw *[]){ &blsp2_qup2_i2c_apps_clk_src.clkr.hw }, 1458 .num_parents = 1, 1459 .flags = CLK_SET_RATE_PARENT, 1460 .ops = &clk_branch2_ops, 1461 }, 1462 }, 1463 }; 1464 1465 static struct clk_branch gcc_blsp2_qup2_spi_apps_clk = { 1466 .halt_reg = 0x0a04, 1467 .clkr = { 1468 .enable_reg = 0x0a04, 1469 .enable_mask = BIT(0), 1470 .hw.init = &(struct clk_init_data){ 1471 .name = "gcc_blsp2_qup2_spi_apps_clk", 1472 .parent_hws = (const struct clk_hw *[]){ &blsp2_qup2_spi_apps_clk_src.clkr.hw }, 1473 .num_parents = 1, 1474 .flags = CLK_SET_RATE_PARENT, 1475 .ops = &clk_branch2_ops, 1476 }, 1477 }, 1478 }; 1479 1480 static struct clk_branch gcc_blsp2_qup3_i2c_apps_clk = { 1481 .halt_reg = 0x0a88, 1482 .clkr = { 1483 .enable_reg = 0x0a88, 1484 .enable_mask = BIT(0), 1485 .hw.init = &(struct clk_init_data){ 1486 .name = "gcc_blsp2_qup3_i2c_apps_clk", 1487 .parent_hws = (const struct clk_hw *[]){ &blsp2_qup3_i2c_apps_clk_src.clkr.hw }, 1488 .num_parents = 1, 1489 .flags = CLK_SET_RATE_PARENT, 1490 .ops = &clk_branch2_ops, 1491 }, 1492 }, 1493 }; 1494 1495 static struct clk_branch gcc_blsp2_qup3_spi_apps_clk = { 1496 .halt_reg = 0x0a84, 1497 .clkr = { 1498 .enable_reg = 0x0a84, 1499 .enable_mask = BIT(0), 1500 .hw.init = &(struct clk_init_data){ 1501 .name = "gcc_blsp2_qup3_spi_apps_clk", 1502 .parent_hws = (const struct clk_hw *[]){ &blsp2_qup3_spi_apps_clk_src.clkr.hw }, 1503 .num_parents = 1, 1504 .flags = CLK_SET_RATE_PARENT, 1505 .ops = &clk_branch2_ops, 1506 }, 1507 }, 1508 }; 1509 1510 static struct clk_branch gcc_blsp2_qup4_i2c_apps_clk = { 1511 .halt_reg = 0x0b08, 1512 .clkr = { 1513 .enable_reg = 0x0b08, 1514 .enable_mask = BIT(0), 1515 .hw.init = &(struct clk_init_data){ 1516 .name = "gcc_blsp2_qup4_i2c_apps_clk", 1517 .parent_hws = (const struct clk_hw *[]){ &blsp2_qup4_i2c_apps_clk_src.clkr.hw }, 1518 .num_parents = 1, 1519 .flags = CLK_SET_RATE_PARENT, 1520 .ops = &clk_branch2_ops, 1521 }, 1522 }, 1523 }; 1524 1525 static struct clk_branch gcc_blsp2_qup4_spi_apps_clk = { 1526 .halt_reg = 0x0b04, 1527 .clkr = { 1528 .enable_reg = 0x0b04, 1529 .enable_mask = BIT(0), 1530 .hw.init = &(struct clk_init_data){ 1531 .name = "gcc_blsp2_qup4_spi_apps_clk", 1532 .parent_hws = (const struct clk_hw *[]){ &blsp2_qup4_spi_apps_clk_src.clkr.hw }, 1533 .num_parents = 1, 1534 .flags = CLK_SET_RATE_PARENT, 1535 .ops = &clk_branch2_ops, 1536 }, 1537 }, 1538 }; 1539 1540 static struct clk_branch gcc_blsp2_qup5_i2c_apps_clk = { 1541 .halt_reg = 0x0b88, 1542 .clkr = { 1543 .enable_reg = 0x0b88, 1544 .enable_mask = BIT(0), 1545 .hw.init = &(struct clk_init_data){ 1546 .name = "gcc_blsp2_qup5_i2c_apps_clk", 1547 .parent_hws = (const struct clk_hw *[]){ &blsp2_qup5_i2c_apps_clk_src.clkr.hw }, 1548 .num_parents = 1, 1549 .flags = CLK_SET_RATE_PARENT, 1550 .ops = &clk_branch2_ops, 1551 }, 1552 }, 1553 }; 1554 1555 static struct clk_branch gcc_blsp2_qup5_spi_apps_clk = { 1556 .halt_reg = 0x0b84, 1557 .clkr = { 1558 .enable_reg = 0x0b84, 1559 .enable_mask = BIT(0), 1560 .hw.init = &(struct clk_init_data){ 1561 .name = "gcc_blsp2_qup5_spi_apps_clk", 1562 .parent_hws = (const struct clk_hw *[]){ &blsp2_qup5_spi_apps_clk_src.clkr.hw }, 1563 .num_parents = 1, 1564 .flags = CLK_SET_RATE_PARENT, 1565 .ops = &clk_branch2_ops, 1566 }, 1567 }, 1568 }; 1569 1570 static struct clk_branch gcc_blsp2_qup6_i2c_apps_clk = { 1571 .halt_reg = 0x0c08, 1572 .clkr = { 1573 .enable_reg = 0x0c08, 1574 .enable_mask = BIT(0), 1575 .hw.init = &(struct clk_init_data){ 1576 .name = "gcc_blsp2_qup6_i2c_apps_clk", 1577 .parent_hws = (const struct clk_hw *[]){ &blsp2_qup6_i2c_apps_clk_src.clkr.hw }, 1578 .num_parents = 1, 1579 .flags = CLK_SET_RATE_PARENT, 1580 .ops = &clk_branch2_ops, 1581 }, 1582 }, 1583 }; 1584 1585 static struct clk_branch gcc_blsp2_qup6_spi_apps_clk = { 1586 .halt_reg = 0x0c04, 1587 .clkr = { 1588 .enable_reg = 0x0c04, 1589 .enable_mask = BIT(0), 1590 .hw.init = &(struct clk_init_data){ 1591 .name = "gcc_blsp2_qup6_spi_apps_clk", 1592 .parent_hws = (const struct clk_hw *[]){ &blsp2_qup6_spi_apps_clk_src.clkr.hw }, 1593 .num_parents = 1, 1594 .flags = CLK_SET_RATE_PARENT, 1595 .ops = &clk_branch2_ops, 1596 }, 1597 }, 1598 }; 1599 1600 static struct clk_branch gcc_blsp2_uart1_apps_clk = { 1601 .halt_reg = 0x09c4, 1602 .clkr = { 1603 .enable_reg = 0x09c4, 1604 .enable_mask = BIT(0), 1605 .hw.init = &(struct clk_init_data){ 1606 .name = "gcc_blsp2_uart1_apps_clk", 1607 .parent_hws = (const struct clk_hw *[]){ &blsp2_uart1_apps_clk_src.clkr.hw }, 1608 .num_parents = 1, 1609 .flags = CLK_SET_RATE_PARENT, 1610 .ops = &clk_branch2_ops, 1611 }, 1612 }, 1613 }; 1614 1615 static struct clk_branch gcc_blsp2_uart2_apps_clk = { 1616 .halt_reg = 0x0a44, 1617 .clkr = { 1618 .enable_reg = 0x0a44, 1619 .enable_mask = BIT(0), 1620 .hw.init = &(struct clk_init_data){ 1621 .name = "gcc_blsp2_uart2_apps_clk", 1622 .parent_hws = (const struct clk_hw *[]){ &blsp2_uart2_apps_clk_src.clkr.hw }, 1623 .num_parents = 1, 1624 .flags = CLK_SET_RATE_PARENT, 1625 .ops = &clk_branch2_ops, 1626 }, 1627 }, 1628 }; 1629 1630 static struct clk_branch gcc_blsp2_uart3_apps_clk = { 1631 .halt_reg = 0x0ac4, 1632 .clkr = { 1633 .enable_reg = 0x0ac4, 1634 .enable_mask = BIT(0), 1635 .hw.init = &(struct clk_init_data){ 1636 .name = "gcc_blsp2_uart3_apps_clk", 1637 .parent_hws = (const struct clk_hw *[]){ &blsp2_uart3_apps_clk_src.clkr.hw }, 1638 .num_parents = 1, 1639 .flags = CLK_SET_RATE_PARENT, 1640 .ops = &clk_branch2_ops, 1641 }, 1642 }, 1643 }; 1644 1645 static struct clk_branch gcc_blsp2_uart4_apps_clk = { 1646 .halt_reg = 0x0b44, 1647 .clkr = { 1648 .enable_reg = 0x0b44, 1649 .enable_mask = BIT(0), 1650 .hw.init = &(struct clk_init_data){ 1651 .name = "gcc_blsp2_uart4_apps_clk", 1652 .parent_hws = (const struct clk_hw *[]){ &blsp2_uart4_apps_clk_src.clkr.hw }, 1653 .num_parents = 1, 1654 .flags = CLK_SET_RATE_PARENT, 1655 .ops = &clk_branch2_ops, 1656 }, 1657 }, 1658 }; 1659 1660 static struct clk_branch gcc_blsp2_uart5_apps_clk = { 1661 .halt_reg = 0x0bc4, 1662 .clkr = { 1663 .enable_reg = 0x0bc4, 1664 .enable_mask = BIT(0), 1665 .hw.init = &(struct clk_init_data){ 1666 .name = "gcc_blsp2_uart5_apps_clk", 1667 .parent_hws = (const struct clk_hw *[]){ &blsp2_uart5_apps_clk_src.clkr.hw }, 1668 .num_parents = 1, 1669 .flags = CLK_SET_RATE_PARENT, 1670 .ops = &clk_branch2_ops, 1671 }, 1672 }, 1673 }; 1674 1675 static struct clk_branch gcc_blsp2_uart6_apps_clk = { 1676 .halt_reg = 0x0c44, 1677 .clkr = { 1678 .enable_reg = 0x0c44, 1679 .enable_mask = BIT(0), 1680 .hw.init = &(struct clk_init_data){ 1681 .name = "gcc_blsp2_uart6_apps_clk", 1682 .parent_hws = (const struct clk_hw *[]){ &blsp2_uart6_apps_clk_src.clkr.hw }, 1683 .num_parents = 1, 1684 .flags = CLK_SET_RATE_PARENT, 1685 .ops = &clk_branch2_ops, 1686 }, 1687 }, 1688 }; 1689 1690 static struct clk_branch gcc_gp1_clk = { 1691 .halt_reg = 0x1900, 1692 .clkr = { 1693 .enable_reg = 0x1900, 1694 .enable_mask = BIT(0), 1695 .hw.init = &(struct clk_init_data){ 1696 .name = "gcc_gp1_clk", 1697 .parent_hws = (const struct clk_hw *[]){ &gp1_clk_src.clkr.hw }, 1698 .num_parents = 1, 1699 .flags = CLK_SET_RATE_PARENT, 1700 .ops = &clk_branch2_ops, 1701 }, 1702 }, 1703 }; 1704 1705 static struct clk_branch gcc_gp2_clk = { 1706 .halt_reg = 0x1940, 1707 .clkr = { 1708 .enable_reg = 0x1940, 1709 .enable_mask = BIT(0), 1710 .hw.init = &(struct clk_init_data){ 1711 .name = "gcc_gp2_clk", 1712 .parent_hws = (const struct clk_hw *[]){ &gp2_clk_src.clkr.hw }, 1713 .num_parents = 1, 1714 .flags = CLK_SET_RATE_PARENT, 1715 .ops = &clk_branch2_ops, 1716 }, 1717 }, 1718 }; 1719 1720 static struct clk_branch gcc_gp3_clk = { 1721 .halt_reg = 0x1980, 1722 .clkr = { 1723 .enable_reg = 0x1980, 1724 .enable_mask = BIT(0), 1725 .hw.init = &(struct clk_init_data){ 1726 .name = "gcc_gp3_clk", 1727 .parent_hws = (const struct clk_hw *[]){ &gp3_clk_src.clkr.hw }, 1728 .num_parents = 1, 1729 .flags = CLK_SET_RATE_PARENT, 1730 .ops = &clk_branch2_ops, 1731 }, 1732 }, 1733 }; 1734 1735 static struct clk_branch gcc_lpass_q6_axi_clk = { 1736 .halt_reg = 0x0280, 1737 .clkr = { 1738 .enable_reg = 0x0280, 1739 .enable_mask = BIT(0), 1740 .hw.init = &(struct clk_init_data){ 1741 .name = "gcc_lpass_q6_axi_clk", 1742 .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 1743 .num_parents = 1, 1744 .ops = &clk_branch2_ops, 1745 }, 1746 }, 1747 }; 1748 1749 static struct clk_branch gcc_mss_q6_bimc_axi_clk = { 1750 .halt_reg = 0x0284, 1751 .clkr = { 1752 .enable_reg = 0x0284, 1753 .enable_mask = BIT(0), 1754 .hw.init = &(struct clk_init_data){ 1755 .name = "gcc_mss_q6_bimc_axi_clk", 1756 .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 1757 .num_parents = 1, 1758 .ops = &clk_branch2_ops, 1759 }, 1760 }, 1761 }; 1762 1763 static struct clk_branch gcc_pcie_0_aux_clk = { 1764 .halt_reg = 0x1ad4, 1765 .clkr = { 1766 .enable_reg = 0x1ad4, 1767 .enable_mask = BIT(0), 1768 .hw.init = &(struct clk_init_data){ 1769 .name = "gcc_pcie_0_aux_clk", 1770 .parent_hws = (const struct clk_hw *[]){ &pcie_0_aux_clk_src.clkr.hw }, 1771 .num_parents = 1, 1772 .flags = CLK_SET_RATE_PARENT, 1773 .ops = &clk_branch2_ops, 1774 }, 1775 }, 1776 }; 1777 1778 static struct clk_branch gcc_pcie_0_cfg_ahb_clk = { 1779 .halt_reg = 0x1ad0, 1780 .clkr = { 1781 .enable_reg = 0x1ad0, 1782 .enable_mask = BIT(0), 1783 .hw.init = &(struct clk_init_data){ 1784 .name = "gcc_pcie_0_cfg_ahb_clk", 1785 .parent_hws = (const struct clk_hw *[]){ &config_noc_clk_src.clkr.hw }, 1786 .num_parents = 1, 1787 .flags = CLK_SET_RATE_PARENT, 1788 .ops = &clk_branch2_ops, 1789 }, 1790 }, 1791 }; 1792 1793 static struct clk_branch gcc_pcie_0_mstr_axi_clk = { 1794 .halt_reg = 0x1acc, 1795 .clkr = { 1796 .enable_reg = 0x1acc, 1797 .enable_mask = BIT(0), 1798 .hw.init = &(struct clk_init_data){ 1799 .name = "gcc_pcie_0_mstr_axi_clk", 1800 .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 1801 .num_parents = 1, 1802 .flags = CLK_SET_RATE_PARENT, 1803 .ops = &clk_branch2_ops, 1804 }, 1805 }, 1806 }; 1807 1808 static struct clk_branch gcc_pcie_0_pipe_clk = { 1809 .halt_reg = 0x1ad8, 1810 .halt_check = BRANCH_HALT_DELAY, 1811 .clkr = { 1812 .enable_reg = 0x1ad8, 1813 .enable_mask = BIT(0), 1814 .hw.init = &(struct clk_init_data){ 1815 .name = "gcc_pcie_0_pipe_clk", 1816 .parent_hws = (const struct clk_hw *[]){ &pcie_0_pipe_clk_src.clkr.hw }, 1817 .num_parents = 1, 1818 .flags = CLK_SET_RATE_PARENT, 1819 .ops = &clk_branch2_ops, 1820 }, 1821 }, 1822 }; 1823 1824 static struct clk_branch gcc_pcie_0_slv_axi_clk = { 1825 .halt_reg = 0x1ac8, 1826 .halt_check = BRANCH_HALT_DELAY, 1827 .clkr = { 1828 .enable_reg = 0x1ac8, 1829 .enable_mask = BIT(0), 1830 .hw.init = &(struct clk_init_data){ 1831 .name = "gcc_pcie_0_slv_axi_clk", 1832 .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 1833 .num_parents = 1, 1834 .flags = CLK_SET_RATE_PARENT, 1835 .ops = &clk_branch2_ops, 1836 }, 1837 }, 1838 }; 1839 1840 static struct clk_branch gcc_pcie_1_aux_clk = { 1841 .halt_reg = 0x1b54, 1842 .clkr = { 1843 .enable_reg = 0x1b54, 1844 .enable_mask = BIT(0), 1845 .hw.init = &(struct clk_init_data){ 1846 .name = "gcc_pcie_1_aux_clk", 1847 .parent_hws = (const struct clk_hw *[]){ &pcie_1_aux_clk_src.clkr.hw }, 1848 .num_parents = 1, 1849 .flags = CLK_SET_RATE_PARENT, 1850 .ops = &clk_branch2_ops, 1851 }, 1852 }, 1853 }; 1854 1855 static struct clk_branch gcc_pcie_1_cfg_ahb_clk = { 1856 .halt_reg = 0x1b54, 1857 .clkr = { 1858 .enable_reg = 0x1b54, 1859 .enable_mask = BIT(0), 1860 .hw.init = &(struct clk_init_data){ 1861 .name = "gcc_pcie_1_cfg_ahb_clk", 1862 .parent_hws = (const struct clk_hw *[]){ &config_noc_clk_src.clkr.hw }, 1863 .num_parents = 1, 1864 .flags = CLK_SET_RATE_PARENT, 1865 .ops = &clk_branch2_ops, 1866 }, 1867 }, 1868 }; 1869 1870 static struct clk_branch gcc_pcie_1_mstr_axi_clk = { 1871 .halt_reg = 0x1b50, 1872 .clkr = { 1873 .enable_reg = 0x1b50, 1874 .enable_mask = BIT(0), 1875 .hw.init = &(struct clk_init_data){ 1876 .name = "gcc_pcie_1_mstr_axi_clk", 1877 .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 1878 .num_parents = 1, 1879 .flags = CLK_SET_RATE_PARENT, 1880 .ops = &clk_branch2_ops, 1881 }, 1882 }, 1883 }; 1884 1885 static struct clk_branch gcc_pcie_1_pipe_clk = { 1886 .halt_reg = 0x1b58, 1887 .halt_check = BRANCH_HALT_DELAY, 1888 .clkr = { 1889 .enable_reg = 0x1b58, 1890 .enable_mask = BIT(0), 1891 .hw.init = &(struct clk_init_data){ 1892 .name = "gcc_pcie_1_pipe_clk", 1893 .parent_hws = (const struct clk_hw *[]){ &pcie_1_pipe_clk_src.clkr.hw }, 1894 .num_parents = 1, 1895 .flags = CLK_SET_RATE_PARENT, 1896 .ops = &clk_branch2_ops, 1897 }, 1898 }, 1899 }; 1900 1901 static struct clk_branch gcc_pcie_1_slv_axi_clk = { 1902 .halt_reg = 0x1b48, 1903 .clkr = { 1904 .enable_reg = 0x1b48, 1905 .enable_mask = BIT(0), 1906 .hw.init = &(struct clk_init_data){ 1907 .name = "gcc_pcie_1_slv_axi_clk", 1908 .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 1909 .num_parents = 1, 1910 .flags = CLK_SET_RATE_PARENT, 1911 .ops = &clk_branch2_ops, 1912 }, 1913 }, 1914 }; 1915 1916 static struct clk_branch gcc_pdm2_clk = { 1917 .halt_reg = 0x0ccc, 1918 .clkr = { 1919 .enable_reg = 0x0ccc, 1920 .enable_mask = BIT(0), 1921 .hw.init = &(struct clk_init_data){ 1922 .name = "gcc_pdm2_clk", 1923 .parent_hws = (const struct clk_hw *[]){ &pdm2_clk_src.clkr.hw }, 1924 .num_parents = 1, 1925 .flags = CLK_SET_RATE_PARENT, 1926 .ops = &clk_branch2_ops, 1927 }, 1928 }, 1929 }; 1930 1931 static struct clk_branch gcc_pdm_ahb_clk = { 1932 .halt_reg = 0x0cc4, 1933 .clkr = { 1934 .enable_reg = 0x0cc4, 1935 .enable_mask = BIT(0), 1936 .hw.init = &(struct clk_init_data){ 1937 .name = "gcc_pdm_ahb_clk", 1938 .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 1939 .num_parents = 1, 1940 .ops = &clk_branch2_ops, 1941 }, 1942 }, 1943 }; 1944 1945 static struct clk_branch gcc_sdcc1_apps_clk = { 1946 .halt_reg = 0x04c4, 1947 .clkr = { 1948 .enable_reg = 0x04c4, 1949 .enable_mask = BIT(0), 1950 .hw.init = &(struct clk_init_data){ 1951 .name = "gcc_sdcc1_apps_clk", 1952 .parent_hws = (const struct clk_hw *[]){ &sdcc1_apps_clk_src.clkr.hw }, 1953 .num_parents = 1, 1954 .flags = CLK_SET_RATE_PARENT, 1955 .ops = &clk_branch2_ops, 1956 }, 1957 }, 1958 }; 1959 1960 static struct clk_branch gcc_sdcc1_ahb_clk = { 1961 .halt_reg = 0x04c8, 1962 .clkr = { 1963 .enable_reg = 0x04c8, 1964 .enable_mask = BIT(0), 1965 .hw.init = &(struct clk_init_data){ 1966 .name = "gcc_sdcc1_ahb_clk", 1967 .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 1968 .num_parents = 1, 1969 .flags = CLK_SET_RATE_PARENT, 1970 .ops = &clk_branch2_ops, 1971 }, 1972 }, 1973 }; 1974 1975 static struct clk_branch gcc_sdcc2_ahb_clk = { 1976 .halt_reg = 0x0508, 1977 .clkr = { 1978 .enable_reg = 0x0508, 1979 .enable_mask = BIT(0), 1980 .hw.init = &(struct clk_init_data){ 1981 .name = "gcc_sdcc2_ahb_clk", 1982 .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 1983 .num_parents = 1, 1984 .flags = CLK_SET_RATE_PARENT, 1985 .ops = &clk_branch2_ops, 1986 }, 1987 }, 1988 }; 1989 1990 static struct clk_branch gcc_sdcc2_apps_clk = { 1991 .halt_reg = 0x0504, 1992 .clkr = { 1993 .enable_reg = 0x0504, 1994 .enable_mask = BIT(0), 1995 .hw.init = &(struct clk_init_data){ 1996 .name = "gcc_sdcc2_apps_clk", 1997 .parent_hws = (const struct clk_hw *[]){ &sdcc2_apps_clk_src.clkr.hw }, 1998 .num_parents = 1, 1999 .flags = CLK_SET_RATE_PARENT, 2000 .ops = &clk_branch2_ops, 2001 }, 2002 }, 2003 }; 2004 2005 static struct clk_branch gcc_sdcc3_ahb_clk = { 2006 .halt_reg = 0x0548, 2007 .clkr = { 2008 .enable_reg = 0x0548, 2009 .enable_mask = BIT(0), 2010 .hw.init = &(struct clk_init_data){ 2011 .name = "gcc_sdcc3_ahb_clk", 2012 .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 2013 .num_parents = 1, 2014 .flags = CLK_SET_RATE_PARENT, 2015 .ops = &clk_branch2_ops, 2016 }, 2017 }, 2018 }; 2019 2020 static struct clk_branch gcc_sdcc3_apps_clk = { 2021 .halt_reg = 0x0544, 2022 .clkr = { 2023 .enable_reg = 0x0544, 2024 .enable_mask = BIT(0), 2025 .hw.init = &(struct clk_init_data){ 2026 .name = "gcc_sdcc3_apps_clk", 2027 .parent_hws = (const struct clk_hw *[]){ &sdcc3_apps_clk_src.clkr.hw }, 2028 .num_parents = 1, 2029 .flags = CLK_SET_RATE_PARENT, 2030 .ops = &clk_branch2_ops, 2031 }, 2032 }, 2033 }; 2034 2035 static struct clk_branch gcc_sdcc4_ahb_clk = { 2036 .halt_reg = 0x0588, 2037 .clkr = { 2038 .enable_reg = 0x0588, 2039 .enable_mask = BIT(0), 2040 .hw.init = &(struct clk_init_data){ 2041 .name = "gcc_sdcc4_ahb_clk", 2042 .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 2043 .num_parents = 1, 2044 .flags = CLK_SET_RATE_PARENT, 2045 .ops = &clk_branch2_ops, 2046 }, 2047 }, 2048 }; 2049 2050 static struct clk_branch gcc_sdcc4_apps_clk = { 2051 .halt_reg = 0x0584, 2052 .clkr = { 2053 .enable_reg = 0x0584, 2054 .enable_mask = BIT(0), 2055 .hw.init = &(struct clk_init_data){ 2056 .name = "gcc_sdcc4_apps_clk", 2057 .parent_hws = (const struct clk_hw *[]){ &sdcc4_apps_clk_src.clkr.hw }, 2058 .num_parents = 1, 2059 .flags = CLK_SET_RATE_PARENT, 2060 .ops = &clk_branch2_ops, 2061 }, 2062 }, 2063 }; 2064 2065 static struct clk_branch gcc_sys_noc_ufs_axi_clk = { 2066 .halt_reg = 0x1d7c, 2067 .clkr = { 2068 .enable_reg = 0x1d7c, 2069 .enable_mask = BIT(0), 2070 .hw.init = &(struct clk_init_data){ 2071 .name = "gcc_sys_noc_ufs_axi_clk", 2072 .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw }, 2073 .num_parents = 1, 2074 .flags = CLK_SET_RATE_PARENT, 2075 .ops = &clk_branch2_ops, 2076 }, 2077 }, 2078 }; 2079 2080 static struct clk_branch gcc_sys_noc_usb3_axi_clk = { 2081 .halt_reg = 0x03fc, 2082 .clkr = { 2083 .enable_reg = 0x03fc, 2084 .enable_mask = BIT(0), 2085 .hw.init = &(struct clk_init_data){ 2086 .name = "gcc_sys_noc_usb3_axi_clk", 2087 .parent_hws = (const struct clk_hw *[]){ &usb30_master_clk_src.clkr.hw }, 2088 .num_parents = 1, 2089 .flags = CLK_SET_RATE_PARENT, 2090 .ops = &clk_branch2_ops, 2091 }, 2092 }, 2093 }; 2094 2095 static struct clk_branch gcc_tsif_ahb_clk = { 2096 .halt_reg = 0x0d84, 2097 .clkr = { 2098 .enable_reg = 0x0d84, 2099 .enable_mask = BIT(0), 2100 .hw.init = &(struct clk_init_data){ 2101 .name = "gcc_tsif_ahb_clk", 2102 .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 2103 .num_parents = 1, 2104 .ops = &clk_branch2_ops, 2105 }, 2106 }, 2107 }; 2108 2109 static struct clk_branch gcc_tsif_ref_clk = { 2110 .halt_reg = 0x0d88, 2111 .clkr = { 2112 .enable_reg = 0x0d88, 2113 .enable_mask = BIT(0), 2114 .hw.init = &(struct clk_init_data){ 2115 .name = "gcc_tsif_ref_clk", 2116 .parent_hws = (const struct clk_hw *[]){ &tsif_ref_clk_src.clkr.hw }, 2117 .num_parents = 1, 2118 .flags = CLK_SET_RATE_PARENT, 2119 .ops = &clk_branch2_ops, 2120 }, 2121 }, 2122 }; 2123 2124 static struct clk_branch gcc_ufs_ahb_clk = { 2125 .halt_reg = 0x1d4c, 2126 .clkr = { 2127 .enable_reg = 0x1d4c, 2128 .enable_mask = BIT(0), 2129 .hw.init = &(struct clk_init_data){ 2130 .name = "gcc_ufs_ahb_clk", 2131 .parent_hws = (const struct clk_hw *[]){ &config_noc_clk_src.clkr.hw }, 2132 .num_parents = 1, 2133 .ops = &clk_branch2_ops, 2134 }, 2135 }, 2136 }; 2137 2138 static struct clk_branch gcc_ufs_axi_clk = { 2139 .halt_reg = 0x1d48, 2140 .clkr = { 2141 .enable_reg = 0x1d48, 2142 .enable_mask = BIT(0), 2143 .hw.init = &(struct clk_init_data){ 2144 .name = "gcc_ufs_axi_clk", 2145 .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw }, 2146 .num_parents = 1, 2147 .flags = CLK_SET_RATE_PARENT, 2148 .ops = &clk_branch2_ops, 2149 }, 2150 }, 2151 }; 2152 2153 static struct clk_branch gcc_ufs_rx_cfg_clk = { 2154 .halt_reg = 0x1d54, 2155 .clkr = { 2156 .enable_reg = 0x1d54, 2157 .enable_mask = BIT(0), 2158 .hw.init = &(struct clk_init_data){ 2159 .name = "gcc_ufs_rx_cfg_clk", 2160 .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw }, 2161 .num_parents = 1, 2162 .flags = CLK_SET_RATE_PARENT, 2163 .ops = &clk_branch2_ops, 2164 }, 2165 }, 2166 }; 2167 2168 static struct clk_branch gcc_ufs_rx_symbol_0_clk = { 2169 .halt_reg = 0x1d60, 2170 .halt_check = BRANCH_HALT_DELAY, 2171 .clkr = { 2172 .enable_reg = 0x1d60, 2173 .enable_mask = BIT(0), 2174 .hw.init = &(struct clk_init_data){ 2175 .name = "gcc_ufs_rx_symbol_0_clk", 2176 .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 2177 .num_parents = 1, 2178 .ops = &clk_branch2_ops, 2179 }, 2180 }, 2181 }; 2182 2183 static struct clk_branch gcc_ufs_rx_symbol_1_clk = { 2184 .halt_reg = 0x1d64, 2185 .halt_check = BRANCH_HALT_DELAY, 2186 .clkr = { 2187 .enable_reg = 0x1d64, 2188 .enable_mask = BIT(0), 2189 .hw.init = &(struct clk_init_data){ 2190 .name = "gcc_ufs_rx_symbol_1_clk", 2191 .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 2192 .num_parents = 1, 2193 .ops = &clk_branch2_ops, 2194 }, 2195 }, 2196 }; 2197 2198 static struct clk_branch gcc_ufs_tx_cfg_clk = { 2199 .halt_reg = 0x1d50, 2200 .clkr = { 2201 .enable_reg = 0x1d50, 2202 .enable_mask = BIT(0), 2203 .hw.init = &(struct clk_init_data){ 2204 .name = "gcc_ufs_tx_cfg_clk", 2205 .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw }, 2206 .num_parents = 1, 2207 .flags = CLK_SET_RATE_PARENT, 2208 .ops = &clk_branch2_ops, 2209 }, 2210 }, 2211 }; 2212 2213 static struct clk_branch gcc_ufs_tx_symbol_0_clk = { 2214 .halt_reg = 0x1d58, 2215 .halt_check = BRANCH_HALT_DELAY, 2216 .clkr = { 2217 .enable_reg = 0x1d58, 2218 .enable_mask = BIT(0), 2219 .hw.init = &(struct clk_init_data){ 2220 .name = "gcc_ufs_tx_symbol_0_clk", 2221 .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 2222 .num_parents = 1, 2223 .ops = &clk_branch2_ops, 2224 }, 2225 }, 2226 }; 2227 2228 static struct clk_branch gcc_ufs_tx_symbol_1_clk = { 2229 .halt_reg = 0x1d5c, 2230 .halt_check = BRANCH_HALT_DELAY, 2231 .clkr = { 2232 .enable_reg = 0x1d5c, 2233 .enable_mask = BIT(0), 2234 .hw.init = &(struct clk_init_data){ 2235 .name = "gcc_ufs_tx_symbol_1_clk", 2236 .parent_hws = (const struct clk_hw *[]){ &system_noc_clk_src.clkr.hw }, 2237 .num_parents = 1, 2238 .ops = &clk_branch2_ops, 2239 }, 2240 }, 2241 }; 2242 2243 static struct clk_branch gcc_usb2_hs_phy_sleep_clk = { 2244 .halt_reg = 0x04ac, 2245 .clkr = { 2246 .enable_reg = 0x04ac, 2247 .enable_mask = BIT(0), 2248 .hw.init = &(struct clk_init_data){ 2249 .name = "gcc_usb2_hs_phy_sleep_clk", 2250 .parent_data = &(const struct clk_parent_data){ 2251 .fw_name = "sleep", 2252 .name = "sleep" 2253 }, 2254 .num_parents = 1, 2255 .ops = &clk_branch2_ops, 2256 }, 2257 }, 2258 }; 2259 2260 static struct clk_branch gcc_usb30_master_clk = { 2261 .halt_reg = 0x03c8, 2262 .clkr = { 2263 .enable_reg = 0x03c8, 2264 .enable_mask = BIT(0), 2265 .hw.init = &(struct clk_init_data){ 2266 .name = "gcc_usb30_master_clk", 2267 .parent_hws = (const struct clk_hw *[]){ &usb30_master_clk_src.clkr.hw }, 2268 .num_parents = 1, 2269 .flags = CLK_SET_RATE_PARENT, 2270 .ops = &clk_branch2_ops, 2271 }, 2272 }, 2273 }; 2274 2275 static struct clk_branch gcc_usb30_mock_utmi_clk = { 2276 .halt_reg = 0x03d0, 2277 .clkr = { 2278 .enable_reg = 0x03d0, 2279 .enable_mask = BIT(0), 2280 .hw.init = &(struct clk_init_data){ 2281 .name = "gcc_usb30_mock_utmi_clk", 2282 .parent_hws = (const struct clk_hw *[]){ &usb30_mock_utmi_clk_src.clkr.hw }, 2283 .num_parents = 1, 2284 .flags = CLK_SET_RATE_PARENT, 2285 .ops = &clk_branch2_ops, 2286 }, 2287 }, 2288 }; 2289 2290 static struct clk_branch gcc_usb30_sleep_clk = { 2291 .halt_reg = 0x03cc, 2292 .clkr = { 2293 .enable_reg = 0x03cc, 2294 .enable_mask = BIT(0), 2295 .hw.init = &(struct clk_init_data){ 2296 .name = "gcc_usb30_sleep_clk", 2297 .parent_data = &(const struct clk_parent_data){ 2298 .fw_name = "sleep", 2299 .name = "sleep" 2300 }, 2301 .num_parents = 1, 2302 .ops = &clk_branch2_ops, 2303 }, 2304 }, 2305 }; 2306 2307 static struct clk_branch gcc_usb3_phy_aux_clk = { 2308 .halt_reg = 0x1408, 2309 .clkr = { 2310 .enable_reg = 0x1408, 2311 .enable_mask = BIT(0), 2312 .hw.init = &(struct clk_init_data){ 2313 .name = "gcc_usb3_phy_aux_clk", 2314 .parent_hws = (const struct clk_hw *[]){ &usb3_phy_aux_clk_src.clkr.hw }, 2315 .num_parents = 1, 2316 .flags = CLK_SET_RATE_PARENT, 2317 .ops = &clk_branch2_ops, 2318 }, 2319 }, 2320 }; 2321 2322 static struct clk_branch gcc_usb3_phy_pipe_clk = { 2323 .halt_reg = 0x140c, 2324 .halt_check = BRANCH_HALT_SKIP, 2325 .clkr = { 2326 .enable_reg = 0x140c, 2327 .enable_mask = BIT(0), 2328 .hw.init = &(struct clk_init_data){ 2329 .name = "gcc_usb3_phy_pipe_clk", 2330 .ops = &clk_branch2_ops, 2331 }, 2332 }, 2333 }; 2334 2335 static struct clk_branch gcc_usb_hs_ahb_clk = { 2336 .halt_reg = 0x0488, 2337 .clkr = { 2338 .enable_reg = 0x0488, 2339 .enable_mask = BIT(0), 2340 .hw.init = &(struct clk_init_data){ 2341 .name = "gcc_usb_hs_ahb_clk", 2342 .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 2343 .num_parents = 1, 2344 .ops = &clk_branch2_ops, 2345 }, 2346 }, 2347 }; 2348 2349 static struct clk_branch gcc_usb_hs_system_clk = { 2350 .halt_reg = 0x0484, 2351 .clkr = { 2352 .enable_reg = 0x0484, 2353 .enable_mask = BIT(0), 2354 .hw.init = &(struct clk_init_data){ 2355 .name = "gcc_usb_hs_system_clk", 2356 .parent_hws = (const struct clk_hw *[]){ &usb_hs_system_clk_src.clkr.hw }, 2357 .num_parents = 1, 2358 .flags = CLK_SET_RATE_PARENT, 2359 .ops = &clk_branch2_ops, 2360 }, 2361 }, 2362 }; 2363 2364 static struct clk_branch gcc_usb_phy_cfg_ahb2phy_clk = { 2365 .halt_reg = 0x1a84, 2366 .clkr = { 2367 .enable_reg = 0x1a84, 2368 .enable_mask = BIT(0), 2369 .hw.init = &(struct clk_init_data){ 2370 .name = "gcc_usb_phy_cfg_ahb2phy_clk", 2371 .ops = &clk_branch2_ops, 2372 }, 2373 }, 2374 }; 2375 2376 static struct clk_branch gpll0_out_mmsscc = { 2377 .halt_check = BRANCH_HALT_DELAY, 2378 .clkr = { 2379 .enable_reg = 0x1484, 2380 .enable_mask = BIT(26), 2381 .hw.init = &(struct clk_init_data){ 2382 .name = "gpll0_out_mmsscc", 2383 .parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw }, 2384 .num_parents = 1, 2385 .ops = &clk_branch2_ops, 2386 }, 2387 }, 2388 }; 2389 2390 static struct clk_branch gpll0_out_msscc = { 2391 .halt_check = BRANCH_HALT_DELAY, 2392 .clkr = { 2393 .enable_reg = 0x1484, 2394 .enable_mask = BIT(27), 2395 .hw.init = &(struct clk_init_data){ 2396 .name = "gpll0_out_msscc", 2397 .parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw }, 2398 .num_parents = 1, 2399 .ops = &clk_branch2_ops, 2400 }, 2401 }, 2402 }; 2403 2404 static struct clk_branch pcie_0_phy_ldo = { 2405 .halt_reg = 0x1e00, 2406 .halt_check = BRANCH_HALT_SKIP, 2407 .clkr = { 2408 .enable_reg = 0x1E00, 2409 .enable_mask = BIT(0), 2410 .hw.init = &(struct clk_init_data){ 2411 .name = "pcie_0_phy_ldo", 2412 .ops = &clk_branch2_ops, 2413 }, 2414 }, 2415 }; 2416 2417 static struct clk_branch pcie_1_phy_ldo = { 2418 .halt_reg = 0x1e04, 2419 .halt_check = BRANCH_HALT_SKIP, 2420 .clkr = { 2421 .enable_reg = 0x1E04, 2422 .enable_mask = BIT(0), 2423 .hw.init = &(struct clk_init_data){ 2424 .name = "pcie_1_phy_ldo", 2425 .ops = &clk_branch2_ops, 2426 }, 2427 }, 2428 }; 2429 2430 static struct clk_branch ufs_phy_ldo = { 2431 .halt_reg = 0x1e0c, 2432 .halt_check = BRANCH_HALT_SKIP, 2433 .clkr = { 2434 .enable_reg = 0x1E0C, 2435 .enable_mask = BIT(0), 2436 .hw.init = &(struct clk_init_data){ 2437 .name = "ufs_phy_ldo", 2438 .ops = &clk_branch2_ops, 2439 }, 2440 }, 2441 }; 2442 2443 static struct clk_branch usb_ss_phy_ldo = { 2444 .halt_reg = 0x1e08, 2445 .halt_check = BRANCH_HALT_SKIP, 2446 .clkr = { 2447 .enable_reg = 0x1E08, 2448 .enable_mask = BIT(0), 2449 .hw.init = &(struct clk_init_data){ 2450 .name = "usb_ss_phy_ldo", 2451 .ops = &clk_branch2_ops, 2452 }, 2453 }, 2454 }; 2455 2456 static struct clk_branch gcc_boot_rom_ahb_clk = { 2457 .halt_reg = 0x0e04, 2458 .halt_check = BRANCH_HALT_VOTED, 2459 .hwcg_reg = 0x0e04, 2460 .hwcg_bit = 1, 2461 .clkr = { 2462 .enable_reg = 0x1484, 2463 .enable_mask = BIT(10), 2464 .hw.init = &(struct clk_init_data){ 2465 .name = "gcc_boot_rom_ahb_clk", 2466 .parent_hws = (const struct clk_hw *[]){ &config_noc_clk_src.clkr.hw }, 2467 .num_parents = 1, 2468 .ops = &clk_branch2_ops, 2469 }, 2470 }, 2471 }; 2472 2473 static struct clk_branch gcc_prng_ahb_clk = { 2474 .halt_reg = 0x0d04, 2475 .halt_check = BRANCH_HALT_VOTED, 2476 .clkr = { 2477 .enable_reg = 0x1484, 2478 .enable_mask = BIT(13), 2479 .hw.init = &(struct clk_init_data){ 2480 .name = "gcc_prng_ahb_clk", 2481 .parent_hws = (const struct clk_hw *[]){ &periph_noc_clk_src.clkr.hw }, 2482 .num_parents = 1, 2483 .ops = &clk_branch2_ops, 2484 }, 2485 }, 2486 }; 2487 2488 static struct gdsc pcie_0_gdsc = { 2489 .gdscr = 0x1ac4, 2490 .pd = { 2491 .name = "pcie_0", 2492 }, 2493 .pwrsts = PWRSTS_OFF_ON, 2494 }; 2495 2496 static struct gdsc pcie_1_gdsc = { 2497 .gdscr = 0x1b44, 2498 .pd = { 2499 .name = "pcie_1", 2500 }, 2501 .pwrsts = PWRSTS_OFF_ON, 2502 }; 2503 2504 static struct gdsc usb30_gdsc = { 2505 .gdscr = 0x3c4, 2506 .pd = { 2507 .name = "usb30", 2508 }, 2509 .pwrsts = PWRSTS_OFF_ON, 2510 }; 2511 2512 static struct gdsc ufs_gdsc = { 2513 .gdscr = 0x1d44, 2514 .pd = { 2515 .name = "ufs", 2516 }, 2517 .pwrsts = PWRSTS_OFF_ON, 2518 }; 2519 2520 static struct clk_regmap *gcc_msm8994_clocks[] = { 2521 [GPLL0_EARLY] = &gpll0_early.clkr, 2522 [GPLL0] = &gpll0.clkr, 2523 [GPLL4_EARLY] = &gpll4_early.clkr, 2524 [GPLL4] = &gpll4.clkr, 2525 [CONFIG_NOC_CLK_SRC] = &config_noc_clk_src.clkr, 2526 [PERIPH_NOC_CLK_SRC] = &periph_noc_clk_src.clkr, 2527 [SYSTEM_NOC_CLK_SRC] = &system_noc_clk_src.clkr, 2528 [UFS_AXI_CLK_SRC] = &ufs_axi_clk_src.clkr, 2529 [USB30_MASTER_CLK_SRC] = &usb30_master_clk_src.clkr, 2530 [BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr, 2531 [BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr, 2532 [BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr, 2533 [BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr, 2534 [BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr, 2535 [BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr, 2536 [BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr, 2537 [BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr, 2538 [BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr, 2539 [BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr, 2540 [BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr, 2541 [BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr, 2542 [BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr, 2543 [BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr, 2544 [BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr, 2545 [BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr, 2546 [BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr, 2547 [BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr, 2548 [BLSP2_QUP1_I2C_APPS_CLK_SRC] = &blsp2_qup1_i2c_apps_clk_src.clkr, 2549 [BLSP2_QUP1_SPI_APPS_CLK_SRC] = &blsp2_qup1_spi_apps_clk_src.clkr, 2550 [BLSP2_QUP2_I2C_APPS_CLK_SRC] = &blsp2_qup2_i2c_apps_clk_src.clkr, 2551 [BLSP2_QUP2_SPI_APPS_CLK_SRC] = &blsp2_qup2_spi_apps_clk_src.clkr, 2552 [BLSP2_QUP3_I2C_APPS_CLK_SRC] = &blsp2_qup3_i2c_apps_clk_src.clkr, 2553 [BLSP2_QUP3_SPI_APPS_CLK_SRC] = &blsp2_qup3_spi_apps_clk_src.clkr, 2554 [BLSP2_QUP4_I2C_APPS_CLK_SRC] = &blsp2_qup4_i2c_apps_clk_src.clkr, 2555 [BLSP2_QUP4_SPI_APPS_CLK_SRC] = &blsp2_qup4_spi_apps_clk_src.clkr, 2556 [BLSP2_QUP5_I2C_APPS_CLK_SRC] = &blsp2_qup5_i2c_apps_clk_src.clkr, 2557 [BLSP2_QUP5_SPI_APPS_CLK_SRC] = &blsp2_qup5_spi_apps_clk_src.clkr, 2558 [BLSP2_QUP6_I2C_APPS_CLK_SRC] = &blsp2_qup6_i2c_apps_clk_src.clkr, 2559 [BLSP2_QUP6_SPI_APPS_CLK_SRC] = &blsp2_qup6_spi_apps_clk_src.clkr, 2560 [BLSP2_UART1_APPS_CLK_SRC] = &blsp2_uart1_apps_clk_src.clkr, 2561 [BLSP2_UART2_APPS_CLK_SRC] = &blsp2_uart2_apps_clk_src.clkr, 2562 [BLSP2_UART3_APPS_CLK_SRC] = &blsp2_uart3_apps_clk_src.clkr, 2563 [BLSP2_UART4_APPS_CLK_SRC] = &blsp2_uart4_apps_clk_src.clkr, 2564 [BLSP2_UART5_APPS_CLK_SRC] = &blsp2_uart5_apps_clk_src.clkr, 2565 [BLSP2_UART6_APPS_CLK_SRC] = &blsp2_uart6_apps_clk_src.clkr, 2566 [GP1_CLK_SRC] = &gp1_clk_src.clkr, 2567 [GP2_CLK_SRC] = &gp2_clk_src.clkr, 2568 [GP3_CLK_SRC] = &gp3_clk_src.clkr, 2569 [PCIE_0_AUX_CLK_SRC] = &pcie_0_aux_clk_src.clkr, 2570 [PCIE_0_PIPE_CLK_SRC] = &pcie_0_pipe_clk_src.clkr, 2571 [PCIE_1_AUX_CLK_SRC] = &pcie_1_aux_clk_src.clkr, 2572 [PCIE_1_PIPE_CLK_SRC] = &pcie_1_pipe_clk_src.clkr, 2573 [PDM2_CLK_SRC] = &pdm2_clk_src.clkr, 2574 [SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr, 2575 [SDCC2_APPS_CLK_SRC] = &sdcc2_apps_clk_src.clkr, 2576 [SDCC3_APPS_CLK_SRC] = &sdcc3_apps_clk_src.clkr, 2577 [SDCC4_APPS_CLK_SRC] = &sdcc4_apps_clk_src.clkr, 2578 [TSIF_REF_CLK_SRC] = &tsif_ref_clk_src.clkr, 2579 [USB30_MOCK_UTMI_CLK_SRC] = &usb30_mock_utmi_clk_src.clkr, 2580 [USB3_PHY_AUX_CLK_SRC] = &usb3_phy_aux_clk_src.clkr, 2581 [USB_HS_SYSTEM_CLK_SRC] = &usb_hs_system_clk_src.clkr, 2582 [GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr, 2583 [GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr, 2584 [GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr, 2585 [GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr, 2586 [GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr, 2587 [GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr, 2588 [GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr, 2589 [GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr, 2590 [GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr, 2591 [GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr, 2592 [GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr, 2593 [GCC_BLSP1_QUP6_I2C_APPS_CLK] = &gcc_blsp1_qup6_i2c_apps_clk.clkr, 2594 [GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr, 2595 [GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr, 2596 [GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr, 2597 [GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr, 2598 [GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr, 2599 [GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr, 2600 [GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr, 2601 [GCC_BLSP2_AHB_CLK] = &gcc_blsp2_ahb_clk.clkr, 2602 [GCC_BLSP2_QUP1_I2C_APPS_CLK] = &gcc_blsp2_qup1_i2c_apps_clk.clkr, 2603 [GCC_BLSP2_QUP1_SPI_APPS_CLK] = &gcc_blsp2_qup1_spi_apps_clk.clkr, 2604 [GCC_BLSP2_QUP2_I2C_APPS_CLK] = &gcc_blsp2_qup2_i2c_apps_clk.clkr, 2605 [GCC_BLSP2_QUP2_SPI_APPS_CLK] = &gcc_blsp2_qup2_spi_apps_clk.clkr, 2606 [GCC_BLSP2_QUP3_I2C_APPS_CLK] = &gcc_blsp2_qup3_i2c_apps_clk.clkr, 2607 [GCC_BLSP2_QUP3_SPI_APPS_CLK] = &gcc_blsp2_qup3_spi_apps_clk.clkr, 2608 [GCC_BLSP2_QUP4_I2C_APPS_CLK] = &gcc_blsp2_qup4_i2c_apps_clk.clkr, 2609 [GCC_BLSP2_QUP4_SPI_APPS_CLK] = &gcc_blsp2_qup4_spi_apps_clk.clkr, 2610 [GCC_BLSP2_QUP5_I2C_APPS_CLK] = &gcc_blsp2_qup5_i2c_apps_clk.clkr, 2611 [GCC_BLSP2_QUP5_SPI_APPS_CLK] = &gcc_blsp2_qup5_spi_apps_clk.clkr, 2612 [GCC_BLSP2_QUP6_I2C_APPS_CLK] = &gcc_blsp2_qup6_i2c_apps_clk.clkr, 2613 [GCC_BLSP2_QUP6_SPI_APPS_CLK] = &gcc_blsp2_qup6_spi_apps_clk.clkr, 2614 [GCC_BLSP2_UART1_APPS_CLK] = &gcc_blsp2_uart1_apps_clk.clkr, 2615 [GCC_BLSP2_UART2_APPS_CLK] = &gcc_blsp2_uart2_apps_clk.clkr, 2616 [GCC_BLSP2_UART3_APPS_CLK] = &gcc_blsp2_uart3_apps_clk.clkr, 2617 [GCC_BLSP2_UART4_APPS_CLK] = &gcc_blsp2_uart4_apps_clk.clkr, 2618 [GCC_BLSP2_UART5_APPS_CLK] = &gcc_blsp2_uart5_apps_clk.clkr, 2619 [GCC_BLSP2_UART6_APPS_CLK] = &gcc_blsp2_uart6_apps_clk.clkr, 2620 [GCC_GP1_CLK] = &gcc_gp1_clk.clkr, 2621 [GCC_GP2_CLK] = &gcc_gp2_clk.clkr, 2622 [GCC_GP3_CLK] = &gcc_gp3_clk.clkr, 2623 [GCC_LPASS_Q6_AXI_CLK] = &gcc_lpass_q6_axi_clk.clkr, 2624 [GCC_MSS_Q6_BIMC_AXI_CLK] = &gcc_mss_q6_bimc_axi_clk.clkr, 2625 [GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr, 2626 [GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr, 2627 [GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr, 2628 [GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr, 2629 [GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr, 2630 [GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr, 2631 [GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr, 2632 [GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr, 2633 [GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr, 2634 [GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr, 2635 [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr, 2636 [GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr, 2637 [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr, 2638 [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr, 2639 [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr, 2640 [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr, 2641 [GCC_SDCC3_AHB_CLK] = &gcc_sdcc3_ahb_clk.clkr, 2642 [GCC_SDCC3_APPS_CLK] = &gcc_sdcc3_apps_clk.clkr, 2643 [GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr, 2644 [GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr, 2645 [GCC_SYS_NOC_UFS_AXI_CLK] = &gcc_sys_noc_ufs_axi_clk.clkr, 2646 [GCC_SYS_NOC_USB3_AXI_CLK] = &gcc_sys_noc_usb3_axi_clk.clkr, 2647 [GCC_TSIF_AHB_CLK] = &gcc_tsif_ahb_clk.clkr, 2648 [GCC_TSIF_REF_CLK] = &gcc_tsif_ref_clk.clkr, 2649 [GCC_UFS_AHB_CLK] = &gcc_ufs_ahb_clk.clkr, 2650 [GCC_UFS_AXI_CLK] = &gcc_ufs_axi_clk.clkr, 2651 [GCC_UFS_RX_CFG_CLK] = &gcc_ufs_rx_cfg_clk.clkr, 2652 [GCC_UFS_RX_SYMBOL_0_CLK] = &gcc_ufs_rx_symbol_0_clk.clkr, 2653 [GCC_UFS_RX_SYMBOL_1_CLK] = &gcc_ufs_rx_symbol_1_clk.clkr, 2654 [GCC_UFS_TX_CFG_CLK] = &gcc_ufs_tx_cfg_clk.clkr, 2655 [GCC_UFS_TX_SYMBOL_0_CLK] = &gcc_ufs_tx_symbol_0_clk.clkr, 2656 [GCC_UFS_TX_SYMBOL_1_CLK] = &gcc_ufs_tx_symbol_1_clk.clkr, 2657 [GCC_USB2_HS_PHY_SLEEP_CLK] = &gcc_usb2_hs_phy_sleep_clk.clkr, 2658 [GCC_USB30_MASTER_CLK] = &gcc_usb30_master_clk.clkr, 2659 [GCC_USB30_MOCK_UTMI_CLK] = &gcc_usb30_mock_utmi_clk.clkr, 2660 [GCC_USB30_SLEEP_CLK] = &gcc_usb30_sleep_clk.clkr, 2661 [GCC_USB3_PHY_AUX_CLK] = &gcc_usb3_phy_aux_clk.clkr, 2662 [GCC_USB3_PHY_PIPE_CLK] = &gcc_usb3_phy_pipe_clk.clkr, 2663 [GCC_USB_HS_AHB_CLK] = &gcc_usb_hs_ahb_clk.clkr, 2664 [GCC_USB_HS_SYSTEM_CLK] = &gcc_usb_hs_system_clk.clkr, 2665 [GCC_USB_PHY_CFG_AHB2PHY_CLK] = &gcc_usb_phy_cfg_ahb2phy_clk.clkr, 2666 [GPLL0_OUT_MMSSCC] = &gpll0_out_mmsscc.clkr, 2667 [GPLL0_OUT_MSSCC] = &gpll0_out_msscc.clkr, 2668 [PCIE_0_PHY_LDO] = &pcie_0_phy_ldo.clkr, 2669 [PCIE_1_PHY_LDO] = &pcie_1_phy_ldo.clkr, 2670 [UFS_PHY_LDO] = &ufs_phy_ldo.clkr, 2671 [USB_SS_PHY_LDO] = &usb_ss_phy_ldo.clkr, 2672 [GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr, 2673 [GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr, 2674 }; 2675 2676 static struct gdsc *gcc_msm8994_gdscs[] = { 2677 /* This GDSC does not exist, but ABI has to remain intact */ 2678 [PCIE_GDSC] = NULL, 2679 [PCIE_0_GDSC] = &pcie_0_gdsc, 2680 [PCIE_1_GDSC] = &pcie_1_gdsc, 2681 [USB30_GDSC] = &usb30_gdsc, 2682 [UFS_GDSC] = &ufs_gdsc, 2683 }; 2684 2685 static const struct qcom_reset_map gcc_msm8994_resets[] = { 2686 [USB3_PHY_RESET] = { 0x1400 }, 2687 [USB3PHY_PHY_RESET] = { 0x1404 }, 2688 [PCIE_PHY_0_RESET] = { 0x1b18 }, 2689 [PCIE_PHY_1_RESET] = { 0x1b98 }, 2690 [QUSB2_PHY_RESET] = { 0x04b8 }, 2691 }; 2692 2693 static const struct regmap_config gcc_msm8994_regmap_config = { 2694 .reg_bits = 32, 2695 .reg_stride = 4, 2696 .val_bits = 32, 2697 .max_register = 0x2000, 2698 .fast_io = true, 2699 }; 2700 2701 static const struct qcom_cc_desc gcc_msm8994_desc = { 2702 .config = &gcc_msm8994_regmap_config, 2703 .clks = gcc_msm8994_clocks, 2704 .num_clks = ARRAY_SIZE(gcc_msm8994_clocks), 2705 .resets = gcc_msm8994_resets, 2706 .num_resets = ARRAY_SIZE(gcc_msm8994_resets), 2707 .gdscs = gcc_msm8994_gdscs, 2708 .num_gdscs = ARRAY_SIZE(gcc_msm8994_gdscs), 2709 }; 2710 2711 static const struct of_device_id gcc_msm8994_match_table[] = { 2712 { .compatible = "qcom,gcc-msm8994" }, 2713 {} 2714 }; 2715 MODULE_DEVICE_TABLE(of, gcc_msm8994_match_table); 2716 2717 static int gcc_msm8994_probe(struct platform_device *pdev) 2718 { 2719 return qcom_cc_probe(pdev, &gcc_msm8994_desc); 2720 } 2721 2722 static struct platform_driver gcc_msm8994_driver = { 2723 .probe = gcc_msm8994_probe, 2724 .driver = { 2725 .name = "gcc-msm8994", 2726 .of_match_table = gcc_msm8994_match_table, 2727 }, 2728 }; 2729 2730 static int __init gcc_msm8994_init(void) 2731 { 2732 return platform_driver_register(&gcc_msm8994_driver); 2733 } 2734 core_initcall(gcc_msm8994_init); 2735 2736 static void __exit gcc_msm8994_exit(void) 2737 { 2738 platform_driver_unregister(&gcc_msm8994_driver); 2739 } 2740 module_exit(gcc_msm8994_exit); 2741 2742 MODULE_DESCRIPTION("Qualcomm GCC MSM8994 Driver"); 2743 MODULE_LICENSE("GPL v2"); 2744 MODULE_ALIAS("platform:gcc-msm8994"); 2745