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

clk: qcom: gcc-mdm9615: 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 "cxo" to
"cxo_board" to follow the example of other platforms. This switches the
clocks to use DT-provided "cxo_board" clock instead of manually
registered "cxo" clock and allows us to drop the cxo clock.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20230512211727.3445575-8-dmitry.baryshkov@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>

authored by

Dmitry Baryshkov and committed by
Bjorn Andersson
c01c9ed3 1583694b

+124 -82
+124 -82
drivers/clk/qcom/gcc-mdm9615.c
··· 37 37 }, 38 38 }; 39 39 40 + enum { 41 + DT_CXO, 42 + DT_PLL4, 43 + }; 44 + 45 + enum { 46 + P_CXO, 47 + P_PLL8, 48 + P_PLL14, 49 + }; 50 + 51 + static const struct parent_map gcc_cxo_map[] = { 52 + { P_CXO, 0 }, 53 + }; 54 + 55 + static const struct clk_parent_data gcc_cxo[] = { 56 + { .index = DT_CXO, .name = "cxo_board" }, 57 + }; 58 + 40 59 static struct clk_pll pll0 = { 41 60 .l_reg = 0x30c4, 42 61 .m_reg = 0x30c8, ··· 66 47 .status_bit = 16, 67 48 .clkr.hw.init = &(struct clk_init_data){ 68 49 .name = "pll0", 69 - .parent_names = (const char *[]){ "cxo" }, 70 - .num_parents = 1, 50 + .parent_data = gcc_cxo, 51 + .num_parents = ARRAY_SIZE(gcc_cxo), 71 52 .ops = &clk_pll_ops, 72 53 }, 73 54 }; ··· 77 58 .enable_mask = BIT(0), 78 59 .hw.init = &(struct clk_init_data){ 79 60 .name = "pll0_vote", 80 - .parent_names = (const char *[]){ "pll0" }, 61 + .parent_hws = (const struct clk_hw*[]) { 62 + &pll0.clkr.hw, 63 + }, 81 64 .num_parents = 1, 82 65 .ops = &clk_pll_vote_ops, 83 66 }, ··· 90 69 .enable_mask = BIT(4), 91 70 .hw.init = &(struct clk_init_data){ 92 71 .name = "pll4_vote", 93 - .parent_names = (const char *[]){ "pll4" }, 72 + .parent_data = &(const struct clk_parent_data) { 73 + .index = DT_PLL4, .name = "pll4", 74 + }, 94 75 .num_parents = 1, 95 76 .ops = &clk_pll_vote_ops, 96 77 }, ··· 108 85 .status_bit = 16, 109 86 .clkr.hw.init = &(struct clk_init_data){ 110 87 .name = "pll8", 111 - .parent_names = (const char *[]){ "cxo" }, 112 - .num_parents = 1, 88 + .parent_data = gcc_cxo, 89 + .num_parents = ARRAY_SIZE(gcc_cxo), 113 90 .ops = &clk_pll_ops, 114 91 }, 115 92 }; ··· 119 96 .enable_mask = BIT(8), 120 97 .hw.init = &(struct clk_init_data){ 121 98 .name = "pll8_vote", 122 - .parent_names = (const char *[]){ "pll8" }, 99 + .parent_hws = (const struct clk_hw*[]) { 100 + &pll8.clkr.hw, 101 + }, 123 102 .num_parents = 1, 124 103 .ops = &clk_pll_vote_ops, 125 104 }, ··· 137 112 .status_bit = 16, 138 113 .clkr.hw.init = &(struct clk_init_data){ 139 114 .name = "pll14", 140 - .parent_names = (const char *[]){ "cxo" }, 141 - .num_parents = 1, 115 + .parent_data = gcc_cxo, 116 + .num_parents = ARRAY_SIZE(gcc_cxo), 142 117 .ops = &clk_pll_ops, 143 118 }, 144 119 }; ··· 148 123 .enable_mask = BIT(11), 149 124 .hw.init = &(struct clk_init_data){ 150 125 .name = "pll14_vote", 151 - .parent_names = (const char *[]){ "pll14" }, 126 + .parent_hws = (const struct clk_hw*[]) { 127 + &pll14.clkr.hw, 128 + }, 152 129 .num_parents = 1, 153 130 .ops = &clk_pll_vote_ops, 154 131 }, 155 - }; 156 - 157 - enum { 158 - P_CXO, 159 - P_PLL8, 160 - P_PLL14, 161 132 }; 162 133 163 134 static const struct parent_map gcc_cxo_pll8_map[] = { ··· 161 140 { P_PLL8, 3 } 162 141 }; 163 142 164 - static const char * const gcc_cxo_pll8[] = { 165 - "cxo", 166 - "pll8_vote", 143 + static const struct clk_parent_data gcc_cxo_pll8[] = { 144 + { .index = DT_CXO, .name = "cxo_board" }, 145 + { .hw = &pll8_vote.hw }, 167 146 }; 168 147 169 148 static const struct parent_map gcc_cxo_pll14_map[] = { ··· 171 150 { P_PLL14, 4 } 172 151 }; 173 152 174 - static const char * const gcc_cxo_pll14[] = { 175 - "cxo", 176 - "pll14_vote", 177 - }; 178 - 179 - static const struct parent_map gcc_cxo_map[] = { 180 - { P_CXO, 0 }, 181 - }; 182 - 183 - static const char * const gcc_cxo[] = { 184 - "cxo", 153 + static const struct clk_parent_data gcc_cxo_pll14[] = { 154 + { .index = DT_CXO, .name = "cxo_board" }, 155 + { .hw = &pll14_vote.hw }, 185 156 }; 186 157 187 158 static struct freq_tbl clk_tbl_gsbi_uart[] = { ··· 219 206 .enable_mask = BIT(11), 220 207 .hw.init = &(struct clk_init_data){ 221 208 .name = "gsbi1_uart_src", 222 - .parent_names = gcc_cxo_pll8, 209 + .parent_data = gcc_cxo_pll8, 223 210 .num_parents = ARRAY_SIZE(gcc_cxo_pll8), 224 211 .ops = &clk_rcg_ops, 225 212 .flags = CLK_SET_PARENT_GATE, ··· 235 222 .enable_mask = BIT(9), 236 223 .hw.init = &(struct clk_init_data){ 237 224 .name = "gsbi1_uart_clk", 238 - .parent_names = (const char *[]){ 239 - "gsbi1_uart_src", 225 + .parent_hws = (const struct clk_hw*[]) { 226 + &gsbi1_uart_src.clkr.hw, 240 227 }, 241 228 .num_parents = 1, 242 229 .ops = &clk_branch_ops, ··· 270 257 .enable_mask = BIT(11), 271 258 .hw.init = &(struct clk_init_data){ 272 259 .name = "gsbi2_uart_src", 273 - .parent_names = gcc_cxo_pll8, 260 + .parent_data = gcc_cxo_pll8, 274 261 .num_parents = ARRAY_SIZE(gcc_cxo_pll8), 275 262 .ops = &clk_rcg_ops, 276 263 .flags = CLK_SET_PARENT_GATE, ··· 286 273 .enable_mask = BIT(9), 287 274 .hw.init = &(struct clk_init_data){ 288 275 .name = "gsbi2_uart_clk", 289 - .parent_names = (const char *[]){ 290 - "gsbi2_uart_src", 276 + .parent_hws = (const struct clk_hw*[]) { 277 + &gsbi2_uart_src.clkr.hw, 291 278 }, 292 279 .num_parents = 1, 293 280 .ops = &clk_branch_ops, ··· 321 308 .enable_mask = BIT(11), 322 309 .hw.init = &(struct clk_init_data){ 323 310 .name = "gsbi3_uart_src", 324 - .parent_names = gcc_cxo_pll8, 311 + .parent_data = gcc_cxo_pll8, 325 312 .num_parents = ARRAY_SIZE(gcc_cxo_pll8), 326 313 .ops = &clk_rcg_ops, 327 314 .flags = CLK_SET_PARENT_GATE, ··· 337 324 .enable_mask = BIT(9), 338 325 .hw.init = &(struct clk_init_data){ 339 326 .name = "gsbi3_uart_clk", 340 - .parent_names = (const char *[]){ 341 - "gsbi3_uart_src", 327 + .parent_hws = (const struct clk_hw*[]) { 328 + &gsbi3_uart_src.clkr.hw, 342 329 }, 343 330 .num_parents = 1, 344 331 .ops = &clk_branch_ops, ··· 372 359 .enable_mask = BIT(11), 373 360 .hw.init = &(struct clk_init_data){ 374 361 .name = "gsbi4_uart_src", 375 - .parent_names = gcc_cxo_pll8, 362 + .parent_data = gcc_cxo_pll8, 376 363 .num_parents = ARRAY_SIZE(gcc_cxo_pll8), 377 364 .ops = &clk_rcg_ops, 378 365 .flags = CLK_SET_PARENT_GATE, ··· 388 375 .enable_mask = BIT(9), 389 376 .hw.init = &(struct clk_init_data){ 390 377 .name = "gsbi4_uart_clk", 391 - .parent_names = (const char *[]){ 392 - "gsbi4_uart_src", 378 + .parent_hws = (const struct clk_hw*[]) { 379 + &gsbi4_uart_src.clkr.hw, 393 380 }, 394 381 .num_parents = 1, 395 382 .ops = &clk_branch_ops, ··· 423 410 .enable_mask = BIT(11), 424 411 .hw.init = &(struct clk_init_data){ 425 412 .name = "gsbi5_uart_src", 426 - .parent_names = gcc_cxo_pll8, 413 + .parent_data = gcc_cxo_pll8, 427 414 .num_parents = ARRAY_SIZE(gcc_cxo_pll8), 428 415 .ops = &clk_rcg_ops, 429 416 .flags = CLK_SET_PARENT_GATE, ··· 439 426 .enable_mask = BIT(9), 440 427 .hw.init = &(struct clk_init_data){ 441 428 .name = "gsbi5_uart_clk", 442 - .parent_names = (const char *[]){ 443 - "gsbi5_uart_src", 429 + .parent_hws = (const struct clk_hw*[]) { 430 + &gsbi5_uart_src.clkr.hw, 444 431 }, 445 432 .num_parents = 1, 446 433 .ops = &clk_branch_ops, ··· 486 473 .enable_mask = BIT(11), 487 474 .hw.init = &(struct clk_init_data){ 488 475 .name = "gsbi1_qup_src", 489 - .parent_names = gcc_cxo_pll8, 476 + .parent_data = gcc_cxo_pll8, 490 477 .num_parents = ARRAY_SIZE(gcc_cxo_pll8), 491 478 .ops = &clk_rcg_ops, 492 479 .flags = CLK_SET_PARENT_GATE, ··· 502 489 .enable_mask = BIT(9), 503 490 .hw.init = &(struct clk_init_data){ 504 491 .name = "gsbi1_qup_clk", 505 - .parent_names = (const char *[]){ "gsbi1_qup_src" }, 492 + .parent_hws = (const struct clk_hw*[]) { 493 + &gsbi1_qup_src.clkr.hw, 494 + }, 506 495 .num_parents = 1, 507 496 .ops = &clk_branch_ops, 508 497 .flags = CLK_SET_RATE_PARENT, ··· 537 522 .enable_mask = BIT(11), 538 523 .hw.init = &(struct clk_init_data){ 539 524 .name = "gsbi2_qup_src", 540 - .parent_names = gcc_cxo_pll8, 525 + .parent_data = gcc_cxo_pll8, 541 526 .num_parents = ARRAY_SIZE(gcc_cxo_pll8), 542 527 .ops = &clk_rcg_ops, 543 528 .flags = CLK_SET_PARENT_GATE, ··· 553 538 .enable_mask = BIT(9), 554 539 .hw.init = &(struct clk_init_data){ 555 540 .name = "gsbi2_qup_clk", 556 - .parent_names = (const char *[]){ "gsbi2_qup_src" }, 541 + .parent_hws = (const struct clk_hw*[]) { 542 + &gsbi2_qup_src.clkr.hw, 543 + }, 557 544 .num_parents = 1, 558 545 .ops = &clk_branch_ops, 559 546 .flags = CLK_SET_RATE_PARENT, ··· 588 571 .enable_mask = BIT(11), 589 572 .hw.init = &(struct clk_init_data){ 590 573 .name = "gsbi3_qup_src", 591 - .parent_names = gcc_cxo_pll8, 574 + .parent_data = gcc_cxo_pll8, 592 575 .num_parents = ARRAY_SIZE(gcc_cxo_pll8), 593 576 .ops = &clk_rcg_ops, 594 577 .flags = CLK_SET_PARENT_GATE, ··· 604 587 .enable_mask = BIT(9), 605 588 .hw.init = &(struct clk_init_data){ 606 589 .name = "gsbi3_qup_clk", 607 - .parent_names = (const char *[]){ "gsbi3_qup_src" }, 590 + .parent_hws = (const struct clk_hw*[]) { 591 + &gsbi3_qup_src.clkr.hw, 592 + }, 608 593 .num_parents = 1, 609 594 .ops = &clk_branch_ops, 610 595 .flags = CLK_SET_RATE_PARENT, ··· 639 620 .enable_mask = BIT(11), 640 621 .hw.init = &(struct clk_init_data){ 641 622 .name = "gsbi4_qup_src", 642 - .parent_names = gcc_cxo_pll8, 623 + .parent_data = gcc_cxo_pll8, 643 624 .num_parents = ARRAY_SIZE(gcc_cxo_pll8), 644 625 .ops = &clk_rcg_ops, 645 626 .flags = CLK_SET_PARENT_GATE, ··· 655 636 .enable_mask = BIT(9), 656 637 .hw.init = &(struct clk_init_data){ 657 638 .name = "gsbi4_qup_clk", 658 - .parent_names = (const char *[]){ "gsbi4_qup_src" }, 639 + .parent_hws = (const struct clk_hw*[]) { 640 + &gsbi4_qup_src.clkr.hw, 641 + }, 659 642 .num_parents = 1, 660 643 .ops = &clk_branch_ops, 661 644 .flags = CLK_SET_RATE_PARENT, ··· 690 669 .enable_mask = BIT(11), 691 670 .hw.init = &(struct clk_init_data){ 692 671 .name = "gsbi5_qup_src", 693 - .parent_names = gcc_cxo_pll8, 672 + .parent_data = gcc_cxo_pll8, 694 673 .num_parents = ARRAY_SIZE(gcc_cxo_pll8), 695 674 .ops = &clk_rcg_ops, 696 675 .flags = CLK_SET_PARENT_GATE, ··· 706 685 .enable_mask = BIT(9), 707 686 .hw.init = &(struct clk_init_data){ 708 687 .name = "gsbi5_qup_clk", 709 - .parent_names = (const char *[]){ "gsbi5_qup_src" }, 688 + .parent_hws = (const struct clk_hw*[]) { 689 + &gsbi5_qup_src.clkr.hw, 690 + }, 710 691 .num_parents = 1, 711 692 .ops = &clk_branch_ops, 712 693 .flags = CLK_SET_RATE_PARENT, ··· 747 724 .enable_mask = BIT(11), 748 725 .hw.init = &(struct clk_init_data){ 749 726 .name = "gp0_src", 750 - .parent_names = gcc_cxo, 727 + .parent_data = gcc_cxo, 751 728 .num_parents = ARRAY_SIZE(gcc_cxo), 752 729 .ops = &clk_rcg_ops, 753 730 .flags = CLK_SET_PARENT_GATE, ··· 763 740 .enable_mask = BIT(9), 764 741 .hw.init = &(struct clk_init_data){ 765 742 .name = "gp0_clk", 766 - .parent_names = (const char *[]){ "gp0_src" }, 743 + .parent_hws = (const struct clk_hw*[]) { 744 + &gp0_src.clkr.hw, 745 + }, 767 746 .num_parents = 1, 768 747 .ops = &clk_branch_ops, 769 748 .flags = CLK_SET_RATE_PARENT, ··· 798 773 .enable_mask = BIT(11), 799 774 .hw.init = &(struct clk_init_data){ 800 775 .name = "gp1_src", 801 - .parent_names = gcc_cxo, 776 + .parent_data = gcc_cxo, 802 777 .num_parents = ARRAY_SIZE(gcc_cxo), 803 778 .ops = &clk_rcg_ops, 804 779 .flags = CLK_SET_RATE_GATE, ··· 814 789 .enable_mask = BIT(9), 815 790 .hw.init = &(struct clk_init_data){ 816 791 .name = "gp1_clk", 817 - .parent_names = (const char *[]){ "gp1_src" }, 792 + .parent_hws = (const struct clk_hw*[]) { 793 + &gp1_src.clkr.hw, 794 + }, 818 795 .num_parents = 1, 819 796 .ops = &clk_branch_ops, 820 797 .flags = CLK_SET_RATE_PARENT, ··· 849 822 .enable_mask = BIT(11), 850 823 .hw.init = &(struct clk_init_data){ 851 824 .name = "gp2_src", 852 - .parent_names = gcc_cxo, 825 + .parent_data = gcc_cxo, 853 826 .num_parents = ARRAY_SIZE(gcc_cxo), 854 827 .ops = &clk_rcg_ops, 855 828 .flags = CLK_SET_RATE_GATE, ··· 865 838 .enable_mask = BIT(9), 866 839 .hw.init = &(struct clk_init_data){ 867 840 .name = "gp2_clk", 868 - .parent_names = (const char *[]){ "gp2_src" }, 841 + .parent_hws = (const struct clk_hw*[]) { 842 + &gp2_src.clkr.hw, 843 + }, 869 844 .num_parents = 1, 870 845 .ops = &clk_branch_ops, 871 846 .flags = CLK_SET_RATE_PARENT, ··· 903 874 .clkr = { 904 875 .hw.init = &(struct clk_init_data){ 905 876 .name = "prng_src", 906 - .parent_names = gcc_cxo_pll8, 877 + .parent_data = gcc_cxo_pll8, 907 878 .num_parents = ARRAY_SIZE(gcc_cxo_pll8), 908 879 .ops = &clk_rcg_ops, 909 880 }, ··· 919 890 .enable_mask = BIT(10), 920 891 .hw.init = &(struct clk_init_data){ 921 892 .name = "prng_clk", 922 - .parent_names = (const char *[]){ "prng_src" }, 893 + .parent_hws = (const struct clk_hw*[]) { 894 + &prng_src.clkr.hw, 895 + }, 923 896 .num_parents = 1, 924 897 .ops = &clk_branch_ops, 925 898 }, ··· 967 936 .enable_mask = BIT(11), 968 937 .hw.init = &(struct clk_init_data){ 969 938 .name = "sdc1_src", 970 - .parent_names = gcc_cxo_pll8, 939 + .parent_data = gcc_cxo_pll8, 971 940 .num_parents = ARRAY_SIZE(gcc_cxo_pll8), 972 941 .ops = &clk_rcg_ops, 973 942 }, ··· 982 951 .enable_mask = BIT(9), 983 952 .hw.init = &(struct clk_init_data){ 984 953 .name = "sdc1_clk", 985 - .parent_names = (const char *[]){ "sdc1_src" }, 954 + .parent_hws = (const struct clk_hw*[]) { 955 + &sdc1_src.clkr.hw, 956 + }, 986 957 .num_parents = 1, 987 958 .ops = &clk_branch_ops, 988 959 .flags = CLK_SET_RATE_PARENT, ··· 1017 984 .enable_mask = BIT(11), 1018 985 .hw.init = &(struct clk_init_data){ 1019 986 .name = "sdc2_src", 1020 - .parent_names = gcc_cxo_pll8, 987 + .parent_data = gcc_cxo_pll8, 1021 988 .num_parents = ARRAY_SIZE(gcc_cxo_pll8), 1022 989 .ops = &clk_rcg_ops, 1023 990 }, ··· 1032 999 .enable_mask = BIT(9), 1033 1000 .hw.init = &(struct clk_init_data){ 1034 1001 .name = "sdc2_clk", 1035 - .parent_names = (const char *[]){ "sdc2_src" }, 1002 + .parent_hws = (const struct clk_hw*[]) { 1003 + &sdc2_src.clkr.hw, 1004 + }, 1036 1005 .num_parents = 1, 1037 1006 .ops = &clk_branch_ops, 1038 1007 .flags = CLK_SET_RATE_PARENT, ··· 1072 1037 .enable_mask = BIT(11), 1073 1038 .hw.init = &(struct clk_init_data){ 1074 1039 .name = "usb_hs1_xcvr_src", 1075 - .parent_names = gcc_cxo_pll8, 1040 + .parent_data = gcc_cxo_pll8, 1076 1041 .num_parents = ARRAY_SIZE(gcc_cxo_pll8), 1077 1042 .ops = &clk_rcg_ops, 1078 1043 .flags = CLK_SET_RATE_GATE, ··· 1088 1053 .enable_mask = BIT(9), 1089 1054 .hw.init = &(struct clk_init_data){ 1090 1055 .name = "usb_hs1_xcvr_clk", 1091 - .parent_names = (const char *[]){ "usb_hs1_xcvr_src" }, 1056 + .parent_hws = (const struct clk_hw*[]) { 1057 + &usb_hs1_xcvr_src.clkr.hw, 1058 + }, 1092 1059 .num_parents = 1, 1093 1060 .ops = &clk_branch_ops, 1094 1061 .flags = CLK_SET_RATE_PARENT, ··· 1123 1086 .enable_mask = BIT(11), 1124 1087 .hw.init = &(struct clk_init_data){ 1125 1088 .name = "usb_hsic_xcvr_fs_src", 1126 - .parent_names = gcc_cxo_pll8, 1089 + .parent_data = gcc_cxo_pll8, 1127 1090 .num_parents = ARRAY_SIZE(gcc_cxo_pll8), 1128 1091 .ops = &clk_rcg_ops, 1129 1092 .flags = CLK_SET_RATE_GATE, ··· 1139 1102 .enable_mask = BIT(9), 1140 1103 .hw.init = &(struct clk_init_data){ 1141 1104 .name = "usb_hsic_xcvr_fs_clk", 1142 - .parent_names = 1143 - (const char *[]){ "usb_hsic_xcvr_fs_src" }, 1105 + .parent_hws = (const struct clk_hw*[]) { 1106 + &usb_hsic_xcvr_fs_src.clkr.hw, 1107 + }, 1144 1108 .num_parents = 1, 1145 1109 .ops = &clk_branch_ops, 1146 1110 .flags = CLK_SET_RATE_PARENT, ··· 1179 1141 .enable_mask = BIT(11), 1180 1142 .hw.init = &(struct clk_init_data){ 1181 1143 .name = "usb_hs1_system_src", 1182 - .parent_names = gcc_cxo_pll8, 1144 + .parent_data = gcc_cxo_pll8, 1183 1145 .num_parents = ARRAY_SIZE(gcc_cxo_pll8), 1184 1146 .ops = &clk_rcg_ops, 1185 1147 .flags = CLK_SET_RATE_GATE, ··· 1194 1156 .enable_reg = 0x36a4, 1195 1157 .enable_mask = BIT(9), 1196 1158 .hw.init = &(struct clk_init_data){ 1197 - .parent_names = 1198 - (const char *[]){ "usb_hs1_system_src" }, 1159 + .parent_hws = (const struct clk_hw*[]) { 1160 + &usb_hs1_system_src.clkr.hw, 1161 + }, 1199 1162 .num_parents = 1, 1200 1163 .name = "usb_hs1_system_clk", 1201 1164 .ops = &clk_branch_ops, ··· 1235 1196 .enable_mask = BIT(11), 1236 1197 .hw.init = &(struct clk_init_data){ 1237 1198 .name = "usb_hsic_system_src", 1238 - .parent_names = gcc_cxo_pll8, 1199 + .parent_data = gcc_cxo_pll8, 1239 1200 .num_parents = ARRAY_SIZE(gcc_cxo_pll8), 1240 1201 .ops = &clk_rcg_ops, 1241 1202 .flags = CLK_SET_RATE_GATE, ··· 1250 1211 .enable_reg = 0x2b58, 1251 1212 .enable_mask = BIT(9), 1252 1213 .hw.init = &(struct clk_init_data){ 1253 - .parent_names = 1254 - (const char *[]){ "usb_hsic_system_src" }, 1214 + .parent_hws = (const struct clk_hw*[]) { 1215 + &usb_hsic_system_src.clkr.hw, 1216 + }, 1255 1217 .num_parents = 1, 1256 1218 .name = "usb_hsic_system_clk", 1257 1219 .ops = &clk_branch_ops, ··· 1291 1251 .enable_mask = BIT(11), 1292 1252 .hw.init = &(struct clk_init_data){ 1293 1253 .name = "usb_hsic_hsic_src", 1294 - .parent_names = gcc_cxo_pll14, 1254 + .parent_data = gcc_cxo_pll14, 1295 1255 .num_parents = ARRAY_SIZE(gcc_cxo_pll14), 1296 1256 .ops = &clk_rcg_ops, 1297 1257 .flags = CLK_SET_RATE_GATE, ··· 1305 1265 .enable_reg = 0x2b50, 1306 1266 .enable_mask = BIT(9), 1307 1267 .hw.init = &(struct clk_init_data){ 1308 - .parent_names = (const char *[]){ "usb_hsic_hsic_src" }, 1268 + .parent_hws = (const struct clk_hw*[]) { 1269 + &usb_hsic_hsic_src.clkr.hw, 1270 + }, 1309 1271 .num_parents = 1, 1310 1272 .name = "usb_hsic_hsic_clk", 1311 1273 .ops = &clk_branch_ops, ··· 1323 1281 .enable_reg = 0x2b48, 1324 1282 .enable_mask = BIT(0), 1325 1283 .hw.init = &(struct clk_init_data){ 1326 - .parent_names = (const char *[]){ "cxo" }, 1327 - .num_parents = 1, 1284 + .parent_data = gcc_cxo, 1285 + .num_parents = ARRAY_SIZE(gcc_cxo), 1328 1286 .name = "usb_hsic_hsio_cal_clk", 1329 1287 .ops = &clk_branch_ops, 1330 1288 },