1 // SPDX-License-Identifier: GPL-2.0-only 2 /* 3 * Copyright (C) 2023 Otto Pflüger 4 * 5 * Based on gcc-msm8953.c: 6 * Copyright 2021, The Linux Foundation. All rights reserved. 7 * with parts taken from gcc-qcs404.c: 8 * Copyright 2018, The Linux Foundation. All rights reserved. 9 * and gcc-msm8939.c: 10 * Copyright 2020 Linaro Limited 11 * adapted with data from clock-gcc-8952.c in Qualcomm's msm-4.9 release: 12 * Copyright (c) 2014-2020, The Linux Foundation. All rights reserved. 13 */ 14 15 #include <linux/bitops.h> 16 #include <linux/clk-provider.h> 17 #include <linux/err.h> 18 #include <linux/kernel.h> 19 #include <linux/module.h> 20 #include <linux/of.h> 21 #include <linux/platform_device.h> 22 #include <linux/regmap.h> 23 #include <linux/reset-controller.h> 24 25 #include <dt-bindings/clock/qcom,gcc-msm8917.h> 26 27 #include "clk-alpha-pll.h" 28 #include "clk-branch.h" 29 #include "clk-pll.h" 30 #include "clk-rcg.h" 31 #include "common.h" 32 #include "gdsc.h" 33 #include "reset.h" 34 35 enum { 36 DT_XO, 37 DT_SLEEP_CLK, 38 DT_DSI0PLL, 39 DT_DSI0PLL_BYTE, 40 DT_DSI1PLL, 41 DT_DSI1PLL_BYTE, 42 }; 43 44 enum { 45 P_XO, 46 P_SLEEP_CLK, 47 P_GPLL0, 48 P_GPLL3, 49 P_GPLL4, 50 P_GPLL6, 51 P_DSI0PLL, 52 P_DSI0PLL_BYTE, 53 P_DSI1PLL, 54 P_DSI1PLL_BYTE, 55 }; 56 57 static struct clk_alpha_pll gpll0_sleep_clk_src = { 58 .offset = 0x21000, 59 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 60 .clkr = { 61 .enable_reg = 0x45008, 62 .enable_mask = BIT(23), 63 .enable_is_inverted = true, 64 .hw.init = &(struct clk_init_data){ 65 .name = "gpll0_sleep_clk_src", 66 .parent_data = &(const struct clk_parent_data) { 67 .index = DT_XO, 68 }, 69 .num_parents = 1, 70 .ops = &clk_branch_simple_ops, 71 }, 72 }, 73 }; 74 75 static struct clk_alpha_pll gpll0_early = { 76 .offset = 0x21000, 77 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 78 .clkr = { 79 .enable_reg = 0x45000, 80 .enable_mask = BIT(0), 81 .hw.init = &(struct clk_init_data) { 82 .name = "gpll0_early", 83 .parent_hws = (const struct clk_hw*[]){ 84 &gpll0_sleep_clk_src.clkr.hw, 85 }, 86 .num_parents = 1, 87 .ops = &clk_alpha_pll_fixed_ops, 88 }, 89 }, 90 }; 91 92 static struct clk_alpha_pll_postdiv gpll0 = { 93 .offset = 0x21000, 94 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 95 .clkr.hw.init = &(struct clk_init_data){ 96 .name = "gpll0", 97 .parent_hws = (const struct clk_hw*[]){ 98 &gpll0_early.clkr.hw, 99 }, 100 .num_parents = 1, 101 .ops = &clk_alpha_pll_postdiv_ro_ops, 102 }, 103 }; 104 105 static const struct pll_vco gpll3_p_vco[] = { 106 { 700000000, 1400000000, 0 }, 107 }; 108 109 static const struct pll_vco gpll3_p_vco_msm8937[] = { 110 { 525000000, 1066000000, 0 }, 111 }; 112 113 static struct alpha_pll_config gpll3_early_config = { 114 .l = 63, 115 .config_ctl_val = 0x4001055b, 116 .early_output_mask = 0, 117 .post_div_mask = GENMASK(11, 8), 118 .post_div_val = BIT(8), 119 }; 120 121 static struct clk_alpha_pll gpll3_early = { 122 .offset = 0x22000, 123 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 124 .vco_table = gpll3_p_vco, 125 .num_vco = ARRAY_SIZE(gpll3_p_vco), 126 .flags = SUPPORTS_DYNAMIC_UPDATE, 127 .clkr = { 128 .hw.init = &(struct clk_init_data){ 129 .name = "gpll3_early", 130 .parent_data = &(const struct clk_parent_data) { 131 .index = DT_XO, 132 }, 133 .num_parents = 1, 134 .ops = &clk_alpha_pll_ops, 135 }, 136 }, 137 }; 138 139 static struct clk_alpha_pll_postdiv gpll3 = { 140 .offset = 0x22000, 141 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 142 .clkr.hw.init = &(struct clk_init_data){ 143 .name = "gpll3", 144 .parent_hws = (const struct clk_hw*[]){ 145 &gpll3_early.clkr.hw, 146 }, 147 .num_parents = 1, 148 .ops = &clk_alpha_pll_postdiv_ops, 149 .flags = CLK_SET_RATE_PARENT, 150 }, 151 }; 152 153 static struct clk_alpha_pll gpll4_early = { 154 .offset = 0x24000, 155 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 156 .clkr = { 157 .enable_reg = 0x45000, 158 .enable_mask = BIT(5), 159 .hw.init = &(struct clk_init_data){ 160 .name = "gpll4_early", 161 .parent_data = &(const struct clk_parent_data) { 162 .index = DT_XO, 163 }, 164 .num_parents = 1, 165 .ops = &clk_alpha_pll_fixed_ops, 166 }, 167 }, 168 }; 169 170 static struct clk_alpha_pll_postdiv gpll4 = { 171 .offset = 0x24000, 172 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], 173 .clkr.hw.init = &(struct clk_init_data){ 174 .name = "gpll4", 175 .parent_hws = (const struct clk_hw*[]){ 176 &gpll4_early.clkr.hw, 177 }, 178 .num_parents = 1, 179 .ops = &clk_alpha_pll_postdiv_ro_ops, 180 }, 181 }; 182 183 static struct clk_pll gpll6_early = { 184 .l_reg = 0x37004, 185 .m_reg = 0x37008, 186 .n_reg = 0x3700c, 187 .config_reg = 0x37014, 188 .mode_reg = 0x37000, 189 .status_reg = 0x3701c, 190 .status_bit = 17, 191 .clkr.hw.init = &(struct clk_init_data){ 192 .name = "gpll6_early", 193 .parent_data = &(const struct clk_parent_data) { 194 .index = DT_XO, 195 }, 196 .num_parents = 1, 197 .ops = &clk_pll_ops, 198 }, 199 }; 200 201 static struct clk_regmap gpll6 = { 202 .enable_reg = 0x45000, 203 .enable_mask = BIT(7), 204 .hw.init = &(struct clk_init_data){ 205 .name = "gpll6", 206 .parent_hws = (const struct clk_hw*[]){ 207 &gpll6_early.clkr.hw, 208 }, 209 .num_parents = 1, 210 .ops = &clk_pll_vote_ops, 211 }, 212 }; 213 214 static const struct parent_map gcc_xo_gpll0_map[] = { 215 { P_XO, 0 }, 216 { P_GPLL0, 1 }, 217 }; 218 219 static const struct parent_map gcc_xo_gpll0_out_aux_map[] = { 220 { P_XO, 0 }, 221 { P_GPLL0, 2 }, 222 }; 223 224 static const struct clk_parent_data gcc_xo_gpll0_data[] = { 225 { .index = DT_XO }, 226 { .hw = &gpll0.clkr.hw }, 227 }; 228 229 static const struct parent_map gcc_xo_gpll0_gpll6_sleep_map[] = { 230 { P_XO, 0 }, 231 { P_GPLL0, 1 }, 232 { P_GPLL6, 2 }, 233 { P_SLEEP_CLK, 6 }, 234 }; 235 236 static const struct clk_parent_data gcc_xo_gpll0_gpll6_sleep_data[] = { 237 { .index = DT_XO }, 238 { .hw = &gpll0.clkr.hw }, 239 { .hw = &gpll6.hw }, 240 { .index = DT_SLEEP_CLK }, 241 }; 242 243 static const struct parent_map gcc_xo_gpll0_gpll6_gpll4_map[] = { 244 { P_XO, 0 }, 245 { P_GPLL0, 1 }, 246 { P_GPLL6, 2 }, 247 { P_GPLL4, 3 }, 248 }; 249 250 static const struct clk_parent_data gcc_xo_gpll0_gpll6_gpll4_data[] = { 251 { .index = DT_XO }, 252 { .hw = &gpll0.clkr.hw }, 253 { .hw = &gpll6.hw }, 254 { .hw = &gpll4.clkr.hw }, 255 }; 256 257 static const struct freq_tbl ftbl_apss_ahb_clk_src[] = { 258 F(19200000, P_XO, 1, 0, 0), 259 F(50000000, P_GPLL0, 16, 0, 0), 260 F(100000000, P_GPLL0, 8, 0, 0), 261 F(133330000, P_GPLL0, 6, 0, 0), 262 { } 263 }; 264 265 static struct clk_rcg2 apss_ahb_clk_src = { 266 .cmd_rcgr = 0x46000, 267 .hid_width = 5, 268 .freq_tbl = ftbl_apss_ahb_clk_src, 269 .parent_map = gcc_xo_gpll0_map, 270 .clkr.hw.init = &(struct clk_init_data) { 271 .name = "apss_ahb_clk_src", 272 .parent_data = gcc_xo_gpll0_data, 273 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 274 .ops = &clk_rcg2_ops, 275 } 276 }; 277 278 static const struct freq_tbl ftbl_blsp_i2c_apps_clk_src[] = { 279 F(19200000, P_XO, 1, 0, 0), 280 F(50000000, P_GPLL0, 16, 0, 0), 281 { } 282 }; 283 284 static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = { 285 .cmd_rcgr = 0x0200c, 286 .hid_width = 5, 287 .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 288 .parent_map = gcc_xo_gpll0_map, 289 .clkr.hw.init = &(struct clk_init_data){ 290 .name = "blsp1_qup1_i2c_apps_clk_src", 291 .parent_data = gcc_xo_gpll0_data, 292 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 293 .ops = &clk_rcg2_ops, 294 }, 295 }; 296 297 static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = { 298 .cmd_rcgr = 0x03000, 299 .hid_width = 5, 300 .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 301 .parent_map = gcc_xo_gpll0_map, 302 .clkr.hw.init = &(struct clk_init_data) { 303 .name = "blsp1_qup2_i2c_apps_clk_src", 304 .parent_data = gcc_xo_gpll0_data, 305 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 306 .ops = &clk_rcg2_ops, 307 } 308 }; 309 310 static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = { 311 .cmd_rcgr = 0x04000, 312 .hid_width = 5, 313 .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 314 .parent_map = gcc_xo_gpll0_map, 315 .clkr.hw.init = &(struct clk_init_data) { 316 .name = "blsp1_qup3_i2c_apps_clk_src", 317 .parent_data = gcc_xo_gpll0_data, 318 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 319 .ops = &clk_rcg2_ops, 320 } 321 }; 322 323 static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = { 324 .cmd_rcgr = 0x05000, 325 .hid_width = 5, 326 .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 327 .parent_map = gcc_xo_gpll0_map, 328 .clkr.hw.init = &(struct clk_init_data) { 329 .name = "blsp1_qup4_i2c_apps_clk_src", 330 .parent_data = gcc_xo_gpll0_data, 331 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 332 .ops = &clk_rcg2_ops, 333 } 334 }; 335 336 static struct clk_rcg2 blsp2_qup1_i2c_apps_clk_src = { 337 .cmd_rcgr = 0x0c00c, 338 .hid_width = 5, 339 .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 340 .parent_map = gcc_xo_gpll0_map, 341 .clkr.hw.init = &(struct clk_init_data) { 342 .name = "blsp2_qup1_i2c_apps_clk_src", 343 .parent_data = gcc_xo_gpll0_data, 344 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 345 .ops = &clk_rcg2_ops, 346 } 347 }; 348 349 static struct clk_rcg2 blsp2_qup2_i2c_apps_clk_src = { 350 .cmd_rcgr = 0x0d000, 351 .hid_width = 5, 352 .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 353 .parent_map = gcc_xo_gpll0_map, 354 .clkr.hw.init = &(struct clk_init_data) { 355 .name = "blsp2_qup2_i2c_apps_clk_src", 356 .parent_data = gcc_xo_gpll0_data, 357 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 358 .ops = &clk_rcg2_ops, 359 } 360 }; 361 362 static struct clk_rcg2 blsp2_qup3_i2c_apps_clk_src = { 363 .cmd_rcgr = 0x0f000, 364 .hid_width = 5, 365 .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 366 .parent_map = gcc_xo_gpll0_map, 367 .clkr.hw.init = &(struct clk_init_data) { 368 .name = "blsp2_qup3_i2c_apps_clk_src", 369 .parent_data = gcc_xo_gpll0_data, 370 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 371 .ops = &clk_rcg2_ops, 372 } 373 }; 374 375 static struct clk_rcg2 blsp2_qup4_i2c_apps_clk_src = { 376 .cmd_rcgr = 0x18000, 377 .hid_width = 5, 378 .freq_tbl = ftbl_blsp_i2c_apps_clk_src, 379 .parent_map = gcc_xo_gpll0_map, 380 .clkr.hw.init = &(struct clk_init_data){ 381 .name = "blsp2_qup4_i2c_apps_clk_src", 382 .parent_data = gcc_xo_gpll0_data, 383 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 384 .ops = &clk_rcg2_ops, 385 }, 386 }; 387 388 static const struct freq_tbl ftbl_blsp_spi_apps_clk_src[] = { 389 F(960000, P_XO, 10, 1, 2), 390 F(4800000, P_XO, 4, 0, 0), 391 F(9600000, P_XO, 2, 0, 0), 392 F(16000000, P_GPLL0, 10, 1, 5), 393 F(19200000, P_XO, 1, 0, 0), 394 F(25000000, P_GPLL0, 16, 1, 2), 395 F(50000000, P_GPLL0, 16, 0, 0), 396 { } 397 }; 398 399 static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = { 400 .cmd_rcgr = 0x02024, 401 .mnd_width = 8, 402 .hid_width = 5, 403 .freq_tbl = ftbl_blsp_spi_apps_clk_src, 404 .parent_map = gcc_xo_gpll0_map, 405 .clkr.hw.init = &(struct clk_init_data){ 406 .name = "blsp1_qup1_spi_apps_clk_src", 407 .parent_data = gcc_xo_gpll0_data, 408 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 409 .ops = &clk_rcg2_ops, 410 }, 411 }; 412 413 static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = { 414 .cmd_rcgr = 0x03014, 415 .hid_width = 5, 416 .mnd_width = 8, 417 .freq_tbl = ftbl_blsp_spi_apps_clk_src, 418 .parent_map = gcc_xo_gpll0_map, 419 .clkr.hw.init = &(struct clk_init_data) { 420 .name = "blsp1_qup2_spi_apps_clk_src", 421 .parent_data = gcc_xo_gpll0_data, 422 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 423 .ops = &clk_rcg2_ops, 424 } 425 }; 426 427 static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = { 428 .cmd_rcgr = 0x04024, 429 .hid_width = 5, 430 .mnd_width = 8, 431 .freq_tbl = ftbl_blsp_spi_apps_clk_src, 432 .parent_map = gcc_xo_gpll0_map, 433 .clkr.hw.init = &(struct clk_init_data) { 434 .name = "blsp1_qup3_spi_apps_clk_src", 435 .parent_data = gcc_xo_gpll0_data, 436 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 437 .ops = &clk_rcg2_ops, 438 } 439 }; 440 441 static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = { 442 .cmd_rcgr = 0x05024, 443 .hid_width = 5, 444 .mnd_width = 8, 445 .freq_tbl = ftbl_blsp_spi_apps_clk_src, 446 .parent_map = gcc_xo_gpll0_map, 447 .clkr.hw.init = &(struct clk_init_data) { 448 .name = "blsp1_qup4_spi_apps_clk_src", 449 .parent_data = gcc_xo_gpll0_data, 450 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 451 .ops = &clk_rcg2_ops, 452 } 453 }; 454 455 static struct clk_rcg2 blsp2_qup1_spi_apps_clk_src = { 456 .cmd_rcgr = 0x0c024, 457 .hid_width = 5, 458 .mnd_width = 8, 459 .freq_tbl = ftbl_blsp_spi_apps_clk_src, 460 .parent_map = gcc_xo_gpll0_map, 461 .clkr.hw.init = &(struct clk_init_data) { 462 .name = "blsp2_qup1_spi_apps_clk_src", 463 .parent_data = gcc_xo_gpll0_data, 464 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 465 .ops = &clk_rcg2_ops, 466 } 467 }; 468 469 static struct clk_rcg2 blsp2_qup2_spi_apps_clk_src = { 470 .cmd_rcgr = 0x0d014, 471 .hid_width = 5, 472 .mnd_width = 8, 473 .freq_tbl = ftbl_blsp_spi_apps_clk_src, 474 .parent_map = gcc_xo_gpll0_map, 475 .clkr.hw.init = &(struct clk_init_data) { 476 .name = "blsp2_qup2_spi_apps_clk_src", 477 .parent_data = gcc_xo_gpll0_data, 478 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 479 .ops = &clk_rcg2_ops, 480 } 481 }; 482 483 static struct clk_rcg2 blsp2_qup3_spi_apps_clk_src = { 484 .cmd_rcgr = 0x0f024, 485 .hid_width = 5, 486 .mnd_width = 8, 487 .freq_tbl = ftbl_blsp_spi_apps_clk_src, 488 .parent_map = gcc_xo_gpll0_map, 489 .clkr.hw.init = &(struct clk_init_data) { 490 .name = "blsp2_qup3_spi_apps_clk_src", 491 .parent_data = gcc_xo_gpll0_data, 492 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 493 .ops = &clk_rcg2_ops, 494 } 495 }; 496 497 static struct clk_rcg2 blsp2_qup4_spi_apps_clk_src = { 498 .cmd_rcgr = 0x18024, 499 .mnd_width = 8, 500 .hid_width = 5, 501 .freq_tbl = ftbl_blsp_spi_apps_clk_src, 502 .parent_map = gcc_xo_gpll0_map, 503 .clkr.hw.init = &(struct clk_init_data){ 504 .name = "blsp2_qup4_spi_apps_clk_src", 505 .parent_data = gcc_xo_gpll0_data, 506 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 507 .ops = &clk_rcg2_ops, 508 }, 509 }; 510 511 static const struct freq_tbl ftbl_blsp_uart_apps_clk_src[] = { 512 F(3686400, P_GPLL0, 1, 72, 15625), 513 F(7372800, P_GPLL0, 1, 144, 15625), 514 F(14745600, P_GPLL0, 1, 288, 15625), 515 F(16000000, P_GPLL0, 10, 1, 5), 516 F(19200000, P_XO, 1, 0, 0), 517 F(24000000, P_GPLL0, 1, 3, 100), 518 F(25000000, P_GPLL0, 16, 1, 2), 519 F(32000000, P_GPLL0, 1, 1, 25), 520 F(40000000, P_GPLL0, 1, 1, 20), 521 F(46400000, P_GPLL0, 1, 29, 500), 522 F(48000000, P_GPLL0, 1, 3, 50), 523 F(51200000, P_GPLL0, 1, 8, 125), 524 F(56000000, P_GPLL0, 1, 7, 100), 525 F(58982400, P_GPLL0, 1, 1152, 15625), 526 F(60000000, P_GPLL0, 1, 3, 40), 527 F(64000000, P_GPLL0, 1, 2, 25), 528 { } 529 }; 530 531 static struct clk_rcg2 blsp1_uart1_apps_clk_src = { 532 .cmd_rcgr = 0x02044, 533 .hid_width = 5, 534 .mnd_width = 16, 535 .freq_tbl = ftbl_blsp_uart_apps_clk_src, 536 .parent_map = gcc_xo_gpll0_map, 537 .clkr.hw.init = &(struct clk_init_data) { 538 .name = "blsp1_uart1_apps_clk_src", 539 .parent_data = gcc_xo_gpll0_data, 540 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 541 .ops = &clk_rcg2_ops, 542 } 543 }; 544 545 static struct clk_rcg2 blsp1_uart2_apps_clk_src = { 546 .cmd_rcgr = 0x03034, 547 .hid_width = 5, 548 .mnd_width = 16, 549 .freq_tbl = ftbl_blsp_uart_apps_clk_src, 550 .parent_map = gcc_xo_gpll0_map, 551 .clkr.hw.init = &(struct clk_init_data) { 552 .name = "blsp1_uart2_apps_clk_src", 553 .parent_data = gcc_xo_gpll0_data, 554 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 555 .ops = &clk_rcg2_ops, 556 } 557 }; 558 559 static struct clk_rcg2 blsp2_uart1_apps_clk_src = { 560 .cmd_rcgr = 0x0c044, 561 .hid_width = 5, 562 .mnd_width = 16, 563 .freq_tbl = ftbl_blsp_uart_apps_clk_src, 564 .parent_map = gcc_xo_gpll0_map, 565 .clkr.hw.init = &(struct clk_init_data) { 566 .name = "blsp2_uart1_apps_clk_src", 567 .parent_data = gcc_xo_gpll0_data, 568 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 569 .ops = &clk_rcg2_ops, 570 } 571 }; 572 573 static struct clk_rcg2 blsp2_uart2_apps_clk_src = { 574 .cmd_rcgr = 0x0d034, 575 .hid_width = 5, 576 .mnd_width = 16, 577 .freq_tbl = ftbl_blsp_uart_apps_clk_src, 578 .parent_map = gcc_xo_gpll0_map, 579 .clkr.hw.init = &(struct clk_init_data) { 580 .name = "blsp2_uart2_apps_clk_src", 581 .parent_data = gcc_xo_gpll0_data, 582 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 583 .ops = &clk_rcg2_ops, 584 } 585 }; 586 587 static const struct parent_map gcc_byte0_map[] = { 588 { P_XO, 0 }, 589 { P_DSI0PLL_BYTE, 1 }, 590 { P_DSI1PLL_BYTE, 3 }, 591 }; 592 593 static const struct parent_map gcc_byte1_map[] = { 594 { P_XO, 0 }, 595 { P_DSI0PLL_BYTE, 3 }, 596 { P_DSI1PLL_BYTE, 1 }, 597 }; 598 599 static const struct clk_parent_data gcc_byte_data[] = { 600 { .index = DT_XO }, 601 { .index = DT_DSI0PLL_BYTE }, 602 { .index = DT_DSI1PLL_BYTE }, 603 }; 604 605 static struct clk_rcg2 byte0_clk_src = { 606 .cmd_rcgr = 0x4d044, 607 .hid_width = 5, 608 .parent_map = gcc_byte0_map, 609 .clkr.hw.init = &(struct clk_init_data) { 610 .name = "byte0_clk_src", 611 .parent_data = gcc_byte_data, 612 .num_parents = ARRAY_SIZE(gcc_byte_data), 613 .ops = &clk_byte2_ops, 614 .flags = CLK_SET_RATE_PARENT, 615 } 616 }; 617 618 static struct clk_rcg2 byte1_clk_src = { 619 .cmd_rcgr = 0x4d0b0, 620 .hid_width = 5, 621 .parent_map = gcc_byte1_map, 622 .clkr.hw.init = &(struct clk_init_data){ 623 .name = "byte1_clk_src", 624 .parent_data = gcc_byte_data, 625 .num_parents = ARRAY_SIZE(gcc_byte_data), 626 .ops = &clk_byte2_ops, 627 .flags = CLK_SET_RATE_PARENT, 628 }, 629 }; 630 631 static const struct freq_tbl ftbl_camss_gp_clk_src[] = { 632 F(100000000, P_GPLL0, 8, 0, 0), 633 F(160000000, P_GPLL0, 5, 0, 0), 634 F(200000000, P_GPLL0, 4, 0, 0), 635 { } 636 }; 637 638 static struct clk_rcg2 camss_gp0_clk_src = { 639 .cmd_rcgr = 0x54000, 640 .hid_width = 5, 641 .mnd_width = 8, 642 .freq_tbl = ftbl_camss_gp_clk_src, 643 .parent_map = gcc_xo_gpll0_gpll6_sleep_map, 644 .clkr.hw.init = &(struct clk_init_data) { 645 .name = "camss_gp0_clk_src", 646 .parent_data = gcc_xo_gpll0_gpll6_sleep_data, 647 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll6_sleep_data), 648 .ops = &clk_rcg2_ops, 649 } 650 }; 651 652 static struct clk_rcg2 camss_gp1_clk_src = { 653 .cmd_rcgr = 0x55000, 654 .hid_width = 5, 655 .mnd_width = 8, 656 .freq_tbl = ftbl_camss_gp_clk_src, 657 .parent_map = gcc_xo_gpll0_gpll6_sleep_map, 658 .clkr.hw.init = &(struct clk_init_data) { 659 .name = "camss_gp1_clk_src", 660 .parent_data = gcc_xo_gpll0_gpll6_sleep_data, 661 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll6_sleep_data), 662 .ops = &clk_rcg2_ops, 663 } 664 }; 665 666 static const struct freq_tbl ftbl_camss_top_ahb_clk_src[] = { 667 F(40000000, P_GPLL0, 10, 1, 2), 668 F(61540000, P_GPLL0, 13, 0, 0), 669 F(80000000, P_GPLL0, 10, 0, 0), 670 { } 671 }; 672 673 static struct clk_rcg2 camss_top_ahb_clk_src = { 674 .cmd_rcgr = 0x5a000, 675 .hid_width = 5, 676 .freq_tbl = ftbl_camss_top_ahb_clk_src, 677 .parent_map = gcc_xo_gpll0_map, 678 .clkr.hw.init = &(struct clk_init_data) { 679 .name = "camss_top_ahb_clk_src", 680 .parent_data = gcc_xo_gpll0_data, 681 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 682 .ops = &clk_rcg2_ops, 683 } 684 }; 685 686 static const struct freq_tbl ftbl_cci_clk_src[] = { 687 F(19200000, P_XO, 1, 0, 0), 688 F(37500000, P_GPLL0, 1, 3, 64), 689 { } 690 }; 691 692 static struct clk_rcg2 cci_clk_src = { 693 .cmd_rcgr = 0x51000, 694 .hid_width = 5, 695 .mnd_width = 8, 696 .freq_tbl = ftbl_cci_clk_src, 697 .parent_map = gcc_xo_gpll0_out_aux_map, 698 .clkr.hw.init = &(struct clk_init_data) { 699 .name = "cci_clk_src", 700 .parent_data = gcc_xo_gpll0_data, 701 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 702 .ops = &clk_rcg2_ops, 703 } 704 }; 705 706 static const struct parent_map gcc_cpp_map[] = { 707 { P_XO, 0 }, 708 { P_GPLL0, 1 }, 709 { P_GPLL6, 3 }, 710 }; 711 712 static const struct clk_parent_data gcc_cpp_data[] = { 713 { .index = DT_XO }, 714 { .hw = &gpll0.clkr.hw }, 715 { .hw = &gpll6.hw }, 716 }; 717 718 static const struct freq_tbl ftbl_cpp_clk_src[] = { 719 F(133330000, P_GPLL0, 6, 0, 0), 720 F(160000000, P_GPLL0, 5, 0, 0), 721 F(266670000, P_GPLL0, 3, 0, 0), 722 F(308570000, P_GPLL0, 3.5, 0, 0), 723 F(320000000, P_GPLL0, 2.5, 0, 0), 724 F(360000000, P_GPLL6, 3, 0, 0), 725 { } 726 }; 727 728 static const struct freq_tbl ftbl_cpp_clk_src_msm8937[] = { 729 F(133330000, P_GPLL0, 6, 0, 0), 730 F(160000000, P_GPLL0, 5, 0, 0), 731 F(200000000, P_GPLL0, 5, 0, 0), 732 F(266666667, P_GPLL0, 3, 0, 0), 733 F(308570000, P_GPLL6, 3.5, 0, 0), 734 F(320000000, P_GPLL0, 2.5, 0, 0), 735 F(360000000, P_GPLL6, 3, 0, 0), 736 { } 737 }; 738 739 static struct clk_rcg2 cpp_clk_src = { 740 .cmd_rcgr = 0x58018, 741 .hid_width = 5, 742 .freq_tbl = ftbl_cpp_clk_src, 743 .parent_map = gcc_cpp_map, 744 .clkr.hw.init = &(struct clk_init_data) { 745 .name = "cpp_clk_src", 746 .parent_data = gcc_cpp_data, 747 .num_parents = ARRAY_SIZE(gcc_cpp_data), 748 .ops = &clk_rcg2_ops, 749 } 750 }; 751 752 static struct clk_init_data vcodec0_clk_src_init_msm8937 = { 753 .name = "vcodec0_clk_src", 754 .parent_data = gcc_cpp_data, 755 .num_parents = ARRAY_SIZE(gcc_cpp_data), 756 .ops = &clk_rcg2_ops, 757 }; 758 759 static const struct freq_tbl ftbl_crypto_clk_src[] = { 760 F(50000000, P_GPLL0, 16, 0, 0), 761 F(80000000, P_GPLL0, 10, 0, 0), 762 F(100000000, P_GPLL0, 8, 0, 0), 763 F(160000000, P_GPLL0, 5, 0, 0), 764 { } 765 }; 766 767 static struct clk_rcg2 crypto_clk_src = { 768 .cmd_rcgr = 0x16004, 769 .hid_width = 5, 770 .freq_tbl = ftbl_crypto_clk_src, 771 .parent_map = gcc_xo_gpll0_map, 772 .clkr.hw.init = &(struct clk_init_data) { 773 .name = "crypto_clk_src", 774 .parent_data = gcc_xo_gpll0_data, 775 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 776 .ops = &clk_rcg2_ops, 777 } 778 }; 779 780 static const struct freq_tbl ftbl_csi_clk_src[] = { 781 F(100000000, P_GPLL0, 8, 0, 0), 782 F(160000000, P_GPLL0, 5, 0, 0), 783 F(200000000, P_GPLL0, 4, 0, 0), 784 { } 785 }; 786 787 static struct clk_rcg2 csi0_clk_src = { 788 .cmd_rcgr = 0x4e020, 789 .hid_width = 5, 790 .freq_tbl = ftbl_csi_clk_src, 791 .parent_map = gcc_xo_gpll0_map, 792 .clkr.hw.init = &(struct clk_init_data) { 793 .name = "csi0_clk_src", 794 .parent_data = gcc_xo_gpll0_data, 795 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 796 .ops = &clk_rcg2_ops, 797 } 798 }; 799 800 static struct clk_rcg2 csi1_clk_src = { 801 .cmd_rcgr = 0x4f020, 802 .hid_width = 5, 803 .freq_tbl = ftbl_csi_clk_src, 804 .parent_map = gcc_xo_gpll0_map, 805 .clkr.hw.init = &(struct clk_init_data) { 806 .name = "csi1_clk_src", 807 .parent_data = gcc_xo_gpll0_data, 808 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 809 .ops = &clk_rcg2_ops, 810 } 811 }; 812 813 static struct clk_rcg2 csi2_clk_src = { 814 .cmd_rcgr = 0x3c020, 815 .hid_width = 5, 816 .freq_tbl = ftbl_csi_clk_src, 817 .parent_map = gcc_xo_gpll0_map, 818 .clkr.hw.init = &(struct clk_init_data) { 819 .name = "csi2_clk_src", 820 .parent_data = gcc_xo_gpll0_data, 821 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 822 .ops = &clk_rcg2_ops, 823 } 824 }; 825 826 static const struct freq_tbl ftbl_csi_phytimer_clk_src[] = { 827 F(100000000, P_GPLL0, 8, 0, 0), 828 F(160000000, P_GPLL0, 5, 0, 0), 829 F(200000000, P_GPLL0, 4, 0, 0), 830 F(266670000, P_GPLL0, 3, 0, 0), 831 { } 832 }; 833 834 static const struct freq_tbl ftbl_csi_phytimer_clk_src_msm8937[] = { 835 F(100000000, P_GPLL0, 8, 0, 0), 836 F(160000000, P_GPLL0, 5, 0, 0), 837 F(200000000, P_GPLL0, 4, 0, 0), 838 { } 839 }; 840 841 static struct clk_rcg2 csi0phytimer_clk_src = { 842 .cmd_rcgr = 0x4e000, 843 .hid_width = 5, 844 .freq_tbl = ftbl_csi_phytimer_clk_src, 845 .parent_map = gcc_xo_gpll0_map, 846 .clkr.hw.init = &(struct clk_init_data) { 847 .name = "csi0phytimer_clk_src", 848 .parent_data = gcc_xo_gpll0_data, 849 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 850 .ops = &clk_rcg2_ops, 851 } 852 }; 853 854 static struct clk_rcg2 csi1phytimer_clk_src = { 855 .cmd_rcgr = 0x4f000, 856 .hid_width = 5, 857 .freq_tbl = ftbl_csi_phytimer_clk_src, 858 .parent_map = gcc_xo_gpll0_map, 859 .clkr.hw.init = &(struct clk_init_data) { 860 .name = "csi1phytimer_clk_src", 861 .parent_data = gcc_xo_gpll0_data, 862 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 863 .ops = &clk_rcg2_ops, 864 } 865 }; 866 867 static const struct freq_tbl ftbl_esc0_1_clk_src[] = { 868 F(19200000, P_XO, 1, 0, 0), 869 { } 870 }; 871 872 static struct clk_rcg2 esc0_clk_src = { 873 .cmd_rcgr = 0x4d05c, 874 .hid_width = 5, 875 .freq_tbl = ftbl_esc0_1_clk_src, 876 .parent_map = gcc_xo_gpll0_out_aux_map, 877 .clkr.hw.init = &(struct clk_init_data) { 878 .name = "esc0_clk_src", 879 .parent_data = gcc_xo_gpll0_data, 880 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 881 .ops = &clk_rcg2_ops, 882 } 883 }; 884 885 static struct clk_rcg2 esc1_clk_src = { 886 .cmd_rcgr = 0x4d0a8, 887 .hid_width = 5, 888 .freq_tbl = ftbl_esc0_1_clk_src, 889 .parent_map = gcc_xo_gpll0_out_aux_map, 890 .clkr.hw.init = &(struct clk_init_data){ 891 .name = "esc1_clk_src", 892 .parent_data = gcc_xo_gpll0_data, 893 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 894 .ops = &clk_rcg2_ops, 895 }, 896 }; 897 898 static const struct parent_map gcc_gfx3d_map[] = { 899 { P_XO, 0 }, 900 { P_GPLL0, 1 }, 901 { P_GPLL3, 2 }, 902 { P_GPLL6, 3 }, 903 }; 904 905 static const struct parent_map gcc_gfx3d_map_qm215[] = { 906 { P_XO, 0 }, 907 { P_GPLL0, 5 }, 908 { P_GPLL3, 2 }, 909 { P_GPLL6, 6 }, 910 }; 911 912 static const struct clk_parent_data gcc_gfx3d_data[] = { 913 { .index = DT_XO }, 914 { .hw = &gpll0.clkr.hw }, 915 { .hw = &gpll3.clkr.hw }, 916 { .hw = &gpll6.hw }, 917 }; 918 919 static const struct freq_tbl ftbl_gfx3d_clk_src[] = { 920 F(19200000, P_XO, 1, 0, 0), 921 F(50000000, P_GPLL0, 16, 0, 0), 922 F(80000000, P_GPLL0, 10, 0, 0), 923 F(100000000, P_GPLL0, 8, 0, 0), 924 F(160000000, P_GPLL0, 5, 0, 0), 925 F(200000000, P_GPLL0, 4, 0, 0), 926 F(228570000, P_GPLL0, 3.5, 0, 0), 927 F(240000000, P_GPLL6, 4.5, 0, 0), 928 F(266670000, P_GPLL0, 3, 0, 0), 929 F(270000000, P_GPLL6, 4, 0, 0), 930 F(320000000, P_GPLL0, 2.5, 0, 0), 931 F(400000000, P_GPLL0, 2, 0, 0), 932 F(465000000, P_GPLL3, 1, 0, 0), 933 F(484800000, P_GPLL3, 1, 0, 0), 934 F(500000000, P_GPLL3, 1, 0, 0), 935 F(523200000, P_GPLL3, 1, 0, 0), 936 F(550000000, P_GPLL3, 1, 0, 0), 937 F(598000000, P_GPLL3, 1, 0, 0), 938 { } 939 }; 940 941 static const struct freq_tbl ftbl_gfx3d_clk_src_msm8937[] = { 942 F(19200000, P_XO, 1, 0, 0), 943 F(50000000, P_GPLL0, 16, 0, 0), 944 F(80000000, P_GPLL0, 10, 0, 0), 945 F(100000000, P_GPLL0, 8, 0, 0), 946 F(160000000, P_GPLL0, 5, 0, 0), 947 F(200000000, P_GPLL0, 4, 0, 0), 948 F(216000000, P_GPLL6, 5, 0, 0), 949 F(228570000, P_GPLL0, 3.5, 0, 0), 950 F(240000000, P_GPLL6, 4.5, 0, 0), 951 F(266670000, P_GPLL0, 3, 0, 0), 952 F(300000000, P_GPLL3, 1, 0, 0), 953 F(320000000, P_GPLL0, 2.5, 0, 0), 954 F(375000000, P_GPLL3, 1, 0, 0), 955 F(400000000, P_GPLL0, 2, 0, 0), 956 F(450000000, P_GPLL3, 1, 0, 0), 957 { } 958 }; 959 960 static const struct freq_tbl ftbl_gfx3d_clk_src_msm8940[] = { 961 F(19200000, P_XO, 1, 0, 0), 962 F(50000000, P_GPLL0, 16, 0, 0), 963 F(80000000, P_GPLL0, 10, 0, 0), 964 F(100000000, P_GPLL0, 8, 0, 0), 965 F(160000000, P_GPLL0, 5, 0, 0), 966 F(200000000, P_GPLL0, 4, 0, 0), 967 F(216000000, P_GPLL6, 5, 0, 0), 968 F(228570000, P_GPLL0, 3.5, 0, 0), 969 F(240000000, P_GPLL6, 4.5, 0, 0), 970 F(266670000, P_GPLL0, 3, 0, 0), 971 F(300000000, P_GPLL3, 1, 0, 0), 972 F(320000000, P_GPLL0, 2.5, 0, 0), 973 F(375000000, P_GPLL3, 1, 0, 0), 974 F(400000000, P_GPLL0, 2, 0, 0), 975 F(450000000, P_GPLL3, 1, 0, 0), 976 F(475000000, P_GPLL3, 1, 0, 0), 977 F(500000000, P_GPLL3, 1, 0, 0), 978 { } 979 }; 980 981 static const struct freq_tbl ftbl_gfx3d_clk_src_sdm439[] = { 982 F(19200000, P_XO, 1, 0, 0), 983 F(50000000, P_GPLL0, 16, 0, 0), 984 F(80000000, P_GPLL0, 10, 0, 0), 985 F(100000000, P_GPLL0, 8, 0, 0), 986 F(160000000, P_GPLL0, 5, 0, 0), 987 F(200000000, P_GPLL0, 4, 0, 0), 988 F(216000000, P_GPLL6, 5, 0, 0), 989 F(228570000, P_GPLL0, 3.5, 0, 0), 990 F(240000000, P_GPLL6, 4.5, 0, 0), 991 F(266670000, P_GPLL0, 3, 0, 0), 992 F(320000000, P_GPLL0, 2.5, 0, 0), 993 F(355200000, P_GPLL3, 1, 0, 0), 994 F(400000000, P_GPLL0, 2, 0, 0), 995 F(450000000, P_GPLL3, 1, 0, 0), 996 F(510000000, P_GPLL3, 1, 0, 0), 997 F(560000000, P_GPLL3, 1, 0, 0), 998 F(650000000, P_GPLL3, 1, 0, 0), 999 { } 1000 }; 1001 1002 static struct clk_rcg2 gfx3d_clk_src = { 1003 .cmd_rcgr = 0x59000, 1004 .hid_width = 5, 1005 .freq_tbl = ftbl_gfx3d_clk_src, 1006 .parent_map = gcc_gfx3d_map, 1007 .clkr.hw.init = &(struct clk_init_data) { 1008 .name = "gfx3d_clk_src", 1009 .parent_data = gcc_gfx3d_data, 1010 .num_parents = ARRAY_SIZE(gcc_gfx3d_data), 1011 .ops = &clk_rcg2_ops, 1012 .flags = CLK_SET_RATE_PARENT | CLK_OPS_PARENT_ENABLE, 1013 } 1014 }; 1015 1016 static const struct freq_tbl ftbl_gp_clk_src[] = { 1017 F(19200000, P_XO, 1, 0, 0), 1018 { } 1019 }; 1020 1021 static struct clk_rcg2 gp1_clk_src = { 1022 .cmd_rcgr = 0x08004, 1023 .hid_width = 5, 1024 .mnd_width = 8, 1025 .freq_tbl = ftbl_gp_clk_src, 1026 .parent_map = gcc_xo_gpll0_gpll6_sleep_map, 1027 .clkr.hw.init = &(struct clk_init_data) { 1028 .name = "gp1_clk_src", 1029 .parent_data = gcc_xo_gpll0_gpll6_sleep_data, 1030 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll6_sleep_data), 1031 .ops = &clk_rcg2_ops, 1032 } 1033 }; 1034 1035 static struct clk_rcg2 gp2_clk_src = { 1036 .cmd_rcgr = 0x09004, 1037 .hid_width = 5, 1038 .mnd_width = 8, 1039 .freq_tbl = ftbl_gp_clk_src, 1040 .parent_map = gcc_xo_gpll0_gpll6_sleep_map, 1041 .clkr.hw.init = &(struct clk_init_data) { 1042 .name = "gp2_clk_src", 1043 .parent_data = gcc_xo_gpll0_gpll6_sleep_data, 1044 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll6_sleep_data), 1045 .ops = &clk_rcg2_ops, 1046 } 1047 }; 1048 1049 static struct clk_rcg2 gp3_clk_src = { 1050 .cmd_rcgr = 0x0a004, 1051 .hid_width = 5, 1052 .mnd_width = 8, 1053 .freq_tbl = ftbl_gp_clk_src, 1054 .parent_map = gcc_xo_gpll0_gpll6_sleep_map, 1055 .clkr.hw.init = &(struct clk_init_data) { 1056 .name = "gp3_clk_src", 1057 .parent_data = gcc_xo_gpll0_gpll6_sleep_data, 1058 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll6_sleep_data), 1059 .ops = &clk_rcg2_ops, 1060 } 1061 }; 1062 1063 static const struct freq_tbl ftbl_jpeg0_clk_src[] = { 1064 F(133330000, P_GPLL0, 6, 0, 0), 1065 F(266670000, P_GPLL0, 3, 0, 0), 1066 F(320000000, P_GPLL0, 2.5, 0, 0), 1067 { } 1068 }; 1069 1070 static struct clk_rcg2 jpeg0_clk_src = { 1071 .cmd_rcgr = 0x57000, 1072 .hid_width = 5, 1073 .freq_tbl = ftbl_jpeg0_clk_src, 1074 .parent_map = gcc_xo_gpll0_map, 1075 .clkr.hw.init = &(struct clk_init_data) { 1076 .name = "jpeg0_clk_src", 1077 .parent_data = gcc_xo_gpll0_data, 1078 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 1079 .ops = &clk_rcg2_ops, 1080 } 1081 }; 1082 1083 static const struct freq_tbl ftbl_mclk_clk_src[] = { 1084 F(19200000, P_XO, 1, 0, 0), 1085 F(24000000, P_GPLL6, 1, 1, 45), 1086 F(66667000, P_GPLL0, 12, 0, 0), 1087 { } 1088 }; 1089 1090 static struct clk_rcg2 mclk0_clk_src = { 1091 .cmd_rcgr = 0x52000, 1092 .hid_width = 5, 1093 .mnd_width = 8, 1094 .freq_tbl = ftbl_mclk_clk_src, 1095 .parent_map = gcc_xo_gpll0_gpll6_sleep_map, 1096 .clkr.hw.init = &(struct clk_init_data) { 1097 .name = "mclk0_clk_src", 1098 .parent_data = gcc_xo_gpll0_gpll6_sleep_data, 1099 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll6_sleep_data), 1100 .ops = &clk_rcg2_ops, 1101 } 1102 }; 1103 1104 static struct clk_rcg2 mclk1_clk_src = { 1105 .cmd_rcgr = 0x53000, 1106 .hid_width = 5, 1107 .mnd_width = 8, 1108 .freq_tbl = ftbl_mclk_clk_src, 1109 .parent_map = gcc_xo_gpll0_gpll6_sleep_map, 1110 .clkr.hw.init = &(struct clk_init_data) { 1111 .name = "mclk1_clk_src", 1112 .parent_data = gcc_xo_gpll0_gpll6_sleep_data, 1113 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll6_sleep_data), 1114 .ops = &clk_rcg2_ops, 1115 } 1116 }; 1117 1118 static struct clk_rcg2 mclk2_clk_src = { 1119 .cmd_rcgr = 0x5c000, 1120 .hid_width = 5, 1121 .mnd_width = 8, 1122 .freq_tbl = ftbl_mclk_clk_src, 1123 .parent_map = gcc_xo_gpll0_gpll6_sleep_map, 1124 .clkr.hw.init = &(struct clk_init_data) { 1125 .name = "mclk2_clk_src", 1126 .parent_data = gcc_xo_gpll0_gpll6_sleep_data, 1127 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll6_sleep_data), 1128 .ops = &clk_rcg2_ops, 1129 } 1130 }; 1131 1132 static const struct freq_tbl ftbl_mdp_clk_src[] = { 1133 F(50000000, P_GPLL0, 16, 0, 0), 1134 F(80000000, P_GPLL0, 10, 0, 0), 1135 F(100000000, P_GPLL0, 8, 0, 0), 1136 F(145450000, P_GPLL0, 5.5, 0, 0), 1137 F(160000000, P_GPLL0, 5, 0, 0), 1138 F(177780000, P_GPLL0, 4.5, 0, 0), 1139 F(200000000, P_GPLL0, 4, 0, 0), 1140 F(266670000, P_GPLL0, 3, 0, 0), 1141 F(320000000, P_GPLL0, 2.5, 0, 0), 1142 { } 1143 }; 1144 1145 static struct clk_rcg2 mdp_clk_src = { 1146 .cmd_rcgr = 0x4d014, 1147 .hid_width = 5, 1148 .freq_tbl = ftbl_mdp_clk_src, 1149 .parent_map = gcc_xo_gpll0_map, 1150 .clkr.hw.init = &(struct clk_init_data) { 1151 .name = "mdp_clk_src", 1152 .parent_data = gcc_xo_gpll0_data, 1153 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 1154 .ops = &clk_rcg2_ops, 1155 } 1156 }; 1157 1158 static const struct parent_map gcc_pclk0_map[] = { 1159 { P_XO, 0 }, 1160 { P_DSI0PLL, 1 }, 1161 { P_DSI1PLL, 3 }, 1162 }; 1163 1164 static const struct parent_map gcc_pclk1_map[] = { 1165 { P_XO, 0 }, 1166 { P_DSI0PLL, 3 }, 1167 { P_DSI1PLL, 1 }, 1168 }; 1169 1170 static const struct clk_parent_data gcc_pclk_data[] = { 1171 { .index = DT_XO }, 1172 { .index = DT_DSI0PLL }, 1173 { .index = DT_DSI1PLL }, 1174 }; 1175 1176 static struct clk_rcg2 pclk0_clk_src = { 1177 .cmd_rcgr = 0x4d000, 1178 .hid_width = 5, 1179 .mnd_width = 8, 1180 .parent_map = gcc_pclk0_map, 1181 .clkr.hw.init = &(struct clk_init_data) { 1182 .name = "pclk0_clk_src", 1183 .parent_data = gcc_pclk_data, 1184 .num_parents = ARRAY_SIZE(gcc_pclk_data), 1185 .ops = &clk_pixel_ops, 1186 .flags = CLK_SET_RATE_PARENT, 1187 } 1188 }; 1189 1190 static struct clk_rcg2 pclk1_clk_src = { 1191 .cmd_rcgr = 0x4d0b8, 1192 .hid_width = 5, 1193 .mnd_width = 8, 1194 .parent_map = gcc_pclk1_map, 1195 .clkr.hw.init = &(struct clk_init_data){ 1196 .name = "pclk1_clk_src", 1197 .parent_data = gcc_pclk_data, 1198 .num_parents = ARRAY_SIZE(gcc_pclk_data), 1199 .ops = &clk_pixel_ops, 1200 .flags = CLK_SET_RATE_PARENT, 1201 }, 1202 }; 1203 1204 static const struct freq_tbl ftbl_pdm2_clk_src[] = { 1205 F(64000000, P_GPLL0, 12.5, 0, 0), 1206 { } 1207 }; 1208 1209 static struct clk_rcg2 pdm2_clk_src = { 1210 .cmd_rcgr = 0x44010, 1211 .hid_width = 5, 1212 .freq_tbl = ftbl_pdm2_clk_src, 1213 .parent_map = gcc_xo_gpll0_map, 1214 .clkr.hw.init = &(struct clk_init_data) { 1215 .name = "pdm2_clk_src", 1216 .parent_data = gcc_xo_gpll0_data, 1217 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 1218 .ops = &clk_rcg2_ops, 1219 } 1220 }; 1221 1222 static const struct freq_tbl ftbl_sdcc1_ice_core_clk_src[] = { 1223 F(100000000, P_GPLL0, 8, 0, 0), 1224 F(200000000, P_GPLL0, 4, 0, 0), 1225 { } 1226 }; 1227 1228 static struct clk_rcg2 sdcc1_ice_core_clk_src = { 1229 .cmd_rcgr = 0x5d000, 1230 .hid_width = 5, 1231 .freq_tbl = ftbl_sdcc1_ice_core_clk_src, 1232 .parent_map = gcc_xo_gpll0_map, 1233 .clkr.hw.init = &(struct clk_init_data) { 1234 .name = "sdcc1_ice_core_clk_src", 1235 .parent_data = gcc_xo_gpll0_data, 1236 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 1237 .ops = &clk_rcg2_ops, 1238 } 1239 }; 1240 1241 static const struct parent_map gcc_sdcc1_apps_map[] = { 1242 { P_XO, 0 }, 1243 { P_GPLL0, 1 }, 1244 { P_GPLL4, 2 }, 1245 }; 1246 1247 static const struct clk_parent_data gcc_sdcc1_apss_data[] = { 1248 { .index = DT_XO }, 1249 { .hw = &gpll0.clkr.hw }, 1250 { .hw = &gpll4.clkr.hw }, 1251 }; 1252 1253 static const struct freq_tbl ftbl_sdcc1_apps_clk_src[] = { 1254 F(144000, P_XO, 16, 3, 25), 1255 F(400000, P_XO, 12, 1, 4), 1256 F(20000000, P_GPLL0, 10, 1, 4), 1257 F(25000000, P_GPLL0, 16, 1, 2), 1258 F(50000000, P_GPLL0, 16, 0, 0), 1259 F(100000000, P_GPLL0, 8, 0, 0), 1260 F(177770000, P_GPLL0, 4.5, 0, 0), 1261 F(192000000, P_GPLL4, 6, 0, 0), 1262 F(200000000, P_GPLL0, 4, 0, 0), 1263 F(384000000, P_GPLL4, 3, 0, 0), 1264 { } 1265 }; 1266 1267 static struct clk_rcg2 sdcc1_apps_clk_src = { 1268 .cmd_rcgr = 0x42004, 1269 .hid_width = 5, 1270 .mnd_width = 8, 1271 .freq_tbl = ftbl_sdcc1_apps_clk_src, 1272 .parent_map = gcc_sdcc1_apps_map, 1273 .clkr.hw.init = &(struct clk_init_data) { 1274 .name = "sdcc1_apps_clk_src", 1275 .parent_data = gcc_sdcc1_apss_data, 1276 .num_parents = ARRAY_SIZE(gcc_sdcc1_apss_data), 1277 .ops = &clk_rcg2_floor_ops, 1278 } 1279 }; 1280 1281 static const struct freq_tbl ftbl_sdcc2_apps_clk_src[] = { 1282 F(144000, P_XO, 16, 3, 25), 1283 F(400000, P_XO, 12, 1, 4), 1284 F(20000000, P_GPLL0, 10, 1, 4), 1285 F(25000000, P_GPLL0, 16, 1, 2), 1286 F(50000000, P_GPLL0, 16, 0, 0), 1287 F(100000000, P_GPLL0, 8, 0, 0), 1288 F(177770000, P_GPLL0, 4.5, 0, 0), 1289 F(200000000, P_GPLL0, 4, 0, 0), 1290 { } 1291 }; 1292 1293 static struct clk_rcg2 sdcc2_apps_clk_src = { 1294 .cmd_rcgr = 0x43004, 1295 .hid_width = 5, 1296 .mnd_width = 8, 1297 .freq_tbl = ftbl_sdcc2_apps_clk_src, 1298 .parent_map = gcc_xo_gpll0_map, 1299 .clkr.hw.init = &(struct clk_init_data) { 1300 .name = "sdcc2_apps_clk_src", 1301 .parent_data = gcc_xo_gpll0_data, 1302 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 1303 .ops = &clk_rcg2_floor_ops, 1304 } 1305 }; 1306 1307 static const struct freq_tbl ftbl_usb_hs_system_clk_src[] = { 1308 F(80000000, P_GPLL0, 10, 0, 0), 1309 F(100000000, P_GPLL0, 8, 0, 0), 1310 F(133330000, P_GPLL0, 6, 0, 0), 1311 F(177780000, P_GPLL0, 4.5, 0, 0), 1312 { } 1313 }; 1314 1315 static const struct freq_tbl ftbl_usb_hs_system_clk_src_msm8937[] = { 1316 F(57142857, P_GPLL0, 14, 0, 0), 1317 F(100000000, P_GPLL0, 8, 0, 0), 1318 F(133333333, P_GPLL0, 6, 0, 0), 1319 F(177777778, P_GPLL0, 4.5, 0, 0), 1320 { } 1321 }; 1322 1323 static struct clk_rcg2 usb_hs_system_clk_src = { 1324 .cmd_rcgr = 0x41010, 1325 .hid_width = 5, 1326 .parent_map = gcc_xo_gpll0_map, 1327 .freq_tbl = ftbl_usb_hs_system_clk_src, 1328 .clkr.hw.init = &(struct clk_init_data){ 1329 .name = "usb_hs_system_clk_src", 1330 .parent_data = gcc_xo_gpll0_data, 1331 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 1332 .ops = &clk_rcg2_ops, 1333 }, 1334 }; 1335 1336 static const struct freq_tbl ftbl_vcodec0_clk_src[] = { 1337 F(133330000, P_GPLL0, 6, 0, 0), 1338 F(180000000, P_GPLL6, 6, 0, 0), 1339 F(228570000, P_GPLL0, 3.5, 0, 0), 1340 F(266670000, P_GPLL0, 3, 0, 0), 1341 F(308570000, P_GPLL6, 3.5, 0, 0), 1342 F(329140000, P_GPLL4, 3.5, 0, 0), 1343 F(360000000, P_GPLL6, 3, 0, 0), 1344 { } 1345 }; 1346 1347 static const struct freq_tbl ftbl_vcodec0_clk_src_msm8937[] = { 1348 F(166150000, P_GPLL6, 6.5, 0, 0), 1349 F(240000000, P_GPLL6, 4.5, 0, 0), 1350 F(308571428, P_GPLL6, 3.5, 0, 0), 1351 F(320000000, P_GPLL0, 2.5, 0, 0), 1352 F(360000000, P_GPLL6, 3, 0, 0), 1353 { } 1354 }; 1355 1356 static struct clk_rcg2 vcodec0_clk_src = { 1357 .cmd_rcgr = 0x4c000, 1358 .hid_width = 5, 1359 .freq_tbl = ftbl_vcodec0_clk_src, 1360 .parent_map = gcc_xo_gpll0_gpll6_gpll4_map, 1361 .clkr.hw.init = &(struct clk_init_data) { 1362 .name = "vcodec0_clk_src", 1363 .parent_data = gcc_xo_gpll0_gpll6_gpll4_data, 1364 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll6_gpll4_data), 1365 .ops = &clk_rcg2_ops, 1366 } 1367 }; 1368 1369 static const struct freq_tbl ftbl_vfe_clk_src[] = { 1370 F(50000000, P_GPLL0, 16, 0, 0), 1371 F(80000000, P_GPLL0, 10, 0, 0), 1372 F(100000000, P_GPLL0, 8, 0, 0), 1373 F(133330000, P_GPLL0, 6, 0, 0), 1374 F(160000000, P_GPLL0, 5, 0, 0), 1375 F(200000000, P_GPLL0, 4, 0, 0), 1376 F(266670000, P_GPLL0, 3, 0, 0), 1377 F(308570000, P_GPLL6, 3.5, 0, 0), 1378 F(320000000, P_GPLL0, 2.5, 0, 0), 1379 F(329140000, P_GPLL4, 3.5, 0, 0), 1380 F(360000000, P_GPLL6, 3, 0, 0), 1381 { } 1382 }; 1383 1384 static const struct freq_tbl ftbl_vfe_clk_src_msm8937[] = { 1385 F(50000000, P_GPLL0, 16, 0, 0), 1386 F(80000000, P_GPLL0, 10, 0, 0), 1387 F(100000000, P_GPLL0, 8, 0, 0), 1388 F(133333333, P_GPLL0, 6, 0, 0), 1389 F(160000000, P_GPLL0, 5, 0, 0), 1390 F(177777778, P_GPLL0, 4.5, 0, 0), 1391 F(200000000, P_GPLL0, 4, 0, 0), 1392 F(266666667, P_GPLL0, 3, 0, 0), 1393 F(308571428, P_GPLL6, 3.5, 0, 0), 1394 F(320000000, P_GPLL0, 2.5, 0, 0), 1395 F(360000000, P_GPLL6, 3, 0, 0), 1396 F(400000000, P_GPLL0, 2, 0, 0), 1397 F(432000000, P_GPLL6, 2.5, 0, 0), 1398 { } 1399 }; 1400 1401 static struct clk_rcg2 vfe0_clk_src = { 1402 .cmd_rcgr = 0x58000, 1403 .hid_width = 5, 1404 .freq_tbl = ftbl_vfe_clk_src, 1405 .parent_map = gcc_xo_gpll0_gpll6_gpll4_map, 1406 .clkr.hw.init = &(struct clk_init_data) { 1407 .name = "vfe0_clk_src", 1408 .parent_data = gcc_xo_gpll0_gpll6_gpll4_data, 1409 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll6_gpll4_data), 1410 .ops = &clk_rcg2_ops, 1411 } 1412 }; 1413 1414 static struct clk_rcg2 vfe1_clk_src = { 1415 .cmd_rcgr = 0x58054, 1416 .hid_width = 5, 1417 .freq_tbl = ftbl_vfe_clk_src, 1418 .parent_map = gcc_xo_gpll0_gpll6_gpll4_map, 1419 .clkr.hw.init = &(struct clk_init_data) { 1420 .name = "vfe1_clk_src", 1421 .parent_data = gcc_xo_gpll0_gpll6_gpll4_data, 1422 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll6_gpll4_data), 1423 .ops = &clk_rcg2_ops, 1424 } 1425 }; 1426 1427 static const struct freq_tbl ftbl_vsync_clk_src[] = { 1428 F(19200000, P_XO, 1, 0, 0), 1429 { } 1430 }; 1431 1432 static struct clk_rcg2 vsync_clk_src = { 1433 .cmd_rcgr = 0x4d02c, 1434 .hid_width = 5, 1435 .freq_tbl = ftbl_vsync_clk_src, 1436 .parent_map = gcc_xo_gpll0_out_aux_map, 1437 .clkr.hw.init = &(struct clk_init_data) { 1438 .name = "vsync_clk_src", 1439 .parent_data = gcc_xo_gpll0_data, 1440 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_data), 1441 .ops = &clk_rcg2_ops, 1442 } 1443 }; 1444 1445 static struct clk_branch gcc_apss_tcu_clk = { 1446 .halt_reg = 0x12018, 1447 .halt_check = BRANCH_HALT_VOTED, 1448 .clkr = { 1449 .enable_reg = 0x4500c, 1450 .enable_mask = BIT(1), 1451 .hw.init = &(struct clk_init_data) { 1452 .name = "gcc_apss_tcu_clk", 1453 .ops = &clk_branch2_ops, 1454 } 1455 } 1456 }; 1457 1458 static struct clk_branch gcc_bimc_gfx_clk = { 1459 .halt_reg = 0x59034, 1460 .halt_check = BRANCH_HALT, 1461 .clkr = { 1462 .enable_reg = 0x59034, 1463 .enable_mask = BIT(0), 1464 .hw.init = &(struct clk_init_data) { 1465 .name = "gcc_bimc_gfx_clk", 1466 .ops = &clk_branch2_ops, 1467 } 1468 } 1469 }; 1470 1471 static struct clk_branch gcc_bimc_gpu_clk = { 1472 .halt_reg = 0x59030, 1473 .halt_check = BRANCH_HALT, 1474 .clkr = { 1475 .enable_reg = 0x59030, 1476 .enable_mask = BIT(0), 1477 .hw.init = &(struct clk_init_data) { 1478 .name = "gcc_bimc_gpu_clk", 1479 .ops = &clk_branch2_ops, 1480 } 1481 } 1482 }; 1483 1484 static struct clk_branch gcc_blsp1_ahb_clk = { 1485 .halt_reg = 0x01008, 1486 .halt_check = BRANCH_HALT_VOTED, 1487 .clkr = { 1488 .enable_reg = 0x45004, 1489 .enable_mask = BIT(10), 1490 .hw.init = &(struct clk_init_data) { 1491 .name = "gcc_blsp1_ahb_clk", 1492 .ops = &clk_branch2_ops, 1493 } 1494 } 1495 }; 1496 1497 static struct clk_branch gcc_blsp2_ahb_clk = { 1498 .halt_reg = 0x0b008, 1499 .halt_check = BRANCH_HALT_VOTED, 1500 .clkr = { 1501 .enable_reg = 0x45004, 1502 .enable_mask = BIT(20), 1503 .hw.init = &(struct clk_init_data) { 1504 .name = "gcc_blsp2_ahb_clk", 1505 .ops = &clk_branch2_ops, 1506 } 1507 } 1508 }; 1509 1510 static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = { 1511 .halt_reg = 0x02008, 1512 .halt_check = BRANCH_HALT, 1513 .clkr = { 1514 .enable_reg = 0x02008, 1515 .enable_mask = BIT(0), 1516 .hw.init = &(struct clk_init_data){ 1517 .name = "gcc_blsp1_qup1_i2c_apps_clk", 1518 .parent_hws = (const struct clk_hw*[]){ 1519 &blsp1_qup1_i2c_apps_clk_src.clkr.hw, 1520 }, 1521 .num_parents = 1, 1522 .ops = &clk_branch2_ops, 1523 .flags = CLK_SET_RATE_PARENT, 1524 }, 1525 }, 1526 }; 1527 1528 static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = { 1529 .halt_reg = 0x03010, 1530 .halt_check = BRANCH_HALT, 1531 .clkr = { 1532 .enable_reg = 0x03010, 1533 .enable_mask = BIT(0), 1534 .hw.init = &(struct clk_init_data) { 1535 .name = "gcc_blsp1_qup2_i2c_apps_clk", 1536 .parent_hws = (const struct clk_hw*[]){ 1537 &blsp1_qup2_i2c_apps_clk_src.clkr.hw, 1538 }, 1539 .num_parents = 1, 1540 .ops = &clk_branch2_ops, 1541 .flags = CLK_SET_RATE_PARENT, 1542 } 1543 } 1544 }; 1545 1546 static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = { 1547 .halt_reg = 0x04020, 1548 .halt_check = BRANCH_HALT, 1549 .clkr = { 1550 .enable_reg = 0x04020, 1551 .enable_mask = BIT(0), 1552 .hw.init = &(struct clk_init_data) { 1553 .name = "gcc_blsp1_qup3_i2c_apps_clk", 1554 .parent_hws = (const struct clk_hw*[]){ 1555 &blsp1_qup3_i2c_apps_clk_src.clkr.hw, 1556 }, 1557 .num_parents = 1, 1558 .ops = &clk_branch2_ops, 1559 .flags = CLK_SET_RATE_PARENT, 1560 } 1561 } 1562 }; 1563 1564 static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = { 1565 .halt_reg = 0x05020, 1566 .halt_check = BRANCH_HALT, 1567 .clkr = { 1568 .enable_reg = 0x05020, 1569 .enable_mask = BIT(0), 1570 .hw.init = &(struct clk_init_data) { 1571 .name = "gcc_blsp1_qup4_i2c_apps_clk", 1572 .parent_hws = (const struct clk_hw*[]){ 1573 &blsp1_qup4_i2c_apps_clk_src.clkr.hw, 1574 }, 1575 .num_parents = 1, 1576 .ops = &clk_branch2_ops, 1577 .flags = CLK_SET_RATE_PARENT, 1578 } 1579 } 1580 }; 1581 1582 static struct clk_branch gcc_blsp2_qup1_i2c_apps_clk = { 1583 .halt_reg = 0x0c008, 1584 .halt_check = BRANCH_HALT, 1585 .clkr = { 1586 .enable_reg = 0x0c008, 1587 .enable_mask = BIT(0), 1588 .hw.init = &(struct clk_init_data) { 1589 .name = "gcc_blsp2_qup1_i2c_apps_clk", 1590 .parent_hws = (const struct clk_hw*[]){ 1591 &blsp2_qup1_i2c_apps_clk_src.clkr.hw, 1592 }, 1593 .num_parents = 1, 1594 .ops = &clk_branch2_ops, 1595 .flags = CLK_SET_RATE_PARENT, 1596 } 1597 } 1598 }; 1599 1600 static struct clk_branch gcc_blsp2_qup2_i2c_apps_clk = { 1601 .halt_reg = 0x0d010, 1602 .halt_check = BRANCH_HALT, 1603 .clkr = { 1604 .enable_reg = 0x0d010, 1605 .enable_mask = BIT(0), 1606 .hw.init = &(struct clk_init_data) { 1607 .name = "gcc_blsp2_qup2_i2c_apps_clk", 1608 .parent_hws = (const struct clk_hw*[]){ 1609 &blsp2_qup2_i2c_apps_clk_src.clkr.hw, 1610 }, 1611 .num_parents = 1, 1612 .ops = &clk_branch2_ops, 1613 .flags = CLK_SET_RATE_PARENT, 1614 } 1615 } 1616 }; 1617 1618 static struct clk_branch gcc_blsp2_qup3_i2c_apps_clk = { 1619 .halt_reg = 0x0f020, 1620 .halt_check = BRANCH_HALT, 1621 .clkr = { 1622 .enable_reg = 0x0f020, 1623 .enable_mask = BIT(0), 1624 .hw.init = &(struct clk_init_data) { 1625 .name = "gcc_blsp2_qup3_i2c_apps_clk", 1626 .parent_hws = (const struct clk_hw*[]){ 1627 &blsp2_qup3_i2c_apps_clk_src.clkr.hw, 1628 }, 1629 .num_parents = 1, 1630 .ops = &clk_branch2_ops, 1631 .flags = CLK_SET_RATE_PARENT, 1632 } 1633 } 1634 }; 1635 1636 static struct clk_branch gcc_blsp2_qup4_i2c_apps_clk = { 1637 .halt_reg = 0x18020, 1638 .halt_check = BRANCH_HALT, 1639 .clkr = { 1640 .enable_reg = 0x18020, 1641 .enable_mask = BIT(0), 1642 .hw.init = &(struct clk_init_data){ 1643 .name = "gcc_blsp2_qup4_i2c_apps_clk", 1644 .parent_hws = (const struct clk_hw*[]){ 1645 &blsp2_qup4_i2c_apps_clk_src.clkr.hw, 1646 }, 1647 .num_parents = 1, 1648 .ops = &clk_branch2_ops, 1649 .flags = CLK_SET_RATE_PARENT, 1650 }, 1651 }, 1652 }; 1653 1654 static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = { 1655 .halt_reg = 0x02004, 1656 .halt_check = BRANCH_HALT, 1657 .clkr = { 1658 .enable_reg = 0x02004, 1659 .enable_mask = BIT(0), 1660 .hw.init = &(struct clk_init_data){ 1661 .name = "gcc_blsp1_qup1_spi_apps_clk", 1662 .parent_hws = (const struct clk_hw*[]){ 1663 &blsp1_qup1_spi_apps_clk_src.clkr.hw, 1664 }, 1665 .num_parents = 1, 1666 .ops = &clk_branch2_ops, 1667 .flags = CLK_SET_RATE_PARENT, 1668 }, 1669 }, 1670 }; 1671 1672 static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = { 1673 .halt_reg = 0x0300c, 1674 .halt_check = BRANCH_HALT, 1675 .clkr = { 1676 .enable_reg = 0x0300c, 1677 .enable_mask = BIT(0), 1678 .hw.init = &(struct clk_init_data) { 1679 .name = "gcc_blsp1_qup2_spi_apps_clk", 1680 .parent_hws = (const struct clk_hw*[]){ 1681 &blsp1_qup2_spi_apps_clk_src.clkr.hw, 1682 }, 1683 .num_parents = 1, 1684 .ops = &clk_branch2_ops, 1685 .flags = CLK_SET_RATE_PARENT, 1686 } 1687 } 1688 }; 1689 1690 static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = { 1691 .halt_reg = 0x0401c, 1692 .halt_check = BRANCH_HALT, 1693 .clkr = { 1694 .enable_reg = 0x0401c, 1695 .enable_mask = BIT(0), 1696 .hw.init = &(struct clk_init_data) { 1697 .name = "gcc_blsp1_qup3_spi_apps_clk", 1698 .parent_hws = (const struct clk_hw*[]){ 1699 &blsp1_qup3_spi_apps_clk_src.clkr.hw, 1700 }, 1701 .num_parents = 1, 1702 .ops = &clk_branch2_ops, 1703 .flags = CLK_SET_RATE_PARENT, 1704 } 1705 } 1706 }; 1707 1708 static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = { 1709 .halt_reg = 0x0501c, 1710 .halt_check = BRANCH_HALT, 1711 .clkr = { 1712 .enable_reg = 0x0501c, 1713 .enable_mask = BIT(0), 1714 .hw.init = &(struct clk_init_data) { 1715 .name = "gcc_blsp1_qup4_spi_apps_clk", 1716 .parent_hws = (const struct clk_hw*[]){ 1717 &blsp1_qup4_spi_apps_clk_src.clkr.hw, 1718 }, 1719 .num_parents = 1, 1720 .ops = &clk_branch2_ops, 1721 .flags = CLK_SET_RATE_PARENT, 1722 } 1723 } 1724 }; 1725 1726 static struct clk_branch gcc_blsp2_qup1_spi_apps_clk = { 1727 .halt_reg = 0x0c004, 1728 .halt_check = BRANCH_HALT, 1729 .clkr = { 1730 .enable_reg = 0x0c004, 1731 .enable_mask = BIT(0), 1732 .hw.init = &(struct clk_init_data) { 1733 .name = "gcc_blsp2_qup1_spi_apps_clk", 1734 .parent_hws = (const struct clk_hw*[]){ 1735 &blsp2_qup1_spi_apps_clk_src.clkr.hw, 1736 }, 1737 .num_parents = 1, 1738 .ops = &clk_branch2_ops, 1739 .flags = CLK_SET_RATE_PARENT, 1740 } 1741 } 1742 }; 1743 1744 static struct clk_branch gcc_blsp2_qup2_spi_apps_clk = { 1745 .halt_reg = 0x0d00c, 1746 .halt_check = BRANCH_HALT, 1747 .clkr = { 1748 .enable_reg = 0x0d00c, 1749 .enable_mask = BIT(0), 1750 .hw.init = &(struct clk_init_data) { 1751 .name = "gcc_blsp2_qup2_spi_apps_clk", 1752 .parent_hws = (const struct clk_hw*[]){ 1753 &blsp2_qup2_spi_apps_clk_src.clkr.hw, 1754 }, 1755 .num_parents = 1, 1756 .ops = &clk_branch2_ops, 1757 .flags = CLK_SET_RATE_PARENT, 1758 } 1759 } 1760 }; 1761 1762 static struct clk_branch gcc_blsp2_qup3_spi_apps_clk = { 1763 .halt_reg = 0x0f01c, 1764 .halt_check = BRANCH_HALT, 1765 .clkr = { 1766 .enable_reg = 0x0f01c, 1767 .enable_mask = BIT(0), 1768 .hw.init = &(struct clk_init_data) { 1769 .name = "gcc_blsp2_qup3_spi_apps_clk", 1770 .parent_hws = (const struct clk_hw*[]){ 1771 &blsp2_qup3_spi_apps_clk_src.clkr.hw, 1772 }, 1773 .num_parents = 1, 1774 .ops = &clk_branch2_ops, 1775 .flags = CLK_SET_RATE_PARENT, 1776 } 1777 } 1778 }; 1779 1780 static struct clk_branch gcc_blsp2_qup4_spi_apps_clk = { 1781 .halt_reg = 0x1801c, 1782 .halt_check = BRANCH_HALT, 1783 .clkr = { 1784 .enable_reg = 0x1801c, 1785 .enable_mask = BIT(0), 1786 .hw.init = &(struct clk_init_data){ 1787 .name = "gcc_blsp2_qup4_spi_apps_clk", 1788 .parent_hws = (const struct clk_hw*[]){ 1789 &blsp2_qup4_spi_apps_clk_src.clkr.hw, 1790 }, 1791 .num_parents = 1, 1792 .ops = &clk_branch2_ops, 1793 .flags = CLK_SET_RATE_PARENT, 1794 }, 1795 }, 1796 }; 1797 1798 static struct clk_branch gcc_blsp1_uart1_apps_clk = { 1799 .halt_reg = 0x0203c, 1800 .halt_check = BRANCH_HALT, 1801 .clkr = { 1802 .enable_reg = 0x0203c, 1803 .enable_mask = BIT(0), 1804 .hw.init = &(struct clk_init_data) { 1805 .name = "gcc_blsp1_uart1_apps_clk", 1806 .parent_hws = (const struct clk_hw*[]){ 1807 &blsp1_uart1_apps_clk_src.clkr.hw, 1808 }, 1809 .num_parents = 1, 1810 .ops = &clk_branch2_ops, 1811 .flags = CLK_SET_RATE_PARENT, 1812 } 1813 } 1814 }; 1815 1816 static struct clk_branch gcc_blsp1_uart2_apps_clk = { 1817 .halt_reg = 0x0302c, 1818 .halt_check = BRANCH_HALT, 1819 .clkr = { 1820 .enable_reg = 0x0302c, 1821 .enable_mask = BIT(0), 1822 .hw.init = &(struct clk_init_data) { 1823 .name = "gcc_blsp1_uart2_apps_clk", 1824 .parent_hws = (const struct clk_hw*[]){ 1825 &blsp1_uart2_apps_clk_src.clkr.hw, 1826 }, 1827 .num_parents = 1, 1828 .ops = &clk_branch2_ops, 1829 .flags = CLK_SET_RATE_PARENT, 1830 } 1831 } 1832 }; 1833 1834 static struct clk_branch gcc_blsp2_uart1_apps_clk = { 1835 .halt_reg = 0x0c03c, 1836 .halt_check = BRANCH_HALT, 1837 .clkr = { 1838 .enable_reg = 0x0c03c, 1839 .enable_mask = BIT(0), 1840 .hw.init = &(struct clk_init_data) { 1841 .name = "gcc_blsp2_uart1_apps_clk", 1842 .parent_hws = (const struct clk_hw*[]){ 1843 &blsp2_uart1_apps_clk_src.clkr.hw, 1844 }, 1845 .num_parents = 1, 1846 .ops = &clk_branch2_ops, 1847 .flags = CLK_SET_RATE_PARENT, 1848 } 1849 } 1850 }; 1851 1852 static struct clk_branch gcc_blsp2_uart2_apps_clk = { 1853 .halt_reg = 0x0d02c, 1854 .halt_check = BRANCH_HALT, 1855 .clkr = { 1856 .enable_reg = 0x0d02c, 1857 .enable_mask = BIT(0), 1858 .hw.init = &(struct clk_init_data) { 1859 .name = "gcc_blsp2_uart2_apps_clk", 1860 .parent_hws = (const struct clk_hw*[]){ 1861 &blsp2_uart2_apps_clk_src.clkr.hw, 1862 }, 1863 .num_parents = 1, 1864 .ops = &clk_branch2_ops, 1865 .flags = CLK_SET_RATE_PARENT, 1866 } 1867 } 1868 }; 1869 1870 static struct clk_branch gcc_boot_rom_ahb_clk = { 1871 .halt_reg = 0x1300c, 1872 .halt_check = BRANCH_HALT_VOTED, 1873 .clkr = { 1874 .enable_reg = 0x45004, 1875 .enable_mask = BIT(7), 1876 .hw.init = &(struct clk_init_data) { 1877 .name = "gcc_boot_rom_ahb_clk", 1878 .ops = &clk_branch2_ops, 1879 } 1880 } 1881 }; 1882 1883 static struct clk_branch gcc_camss_ahb_clk = { 1884 .halt_reg = 0x56004, 1885 .halt_check = BRANCH_HALT, 1886 .clkr = { 1887 .enable_reg = 0x56004, 1888 .enable_mask = BIT(0), 1889 .hw.init = &(struct clk_init_data) { 1890 .name = "gcc_camss_ahb_clk", 1891 .ops = &clk_branch2_ops, 1892 } 1893 } 1894 }; 1895 1896 static struct clk_branch gcc_camss_cci_ahb_clk = { 1897 .halt_reg = 0x5101c, 1898 .halt_check = BRANCH_HALT, 1899 .clkr = { 1900 .enable_reg = 0x5101c, 1901 .enable_mask = BIT(0), 1902 .hw.init = &(struct clk_init_data) { 1903 .name = "gcc_camss_cci_ahb_clk", 1904 .parent_hws = (const struct clk_hw*[]){ 1905 &camss_top_ahb_clk_src.clkr.hw, 1906 }, 1907 .num_parents = 1, 1908 .ops = &clk_branch2_ops, 1909 .flags = CLK_SET_RATE_PARENT, 1910 } 1911 } 1912 }; 1913 1914 static struct clk_branch gcc_camss_cci_clk = { 1915 .halt_reg = 0x51018, 1916 .halt_check = BRANCH_HALT, 1917 .clkr = { 1918 .enable_reg = 0x51018, 1919 .enable_mask = BIT(0), 1920 .hw.init = &(struct clk_init_data) { 1921 .name = "gcc_camss_cci_clk", 1922 .parent_hws = (const struct clk_hw*[]){ 1923 &cci_clk_src.clkr.hw, 1924 }, 1925 .num_parents = 1, 1926 .ops = &clk_branch2_ops, 1927 .flags = CLK_SET_RATE_PARENT, 1928 } 1929 } 1930 }; 1931 1932 static struct clk_branch gcc_camss_cpp_ahb_clk = { 1933 .halt_reg = 0x58040, 1934 .halt_check = BRANCH_HALT, 1935 .clkr = { 1936 .enable_reg = 0x58040, 1937 .enable_mask = BIT(0), 1938 .hw.init = &(struct clk_init_data) { 1939 .name = "gcc_camss_cpp_ahb_clk", 1940 .parent_hws = (const struct clk_hw*[]){ 1941 &camss_top_ahb_clk_src.clkr.hw, 1942 }, 1943 .num_parents = 1, 1944 .ops = &clk_branch2_ops, 1945 .flags = CLK_SET_RATE_PARENT, 1946 } 1947 } 1948 }; 1949 1950 static struct clk_branch gcc_camss_cpp_clk = { 1951 .halt_reg = 0x5803c, 1952 .halt_check = BRANCH_HALT, 1953 .clkr = { 1954 .enable_reg = 0x5803c, 1955 .enable_mask = BIT(0), 1956 .hw.init = &(struct clk_init_data) { 1957 .name = "gcc_camss_cpp_clk", 1958 .parent_hws = (const struct clk_hw*[]){ 1959 &cpp_clk_src.clkr.hw, 1960 }, 1961 .num_parents = 1, 1962 .ops = &clk_branch2_ops, 1963 .flags = CLK_SET_RATE_PARENT, 1964 } 1965 } 1966 }; 1967 1968 static struct clk_branch gcc_camss_csi0_ahb_clk = { 1969 .halt_reg = 0x4e040, 1970 .halt_check = BRANCH_HALT, 1971 .clkr = { 1972 .enable_reg = 0x4e040, 1973 .enable_mask = BIT(0), 1974 .hw.init = &(struct clk_init_data) { 1975 .name = "gcc_camss_csi0_ahb_clk", 1976 .parent_hws = (const struct clk_hw*[]){ 1977 &camss_top_ahb_clk_src.clkr.hw, 1978 }, 1979 .num_parents = 1, 1980 .ops = &clk_branch2_ops, 1981 .flags = CLK_SET_RATE_PARENT, 1982 } 1983 } 1984 }; 1985 1986 static struct clk_branch gcc_camss_csi1_ahb_clk = { 1987 .halt_reg = 0x4f040, 1988 .halt_check = BRANCH_HALT, 1989 .clkr = { 1990 .enable_reg = 0x4f040, 1991 .enable_mask = BIT(0), 1992 .hw.init = &(struct clk_init_data) { 1993 .name = "gcc_camss_csi1_ahb_clk", 1994 .parent_hws = (const struct clk_hw*[]){ 1995 &camss_top_ahb_clk_src.clkr.hw, 1996 }, 1997 .num_parents = 1, 1998 .ops = &clk_branch2_ops, 1999 .flags = CLK_SET_RATE_PARENT, 2000 } 2001 } 2002 }; 2003 2004 static struct clk_branch gcc_camss_csi2_ahb_clk = { 2005 .halt_reg = 0x3c040, 2006 .halt_check = BRANCH_HALT, 2007 .clkr = { 2008 .enable_reg = 0x3c040, 2009 .enable_mask = BIT(0), 2010 .hw.init = &(struct clk_init_data) { 2011 .name = "gcc_camss_csi2_ahb_clk", 2012 .parent_hws = (const struct clk_hw*[]){ 2013 &camss_top_ahb_clk_src.clkr.hw, 2014 }, 2015 .num_parents = 1, 2016 .ops = &clk_branch2_ops, 2017 .flags = CLK_SET_RATE_PARENT, 2018 } 2019 } 2020 }; 2021 2022 static struct clk_branch gcc_camss_csi0_clk = { 2023 .halt_reg = 0x4e03c, 2024 .halt_check = BRANCH_HALT, 2025 .clkr = { 2026 .enable_reg = 0x4e03c, 2027 .enable_mask = BIT(0), 2028 .hw.init = &(struct clk_init_data) { 2029 .name = "gcc_camss_csi0_clk", 2030 .parent_hws = (const struct clk_hw*[]){ 2031 &csi0_clk_src.clkr.hw, 2032 }, 2033 .num_parents = 1, 2034 .ops = &clk_branch2_ops, 2035 .flags = CLK_SET_RATE_PARENT, 2036 } 2037 } 2038 }; 2039 2040 static struct clk_branch gcc_camss_csi1_clk = { 2041 .halt_reg = 0x4f03c, 2042 .halt_check = BRANCH_HALT, 2043 .clkr = { 2044 .enable_reg = 0x4f03c, 2045 .enable_mask = BIT(0), 2046 .hw.init = &(struct clk_init_data) { 2047 .name = "gcc_camss_csi1_clk", 2048 .parent_hws = (const struct clk_hw*[]){ 2049 &csi1_clk_src.clkr.hw, 2050 }, 2051 .num_parents = 1, 2052 .ops = &clk_branch2_ops, 2053 .flags = CLK_SET_RATE_PARENT, 2054 } 2055 } 2056 }; 2057 2058 static struct clk_branch gcc_camss_csi2_clk = { 2059 .halt_reg = 0x3c03c, 2060 .halt_check = BRANCH_HALT, 2061 .clkr = { 2062 .enable_reg = 0x3c03c, 2063 .enable_mask = BIT(0), 2064 .hw.init = &(struct clk_init_data) { 2065 .name = "gcc_camss_csi2_clk", 2066 .parent_hws = (const struct clk_hw*[]){ 2067 &csi2_clk_src.clkr.hw, 2068 }, 2069 .num_parents = 1, 2070 .ops = &clk_branch2_ops, 2071 .flags = CLK_SET_RATE_PARENT, 2072 } 2073 } 2074 }; 2075 2076 static struct clk_branch gcc_camss_csi0phy_clk = { 2077 .halt_reg = 0x4e048, 2078 .halt_check = BRANCH_HALT, 2079 .clkr = { 2080 .enable_reg = 0x4e048, 2081 .enable_mask = BIT(0), 2082 .hw.init = &(struct clk_init_data) { 2083 .name = "gcc_camss_csi0phy_clk", 2084 .parent_hws = (const struct clk_hw*[]){ 2085 &csi0_clk_src.clkr.hw, 2086 }, 2087 .num_parents = 1, 2088 .ops = &clk_branch2_ops, 2089 .flags = CLK_SET_RATE_PARENT, 2090 } 2091 } 2092 }; 2093 2094 static struct clk_branch gcc_camss_csi1phy_clk = { 2095 .halt_reg = 0x4f048, 2096 .halt_check = BRANCH_HALT, 2097 .clkr = { 2098 .enable_reg = 0x4f048, 2099 .enable_mask = BIT(0), 2100 .hw.init = &(struct clk_init_data) { 2101 .name = "gcc_camss_csi1phy_clk", 2102 .parent_hws = (const struct clk_hw*[]){ 2103 &csi1_clk_src.clkr.hw, 2104 }, 2105 .num_parents = 1, 2106 .ops = &clk_branch2_ops, 2107 .flags = CLK_SET_RATE_PARENT, 2108 } 2109 } 2110 }; 2111 2112 static struct clk_branch gcc_camss_csi2phy_clk = { 2113 .halt_reg = 0x3c048, 2114 .halt_check = BRANCH_HALT, 2115 .clkr = { 2116 .enable_reg = 0x3c048, 2117 .enable_mask = BIT(0), 2118 .hw.init = &(struct clk_init_data) { 2119 .name = "gcc_camss_csi2phy_clk", 2120 .parent_hws = (const struct clk_hw*[]){ 2121 &csi2_clk_src.clkr.hw, 2122 }, 2123 .num_parents = 1, 2124 .ops = &clk_branch2_ops, 2125 .flags = CLK_SET_RATE_PARENT, 2126 } 2127 } 2128 }; 2129 2130 static struct clk_branch gcc_camss_csi0phytimer_clk = { 2131 .halt_reg = 0x4e01c, 2132 .halt_check = BRANCH_HALT, 2133 .clkr = { 2134 .enable_reg = 0x4e01c, 2135 .enable_mask = BIT(0), 2136 .hw.init = &(struct clk_init_data) { 2137 .name = "gcc_camss_csi0phytimer_clk", 2138 .parent_hws = (const struct clk_hw*[]){ 2139 &csi0phytimer_clk_src.clkr.hw, 2140 }, 2141 .num_parents = 1, 2142 .ops = &clk_branch2_ops, 2143 .flags = CLK_SET_RATE_PARENT, 2144 } 2145 } 2146 }; 2147 2148 static struct clk_branch gcc_camss_csi1phytimer_clk = { 2149 .halt_reg = 0x4f01c, 2150 .halt_check = BRANCH_HALT, 2151 .clkr = { 2152 .enable_reg = 0x4f01c, 2153 .enable_mask = BIT(0), 2154 .hw.init = &(struct clk_init_data) { 2155 .name = "gcc_camss_csi1phytimer_clk", 2156 .parent_hws = (const struct clk_hw*[]){ 2157 &csi1phytimer_clk_src.clkr.hw, 2158 }, 2159 .num_parents = 1, 2160 .ops = &clk_branch2_ops, 2161 .flags = CLK_SET_RATE_PARENT, 2162 } 2163 } 2164 }; 2165 2166 static struct clk_branch gcc_camss_csi0pix_clk = { 2167 .halt_reg = 0x4e058, 2168 .halt_check = BRANCH_HALT, 2169 .clkr = { 2170 .enable_reg = 0x4e058, 2171 .enable_mask = BIT(0), 2172 .hw.init = &(struct clk_init_data) { 2173 .name = "gcc_camss_csi0pix_clk", 2174 .parent_hws = (const struct clk_hw*[]){ 2175 &csi0_clk_src.clkr.hw, 2176 }, 2177 .num_parents = 1, 2178 .ops = &clk_branch2_ops, 2179 .flags = CLK_SET_RATE_PARENT, 2180 } 2181 } 2182 }; 2183 2184 static struct clk_branch gcc_camss_csi1pix_clk = { 2185 .halt_reg = 0x4f058, 2186 .halt_check = BRANCH_HALT, 2187 .clkr = { 2188 .enable_reg = 0x4f058, 2189 .enable_mask = BIT(0), 2190 .hw.init = &(struct clk_init_data) { 2191 .name = "gcc_camss_csi1pix_clk", 2192 .parent_hws = (const struct clk_hw*[]){ 2193 &csi1_clk_src.clkr.hw, 2194 }, 2195 .num_parents = 1, 2196 .ops = &clk_branch2_ops, 2197 .flags = CLK_SET_RATE_PARENT, 2198 } 2199 } 2200 }; 2201 2202 static struct clk_branch gcc_camss_csi2pix_clk = { 2203 .halt_reg = 0x3c058, 2204 .halt_check = BRANCH_HALT, 2205 .clkr = { 2206 .enable_reg = 0x3c058, 2207 .enable_mask = BIT(0), 2208 .hw.init = &(struct clk_init_data) { 2209 .name = "gcc_camss_csi2pix_clk", 2210 .parent_hws = (const struct clk_hw*[]){ 2211 &csi2_clk_src.clkr.hw, 2212 }, 2213 .num_parents = 1, 2214 .ops = &clk_branch2_ops, 2215 .flags = CLK_SET_RATE_PARENT, 2216 } 2217 } 2218 }; 2219 2220 static struct clk_branch gcc_camss_csi0rdi_clk = { 2221 .halt_reg = 0x4e050, 2222 .halt_check = BRANCH_HALT, 2223 .clkr = { 2224 .enable_reg = 0x4e050, 2225 .enable_mask = BIT(0), 2226 .hw.init = &(struct clk_init_data) { 2227 .name = "gcc_camss_csi0rdi_clk", 2228 .parent_hws = (const struct clk_hw*[]){ 2229 &csi0_clk_src.clkr.hw, 2230 }, 2231 .num_parents = 1, 2232 .ops = &clk_branch2_ops, 2233 .flags = CLK_SET_RATE_PARENT, 2234 } 2235 } 2236 }; 2237 2238 static struct clk_branch gcc_camss_csi1rdi_clk = { 2239 .halt_reg = 0x4f050, 2240 .halt_check = BRANCH_HALT, 2241 .clkr = { 2242 .enable_reg = 0x4f050, 2243 .enable_mask = BIT(0), 2244 .hw.init = &(struct clk_init_data) { 2245 .name = "gcc_camss_csi1rdi_clk", 2246 .parent_hws = (const struct clk_hw*[]){ 2247 &csi1_clk_src.clkr.hw, 2248 }, 2249 .num_parents = 1, 2250 .ops = &clk_branch2_ops, 2251 .flags = CLK_SET_RATE_PARENT, 2252 } 2253 } 2254 }; 2255 2256 static struct clk_branch gcc_camss_csi2rdi_clk = { 2257 .halt_reg = 0x3c050, 2258 .halt_check = BRANCH_HALT, 2259 .clkr = { 2260 .enable_reg = 0x3c050, 2261 .enable_mask = BIT(0), 2262 .hw.init = &(struct clk_init_data) { 2263 .name = "gcc_camss_csi2rdi_clk", 2264 .parent_hws = (const struct clk_hw*[]){ 2265 &csi2_clk_src.clkr.hw, 2266 }, 2267 .num_parents = 1, 2268 .ops = &clk_branch2_ops, 2269 .flags = CLK_SET_RATE_PARENT, 2270 } 2271 } 2272 }; 2273 2274 static struct clk_branch gcc_camss_csi_vfe0_clk = { 2275 .halt_reg = 0x58050, 2276 .halt_check = BRANCH_HALT, 2277 .clkr = { 2278 .enable_reg = 0x58050, 2279 .enable_mask = BIT(0), 2280 .hw.init = &(struct clk_init_data) { 2281 .name = "gcc_camss_csi_vfe0_clk", 2282 .parent_hws = (const struct clk_hw*[]){ 2283 &vfe0_clk_src.clkr.hw, 2284 }, 2285 .num_parents = 1, 2286 .ops = &clk_branch2_ops, 2287 .flags = CLK_SET_RATE_PARENT, 2288 } 2289 } 2290 }; 2291 2292 static struct clk_branch gcc_camss_csi_vfe1_clk = { 2293 .halt_reg = 0x58074, 2294 .halt_check = BRANCH_HALT, 2295 .clkr = { 2296 .enable_reg = 0x58074, 2297 .enable_mask = BIT(0), 2298 .hw.init = &(struct clk_init_data) { 2299 .name = "gcc_camss_csi_vfe1_clk", 2300 .parent_hws = (const struct clk_hw*[]){ 2301 &vfe1_clk_src.clkr.hw, 2302 }, 2303 .num_parents = 1, 2304 .ops = &clk_branch2_ops, 2305 .flags = CLK_SET_RATE_PARENT, 2306 } 2307 } 2308 }; 2309 2310 static struct clk_branch gcc_camss_gp0_clk = { 2311 .halt_reg = 0x54018, 2312 .halt_check = BRANCH_HALT, 2313 .clkr = { 2314 .enable_reg = 0x54018, 2315 .enable_mask = BIT(0), 2316 .hw.init = &(struct clk_init_data) { 2317 .name = "gcc_camss_gp0_clk", 2318 .parent_hws = (const struct clk_hw*[]){ 2319 &camss_gp0_clk_src.clkr.hw, 2320 }, 2321 .num_parents = 1, 2322 .ops = &clk_branch2_ops, 2323 .flags = CLK_SET_RATE_PARENT, 2324 } 2325 } 2326 }; 2327 2328 static struct clk_branch gcc_camss_gp1_clk = { 2329 .halt_reg = 0x55018, 2330 .halt_check = BRANCH_HALT, 2331 .clkr = { 2332 .enable_reg = 0x55018, 2333 .enable_mask = BIT(0), 2334 .hw.init = &(struct clk_init_data) { 2335 .name = "gcc_camss_gp1_clk", 2336 .parent_hws = (const struct clk_hw*[]){ 2337 &camss_gp1_clk_src.clkr.hw, 2338 }, 2339 .num_parents = 1, 2340 .ops = &clk_branch2_ops, 2341 .flags = CLK_SET_RATE_PARENT, 2342 } 2343 } 2344 }; 2345 2346 static struct clk_branch gcc_camss_ispif_ahb_clk = { 2347 .halt_reg = 0x50004, 2348 .halt_check = BRANCH_HALT, 2349 .clkr = { 2350 .enable_reg = 0x50004, 2351 .enable_mask = BIT(0), 2352 .hw.init = &(struct clk_init_data) { 2353 .name = "gcc_camss_ispif_ahb_clk", 2354 .parent_hws = (const struct clk_hw*[]){ 2355 &camss_top_ahb_clk_src.clkr.hw, 2356 }, 2357 .num_parents = 1, 2358 .ops = &clk_branch2_ops, 2359 .flags = CLK_SET_RATE_PARENT, 2360 } 2361 } 2362 }; 2363 2364 static struct clk_branch gcc_camss_jpeg0_clk = { 2365 .halt_reg = 0x57020, 2366 .halt_check = BRANCH_HALT, 2367 .clkr = { 2368 .enable_reg = 0x57020, 2369 .enable_mask = BIT(0), 2370 .hw.init = &(struct clk_init_data) { 2371 .name = "gcc_camss_jpeg0_clk", 2372 .parent_hws = (const struct clk_hw*[]){ 2373 &jpeg0_clk_src.clkr.hw, 2374 }, 2375 .num_parents = 1, 2376 .ops = &clk_branch2_ops, 2377 .flags = CLK_SET_RATE_PARENT, 2378 } 2379 } 2380 }; 2381 2382 static struct clk_branch gcc_camss_jpeg_ahb_clk = { 2383 .halt_reg = 0x57024, 2384 .halt_check = BRANCH_HALT, 2385 .clkr = { 2386 .enable_reg = 0x57024, 2387 .enable_mask = BIT(0), 2388 .hw.init = &(struct clk_init_data) { 2389 .name = "gcc_camss_jpeg_ahb_clk", 2390 .parent_hws = (const struct clk_hw*[]){ 2391 &camss_top_ahb_clk_src.clkr.hw, 2392 }, 2393 .num_parents = 1, 2394 .ops = &clk_branch2_ops, 2395 .flags = CLK_SET_RATE_PARENT, 2396 } 2397 } 2398 }; 2399 2400 static struct clk_branch gcc_camss_jpeg_axi_clk = { 2401 .halt_reg = 0x57028, 2402 .halt_check = BRANCH_HALT, 2403 .clkr = { 2404 .enable_reg = 0x57028, 2405 .enable_mask = BIT(0), 2406 .hw.init = &(struct clk_init_data) { 2407 .name = "gcc_camss_jpeg_axi_clk", 2408 .ops = &clk_branch2_ops, 2409 } 2410 } 2411 }; 2412 2413 static struct clk_branch gcc_camss_mclk0_clk = { 2414 .halt_reg = 0x52018, 2415 .halt_check = BRANCH_HALT, 2416 .clkr = { 2417 .enable_reg = 0x52018, 2418 .enable_mask = BIT(0), 2419 .hw.init = &(struct clk_init_data) { 2420 .name = "gcc_camss_mclk0_clk", 2421 .parent_hws = (const struct clk_hw*[]){ 2422 &mclk0_clk_src.clkr.hw, 2423 }, 2424 .num_parents = 1, 2425 .ops = &clk_branch2_ops, 2426 .flags = CLK_SET_RATE_PARENT, 2427 } 2428 } 2429 }; 2430 2431 static struct clk_branch gcc_camss_mclk1_clk = { 2432 .halt_reg = 0x53018, 2433 .halt_check = BRANCH_HALT, 2434 .clkr = { 2435 .enable_reg = 0x53018, 2436 .enable_mask = BIT(0), 2437 .hw.init = &(struct clk_init_data) { 2438 .name = "gcc_camss_mclk1_clk", 2439 .parent_hws = (const struct clk_hw*[]){ 2440 &mclk1_clk_src.clkr.hw, 2441 }, 2442 .num_parents = 1, 2443 .ops = &clk_branch2_ops, 2444 .flags = CLK_SET_RATE_PARENT, 2445 } 2446 } 2447 }; 2448 2449 static struct clk_branch gcc_camss_mclk2_clk = { 2450 .halt_reg = 0x5c018, 2451 .halt_check = BRANCH_HALT, 2452 .clkr = { 2453 .enable_reg = 0x5c018, 2454 .enable_mask = BIT(0), 2455 .hw.init = &(struct clk_init_data) { 2456 .name = "gcc_camss_mclk2_clk", 2457 .parent_hws = (const struct clk_hw*[]){ 2458 &mclk2_clk_src.clkr.hw, 2459 }, 2460 .num_parents = 1, 2461 .ops = &clk_branch2_ops, 2462 .flags = CLK_SET_RATE_PARENT, 2463 } 2464 } 2465 }; 2466 2467 static struct clk_branch gcc_camss_micro_ahb_clk = { 2468 .halt_reg = 0x5600c, 2469 .halt_check = BRANCH_HALT, 2470 .clkr = { 2471 .enable_reg = 0x5600c, 2472 .enable_mask = BIT(0), 2473 .hw.init = &(struct clk_init_data) { 2474 .name = "gcc_camss_micro_ahb_clk", 2475 .parent_hws = (const struct clk_hw*[]){ 2476 &camss_top_ahb_clk_src.clkr.hw, 2477 }, 2478 .num_parents = 1, 2479 .ops = &clk_branch2_ops, 2480 .flags = CLK_SET_RATE_PARENT, 2481 } 2482 } 2483 }; 2484 2485 static struct clk_branch gcc_camss_top_ahb_clk = { 2486 .halt_reg = 0x5a014, 2487 .halt_check = BRANCH_HALT, 2488 .clkr = { 2489 .enable_reg = 0x5a014, 2490 .enable_mask = BIT(0), 2491 .hw.init = &(struct clk_init_data) { 2492 .name = "gcc_camss_top_ahb_clk", 2493 .parent_hws = (const struct clk_hw*[]){ 2494 &camss_top_ahb_clk_src.clkr.hw, 2495 }, 2496 .num_parents = 1, 2497 .ops = &clk_branch2_ops, 2498 .flags = CLK_SET_RATE_PARENT, 2499 } 2500 } 2501 }; 2502 2503 static struct clk_branch gcc_camss_vfe0_ahb_clk = { 2504 .halt_reg = 0x58044, 2505 .halt_check = BRANCH_HALT, 2506 .clkr = { 2507 .enable_reg = 0x58044, 2508 .enable_mask = BIT(0), 2509 .hw.init = &(struct clk_init_data) { 2510 .name = "gcc_camss_vfe0_ahb_clk", 2511 .parent_hws = (const struct clk_hw*[]){ 2512 &camss_top_ahb_clk_src.clkr.hw, 2513 }, 2514 .num_parents = 1, 2515 .ops = &clk_branch2_ops, 2516 .flags = CLK_SET_RATE_PARENT, 2517 } 2518 } 2519 }; 2520 2521 static struct clk_branch gcc_camss_vfe0_axi_clk = { 2522 .halt_reg = 0x58048, 2523 .halt_check = BRANCH_HALT, 2524 .clkr = { 2525 .enable_reg = 0x58048, 2526 .enable_mask = BIT(0), 2527 .hw.init = &(struct clk_init_data) { 2528 .name = "gcc_camss_vfe0_axi_clk", 2529 .ops = &clk_branch2_ops, 2530 } 2531 } 2532 }; 2533 2534 static struct clk_branch gcc_camss_vfe0_clk = { 2535 .halt_reg = 0x58038, 2536 .halt_check = BRANCH_HALT, 2537 .clkr = { 2538 .enable_reg = 0x58038, 2539 .enable_mask = BIT(0), 2540 .hw.init = &(struct clk_init_data) { 2541 .name = "gcc_camss_vfe0_clk", 2542 .parent_hws = (const struct clk_hw*[]){ 2543 &vfe0_clk_src.clkr.hw, 2544 }, 2545 .num_parents = 1, 2546 .ops = &clk_branch2_ops, 2547 .flags = CLK_SET_RATE_PARENT, 2548 } 2549 } 2550 }; 2551 2552 static struct clk_branch gcc_camss_vfe1_ahb_clk = { 2553 .halt_reg = 0x58060, 2554 .halt_check = BRANCH_HALT, 2555 .clkr = { 2556 .enable_reg = 0x58060, 2557 .enable_mask = BIT(0), 2558 .hw.init = &(struct clk_init_data) { 2559 .name = "gcc_camss_vfe1_ahb_clk", 2560 .parent_hws = (const struct clk_hw*[]){ 2561 &camss_top_ahb_clk_src.clkr.hw, 2562 }, 2563 .num_parents = 1, 2564 .ops = &clk_branch2_ops, 2565 .flags = CLK_SET_RATE_PARENT, 2566 } 2567 } 2568 }; 2569 2570 static struct clk_branch gcc_camss_vfe1_axi_clk = { 2571 .halt_reg = 0x58068, 2572 .halt_check = BRANCH_HALT, 2573 .clkr = { 2574 .enable_reg = 0x58068, 2575 .enable_mask = BIT(0), 2576 .hw.init = &(struct clk_init_data) { 2577 .name = "gcc_camss_vfe1_axi_clk", 2578 .ops = &clk_branch2_ops, 2579 } 2580 } 2581 }; 2582 2583 static struct clk_branch gcc_camss_vfe1_clk = { 2584 .halt_reg = 0x5805c, 2585 .halt_check = BRANCH_HALT, 2586 .clkr = { 2587 .enable_reg = 0x5805c, 2588 .enable_mask = BIT(0), 2589 .hw.init = &(struct clk_init_data) { 2590 .name = "gcc_camss_vfe1_clk", 2591 .parent_hws = (const struct clk_hw*[]){ 2592 &vfe1_clk_src.clkr.hw, 2593 }, 2594 .num_parents = 1, 2595 .ops = &clk_branch2_ops, 2596 .flags = CLK_SET_RATE_PARENT, 2597 } 2598 } 2599 }; 2600 2601 static struct clk_branch gcc_cpp_tbu_clk = { 2602 .halt_reg = 0x12040, 2603 .halt_check = BRANCH_HALT_VOTED, 2604 .clkr = { 2605 .enable_reg = 0x4500c, 2606 .enable_mask = BIT(14), 2607 .hw.init = &(struct clk_init_data) { 2608 .name = "gcc_cpp_tbu_clk", 2609 .ops = &clk_branch2_ops, 2610 } 2611 } 2612 }; 2613 2614 static struct clk_branch gcc_crypto_ahb_clk = { 2615 .halt_reg = 0x16024, 2616 .halt_check = BRANCH_HALT_VOTED, 2617 .clkr = { 2618 .enable_reg = 0x45004, 2619 .enable_mask = BIT(0), 2620 .hw.init = &(struct clk_init_data) { 2621 .name = "gcc_crypto_ahb_clk", 2622 .ops = &clk_branch2_ops, 2623 } 2624 } 2625 }; 2626 2627 static struct clk_branch gcc_crypto_axi_clk = { 2628 .halt_reg = 0x16020, 2629 .halt_check = BRANCH_HALT_VOTED, 2630 .clkr = { 2631 .enable_reg = 0x45004, 2632 .enable_mask = BIT(1), 2633 .hw.init = &(struct clk_init_data) { 2634 .name = "gcc_crypto_axi_clk", 2635 .ops = &clk_branch2_ops, 2636 } 2637 } 2638 }; 2639 2640 static struct clk_branch gcc_crypto_clk = { 2641 .halt_reg = 0x1601c, 2642 .halt_check = BRANCH_HALT_VOTED, 2643 .clkr = { 2644 .enable_reg = 0x45004, 2645 .enable_mask = BIT(2), 2646 .hw.init = &(struct clk_init_data) { 2647 .name = "gcc_crypto_clk", 2648 .parent_hws = (const struct clk_hw*[]){ 2649 &crypto_clk_src.clkr.hw, 2650 }, 2651 .num_parents = 1, 2652 .ops = &clk_branch2_ops, 2653 .flags = CLK_SET_RATE_PARENT, 2654 } 2655 } 2656 }; 2657 2658 static struct clk_branch gcc_dcc_clk = { 2659 .halt_reg = 0x77004, 2660 .halt_check = BRANCH_HALT, 2661 .clkr = { 2662 .enable_reg = 0x77004, 2663 .enable_mask = BIT(0), 2664 .hw.init = &(struct clk_init_data) { 2665 .name = "gcc_dcc_clk", 2666 .ops = &clk_branch2_ops, 2667 } 2668 } 2669 }; 2670 2671 static struct clk_branch gcc_gfx_tbu_clk = { 2672 .halt_reg = 0x12010, 2673 .halt_check = BRANCH_HALT_VOTED, 2674 .clkr = { 2675 .enable_reg = 0x4500c, 2676 .enable_mask = BIT(3), 2677 .hw.init = &(struct clk_init_data){ 2678 .name = "gcc_gfx_tbu_clk", 2679 .ops = &clk_branch2_ops, 2680 }, 2681 }, 2682 }; 2683 2684 static struct clk_branch gcc_gfx_tcu_clk = { 2685 .halt_reg = 0x12020, 2686 .halt_check = BRANCH_HALT_VOTED, 2687 .clkr = { 2688 .enable_reg = 0x4500c, 2689 .enable_mask = BIT(2), 2690 .hw.init = &(struct clk_init_data){ 2691 .name = "gcc_gfx_tcu_clk", 2692 .ops = &clk_branch2_ops, 2693 }, 2694 }, 2695 }; 2696 2697 static struct clk_branch gcc_gtcu_ahb_clk = { 2698 .halt_reg = 0x12044, 2699 .halt_check = BRANCH_HALT_VOTED, 2700 .clkr = { 2701 .enable_reg = 0x4500c, 2702 .enable_mask = BIT(13), 2703 .hw.init = &(struct clk_init_data){ 2704 .name = "gcc_gtcu_ahb_clk", 2705 .ops = &clk_branch2_ops, 2706 }, 2707 }, 2708 }; 2709 2710 static struct clk_branch gcc_gp1_clk = { 2711 .halt_reg = 0x08000, 2712 .halt_check = BRANCH_HALT, 2713 .clkr = { 2714 .enable_reg = 0x08000, 2715 .enable_mask = BIT(0), 2716 .hw.init = &(struct clk_init_data) { 2717 .name = "gcc_gp1_clk", 2718 .parent_hws = (const struct clk_hw*[]){ 2719 &gp1_clk_src.clkr.hw, 2720 }, 2721 .num_parents = 1, 2722 .ops = &clk_branch2_ops, 2723 .flags = CLK_SET_RATE_PARENT, 2724 } 2725 } 2726 }; 2727 2728 static struct clk_branch gcc_gp2_clk = { 2729 .halt_reg = 0x09000, 2730 .halt_check = BRANCH_HALT, 2731 .clkr = { 2732 .enable_reg = 0x09000, 2733 .enable_mask = BIT(0), 2734 .hw.init = &(struct clk_init_data) { 2735 .name = "gcc_gp2_clk", 2736 .parent_hws = (const struct clk_hw*[]){ 2737 &gp2_clk_src.clkr.hw, 2738 }, 2739 .num_parents = 1, 2740 .ops = &clk_branch2_ops, 2741 .flags = CLK_SET_RATE_PARENT, 2742 } 2743 } 2744 }; 2745 2746 static struct clk_branch gcc_gp3_clk = { 2747 .halt_reg = 0x0a000, 2748 .halt_check = BRANCH_HALT, 2749 .clkr = { 2750 .enable_reg = 0x0a000, 2751 .enable_mask = BIT(0), 2752 .hw.init = &(struct clk_init_data) { 2753 .name = "gcc_gp3_clk", 2754 .parent_hws = (const struct clk_hw*[]){ 2755 &gp3_clk_src.clkr.hw, 2756 }, 2757 .num_parents = 1, 2758 .ops = &clk_branch2_ops, 2759 .flags = CLK_SET_RATE_PARENT, 2760 } 2761 } 2762 }; 2763 2764 static struct clk_branch gcc_jpeg_tbu_clk = { 2765 .halt_reg = 0x12034, 2766 .halt_check = BRANCH_HALT_VOTED, 2767 .clkr = { 2768 .enable_reg = 0x4500c, 2769 .enable_mask = BIT(10), 2770 .hw.init = &(struct clk_init_data) { 2771 .name = "gcc_jpeg_tbu_clk", 2772 .ops = &clk_branch2_ops, 2773 } 2774 } 2775 }; 2776 2777 static struct clk_branch gcc_mdp_tbu_clk = { 2778 .halt_reg = 0x1201c, 2779 .halt_check = BRANCH_HALT_VOTED, 2780 .clkr = { 2781 .enable_reg = 0x4500c, 2782 .enable_mask = BIT(4), 2783 .hw.init = &(struct clk_init_data) { 2784 .name = "gcc_mdp_tbu_clk", 2785 .ops = &clk_branch2_ops, 2786 } 2787 } 2788 }; 2789 2790 static struct clk_branch gcc_mdss_ahb_clk = { 2791 .halt_reg = 0x4d07c, 2792 .halt_check = BRANCH_HALT, 2793 .clkr = { 2794 .enable_reg = 0x4d07c, 2795 .enable_mask = BIT(0), 2796 .hw.init = &(struct clk_init_data) { 2797 .name = "gcc_mdss_ahb_clk", 2798 .ops = &clk_branch2_ops, 2799 } 2800 } 2801 }; 2802 2803 static struct clk_branch gcc_mdss_axi_clk = { 2804 .halt_reg = 0x4d080, 2805 .halt_check = BRANCH_HALT, 2806 .clkr = { 2807 .enable_reg = 0x4d080, 2808 .enable_mask = BIT(0), 2809 .hw.init = &(struct clk_init_data) { 2810 .name = "gcc_mdss_axi_clk", 2811 .ops = &clk_branch2_ops, 2812 } 2813 } 2814 }; 2815 2816 static struct clk_branch gcc_mdss_byte0_clk = { 2817 .halt_reg = 0x4d094, 2818 .halt_check = BRANCH_HALT, 2819 .clkr = { 2820 .enable_reg = 0x4d094, 2821 .enable_mask = BIT(0), 2822 .hw.init = &(struct clk_init_data) { 2823 .name = "gcc_mdss_byte0_clk", 2824 .parent_hws = (const struct clk_hw*[]){ 2825 &byte0_clk_src.clkr.hw, 2826 }, 2827 .num_parents = 1, 2828 .ops = &clk_branch2_ops, 2829 .flags = CLK_SET_RATE_PARENT, 2830 } 2831 } 2832 }; 2833 2834 static struct clk_branch gcc_mdss_byte1_clk = { 2835 .halt_reg = 0x4d0a0, 2836 .halt_check = BRANCH_HALT, 2837 .clkr = { 2838 .enable_reg = 0x4d0a0, 2839 .enable_mask = BIT(0), 2840 .hw.init = &(struct clk_init_data){ 2841 .name = "gcc_mdss_byte1_clk", 2842 .parent_hws = (const struct clk_hw*[]){ 2843 &byte1_clk_src.clkr.hw, 2844 }, 2845 .num_parents = 1, 2846 .ops = &clk_branch2_ops, 2847 .flags = CLK_SET_RATE_PARENT, 2848 }, 2849 }, 2850 }; 2851 2852 static struct clk_branch gcc_mdss_esc0_clk = { 2853 .halt_reg = 0x4d098, 2854 .halt_check = BRANCH_HALT, 2855 .clkr = { 2856 .enable_reg = 0x4d098, 2857 .enable_mask = BIT(0), 2858 .hw.init = &(struct clk_init_data) { 2859 .name = "gcc_mdss_esc0_clk", 2860 .parent_hws = (const struct clk_hw*[]){ 2861 &esc0_clk_src.clkr.hw, 2862 }, 2863 .num_parents = 1, 2864 .ops = &clk_branch2_ops, 2865 .flags = CLK_SET_RATE_PARENT, 2866 } 2867 } 2868 }; 2869 2870 static struct clk_branch gcc_mdss_esc1_clk = { 2871 .halt_reg = 0x4d09c, 2872 .halt_check = BRANCH_HALT, 2873 .clkr = { 2874 .enable_reg = 0x4d09c, 2875 .enable_mask = BIT(0), 2876 .hw.init = &(struct clk_init_data){ 2877 .name = "gcc_mdss_esc1_clk", 2878 .parent_hws = (const struct clk_hw*[]){ 2879 &esc1_clk_src.clkr.hw, 2880 }, 2881 .num_parents = 1, 2882 .ops = &clk_branch2_ops, 2883 .flags = CLK_SET_RATE_PARENT, 2884 }, 2885 }, 2886 }; 2887 2888 static struct clk_branch gcc_mdss_mdp_clk = { 2889 .halt_reg = 0x4d088, 2890 .halt_check = BRANCH_HALT, 2891 .clkr = { 2892 .enable_reg = 0x4d088, 2893 .enable_mask = BIT(0), 2894 .hw.init = &(struct clk_init_data) { 2895 .name = "gcc_mdss_mdp_clk", 2896 .parent_hws = (const struct clk_hw*[]){ 2897 &mdp_clk_src.clkr.hw, 2898 }, 2899 .num_parents = 1, 2900 .ops = &clk_branch2_ops, 2901 .flags = CLK_SET_RATE_PARENT, 2902 } 2903 } 2904 }; 2905 2906 static struct clk_branch gcc_mdss_pclk0_clk = { 2907 .halt_reg = 0x4d084, 2908 .halt_check = BRANCH_HALT, 2909 .clkr = { 2910 .enable_reg = 0x4d084, 2911 .enable_mask = BIT(0), 2912 .hw.init = &(struct clk_init_data) { 2913 .name = "gcc_mdss_pclk0_clk", 2914 .parent_hws = (const struct clk_hw*[]){ 2915 &pclk0_clk_src.clkr.hw, 2916 }, 2917 .num_parents = 1, 2918 .ops = &clk_branch2_ops, 2919 .flags = CLK_SET_RATE_PARENT, 2920 } 2921 } 2922 }; 2923 2924 static struct clk_branch gcc_mdss_pclk1_clk = { 2925 .halt_reg = 0x4d0a4, 2926 .halt_check = BRANCH_HALT, 2927 .clkr = { 2928 .enable_reg = 0x4d0a4, 2929 .enable_mask = BIT(0), 2930 .hw.init = &(struct clk_init_data){ 2931 .name = "gcc_mdss_pclk1_clk", 2932 .parent_hws = (const struct clk_hw*[]){ 2933 &pclk1_clk_src.clkr.hw, 2934 }, 2935 .num_parents = 1, 2936 .ops = &clk_branch2_ops, 2937 .flags = CLK_SET_RATE_PARENT, 2938 }, 2939 }, 2940 }; 2941 2942 static struct clk_branch gcc_mdss_vsync_clk = { 2943 .halt_reg = 0x4d090, 2944 .halt_check = BRANCH_HALT, 2945 .clkr = { 2946 .enable_reg = 0x4d090, 2947 .enable_mask = BIT(0), 2948 .hw.init = &(struct clk_init_data) { 2949 .name = "gcc_mdss_vsync_clk", 2950 .parent_hws = (const struct clk_hw*[]){ 2951 &vsync_clk_src.clkr.hw, 2952 }, 2953 .num_parents = 1, 2954 .ops = &clk_branch2_ops, 2955 .flags = CLK_SET_RATE_PARENT, 2956 } 2957 } 2958 }; 2959 2960 static struct clk_branch gcc_mss_cfg_ahb_clk = { 2961 .halt_reg = 0x49000, 2962 .halt_check = BRANCH_HALT, 2963 .clkr = { 2964 .enable_reg = 0x49000, 2965 .enable_mask = BIT(0), 2966 .hw.init = &(struct clk_init_data) { 2967 .name = "gcc_mss_cfg_ahb_clk", 2968 .ops = &clk_branch2_ops, 2969 } 2970 } 2971 }; 2972 2973 static struct clk_branch gcc_mss_q6_bimc_axi_clk = { 2974 .halt_reg = 0x49004, 2975 .halt_check = BRANCH_HALT, 2976 .clkr = { 2977 .enable_reg = 0x49004, 2978 .enable_mask = BIT(0), 2979 .hw.init = &(struct clk_init_data) { 2980 .name = "gcc_mss_q6_bimc_axi_clk", 2981 .ops = &clk_branch2_ops, 2982 } 2983 } 2984 }; 2985 2986 static struct clk_branch gcc_oxili_ahb_clk = { 2987 .halt_reg = 0x59028, 2988 .halt_check = BRANCH_HALT, 2989 .clkr = { 2990 .enable_reg = 0x59028, 2991 .enable_mask = BIT(0), 2992 .hw.init = &(struct clk_init_data) { 2993 .name = "gcc_oxili_ahb_clk", 2994 .ops = &clk_branch2_ops, 2995 } 2996 } 2997 }; 2998 2999 static struct clk_branch gcc_oxili_aon_clk = { 3000 .halt_reg = 0x5904c, 3001 .halt_check = BRANCH_HALT, 3002 .clkr = { 3003 .enable_reg = 0x5904c, 3004 .enable_mask = BIT(0), 3005 .hw.init = &(struct clk_init_data){ 3006 .name = "gcc_oxili_aon_clk", 3007 .parent_hws = (const struct clk_hw*[]){ 3008 &gfx3d_clk_src.clkr.hw, 3009 }, 3010 .num_parents = 1, 3011 .ops = &clk_branch2_ops, 3012 .flags = CLK_SET_RATE_PARENT, 3013 }, 3014 }, 3015 }; 3016 3017 static struct clk_branch gcc_oxili_gfx3d_clk = { 3018 .halt_reg = 0x59020, 3019 .halt_check = BRANCH_HALT, 3020 .clkr = { 3021 .enable_reg = 0x59020, 3022 .enable_mask = BIT(0), 3023 .hw.init = &(struct clk_init_data) { 3024 .name = "gcc_oxili_gfx3d_clk", 3025 .parent_hws = (const struct clk_hw*[]){ 3026 &gfx3d_clk_src.clkr.hw, 3027 }, 3028 .num_parents = 1, 3029 .ops = &clk_branch2_ops, 3030 .flags = CLK_SET_RATE_PARENT, 3031 } 3032 } 3033 }; 3034 3035 static struct clk_branch gcc_oxili_timer_clk = { 3036 .halt_reg = 0x59040, 3037 .halt_check = BRANCH_HALT, 3038 .clkr = { 3039 .enable_reg = 0x59040, 3040 .enable_mask = BIT(0), 3041 .hw.init = &(struct clk_init_data){ 3042 .name = "gcc_oxili_timer_clk", 3043 .ops = &clk_branch2_ops, 3044 }, 3045 }, 3046 }; 3047 3048 static struct clk_branch gcc_pdm2_clk = { 3049 .halt_reg = 0x4400c, 3050 .halt_check = BRANCH_HALT, 3051 .clkr = { 3052 .enable_reg = 0x4400c, 3053 .enable_mask = BIT(0), 3054 .hw.init = &(struct clk_init_data) { 3055 .name = "gcc_pdm2_clk", 3056 .parent_hws = (const struct clk_hw*[]){ 3057 &pdm2_clk_src.clkr.hw, 3058 }, 3059 .num_parents = 1, 3060 .ops = &clk_branch2_ops, 3061 .flags = CLK_SET_RATE_PARENT, 3062 } 3063 } 3064 }; 3065 3066 static struct clk_branch gcc_pdm_ahb_clk = { 3067 .halt_reg = 0x44004, 3068 .halt_check = BRANCH_HALT, 3069 .clkr = { 3070 .enable_reg = 0x44004, 3071 .enable_mask = BIT(0), 3072 .hw.init = &(struct clk_init_data) { 3073 .name = "gcc_pdm_ahb_clk", 3074 .ops = &clk_branch2_ops, 3075 } 3076 } 3077 }; 3078 3079 static struct clk_branch gcc_prng_ahb_clk = { 3080 .halt_reg = 0x13004, 3081 .halt_check = BRANCH_HALT_VOTED, 3082 .clkr = { 3083 .enable_reg = 0x45004, 3084 .enable_mask = BIT(8), 3085 .hw.init = &(struct clk_init_data) { 3086 .name = "gcc_prng_ahb_clk", 3087 .ops = &clk_branch2_ops, 3088 } 3089 } 3090 }; 3091 3092 static struct clk_branch gcc_qdss_dap_clk = { 3093 .halt_reg = 0x29084, 3094 .halt_check = BRANCH_HALT_VOTED, 3095 .clkr = { 3096 .enable_reg = 0x45004, 3097 .enable_mask = BIT(11), 3098 .hw.init = &(struct clk_init_data) { 3099 .name = "gcc_qdss_dap_clk", 3100 .ops = &clk_branch2_ops, 3101 } 3102 } 3103 }; 3104 3105 static struct clk_branch gcc_sdcc1_ice_core_clk = { 3106 .halt_reg = 0x5d014, 3107 .halt_check = BRANCH_HALT, 3108 .clkr = { 3109 .enable_reg = 0x5d014, 3110 .enable_mask = BIT(0), 3111 .hw.init = &(struct clk_init_data) { 3112 .name = "gcc_sdcc1_ice_core_clk", 3113 .parent_hws = (const struct clk_hw*[]){ 3114 &sdcc1_ice_core_clk_src.clkr.hw, 3115 }, 3116 .num_parents = 1, 3117 .ops = &clk_branch2_ops, 3118 .flags = CLK_SET_RATE_PARENT, 3119 } 3120 } 3121 }; 3122 3123 static struct clk_branch gcc_sdcc1_ahb_clk = { 3124 .halt_reg = 0x4201c, 3125 .halt_check = BRANCH_HALT, 3126 .clkr = { 3127 .enable_reg = 0x4201c, 3128 .enable_mask = BIT(0), 3129 .hw.init = &(struct clk_init_data) { 3130 .name = "gcc_sdcc1_ahb_clk", 3131 .ops = &clk_branch2_ops, 3132 } 3133 } 3134 }; 3135 3136 static struct clk_branch gcc_sdcc2_ahb_clk = { 3137 .halt_reg = 0x4301c, 3138 .halt_check = BRANCH_HALT, 3139 .clkr = { 3140 .enable_reg = 0x4301c, 3141 .enable_mask = BIT(0), 3142 .hw.init = &(struct clk_init_data) { 3143 .name = "gcc_sdcc2_ahb_clk", 3144 .ops = &clk_branch2_ops, 3145 } 3146 } 3147 }; 3148 3149 static struct clk_branch gcc_sdcc1_apps_clk = { 3150 .halt_reg = 0x42018, 3151 .halt_check = BRANCH_HALT, 3152 .clkr = { 3153 .enable_reg = 0x42018, 3154 .enable_mask = BIT(0), 3155 .hw.init = &(struct clk_init_data) { 3156 .name = "gcc_sdcc1_apps_clk", 3157 .parent_hws = (const struct clk_hw*[]){ 3158 &sdcc1_apps_clk_src.clkr.hw, 3159 }, 3160 .num_parents = 1, 3161 .ops = &clk_branch2_ops, 3162 .flags = CLK_SET_RATE_PARENT, 3163 } 3164 } 3165 }; 3166 3167 static struct clk_branch gcc_sdcc2_apps_clk = { 3168 .halt_reg = 0x43018, 3169 .halt_check = BRANCH_HALT, 3170 .clkr = { 3171 .enable_reg = 0x43018, 3172 .enable_mask = BIT(0), 3173 .hw.init = &(struct clk_init_data) { 3174 .name = "gcc_sdcc2_apps_clk", 3175 .parent_hws = (const struct clk_hw*[]){ 3176 &sdcc2_apps_clk_src.clkr.hw, 3177 }, 3178 .num_parents = 1, 3179 .ops = &clk_branch2_ops, 3180 .flags = CLK_SET_RATE_PARENT, 3181 } 3182 } 3183 }; 3184 3185 static struct clk_branch gcc_smmu_cfg_clk = { 3186 .halt_reg = 0x12038, 3187 .halt_check = BRANCH_HALT_VOTED, 3188 .clkr = { 3189 .enable_reg = 0x4500c, 3190 .enable_mask = BIT(12), 3191 .hw.init = &(struct clk_init_data) { 3192 .name = "gcc_smmu_cfg_clk", 3193 .ops = &clk_branch2_ops, 3194 } 3195 } 3196 }; 3197 3198 static struct clk_branch gcc_usb2a_phy_sleep_clk = { 3199 .halt_reg = 0x4102c, 3200 .clkr = { 3201 .enable_reg = 0x4102c, 3202 .enable_mask = BIT(0), 3203 .hw.init = &(struct clk_init_data){ 3204 .name = "gcc_usb2a_phy_sleep_clk", 3205 .ops = &clk_branch2_ops, 3206 }, 3207 }, 3208 }; 3209 3210 static struct clk_branch gcc_usb_hs_ahb_clk = { 3211 .halt_reg = 0x41008, 3212 .clkr = { 3213 .enable_reg = 0x41008, 3214 .enable_mask = BIT(0), 3215 .hw.init = &(struct clk_init_data){ 3216 .name = "gcc_usb_hs_ahb_clk", 3217 .ops = &clk_branch2_ops, 3218 }, 3219 }, 3220 }; 3221 3222 static struct clk_branch gcc_usb_hs_phy_cfg_ahb_clk = { 3223 .halt_reg = 0x41030, 3224 .clkr = { 3225 .enable_reg = 0x41030, 3226 .enable_mask = BIT(0), 3227 .hw.init = &(struct clk_init_data){ 3228 .name = "gcc_usb_hs_phy_cfg_ahb_clk", 3229 .ops = &clk_branch2_ops, 3230 }, 3231 }, 3232 }; 3233 3234 static struct clk_branch gcc_usb_hs_system_clk = { 3235 .halt_reg = 0x41004, 3236 .clkr = { 3237 .enable_reg = 0x41004, 3238 .enable_mask = BIT(0), 3239 .hw.init = &(struct clk_init_data){ 3240 .name = "gcc_usb_hs_system_clk", 3241 .parent_hws = (const struct clk_hw*[]){ 3242 &usb_hs_system_clk_src.clkr.hw, 3243 }, 3244 .num_parents = 1, 3245 .flags = CLK_SET_RATE_PARENT, 3246 .ops = &clk_branch2_ops, 3247 }, 3248 }, 3249 }; 3250 3251 static struct clk_branch gcc_venus0_ahb_clk = { 3252 .halt_reg = 0x4c020, 3253 .halt_check = BRANCH_HALT, 3254 .clkr = { 3255 .enable_reg = 0x4c020, 3256 .enable_mask = BIT(0), 3257 .hw.init = &(struct clk_init_data) { 3258 .name = "gcc_venus0_ahb_clk", 3259 .ops = &clk_branch2_ops, 3260 } 3261 } 3262 }; 3263 3264 static struct clk_branch gcc_venus0_axi_clk = { 3265 .halt_reg = 0x4c024, 3266 .halt_check = BRANCH_HALT, 3267 .clkr = { 3268 .enable_reg = 0x4c024, 3269 .enable_mask = BIT(0), 3270 .hw.init = &(struct clk_init_data) { 3271 .name = "gcc_venus0_axi_clk", 3272 .ops = &clk_branch2_ops, 3273 } 3274 } 3275 }; 3276 3277 static struct clk_branch gcc_venus0_core0_vcodec0_clk = { 3278 .halt_reg = 0x4c02c, 3279 .halt_check = BRANCH_HALT, 3280 .clkr = { 3281 .enable_reg = 0x4c02c, 3282 .enable_mask = BIT(0), 3283 .hw.init = &(struct clk_init_data) { 3284 .name = "gcc_venus0_core0_vcodec0_clk", 3285 .parent_hws = (const struct clk_hw*[]){ 3286 &vcodec0_clk_src.clkr.hw, 3287 }, 3288 .num_parents = 1, 3289 .ops = &clk_branch2_ops, 3290 .flags = CLK_SET_RATE_PARENT, 3291 } 3292 } 3293 }; 3294 3295 static struct clk_branch gcc_venus0_vcodec0_clk = { 3296 .halt_reg = 0x4c01c, 3297 .halt_check = BRANCH_HALT, 3298 .clkr = { 3299 .enable_reg = 0x4c01c, 3300 .enable_mask = BIT(0), 3301 .hw.init = &(struct clk_init_data) { 3302 .name = "gcc_venus0_vcodec0_clk", 3303 .parent_hws = (const struct clk_hw*[]){ 3304 &vcodec0_clk_src.clkr.hw, 3305 }, 3306 .num_parents = 1, 3307 .ops = &clk_branch2_ops, 3308 .flags = CLK_SET_RATE_PARENT, 3309 } 3310 } 3311 }; 3312 3313 static struct clk_branch gcc_venus_tbu_clk = { 3314 .halt_reg = 0x12014, 3315 .halt_check = BRANCH_HALT_VOTED, 3316 .clkr = { 3317 .enable_reg = 0x4500c, 3318 .enable_mask = BIT(5), 3319 .hw.init = &(struct clk_init_data) { 3320 .name = "gcc_venus_tbu_clk", 3321 .ops = &clk_branch2_ops, 3322 } 3323 } 3324 }; 3325 3326 static struct clk_branch gcc_vfe1_tbu_clk = { 3327 .halt_reg = 0x12090, 3328 .halt_check = BRANCH_HALT_VOTED, 3329 .clkr = { 3330 .enable_reg = 0x4500c, 3331 .enable_mask = BIT(17), 3332 .hw.init = &(struct clk_init_data) { 3333 .name = "gcc_vfe1_tbu_clk", 3334 .ops = &clk_branch2_ops, 3335 } 3336 } 3337 }; 3338 3339 static struct clk_branch gcc_vfe_tbu_clk = { 3340 .halt_reg = 0x1203c, 3341 .halt_check = BRANCH_HALT_VOTED, 3342 .clkr = { 3343 .enable_reg = 0x4500c, 3344 .enable_mask = BIT(9), 3345 .hw.init = &(struct clk_init_data) { 3346 .name = "gcc_vfe_tbu_clk", 3347 .ops = &clk_branch2_ops, 3348 } 3349 } 3350 }; 3351 3352 static struct clk_branch gcc_ipa_tbu_clk = { 3353 .halt_reg = 0x120a0, 3354 .halt_check = BRANCH_VOTED, 3355 .clkr = { 3356 .enable_reg = 0x4500c, 3357 .enable_mask = BIT(16), 3358 .hw.init = &(struct clk_init_data){ 3359 .name = "gcc_ipa_tbu_clk", 3360 .ops = &clk_branch2_ops, 3361 }, 3362 }, 3363 }; 3364 3365 static struct gdsc venus_gdsc = { 3366 .gdscr = 0x4c018, 3367 .cxcs = (unsigned int []){ 0x4c024, 0x4c01c }, 3368 .cxc_count = 2, 3369 .pd = { 3370 .name = "venus_gdsc", 3371 }, 3372 .pwrsts = PWRSTS_OFF_ON, 3373 }; 3374 3375 static struct gdsc venus_core0_gdsc = { 3376 .gdscr = 0x4c028, 3377 .cxcs = (unsigned int []){ 0x4c02c }, 3378 .cxc_count = 1, 3379 .pd = { 3380 .name = "venus_core0", 3381 }, 3382 .flags = HW_CTRL, 3383 .pwrsts = PWRSTS_OFF_ON, 3384 }; 3385 3386 static struct gdsc mdss_gdsc = { 3387 .gdscr = 0x4d078, 3388 .cxcs = (unsigned int []){ 0x4d080, 0x4d088 }, 3389 .cxc_count = 2, 3390 .pd = { 3391 .name = "mdss_gdsc", 3392 }, 3393 .pwrsts = PWRSTS_OFF_ON, 3394 }; 3395 3396 static struct gdsc jpeg_gdsc = { 3397 .gdscr = 0x5701c, 3398 .cxcs = (unsigned int []){ 0x57020, 0x57028 }, 3399 .cxc_count = 2, 3400 .pd = { 3401 .name = "jpeg_gdsc", 3402 }, 3403 .pwrsts = PWRSTS_OFF_ON, 3404 }; 3405 3406 static struct gdsc vfe0_gdsc = { 3407 .gdscr = 0x58034, 3408 .cxcs = (unsigned int []){ 0x58038, 0x58048, 0x5600c, 0x58050 }, 3409 .cxc_count = 4, 3410 .pd = { 3411 .name = "vfe0_gdsc", 3412 }, 3413 .pwrsts = PWRSTS_OFF_ON, 3414 }; 3415 3416 static struct gdsc vfe1_gdsc = { 3417 .gdscr = 0x5806c, 3418 .cxcs = (unsigned int []){ 0x5805c, 0x58068, 0x5600c, 0x58074 }, 3419 .cxc_count = 4, 3420 .pd = { 3421 .name = "vfe1_gdsc", 3422 }, 3423 .pwrsts = PWRSTS_OFF_ON, 3424 }; 3425 3426 static struct gdsc oxili_gx_gdsc = { 3427 .gdscr = 0x5901c, 3428 .clamp_io_ctrl = 0x5b00c, 3429 .cxcs = (unsigned int []){ 0x59000, 0x59020 }, 3430 .cxc_count = 2, 3431 .pd = { 3432 .name = "oxili_gx_gdsc", 3433 }, 3434 .pwrsts = PWRSTS_OFF_ON, 3435 .flags = CLAMP_IO, 3436 }; 3437 3438 static struct gdsc oxili_gx_gdsc_msm8937 = { 3439 .gdscr = 0x5901c, 3440 .clamp_io_ctrl = 0x5b00c, 3441 .cxcs = (unsigned int []){ 0x59000 }, 3442 .cxc_count = 1, 3443 .pd = { 3444 .name = "oxili_gx_gdsc", 3445 }, 3446 .pwrsts = PWRSTS_OFF_ON, 3447 .flags = CLAMP_IO, 3448 }; 3449 3450 static struct gdsc oxili_cx_gdsc = { 3451 .gdscr = 0x59044, 3452 .cxcs = (unsigned int []){ 0x59020 }, 3453 .cxc_count = 1, 3454 .pd = { 3455 .name = "oxili_cx_gdsc", 3456 }, 3457 .pwrsts = PWRSTS_OFF_ON, 3458 }; 3459 3460 static struct gdsc cpp_gdsc = { 3461 .gdscr = 0x58078, 3462 .cxcs = (unsigned int []){ 0x5803c, 0x58064 }, 3463 .cxc_count = 2, 3464 .pd = { 3465 .name = "cpp_gdsc", 3466 }, 3467 .pwrsts = PWRSTS_OFF_ON, 3468 }; 3469 3470 static struct clk_regmap *gcc_msm8917_clocks[] = { 3471 [GPLL0] = &gpll0.clkr, 3472 [GPLL0_EARLY] = &gpll0_early.clkr, 3473 [GPLL0_SLEEP_CLK_SRC] = &gpll0_sleep_clk_src.clkr, 3474 [GPLL3] = &gpll3.clkr, 3475 [GPLL3_EARLY] = &gpll3_early.clkr, 3476 [GPLL4] = &gpll4.clkr, 3477 [GPLL4_EARLY] = &gpll4_early.clkr, 3478 [GPLL6] = &gpll6, 3479 [GPLL6_EARLY] = &gpll6_early.clkr, 3480 [APSS_AHB_CLK_SRC] = &apss_ahb_clk_src.clkr, 3481 [BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr, 3482 [BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr, 3483 [BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr, 3484 [BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr, 3485 [BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr, 3486 [BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr, 3487 [BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr, 3488 [BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr, 3489 [BLSP2_QUP1_I2C_APPS_CLK_SRC] = &blsp2_qup1_i2c_apps_clk_src.clkr, 3490 [BLSP2_QUP1_SPI_APPS_CLK_SRC] = &blsp2_qup1_spi_apps_clk_src.clkr, 3491 [BLSP2_QUP2_I2C_APPS_CLK_SRC] = &blsp2_qup2_i2c_apps_clk_src.clkr, 3492 [BLSP2_QUP2_SPI_APPS_CLK_SRC] = &blsp2_qup2_spi_apps_clk_src.clkr, 3493 [BLSP2_QUP3_I2C_APPS_CLK_SRC] = &blsp2_qup3_i2c_apps_clk_src.clkr, 3494 [BLSP2_QUP3_SPI_APPS_CLK_SRC] = &blsp2_qup3_spi_apps_clk_src.clkr, 3495 [BLSP2_UART1_APPS_CLK_SRC] = &blsp2_uart1_apps_clk_src.clkr, 3496 [BLSP2_UART2_APPS_CLK_SRC] = &blsp2_uart2_apps_clk_src.clkr, 3497 [BYTE0_CLK_SRC] = &byte0_clk_src.clkr, 3498 [CAMSS_GP0_CLK_SRC] = &camss_gp0_clk_src.clkr, 3499 [CAMSS_GP1_CLK_SRC] = &camss_gp1_clk_src.clkr, 3500 [CAMSS_TOP_AHB_CLK_SRC] = &camss_top_ahb_clk_src.clkr, 3501 [CCI_CLK_SRC] = &cci_clk_src.clkr, 3502 [CPP_CLK_SRC] = &cpp_clk_src.clkr, 3503 [CRYPTO_CLK_SRC] = &crypto_clk_src.clkr, 3504 [CSI0PHYTIMER_CLK_SRC] = &csi0phytimer_clk_src.clkr, 3505 [CSI0_CLK_SRC] = &csi0_clk_src.clkr, 3506 [CSI1PHYTIMER_CLK_SRC] = &csi1phytimer_clk_src.clkr, 3507 [CSI1_CLK_SRC] = &csi1_clk_src.clkr, 3508 [CSI2_CLK_SRC] = &csi2_clk_src.clkr, 3509 [ESC0_CLK_SRC] = &esc0_clk_src.clkr, 3510 [GFX3D_CLK_SRC] = &gfx3d_clk_src.clkr, 3511 [GP1_CLK_SRC] = &gp1_clk_src.clkr, 3512 [GP2_CLK_SRC] = &gp2_clk_src.clkr, 3513 [GP3_CLK_SRC] = &gp3_clk_src.clkr, 3514 [JPEG0_CLK_SRC] = &jpeg0_clk_src.clkr, 3515 [MCLK0_CLK_SRC] = &mclk0_clk_src.clkr, 3516 [MCLK1_CLK_SRC] = &mclk1_clk_src.clkr, 3517 [MCLK2_CLK_SRC] = &mclk2_clk_src.clkr, 3518 [MDP_CLK_SRC] = &mdp_clk_src.clkr, 3519 [PCLK0_CLK_SRC] = &pclk0_clk_src.clkr, 3520 [PDM2_CLK_SRC] = &pdm2_clk_src.clkr, 3521 [SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr, 3522 [SDCC1_ICE_CORE_CLK_SRC] = &sdcc1_ice_core_clk_src.clkr, 3523 [SDCC2_APPS_CLK_SRC] = &sdcc2_apps_clk_src.clkr, 3524 [USB_HS_SYSTEM_CLK_SRC] = &usb_hs_system_clk_src.clkr, 3525 [VCODEC0_CLK_SRC] = &vcodec0_clk_src.clkr, 3526 [VFE0_CLK_SRC] = &vfe0_clk_src.clkr, 3527 [VFE1_CLK_SRC] = &vfe1_clk_src.clkr, 3528 [VSYNC_CLK_SRC] = &vsync_clk_src.clkr, 3529 [GCC_APSS_TCU_CLK] = &gcc_apss_tcu_clk.clkr, 3530 [GCC_BIMC_GFX_CLK] = &gcc_bimc_gfx_clk.clkr, 3531 [GCC_BIMC_GPU_CLK] = &gcc_bimc_gpu_clk.clkr, 3532 [GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr, 3533 [GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr, 3534 [GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr, 3535 [GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr, 3536 [GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr, 3537 [GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr, 3538 [GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr, 3539 [GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr, 3540 [GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr, 3541 [GCC_BLSP2_AHB_CLK] = &gcc_blsp2_ahb_clk.clkr, 3542 [GCC_BLSP2_QUP1_I2C_APPS_CLK] = &gcc_blsp2_qup1_i2c_apps_clk.clkr, 3543 [GCC_BLSP2_QUP1_SPI_APPS_CLK] = &gcc_blsp2_qup1_spi_apps_clk.clkr, 3544 [GCC_BLSP2_QUP2_I2C_APPS_CLK] = &gcc_blsp2_qup2_i2c_apps_clk.clkr, 3545 [GCC_BLSP2_QUP2_SPI_APPS_CLK] = &gcc_blsp2_qup2_spi_apps_clk.clkr, 3546 [GCC_BLSP2_QUP3_I2C_APPS_CLK] = &gcc_blsp2_qup3_i2c_apps_clk.clkr, 3547 [GCC_BLSP2_QUP3_SPI_APPS_CLK] = &gcc_blsp2_qup3_spi_apps_clk.clkr, 3548 [GCC_BLSP2_UART1_APPS_CLK] = &gcc_blsp2_uart1_apps_clk.clkr, 3549 [GCC_BLSP2_UART2_APPS_CLK] = &gcc_blsp2_uart2_apps_clk.clkr, 3550 [GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr, 3551 [GCC_CAMSS_AHB_CLK] = &gcc_camss_ahb_clk.clkr, 3552 [GCC_CAMSS_CCI_AHB_CLK] = &gcc_camss_cci_ahb_clk.clkr, 3553 [GCC_CAMSS_CCI_CLK] = &gcc_camss_cci_clk.clkr, 3554 [GCC_CAMSS_CPP_AHB_CLK] = &gcc_camss_cpp_ahb_clk.clkr, 3555 [GCC_CAMSS_CPP_CLK] = &gcc_camss_cpp_clk.clkr, 3556 [GCC_CAMSS_CSI0PHYTIMER_CLK] = &gcc_camss_csi0phytimer_clk.clkr, 3557 [GCC_CAMSS_CSI0PHY_CLK] = &gcc_camss_csi0phy_clk.clkr, 3558 [GCC_CAMSS_CSI0PIX_CLK] = &gcc_camss_csi0pix_clk.clkr, 3559 [GCC_CAMSS_CSI0RDI_CLK] = &gcc_camss_csi0rdi_clk.clkr, 3560 [GCC_CAMSS_CSI0_AHB_CLK] = &gcc_camss_csi0_ahb_clk.clkr, 3561 [GCC_CAMSS_CSI0_CLK] = &gcc_camss_csi0_clk.clkr, 3562 [GCC_CAMSS_CSI1PHYTIMER_CLK] = &gcc_camss_csi1phytimer_clk.clkr, 3563 [GCC_CAMSS_CSI1PHY_CLK] = &gcc_camss_csi1phy_clk.clkr, 3564 [GCC_CAMSS_CSI1PIX_CLK] = &gcc_camss_csi1pix_clk.clkr, 3565 [GCC_CAMSS_CSI1RDI_CLK] = &gcc_camss_csi1rdi_clk.clkr, 3566 [GCC_CAMSS_CSI1_AHB_CLK] = &gcc_camss_csi1_ahb_clk.clkr, 3567 [GCC_CAMSS_CSI1_CLK] = &gcc_camss_csi1_clk.clkr, 3568 [GCC_CAMSS_CSI2PHY_CLK] = &gcc_camss_csi2phy_clk.clkr, 3569 [GCC_CAMSS_CSI2PIX_CLK] = &gcc_camss_csi2pix_clk.clkr, 3570 [GCC_CAMSS_CSI2RDI_CLK] = &gcc_camss_csi2rdi_clk.clkr, 3571 [GCC_CAMSS_CSI2_AHB_CLK] = &gcc_camss_csi2_ahb_clk.clkr, 3572 [GCC_CAMSS_CSI2_CLK] = &gcc_camss_csi2_clk.clkr, 3573 [GCC_CAMSS_CSI_VFE0_CLK] = &gcc_camss_csi_vfe0_clk.clkr, 3574 [GCC_CAMSS_CSI_VFE1_CLK] = &gcc_camss_csi_vfe1_clk.clkr, 3575 [GCC_CAMSS_GP0_CLK] = &gcc_camss_gp0_clk.clkr, 3576 [GCC_CAMSS_GP1_CLK] = &gcc_camss_gp1_clk.clkr, 3577 [GCC_CAMSS_ISPIF_AHB_CLK] = &gcc_camss_ispif_ahb_clk.clkr, 3578 [GCC_CAMSS_JPEG0_CLK] = &gcc_camss_jpeg0_clk.clkr, 3579 [GCC_CAMSS_JPEG_AHB_CLK] = &gcc_camss_jpeg_ahb_clk.clkr, 3580 [GCC_CAMSS_JPEG_AXI_CLK] = &gcc_camss_jpeg_axi_clk.clkr, 3581 [GCC_CAMSS_MCLK0_CLK] = &gcc_camss_mclk0_clk.clkr, 3582 [GCC_CAMSS_MCLK1_CLK] = &gcc_camss_mclk1_clk.clkr, 3583 [GCC_CAMSS_MCLK2_CLK] = &gcc_camss_mclk2_clk.clkr, 3584 [GCC_CAMSS_MICRO_AHB_CLK] = &gcc_camss_micro_ahb_clk.clkr, 3585 [GCC_CAMSS_TOP_AHB_CLK] = &gcc_camss_top_ahb_clk.clkr, 3586 [GCC_CAMSS_VFE0_AHB_CLK] = &gcc_camss_vfe0_ahb_clk.clkr, 3587 [GCC_CAMSS_VFE0_AXI_CLK] = &gcc_camss_vfe0_axi_clk.clkr, 3588 [GCC_CAMSS_VFE0_CLK] = &gcc_camss_vfe0_clk.clkr, 3589 [GCC_CAMSS_VFE1_AHB_CLK] = &gcc_camss_vfe1_ahb_clk.clkr, 3590 [GCC_CAMSS_VFE1_AXI_CLK] = &gcc_camss_vfe1_axi_clk.clkr, 3591 [GCC_CAMSS_VFE1_CLK] = &gcc_camss_vfe1_clk.clkr, 3592 [GCC_CPP_TBU_CLK] = &gcc_cpp_tbu_clk.clkr, 3593 [GCC_CRYPTO_AHB_CLK] = &gcc_crypto_ahb_clk.clkr, 3594 [GCC_CRYPTO_AXI_CLK] = &gcc_crypto_axi_clk.clkr, 3595 [GCC_CRYPTO_CLK] = &gcc_crypto_clk.clkr, 3596 [GCC_DCC_CLK] = &gcc_dcc_clk.clkr, 3597 [GCC_GFX_TBU_CLK] = &gcc_gfx_tbu_clk.clkr, 3598 [GCC_GFX_TCU_CLK] = &gcc_gfx_tcu_clk.clkr, 3599 [GCC_GP1_CLK] = &gcc_gp1_clk.clkr, 3600 [GCC_GP2_CLK] = &gcc_gp2_clk.clkr, 3601 [GCC_GP3_CLK] = &gcc_gp3_clk.clkr, 3602 [GCC_GTCU_AHB_CLK] = &gcc_gtcu_ahb_clk.clkr, 3603 [GCC_JPEG_TBU_CLK] = &gcc_jpeg_tbu_clk.clkr, 3604 [GCC_MDP_TBU_CLK] = &gcc_mdp_tbu_clk.clkr, 3605 [GCC_MDSS_AHB_CLK] = &gcc_mdss_ahb_clk.clkr, 3606 [GCC_MDSS_AXI_CLK] = &gcc_mdss_axi_clk.clkr, 3607 [GCC_MDSS_BYTE0_CLK] = &gcc_mdss_byte0_clk.clkr, 3608 [GCC_MDSS_ESC0_CLK] = &gcc_mdss_esc0_clk.clkr, 3609 [GCC_MDSS_MDP_CLK] = &gcc_mdss_mdp_clk.clkr, 3610 [GCC_MDSS_PCLK0_CLK] = &gcc_mdss_pclk0_clk.clkr, 3611 [GCC_MDSS_VSYNC_CLK] = &gcc_mdss_vsync_clk.clkr, 3612 [GCC_MSS_CFG_AHB_CLK] = &gcc_mss_cfg_ahb_clk.clkr, 3613 [GCC_MSS_Q6_BIMC_AXI_CLK] = &gcc_mss_q6_bimc_axi_clk.clkr, 3614 [GCC_OXILI_AHB_CLK] = &gcc_oxili_ahb_clk.clkr, 3615 [GCC_OXILI_GFX3D_CLK] = &gcc_oxili_gfx3d_clk.clkr, 3616 [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr, 3617 [GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr, 3618 [GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr, 3619 [GCC_QDSS_DAP_CLK] = &gcc_qdss_dap_clk.clkr, 3620 [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr, 3621 [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr, 3622 [GCC_SDCC1_ICE_CORE_CLK] = &gcc_sdcc1_ice_core_clk.clkr, 3623 [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr, 3624 [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr, 3625 [GCC_SMMU_CFG_CLK] = &gcc_smmu_cfg_clk.clkr, 3626 [GCC_USB2A_PHY_SLEEP_CLK] = &gcc_usb2a_phy_sleep_clk.clkr, 3627 [GCC_USB_HS_AHB_CLK] = &gcc_usb_hs_ahb_clk.clkr, 3628 [GCC_USB_HS_PHY_CFG_AHB_CLK] = &gcc_usb_hs_phy_cfg_ahb_clk.clkr, 3629 [GCC_USB_HS_SYSTEM_CLK] = &gcc_usb_hs_system_clk.clkr, 3630 [GCC_VENUS0_AHB_CLK] = &gcc_venus0_ahb_clk.clkr, 3631 [GCC_VENUS0_AXI_CLK] = &gcc_venus0_axi_clk.clkr, 3632 [GCC_VENUS0_CORE0_VCODEC0_CLK] = &gcc_venus0_core0_vcodec0_clk.clkr, 3633 [GCC_VENUS0_VCODEC0_CLK] = &gcc_venus0_vcodec0_clk.clkr, 3634 [GCC_VENUS_TBU_CLK] = &gcc_venus_tbu_clk.clkr, 3635 [GCC_VFE1_TBU_CLK] = &gcc_vfe1_tbu_clk.clkr, 3636 [GCC_VFE_TBU_CLK] = &gcc_vfe_tbu_clk.clkr, 3637 }; 3638 3639 static struct clk_regmap *gcc_msm8937_clocks[] = { 3640 [GPLL0] = &gpll0.clkr, 3641 [GPLL0_EARLY] = &gpll0_early.clkr, 3642 [GPLL0_SLEEP_CLK_SRC] = &gpll0_sleep_clk_src.clkr, 3643 [GPLL3] = &gpll3.clkr, 3644 [GPLL3_EARLY] = &gpll3_early.clkr, 3645 [GPLL4] = &gpll4.clkr, 3646 [GPLL4_EARLY] = &gpll4_early.clkr, 3647 [GPLL6] = &gpll6, 3648 [GPLL6_EARLY] = &gpll6_early.clkr, 3649 [APSS_AHB_CLK_SRC] = &apss_ahb_clk_src.clkr, 3650 [MSM8937_BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr, 3651 [MSM8937_BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr, 3652 [BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr, 3653 [BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr, 3654 [BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr, 3655 [BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr, 3656 [BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr, 3657 [BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr, 3658 [BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr, 3659 [BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr, 3660 [BLSP2_QUP1_I2C_APPS_CLK_SRC] = &blsp2_qup1_i2c_apps_clk_src.clkr, 3661 [BLSP2_QUP1_SPI_APPS_CLK_SRC] = &blsp2_qup1_spi_apps_clk_src.clkr, 3662 [BLSP2_QUP2_I2C_APPS_CLK_SRC] = &blsp2_qup2_i2c_apps_clk_src.clkr, 3663 [BLSP2_QUP2_SPI_APPS_CLK_SRC] = &blsp2_qup2_spi_apps_clk_src.clkr, 3664 [BLSP2_QUP3_I2C_APPS_CLK_SRC] = &blsp2_qup3_i2c_apps_clk_src.clkr, 3665 [BLSP2_QUP3_SPI_APPS_CLK_SRC] = &blsp2_qup3_spi_apps_clk_src.clkr, 3666 [MSM8937_BLSP2_QUP4_I2C_APPS_CLK_SRC] = &blsp2_qup4_i2c_apps_clk_src.clkr, 3667 [MSM8937_BLSP2_QUP4_SPI_APPS_CLK_SRC] = &blsp2_qup4_spi_apps_clk_src.clkr, 3668 [BLSP2_UART1_APPS_CLK_SRC] = &blsp2_uart1_apps_clk_src.clkr, 3669 [BLSP2_UART2_APPS_CLK_SRC] = &blsp2_uart2_apps_clk_src.clkr, 3670 [BYTE0_CLK_SRC] = &byte0_clk_src.clkr, 3671 [MSM8937_BYTE1_CLK_SRC] = &byte1_clk_src.clkr, 3672 [CAMSS_GP0_CLK_SRC] = &camss_gp0_clk_src.clkr, 3673 [CAMSS_GP1_CLK_SRC] = &camss_gp1_clk_src.clkr, 3674 [CAMSS_TOP_AHB_CLK_SRC] = &camss_top_ahb_clk_src.clkr, 3675 [CCI_CLK_SRC] = &cci_clk_src.clkr, 3676 [CPP_CLK_SRC] = &cpp_clk_src.clkr, 3677 [CRYPTO_CLK_SRC] = &crypto_clk_src.clkr, 3678 [CSI0PHYTIMER_CLK_SRC] = &csi0phytimer_clk_src.clkr, 3679 [CSI0_CLK_SRC] = &csi0_clk_src.clkr, 3680 [CSI1PHYTIMER_CLK_SRC] = &csi1phytimer_clk_src.clkr, 3681 [CSI1_CLK_SRC] = &csi1_clk_src.clkr, 3682 [CSI2_CLK_SRC] = &csi2_clk_src.clkr, 3683 [ESC0_CLK_SRC] = &esc0_clk_src.clkr, 3684 [MSM8937_ESC1_CLK_SRC] = &esc1_clk_src.clkr, 3685 [GFX3D_CLK_SRC] = &gfx3d_clk_src.clkr, 3686 [GP1_CLK_SRC] = &gp1_clk_src.clkr, 3687 [GP2_CLK_SRC] = &gp2_clk_src.clkr, 3688 [GP3_CLK_SRC] = &gp3_clk_src.clkr, 3689 [JPEG0_CLK_SRC] = &jpeg0_clk_src.clkr, 3690 [MCLK0_CLK_SRC] = &mclk0_clk_src.clkr, 3691 [MCLK1_CLK_SRC] = &mclk1_clk_src.clkr, 3692 [MCLK2_CLK_SRC] = &mclk2_clk_src.clkr, 3693 [MDP_CLK_SRC] = &mdp_clk_src.clkr, 3694 [PCLK0_CLK_SRC] = &pclk0_clk_src.clkr, 3695 [MSM8937_PCLK1_CLK_SRC] = &pclk1_clk_src.clkr, 3696 [PDM2_CLK_SRC] = &pdm2_clk_src.clkr, 3697 [SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr, 3698 [SDCC1_ICE_CORE_CLK_SRC] = &sdcc1_ice_core_clk_src.clkr, 3699 [SDCC2_APPS_CLK_SRC] = &sdcc2_apps_clk_src.clkr, 3700 [USB_HS_SYSTEM_CLK_SRC] = &usb_hs_system_clk_src.clkr, 3701 [VCODEC0_CLK_SRC] = &vcodec0_clk_src.clkr, 3702 [VFE0_CLK_SRC] = &vfe0_clk_src.clkr, 3703 [VFE1_CLK_SRC] = &vfe1_clk_src.clkr, 3704 [VSYNC_CLK_SRC] = &vsync_clk_src.clkr, 3705 [GCC_APSS_TCU_CLK] = &gcc_apss_tcu_clk.clkr, 3706 [GCC_BIMC_GFX_CLK] = &gcc_bimc_gfx_clk.clkr, 3707 [GCC_BIMC_GPU_CLK] = &gcc_bimc_gpu_clk.clkr, 3708 [GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr, 3709 [MSM8937_GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr, 3710 [MSM8937_GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr, 3711 [GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr, 3712 [GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr, 3713 [GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr, 3714 [GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr, 3715 [GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr, 3716 [GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr, 3717 [GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr, 3718 [GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr, 3719 [GCC_BLSP2_AHB_CLK] = &gcc_blsp2_ahb_clk.clkr, 3720 [GCC_BLSP2_QUP1_I2C_APPS_CLK] = &gcc_blsp2_qup1_i2c_apps_clk.clkr, 3721 [GCC_BLSP2_QUP1_SPI_APPS_CLK] = &gcc_blsp2_qup1_spi_apps_clk.clkr, 3722 [GCC_BLSP2_QUP2_I2C_APPS_CLK] = &gcc_blsp2_qup2_i2c_apps_clk.clkr, 3723 [GCC_BLSP2_QUP2_SPI_APPS_CLK] = &gcc_blsp2_qup2_spi_apps_clk.clkr, 3724 [GCC_BLSP2_QUP3_I2C_APPS_CLK] = &gcc_blsp2_qup3_i2c_apps_clk.clkr, 3725 [GCC_BLSP2_QUP3_SPI_APPS_CLK] = &gcc_blsp2_qup3_spi_apps_clk.clkr, 3726 [MSM8937_GCC_BLSP2_QUP4_I2C_APPS_CLK] = &gcc_blsp2_qup4_i2c_apps_clk.clkr, 3727 [MSM8937_GCC_BLSP2_QUP4_SPI_APPS_CLK] = &gcc_blsp2_qup4_spi_apps_clk.clkr, 3728 [GCC_BLSP2_UART1_APPS_CLK] = &gcc_blsp2_uart1_apps_clk.clkr, 3729 [GCC_BLSP2_UART2_APPS_CLK] = &gcc_blsp2_uart2_apps_clk.clkr, 3730 [GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr, 3731 [GCC_CAMSS_AHB_CLK] = &gcc_camss_ahb_clk.clkr, 3732 [GCC_CAMSS_CCI_AHB_CLK] = &gcc_camss_cci_ahb_clk.clkr, 3733 [GCC_CAMSS_CCI_CLK] = &gcc_camss_cci_clk.clkr, 3734 [GCC_CAMSS_CPP_AHB_CLK] = &gcc_camss_cpp_ahb_clk.clkr, 3735 [GCC_CAMSS_CPP_CLK] = &gcc_camss_cpp_clk.clkr, 3736 [GCC_CAMSS_CSI0PHYTIMER_CLK] = &gcc_camss_csi0phytimer_clk.clkr, 3737 [GCC_CAMSS_CSI0PHY_CLK] = &gcc_camss_csi0phy_clk.clkr, 3738 [GCC_CAMSS_CSI0PIX_CLK] = &gcc_camss_csi0pix_clk.clkr, 3739 [GCC_CAMSS_CSI0RDI_CLK] = &gcc_camss_csi0rdi_clk.clkr, 3740 [GCC_CAMSS_CSI0_AHB_CLK] = &gcc_camss_csi0_ahb_clk.clkr, 3741 [GCC_CAMSS_CSI0_CLK] = &gcc_camss_csi0_clk.clkr, 3742 [GCC_CAMSS_CSI1PHYTIMER_CLK] = &gcc_camss_csi1phytimer_clk.clkr, 3743 [GCC_CAMSS_CSI1PHY_CLK] = &gcc_camss_csi1phy_clk.clkr, 3744 [GCC_CAMSS_CSI1PIX_CLK] = &gcc_camss_csi1pix_clk.clkr, 3745 [GCC_CAMSS_CSI1RDI_CLK] = &gcc_camss_csi1rdi_clk.clkr, 3746 [GCC_CAMSS_CSI1_AHB_CLK] = &gcc_camss_csi1_ahb_clk.clkr, 3747 [GCC_CAMSS_CSI1_CLK] = &gcc_camss_csi1_clk.clkr, 3748 [GCC_CAMSS_CSI2PHY_CLK] = &gcc_camss_csi2phy_clk.clkr, 3749 [GCC_CAMSS_CSI2PIX_CLK] = &gcc_camss_csi2pix_clk.clkr, 3750 [GCC_CAMSS_CSI2RDI_CLK] = &gcc_camss_csi2rdi_clk.clkr, 3751 [GCC_CAMSS_CSI2_AHB_CLK] = &gcc_camss_csi2_ahb_clk.clkr, 3752 [GCC_CAMSS_CSI2_CLK] = &gcc_camss_csi2_clk.clkr, 3753 [GCC_CAMSS_CSI_VFE0_CLK] = &gcc_camss_csi_vfe0_clk.clkr, 3754 [GCC_CAMSS_CSI_VFE1_CLK] = &gcc_camss_csi_vfe1_clk.clkr, 3755 [GCC_CAMSS_GP0_CLK] = &gcc_camss_gp0_clk.clkr, 3756 [GCC_CAMSS_GP1_CLK] = &gcc_camss_gp1_clk.clkr, 3757 [GCC_CAMSS_ISPIF_AHB_CLK] = &gcc_camss_ispif_ahb_clk.clkr, 3758 [GCC_CAMSS_JPEG0_CLK] = &gcc_camss_jpeg0_clk.clkr, 3759 [GCC_CAMSS_JPEG_AHB_CLK] = &gcc_camss_jpeg_ahb_clk.clkr, 3760 [GCC_CAMSS_JPEG_AXI_CLK] = &gcc_camss_jpeg_axi_clk.clkr, 3761 [GCC_CAMSS_MCLK0_CLK] = &gcc_camss_mclk0_clk.clkr, 3762 [GCC_CAMSS_MCLK1_CLK] = &gcc_camss_mclk1_clk.clkr, 3763 [GCC_CAMSS_MCLK2_CLK] = &gcc_camss_mclk2_clk.clkr, 3764 [GCC_CAMSS_MICRO_AHB_CLK] = &gcc_camss_micro_ahb_clk.clkr, 3765 [GCC_CAMSS_TOP_AHB_CLK] = &gcc_camss_top_ahb_clk.clkr, 3766 [GCC_CAMSS_VFE0_AHB_CLK] = &gcc_camss_vfe0_ahb_clk.clkr, 3767 [GCC_CAMSS_VFE0_AXI_CLK] = &gcc_camss_vfe0_axi_clk.clkr, 3768 [GCC_CAMSS_VFE0_CLK] = &gcc_camss_vfe0_clk.clkr, 3769 [GCC_CAMSS_VFE1_AHB_CLK] = &gcc_camss_vfe1_ahb_clk.clkr, 3770 [GCC_CAMSS_VFE1_AXI_CLK] = &gcc_camss_vfe1_axi_clk.clkr, 3771 [GCC_CAMSS_VFE1_CLK] = &gcc_camss_vfe1_clk.clkr, 3772 [GCC_CPP_TBU_CLK] = &gcc_cpp_tbu_clk.clkr, 3773 [GCC_CRYPTO_AHB_CLK] = &gcc_crypto_ahb_clk.clkr, 3774 [GCC_CRYPTO_AXI_CLK] = &gcc_crypto_axi_clk.clkr, 3775 [GCC_CRYPTO_CLK] = &gcc_crypto_clk.clkr, 3776 [GCC_DCC_CLK] = &gcc_dcc_clk.clkr, 3777 [GCC_GP1_CLK] = &gcc_gp1_clk.clkr, 3778 [GCC_GP2_CLK] = &gcc_gp2_clk.clkr, 3779 [GCC_GP3_CLK] = &gcc_gp3_clk.clkr, 3780 [GCC_JPEG_TBU_CLK] = &gcc_jpeg_tbu_clk.clkr, 3781 [GCC_MDP_TBU_CLK] = &gcc_mdp_tbu_clk.clkr, 3782 [GCC_MDSS_AHB_CLK] = &gcc_mdss_ahb_clk.clkr, 3783 [GCC_MDSS_AXI_CLK] = &gcc_mdss_axi_clk.clkr, 3784 [GCC_MDSS_BYTE0_CLK] = &gcc_mdss_byte0_clk.clkr, 3785 [MSM8937_GCC_MDSS_BYTE1_CLK] = &gcc_mdss_byte1_clk.clkr, 3786 [GCC_MDSS_ESC0_CLK] = &gcc_mdss_esc0_clk.clkr, 3787 [MSM8937_GCC_MDSS_ESC1_CLK] = &gcc_mdss_esc1_clk.clkr, 3788 [GCC_MDSS_MDP_CLK] = &gcc_mdss_mdp_clk.clkr, 3789 [GCC_MDSS_PCLK0_CLK] = &gcc_mdss_pclk0_clk.clkr, 3790 [MSM8937_GCC_MDSS_PCLK1_CLK] = &gcc_mdss_pclk1_clk.clkr, 3791 [GCC_MDSS_VSYNC_CLK] = &gcc_mdss_vsync_clk.clkr, 3792 [GCC_MSS_CFG_AHB_CLK] = &gcc_mss_cfg_ahb_clk.clkr, 3793 [GCC_MSS_Q6_BIMC_AXI_CLK] = &gcc_mss_q6_bimc_axi_clk.clkr, 3794 [GCC_OXILI_AHB_CLK] = &gcc_oxili_ahb_clk.clkr, 3795 [MSM8937_GCC_OXILI_AON_CLK] = &gcc_oxili_aon_clk.clkr, 3796 [GCC_OXILI_GFX3D_CLK] = &gcc_oxili_gfx3d_clk.clkr, 3797 [MSM8937_GCC_OXILI_TIMER_CLK] = &gcc_oxili_timer_clk.clkr, 3798 [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr, 3799 [GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr, 3800 [GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr, 3801 [GCC_QDSS_DAP_CLK] = &gcc_qdss_dap_clk.clkr, 3802 [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr, 3803 [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr, 3804 [GCC_SDCC1_ICE_CORE_CLK] = &gcc_sdcc1_ice_core_clk.clkr, 3805 [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr, 3806 [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr, 3807 [GCC_SMMU_CFG_CLK] = &gcc_smmu_cfg_clk.clkr, 3808 [GCC_USB2A_PHY_SLEEP_CLK] = &gcc_usb2a_phy_sleep_clk.clkr, 3809 [GCC_USB_HS_AHB_CLK] = &gcc_usb_hs_ahb_clk.clkr, 3810 [GCC_USB_HS_PHY_CFG_AHB_CLK] = &gcc_usb_hs_phy_cfg_ahb_clk.clkr, 3811 [GCC_USB_HS_SYSTEM_CLK] = &gcc_usb_hs_system_clk.clkr, 3812 [GCC_VENUS0_AHB_CLK] = &gcc_venus0_ahb_clk.clkr, 3813 [GCC_VENUS0_AXI_CLK] = &gcc_venus0_axi_clk.clkr, 3814 [GCC_VENUS0_CORE0_VCODEC0_CLK] = &gcc_venus0_core0_vcodec0_clk.clkr, 3815 [GCC_VENUS0_VCODEC0_CLK] = &gcc_venus0_vcodec0_clk.clkr, 3816 [GCC_VENUS_TBU_CLK] = &gcc_venus_tbu_clk.clkr, 3817 [GCC_VFE1_TBU_CLK] = &gcc_vfe1_tbu_clk.clkr, 3818 [GCC_VFE_TBU_CLK] = &gcc_vfe_tbu_clk.clkr, 3819 }; 3820 3821 static struct clk_regmap *gcc_msm8940_clocks[] = { 3822 [GPLL0] = &gpll0.clkr, 3823 [GPLL0_EARLY] = &gpll0_early.clkr, 3824 [GPLL0_SLEEP_CLK_SRC] = &gpll0_sleep_clk_src.clkr, 3825 [GPLL3] = &gpll3.clkr, 3826 [GPLL3_EARLY] = &gpll3_early.clkr, 3827 [GPLL4] = &gpll4.clkr, 3828 [GPLL4_EARLY] = &gpll4_early.clkr, 3829 [GPLL6] = &gpll6, 3830 [GPLL6_EARLY] = &gpll6_early.clkr, 3831 [APSS_AHB_CLK_SRC] = &apss_ahb_clk_src.clkr, 3832 [MSM8937_BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr, 3833 [MSM8937_BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr, 3834 [BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr, 3835 [BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr, 3836 [BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr, 3837 [BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr, 3838 [BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr, 3839 [BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr, 3840 [BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr, 3841 [BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr, 3842 [BLSP2_QUP1_I2C_APPS_CLK_SRC] = &blsp2_qup1_i2c_apps_clk_src.clkr, 3843 [BLSP2_QUP1_SPI_APPS_CLK_SRC] = &blsp2_qup1_spi_apps_clk_src.clkr, 3844 [BLSP2_QUP2_I2C_APPS_CLK_SRC] = &blsp2_qup2_i2c_apps_clk_src.clkr, 3845 [BLSP2_QUP2_SPI_APPS_CLK_SRC] = &blsp2_qup2_spi_apps_clk_src.clkr, 3846 [BLSP2_QUP3_I2C_APPS_CLK_SRC] = &blsp2_qup3_i2c_apps_clk_src.clkr, 3847 [BLSP2_QUP3_SPI_APPS_CLK_SRC] = &blsp2_qup3_spi_apps_clk_src.clkr, 3848 [MSM8937_BLSP2_QUP4_I2C_APPS_CLK_SRC] = &blsp2_qup4_i2c_apps_clk_src.clkr, 3849 [MSM8937_BLSP2_QUP4_SPI_APPS_CLK_SRC] = &blsp2_qup4_spi_apps_clk_src.clkr, 3850 [BLSP2_UART1_APPS_CLK_SRC] = &blsp2_uart1_apps_clk_src.clkr, 3851 [BLSP2_UART2_APPS_CLK_SRC] = &blsp2_uart2_apps_clk_src.clkr, 3852 [BYTE0_CLK_SRC] = &byte0_clk_src.clkr, 3853 [MSM8937_BYTE1_CLK_SRC] = &byte1_clk_src.clkr, 3854 [CAMSS_GP0_CLK_SRC] = &camss_gp0_clk_src.clkr, 3855 [CAMSS_GP1_CLK_SRC] = &camss_gp1_clk_src.clkr, 3856 [CAMSS_TOP_AHB_CLK_SRC] = &camss_top_ahb_clk_src.clkr, 3857 [CCI_CLK_SRC] = &cci_clk_src.clkr, 3858 [CPP_CLK_SRC] = &cpp_clk_src.clkr, 3859 [CRYPTO_CLK_SRC] = &crypto_clk_src.clkr, 3860 [CSI0PHYTIMER_CLK_SRC] = &csi0phytimer_clk_src.clkr, 3861 [CSI0_CLK_SRC] = &csi0_clk_src.clkr, 3862 [CSI1PHYTIMER_CLK_SRC] = &csi1phytimer_clk_src.clkr, 3863 [CSI1_CLK_SRC] = &csi1_clk_src.clkr, 3864 [CSI2_CLK_SRC] = &csi2_clk_src.clkr, 3865 [ESC0_CLK_SRC] = &esc0_clk_src.clkr, 3866 [MSM8937_ESC1_CLK_SRC] = &esc1_clk_src.clkr, 3867 [GFX3D_CLK_SRC] = &gfx3d_clk_src.clkr, 3868 [GP1_CLK_SRC] = &gp1_clk_src.clkr, 3869 [GP2_CLK_SRC] = &gp2_clk_src.clkr, 3870 [GP3_CLK_SRC] = &gp3_clk_src.clkr, 3871 [JPEG0_CLK_SRC] = &jpeg0_clk_src.clkr, 3872 [MCLK0_CLK_SRC] = &mclk0_clk_src.clkr, 3873 [MCLK1_CLK_SRC] = &mclk1_clk_src.clkr, 3874 [MCLK2_CLK_SRC] = &mclk2_clk_src.clkr, 3875 [MDP_CLK_SRC] = &mdp_clk_src.clkr, 3876 [PCLK0_CLK_SRC] = &pclk0_clk_src.clkr, 3877 [MSM8937_PCLK1_CLK_SRC] = &pclk1_clk_src.clkr, 3878 [PDM2_CLK_SRC] = &pdm2_clk_src.clkr, 3879 [SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr, 3880 [SDCC1_ICE_CORE_CLK_SRC] = &sdcc1_ice_core_clk_src.clkr, 3881 [SDCC2_APPS_CLK_SRC] = &sdcc2_apps_clk_src.clkr, 3882 [USB_HS_SYSTEM_CLK_SRC] = &usb_hs_system_clk_src.clkr, 3883 [VCODEC0_CLK_SRC] = &vcodec0_clk_src.clkr, 3884 [VFE0_CLK_SRC] = &vfe0_clk_src.clkr, 3885 [VFE1_CLK_SRC] = &vfe1_clk_src.clkr, 3886 [VSYNC_CLK_SRC] = &vsync_clk_src.clkr, 3887 [GCC_APSS_TCU_CLK] = &gcc_apss_tcu_clk.clkr, 3888 [GCC_BIMC_GFX_CLK] = &gcc_bimc_gfx_clk.clkr, 3889 [GCC_BIMC_GPU_CLK] = &gcc_bimc_gpu_clk.clkr, 3890 [GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr, 3891 [MSM8937_GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr, 3892 [MSM8937_GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr, 3893 [GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr, 3894 [GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr, 3895 [GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr, 3896 [GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr, 3897 [GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr, 3898 [GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr, 3899 [GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr, 3900 [GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr, 3901 [GCC_BLSP2_AHB_CLK] = &gcc_blsp2_ahb_clk.clkr, 3902 [GCC_BLSP2_QUP1_I2C_APPS_CLK] = &gcc_blsp2_qup1_i2c_apps_clk.clkr, 3903 [GCC_BLSP2_QUP1_SPI_APPS_CLK] = &gcc_blsp2_qup1_spi_apps_clk.clkr, 3904 [GCC_BLSP2_QUP2_I2C_APPS_CLK] = &gcc_blsp2_qup2_i2c_apps_clk.clkr, 3905 [GCC_BLSP2_QUP2_SPI_APPS_CLK] = &gcc_blsp2_qup2_spi_apps_clk.clkr, 3906 [GCC_BLSP2_QUP3_I2C_APPS_CLK] = &gcc_blsp2_qup3_i2c_apps_clk.clkr, 3907 [GCC_BLSP2_QUP3_SPI_APPS_CLK] = &gcc_blsp2_qup3_spi_apps_clk.clkr, 3908 [MSM8937_GCC_BLSP2_QUP4_I2C_APPS_CLK] = &gcc_blsp2_qup4_i2c_apps_clk.clkr, 3909 [MSM8937_GCC_BLSP2_QUP4_SPI_APPS_CLK] = &gcc_blsp2_qup4_spi_apps_clk.clkr, 3910 [GCC_BLSP2_UART1_APPS_CLK] = &gcc_blsp2_uart1_apps_clk.clkr, 3911 [GCC_BLSP2_UART2_APPS_CLK] = &gcc_blsp2_uart2_apps_clk.clkr, 3912 [GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr, 3913 [GCC_CAMSS_AHB_CLK] = &gcc_camss_ahb_clk.clkr, 3914 [GCC_CAMSS_CCI_AHB_CLK] = &gcc_camss_cci_ahb_clk.clkr, 3915 [GCC_CAMSS_CCI_CLK] = &gcc_camss_cci_clk.clkr, 3916 [GCC_CAMSS_CPP_AHB_CLK] = &gcc_camss_cpp_ahb_clk.clkr, 3917 [GCC_CAMSS_CPP_CLK] = &gcc_camss_cpp_clk.clkr, 3918 [GCC_CAMSS_CSI0PHYTIMER_CLK] = &gcc_camss_csi0phytimer_clk.clkr, 3919 [GCC_CAMSS_CSI0PHY_CLK] = &gcc_camss_csi0phy_clk.clkr, 3920 [GCC_CAMSS_CSI0PIX_CLK] = &gcc_camss_csi0pix_clk.clkr, 3921 [GCC_CAMSS_CSI0RDI_CLK] = &gcc_camss_csi0rdi_clk.clkr, 3922 [GCC_CAMSS_CSI0_AHB_CLK] = &gcc_camss_csi0_ahb_clk.clkr, 3923 [GCC_CAMSS_CSI0_CLK] = &gcc_camss_csi0_clk.clkr, 3924 [GCC_CAMSS_CSI1PHYTIMER_CLK] = &gcc_camss_csi1phytimer_clk.clkr, 3925 [GCC_CAMSS_CSI1PHY_CLK] = &gcc_camss_csi1phy_clk.clkr, 3926 [GCC_CAMSS_CSI1PIX_CLK] = &gcc_camss_csi1pix_clk.clkr, 3927 [GCC_CAMSS_CSI1RDI_CLK] = &gcc_camss_csi1rdi_clk.clkr, 3928 [GCC_CAMSS_CSI1_AHB_CLK] = &gcc_camss_csi1_ahb_clk.clkr, 3929 [GCC_CAMSS_CSI1_CLK] = &gcc_camss_csi1_clk.clkr, 3930 [GCC_CAMSS_CSI2PHY_CLK] = &gcc_camss_csi2phy_clk.clkr, 3931 [GCC_CAMSS_CSI2PIX_CLK] = &gcc_camss_csi2pix_clk.clkr, 3932 [GCC_CAMSS_CSI2RDI_CLK] = &gcc_camss_csi2rdi_clk.clkr, 3933 [GCC_CAMSS_CSI2_AHB_CLK] = &gcc_camss_csi2_ahb_clk.clkr, 3934 [GCC_CAMSS_CSI2_CLK] = &gcc_camss_csi2_clk.clkr, 3935 [GCC_CAMSS_CSI_VFE0_CLK] = &gcc_camss_csi_vfe0_clk.clkr, 3936 [GCC_CAMSS_CSI_VFE1_CLK] = &gcc_camss_csi_vfe1_clk.clkr, 3937 [GCC_CAMSS_GP0_CLK] = &gcc_camss_gp0_clk.clkr, 3938 [GCC_CAMSS_GP1_CLK] = &gcc_camss_gp1_clk.clkr, 3939 [GCC_CAMSS_ISPIF_AHB_CLK] = &gcc_camss_ispif_ahb_clk.clkr, 3940 [GCC_CAMSS_JPEG0_CLK] = &gcc_camss_jpeg0_clk.clkr, 3941 [GCC_CAMSS_JPEG_AHB_CLK] = &gcc_camss_jpeg_ahb_clk.clkr, 3942 [GCC_CAMSS_JPEG_AXI_CLK] = &gcc_camss_jpeg_axi_clk.clkr, 3943 [GCC_CAMSS_MCLK0_CLK] = &gcc_camss_mclk0_clk.clkr, 3944 [GCC_CAMSS_MCLK1_CLK] = &gcc_camss_mclk1_clk.clkr, 3945 [GCC_CAMSS_MCLK2_CLK] = &gcc_camss_mclk2_clk.clkr, 3946 [GCC_CAMSS_MICRO_AHB_CLK] = &gcc_camss_micro_ahb_clk.clkr, 3947 [GCC_CAMSS_TOP_AHB_CLK] = &gcc_camss_top_ahb_clk.clkr, 3948 [GCC_CAMSS_VFE0_AHB_CLK] = &gcc_camss_vfe0_ahb_clk.clkr, 3949 [GCC_CAMSS_VFE0_AXI_CLK] = &gcc_camss_vfe0_axi_clk.clkr, 3950 [GCC_CAMSS_VFE0_CLK] = &gcc_camss_vfe0_clk.clkr, 3951 [GCC_CAMSS_VFE1_AHB_CLK] = &gcc_camss_vfe1_ahb_clk.clkr, 3952 [GCC_CAMSS_VFE1_AXI_CLK] = &gcc_camss_vfe1_axi_clk.clkr, 3953 [GCC_CAMSS_VFE1_CLK] = &gcc_camss_vfe1_clk.clkr, 3954 [GCC_CPP_TBU_CLK] = &gcc_cpp_tbu_clk.clkr, 3955 [GCC_CRYPTO_AHB_CLK] = &gcc_crypto_ahb_clk.clkr, 3956 [GCC_CRYPTO_AXI_CLK] = &gcc_crypto_axi_clk.clkr, 3957 [GCC_CRYPTO_CLK] = &gcc_crypto_clk.clkr, 3958 [GCC_DCC_CLK] = &gcc_dcc_clk.clkr, 3959 [GCC_GP1_CLK] = &gcc_gp1_clk.clkr, 3960 [GCC_GP2_CLK] = &gcc_gp2_clk.clkr, 3961 [GCC_GP3_CLK] = &gcc_gp3_clk.clkr, 3962 [GCC_JPEG_TBU_CLK] = &gcc_jpeg_tbu_clk.clkr, 3963 [GCC_MDP_TBU_CLK] = &gcc_mdp_tbu_clk.clkr, 3964 [GCC_MDSS_AHB_CLK] = &gcc_mdss_ahb_clk.clkr, 3965 [GCC_MDSS_AXI_CLK] = &gcc_mdss_axi_clk.clkr, 3966 [GCC_MDSS_BYTE0_CLK] = &gcc_mdss_byte0_clk.clkr, 3967 [MSM8937_GCC_MDSS_BYTE1_CLK] = &gcc_mdss_byte1_clk.clkr, 3968 [GCC_MDSS_ESC0_CLK] = &gcc_mdss_esc0_clk.clkr, 3969 [MSM8937_GCC_MDSS_ESC1_CLK] = &gcc_mdss_esc1_clk.clkr, 3970 [GCC_MDSS_MDP_CLK] = &gcc_mdss_mdp_clk.clkr, 3971 [GCC_MDSS_PCLK0_CLK] = &gcc_mdss_pclk0_clk.clkr, 3972 [MSM8937_GCC_MDSS_PCLK1_CLK] = &gcc_mdss_pclk1_clk.clkr, 3973 [GCC_MDSS_VSYNC_CLK] = &gcc_mdss_vsync_clk.clkr, 3974 [GCC_MSS_CFG_AHB_CLK] = &gcc_mss_cfg_ahb_clk.clkr, 3975 [GCC_MSS_Q6_BIMC_AXI_CLK] = &gcc_mss_q6_bimc_axi_clk.clkr, 3976 [GCC_OXILI_AHB_CLK] = &gcc_oxili_ahb_clk.clkr, 3977 [MSM8937_GCC_OXILI_AON_CLK] = &gcc_oxili_aon_clk.clkr, 3978 [GCC_OXILI_GFX3D_CLK] = &gcc_oxili_gfx3d_clk.clkr, 3979 [MSM8937_GCC_OXILI_TIMER_CLK] = &gcc_oxili_timer_clk.clkr, 3980 [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr, 3981 [GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr, 3982 [GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr, 3983 [GCC_QDSS_DAP_CLK] = &gcc_qdss_dap_clk.clkr, 3984 [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr, 3985 [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr, 3986 [GCC_SDCC1_ICE_CORE_CLK] = &gcc_sdcc1_ice_core_clk.clkr, 3987 [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr, 3988 [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr, 3989 [GCC_SMMU_CFG_CLK] = &gcc_smmu_cfg_clk.clkr, 3990 [GCC_USB2A_PHY_SLEEP_CLK] = &gcc_usb2a_phy_sleep_clk.clkr, 3991 [GCC_USB_HS_AHB_CLK] = &gcc_usb_hs_ahb_clk.clkr, 3992 [GCC_USB_HS_PHY_CFG_AHB_CLK] = &gcc_usb_hs_phy_cfg_ahb_clk.clkr, 3993 [GCC_USB_HS_SYSTEM_CLK] = &gcc_usb_hs_system_clk.clkr, 3994 [GCC_VENUS0_AHB_CLK] = &gcc_venus0_ahb_clk.clkr, 3995 [GCC_VENUS0_AXI_CLK] = &gcc_venus0_axi_clk.clkr, 3996 [GCC_VENUS0_CORE0_VCODEC0_CLK] = &gcc_venus0_core0_vcodec0_clk.clkr, 3997 [GCC_VENUS0_VCODEC0_CLK] = &gcc_venus0_vcodec0_clk.clkr, 3998 [GCC_VENUS_TBU_CLK] = &gcc_venus_tbu_clk.clkr, 3999 [GCC_VFE1_TBU_CLK] = &gcc_vfe1_tbu_clk.clkr, 4000 [GCC_VFE_TBU_CLK] = &gcc_vfe_tbu_clk.clkr, 4001 [MSM8940_GCC_IPA_TBU_CLK] = &gcc_ipa_tbu_clk.clkr, 4002 }; 4003 4004 static const struct qcom_reset_map gcc_msm8917_resets[] = { 4005 [GCC_CAMSS_MICRO_BCR] = { 0x56008 }, 4006 [GCC_MSS_BCR] = { 0x71000 }, 4007 [GCC_QUSB2_PHY_BCR] = { 0x4103c }, 4008 [GCC_USB_HS_BCR] = { 0x41000 }, 4009 [GCC_USB2_HS_PHY_ONLY_BCR] = { 0x41034 }, 4010 [GCC_MDSS_BCR] = { 0x4d074 }, 4011 }; 4012 4013 static const struct regmap_config gcc_msm8917_regmap_config = { 4014 .reg_bits = 32, 4015 .reg_stride = 4, 4016 .val_bits = 32, 4017 .max_register = 0x80000, 4018 .fast_io = true, 4019 }; 4020 4021 static struct gdsc *gcc_msm8917_gdscs[] = { 4022 [CPP_GDSC] = &cpp_gdsc, 4023 [JPEG_GDSC] = &jpeg_gdsc, 4024 [MDSS_GDSC] = &mdss_gdsc, 4025 [OXILI_GX_GDSC] = &oxili_gx_gdsc, 4026 [VENUS_CORE0_GDSC] = &venus_core0_gdsc, 4027 [VENUS_GDSC] = &venus_gdsc, 4028 [VFE0_GDSC] = &vfe0_gdsc, 4029 [VFE1_GDSC] = &vfe1_gdsc, 4030 }; 4031 4032 static struct gdsc *gcc_msm8937_gdscs[] = { 4033 [CPP_GDSC] = &cpp_gdsc, 4034 [JPEG_GDSC] = &jpeg_gdsc, 4035 [MDSS_GDSC] = &mdss_gdsc, 4036 [OXILI_GX_GDSC] = &oxili_gx_gdsc_msm8937, 4037 [MSM8937_OXILI_CX_GDSC] = &oxili_cx_gdsc, 4038 [VENUS_CORE0_GDSC] = &venus_core0_gdsc, 4039 [VENUS_GDSC] = &venus_gdsc, 4040 [VFE0_GDSC] = &vfe0_gdsc, 4041 [VFE1_GDSC] = &vfe1_gdsc, 4042 }; 4043 4044 static const struct qcom_cc_desc gcc_msm8917_desc = { 4045 .config = &gcc_msm8917_regmap_config, 4046 .clks = gcc_msm8917_clocks, 4047 .num_clks = ARRAY_SIZE(gcc_msm8917_clocks), 4048 .resets = gcc_msm8917_resets, 4049 .num_resets = ARRAY_SIZE(gcc_msm8917_resets), 4050 .gdscs = gcc_msm8917_gdscs, 4051 .num_gdscs = ARRAY_SIZE(gcc_msm8917_gdscs), 4052 }; 4053 4054 static const struct qcom_cc_desc gcc_qm215_desc = { 4055 .config = &gcc_msm8917_regmap_config, 4056 .clks = gcc_msm8917_clocks, 4057 .num_clks = ARRAY_SIZE(gcc_msm8917_clocks), 4058 .resets = gcc_msm8917_resets, 4059 .num_resets = ARRAY_SIZE(gcc_msm8917_resets), 4060 .gdscs = gcc_msm8917_gdscs, 4061 .num_gdscs = ARRAY_SIZE(gcc_msm8917_gdscs), 4062 }; 4063 4064 static const struct qcom_cc_desc gcc_msm8937_desc = { 4065 .config = &gcc_msm8917_regmap_config, 4066 .clks = gcc_msm8937_clocks, 4067 .num_clks = ARRAY_SIZE(gcc_msm8937_clocks), 4068 .resets = gcc_msm8917_resets, 4069 .num_resets = ARRAY_SIZE(gcc_msm8917_resets), 4070 .gdscs = gcc_msm8937_gdscs, 4071 .num_gdscs = ARRAY_SIZE(gcc_msm8937_gdscs), 4072 }; 4073 4074 static const struct qcom_cc_desc gcc_msm8940_desc = { 4075 .config = &gcc_msm8917_regmap_config, 4076 .clks = gcc_msm8940_clocks, 4077 .num_clks = ARRAY_SIZE(gcc_msm8940_clocks), 4078 .resets = gcc_msm8917_resets, 4079 .num_resets = ARRAY_SIZE(gcc_msm8917_resets), 4080 .gdscs = gcc_msm8937_gdscs, 4081 .num_gdscs = ARRAY_SIZE(gcc_msm8937_gdscs), 4082 }; 4083 4084 static const struct qcom_cc_desc gcc_sdm439_desc = { 4085 .config = &gcc_msm8917_regmap_config, 4086 .clks = gcc_msm8937_clocks, 4087 .num_clks = ARRAY_SIZE(gcc_msm8937_clocks), 4088 .resets = gcc_msm8917_resets, 4089 .num_resets = ARRAY_SIZE(gcc_msm8917_resets), 4090 .gdscs = gcc_msm8937_gdscs, 4091 .num_gdscs = ARRAY_SIZE(gcc_msm8937_gdscs), 4092 }; 4093 4094 static void msm8937_clock_override(void) 4095 { 4096 /* GPLL3 750MHz configuration */ 4097 gpll3_early_config.l = 47; 4098 gpll3_early.vco_table = gpll3_p_vco_msm8937; 4099 gpll3_early.num_vco = ARRAY_SIZE(gpll3_p_vco_msm8937); 4100 4101 /* 4102 * Set below clocks for use specific msm8937 parent map. 4103 */ 4104 vcodec0_clk_src.parent_map = gcc_cpp_map; 4105 vcodec0_clk_src.clkr.hw.init = &vcodec0_clk_src_init_msm8937; 4106 4107 /* 4108 * Set below clocks for use specific msm8937 freq table. 4109 */ 4110 vfe0_clk_src.freq_tbl = ftbl_vfe_clk_src_msm8937; 4111 vfe1_clk_src.freq_tbl = ftbl_vfe_clk_src_msm8937; 4112 cpp_clk_src.freq_tbl = ftbl_cpp_clk_src_msm8937; 4113 vcodec0_clk_src.freq_tbl = ftbl_vcodec0_clk_src_msm8937; 4114 csi0phytimer_clk_src.freq_tbl = ftbl_csi_phytimer_clk_src_msm8937; 4115 csi1phytimer_clk_src.freq_tbl = ftbl_csi_phytimer_clk_src_msm8937; 4116 usb_hs_system_clk_src.freq_tbl = ftbl_usb_hs_system_clk_src_msm8937; 4117 } 4118 4119 static void sdm439_clock_override(void) 4120 { 4121 vcodec0_clk_src.parent_map = gcc_cpp_map; 4122 vcodec0_clk_src.clkr.hw.init = &vcodec0_clk_src_init_msm8937; 4123 4124 vfe0_clk_src.freq_tbl = ftbl_vfe_clk_src_msm8937; 4125 vfe1_clk_src.freq_tbl = ftbl_vfe_clk_src_msm8937; 4126 cpp_clk_src.freq_tbl = ftbl_cpp_clk_src_msm8937; 4127 vcodec0_clk_src.freq_tbl = ftbl_vcodec0_clk_src_msm8937; 4128 gfx3d_clk_src.freq_tbl = ftbl_gfx3d_clk_src_sdm439; 4129 csi0phytimer_clk_src.freq_tbl = ftbl_csi_phytimer_clk_src_msm8937; 4130 csi1phytimer_clk_src.freq_tbl = ftbl_csi_phytimer_clk_src_msm8937; 4131 usb_hs_system_clk_src.freq_tbl = ftbl_usb_hs_system_clk_src_msm8937; 4132 } 4133 4134 static int gcc_msm8917_probe(struct platform_device *pdev) 4135 { 4136 struct regmap *regmap; 4137 const struct qcom_cc_desc *gcc_desc; 4138 4139 gcc_desc = of_device_get_match_data(&pdev->dev); 4140 4141 if (gcc_desc == &gcc_qm215_desc) { 4142 gfx3d_clk_src.parent_map = gcc_gfx3d_map_qm215; 4143 } else if (gcc_desc == &gcc_msm8937_desc) { 4144 msm8937_clock_override(); 4145 gfx3d_clk_src.freq_tbl = ftbl_gfx3d_clk_src_msm8937; 4146 } else if (gcc_desc == &gcc_msm8940_desc) { 4147 msm8937_clock_override(); 4148 gfx3d_clk_src.freq_tbl = ftbl_gfx3d_clk_src_msm8940; 4149 } else if (gcc_desc == &gcc_sdm439_desc) { 4150 sdm439_clock_override(); 4151 } 4152 4153 regmap = qcom_cc_map(pdev, gcc_desc); 4154 if (IS_ERR(regmap)) 4155 return PTR_ERR(regmap); 4156 4157 clk_alpha_pll_configure(&gpll3_early, regmap, &gpll3_early_config); 4158 4159 return qcom_cc_really_probe(&pdev->dev, gcc_desc, regmap); 4160 } 4161 4162 static const struct of_device_id gcc_msm8917_match_table[] = { 4163 { .compatible = "qcom,gcc-msm8917", .data = &gcc_msm8917_desc }, 4164 { .compatible = "qcom,gcc-qm215", .data = &gcc_qm215_desc }, 4165 { .compatible = "qcom,gcc-msm8937", .data = &gcc_msm8937_desc }, 4166 { .compatible = "qcom,gcc-msm8940", .data = &gcc_msm8940_desc }, 4167 { .compatible = "qcom,gcc-sdm439", .data = &gcc_sdm439_desc }, 4168 {}, 4169 }; 4170 MODULE_DEVICE_TABLE(of, gcc_msm8917_match_table); 4171 4172 static struct platform_driver gcc_msm8917_driver = { 4173 .probe = gcc_msm8917_probe, 4174 .driver = { 4175 .name = "gcc-msm8917", 4176 .of_match_table = gcc_msm8917_match_table, 4177 }, 4178 }; 4179 4180 static int __init gcc_msm8917_init(void) 4181 { 4182 return platform_driver_register(&gcc_msm8917_driver); 4183 } 4184 core_initcall(gcc_msm8917_init); 4185 4186 static void __exit gcc_msm8917_exit(void) 4187 { 4188 platform_driver_unregister(&gcc_msm8917_driver); 4189 } 4190 module_exit(gcc_msm8917_exit); 4191 4192 MODULE_DESCRIPTION("Qualcomm GCC MSM8917 Driver"); 4193 MODULE_LICENSE("GPL"); 4194