1 /* 2 * Copyright (c) 2014, The Linux Foundation. All rights reserved. 3 * 4 * This software is licensed under the terms of the GNU General Public 5 * License version 2, as published by the Free Software Foundation, and 6 * may be copied, distributed, and modified under those terms. 7 * 8 * This program is distributed in the hope that it will be useful, 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * GNU General Public License for more details. 12 */ 13 14 #include <linux/kernel.h> 15 #include <linux/bitops.h> 16 #include <linux/err.h> 17 #include <linux/platform_device.h> 18 #include <linux/module.h> 19 #include <linux/of.h> 20 #include <linux/of_device.h> 21 #include <linux/clk-provider.h> 22 #include <linux/regmap.h> 23 #include <linux/reset-controller.h> 24 25 #include <dt-bindings/clock/qcom,gcc-apq8084.h> 26 #include <dt-bindings/reset/qcom,gcc-apq8084.h> 27 28 #include "common.h" 29 #include "clk-regmap.h" 30 #include "clk-pll.h" 31 #include "clk-rcg.h" 32 #include "clk-branch.h" 33 #include "reset.h" 34 35 #define P_XO 0 36 #define P_GPLL0 1 37 #define P_GPLL1 1 38 #define P_GPLL4 2 39 #define P_PCIE_0_1_PIPE_CLK 1 40 #define P_SATA_ASIC0_CLK 1 41 #define P_SATA_RX_CLK 1 42 #define P_SLEEP_CLK 1 43 44 static const u8 gcc_xo_gpll0_map[] = { 45 [P_XO] = 0, 46 [P_GPLL0] = 1, 47 }; 48 49 static const char *gcc_xo_gpll0[] = { 50 "xo", 51 "gpll0_vote", 52 }; 53 54 static const u8 gcc_xo_gpll0_gpll4_map[] = { 55 [P_XO] = 0, 56 [P_GPLL0] = 1, 57 [P_GPLL4] = 5, 58 }; 59 60 static const char *gcc_xo_gpll0_gpll4[] = { 61 "xo", 62 "gpll0_vote", 63 "gpll4_vote", 64 }; 65 66 static const u8 gcc_xo_sata_asic0_map[] = { 67 [P_XO] = 0, 68 [P_SATA_ASIC0_CLK] = 2, 69 }; 70 71 static const char *gcc_xo_sata_asic0[] = { 72 "xo", 73 "sata_asic0_clk", 74 }; 75 76 static const u8 gcc_xo_sata_rx_map[] = { 77 [P_XO] = 0, 78 [P_SATA_RX_CLK] = 2, 79 }; 80 81 static const char *gcc_xo_sata_rx[] = { 82 "xo", 83 "sata_rx_clk", 84 }; 85 86 static const u8 gcc_xo_pcie_map[] = { 87 [P_XO] = 0, 88 [P_PCIE_0_1_PIPE_CLK] = 2, 89 }; 90 91 static const char *gcc_xo_pcie[] = { 92 "xo", 93 "pcie_pipe", 94 }; 95 96 static const u8 gcc_xo_pcie_sleep_map[] = { 97 [P_XO] = 0, 98 [P_SLEEP_CLK] = 6, 99 }; 100 101 static const char *gcc_xo_pcie_sleep[] = { 102 "xo", 103 "sleep_clk_src", 104 }; 105 106 #define F(f, s, h, m, n) { (f), (s), (2 * (h) - 1), (m), (n) } 107 108 static struct clk_pll gpll0 = { 109 .l_reg = 0x0004, 110 .m_reg = 0x0008, 111 .n_reg = 0x000c, 112 .config_reg = 0x0014, 113 .mode_reg = 0x0000, 114 .status_reg = 0x001c, 115 .status_bit = 17, 116 .clkr.hw.init = &(struct clk_init_data){ 117 .name = "gpll0", 118 .parent_names = (const char *[]){ "xo" }, 119 .num_parents = 1, 120 .ops = &clk_pll_ops, 121 }, 122 }; 123 124 static struct clk_regmap gpll0_vote = { 125 .enable_reg = 0x1480, 126 .enable_mask = BIT(0), 127 .hw.init = &(struct clk_init_data){ 128 .name = "gpll0_vote", 129 .parent_names = (const char *[]){ "gpll0" }, 130 .num_parents = 1, 131 .ops = &clk_pll_vote_ops, 132 }, 133 }; 134 135 static struct clk_rcg2 config_noc_clk_src = { 136 .cmd_rcgr = 0x0150, 137 .hid_width = 5, 138 .parent_map = gcc_xo_gpll0_map, 139 .clkr.hw.init = &(struct clk_init_data){ 140 .name = "config_noc_clk_src", 141 .parent_names = gcc_xo_gpll0, 142 .num_parents = 2, 143 .ops = &clk_rcg2_ops, 144 }, 145 }; 146 147 static struct clk_rcg2 periph_noc_clk_src = { 148 .cmd_rcgr = 0x0190, 149 .hid_width = 5, 150 .parent_map = gcc_xo_gpll0_map, 151 .clkr.hw.init = &(struct clk_init_data){ 152 .name = "periph_noc_clk_src", 153 .parent_names = gcc_xo_gpll0, 154 .num_parents = 2, 155 .ops = &clk_rcg2_ops, 156 }, 157 }; 158 159 static struct clk_rcg2 system_noc_clk_src = { 160 .cmd_rcgr = 0x0120, 161 .hid_width = 5, 162 .parent_map = gcc_xo_gpll0_map, 163 .clkr.hw.init = &(struct clk_init_data){ 164 .name = "system_noc_clk_src", 165 .parent_names = gcc_xo_gpll0, 166 .num_parents = 2, 167 .ops = &clk_rcg2_ops, 168 }, 169 }; 170 171 static struct clk_pll gpll1 = { 172 .l_reg = 0x0044, 173 .m_reg = 0x0048, 174 .n_reg = 0x004c, 175 .config_reg = 0x0054, 176 .mode_reg = 0x0040, 177 .status_reg = 0x005c, 178 .status_bit = 17, 179 .clkr.hw.init = &(struct clk_init_data){ 180 .name = "gpll1", 181 .parent_names = (const char *[]){ "xo" }, 182 .num_parents = 1, 183 .ops = &clk_pll_ops, 184 }, 185 }; 186 187 static struct clk_regmap gpll1_vote = { 188 .enable_reg = 0x1480, 189 .enable_mask = BIT(1), 190 .hw.init = &(struct clk_init_data){ 191 .name = "gpll1_vote", 192 .parent_names = (const char *[]){ "gpll1" }, 193 .num_parents = 1, 194 .ops = &clk_pll_vote_ops, 195 }, 196 }; 197 198 static struct clk_pll gpll4 = { 199 .l_reg = 0x1dc4, 200 .m_reg = 0x1dc8, 201 .n_reg = 0x1dcc, 202 .config_reg = 0x1dd4, 203 .mode_reg = 0x1dc0, 204 .status_reg = 0x1ddc, 205 .status_bit = 17, 206 .clkr.hw.init = &(struct clk_init_data){ 207 .name = "gpll4", 208 .parent_names = (const char *[]){ "xo" }, 209 .num_parents = 1, 210 .ops = &clk_pll_ops, 211 }, 212 }; 213 214 static struct clk_regmap gpll4_vote = { 215 .enable_reg = 0x1480, 216 .enable_mask = BIT(4), 217 .hw.init = &(struct clk_init_data){ 218 .name = "gpll4_vote", 219 .parent_names = (const char *[]){ "gpll4" }, 220 .num_parents = 1, 221 .ops = &clk_pll_vote_ops, 222 }, 223 }; 224 225 static const struct freq_tbl ftbl_gcc_ufs_axi_clk[] = { 226 F(100000000, P_GPLL0, 6, 0, 0), 227 F(200000000, P_GPLL0, 3, 0, 0), 228 F(240000000, P_GPLL0, 2.5, 0, 0), 229 { } 230 }; 231 232 static struct clk_rcg2 ufs_axi_clk_src = { 233 .cmd_rcgr = 0x1d64, 234 .mnd_width = 8, 235 .hid_width = 5, 236 .parent_map = gcc_xo_gpll0_map, 237 .freq_tbl = ftbl_gcc_ufs_axi_clk, 238 .clkr.hw.init = &(struct clk_init_data){ 239 .name = "ufs_axi_clk_src", 240 .parent_names = gcc_xo_gpll0, 241 .num_parents = 2, 242 .ops = &clk_rcg2_ops, 243 }, 244 }; 245 246 static const struct freq_tbl ftbl_gcc_usb30_master_clk[] = { 247 F(125000000, P_GPLL0, 1, 5, 24), 248 { } 249 }; 250 251 static struct clk_rcg2 usb30_master_clk_src = { 252 .cmd_rcgr = 0x03d4, 253 .mnd_width = 8, 254 .hid_width = 5, 255 .parent_map = gcc_xo_gpll0_map, 256 .freq_tbl = ftbl_gcc_usb30_master_clk, 257 .clkr.hw.init = &(struct clk_init_data){ 258 .name = "usb30_master_clk_src", 259 .parent_names = gcc_xo_gpll0, 260 .num_parents = 2, 261 .ops = &clk_rcg2_ops, 262 }, 263 }; 264 265 static const struct freq_tbl ftbl_gcc_usb30_sec_master_clk[] = { 266 F(125000000, P_GPLL0, 1, 5, 24), 267 { } 268 }; 269 270 static struct clk_rcg2 usb30_sec_master_clk_src = { 271 .cmd_rcgr = 0x1bd4, 272 .mnd_width = 8, 273 .hid_width = 5, 274 .parent_map = gcc_xo_gpll0_map, 275 .freq_tbl = ftbl_gcc_usb30_sec_master_clk, 276 .clkr.hw.init = &(struct clk_init_data){ 277 .name = "usb30_sec_master_clk_src", 278 .parent_names = gcc_xo_gpll0, 279 .num_parents = 2, 280 .ops = &clk_rcg2_ops, 281 }, 282 }; 283 284 static struct clk_branch gcc_usb30_sec_mock_utmi_clk = { 285 .halt_reg = 0x1bd0, 286 .clkr = { 287 .enable_reg = 0x1bd0, 288 .enable_mask = BIT(0), 289 .hw.init = &(struct clk_init_data){ 290 .name = "gcc_usb30_sec_mock_utmi_clk", 291 .parent_names = (const char *[]){ 292 "usb30_sec_mock_utmi_clk_src", 293 }, 294 .num_parents = 1, 295 .flags = CLK_SET_RATE_PARENT, 296 .ops = &clk_branch2_ops, 297 }, 298 }, 299 }; 300 301 static struct clk_branch gcc_usb30_sec_sleep_clk = { 302 .halt_reg = 0x1bcc, 303 .clkr = { 304 .enable_reg = 0x1bcc, 305 .enable_mask = BIT(0), 306 .hw.init = &(struct clk_init_data){ 307 .name = "gcc_usb30_sec_sleep_clk", 308 .parent_names = (const char *[]){ 309 "sleep_clk_src", 310 }, 311 .num_parents = 1, 312 .flags = CLK_SET_RATE_PARENT, 313 .ops = &clk_branch2_ops, 314 }, 315 }, 316 }; 317 318 static const struct freq_tbl ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk[] = { 319 F(19200000, P_XO, 1, 0, 0), 320 F(50000000, P_GPLL0, 12, 0, 0), 321 { } 322 }; 323 324 static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = { 325 .cmd_rcgr = 0x0660, 326 .hid_width = 5, 327 .parent_map = gcc_xo_gpll0_map, 328 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk, 329 .clkr.hw.init = &(struct clk_init_data){ 330 .name = "blsp1_qup1_i2c_apps_clk_src", 331 .parent_names = gcc_xo_gpll0, 332 .num_parents = 2, 333 .ops = &clk_rcg2_ops, 334 }, 335 }; 336 337 static const struct freq_tbl ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk[] = { 338 F(960000, P_XO, 10, 1, 2), 339 F(4800000, P_XO, 4, 0, 0), 340 F(9600000, P_XO, 2, 0, 0), 341 F(15000000, P_GPLL0, 10, 1, 4), 342 F(19200000, P_XO, 1, 0, 0), 343 F(25000000, P_GPLL0, 12, 1, 2), 344 F(50000000, P_GPLL0, 12, 0, 0), 345 { } 346 }; 347 348 static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = { 349 .cmd_rcgr = 0x064c, 350 .mnd_width = 8, 351 .hid_width = 5, 352 .parent_map = gcc_xo_gpll0_map, 353 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk, 354 .clkr.hw.init = &(struct clk_init_data){ 355 .name = "blsp1_qup1_spi_apps_clk_src", 356 .parent_names = gcc_xo_gpll0, 357 .num_parents = 2, 358 .ops = &clk_rcg2_ops, 359 }, 360 }; 361 362 static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = { 363 .cmd_rcgr = 0x06e0, 364 .hid_width = 5, 365 .parent_map = gcc_xo_gpll0_map, 366 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk, 367 .clkr.hw.init = &(struct clk_init_data){ 368 .name = "blsp1_qup2_i2c_apps_clk_src", 369 .parent_names = gcc_xo_gpll0, 370 .num_parents = 2, 371 .ops = &clk_rcg2_ops, 372 }, 373 }; 374 375 static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = { 376 .cmd_rcgr = 0x06cc, 377 .mnd_width = 8, 378 .hid_width = 5, 379 .parent_map = gcc_xo_gpll0_map, 380 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk, 381 .clkr.hw.init = &(struct clk_init_data){ 382 .name = "blsp1_qup2_spi_apps_clk_src", 383 .parent_names = gcc_xo_gpll0, 384 .num_parents = 2, 385 .ops = &clk_rcg2_ops, 386 }, 387 }; 388 389 static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = { 390 .cmd_rcgr = 0x0760, 391 .hid_width = 5, 392 .parent_map = gcc_xo_gpll0_map, 393 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk, 394 .clkr.hw.init = &(struct clk_init_data){ 395 .name = "blsp1_qup3_i2c_apps_clk_src", 396 .parent_names = gcc_xo_gpll0, 397 .num_parents = 2, 398 .ops = &clk_rcg2_ops, 399 }, 400 }; 401 402 static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = { 403 .cmd_rcgr = 0x074c, 404 .mnd_width = 8, 405 .hid_width = 5, 406 .parent_map = gcc_xo_gpll0_map, 407 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk, 408 .clkr.hw.init = &(struct clk_init_data){ 409 .name = "blsp1_qup3_spi_apps_clk_src", 410 .parent_names = gcc_xo_gpll0, 411 .num_parents = 2, 412 .ops = &clk_rcg2_ops, 413 }, 414 }; 415 416 static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = { 417 .cmd_rcgr = 0x07e0, 418 .hid_width = 5, 419 .parent_map = gcc_xo_gpll0_map, 420 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk, 421 .clkr.hw.init = &(struct clk_init_data){ 422 .name = "blsp1_qup4_i2c_apps_clk_src", 423 .parent_names = gcc_xo_gpll0, 424 .num_parents = 2, 425 .ops = &clk_rcg2_ops, 426 }, 427 }; 428 429 static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = { 430 .cmd_rcgr = 0x07cc, 431 .mnd_width = 8, 432 .hid_width = 5, 433 .parent_map = gcc_xo_gpll0_map, 434 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk, 435 .clkr.hw.init = &(struct clk_init_data){ 436 .name = "blsp1_qup4_spi_apps_clk_src", 437 .parent_names = gcc_xo_gpll0, 438 .num_parents = 2, 439 .ops = &clk_rcg2_ops, 440 }, 441 }; 442 443 static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = { 444 .cmd_rcgr = 0x0860, 445 .hid_width = 5, 446 .parent_map = gcc_xo_gpll0_map, 447 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk, 448 .clkr.hw.init = &(struct clk_init_data){ 449 .name = "blsp1_qup5_i2c_apps_clk_src", 450 .parent_names = gcc_xo_gpll0, 451 .num_parents = 2, 452 .ops = &clk_rcg2_ops, 453 }, 454 }; 455 456 static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = { 457 .cmd_rcgr = 0x084c, 458 .mnd_width = 8, 459 .hid_width = 5, 460 .parent_map = gcc_xo_gpll0_map, 461 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk, 462 .clkr.hw.init = &(struct clk_init_data){ 463 .name = "blsp1_qup5_spi_apps_clk_src", 464 .parent_names = gcc_xo_gpll0, 465 .num_parents = 2, 466 .ops = &clk_rcg2_ops, 467 }, 468 }; 469 470 static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = { 471 .cmd_rcgr = 0x08e0, 472 .hid_width = 5, 473 .parent_map = gcc_xo_gpll0_map, 474 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk, 475 .clkr.hw.init = &(struct clk_init_data){ 476 .name = "blsp1_qup6_i2c_apps_clk_src", 477 .parent_names = gcc_xo_gpll0, 478 .num_parents = 2, 479 .ops = &clk_rcg2_ops, 480 }, 481 }; 482 483 static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = { 484 .cmd_rcgr = 0x08cc, 485 .mnd_width = 8, 486 .hid_width = 5, 487 .parent_map = gcc_xo_gpll0_map, 488 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk, 489 .clkr.hw.init = &(struct clk_init_data){ 490 .name = "blsp1_qup6_spi_apps_clk_src", 491 .parent_names = gcc_xo_gpll0, 492 .num_parents = 2, 493 .ops = &clk_rcg2_ops, 494 }, 495 }; 496 497 static const struct freq_tbl ftbl_gcc_blsp1_2_uart1_6_apps_clk[] = { 498 F(3686400, P_GPLL0, 1, 96, 15625), 499 F(7372800, P_GPLL0, 1, 192, 15625), 500 F(14745600, P_GPLL0, 1, 384, 15625), 501 F(16000000, P_GPLL0, 5, 2, 15), 502 F(19200000, P_XO, 1, 0, 0), 503 F(24000000, P_GPLL0, 5, 1, 5), 504 F(32000000, P_GPLL0, 1, 4, 75), 505 F(40000000, P_GPLL0, 15, 0, 0), 506 F(46400000, P_GPLL0, 1, 29, 375), 507 F(48000000, P_GPLL0, 12.5, 0, 0), 508 F(51200000, P_GPLL0, 1, 32, 375), 509 F(56000000, P_GPLL0, 1, 7, 75), 510 F(58982400, P_GPLL0, 1, 1536, 15625), 511 F(60000000, P_GPLL0, 10, 0, 0), 512 F(63160000, P_GPLL0, 9.5, 0, 0), 513 { } 514 }; 515 516 static struct clk_rcg2 blsp1_uart1_apps_clk_src = { 517 .cmd_rcgr = 0x068c, 518 .mnd_width = 16, 519 .hid_width = 5, 520 .parent_map = gcc_xo_gpll0_map, 521 .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk, 522 .clkr.hw.init = &(struct clk_init_data){ 523 .name = "blsp1_uart1_apps_clk_src", 524 .parent_names = gcc_xo_gpll0, 525 .num_parents = 2, 526 .ops = &clk_rcg2_ops, 527 }, 528 }; 529 530 static struct clk_rcg2 blsp1_uart2_apps_clk_src = { 531 .cmd_rcgr = 0x070c, 532 .mnd_width = 16, 533 .hid_width = 5, 534 .parent_map = gcc_xo_gpll0_map, 535 .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk, 536 .clkr.hw.init = &(struct clk_init_data){ 537 .name = "blsp1_uart2_apps_clk_src", 538 .parent_names = gcc_xo_gpll0, 539 .num_parents = 2, 540 .ops = &clk_rcg2_ops, 541 }, 542 }; 543 544 static struct clk_rcg2 blsp1_uart3_apps_clk_src = { 545 .cmd_rcgr = 0x078c, 546 .mnd_width = 16, 547 .hid_width = 5, 548 .parent_map = gcc_xo_gpll0_map, 549 .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk, 550 .clkr.hw.init = &(struct clk_init_data){ 551 .name = "blsp1_uart3_apps_clk_src", 552 .parent_names = gcc_xo_gpll0, 553 .num_parents = 2, 554 .ops = &clk_rcg2_ops, 555 }, 556 }; 557 558 static struct clk_rcg2 blsp1_uart4_apps_clk_src = { 559 .cmd_rcgr = 0x080c, 560 .mnd_width = 16, 561 .hid_width = 5, 562 .parent_map = gcc_xo_gpll0_map, 563 .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk, 564 .clkr.hw.init = &(struct clk_init_data){ 565 .name = "blsp1_uart4_apps_clk_src", 566 .parent_names = gcc_xo_gpll0, 567 .num_parents = 2, 568 .ops = &clk_rcg2_ops, 569 }, 570 }; 571 572 static struct clk_rcg2 blsp1_uart5_apps_clk_src = { 573 .cmd_rcgr = 0x088c, 574 .mnd_width = 16, 575 .hid_width = 5, 576 .parent_map = gcc_xo_gpll0_map, 577 .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk, 578 .clkr.hw.init = &(struct clk_init_data){ 579 .name = "blsp1_uart5_apps_clk_src", 580 .parent_names = gcc_xo_gpll0, 581 .num_parents = 2, 582 .ops = &clk_rcg2_ops, 583 }, 584 }; 585 586 static struct clk_rcg2 blsp1_uart6_apps_clk_src = { 587 .cmd_rcgr = 0x090c, 588 .mnd_width = 16, 589 .hid_width = 5, 590 .parent_map = gcc_xo_gpll0_map, 591 .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk, 592 .clkr.hw.init = &(struct clk_init_data){ 593 .name = "blsp1_uart6_apps_clk_src", 594 .parent_names = gcc_xo_gpll0, 595 .num_parents = 2, 596 .ops = &clk_rcg2_ops, 597 }, 598 }; 599 600 static struct clk_rcg2 blsp2_qup1_i2c_apps_clk_src = { 601 .cmd_rcgr = 0x09a0, 602 .hid_width = 5, 603 .parent_map = gcc_xo_gpll0_map, 604 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk, 605 .clkr.hw.init = &(struct clk_init_data){ 606 .name = "blsp2_qup1_i2c_apps_clk_src", 607 .parent_names = gcc_xo_gpll0, 608 .num_parents = 2, 609 .ops = &clk_rcg2_ops, 610 }, 611 }; 612 613 static struct clk_rcg2 blsp2_qup1_spi_apps_clk_src = { 614 .cmd_rcgr = 0x098c, 615 .mnd_width = 8, 616 .hid_width = 5, 617 .parent_map = gcc_xo_gpll0_map, 618 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk, 619 .clkr.hw.init = &(struct clk_init_data){ 620 .name = "blsp2_qup1_spi_apps_clk_src", 621 .parent_names = gcc_xo_gpll0, 622 .num_parents = 2, 623 .ops = &clk_rcg2_ops, 624 }, 625 }; 626 627 static struct clk_rcg2 blsp2_qup2_i2c_apps_clk_src = { 628 .cmd_rcgr = 0x0a20, 629 .hid_width = 5, 630 .parent_map = gcc_xo_gpll0_map, 631 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk, 632 .clkr.hw.init = &(struct clk_init_data){ 633 .name = "blsp2_qup2_i2c_apps_clk_src", 634 .parent_names = gcc_xo_gpll0, 635 .num_parents = 2, 636 .ops = &clk_rcg2_ops, 637 }, 638 }; 639 640 static struct clk_rcg2 blsp2_qup2_spi_apps_clk_src = { 641 .cmd_rcgr = 0x0a0c, 642 .mnd_width = 8, 643 .hid_width = 5, 644 .parent_map = gcc_xo_gpll0_map, 645 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk, 646 .clkr.hw.init = &(struct clk_init_data){ 647 .name = "blsp2_qup2_spi_apps_clk_src", 648 .parent_names = gcc_xo_gpll0, 649 .num_parents = 2, 650 .ops = &clk_rcg2_ops, 651 }, 652 }; 653 654 static struct clk_rcg2 blsp2_qup3_i2c_apps_clk_src = { 655 .cmd_rcgr = 0x0aa0, 656 .hid_width = 5, 657 .parent_map = gcc_xo_gpll0_map, 658 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk, 659 .clkr.hw.init = &(struct clk_init_data){ 660 .name = "blsp2_qup3_i2c_apps_clk_src", 661 .parent_names = gcc_xo_gpll0, 662 .num_parents = 2, 663 .ops = &clk_rcg2_ops, 664 }, 665 }; 666 667 static struct clk_rcg2 blsp2_qup3_spi_apps_clk_src = { 668 .cmd_rcgr = 0x0a8c, 669 .mnd_width = 8, 670 .hid_width = 5, 671 .parent_map = gcc_xo_gpll0_map, 672 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk, 673 .clkr.hw.init = &(struct clk_init_data){ 674 .name = "blsp2_qup3_spi_apps_clk_src", 675 .parent_names = gcc_xo_gpll0, 676 .num_parents = 2, 677 .ops = &clk_rcg2_ops, 678 }, 679 }; 680 681 static struct clk_rcg2 blsp2_qup4_i2c_apps_clk_src = { 682 .cmd_rcgr = 0x0b20, 683 .hid_width = 5, 684 .parent_map = gcc_xo_gpll0_map, 685 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk, 686 .clkr.hw.init = &(struct clk_init_data){ 687 .name = "blsp2_qup4_i2c_apps_clk_src", 688 .parent_names = gcc_xo_gpll0, 689 .num_parents = 2, 690 .ops = &clk_rcg2_ops, 691 }, 692 }; 693 694 static struct clk_rcg2 blsp2_qup4_spi_apps_clk_src = { 695 .cmd_rcgr = 0x0b0c, 696 .mnd_width = 8, 697 .hid_width = 5, 698 .parent_map = gcc_xo_gpll0_map, 699 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk, 700 .clkr.hw.init = &(struct clk_init_data){ 701 .name = "blsp2_qup4_spi_apps_clk_src", 702 .parent_names = gcc_xo_gpll0, 703 .num_parents = 2, 704 .ops = &clk_rcg2_ops, 705 }, 706 }; 707 708 static struct clk_rcg2 blsp2_qup5_i2c_apps_clk_src = { 709 .cmd_rcgr = 0x0ba0, 710 .hid_width = 5, 711 .parent_map = gcc_xo_gpll0_map, 712 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk, 713 .clkr.hw.init = &(struct clk_init_data){ 714 .name = "blsp2_qup5_i2c_apps_clk_src", 715 .parent_names = gcc_xo_gpll0, 716 .num_parents = 2, 717 .ops = &clk_rcg2_ops, 718 }, 719 }; 720 721 static struct clk_rcg2 blsp2_qup5_spi_apps_clk_src = { 722 .cmd_rcgr = 0x0b8c, 723 .mnd_width = 8, 724 .hid_width = 5, 725 .parent_map = gcc_xo_gpll0_map, 726 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk, 727 .clkr.hw.init = &(struct clk_init_data){ 728 .name = "blsp2_qup5_spi_apps_clk_src", 729 .parent_names = gcc_xo_gpll0, 730 .num_parents = 2, 731 .ops = &clk_rcg2_ops, 732 }, 733 }; 734 735 static struct clk_rcg2 blsp2_qup6_i2c_apps_clk_src = { 736 .cmd_rcgr = 0x0c20, 737 .hid_width = 5, 738 .parent_map = gcc_xo_gpll0_map, 739 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk, 740 .clkr.hw.init = &(struct clk_init_data){ 741 .name = "blsp2_qup6_i2c_apps_clk_src", 742 .parent_names = gcc_xo_gpll0, 743 .num_parents = 2, 744 .ops = &clk_rcg2_ops, 745 }, 746 }; 747 748 static struct clk_rcg2 blsp2_qup6_spi_apps_clk_src = { 749 .cmd_rcgr = 0x0c0c, 750 .mnd_width = 8, 751 .hid_width = 5, 752 .parent_map = gcc_xo_gpll0_map, 753 .freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk, 754 .clkr.hw.init = &(struct clk_init_data){ 755 .name = "blsp2_qup6_spi_apps_clk_src", 756 .parent_names = gcc_xo_gpll0, 757 .num_parents = 2, 758 .ops = &clk_rcg2_ops, 759 }, 760 }; 761 762 static struct clk_rcg2 blsp2_uart1_apps_clk_src = { 763 .cmd_rcgr = 0x09cc, 764 .mnd_width = 16, 765 .hid_width = 5, 766 .parent_map = gcc_xo_gpll0_map, 767 .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk, 768 .clkr.hw.init = &(struct clk_init_data){ 769 .name = "blsp2_uart1_apps_clk_src", 770 .parent_names = gcc_xo_gpll0, 771 .num_parents = 2, 772 .ops = &clk_rcg2_ops, 773 }, 774 }; 775 776 static struct clk_rcg2 blsp2_uart2_apps_clk_src = { 777 .cmd_rcgr = 0x0a4c, 778 .mnd_width = 16, 779 .hid_width = 5, 780 .parent_map = gcc_xo_gpll0_map, 781 .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk, 782 .clkr.hw.init = &(struct clk_init_data){ 783 .name = "blsp2_uart2_apps_clk_src", 784 .parent_names = gcc_xo_gpll0, 785 .num_parents = 2, 786 .ops = &clk_rcg2_ops, 787 }, 788 }; 789 790 static struct clk_rcg2 blsp2_uart3_apps_clk_src = { 791 .cmd_rcgr = 0x0acc, 792 .mnd_width = 16, 793 .hid_width = 5, 794 .parent_map = gcc_xo_gpll0_map, 795 .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk, 796 .clkr.hw.init = &(struct clk_init_data){ 797 .name = "blsp2_uart3_apps_clk_src", 798 .parent_names = gcc_xo_gpll0, 799 .num_parents = 2, 800 .ops = &clk_rcg2_ops, 801 }, 802 }; 803 804 static struct clk_rcg2 blsp2_uart4_apps_clk_src = { 805 .cmd_rcgr = 0x0b4c, 806 .mnd_width = 16, 807 .hid_width = 5, 808 .parent_map = gcc_xo_gpll0_map, 809 .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk, 810 .clkr.hw.init = &(struct clk_init_data){ 811 .name = "blsp2_uart4_apps_clk_src", 812 .parent_names = gcc_xo_gpll0, 813 .num_parents = 2, 814 .ops = &clk_rcg2_ops, 815 }, 816 }; 817 818 static struct clk_rcg2 blsp2_uart5_apps_clk_src = { 819 .cmd_rcgr = 0x0bcc, 820 .mnd_width = 16, 821 .hid_width = 5, 822 .parent_map = gcc_xo_gpll0_map, 823 .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk, 824 .clkr.hw.init = &(struct clk_init_data){ 825 .name = "blsp2_uart5_apps_clk_src", 826 .parent_names = gcc_xo_gpll0, 827 .num_parents = 2, 828 .ops = &clk_rcg2_ops, 829 }, 830 }; 831 832 static struct clk_rcg2 blsp2_uart6_apps_clk_src = { 833 .cmd_rcgr = 0x0c4c, 834 .mnd_width = 16, 835 .hid_width = 5, 836 .parent_map = gcc_xo_gpll0_map, 837 .freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk, 838 .clkr.hw.init = &(struct clk_init_data){ 839 .name = "blsp2_uart6_apps_clk_src", 840 .parent_names = gcc_xo_gpll0, 841 .num_parents = 2, 842 .ops = &clk_rcg2_ops, 843 }, 844 }; 845 846 static const struct freq_tbl ftbl_gcc_ce1_clk[] = { 847 F(50000000, P_GPLL0, 12, 0, 0), 848 F(85710000, P_GPLL0, 7, 0, 0), 849 F(100000000, P_GPLL0, 6, 0, 0), 850 F(171430000, P_GPLL0, 3.5, 0, 0), 851 { } 852 }; 853 854 static struct clk_rcg2 ce1_clk_src = { 855 .cmd_rcgr = 0x1050, 856 .hid_width = 5, 857 .parent_map = gcc_xo_gpll0_map, 858 .freq_tbl = ftbl_gcc_ce1_clk, 859 .clkr.hw.init = &(struct clk_init_data){ 860 .name = "ce1_clk_src", 861 .parent_names = gcc_xo_gpll0, 862 .num_parents = 2, 863 .ops = &clk_rcg2_ops, 864 }, 865 }; 866 867 static const struct freq_tbl ftbl_gcc_ce2_clk[] = { 868 F(50000000, P_GPLL0, 12, 0, 0), 869 F(85710000, P_GPLL0, 7, 0, 0), 870 F(100000000, P_GPLL0, 6, 0, 0), 871 F(171430000, P_GPLL0, 3.5, 0, 0), 872 { } 873 }; 874 875 static struct clk_rcg2 ce2_clk_src = { 876 .cmd_rcgr = 0x1090, 877 .hid_width = 5, 878 .parent_map = gcc_xo_gpll0_map, 879 .freq_tbl = ftbl_gcc_ce2_clk, 880 .clkr.hw.init = &(struct clk_init_data){ 881 .name = "ce2_clk_src", 882 .parent_names = gcc_xo_gpll0, 883 .num_parents = 2, 884 .ops = &clk_rcg2_ops, 885 }, 886 }; 887 888 static const struct freq_tbl ftbl_gcc_ce3_clk[] = { 889 F(50000000, P_GPLL0, 12, 0, 0), 890 F(85710000, P_GPLL0, 7, 0, 0), 891 F(100000000, P_GPLL0, 6, 0, 0), 892 F(171430000, P_GPLL0, 3.5, 0, 0), 893 { } 894 }; 895 896 static struct clk_rcg2 ce3_clk_src = { 897 .cmd_rcgr = 0x1d10, 898 .hid_width = 5, 899 .parent_map = gcc_xo_gpll0_map, 900 .freq_tbl = ftbl_gcc_ce3_clk, 901 .clkr.hw.init = &(struct clk_init_data){ 902 .name = "ce3_clk_src", 903 .parent_names = gcc_xo_gpll0, 904 .num_parents = 2, 905 .ops = &clk_rcg2_ops, 906 }, 907 }; 908 909 static const struct freq_tbl ftbl_gcc_gp_clk[] = { 910 F(19200000, P_XO, 1, 0, 0), 911 F(100000000, P_GPLL0, 6, 0, 0), 912 F(200000000, P_GPLL0, 3, 0, 0), 913 { } 914 }; 915 916 static struct clk_rcg2 gp1_clk_src = { 917 .cmd_rcgr = 0x1904, 918 .mnd_width = 8, 919 .hid_width = 5, 920 .parent_map = gcc_xo_gpll0_map, 921 .freq_tbl = ftbl_gcc_gp_clk, 922 .clkr.hw.init = &(struct clk_init_data){ 923 .name = "gp1_clk_src", 924 .parent_names = gcc_xo_gpll0, 925 .num_parents = 2, 926 .ops = &clk_rcg2_ops, 927 }, 928 }; 929 930 static struct clk_rcg2 gp2_clk_src = { 931 .cmd_rcgr = 0x1944, 932 .mnd_width = 8, 933 .hid_width = 5, 934 .parent_map = gcc_xo_gpll0_map, 935 .freq_tbl = ftbl_gcc_gp_clk, 936 .clkr.hw.init = &(struct clk_init_data){ 937 .name = "gp2_clk_src", 938 .parent_names = gcc_xo_gpll0, 939 .num_parents = 2, 940 .ops = &clk_rcg2_ops, 941 }, 942 }; 943 944 static struct clk_rcg2 gp3_clk_src = { 945 .cmd_rcgr = 0x1984, 946 .mnd_width = 8, 947 .hid_width = 5, 948 .parent_map = gcc_xo_gpll0_map, 949 .freq_tbl = ftbl_gcc_gp_clk, 950 .clkr.hw.init = &(struct clk_init_data){ 951 .name = "gp3_clk_src", 952 .parent_names = gcc_xo_gpll0, 953 .num_parents = 2, 954 .ops = &clk_rcg2_ops, 955 }, 956 }; 957 958 static const struct freq_tbl ftbl_gcc_pcie_0_1_aux_clk[] = { 959 F(1010000, P_XO, 1, 1, 19), 960 { } 961 }; 962 963 static struct clk_rcg2 pcie_0_aux_clk_src = { 964 .cmd_rcgr = 0x1b2c, 965 .mnd_width = 16, 966 .hid_width = 5, 967 .parent_map = gcc_xo_pcie_sleep_map, 968 .freq_tbl = ftbl_gcc_pcie_0_1_aux_clk, 969 .clkr.hw.init = &(struct clk_init_data){ 970 .name = "pcie_0_aux_clk_src", 971 .parent_names = gcc_xo_pcie_sleep, 972 .num_parents = 2, 973 .ops = &clk_rcg2_ops, 974 }, 975 }; 976 977 static struct clk_rcg2 pcie_1_aux_clk_src = { 978 .cmd_rcgr = 0x1bac, 979 .mnd_width = 16, 980 .hid_width = 5, 981 .parent_map = gcc_xo_pcie_sleep_map, 982 .freq_tbl = ftbl_gcc_pcie_0_1_aux_clk, 983 .clkr.hw.init = &(struct clk_init_data){ 984 .name = "pcie_1_aux_clk_src", 985 .parent_names = gcc_xo_pcie_sleep, 986 .num_parents = 2, 987 .ops = &clk_rcg2_ops, 988 }, 989 }; 990 991 static const struct freq_tbl ftbl_gcc_pcie_0_1_pipe_clk[] = { 992 F(125000000, P_PCIE_0_1_PIPE_CLK, 1, 0, 0), 993 F(250000000, P_PCIE_0_1_PIPE_CLK, 1, 0, 0), 994 { } 995 }; 996 997 static struct clk_rcg2 pcie_0_pipe_clk_src = { 998 .cmd_rcgr = 0x1b18, 999 .hid_width = 5, 1000 .parent_map = gcc_xo_pcie_map, 1001 .freq_tbl = ftbl_gcc_pcie_0_1_pipe_clk, 1002 .clkr.hw.init = &(struct clk_init_data){ 1003 .name = "pcie_0_pipe_clk_src", 1004 .parent_names = gcc_xo_pcie, 1005 .num_parents = 2, 1006 .ops = &clk_rcg2_ops, 1007 }, 1008 }; 1009 1010 static struct clk_rcg2 pcie_1_pipe_clk_src = { 1011 .cmd_rcgr = 0x1b98, 1012 .hid_width = 5, 1013 .parent_map = gcc_xo_pcie_map, 1014 .freq_tbl = ftbl_gcc_pcie_0_1_pipe_clk, 1015 .clkr.hw.init = &(struct clk_init_data){ 1016 .name = "pcie_1_pipe_clk_src", 1017 .parent_names = gcc_xo_pcie, 1018 .num_parents = 2, 1019 .ops = &clk_rcg2_ops, 1020 }, 1021 }; 1022 1023 static const struct freq_tbl ftbl_gcc_pdm2_clk[] = { 1024 F(60000000, P_GPLL0, 10, 0, 0), 1025 { } 1026 }; 1027 1028 static struct clk_rcg2 pdm2_clk_src = { 1029 .cmd_rcgr = 0x0cd0, 1030 .hid_width = 5, 1031 .parent_map = gcc_xo_gpll0_map, 1032 .freq_tbl = ftbl_gcc_pdm2_clk, 1033 .clkr.hw.init = &(struct clk_init_data){ 1034 .name = "pdm2_clk_src", 1035 .parent_names = gcc_xo_gpll0, 1036 .num_parents = 2, 1037 .ops = &clk_rcg2_ops, 1038 }, 1039 }; 1040 1041 static const struct freq_tbl ftbl_gcc_sata_asic0_clk[] = { 1042 F(75000000, P_SATA_ASIC0_CLK, 1, 0, 0), 1043 F(150000000, P_SATA_ASIC0_CLK, 1, 0, 0), 1044 F(300000000, P_SATA_ASIC0_CLK, 1, 0, 0), 1045 { } 1046 }; 1047 1048 static struct clk_rcg2 sata_asic0_clk_src = { 1049 .cmd_rcgr = 0x1c94, 1050 .hid_width = 5, 1051 .parent_map = gcc_xo_sata_asic0_map, 1052 .freq_tbl = ftbl_gcc_sata_asic0_clk, 1053 .clkr.hw.init = &(struct clk_init_data){ 1054 .name = "sata_asic0_clk_src", 1055 .parent_names = gcc_xo_sata_asic0, 1056 .num_parents = 2, 1057 .ops = &clk_rcg2_ops, 1058 }, 1059 }; 1060 1061 static const struct freq_tbl ftbl_gcc_sata_pmalive_clk[] = { 1062 F(19200000, P_XO, 1, 0, 0), 1063 F(50000000, P_GPLL0, 12, 0, 0), 1064 F(100000000, P_GPLL0, 6, 0, 0), 1065 { } 1066 }; 1067 1068 static struct clk_rcg2 sata_pmalive_clk_src = { 1069 .cmd_rcgr = 0x1c80, 1070 .hid_width = 5, 1071 .parent_map = gcc_xo_gpll0_map, 1072 .freq_tbl = ftbl_gcc_sata_pmalive_clk, 1073 .clkr.hw.init = &(struct clk_init_data){ 1074 .name = "sata_pmalive_clk_src", 1075 .parent_names = gcc_xo_gpll0, 1076 .num_parents = 2, 1077 .ops = &clk_rcg2_ops, 1078 }, 1079 }; 1080 1081 static const struct freq_tbl ftbl_gcc_sata_rx_clk[] = { 1082 F(75000000, P_SATA_RX_CLK, 1, 0, 0), 1083 F(150000000, P_SATA_RX_CLK, 1, 0, 0), 1084 F(300000000, P_SATA_RX_CLK, 1, 0, 0), 1085 { } 1086 }; 1087 1088 static struct clk_rcg2 sata_rx_clk_src = { 1089 .cmd_rcgr = 0x1ca8, 1090 .hid_width = 5, 1091 .parent_map = gcc_xo_sata_rx_map, 1092 .freq_tbl = ftbl_gcc_sata_rx_clk, 1093 .clkr.hw.init = &(struct clk_init_data){ 1094 .name = "sata_rx_clk_src", 1095 .parent_names = gcc_xo_sata_rx, 1096 .num_parents = 2, 1097 .ops = &clk_rcg2_ops, 1098 }, 1099 }; 1100 1101 static const struct freq_tbl ftbl_gcc_sata_rx_oob_clk[] = { 1102 F(100000000, P_GPLL0, 6, 0, 0), 1103 { } 1104 }; 1105 1106 static struct clk_rcg2 sata_rx_oob_clk_src = { 1107 .cmd_rcgr = 0x1c5c, 1108 .hid_width = 5, 1109 .parent_map = gcc_xo_gpll0_map, 1110 .freq_tbl = ftbl_gcc_sata_rx_oob_clk, 1111 .clkr.hw.init = &(struct clk_init_data){ 1112 .name = "sata_rx_oob_clk_src", 1113 .parent_names = gcc_xo_gpll0, 1114 .num_parents = 2, 1115 .ops = &clk_rcg2_ops, 1116 }, 1117 }; 1118 1119 static const struct freq_tbl ftbl_gcc_sdcc1_4_apps_clk[] = { 1120 F(144000, P_XO, 16, 3, 25), 1121 F(400000, P_XO, 12, 1, 4), 1122 F(20000000, P_GPLL0, 15, 1, 2), 1123 F(25000000, P_GPLL0, 12, 1, 2), 1124 F(50000000, P_GPLL0, 12, 0, 0), 1125 F(100000000, P_GPLL0, 6, 0, 0), 1126 F(192000000, P_GPLL4, 4, 0, 0), 1127 F(200000000, P_GPLL0, 3, 0, 0), 1128 F(384000000, P_GPLL4, 2, 0, 0), 1129 { } 1130 }; 1131 1132 static struct clk_rcg2 sdcc1_apps_clk_src = { 1133 .cmd_rcgr = 0x04d0, 1134 .mnd_width = 8, 1135 .hid_width = 5, 1136 .parent_map = gcc_xo_gpll0_gpll4_map, 1137 .freq_tbl = ftbl_gcc_sdcc1_4_apps_clk, 1138 .clkr.hw.init = &(struct clk_init_data){ 1139 .name = "sdcc1_apps_clk_src", 1140 .parent_names = gcc_xo_gpll0_gpll4, 1141 .num_parents = 3, 1142 .ops = &clk_rcg2_ops, 1143 }, 1144 }; 1145 1146 static struct clk_rcg2 sdcc2_apps_clk_src = { 1147 .cmd_rcgr = 0x0510, 1148 .mnd_width = 8, 1149 .hid_width = 5, 1150 .parent_map = gcc_xo_gpll0_map, 1151 .freq_tbl = ftbl_gcc_sdcc1_4_apps_clk, 1152 .clkr.hw.init = &(struct clk_init_data){ 1153 .name = "sdcc2_apps_clk_src", 1154 .parent_names = gcc_xo_gpll0, 1155 .num_parents = 2, 1156 .ops = &clk_rcg2_ops, 1157 }, 1158 }; 1159 1160 static struct clk_rcg2 sdcc3_apps_clk_src = { 1161 .cmd_rcgr = 0x0550, 1162 .mnd_width = 8, 1163 .hid_width = 5, 1164 .parent_map = gcc_xo_gpll0_map, 1165 .freq_tbl = ftbl_gcc_sdcc1_4_apps_clk, 1166 .clkr.hw.init = &(struct clk_init_data){ 1167 .name = "sdcc3_apps_clk_src", 1168 .parent_names = gcc_xo_gpll0, 1169 .num_parents = 2, 1170 .ops = &clk_rcg2_ops, 1171 }, 1172 }; 1173 1174 static struct clk_rcg2 sdcc4_apps_clk_src = { 1175 .cmd_rcgr = 0x0590, 1176 .mnd_width = 8, 1177 .hid_width = 5, 1178 .parent_map = gcc_xo_gpll0_map, 1179 .freq_tbl = ftbl_gcc_sdcc1_4_apps_clk, 1180 .clkr.hw.init = &(struct clk_init_data){ 1181 .name = "sdcc4_apps_clk_src", 1182 .parent_names = gcc_xo_gpll0, 1183 .num_parents = 2, 1184 .ops = &clk_rcg2_ops, 1185 }, 1186 }; 1187 1188 static const struct freq_tbl ftbl_gcc_tsif_ref_clk[] = { 1189 F(105000, P_XO, 2, 1, 91), 1190 { } 1191 }; 1192 1193 static struct clk_rcg2 tsif_ref_clk_src = { 1194 .cmd_rcgr = 0x0d90, 1195 .mnd_width = 8, 1196 .hid_width = 5, 1197 .parent_map = gcc_xo_gpll0_map, 1198 .freq_tbl = ftbl_gcc_tsif_ref_clk, 1199 .clkr.hw.init = &(struct clk_init_data){ 1200 .name = "tsif_ref_clk_src", 1201 .parent_names = gcc_xo_gpll0, 1202 .num_parents = 2, 1203 .ops = &clk_rcg2_ops, 1204 }, 1205 }; 1206 1207 static const struct freq_tbl ftbl_gcc_usb30_mock_utmi_clk[] = { 1208 F(60000000, P_GPLL0, 10, 0, 0), 1209 { } 1210 }; 1211 1212 static struct clk_rcg2 usb30_mock_utmi_clk_src = { 1213 .cmd_rcgr = 0x03e8, 1214 .hid_width = 5, 1215 .parent_map = gcc_xo_gpll0_map, 1216 .freq_tbl = ftbl_gcc_usb30_mock_utmi_clk, 1217 .clkr.hw.init = &(struct clk_init_data){ 1218 .name = "usb30_mock_utmi_clk_src", 1219 .parent_names = gcc_xo_gpll0, 1220 .num_parents = 2, 1221 .ops = &clk_rcg2_ops, 1222 }, 1223 }; 1224 1225 static const struct freq_tbl ftbl_gcc_usb30_sec_mock_utmi_clk[] = { 1226 F(125000000, P_GPLL0, 1, 5, 24), 1227 { } 1228 }; 1229 1230 static struct clk_rcg2 usb30_sec_mock_utmi_clk_src = { 1231 .cmd_rcgr = 0x1be8, 1232 .hid_width = 5, 1233 .parent_map = gcc_xo_gpll0_map, 1234 .freq_tbl = ftbl_gcc_usb30_sec_mock_utmi_clk, 1235 .clkr.hw.init = &(struct clk_init_data){ 1236 .name = "usb30_sec_mock_utmi_clk_src", 1237 .parent_names = gcc_xo_gpll0, 1238 .num_parents = 2, 1239 .ops = &clk_rcg2_ops, 1240 }, 1241 }; 1242 1243 static const struct freq_tbl ftbl_gcc_usb_hs_system_clk[] = { 1244 F(75000000, P_GPLL0, 8, 0, 0), 1245 { } 1246 }; 1247 1248 static struct clk_rcg2 usb_hs_system_clk_src = { 1249 .cmd_rcgr = 0x0490, 1250 .hid_width = 5, 1251 .parent_map = gcc_xo_gpll0_map, 1252 .freq_tbl = ftbl_gcc_usb_hs_system_clk, 1253 .clkr.hw.init = &(struct clk_init_data){ 1254 .name = "usb_hs_system_clk_src", 1255 .parent_names = gcc_xo_gpll0, 1256 .num_parents = 2, 1257 .ops = &clk_rcg2_ops, 1258 }, 1259 }; 1260 1261 static const struct freq_tbl ftbl_gcc_usb_hsic_clk[] = { 1262 F(480000000, P_GPLL1, 1, 0, 0), 1263 { } 1264 }; 1265 1266 static u8 usb_hsic_clk_src_map[] = { 1267 [P_XO] = 0, 1268 [P_GPLL1] = 4, 1269 }; 1270 1271 static struct clk_rcg2 usb_hsic_clk_src = { 1272 .cmd_rcgr = 0x0440, 1273 .hid_width = 5, 1274 .parent_map = usb_hsic_clk_src_map, 1275 .freq_tbl = ftbl_gcc_usb_hsic_clk, 1276 .clkr.hw.init = &(struct clk_init_data){ 1277 .name = "usb_hsic_clk_src", 1278 .parent_names = (const char *[]){ 1279 "xo", 1280 "gpll1_vote", 1281 }, 1282 .num_parents = 2, 1283 .ops = &clk_rcg2_ops, 1284 }, 1285 }; 1286 1287 static const struct freq_tbl ftbl_gcc_usb_hsic_ahb_clk_src[] = { 1288 F(60000000, P_GPLL1, 8, 0, 0), 1289 { } 1290 }; 1291 1292 static struct clk_rcg2 usb_hsic_ahb_clk_src = { 1293 .cmd_rcgr = 0x046c, 1294 .mnd_width = 8, 1295 .hid_width = 5, 1296 .parent_map = usb_hsic_clk_src_map, 1297 .freq_tbl = ftbl_gcc_usb_hsic_ahb_clk_src, 1298 .clkr.hw.init = &(struct clk_init_data){ 1299 .name = "usb_hsic_ahb_clk_src", 1300 .parent_names = (const char *[]){ 1301 "xo", 1302 "gpll1_vote", 1303 }, 1304 .num_parents = 2, 1305 .ops = &clk_rcg2_ops, 1306 }, 1307 }; 1308 1309 static const struct freq_tbl ftbl_gcc_usb_hsic_io_cal_clk[] = { 1310 F(9600000, P_XO, 2, 0, 0), 1311 { } 1312 }; 1313 1314 static struct clk_rcg2 usb_hsic_io_cal_clk_src = { 1315 .cmd_rcgr = 0x0458, 1316 .hid_width = 5, 1317 .parent_map = gcc_xo_gpll0_map, 1318 .freq_tbl = ftbl_gcc_usb_hsic_io_cal_clk, 1319 .clkr.hw.init = &(struct clk_init_data){ 1320 .name = "usb_hsic_io_cal_clk_src", 1321 .parent_names = gcc_xo_gpll0, 1322 .num_parents = 1, 1323 .ops = &clk_rcg2_ops, 1324 }, 1325 }; 1326 1327 static struct clk_branch gcc_usb_hsic_mock_utmi_clk = { 1328 .halt_reg = 0x1f14, 1329 .clkr = { 1330 .enable_reg = 0x1f14, 1331 .enable_mask = BIT(0), 1332 .hw.init = &(struct clk_init_data){ 1333 .name = "gcc_usb_hsic_mock_utmi_clk", 1334 .parent_names = (const char *[]){ 1335 "usb_hsic_mock_utmi_clk_src", 1336 }, 1337 .num_parents = 1, 1338 .flags = CLK_SET_RATE_PARENT, 1339 .ops = &clk_branch2_ops, 1340 }, 1341 }, 1342 }; 1343 1344 static const struct freq_tbl ftbl_gcc_usb_hsic_mock_utmi_clk[] = { 1345 F(60000000, P_GPLL0, 10, 0, 0), 1346 { } 1347 }; 1348 1349 static struct clk_rcg2 usb_hsic_mock_utmi_clk_src = { 1350 .cmd_rcgr = 0x1f00, 1351 .hid_width = 5, 1352 .parent_map = gcc_xo_gpll0_map, 1353 .freq_tbl = ftbl_gcc_usb_hsic_mock_utmi_clk, 1354 .clkr.hw.init = &(struct clk_init_data){ 1355 .name = "usb_hsic_mock_utmi_clk_src", 1356 .parent_names = gcc_xo_gpll0, 1357 .num_parents = 1, 1358 .ops = &clk_rcg2_ops, 1359 }, 1360 }; 1361 1362 static const struct freq_tbl ftbl_gcc_usb_hsic_system_clk[] = { 1363 F(75000000, P_GPLL0, 8, 0, 0), 1364 { } 1365 }; 1366 1367 static struct clk_rcg2 usb_hsic_system_clk_src = { 1368 .cmd_rcgr = 0x041c, 1369 .hid_width = 5, 1370 .parent_map = gcc_xo_gpll0_map, 1371 .freq_tbl = ftbl_gcc_usb_hsic_system_clk, 1372 .clkr.hw.init = &(struct clk_init_data){ 1373 .name = "usb_hsic_system_clk_src", 1374 .parent_names = gcc_xo_gpll0, 1375 .num_parents = 2, 1376 .ops = &clk_rcg2_ops, 1377 }, 1378 }; 1379 1380 static struct clk_branch gcc_bam_dma_ahb_clk = { 1381 .halt_reg = 0x0d44, 1382 .halt_check = BRANCH_HALT_VOTED, 1383 .clkr = { 1384 .enable_reg = 0x1484, 1385 .enable_mask = BIT(12), 1386 .hw.init = &(struct clk_init_data){ 1387 .name = "gcc_bam_dma_ahb_clk", 1388 .parent_names = (const char *[]){ 1389 "periph_noc_clk_src", 1390 }, 1391 .num_parents = 1, 1392 .ops = &clk_branch2_ops, 1393 }, 1394 }, 1395 }; 1396 1397 static struct clk_branch gcc_blsp1_ahb_clk = { 1398 .halt_reg = 0x05c4, 1399 .halt_check = BRANCH_HALT_VOTED, 1400 .clkr = { 1401 .enable_reg = 0x1484, 1402 .enable_mask = BIT(17), 1403 .hw.init = &(struct clk_init_data){ 1404 .name = "gcc_blsp1_ahb_clk", 1405 .parent_names = (const char *[]){ 1406 "periph_noc_clk_src", 1407 }, 1408 .num_parents = 1, 1409 .ops = &clk_branch2_ops, 1410 }, 1411 }, 1412 }; 1413 1414 static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = { 1415 .halt_reg = 0x0648, 1416 .clkr = { 1417 .enable_reg = 0x0648, 1418 .enable_mask = BIT(0), 1419 .hw.init = &(struct clk_init_data){ 1420 .name = "gcc_blsp1_qup1_i2c_apps_clk", 1421 .parent_names = (const char *[]){ 1422 "blsp1_qup1_i2c_apps_clk_src", 1423 }, 1424 .num_parents = 1, 1425 .flags = CLK_SET_RATE_PARENT, 1426 .ops = &clk_branch2_ops, 1427 }, 1428 }, 1429 }; 1430 1431 static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = { 1432 .halt_reg = 0x0644, 1433 .clkr = { 1434 .enable_reg = 0x0644, 1435 .enable_mask = BIT(0), 1436 .hw.init = &(struct clk_init_data){ 1437 .name = "gcc_blsp1_qup1_spi_apps_clk", 1438 .parent_names = (const char *[]){ 1439 "blsp1_qup1_spi_apps_clk_src", 1440 }, 1441 .num_parents = 1, 1442 .flags = CLK_SET_RATE_PARENT, 1443 .ops = &clk_branch2_ops, 1444 }, 1445 }, 1446 }; 1447 1448 static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = { 1449 .halt_reg = 0x06c8, 1450 .clkr = { 1451 .enable_reg = 0x06c8, 1452 .enable_mask = BIT(0), 1453 .hw.init = &(struct clk_init_data){ 1454 .name = "gcc_blsp1_qup2_i2c_apps_clk", 1455 .parent_names = (const char *[]){ 1456 "blsp1_qup2_i2c_apps_clk_src", 1457 }, 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_blsp1_qup2_spi_apps_clk = { 1466 .halt_reg = 0x06c4, 1467 .clkr = { 1468 .enable_reg = 0x06c4, 1469 .enable_mask = BIT(0), 1470 .hw.init = &(struct clk_init_data){ 1471 .name = "gcc_blsp1_qup2_spi_apps_clk", 1472 .parent_names = (const char *[]){ 1473 "blsp1_qup2_spi_apps_clk_src", 1474 }, 1475 .num_parents = 1, 1476 .flags = CLK_SET_RATE_PARENT, 1477 .ops = &clk_branch2_ops, 1478 }, 1479 }, 1480 }; 1481 1482 static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = { 1483 .halt_reg = 0x0748, 1484 .clkr = { 1485 .enable_reg = 0x0748, 1486 .enable_mask = BIT(0), 1487 .hw.init = &(struct clk_init_data){ 1488 .name = "gcc_blsp1_qup3_i2c_apps_clk", 1489 .parent_names = (const char *[]){ 1490 "blsp1_qup3_i2c_apps_clk_src", 1491 }, 1492 .num_parents = 1, 1493 .flags = CLK_SET_RATE_PARENT, 1494 .ops = &clk_branch2_ops, 1495 }, 1496 }, 1497 }; 1498 1499 static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = { 1500 .halt_reg = 0x0744, 1501 .clkr = { 1502 .enable_reg = 0x0744, 1503 .enable_mask = BIT(0), 1504 .hw.init = &(struct clk_init_data){ 1505 .name = "gcc_blsp1_qup3_spi_apps_clk", 1506 .parent_names = (const char *[]){ 1507 "blsp1_qup3_spi_apps_clk_src", 1508 }, 1509 .num_parents = 1, 1510 .flags = CLK_SET_RATE_PARENT, 1511 .ops = &clk_branch2_ops, 1512 }, 1513 }, 1514 }; 1515 1516 static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = { 1517 .halt_reg = 0x07c8, 1518 .clkr = { 1519 .enable_reg = 0x07c8, 1520 .enable_mask = BIT(0), 1521 .hw.init = &(struct clk_init_data){ 1522 .name = "gcc_blsp1_qup4_i2c_apps_clk", 1523 .parent_names = (const char *[]){ 1524 "blsp1_qup4_i2c_apps_clk_src", 1525 }, 1526 .num_parents = 1, 1527 .flags = CLK_SET_RATE_PARENT, 1528 .ops = &clk_branch2_ops, 1529 }, 1530 }, 1531 }; 1532 1533 static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = { 1534 .halt_reg = 0x07c4, 1535 .clkr = { 1536 .enable_reg = 0x07c4, 1537 .enable_mask = BIT(0), 1538 .hw.init = &(struct clk_init_data){ 1539 .name = "gcc_blsp1_qup4_spi_apps_clk", 1540 .parent_names = (const char *[]){ 1541 "blsp1_qup4_spi_apps_clk_src", 1542 }, 1543 .num_parents = 1, 1544 .flags = CLK_SET_RATE_PARENT, 1545 .ops = &clk_branch2_ops, 1546 }, 1547 }, 1548 }; 1549 1550 static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = { 1551 .halt_reg = 0x0848, 1552 .clkr = { 1553 .enable_reg = 0x0848, 1554 .enable_mask = BIT(0), 1555 .hw.init = &(struct clk_init_data){ 1556 .name = "gcc_blsp1_qup5_i2c_apps_clk", 1557 .parent_names = (const char *[]){ 1558 "blsp1_qup5_i2c_apps_clk_src", 1559 }, 1560 .num_parents = 1, 1561 .flags = CLK_SET_RATE_PARENT, 1562 .ops = &clk_branch2_ops, 1563 }, 1564 }, 1565 }; 1566 1567 static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = { 1568 .halt_reg = 0x0844, 1569 .clkr = { 1570 .enable_reg = 0x0844, 1571 .enable_mask = BIT(0), 1572 .hw.init = &(struct clk_init_data){ 1573 .name = "gcc_blsp1_qup5_spi_apps_clk", 1574 .parent_names = (const char *[]){ 1575 "blsp1_qup5_spi_apps_clk_src", 1576 }, 1577 .num_parents = 1, 1578 .flags = CLK_SET_RATE_PARENT, 1579 .ops = &clk_branch2_ops, 1580 }, 1581 }, 1582 }; 1583 1584 static struct clk_branch gcc_blsp1_qup6_i2c_apps_clk = { 1585 .halt_reg = 0x08c8, 1586 .clkr = { 1587 .enable_reg = 0x08c8, 1588 .enable_mask = BIT(0), 1589 .hw.init = &(struct clk_init_data){ 1590 .name = "gcc_blsp1_qup6_i2c_apps_clk", 1591 .parent_names = (const char *[]){ 1592 "blsp1_qup6_i2c_apps_clk_src", 1593 }, 1594 .num_parents = 1, 1595 .flags = CLK_SET_RATE_PARENT, 1596 .ops = &clk_branch2_ops, 1597 }, 1598 }, 1599 }; 1600 1601 static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = { 1602 .halt_reg = 0x08c4, 1603 .clkr = { 1604 .enable_reg = 0x08c4, 1605 .enable_mask = BIT(0), 1606 .hw.init = &(struct clk_init_data){ 1607 .name = "gcc_blsp1_qup6_spi_apps_clk", 1608 .parent_names = (const char *[]){ 1609 "blsp1_qup6_spi_apps_clk_src", 1610 }, 1611 .num_parents = 1, 1612 .flags = CLK_SET_RATE_PARENT, 1613 .ops = &clk_branch2_ops, 1614 }, 1615 }, 1616 }; 1617 1618 static struct clk_branch gcc_blsp1_uart1_apps_clk = { 1619 .halt_reg = 0x0684, 1620 .clkr = { 1621 .enable_reg = 0x0684, 1622 .enable_mask = BIT(0), 1623 .hw.init = &(struct clk_init_data){ 1624 .name = "gcc_blsp1_uart1_apps_clk", 1625 .parent_names = (const char *[]){ 1626 "blsp1_uart1_apps_clk_src", 1627 }, 1628 .num_parents = 1, 1629 .flags = CLK_SET_RATE_PARENT, 1630 .ops = &clk_branch2_ops, 1631 }, 1632 }, 1633 }; 1634 1635 static struct clk_branch gcc_blsp1_uart2_apps_clk = { 1636 .halt_reg = 0x0704, 1637 .clkr = { 1638 .enable_reg = 0x0704, 1639 .enable_mask = BIT(0), 1640 .hw.init = &(struct clk_init_data){ 1641 .name = "gcc_blsp1_uart2_apps_clk", 1642 .parent_names = (const char *[]){ 1643 "blsp1_uart2_apps_clk_src", 1644 }, 1645 .num_parents = 1, 1646 .flags = CLK_SET_RATE_PARENT, 1647 .ops = &clk_branch2_ops, 1648 }, 1649 }, 1650 }; 1651 1652 static struct clk_branch gcc_blsp1_uart3_apps_clk = { 1653 .halt_reg = 0x0784, 1654 .clkr = { 1655 .enable_reg = 0x0784, 1656 .enable_mask = BIT(0), 1657 .hw.init = &(struct clk_init_data){ 1658 .name = "gcc_blsp1_uart3_apps_clk", 1659 .parent_names = (const char *[]){ 1660 "blsp1_uart3_apps_clk_src", 1661 }, 1662 .num_parents = 1, 1663 .flags = CLK_SET_RATE_PARENT, 1664 .ops = &clk_branch2_ops, 1665 }, 1666 }, 1667 }; 1668 1669 static struct clk_branch gcc_blsp1_uart4_apps_clk = { 1670 .halt_reg = 0x0804, 1671 .clkr = { 1672 .enable_reg = 0x0804, 1673 .enable_mask = BIT(0), 1674 .hw.init = &(struct clk_init_data){ 1675 .name = "gcc_blsp1_uart4_apps_clk", 1676 .parent_names = (const char *[]){ 1677 "blsp1_uart4_apps_clk_src", 1678 }, 1679 .num_parents = 1, 1680 .flags = CLK_SET_RATE_PARENT, 1681 .ops = &clk_branch2_ops, 1682 }, 1683 }, 1684 }; 1685 1686 static struct clk_branch gcc_blsp1_uart5_apps_clk = { 1687 .halt_reg = 0x0884, 1688 .clkr = { 1689 .enable_reg = 0x0884, 1690 .enable_mask = BIT(0), 1691 .hw.init = &(struct clk_init_data){ 1692 .name = "gcc_blsp1_uart5_apps_clk", 1693 .parent_names = (const char *[]){ 1694 "blsp1_uart5_apps_clk_src", 1695 }, 1696 .num_parents = 1, 1697 .flags = CLK_SET_RATE_PARENT, 1698 .ops = &clk_branch2_ops, 1699 }, 1700 }, 1701 }; 1702 1703 static struct clk_branch gcc_blsp1_uart6_apps_clk = { 1704 .halt_reg = 0x0904, 1705 .clkr = { 1706 .enable_reg = 0x0904, 1707 .enable_mask = BIT(0), 1708 .hw.init = &(struct clk_init_data){ 1709 .name = "gcc_blsp1_uart6_apps_clk", 1710 .parent_names = (const char *[]){ 1711 "blsp1_uart6_apps_clk_src", 1712 }, 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_blsp2_ahb_clk = { 1721 .halt_reg = 0x0944, 1722 .halt_check = BRANCH_HALT_VOTED, 1723 .clkr = { 1724 .enable_reg = 0x1484, 1725 .enable_mask = BIT(15), 1726 .hw.init = &(struct clk_init_data){ 1727 .name = "gcc_blsp2_ahb_clk", 1728 .parent_names = (const char *[]){ 1729 "periph_noc_clk_src", 1730 }, 1731 .num_parents = 1, 1732 .ops = &clk_branch2_ops, 1733 }, 1734 }, 1735 }; 1736 1737 static struct clk_branch gcc_blsp2_qup1_i2c_apps_clk = { 1738 .halt_reg = 0x0988, 1739 .clkr = { 1740 .enable_reg = 0x0988, 1741 .enable_mask = BIT(0), 1742 .hw.init = &(struct clk_init_data){ 1743 .name = "gcc_blsp2_qup1_i2c_apps_clk", 1744 .parent_names = (const char *[]){ 1745 "blsp2_qup1_i2c_apps_clk_src", 1746 }, 1747 .num_parents = 1, 1748 .flags = CLK_SET_RATE_PARENT, 1749 .ops = &clk_branch2_ops, 1750 }, 1751 }, 1752 }; 1753 1754 static struct clk_branch gcc_blsp2_qup1_spi_apps_clk = { 1755 .halt_reg = 0x0984, 1756 .clkr = { 1757 .enable_reg = 0x0984, 1758 .enable_mask = BIT(0), 1759 .hw.init = &(struct clk_init_data){ 1760 .name = "gcc_blsp2_qup1_spi_apps_clk", 1761 .parent_names = (const char *[]){ 1762 "blsp2_qup1_spi_apps_clk_src", 1763 }, 1764 .num_parents = 1, 1765 .flags = CLK_SET_RATE_PARENT, 1766 .ops = &clk_branch2_ops, 1767 }, 1768 }, 1769 }; 1770 1771 static struct clk_branch gcc_blsp2_qup2_i2c_apps_clk = { 1772 .halt_reg = 0x0a08, 1773 .clkr = { 1774 .enable_reg = 0x0a08, 1775 .enable_mask = BIT(0), 1776 .hw.init = &(struct clk_init_data){ 1777 .name = "gcc_blsp2_qup2_i2c_apps_clk", 1778 .parent_names = (const char *[]){ 1779 "blsp2_qup2_i2c_apps_clk_src", 1780 }, 1781 .num_parents = 1, 1782 .flags = CLK_SET_RATE_PARENT, 1783 .ops = &clk_branch2_ops, 1784 }, 1785 }, 1786 }; 1787 1788 static struct clk_branch gcc_blsp2_qup2_spi_apps_clk = { 1789 .halt_reg = 0x0a04, 1790 .clkr = { 1791 .enable_reg = 0x0a04, 1792 .enable_mask = BIT(0), 1793 .hw.init = &(struct clk_init_data){ 1794 .name = "gcc_blsp2_qup2_spi_apps_clk", 1795 .parent_names = (const char *[]){ 1796 "blsp2_qup2_spi_apps_clk_src", 1797 }, 1798 .num_parents = 1, 1799 .flags = CLK_SET_RATE_PARENT, 1800 .ops = &clk_branch2_ops, 1801 }, 1802 }, 1803 }; 1804 1805 static struct clk_branch gcc_blsp2_qup3_i2c_apps_clk = { 1806 .halt_reg = 0x0a88, 1807 .clkr = { 1808 .enable_reg = 0x0a88, 1809 .enable_mask = BIT(0), 1810 .hw.init = &(struct clk_init_data){ 1811 .name = "gcc_blsp2_qup3_i2c_apps_clk", 1812 .parent_names = (const char *[]){ 1813 "blsp2_qup3_i2c_apps_clk_src", 1814 }, 1815 .num_parents = 1, 1816 .flags = CLK_SET_RATE_PARENT, 1817 .ops = &clk_branch2_ops, 1818 }, 1819 }, 1820 }; 1821 1822 static struct clk_branch gcc_blsp2_qup3_spi_apps_clk = { 1823 .halt_reg = 0x0a84, 1824 .clkr = { 1825 .enable_reg = 0x0a84, 1826 .enable_mask = BIT(0), 1827 .hw.init = &(struct clk_init_data){ 1828 .name = "gcc_blsp2_qup3_spi_apps_clk", 1829 .parent_names = (const char *[]){ 1830 "blsp2_qup3_spi_apps_clk_src", 1831 }, 1832 .num_parents = 1, 1833 .flags = CLK_SET_RATE_PARENT, 1834 .ops = &clk_branch2_ops, 1835 }, 1836 }, 1837 }; 1838 1839 static struct clk_branch gcc_blsp2_qup4_i2c_apps_clk = { 1840 .halt_reg = 0x0b08, 1841 .clkr = { 1842 .enable_reg = 0x0b08, 1843 .enable_mask = BIT(0), 1844 .hw.init = &(struct clk_init_data){ 1845 .name = "gcc_blsp2_qup4_i2c_apps_clk", 1846 .parent_names = (const char *[]){ 1847 "blsp2_qup4_i2c_apps_clk_src", 1848 }, 1849 .num_parents = 1, 1850 .flags = CLK_SET_RATE_PARENT, 1851 .ops = &clk_branch2_ops, 1852 }, 1853 }, 1854 }; 1855 1856 static struct clk_branch gcc_blsp2_qup4_spi_apps_clk = { 1857 .halt_reg = 0x0b04, 1858 .clkr = { 1859 .enable_reg = 0x0b04, 1860 .enable_mask = BIT(0), 1861 .hw.init = &(struct clk_init_data){ 1862 .name = "gcc_blsp2_qup4_spi_apps_clk", 1863 .parent_names = (const char *[]){ 1864 "blsp2_qup4_spi_apps_clk_src", 1865 }, 1866 .num_parents = 1, 1867 .flags = CLK_SET_RATE_PARENT, 1868 .ops = &clk_branch2_ops, 1869 }, 1870 }, 1871 }; 1872 1873 static struct clk_branch gcc_blsp2_qup5_i2c_apps_clk = { 1874 .halt_reg = 0x0b88, 1875 .clkr = { 1876 .enable_reg = 0x0b88, 1877 .enable_mask = BIT(0), 1878 .hw.init = &(struct clk_init_data){ 1879 .name = "gcc_blsp2_qup5_i2c_apps_clk", 1880 .parent_names = (const char *[]){ 1881 "blsp2_qup5_i2c_apps_clk_src", 1882 }, 1883 .num_parents = 1, 1884 .flags = CLK_SET_RATE_PARENT, 1885 .ops = &clk_branch2_ops, 1886 }, 1887 }, 1888 }; 1889 1890 static struct clk_branch gcc_blsp2_qup5_spi_apps_clk = { 1891 .halt_reg = 0x0b84, 1892 .clkr = { 1893 .enable_reg = 0x0b84, 1894 .enable_mask = BIT(0), 1895 .hw.init = &(struct clk_init_data){ 1896 .name = "gcc_blsp2_qup5_spi_apps_clk", 1897 .parent_names = (const char *[]){ 1898 "blsp2_qup5_spi_apps_clk_src", 1899 }, 1900 .num_parents = 1, 1901 .flags = CLK_SET_RATE_PARENT, 1902 .ops = &clk_branch2_ops, 1903 }, 1904 }, 1905 }; 1906 1907 static struct clk_branch gcc_blsp2_qup6_i2c_apps_clk = { 1908 .halt_reg = 0x0c08, 1909 .clkr = { 1910 .enable_reg = 0x0c08, 1911 .enable_mask = BIT(0), 1912 .hw.init = &(struct clk_init_data){ 1913 .name = "gcc_blsp2_qup6_i2c_apps_clk", 1914 .parent_names = (const char *[]){ 1915 "blsp2_qup6_i2c_apps_clk_src", 1916 }, 1917 .num_parents = 1, 1918 .flags = CLK_SET_RATE_PARENT, 1919 .ops = &clk_branch2_ops, 1920 }, 1921 }, 1922 }; 1923 1924 static struct clk_branch gcc_blsp2_qup6_spi_apps_clk = { 1925 .halt_reg = 0x0c04, 1926 .clkr = { 1927 .enable_reg = 0x0c04, 1928 .enable_mask = BIT(0), 1929 .hw.init = &(struct clk_init_data){ 1930 .name = "gcc_blsp2_qup6_spi_apps_clk", 1931 .parent_names = (const char *[]){ 1932 "blsp2_qup6_spi_apps_clk_src", 1933 }, 1934 .num_parents = 1, 1935 .flags = CLK_SET_RATE_PARENT, 1936 .ops = &clk_branch2_ops, 1937 }, 1938 }, 1939 }; 1940 1941 static struct clk_branch gcc_blsp2_uart1_apps_clk = { 1942 .halt_reg = 0x09c4, 1943 .clkr = { 1944 .enable_reg = 0x09c4, 1945 .enable_mask = BIT(0), 1946 .hw.init = &(struct clk_init_data){ 1947 .name = "gcc_blsp2_uart1_apps_clk", 1948 .parent_names = (const char *[]){ 1949 "blsp2_uart1_apps_clk_src", 1950 }, 1951 .num_parents = 1, 1952 .flags = CLK_SET_RATE_PARENT, 1953 .ops = &clk_branch2_ops, 1954 }, 1955 }, 1956 }; 1957 1958 static struct clk_branch gcc_blsp2_uart2_apps_clk = { 1959 .halt_reg = 0x0a44, 1960 .clkr = { 1961 .enable_reg = 0x0a44, 1962 .enable_mask = BIT(0), 1963 .hw.init = &(struct clk_init_data){ 1964 .name = "gcc_blsp2_uart2_apps_clk", 1965 .parent_names = (const char *[]){ 1966 "blsp2_uart2_apps_clk_src", 1967 }, 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_blsp2_uart3_apps_clk = { 1976 .halt_reg = 0x0ac4, 1977 .clkr = { 1978 .enable_reg = 0x0ac4, 1979 .enable_mask = BIT(0), 1980 .hw.init = &(struct clk_init_data){ 1981 .name = "gcc_blsp2_uart3_apps_clk", 1982 .parent_names = (const char *[]){ 1983 "blsp2_uart3_apps_clk_src", 1984 }, 1985 .num_parents = 1, 1986 .flags = CLK_SET_RATE_PARENT, 1987 .ops = &clk_branch2_ops, 1988 }, 1989 }, 1990 }; 1991 1992 static struct clk_branch gcc_blsp2_uart4_apps_clk = { 1993 .halt_reg = 0x0b44, 1994 .clkr = { 1995 .enable_reg = 0x0b44, 1996 .enable_mask = BIT(0), 1997 .hw.init = &(struct clk_init_data){ 1998 .name = "gcc_blsp2_uart4_apps_clk", 1999 .parent_names = (const char *[]){ 2000 "blsp2_uart4_apps_clk_src", 2001 }, 2002 .num_parents = 1, 2003 .flags = CLK_SET_RATE_PARENT, 2004 .ops = &clk_branch2_ops, 2005 }, 2006 }, 2007 }; 2008 2009 static struct clk_branch gcc_blsp2_uart5_apps_clk = { 2010 .halt_reg = 0x0bc4, 2011 .clkr = { 2012 .enable_reg = 0x0bc4, 2013 .enable_mask = BIT(0), 2014 .hw.init = &(struct clk_init_data){ 2015 .name = "gcc_blsp2_uart5_apps_clk", 2016 .parent_names = (const char *[]){ 2017 "blsp2_uart5_apps_clk_src", 2018 }, 2019 .num_parents = 1, 2020 .flags = CLK_SET_RATE_PARENT, 2021 .ops = &clk_branch2_ops, 2022 }, 2023 }, 2024 }; 2025 2026 static struct clk_branch gcc_blsp2_uart6_apps_clk = { 2027 .halt_reg = 0x0c44, 2028 .clkr = { 2029 .enable_reg = 0x0c44, 2030 .enable_mask = BIT(0), 2031 .hw.init = &(struct clk_init_data){ 2032 .name = "gcc_blsp2_uart6_apps_clk", 2033 .parent_names = (const char *[]){ 2034 "blsp2_uart6_apps_clk_src", 2035 }, 2036 .num_parents = 1, 2037 .flags = CLK_SET_RATE_PARENT, 2038 .ops = &clk_branch2_ops, 2039 }, 2040 }, 2041 }; 2042 2043 static struct clk_branch gcc_boot_rom_ahb_clk = { 2044 .halt_reg = 0x0e04, 2045 .halt_check = BRANCH_HALT_VOTED, 2046 .clkr = { 2047 .enable_reg = 0x1484, 2048 .enable_mask = BIT(10), 2049 .hw.init = &(struct clk_init_data){ 2050 .name = "gcc_boot_rom_ahb_clk", 2051 .parent_names = (const char *[]){ 2052 "config_noc_clk_src", 2053 }, 2054 .num_parents = 1, 2055 .ops = &clk_branch2_ops, 2056 }, 2057 }, 2058 }; 2059 2060 static struct clk_branch gcc_ce1_ahb_clk = { 2061 .halt_reg = 0x104c, 2062 .halt_check = BRANCH_HALT_VOTED, 2063 .clkr = { 2064 .enable_reg = 0x1484, 2065 .enable_mask = BIT(3), 2066 .hw.init = &(struct clk_init_data){ 2067 .name = "gcc_ce1_ahb_clk", 2068 .parent_names = (const char *[]){ 2069 "config_noc_clk_src", 2070 }, 2071 .num_parents = 1, 2072 .ops = &clk_branch2_ops, 2073 }, 2074 }, 2075 }; 2076 2077 static struct clk_branch gcc_ce1_axi_clk = { 2078 .halt_reg = 0x1048, 2079 .halt_check = BRANCH_HALT_VOTED, 2080 .clkr = { 2081 .enable_reg = 0x1484, 2082 .enable_mask = BIT(4), 2083 .hw.init = &(struct clk_init_data){ 2084 .name = "gcc_ce1_axi_clk", 2085 .parent_names = (const char *[]){ 2086 "system_noc_clk_src", 2087 }, 2088 .num_parents = 1, 2089 .ops = &clk_branch2_ops, 2090 }, 2091 }, 2092 }; 2093 2094 static struct clk_branch gcc_ce1_clk = { 2095 .halt_reg = 0x1050, 2096 .halt_check = BRANCH_HALT_VOTED, 2097 .clkr = { 2098 .enable_reg = 0x1484, 2099 .enable_mask = BIT(5), 2100 .hw.init = &(struct clk_init_data){ 2101 .name = "gcc_ce1_clk", 2102 .parent_names = (const char *[]){ 2103 "ce1_clk_src", 2104 }, 2105 .num_parents = 1, 2106 .ops = &clk_branch2_ops, 2107 }, 2108 }, 2109 }; 2110 2111 static struct clk_branch gcc_ce2_ahb_clk = { 2112 .halt_reg = 0x108c, 2113 .halt_check = BRANCH_HALT_VOTED, 2114 .clkr = { 2115 .enable_reg = 0x1484, 2116 .enable_mask = BIT(0), 2117 .hw.init = &(struct clk_init_data){ 2118 .name = "gcc_ce2_ahb_clk", 2119 .parent_names = (const char *[]){ 2120 "config_noc_clk_src", 2121 }, 2122 .num_parents = 1, 2123 .ops = &clk_branch2_ops, 2124 }, 2125 }, 2126 }; 2127 2128 static struct clk_branch gcc_ce2_axi_clk = { 2129 .halt_reg = 0x1088, 2130 .halt_check = BRANCH_HALT_VOTED, 2131 .clkr = { 2132 .enable_reg = 0x1484, 2133 .enable_mask = BIT(1), 2134 .hw.init = &(struct clk_init_data){ 2135 .name = "gcc_ce2_axi_clk", 2136 .parent_names = (const char *[]){ 2137 "system_noc_clk_src", 2138 }, 2139 .num_parents = 1, 2140 .ops = &clk_branch2_ops, 2141 }, 2142 }, 2143 }; 2144 2145 static struct clk_branch gcc_ce2_clk = { 2146 .halt_reg = 0x1090, 2147 .halt_check = BRANCH_HALT_VOTED, 2148 .clkr = { 2149 .enable_reg = 0x1484, 2150 .enable_mask = BIT(2), 2151 .hw.init = &(struct clk_init_data){ 2152 .name = "gcc_ce2_clk", 2153 .parent_names = (const char *[]){ 2154 "ce2_clk_src", 2155 }, 2156 .num_parents = 1, 2157 .flags = CLK_SET_RATE_PARENT, 2158 .ops = &clk_branch2_ops, 2159 }, 2160 }, 2161 }; 2162 2163 static struct clk_branch gcc_ce3_ahb_clk = { 2164 .halt_reg = 0x1d0c, 2165 .halt_check = BRANCH_HALT_VOTED, 2166 .clkr = { 2167 .enable_reg = 0x1d0c, 2168 .enable_mask = BIT(0), 2169 .hw.init = &(struct clk_init_data){ 2170 .name = "gcc_ce3_ahb_clk", 2171 .parent_names = (const char *[]){ 2172 "config_noc_clk_src", 2173 }, 2174 .num_parents = 1, 2175 .ops = &clk_branch2_ops, 2176 }, 2177 }, 2178 }; 2179 2180 static struct clk_branch gcc_ce3_axi_clk = { 2181 .halt_reg = 0x1088, 2182 .halt_check = BRANCH_HALT_VOTED, 2183 .clkr = { 2184 .enable_reg = 0x1d08, 2185 .enable_mask = BIT(0), 2186 .hw.init = &(struct clk_init_data){ 2187 .name = "gcc_ce3_axi_clk", 2188 .parent_names = (const char *[]){ 2189 "system_noc_clk_src", 2190 }, 2191 .num_parents = 1, 2192 .ops = &clk_branch2_ops, 2193 }, 2194 }, 2195 }; 2196 2197 static struct clk_branch gcc_ce3_clk = { 2198 .halt_reg = 0x1090, 2199 .halt_check = BRANCH_HALT_VOTED, 2200 .clkr = { 2201 .enable_reg = 0x1d04, 2202 .enable_mask = BIT(0), 2203 .hw.init = &(struct clk_init_data){ 2204 .name = "gcc_ce3_clk", 2205 .parent_names = (const char *[]){ 2206 "ce3_clk_src", 2207 }, 2208 .num_parents = 1, 2209 .flags = CLK_SET_RATE_PARENT, 2210 .ops = &clk_branch2_ops, 2211 }, 2212 }, 2213 }; 2214 2215 static struct clk_branch gcc_gp1_clk = { 2216 .halt_reg = 0x1900, 2217 .clkr = { 2218 .enable_reg = 0x1900, 2219 .enable_mask = BIT(0), 2220 .hw.init = &(struct clk_init_data){ 2221 .name = "gcc_gp1_clk", 2222 .parent_names = (const char *[]){ 2223 "gp1_clk_src", 2224 }, 2225 .num_parents = 1, 2226 .flags = CLK_SET_RATE_PARENT, 2227 .ops = &clk_branch2_ops, 2228 }, 2229 }, 2230 }; 2231 2232 static struct clk_branch gcc_gp2_clk = { 2233 .halt_reg = 0x1940, 2234 .clkr = { 2235 .enable_reg = 0x1940, 2236 .enable_mask = BIT(0), 2237 .hw.init = &(struct clk_init_data){ 2238 .name = "gcc_gp2_clk", 2239 .parent_names = (const char *[]){ 2240 "gp2_clk_src", 2241 }, 2242 .num_parents = 1, 2243 .flags = CLK_SET_RATE_PARENT, 2244 .ops = &clk_branch2_ops, 2245 }, 2246 }, 2247 }; 2248 2249 static struct clk_branch gcc_gp3_clk = { 2250 .halt_reg = 0x1980, 2251 .clkr = { 2252 .enable_reg = 0x1980, 2253 .enable_mask = BIT(0), 2254 .hw.init = &(struct clk_init_data){ 2255 .name = "gcc_gp3_clk", 2256 .parent_names = (const char *[]){ 2257 "gp3_clk_src", 2258 }, 2259 .num_parents = 1, 2260 .flags = CLK_SET_RATE_PARENT, 2261 .ops = &clk_branch2_ops, 2262 }, 2263 }, 2264 }; 2265 2266 static struct clk_branch gcc_ocmem_noc_cfg_ahb_clk = { 2267 .halt_reg = 0x0248, 2268 .clkr = { 2269 .enable_reg = 0x0248, 2270 .enable_mask = BIT(0), 2271 .hw.init = &(struct clk_init_data){ 2272 .name = "gcc_ocmem_noc_cfg_ahb_clk", 2273 .parent_names = (const char *[]){ 2274 "config_noc_clk_src", 2275 }, 2276 .num_parents = 1, 2277 .ops = &clk_branch2_ops, 2278 }, 2279 }, 2280 }; 2281 2282 static struct clk_branch gcc_pcie_0_aux_clk = { 2283 .halt_reg = 0x1b10, 2284 .clkr = { 2285 .enable_reg = 0x1b10, 2286 .enable_mask = BIT(0), 2287 .hw.init = &(struct clk_init_data){ 2288 .name = "gcc_pcie_0_aux_clk", 2289 .parent_names = (const char *[]){ 2290 "pcie_0_aux_clk_src", 2291 }, 2292 .num_parents = 1, 2293 .flags = CLK_SET_RATE_PARENT, 2294 .ops = &clk_branch2_ops, 2295 }, 2296 }, 2297 }; 2298 2299 static struct clk_branch gcc_pcie_0_cfg_ahb_clk = { 2300 .halt_reg = 0x1b0c, 2301 .clkr = { 2302 .enable_reg = 0x1b0c, 2303 .enable_mask = BIT(0), 2304 .hw.init = &(struct clk_init_data){ 2305 .name = "gcc_pcie_0_cfg_ahb_clk", 2306 .parent_names = (const char *[]){ 2307 "config_noc_clk_src", 2308 }, 2309 .num_parents = 1, 2310 .flags = CLK_SET_RATE_PARENT, 2311 .ops = &clk_branch2_ops, 2312 }, 2313 }, 2314 }; 2315 2316 static struct clk_branch gcc_pcie_0_mstr_axi_clk = { 2317 .halt_reg = 0x1b08, 2318 .clkr = { 2319 .enable_reg = 0x1b08, 2320 .enable_mask = BIT(0), 2321 .hw.init = &(struct clk_init_data){ 2322 .name = "gcc_pcie_0_mstr_axi_clk", 2323 .parent_names = (const char *[]){ 2324 "config_noc_clk_src", 2325 }, 2326 .num_parents = 1, 2327 .flags = CLK_SET_RATE_PARENT, 2328 .ops = &clk_branch2_ops, 2329 }, 2330 }, 2331 }; 2332 2333 static struct clk_branch gcc_pcie_0_pipe_clk = { 2334 .halt_reg = 0x1b14, 2335 .clkr = { 2336 .enable_reg = 0x1b14, 2337 .enable_mask = BIT(0), 2338 .hw.init = &(struct clk_init_data){ 2339 .name = "gcc_pcie_0_pipe_clk", 2340 .parent_names = (const char *[]){ 2341 "pcie_0_pipe_clk_src", 2342 }, 2343 .num_parents = 1, 2344 .flags = CLK_SET_RATE_PARENT, 2345 .ops = &clk_branch2_ops, 2346 }, 2347 }, 2348 }; 2349 2350 static struct clk_branch gcc_pcie_0_slv_axi_clk = { 2351 .halt_reg = 0x1b04, 2352 .clkr = { 2353 .enable_reg = 0x1b04, 2354 .enable_mask = BIT(0), 2355 .hw.init = &(struct clk_init_data){ 2356 .name = "gcc_pcie_0_slv_axi_clk", 2357 .parent_names = (const char *[]){ 2358 "config_noc_clk_src", 2359 }, 2360 .num_parents = 1, 2361 .flags = CLK_SET_RATE_PARENT, 2362 .ops = &clk_branch2_ops, 2363 }, 2364 }, 2365 }; 2366 2367 static struct clk_branch gcc_pcie_1_aux_clk = { 2368 .halt_reg = 0x1b90, 2369 .clkr = { 2370 .enable_reg = 0x1b90, 2371 .enable_mask = BIT(0), 2372 .hw.init = &(struct clk_init_data){ 2373 .name = "gcc_pcie_1_aux_clk", 2374 .parent_names = (const char *[]){ 2375 "pcie_1_aux_clk_src", 2376 }, 2377 .num_parents = 1, 2378 .flags = CLK_SET_RATE_PARENT, 2379 .ops = &clk_branch2_ops, 2380 }, 2381 }, 2382 }; 2383 2384 static struct clk_branch gcc_pcie_1_cfg_ahb_clk = { 2385 .halt_reg = 0x1b8c, 2386 .clkr = { 2387 .enable_reg = 0x1b8c, 2388 .enable_mask = BIT(0), 2389 .hw.init = &(struct clk_init_data){ 2390 .name = "gcc_pcie_1_cfg_ahb_clk", 2391 .parent_names = (const char *[]){ 2392 "config_noc_clk_src", 2393 }, 2394 .num_parents = 1, 2395 .flags = CLK_SET_RATE_PARENT, 2396 .ops = &clk_branch2_ops, 2397 }, 2398 }, 2399 }; 2400 2401 static struct clk_branch gcc_pcie_1_mstr_axi_clk = { 2402 .halt_reg = 0x1b88, 2403 .clkr = { 2404 .enable_reg = 0x1b88, 2405 .enable_mask = BIT(0), 2406 .hw.init = &(struct clk_init_data){ 2407 .name = "gcc_pcie_1_mstr_axi_clk", 2408 .parent_names = (const char *[]){ 2409 "config_noc_clk_src", 2410 }, 2411 .num_parents = 1, 2412 .flags = CLK_SET_RATE_PARENT, 2413 .ops = &clk_branch2_ops, 2414 }, 2415 }, 2416 }; 2417 2418 static struct clk_branch gcc_pcie_1_pipe_clk = { 2419 .halt_reg = 0x1b94, 2420 .clkr = { 2421 .enable_reg = 0x1b94, 2422 .enable_mask = BIT(0), 2423 .hw.init = &(struct clk_init_data){ 2424 .name = "gcc_pcie_1_pipe_clk", 2425 .parent_names = (const char *[]){ 2426 "pcie_1_pipe_clk_src", 2427 }, 2428 .num_parents = 1, 2429 .flags = CLK_SET_RATE_PARENT, 2430 .ops = &clk_branch2_ops, 2431 }, 2432 }, 2433 }; 2434 2435 static struct clk_branch gcc_pcie_1_slv_axi_clk = { 2436 .halt_reg = 0x1b84, 2437 .clkr = { 2438 .enable_reg = 0x1b84, 2439 .enable_mask = BIT(0), 2440 .hw.init = &(struct clk_init_data){ 2441 .name = "gcc_pcie_1_slv_axi_clk", 2442 .parent_names = (const char *[]){ 2443 "config_noc_clk_src", 2444 }, 2445 .num_parents = 1, 2446 .flags = CLK_SET_RATE_PARENT, 2447 .ops = &clk_branch2_ops, 2448 }, 2449 }, 2450 }; 2451 2452 static struct clk_branch gcc_pdm2_clk = { 2453 .halt_reg = 0x0ccc, 2454 .clkr = { 2455 .enable_reg = 0x0ccc, 2456 .enable_mask = BIT(0), 2457 .hw.init = &(struct clk_init_data){ 2458 .name = "gcc_pdm2_clk", 2459 .parent_names = (const char *[]){ 2460 "pdm2_clk_src", 2461 }, 2462 .num_parents = 1, 2463 .flags = CLK_SET_RATE_PARENT, 2464 .ops = &clk_branch2_ops, 2465 }, 2466 }, 2467 }; 2468 2469 static struct clk_branch gcc_pdm_ahb_clk = { 2470 .halt_reg = 0x0cc4, 2471 .clkr = { 2472 .enable_reg = 0x0cc4, 2473 .enable_mask = BIT(0), 2474 .hw.init = &(struct clk_init_data){ 2475 .name = "gcc_pdm_ahb_clk", 2476 .parent_names = (const char *[]){ 2477 "periph_noc_clk_src", 2478 }, 2479 .num_parents = 1, 2480 .ops = &clk_branch2_ops, 2481 }, 2482 }, 2483 }; 2484 2485 static struct clk_branch gcc_periph_noc_usb_hsic_ahb_clk = { 2486 .halt_reg = 0x01a4, 2487 .clkr = { 2488 .enable_reg = 0x01a4, 2489 .enable_mask = BIT(0), 2490 .hw.init = &(struct clk_init_data){ 2491 .name = "gcc_periph_noc_usb_hsic_ahb_clk", 2492 .parent_names = (const char *[]){ 2493 "usb_hsic_ahb_clk_src", 2494 }, 2495 .num_parents = 1, 2496 .flags = CLK_SET_RATE_PARENT, 2497 .ops = &clk_branch2_ops, 2498 }, 2499 }, 2500 }; 2501 2502 static struct clk_branch gcc_prng_ahb_clk = { 2503 .halt_reg = 0x0d04, 2504 .halt_check = BRANCH_HALT_VOTED, 2505 .clkr = { 2506 .enable_reg = 0x1484, 2507 .enable_mask = BIT(13), 2508 .hw.init = &(struct clk_init_data){ 2509 .name = "gcc_prng_ahb_clk", 2510 .parent_names = (const char *[]){ 2511 "periph_noc_clk_src", 2512 }, 2513 .num_parents = 1, 2514 .ops = &clk_branch2_ops, 2515 }, 2516 }, 2517 }; 2518 2519 static struct clk_branch gcc_sata_asic0_clk = { 2520 .halt_reg = 0x1c54, 2521 .clkr = { 2522 .enable_reg = 0x1c54, 2523 .enable_mask = BIT(0), 2524 .hw.init = &(struct clk_init_data){ 2525 .name = "gcc_sata_asic0_clk", 2526 .parent_names = (const char *[]){ 2527 "sata_asic0_clk_src", 2528 }, 2529 .num_parents = 1, 2530 .flags = CLK_SET_RATE_PARENT, 2531 .ops = &clk_branch2_ops, 2532 }, 2533 }, 2534 }; 2535 2536 static struct clk_branch gcc_sata_axi_clk = { 2537 .halt_reg = 0x1c44, 2538 .clkr = { 2539 .enable_reg = 0x1c44, 2540 .enable_mask = BIT(0), 2541 .hw.init = &(struct clk_init_data){ 2542 .name = "gcc_sata_axi_clk", 2543 .parent_names = (const char *[]){ 2544 "config_noc_clk_src", 2545 }, 2546 .num_parents = 1, 2547 .flags = CLK_SET_RATE_PARENT, 2548 .ops = &clk_branch2_ops, 2549 }, 2550 }, 2551 }; 2552 2553 static struct clk_branch gcc_sata_cfg_ahb_clk = { 2554 .halt_reg = 0x1c48, 2555 .clkr = { 2556 .enable_reg = 0x1c48, 2557 .enable_mask = BIT(0), 2558 .hw.init = &(struct clk_init_data){ 2559 .name = "gcc_sata_cfg_ahb_clk", 2560 .parent_names = (const char *[]){ 2561 "config_noc_clk_src", 2562 }, 2563 .num_parents = 1, 2564 .flags = CLK_SET_RATE_PARENT, 2565 .ops = &clk_branch2_ops, 2566 }, 2567 }, 2568 }; 2569 2570 static struct clk_branch gcc_sata_pmalive_clk = { 2571 .halt_reg = 0x1c50, 2572 .clkr = { 2573 .enable_reg = 0x1c50, 2574 .enable_mask = BIT(0), 2575 .hw.init = &(struct clk_init_data){ 2576 .name = "gcc_sata_pmalive_clk", 2577 .parent_names = (const char *[]){ 2578 "sata_pmalive_clk_src", 2579 }, 2580 .num_parents = 1, 2581 .flags = CLK_SET_RATE_PARENT, 2582 .ops = &clk_branch2_ops, 2583 }, 2584 }, 2585 }; 2586 2587 static struct clk_branch gcc_sata_rx_clk = { 2588 .halt_reg = 0x1c58, 2589 .clkr = { 2590 .enable_reg = 0x1c58, 2591 .enable_mask = BIT(0), 2592 .hw.init = &(struct clk_init_data){ 2593 .name = "gcc_sata_rx_clk", 2594 .parent_names = (const char *[]){ 2595 "sata_rx_clk_src", 2596 }, 2597 .num_parents = 1, 2598 .flags = CLK_SET_RATE_PARENT, 2599 .ops = &clk_branch2_ops, 2600 }, 2601 }, 2602 }; 2603 2604 static struct clk_branch gcc_sata_rx_oob_clk = { 2605 .halt_reg = 0x1c4c, 2606 .clkr = { 2607 .enable_reg = 0x1c4c, 2608 .enable_mask = BIT(0), 2609 .hw.init = &(struct clk_init_data){ 2610 .name = "gcc_sata_rx_oob_clk", 2611 .parent_names = (const char *[]){ 2612 "sata_rx_oob_clk_src", 2613 }, 2614 .num_parents = 1, 2615 .flags = CLK_SET_RATE_PARENT, 2616 .ops = &clk_branch2_ops, 2617 }, 2618 }, 2619 }; 2620 2621 static struct clk_branch gcc_sdcc1_ahb_clk = { 2622 .halt_reg = 0x04c8, 2623 .clkr = { 2624 .enable_reg = 0x04c8, 2625 .enable_mask = BIT(0), 2626 .hw.init = &(struct clk_init_data){ 2627 .name = "gcc_sdcc1_ahb_clk", 2628 .parent_names = (const char *[]){ 2629 "periph_noc_clk_src", 2630 }, 2631 .num_parents = 1, 2632 .ops = &clk_branch2_ops, 2633 }, 2634 }, 2635 }; 2636 2637 static struct clk_branch gcc_sdcc1_apps_clk = { 2638 .halt_reg = 0x04c4, 2639 .clkr = { 2640 .enable_reg = 0x04c4, 2641 .enable_mask = BIT(0), 2642 .hw.init = &(struct clk_init_data){ 2643 .name = "gcc_sdcc1_apps_clk", 2644 .parent_names = (const char *[]){ 2645 "sdcc1_apps_clk_src", 2646 }, 2647 .num_parents = 1, 2648 .flags = CLK_SET_RATE_PARENT, 2649 .ops = &clk_branch2_ops, 2650 }, 2651 }, 2652 }; 2653 2654 static struct clk_branch gcc_sdcc1_cdccal_ff_clk = { 2655 .halt_reg = 0x04e8, 2656 .clkr = { 2657 .enable_reg = 0x04e8, 2658 .enable_mask = BIT(0), 2659 .hw.init = &(struct clk_init_data){ 2660 .name = "gcc_sdcc1_cdccal_ff_clk", 2661 .parent_names = (const char *[]){ 2662 "xo" 2663 }, 2664 .num_parents = 1, 2665 .ops = &clk_branch2_ops, 2666 }, 2667 }, 2668 }; 2669 2670 static struct clk_branch gcc_sdcc1_cdccal_sleep_clk = { 2671 .halt_reg = 0x04e4, 2672 .clkr = { 2673 .enable_reg = 0x04e4, 2674 .enable_mask = BIT(0), 2675 .hw.init = &(struct clk_init_data){ 2676 .name = "gcc_sdcc1_cdccal_sleep_clk", 2677 .parent_names = (const char *[]){ 2678 "sleep_clk_src" 2679 }, 2680 .num_parents = 1, 2681 .ops = &clk_branch2_ops, 2682 }, 2683 }, 2684 }; 2685 2686 static struct clk_branch gcc_sdcc2_ahb_clk = { 2687 .halt_reg = 0x0508, 2688 .clkr = { 2689 .enable_reg = 0x0508, 2690 .enable_mask = BIT(0), 2691 .hw.init = &(struct clk_init_data){ 2692 .name = "gcc_sdcc2_ahb_clk", 2693 .parent_names = (const char *[]){ 2694 "periph_noc_clk_src", 2695 }, 2696 .num_parents = 1, 2697 .ops = &clk_branch2_ops, 2698 }, 2699 }, 2700 }; 2701 2702 static struct clk_branch gcc_sdcc2_apps_clk = { 2703 .halt_reg = 0x0504, 2704 .clkr = { 2705 .enable_reg = 0x0504, 2706 .enable_mask = BIT(0), 2707 .hw.init = &(struct clk_init_data){ 2708 .name = "gcc_sdcc2_apps_clk", 2709 .parent_names = (const char *[]){ 2710 "sdcc2_apps_clk_src", 2711 }, 2712 .num_parents = 1, 2713 .flags = CLK_SET_RATE_PARENT, 2714 .ops = &clk_branch2_ops, 2715 }, 2716 }, 2717 }; 2718 2719 static struct clk_branch gcc_sdcc3_ahb_clk = { 2720 .halt_reg = 0x0548, 2721 .clkr = { 2722 .enable_reg = 0x0548, 2723 .enable_mask = BIT(0), 2724 .hw.init = &(struct clk_init_data){ 2725 .name = "gcc_sdcc3_ahb_clk", 2726 .parent_names = (const char *[]){ 2727 "periph_noc_clk_src", 2728 }, 2729 .num_parents = 1, 2730 .ops = &clk_branch2_ops, 2731 }, 2732 }, 2733 }; 2734 2735 static struct clk_branch gcc_sdcc3_apps_clk = { 2736 .halt_reg = 0x0544, 2737 .clkr = { 2738 .enable_reg = 0x0544, 2739 .enable_mask = BIT(0), 2740 .hw.init = &(struct clk_init_data){ 2741 .name = "gcc_sdcc3_apps_clk", 2742 .parent_names = (const char *[]){ 2743 "sdcc3_apps_clk_src", 2744 }, 2745 .num_parents = 1, 2746 .flags = CLK_SET_RATE_PARENT, 2747 .ops = &clk_branch2_ops, 2748 }, 2749 }, 2750 }; 2751 2752 static struct clk_branch gcc_sdcc4_ahb_clk = { 2753 .halt_reg = 0x0588, 2754 .clkr = { 2755 .enable_reg = 0x0588, 2756 .enable_mask = BIT(0), 2757 .hw.init = &(struct clk_init_data){ 2758 .name = "gcc_sdcc4_ahb_clk", 2759 .parent_names = (const char *[]){ 2760 "periph_noc_clk_src", 2761 }, 2762 .num_parents = 1, 2763 .ops = &clk_branch2_ops, 2764 }, 2765 }, 2766 }; 2767 2768 static struct clk_branch gcc_sdcc4_apps_clk = { 2769 .halt_reg = 0x0584, 2770 .clkr = { 2771 .enable_reg = 0x0584, 2772 .enable_mask = BIT(0), 2773 .hw.init = &(struct clk_init_data){ 2774 .name = "gcc_sdcc4_apps_clk", 2775 .parent_names = (const char *[]){ 2776 "sdcc4_apps_clk_src", 2777 }, 2778 .num_parents = 1, 2779 .flags = CLK_SET_RATE_PARENT, 2780 .ops = &clk_branch2_ops, 2781 }, 2782 }, 2783 }; 2784 2785 static struct clk_branch gcc_sys_noc_ufs_axi_clk = { 2786 .halt_reg = 0x013c, 2787 .clkr = { 2788 .enable_reg = 0x013c, 2789 .enable_mask = BIT(0), 2790 .hw.init = &(struct clk_init_data){ 2791 .name = "gcc_sys_noc_ufs_axi_clk", 2792 .parent_names = (const char *[]){ 2793 "ufs_axi_clk_src", 2794 }, 2795 .num_parents = 1, 2796 .flags = CLK_SET_RATE_PARENT, 2797 .ops = &clk_branch2_ops, 2798 }, 2799 }, 2800 }; 2801 2802 static struct clk_branch gcc_sys_noc_usb3_axi_clk = { 2803 .halt_reg = 0x0108, 2804 .clkr = { 2805 .enable_reg = 0x0108, 2806 .enable_mask = BIT(0), 2807 .hw.init = &(struct clk_init_data){ 2808 .name = "gcc_sys_noc_usb3_axi_clk", 2809 .parent_names = (const char *[]){ 2810 "usb30_master_clk_src", 2811 }, 2812 .num_parents = 1, 2813 .flags = CLK_SET_RATE_PARENT, 2814 .ops = &clk_branch2_ops, 2815 }, 2816 }, 2817 }; 2818 2819 static struct clk_branch gcc_sys_noc_usb3_sec_axi_clk = { 2820 .halt_reg = 0x0138, 2821 .clkr = { 2822 .enable_reg = 0x0138, 2823 .enable_mask = BIT(0), 2824 .hw.init = &(struct clk_init_data){ 2825 .name = "gcc_sys_noc_usb3_sec_axi_clk", 2826 .parent_names = (const char *[]){ 2827 "usb30_sec_master_clk_src", 2828 }, 2829 .num_parents = 1, 2830 .flags = CLK_SET_RATE_PARENT, 2831 .ops = &clk_branch2_ops, 2832 }, 2833 }, 2834 }; 2835 2836 static struct clk_branch gcc_tsif_ahb_clk = { 2837 .halt_reg = 0x0d84, 2838 .clkr = { 2839 .enable_reg = 0x0d84, 2840 .enable_mask = BIT(0), 2841 .hw.init = &(struct clk_init_data){ 2842 .name = "gcc_tsif_ahb_clk", 2843 .parent_names = (const char *[]){ 2844 "periph_noc_clk_src", 2845 }, 2846 .num_parents = 1, 2847 .ops = &clk_branch2_ops, 2848 }, 2849 }, 2850 }; 2851 2852 static struct clk_branch gcc_tsif_inactivity_timers_clk = { 2853 .halt_reg = 0x0d8c, 2854 .clkr = { 2855 .enable_reg = 0x0d8c, 2856 .enable_mask = BIT(0), 2857 .hw.init = &(struct clk_init_data){ 2858 .name = "gcc_tsif_inactivity_timers_clk", 2859 .parent_names = (const char *[]){ 2860 "sleep_clk_src", 2861 }, 2862 .num_parents = 1, 2863 .flags = CLK_SET_RATE_PARENT, 2864 .ops = &clk_branch2_ops, 2865 }, 2866 }, 2867 }; 2868 2869 static struct clk_branch gcc_tsif_ref_clk = { 2870 .halt_reg = 0x0d88, 2871 .clkr = { 2872 .enable_reg = 0x0d88, 2873 .enable_mask = BIT(0), 2874 .hw.init = &(struct clk_init_data){ 2875 .name = "gcc_tsif_ref_clk", 2876 .parent_names = (const char *[]){ 2877 "tsif_ref_clk_src", 2878 }, 2879 .num_parents = 1, 2880 .flags = CLK_SET_RATE_PARENT, 2881 .ops = &clk_branch2_ops, 2882 }, 2883 }, 2884 }; 2885 2886 static struct clk_branch gcc_ufs_ahb_clk = { 2887 .halt_reg = 0x1d48, 2888 .clkr = { 2889 .enable_reg = 0x1d48, 2890 .enable_mask = BIT(0), 2891 .hw.init = &(struct clk_init_data){ 2892 .name = "gcc_ufs_ahb_clk", 2893 .parent_names = (const char *[]){ 2894 "config_noc_clk_src", 2895 }, 2896 .num_parents = 1, 2897 .flags = CLK_SET_RATE_PARENT, 2898 .ops = &clk_branch2_ops, 2899 }, 2900 }, 2901 }; 2902 2903 static struct clk_branch gcc_ufs_axi_clk = { 2904 .halt_reg = 0x1d44, 2905 .clkr = { 2906 .enable_reg = 0x1d44, 2907 .enable_mask = BIT(0), 2908 .hw.init = &(struct clk_init_data){ 2909 .name = "gcc_ufs_axi_clk", 2910 .parent_names = (const char *[]){ 2911 "ufs_axi_clk_src", 2912 }, 2913 .num_parents = 1, 2914 .flags = CLK_SET_RATE_PARENT, 2915 .ops = &clk_branch2_ops, 2916 }, 2917 }, 2918 }; 2919 2920 static struct clk_branch gcc_ufs_rx_cfg_clk = { 2921 .halt_reg = 0x1d50, 2922 .clkr = { 2923 .enable_reg = 0x1d50, 2924 .enable_mask = BIT(0), 2925 .hw.init = &(struct clk_init_data){ 2926 .name = "gcc_ufs_rx_cfg_clk", 2927 .parent_names = (const char *[]){ 2928 "ufs_axi_clk_src", 2929 }, 2930 .num_parents = 1, 2931 .flags = CLK_SET_RATE_PARENT, 2932 .ops = &clk_branch2_ops, 2933 }, 2934 }, 2935 }; 2936 2937 static struct clk_branch gcc_ufs_rx_symbol_0_clk = { 2938 .halt_reg = 0x1d5c, 2939 .clkr = { 2940 .enable_reg = 0x1d5c, 2941 .enable_mask = BIT(0), 2942 .hw.init = &(struct clk_init_data){ 2943 .name = "gcc_ufs_rx_symbol_0_clk", 2944 .parent_names = (const char *[]){ 2945 "ufs_rx_symbol_0_clk_src", 2946 }, 2947 .num_parents = 1, 2948 .flags = CLK_SET_RATE_PARENT, 2949 .ops = &clk_branch2_ops, 2950 }, 2951 }, 2952 }; 2953 2954 static struct clk_branch gcc_ufs_rx_symbol_1_clk = { 2955 .halt_reg = 0x1d60, 2956 .clkr = { 2957 .enable_reg = 0x1d60, 2958 .enable_mask = BIT(0), 2959 .hw.init = &(struct clk_init_data){ 2960 .name = "gcc_ufs_rx_symbol_1_clk", 2961 .parent_names = (const char *[]){ 2962 "ufs_rx_symbol_1_clk_src", 2963 }, 2964 .num_parents = 1, 2965 .flags = CLK_SET_RATE_PARENT, 2966 .ops = &clk_branch2_ops, 2967 }, 2968 }, 2969 }; 2970 2971 static struct clk_branch gcc_ufs_tx_cfg_clk = { 2972 .halt_reg = 0x1d4c, 2973 .clkr = { 2974 .enable_reg = 0x1d4c, 2975 .enable_mask = BIT(0), 2976 .hw.init = &(struct clk_init_data){ 2977 .name = "gcc_ufs_tx_cfg_clk", 2978 .parent_names = (const char *[]){ 2979 "ufs_axi_clk_src", 2980 }, 2981 .num_parents = 1, 2982 .flags = CLK_SET_RATE_PARENT, 2983 .ops = &clk_branch2_ops, 2984 }, 2985 }, 2986 }; 2987 2988 static struct clk_branch gcc_ufs_tx_symbol_0_clk = { 2989 .halt_reg = 0x1d54, 2990 .clkr = { 2991 .enable_reg = 0x1d54, 2992 .enable_mask = BIT(0), 2993 .hw.init = &(struct clk_init_data){ 2994 .name = "gcc_ufs_tx_symbol_0_clk", 2995 .parent_names = (const char *[]){ 2996 "ufs_tx_symbol_0_clk_src", 2997 }, 2998 .num_parents = 1, 2999 .flags = CLK_SET_RATE_PARENT, 3000 .ops = &clk_branch2_ops, 3001 }, 3002 }, 3003 }; 3004 3005 static struct clk_branch gcc_ufs_tx_symbol_1_clk = { 3006 .halt_reg = 0x1d58, 3007 .clkr = { 3008 .enable_reg = 0x1d58, 3009 .enable_mask = BIT(0), 3010 .hw.init = &(struct clk_init_data){ 3011 .name = "gcc_ufs_tx_symbol_1_clk", 3012 .parent_names = (const char *[]){ 3013 "ufs_tx_symbol_1_clk_src", 3014 }, 3015 .num_parents = 1, 3016 .flags = CLK_SET_RATE_PARENT, 3017 .ops = &clk_branch2_ops, 3018 }, 3019 }, 3020 }; 3021 3022 static struct clk_branch gcc_usb2a_phy_sleep_clk = { 3023 .halt_reg = 0x04ac, 3024 .clkr = { 3025 .enable_reg = 0x04ac, 3026 .enable_mask = BIT(0), 3027 .hw.init = &(struct clk_init_data){ 3028 .name = "gcc_usb2a_phy_sleep_clk", 3029 .parent_names = (const char *[]){ 3030 "sleep_clk_src", 3031 }, 3032 .num_parents = 1, 3033 .ops = &clk_branch2_ops, 3034 }, 3035 }, 3036 }; 3037 3038 static struct clk_branch gcc_usb2b_phy_sleep_clk = { 3039 .halt_reg = 0x04b4, 3040 .clkr = { 3041 .enable_reg = 0x04b4, 3042 .enable_mask = BIT(0), 3043 .hw.init = &(struct clk_init_data){ 3044 .name = "gcc_usb2b_phy_sleep_clk", 3045 .parent_names = (const char *[]){ 3046 "sleep_clk_src", 3047 }, 3048 .num_parents = 1, 3049 .ops = &clk_branch2_ops, 3050 }, 3051 }, 3052 }; 3053 3054 static struct clk_branch gcc_usb30_master_clk = { 3055 .halt_reg = 0x03c8, 3056 .clkr = { 3057 .enable_reg = 0x03c8, 3058 .enable_mask = BIT(0), 3059 .hw.init = &(struct clk_init_data){ 3060 .name = "gcc_usb30_master_clk", 3061 .parent_names = (const char *[]){ 3062 "usb30_master_clk_src", 3063 }, 3064 .num_parents = 1, 3065 .flags = CLK_SET_RATE_PARENT, 3066 .ops = &clk_branch2_ops, 3067 }, 3068 }, 3069 }; 3070 3071 static struct clk_branch gcc_usb30_sec_master_clk = { 3072 .halt_reg = 0x1bc8, 3073 .clkr = { 3074 .enable_reg = 0x1bc8, 3075 .enable_mask = BIT(0), 3076 .hw.init = &(struct clk_init_data){ 3077 .name = "gcc_usb30_sec_master_clk", 3078 .parent_names = (const char *[]){ 3079 "usb30_sec_master_clk_src", 3080 }, 3081 .num_parents = 1, 3082 .flags = CLK_SET_RATE_PARENT, 3083 .ops = &clk_branch2_ops, 3084 }, 3085 }, 3086 }; 3087 3088 static struct clk_branch gcc_usb30_mock_utmi_clk = { 3089 .halt_reg = 0x03d0, 3090 .clkr = { 3091 .enable_reg = 0x03d0, 3092 .enable_mask = BIT(0), 3093 .hw.init = &(struct clk_init_data){ 3094 .name = "gcc_usb30_mock_utmi_clk", 3095 .parent_names = (const char *[]){ 3096 "usb30_mock_utmi_clk_src", 3097 }, 3098 .num_parents = 1, 3099 .flags = CLK_SET_RATE_PARENT, 3100 .ops = &clk_branch2_ops, 3101 }, 3102 }, 3103 }; 3104 3105 static struct clk_branch gcc_usb30_sleep_clk = { 3106 .halt_reg = 0x03cc, 3107 .clkr = { 3108 .enable_reg = 0x03cc, 3109 .enable_mask = BIT(0), 3110 .hw.init = &(struct clk_init_data){ 3111 .name = "gcc_usb30_sleep_clk", 3112 .parent_names = (const char *[]){ 3113 "sleep_clk_src", 3114 }, 3115 .num_parents = 1, 3116 .ops = &clk_branch2_ops, 3117 }, 3118 }, 3119 }; 3120 3121 static struct clk_branch gcc_usb_hs_ahb_clk = { 3122 .halt_reg = 0x0488, 3123 .clkr = { 3124 .enable_reg = 0x0488, 3125 .enable_mask = BIT(0), 3126 .hw.init = &(struct clk_init_data){ 3127 .name = "gcc_usb_hs_ahb_clk", 3128 .parent_names = (const char *[]){ 3129 "periph_noc_clk_src", 3130 }, 3131 .num_parents = 1, 3132 .ops = &clk_branch2_ops, 3133 }, 3134 }, 3135 }; 3136 3137 static struct clk_branch gcc_usb_hs_inactivity_timers_clk = { 3138 .halt_reg = 0x048c, 3139 .clkr = { 3140 .enable_reg = 0x048c, 3141 .enable_mask = BIT(0), 3142 .hw.init = &(struct clk_init_data){ 3143 .name = "gcc_usb_hs_inactivity_timers_clk", 3144 .parent_names = (const char *[]){ 3145 "sleep_clk_src", 3146 }, 3147 .num_parents = 1, 3148 .flags = CLK_SET_RATE_PARENT, 3149 .ops = &clk_branch2_ops, 3150 }, 3151 }, 3152 }; 3153 3154 static struct clk_branch gcc_usb_hs_system_clk = { 3155 .halt_reg = 0x0484, 3156 .clkr = { 3157 .enable_reg = 0x0484, 3158 .enable_mask = BIT(0), 3159 .hw.init = &(struct clk_init_data){ 3160 .name = "gcc_usb_hs_system_clk", 3161 .parent_names = (const char *[]){ 3162 "usb_hs_system_clk_src", 3163 }, 3164 .num_parents = 1, 3165 .flags = CLK_SET_RATE_PARENT, 3166 .ops = &clk_branch2_ops, 3167 }, 3168 }, 3169 }; 3170 3171 static struct clk_branch gcc_usb_hsic_ahb_clk = { 3172 .halt_reg = 0x0408, 3173 .clkr = { 3174 .enable_reg = 0x0408, 3175 .enable_mask = BIT(0), 3176 .hw.init = &(struct clk_init_data){ 3177 .name = "gcc_usb_hsic_ahb_clk", 3178 .parent_names = (const char *[]){ 3179 "periph_noc_clk_src", 3180 }, 3181 .num_parents = 1, 3182 .ops = &clk_branch2_ops, 3183 }, 3184 }, 3185 }; 3186 3187 static struct clk_branch gcc_usb_hsic_clk = { 3188 .halt_reg = 0x0410, 3189 .clkr = { 3190 .enable_reg = 0x0410, 3191 .enable_mask = BIT(0), 3192 .hw.init = &(struct clk_init_data){ 3193 .name = "gcc_usb_hsic_clk", 3194 .parent_names = (const char *[]){ 3195 "usb_hsic_clk_src", 3196 }, 3197 .num_parents = 1, 3198 .flags = CLK_SET_RATE_PARENT, 3199 .ops = &clk_branch2_ops, 3200 }, 3201 }, 3202 }; 3203 3204 static struct clk_branch gcc_usb_hsic_io_cal_clk = { 3205 .halt_reg = 0x0414, 3206 .clkr = { 3207 .enable_reg = 0x0414, 3208 .enable_mask = BIT(0), 3209 .hw.init = &(struct clk_init_data){ 3210 .name = "gcc_usb_hsic_io_cal_clk", 3211 .parent_names = (const char *[]){ 3212 "usb_hsic_io_cal_clk_src", 3213 }, 3214 .num_parents = 1, 3215 .flags = CLK_SET_RATE_PARENT, 3216 .ops = &clk_branch2_ops, 3217 }, 3218 }, 3219 }; 3220 3221 static struct clk_branch gcc_usb_hsic_io_cal_sleep_clk = { 3222 .halt_reg = 0x0418, 3223 .clkr = { 3224 .enable_reg = 0x0418, 3225 .enable_mask = BIT(0), 3226 .hw.init = &(struct clk_init_data){ 3227 .name = "gcc_usb_hsic_io_cal_sleep_clk", 3228 .parent_names = (const char *[]){ 3229 "sleep_clk_src", 3230 }, 3231 .num_parents = 1, 3232 .ops = &clk_branch2_ops, 3233 }, 3234 }, 3235 }; 3236 3237 static struct clk_branch gcc_usb_hsic_system_clk = { 3238 .halt_reg = 0x040c, 3239 .clkr = { 3240 .enable_reg = 0x040c, 3241 .enable_mask = BIT(0), 3242 .hw.init = &(struct clk_init_data){ 3243 .name = "gcc_usb_hsic_system_clk", 3244 .parent_names = (const char *[]){ 3245 "usb_hsic_system_clk_src", 3246 }, 3247 .num_parents = 1, 3248 .flags = CLK_SET_RATE_PARENT, 3249 .ops = &clk_branch2_ops, 3250 }, 3251 }, 3252 }; 3253 3254 static struct clk_regmap *gcc_apq8084_clocks[] = { 3255 [GPLL0] = &gpll0.clkr, 3256 [GPLL0_VOTE] = &gpll0_vote, 3257 [GPLL1] = &gpll1.clkr, 3258 [GPLL1_VOTE] = &gpll1_vote, 3259 [GPLL4] = &gpll4.clkr, 3260 [GPLL4_VOTE] = &gpll4_vote, 3261 [CONFIG_NOC_CLK_SRC] = &config_noc_clk_src.clkr, 3262 [PERIPH_NOC_CLK_SRC] = &periph_noc_clk_src.clkr, 3263 [SYSTEM_NOC_CLK_SRC] = &system_noc_clk_src.clkr, 3264 [UFS_AXI_CLK_SRC] = &ufs_axi_clk_src.clkr, 3265 [USB30_MASTER_CLK_SRC] = &usb30_master_clk_src.clkr, 3266 [USB30_SEC_MASTER_CLK_SRC] = &usb30_sec_master_clk_src.clkr, 3267 [USB_HSIC_AHB_CLK_SRC] = &usb_hsic_ahb_clk_src.clkr, 3268 [BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr, 3269 [BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr, 3270 [BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr, 3271 [BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr, 3272 [BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr, 3273 [BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr, 3274 [BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr, 3275 [BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr, 3276 [BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr, 3277 [BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr, 3278 [BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr, 3279 [BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr, 3280 [BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr, 3281 [BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr, 3282 [BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr, 3283 [BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr, 3284 [BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr, 3285 [BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr, 3286 [BLSP2_QUP1_I2C_APPS_CLK_SRC] = &blsp2_qup1_i2c_apps_clk_src.clkr, 3287 [BLSP2_QUP1_SPI_APPS_CLK_SRC] = &blsp2_qup1_spi_apps_clk_src.clkr, 3288 [BLSP2_QUP2_I2C_APPS_CLK_SRC] = &blsp2_qup2_i2c_apps_clk_src.clkr, 3289 [BLSP2_QUP2_SPI_APPS_CLK_SRC] = &blsp2_qup2_spi_apps_clk_src.clkr, 3290 [BLSP2_QUP3_I2C_APPS_CLK_SRC] = &blsp2_qup3_i2c_apps_clk_src.clkr, 3291 [BLSP2_QUP3_SPI_APPS_CLK_SRC] = &blsp2_qup3_spi_apps_clk_src.clkr, 3292 [BLSP2_QUP4_I2C_APPS_CLK_SRC] = &blsp2_qup4_i2c_apps_clk_src.clkr, 3293 [BLSP2_QUP4_SPI_APPS_CLK_SRC] = &blsp2_qup4_spi_apps_clk_src.clkr, 3294 [BLSP2_QUP5_I2C_APPS_CLK_SRC] = &blsp2_qup5_i2c_apps_clk_src.clkr, 3295 [BLSP2_QUP5_SPI_APPS_CLK_SRC] = &blsp2_qup5_spi_apps_clk_src.clkr, 3296 [BLSP2_QUP6_I2C_APPS_CLK_SRC] = &blsp2_qup6_i2c_apps_clk_src.clkr, 3297 [BLSP2_QUP6_SPI_APPS_CLK_SRC] = &blsp2_qup6_spi_apps_clk_src.clkr, 3298 [BLSP2_UART1_APPS_CLK_SRC] = &blsp2_uart1_apps_clk_src.clkr, 3299 [BLSP2_UART2_APPS_CLK_SRC] = &blsp2_uart2_apps_clk_src.clkr, 3300 [BLSP2_UART3_APPS_CLK_SRC] = &blsp2_uart3_apps_clk_src.clkr, 3301 [BLSP2_UART4_APPS_CLK_SRC] = &blsp2_uart4_apps_clk_src.clkr, 3302 [BLSP2_UART5_APPS_CLK_SRC] = &blsp2_uart5_apps_clk_src.clkr, 3303 [BLSP2_UART6_APPS_CLK_SRC] = &blsp2_uart6_apps_clk_src.clkr, 3304 [CE1_CLK_SRC] = &ce1_clk_src.clkr, 3305 [CE2_CLK_SRC] = &ce2_clk_src.clkr, 3306 [CE3_CLK_SRC] = &ce3_clk_src.clkr, 3307 [GP1_CLK_SRC] = &gp1_clk_src.clkr, 3308 [GP2_CLK_SRC] = &gp2_clk_src.clkr, 3309 [GP3_CLK_SRC] = &gp3_clk_src.clkr, 3310 [PCIE_0_AUX_CLK_SRC] = &pcie_0_aux_clk_src.clkr, 3311 [PCIE_0_PIPE_CLK_SRC] = &pcie_0_pipe_clk_src.clkr, 3312 [PCIE_1_AUX_CLK_SRC] = &pcie_1_aux_clk_src.clkr, 3313 [PCIE_1_PIPE_CLK_SRC] = &pcie_1_pipe_clk_src.clkr, 3314 [PDM2_CLK_SRC] = &pdm2_clk_src.clkr, 3315 [SATA_ASIC0_CLK_SRC] = &sata_asic0_clk_src.clkr, 3316 [SATA_PMALIVE_CLK_SRC] = &sata_pmalive_clk_src.clkr, 3317 [SATA_RX_CLK_SRC] = &sata_rx_clk_src.clkr, 3318 [SATA_RX_OOB_CLK_SRC] = &sata_rx_oob_clk_src.clkr, 3319 [SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr, 3320 [SDCC2_APPS_CLK_SRC] = &sdcc2_apps_clk_src.clkr, 3321 [SDCC3_APPS_CLK_SRC] = &sdcc3_apps_clk_src.clkr, 3322 [SDCC4_APPS_CLK_SRC] = &sdcc4_apps_clk_src.clkr, 3323 [TSIF_REF_CLK_SRC] = &tsif_ref_clk_src.clkr, 3324 [USB30_MOCK_UTMI_CLK_SRC] = &usb30_mock_utmi_clk_src.clkr, 3325 [USB30_SEC_MOCK_UTMI_CLK_SRC] = &usb30_sec_mock_utmi_clk_src.clkr, 3326 [USB_HS_SYSTEM_CLK_SRC] = &usb_hs_system_clk_src.clkr, 3327 [USB_HSIC_CLK_SRC] = &usb_hsic_clk_src.clkr, 3328 [USB_HSIC_IO_CAL_CLK_SRC] = &usb_hsic_io_cal_clk_src.clkr, 3329 [USB_HSIC_MOCK_UTMI_CLK_SRC] = &usb_hsic_mock_utmi_clk_src.clkr, 3330 [USB_HSIC_SYSTEM_CLK_SRC] = &usb_hsic_system_clk_src.clkr, 3331 [GCC_BAM_DMA_AHB_CLK] = &gcc_bam_dma_ahb_clk.clkr, 3332 [GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr, 3333 [GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr, 3334 [GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr, 3335 [GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr, 3336 [GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr, 3337 [GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr, 3338 [GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr, 3339 [GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr, 3340 [GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr, 3341 [GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr, 3342 [GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr, 3343 [GCC_BLSP1_QUP6_I2C_APPS_CLK] = &gcc_blsp1_qup6_i2c_apps_clk.clkr, 3344 [GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr, 3345 [GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr, 3346 [GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr, 3347 [GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr, 3348 [GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr, 3349 [GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr, 3350 [GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr, 3351 [GCC_BLSP2_AHB_CLK] = &gcc_blsp2_ahb_clk.clkr, 3352 [GCC_BLSP2_QUP1_I2C_APPS_CLK] = &gcc_blsp2_qup1_i2c_apps_clk.clkr, 3353 [GCC_BLSP2_QUP1_SPI_APPS_CLK] = &gcc_blsp2_qup1_spi_apps_clk.clkr, 3354 [GCC_BLSP2_QUP2_I2C_APPS_CLK] = &gcc_blsp2_qup2_i2c_apps_clk.clkr, 3355 [GCC_BLSP2_QUP2_SPI_APPS_CLK] = &gcc_blsp2_qup2_spi_apps_clk.clkr, 3356 [GCC_BLSP2_QUP3_I2C_APPS_CLK] = &gcc_blsp2_qup3_i2c_apps_clk.clkr, 3357 [GCC_BLSP2_QUP3_SPI_APPS_CLK] = &gcc_blsp2_qup3_spi_apps_clk.clkr, 3358 [GCC_BLSP2_QUP4_I2C_APPS_CLK] = &gcc_blsp2_qup4_i2c_apps_clk.clkr, 3359 [GCC_BLSP2_QUP4_SPI_APPS_CLK] = &gcc_blsp2_qup4_spi_apps_clk.clkr, 3360 [GCC_BLSP2_QUP5_I2C_APPS_CLK] = &gcc_blsp2_qup5_i2c_apps_clk.clkr, 3361 [GCC_BLSP2_QUP5_SPI_APPS_CLK] = &gcc_blsp2_qup5_spi_apps_clk.clkr, 3362 [GCC_BLSP2_QUP6_I2C_APPS_CLK] = &gcc_blsp2_qup6_i2c_apps_clk.clkr, 3363 [GCC_BLSP2_QUP6_SPI_APPS_CLK] = &gcc_blsp2_qup6_spi_apps_clk.clkr, 3364 [GCC_BLSP2_UART1_APPS_CLK] = &gcc_blsp2_uart1_apps_clk.clkr, 3365 [GCC_BLSP2_UART2_APPS_CLK] = &gcc_blsp2_uart2_apps_clk.clkr, 3366 [GCC_BLSP2_UART3_APPS_CLK] = &gcc_blsp2_uart3_apps_clk.clkr, 3367 [GCC_BLSP2_UART4_APPS_CLK] = &gcc_blsp2_uart4_apps_clk.clkr, 3368 [GCC_BLSP2_UART5_APPS_CLK] = &gcc_blsp2_uart5_apps_clk.clkr, 3369 [GCC_BLSP2_UART6_APPS_CLK] = &gcc_blsp2_uart6_apps_clk.clkr, 3370 [GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr, 3371 [GCC_CE1_AHB_CLK] = &gcc_ce1_ahb_clk.clkr, 3372 [GCC_CE1_AXI_CLK] = &gcc_ce1_axi_clk.clkr, 3373 [GCC_CE1_CLK] = &gcc_ce1_clk.clkr, 3374 [GCC_CE2_AHB_CLK] = &gcc_ce2_ahb_clk.clkr, 3375 [GCC_CE2_AXI_CLK] = &gcc_ce2_axi_clk.clkr, 3376 [GCC_CE2_CLK] = &gcc_ce2_clk.clkr, 3377 [GCC_CE3_AHB_CLK] = &gcc_ce3_ahb_clk.clkr, 3378 [GCC_CE3_AXI_CLK] = &gcc_ce3_axi_clk.clkr, 3379 [GCC_CE3_CLK] = &gcc_ce3_clk.clkr, 3380 [GCC_GP1_CLK] = &gcc_gp1_clk.clkr, 3381 [GCC_GP2_CLK] = &gcc_gp2_clk.clkr, 3382 [GCC_GP3_CLK] = &gcc_gp3_clk.clkr, 3383 [GCC_OCMEM_NOC_CFG_AHB_CLK] = &gcc_ocmem_noc_cfg_ahb_clk.clkr, 3384 [GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr, 3385 [GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr, 3386 [GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr, 3387 [GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr, 3388 [GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr, 3389 [GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr, 3390 [GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr, 3391 [GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr, 3392 [GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr, 3393 [GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr, 3394 [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr, 3395 [GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr, 3396 [GCC_PERIPH_NOC_USB_HSIC_AHB_CLK] = &gcc_periph_noc_usb_hsic_ahb_clk.clkr, 3397 [GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr, 3398 [GCC_SATA_ASIC0_CLK] = &gcc_sata_asic0_clk.clkr, 3399 [GCC_SATA_AXI_CLK] = &gcc_sata_axi_clk.clkr, 3400 [GCC_SATA_CFG_AHB_CLK] = &gcc_sata_cfg_ahb_clk.clkr, 3401 [GCC_SATA_PMALIVE_CLK] = &gcc_sata_pmalive_clk.clkr, 3402 [GCC_SATA_RX_CLK] = &gcc_sata_rx_clk.clkr, 3403 [GCC_SATA_RX_OOB_CLK] = &gcc_sata_rx_oob_clk.clkr, 3404 [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr, 3405 [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr, 3406 [GCC_SDCC1_CDCCAL_FF_CLK] = &gcc_sdcc1_cdccal_ff_clk.clkr, 3407 [GCC_SDCC1_CDCCAL_SLEEP_CLK] = &gcc_sdcc1_cdccal_sleep_clk.clkr, 3408 [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr, 3409 [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr, 3410 [GCC_SDCC3_AHB_CLK] = &gcc_sdcc3_ahb_clk.clkr, 3411 [GCC_SDCC3_APPS_CLK] = &gcc_sdcc3_apps_clk.clkr, 3412 [GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr, 3413 [GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr, 3414 [GCC_SYS_NOC_UFS_AXI_CLK] = &gcc_sys_noc_ufs_axi_clk.clkr, 3415 [GCC_SYS_NOC_USB3_AXI_CLK] = &gcc_sys_noc_usb3_axi_clk.clkr, 3416 [GCC_SYS_NOC_USB3_SEC_AXI_CLK] = &gcc_sys_noc_usb3_sec_axi_clk.clkr, 3417 [GCC_TSIF_AHB_CLK] = &gcc_tsif_ahb_clk.clkr, 3418 [GCC_TSIF_INACTIVITY_TIMERS_CLK] = &gcc_tsif_inactivity_timers_clk.clkr, 3419 [GCC_TSIF_REF_CLK] = &gcc_tsif_ref_clk.clkr, 3420 [GCC_UFS_AHB_CLK] = &gcc_ufs_ahb_clk.clkr, 3421 [GCC_UFS_AXI_CLK] = &gcc_ufs_axi_clk.clkr, 3422 [GCC_UFS_RX_CFG_CLK] = &gcc_ufs_rx_cfg_clk.clkr, 3423 [GCC_UFS_RX_SYMBOL_0_CLK] = &gcc_ufs_rx_symbol_0_clk.clkr, 3424 [GCC_UFS_RX_SYMBOL_1_CLK] = &gcc_ufs_rx_symbol_1_clk.clkr, 3425 [GCC_UFS_TX_CFG_CLK] = &gcc_ufs_tx_cfg_clk.clkr, 3426 [GCC_UFS_TX_SYMBOL_0_CLK] = &gcc_ufs_tx_symbol_0_clk.clkr, 3427 [GCC_UFS_TX_SYMBOL_1_CLK] = &gcc_ufs_tx_symbol_1_clk.clkr, 3428 [GCC_USB2A_PHY_SLEEP_CLK] = &gcc_usb2a_phy_sleep_clk.clkr, 3429 [GCC_USB2B_PHY_SLEEP_CLK] = &gcc_usb2b_phy_sleep_clk.clkr, 3430 [GCC_USB30_MASTER_CLK] = &gcc_usb30_master_clk.clkr, 3431 [GCC_USB30_MOCK_UTMI_CLK] = &gcc_usb30_mock_utmi_clk.clkr, 3432 [GCC_USB30_SLEEP_CLK] = &gcc_usb30_sleep_clk.clkr, 3433 [GCC_USB30_SEC_MASTER_CLK] = &gcc_usb30_sec_master_clk.clkr, 3434 [GCC_USB30_SEC_MOCK_UTMI_CLK] = &gcc_usb30_sec_mock_utmi_clk.clkr, 3435 [GCC_USB30_SEC_SLEEP_CLK] = &gcc_usb30_sec_sleep_clk.clkr, 3436 [GCC_USB_HS_AHB_CLK] = &gcc_usb_hs_ahb_clk.clkr, 3437 [GCC_USB_HS_INACTIVITY_TIMERS_CLK] = &gcc_usb_hs_inactivity_timers_clk.clkr, 3438 [GCC_USB_HS_SYSTEM_CLK] = &gcc_usb_hs_system_clk.clkr, 3439 [GCC_USB_HSIC_AHB_CLK] = &gcc_usb_hsic_ahb_clk.clkr, 3440 [GCC_USB_HSIC_CLK] = &gcc_usb_hsic_clk.clkr, 3441 [GCC_USB_HSIC_IO_CAL_CLK] = &gcc_usb_hsic_io_cal_clk.clkr, 3442 [GCC_USB_HSIC_IO_CAL_SLEEP_CLK] = &gcc_usb_hsic_io_cal_sleep_clk.clkr, 3443 [GCC_USB_HSIC_MOCK_UTMI_CLK] = &gcc_usb_hsic_mock_utmi_clk.clkr, 3444 [GCC_USB_HSIC_SYSTEM_CLK] = &gcc_usb_hsic_system_clk.clkr, 3445 }; 3446 3447 static const struct qcom_reset_map gcc_apq8084_resets[] = { 3448 [GCC_SYSTEM_NOC_BCR] = { 0x0100 }, 3449 [GCC_CONFIG_NOC_BCR] = { 0x0140 }, 3450 [GCC_PERIPH_NOC_BCR] = { 0x0180 }, 3451 [GCC_IMEM_BCR] = { 0x0200 }, 3452 [GCC_MMSS_BCR] = { 0x0240 }, 3453 [GCC_QDSS_BCR] = { 0x0300 }, 3454 [GCC_USB_30_BCR] = { 0x03c0 }, 3455 [GCC_USB3_PHY_BCR] = { 0x03fc }, 3456 [GCC_USB_HS_HSIC_BCR] = { 0x0400 }, 3457 [GCC_USB_HS_BCR] = { 0x0480 }, 3458 [GCC_USB2A_PHY_BCR] = { 0x04a8 }, 3459 [GCC_USB2B_PHY_BCR] = { 0x04b0 }, 3460 [GCC_SDCC1_BCR] = { 0x04c0 }, 3461 [GCC_SDCC2_BCR] = { 0x0500 }, 3462 [GCC_SDCC3_BCR] = { 0x0540 }, 3463 [GCC_SDCC4_BCR] = { 0x0580 }, 3464 [GCC_BLSP1_BCR] = { 0x05c0 }, 3465 [GCC_BLSP1_QUP1_BCR] = { 0x0640 }, 3466 [GCC_BLSP1_UART1_BCR] = { 0x0680 }, 3467 [GCC_BLSP1_QUP2_BCR] = { 0x06c0 }, 3468 [GCC_BLSP1_UART2_BCR] = { 0x0700 }, 3469 [GCC_BLSP1_QUP3_BCR] = { 0x0740 }, 3470 [GCC_BLSP1_UART3_BCR] = { 0x0780 }, 3471 [GCC_BLSP1_QUP4_BCR] = { 0x07c0 }, 3472 [GCC_BLSP1_UART4_BCR] = { 0x0800 }, 3473 [GCC_BLSP1_QUP5_BCR] = { 0x0840 }, 3474 [GCC_BLSP1_UART5_BCR] = { 0x0880 }, 3475 [GCC_BLSP1_QUP6_BCR] = { 0x08c0 }, 3476 [GCC_BLSP1_UART6_BCR] = { 0x0900 }, 3477 [GCC_BLSP2_BCR] = { 0x0940 }, 3478 [GCC_BLSP2_QUP1_BCR] = { 0x0980 }, 3479 [GCC_BLSP2_UART1_BCR] = { 0x09c0 }, 3480 [GCC_BLSP2_QUP2_BCR] = { 0x0a00 }, 3481 [GCC_BLSP2_UART2_BCR] = { 0x0a40 }, 3482 [GCC_BLSP2_QUP3_BCR] = { 0x0a80 }, 3483 [GCC_BLSP2_UART3_BCR] = { 0x0ac0 }, 3484 [GCC_BLSP2_QUP4_BCR] = { 0x0b00 }, 3485 [GCC_BLSP2_UART4_BCR] = { 0x0b40 }, 3486 [GCC_BLSP2_QUP5_BCR] = { 0x0b80 }, 3487 [GCC_BLSP2_UART5_BCR] = { 0x0bc0 }, 3488 [GCC_BLSP2_QUP6_BCR] = { 0x0c00 }, 3489 [GCC_BLSP2_UART6_BCR] = { 0x0c40 }, 3490 [GCC_PDM_BCR] = { 0x0cc0 }, 3491 [GCC_PRNG_BCR] = { 0x0d00 }, 3492 [GCC_BAM_DMA_BCR] = { 0x0d40 }, 3493 [GCC_TSIF_BCR] = { 0x0d80 }, 3494 [GCC_TCSR_BCR] = { 0x0dc0 }, 3495 [GCC_BOOT_ROM_BCR] = { 0x0e00 }, 3496 [GCC_MSG_RAM_BCR] = { 0x0e40 }, 3497 [GCC_TLMM_BCR] = { 0x0e80 }, 3498 [GCC_MPM_BCR] = { 0x0ec0 }, 3499 [GCC_MPM_AHB_RESET] = { 0x0ec4, 1 }, 3500 [GCC_MPM_NON_AHB_RESET] = { 0x0ec4, 2 }, 3501 [GCC_SEC_CTRL_BCR] = { 0x0f40 }, 3502 [GCC_SPMI_BCR] = { 0x0fc0 }, 3503 [GCC_SPDM_BCR] = { 0x1000 }, 3504 [GCC_CE1_BCR] = { 0x1040 }, 3505 [GCC_CE2_BCR] = { 0x1080 }, 3506 [GCC_BIMC_BCR] = { 0x1100 }, 3507 [GCC_SNOC_BUS_TIMEOUT0_BCR] = { 0x1240 }, 3508 [GCC_SNOC_BUS_TIMEOUT2_BCR] = { 0x1248 }, 3509 [GCC_PNOC_BUS_TIMEOUT0_BCR] = { 0x1280 }, 3510 [GCC_PNOC_BUS_TIMEOUT1_BCR] = { 0x1288 }, 3511 [GCC_PNOC_BUS_TIMEOUT2_BCR] = { 0x1290 }, 3512 [GCC_PNOC_BUS_TIMEOUT3_BCR] = { 0x1298 }, 3513 [GCC_PNOC_BUS_TIMEOUT4_BCR] = { 0x12a0 }, 3514 [GCC_CNOC_BUS_TIMEOUT0_BCR] = { 0x12c0 }, 3515 [GCC_CNOC_BUS_TIMEOUT1_BCR] = { 0x12c8 }, 3516 [GCC_CNOC_BUS_TIMEOUT2_BCR] = { 0x12d0 }, 3517 [GCC_CNOC_BUS_TIMEOUT3_BCR] = { 0x12d8 }, 3518 [GCC_CNOC_BUS_TIMEOUT4_BCR] = { 0x12e0 }, 3519 [GCC_CNOC_BUS_TIMEOUT5_BCR] = { 0x12e8 }, 3520 [GCC_CNOC_BUS_TIMEOUT6_BCR] = { 0x12f0 }, 3521 [GCC_DEHR_BCR] = { 0x1300 }, 3522 [GCC_RBCPR_BCR] = { 0x1380 }, 3523 [GCC_MSS_RESTART] = { 0x1680 }, 3524 [GCC_LPASS_RESTART] = { 0x16c0 }, 3525 [GCC_WCSS_RESTART] = { 0x1700 }, 3526 [GCC_VENUS_RESTART] = { 0x1740 }, 3527 [GCC_COPSS_SMMU_BCR] = { 0x1a40 }, 3528 [GCC_SPSS_BCR] = { 0x1a80 }, 3529 [GCC_PCIE_0_BCR] = { 0x1ac0 }, 3530 [GCC_PCIE_0_PHY_BCR] = { 0x1b00 }, 3531 [GCC_PCIE_1_BCR] = { 0x1b40 }, 3532 [GCC_PCIE_1_PHY_BCR] = { 0x1b80 }, 3533 [GCC_USB_30_SEC_BCR] = { 0x1bc0 }, 3534 [GCC_USB3_SEC_PHY_BCR] = { 0x1bfc }, 3535 [GCC_SATA_BCR] = { 0x1c40 }, 3536 [GCC_CE3_BCR] = { 0x1d00 }, 3537 [GCC_UFS_BCR] = { 0x1d40 }, 3538 [GCC_USB30_PHY_COM_BCR] = { 0x1e80 }, 3539 }; 3540 3541 static const struct regmap_config gcc_apq8084_regmap_config = { 3542 .reg_bits = 32, 3543 .reg_stride = 4, 3544 .val_bits = 32, 3545 .max_register = 0x1fc0, 3546 .fast_io = true, 3547 }; 3548 3549 static const struct qcom_cc_desc gcc_apq8084_desc = { 3550 .config = &gcc_apq8084_regmap_config, 3551 .clks = gcc_apq8084_clocks, 3552 .num_clks = ARRAY_SIZE(gcc_apq8084_clocks), 3553 .resets = gcc_apq8084_resets, 3554 .num_resets = ARRAY_SIZE(gcc_apq8084_resets), 3555 }; 3556 3557 static const struct of_device_id gcc_apq8084_match_table[] = { 3558 { .compatible = "qcom,gcc-apq8084" }, 3559 { } 3560 }; 3561 MODULE_DEVICE_TABLE(of, gcc_apq8084_match_table); 3562 3563 static int gcc_apq8084_probe(struct platform_device *pdev) 3564 { 3565 struct clk *clk; 3566 struct device *dev = &pdev->dev; 3567 3568 /* Temporary until RPM clocks supported */ 3569 clk = clk_register_fixed_rate(dev, "xo", NULL, CLK_IS_ROOT, 19200000); 3570 if (IS_ERR(clk)) 3571 return PTR_ERR(clk); 3572 3573 clk = clk_register_fixed_rate(dev, "sleep_clk_src", NULL, 3574 CLK_IS_ROOT, 32768); 3575 if (IS_ERR(clk)) 3576 return PTR_ERR(clk); 3577 3578 return qcom_cc_probe(pdev, &gcc_apq8084_desc); 3579 } 3580 3581 static int gcc_apq8084_remove(struct platform_device *pdev) 3582 { 3583 qcom_cc_remove(pdev); 3584 return 0; 3585 } 3586 3587 static struct platform_driver gcc_apq8084_driver = { 3588 .probe = gcc_apq8084_probe, 3589 .remove = gcc_apq8084_remove, 3590 .driver = { 3591 .name = "gcc-apq8084", 3592 .of_match_table = gcc_apq8084_match_table, 3593 }, 3594 }; 3595 3596 static int __init gcc_apq8084_init(void) 3597 { 3598 return platform_driver_register(&gcc_apq8084_driver); 3599 } 3600 core_initcall(gcc_apq8084_init); 3601 3602 static void __exit gcc_apq8084_exit(void) 3603 { 3604 platform_driver_unregister(&gcc_apq8084_driver); 3605 } 3606 module_exit(gcc_apq8084_exit); 3607 3608 MODULE_DESCRIPTION("QCOM GCC APQ8084 Driver"); 3609 MODULE_LICENSE("GPL v2"); 3610 MODULE_ALIAS("platform:gcc-apq8084"); 3611