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