Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

clk: qcom: mmcc-apq8084: use parent_hws/_data instead of parent_names

Convert the clock driver to specify parent data rather than parent
names, to actually bind using 'clock-names' specified in the DTS rather
than global clock names. Use parent_hws where possible to refer parent
clocks directly, skipping the lookup.

Note, the system names for xo clocks were changed from "xo" to
"xo_board" to follow the example of other platforms. This switches the
clocks to use DT-provided "xo_board" clock instead of manually
registered "xo" clock and allows us to drop qcom_cc_register_board_clk()
call from the driver at some point.

In the same way change the looked up system "sleep_clk_src" clock to
"sleep_clk", which is registered from DT.

Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Link: https://lore.kernel.org/r/20230111060402.1168726-12-dmitry.baryshkov@linaro.org

authored by

Dmitry Baryshkov and committed by
Bjorn Andersson
2069c701 7b347f4b

+331 -313
+331 -313
drivers/clk/qcom/mmcc-apq8084.c
··· 50 50 .status_bit = 17, 51 51 .clkr.hw.init = &(struct clk_init_data){ 52 52 .name = "mmpll0", 53 - .parent_names = (const char *[]){ "xo" }, 53 + .parent_data = (const struct clk_parent_data[]){ 54 + { .fw_name = "xo", .name = "xo_board" }, 55 + }, 54 56 .num_parents = 1, 55 57 .ops = &clk_pll_ops, 56 58 }, ··· 63 61 .enable_mask = BIT(0), 64 62 .hw.init = &(struct clk_init_data){ 65 63 .name = "mmpll0_vote", 66 - .parent_names = (const char *[]){ "mmpll0" }, 64 + .parent_hws = (const struct clk_hw*[]){ 65 + &mmpll0.clkr.hw 66 + }, 67 67 .num_parents = 1, 68 68 .ops = &clk_pll_vote_ops, 69 69 }, ··· 81 77 .status_bit = 17, 82 78 .clkr.hw.init = &(struct clk_init_data){ 83 79 .name = "mmpll1", 84 - .parent_names = (const char *[]){ "xo" }, 80 + .parent_data = (const struct clk_parent_data[]){ 81 + { .fw_name = "xo", .name = "xo_board" }, 82 + }, 85 83 .num_parents = 1, 86 84 .ops = &clk_pll_ops, 87 85 }, ··· 94 88 .enable_mask = BIT(1), 95 89 .hw.init = &(struct clk_init_data){ 96 90 .name = "mmpll1_vote", 97 - .parent_names = (const char *[]){ "mmpll1" }, 91 + .parent_hws = (const struct clk_hw*[]){ 92 + &mmpll1.clkr.hw 93 + }, 98 94 .num_parents = 1, 99 95 .ops = &clk_pll_vote_ops, 100 96 }, ··· 111 103 .status_reg = 0x411c, 112 104 .clkr.hw.init = &(struct clk_init_data){ 113 105 .name = "mmpll2", 114 - .parent_names = (const char *[]){ "xo" }, 106 + .parent_data = (const struct clk_parent_data[]){ 107 + { .fw_name = "xo", .name = "xo_board" }, 108 + }, 115 109 .num_parents = 1, 116 110 .ops = &clk_pll_ops, 117 111 }, ··· 129 119 .status_bit = 17, 130 120 .clkr.hw.init = &(struct clk_init_data){ 131 121 .name = "mmpll3", 132 - .parent_names = (const char *[]){ "xo" }, 122 + .parent_data = (const struct clk_parent_data[]){ 123 + { .fw_name = "xo", .name = "xo_board" }, 124 + }, 133 125 .num_parents = 1, 134 126 .ops = &clk_pll_ops, 135 127 }, ··· 146 134 .status_reg = 0x00bc, 147 135 .clkr.hw.init = &(struct clk_init_data){ 148 136 .name = "mmpll4", 149 - .parent_names = (const char *[]){ "xo" }, 137 + .parent_data = (const struct clk_parent_data[]){ 138 + { .fw_name = "xo", .name = "xo_board" }, 139 + }, 150 140 .num_parents = 1, 151 141 .ops = &clk_pll_ops, 152 142 }, ··· 161 147 { P_GPLL0, 5 } 162 148 }; 163 149 164 - static const char * const mmcc_xo_mmpll0_mmpll1_gpll0[] = { 165 - "xo", 166 - "mmpll0_vote", 167 - "mmpll1_vote", 168 - "mmss_gpll0_vote", 150 + static const struct clk_parent_data mmcc_xo_mmpll0_mmpll1_gpll0[] = { 151 + { .fw_name = "xo", .name = "xo_board" }, 152 + { .hw = &mmpll0_vote.hw }, 153 + { .hw = &mmpll1_vote.hw }, 154 + { .fw_name = "mmss_gpll0_vote", .name = "mmss_gpll0_vote" }, 169 155 }; 170 156 171 157 static const struct parent_map mmcc_xo_mmpll0_dsi_hdmi_gpll0_map[] = { ··· 177 163 { P_DSI1PLL, 3 } 178 164 }; 179 165 180 - static const char * const mmcc_xo_mmpll0_dsi_hdmi_gpll0[] = { 181 - "xo", 182 - "mmpll0_vote", 183 - "hdmipll", 184 - "mmss_gpll0_vote", 185 - "dsi0pll", 186 - "dsi1pll", 166 + static const struct clk_parent_data mmcc_xo_mmpll0_dsi_hdmi_gpll0[] = { 167 + { .fw_name = "xo", .name = "xo_board" }, 168 + { .hw = &mmpll0_vote.hw }, 169 + { .fw_name = "hdmipll", .name = "hdmipll" }, 170 + { .fw_name = "mmss_gpll0_vote", .name = "mmss_gpll0_vote" }, 171 + { .fw_name = "dsi0pll", .name = "dsi0pll" }, 172 + { .fw_name = "dsi1pll", .name = "dsi1pll" }, 187 173 }; 188 174 189 175 static const struct parent_map mmcc_xo_mmpll0_1_2_gpll0_map[] = { ··· 194 180 { P_MMPLL2, 3 } 195 181 }; 196 182 197 - static const char * const mmcc_xo_mmpll0_1_2_gpll0[] = { 198 - "xo", 199 - "mmpll0_vote", 200 - "mmpll1_vote", 201 - "mmss_gpll0_vote", 202 - "mmpll2", 183 + static const struct clk_parent_data mmcc_xo_mmpll0_1_2_gpll0[] = { 184 + { .fw_name = "xo", .name = "xo_board" }, 185 + { .hw = &mmpll0_vote.hw }, 186 + { .hw = &mmpll1_vote.hw }, 187 + { .fw_name = "mmss_gpll0_vote", .name = "mmss_gpll0_vote" }, 188 + { .hw = &mmpll2.clkr.hw }, 203 189 }; 204 190 205 191 static const struct parent_map mmcc_xo_mmpll0_1_3_gpll0_map[] = { ··· 210 196 { P_MMPLL3, 3 } 211 197 }; 212 198 213 - static const char * const mmcc_xo_mmpll0_1_3_gpll0[] = { 214 - "xo", 215 - "mmpll0_vote", 216 - "mmpll1_vote", 217 - "mmss_gpll0_vote", 218 - "mmpll3", 199 + static const struct clk_parent_data mmcc_xo_mmpll0_1_3_gpll0[] = { 200 + { .fw_name = "xo", .name = "xo_board" }, 201 + { .hw = &mmpll0_vote.hw }, 202 + { .hw = &mmpll1_vote.hw }, 203 + { .fw_name = "mmss_gpll0_vote", .name = "mmss_gpll0_vote" }, 204 + { .hw = &mmpll3.clkr.hw }, 219 205 }; 220 206 221 207 static const struct parent_map mmcc_xo_dsi_hdmi_edp_map[] = { ··· 227 213 { P_DSI1PLL, 2 } 228 214 }; 229 215 230 - static const char * const mmcc_xo_dsi_hdmi_edp[] = { 231 - "xo", 232 - "edp_link_clk", 233 - "hdmipll", 234 - "edp_vco_div", 235 - "dsi0pll", 236 - "dsi1pll", 216 + static const struct clk_parent_data mmcc_xo_dsi_hdmi_edp[] = { 217 + { .fw_name = "xo", .name = "xo_board" }, 218 + { .fw_name = "edp_link_clk", .name = "edp_link_clk" }, 219 + { .fw_name = "hdmipll", .name = "hdmipll" }, 220 + { .fw_name = "edp_vco_div", .name = "edp_vco_div" }, 221 + { .fw_name = "dsi0pll", .name = "dsi0pll" }, 222 + { .fw_name = "dsi1pll", .name = "dsi1pll" }, 237 223 }; 238 224 239 225 static const struct parent_map mmcc_xo_dsi_hdmi_edp_gpll0_map[] = { ··· 245 231 { P_DSI1PLL, 2 } 246 232 }; 247 233 248 - static const char * const mmcc_xo_dsi_hdmi_edp_gpll0[] = { 249 - "xo", 250 - "edp_link_clk", 251 - "hdmipll", 252 - "gpll0_vote", 253 - "dsi0pll", 254 - "dsi1pll", 234 + static const struct clk_parent_data mmcc_xo_dsi_hdmi_edp_gpll0[] = { 235 + { .fw_name = "xo", .name = "xo_board" }, 236 + { .fw_name = "edp_link_clk", .name = "edp_link_clk" }, 237 + { .fw_name = "hdmipll", .name = "hdmipll" }, 238 + { .fw_name = "gpll0_vote", .name = "gpll0_vote" }, 239 + { .fw_name = "dsi0pll", .name = "dsi0pll" }, 240 + { .fw_name = "dsi1pll", .name = "dsi1pll" }, 255 241 }; 256 242 257 243 static const struct parent_map mmcc_xo_dsibyte_hdmi_edp_gpll0_map[] = { ··· 263 249 { P_DSI1PLL_BYTE, 2 } 264 250 }; 265 251 266 - static const char * const mmcc_xo_dsibyte_hdmi_edp_gpll0[] = { 267 - "xo", 268 - "edp_link_clk", 269 - "hdmipll", 270 - "gpll0_vote", 271 - "dsi0pllbyte", 272 - "dsi1pllbyte", 252 + static const struct clk_parent_data mmcc_xo_dsibyte_hdmi_edp_gpll0[] = { 253 + { .fw_name = "xo", .name = "xo_board" }, 254 + { .fw_name = "edp_link_clk", .name = "edp_link_clk" }, 255 + { .fw_name = "hdmipll", .name = "hdmipll" }, 256 + { .fw_name = "gpll0_vote", .name = "gpll0_vote" }, 257 + { .fw_name = "dsi0pllbyte", .name = "dsi0pllbyte" }, 258 + { .fw_name = "dsi1pllbyte", .name = "dsi1pllbyte" }, 273 259 }; 274 260 275 261 static const struct parent_map mmcc_xo_mmpll0_1_4_gpll0_map[] = { ··· 280 266 { P_MMPLL4, 3 } 281 267 }; 282 268 283 - static const char * const mmcc_xo_mmpll0_1_4_gpll0[] = { 284 - "xo", 285 - "mmpll0", 286 - "mmpll1", 287 - "mmpll4", 288 - "gpll0", 269 + static const struct clk_parent_data mmcc_xo_mmpll0_1_4_gpll0[] = { 270 + { .fw_name = "xo", .name = "xo_board" }, 271 + { .hw = &mmpll0.clkr.hw }, 272 + { .hw = &mmpll1.clkr.hw }, 273 + { .hw = &mmpll4.clkr.hw }, 274 + { .fw_name = "gpll0", .name = "gpll0" }, 289 275 }; 290 276 291 277 static const struct parent_map mmcc_xo_mmpll0_1_4_gpll1_0_map[] = { ··· 297 283 { P_GPLL1, 4 } 298 284 }; 299 285 300 - static const char * const mmcc_xo_mmpll0_1_4_gpll1_0[] = { 301 - "xo", 302 - "mmpll0", 303 - "mmpll1", 304 - "mmpll4", 305 - "gpll1", 306 - "gpll0", 286 + static const struct clk_parent_data mmcc_xo_mmpll0_1_4_gpll1_0[] = { 287 + { .fw_name = "xo", .name = "xo_board" }, 288 + { .hw = &mmpll0.clkr.hw }, 289 + { .hw = &mmpll1.clkr.hw }, 290 + { .hw = &mmpll4.clkr.hw }, 291 + { .fw_name = "gpll1", .name = "gpll1" }, 292 + { .fw_name = "gpll0", .name = "gpll0" }, 307 293 }; 308 294 309 295 static const struct parent_map mmcc_xo_mmpll0_1_4_gpll1_0_sleep_map[] = { ··· 316 302 { P_MMSLEEP, 6 } 317 303 }; 318 304 319 - static const char * const mmcc_xo_mmpll0_1_4_gpll1_0_sleep[] = { 320 - "xo", 321 - "mmpll0", 322 - "mmpll1", 323 - "mmpll4", 324 - "gpll1", 325 - "gpll0", 326 - "sleep_clk_src", 305 + static const struct clk_parent_data mmcc_xo_mmpll0_1_4_gpll1_0_sleep[] = { 306 + { .fw_name = "xo", .name = "xo_board" }, 307 + { .hw = &mmpll0.clkr.hw }, 308 + { .hw = &mmpll1.clkr.hw }, 309 + { .hw = &mmpll4.clkr.hw }, 310 + { .fw_name = "gpll1", .name = "gpll1" }, 311 + { .fw_name = "gpll0", .name = "gpll0" }, 312 + { .fw_name = "sleep_clk", .name = "sleep_clk" }, 327 313 }; 328 314 329 315 static struct clk_rcg2 mmss_ahb_clk_src = { ··· 332 318 .parent_map = mmcc_xo_mmpll0_mmpll1_gpll0_map, 333 319 .clkr.hw.init = &(struct clk_init_data){ 334 320 .name = "mmss_ahb_clk_src", 335 - .parent_names = mmcc_xo_mmpll0_mmpll1_gpll0, 321 + .parent_data = mmcc_xo_mmpll0_mmpll1_gpll0, 336 322 .num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_mmpll1_gpll0), 337 323 .ops = &clk_rcg2_ops, 338 324 }, ··· 357 343 .freq_tbl = ftbl_mmss_axi_clk, 358 344 .clkr.hw.init = &(struct clk_init_data){ 359 345 .name = "mmss_axi_clk_src", 360 - .parent_names = mmcc_xo_mmpll0_mmpll1_gpll0, 346 + .parent_data = mmcc_xo_mmpll0_mmpll1_gpll0, 361 347 .num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_mmpll1_gpll0), 362 348 .ops = &clk_rcg2_ops, 363 349 }, ··· 381 367 .freq_tbl = ftbl_ocmemnoc_clk, 382 368 .clkr.hw.init = &(struct clk_init_data){ 383 369 .name = "ocmemnoc_clk_src", 384 - .parent_names = mmcc_xo_mmpll0_mmpll1_gpll0, 370 + .parent_data = mmcc_xo_mmpll0_mmpll1_gpll0, 385 371 .num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_mmpll1_gpll0), 386 372 .ops = &clk_rcg2_ops, 387 373 }, ··· 400 386 .freq_tbl = ftbl_camss_csi0_3_clk, 401 387 .clkr.hw.init = &(struct clk_init_data){ 402 388 .name = "csi0_clk_src", 403 - .parent_names = mmcc_xo_mmpll0_1_4_gpll0, 389 + .parent_data = mmcc_xo_mmpll0_1_4_gpll0, 404 390 .num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_1_4_gpll0), 405 391 .ops = &clk_rcg2_ops, 406 392 }, ··· 413 399 .freq_tbl = ftbl_camss_csi0_3_clk, 414 400 .clkr.hw.init = &(struct clk_init_data){ 415 401 .name = "csi1_clk_src", 416 - .parent_names = mmcc_xo_mmpll0_1_4_gpll0, 402 + .parent_data = mmcc_xo_mmpll0_1_4_gpll0, 417 403 .num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_1_4_gpll0), 418 404 .ops = &clk_rcg2_ops, 419 405 }, ··· 426 412 .freq_tbl = ftbl_camss_csi0_3_clk, 427 413 .clkr.hw.init = &(struct clk_init_data){ 428 414 .name = "csi2_clk_src", 429 - .parent_names = mmcc_xo_mmpll0_1_4_gpll0, 415 + .parent_data = mmcc_xo_mmpll0_1_4_gpll0, 430 416 .num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_1_4_gpll0), 431 417 .ops = &clk_rcg2_ops, 432 418 }, ··· 439 425 .freq_tbl = ftbl_camss_csi0_3_clk, 440 426 .clkr.hw.init = &(struct clk_init_data){ 441 427 .name = "csi3_clk_src", 442 - .parent_names = mmcc_xo_mmpll0_1_4_gpll0, 428 + .parent_data = mmcc_xo_mmpll0_1_4_gpll0, 443 429 .num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_1_4_gpll0), 444 430 .ops = &clk_rcg2_ops, 445 431 }, ··· 469 455 .freq_tbl = ftbl_camss_vfe_vfe0_1_clk, 470 456 .clkr.hw.init = &(struct clk_init_data){ 471 457 .name = "vfe0_clk_src", 472 - .parent_names = mmcc_xo_mmpll0_1_4_gpll0, 458 + .parent_data = mmcc_xo_mmpll0_1_4_gpll0, 473 459 .num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_1_4_gpll0), 474 460 .ops = &clk_rcg2_ops, 475 461 }, ··· 482 468 .freq_tbl = ftbl_camss_vfe_vfe0_1_clk, 483 469 .clkr.hw.init = &(struct clk_init_data){ 484 470 .name = "vfe1_clk_src", 485 - .parent_names = mmcc_xo_mmpll0_1_4_gpll0, 471 + .parent_data = mmcc_xo_mmpll0_1_4_gpll0, 486 472 .num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_1_4_gpll0), 487 473 .ops = &clk_rcg2_ops, 488 474 }, ··· 510 496 .freq_tbl = ftbl_mdss_mdp_clk, 511 497 .clkr.hw.init = &(struct clk_init_data){ 512 498 .name = "mdp_clk_src", 513 - .parent_names = mmcc_xo_mmpll0_dsi_hdmi_gpll0, 499 + .parent_data = mmcc_xo_mmpll0_dsi_hdmi_gpll0, 514 500 .num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_dsi_hdmi_gpll0), 515 501 .ops = &clk_rcg2_ops, 516 502 }, ··· 522 508 .parent_map = mmcc_xo_mmpll0_1_2_gpll0_map, 523 509 .clkr.hw.init = &(struct clk_init_data){ 524 510 .name = "gfx3d_clk_src", 525 - .parent_names = mmcc_xo_mmpll0_1_2_gpll0, 511 + .parent_data = mmcc_xo_mmpll0_1_2_gpll0, 526 512 .num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_1_2_gpll0), 527 513 .ops = &clk_rcg2_ops, 528 514 }, ··· 545 531 .freq_tbl = ftbl_camss_jpeg_jpeg0_2_clk, 546 532 .clkr.hw.init = &(struct clk_init_data){ 547 533 .name = "jpeg0_clk_src", 548 - .parent_names = mmcc_xo_mmpll0_1_4_gpll0, 534 + .parent_data = mmcc_xo_mmpll0_1_4_gpll0, 549 535 .num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_1_4_gpll0), 550 536 .ops = &clk_rcg2_ops, 551 537 }, ··· 558 544 .freq_tbl = ftbl_camss_jpeg_jpeg0_2_clk, 559 545 .clkr.hw.init = &(struct clk_init_data){ 560 546 .name = "jpeg1_clk_src", 561 - .parent_names = mmcc_xo_mmpll0_1_4_gpll0, 547 + .parent_data = mmcc_xo_mmpll0_1_4_gpll0, 562 548 .num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_1_4_gpll0), 563 549 .ops = &clk_rcg2_ops, 564 550 }, ··· 571 557 .freq_tbl = ftbl_camss_jpeg_jpeg0_2_clk, 572 558 .clkr.hw.init = &(struct clk_init_data){ 573 559 .name = "jpeg2_clk_src", 574 - .parent_names = mmcc_xo_mmpll0_1_4_gpll0, 560 + .parent_data = mmcc_xo_mmpll0_1_4_gpll0, 575 561 .num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_1_4_gpll0), 576 562 .ops = &clk_rcg2_ops, 577 563 }, ··· 584 570 .parent_map = mmcc_xo_dsi_hdmi_edp_gpll0_map, 585 571 .clkr.hw.init = &(struct clk_init_data){ 586 572 .name = "pclk0_clk_src", 587 - .parent_names = mmcc_xo_dsi_hdmi_edp_gpll0, 573 + .parent_data = mmcc_xo_dsi_hdmi_edp_gpll0, 588 574 .num_parents = ARRAY_SIZE(mmcc_xo_dsi_hdmi_edp_gpll0), 589 575 .ops = &clk_pixel_ops, 590 576 .flags = CLK_SET_RATE_PARENT, ··· 598 584 .parent_map = mmcc_xo_dsi_hdmi_edp_gpll0_map, 599 585 .clkr.hw.init = &(struct clk_init_data){ 600 586 .name = "pclk1_clk_src", 601 - .parent_names = mmcc_xo_dsi_hdmi_edp_gpll0, 587 + .parent_data = mmcc_xo_dsi_hdmi_edp_gpll0, 602 588 .num_parents = ARRAY_SIZE(mmcc_xo_dsi_hdmi_edp_gpll0), 603 589 .ops = &clk_pixel_ops, 604 590 .flags = CLK_SET_RATE_PARENT, ··· 623 609 .freq_tbl = ftbl_venus0_vcodec0_clk, 624 610 .clkr.hw.init = &(struct clk_init_data){ 625 611 .name = "vcodec0_clk_src", 626 - .parent_names = mmcc_xo_mmpll0_1_3_gpll0, 612 + .parent_data = mmcc_xo_mmpll0_1_3_gpll0, 627 613 .num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_1_3_gpll0), 628 614 .ops = &clk_rcg2_ops, 629 615 }, ··· 642 628 .freq_tbl = ftbl_avsync_vp_clk, 643 629 .clkr.hw.init = &(struct clk_init_data){ 644 630 .name = "vp_clk_src", 645 - .parent_names = mmcc_xo_mmpll0_mmpll1_gpll0, 631 + .parent_data = mmcc_xo_mmpll0_mmpll1_gpll0, 646 632 .num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_mmpll1_gpll0), 647 633 .ops = &clk_rcg2_ops, 648 634 }, ··· 661 647 .freq_tbl = ftbl_camss_cci_cci_clk, 662 648 .clkr.hw.init = &(struct clk_init_data){ 663 649 .name = "cci_clk_src", 664 - .parent_names = mmcc_xo_mmpll0_1_4_gpll1_0, 650 + .parent_data = mmcc_xo_mmpll0_1_4_gpll1_0, 665 651 .num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_1_4_gpll1_0), 666 652 .ops = &clk_rcg2_ops, 667 653 }, ··· 685 671 .freq_tbl = ftbl_camss_gp0_1_clk, 686 672 .clkr.hw.init = &(struct clk_init_data){ 687 673 .name = "camss_gp0_clk_src", 688 - .parent_names = mmcc_xo_mmpll0_1_4_gpll1_0_sleep, 674 + .parent_data = mmcc_xo_mmpll0_1_4_gpll1_0_sleep, 689 675 .num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_1_4_gpll1_0_sleep), 690 676 .ops = &clk_rcg2_ops, 691 677 }, ··· 699 685 .freq_tbl = ftbl_camss_gp0_1_clk, 700 686 .clkr.hw.init = &(struct clk_init_data){ 701 687 .name = "camss_gp1_clk_src", 702 - .parent_names = mmcc_xo_mmpll0_1_4_gpll1_0_sleep, 688 + .parent_data = mmcc_xo_mmpll0_1_4_gpll1_0_sleep, 703 689 .num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_1_4_gpll1_0_sleep), 704 690 .ops = &clk_rcg2_ops, 705 691 }, ··· 727 713 .freq_tbl = ftbl_camss_mclk0_3_clk, 728 714 .clkr.hw.init = &(struct clk_init_data){ 729 715 .name = "mclk0_clk_src", 730 - .parent_names = mmcc_xo_mmpll0_1_4_gpll1_0, 716 + .parent_data = mmcc_xo_mmpll0_1_4_gpll1_0, 731 717 .num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_1_4_gpll1_0), 732 718 .ops = &clk_rcg2_ops, 733 719 }, ··· 741 727 .freq_tbl = ftbl_camss_mclk0_3_clk, 742 728 .clkr.hw.init = &(struct clk_init_data){ 743 729 .name = "mclk1_clk_src", 744 - .parent_names = mmcc_xo_mmpll0_1_4_gpll1_0, 730 + .parent_data = mmcc_xo_mmpll0_1_4_gpll1_0, 745 731 .num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_1_4_gpll1_0), 746 732 .ops = &clk_rcg2_ops, 747 733 }, ··· 755 741 .freq_tbl = ftbl_camss_mclk0_3_clk, 756 742 .clkr.hw.init = &(struct clk_init_data){ 757 743 .name = "mclk2_clk_src", 758 - .parent_names = mmcc_xo_mmpll0_1_4_gpll1_0, 744 + .parent_data = mmcc_xo_mmpll0_1_4_gpll1_0, 759 745 .num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_1_4_gpll1_0), 760 746 .ops = &clk_rcg2_ops, 761 747 }, ··· 769 755 .freq_tbl = ftbl_camss_mclk0_3_clk, 770 756 .clkr.hw.init = &(struct clk_init_data){ 771 757 .name = "mclk3_clk_src", 772 - .parent_names = mmcc_xo_mmpll0_1_4_gpll1_0, 758 + .parent_data = mmcc_xo_mmpll0_1_4_gpll1_0, 773 759 .num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_1_4_gpll1_0), 774 760 .ops = &clk_rcg2_ops, 775 761 }, ··· 788 774 .freq_tbl = ftbl_camss_phy0_2_csi0_2phytimer_clk, 789 775 .clkr.hw.init = &(struct clk_init_data){ 790 776 .name = "csi0phytimer_clk_src", 791 - .parent_names = mmcc_xo_mmpll0_1_4_gpll0, 777 + .parent_data = mmcc_xo_mmpll0_1_4_gpll0, 792 778 .num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_1_4_gpll0), 793 779 .ops = &clk_rcg2_ops, 794 780 }, ··· 801 787 .freq_tbl = ftbl_camss_phy0_2_csi0_2phytimer_clk, 802 788 .clkr.hw.init = &(struct clk_init_data){ 803 789 .name = "csi1phytimer_clk_src", 804 - .parent_names = mmcc_xo_mmpll0_mmpll1_gpll0, 790 + .parent_data = mmcc_xo_mmpll0_mmpll1_gpll0, 805 791 .num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_mmpll1_gpll0), 806 792 .ops = &clk_rcg2_ops, 807 793 }, ··· 814 800 .freq_tbl = ftbl_camss_phy0_2_csi0_2phytimer_clk, 815 801 .clkr.hw.init = &(struct clk_init_data){ 816 802 .name = "csi2phytimer_clk_src", 817 - .parent_names = mmcc_xo_mmpll0_1_4_gpll0, 803 + .parent_data = mmcc_xo_mmpll0_1_4_gpll0, 818 804 .num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_1_4_gpll0), 819 805 .ops = &clk_rcg2_ops, 820 806 }, ··· 837 823 .freq_tbl = ftbl_camss_vfe_cpp_clk, 838 824 .clkr.hw.init = &(struct clk_init_data){ 839 825 .name = "cpp_clk_src", 840 - .parent_names = mmcc_xo_mmpll0_1_4_gpll0, 826 + .parent_data = mmcc_xo_mmpll0_1_4_gpll0, 841 827 .num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_1_4_gpll0), 842 828 .ops = &clk_rcg2_ops, 843 829 }, ··· 849 835 .parent_map = mmcc_xo_dsibyte_hdmi_edp_gpll0_map, 850 836 .clkr.hw.init = &(struct clk_init_data){ 851 837 .name = "byte0_clk_src", 852 - .parent_names = mmcc_xo_dsibyte_hdmi_edp_gpll0, 838 + .parent_data = mmcc_xo_dsibyte_hdmi_edp_gpll0, 853 839 .num_parents = ARRAY_SIZE(mmcc_xo_dsibyte_hdmi_edp_gpll0), 854 840 .ops = &clk_byte2_ops, 855 841 .flags = CLK_SET_RATE_PARENT, ··· 862 848 .parent_map = mmcc_xo_dsibyte_hdmi_edp_gpll0_map, 863 849 .clkr.hw.init = &(struct clk_init_data){ 864 850 .name = "byte1_clk_src", 865 - .parent_names = mmcc_xo_dsibyte_hdmi_edp_gpll0, 851 + .parent_data = mmcc_xo_dsibyte_hdmi_edp_gpll0, 866 852 .num_parents = ARRAY_SIZE(mmcc_xo_dsibyte_hdmi_edp_gpll0), 867 853 .ops = &clk_byte2_ops, 868 854 .flags = CLK_SET_RATE_PARENT, ··· 881 867 .freq_tbl = ftbl_mdss_edpaux_clk, 882 868 .clkr.hw.init = &(struct clk_init_data){ 883 869 .name = "edpaux_clk_src", 884 - .parent_names = mmcc_xo_mmpll0_mmpll1_gpll0, 870 + .parent_data = mmcc_xo_mmpll0_mmpll1_gpll0, 885 871 .num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_mmpll1_gpll0), 886 872 .ops = &clk_rcg2_ops, 887 873 }, ··· 900 886 .freq_tbl = ftbl_mdss_edplink_clk, 901 887 .clkr.hw.init = &(struct clk_init_data){ 902 888 .name = "edplink_clk_src", 903 - .parent_names = mmcc_xo_dsi_hdmi_edp_gpll0, 889 + .parent_data = mmcc_xo_dsi_hdmi_edp_gpll0, 904 890 .num_parents = ARRAY_SIZE(mmcc_xo_dsi_hdmi_edp_gpll0), 905 891 .ops = &clk_rcg2_ops, 906 892 .flags = CLK_SET_RATE_PARENT, ··· 920 906 .freq_tbl = edp_pixel_freq_tbl, 921 907 .clkr.hw.init = &(struct clk_init_data){ 922 908 .name = "edppixel_clk_src", 923 - .parent_names = mmcc_xo_dsi_hdmi_edp, 909 + .parent_data = mmcc_xo_dsi_hdmi_edp, 924 910 .num_parents = ARRAY_SIZE(mmcc_xo_dsi_hdmi_edp), 925 911 .ops = &clk_edp_pixel_ops, 926 912 }, ··· 938 924 .freq_tbl = ftbl_mdss_esc0_1_clk, 939 925 .clkr.hw.init = &(struct clk_init_data){ 940 926 .name = "esc0_clk_src", 941 - .parent_names = mmcc_xo_dsibyte_hdmi_edp_gpll0, 927 + .parent_data = mmcc_xo_dsibyte_hdmi_edp_gpll0, 942 928 .num_parents = ARRAY_SIZE(mmcc_xo_dsibyte_hdmi_edp_gpll0), 943 929 .ops = &clk_rcg2_ops, 944 930 }, ··· 951 937 .freq_tbl = ftbl_mdss_esc0_1_clk, 952 938 .clkr.hw.init = &(struct clk_init_data){ 953 939 .name = "esc1_clk_src", 954 - .parent_names = mmcc_xo_dsibyte_hdmi_edp_gpll0, 940 + .parent_data = mmcc_xo_dsibyte_hdmi_edp_gpll0, 955 941 .num_parents = ARRAY_SIZE(mmcc_xo_dsibyte_hdmi_edp_gpll0), 956 942 .ops = &clk_rcg2_ops, 957 943 }, ··· 969 955 .freq_tbl = extpclk_freq_tbl, 970 956 .clkr.hw.init = &(struct clk_init_data){ 971 957 .name = "extpclk_clk_src", 972 - .parent_names = mmcc_xo_dsi_hdmi_edp_gpll0, 958 + .parent_data = mmcc_xo_dsi_hdmi_edp_gpll0, 973 959 .num_parents = ARRAY_SIZE(mmcc_xo_dsi_hdmi_edp_gpll0), 974 960 .ops = &clk_byte_ops, 975 961 .flags = CLK_SET_RATE_PARENT, ··· 988 974 .freq_tbl = ftbl_mdss_hdmi_clk, 989 975 .clkr.hw.init = &(struct clk_init_data){ 990 976 .name = "hdmi_clk_src", 991 - .parent_names = mmcc_xo_mmpll0_mmpll1_gpll0, 977 + .parent_data = mmcc_xo_mmpll0_mmpll1_gpll0, 992 978 .num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_mmpll1_gpll0), 993 979 .ops = &clk_rcg2_ops, 994 980 }, ··· 1006 992 .freq_tbl = ftbl_mdss_vsync_clk, 1007 993 .clkr.hw.init = &(struct clk_init_data){ 1008 994 .name = "vsync_clk_src", 1009 - .parent_names = mmcc_xo_mmpll0_mmpll1_gpll0, 995 + .parent_data = mmcc_xo_mmpll0_mmpll1_gpll0, 1010 996 .num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_mmpll1_gpll0), 1011 997 .ops = &clk_rcg2_ops, 1012 998 }, ··· 1024 1010 .freq_tbl = ftbl_mmss_rbcpr_clk, 1025 1011 .clkr.hw.init = &(struct clk_init_data){ 1026 1012 .name = "rbcpr_clk_src", 1027 - .parent_names = mmcc_xo_mmpll0_mmpll1_gpll0, 1013 + .parent_data = mmcc_xo_mmpll0_mmpll1_gpll0, 1028 1014 .num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_mmpll1_gpll0), 1029 1015 .ops = &clk_rcg2_ops, 1030 1016 }, ··· 1042 1028 .freq_tbl = ftbl_oxili_rbbmtimer_clk, 1043 1029 .clkr.hw.init = &(struct clk_init_data){ 1044 1030 .name = "rbbmtimer_clk_src", 1045 - .parent_names = mmcc_xo_mmpll0_mmpll1_gpll0, 1031 + .parent_data = mmcc_xo_mmpll0_mmpll1_gpll0, 1046 1032 .num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_mmpll1_gpll0), 1047 1033 .ops = &clk_rcg2_ops, 1048 1034 }, ··· 1065 1051 .freq_tbl = ftbl_vpu_maple_clk, 1066 1052 .clkr.hw.init = &(struct clk_init_data){ 1067 1053 .name = "maple_clk_src", 1068 - .parent_names = mmcc_xo_mmpll0_mmpll1_gpll0, 1054 + .parent_data = mmcc_xo_mmpll0_mmpll1_gpll0, 1069 1055 .num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_mmpll1_gpll0), 1070 1056 .ops = &clk_rcg2_ops, 1071 1057 }, ··· 1087 1073 .freq_tbl = ftbl_vpu_vdp_clk, 1088 1074 .clkr.hw.init = &(struct clk_init_data){ 1089 1075 .name = "vdp_clk_src", 1090 - .parent_names = mmcc_xo_mmpll0_mmpll1_gpll0, 1076 + .parent_data = mmcc_xo_mmpll0_mmpll1_gpll0, 1091 1077 .num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_mmpll1_gpll0), 1092 1078 .ops = &clk_rcg2_ops, 1093 1079 }, ··· 1106 1092 .freq_tbl = ftbl_vpu_bus_clk, 1107 1093 .clkr.hw.init = &(struct clk_init_data){ 1108 1094 .name = "vpu_bus_clk_src", 1109 - .parent_names = mmcc_xo_mmpll0_mmpll1_gpll0, 1095 + .parent_data = mmcc_xo_mmpll0_mmpll1_gpll0, 1110 1096 .num_parents = ARRAY_SIZE(mmcc_xo_mmpll0_mmpll1_gpll0), 1111 1097 .ops = &clk_rcg2_ops, 1112 1098 }, ··· 1119 1105 .enable_mask = BIT(0), 1120 1106 .hw.init = &(struct clk_init_data){ 1121 1107 .name = "mmss_cxo_clk", 1122 - .parent_names = (const char *[]){ "xo" }, 1108 + .parent_data = (const struct clk_parent_data[]){ 1109 + { .fw_name = "xo", .name = "xo_board" }, 1110 + }, 1123 1111 .num_parents = 1, 1124 1112 .flags = CLK_SET_RATE_PARENT, 1125 1113 .ops = &clk_branch2_ops, ··· 1136 1120 .enable_mask = BIT(0), 1137 1121 .hw.init = &(struct clk_init_data){ 1138 1122 .name = "mmss_sleepclk_clk", 1139 - .parent_names = (const char *[]){ 1140 - "sleep_clk_src", 1123 + .parent_data = (const struct clk_parent_data[]){ 1124 + { .fw_name = "sleep_clk", .name = "sleep_clk" }, 1141 1125 }, 1142 1126 .num_parents = 1, 1143 1127 .flags = CLK_SET_RATE_PARENT, ··· 1153 1137 .enable_mask = BIT(0), 1154 1138 .hw.init = &(struct clk_init_data){ 1155 1139 .name = "avsync_ahb_clk", 1156 - .parent_names = (const char *[]){ 1157 - "mmss_ahb_clk_src", 1140 + .parent_hws = (const struct clk_hw*[]){ 1141 + &mmss_ahb_clk_src.clkr.hw 1158 1142 }, 1159 1143 .num_parents = 1, 1160 1144 .flags = CLK_SET_RATE_PARENT, ··· 1170 1154 .enable_mask = BIT(0), 1171 1155 .hw.init = &(struct clk_init_data){ 1172 1156 .name = "avsync_edppixel_clk", 1173 - .parent_names = (const char *[]){ 1174 - "edppixel_clk_src", 1157 + .parent_hws = (const struct clk_hw*[]){ 1158 + &edppixel_clk_src.clkr.hw 1175 1159 }, 1176 1160 .num_parents = 1, 1177 1161 .flags = CLK_SET_RATE_PARENT, ··· 1187 1171 .enable_mask = BIT(0), 1188 1172 .hw.init = &(struct clk_init_data){ 1189 1173 .name = "avsync_extpclk_clk", 1190 - .parent_names = (const char *[]){ 1191 - "extpclk_clk_src", 1174 + .parent_hws = (const struct clk_hw*[]){ 1175 + &extpclk_clk_src.clkr.hw 1192 1176 }, 1193 1177 .num_parents = 1, 1194 1178 .flags = CLK_SET_RATE_PARENT, ··· 1204 1188 .enable_mask = BIT(0), 1205 1189 .hw.init = &(struct clk_init_data){ 1206 1190 .name = "avsync_pclk0_clk", 1207 - .parent_names = (const char *[]){ 1208 - "pclk0_clk_src", 1191 + .parent_hws = (const struct clk_hw*[]){ 1192 + &pclk0_clk_src.clkr.hw 1209 1193 }, 1210 1194 .num_parents = 1, 1211 1195 .flags = CLK_SET_RATE_PARENT, ··· 1221 1205 .enable_mask = BIT(0), 1222 1206 .hw.init = &(struct clk_init_data){ 1223 1207 .name = "avsync_pclk1_clk", 1224 - .parent_names = (const char *[]){ 1225 - "pclk1_clk_src", 1208 + .parent_hws = (const struct clk_hw*[]){ 1209 + &pclk1_clk_src.clkr.hw 1226 1210 }, 1227 1211 .num_parents = 1, 1228 1212 .flags = CLK_SET_RATE_PARENT, ··· 1238 1222 .enable_mask = BIT(0), 1239 1223 .hw.init = &(struct clk_init_data){ 1240 1224 .name = "avsync_vp_clk", 1241 - .parent_names = (const char *[]){ 1242 - "vp_clk_src", 1225 + .parent_hws = (const struct clk_hw*[]){ 1226 + &vp_clk_src.clkr.hw 1243 1227 }, 1244 1228 .num_parents = 1, 1245 1229 .flags = CLK_SET_RATE_PARENT, ··· 1255 1239 .enable_mask = BIT(0), 1256 1240 .hw.init = &(struct clk_init_data){ 1257 1241 .name = "camss_ahb_clk", 1258 - .parent_names = (const char *[]){ 1259 - "mmss_ahb_clk_src", 1242 + .parent_hws = (const struct clk_hw*[]){ 1243 + &mmss_ahb_clk_src.clkr.hw 1260 1244 }, 1261 1245 .num_parents = 1, 1262 1246 .flags = CLK_SET_RATE_PARENT, ··· 1272 1256 .enable_mask = BIT(0), 1273 1257 .hw.init = &(struct clk_init_data){ 1274 1258 .name = "camss_cci_cci_ahb_clk", 1275 - .parent_names = (const char *[]){ 1276 - "mmss_ahb_clk_src", 1259 + .parent_hws = (const struct clk_hw*[]){ 1260 + &mmss_ahb_clk_src.clkr.hw 1277 1261 }, 1278 1262 .num_parents = 1, 1279 1263 .ops = &clk_branch2_ops, ··· 1288 1272 .enable_mask = BIT(0), 1289 1273 .hw.init = &(struct clk_init_data){ 1290 1274 .name = "camss_cci_cci_clk", 1291 - .parent_names = (const char *[]){ 1292 - "cci_clk_src", 1275 + .parent_hws = (const struct clk_hw*[]){ 1276 + &cci_clk_src.clkr.hw 1293 1277 }, 1294 1278 .num_parents = 1, 1295 1279 .flags = CLK_SET_RATE_PARENT, ··· 1305 1289 .enable_mask = BIT(0), 1306 1290 .hw.init = &(struct clk_init_data){ 1307 1291 .name = "camss_csi0_ahb_clk", 1308 - .parent_names = (const char *[]){ 1309 - "mmss_ahb_clk_src", 1292 + .parent_hws = (const struct clk_hw*[]){ 1293 + &mmss_ahb_clk_src.clkr.hw 1310 1294 }, 1311 1295 .num_parents = 1, 1312 1296 .ops = &clk_branch2_ops, ··· 1321 1305 .enable_mask = BIT(0), 1322 1306 .hw.init = &(struct clk_init_data){ 1323 1307 .name = "camss_csi0_clk", 1324 - .parent_names = (const char *[]){ 1325 - "csi0_clk_src", 1308 + .parent_hws = (const struct clk_hw*[]){ 1309 + &csi0_clk_src.clkr.hw 1326 1310 }, 1327 1311 .num_parents = 1, 1328 1312 .flags = CLK_SET_RATE_PARENT, ··· 1338 1322 .enable_mask = BIT(0), 1339 1323 .hw.init = &(struct clk_init_data){ 1340 1324 .name = "camss_csi0phy_clk", 1341 - .parent_names = (const char *[]){ 1342 - "csi0_clk_src", 1325 + .parent_hws = (const struct clk_hw*[]){ 1326 + &csi0_clk_src.clkr.hw 1343 1327 }, 1344 1328 .num_parents = 1, 1345 1329 .flags = CLK_SET_RATE_PARENT, ··· 1355 1339 .enable_mask = BIT(0), 1356 1340 .hw.init = &(struct clk_init_data){ 1357 1341 .name = "camss_csi0pix_clk", 1358 - .parent_names = (const char *[]){ 1359 - "csi0_clk_src", 1342 + .parent_hws = (const struct clk_hw*[]){ 1343 + &csi0_clk_src.clkr.hw 1360 1344 }, 1361 1345 .num_parents = 1, 1362 1346 .flags = CLK_SET_RATE_PARENT, ··· 1372 1356 .enable_mask = BIT(0), 1373 1357 .hw.init = &(struct clk_init_data){ 1374 1358 .name = "camss_csi0rdi_clk", 1375 - .parent_names = (const char *[]){ 1376 - "csi0_clk_src", 1359 + .parent_hws = (const struct clk_hw*[]){ 1360 + &csi0_clk_src.clkr.hw 1377 1361 }, 1378 1362 .num_parents = 1, 1379 1363 .flags = CLK_SET_RATE_PARENT, ··· 1389 1373 .enable_mask = BIT(0), 1390 1374 .hw.init = &(struct clk_init_data){ 1391 1375 .name = "camss_csi1_ahb_clk", 1392 - .parent_names = (const char *[]){ 1393 - "mmss_ahb_clk_src", 1376 + .parent_hws = (const struct clk_hw*[]){ 1377 + &mmss_ahb_clk_src.clkr.hw 1394 1378 }, 1395 1379 .num_parents = 1, 1396 1380 .flags = CLK_SET_RATE_PARENT, ··· 1406 1390 .enable_mask = BIT(0), 1407 1391 .hw.init = &(struct clk_init_data){ 1408 1392 .name = "camss_csi1_clk", 1409 - .parent_names = (const char *[]){ 1410 - "csi1_clk_src", 1393 + .parent_hws = (const struct clk_hw*[]){ 1394 + &csi1_clk_src.clkr.hw 1411 1395 }, 1412 1396 .num_parents = 1, 1413 1397 .flags = CLK_SET_RATE_PARENT, ··· 1423 1407 .enable_mask = BIT(0), 1424 1408 .hw.init = &(struct clk_init_data){ 1425 1409 .name = "camss_csi1phy_clk", 1426 - .parent_names = (const char *[]){ 1427 - "csi1_clk_src", 1410 + .parent_hws = (const struct clk_hw*[]){ 1411 + &csi1_clk_src.clkr.hw 1428 1412 }, 1429 1413 .num_parents = 1, 1430 1414 .flags = CLK_SET_RATE_PARENT, ··· 1440 1424 .enable_mask = BIT(0), 1441 1425 .hw.init = &(struct clk_init_data){ 1442 1426 .name = "camss_csi1pix_clk", 1443 - .parent_names = (const char *[]){ 1444 - "csi1_clk_src", 1427 + .parent_hws = (const struct clk_hw*[]){ 1428 + &csi1_clk_src.clkr.hw 1445 1429 }, 1446 1430 .num_parents = 1, 1447 1431 .flags = CLK_SET_RATE_PARENT, ··· 1457 1441 .enable_mask = BIT(0), 1458 1442 .hw.init = &(struct clk_init_data){ 1459 1443 .name = "camss_csi1rdi_clk", 1460 - .parent_names = (const char *[]){ 1461 - "csi1_clk_src", 1444 + .parent_hws = (const struct clk_hw*[]){ 1445 + &csi1_clk_src.clkr.hw 1462 1446 }, 1463 1447 .num_parents = 1, 1464 1448 .flags = CLK_SET_RATE_PARENT, ··· 1474 1458 .enable_mask = BIT(0), 1475 1459 .hw.init = &(struct clk_init_data){ 1476 1460 .name = "camss_csi2_ahb_clk", 1477 - .parent_names = (const char *[]){ 1478 - "mmss_ahb_clk_src", 1461 + .parent_hws = (const struct clk_hw*[]){ 1462 + &mmss_ahb_clk_src.clkr.hw 1479 1463 }, 1480 1464 .num_parents = 1, 1481 1465 .ops = &clk_branch2_ops, ··· 1490 1474 .enable_mask = BIT(0), 1491 1475 .hw.init = &(struct clk_init_data){ 1492 1476 .name = "camss_csi2_clk", 1493 - .parent_names = (const char *[]){ 1494 - "csi2_clk_src", 1477 + .parent_hws = (const struct clk_hw*[]){ 1478 + &csi2_clk_src.clkr.hw 1495 1479 }, 1496 1480 .num_parents = 1, 1497 1481 .flags = CLK_SET_RATE_PARENT, ··· 1507 1491 .enable_mask = BIT(0), 1508 1492 .hw.init = &(struct clk_init_data){ 1509 1493 .name = "camss_csi2phy_clk", 1510 - .parent_names = (const char *[]){ 1511 - "csi2_clk_src", 1494 + .parent_hws = (const struct clk_hw*[]){ 1495 + &csi2_clk_src.clkr.hw 1512 1496 }, 1513 1497 .num_parents = 1, 1514 1498 .flags = CLK_SET_RATE_PARENT, ··· 1524 1508 .enable_mask = BIT(0), 1525 1509 .hw.init = &(struct clk_init_data){ 1526 1510 .name = "camss_csi2pix_clk", 1527 - .parent_names = (const char *[]){ 1528 - "csi2_clk_src", 1511 + .parent_hws = (const struct clk_hw*[]){ 1512 + &csi2_clk_src.clkr.hw 1529 1513 }, 1530 1514 .num_parents = 1, 1531 1515 .flags = CLK_SET_RATE_PARENT, ··· 1541 1525 .enable_mask = BIT(0), 1542 1526 .hw.init = &(struct clk_init_data){ 1543 1527 .name = "camss_csi2rdi_clk", 1544 - .parent_names = (const char *[]){ 1545 - "csi2_clk_src", 1528 + .parent_hws = (const struct clk_hw*[]){ 1529 + &csi2_clk_src.clkr.hw 1546 1530 }, 1547 1531 .num_parents = 1, 1548 1532 .flags = CLK_SET_RATE_PARENT, ··· 1558 1542 .enable_mask = BIT(0), 1559 1543 .hw.init = &(struct clk_init_data){ 1560 1544 .name = "camss_csi3_ahb_clk", 1561 - .parent_names = (const char *[]){ 1562 - "mmss_ahb_clk_src", 1545 + .parent_hws = (const struct clk_hw*[]){ 1546 + &mmss_ahb_clk_src.clkr.hw 1563 1547 }, 1564 1548 .num_parents = 1, 1565 1549 .ops = &clk_branch2_ops, ··· 1574 1558 .enable_mask = BIT(0), 1575 1559 .hw.init = &(struct clk_init_data){ 1576 1560 .name = "camss_csi3_clk", 1577 - .parent_names = (const char *[]){ 1578 - "csi3_clk_src", 1561 + .parent_hws = (const struct clk_hw*[]){ 1562 + &csi3_clk_src.clkr.hw 1579 1563 }, 1580 1564 .num_parents = 1, 1581 1565 .flags = CLK_SET_RATE_PARENT, ··· 1591 1575 .enable_mask = BIT(0), 1592 1576 .hw.init = &(struct clk_init_data){ 1593 1577 .name = "camss_csi3phy_clk", 1594 - .parent_names = (const char *[]){ 1595 - "csi3_clk_src", 1578 + .parent_hws = (const struct clk_hw*[]){ 1579 + &csi3_clk_src.clkr.hw 1596 1580 }, 1597 1581 .num_parents = 1, 1598 1582 .flags = CLK_SET_RATE_PARENT, ··· 1608 1592 .enable_mask = BIT(0), 1609 1593 .hw.init = &(struct clk_init_data){ 1610 1594 .name = "camss_csi3pix_clk", 1611 - .parent_names = (const char *[]){ 1612 - "csi3_clk_src", 1595 + .parent_hws = (const struct clk_hw*[]){ 1596 + &csi3_clk_src.clkr.hw 1613 1597 }, 1614 1598 .num_parents = 1, 1615 1599 .flags = CLK_SET_RATE_PARENT, ··· 1625 1609 .enable_mask = BIT(0), 1626 1610 .hw.init = &(struct clk_init_data){ 1627 1611 .name = "camss_csi3rdi_clk", 1628 - .parent_names = (const char *[]){ 1629 - "csi3_clk_src", 1612 + .parent_hws = (const struct clk_hw*[]){ 1613 + &csi3_clk_src.clkr.hw 1630 1614 }, 1631 1615 .num_parents = 1, 1632 1616 .flags = CLK_SET_RATE_PARENT, ··· 1642 1626 .enable_mask = BIT(0), 1643 1627 .hw.init = &(struct clk_init_data){ 1644 1628 .name = "camss_csi_vfe0_clk", 1645 - .parent_names = (const char *[]){ 1646 - "vfe0_clk_src", 1629 + .parent_hws = (const struct clk_hw*[]){ 1630 + &vfe0_clk_src.clkr.hw 1647 1631 }, 1648 1632 .num_parents = 1, 1649 1633 .flags = CLK_SET_RATE_PARENT, ··· 1659 1643 .enable_mask = BIT(0), 1660 1644 .hw.init = &(struct clk_init_data){ 1661 1645 .name = "camss_csi_vfe1_clk", 1662 - .parent_names = (const char *[]){ 1663 - "vfe1_clk_src", 1646 + .parent_hws = (const struct clk_hw*[]){ 1647 + &vfe1_clk_src.clkr.hw 1664 1648 }, 1665 1649 .num_parents = 1, 1666 1650 .flags = CLK_SET_RATE_PARENT, ··· 1676 1660 .enable_mask = BIT(0), 1677 1661 .hw.init = &(struct clk_init_data){ 1678 1662 .name = "camss_gp0_clk", 1679 - .parent_names = (const char *[]){ 1680 - "camss_gp0_clk_src", 1663 + .parent_hws = (const struct clk_hw*[]){ 1664 + &camss_gp0_clk_src.clkr.hw 1681 1665 }, 1682 1666 .num_parents = 1, 1683 1667 .flags = CLK_SET_RATE_PARENT, ··· 1693 1677 .enable_mask = BIT(0), 1694 1678 .hw.init = &(struct clk_init_data){ 1695 1679 .name = "camss_gp1_clk", 1696 - .parent_names = (const char *[]){ 1697 - "camss_gp1_clk_src", 1680 + .parent_hws = (const struct clk_hw*[]){ 1681 + &camss_gp1_clk_src.clkr.hw 1698 1682 }, 1699 1683 .num_parents = 1, 1700 1684 .flags = CLK_SET_RATE_PARENT, ··· 1710 1694 .enable_mask = BIT(0), 1711 1695 .hw.init = &(struct clk_init_data){ 1712 1696 .name = "camss_ispif_ahb_clk", 1713 - .parent_names = (const char *[]){ 1714 - "mmss_ahb_clk_src", 1697 + .parent_hws = (const struct clk_hw*[]){ 1698 + &mmss_ahb_clk_src.clkr.hw 1715 1699 }, 1716 1700 .num_parents = 1, 1717 1701 .flags = CLK_SET_RATE_PARENT, ··· 1727 1711 .enable_mask = BIT(0), 1728 1712 .hw.init = &(struct clk_init_data){ 1729 1713 .name = "camss_jpeg_jpeg0_clk", 1730 - .parent_names = (const char *[]){ 1731 - "jpeg0_clk_src", 1714 + .parent_hws = (const struct clk_hw*[]){ 1715 + &jpeg0_clk_src.clkr.hw 1732 1716 }, 1733 1717 .num_parents = 1, 1734 1718 .flags = CLK_SET_RATE_PARENT, ··· 1744 1728 .enable_mask = BIT(0), 1745 1729 .hw.init = &(struct clk_init_data){ 1746 1730 .name = "camss_jpeg_jpeg1_clk", 1747 - .parent_names = (const char *[]){ 1748 - "jpeg1_clk_src", 1731 + .parent_hws = (const struct clk_hw*[]){ 1732 + &jpeg1_clk_src.clkr.hw 1749 1733 }, 1750 1734 .num_parents = 1, 1751 1735 .flags = CLK_SET_RATE_PARENT, ··· 1761 1745 .enable_mask = BIT(0), 1762 1746 .hw.init = &(struct clk_init_data){ 1763 1747 .name = "camss_jpeg_jpeg2_clk", 1764 - .parent_names = (const char *[]){ 1765 - "jpeg2_clk_src", 1748 + .parent_hws = (const struct clk_hw*[]){ 1749 + &jpeg2_clk_src.clkr.hw 1766 1750 }, 1767 1751 .num_parents = 1, 1768 1752 .flags = CLK_SET_RATE_PARENT, ··· 1778 1762 .enable_mask = BIT(0), 1779 1763 .hw.init = &(struct clk_init_data){ 1780 1764 .name = "camss_jpeg_jpeg_ahb_clk", 1781 - .parent_names = (const char *[]){ 1782 - "mmss_ahb_clk_src", 1765 + .parent_hws = (const struct clk_hw*[]){ 1766 + &mmss_ahb_clk_src.clkr.hw 1783 1767 }, 1784 1768 .num_parents = 1, 1785 1769 .ops = &clk_branch2_ops, ··· 1794 1778 .enable_mask = BIT(0), 1795 1779 .hw.init = &(struct clk_init_data){ 1796 1780 .name = "camss_jpeg_jpeg_axi_clk", 1797 - .parent_names = (const char *[]){ 1798 - "mmss_axi_clk_src", 1781 + .parent_hws = (const struct clk_hw*[]){ 1782 + &mmss_axi_clk_src.clkr.hw 1799 1783 }, 1800 1784 .num_parents = 1, 1801 1785 .ops = &clk_branch2_ops, ··· 1810 1794 .enable_mask = BIT(0), 1811 1795 .hw.init = &(struct clk_init_data){ 1812 1796 .name = "camss_mclk0_clk", 1813 - .parent_names = (const char *[]){ 1814 - "mclk0_clk_src", 1797 + .parent_hws = (const struct clk_hw*[]){ 1798 + &mclk0_clk_src.clkr.hw 1815 1799 }, 1816 1800 .num_parents = 1, 1817 1801 .flags = CLK_SET_RATE_PARENT, ··· 1827 1811 .enable_mask = BIT(0), 1828 1812 .hw.init = &(struct clk_init_data){ 1829 1813 .name = "camss_mclk1_clk", 1830 - .parent_names = (const char *[]){ 1831 - "mclk1_clk_src", 1814 + .parent_hws = (const struct clk_hw*[]){ 1815 + &mclk1_clk_src.clkr.hw 1832 1816 }, 1833 1817 .num_parents = 1, 1834 1818 .flags = CLK_SET_RATE_PARENT, ··· 1844 1828 .enable_mask = BIT(0), 1845 1829 .hw.init = &(struct clk_init_data){ 1846 1830 .name = "camss_mclk2_clk", 1847 - .parent_names = (const char *[]){ 1848 - "mclk2_clk_src", 1831 + .parent_hws = (const struct clk_hw*[]){ 1832 + &mclk2_clk_src.clkr.hw 1849 1833 }, 1850 1834 .num_parents = 1, 1851 1835 .flags = CLK_SET_RATE_PARENT, ··· 1861 1845 .enable_mask = BIT(0), 1862 1846 .hw.init = &(struct clk_init_data){ 1863 1847 .name = "camss_mclk3_clk", 1864 - .parent_names = (const char *[]){ 1865 - "mclk3_clk_src", 1848 + .parent_hws = (const struct clk_hw*[]){ 1849 + &mclk3_clk_src.clkr.hw 1866 1850 }, 1867 1851 .num_parents = 1, 1868 1852 .flags = CLK_SET_RATE_PARENT, ··· 1878 1862 .enable_mask = BIT(0), 1879 1863 .hw.init = &(struct clk_init_data){ 1880 1864 .name = "camss_micro_ahb_clk", 1881 - .parent_names = (const char *[]){ 1882 - "mmss_ahb_clk_src", 1865 + .parent_hws = (const struct clk_hw*[]){ 1866 + &mmss_ahb_clk_src.clkr.hw 1883 1867 }, 1884 1868 .num_parents = 1, 1885 1869 .ops = &clk_branch2_ops, ··· 1894 1878 .enable_mask = BIT(0), 1895 1879 .hw.init = &(struct clk_init_data){ 1896 1880 .name = "camss_phy0_csi0phytimer_clk", 1897 - .parent_names = (const char *[]){ 1898 - "csi0phytimer_clk_src", 1881 + .parent_hws = (const struct clk_hw*[]){ 1882 + &csi0phytimer_clk_src.clkr.hw 1899 1883 }, 1900 1884 .num_parents = 1, 1901 1885 .flags = CLK_SET_RATE_PARENT, ··· 1911 1895 .enable_mask = BIT(0), 1912 1896 .hw.init = &(struct clk_init_data){ 1913 1897 .name = "camss_phy1_csi1phytimer_clk", 1914 - .parent_names = (const char *[]){ 1915 - "csi1phytimer_clk_src", 1898 + .parent_hws = (const struct clk_hw*[]){ 1899 + &csi1phytimer_clk_src.clkr.hw 1916 1900 }, 1917 1901 .num_parents = 1, 1918 1902 .flags = CLK_SET_RATE_PARENT, ··· 1928 1912 .enable_mask = BIT(0), 1929 1913 .hw.init = &(struct clk_init_data){ 1930 1914 .name = "camss_phy2_csi2phytimer_clk", 1931 - .parent_names = (const char *[]){ 1932 - "csi2phytimer_clk_src", 1915 + .parent_hws = (const struct clk_hw*[]){ 1916 + &csi2phytimer_clk_src.clkr.hw 1933 1917 }, 1934 1918 .num_parents = 1, 1935 1919 .flags = CLK_SET_RATE_PARENT, ··· 1945 1929 .enable_mask = BIT(0), 1946 1930 .hw.init = &(struct clk_init_data){ 1947 1931 .name = "camss_top_ahb_clk", 1948 - .parent_names = (const char *[]){ 1949 - "mmss_ahb_clk_src", 1932 + .parent_hws = (const struct clk_hw*[]){ 1933 + &mmss_ahb_clk_src.clkr.hw 1950 1934 }, 1951 1935 .num_parents = 1, 1952 1936 .flags = CLK_SET_RATE_PARENT, ··· 1962 1946 .enable_mask = BIT(0), 1963 1947 .hw.init = &(struct clk_init_data){ 1964 1948 .name = "camss_vfe_cpp_ahb_clk", 1965 - .parent_names = (const char *[]){ 1966 - "mmss_ahb_clk_src", 1949 + .parent_hws = (const struct clk_hw*[]){ 1950 + &mmss_ahb_clk_src.clkr.hw 1967 1951 }, 1968 1952 .num_parents = 1, 1969 1953 .flags = CLK_SET_RATE_PARENT, ··· 1979 1963 .enable_mask = BIT(0), 1980 1964 .hw.init = &(struct clk_init_data){ 1981 1965 .name = "camss_vfe_cpp_clk", 1982 - .parent_names = (const char *[]){ 1983 - "cpp_clk_src", 1966 + .parent_hws = (const struct clk_hw*[]){ 1967 + &cpp_clk_src.clkr.hw 1984 1968 }, 1985 1969 .num_parents = 1, 1986 1970 .flags = CLK_SET_RATE_PARENT, ··· 1996 1980 .enable_mask = BIT(0), 1997 1981 .hw.init = &(struct clk_init_data){ 1998 1982 .name = "camss_vfe_vfe0_clk", 1999 - .parent_names = (const char *[]){ 2000 - "vfe0_clk_src", 1983 + .parent_hws = (const struct clk_hw*[]){ 1984 + &vfe0_clk_src.clkr.hw 2001 1985 }, 2002 1986 .num_parents = 1, 2003 1987 .flags = CLK_SET_RATE_PARENT, ··· 2013 1997 .enable_mask = BIT(0), 2014 1998 .hw.init = &(struct clk_init_data){ 2015 1999 .name = "camss_vfe_vfe1_clk", 2016 - .parent_names = (const char *[]){ 2017 - "vfe1_clk_src", 2000 + .parent_hws = (const struct clk_hw*[]){ 2001 + &vfe1_clk_src.clkr.hw 2018 2002 }, 2019 2003 .num_parents = 1, 2020 2004 .flags = CLK_SET_RATE_PARENT, ··· 2030 2014 .enable_mask = BIT(0), 2031 2015 .hw.init = &(struct clk_init_data){ 2032 2016 .name = "camss_vfe_vfe_ahb_clk", 2033 - .parent_names = (const char *[]){ 2034 - "mmss_ahb_clk_src", 2017 + .parent_hws = (const struct clk_hw*[]){ 2018 + &mmss_ahb_clk_src.clkr.hw 2035 2019 }, 2036 2020 .num_parents = 1, 2037 2021 .flags = CLK_SET_RATE_PARENT, ··· 2047 2031 .enable_mask = BIT(0), 2048 2032 .hw.init = &(struct clk_init_data){ 2049 2033 .name = "camss_vfe_vfe_axi_clk", 2050 - .parent_names = (const char *[]){ 2051 - "mmss_axi_clk_src", 2034 + .parent_hws = (const struct clk_hw*[]){ 2035 + &mmss_axi_clk_src.clkr.hw 2052 2036 }, 2053 2037 .num_parents = 1, 2054 2038 .flags = CLK_SET_RATE_PARENT, ··· 2064 2048 .enable_mask = BIT(0), 2065 2049 .hw.init = &(struct clk_init_data){ 2066 2050 .name = "mdss_ahb_clk", 2067 - .parent_names = (const char *[]){ 2068 - "mmss_ahb_clk_src", 2051 + .parent_hws = (const struct clk_hw*[]){ 2052 + &mmss_ahb_clk_src.clkr.hw 2069 2053 }, 2070 2054 .num_parents = 1, 2071 2055 .flags = CLK_SET_RATE_PARENT, ··· 2081 2065 .enable_mask = BIT(0), 2082 2066 .hw.init = &(struct clk_init_data){ 2083 2067 .name = "mdss_axi_clk", 2084 - .parent_names = (const char *[]){ 2085 - "mmss_axi_clk_src", 2068 + .parent_hws = (const struct clk_hw*[]){ 2069 + &mmss_axi_clk_src.clkr.hw 2086 2070 }, 2087 2071 .num_parents = 1, 2088 2072 .flags = CLK_SET_RATE_PARENT, ··· 2098 2082 .enable_mask = BIT(0), 2099 2083 .hw.init = &(struct clk_init_data){ 2100 2084 .name = "mdss_byte0_clk", 2101 - .parent_names = (const char *[]){ 2102 - "byte0_clk_src", 2085 + .parent_hws = (const struct clk_hw*[]){ 2086 + &byte0_clk_src.clkr.hw 2103 2087 }, 2104 2088 .num_parents = 1, 2105 2089 .flags = CLK_SET_RATE_PARENT, ··· 2115 2099 .enable_mask = BIT(0), 2116 2100 .hw.init = &(struct clk_init_data){ 2117 2101 .name = "mdss_byte1_clk", 2118 - .parent_names = (const char *[]){ 2119 - "byte1_clk_src", 2102 + .parent_hws = (const struct clk_hw*[]){ 2103 + &byte1_clk_src.clkr.hw 2120 2104 }, 2121 2105 .num_parents = 1, 2122 2106 .flags = CLK_SET_RATE_PARENT, ··· 2132 2116 .enable_mask = BIT(0), 2133 2117 .hw.init = &(struct clk_init_data){ 2134 2118 .name = "mdss_edpaux_clk", 2135 - .parent_names = (const char *[]){ 2136 - "edpaux_clk_src", 2119 + .parent_hws = (const struct clk_hw*[]){ 2120 + &edpaux_clk_src.clkr.hw 2137 2121 }, 2138 2122 .num_parents = 1, 2139 2123 .flags = CLK_SET_RATE_PARENT, ··· 2149 2133 .enable_mask = BIT(0), 2150 2134 .hw.init = &(struct clk_init_data){ 2151 2135 .name = "mdss_edplink_clk", 2152 - .parent_names = (const char *[]){ 2153 - "edplink_clk_src", 2136 + .parent_hws = (const struct clk_hw*[]){ 2137 + &edplink_clk_src.clkr.hw 2154 2138 }, 2155 2139 .num_parents = 1, 2156 2140 .flags = CLK_SET_RATE_PARENT, ··· 2166 2150 .enable_mask = BIT(0), 2167 2151 .hw.init = &(struct clk_init_data){ 2168 2152 .name = "mdss_edppixel_clk", 2169 - .parent_names = (const char *[]){ 2170 - "edppixel_clk_src", 2153 + .parent_hws = (const struct clk_hw*[]){ 2154 + &edppixel_clk_src.clkr.hw 2171 2155 }, 2172 2156 .num_parents = 1, 2173 2157 .flags = CLK_SET_RATE_PARENT, ··· 2183 2167 .enable_mask = BIT(0), 2184 2168 .hw.init = &(struct clk_init_data){ 2185 2169 .name = "mdss_esc0_clk", 2186 - .parent_names = (const char *[]){ 2187 - "esc0_clk_src", 2170 + .parent_hws = (const struct clk_hw*[]){ 2171 + &esc0_clk_src.clkr.hw 2188 2172 }, 2189 2173 .num_parents = 1, 2190 2174 .flags = CLK_SET_RATE_PARENT, ··· 2200 2184 .enable_mask = BIT(0), 2201 2185 .hw.init = &(struct clk_init_data){ 2202 2186 .name = "mdss_esc1_clk", 2203 - .parent_names = (const char *[]){ 2204 - "esc1_clk_src", 2187 + .parent_hws = (const struct clk_hw*[]){ 2188 + &esc1_clk_src.clkr.hw 2205 2189 }, 2206 2190 .num_parents = 1, 2207 2191 .flags = CLK_SET_RATE_PARENT, ··· 2217 2201 .enable_mask = BIT(0), 2218 2202 .hw.init = &(struct clk_init_data){ 2219 2203 .name = "mdss_extpclk_clk", 2220 - .parent_names = (const char *[]){ 2221 - "extpclk_clk_src", 2204 + .parent_hws = (const struct clk_hw*[]){ 2205 + &extpclk_clk_src.clkr.hw 2222 2206 }, 2223 2207 .num_parents = 1, 2224 2208 .flags = CLK_SET_RATE_PARENT, ··· 2234 2218 .enable_mask = BIT(0), 2235 2219 .hw.init = &(struct clk_init_data){ 2236 2220 .name = "mdss_hdmi_ahb_clk", 2237 - .parent_names = (const char *[]){ 2238 - "mmss_ahb_clk_src", 2221 + .parent_hws = (const struct clk_hw*[]){ 2222 + &mmss_ahb_clk_src.clkr.hw 2239 2223 }, 2240 2224 .num_parents = 1, 2241 2225 .flags = CLK_SET_RATE_PARENT, ··· 2251 2235 .enable_mask = BIT(0), 2252 2236 .hw.init = &(struct clk_init_data){ 2253 2237 .name = "mdss_hdmi_clk", 2254 - .parent_names = (const char *[]){ 2255 - "hdmi_clk_src", 2238 + .parent_hws = (const struct clk_hw*[]){ 2239 + &hdmi_clk_src.clkr.hw 2256 2240 }, 2257 2241 .num_parents = 1, 2258 2242 .flags = CLK_SET_RATE_PARENT, ··· 2268 2252 .enable_mask = BIT(0), 2269 2253 .hw.init = &(struct clk_init_data){ 2270 2254 .name = "mdss_mdp_clk", 2271 - .parent_names = (const char *[]){ 2272 - "mdp_clk_src", 2255 + .parent_hws = (const struct clk_hw*[]){ 2256 + &mdp_clk_src.clkr.hw 2273 2257 }, 2274 2258 .num_parents = 1, 2275 2259 .flags = CLK_SET_RATE_PARENT, ··· 2285 2269 .enable_mask = BIT(0), 2286 2270 .hw.init = &(struct clk_init_data){ 2287 2271 .name = "mdss_mdp_lut_clk", 2288 - .parent_names = (const char *[]){ 2289 - "mdp_clk_src", 2272 + .parent_hws = (const struct clk_hw*[]){ 2273 + &mdp_clk_src.clkr.hw 2290 2274 }, 2291 2275 .num_parents = 1, 2292 2276 .flags = CLK_SET_RATE_PARENT, ··· 2302 2286 .enable_mask = BIT(0), 2303 2287 .hw.init = &(struct clk_init_data){ 2304 2288 .name = "mdss_pclk0_clk", 2305 - .parent_names = (const char *[]){ 2306 - "pclk0_clk_src", 2289 + .parent_hws = (const struct clk_hw*[]){ 2290 + &pclk0_clk_src.clkr.hw 2307 2291 }, 2308 2292 .num_parents = 1, 2309 2293 .flags = CLK_SET_RATE_PARENT, ··· 2319 2303 .enable_mask = BIT(0), 2320 2304 .hw.init = &(struct clk_init_data){ 2321 2305 .name = "mdss_pclk1_clk", 2322 - .parent_names = (const char *[]){ 2323 - "pclk1_clk_src", 2306 + .parent_hws = (const struct clk_hw*[]){ 2307 + &pclk1_clk_src.clkr.hw 2324 2308 }, 2325 2309 .num_parents = 1, 2326 2310 .flags = CLK_SET_RATE_PARENT, ··· 2336 2320 .enable_mask = BIT(0), 2337 2321 .hw.init = &(struct clk_init_data){ 2338 2322 .name = "mdss_vsync_clk", 2339 - .parent_names = (const char *[]){ 2340 - "vsync_clk_src", 2323 + .parent_hws = (const struct clk_hw*[]){ 2324 + &vsync_clk_src.clkr.hw 2341 2325 }, 2342 2326 .num_parents = 1, 2343 2327 .flags = CLK_SET_RATE_PARENT, ··· 2353 2337 .enable_mask = BIT(0), 2354 2338 .hw.init = &(struct clk_init_data){ 2355 2339 .name = "mmss_rbcpr_ahb_clk", 2356 - .parent_names = (const char *[]){ 2357 - "mmss_ahb_clk_src", 2340 + .parent_hws = (const struct clk_hw*[]){ 2341 + &mmss_ahb_clk_src.clkr.hw 2358 2342 }, 2359 2343 .num_parents = 1, 2360 2344 .flags = CLK_SET_RATE_PARENT, ··· 2370 2354 .enable_mask = BIT(0), 2371 2355 .hw.init = &(struct clk_init_data){ 2372 2356 .name = "mmss_rbcpr_clk", 2373 - .parent_names = (const char *[]){ 2374 - "rbcpr_clk_src", 2357 + .parent_hws = (const struct clk_hw*[]){ 2358 + &rbcpr_clk_src.clkr.hw 2375 2359 }, 2376 2360 .num_parents = 1, 2377 2361 .flags = CLK_SET_RATE_PARENT, ··· 2387 2371 .enable_mask = BIT(0), 2388 2372 .hw.init = &(struct clk_init_data){ 2389 2373 .name = "mmss_misc_ahb_clk", 2390 - .parent_names = (const char *[]){ 2391 - "mmss_ahb_clk_src", 2374 + .parent_hws = (const struct clk_hw*[]){ 2375 + &mmss_ahb_clk_src.clkr.hw 2392 2376 }, 2393 2377 .num_parents = 1, 2394 2378 .flags = CLK_SET_RATE_PARENT, ··· 2404 2388 .enable_mask = BIT(0), 2405 2389 .hw.init = &(struct clk_init_data){ 2406 2390 .name = "mmss_mmssnoc_ahb_clk", 2407 - .parent_names = (const char *[]){ 2408 - "mmss_ahb_clk_src", 2391 + .parent_hws = (const struct clk_hw*[]){ 2392 + &mmss_ahb_clk_src.clkr.hw 2409 2393 }, 2410 2394 .num_parents = 1, 2411 2395 .ops = &clk_branch2_ops, ··· 2421 2405 .enable_mask = BIT(0), 2422 2406 .hw.init = &(struct clk_init_data){ 2423 2407 .name = "mmss_mmssnoc_bto_ahb_clk", 2424 - .parent_names = (const char *[]){ 2425 - "mmss_ahb_clk_src", 2408 + .parent_hws = (const struct clk_hw*[]){ 2409 + &mmss_ahb_clk_src.clkr.hw 2426 2410 }, 2427 2411 .num_parents = 1, 2428 2412 .ops = &clk_branch2_ops, ··· 2438 2422 .enable_mask = BIT(0), 2439 2423 .hw.init = &(struct clk_init_data){ 2440 2424 .name = "mmss_mmssnoc_axi_clk", 2441 - .parent_names = (const char *[]){ 2442 - "mmss_axi_clk_src", 2425 + .parent_hws = (const struct clk_hw*[]){ 2426 + &mmss_axi_clk_src.clkr.hw 2443 2427 }, 2444 2428 .num_parents = 1, 2445 2429 .flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, ··· 2455 2439 .enable_mask = BIT(0), 2456 2440 .hw.init = &(struct clk_init_data){ 2457 2441 .name = "mmss_s0_axi_clk", 2458 - .parent_names = (const char *[]){ 2459 - "mmss_axi_clk_src", 2442 + .parent_hws = (const struct clk_hw*[]){ 2443 + &mmss_axi_clk_src.clkr.hw 2460 2444 }, 2461 2445 .num_parents = 1, 2462 2446 .ops = &clk_branch2_ops, ··· 2472 2456 .enable_mask = BIT(0), 2473 2457 .hw.init = &(struct clk_init_data){ 2474 2458 .name = "ocmemcx_ahb_clk", 2475 - .parent_names = (const char *[]){ 2476 - "mmss_ahb_clk_src", 2459 + .parent_hws = (const struct clk_hw*[]){ 2460 + &mmss_ahb_clk_src.clkr.hw 2477 2461 }, 2478 2462 .num_parents = 1, 2479 2463 .flags = CLK_SET_RATE_PARENT, ··· 2489 2473 .enable_mask = BIT(0), 2490 2474 .hw.init = &(struct clk_init_data){ 2491 2475 .name = "ocmemcx_ocmemnoc_clk", 2492 - .parent_names = (const char *[]){ 2493 - "ocmemnoc_clk_src", 2476 + .parent_hws = (const struct clk_hw*[]){ 2477 + &ocmemnoc_clk_src.clkr.hw 2494 2478 }, 2495 2479 .num_parents = 1, 2496 2480 .flags = CLK_SET_RATE_PARENT, ··· 2506 2490 .enable_mask = BIT(0), 2507 2491 .hw.init = &(struct clk_init_data){ 2508 2492 .name = "oxili_ocmemgx_clk", 2509 - .parent_names = (const char *[]){ 2510 - "gfx3d_clk_src", 2493 + .parent_hws = (const struct clk_hw*[]){ 2494 + &gfx3d_clk_src.clkr.hw 2511 2495 }, 2512 2496 .num_parents = 1, 2513 2497 .flags = CLK_SET_RATE_PARENT, ··· 2523 2507 .enable_mask = BIT(0), 2524 2508 .hw.init = &(struct clk_init_data){ 2525 2509 .name = "oxili_gfx3d_clk", 2526 - .parent_names = (const char *[]){ 2527 - "gfx3d_clk_src", 2510 + .parent_hws = (const struct clk_hw*[]){ 2511 + &gfx3d_clk_src.clkr.hw 2528 2512 }, 2529 2513 .num_parents = 1, 2530 2514 .flags = CLK_SET_RATE_PARENT, ··· 2540 2524 .enable_mask = BIT(0), 2541 2525 .hw.init = &(struct clk_init_data){ 2542 2526 .name = "oxili_rbbmtimer_clk", 2543 - .parent_names = (const char *[]){ 2544 - "rbbmtimer_clk_src", 2527 + .parent_hws = (const struct clk_hw*[]){ 2528 + &rbbmtimer_clk_src.clkr.hw 2545 2529 }, 2546 2530 .num_parents = 1, 2547 2531 .flags = CLK_SET_RATE_PARENT, ··· 2557 2541 .enable_mask = BIT(0), 2558 2542 .hw.init = &(struct clk_init_data){ 2559 2543 .name = "oxilicx_ahb_clk", 2560 - .parent_names = (const char *[]){ 2561 - "mmss_ahb_clk_src", 2544 + .parent_hws = (const struct clk_hw*[]){ 2545 + &mmss_ahb_clk_src.clkr.hw 2562 2546 }, 2563 2547 .num_parents = 1, 2564 2548 .flags = CLK_SET_RATE_PARENT, ··· 2574 2558 .enable_mask = BIT(0), 2575 2559 .hw.init = &(struct clk_init_data){ 2576 2560 .name = "venus0_ahb_clk", 2577 - .parent_names = (const char *[]){ 2578 - "mmss_ahb_clk_src", 2561 + .parent_hws = (const struct clk_hw*[]){ 2562 + &mmss_ahb_clk_src.clkr.hw 2579 2563 }, 2580 2564 .num_parents = 1, 2581 2565 .flags = CLK_SET_RATE_PARENT, ··· 2591 2575 .enable_mask = BIT(0), 2592 2576 .hw.init = &(struct clk_init_data){ 2593 2577 .name = "venus0_axi_clk", 2594 - .parent_names = (const char *[]){ 2595 - "mmss_axi_clk_src", 2578 + .parent_hws = (const struct clk_hw*[]){ 2579 + &mmss_axi_clk_src.clkr.hw 2596 2580 }, 2597 2581 .num_parents = 1, 2598 2582 .flags = CLK_SET_RATE_PARENT, ··· 2608 2592 .enable_mask = BIT(0), 2609 2593 .hw.init = &(struct clk_init_data){ 2610 2594 .name = "venus0_core0_vcodec_clk", 2611 - .parent_names = (const char *[]){ 2612 - "vcodec0_clk_src", 2595 + .parent_hws = (const struct clk_hw*[]){ 2596 + &vcodec0_clk_src.clkr.hw 2613 2597 }, 2614 2598 .num_parents = 1, 2615 2599 .flags = CLK_SET_RATE_PARENT, ··· 2625 2609 .enable_mask = BIT(0), 2626 2610 .hw.init = &(struct clk_init_data){ 2627 2611 .name = "venus0_core1_vcodec_clk", 2628 - .parent_names = (const char *[]){ 2629 - "vcodec0_clk_src", 2612 + .parent_hws = (const struct clk_hw*[]){ 2613 + &vcodec0_clk_src.clkr.hw 2630 2614 }, 2631 2615 .num_parents = 1, 2632 2616 .flags = CLK_SET_RATE_PARENT, ··· 2642 2626 .enable_mask = BIT(0), 2643 2627 .hw.init = &(struct clk_init_data){ 2644 2628 .name = "venus0_ocmemnoc_clk", 2645 - .parent_names = (const char *[]){ 2646 - "ocmemnoc_clk_src", 2629 + .parent_hws = (const struct clk_hw*[]){ 2630 + &ocmemnoc_clk_src.clkr.hw 2647 2631 }, 2648 2632 .num_parents = 1, 2649 2633 .flags = CLK_SET_RATE_PARENT, ··· 2659 2643 .enable_mask = BIT(0), 2660 2644 .hw.init = &(struct clk_init_data){ 2661 2645 .name = "venus0_vcodec0_clk", 2662 - .parent_names = (const char *[]){ 2663 - "vcodec0_clk_src", 2646 + .parent_hws = (const struct clk_hw*[]){ 2647 + &vcodec0_clk_src.clkr.hw 2664 2648 }, 2665 2649 .num_parents = 1, 2666 2650 .flags = CLK_SET_RATE_PARENT, ··· 2676 2660 .enable_mask = BIT(0), 2677 2661 .hw.init = &(struct clk_init_data){ 2678 2662 .name = "vpu_ahb_clk", 2679 - .parent_names = (const char *[]){ 2680 - "mmss_ahb_clk_src", 2663 + .parent_hws = (const struct clk_hw*[]){ 2664 + &mmss_ahb_clk_src.clkr.hw 2681 2665 }, 2682 2666 .num_parents = 1, 2683 2667 .flags = CLK_SET_RATE_PARENT, ··· 2693 2677 .enable_mask = BIT(0), 2694 2678 .hw.init = &(struct clk_init_data){ 2695 2679 .name = "vpu_axi_clk", 2696 - .parent_names = (const char *[]){ 2697 - "mmss_axi_clk_src", 2680 + .parent_hws = (const struct clk_hw*[]){ 2681 + &mmss_axi_clk_src.clkr.hw 2698 2682 }, 2699 2683 .num_parents = 1, 2700 2684 .flags = CLK_SET_RATE_PARENT, ··· 2710 2694 .enable_mask = BIT(0), 2711 2695 .hw.init = &(struct clk_init_data){ 2712 2696 .name = "vpu_bus_clk", 2713 - .parent_names = (const char *[]){ 2714 - "vpu_bus_clk_src", 2697 + .parent_hws = (const struct clk_hw*[]){ 2698 + &vpu_bus_clk_src.clkr.hw 2715 2699 }, 2716 2700 .num_parents = 1, 2717 2701 .flags = CLK_SET_RATE_PARENT, ··· 2727 2711 .enable_mask = BIT(0), 2728 2712 .hw.init = &(struct clk_init_data){ 2729 2713 .name = "vpu_cxo_clk", 2730 - .parent_names = (const char *[]){ "xo" }, 2714 + .parent_data = (const struct clk_parent_data[]){ 2715 + { .fw_name = "xo", .name = "xo_board" }, 2716 + }, 2731 2717 .num_parents = 1, 2732 2718 .flags = CLK_SET_RATE_PARENT, 2733 2719 .ops = &clk_branch2_ops, ··· 2744 2726 .enable_mask = BIT(0), 2745 2727 .hw.init = &(struct clk_init_data){ 2746 2728 .name = "vpu_maple_clk", 2747 - .parent_names = (const char *[]){ 2748 - "maple_clk_src", 2729 + .parent_hws = (const struct clk_hw*[]){ 2730 + &maple_clk_src.clkr.hw 2749 2731 }, 2750 2732 .num_parents = 1, 2751 2733 .flags = CLK_SET_RATE_PARENT, ··· 2761 2743 .enable_mask = BIT(0), 2762 2744 .hw.init = &(struct clk_init_data){ 2763 2745 .name = "vpu_sleep_clk", 2764 - .parent_names = (const char *[]){ 2765 - "sleep_clk_src", 2746 + .parent_data = (const struct clk_parent_data[]){ 2747 + { .fw_name = "sleep_clk", .name = "sleep_clk" }, 2766 2748 }, 2767 2749 .num_parents = 1, 2768 2750 .flags = CLK_SET_RATE_PARENT, ··· 2778 2760 .enable_mask = BIT(0), 2779 2761 .hw.init = &(struct clk_init_data){ 2780 2762 .name = "vpu_vdp_clk", 2781 - .parent_names = (const char *[]){ 2782 - "vdp_clk_src", 2763 + .parent_hws = (const struct clk_hw*[]){ 2764 + &vdp_clk_src.clkr.hw 2783 2765 }, 2784 2766 .num_parents = 1, 2785 2767 .flags = CLK_SET_RATE_PARENT,