1 /*
2  * OMAP3 Legacy clock data
3  *
4  * Copyright (C) 2014 Texas Instruments, Inc
5  *     Tero Kristo (t-kristo@ti.com)
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License as
9  * published by the Free Software Foundation version 2.
10  *
11  * This program is distributed "as is" WITHOUT ANY WARRANTY of any
12  * kind, whether express or implied; without even the implied warranty
13  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  */
16 
17 #include <linux/kernel.h>
18 #include <linux/clk.h>
19 #include <linux/clk-provider.h>
20 #include <linux/clk/ti.h>
21 
22 #include "clock.h"
23 
24 static struct ti_clk_fixed virt_12m_ck_data = {
25 	.frequency = 12000000,
26 };
27 
28 static struct ti_clk virt_12m_ck = {
29 	.name = "virt_12m_ck",
30 	.type = TI_CLK_FIXED,
31 	.data = &virt_12m_ck_data,
32 };
33 
34 static struct ti_clk_fixed virt_13m_ck_data = {
35 	.frequency = 13000000,
36 };
37 
38 static struct ti_clk virt_13m_ck = {
39 	.name = "virt_13m_ck",
40 	.type = TI_CLK_FIXED,
41 	.data = &virt_13m_ck_data,
42 };
43 
44 static struct ti_clk_fixed virt_19200000_ck_data = {
45 	.frequency = 19200000,
46 };
47 
48 static struct ti_clk virt_19200000_ck = {
49 	.name = "virt_19200000_ck",
50 	.type = TI_CLK_FIXED,
51 	.data = &virt_19200000_ck_data,
52 };
53 
54 static struct ti_clk_fixed virt_26000000_ck_data = {
55 	.frequency = 26000000,
56 };
57 
58 static struct ti_clk virt_26000000_ck = {
59 	.name = "virt_26000000_ck",
60 	.type = TI_CLK_FIXED,
61 	.data = &virt_26000000_ck_data,
62 };
63 
64 static struct ti_clk_fixed virt_38_4m_ck_data = {
65 	.frequency = 38400000,
66 };
67 
68 static struct ti_clk virt_38_4m_ck = {
69 	.name = "virt_38_4m_ck",
70 	.type = TI_CLK_FIXED,
71 	.data = &virt_38_4m_ck_data,
72 };
73 
74 static struct ti_clk_fixed virt_16_8m_ck_data = {
75 	.frequency = 16800000,
76 };
77 
78 static struct ti_clk virt_16_8m_ck = {
79 	.name = "virt_16_8m_ck",
80 	.type = TI_CLK_FIXED,
81 	.data = &virt_16_8m_ck_data,
82 };
83 
84 static const char *osc_sys_ck_parents[] = {
85 	"virt_12m_ck",
86 	"virt_13m_ck",
87 	"virt_19200000_ck",
88 	"virt_26000000_ck",
89 	"virt_38_4m_ck",
90 	"virt_16_8m_ck",
91 };
92 
93 static struct ti_clk_mux osc_sys_ck_data = {
94 	.num_parents = ARRAY_SIZE(osc_sys_ck_parents),
95 	.reg = 0xd40,
96 	.module = TI_CLKM_PRM,
97 	.parents = osc_sys_ck_parents,
98 };
99 
100 static struct ti_clk osc_sys_ck = {
101 	.name = "osc_sys_ck",
102 	.type = TI_CLK_MUX,
103 	.data = &osc_sys_ck_data,
104 };
105 
106 static struct ti_clk_divider sys_ck_data = {
107 	.parent = "osc_sys_ck",
108 	.bit_shift = 6,
109 	.max_div = 3,
110 	.reg = 0x1270,
111 	.module = TI_CLKM_PRM,
112 	.flags = CLKF_INDEX_STARTS_AT_ONE,
113 };
114 
115 static struct ti_clk sys_ck = {
116 	.name = "sys_ck",
117 	.type = TI_CLK_DIVIDER,
118 	.data = &sys_ck_data,
119 };
120 
121 static const char *dpll3_ck_parents[] = {
122 	"sys_ck",
123 	"sys_ck",
124 };
125 
126 static struct ti_clk_dpll dpll3_ck_data = {
127 	.num_parents = ARRAY_SIZE(dpll3_ck_parents),
128 	.control_reg = 0xd00,
129 	.idlest_reg = 0xd20,
130 	.mult_div1_reg = 0xd40,
131 	.autoidle_reg = 0xd30,
132 	.module = TI_CLKM_CM,
133 	.parents = dpll3_ck_parents,
134 	.flags = CLKF_CORE,
135 	.freqsel_mask = 0xf0,
136 	.div1_mask = 0x7f00,
137 	.idlest_mask = 0x1,
138 	.auto_recal_bit = 0x3,
139 	.max_divider = 0x80,
140 	.min_divider = 0x1,
141 	.recal_en_bit = 0x5,
142 	.max_multiplier = 0x7ff,
143 	.enable_mask = 0x7,
144 	.mult_mask = 0x7ff0000,
145 	.recal_st_bit = 0x5,
146 	.autoidle_mask = 0x7,
147 };
148 
149 static struct ti_clk dpll3_ck = {
150 	.name = "dpll3_ck",
151 	.clkdm_name = "dpll3_clkdm",
152 	.type = TI_CLK_DPLL,
153 	.data = &dpll3_ck_data,
154 };
155 
156 static struct ti_clk_divider dpll3_m2_ck_data = {
157 	.parent = "dpll3_ck",
158 	.bit_shift = 27,
159 	.max_div = 31,
160 	.reg = 0xd40,
161 	.module = TI_CLKM_CM,
162 	.flags = CLKF_INDEX_STARTS_AT_ONE,
163 };
164 
165 static struct ti_clk dpll3_m2_ck = {
166 	.name = "dpll3_m2_ck",
167 	.type = TI_CLK_DIVIDER,
168 	.data = &dpll3_m2_ck_data,
169 };
170 
171 static struct ti_clk_fixed_factor core_ck_data = {
172 	.parent = "dpll3_m2_ck",
173 	.div = 1,
174 	.mult = 1,
175 };
176 
177 static struct ti_clk core_ck = {
178 	.name = "core_ck",
179 	.type = TI_CLK_FIXED_FACTOR,
180 	.data = &core_ck_data,
181 };
182 
183 static struct ti_clk_divider l3_ick_data = {
184 	.parent = "core_ck",
185 	.max_div = 3,
186 	.reg = 0xa40,
187 	.module = TI_CLKM_CM,
188 	.flags = CLKF_INDEX_STARTS_AT_ONE,
189 };
190 
191 static struct ti_clk l3_ick = {
192 	.name = "l3_ick",
193 	.type = TI_CLK_DIVIDER,
194 	.data = &l3_ick_data,
195 };
196 
197 static struct ti_clk_fixed_factor security_l3_ick_data = {
198 	.parent = "l3_ick",
199 	.div = 1,
200 	.mult = 1,
201 };
202 
203 static struct ti_clk security_l3_ick = {
204 	.name = "security_l3_ick",
205 	.type = TI_CLK_FIXED_FACTOR,
206 	.data = &security_l3_ick_data,
207 };
208 
209 static struct ti_clk_fixed_factor wkup_l4_ick_data = {
210 	.parent = "sys_ck",
211 	.div = 1,
212 	.mult = 1,
213 };
214 
215 static struct ti_clk wkup_l4_ick = {
216 	.name = "wkup_l4_ick",
217 	.type = TI_CLK_FIXED_FACTOR,
218 	.data = &wkup_l4_ick_data,
219 };
220 
221 static struct ti_clk_gate usim_ick_data = {
222 	.parent = "wkup_l4_ick",
223 	.bit_shift = 9,
224 	.reg = 0xc10,
225 	.module = TI_CLKM_CM,
226 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
227 };
228 
229 static struct ti_clk usim_ick = {
230 	.name = "usim_ick",
231 	.clkdm_name = "wkup_clkdm",
232 	.type = TI_CLK_GATE,
233 	.data = &usim_ick_data,
234 };
235 
236 static struct ti_clk_gate dss2_alwon_fck_data = {
237 	.parent = "sys_ck",
238 	.bit_shift = 1,
239 	.reg = 0xe00,
240 	.module = TI_CLKM_CM,
241 };
242 
243 static struct ti_clk dss2_alwon_fck = {
244 	.name = "dss2_alwon_fck",
245 	.clkdm_name = "dss_clkdm",
246 	.type = TI_CLK_GATE,
247 	.data = &dss2_alwon_fck_data,
248 };
249 
250 static struct ti_clk_divider l4_ick_data = {
251 	.parent = "l3_ick",
252 	.bit_shift = 2,
253 	.max_div = 3,
254 	.reg = 0xa40,
255 	.module = TI_CLKM_CM,
256 	.flags = CLKF_INDEX_STARTS_AT_ONE,
257 };
258 
259 static struct ti_clk l4_ick = {
260 	.name = "l4_ick",
261 	.type = TI_CLK_DIVIDER,
262 	.data = &l4_ick_data,
263 };
264 
265 static struct ti_clk_fixed_factor core_l4_ick_data = {
266 	.parent = "l4_ick",
267 	.div = 1,
268 	.mult = 1,
269 };
270 
271 static struct ti_clk core_l4_ick = {
272 	.name = "core_l4_ick",
273 	.type = TI_CLK_FIXED_FACTOR,
274 	.data = &core_l4_ick_data,
275 };
276 
277 static struct ti_clk_gate mmchs2_ick_data = {
278 	.parent = "core_l4_ick",
279 	.bit_shift = 25,
280 	.reg = 0xa10,
281 	.module = TI_CLKM_CM,
282 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
283 };
284 
285 static struct ti_clk mmchs2_ick = {
286 	.name = "mmchs2_ick",
287 	.clkdm_name = "core_l4_clkdm",
288 	.type = TI_CLK_GATE,
289 	.data = &mmchs2_ick_data,
290 };
291 
292 static const char *dpll4_ck_parents[] = {
293 	"sys_ck",
294 	"sys_ck",
295 };
296 
297 static struct ti_clk_dpll dpll4_ck_data = {
298 	.num_parents = ARRAY_SIZE(dpll4_ck_parents),
299 	.control_reg = 0xd00,
300 	.idlest_reg = 0xd20,
301 	.mult_div1_reg = 0xd44,
302 	.autoidle_reg = 0xd30,
303 	.module = TI_CLKM_CM,
304 	.parents = dpll4_ck_parents,
305 	.flags = CLKF_PER,
306 	.freqsel_mask = 0xf00000,
307 	.modes = 0x82,
308 	.div1_mask = 0x7f,
309 	.idlest_mask = 0x2,
310 	.auto_recal_bit = 0x13,
311 	.max_divider = 0x80,
312 	.min_divider = 0x1,
313 	.recal_en_bit = 0x6,
314 	.max_multiplier = 0x7ff,
315 	.enable_mask = 0x70000,
316 	.mult_mask = 0x7ff00,
317 	.recal_st_bit = 0x6,
318 	.autoidle_mask = 0x38,
319 };
320 
321 static struct ti_clk dpll4_ck = {
322 	.name = "dpll4_ck",
323 	.clkdm_name = "dpll4_clkdm",
324 	.type = TI_CLK_DPLL,
325 	.data = &dpll4_ck_data,
326 };
327 
328 static struct ti_clk_divider dpll4_m2_ck_data = {
329 	.parent = "dpll4_ck",
330 	.max_div = 63,
331 	.reg = 0xd48,
332 	.module = TI_CLKM_CM,
333 	.flags = CLKF_INDEX_STARTS_AT_ONE,
334 };
335 
336 static struct ti_clk dpll4_m2_ck = {
337 	.name = "dpll4_m2_ck",
338 	.type = TI_CLK_DIVIDER,
339 	.data = &dpll4_m2_ck_data,
340 };
341 
342 static struct ti_clk_fixed_factor dpll4_m2x2_mul_ck_data = {
343 	.parent = "dpll4_m2_ck",
344 	.div = 1,
345 	.mult = 2,
346 };
347 
348 static struct ti_clk dpll4_m2x2_mul_ck = {
349 	.name = "dpll4_m2x2_mul_ck",
350 	.type = TI_CLK_FIXED_FACTOR,
351 	.data = &dpll4_m2x2_mul_ck_data,
352 };
353 
354 static struct ti_clk_gate dpll4_m2x2_ck_data = {
355 	.parent = "dpll4_m2x2_mul_ck",
356 	.bit_shift = 0x1b,
357 	.reg = 0xd00,
358 	.module = TI_CLKM_CM,
359 	.flags = CLKF_SET_BIT_TO_DISABLE,
360 };
361 
362 static struct ti_clk dpll4_m2x2_ck = {
363 	.name = "dpll4_m2x2_ck",
364 	.type = TI_CLK_GATE,
365 	.data = &dpll4_m2x2_ck_data,
366 };
367 
368 static struct ti_clk_fixed_factor omap_96m_alwon_fck_data = {
369 	.parent = "dpll4_m2x2_ck",
370 	.div = 1,
371 	.mult = 1,
372 };
373 
374 static struct ti_clk omap_96m_alwon_fck = {
375 	.name = "omap_96m_alwon_fck",
376 	.type = TI_CLK_FIXED_FACTOR,
377 	.data = &omap_96m_alwon_fck_data,
378 };
379 
380 static struct ti_clk_fixed_factor cm_96m_fck_data = {
381 	.parent = "omap_96m_alwon_fck",
382 	.div = 1,
383 	.mult = 1,
384 };
385 
386 static struct ti_clk cm_96m_fck = {
387 	.name = "cm_96m_fck",
388 	.type = TI_CLK_FIXED_FACTOR,
389 	.data = &cm_96m_fck_data,
390 };
391 
392 static const char *omap_96m_fck_parents[] = {
393 	"cm_96m_fck",
394 	"sys_ck",
395 };
396 
397 static struct ti_clk_mux omap_96m_fck_data = {
398 	.bit_shift = 6,
399 	.num_parents = ARRAY_SIZE(omap_96m_fck_parents),
400 	.reg = 0xd40,
401 	.module = TI_CLKM_CM,
402 	.parents = omap_96m_fck_parents,
403 };
404 
405 static struct ti_clk omap_96m_fck = {
406 	.name = "omap_96m_fck",
407 	.type = TI_CLK_MUX,
408 	.data = &omap_96m_fck_data,
409 };
410 
411 static struct ti_clk_fixed_factor core_96m_fck_data = {
412 	.parent = "omap_96m_fck",
413 	.div = 1,
414 	.mult = 1,
415 };
416 
417 static struct ti_clk core_96m_fck = {
418 	.name = "core_96m_fck",
419 	.type = TI_CLK_FIXED_FACTOR,
420 	.data = &core_96m_fck_data,
421 };
422 
423 static struct ti_clk_gate mspro_fck_data = {
424 	.parent = "core_96m_fck",
425 	.bit_shift = 23,
426 	.reg = 0xa00,
427 	.module = TI_CLKM_CM,
428 	.flags = CLKF_WAIT,
429 };
430 
431 static struct ti_clk mspro_fck = {
432 	.name = "mspro_fck",
433 	.clkdm_name = "core_l4_clkdm",
434 	.type = TI_CLK_GATE,
435 	.data = &mspro_fck_data,
436 };
437 
438 static struct ti_clk_gate dss_ick_3430es2_data = {
439 	.parent = "l4_ick",
440 	.bit_shift = 0,
441 	.reg = 0xe10,
442 	.module = TI_CLKM_CM,
443 	.flags = CLKF_DSS | CLKF_OMAP3 | CLKF_INTERFACE,
444 };
445 
446 static struct ti_clk dss_ick_3430es2 = {
447 	.name = "dss_ick",
448 	.clkdm_name = "dss_clkdm",
449 	.type = TI_CLK_GATE,
450 	.data = &dss_ick_3430es2_data,
451 };
452 
453 static struct ti_clk_gate uart4_ick_am35xx_data = {
454 	.parent = "core_l4_ick",
455 	.bit_shift = 23,
456 	.reg = 0xa10,
457 	.module = TI_CLKM_CM,
458 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
459 };
460 
461 static struct ti_clk uart4_ick_am35xx = {
462 	.name = "uart4_ick_am35xx",
463 	.clkdm_name = "core_l4_clkdm",
464 	.type = TI_CLK_GATE,
465 	.data = &uart4_ick_am35xx_data,
466 };
467 
468 static struct ti_clk_fixed_factor security_l4_ick2_data = {
469 	.parent = "l4_ick",
470 	.div = 1,
471 	.mult = 1,
472 };
473 
474 static struct ti_clk security_l4_ick2 = {
475 	.name = "security_l4_ick2",
476 	.type = TI_CLK_FIXED_FACTOR,
477 	.data = &security_l4_ick2_data,
478 };
479 
480 static struct ti_clk_gate aes1_ick_data = {
481 	.parent = "security_l4_ick2",
482 	.bit_shift = 3,
483 	.reg = 0xa14,
484 	.module = TI_CLKM_CM,
485 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
486 };
487 
488 static struct ti_clk aes1_ick = {
489 	.name = "aes1_ick",
490 	.type = TI_CLK_GATE,
491 	.data = &aes1_ick_data,
492 };
493 
494 static const char *dpll5_ck_parents[] = {
495 	"sys_ck",
496 	"sys_ck",
497 };
498 
499 static struct ti_clk_dpll dpll5_ck_data = {
500 	.num_parents = ARRAY_SIZE(dpll5_ck_parents),
501 	.control_reg = 0xd04,
502 	.idlest_reg = 0xd24,
503 	.mult_div1_reg = 0xd4c,
504 	.autoidle_reg = 0xd34,
505 	.module = TI_CLKM_CM,
506 	.parents = dpll5_ck_parents,
507 	.freqsel_mask = 0xf0,
508 	.modes = 0x82,
509 	.div1_mask = 0x7f,
510 	.idlest_mask = 0x1,
511 	.auto_recal_bit = 0x3,
512 	.max_divider = 0x80,
513 	.min_divider = 0x1,
514 	.recal_en_bit = 0x19,
515 	.max_multiplier = 0x7ff,
516 	.enable_mask = 0x7,
517 	.mult_mask = 0x7ff00,
518 	.recal_st_bit = 0x19,
519 	.autoidle_mask = 0x7,
520 };
521 
522 static struct ti_clk dpll5_ck = {
523 	.name = "dpll5_ck",
524 	.clkdm_name = "dpll5_clkdm",
525 	.type = TI_CLK_DPLL,
526 	.data = &dpll5_ck_data,
527 };
528 
529 static struct ti_clk_divider dpll5_m2_ck_data = {
530 	.parent = "dpll5_ck",
531 	.max_div = 31,
532 	.reg = 0xd50,
533 	.module = TI_CLKM_CM,
534 	.flags = CLKF_INDEX_STARTS_AT_ONE,
535 };
536 
537 static struct ti_clk dpll5_m2_ck = {
538 	.name = "dpll5_m2_ck",
539 	.type = TI_CLK_DIVIDER,
540 	.data = &dpll5_m2_ck_data,
541 };
542 
543 static struct ti_clk_gate usbhost_120m_fck_data = {
544 	.parent = "dpll5_m2_ck",
545 	.bit_shift = 1,
546 	.reg = 0x1400,
547 	.module = TI_CLKM_CM,
548 };
549 
550 static struct ti_clk usbhost_120m_fck = {
551 	.name = "usbhost_120m_fck",
552 	.clkdm_name = "usbhost_clkdm",
553 	.type = TI_CLK_GATE,
554 	.data = &usbhost_120m_fck_data,
555 };
556 
557 static struct ti_clk_fixed_factor cm_96m_d2_fck_data = {
558 	.parent = "cm_96m_fck",
559 	.div = 2,
560 	.mult = 1,
561 };
562 
563 static struct ti_clk cm_96m_d2_fck = {
564 	.name = "cm_96m_d2_fck",
565 	.type = TI_CLK_FIXED_FACTOR,
566 	.data = &cm_96m_d2_fck_data,
567 };
568 
569 static struct ti_clk_fixed sys_altclk_data = {
570 	.frequency = 0x0,
571 };
572 
573 static struct ti_clk sys_altclk = {
574 	.name = "sys_altclk",
575 	.type = TI_CLK_FIXED,
576 	.data = &sys_altclk_data,
577 };
578 
579 static const char *omap_48m_fck_parents[] = {
580 	"cm_96m_d2_fck",
581 	"sys_altclk",
582 };
583 
584 static struct ti_clk_mux omap_48m_fck_data = {
585 	.bit_shift = 3,
586 	.num_parents = ARRAY_SIZE(omap_48m_fck_parents),
587 	.reg = 0xd40,
588 	.module = TI_CLKM_CM,
589 	.parents = omap_48m_fck_parents,
590 };
591 
592 static struct ti_clk omap_48m_fck = {
593 	.name = "omap_48m_fck",
594 	.type = TI_CLK_MUX,
595 	.data = &omap_48m_fck_data,
596 };
597 
598 static struct ti_clk_fixed_factor core_48m_fck_data = {
599 	.parent = "omap_48m_fck",
600 	.div = 1,
601 	.mult = 1,
602 };
603 
604 static struct ti_clk core_48m_fck = {
605 	.name = "core_48m_fck",
606 	.type = TI_CLK_FIXED_FACTOR,
607 	.data = &core_48m_fck_data,
608 };
609 
610 static struct ti_clk_fixed mcbsp_clks_data = {
611 	.frequency = 0x0,
612 };
613 
614 static struct ti_clk mcbsp_clks = {
615 	.name = "mcbsp_clks",
616 	.type = TI_CLK_FIXED,
617 	.data = &mcbsp_clks_data,
618 };
619 
620 static struct ti_clk_gate mcbsp2_gate_fck_data = {
621 	.parent = "mcbsp_clks",
622 	.bit_shift = 0,
623 	.reg = 0x1000,
624 	.module = TI_CLKM_CM,
625 };
626 
627 static struct ti_clk_fixed_factor per_96m_fck_data = {
628 	.parent = "omap_96m_alwon_fck",
629 	.div = 1,
630 	.mult = 1,
631 };
632 
633 static struct ti_clk per_96m_fck = {
634 	.name = "per_96m_fck",
635 	.type = TI_CLK_FIXED_FACTOR,
636 	.data = &per_96m_fck_data,
637 };
638 
639 static const char *mcbsp2_mux_fck_parents[] = {
640 	"per_96m_fck",
641 	"mcbsp_clks",
642 };
643 
644 static struct ti_clk_mux mcbsp2_mux_fck_data = {
645 	.bit_shift = 6,
646 	.num_parents = ARRAY_SIZE(mcbsp2_mux_fck_parents),
647 	.reg = 0x274,
648 	.module = TI_CLKM_SCRM,
649 	.parents = mcbsp2_mux_fck_parents,
650 };
651 
652 static struct ti_clk_composite mcbsp2_fck_data = {
653 	.mux = &mcbsp2_mux_fck_data,
654 	.gate = &mcbsp2_gate_fck_data,
655 };
656 
657 static struct ti_clk mcbsp2_fck = {
658 	.name = "mcbsp2_fck",
659 	.type = TI_CLK_COMPOSITE,
660 	.data = &mcbsp2_fck_data,
661 };
662 
663 static struct ti_clk_fixed_factor dpll3_m2x2_ck_data = {
664 	.parent = "dpll3_m2_ck",
665 	.div = 1,
666 	.mult = 2,
667 };
668 
669 static struct ti_clk dpll3_m2x2_ck = {
670 	.name = "dpll3_m2x2_ck",
671 	.type = TI_CLK_FIXED_FACTOR,
672 	.data = &dpll3_m2x2_ck_data,
673 };
674 
675 static struct ti_clk_fixed_factor corex2_fck_data = {
676 	.parent = "dpll3_m2x2_ck",
677 	.div = 1,
678 	.mult = 1,
679 };
680 
681 static struct ti_clk corex2_fck = {
682 	.name = "corex2_fck",
683 	.type = TI_CLK_FIXED_FACTOR,
684 	.data = &corex2_fck_data,
685 };
686 
687 static struct ti_clk_gate ssi_ssr_gate_fck_3430es1_data = {
688 	.parent = "corex2_fck",
689 	.bit_shift = 0,
690 	.reg = 0xa00,
691 	.module = TI_CLKM_CM,
692 	.flags = CLKF_NO_WAIT,
693 };
694 
695 static int ssi_ssr_div_fck_3430es1_divs[] = {
696 	0,
697 	1,
698 	2,
699 	3,
700 	4,
701 	0,
702 	6,
703 	0,
704 	8,
705 };
706 
707 static struct ti_clk_divider ssi_ssr_div_fck_3430es1_data = {
708 	.num_dividers = ARRAY_SIZE(ssi_ssr_div_fck_3430es1_divs),
709 	.parent = "corex2_fck",
710 	.bit_shift = 8,
711 	.dividers = ssi_ssr_div_fck_3430es1_divs,
712 	.reg = 0xa40,
713 	.module = TI_CLKM_CM,
714 };
715 
716 static struct ti_clk_composite ssi_ssr_fck_3430es1_data = {
717 	.gate = &ssi_ssr_gate_fck_3430es1_data,
718 	.divider = &ssi_ssr_div_fck_3430es1_data,
719 };
720 
721 static struct ti_clk ssi_ssr_fck_3430es1 = {
722 	.name = "ssi_ssr_fck",
723 	.type = TI_CLK_COMPOSITE,
724 	.data = &ssi_ssr_fck_3430es1_data,
725 };
726 
727 static struct ti_clk_fixed_factor ssi_sst_fck_3430es1_data = {
728 	.parent = "ssi_ssr_fck",
729 	.div = 2,
730 	.mult = 1,
731 };
732 
733 static struct ti_clk ssi_sst_fck_3430es1 = {
734 	.name = "ssi_sst_fck",
735 	.type = TI_CLK_FIXED_FACTOR,
736 	.data = &ssi_sst_fck_3430es1_data,
737 };
738 
739 static struct ti_clk_fixed omap_32k_fck_data = {
740 	.frequency = 32768,
741 };
742 
743 static struct ti_clk omap_32k_fck = {
744 	.name = "omap_32k_fck",
745 	.type = TI_CLK_FIXED,
746 	.data = &omap_32k_fck_data,
747 };
748 
749 static struct ti_clk_fixed_factor per_32k_alwon_fck_data = {
750 	.parent = "omap_32k_fck",
751 	.div = 1,
752 	.mult = 1,
753 };
754 
755 static struct ti_clk per_32k_alwon_fck = {
756 	.name = "per_32k_alwon_fck",
757 	.type = TI_CLK_FIXED_FACTOR,
758 	.data = &per_32k_alwon_fck_data,
759 };
760 
761 static struct ti_clk_gate gpio5_dbck_data = {
762 	.parent = "per_32k_alwon_fck",
763 	.bit_shift = 16,
764 	.reg = 0x1000,
765 	.module = TI_CLKM_CM,
766 };
767 
768 static struct ti_clk gpio5_dbck = {
769 	.name = "gpio5_dbck",
770 	.clkdm_name = "per_clkdm",
771 	.type = TI_CLK_GATE,
772 	.data = &gpio5_dbck_data,
773 };
774 
775 static struct ti_clk_gate gpt1_ick_data = {
776 	.parent = "wkup_l4_ick",
777 	.bit_shift = 0,
778 	.reg = 0xc10,
779 	.module = TI_CLKM_CM,
780 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
781 };
782 
783 static struct ti_clk gpt1_ick = {
784 	.name = "gpt1_ick",
785 	.clkdm_name = "wkup_clkdm",
786 	.type = TI_CLK_GATE,
787 	.data = &gpt1_ick_data,
788 };
789 
790 static struct ti_clk_gate mcspi3_fck_data = {
791 	.parent = "core_48m_fck",
792 	.bit_shift = 20,
793 	.reg = 0xa00,
794 	.module = TI_CLKM_CM,
795 	.flags = CLKF_WAIT,
796 };
797 
798 static struct ti_clk mcspi3_fck = {
799 	.name = "mcspi3_fck",
800 	.clkdm_name = "core_l4_clkdm",
801 	.type = TI_CLK_GATE,
802 	.data = &mcspi3_fck_data,
803 };
804 
805 static struct ti_clk_gate gpt2_gate_fck_data = {
806 	.parent = "sys_ck",
807 	.bit_shift = 3,
808 	.reg = 0x1000,
809 	.module = TI_CLKM_CM,
810 };
811 
812 static const char *gpt2_mux_fck_parents[] = {
813 	"omap_32k_fck",
814 	"sys_ck",
815 };
816 
817 static struct ti_clk_mux gpt2_mux_fck_data = {
818 	.num_parents = ARRAY_SIZE(gpt2_mux_fck_parents),
819 	.reg = 0x1040,
820 	.module = TI_CLKM_CM,
821 	.parents = gpt2_mux_fck_parents,
822 };
823 
824 static struct ti_clk_composite gpt2_fck_data = {
825 	.mux = &gpt2_mux_fck_data,
826 	.gate = &gpt2_gate_fck_data,
827 };
828 
829 static struct ti_clk gpt2_fck = {
830 	.name = "gpt2_fck",
831 	.type = TI_CLK_COMPOSITE,
832 	.data = &gpt2_fck_data,
833 };
834 
835 static struct ti_clk_gate gpt10_ick_data = {
836 	.parent = "core_l4_ick",
837 	.bit_shift = 11,
838 	.reg = 0xa10,
839 	.module = TI_CLKM_CM,
840 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
841 };
842 
843 static struct ti_clk gpt10_ick = {
844 	.name = "gpt10_ick",
845 	.clkdm_name = "core_l4_clkdm",
846 	.type = TI_CLK_GATE,
847 	.data = &gpt10_ick_data,
848 };
849 
850 static struct ti_clk_gate uart2_fck_data = {
851 	.parent = "core_48m_fck",
852 	.bit_shift = 14,
853 	.reg = 0xa00,
854 	.module = TI_CLKM_CM,
855 	.flags = CLKF_WAIT,
856 };
857 
858 static struct ti_clk uart2_fck = {
859 	.name = "uart2_fck",
860 	.clkdm_name = "core_l4_clkdm",
861 	.type = TI_CLK_GATE,
862 	.data = &uart2_fck_data,
863 };
864 
865 static struct ti_clk_fixed_factor sr_l4_ick_data = {
866 	.parent = "l4_ick",
867 	.div = 1,
868 	.mult = 1,
869 };
870 
871 static struct ti_clk sr_l4_ick = {
872 	.name = "sr_l4_ick",
873 	.type = TI_CLK_FIXED_FACTOR,
874 	.data = &sr_l4_ick_data,
875 };
876 
877 static struct ti_clk_fixed_factor omap_96m_d8_fck_data = {
878 	.parent = "omap_96m_fck",
879 	.div = 8,
880 	.mult = 1,
881 };
882 
883 static struct ti_clk omap_96m_d8_fck = {
884 	.name = "omap_96m_d8_fck",
885 	.type = TI_CLK_FIXED_FACTOR,
886 	.data = &omap_96m_d8_fck_data,
887 };
888 
889 static struct ti_clk_divider dpll4_m5_ck_data = {
890 	.parent = "dpll4_ck",
891 	.max_div = 63,
892 	.reg = 0xf40,
893 	.module = TI_CLKM_CM,
894 	.flags = CLKF_INDEX_STARTS_AT_ONE,
895 };
896 
897 static struct ti_clk dpll4_m5_ck = {
898 	.name = "dpll4_m5_ck",
899 	.type = TI_CLK_DIVIDER,
900 	.data = &dpll4_m5_ck_data,
901 };
902 
903 static struct ti_clk_fixed_factor dpll4_m5x2_mul_ck_data = {
904 	.parent = "dpll4_m5_ck",
905 	.div = 1,
906 	.mult = 2,
907 	.flags = CLKF_SET_RATE_PARENT,
908 };
909 
910 static struct ti_clk dpll4_m5x2_mul_ck = {
911 	.name = "dpll4_m5x2_mul_ck",
912 	.type = TI_CLK_FIXED_FACTOR,
913 	.data = &dpll4_m5x2_mul_ck_data,
914 };
915 
916 static struct ti_clk_gate dpll4_m5x2_ck_data = {
917 	.parent = "dpll4_m5x2_mul_ck",
918 	.bit_shift = 0x1e,
919 	.reg = 0xd00,
920 	.module = TI_CLKM_CM,
921 	.flags = CLKF_SET_BIT_TO_DISABLE,
922 };
923 
924 static struct ti_clk dpll4_m5x2_ck = {
925 	.name = "dpll4_m5x2_ck",
926 	.type = TI_CLK_GATE,
927 	.data = &dpll4_m5x2_ck_data,
928 };
929 
930 static struct ti_clk_gate cam_mclk_data = {
931 	.parent = "dpll4_m5x2_ck",
932 	.bit_shift = 0,
933 	.reg = 0xf00,
934 	.module = TI_CLKM_CM,
935 	.flags = CLKF_SET_RATE_PARENT,
936 };
937 
938 static struct ti_clk cam_mclk = {
939 	.name = "cam_mclk",
940 	.type = TI_CLK_GATE,
941 	.data = &cam_mclk_data,
942 };
943 
944 static struct ti_clk_gate mcbsp3_gate_fck_data = {
945 	.parent = "mcbsp_clks",
946 	.bit_shift = 1,
947 	.reg = 0x1000,
948 	.module = TI_CLKM_CM,
949 };
950 
951 static const char *mcbsp3_mux_fck_parents[] = {
952 	"per_96m_fck",
953 	"mcbsp_clks",
954 };
955 
956 static struct ti_clk_mux mcbsp3_mux_fck_data = {
957 	.num_parents = ARRAY_SIZE(mcbsp3_mux_fck_parents),
958 	.reg = 0x2d8,
959 	.module = TI_CLKM_SCRM,
960 	.parents = mcbsp3_mux_fck_parents,
961 };
962 
963 static struct ti_clk_composite mcbsp3_fck_data = {
964 	.mux = &mcbsp3_mux_fck_data,
965 	.gate = &mcbsp3_gate_fck_data,
966 };
967 
968 static struct ti_clk mcbsp3_fck = {
969 	.name = "mcbsp3_fck",
970 	.type = TI_CLK_COMPOSITE,
971 	.data = &mcbsp3_fck_data,
972 };
973 
974 static struct ti_clk_gate csi2_96m_fck_data = {
975 	.parent = "core_96m_fck",
976 	.bit_shift = 1,
977 	.reg = 0xf00,
978 	.module = TI_CLKM_CM,
979 };
980 
981 static struct ti_clk csi2_96m_fck = {
982 	.name = "csi2_96m_fck",
983 	.clkdm_name = "cam_clkdm",
984 	.type = TI_CLK_GATE,
985 	.data = &csi2_96m_fck_data,
986 };
987 
988 static struct ti_clk_gate gpt9_gate_fck_data = {
989 	.parent = "sys_ck",
990 	.bit_shift = 10,
991 	.reg = 0x1000,
992 	.module = TI_CLKM_CM,
993 };
994 
995 static const char *gpt9_mux_fck_parents[] = {
996 	"omap_32k_fck",
997 	"sys_ck",
998 };
999 
1000 static struct ti_clk_mux gpt9_mux_fck_data = {
1001 	.bit_shift = 7,
1002 	.num_parents = ARRAY_SIZE(gpt9_mux_fck_parents),
1003 	.reg = 0x1040,
1004 	.module = TI_CLKM_CM,
1005 	.parents = gpt9_mux_fck_parents,
1006 };
1007 
1008 static struct ti_clk_composite gpt9_fck_data = {
1009 	.mux = &gpt9_mux_fck_data,
1010 	.gate = &gpt9_gate_fck_data,
1011 };
1012 
1013 static struct ti_clk gpt9_fck = {
1014 	.name = "gpt9_fck",
1015 	.type = TI_CLK_COMPOSITE,
1016 	.data = &gpt9_fck_data,
1017 };
1018 
1019 static struct ti_clk_divider dpll3_m3_ck_data = {
1020 	.parent = "dpll3_ck",
1021 	.bit_shift = 16,
1022 	.max_div = 31,
1023 	.reg = 0x1140,
1024 	.module = TI_CLKM_CM,
1025 	.flags = CLKF_INDEX_STARTS_AT_ONE,
1026 };
1027 
1028 static struct ti_clk dpll3_m3_ck = {
1029 	.name = "dpll3_m3_ck",
1030 	.type = TI_CLK_DIVIDER,
1031 	.data = &dpll3_m3_ck_data,
1032 };
1033 
1034 static struct ti_clk_fixed_factor dpll3_m3x2_mul_ck_data = {
1035 	.parent = "dpll3_m3_ck",
1036 	.div = 1,
1037 	.mult = 2,
1038 };
1039 
1040 static struct ti_clk dpll3_m3x2_mul_ck = {
1041 	.name = "dpll3_m3x2_mul_ck",
1042 	.type = TI_CLK_FIXED_FACTOR,
1043 	.data = &dpll3_m3x2_mul_ck_data,
1044 };
1045 
1046 static struct ti_clk_gate sr2_fck_data = {
1047 	.parent = "sys_ck",
1048 	.bit_shift = 7,
1049 	.reg = 0xc00,
1050 	.module = TI_CLKM_CM,
1051 	.flags = CLKF_WAIT,
1052 };
1053 
1054 static struct ti_clk sr2_fck = {
1055 	.name = "sr2_fck",
1056 	.clkdm_name = "wkup_clkdm",
1057 	.type = TI_CLK_GATE,
1058 	.data = &sr2_fck_data,
1059 };
1060 
1061 static struct ti_clk_fixed pclk_ck_data = {
1062 	.frequency = 27000000,
1063 };
1064 
1065 static struct ti_clk pclk_ck = {
1066 	.name = "pclk_ck",
1067 	.type = TI_CLK_FIXED,
1068 	.data = &pclk_ck_data,
1069 };
1070 
1071 static struct ti_clk_gate wdt2_ick_data = {
1072 	.parent = "wkup_l4_ick",
1073 	.bit_shift = 5,
1074 	.reg = 0xc10,
1075 	.module = TI_CLKM_CM,
1076 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
1077 };
1078 
1079 static struct ti_clk wdt2_ick = {
1080 	.name = "wdt2_ick",
1081 	.clkdm_name = "wkup_clkdm",
1082 	.type = TI_CLK_GATE,
1083 	.data = &wdt2_ick_data,
1084 };
1085 
1086 static struct ti_clk_fixed_factor core_l3_ick_data = {
1087 	.parent = "l3_ick",
1088 	.div = 1,
1089 	.mult = 1,
1090 };
1091 
1092 static struct ti_clk core_l3_ick = {
1093 	.name = "core_l3_ick",
1094 	.type = TI_CLK_FIXED_FACTOR,
1095 	.data = &core_l3_ick_data,
1096 };
1097 
1098 static struct ti_clk_gate mcspi4_fck_data = {
1099 	.parent = "core_48m_fck",
1100 	.bit_shift = 21,
1101 	.reg = 0xa00,
1102 	.module = TI_CLKM_CM,
1103 	.flags = CLKF_WAIT,
1104 };
1105 
1106 static struct ti_clk mcspi4_fck = {
1107 	.name = "mcspi4_fck",
1108 	.clkdm_name = "core_l4_clkdm",
1109 	.type = TI_CLK_GATE,
1110 	.data = &mcspi4_fck_data,
1111 };
1112 
1113 static struct ti_clk_fixed_factor per_48m_fck_data = {
1114 	.parent = "omap_48m_fck",
1115 	.div = 1,
1116 	.mult = 1,
1117 };
1118 
1119 static struct ti_clk per_48m_fck = {
1120 	.name = "per_48m_fck",
1121 	.type = TI_CLK_FIXED_FACTOR,
1122 	.data = &per_48m_fck_data,
1123 };
1124 
1125 static struct ti_clk_gate uart4_fck_data = {
1126 	.parent = "per_48m_fck",
1127 	.bit_shift = 18,
1128 	.reg = 0x1000,
1129 	.module = TI_CLKM_CM,
1130 	.flags = CLKF_WAIT,
1131 };
1132 
1133 static struct ti_clk uart4_fck = {
1134 	.name = "uart4_fck",
1135 	.clkdm_name = "per_clkdm",
1136 	.type = TI_CLK_GATE,
1137 	.data = &uart4_fck_data,
1138 };
1139 
1140 static struct ti_clk_fixed_factor omap_96m_d10_fck_data = {
1141 	.parent = "omap_96m_fck",
1142 	.div = 10,
1143 	.mult = 1,
1144 };
1145 
1146 static struct ti_clk omap_96m_d10_fck = {
1147 	.name = "omap_96m_d10_fck",
1148 	.type = TI_CLK_FIXED_FACTOR,
1149 	.data = &omap_96m_d10_fck_data,
1150 };
1151 
1152 static struct ti_clk_gate usim_gate_fck_data = {
1153 	.parent = "omap_96m_fck",
1154 	.bit_shift = 9,
1155 	.reg = 0xc00,
1156 	.module = TI_CLKM_CM,
1157 };
1158 
1159 static struct ti_clk_fixed_factor per_l4_ick_data = {
1160 	.parent = "l4_ick",
1161 	.div = 1,
1162 	.mult = 1,
1163 };
1164 
1165 static struct ti_clk per_l4_ick = {
1166 	.name = "per_l4_ick",
1167 	.type = TI_CLK_FIXED_FACTOR,
1168 	.data = &per_l4_ick_data,
1169 };
1170 
1171 static struct ti_clk_gate gpt5_ick_data = {
1172 	.parent = "per_l4_ick",
1173 	.bit_shift = 6,
1174 	.reg = 0x1010,
1175 	.module = TI_CLKM_CM,
1176 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
1177 };
1178 
1179 static struct ti_clk gpt5_ick = {
1180 	.name = "gpt5_ick",
1181 	.clkdm_name = "per_clkdm",
1182 	.type = TI_CLK_GATE,
1183 	.data = &gpt5_ick_data,
1184 };
1185 
1186 static struct ti_clk_gate mcspi2_ick_data = {
1187 	.parent = "core_l4_ick",
1188 	.bit_shift = 19,
1189 	.reg = 0xa10,
1190 	.module = TI_CLKM_CM,
1191 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
1192 };
1193 
1194 static struct ti_clk mcspi2_ick = {
1195 	.name = "mcspi2_ick",
1196 	.clkdm_name = "core_l4_clkdm",
1197 	.type = TI_CLK_GATE,
1198 	.data = &mcspi2_ick_data,
1199 };
1200 
1201 static struct ti_clk_fixed_factor ssi_l4_ick_data = {
1202 	.parent = "l4_ick",
1203 	.div = 1,
1204 	.mult = 1,
1205 };
1206 
1207 static struct ti_clk ssi_l4_ick = {
1208 	.name = "ssi_l4_ick",
1209 	.clkdm_name = "core_l4_clkdm",
1210 	.type = TI_CLK_FIXED_FACTOR,
1211 	.data = &ssi_l4_ick_data,
1212 };
1213 
1214 static struct ti_clk_gate ssi_ick_3430es1_data = {
1215 	.parent = "ssi_l4_ick",
1216 	.bit_shift = 0,
1217 	.reg = 0xa10,
1218 	.module = TI_CLKM_CM,
1219 	.flags = CLKF_OMAP3 | CLKF_NO_WAIT | CLKF_INTERFACE,
1220 };
1221 
1222 static struct ti_clk ssi_ick_3430es1 = {
1223 	.name = "ssi_ick",
1224 	.clkdm_name = "core_l4_clkdm",
1225 	.type = TI_CLK_GATE,
1226 	.data = &ssi_ick_3430es1_data,
1227 };
1228 
1229 static struct ti_clk_gate i2c2_fck_data = {
1230 	.parent = "core_96m_fck",
1231 	.bit_shift = 16,
1232 	.reg = 0xa00,
1233 	.module = TI_CLKM_CM,
1234 	.flags = CLKF_WAIT,
1235 };
1236 
1237 static struct ti_clk i2c2_fck = {
1238 	.name = "i2c2_fck",
1239 	.clkdm_name = "core_l4_clkdm",
1240 	.type = TI_CLK_GATE,
1241 	.data = &i2c2_fck_data,
1242 };
1243 
1244 static struct ti_clk_divider dpll1_fck_data = {
1245 	.parent = "core_ck",
1246 	.bit_shift = 19,
1247 	.max_div = 7,
1248 	.reg = 0x940,
1249 	.module = TI_CLKM_CM,
1250 	.flags = CLKF_INDEX_STARTS_AT_ONE,
1251 };
1252 
1253 static struct ti_clk dpll1_fck = {
1254 	.name = "dpll1_fck",
1255 	.type = TI_CLK_DIVIDER,
1256 	.data = &dpll1_fck_data,
1257 };
1258 
1259 static const char *dpll1_ck_parents[] = {
1260 	"sys_ck",
1261 	"dpll1_fck",
1262 };
1263 
1264 static struct ti_clk_dpll dpll1_ck_data = {
1265 	.num_parents = ARRAY_SIZE(dpll1_ck_parents),
1266 	.control_reg = 0x904,
1267 	.idlest_reg = 0x924,
1268 	.mult_div1_reg = 0x940,
1269 	.autoidle_reg = 0x934,
1270 	.module = TI_CLKM_CM,
1271 	.parents = dpll1_ck_parents,
1272 	.freqsel_mask = 0xf0,
1273 	.modes = 0xa0,
1274 	.div1_mask = 0x7f,
1275 	.idlest_mask = 0x1,
1276 	.auto_recal_bit = 0x3,
1277 	.max_divider = 0x80,
1278 	.min_divider = 0x1,
1279 	.recal_en_bit = 0x7,
1280 	.max_multiplier = 0x7ff,
1281 	.enable_mask = 0x7,
1282 	.mult_mask = 0x7ff00,
1283 	.recal_st_bit = 0x7,
1284 	.autoidle_mask = 0x7,
1285 };
1286 
1287 static struct ti_clk dpll1_ck = {
1288 	.name = "dpll1_ck",
1289 	.clkdm_name = "dpll1_clkdm",
1290 	.type = TI_CLK_DPLL,
1291 	.data = &dpll1_ck_data,
1292 };
1293 
1294 static struct ti_clk_fixed secure_32k_fck_data = {
1295 	.frequency = 32768,
1296 };
1297 
1298 static struct ti_clk secure_32k_fck = {
1299 	.name = "secure_32k_fck",
1300 	.type = TI_CLK_FIXED,
1301 	.data = &secure_32k_fck_data,
1302 };
1303 
1304 static struct ti_clk_gate gpio5_ick_data = {
1305 	.parent = "per_l4_ick",
1306 	.bit_shift = 16,
1307 	.reg = 0x1010,
1308 	.module = TI_CLKM_CM,
1309 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
1310 };
1311 
1312 static struct ti_clk gpio5_ick = {
1313 	.name = "gpio5_ick",
1314 	.clkdm_name = "per_clkdm",
1315 	.type = TI_CLK_GATE,
1316 	.data = &gpio5_ick_data,
1317 };
1318 
1319 static struct ti_clk_divider dpll4_m4_ck_data = {
1320 	.parent = "dpll4_ck",
1321 	.max_div = 32,
1322 	.reg = 0xe40,
1323 	.module = TI_CLKM_CM,
1324 	.flags = CLKF_INDEX_STARTS_AT_ONE,
1325 };
1326 
1327 static struct ti_clk dpll4_m4_ck = {
1328 	.name = "dpll4_m4_ck",
1329 	.type = TI_CLK_DIVIDER,
1330 	.data = &dpll4_m4_ck_data,
1331 };
1332 
1333 static struct ti_clk_fixed_factor dpll4_m4x2_mul_ck_data = {
1334 	.parent = "dpll4_m4_ck",
1335 	.div = 1,
1336 	.mult = 2,
1337 	.flags = CLKF_SET_RATE_PARENT,
1338 };
1339 
1340 static struct ti_clk dpll4_m4x2_mul_ck = {
1341 	.name = "dpll4_m4x2_mul_ck",
1342 	.type = TI_CLK_FIXED_FACTOR,
1343 	.data = &dpll4_m4x2_mul_ck_data,
1344 };
1345 
1346 static struct ti_clk_gate dpll4_m4x2_ck_data = {
1347 	.parent = "dpll4_m4x2_mul_ck",
1348 	.bit_shift = 0x1d,
1349 	.reg = 0xd00,
1350 	.module = TI_CLKM_CM,
1351 	.flags = CLKF_SET_RATE_PARENT | CLKF_SET_BIT_TO_DISABLE,
1352 };
1353 
1354 static struct ti_clk dpll4_m4x2_ck = {
1355 	.name = "dpll4_m4x2_ck",
1356 	.type = TI_CLK_GATE,
1357 	.data = &dpll4_m4x2_ck_data,
1358 };
1359 
1360 static struct ti_clk_gate dss1_alwon_fck_3430es2_data = {
1361 	.parent = "dpll4_m4x2_ck",
1362 	.bit_shift = 0,
1363 	.reg = 0xe00,
1364 	.module = TI_CLKM_CM,
1365 	.flags = CLKF_DSS | CLKF_SET_RATE_PARENT,
1366 };
1367 
1368 static struct ti_clk dss1_alwon_fck_3430es2 = {
1369 	.name = "dss1_alwon_fck",
1370 	.clkdm_name = "dss_clkdm",
1371 	.type = TI_CLK_GATE,
1372 	.data = &dss1_alwon_fck_3430es2_data,
1373 };
1374 
1375 static struct ti_clk_gate uart3_ick_data = {
1376 	.parent = "per_l4_ick",
1377 	.bit_shift = 11,
1378 	.reg = 0x1010,
1379 	.module = TI_CLKM_CM,
1380 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
1381 };
1382 
1383 static struct ti_clk uart3_ick = {
1384 	.name = "uart3_ick",
1385 	.clkdm_name = "per_clkdm",
1386 	.type = TI_CLK_GATE,
1387 	.data = &uart3_ick_data,
1388 };
1389 
1390 static struct ti_clk_divider dpll4_m3_ck_data = {
1391 	.parent = "dpll4_ck",
1392 	.bit_shift = 8,
1393 	.max_div = 32,
1394 	.reg = 0xe40,
1395 	.module = TI_CLKM_CM,
1396 	.flags = CLKF_INDEX_STARTS_AT_ONE,
1397 };
1398 
1399 static struct ti_clk dpll4_m3_ck = {
1400 	.name = "dpll4_m3_ck",
1401 	.type = TI_CLK_DIVIDER,
1402 	.data = &dpll4_m3_ck_data,
1403 };
1404 
1405 static struct ti_clk_gate mcbsp3_ick_data = {
1406 	.parent = "per_l4_ick",
1407 	.bit_shift = 1,
1408 	.reg = 0x1010,
1409 	.module = TI_CLKM_CM,
1410 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
1411 };
1412 
1413 static struct ti_clk mcbsp3_ick = {
1414 	.name = "mcbsp3_ick",
1415 	.clkdm_name = "per_clkdm",
1416 	.type = TI_CLK_GATE,
1417 	.data = &mcbsp3_ick_data,
1418 };
1419 
1420 static struct ti_clk_gate gpio3_dbck_data = {
1421 	.parent = "per_32k_alwon_fck",
1422 	.bit_shift = 14,
1423 	.reg = 0x1000,
1424 	.module = TI_CLKM_CM,
1425 };
1426 
1427 static struct ti_clk gpio3_dbck = {
1428 	.name = "gpio3_dbck",
1429 	.clkdm_name = "per_clkdm",
1430 	.type = TI_CLK_GATE,
1431 	.data = &gpio3_dbck_data,
1432 };
1433 
1434 static struct ti_clk_gate fac_ick_data = {
1435 	.parent = "core_l4_ick",
1436 	.bit_shift = 8,
1437 	.reg = 0xa10,
1438 	.module = TI_CLKM_CM,
1439 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
1440 };
1441 
1442 static struct ti_clk fac_ick = {
1443 	.name = "fac_ick",
1444 	.clkdm_name = "core_l4_clkdm",
1445 	.type = TI_CLK_GATE,
1446 	.data = &fac_ick_data,
1447 };
1448 
1449 static struct ti_clk_gate clkout2_src_gate_ck_data = {
1450 	.parent = "core_ck",
1451 	.bit_shift = 7,
1452 	.reg = 0xd70,
1453 	.module = TI_CLKM_CM,
1454 	.flags = CLKF_NO_WAIT,
1455 };
1456 
1457 static struct ti_clk_fixed_factor dpll4_m3x2_mul_ck_data = {
1458 	.parent = "dpll4_m3_ck",
1459 	.div = 1,
1460 	.mult = 2,
1461 };
1462 
1463 static struct ti_clk dpll4_m3x2_mul_ck = {
1464 	.name = "dpll4_m3x2_mul_ck",
1465 	.type = TI_CLK_FIXED_FACTOR,
1466 	.data = &dpll4_m3x2_mul_ck_data,
1467 };
1468 
1469 static struct ti_clk_gate dpll4_m3x2_ck_data = {
1470 	.parent = "dpll4_m3x2_mul_ck",
1471 	.bit_shift = 0x1c,
1472 	.reg = 0xd00,
1473 	.module = TI_CLKM_CM,
1474 	.flags = CLKF_SET_BIT_TO_DISABLE,
1475 };
1476 
1477 static struct ti_clk dpll4_m3x2_ck = {
1478 	.name = "dpll4_m3x2_ck",
1479 	.type = TI_CLK_GATE,
1480 	.data = &dpll4_m3x2_ck_data,
1481 };
1482 
1483 static const char *omap_54m_fck_parents[] = {
1484 	"dpll4_m3x2_ck",
1485 	"sys_altclk",
1486 };
1487 
1488 static struct ti_clk_mux omap_54m_fck_data = {
1489 	.bit_shift = 5,
1490 	.num_parents = ARRAY_SIZE(omap_54m_fck_parents),
1491 	.reg = 0xd40,
1492 	.module = TI_CLKM_CM,
1493 	.parents = omap_54m_fck_parents,
1494 };
1495 
1496 static struct ti_clk omap_54m_fck = {
1497 	.name = "omap_54m_fck",
1498 	.type = TI_CLK_MUX,
1499 	.data = &omap_54m_fck_data,
1500 };
1501 
1502 static const char *clkout2_src_mux_ck_parents[] = {
1503 	"core_ck",
1504 	"sys_ck",
1505 	"cm_96m_fck",
1506 	"omap_54m_fck",
1507 };
1508 
1509 static struct ti_clk_mux clkout2_src_mux_ck_data = {
1510 	.num_parents = ARRAY_SIZE(clkout2_src_mux_ck_parents),
1511 	.reg = 0xd70,
1512 	.module = TI_CLKM_CM,
1513 	.parents = clkout2_src_mux_ck_parents,
1514 };
1515 
1516 static struct ti_clk_composite clkout2_src_ck_data = {
1517 	.mux = &clkout2_src_mux_ck_data,
1518 	.gate = &clkout2_src_gate_ck_data,
1519 };
1520 
1521 static struct ti_clk clkout2_src_ck = {
1522 	.name = "clkout2_src_ck",
1523 	.type = TI_CLK_COMPOSITE,
1524 	.data = &clkout2_src_ck_data,
1525 };
1526 
1527 static struct ti_clk_gate i2c1_fck_data = {
1528 	.parent = "core_96m_fck",
1529 	.bit_shift = 15,
1530 	.reg = 0xa00,
1531 	.module = TI_CLKM_CM,
1532 	.flags = CLKF_WAIT,
1533 };
1534 
1535 static struct ti_clk i2c1_fck = {
1536 	.name = "i2c1_fck",
1537 	.clkdm_name = "core_l4_clkdm",
1538 	.type = TI_CLK_GATE,
1539 	.data = &i2c1_fck_data,
1540 };
1541 
1542 static struct ti_clk_gate wdt3_fck_data = {
1543 	.parent = "per_32k_alwon_fck",
1544 	.bit_shift = 12,
1545 	.reg = 0x1000,
1546 	.module = TI_CLKM_CM,
1547 	.flags = CLKF_WAIT,
1548 };
1549 
1550 static struct ti_clk wdt3_fck = {
1551 	.name = "wdt3_fck",
1552 	.clkdm_name = "per_clkdm",
1553 	.type = TI_CLK_GATE,
1554 	.data = &wdt3_fck_data,
1555 };
1556 
1557 static struct ti_clk_gate gpt7_gate_fck_data = {
1558 	.parent = "sys_ck",
1559 	.bit_shift = 8,
1560 	.reg = 0x1000,
1561 	.module = TI_CLKM_CM,
1562 };
1563 
1564 static const char *gpt7_mux_fck_parents[] = {
1565 	"omap_32k_fck",
1566 	"sys_ck",
1567 };
1568 
1569 static struct ti_clk_mux gpt7_mux_fck_data = {
1570 	.bit_shift = 5,
1571 	.num_parents = ARRAY_SIZE(gpt7_mux_fck_parents),
1572 	.reg = 0x1040,
1573 	.module = TI_CLKM_CM,
1574 	.parents = gpt7_mux_fck_parents,
1575 };
1576 
1577 static struct ti_clk_composite gpt7_fck_data = {
1578 	.mux = &gpt7_mux_fck_data,
1579 	.gate = &gpt7_gate_fck_data,
1580 };
1581 
1582 static struct ti_clk gpt7_fck = {
1583 	.name = "gpt7_fck",
1584 	.type = TI_CLK_COMPOSITE,
1585 	.data = &gpt7_fck_data,
1586 };
1587 
1588 static struct ti_clk_gate usb_l4_gate_ick_data = {
1589 	.parent = "l4_ick",
1590 	.bit_shift = 5,
1591 	.reg = 0xa10,
1592 	.module = TI_CLKM_CM,
1593 	.flags = CLKF_INTERFACE,
1594 };
1595 
1596 static struct ti_clk_divider usb_l4_div_ick_data = {
1597 	.parent = "l4_ick",
1598 	.bit_shift = 4,
1599 	.max_div = 1,
1600 	.reg = 0xa40,
1601 	.module = TI_CLKM_CM,
1602 	.flags = CLKF_INDEX_STARTS_AT_ONE,
1603 };
1604 
1605 static struct ti_clk_composite usb_l4_ick_data = {
1606 	.gate = &usb_l4_gate_ick_data,
1607 	.divider = &usb_l4_div_ick_data,
1608 };
1609 
1610 static struct ti_clk usb_l4_ick = {
1611 	.name = "usb_l4_ick",
1612 	.type = TI_CLK_COMPOSITE,
1613 	.data = &usb_l4_ick_data,
1614 };
1615 
1616 static struct ti_clk_gate uart4_ick_data = {
1617 	.parent = "per_l4_ick",
1618 	.bit_shift = 18,
1619 	.reg = 0x1010,
1620 	.module = TI_CLKM_CM,
1621 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
1622 };
1623 
1624 static struct ti_clk uart4_ick = {
1625 	.name = "uart4_ick",
1626 	.clkdm_name = "per_clkdm",
1627 	.type = TI_CLK_GATE,
1628 	.data = &uart4_ick_data,
1629 };
1630 
1631 static struct ti_clk_fixed dummy_ck_data = {
1632 	.frequency = 0,
1633 };
1634 
1635 static struct ti_clk dummy_ck = {
1636 	.name = "dummy_ck",
1637 	.type = TI_CLK_FIXED,
1638 	.data = &dummy_ck_data,
1639 };
1640 
1641 static const char *gpt3_mux_fck_parents[] = {
1642 	"omap_32k_fck",
1643 	"sys_ck",
1644 };
1645 
1646 static struct ti_clk_mux gpt3_mux_fck_data = {
1647 	.bit_shift = 1,
1648 	.num_parents = ARRAY_SIZE(gpt3_mux_fck_parents),
1649 	.reg = 0x1040,
1650 	.module = TI_CLKM_CM,
1651 	.parents = gpt3_mux_fck_parents,
1652 };
1653 
1654 static struct ti_clk_gate gpt9_ick_data = {
1655 	.parent = "per_l4_ick",
1656 	.bit_shift = 10,
1657 	.reg = 0x1010,
1658 	.module = TI_CLKM_CM,
1659 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
1660 };
1661 
1662 static struct ti_clk gpt9_ick = {
1663 	.name = "gpt9_ick",
1664 	.clkdm_name = "per_clkdm",
1665 	.type = TI_CLK_GATE,
1666 	.data = &gpt9_ick_data,
1667 };
1668 
1669 static struct ti_clk_gate gpt10_gate_fck_data = {
1670 	.parent = "sys_ck",
1671 	.bit_shift = 11,
1672 	.reg = 0xa00,
1673 	.module = TI_CLKM_CM,
1674 };
1675 
1676 static struct ti_clk_gate dss_ick_3430es1_data = {
1677 	.parent = "l4_ick",
1678 	.bit_shift = 0,
1679 	.reg = 0xe10,
1680 	.module = TI_CLKM_CM,
1681 	.flags = CLKF_OMAP3 | CLKF_NO_WAIT | CLKF_INTERFACE,
1682 };
1683 
1684 static struct ti_clk dss_ick_3430es1 = {
1685 	.name = "dss_ick",
1686 	.clkdm_name = "dss_clkdm",
1687 	.type = TI_CLK_GATE,
1688 	.data = &dss_ick_3430es1_data,
1689 };
1690 
1691 static struct ti_clk_gate gpt11_ick_data = {
1692 	.parent = "core_l4_ick",
1693 	.bit_shift = 12,
1694 	.reg = 0xa10,
1695 	.module = TI_CLKM_CM,
1696 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
1697 };
1698 
1699 static struct ti_clk gpt11_ick = {
1700 	.name = "gpt11_ick",
1701 	.clkdm_name = "core_l4_clkdm",
1702 	.type = TI_CLK_GATE,
1703 	.data = &gpt11_ick_data,
1704 };
1705 
1706 static struct ti_clk_divider dpll2_fck_data = {
1707 	.parent = "core_ck",
1708 	.bit_shift = 19,
1709 	.max_div = 7,
1710 	.reg = 0x40,
1711 	.module = TI_CLKM_CM,
1712 	.flags = CLKF_INDEX_STARTS_AT_ONE,
1713 };
1714 
1715 static struct ti_clk dpll2_fck = {
1716 	.name = "dpll2_fck",
1717 	.type = TI_CLK_DIVIDER,
1718 	.data = &dpll2_fck_data,
1719 };
1720 
1721 static struct ti_clk_gate uart1_fck_data = {
1722 	.parent = "core_48m_fck",
1723 	.bit_shift = 13,
1724 	.reg = 0xa00,
1725 	.module = TI_CLKM_CM,
1726 	.flags = CLKF_WAIT,
1727 };
1728 
1729 static struct ti_clk uart1_fck = {
1730 	.name = "uart1_fck",
1731 	.clkdm_name = "core_l4_clkdm",
1732 	.type = TI_CLK_GATE,
1733 	.data = &uart1_fck_data,
1734 };
1735 
1736 static struct ti_clk_gate hsotgusb_ick_3430es1_data = {
1737 	.parent = "core_l3_ick",
1738 	.bit_shift = 4,
1739 	.reg = 0xa10,
1740 	.module = TI_CLKM_CM,
1741 	.flags = CLKF_OMAP3 | CLKF_NO_WAIT | CLKF_INTERFACE,
1742 };
1743 
1744 static struct ti_clk hsotgusb_ick_3430es1 = {
1745 	.name = "hsotgusb_ick_3430es1",
1746 	.clkdm_name = "core_l3_clkdm",
1747 	.type = TI_CLK_GATE,
1748 	.data = &hsotgusb_ick_3430es1_data,
1749 };
1750 
1751 static struct ti_clk_gate gpio2_ick_data = {
1752 	.parent = "per_l4_ick",
1753 	.bit_shift = 13,
1754 	.reg = 0x1010,
1755 	.module = TI_CLKM_CM,
1756 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
1757 };
1758 
1759 static struct ti_clk gpio2_ick = {
1760 	.name = "gpio2_ick",
1761 	.clkdm_name = "per_clkdm",
1762 	.type = TI_CLK_GATE,
1763 	.data = &gpio2_ick_data,
1764 };
1765 
1766 static struct ti_clk_gate mmchs1_ick_data = {
1767 	.parent = "core_l4_ick",
1768 	.bit_shift = 24,
1769 	.reg = 0xa10,
1770 	.module = TI_CLKM_CM,
1771 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
1772 };
1773 
1774 static struct ti_clk mmchs1_ick = {
1775 	.name = "mmchs1_ick",
1776 	.clkdm_name = "core_l4_clkdm",
1777 	.type = TI_CLK_GATE,
1778 	.data = &mmchs1_ick_data,
1779 };
1780 
1781 static struct ti_clk_gate modem_fck_data = {
1782 	.parent = "sys_ck",
1783 	.bit_shift = 31,
1784 	.reg = 0xa00,
1785 	.module = TI_CLKM_CM,
1786 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
1787 };
1788 
1789 static struct ti_clk modem_fck = {
1790 	.name = "modem_fck",
1791 	.clkdm_name = "d2d_clkdm",
1792 	.type = TI_CLK_GATE,
1793 	.data = &modem_fck_data,
1794 };
1795 
1796 static struct ti_clk_gate mcbsp4_ick_data = {
1797 	.parent = "per_l4_ick",
1798 	.bit_shift = 2,
1799 	.reg = 0x1010,
1800 	.module = TI_CLKM_CM,
1801 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
1802 };
1803 
1804 static struct ti_clk mcbsp4_ick = {
1805 	.name = "mcbsp4_ick",
1806 	.clkdm_name = "per_clkdm",
1807 	.type = TI_CLK_GATE,
1808 	.data = &mcbsp4_ick_data,
1809 };
1810 
1811 static struct ti_clk_gate gpio1_ick_data = {
1812 	.parent = "wkup_l4_ick",
1813 	.bit_shift = 3,
1814 	.reg = 0xc10,
1815 	.module = TI_CLKM_CM,
1816 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
1817 };
1818 
1819 static struct ti_clk gpio1_ick = {
1820 	.name = "gpio1_ick",
1821 	.clkdm_name = "wkup_clkdm",
1822 	.type = TI_CLK_GATE,
1823 	.data = &gpio1_ick_data,
1824 };
1825 
1826 static const char *gpt6_mux_fck_parents[] = {
1827 	"omap_32k_fck",
1828 	"sys_ck",
1829 };
1830 
1831 static struct ti_clk_mux gpt6_mux_fck_data = {
1832 	.bit_shift = 4,
1833 	.num_parents = ARRAY_SIZE(gpt6_mux_fck_parents),
1834 	.reg = 0x1040,
1835 	.module = TI_CLKM_CM,
1836 	.parents = gpt6_mux_fck_parents,
1837 };
1838 
1839 static struct ti_clk_fixed_factor dpll1_x2_ck_data = {
1840 	.parent = "dpll1_ck",
1841 	.div = 1,
1842 	.mult = 2,
1843 };
1844 
1845 static struct ti_clk dpll1_x2_ck = {
1846 	.name = "dpll1_x2_ck",
1847 	.type = TI_CLK_FIXED_FACTOR,
1848 	.data = &dpll1_x2_ck_data,
1849 };
1850 
1851 static struct ti_clk_divider dpll1_x2m2_ck_data = {
1852 	.parent = "dpll1_x2_ck",
1853 	.max_div = 31,
1854 	.reg = 0x944,
1855 	.module = TI_CLKM_CM,
1856 	.flags = CLKF_INDEX_STARTS_AT_ONE,
1857 };
1858 
1859 static struct ti_clk dpll1_x2m2_ck = {
1860 	.name = "dpll1_x2m2_ck",
1861 	.type = TI_CLK_DIVIDER,
1862 	.data = &dpll1_x2m2_ck_data,
1863 };
1864 
1865 static struct ti_clk_fixed_factor mpu_ck_data = {
1866 	.parent = "dpll1_x2m2_ck",
1867 	.div = 1,
1868 	.mult = 1,
1869 };
1870 
1871 static struct ti_clk mpu_ck = {
1872 	.name = "mpu_ck",
1873 	.type = TI_CLK_FIXED_FACTOR,
1874 	.data = &mpu_ck_data,
1875 };
1876 
1877 static struct ti_clk_divider arm_fck_data = {
1878 	.parent = "mpu_ck",
1879 	.max_div = 2,
1880 	.reg = 0x924,
1881 	.module = TI_CLKM_CM,
1882 };
1883 
1884 static struct ti_clk arm_fck = {
1885 	.name = "arm_fck",
1886 	.type = TI_CLK_DIVIDER,
1887 	.data = &arm_fck_data,
1888 };
1889 
1890 static struct ti_clk_fixed_factor core_d3_ck_data = {
1891 	.parent = "core_ck",
1892 	.div = 3,
1893 	.mult = 1,
1894 };
1895 
1896 static struct ti_clk core_d3_ck = {
1897 	.name = "core_d3_ck",
1898 	.type = TI_CLK_FIXED_FACTOR,
1899 	.data = &core_d3_ck_data,
1900 };
1901 
1902 static struct ti_clk_gate gpt11_gate_fck_data = {
1903 	.parent = "sys_ck",
1904 	.bit_shift = 12,
1905 	.reg = 0xa00,
1906 	.module = TI_CLKM_CM,
1907 };
1908 
1909 static const char *gpt11_mux_fck_parents[] = {
1910 	"omap_32k_fck",
1911 	"sys_ck",
1912 };
1913 
1914 static struct ti_clk_mux gpt11_mux_fck_data = {
1915 	.bit_shift = 7,
1916 	.num_parents = ARRAY_SIZE(gpt11_mux_fck_parents),
1917 	.reg = 0xa40,
1918 	.module = TI_CLKM_CM,
1919 	.parents = gpt11_mux_fck_parents,
1920 };
1921 
1922 static struct ti_clk_composite gpt11_fck_data = {
1923 	.mux = &gpt11_mux_fck_data,
1924 	.gate = &gpt11_gate_fck_data,
1925 };
1926 
1927 static struct ti_clk gpt11_fck = {
1928 	.name = "gpt11_fck",
1929 	.type = TI_CLK_COMPOSITE,
1930 	.data = &gpt11_fck_data,
1931 };
1932 
1933 static struct ti_clk_fixed_factor core_d6_ck_data = {
1934 	.parent = "core_ck",
1935 	.div = 6,
1936 	.mult = 1,
1937 };
1938 
1939 static struct ti_clk core_d6_ck = {
1940 	.name = "core_d6_ck",
1941 	.type = TI_CLK_FIXED_FACTOR,
1942 	.data = &core_d6_ck_data,
1943 };
1944 
1945 static struct ti_clk_gate uart4_fck_am35xx_data = {
1946 	.parent = "core_48m_fck",
1947 	.bit_shift = 23,
1948 	.reg = 0xa00,
1949 	.module = TI_CLKM_CM,
1950 	.flags = CLKF_WAIT,
1951 };
1952 
1953 static struct ti_clk uart4_fck_am35xx = {
1954 	.name = "uart4_fck_am35xx",
1955 	.clkdm_name = "core_l4_clkdm",
1956 	.type = TI_CLK_GATE,
1957 	.data = &uart4_fck_am35xx_data,
1958 };
1959 
1960 static struct ti_clk_gate dpll3_m3x2_ck_data = {
1961 	.parent = "dpll3_m3x2_mul_ck",
1962 	.bit_shift = 0xc,
1963 	.reg = 0xd00,
1964 	.module = TI_CLKM_CM,
1965 	.flags = CLKF_SET_BIT_TO_DISABLE,
1966 };
1967 
1968 static struct ti_clk dpll3_m3x2_ck = {
1969 	.name = "dpll3_m3x2_ck",
1970 	.type = TI_CLK_GATE,
1971 	.data = &dpll3_m3x2_ck_data,
1972 };
1973 
1974 static struct ti_clk_fixed_factor emu_core_alwon_ck_data = {
1975 	.parent = "dpll3_m3x2_ck",
1976 	.div = 1,
1977 	.mult = 1,
1978 };
1979 
1980 static struct ti_clk emu_core_alwon_ck = {
1981 	.name = "emu_core_alwon_ck",
1982 	.type = TI_CLK_FIXED_FACTOR,
1983 	.data = &emu_core_alwon_ck_data,
1984 };
1985 
1986 static struct ti_clk_divider dpll4_m6_ck_data = {
1987 	.parent = "dpll4_ck",
1988 	.bit_shift = 24,
1989 	.max_div = 63,
1990 	.reg = 0x1140,
1991 	.module = TI_CLKM_CM,
1992 	.flags = CLKF_INDEX_STARTS_AT_ONE,
1993 };
1994 
1995 static struct ti_clk dpll4_m6_ck = {
1996 	.name = "dpll4_m6_ck",
1997 	.type = TI_CLK_DIVIDER,
1998 	.data = &dpll4_m6_ck_data,
1999 };
2000 
2001 static struct ti_clk_fixed_factor dpll4_m6x2_mul_ck_data = {
2002 	.parent = "dpll4_m6_ck",
2003 	.div = 1,
2004 	.mult = 2,
2005 };
2006 
2007 static struct ti_clk dpll4_m6x2_mul_ck = {
2008 	.name = "dpll4_m6x2_mul_ck",
2009 	.type = TI_CLK_FIXED_FACTOR,
2010 	.data = &dpll4_m6x2_mul_ck_data,
2011 };
2012 
2013 static struct ti_clk_gate dpll4_m6x2_ck_data = {
2014 	.parent = "dpll4_m6x2_mul_ck",
2015 	.bit_shift = 0x1f,
2016 	.reg = 0xd00,
2017 	.module = TI_CLKM_CM,
2018 	.flags = CLKF_SET_BIT_TO_DISABLE,
2019 };
2020 
2021 static struct ti_clk dpll4_m6x2_ck = {
2022 	.name = "dpll4_m6x2_ck",
2023 	.type = TI_CLK_GATE,
2024 	.data = &dpll4_m6x2_ck_data,
2025 };
2026 
2027 static struct ti_clk_fixed_factor emu_per_alwon_ck_data = {
2028 	.parent = "dpll4_m6x2_ck",
2029 	.div = 1,
2030 	.mult = 1,
2031 };
2032 
2033 static struct ti_clk emu_per_alwon_ck = {
2034 	.name = "emu_per_alwon_ck",
2035 	.type = TI_CLK_FIXED_FACTOR,
2036 	.data = &emu_per_alwon_ck_data,
2037 };
2038 
2039 static struct ti_clk_fixed_factor emu_mpu_alwon_ck_data = {
2040 	.parent = "mpu_ck",
2041 	.div = 1,
2042 	.mult = 1,
2043 };
2044 
2045 static struct ti_clk emu_mpu_alwon_ck = {
2046 	.name = "emu_mpu_alwon_ck",
2047 	.type = TI_CLK_FIXED_FACTOR,
2048 	.data = &emu_mpu_alwon_ck_data,
2049 };
2050 
2051 static const char *emu_src_mux_ck_parents[] = {
2052 	"sys_ck",
2053 	"emu_core_alwon_ck",
2054 	"emu_per_alwon_ck",
2055 	"emu_mpu_alwon_ck",
2056 };
2057 
2058 static struct ti_clk_mux emu_src_mux_ck_data = {
2059 	.num_parents = ARRAY_SIZE(emu_src_mux_ck_parents),
2060 	.reg = 0x1140,
2061 	.module = TI_CLKM_CM,
2062 	.parents = emu_src_mux_ck_parents,
2063 };
2064 
2065 static struct ti_clk emu_src_mux_ck = {
2066 	.name = "emu_src_mux_ck",
2067 	.type = TI_CLK_MUX,
2068 	.data = &emu_src_mux_ck_data,
2069 };
2070 
2071 static struct ti_clk_gate emu_src_ck_data = {
2072 	.parent = "emu_src_mux_ck",
2073 	.flags = CLKF_CLKDM,
2074 };
2075 
2076 static struct ti_clk emu_src_ck = {
2077 	.name = "emu_src_ck",
2078 	.clkdm_name = "emu_clkdm",
2079 	.type = TI_CLK_GATE,
2080 	.data = &emu_src_ck_data,
2081 };
2082 
2083 static struct ti_clk_divider atclk_fck_data = {
2084 	.parent = "emu_src_ck",
2085 	.bit_shift = 4,
2086 	.max_div = 3,
2087 	.reg = 0x1140,
2088 	.module = TI_CLKM_CM,
2089 	.flags = CLKF_INDEX_STARTS_AT_ONE,
2090 };
2091 
2092 static struct ti_clk atclk_fck = {
2093 	.name = "atclk_fck",
2094 	.type = TI_CLK_DIVIDER,
2095 	.data = &atclk_fck_data,
2096 };
2097 
2098 static struct ti_clk_gate ipss_ick_data = {
2099 	.parent = "core_l3_ick",
2100 	.bit_shift = 4,
2101 	.reg = 0xa10,
2102 	.module = TI_CLKM_CM,
2103 	.flags = CLKF_AM35XX | CLKF_INTERFACE,
2104 };
2105 
2106 static struct ti_clk ipss_ick = {
2107 	.name = "ipss_ick",
2108 	.clkdm_name = "core_l3_clkdm",
2109 	.type = TI_CLK_GATE,
2110 	.data = &ipss_ick_data,
2111 };
2112 
2113 static struct ti_clk_gate emac_ick_data = {
2114 	.parent = "ipss_ick",
2115 	.bit_shift = 1,
2116 	.reg = 0x59c,
2117 	.module = TI_CLKM_SCRM,
2118 	.flags = CLKF_AM35XX,
2119 };
2120 
2121 static struct ti_clk emac_ick = {
2122 	.name = "emac_ick",
2123 	.clkdm_name = "core_l3_clkdm",
2124 	.type = TI_CLK_GATE,
2125 	.data = &emac_ick_data,
2126 };
2127 
2128 static struct ti_clk_gate vpfe_ick_data = {
2129 	.parent = "ipss_ick",
2130 	.bit_shift = 2,
2131 	.reg = 0x59c,
2132 	.module = TI_CLKM_SCRM,
2133 	.flags = CLKF_AM35XX,
2134 };
2135 
2136 static struct ti_clk vpfe_ick = {
2137 	.name = "vpfe_ick",
2138 	.clkdm_name = "core_l3_clkdm",
2139 	.type = TI_CLK_GATE,
2140 	.data = &vpfe_ick_data,
2141 };
2142 
2143 static const char *dpll2_ck_parents[] = {
2144 	"sys_ck",
2145 	"dpll2_fck",
2146 };
2147 
2148 static struct ti_clk_dpll dpll2_ck_data = {
2149 	.num_parents = ARRAY_SIZE(dpll2_ck_parents),
2150 	.control_reg = 0x4,
2151 	.idlest_reg = 0x24,
2152 	.mult_div1_reg = 0x40,
2153 	.autoidle_reg = 0x34,
2154 	.module = TI_CLKM_CM,
2155 	.parents = dpll2_ck_parents,
2156 	.freqsel_mask = 0xf0,
2157 	.modes = 0xa2,
2158 	.div1_mask = 0x7f,
2159 	.idlest_mask = 0x1,
2160 	.auto_recal_bit = 0x3,
2161 	.max_divider = 0x80,
2162 	.min_divider = 0x1,
2163 	.recal_en_bit = 0x8,
2164 	.max_multiplier = 0x7ff,
2165 	.enable_mask = 0x7,
2166 	.mult_mask = 0x7ff00,
2167 	.recal_st_bit = 0x8,
2168 	.autoidle_mask = 0x7,
2169 };
2170 
2171 static struct ti_clk dpll2_ck = {
2172 	.name = "dpll2_ck",
2173 	.clkdm_name = "dpll2_clkdm",
2174 	.type = TI_CLK_DPLL,
2175 	.data = &dpll2_ck_data,
2176 };
2177 
2178 static struct ti_clk_divider dpll2_m2_ck_data = {
2179 	.parent = "dpll2_ck",
2180 	.max_div = 31,
2181 	.reg = 0x44,
2182 	.module = TI_CLKM_CM,
2183 	.flags = CLKF_INDEX_STARTS_AT_ONE,
2184 };
2185 
2186 static struct ti_clk dpll2_m2_ck = {
2187 	.name = "dpll2_m2_ck",
2188 	.type = TI_CLK_DIVIDER,
2189 	.data = &dpll2_m2_ck_data,
2190 };
2191 
2192 static const char *mcbsp4_mux_fck_parents[] = {
2193 	"per_96m_fck",
2194 	"mcbsp_clks",
2195 };
2196 
2197 static struct ti_clk_mux mcbsp4_mux_fck_data = {
2198 	.bit_shift = 2,
2199 	.num_parents = ARRAY_SIZE(mcbsp4_mux_fck_parents),
2200 	.reg = 0x2d8,
2201 	.module = TI_CLKM_SCRM,
2202 	.parents = mcbsp4_mux_fck_parents,
2203 };
2204 
2205 static const char *mcbsp1_mux_fck_parents[] = {
2206 	"core_96m_fck",
2207 	"mcbsp_clks",
2208 };
2209 
2210 static struct ti_clk_mux mcbsp1_mux_fck_data = {
2211 	.bit_shift = 2,
2212 	.num_parents = ARRAY_SIZE(mcbsp1_mux_fck_parents),
2213 	.reg = 0x274,
2214 	.module = TI_CLKM_SCRM,
2215 	.parents = mcbsp1_mux_fck_parents,
2216 };
2217 
2218 static struct ti_clk_gate gpt8_gate_fck_data = {
2219 	.parent = "sys_ck",
2220 	.bit_shift = 9,
2221 	.reg = 0x1000,
2222 	.module = TI_CLKM_CM,
2223 };
2224 
2225 static struct ti_clk_gate gpt8_ick_data = {
2226 	.parent = "per_l4_ick",
2227 	.bit_shift = 9,
2228 	.reg = 0x1010,
2229 	.module = TI_CLKM_CM,
2230 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
2231 };
2232 
2233 static struct ti_clk gpt8_ick = {
2234 	.name = "gpt8_ick",
2235 	.clkdm_name = "per_clkdm",
2236 	.type = TI_CLK_GATE,
2237 	.data = &gpt8_ick_data,
2238 };
2239 
2240 static const char *gpt10_mux_fck_parents[] = {
2241 	"omap_32k_fck",
2242 	"sys_ck",
2243 };
2244 
2245 static struct ti_clk_mux gpt10_mux_fck_data = {
2246 	.bit_shift = 6,
2247 	.num_parents = ARRAY_SIZE(gpt10_mux_fck_parents),
2248 	.reg = 0xa40,
2249 	.module = TI_CLKM_CM,
2250 	.parents = gpt10_mux_fck_parents,
2251 };
2252 
2253 static struct ti_clk_gate mmchs3_ick_data = {
2254 	.parent = "core_l4_ick",
2255 	.bit_shift = 30,
2256 	.reg = 0xa10,
2257 	.module = TI_CLKM_CM,
2258 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
2259 };
2260 
2261 static struct ti_clk mmchs3_ick = {
2262 	.name = "mmchs3_ick",
2263 	.clkdm_name = "core_l4_clkdm",
2264 	.type = TI_CLK_GATE,
2265 	.data = &mmchs3_ick_data,
2266 };
2267 
2268 static struct ti_clk_gate gpio3_ick_data = {
2269 	.parent = "per_l4_ick",
2270 	.bit_shift = 14,
2271 	.reg = 0x1010,
2272 	.module = TI_CLKM_CM,
2273 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
2274 };
2275 
2276 static struct ti_clk gpio3_ick = {
2277 	.name = "gpio3_ick",
2278 	.clkdm_name = "per_clkdm",
2279 	.type = TI_CLK_GATE,
2280 	.data = &gpio3_ick_data,
2281 };
2282 
2283 static const char *traceclk_src_fck_parents[] = {
2284 	"sys_ck",
2285 	"emu_core_alwon_ck",
2286 	"emu_per_alwon_ck",
2287 	"emu_mpu_alwon_ck",
2288 };
2289 
2290 static struct ti_clk_mux traceclk_src_fck_data = {
2291 	.bit_shift = 2,
2292 	.num_parents = ARRAY_SIZE(traceclk_src_fck_parents),
2293 	.reg = 0x1140,
2294 	.module = TI_CLKM_CM,
2295 	.parents = traceclk_src_fck_parents,
2296 };
2297 
2298 static struct ti_clk traceclk_src_fck = {
2299 	.name = "traceclk_src_fck",
2300 	.type = TI_CLK_MUX,
2301 	.data = &traceclk_src_fck_data,
2302 };
2303 
2304 static struct ti_clk_divider traceclk_fck_data = {
2305 	.parent = "traceclk_src_fck",
2306 	.bit_shift = 11,
2307 	.max_div = 7,
2308 	.reg = 0x1140,
2309 	.module = TI_CLKM_CM,
2310 	.flags = CLKF_INDEX_STARTS_AT_ONE,
2311 };
2312 
2313 static struct ti_clk traceclk_fck = {
2314 	.name = "traceclk_fck",
2315 	.type = TI_CLK_DIVIDER,
2316 	.data = &traceclk_fck_data,
2317 };
2318 
2319 static struct ti_clk_gate mcbsp5_gate_fck_data = {
2320 	.parent = "mcbsp_clks",
2321 	.bit_shift = 10,
2322 	.reg = 0xa00,
2323 	.module = TI_CLKM_CM,
2324 };
2325 
2326 static struct ti_clk_gate sad2d_ick_data = {
2327 	.parent = "l3_ick",
2328 	.bit_shift = 3,
2329 	.reg = 0xa10,
2330 	.module = TI_CLKM_CM,
2331 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
2332 };
2333 
2334 static struct ti_clk sad2d_ick = {
2335 	.name = "sad2d_ick",
2336 	.clkdm_name = "d2d_clkdm",
2337 	.type = TI_CLK_GATE,
2338 	.data = &sad2d_ick_data,
2339 };
2340 
2341 static const char *gpt1_mux_fck_parents[] = {
2342 	"omap_32k_fck",
2343 	"sys_ck",
2344 };
2345 
2346 static struct ti_clk_mux gpt1_mux_fck_data = {
2347 	.num_parents = ARRAY_SIZE(gpt1_mux_fck_parents),
2348 	.reg = 0xc40,
2349 	.module = TI_CLKM_CM,
2350 	.parents = gpt1_mux_fck_parents,
2351 };
2352 
2353 static struct ti_clk_gate hecc_ck_data = {
2354 	.parent = "sys_ck",
2355 	.bit_shift = 3,
2356 	.reg = 0x59c,
2357 	.module = TI_CLKM_SCRM,
2358 	.flags = CLKF_AM35XX,
2359 };
2360 
2361 static struct ti_clk hecc_ck = {
2362 	.name = "hecc_ck",
2363 	.clkdm_name = "core_l3_clkdm",
2364 	.type = TI_CLK_GATE,
2365 	.data = &hecc_ck_data,
2366 };
2367 
2368 static struct ti_clk_gate gpt1_gate_fck_data = {
2369 	.parent = "sys_ck",
2370 	.bit_shift = 0,
2371 	.reg = 0xc00,
2372 	.module = TI_CLKM_CM,
2373 };
2374 
2375 static struct ti_clk_composite gpt1_fck_data = {
2376 	.mux = &gpt1_mux_fck_data,
2377 	.gate = &gpt1_gate_fck_data,
2378 };
2379 
2380 static struct ti_clk gpt1_fck = {
2381 	.name = "gpt1_fck",
2382 	.type = TI_CLK_COMPOSITE,
2383 	.data = &gpt1_fck_data,
2384 };
2385 
2386 static struct ti_clk_gate dpll4_m2x2_ck_omap36xx_data = {
2387 	.parent = "dpll4_m2x2_mul_ck",
2388 	.bit_shift = 0x1b,
2389 	.reg = 0xd00,
2390 	.module = TI_CLKM_CM,
2391 	.flags = CLKF_HSDIV | CLKF_SET_BIT_TO_DISABLE,
2392 };
2393 
2394 static struct ti_clk dpll4_m2x2_ck_omap36xx = {
2395 	.name = "dpll4_m2x2_ck",
2396 	.type = TI_CLK_GATE,
2397 	.data = &dpll4_m2x2_ck_omap36xx_data,
2398 	.patch = &dpll4_m2x2_ck,
2399 };
2400 
2401 static struct ti_clk_divider gfx_l3_fck_data = {
2402 	.parent = "l3_ick",
2403 	.max_div = 7,
2404 	.reg = 0xb40,
2405 	.module = TI_CLKM_CM,
2406 	.flags = CLKF_INDEX_STARTS_AT_ONE,
2407 };
2408 
2409 static struct ti_clk gfx_l3_fck = {
2410 	.name = "gfx_l3_fck",
2411 	.type = TI_CLK_DIVIDER,
2412 	.data = &gfx_l3_fck_data,
2413 };
2414 
2415 static struct ti_clk_gate gfx_cg1_ck_data = {
2416 	.parent = "gfx_l3_fck",
2417 	.bit_shift = 1,
2418 	.reg = 0xb00,
2419 	.module = TI_CLKM_CM,
2420 	.flags = CLKF_WAIT,
2421 };
2422 
2423 static struct ti_clk gfx_cg1_ck = {
2424 	.name = "gfx_cg1_ck",
2425 	.clkdm_name = "gfx_3430es1_clkdm",
2426 	.type = TI_CLK_GATE,
2427 	.data = &gfx_cg1_ck_data,
2428 };
2429 
2430 static struct ti_clk_gate mailboxes_ick_data = {
2431 	.parent = "core_l4_ick",
2432 	.bit_shift = 7,
2433 	.reg = 0xa10,
2434 	.module = TI_CLKM_CM,
2435 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
2436 };
2437 
2438 static struct ti_clk mailboxes_ick = {
2439 	.name = "mailboxes_ick",
2440 	.clkdm_name = "core_l4_clkdm",
2441 	.type = TI_CLK_GATE,
2442 	.data = &mailboxes_ick_data,
2443 };
2444 
2445 static struct ti_clk_gate sha11_ick_data = {
2446 	.parent = "security_l4_ick2",
2447 	.bit_shift = 1,
2448 	.reg = 0xa14,
2449 	.module = TI_CLKM_CM,
2450 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
2451 };
2452 
2453 static struct ti_clk sha11_ick = {
2454 	.name = "sha11_ick",
2455 	.type = TI_CLK_GATE,
2456 	.data = &sha11_ick_data,
2457 };
2458 
2459 static struct ti_clk_gate hsotgusb_ick_am35xx_data = {
2460 	.parent = "ipss_ick",
2461 	.bit_shift = 0,
2462 	.reg = 0x59c,
2463 	.module = TI_CLKM_SCRM,
2464 	.flags = CLKF_AM35XX,
2465 };
2466 
2467 static struct ti_clk hsotgusb_ick_am35xx = {
2468 	.name = "hsotgusb_ick_am35xx",
2469 	.clkdm_name = "core_l3_clkdm",
2470 	.type = TI_CLK_GATE,
2471 	.data = &hsotgusb_ick_am35xx_data,
2472 };
2473 
2474 static struct ti_clk_gate mmchs3_fck_data = {
2475 	.parent = "core_96m_fck",
2476 	.bit_shift = 30,
2477 	.reg = 0xa00,
2478 	.module = TI_CLKM_CM,
2479 	.flags = CLKF_WAIT,
2480 };
2481 
2482 static struct ti_clk mmchs3_fck = {
2483 	.name = "mmchs3_fck",
2484 	.clkdm_name = "core_l4_clkdm",
2485 	.type = TI_CLK_GATE,
2486 	.data = &mmchs3_fck_data,
2487 };
2488 
2489 static struct ti_clk_divider pclk_fck_data = {
2490 	.parent = "emu_src_ck",
2491 	.bit_shift = 8,
2492 	.max_div = 7,
2493 	.reg = 0x1140,
2494 	.module = TI_CLKM_CM,
2495 	.flags = CLKF_INDEX_STARTS_AT_ONE,
2496 };
2497 
2498 static struct ti_clk pclk_fck = {
2499 	.name = "pclk_fck",
2500 	.type = TI_CLK_DIVIDER,
2501 	.data = &pclk_fck_data,
2502 };
2503 
2504 static const char *dpll4_ck_omap36xx_parents[] = {
2505 	"sys_ck",
2506 	"sys_ck",
2507 };
2508 
2509 static struct ti_clk_dpll dpll4_ck_omap36xx_data = {
2510 	.num_parents = ARRAY_SIZE(dpll4_ck_omap36xx_parents),
2511 	.control_reg = 0xd00,
2512 	.idlest_reg = 0xd20,
2513 	.mult_div1_reg = 0xd44,
2514 	.autoidle_reg = 0xd30,
2515 	.module = TI_CLKM_CM,
2516 	.parents = dpll4_ck_omap36xx_parents,
2517 	.modes = 0x82,
2518 	.div1_mask = 0x7f,
2519 	.idlest_mask = 0x2,
2520 	.auto_recal_bit = 0x13,
2521 	.max_divider = 0x80,
2522 	.min_divider = 0x1,
2523 	.recal_en_bit = 0x6,
2524 	.max_multiplier = 0xfff,
2525 	.enable_mask = 0x70000,
2526 	.mult_mask = 0xfff00,
2527 	.recal_st_bit = 0x6,
2528 	.autoidle_mask = 0x38,
2529 	.sddiv_mask = 0xff000000,
2530 	.dco_mask = 0xe00000,
2531 	.flags = CLKF_PER | CLKF_J_TYPE,
2532 };
2533 
2534 static struct ti_clk dpll4_ck_omap36xx = {
2535 	.name = "dpll4_ck",
2536 	.type = TI_CLK_DPLL,
2537 	.data = &dpll4_ck_omap36xx_data,
2538 	.patch = &dpll4_ck,
2539 };
2540 
2541 static struct ti_clk_gate uart3_fck_data = {
2542 	.parent = "per_48m_fck",
2543 	.bit_shift = 11,
2544 	.reg = 0x1000,
2545 	.module = TI_CLKM_CM,
2546 	.flags = CLKF_WAIT,
2547 };
2548 
2549 static struct ti_clk uart3_fck = {
2550 	.name = "uart3_fck",
2551 	.clkdm_name = "per_clkdm",
2552 	.type = TI_CLK_GATE,
2553 	.data = &uart3_fck_data,
2554 };
2555 
2556 static struct ti_clk_fixed_factor wkup_32k_fck_data = {
2557 	.parent = "omap_32k_fck",
2558 	.div = 1,
2559 	.mult = 1,
2560 };
2561 
2562 static struct ti_clk wkup_32k_fck = {
2563 	.name = "wkup_32k_fck",
2564 	.type = TI_CLK_FIXED_FACTOR,
2565 	.data = &wkup_32k_fck_data,
2566 };
2567 
2568 static struct ti_clk_gate sys_clkout1_data = {
2569 	.parent = "osc_sys_ck",
2570 	.bit_shift = 7,
2571 	.reg = 0xd70,
2572 	.module = TI_CLKM_PRM,
2573 };
2574 
2575 static struct ti_clk sys_clkout1 = {
2576 	.name = "sys_clkout1",
2577 	.type = TI_CLK_GATE,
2578 	.data = &sys_clkout1_data,
2579 };
2580 
2581 static struct ti_clk_fixed_factor gpmc_fck_data = {
2582 	.parent = "core_l3_ick",
2583 	.div = 1,
2584 	.mult = 1,
2585 };
2586 
2587 static struct ti_clk gpmc_fck = {
2588 	.name = "gpmc_fck",
2589 	.type = TI_CLK_FIXED_FACTOR,
2590 	.data = &gpmc_fck_data,
2591 };
2592 
2593 static struct ti_clk_fixed_factor dpll5_m2_d20_ck_data = {
2594 	.parent = "dpll5_m2_ck",
2595 	.div = 20,
2596 	.mult = 1,
2597 };
2598 
2599 static struct ti_clk dpll5_m2_d20_ck = {
2600 	.name = "dpll5_m2_d20_ck",
2601 	.type = TI_CLK_FIXED_FACTOR,
2602 	.data = &dpll5_m2_d20_ck_data,
2603 };
2604 
2605 static struct ti_clk_gate dpll4_m5x2_ck_omap36xx_data = {
2606 	.parent = "dpll4_m5x2_mul_ck",
2607 	.bit_shift = 0x1e,
2608 	.reg = 0xd00,
2609 	.module = TI_CLKM_CM,
2610 	.flags = CLKF_HSDIV | CLKF_SET_RATE_PARENT | CLKF_SET_BIT_TO_DISABLE,
2611 };
2612 
2613 static struct ti_clk dpll4_m5x2_ck_omap36xx = {
2614 	.name = "dpll4_m5x2_ck",
2615 	.type = TI_CLK_GATE,
2616 	.data = &dpll4_m5x2_ck_omap36xx_data,
2617 	.patch = &dpll4_m5x2_ck,
2618 };
2619 
2620 static struct ti_clk_gate ssi_ssr_gate_fck_3430es2_data = {
2621 	.parent = "corex2_fck",
2622 	.bit_shift = 0,
2623 	.reg = 0xa00,
2624 	.module = TI_CLKM_CM,
2625 	.flags = CLKF_NO_WAIT,
2626 };
2627 
2628 static struct ti_clk_gate uart1_ick_data = {
2629 	.parent = "core_l4_ick",
2630 	.bit_shift = 13,
2631 	.reg = 0xa10,
2632 	.module = TI_CLKM_CM,
2633 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
2634 };
2635 
2636 static struct ti_clk uart1_ick = {
2637 	.name = "uart1_ick",
2638 	.clkdm_name = "core_l4_clkdm",
2639 	.type = TI_CLK_GATE,
2640 	.data = &uart1_ick_data,
2641 };
2642 
2643 static struct ti_clk_gate iva2_ck_data = {
2644 	.parent = "dpll2_m2_ck",
2645 	.bit_shift = 0,
2646 	.reg = 0x0,
2647 	.module = TI_CLKM_CM,
2648 	.flags = CLKF_WAIT,
2649 };
2650 
2651 static struct ti_clk iva2_ck = {
2652 	.name = "iva2_ck",
2653 	.clkdm_name = "iva2_clkdm",
2654 	.type = TI_CLK_GATE,
2655 	.data = &iva2_ck_data,
2656 };
2657 
2658 static struct ti_clk_gate pka_ick_data = {
2659 	.parent = "security_l3_ick",
2660 	.bit_shift = 4,
2661 	.reg = 0xa14,
2662 	.module = TI_CLKM_CM,
2663 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
2664 };
2665 
2666 static struct ti_clk pka_ick = {
2667 	.name = "pka_ick",
2668 	.type = TI_CLK_GATE,
2669 	.data = &pka_ick_data,
2670 };
2671 
2672 static struct ti_clk_gate gpt12_ick_data = {
2673 	.parent = "wkup_l4_ick",
2674 	.bit_shift = 1,
2675 	.reg = 0xc10,
2676 	.module = TI_CLKM_CM,
2677 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
2678 };
2679 
2680 static struct ti_clk gpt12_ick = {
2681 	.name = "gpt12_ick",
2682 	.clkdm_name = "wkup_clkdm",
2683 	.type = TI_CLK_GATE,
2684 	.data = &gpt12_ick_data,
2685 };
2686 
2687 static const char *mcbsp5_mux_fck_parents[] = {
2688 	"core_96m_fck",
2689 	"mcbsp_clks",
2690 };
2691 
2692 static struct ti_clk_mux mcbsp5_mux_fck_data = {
2693 	.bit_shift = 4,
2694 	.num_parents = ARRAY_SIZE(mcbsp5_mux_fck_parents),
2695 	.reg = 0x2d8,
2696 	.module = TI_CLKM_SCRM,
2697 	.parents = mcbsp5_mux_fck_parents,
2698 };
2699 
2700 static struct ti_clk_composite mcbsp5_fck_data = {
2701 	.mux = &mcbsp5_mux_fck_data,
2702 	.gate = &mcbsp5_gate_fck_data,
2703 };
2704 
2705 static struct ti_clk mcbsp5_fck = {
2706 	.name = "mcbsp5_fck",
2707 	.type = TI_CLK_COMPOSITE,
2708 	.data = &mcbsp5_fck_data,
2709 };
2710 
2711 static struct ti_clk_gate usbhost_48m_fck_data = {
2712 	.parent = "omap_48m_fck",
2713 	.bit_shift = 0,
2714 	.reg = 0x1400,
2715 	.module = TI_CLKM_CM,
2716 	.flags = CLKF_DSS,
2717 };
2718 
2719 static struct ti_clk usbhost_48m_fck = {
2720 	.name = "usbhost_48m_fck",
2721 	.clkdm_name = "usbhost_clkdm",
2722 	.type = TI_CLK_GATE,
2723 	.data = &usbhost_48m_fck_data,
2724 };
2725 
2726 static struct ti_clk_gate des1_ick_data = {
2727 	.parent = "security_l4_ick2",
2728 	.bit_shift = 0,
2729 	.reg = 0xa14,
2730 	.module = TI_CLKM_CM,
2731 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
2732 };
2733 
2734 static struct ti_clk des1_ick = {
2735 	.name = "des1_ick",
2736 	.type = TI_CLK_GATE,
2737 	.data = &des1_ick_data,
2738 };
2739 
2740 static struct ti_clk_gate sgx_gate_fck_data = {
2741 	.parent = "core_ck",
2742 	.bit_shift = 1,
2743 	.reg = 0xb00,
2744 	.module = TI_CLKM_CM,
2745 };
2746 
2747 static struct ti_clk_fixed_factor core_d4_ck_data = {
2748 	.parent = "core_ck",
2749 	.div = 4,
2750 	.mult = 1,
2751 };
2752 
2753 static struct ti_clk core_d4_ck = {
2754 	.name = "core_d4_ck",
2755 	.type = TI_CLK_FIXED_FACTOR,
2756 	.data = &core_d4_ck_data,
2757 };
2758 
2759 static struct ti_clk_fixed_factor omap_192m_alwon_fck_data = {
2760 	.parent = "dpll4_m2x2_ck",
2761 	.div = 1,
2762 	.mult = 1,
2763 };
2764 
2765 static struct ti_clk omap_192m_alwon_fck = {
2766 	.name = "omap_192m_alwon_fck",
2767 	.type = TI_CLK_FIXED_FACTOR,
2768 	.data = &omap_192m_alwon_fck_data,
2769 };
2770 
2771 static struct ti_clk_fixed_factor core_d2_ck_data = {
2772 	.parent = "core_ck",
2773 	.div = 2,
2774 	.mult = 1,
2775 };
2776 
2777 static struct ti_clk core_d2_ck = {
2778 	.name = "core_d2_ck",
2779 	.type = TI_CLK_FIXED_FACTOR,
2780 	.data = &core_d2_ck_data,
2781 };
2782 
2783 static struct ti_clk_fixed_factor corex2_d3_fck_data = {
2784 	.parent = "corex2_fck",
2785 	.div = 3,
2786 	.mult = 1,
2787 };
2788 
2789 static struct ti_clk corex2_d3_fck = {
2790 	.name = "corex2_d3_fck",
2791 	.type = TI_CLK_FIXED_FACTOR,
2792 	.data = &corex2_d3_fck_data,
2793 };
2794 
2795 static struct ti_clk_fixed_factor corex2_d5_fck_data = {
2796 	.parent = "corex2_fck",
2797 	.div = 5,
2798 	.mult = 1,
2799 };
2800 
2801 static struct ti_clk corex2_d5_fck = {
2802 	.name = "corex2_d5_fck",
2803 	.type = TI_CLK_FIXED_FACTOR,
2804 	.data = &corex2_d5_fck_data,
2805 };
2806 
2807 static const char *sgx_mux_fck_parents[] = {
2808 	"core_d3_ck",
2809 	"core_d4_ck",
2810 	"core_d6_ck",
2811 	"cm_96m_fck",
2812 	"omap_192m_alwon_fck",
2813 	"core_d2_ck",
2814 	"corex2_d3_fck",
2815 	"corex2_d5_fck",
2816 };
2817 
2818 static struct ti_clk_mux sgx_mux_fck_data = {
2819 	.num_parents = ARRAY_SIZE(sgx_mux_fck_parents),
2820 	.reg = 0xb40,
2821 	.module = TI_CLKM_CM,
2822 	.parents = sgx_mux_fck_parents,
2823 };
2824 
2825 static struct ti_clk_composite sgx_fck_data = {
2826 	.mux = &sgx_mux_fck_data,
2827 	.gate = &sgx_gate_fck_data,
2828 };
2829 
2830 static struct ti_clk sgx_fck = {
2831 	.name = "sgx_fck",
2832 	.type = TI_CLK_COMPOSITE,
2833 	.data = &sgx_fck_data,
2834 };
2835 
2836 static struct ti_clk_gate mcspi1_fck_data = {
2837 	.parent = "core_48m_fck",
2838 	.bit_shift = 18,
2839 	.reg = 0xa00,
2840 	.module = TI_CLKM_CM,
2841 	.flags = CLKF_WAIT,
2842 };
2843 
2844 static struct ti_clk mcspi1_fck = {
2845 	.name = "mcspi1_fck",
2846 	.clkdm_name = "core_l4_clkdm",
2847 	.type = TI_CLK_GATE,
2848 	.data = &mcspi1_fck_data,
2849 };
2850 
2851 static struct ti_clk_gate mmchs2_fck_data = {
2852 	.parent = "core_96m_fck",
2853 	.bit_shift = 25,
2854 	.reg = 0xa00,
2855 	.module = TI_CLKM_CM,
2856 	.flags = CLKF_WAIT,
2857 };
2858 
2859 static struct ti_clk mmchs2_fck = {
2860 	.name = "mmchs2_fck",
2861 	.clkdm_name = "core_l4_clkdm",
2862 	.type = TI_CLK_GATE,
2863 	.data = &mmchs2_fck_data,
2864 };
2865 
2866 static struct ti_clk_gate mcspi2_fck_data = {
2867 	.parent = "core_48m_fck",
2868 	.bit_shift = 19,
2869 	.reg = 0xa00,
2870 	.module = TI_CLKM_CM,
2871 	.flags = CLKF_WAIT,
2872 };
2873 
2874 static struct ti_clk mcspi2_fck = {
2875 	.name = "mcspi2_fck",
2876 	.clkdm_name = "core_l4_clkdm",
2877 	.type = TI_CLK_GATE,
2878 	.data = &mcspi2_fck_data,
2879 };
2880 
2881 static struct ti_clk_gate vpfe_fck_data = {
2882 	.parent = "pclk_ck",
2883 	.bit_shift = 10,
2884 	.reg = 0x59c,
2885 	.module = TI_CLKM_SCRM,
2886 };
2887 
2888 static struct ti_clk vpfe_fck = {
2889 	.name = "vpfe_fck",
2890 	.type = TI_CLK_GATE,
2891 	.data = &vpfe_fck_data,
2892 };
2893 
2894 static struct ti_clk_gate gpt4_gate_fck_data = {
2895 	.parent = "sys_ck",
2896 	.bit_shift = 5,
2897 	.reg = 0x1000,
2898 	.module = TI_CLKM_CM,
2899 };
2900 
2901 static struct ti_clk_gate mcbsp1_gate_fck_data = {
2902 	.parent = "mcbsp_clks",
2903 	.bit_shift = 9,
2904 	.reg = 0xa00,
2905 	.module = TI_CLKM_CM,
2906 };
2907 
2908 static struct ti_clk_gate gpt5_gate_fck_data = {
2909 	.parent = "sys_ck",
2910 	.bit_shift = 6,
2911 	.reg = 0x1000,
2912 	.module = TI_CLKM_CM,
2913 };
2914 
2915 static const char *gpt5_mux_fck_parents[] = {
2916 	"omap_32k_fck",
2917 	"sys_ck",
2918 };
2919 
2920 static struct ti_clk_mux gpt5_mux_fck_data = {
2921 	.bit_shift = 3,
2922 	.num_parents = ARRAY_SIZE(gpt5_mux_fck_parents),
2923 	.reg = 0x1040,
2924 	.module = TI_CLKM_CM,
2925 	.parents = gpt5_mux_fck_parents,
2926 };
2927 
2928 static struct ti_clk_composite gpt5_fck_data = {
2929 	.mux = &gpt5_mux_fck_data,
2930 	.gate = &gpt5_gate_fck_data,
2931 };
2932 
2933 static struct ti_clk gpt5_fck = {
2934 	.name = "gpt5_fck",
2935 	.type = TI_CLK_COMPOSITE,
2936 	.data = &gpt5_fck_data,
2937 };
2938 
2939 static struct ti_clk_gate ts_fck_data = {
2940 	.parent = "omap_32k_fck",
2941 	.bit_shift = 1,
2942 	.reg = 0xa08,
2943 	.module = TI_CLKM_CM,
2944 };
2945 
2946 static struct ti_clk ts_fck = {
2947 	.name = "ts_fck",
2948 	.clkdm_name = "core_l4_clkdm",
2949 	.type = TI_CLK_GATE,
2950 	.data = &ts_fck_data,
2951 };
2952 
2953 static struct ti_clk_fixed_factor wdt1_fck_data = {
2954 	.parent = "secure_32k_fck",
2955 	.div = 1,
2956 	.mult = 1,
2957 };
2958 
2959 static struct ti_clk wdt1_fck = {
2960 	.name = "wdt1_fck",
2961 	.type = TI_CLK_FIXED_FACTOR,
2962 	.data = &wdt1_fck_data,
2963 };
2964 
2965 static struct ti_clk_gate dpll4_m6x2_ck_omap36xx_data = {
2966 	.parent = "dpll4_m6x2_mul_ck",
2967 	.bit_shift = 0x1f,
2968 	.reg = 0xd00,
2969 	.module = TI_CLKM_CM,
2970 	.flags = CLKF_HSDIV | CLKF_SET_BIT_TO_DISABLE,
2971 };
2972 
2973 static struct ti_clk dpll4_m6x2_ck_omap36xx = {
2974 	.name = "dpll4_m6x2_ck",
2975 	.type = TI_CLK_GATE,
2976 	.data = &dpll4_m6x2_ck_omap36xx_data,
2977 	.patch = &dpll4_m6x2_ck,
2978 };
2979 
2980 static const char *gpt4_mux_fck_parents[] = {
2981 	"omap_32k_fck",
2982 	"sys_ck",
2983 };
2984 
2985 static struct ti_clk_mux gpt4_mux_fck_data = {
2986 	.bit_shift = 2,
2987 	.num_parents = ARRAY_SIZE(gpt4_mux_fck_parents),
2988 	.reg = 0x1040,
2989 	.module = TI_CLKM_CM,
2990 	.parents = gpt4_mux_fck_parents,
2991 };
2992 
2993 static struct ti_clk_gate usbhost_ick_data = {
2994 	.parent = "l4_ick",
2995 	.bit_shift = 0,
2996 	.reg = 0x1410,
2997 	.module = TI_CLKM_CM,
2998 	.flags = CLKF_DSS | CLKF_OMAP3 | CLKF_INTERFACE,
2999 };
3000 
3001 static struct ti_clk usbhost_ick = {
3002 	.name = "usbhost_ick",
3003 	.clkdm_name = "usbhost_clkdm",
3004 	.type = TI_CLK_GATE,
3005 	.data = &usbhost_ick_data,
3006 };
3007 
3008 static struct ti_clk_gate mcbsp2_ick_data = {
3009 	.parent = "per_l4_ick",
3010 	.bit_shift = 0,
3011 	.reg = 0x1010,
3012 	.module = TI_CLKM_CM,
3013 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
3014 };
3015 
3016 static struct ti_clk mcbsp2_ick = {
3017 	.name = "mcbsp2_ick",
3018 	.clkdm_name = "per_clkdm",
3019 	.type = TI_CLK_GATE,
3020 	.data = &mcbsp2_ick_data,
3021 };
3022 
3023 static struct ti_clk_gate omapctrl_ick_data = {
3024 	.parent = "core_l4_ick",
3025 	.bit_shift = 6,
3026 	.reg = 0xa10,
3027 	.module = TI_CLKM_CM,
3028 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
3029 };
3030 
3031 static struct ti_clk omapctrl_ick = {
3032 	.name = "omapctrl_ick",
3033 	.clkdm_name = "core_l4_clkdm",
3034 	.type = TI_CLK_GATE,
3035 	.data = &omapctrl_ick_data,
3036 };
3037 
3038 static struct ti_clk_fixed_factor omap_96m_d4_fck_data = {
3039 	.parent = "omap_96m_fck",
3040 	.div = 4,
3041 	.mult = 1,
3042 };
3043 
3044 static struct ti_clk omap_96m_d4_fck = {
3045 	.name = "omap_96m_d4_fck",
3046 	.type = TI_CLK_FIXED_FACTOR,
3047 	.data = &omap_96m_d4_fck_data,
3048 };
3049 
3050 static struct ti_clk_gate gpt6_ick_data = {
3051 	.parent = "per_l4_ick",
3052 	.bit_shift = 7,
3053 	.reg = 0x1010,
3054 	.module = TI_CLKM_CM,
3055 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
3056 };
3057 
3058 static struct ti_clk gpt6_ick = {
3059 	.name = "gpt6_ick",
3060 	.clkdm_name = "per_clkdm",
3061 	.type = TI_CLK_GATE,
3062 	.data = &gpt6_ick_data,
3063 };
3064 
3065 static struct ti_clk_gate dpll3_m3x2_ck_omap36xx_data = {
3066 	.parent = "dpll3_m3x2_mul_ck",
3067 	.bit_shift = 0xc,
3068 	.reg = 0xd00,
3069 	.module = TI_CLKM_CM,
3070 	.flags = CLKF_HSDIV | CLKF_SET_BIT_TO_DISABLE,
3071 };
3072 
3073 static struct ti_clk dpll3_m3x2_ck_omap36xx = {
3074 	.name = "dpll3_m3x2_ck",
3075 	.type = TI_CLK_GATE,
3076 	.data = &dpll3_m3x2_ck_omap36xx_data,
3077 	.patch = &dpll3_m3x2_ck,
3078 };
3079 
3080 static struct ti_clk_gate i2c3_ick_data = {
3081 	.parent = "core_l4_ick",
3082 	.bit_shift = 17,
3083 	.reg = 0xa10,
3084 	.module = TI_CLKM_CM,
3085 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
3086 };
3087 
3088 static struct ti_clk i2c3_ick = {
3089 	.name = "i2c3_ick",
3090 	.clkdm_name = "core_l4_clkdm",
3091 	.type = TI_CLK_GATE,
3092 	.data = &i2c3_ick_data,
3093 };
3094 
3095 static struct ti_clk_gate gpio6_ick_data = {
3096 	.parent = "per_l4_ick",
3097 	.bit_shift = 17,
3098 	.reg = 0x1010,
3099 	.module = TI_CLKM_CM,
3100 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
3101 };
3102 
3103 static struct ti_clk gpio6_ick = {
3104 	.name = "gpio6_ick",
3105 	.clkdm_name = "per_clkdm",
3106 	.type = TI_CLK_GATE,
3107 	.data = &gpio6_ick_data,
3108 };
3109 
3110 static struct ti_clk_gate mspro_ick_data = {
3111 	.parent = "core_l4_ick",
3112 	.bit_shift = 23,
3113 	.reg = 0xa10,
3114 	.module = TI_CLKM_CM,
3115 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
3116 };
3117 
3118 static struct ti_clk mspro_ick = {
3119 	.name = "mspro_ick",
3120 	.clkdm_name = "core_l4_clkdm",
3121 	.type = TI_CLK_GATE,
3122 	.data = &mspro_ick_data,
3123 };
3124 
3125 static struct ti_clk_composite mcbsp1_fck_data = {
3126 	.mux = &mcbsp1_mux_fck_data,
3127 	.gate = &mcbsp1_gate_fck_data,
3128 };
3129 
3130 static struct ti_clk mcbsp1_fck = {
3131 	.name = "mcbsp1_fck",
3132 	.type = TI_CLK_COMPOSITE,
3133 	.data = &mcbsp1_fck_data,
3134 };
3135 
3136 static struct ti_clk_gate gpt3_gate_fck_data = {
3137 	.parent = "sys_ck",
3138 	.bit_shift = 4,
3139 	.reg = 0x1000,
3140 	.module = TI_CLKM_CM,
3141 };
3142 
3143 static struct ti_clk_fixed rmii_ck_data = {
3144 	.frequency = 50000000,
3145 };
3146 
3147 static struct ti_clk rmii_ck = {
3148 	.name = "rmii_ck",
3149 	.type = TI_CLK_FIXED,
3150 	.data = &rmii_ck_data,
3151 };
3152 
3153 static struct ti_clk_gate gpt6_gate_fck_data = {
3154 	.parent = "sys_ck",
3155 	.bit_shift = 7,
3156 	.reg = 0x1000,
3157 	.module = TI_CLKM_CM,
3158 };
3159 
3160 static struct ti_clk_composite gpt6_fck_data = {
3161 	.mux = &gpt6_mux_fck_data,
3162 	.gate = &gpt6_gate_fck_data,
3163 };
3164 
3165 static struct ti_clk gpt6_fck = {
3166 	.name = "gpt6_fck",
3167 	.type = TI_CLK_COMPOSITE,
3168 	.data = &gpt6_fck_data,
3169 };
3170 
3171 static struct ti_clk_fixed_factor dpll5_m2_d4_ck_data = {
3172 	.parent = "dpll5_m2_ck",
3173 	.div = 4,
3174 	.mult = 1,
3175 };
3176 
3177 static struct ti_clk dpll5_m2_d4_ck = {
3178 	.name = "dpll5_m2_d4_ck",
3179 	.type = TI_CLK_FIXED_FACTOR,
3180 	.data = &dpll5_m2_d4_ck_data,
3181 };
3182 
3183 static struct ti_clk_fixed_factor sys_d2_ck_data = {
3184 	.parent = "sys_ck",
3185 	.div = 2,
3186 	.mult = 1,
3187 };
3188 
3189 static struct ti_clk sys_d2_ck = {
3190 	.name = "sys_d2_ck",
3191 	.type = TI_CLK_FIXED_FACTOR,
3192 	.data = &sys_d2_ck_data,
3193 };
3194 
3195 static struct ti_clk_fixed_factor omap_96m_d2_fck_data = {
3196 	.parent = "omap_96m_fck",
3197 	.div = 2,
3198 	.mult = 1,
3199 };
3200 
3201 static struct ti_clk omap_96m_d2_fck = {
3202 	.name = "omap_96m_d2_fck",
3203 	.type = TI_CLK_FIXED_FACTOR,
3204 	.data = &omap_96m_d2_fck_data,
3205 };
3206 
3207 static struct ti_clk_fixed_factor dpll5_m2_d8_ck_data = {
3208 	.parent = "dpll5_m2_ck",
3209 	.div = 8,
3210 	.mult = 1,
3211 };
3212 
3213 static struct ti_clk dpll5_m2_d8_ck = {
3214 	.name = "dpll5_m2_d8_ck",
3215 	.type = TI_CLK_FIXED_FACTOR,
3216 	.data = &dpll5_m2_d8_ck_data,
3217 };
3218 
3219 static struct ti_clk_fixed_factor dpll5_m2_d16_ck_data = {
3220 	.parent = "dpll5_m2_ck",
3221 	.div = 16,
3222 	.mult = 1,
3223 };
3224 
3225 static struct ti_clk dpll5_m2_d16_ck = {
3226 	.name = "dpll5_m2_d16_ck",
3227 	.type = TI_CLK_FIXED_FACTOR,
3228 	.data = &dpll5_m2_d16_ck_data,
3229 };
3230 
3231 static const char *usim_mux_fck_parents[] = {
3232 	"sys_ck",
3233 	"sys_d2_ck",
3234 	"omap_96m_d2_fck",
3235 	"omap_96m_d4_fck",
3236 	"omap_96m_d8_fck",
3237 	"omap_96m_d10_fck",
3238 	"dpll5_m2_d4_ck",
3239 	"dpll5_m2_d8_ck",
3240 	"dpll5_m2_d16_ck",
3241 	"dpll5_m2_d20_ck",
3242 };
3243 
3244 static struct ti_clk_mux usim_mux_fck_data = {
3245 	.bit_shift = 3,
3246 	.num_parents = ARRAY_SIZE(usim_mux_fck_parents),
3247 	.reg = 0xc40,
3248 	.module = TI_CLKM_CM,
3249 	.parents = usim_mux_fck_parents,
3250 	.flags = CLKF_INDEX_STARTS_AT_ONE,
3251 };
3252 
3253 static struct ti_clk_composite usim_fck_data = {
3254 	.mux = &usim_mux_fck_data,
3255 	.gate = &usim_gate_fck_data,
3256 };
3257 
3258 static struct ti_clk usim_fck = {
3259 	.name = "usim_fck",
3260 	.type = TI_CLK_COMPOSITE,
3261 	.data = &usim_fck_data,
3262 };
3263 
3264 static int ssi_ssr_div_fck_3430es2_divs[] = {
3265 	0,
3266 	1,
3267 	2,
3268 	3,
3269 	4,
3270 	0,
3271 	6,
3272 	0,
3273 	8,
3274 };
3275 
3276 static struct ti_clk_divider ssi_ssr_div_fck_3430es2_data = {
3277 	.num_dividers = ARRAY_SIZE(ssi_ssr_div_fck_3430es2_divs),
3278 	.parent = "corex2_fck",
3279 	.bit_shift = 8,
3280 	.dividers = ssi_ssr_div_fck_3430es2_divs,
3281 	.reg = 0xa40,
3282 	.module = TI_CLKM_CM,
3283 };
3284 
3285 static struct ti_clk_composite ssi_ssr_fck_3430es2_data = {
3286 	.gate = &ssi_ssr_gate_fck_3430es2_data,
3287 	.divider = &ssi_ssr_div_fck_3430es2_data,
3288 };
3289 
3290 static struct ti_clk ssi_ssr_fck_3430es2 = {
3291 	.name = "ssi_ssr_fck",
3292 	.type = TI_CLK_COMPOSITE,
3293 	.data = &ssi_ssr_fck_3430es2_data,
3294 };
3295 
3296 static struct ti_clk_gate dss1_alwon_fck_3430es1_data = {
3297 	.parent = "dpll4_m4x2_ck",
3298 	.bit_shift = 0,
3299 	.reg = 0xe00,
3300 	.module = TI_CLKM_CM,
3301 	.flags = CLKF_SET_RATE_PARENT,
3302 };
3303 
3304 static struct ti_clk dss1_alwon_fck_3430es1 = {
3305 	.name = "dss1_alwon_fck",
3306 	.clkdm_name = "dss_clkdm",
3307 	.type = TI_CLK_GATE,
3308 	.data = &dss1_alwon_fck_3430es1_data,
3309 };
3310 
3311 static struct ti_clk_gate gpt3_ick_data = {
3312 	.parent = "per_l4_ick",
3313 	.bit_shift = 4,
3314 	.reg = 0x1010,
3315 	.module = TI_CLKM_CM,
3316 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
3317 };
3318 
3319 static struct ti_clk gpt3_ick = {
3320 	.name = "gpt3_ick",
3321 	.clkdm_name = "per_clkdm",
3322 	.type = TI_CLK_GATE,
3323 	.data = &gpt3_ick_data,
3324 };
3325 
3326 static struct ti_clk_fixed_factor omap_12m_fck_data = {
3327 	.parent = "omap_48m_fck",
3328 	.div = 4,
3329 	.mult = 1,
3330 };
3331 
3332 static struct ti_clk omap_12m_fck = {
3333 	.name = "omap_12m_fck",
3334 	.type = TI_CLK_FIXED_FACTOR,
3335 	.data = &omap_12m_fck_data,
3336 };
3337 
3338 static struct ti_clk_fixed_factor core_12m_fck_data = {
3339 	.parent = "omap_12m_fck",
3340 	.div = 1,
3341 	.mult = 1,
3342 };
3343 
3344 static struct ti_clk core_12m_fck = {
3345 	.name = "core_12m_fck",
3346 	.type = TI_CLK_FIXED_FACTOR,
3347 	.data = &core_12m_fck_data,
3348 };
3349 
3350 static struct ti_clk_gate hdq_fck_data = {
3351 	.parent = "core_12m_fck",
3352 	.bit_shift = 22,
3353 	.reg = 0xa00,
3354 	.module = TI_CLKM_CM,
3355 	.flags = CLKF_WAIT,
3356 };
3357 
3358 static struct ti_clk hdq_fck = {
3359 	.name = "hdq_fck",
3360 	.clkdm_name = "core_l4_clkdm",
3361 	.type = TI_CLK_GATE,
3362 	.data = &hdq_fck_data,
3363 };
3364 
3365 static struct ti_clk_gate usbtll_fck_data = {
3366 	.parent = "dpll5_m2_ck",
3367 	.bit_shift = 2,
3368 	.reg = 0xa08,
3369 	.module = TI_CLKM_CM,
3370 	.flags = CLKF_WAIT,
3371 };
3372 
3373 static struct ti_clk usbtll_fck = {
3374 	.name = "usbtll_fck",
3375 	.clkdm_name = "core_l4_clkdm",
3376 	.type = TI_CLK_GATE,
3377 	.data = &usbtll_fck_data,
3378 };
3379 
3380 static struct ti_clk_gate hsotgusb_fck_am35xx_data = {
3381 	.parent = "sys_ck",
3382 	.bit_shift = 8,
3383 	.reg = 0x59c,
3384 	.module = TI_CLKM_SCRM,
3385 };
3386 
3387 static struct ti_clk hsotgusb_fck_am35xx = {
3388 	.name = "hsotgusb_fck_am35xx",
3389 	.clkdm_name = "core_l3_clkdm",
3390 	.type = TI_CLK_GATE,
3391 	.data = &hsotgusb_fck_am35xx_data,
3392 };
3393 
3394 static struct ti_clk_gate hsotgusb_ick_3430es2_data = {
3395 	.parent = "core_l3_ick",
3396 	.bit_shift = 4,
3397 	.reg = 0xa10,
3398 	.module = TI_CLKM_CM,
3399 	.flags = CLKF_HSOTGUSB | CLKF_OMAP3 | CLKF_INTERFACE,
3400 };
3401 
3402 static struct ti_clk hsotgusb_ick_3430es2 = {
3403 	.name = "hsotgusb_ick_3430es2",
3404 	.clkdm_name = "core_l3_clkdm",
3405 	.type = TI_CLK_GATE,
3406 	.data = &hsotgusb_ick_3430es2_data,
3407 };
3408 
3409 static struct ti_clk_gate gfx_l3_ck_data = {
3410 	.parent = "l3_ick",
3411 	.bit_shift = 0,
3412 	.reg = 0xb10,
3413 	.module = TI_CLKM_CM,
3414 	.flags = CLKF_WAIT,
3415 };
3416 
3417 static struct ti_clk gfx_l3_ck = {
3418 	.name = "gfx_l3_ck",
3419 	.clkdm_name = "gfx_3430es1_clkdm",
3420 	.type = TI_CLK_GATE,
3421 	.data = &gfx_l3_ck_data,
3422 };
3423 
3424 static struct ti_clk_fixed_factor gfx_l3_ick_data = {
3425 	.parent = "gfx_l3_ck",
3426 	.div = 1,
3427 	.mult = 1,
3428 };
3429 
3430 static struct ti_clk gfx_l3_ick = {
3431 	.name = "gfx_l3_ick",
3432 	.type = TI_CLK_FIXED_FACTOR,
3433 	.data = &gfx_l3_ick_data,
3434 };
3435 
3436 static struct ti_clk_gate mcbsp1_ick_data = {
3437 	.parent = "core_l4_ick",
3438 	.bit_shift = 9,
3439 	.reg = 0xa10,
3440 	.module = TI_CLKM_CM,
3441 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
3442 };
3443 
3444 static struct ti_clk mcbsp1_ick = {
3445 	.name = "mcbsp1_ick",
3446 	.clkdm_name = "core_l4_clkdm",
3447 	.type = TI_CLK_GATE,
3448 	.data = &mcbsp1_ick_data,
3449 };
3450 
3451 static struct ti_clk_fixed_factor gpt12_fck_data = {
3452 	.parent = "secure_32k_fck",
3453 	.div = 1,
3454 	.mult = 1,
3455 };
3456 
3457 static struct ti_clk gpt12_fck = {
3458 	.name = "gpt12_fck",
3459 	.type = TI_CLK_FIXED_FACTOR,
3460 	.data = &gpt12_fck_data,
3461 };
3462 
3463 static struct ti_clk_gate gfx_cg2_ck_data = {
3464 	.parent = "gfx_l3_fck",
3465 	.bit_shift = 2,
3466 	.reg = 0xb00,
3467 	.module = TI_CLKM_CM,
3468 	.flags = CLKF_WAIT,
3469 };
3470 
3471 static struct ti_clk gfx_cg2_ck = {
3472 	.name = "gfx_cg2_ck",
3473 	.clkdm_name = "gfx_3430es1_clkdm",
3474 	.type = TI_CLK_GATE,
3475 	.data = &gfx_cg2_ck_data,
3476 };
3477 
3478 static struct ti_clk_gate i2c2_ick_data = {
3479 	.parent = "core_l4_ick",
3480 	.bit_shift = 16,
3481 	.reg = 0xa10,
3482 	.module = TI_CLKM_CM,
3483 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
3484 };
3485 
3486 static struct ti_clk i2c2_ick = {
3487 	.name = "i2c2_ick",
3488 	.clkdm_name = "core_l4_clkdm",
3489 	.type = TI_CLK_GATE,
3490 	.data = &i2c2_ick_data,
3491 };
3492 
3493 static struct ti_clk_gate gpio4_dbck_data = {
3494 	.parent = "per_32k_alwon_fck",
3495 	.bit_shift = 15,
3496 	.reg = 0x1000,
3497 	.module = TI_CLKM_CM,
3498 };
3499 
3500 static struct ti_clk gpio4_dbck = {
3501 	.name = "gpio4_dbck",
3502 	.clkdm_name = "per_clkdm",
3503 	.type = TI_CLK_GATE,
3504 	.data = &gpio4_dbck_data,
3505 };
3506 
3507 static struct ti_clk_gate i2c3_fck_data = {
3508 	.parent = "core_96m_fck",
3509 	.bit_shift = 17,
3510 	.reg = 0xa00,
3511 	.module = TI_CLKM_CM,
3512 	.flags = CLKF_WAIT,
3513 };
3514 
3515 static struct ti_clk i2c3_fck = {
3516 	.name = "i2c3_fck",
3517 	.clkdm_name = "core_l4_clkdm",
3518 	.type = TI_CLK_GATE,
3519 	.data = &i2c3_fck_data,
3520 };
3521 
3522 static struct ti_clk_composite gpt3_fck_data = {
3523 	.mux = &gpt3_mux_fck_data,
3524 	.gate = &gpt3_gate_fck_data,
3525 };
3526 
3527 static struct ti_clk gpt3_fck = {
3528 	.name = "gpt3_fck",
3529 	.type = TI_CLK_COMPOSITE,
3530 	.data = &gpt3_fck_data,
3531 };
3532 
3533 static struct ti_clk_gate i2c1_ick_data = {
3534 	.parent = "core_l4_ick",
3535 	.bit_shift = 15,
3536 	.reg = 0xa10,
3537 	.module = TI_CLKM_CM,
3538 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
3539 };
3540 
3541 static struct ti_clk i2c1_ick = {
3542 	.name = "i2c1_ick",
3543 	.clkdm_name = "core_l4_clkdm",
3544 	.type = TI_CLK_GATE,
3545 	.data = &i2c1_ick_data,
3546 };
3547 
3548 static struct ti_clk_gate omap_32ksync_ick_data = {
3549 	.parent = "wkup_l4_ick",
3550 	.bit_shift = 2,
3551 	.reg = 0xc10,
3552 	.module = TI_CLKM_CM,
3553 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
3554 };
3555 
3556 static struct ti_clk omap_32ksync_ick = {
3557 	.name = "omap_32ksync_ick",
3558 	.clkdm_name = "wkup_clkdm",
3559 	.type = TI_CLK_GATE,
3560 	.data = &omap_32ksync_ick_data,
3561 };
3562 
3563 static struct ti_clk_gate aes2_ick_data = {
3564 	.parent = "core_l4_ick",
3565 	.bit_shift = 28,
3566 	.reg = 0xa10,
3567 	.module = TI_CLKM_CM,
3568 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
3569 };
3570 
3571 static struct ti_clk aes2_ick = {
3572 	.name = "aes2_ick",
3573 	.clkdm_name = "core_l4_clkdm",
3574 	.type = TI_CLK_GATE,
3575 	.data = &aes2_ick_data,
3576 };
3577 
3578 static const char *gpt8_mux_fck_parents[] = {
3579 	"omap_32k_fck",
3580 	"sys_ck",
3581 };
3582 
3583 static struct ti_clk_mux gpt8_mux_fck_data = {
3584 	.bit_shift = 6,
3585 	.num_parents = ARRAY_SIZE(gpt8_mux_fck_parents),
3586 	.reg = 0x1040,
3587 	.module = TI_CLKM_CM,
3588 	.parents = gpt8_mux_fck_parents,
3589 };
3590 
3591 static struct ti_clk_composite gpt8_fck_data = {
3592 	.mux = &gpt8_mux_fck_data,
3593 	.gate = &gpt8_gate_fck_data,
3594 };
3595 
3596 static struct ti_clk gpt8_fck = {
3597 	.name = "gpt8_fck",
3598 	.type = TI_CLK_COMPOSITE,
3599 	.data = &gpt8_fck_data,
3600 };
3601 
3602 static struct ti_clk_gate mcbsp4_gate_fck_data = {
3603 	.parent = "mcbsp_clks",
3604 	.bit_shift = 2,
3605 	.reg = 0x1000,
3606 	.module = TI_CLKM_CM,
3607 };
3608 
3609 static struct ti_clk_composite mcbsp4_fck_data = {
3610 	.mux = &mcbsp4_mux_fck_data,
3611 	.gate = &mcbsp4_gate_fck_data,
3612 };
3613 
3614 static struct ti_clk mcbsp4_fck = {
3615 	.name = "mcbsp4_fck",
3616 	.type = TI_CLK_COMPOSITE,
3617 	.data = &mcbsp4_fck_data,
3618 };
3619 
3620 static struct ti_clk_gate gpio2_dbck_data = {
3621 	.parent = "per_32k_alwon_fck",
3622 	.bit_shift = 13,
3623 	.reg = 0x1000,
3624 	.module = TI_CLKM_CM,
3625 };
3626 
3627 static struct ti_clk gpio2_dbck = {
3628 	.name = "gpio2_dbck",
3629 	.clkdm_name = "per_clkdm",
3630 	.type = TI_CLK_GATE,
3631 	.data = &gpio2_dbck_data,
3632 };
3633 
3634 static struct ti_clk_gate usbtll_ick_data = {
3635 	.parent = "core_l4_ick",
3636 	.bit_shift = 2,
3637 	.reg = 0xa18,
3638 	.module = TI_CLKM_CM,
3639 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
3640 };
3641 
3642 static struct ti_clk usbtll_ick = {
3643 	.name = "usbtll_ick",
3644 	.clkdm_name = "core_l4_clkdm",
3645 	.type = TI_CLK_GATE,
3646 	.data = &usbtll_ick_data,
3647 };
3648 
3649 static struct ti_clk_gate mcspi4_ick_data = {
3650 	.parent = "core_l4_ick",
3651 	.bit_shift = 21,
3652 	.reg = 0xa10,
3653 	.module = TI_CLKM_CM,
3654 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
3655 };
3656 
3657 static struct ti_clk mcspi4_ick = {
3658 	.name = "mcspi4_ick",
3659 	.clkdm_name = "core_l4_clkdm",
3660 	.type = TI_CLK_GATE,
3661 	.data = &mcspi4_ick_data,
3662 };
3663 
3664 static struct ti_clk_gate dss_96m_fck_data = {
3665 	.parent = "omap_96m_fck",
3666 	.bit_shift = 2,
3667 	.reg = 0xe00,
3668 	.module = TI_CLKM_CM,
3669 };
3670 
3671 static struct ti_clk dss_96m_fck = {
3672 	.name = "dss_96m_fck",
3673 	.clkdm_name = "dss_clkdm",
3674 	.type = TI_CLK_GATE,
3675 	.data = &dss_96m_fck_data,
3676 };
3677 
3678 static struct ti_clk_divider rm_ick_data = {
3679 	.parent = "l4_ick",
3680 	.bit_shift = 1,
3681 	.max_div = 3,
3682 	.reg = 0xc40,
3683 	.module = TI_CLKM_CM,
3684 	.flags = CLKF_INDEX_STARTS_AT_ONE,
3685 };
3686 
3687 static struct ti_clk rm_ick = {
3688 	.name = "rm_ick",
3689 	.type = TI_CLK_DIVIDER,
3690 	.data = &rm_ick_data,
3691 };
3692 
3693 static struct ti_clk_gate hdq_ick_data = {
3694 	.parent = "core_l4_ick",
3695 	.bit_shift = 22,
3696 	.reg = 0xa10,
3697 	.module = TI_CLKM_CM,
3698 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
3699 };
3700 
3701 static struct ti_clk hdq_ick = {
3702 	.name = "hdq_ick",
3703 	.clkdm_name = "core_l4_clkdm",
3704 	.type = TI_CLK_GATE,
3705 	.data = &hdq_ick_data,
3706 };
3707 
3708 static struct ti_clk_fixed_factor dpll3_x2_ck_data = {
3709 	.parent = "dpll3_ck",
3710 	.div = 1,
3711 	.mult = 2,
3712 };
3713 
3714 static struct ti_clk dpll3_x2_ck = {
3715 	.name = "dpll3_x2_ck",
3716 	.type = TI_CLK_FIXED_FACTOR,
3717 	.data = &dpll3_x2_ck_data,
3718 };
3719 
3720 static struct ti_clk_gate mad2d_ick_data = {
3721 	.parent = "l3_ick",
3722 	.bit_shift = 3,
3723 	.reg = 0xa18,
3724 	.module = TI_CLKM_CM,
3725 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
3726 };
3727 
3728 static struct ti_clk mad2d_ick = {
3729 	.name = "mad2d_ick",
3730 	.clkdm_name = "d2d_clkdm",
3731 	.type = TI_CLK_GATE,
3732 	.data = &mad2d_ick_data,
3733 };
3734 
3735 static struct ti_clk_gate fshostusb_fck_data = {
3736 	.parent = "core_48m_fck",
3737 	.bit_shift = 5,
3738 	.reg = 0xa00,
3739 	.module = TI_CLKM_CM,
3740 	.flags = CLKF_WAIT,
3741 };
3742 
3743 static struct ti_clk fshostusb_fck = {
3744 	.name = "fshostusb_fck",
3745 	.clkdm_name = "core_l4_clkdm",
3746 	.type = TI_CLK_GATE,
3747 	.data = &fshostusb_fck_data,
3748 };
3749 
3750 static struct ti_clk_gate sr1_fck_data = {
3751 	.parent = "sys_ck",
3752 	.bit_shift = 6,
3753 	.reg = 0xc00,
3754 	.module = TI_CLKM_CM,
3755 	.flags = CLKF_WAIT,
3756 };
3757 
3758 static struct ti_clk sr1_fck = {
3759 	.name = "sr1_fck",
3760 	.clkdm_name = "wkup_clkdm",
3761 	.type = TI_CLK_GATE,
3762 	.data = &sr1_fck_data,
3763 };
3764 
3765 static struct ti_clk_gate des2_ick_data = {
3766 	.parent = "core_l4_ick",
3767 	.bit_shift = 26,
3768 	.reg = 0xa10,
3769 	.module = TI_CLKM_CM,
3770 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
3771 };
3772 
3773 static struct ti_clk des2_ick = {
3774 	.name = "des2_ick",
3775 	.clkdm_name = "core_l4_clkdm",
3776 	.type = TI_CLK_GATE,
3777 	.data = &des2_ick_data,
3778 };
3779 
3780 static struct ti_clk_gate sdrc_ick_data = {
3781 	.parent = "core_l3_ick",
3782 	.bit_shift = 1,
3783 	.reg = 0xa10,
3784 	.module = TI_CLKM_CM,
3785 	.flags = CLKF_WAIT,
3786 };
3787 
3788 static struct ti_clk sdrc_ick = {
3789 	.name = "sdrc_ick",
3790 	.clkdm_name = "core_l3_clkdm",
3791 	.type = TI_CLK_GATE,
3792 	.data = &sdrc_ick_data,
3793 };
3794 
3795 static struct ti_clk_composite gpt4_fck_data = {
3796 	.mux = &gpt4_mux_fck_data,
3797 	.gate = &gpt4_gate_fck_data,
3798 };
3799 
3800 static struct ti_clk gpt4_fck = {
3801 	.name = "gpt4_fck",
3802 	.type = TI_CLK_COMPOSITE,
3803 	.data = &gpt4_fck_data,
3804 };
3805 
3806 static struct ti_clk_gate dpll4_m3x2_ck_omap36xx_data = {
3807 	.parent = "dpll4_m3x2_mul_ck",
3808 	.bit_shift = 0x1c,
3809 	.reg = 0xd00,
3810 	.module = TI_CLKM_CM,
3811 	.flags = CLKF_HSDIV | CLKF_SET_BIT_TO_DISABLE,
3812 };
3813 
3814 static struct ti_clk dpll4_m3x2_ck_omap36xx = {
3815 	.name = "dpll4_m3x2_ck",
3816 	.type = TI_CLK_GATE,
3817 	.data = &dpll4_m3x2_ck_omap36xx_data,
3818 	.patch = &dpll4_m3x2_ck,
3819 };
3820 
3821 static struct ti_clk_gate cpefuse_fck_data = {
3822 	.parent = "sys_ck",
3823 	.bit_shift = 0,
3824 	.reg = 0xa08,
3825 	.module = TI_CLKM_CM,
3826 };
3827 
3828 static struct ti_clk cpefuse_fck = {
3829 	.name = "cpefuse_fck",
3830 	.clkdm_name = "core_l4_clkdm",
3831 	.type = TI_CLK_GATE,
3832 	.data = &cpefuse_fck_data,
3833 };
3834 
3835 static struct ti_clk_gate mcspi3_ick_data = {
3836 	.parent = "core_l4_ick",
3837 	.bit_shift = 20,
3838 	.reg = 0xa10,
3839 	.module = TI_CLKM_CM,
3840 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
3841 };
3842 
3843 static struct ti_clk mcspi3_ick = {
3844 	.name = "mcspi3_ick",
3845 	.clkdm_name = "core_l4_clkdm",
3846 	.type = TI_CLK_GATE,
3847 	.data = &mcspi3_ick_data,
3848 };
3849 
3850 static struct ti_clk_fixed_factor ssi_sst_fck_3430es2_data = {
3851 	.parent = "ssi_ssr_fck",
3852 	.div = 2,
3853 	.mult = 1,
3854 };
3855 
3856 static struct ti_clk ssi_sst_fck_3430es2 = {
3857 	.name = "ssi_sst_fck",
3858 	.type = TI_CLK_FIXED_FACTOR,
3859 	.data = &ssi_sst_fck_3430es2_data,
3860 };
3861 
3862 static struct ti_clk_gate gpio1_dbck_data = {
3863 	.parent = "wkup_32k_fck",
3864 	.bit_shift = 3,
3865 	.reg = 0xc00,
3866 	.module = TI_CLKM_CM,
3867 };
3868 
3869 static struct ti_clk gpio1_dbck = {
3870 	.name = "gpio1_dbck",
3871 	.clkdm_name = "wkup_clkdm",
3872 	.type = TI_CLK_GATE,
3873 	.data = &gpio1_dbck_data,
3874 };
3875 
3876 static struct ti_clk_gate gpt4_ick_data = {
3877 	.parent = "per_l4_ick",
3878 	.bit_shift = 5,
3879 	.reg = 0x1010,
3880 	.module = TI_CLKM_CM,
3881 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
3882 };
3883 
3884 static struct ti_clk gpt4_ick = {
3885 	.name = "gpt4_ick",
3886 	.clkdm_name = "per_clkdm",
3887 	.type = TI_CLK_GATE,
3888 	.data = &gpt4_ick_data,
3889 };
3890 
3891 static struct ti_clk_gate gpt2_ick_data = {
3892 	.parent = "per_l4_ick",
3893 	.bit_shift = 3,
3894 	.reg = 0x1010,
3895 	.module = TI_CLKM_CM,
3896 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
3897 };
3898 
3899 static struct ti_clk gpt2_ick = {
3900 	.name = "gpt2_ick",
3901 	.clkdm_name = "per_clkdm",
3902 	.type = TI_CLK_GATE,
3903 	.data = &gpt2_ick_data,
3904 };
3905 
3906 static struct ti_clk_gate mmchs1_fck_data = {
3907 	.parent = "core_96m_fck",
3908 	.bit_shift = 24,
3909 	.reg = 0xa00,
3910 	.module = TI_CLKM_CM,
3911 	.flags = CLKF_WAIT,
3912 };
3913 
3914 static struct ti_clk mmchs1_fck = {
3915 	.name = "mmchs1_fck",
3916 	.clkdm_name = "core_l4_clkdm",
3917 	.type = TI_CLK_GATE,
3918 	.data = &mmchs1_fck_data,
3919 };
3920 
3921 static struct ti_clk_fixed dummy_apb_pclk_data = {
3922 	.frequency = 0x0,
3923 };
3924 
3925 static struct ti_clk dummy_apb_pclk = {
3926 	.name = "dummy_apb_pclk",
3927 	.type = TI_CLK_FIXED,
3928 	.data = &dummy_apb_pclk_data,
3929 };
3930 
3931 static struct ti_clk_gate gpio6_dbck_data = {
3932 	.parent = "per_32k_alwon_fck",
3933 	.bit_shift = 17,
3934 	.reg = 0x1000,
3935 	.module = TI_CLKM_CM,
3936 };
3937 
3938 static struct ti_clk gpio6_dbck = {
3939 	.name = "gpio6_dbck",
3940 	.clkdm_name = "per_clkdm",
3941 	.type = TI_CLK_GATE,
3942 	.data = &gpio6_dbck_data,
3943 };
3944 
3945 static struct ti_clk_gate uart2_ick_data = {
3946 	.parent = "core_l4_ick",
3947 	.bit_shift = 14,
3948 	.reg = 0xa10,
3949 	.module = TI_CLKM_CM,
3950 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
3951 };
3952 
3953 static struct ti_clk uart2_ick = {
3954 	.name = "uart2_ick",
3955 	.clkdm_name = "core_l4_clkdm",
3956 	.type = TI_CLK_GATE,
3957 	.data = &uart2_ick_data,
3958 };
3959 
3960 static struct ti_clk_fixed_factor dpll4_x2_ck_data = {
3961 	.parent = "dpll4_ck",
3962 	.div = 1,
3963 	.mult = 2,
3964 };
3965 
3966 static struct ti_clk dpll4_x2_ck = {
3967 	.name = "dpll4_x2_ck",
3968 	.type = TI_CLK_FIXED_FACTOR,
3969 	.data = &dpll4_x2_ck_data,
3970 };
3971 
3972 static struct ti_clk_gate gpt7_ick_data = {
3973 	.parent = "per_l4_ick",
3974 	.bit_shift = 8,
3975 	.reg = 0x1010,
3976 	.module = TI_CLKM_CM,
3977 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
3978 };
3979 
3980 static struct ti_clk gpt7_ick = {
3981 	.name = "gpt7_ick",
3982 	.clkdm_name = "per_clkdm",
3983 	.type = TI_CLK_GATE,
3984 	.data = &gpt7_ick_data,
3985 };
3986 
3987 static struct ti_clk_gate dss_tv_fck_data = {
3988 	.parent = "omap_54m_fck",
3989 	.bit_shift = 2,
3990 	.reg = 0xe00,
3991 	.module = TI_CLKM_CM,
3992 };
3993 
3994 static struct ti_clk dss_tv_fck = {
3995 	.name = "dss_tv_fck",
3996 	.clkdm_name = "dss_clkdm",
3997 	.type = TI_CLK_GATE,
3998 	.data = &dss_tv_fck_data,
3999 };
4000 
4001 static struct ti_clk_gate mcbsp5_ick_data = {
4002 	.parent = "core_l4_ick",
4003 	.bit_shift = 10,
4004 	.reg = 0xa10,
4005 	.module = TI_CLKM_CM,
4006 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
4007 };
4008 
4009 static struct ti_clk mcbsp5_ick = {
4010 	.name = "mcbsp5_ick",
4011 	.clkdm_name = "core_l4_clkdm",
4012 	.type = TI_CLK_GATE,
4013 	.data = &mcbsp5_ick_data,
4014 };
4015 
4016 static struct ti_clk_gate mcspi1_ick_data = {
4017 	.parent = "core_l4_ick",
4018 	.bit_shift = 18,
4019 	.reg = 0xa10,
4020 	.module = TI_CLKM_CM,
4021 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
4022 };
4023 
4024 static struct ti_clk mcspi1_ick = {
4025 	.name = "mcspi1_ick",
4026 	.clkdm_name = "core_l4_clkdm",
4027 	.type = TI_CLK_GATE,
4028 	.data = &mcspi1_ick_data,
4029 };
4030 
4031 static struct ti_clk_gate d2d_26m_fck_data = {
4032 	.parent = "sys_ck",
4033 	.bit_shift = 3,
4034 	.reg = 0xa00,
4035 	.module = TI_CLKM_CM,
4036 	.flags = CLKF_WAIT,
4037 };
4038 
4039 static struct ti_clk d2d_26m_fck = {
4040 	.name = "d2d_26m_fck",
4041 	.clkdm_name = "d2d_clkdm",
4042 	.type = TI_CLK_GATE,
4043 	.data = &d2d_26m_fck_data,
4044 };
4045 
4046 static struct ti_clk_gate wdt3_ick_data = {
4047 	.parent = "per_l4_ick",
4048 	.bit_shift = 12,
4049 	.reg = 0x1010,
4050 	.module = TI_CLKM_CM,
4051 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
4052 };
4053 
4054 static struct ti_clk wdt3_ick = {
4055 	.name = "wdt3_ick",
4056 	.clkdm_name = "per_clkdm",
4057 	.type = TI_CLK_GATE,
4058 	.data = &wdt3_ick_data,
4059 };
4060 
4061 static struct ti_clk_divider pclkx2_fck_data = {
4062 	.parent = "emu_src_ck",
4063 	.bit_shift = 6,
4064 	.max_div = 3,
4065 	.reg = 0x1140,
4066 	.module = TI_CLKM_CM,
4067 	.flags = CLKF_INDEX_STARTS_AT_ONE,
4068 };
4069 
4070 static struct ti_clk pclkx2_fck = {
4071 	.name = "pclkx2_fck",
4072 	.type = TI_CLK_DIVIDER,
4073 	.data = &pclkx2_fck_data,
4074 };
4075 
4076 static struct ti_clk_gate sha12_ick_data = {
4077 	.parent = "core_l4_ick",
4078 	.bit_shift = 27,
4079 	.reg = 0xa10,
4080 	.module = TI_CLKM_CM,
4081 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
4082 };
4083 
4084 static struct ti_clk sha12_ick = {
4085 	.name = "sha12_ick",
4086 	.clkdm_name = "core_l4_clkdm",
4087 	.type = TI_CLK_GATE,
4088 	.data = &sha12_ick_data,
4089 };
4090 
4091 static struct ti_clk_gate emac_fck_data = {
4092 	.parent = "rmii_ck",
4093 	.bit_shift = 9,
4094 	.reg = 0x59c,
4095 	.module = TI_CLKM_SCRM,
4096 };
4097 
4098 static struct ti_clk emac_fck = {
4099 	.name = "emac_fck",
4100 	.type = TI_CLK_GATE,
4101 	.data = &emac_fck_data,
4102 };
4103 
4104 static struct ti_clk_composite gpt10_fck_data = {
4105 	.mux = &gpt10_mux_fck_data,
4106 	.gate = &gpt10_gate_fck_data,
4107 };
4108 
4109 static struct ti_clk gpt10_fck = {
4110 	.name = "gpt10_fck",
4111 	.type = TI_CLK_COMPOSITE,
4112 	.data = &gpt10_fck_data,
4113 };
4114 
4115 static struct ti_clk_gate wdt2_fck_data = {
4116 	.parent = "wkup_32k_fck",
4117 	.bit_shift = 5,
4118 	.reg = 0xc00,
4119 	.module = TI_CLKM_CM,
4120 	.flags = CLKF_WAIT,
4121 };
4122 
4123 static struct ti_clk wdt2_fck = {
4124 	.name = "wdt2_fck",
4125 	.clkdm_name = "wkup_clkdm",
4126 	.type = TI_CLK_GATE,
4127 	.data = &wdt2_fck_data,
4128 };
4129 
4130 static struct ti_clk_gate cam_ick_data = {
4131 	.parent = "l4_ick",
4132 	.bit_shift = 0,
4133 	.reg = 0xf10,
4134 	.module = TI_CLKM_CM,
4135 	.flags = CLKF_OMAP3 | CLKF_NO_WAIT | CLKF_INTERFACE,
4136 };
4137 
4138 static struct ti_clk cam_ick = {
4139 	.name = "cam_ick",
4140 	.clkdm_name = "cam_clkdm",
4141 	.type = TI_CLK_GATE,
4142 	.data = &cam_ick_data,
4143 };
4144 
4145 static struct ti_clk_gate ssi_ick_3430es2_data = {
4146 	.parent = "ssi_l4_ick",
4147 	.bit_shift = 0,
4148 	.reg = 0xa10,
4149 	.module = TI_CLKM_CM,
4150 	.flags = CLKF_SSI | CLKF_OMAP3 | CLKF_INTERFACE,
4151 };
4152 
4153 static struct ti_clk ssi_ick_3430es2 = {
4154 	.name = "ssi_ick",
4155 	.clkdm_name = "core_l4_clkdm",
4156 	.type = TI_CLK_GATE,
4157 	.data = &ssi_ick_3430es2_data,
4158 };
4159 
4160 static struct ti_clk_gate gpio4_ick_data = {
4161 	.parent = "per_l4_ick",
4162 	.bit_shift = 15,
4163 	.reg = 0x1010,
4164 	.module = TI_CLKM_CM,
4165 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
4166 };
4167 
4168 static struct ti_clk gpio4_ick = {
4169 	.name = "gpio4_ick",
4170 	.clkdm_name = "per_clkdm",
4171 	.type = TI_CLK_GATE,
4172 	.data = &gpio4_ick_data,
4173 };
4174 
4175 static struct ti_clk_gate wdt1_ick_data = {
4176 	.parent = "wkup_l4_ick",
4177 	.bit_shift = 4,
4178 	.reg = 0xc10,
4179 	.module = TI_CLKM_CM,
4180 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
4181 };
4182 
4183 static struct ti_clk wdt1_ick = {
4184 	.name = "wdt1_ick",
4185 	.clkdm_name = "wkup_clkdm",
4186 	.type = TI_CLK_GATE,
4187 	.data = &wdt1_ick_data,
4188 };
4189 
4190 static struct ti_clk_gate rng_ick_data = {
4191 	.parent = "security_l4_ick2",
4192 	.bit_shift = 2,
4193 	.reg = 0xa14,
4194 	.module = TI_CLKM_CM,
4195 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
4196 };
4197 
4198 static struct ti_clk rng_ick = {
4199 	.name = "rng_ick",
4200 	.type = TI_CLK_GATE,
4201 	.data = &rng_ick_data,
4202 };
4203 
4204 static struct ti_clk_gate icr_ick_data = {
4205 	.parent = "core_l4_ick",
4206 	.bit_shift = 29,
4207 	.reg = 0xa10,
4208 	.module = TI_CLKM_CM,
4209 	.flags = CLKF_OMAP3 | CLKF_INTERFACE,
4210 };
4211 
4212 static struct ti_clk icr_ick = {
4213 	.name = "icr_ick",
4214 	.clkdm_name = "core_l4_clkdm",
4215 	.type = TI_CLK_GATE,
4216 	.data = &icr_ick_data,
4217 };
4218 
4219 static struct ti_clk_gate sgx_ick_data = {
4220 	.parent = "l3_ick",
4221 	.bit_shift = 0,
4222 	.reg = 0xb10,
4223 	.module = TI_CLKM_CM,
4224 	.flags = CLKF_WAIT,
4225 };
4226 
4227 static struct ti_clk sgx_ick = {
4228 	.name = "sgx_ick",
4229 	.clkdm_name = "sgx_clkdm",
4230 	.type = TI_CLK_GATE,
4231 	.data = &sgx_ick_data,
4232 };
4233 
4234 static struct ti_clk_divider sys_clkout2_data = {
4235 	.parent = "clkout2_src_ck",
4236 	.bit_shift = 3,
4237 	.max_div = 64,
4238 	.reg = 0xd70,
4239 	.module = TI_CLKM_CM,
4240 	.flags = CLKF_INDEX_POWER_OF_TWO,
4241 };
4242 
4243 static struct ti_clk sys_clkout2 = {
4244 	.name = "sys_clkout2",
4245 	.type = TI_CLK_DIVIDER,
4246 	.data = &sys_clkout2_data,
4247 };
4248 
4249 static struct ti_clk_alias omap34xx_omap36xx_clks[] = {
4250 	CLK(NULL, "security_l4_ick2", &security_l4_ick2),
4251 	CLK(NULL, "aes1_ick", &aes1_ick),
4252 	CLK("omap_rng", "ick", &rng_ick),
4253 	CLK("omap3-rom-rng", "ick", &rng_ick),
4254 	CLK(NULL, "sha11_ick", &sha11_ick),
4255 	CLK(NULL, "des1_ick", &des1_ick),
4256 	CLK(NULL, "cam_mclk", &cam_mclk),
4257 	CLK(NULL, "cam_ick", &cam_ick),
4258 	CLK(NULL, "csi2_96m_fck", &csi2_96m_fck),
4259 	CLK(NULL, "security_l3_ick", &security_l3_ick),
4260 	CLK(NULL, "pka_ick", &pka_ick),
4261 	CLK(NULL, "icr_ick", &icr_ick),
4262 	CLK(NULL, "des2_ick", &des2_ick),
4263 	CLK(NULL, "mspro_ick", &mspro_ick),
4264 	CLK(NULL, "mailboxes_ick", &mailboxes_ick),
4265 	CLK(NULL, "ssi_l4_ick", &ssi_l4_ick),
4266 	CLK(NULL, "sr1_fck", &sr1_fck),
4267 	CLK(NULL, "sr2_fck", &sr2_fck),
4268 	CLK(NULL, "sr_l4_ick", &sr_l4_ick),
4269 	CLK(NULL, "dpll2_fck", &dpll2_fck),
4270 	CLK(NULL, "dpll2_ck", &dpll2_ck),
4271 	CLK(NULL, "dpll2_m2_ck", &dpll2_m2_ck),
4272 	CLK(NULL, "iva2_ck", &iva2_ck),
4273 	CLK(NULL, "modem_fck", &modem_fck),
4274 	CLK(NULL, "sad2d_ick", &sad2d_ick),
4275 	CLK(NULL, "mad2d_ick", &mad2d_ick),
4276 	CLK(NULL, "mspro_fck", &mspro_fck),
4277 	{ NULL },
4278 };
4279 
4280 static struct ti_clk_alias omap36xx_omap3430es2plus_clks[] = {
4281 	CLK(NULL, "ssi_ssr_fck", &ssi_ssr_fck_3430es2),
4282 	CLK(NULL, "ssi_sst_fck", &ssi_sst_fck_3430es2),
4283 	CLK("musb-omap2430", "ick", &hsotgusb_ick_3430es2),
4284 	CLK(NULL, "hsotgusb_ick", &hsotgusb_ick_3430es2),
4285 	CLK(NULL, "ssi_ick", &ssi_ick_3430es2),
4286 	CLK(NULL, "sys_d2_ck", &sys_d2_ck),
4287 	CLK(NULL, "omap_96m_d2_fck", &omap_96m_d2_fck),
4288 	CLK(NULL, "omap_96m_d4_fck", &omap_96m_d4_fck),
4289 	CLK(NULL, "omap_96m_d8_fck", &omap_96m_d8_fck),
4290 	CLK(NULL, "omap_96m_d10_fck", &omap_96m_d10_fck),
4291 	CLK(NULL, "dpll5_m2_d4_ck", &dpll5_m2_d4_ck),
4292 	CLK(NULL, "dpll5_m2_d8_ck", &dpll5_m2_d8_ck),
4293 	CLK(NULL, "dpll5_m2_d16_ck", &dpll5_m2_d16_ck),
4294 	CLK(NULL, "dpll5_m2_d20_ck", &dpll5_m2_d20_ck),
4295 	CLK(NULL, "usim_fck", &usim_fck),
4296 	CLK(NULL, "usim_ick", &usim_ick),
4297 	{ NULL },
4298 };
4299 
4300 static struct ti_clk_alias omap3xxx_clks[] = {
4301 	CLK(NULL, "apb_pclk", &dummy_apb_pclk),
4302 	CLK(NULL, "omap_32k_fck", &omap_32k_fck),
4303 	CLK(NULL, "virt_12m_ck", &virt_12m_ck),
4304 	CLK(NULL, "virt_13m_ck", &virt_13m_ck),
4305 	CLK(NULL, "virt_19200000_ck", &virt_19200000_ck),
4306 	CLK(NULL, "virt_26000000_ck", &virt_26000000_ck),
4307 	CLK(NULL, "virt_38_4m_ck", &virt_38_4m_ck),
4308 	CLK(NULL, "virt_16_8m_ck", &virt_16_8m_ck),
4309 	CLK(NULL, "osc_sys_ck", &osc_sys_ck),
4310 	CLK("twl", "fck", &osc_sys_ck),
4311 	CLK(NULL, "sys_ck", &sys_ck),
4312 	CLK(NULL, "timer_sys_ck", &sys_ck),
4313 	CLK(NULL, "dpll4_ck", &dpll4_ck),
4314 	CLK(NULL, "dpll4_m2_ck", &dpll4_m2_ck),
4315 	CLK(NULL, "dpll4_m2x2_mul_ck", &dpll4_m2x2_mul_ck),
4316 	CLK(NULL, "dpll4_m2x2_ck", &dpll4_m2x2_ck),
4317 	CLK(NULL, "omap_96m_alwon_fck", &omap_96m_alwon_fck),
4318 	CLK(NULL, "dpll3_ck", &dpll3_ck),
4319 	CLK(NULL, "dpll3_m3_ck", &dpll3_m3_ck),
4320 	CLK(NULL, "dpll3_m3x2_mul_ck", &dpll3_m3x2_mul_ck),
4321 	CLK(NULL, "dpll3_m3x2_ck", &dpll3_m3x2_ck),
4322 	CLK("etb", "emu_core_alwon_ck", &emu_core_alwon_ck),
4323 	CLK(NULL, "sys_altclk", &sys_altclk),
4324 	CLK(NULL, "sys_clkout1", &sys_clkout1),
4325 	CLK(NULL, "dpll3_m2_ck", &dpll3_m2_ck),
4326 	CLK(NULL, "core_ck", &core_ck),
4327 	CLK(NULL, "dpll1_fck", &dpll1_fck),
4328 	CLK(NULL, "dpll1_ck", &dpll1_ck),
4329 	CLK(NULL, "cpufreq_ck", &dpll1_ck),
4330 	CLK(NULL, "dpll1_x2_ck", &dpll1_x2_ck),
4331 	CLK(NULL, "dpll1_x2m2_ck", &dpll1_x2m2_ck),
4332 	CLK(NULL, "dpll3_x2_ck", &dpll3_x2_ck),
4333 	CLK(NULL, "dpll3_m2x2_ck", &dpll3_m2x2_ck),
4334 	CLK(NULL, "dpll4_x2_ck", &dpll4_x2_ck),
4335 	CLK(NULL, "cm_96m_fck", &cm_96m_fck),
4336 	CLK(NULL, "omap_96m_fck", &omap_96m_fck),
4337 	CLK(NULL, "dpll4_m3_ck", &dpll4_m3_ck),
4338 	CLK(NULL, "dpll4_m3x2_mul_ck", &dpll4_m3x2_mul_ck),
4339 	CLK(NULL, "dpll4_m3x2_ck", &dpll4_m3x2_ck),
4340 	CLK(NULL, "omap_54m_fck", &omap_54m_fck),
4341 	CLK(NULL, "cm_96m_d2_fck", &cm_96m_d2_fck),
4342 	CLK(NULL, "omap_48m_fck", &omap_48m_fck),
4343 	CLK(NULL, "omap_12m_fck", &omap_12m_fck),
4344 	CLK(NULL, "dpll4_m4_ck", &dpll4_m4_ck),
4345 	CLK(NULL, "dpll4_m4x2_mul_ck", &dpll4_m4x2_mul_ck),
4346 	CLK(NULL, "dpll4_m4x2_ck", &dpll4_m4x2_ck),
4347 	CLK(NULL, "dpll4_m5_ck", &dpll4_m5_ck),
4348 	CLK(NULL, "dpll4_m5x2_mul_ck", &dpll4_m5x2_mul_ck),
4349 	CLK(NULL, "dpll4_m5x2_ck", &dpll4_m5x2_ck),
4350 	CLK(NULL, "dpll4_m6_ck", &dpll4_m6_ck),
4351 	CLK(NULL, "dpll4_m6x2_mul_ck", &dpll4_m6x2_mul_ck),
4352 	CLK(NULL, "dpll4_m6x2_ck", &dpll4_m6x2_ck),
4353 	CLK("etb", "emu_per_alwon_ck", &emu_per_alwon_ck),
4354 	CLK(NULL, "clkout2_src_ck", &clkout2_src_ck),
4355 	CLK(NULL, "sys_clkout2", &sys_clkout2),
4356 	CLK(NULL, "corex2_fck", &corex2_fck),
4357 	CLK(NULL, "mpu_ck", &mpu_ck),
4358 	CLK(NULL, "arm_fck", &arm_fck),
4359 	CLK("etb", "emu_mpu_alwon_ck", &emu_mpu_alwon_ck),
4360 	CLK(NULL, "l3_ick", &l3_ick),
4361 	CLK(NULL, "l4_ick", &l4_ick),
4362 	CLK(NULL, "rm_ick", &rm_ick),
4363 	CLK(NULL, "timer_32k_ck", &omap_32k_fck),
4364 	CLK(NULL, "gpt10_fck", &gpt10_fck),
4365 	CLK(NULL, "gpt11_fck", &gpt11_fck),
4366 	CLK(NULL, "core_96m_fck", &core_96m_fck),
4367 	CLK(NULL, "mmchs2_fck", &mmchs2_fck),
4368 	CLK(NULL, "mmchs1_fck", &mmchs1_fck),
4369 	CLK(NULL, "i2c3_fck", &i2c3_fck),
4370 	CLK(NULL, "i2c2_fck", &i2c2_fck),
4371 	CLK(NULL, "i2c1_fck", &i2c1_fck),
4372 	CLK(NULL, "core_48m_fck", &core_48m_fck),
4373 	CLK(NULL, "mcspi4_fck", &mcspi4_fck),
4374 	CLK(NULL, "mcspi3_fck", &mcspi3_fck),
4375 	CLK(NULL, "mcspi2_fck", &mcspi2_fck),
4376 	CLK(NULL, "mcspi1_fck", &mcspi1_fck),
4377 	CLK(NULL, "uart2_fck", &uart2_fck),
4378 	CLK(NULL, "uart1_fck", &uart1_fck),
4379 	CLK(NULL, "core_12m_fck", &core_12m_fck),
4380 	CLK("omap_hdq.0", "fck", &hdq_fck),
4381 	CLK(NULL, "hdq_fck", &hdq_fck),
4382 	CLK(NULL, "core_l3_ick", &core_l3_ick),
4383 	CLK(NULL, "sdrc_ick", &sdrc_ick),
4384 	CLK(NULL, "gpmc_fck", &gpmc_fck),
4385 	CLK(NULL, "core_l4_ick", &core_l4_ick),
4386 	CLK("omap_hsmmc.1", "ick", &mmchs2_ick),
4387 	CLK("omap_hsmmc.0", "ick", &mmchs1_ick),
4388 	CLK(NULL, "mmchs2_ick", &mmchs2_ick),
4389 	CLK(NULL, "mmchs1_ick", &mmchs1_ick),
4390 	CLK("omap_hdq.0", "ick", &hdq_ick),
4391 	CLK(NULL, "hdq_ick", &hdq_ick),
4392 	CLK("omap2_mcspi.4", "ick", &mcspi4_ick),
4393 	CLK("omap2_mcspi.3", "ick", &mcspi3_ick),
4394 	CLK("omap2_mcspi.2", "ick", &mcspi2_ick),
4395 	CLK("omap2_mcspi.1", "ick", &mcspi1_ick),
4396 	CLK(NULL, "mcspi4_ick", &mcspi4_ick),
4397 	CLK(NULL, "mcspi3_ick", &mcspi3_ick),
4398 	CLK(NULL, "mcspi2_ick", &mcspi2_ick),
4399 	CLK(NULL, "mcspi1_ick", &mcspi1_ick),
4400 	CLK("omap_i2c.3", "ick", &i2c3_ick),
4401 	CLK("omap_i2c.2", "ick", &i2c2_ick),
4402 	CLK("omap_i2c.1", "ick", &i2c1_ick),
4403 	CLK(NULL, "i2c3_ick", &i2c3_ick),
4404 	CLK(NULL, "i2c2_ick", &i2c2_ick),
4405 	CLK(NULL, "i2c1_ick", &i2c1_ick),
4406 	CLK(NULL, "uart2_ick", &uart2_ick),
4407 	CLK(NULL, "uart1_ick", &uart1_ick),
4408 	CLK(NULL, "gpt11_ick", &gpt11_ick),
4409 	CLK(NULL, "gpt10_ick", &gpt10_ick),
4410 	CLK(NULL, "mcbsp5_ick", &mcbsp5_ick),
4411 	CLK(NULL, "mcbsp1_ick", &mcbsp1_ick),
4412 	CLK(NULL, "omapctrl_ick", &omapctrl_ick),
4413 	CLK(NULL, "dss_tv_fck", &dss_tv_fck),
4414 	CLK(NULL, "dss_96m_fck", &dss_96m_fck),
4415 	CLK(NULL, "dss2_alwon_fck", &dss2_alwon_fck),
4416 	CLK(NULL, "init_60m_fclk", &dummy_ck),
4417 	CLK(NULL, "gpt1_fck", &gpt1_fck),
4418 	CLK(NULL, "aes2_ick", &aes2_ick),
4419 	CLK(NULL, "wkup_32k_fck", &wkup_32k_fck),
4420 	CLK(NULL, "gpio1_dbck", &gpio1_dbck),
4421 	CLK(NULL, "sha12_ick", &sha12_ick),
4422 	CLK(NULL, "wdt2_fck", &wdt2_fck),
4423 	CLK(NULL, "wkup_l4_ick", &wkup_l4_ick),
4424 	CLK("omap_wdt", "ick", &wdt2_ick),
4425 	CLK(NULL, "wdt2_ick", &wdt2_ick),
4426 	CLK(NULL, "wdt1_ick", &wdt1_ick),
4427 	CLK(NULL, "gpio1_ick", &gpio1_ick),
4428 	CLK(NULL, "omap_32ksync_ick", &omap_32ksync_ick),
4429 	CLK(NULL, "gpt12_ick", &gpt12_ick),
4430 	CLK(NULL, "gpt1_ick", &gpt1_ick),
4431 	CLK(NULL, "per_96m_fck", &per_96m_fck),
4432 	CLK(NULL, "per_48m_fck", &per_48m_fck),
4433 	CLK(NULL, "uart3_fck", &uart3_fck),
4434 	CLK(NULL, "gpt2_fck", &gpt2_fck),
4435 	CLK(NULL, "gpt3_fck", &gpt3_fck),
4436 	CLK(NULL, "gpt4_fck", &gpt4_fck),
4437 	CLK(NULL, "gpt5_fck", &gpt5_fck),
4438 	CLK(NULL, "gpt6_fck", &gpt6_fck),
4439 	CLK(NULL, "gpt7_fck", &gpt7_fck),
4440 	CLK(NULL, "gpt8_fck", &gpt8_fck),
4441 	CLK(NULL, "gpt9_fck", &gpt9_fck),
4442 	CLK(NULL, "per_32k_alwon_fck", &per_32k_alwon_fck),
4443 	CLK(NULL, "gpio6_dbck", &gpio6_dbck),
4444 	CLK(NULL, "gpio5_dbck", &gpio5_dbck),
4445 	CLK(NULL, "gpio4_dbck", &gpio4_dbck),
4446 	CLK(NULL, "gpio3_dbck", &gpio3_dbck),
4447 	CLK(NULL, "gpio2_dbck", &gpio2_dbck),
4448 	CLK(NULL, "wdt3_fck", &wdt3_fck),
4449 	CLK(NULL, "per_l4_ick", &per_l4_ick),
4450 	CLK(NULL, "gpio6_ick", &gpio6_ick),
4451 	CLK(NULL, "gpio5_ick", &gpio5_ick),
4452 	CLK(NULL, "gpio4_ick", &gpio4_ick),
4453 	CLK(NULL, "gpio3_ick", &gpio3_ick),
4454 	CLK(NULL, "gpio2_ick", &gpio2_ick),
4455 	CLK(NULL, "wdt3_ick", &wdt3_ick),
4456 	CLK(NULL, "uart3_ick", &uart3_ick),
4457 	CLK(NULL, "uart4_ick", &uart4_ick),
4458 	CLK(NULL, "gpt9_ick", &gpt9_ick),
4459 	CLK(NULL, "gpt8_ick", &gpt8_ick),
4460 	CLK(NULL, "gpt7_ick", &gpt7_ick),
4461 	CLK(NULL, "gpt6_ick", &gpt6_ick),
4462 	CLK(NULL, "gpt5_ick", &gpt5_ick),
4463 	CLK(NULL, "gpt4_ick", &gpt4_ick),
4464 	CLK(NULL, "gpt3_ick", &gpt3_ick),
4465 	CLK(NULL, "gpt2_ick", &gpt2_ick),
4466 	CLK(NULL, "mcbsp_clks", &mcbsp_clks),
4467 	CLK("omap-mcbsp.1", "ick", &mcbsp1_ick),
4468 	CLK("omap-mcbsp.2", "ick", &mcbsp2_ick),
4469 	CLK("omap-mcbsp.3", "ick", &mcbsp3_ick),
4470 	CLK("omap-mcbsp.4", "ick", &mcbsp4_ick),
4471 	CLK("omap-mcbsp.5", "ick", &mcbsp5_ick),
4472 	CLK(NULL, "mcbsp1_ick", &mcbsp1_ick),
4473 	CLK(NULL, "mcbsp2_ick", &mcbsp2_ick),
4474 	CLK(NULL, "mcbsp3_ick", &mcbsp3_ick),
4475 	CLK(NULL, "mcbsp4_ick", &mcbsp4_ick),
4476 	CLK(NULL, "mcbsp5_ick", &mcbsp5_ick),
4477 	CLK(NULL, "mcbsp1_fck", &mcbsp1_fck),
4478 	CLK(NULL, "mcbsp2_fck", &mcbsp2_fck),
4479 	CLK(NULL, "mcbsp3_fck", &mcbsp3_fck),
4480 	CLK(NULL, "mcbsp4_fck", &mcbsp4_fck),
4481 	CLK(NULL, "mcbsp5_fck", &mcbsp5_fck),
4482 	CLK(NULL, "emu_src_mux_ck", &emu_src_mux_ck),
4483 	CLK("etb", "emu_src_ck", &emu_src_ck),
4484 	CLK(NULL, "emu_src_mux_ck", &emu_src_mux_ck),
4485 	CLK(NULL, "emu_src_ck", &emu_src_ck),
4486 	CLK(NULL, "pclk_fck", &pclk_fck),
4487 	CLK(NULL, "pclkx2_fck", &pclkx2_fck),
4488 	CLK(NULL, "atclk_fck", &atclk_fck),
4489 	CLK(NULL, "traceclk_src_fck", &traceclk_src_fck),
4490 	CLK(NULL, "traceclk_fck", &traceclk_fck),
4491 	CLK(NULL, "secure_32k_fck", &secure_32k_fck),
4492 	CLK(NULL, "gpt12_fck", &gpt12_fck),
4493 	CLK(NULL, "wdt1_fck", &wdt1_fck),
4494 	{ NULL },
4495 };
4496 
4497 static struct ti_clk_alias omap36xx_am35xx_omap3430es2plus_clks[] = {
4498 	CLK(NULL, "dpll5_ck", &dpll5_ck),
4499 	CLK(NULL, "dpll5_m2_ck", &dpll5_m2_ck),
4500 	CLK(NULL, "core_d3_ck", &core_d3_ck),
4501 	CLK(NULL, "core_d4_ck", &core_d4_ck),
4502 	CLK(NULL, "core_d6_ck", &core_d6_ck),
4503 	CLK(NULL, "omap_192m_alwon_fck", &omap_192m_alwon_fck),
4504 	CLK(NULL, "core_d2_ck", &core_d2_ck),
4505 	CLK(NULL, "corex2_d3_fck", &corex2_d3_fck),
4506 	CLK(NULL, "corex2_d5_fck", &corex2_d5_fck),
4507 	CLK(NULL, "sgx_fck", &sgx_fck),
4508 	CLK(NULL, "sgx_ick", &sgx_ick),
4509 	CLK(NULL, "cpefuse_fck", &cpefuse_fck),
4510 	CLK(NULL, "ts_fck", &ts_fck),
4511 	CLK(NULL, "usbtll_fck", &usbtll_fck),
4512 	CLK(NULL, "usbtll_ick", &usbtll_ick),
4513 	CLK("omap_hsmmc.2", "ick", &mmchs3_ick),
4514 	CLK(NULL, "mmchs3_ick", &mmchs3_ick),
4515 	CLK(NULL, "mmchs3_fck", &mmchs3_fck),
4516 	CLK(NULL, "dss1_alwon_fck", &dss1_alwon_fck_3430es2),
4517 	CLK("omapdss_dss", "ick", &dss_ick_3430es2),
4518 	CLK(NULL, "dss_ick", &dss_ick_3430es2),
4519 	CLK(NULL, "usbhost_120m_fck", &usbhost_120m_fck),
4520 	CLK(NULL, "usbhost_48m_fck", &usbhost_48m_fck),
4521 	CLK(NULL, "usbhost_ick", &usbhost_ick),
4522 	{ NULL },
4523 };
4524 
4525 static struct ti_clk_alias omap3430es1_clks[] = {
4526 	CLK(NULL, "gfx_l3_ck", &gfx_l3_ck),
4527 	CLK(NULL, "gfx_l3_fck", &gfx_l3_fck),
4528 	CLK(NULL, "gfx_l3_ick", &gfx_l3_ick),
4529 	CLK(NULL, "gfx_cg1_ck", &gfx_cg1_ck),
4530 	CLK(NULL, "gfx_cg2_ck", &gfx_cg2_ck),
4531 	CLK(NULL, "d2d_26m_fck", &d2d_26m_fck),
4532 	CLK(NULL, "fshostusb_fck", &fshostusb_fck),
4533 	CLK(NULL, "ssi_ssr_fck", &ssi_ssr_fck_3430es1),
4534 	CLK(NULL, "ssi_sst_fck", &ssi_sst_fck_3430es1),
4535 	CLK("musb-omap2430", "ick", &hsotgusb_ick_3430es1),
4536 	CLK(NULL, "hsotgusb_ick", &hsotgusb_ick_3430es1),
4537 	CLK(NULL, "fac_ick", &fac_ick),
4538 	CLK(NULL, "ssi_ick", &ssi_ick_3430es1),
4539 	CLK(NULL, "usb_l4_ick", &usb_l4_ick),
4540 	CLK(NULL, "dss1_alwon_fck", &dss1_alwon_fck_3430es1),
4541 	CLK("omapdss_dss", "ick", &dss_ick_3430es1),
4542 	CLK(NULL, "dss_ick", &dss_ick_3430es1),
4543 	{ NULL },
4544 };
4545 
4546 static struct ti_clk_alias omap36xx_clks[] = {
4547 	CLK(NULL, "uart4_fck", &uart4_fck),
4548 	{ NULL },
4549 };
4550 
4551 static struct ti_clk_alias am35xx_clks[] = {
4552 	CLK(NULL, "ipss_ick", &ipss_ick),
4553 	CLK(NULL, "rmii_ck", &rmii_ck),
4554 	CLK(NULL, "pclk_ck", &pclk_ck),
4555 	CLK(NULL, "emac_ick", &emac_ick),
4556 	CLK(NULL, "emac_fck", &emac_fck),
4557 	CLK("davinci_emac.0", NULL, &emac_ick),
4558 	CLK("davinci_mdio.0", NULL, &emac_fck),
4559 	CLK("vpfe-capture", "master", &vpfe_ick),
4560 	CLK("vpfe-capture", "slave", &vpfe_fck),
4561 	CLK(NULL, "hsotgusb_ick", &hsotgusb_ick_am35xx),
4562 	CLK(NULL, "hsotgusb_fck", &hsotgusb_fck_am35xx),
4563 	CLK(NULL, "hecc_ck", &hecc_ck),
4564 	CLK(NULL, "uart4_ick", &uart4_ick_am35xx),
4565 	CLK(NULL, "uart4_fck", &uart4_fck_am35xx),
4566 	{ NULL },
4567 };
4568 
4569 static struct ti_clk *omap36xx_clk_patches[] = {
4570 	&dpll4_m3x2_ck_omap36xx,
4571 	&dpll3_m3x2_ck_omap36xx,
4572 	&dpll4_m6x2_ck_omap36xx,
4573 	&dpll4_m2x2_ck_omap36xx,
4574 	&dpll4_m5x2_ck_omap36xx,
4575 	&dpll4_ck_omap36xx,
4576 	NULL,
4577 };
4578 
4579 static const char *enable_init_clks[] = {
4580 	"sdrc_ick",
4581 	"gpmc_fck",
4582 	"omapctrl_ick",
4583 };
4584 
omap3_clk_legacy_common_init(void)4585 static void __init omap3_clk_legacy_common_init(void)
4586 {
4587 	omap2_clk_disable_autoidle_all();
4588 
4589 	omap2_clk_enable_init_clocks(enable_init_clks,
4590 				     ARRAY_SIZE(enable_init_clks));
4591 
4592 	pr_info("Clocking rate (Crystal/Core/MPU): %ld.%01ld/%ld/%ld MHz\n",
4593 		(clk_get_rate(osc_sys_ck.clk) / 1000000),
4594 		(clk_get_rate(osc_sys_ck.clk) / 100000) % 10,
4595 		(clk_get_rate(core_ck.clk) / 1000000),
4596 		(clk_get_rate(arm_fck.clk) / 1000000));
4597 }
4598 
omap3430es1_clk_legacy_init(void)4599 int __init omap3430es1_clk_legacy_init(void)
4600 {
4601 	int r;
4602 
4603 	r = ti_clk_register_legacy_clks(omap3430es1_clks);
4604 	r |= ti_clk_register_legacy_clks(omap34xx_omap36xx_clks);
4605 	r |= ti_clk_register_legacy_clks(omap3xxx_clks);
4606 
4607 	omap3_clk_legacy_common_init();
4608 
4609 	return r;
4610 }
4611 
omap3430_clk_legacy_init(void)4612 int __init omap3430_clk_legacy_init(void)
4613 {
4614 	int r;
4615 
4616 	r = ti_clk_register_legacy_clks(omap34xx_omap36xx_clks);
4617 	r |= ti_clk_register_legacy_clks(omap36xx_omap3430es2plus_clks);
4618 	r |= ti_clk_register_legacy_clks(omap36xx_am35xx_omap3430es2plus_clks);
4619 	r |= ti_clk_register_legacy_clks(omap3xxx_clks);
4620 
4621 	omap3_clk_legacy_common_init();
4622 	omap3_clk_lock_dpll5();
4623 
4624 	return r;
4625 }
4626 
omap36xx_clk_legacy_init(void)4627 int __init omap36xx_clk_legacy_init(void)
4628 {
4629 	int r;
4630 
4631 	ti_clk_patch_legacy_clks(omap36xx_clk_patches);
4632 	r = ti_clk_register_legacy_clks(omap36xx_clks);
4633 	r |= ti_clk_register_legacy_clks(omap36xx_omap3430es2plus_clks);
4634 	r |= ti_clk_register_legacy_clks(omap34xx_omap36xx_clks);
4635 	r |= ti_clk_register_legacy_clks(omap36xx_am35xx_omap3430es2plus_clks);
4636 	r |= ti_clk_register_legacy_clks(omap3xxx_clks);
4637 
4638 	omap3_clk_legacy_common_init();
4639 	omap3_clk_lock_dpll5();
4640 
4641 	return r;
4642 }
4643 
am35xx_clk_legacy_init(void)4644 int __init am35xx_clk_legacy_init(void)
4645 {
4646 	int r;
4647 
4648 	r = ti_clk_register_legacy_clks(am35xx_clks);
4649 	r |= ti_clk_register_legacy_clks(omap36xx_am35xx_omap3430es2plus_clks);
4650 	r |= ti_clk_register_legacy_clks(omap3xxx_clks);
4651 
4652 	omap3_clk_legacy_common_init();
4653 	omap3_clk_lock_dpll5();
4654 
4655 	return r;
4656 }
4657