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