26 #include <linux/kernel.h>
27 #include <linux/list.h>
46 #define OMAP4430_MODULEMODE_HWCTRL 0
47 #define OMAP4430_MODULEMODE_SWCTRL 1
51 static struct clk extalt_clkin_ck = {
52 .name =
"extalt_clkin_ck",
57 static struct clk pad_clks_ck = {
58 .name =
"pad_clks_ck",
65 static struct clk pad_slimbus_core_clks_ck = {
66 .name =
"pad_slimbus_core_clks_ck",
71 static struct clk secure_32k_clk_src_ck = {
72 .name =
"secure_32k_clk_src_ck",
77 static struct clk slimbus_clk = {
78 .name =
"slimbus_clk",
85 static struct clk sys_32k_ck = {
87 .clkdm_name =
"prm_clkdm",
92 static struct clk virt_12000000_ck = {
93 .name =
"virt_12000000_ck",
98 static struct clk virt_13000000_ck = {
99 .name =
"virt_13000000_ck",
104 static struct clk virt_16800000_ck = {
105 .name =
"virt_16800000_ck",
110 static struct clk virt_27000000_ck = {
111 .name =
"virt_27000000_ck",
116 static struct clk virt_38400000_ck = {
117 .name =
"virt_38400000_ck",
122 static const struct clksel_rate div_1_5_rates[] = {
123 { .div = 1, .val = 5, .flags = RATE_IN_4430 },
127 static const struct clksel_rate div_1_6_rates[] = {
128 { .div = 1, .val = 6, .flags = RATE_IN_4430 },
132 static const struct clksel_rate div_1_7_rates[] = {
133 { .div = 1, .val = 7, .flags = RATE_IN_4430 },
137 static const struct clksel sys_clkin_sel[] = {
143 { .parent = &virt_27000000_ck, .
rates = div_1_6_rates },
144 { .parent = &virt_38400000_ck, .
rates = div_1_7_rates },
148 static struct clk sys_clkin_ck = {
149 .name =
"sys_clkin_ck",
151 .clksel = sys_clkin_sel,
159 static struct clk tie_low_clock_ck = {
160 .name =
"tie_low_clock_ck",
165 static struct clk utmi_phy_clkout_ck = {
166 .name =
"utmi_phy_clkout_ck",
171 static struct clk xclk60mhsp1_ck = {
172 .name =
"xclk60mhsp1_ck",
177 static struct clk xclk60mhsp2_ck = {
178 .name =
"xclk60mhsp2_ck",
183 static struct clk xclk60motg_ck = {
184 .name =
"xclk60motg_ck",
191 static const struct clksel abe_dpll_bypass_clk_mux_sel[] = {
197 static struct clk abe_dpll_bypass_clk_mux_ck = {
198 .name =
"abe_dpll_bypass_clk_mux_ck",
199 .parent = &sys_clkin_ck,
204 static struct clk abe_dpll_refclk_mux_ck = {
205 .name =
"abe_dpll_refclk_mux_ck",
206 .parent = &sys_clkin_ck,
207 .clksel = abe_dpll_bypass_clk_mux_sel,
216 static struct dpll_data dpll_abe_dd = {
218 .clk_bypass = &abe_dpll_bypass_clk_mux_ck,
219 .clk_ref = &abe_dpll_refclk_mux_ck,
229 .max_multiplier = 2047,
235 static struct clk dpll_abe_ck = {
236 .name =
"dpll_abe_ck",
237 .parent = &abe_dpll_refclk_mux_ck,
238 .dpll_data = &dpll_abe_dd,
246 static struct clk dpll_abe_x2_ck = {
247 .name =
"dpll_abe_x2_ck",
248 .parent = &dpll_abe_ck,
255 static const struct clksel dpll_abe_m2x2_div[] = {
260 static struct clk dpll_abe_m2x2_ck = {
261 .name =
"dpll_abe_m2x2_ck",
262 .parent = &dpll_abe_x2_ck,
263 .clksel = dpll_abe_m2x2_div,
272 static struct clk abe_24m_fclk = {
273 .name =
"abe_24m_fclk",
274 .parent = &dpll_abe_m2x2_ck,
280 static const struct clksel_rate div3_1to4_rates[] = {
281 { .div = 1, .val = 0, .flags = RATE_IN_4430 },
282 { .div = 2, .val = 1, .flags = RATE_IN_4430 },
283 { .div = 4, .val = 2, .flags = RATE_IN_4430 },
287 static const struct clksel abe_clk_div[] = {
288 { .parent = &dpll_abe_m2x2_ck, .
rates = div3_1to4_rates },
292 static struct clk abe_clk = {
294 .parent = &dpll_abe_m2x2_ck,
295 .clksel = abe_clk_div,
304 static const struct clksel_rate div2_1to2_rates[] = {
305 { .div = 1, .val = 0, .flags = RATE_IN_4430 },
306 { .div = 2, .val = 1, .flags = RATE_IN_4430 },
310 static const struct clksel aess_fclk_div[] = {
311 { .parent = &abe_clk, .
rates = div2_1to2_rates },
315 static struct clk aess_fclk = {
318 .clksel = aess_fclk_div,
327 static struct clk dpll_abe_m3x2_ck = {
328 .name =
"dpll_abe_m3x2_ck",
329 .parent = &dpll_abe_x2_ck,
330 .clksel = dpll_abe_m2x2_div,
339 static const struct clksel core_hsd_byp_clk_mux_sel[] = {
345 static struct clk core_hsd_byp_clk_mux_ck = {
346 .name =
"core_hsd_byp_clk_mux_ck",
347 .parent = &sys_clkin_ck,
348 .clksel = core_hsd_byp_clk_mux_sel,
357 static struct dpll_data dpll_core_dd = {
359 .clk_bypass = &core_hsd_byp_clk_mux_ck,
360 .clk_ref = &sys_clkin_ck,
370 .max_multiplier = 2047,
376 static struct clk dpll_core_ck = {
377 .name =
"dpll_core_ck",
378 .parent = &sys_clkin_ck,
379 .dpll_data = &dpll_core_dd,
385 static struct clk dpll_core_x2_ck = {
386 .name =
"dpll_core_x2_ck",
387 .parent = &dpll_core_ck,
393 static const struct clksel dpll_core_m6x2_div[] = {
398 static struct clk dpll_core_m6x2_ck = {
399 .name =
"dpll_core_m6x2_ck",
400 .parent = &dpll_core_x2_ck,
401 .clksel = dpll_core_m6x2_div,
410 static const struct clksel dbgclk_mux_sel[] = {
416 static struct clk dbgclk_mux_ck = {
417 .name =
"dbgclk_mux_ck",
418 .parent = &sys_clkin_ck,
423 static const struct clksel dpll_core_m2_div[] = {
428 static struct clk dpll_core_m2_ck = {
429 .name =
"dpll_core_m2_ck",
430 .parent = &dpll_core_ck,
431 .clksel = dpll_core_m2_div,
440 static struct clk ddrphy_ck = {
442 .parent = &dpll_core_m2_ck,
444 .clkdm_name =
"l3_emif_clkdm",
449 static struct clk dpll_core_m5x2_ck = {
450 .name =
"dpll_core_m5x2_ck",
451 .parent = &dpll_core_x2_ck,
452 .clksel = dpll_core_m6x2_div,
461 static const struct clksel div_core_div[] = {
462 { .parent = &dpll_core_m5x2_ck, .
rates = div2_1to2_rates },
466 static struct clk div_core_ck = {
467 .name =
"div_core_ck",
468 .parent = &dpll_core_m5x2_ck,
469 .clksel = div_core_div,
478 static const struct clksel_rate div4_1to8_rates[] = {
479 { .div = 1, .val = 0, .flags = RATE_IN_4430 },
480 { .div = 2, .val = 1, .flags = RATE_IN_4430 },
481 { .div = 4, .val = 2, .flags = RATE_IN_4430 },
482 { .div = 8, .val = 3, .flags = RATE_IN_4430 },
486 static const struct clksel div_iva_hs_clk_div[] = {
487 { .parent = &dpll_core_m5x2_ck, .
rates = div4_1to8_rates },
491 static struct clk div_iva_hs_clk = {
492 .name =
"div_iva_hs_clk",
493 .parent = &dpll_core_m5x2_ck,
494 .clksel = div_iva_hs_clk_div,
503 static struct clk div_mpu_hs_clk = {
504 .name =
"div_mpu_hs_clk",
505 .parent = &dpll_core_m5x2_ck,
506 .clksel = div_iva_hs_clk_div,
515 static struct clk dpll_core_m4x2_ck = {
516 .name =
"dpll_core_m4x2_ck",
517 .parent = &dpll_core_x2_ck,
518 .clksel = dpll_core_m6x2_div,
527 static struct clk dll_clk_div_ck = {
528 .name =
"dll_clk_div_ck",
529 .parent = &dpll_core_m4x2_ck,
535 static const struct clksel dpll_abe_m2_div[] = {
540 static struct clk dpll_abe_m2_ck = {
541 .name =
"dpll_abe_m2_ck",
542 .parent = &dpll_abe_ck,
543 .clksel = dpll_abe_m2_div,
552 static struct clk dpll_core_m3x2_ck = {
553 .name =
"dpll_core_m3x2_ck",
554 .parent = &dpll_core_x2_ck,
555 .clksel = dpll_core_m6x2_div,
566 static struct clk dpll_core_m7x2_ck = {
567 .name =
"dpll_core_m7x2_ck",
568 .parent = &dpll_core_x2_ck,
569 .clksel = dpll_core_m6x2_div,
578 static const struct clksel iva_hsd_byp_clk_mux_sel[] = {
584 static struct clk iva_hsd_byp_clk_mux_ck = {
585 .name =
"iva_hsd_byp_clk_mux_ck",
586 .parent = &sys_clkin_ck,
587 .clksel = iva_hsd_byp_clk_mux_sel,
596 static struct dpll_data dpll_iva_dd = {
598 .clk_bypass = &iva_hsd_byp_clk_mux_ck,
599 .clk_ref = &sys_clkin_ck,
609 .max_multiplier = 2047,
615 static struct clk dpll_iva_ck = {
616 .name =
"dpll_iva_ck",
617 .parent = &sys_clkin_ck,
618 .dpll_data = &dpll_iva_dd,
626 static struct clk dpll_iva_x2_ck = {
627 .name =
"dpll_iva_x2_ck",
628 .parent = &dpll_iva_ck,
634 static const struct clksel dpll_iva_m4x2_div[] = {
639 static struct clk dpll_iva_m4x2_ck = {
640 .name =
"dpll_iva_m4x2_ck",
641 .parent = &dpll_iva_x2_ck,
642 .clksel = dpll_iva_m4x2_div,
651 static struct clk dpll_iva_m5x2_ck = {
652 .name =
"dpll_iva_m5x2_ck",
653 .parent = &dpll_iva_x2_ck,
654 .clksel = dpll_iva_m4x2_div,
664 static struct dpll_data dpll_mpu_dd = {
666 .clk_bypass = &div_mpu_hs_clk,
667 .clk_ref = &sys_clkin_ck,
677 .max_multiplier = 2047,
683 static struct clk dpll_mpu_ck = {
684 .name =
"dpll_mpu_ck",
685 .parent = &sys_clkin_ck,
686 .dpll_data = &dpll_mpu_dd,
694 static const struct clksel dpll_mpu_m2_div[] = {
699 static struct clk dpll_mpu_m2_ck = {
700 .name =
"dpll_mpu_m2_ck",
701 .parent = &dpll_mpu_ck,
702 .clkdm_name =
"cm_clkdm",
703 .clksel = dpll_mpu_m2_div,
712 static struct clk per_hs_clk_div_ck = {
713 .name =
"per_hs_clk_div_ck",
714 .parent = &dpll_abe_m3x2_ck,
720 static const struct clksel per_hsd_byp_clk_mux_sel[] = {
726 static struct clk per_hsd_byp_clk_mux_ck = {
727 .name =
"per_hsd_byp_clk_mux_ck",
728 .parent = &sys_clkin_ck,
729 .clksel = per_hsd_byp_clk_mux_sel,
738 static struct dpll_data dpll_per_dd = {
740 .clk_bypass = &per_hsd_byp_clk_mux_ck,
741 .clk_ref = &sys_clkin_ck,
751 .max_multiplier = 2047,
757 static struct clk dpll_per_ck = {
758 .name =
"dpll_per_ck",
759 .parent = &sys_clkin_ck,
760 .dpll_data = &dpll_per_dd,
768 static const struct clksel dpll_per_m2_div[] = {
773 static struct clk dpll_per_m2_ck = {
774 .name =
"dpll_per_m2_ck",
775 .parent = &dpll_per_ck,
776 .clksel = dpll_per_m2_div,
785 static struct clk dpll_per_x2_ck = {
786 .name =
"dpll_per_x2_ck",
787 .parent = &dpll_per_ck,
794 static const struct clksel dpll_per_m2x2_div[] = {
799 static struct clk dpll_per_m2x2_ck = {
800 .name =
"dpll_per_m2x2_ck",
801 .parent = &dpll_per_x2_ck,
802 .clksel = dpll_per_m2x2_div,
811 static struct clk dpll_per_m3x2_ck = {
812 .name =
"dpll_per_m3x2_ck",
813 .parent = &dpll_per_x2_ck,
814 .clksel = dpll_per_m2x2_div,
825 static struct clk dpll_per_m4x2_ck = {
826 .name =
"dpll_per_m4x2_ck",
827 .parent = &dpll_per_x2_ck,
828 .clksel = dpll_per_m2x2_div,
837 static struct clk dpll_per_m5x2_ck = {
838 .name =
"dpll_per_m5x2_ck",
839 .parent = &dpll_per_x2_ck,
840 .clksel = dpll_per_m2x2_div,
849 static struct clk dpll_per_m6x2_ck = {
850 .name =
"dpll_per_m6x2_ck",
851 .parent = &dpll_per_x2_ck,
852 .clksel = dpll_per_m2x2_div,
861 static struct clk dpll_per_m7x2_ck = {
862 .name =
"dpll_per_m7x2_ck",
863 .parent = &dpll_per_x2_ck,
864 .clksel = dpll_per_m2x2_div,
873 static struct clk usb_hs_clk_div_ck = {
874 .name =
"usb_hs_clk_div_ck",
875 .parent = &dpll_abe_m3x2_ck,
882 static struct dpll_data dpll_usb_dd = {
884 .clk_bypass = &usb_hs_clk_div_ck,
886 .clk_ref = &sys_clkin_ck,
897 .max_multiplier = 4095,
903 static struct clk dpll_usb_ck = {
904 .name =
"dpll_usb_ck",
905 .parent = &sys_clkin_ck,
906 .dpll_data = &dpll_usb_dd,
912 .clkdm_name =
"l3_init_clkdm",
915 static struct clk dpll_usb_clkdcoldo_ck = {
916 .name =
"dpll_usb_clkdcoldo_ck",
917 .parent = &dpll_usb_ck,
923 static const struct clksel dpll_usb_m2_div[] = {
928 static struct clk dpll_usb_m2_ck = {
929 .name =
"dpll_usb_m2_ck",
930 .parent = &dpll_usb_ck,
931 .clksel = dpll_usb_m2_div,
940 static const struct clksel ducati_clk_mux_sel[] = {
946 static struct clk ducati_clk_mux_ck = {
947 .name =
"ducati_clk_mux_ck",
948 .parent = &div_core_ck,
949 .clksel = ducati_clk_mux_sel,
957 static struct clk func_12m_fclk = {
958 .name =
"func_12m_fclk",
959 .parent = &dpll_per_m2x2_ck,
965 static struct clk func_24m_clk = {
966 .name =
"func_24m_clk",
967 .parent = &dpll_per_m2_ck,
973 static struct clk func_24mc_fclk = {
974 .name =
"func_24mc_fclk",
975 .parent = &dpll_per_m2x2_ck,
981 static const struct clksel_rate div2_4to8_rates[] = {
982 { .div = 4, .val = 0, .flags = RATE_IN_4430 },
983 { .div = 8, .val = 1, .flags = RATE_IN_4430 },
987 static const struct clksel func_48m_fclk_div[] = {
988 { .parent = &dpll_per_m2x2_ck, .
rates = div2_4to8_rates },
992 static struct clk func_48m_fclk = {
993 .name =
"func_48m_fclk",
994 .parent = &dpll_per_m2x2_ck,
995 .clksel = func_48m_fclk_div,
1004 static struct clk func_48mc_fclk = {
1005 .name =
"func_48mc_fclk",
1006 .parent = &dpll_per_m2x2_ck,
1012 static const struct clksel_rate div2_2to4_rates[] = {
1013 { .div = 2, .val = 0, .flags = RATE_IN_4430 },
1014 { .div = 4, .val = 1, .flags = RATE_IN_4430 },
1018 static const struct clksel func_64m_fclk_div[] = {
1019 { .parent = &dpll_per_m4x2_ck, .
rates = div2_2to4_rates },
1023 static struct clk func_64m_fclk = {
1024 .name =
"func_64m_fclk",
1025 .parent = &dpll_per_m4x2_ck,
1026 .clksel = func_64m_fclk_div,
1035 static const struct clksel func_96m_fclk_div[] = {
1036 { .parent = &dpll_per_m2x2_ck, .
rates = div2_2to4_rates },
1040 static struct clk func_96m_fclk = {
1041 .name =
"func_96m_fclk",
1042 .parent = &dpll_per_m2x2_ck,
1043 .clksel = func_96m_fclk_div,
1052 static const struct clksel_rate div2_1to8_rates[] = {
1053 { .div = 1, .val = 0, .flags = RATE_IN_4430 },
1054 { .div = 8, .val = 1, .flags = RATE_IN_4430 },
1058 static const struct clksel init_60m_fclk_div[] = {
1059 { .parent = &dpll_usb_m2_ck, .
rates = div2_1to8_rates },
1063 static struct clk init_60m_fclk = {
1064 .name =
"init_60m_fclk",
1065 .parent = &dpll_usb_m2_ck,
1066 .clksel = init_60m_fclk_div,
1075 static const struct clksel l3_div_div[] = {
1076 { .parent = &div_core_ck, .
rates = div2_1to2_rates },
1080 static struct clk l3_div_ck = {
1081 .name =
"l3_div_ck",
1082 .parent = &div_core_ck,
1083 .clkdm_name =
"cm_clkdm",
1084 .clksel = l3_div_div,
1093 static const struct clksel l4_div_div[] = {
1094 { .parent = &l3_div_ck, .
rates = div2_1to2_rates },
1098 static struct clk l4_div_ck = {
1099 .name =
"l4_div_ck",
1100 .parent = &l3_div_ck,
1101 .clksel = l4_div_div,
1110 static struct clk lp_clk_div_ck = {
1111 .name =
"lp_clk_div_ck",
1112 .parent = &dpll_abe_m2x2_ck,
1118 static const struct clksel l4_wkup_clk_mux_sel[] = {
1124 static struct clk l4_wkup_clk_mux_ck = {
1125 .name =
"l4_wkup_clk_mux_ck",
1126 .parent = &sys_clkin_ck,
1127 .clksel = l4_wkup_clk_mux_sel,
1135 static const struct clksel_rate div2_2to1_rates[] = {
1136 { .div = 1, .val = 1, .flags = RATE_IN_4430 },
1137 { .div = 2, .val = 0, .flags = RATE_IN_4430 },
1141 static const struct clksel ocp_abe_iclk_div[] = {
1142 { .parent = &aess_fclk, .
rates = div2_2to1_rates },
1146 static struct clk mpu_periphclk = {
1147 .name =
"mpu_periphclk",
1148 .parent = &dpll_mpu_ck,
1154 static struct clk ocp_abe_iclk = {
1155 .name =
"ocp_abe_iclk",
1156 .parent = &aess_fclk,
1157 .clksel = ocp_abe_iclk_div,
1164 static struct clk per_abe_24m_fclk = {
1165 .name =
"per_abe_24m_fclk",
1166 .parent = &dpll_abe_m2_ck,
1172 static const struct clksel per_abe_nc_fclk_div[] = {
1173 { .parent = &dpll_abe_m2_ck, .
rates = div2_1to2_rates },
1177 static struct clk per_abe_nc_fclk = {
1178 .name =
"per_abe_nc_fclk",
1179 .parent = &dpll_abe_m2_ck,
1180 .clksel = per_abe_nc_fclk_div,
1189 static const struct clksel pmd_stm_clock_mux_sel[] = {
1196 static struct clk pmd_stm_clock_mux_ck = {
1197 .name =
"pmd_stm_clock_mux_ck",
1198 .parent = &sys_clkin_ck,
1203 static struct clk pmd_trace_clk_mux_ck = {
1204 .name =
"pmd_trace_clk_mux_ck",
1205 .parent = &sys_clkin_ck,
1210 static const struct clksel syc_clk_div_div[] = {
1211 { .parent = &sys_clkin_ck, .
rates = div2_1to2_rates },
1215 static struct clk syc_clk_div_ck = {
1216 .name =
"syc_clk_div_ck",
1217 .parent = &sys_clkin_ck,
1218 .clksel = syc_clk_div_div,
1229 static struct clk aes1_fck = {
1234 .clkdm_name =
"l4_secure_clkdm",
1235 .parent = &l3_div_ck,
1239 static struct clk aes2_fck = {
1244 .clkdm_name =
"l4_secure_clkdm",
1245 .parent = &l3_div_ck,
1249 static struct clk aess_fck = {
1254 .clkdm_name =
"abe_clkdm",
1255 .parent = &aess_fclk,
1259 static struct clk bandgap_fclk = {
1260 .name =
"bandgap_fclk",
1264 .clkdm_name =
"l4_wkup_clkdm",
1265 .parent = &sys_32k_ck,
1269 static struct clk des3des_fck = {
1270 .name =
"des3des_fck",
1274 .clkdm_name =
"l4_secure_clkdm",
1275 .parent = &l4_div_ck,
1279 static const struct clksel dmic_sync_mux_sel[] = {
1286 static struct clk dmic_sync_mux_ck = {
1287 .name =
"dmic_sync_mux_ck",
1288 .parent = &abe_24m_fclk,
1289 .clksel = dmic_sync_mux_sel,
1297 static const struct clksel func_dmic_abe_gfclk_sel[] = {
1305 static struct clk dmic_fck = {
1307 .parent = &dmic_sync_mux_ck,
1308 .clksel = func_dmic_abe_gfclk_sel,
1316 .clkdm_name =
"abe_clkdm",
1319 static struct clk dsp_fck = {
1324 .clkdm_name =
"tesla_clkdm",
1325 .parent = &dpll_iva_m4x2_ck,
1329 static struct clk dss_sys_clk = {
1330 .name =
"dss_sys_clk",
1334 .clkdm_name =
"l3_dss_clkdm",
1335 .parent = &syc_clk_div_ck,
1339 static struct clk dss_tv_clk = {
1340 .name =
"dss_tv_clk",
1344 .clkdm_name =
"l3_dss_clkdm",
1345 .parent = &extalt_clkin_ck,
1349 static struct clk dss_dss_clk = {
1350 .name =
"dss_dss_clk",
1354 .clkdm_name =
"l3_dss_clkdm",
1355 .parent = &dpll_per_m5x2_ck,
1359 static const struct clksel_rate div3_8to32_rates[] = {
1360 { .div = 8, .val = 0, .flags = RATE_IN_4460 },
1361 { .div = 16, .val = 1, .flags = RATE_IN_4460 },
1362 { .div = 32, .val = 2, .flags = RATE_IN_4460 },
1366 static const struct clksel div_ts_div[] = {
1367 { .parent = &l4_wkup_clk_mux_ck, .
rates = div3_8to32_rates },
1371 static struct clk div_ts_ck = {
1372 .name =
"div_ts_ck",
1373 .parent = &l4_wkup_clk_mux_ck,
1374 .clksel = div_ts_div,
1383 static struct clk bandgap_ts_fclk = {
1384 .name =
"bandgap_ts_fclk",
1388 .clkdm_name =
"l4_wkup_clkdm",
1389 .parent = &div_ts_ck,
1393 static struct clk dss_48mhz_clk = {
1394 .name =
"dss_48mhz_clk",
1398 .clkdm_name =
"l3_dss_clkdm",
1399 .parent = &func_48mc_fclk,
1403 static struct clk dss_fck = {
1408 .clkdm_name =
"l3_dss_clkdm",
1409 .parent = &l3_div_ck,
1413 static struct clk efuse_ctrl_cust_fck = {
1414 .name =
"efuse_ctrl_cust_fck",
1418 .clkdm_name =
"l4_cefuse_clkdm",
1419 .parent = &sys_clkin_ck,
1423 static struct clk emif1_fck = {
1424 .name =
"emif1_fck",
1429 .clkdm_name =
"l3_emif_clkdm",
1430 .parent = &ddrphy_ck,
1434 static struct clk emif2_fck = {
1435 .name =
"emif2_fck",
1440 .clkdm_name =
"l3_emif_clkdm",
1441 .parent = &ddrphy_ck,
1445 static const struct clksel fdif_fclk_div[] = {
1446 { .parent = &dpll_per_m4x2_ck, .
rates = div3_1to4_rates },
1451 static struct clk fdif_fck = {
1453 .parent = &dpll_per_m4x2_ck,
1454 .clksel = fdif_fclk_div,
1463 .clkdm_name =
"iss_clkdm",
1466 static struct clk fpka_fck = {
1471 .clkdm_name =
"l4_secure_clkdm",
1472 .parent = &l4_div_ck,
1476 static struct clk gpio1_dbclk = {
1477 .name =
"gpio1_dbclk",
1481 .clkdm_name =
"l4_wkup_clkdm",
1482 .parent = &sys_32k_ck,
1486 static struct clk gpio1_ick = {
1487 .name =
"gpio1_ick",
1491 .clkdm_name =
"l4_wkup_clkdm",
1492 .parent = &l4_wkup_clk_mux_ck,
1496 static struct clk gpio2_dbclk = {
1497 .name =
"gpio2_dbclk",
1501 .clkdm_name =
"l4_per_clkdm",
1502 .parent = &sys_32k_ck,
1506 static struct clk gpio2_ick = {
1507 .name =
"gpio2_ick",
1511 .clkdm_name =
"l4_per_clkdm",
1512 .parent = &l4_div_ck,
1516 static struct clk gpio3_dbclk = {
1517 .name =
"gpio3_dbclk",
1521 .clkdm_name =
"l4_per_clkdm",
1522 .parent = &sys_32k_ck,
1526 static struct clk gpio3_ick = {
1527 .name =
"gpio3_ick",
1531 .clkdm_name =
"l4_per_clkdm",
1532 .parent = &l4_div_ck,
1536 static struct clk gpio4_dbclk = {
1537 .name =
"gpio4_dbclk",
1541 .clkdm_name =
"l4_per_clkdm",
1542 .parent = &sys_32k_ck,
1546 static struct clk gpio4_ick = {
1547 .name =
"gpio4_ick",
1551 .clkdm_name =
"l4_per_clkdm",
1552 .parent = &l4_div_ck,
1556 static struct clk gpio5_dbclk = {
1557 .name =
"gpio5_dbclk",
1561 .clkdm_name =
"l4_per_clkdm",
1562 .parent = &sys_32k_ck,
1566 static struct clk gpio5_ick = {
1567 .name =
"gpio5_ick",
1571 .clkdm_name =
"l4_per_clkdm",
1572 .parent = &l4_div_ck,
1576 static struct clk gpio6_dbclk = {
1577 .name =
"gpio6_dbclk",
1581 .clkdm_name =
"l4_per_clkdm",
1582 .parent = &sys_32k_ck,
1586 static struct clk gpio6_ick = {
1587 .name =
"gpio6_ick",
1591 .clkdm_name =
"l4_per_clkdm",
1592 .parent = &l4_div_ck,
1596 static struct clk gpmc_ick = {
1602 .clkdm_name =
"l3_2_clkdm",
1603 .parent = &l3_div_ck,
1607 static const struct clksel sgx_clk_mux_sel[] = {
1614 static struct clk gpu_fck = {
1616 .parent = &dpll_core_m7x2_ck,
1617 .clksel = sgx_clk_mux_sel,
1625 .clkdm_name =
"l3_gfx_clkdm",
1628 static struct clk hdq1w_fck = {
1629 .name =
"hdq1w_fck",
1633 .clkdm_name =
"l4_per_clkdm",
1634 .parent = &func_12m_fclk,
1638 static const struct clksel hsi_fclk_div[] = {
1639 { .parent = &dpll_per_m2x2_ck, .
rates = div3_1to4_rates },
1644 static struct clk hsi_fck = {
1646 .parent = &dpll_per_m2x2_ck,
1647 .clksel = hsi_fclk_div,
1656 .clkdm_name =
"l3_init_clkdm",
1659 static struct clk i2c1_fck = {
1664 .clkdm_name =
"l4_per_clkdm",
1665 .parent = &func_96m_fclk,
1669 static struct clk i2c2_fck = {
1674 .clkdm_name =
"l4_per_clkdm",
1675 .parent = &func_96m_fclk,
1679 static struct clk i2c3_fck = {
1684 .clkdm_name =
"l4_per_clkdm",
1685 .parent = &func_96m_fclk,
1689 static struct clk i2c4_fck = {
1694 .clkdm_name =
"l4_per_clkdm",
1695 .parent = &func_96m_fclk,
1699 static struct clk ipu_fck = {
1704 .clkdm_name =
"ducati_clkdm",
1705 .parent = &ducati_clk_mux_ck,
1709 static struct clk iss_ctrlclk = {
1710 .name =
"iss_ctrlclk",
1714 .clkdm_name =
"iss_clkdm",
1715 .parent = &func_96m_fclk,
1719 static struct clk iss_fck = {
1724 .clkdm_name =
"iss_clkdm",
1725 .parent = &ducati_clk_mux_ck,
1729 static struct clk iva_fck = {
1734 .clkdm_name =
"ivahd_clkdm",
1735 .parent = &dpll_iva_m5x2_ck,
1739 static struct clk kbd_fck = {
1744 .clkdm_name =
"l4_wkup_clkdm",
1745 .parent = &sys_32k_ck,
1749 static struct clk l3_instr_ick = {
1750 .name =
"l3_instr_ick",
1755 .clkdm_name =
"l3_instr_clkdm",
1756 .parent = &l3_div_ck,
1760 static struct clk l3_main_3_ick = {
1761 .name =
"l3_main_3_ick",
1766 .clkdm_name =
"l3_instr_clkdm",
1767 .parent = &l3_div_ck,
1771 static struct clk mcasp_sync_mux_ck = {
1772 .name =
"mcasp_sync_mux_ck",
1773 .parent = &abe_24m_fclk,
1774 .clksel = dmic_sync_mux_sel,
1782 static const struct clksel func_mcasp_abe_gfclk_sel[] = {
1790 static struct clk mcasp_fck = {
1791 .name =
"mcasp_fck",
1792 .parent = &mcasp_sync_mux_ck,
1793 .clksel = func_mcasp_abe_gfclk_sel,
1801 .clkdm_name =
"abe_clkdm",
1804 static struct clk mcbsp1_sync_mux_ck = {
1805 .name =
"mcbsp1_sync_mux_ck",
1806 .parent = &abe_24m_fclk,
1807 .clksel = dmic_sync_mux_sel,
1815 static const struct clksel func_mcbsp1_gfclk_sel[] = {
1823 static struct clk mcbsp1_fck = {
1824 .name =
"mcbsp1_fck",
1825 .parent = &mcbsp1_sync_mux_ck,
1826 .clksel = func_mcbsp1_gfclk_sel,
1834 .clkdm_name =
"abe_clkdm",
1837 static struct clk mcbsp2_sync_mux_ck = {
1838 .name =
"mcbsp2_sync_mux_ck",
1839 .parent = &abe_24m_fclk,
1840 .clksel = dmic_sync_mux_sel,
1848 static const struct clksel func_mcbsp2_gfclk_sel[] = {
1856 static struct clk mcbsp2_fck = {
1857 .name =
"mcbsp2_fck",
1858 .parent = &mcbsp2_sync_mux_ck,
1859 .clksel = func_mcbsp2_gfclk_sel,
1867 .clkdm_name =
"abe_clkdm",
1870 static struct clk mcbsp3_sync_mux_ck = {
1871 .name =
"mcbsp3_sync_mux_ck",
1872 .parent = &abe_24m_fclk,
1873 .clksel = dmic_sync_mux_sel,
1881 static const struct clksel func_mcbsp3_gfclk_sel[] = {
1889 static struct clk mcbsp3_fck = {
1890 .name =
"mcbsp3_fck",
1891 .parent = &mcbsp3_sync_mux_ck,
1892 .clksel = func_mcbsp3_gfclk_sel,
1900 .clkdm_name =
"abe_clkdm",
1903 static const struct clksel mcbsp4_sync_mux_sel[] = {
1909 static struct clk mcbsp4_sync_mux_ck = {
1910 .name =
"mcbsp4_sync_mux_ck",
1911 .parent = &func_96m_fclk,
1912 .clksel = mcbsp4_sync_mux_sel,
1920 static const struct clksel per_mcbsp4_gfclk_sel[] = {
1927 static struct clk mcbsp4_fck = {
1928 .name =
"mcbsp4_fck",
1929 .parent = &mcbsp4_sync_mux_ck,
1930 .clksel = per_mcbsp4_gfclk_sel,
1938 .clkdm_name =
"l4_per_clkdm",
1941 static struct clk mcpdm_fck = {
1942 .name =
"mcpdm_fck",
1946 .clkdm_name =
"abe_clkdm",
1947 .parent = &pad_clks_ck,
1951 static struct clk mcspi1_fck = {
1952 .name =
"mcspi1_fck",
1956 .clkdm_name =
"l4_per_clkdm",
1957 .parent = &func_48m_fclk,
1961 static struct clk mcspi2_fck = {
1962 .name =
"mcspi2_fck",
1966 .clkdm_name =
"l4_per_clkdm",
1967 .parent = &func_48m_fclk,
1971 static struct clk mcspi3_fck = {
1972 .name =
"mcspi3_fck",
1976 .clkdm_name =
"l4_per_clkdm",
1977 .parent = &func_48m_fclk,
1981 static struct clk mcspi4_fck = {
1982 .name =
"mcspi4_fck",
1986 .clkdm_name =
"l4_per_clkdm",
1987 .parent = &func_48m_fclk,
1991 static const struct clksel hsmmc1_fclk_sel[] = {
1998 static struct clk mmc1_fck = {
2000 .parent = &func_64m_fclk,
2001 .clksel = hsmmc1_fclk_sel,
2009 .clkdm_name =
"l3_init_clkdm",
2013 static struct clk mmc2_fck = {
2015 .parent = &func_64m_fclk,
2016 .clksel = hsmmc1_fclk_sel,
2024 .clkdm_name =
"l3_init_clkdm",
2027 static struct clk mmc3_fck = {
2032 .clkdm_name =
"l4_per_clkdm",
2033 .parent = &func_48m_fclk,
2037 static struct clk mmc4_fck = {
2042 .clkdm_name =
"l4_per_clkdm",
2043 .parent = &func_48m_fclk,
2047 static struct clk mmc5_fck = {
2052 .clkdm_name =
"l4_per_clkdm",
2053 .parent = &func_48m_fclk,
2057 static struct clk ocp2scp_usb_phy_phy_48m = {
2058 .name =
"ocp2scp_usb_phy_phy_48m",
2062 .clkdm_name =
"l3_init_clkdm",
2063 .parent = &func_48m_fclk,
2067 static struct clk ocp2scp_usb_phy_ick = {
2068 .name =
"ocp2scp_usb_phy_ick",
2072 .clkdm_name =
"l3_init_clkdm",
2073 .parent = &l4_div_ck,
2077 static struct clk ocp_wp_noc_ick = {
2078 .name =
"ocp_wp_noc_ick",
2083 .clkdm_name =
"l3_instr_clkdm",
2084 .parent = &l3_div_ck,
2088 static struct clk rng_ick = {
2093 .clkdm_name =
"l4_secure_clkdm",
2094 .parent = &l4_div_ck,
2098 static struct clk sha2md5_fck = {
2099 .name =
"sha2md5_fck",
2103 .clkdm_name =
"l4_secure_clkdm",
2104 .parent = &l3_div_ck,
2108 static struct clk sl2if_ick = {
2109 .name =
"sl2if_ick",
2113 .clkdm_name =
"ivahd_clkdm",
2114 .parent = &dpll_iva_m5x2_ck,
2118 static struct clk slimbus1_fclk_1 = {
2119 .name =
"slimbus1_fclk_1",
2123 .clkdm_name =
"abe_clkdm",
2124 .parent = &func_24m_clk,
2128 static struct clk slimbus1_fclk_0 = {
2129 .name =
"slimbus1_fclk_0",
2133 .clkdm_name =
"abe_clkdm",
2134 .parent = &abe_24m_fclk,
2138 static struct clk slimbus1_fclk_2 = {
2139 .name =
"slimbus1_fclk_2",
2143 .clkdm_name =
"abe_clkdm",
2144 .parent = &pad_clks_ck,
2148 static struct clk slimbus1_slimbus_clk = {
2149 .name =
"slimbus1_slimbus_clk",
2153 .clkdm_name =
"abe_clkdm",
2154 .parent = &slimbus_clk,
2158 static struct clk slimbus1_fck = {
2159 .name =
"slimbus1_fck",
2163 .clkdm_name =
"abe_clkdm",
2164 .parent = &ocp_abe_iclk,
2168 static struct clk slimbus2_fclk_1 = {
2169 .name =
"slimbus2_fclk_1",
2173 .clkdm_name =
"l4_per_clkdm",
2174 .parent = &per_abe_24m_fclk,
2178 static struct clk slimbus2_fclk_0 = {
2179 .name =
"slimbus2_fclk_0",
2183 .clkdm_name =
"l4_per_clkdm",
2184 .parent = &func_24mc_fclk,
2188 static struct clk slimbus2_slimbus_clk = {
2189 .name =
"slimbus2_slimbus_clk",
2193 .clkdm_name =
"l4_per_clkdm",
2194 .parent = &pad_slimbus_core_clks_ck,
2198 static struct clk slimbus2_fck = {
2199 .name =
"slimbus2_fck",
2203 .clkdm_name =
"l4_per_clkdm",
2204 .parent = &l4_div_ck,
2208 static struct clk smartreflex_core_fck = {
2209 .name =
"smartreflex_core_fck",
2213 .clkdm_name =
"l4_ao_clkdm",
2214 .parent = &l4_wkup_clk_mux_ck,
2218 static struct clk smartreflex_iva_fck = {
2219 .name =
"smartreflex_iva_fck",
2223 .clkdm_name =
"l4_ao_clkdm",
2224 .parent = &l4_wkup_clk_mux_ck,
2228 static struct clk smartreflex_mpu_fck = {
2229 .name =
"smartreflex_mpu_fck",
2233 .clkdm_name =
"l4_ao_clkdm",
2234 .parent = &l4_wkup_clk_mux_ck,
2239 static struct clk timer1_fck = {
2240 .name =
"timer1_fck",
2241 .parent = &sys_clkin_ck,
2242 .clksel = abe_dpll_bypass_clk_mux_sel,
2250 .clkdm_name =
"l4_wkup_clkdm",
2254 static struct clk timer10_fck = {
2255 .name =
"timer10_fck",
2256 .parent = &sys_clkin_ck,
2257 .clksel = abe_dpll_bypass_clk_mux_sel,
2265 .clkdm_name =
"l4_per_clkdm",
2269 static struct clk timer11_fck = {
2270 .name =
"timer11_fck",
2271 .parent = &sys_clkin_ck,
2272 .clksel = abe_dpll_bypass_clk_mux_sel,
2280 .clkdm_name =
"l4_per_clkdm",
2284 static struct clk timer2_fck = {
2285 .name =
"timer2_fck",
2286 .parent = &sys_clkin_ck,
2287 .clksel = abe_dpll_bypass_clk_mux_sel,
2295 .clkdm_name =
"l4_per_clkdm",
2299 static struct clk timer3_fck = {
2300 .name =
"timer3_fck",
2301 .parent = &sys_clkin_ck,
2302 .clksel = abe_dpll_bypass_clk_mux_sel,
2310 .clkdm_name =
"l4_per_clkdm",
2314 static struct clk timer4_fck = {
2315 .name =
"timer4_fck",
2316 .parent = &sys_clkin_ck,
2317 .clksel = abe_dpll_bypass_clk_mux_sel,
2325 .clkdm_name =
"l4_per_clkdm",
2328 static const struct clksel timer5_sync_mux_sel[] = {
2335 static struct clk timer5_fck = {
2336 .name =
"timer5_fck",
2337 .parent = &syc_clk_div_ck,
2338 .clksel = timer5_sync_mux_sel,
2346 .clkdm_name =
"abe_clkdm",
2350 static struct clk timer6_fck = {
2351 .name =
"timer6_fck",
2352 .parent = &syc_clk_div_ck,
2353 .clksel = timer5_sync_mux_sel,
2361 .clkdm_name =
"abe_clkdm",
2365 static struct clk timer7_fck = {
2366 .name =
"timer7_fck",
2367 .parent = &syc_clk_div_ck,
2368 .clksel = timer5_sync_mux_sel,
2376 .clkdm_name =
"abe_clkdm",
2380 static struct clk timer8_fck = {
2381 .name =
"timer8_fck",
2382 .parent = &syc_clk_div_ck,
2383 .clksel = timer5_sync_mux_sel,
2391 .clkdm_name =
"abe_clkdm",
2395 static struct clk timer9_fck = {
2396 .name =
"timer9_fck",
2397 .parent = &sys_clkin_ck,
2398 .clksel = abe_dpll_bypass_clk_mux_sel,
2406 .clkdm_name =
"l4_per_clkdm",
2409 static struct clk uart1_fck = {
2410 .name =
"uart1_fck",
2414 .clkdm_name =
"l4_per_clkdm",
2415 .parent = &func_48m_fclk,
2419 static struct clk uart2_fck = {
2420 .name =
"uart2_fck",
2424 .clkdm_name =
"l4_per_clkdm",
2425 .parent = &func_48m_fclk,
2429 static struct clk uart3_fck = {
2430 .name =
"uart3_fck",
2434 .clkdm_name =
"l4_per_clkdm",
2435 .parent = &func_48m_fclk,
2439 static struct clk uart4_fck = {
2440 .name =
"uart4_fck",
2444 .clkdm_name =
"l4_per_clkdm",
2445 .parent = &func_48m_fclk,
2449 static struct clk usb_host_fs_fck = {
2450 .name =
"usb_host_fs_fck",
2454 .clkdm_name =
"l3_init_clkdm",
2455 .parent = &func_48mc_fclk,
2459 static const struct clksel utmi_p1_gfclk_sel[] = {
2465 static struct clk utmi_p1_gfclk = {
2466 .name =
"utmi_p1_gfclk",
2467 .parent = &init_60m_fclk,
2468 .clksel = utmi_p1_gfclk_sel,
2476 static struct clk usb_host_hs_utmi_p1_clk = {
2477 .name =
"usb_host_hs_utmi_p1_clk",
2481 .clkdm_name =
"l3_init_clkdm",
2482 .parent = &utmi_p1_gfclk,
2486 static const struct clksel utmi_p2_gfclk_sel[] = {
2492 static struct clk utmi_p2_gfclk = {
2493 .name =
"utmi_p2_gfclk",
2494 .parent = &init_60m_fclk,
2495 .clksel = utmi_p2_gfclk_sel,
2503 static struct clk usb_host_hs_utmi_p2_clk = {
2504 .name =
"usb_host_hs_utmi_p2_clk",
2508 .clkdm_name =
"l3_init_clkdm",
2509 .parent = &utmi_p2_gfclk,
2513 static struct clk usb_host_hs_utmi_p3_clk = {
2514 .name =
"usb_host_hs_utmi_p3_clk",
2518 .clkdm_name =
"l3_init_clkdm",
2519 .parent = &init_60m_fclk,
2523 static struct clk usb_host_hs_hsic480m_p1_clk = {
2524 .name =
"usb_host_hs_hsic480m_p1_clk",
2528 .clkdm_name =
"l3_init_clkdm",
2529 .parent = &dpll_usb_m2_ck,
2533 static struct clk usb_host_hs_hsic60m_p1_clk = {
2534 .name =
"usb_host_hs_hsic60m_p1_clk",
2538 .clkdm_name =
"l3_init_clkdm",
2539 .parent = &init_60m_fclk,
2543 static struct clk usb_host_hs_hsic60m_p2_clk = {
2544 .name =
"usb_host_hs_hsic60m_p2_clk",
2548 .clkdm_name =
"l3_init_clkdm",
2549 .parent = &init_60m_fclk,
2553 static struct clk usb_host_hs_hsic480m_p2_clk = {
2554 .name =
"usb_host_hs_hsic480m_p2_clk",
2558 .clkdm_name =
"l3_init_clkdm",
2559 .parent = &dpll_usb_m2_ck,
2563 static struct clk usb_host_hs_func48mclk = {
2564 .name =
"usb_host_hs_func48mclk",
2568 .clkdm_name =
"l3_init_clkdm",
2569 .parent = &func_48mc_fclk,
2573 static struct clk usb_host_hs_fck = {
2574 .name =
"usb_host_hs_fck",
2578 .clkdm_name =
"l3_init_clkdm",
2579 .parent = &init_60m_fclk,
2583 static const struct clksel otg_60m_gfclk_sel[] = {
2589 static struct clk otg_60m_gfclk = {
2590 .name =
"otg_60m_gfclk",
2591 .parent = &utmi_phy_clkout_ck,
2592 .clksel = otg_60m_gfclk_sel,
2600 static struct clk usb_otg_hs_xclk = {
2601 .name =
"usb_otg_hs_xclk",
2605 .clkdm_name =
"l3_init_clkdm",
2606 .parent = &otg_60m_gfclk,
2610 static struct clk usb_otg_hs_ick = {
2611 .name =
"usb_otg_hs_ick",
2615 .clkdm_name =
"l3_init_clkdm",
2616 .parent = &l3_div_ck,
2620 static struct clk usb_phy_cm_clk32k = {
2621 .name =
"usb_phy_cm_clk32k",
2625 .clkdm_name =
"l4_ao_clkdm",
2626 .parent = &sys_32k_ck,
2630 static struct clk usb_tll_hs_usb_ch2_clk = {
2631 .name =
"usb_tll_hs_usb_ch2_clk",
2635 .clkdm_name =
"l3_init_clkdm",
2636 .parent = &init_60m_fclk,
2640 static struct clk usb_tll_hs_usb_ch0_clk = {
2641 .name =
"usb_tll_hs_usb_ch0_clk",
2645 .clkdm_name =
"l3_init_clkdm",
2646 .parent = &init_60m_fclk,
2650 static struct clk usb_tll_hs_usb_ch1_clk = {
2651 .name =
"usb_tll_hs_usb_ch1_clk",
2655 .clkdm_name =
"l3_init_clkdm",
2656 .parent = &init_60m_fclk,
2660 static struct clk usb_tll_hs_ick = {
2661 .name =
"usb_tll_hs_ick",
2665 .clkdm_name =
"l3_init_clkdm",
2666 .parent = &l4_div_ck,
2670 static const struct clksel_rate div2_14to18_rates[] = {
2671 { .div = 14, .val = 0, .flags = RATE_IN_4430 },
2672 { .div = 18, .val = 1, .flags = RATE_IN_4430 },
2676 static const struct clksel usim_fclk_div[] = {
2677 { .parent = &dpll_per_m4x2_ck, .
rates = div2_14to18_rates },
2681 static struct clk usim_ck = {
2683 .parent = &dpll_per_m4x2_ck,
2684 .clksel = usim_fclk_div,
2693 static struct clk usim_fclk = {
2694 .name =
"usim_fclk",
2698 .clkdm_name =
"l4_wkup_clkdm",
2703 static struct clk usim_fck = {
2708 .clkdm_name =
"l4_wkup_clkdm",
2709 .parent = &sys_32k_ck,
2713 static struct clk wd_timer2_fck = {
2714 .name =
"wd_timer2_fck",
2718 .clkdm_name =
"l4_wkup_clkdm",
2719 .parent = &sys_32k_ck,
2723 static struct clk wd_timer3_fck = {
2724 .name =
"wd_timer3_fck",
2728 .clkdm_name =
"abe_clkdm",
2729 .parent = &sys_32k_ck,
2734 static const struct clksel stm_clk_div_div[] = {
2735 { .parent = &pmd_stm_clock_mux_ck, .
rates = div3_1to4_rates },
2739 static struct clk stm_clk_div_ck = {
2740 .name =
"stm_clk_div_ck",
2741 .parent = &pmd_stm_clock_mux_ck,
2742 .clksel = stm_clk_div_div,
2751 static const struct clksel trace_clk_div_div[] = {
2752 { .parent = &pmd_trace_clk_mux_ck, .
rates = div3_1to4_rates },
2756 static struct clk trace_clk_div_ck = {
2757 .name =
"trace_clk_div_ck",
2758 .parent = &pmd_trace_clk_mux_ck,
2759 .clkdm_name =
"emu_sys_clkdm",
2760 .clksel = trace_clk_div_div,
2771 static const struct clksel auxclk_src_sel[] = {
2778 static const struct clksel_rate div16_1to16_rates[] = {
2779 { .div = 1, .val = 0, .flags = RATE_IN_4430 },
2780 { .div = 2, .val = 1, .flags = RATE_IN_4430 },
2781 { .div = 3, .val = 2, .flags = RATE_IN_4430 },
2782 { .div = 4, .val = 3, .flags = RATE_IN_4430 },
2783 { .div = 5, .val = 4, .flags = RATE_IN_4430 },
2784 { .div = 6, .val = 5, .flags = RATE_IN_4430 },
2785 { .div = 7, .val = 6, .flags = RATE_IN_4430 },
2786 { .div = 8, .val = 7, .flags = RATE_IN_4430 },
2787 { .div = 9, .val = 8, .flags = RATE_IN_4430 },
2788 { .div = 10, .val = 9, .flags = RATE_IN_4430 },
2789 { .div = 11, .val = 10, .flags = RATE_IN_4430 },
2790 { .div = 12, .val = 11, .flags = RATE_IN_4430 },
2791 { .div = 13, .val = 12, .flags = RATE_IN_4430 },
2792 { .div = 14, .val = 13, .flags = RATE_IN_4430 },
2793 { .div = 15, .val = 14, .flags = RATE_IN_4430 },
2794 { .div = 16, .val = 15, .flags = RATE_IN_4430 },
2798 static struct clk auxclk0_src_ck = {
2799 .name =
"auxclk0_src_ck",
2800 .parent = &sys_clkin_ck,
2803 .clksel = auxclk_src_sel,
2811 static const struct clksel auxclk0_sel[] = {
2812 { .parent = &auxclk0_src_ck, .
rates = div16_1to16_rates },
2816 static struct clk auxclk0_ck = {
2817 .name =
"auxclk0_ck",
2818 .parent = &auxclk0_src_ck,
2819 .clksel = auxclk0_sel,
2828 static struct clk auxclk1_src_ck = {
2829 .name =
"auxclk1_src_ck",
2830 .parent = &sys_clkin_ck,
2833 .clksel = auxclk_src_sel,
2841 static const struct clksel auxclk1_sel[] = {
2842 { .parent = &auxclk1_src_ck, .
rates = div16_1to16_rates },
2846 static struct clk auxclk1_ck = {
2847 .name =
"auxclk1_ck",
2848 .parent = &auxclk1_src_ck,
2849 .clksel = auxclk1_sel,
2858 static struct clk auxclk2_src_ck = {
2859 .name =
"auxclk2_src_ck",
2860 .parent = &sys_clkin_ck,
2863 .clksel = auxclk_src_sel,
2871 static const struct clksel auxclk2_sel[] = {
2872 { .parent = &auxclk2_src_ck, .
rates = div16_1to16_rates },
2876 static struct clk auxclk2_ck = {
2877 .name =
"auxclk2_ck",
2878 .parent = &auxclk2_src_ck,
2879 .clksel = auxclk2_sel,
2888 static struct clk auxclk3_src_ck = {
2889 .name =
"auxclk3_src_ck",
2890 .parent = &sys_clkin_ck,
2893 .clksel = auxclk_src_sel,
2901 static const struct clksel auxclk3_sel[] = {
2902 { .parent = &auxclk3_src_ck, .
rates = div16_1to16_rates },
2906 static struct clk auxclk3_ck = {
2907 .name =
"auxclk3_ck",
2908 .parent = &auxclk3_src_ck,
2909 .clksel = auxclk3_sel,
2918 static struct clk auxclk4_src_ck = {
2919 .name =
"auxclk4_src_ck",
2920 .parent = &sys_clkin_ck,
2923 .clksel = auxclk_src_sel,
2931 static const struct clksel auxclk4_sel[] = {
2932 { .parent = &auxclk4_src_ck, .
rates = div16_1to16_rates },
2936 static struct clk auxclk4_ck = {
2937 .name =
"auxclk4_ck",
2938 .parent = &auxclk4_src_ck,
2939 .clksel = auxclk4_sel,
2948 static struct clk auxclk5_src_ck = {
2949 .name =
"auxclk5_src_ck",
2950 .parent = &sys_clkin_ck,
2953 .clksel = auxclk_src_sel,
2961 static const struct clksel auxclk5_sel[] = {
2962 { .parent = &auxclk5_src_ck, .
rates = div16_1to16_rates },
2966 static struct clk auxclk5_ck = {
2967 .name =
"auxclk5_ck",
2968 .parent = &auxclk5_src_ck,
2969 .clksel = auxclk5_sel,
2978 static const struct clksel auxclkreq_sel[] = {
2984 { .parent = &auxclk5_ck, .
rates = div_1_5_rates },
2988 static struct clk auxclkreq0_ck = {
2989 .name =
"auxclkreq0_ck",
2990 .parent = &auxclk0_ck,
2993 .clksel = auxclkreq_sel,
2999 static struct clk auxclkreq1_ck = {
3000 .name =
"auxclkreq1_ck",
3001 .parent = &auxclk1_ck,
3004 .clksel = auxclkreq_sel,
3010 static struct clk auxclkreq2_ck = {
3011 .name =
"auxclkreq2_ck",
3012 .parent = &auxclk2_ck,
3015 .clksel = auxclkreq_sel,
3021 static struct clk auxclkreq3_ck = {
3022 .name =
"auxclkreq3_ck",
3023 .parent = &auxclk3_ck,
3026 .clksel = auxclkreq_sel,
3032 static struct clk auxclkreq4_ck = {
3033 .name =
"auxclkreq4_ck",
3034 .parent = &auxclk4_ck,
3037 .clksel = auxclkreq_sel,
3043 static struct clk auxclkreq5_ck = {
3044 .name =
"auxclkreq5_ck",
3045 .parent = &auxclk5_ck,
3048 .clksel = auxclkreq_sel,
3058 static struct omap_clk omap44xx_clks[] = {
3061 CLK(
NULL,
"pad_slimbus_core_clks_ck", &pad_slimbus_core_clks_ck,
CK_443X),
3062 CLK(
NULL,
"secure_32k_clk_src_ck", &secure_32k_clk_src_ck,
CK_443X),
3078 CLK(
NULL,
"abe_dpll_bypass_clk_mux_ck", &abe_dpll_bypass_clk_mux_ck,
CK_443X),
3079 CLK(
NULL,
"abe_dpll_refclk_mux_ck", &abe_dpll_refclk_mux_ck,
CK_443X),
3087 CLK(
NULL,
"core_hsd_byp_clk_mux_ck", &core_hsd_byp_clk_mux_ck,
CK_443X),
3103 CLK(
NULL,
"iva_hsd_byp_clk_mux_ck", &iva_hsd_byp_clk_mux_ck,
CK_443X),
3111 CLK(
NULL,
"per_hsd_byp_clk_mux_ck", &per_hsd_byp_clk_mux_ck,
CK_443X),
3123 CLK(
NULL,
"dpll_usb_clkdcoldo_ck", &dpll_usb_clkdcoldo_ck,
CK_443X),
3142 CLK(
NULL,
"pmd_stm_clock_mux_ck", &pmd_stm_clock_mux_ck,
CK_443X),
3143 CLK(
NULL,
"pmd_trace_clk_mux_ck", &pmd_trace_clk_mux_ck,
CK_443X),
3160 CLK(
"omapdss_dss",
"ick", &dss_fck,
CK_443X),
3213 CLK(
NULL,
"ocp2scp_usb_phy_phy_48m", &ocp2scp_usb_phy_phy_48m,
CK_443X),
3223 CLK(
NULL,
"slimbus1_slimbus_clk", &slimbus1_slimbus_clk,
CK_443X),
3227 CLK(
NULL,
"slimbus2_slimbus_clk", &slimbus2_slimbus_clk,
CK_443X),
3229 CLK(
NULL,
"smartreflex_core_fck", &smartreflex_core_fck,
CK_443X),
3247 CLK(
"usbhs_omap",
"fs_fck", &usb_host_fs_fck,
CK_443X),
3250 CLK(
NULL,
"usb_host_hs_utmi_p1_clk", &usb_host_hs_utmi_p1_clk,
CK_443X),
3252 CLK(
NULL,
"usb_host_hs_utmi_p2_clk", &usb_host_hs_utmi_p2_clk,
CK_443X),
3253 CLK(
NULL,
"usb_host_hs_utmi_p3_clk", &usb_host_hs_utmi_p3_clk,
CK_443X),
3254 CLK(
NULL,
"usb_host_hs_hsic480m_p1_clk", &usb_host_hs_hsic480m_p1_clk,
CK_443X),
3255 CLK(
NULL,
"usb_host_hs_hsic60m_p1_clk", &usb_host_hs_hsic60m_p1_clk,
CK_443X),
3256 CLK(
NULL,
"usb_host_hs_hsic60m_p2_clk", &usb_host_hs_hsic60m_p2_clk,
CK_443X),
3257 CLK(
NULL,
"usb_host_hs_hsic480m_p2_clk", &usb_host_hs_hsic480m_p2_clk,
CK_443X),
3258 CLK(
NULL,
"usb_host_hs_func48mclk", &usb_host_hs_func48mclk,
CK_443X),
3260 CLK(
"usbhs_omap",
"hs_fck", &usb_host_hs_fck,
CK_443X),
3264 CLK(
"musb-omap2430",
"ick", &usb_otg_hs_ick,
CK_443X),
3266 CLK(
NULL,
"usb_tll_hs_usb_ch2_clk", &usb_tll_hs_usb_ch2_clk,
CK_443X),
3267 CLK(
NULL,
"usb_tll_hs_usb_ch0_clk", &usb_tll_hs_usb_ch0_clk,
CK_443X),
3268 CLK(
NULL,
"usb_tll_hs_usb_ch1_clk", &usb_tll_hs_usb_ch1_clk,
CK_443X),
3270 CLK(
"usbhs_omap",
"usbtll_ick", &usb_tll_hs_ick,
CK_443X),
3271 CLK(
"usbhs_tll",
"usbtll_ick", &usb_tll_hs_ick,
CK_443X),
3326 CLK(
"omap_timer.1",
"timer_sys_ck", &sys_clkin_ck,
CK_443X),
3327 CLK(
"omap_timer.2",
"timer_sys_ck", &sys_clkin_ck,
CK_443X),
3328 CLK(
"omap_timer.3",
"timer_sys_ck", &sys_clkin_ck,
CK_443X),
3329 CLK(
"omap_timer.4",
"timer_sys_ck", &sys_clkin_ck,
CK_443X),
3330 CLK(
"omap_timer.9",
"timer_sys_ck", &sys_clkin_ck,
CK_443X),
3331 CLK(
"omap_timer.10",
"timer_sys_ck", &sys_clkin_ck,
CK_443X),
3332 CLK(
"omap_timer.11",
"timer_sys_ck", &sys_clkin_ck,
CK_443X),
3333 CLK(
"omap_timer.5",
"timer_sys_ck", &syc_clk_div_ck,
CK_443X),
3334 CLK(
"omap_timer.6",
"timer_sys_ck", &syc_clk_div_ck,
CK_443X),
3335 CLK(
"omap_timer.7",
"timer_sys_ck", &syc_clk_div_ck,
CK_443X),
3336 CLK(
"omap_timer.8",
"timer_sys_ck", &syc_clk_div_ck,
CK_443X),
3337 CLK(
"4a318000.timer",
"timer_sys_ck", &sys_clkin_ck,
CK_443X),
3338 CLK(
"48032000.timer",
"timer_sys_ck", &sys_clkin_ck,
CK_443X),
3339 CLK(
"48034000.timer",
"timer_sys_ck", &sys_clkin_ck,
CK_443X),
3340 CLK(
"48036000.timer",
"timer_sys_ck", &sys_clkin_ck,
CK_443X),
3341 CLK(
"4803e000.timer",
"timer_sys_ck", &sys_clkin_ck,
CK_443X),
3342 CLK(
"48086000.timer",
"timer_sys_ck", &sys_clkin_ck,
CK_443X),
3343 CLK(
"48088000.timer",
"timer_sys_ck", &sys_clkin_ck,
CK_443X),
3344 CLK(
"49038000.timer",
"timer_sys_ck", &syc_clk_div_ck,
CK_443X),
3345 CLK(
"4903a000.timer",
"timer_sys_ck", &syc_clk_div_ck,
CK_443X),
3346 CLK(
"4903c000.timer",
"timer_sys_ck", &syc_clk_div_ck,
CK_443X),
3347 CLK(
"4903e000.timer",
"timer_sys_ck", &syc_clk_div_ck,
CK_443X),
3360 cpu_mask = RATE_IN_4460 | RATE_IN_4430;
3364 pr_warn(
"WARNING: OMAP4470 clock data incomplete!\n");
3378 for (c = omap44xx_clks; c < omap44xx_clks +
ARRAY_SIZE(omap44xx_clks);
3382 for (c = omap44xx_clks; c < omap44xx_clks +
ARRAY_SIZE(omap44xx_clks);
3384 if (c->
cpu & cpu_clkflg) {