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
23static struct ti_clk_fixed virt_12m_ck_data = {
24	.frequency = 12000000,
25};
26
27static struct ti_clk virt_12m_ck = {
28	.name = "virt_12m_ck",
29	.type = TI_CLK_FIXED,
30	.data = &virt_12m_ck_data,
31};
32
33static struct ti_clk_fixed virt_13m_ck_data = {
34	.frequency = 13000000,
35};
36
37static struct ti_clk virt_13m_ck = {
38	.name = "virt_13m_ck",
39	.type = TI_CLK_FIXED,
40	.data = &virt_13m_ck_data,
41};
42
43static struct ti_clk_fixed virt_19200000_ck_data = {
44	.frequency = 19200000,
45};
46
47static struct ti_clk virt_19200000_ck = {
48	.name = "virt_19200000_ck",
49	.type = TI_CLK_FIXED,
50	.data = &virt_19200000_ck_data,
51};
52
53static struct ti_clk_fixed virt_26000000_ck_data = {
54	.frequency = 26000000,
55};
56
57static struct ti_clk virt_26000000_ck = {
58	.name = "virt_26000000_ck",
59	.type = TI_CLK_FIXED,
60	.data = &virt_26000000_ck_data,
61};
62
63static struct ti_clk_fixed virt_38_4m_ck_data = {
64	.frequency = 38400000,
65};
66
67static 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
73static struct ti_clk_fixed virt_16_8m_ck_data = {
74	.frequency = 16800000,
75};
76
77static 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
83static 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
92static 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
99static struct ti_clk osc_sys_ck = {
100	.name = "osc_sys_ck",
101	.type = TI_CLK_MUX,
102	.data = &osc_sys_ck_data,
103};
104
105static 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
114static struct ti_clk sys_ck = {
115	.name = "sys_ck",
116	.type = TI_CLK_DIVIDER,
117	.data = &sys_ck_data,
118};
119
120static const char *dpll3_ck_parents[] = {
121	"sys_ck",
122	"sys_ck",
123};
124
125static 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
148static 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
155static 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
164static struct ti_clk dpll3_m2_ck = {
165	.name = "dpll3_m2_ck",
166	.type = TI_CLK_DIVIDER,
167	.data = &dpll3_m2_ck_data,
168};
169
170static struct ti_clk_fixed_factor core_ck_data = {
171	.parent = "dpll3_m2_ck",
172	.div = 1,
173	.mult = 1,
174};
175
176static struct ti_clk core_ck = {
177	.name = "core_ck",
178	.type = TI_CLK_FIXED_FACTOR,
179	.data = &core_ck_data,
180};
181
182static 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
190static struct ti_clk l3_ick = {
191	.name = "l3_ick",
192	.type = TI_CLK_DIVIDER,
193	.data = &l3_ick_data,
194};
195
196static struct ti_clk_fixed_factor security_l3_ick_data = {
197	.parent = "l3_ick",
198	.div = 1,
199	.mult = 1,
200};
201
202static 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
208static struct ti_clk_fixed_factor wkup_l4_ick_data = {
209	.parent = "sys_ck",
210	.div = 1,
211	.mult = 1,
212};
213
214static 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
220static 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
228static 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
235static 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
242static 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
249static 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
258static struct ti_clk l4_ick = {
259	.name = "l4_ick",
260	.type = TI_CLK_DIVIDER,
261	.data = &l4_ick_data,
262};
263
264static struct ti_clk_fixed_factor core_l4_ick_data = {
265	.parent = "l4_ick",
266	.div = 1,
267	.mult = 1,
268};
269
270static 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
276static 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
284static 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
291static const char *dpll4_ck_parents[] = {
292	"sys_ck",
293	"sys_ck",
294};
295
296static 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
320static 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
327static 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
335static struct ti_clk dpll4_m2_ck = {
336	.name = "dpll4_m2_ck",
337	.type = TI_CLK_DIVIDER,
338	.data = &dpll4_m2_ck_data,
339};
340
341static struct ti_clk_fixed_factor dpll4_m2x2_mul_ck_data = {
342	.parent = "dpll4_m2_ck",
343	.div = 1,
344	.mult = 2,
345};
346
347static 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
353static 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
361static struct ti_clk dpll4_m2x2_ck = {
362	.name = "dpll4_m2x2_ck",
363	.type = TI_CLK_GATE,
364	.data = &dpll4_m2x2_ck_data,
365};
366
367static struct ti_clk_fixed_factor omap_96m_alwon_fck_data = {
368	.parent = "dpll4_m2x2_ck",
369	.div = 1,
370	.mult = 1,
371};
372
373static 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
379static struct ti_clk_fixed_factor cm_96m_fck_data = {
380	.parent = "omap_96m_alwon_fck",
381	.div = 1,
382	.mult = 1,
383};
384
385static 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
391static const char *omap_96m_fck_parents[] = {
392	"cm_96m_fck",
393	"sys_ck",
394};
395
396static 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
404static struct ti_clk omap_96m_fck = {
405	.name = "omap_96m_fck",
406	.type = TI_CLK_MUX,
407	.data = &omap_96m_fck_data,
408};
409
410static struct ti_clk_fixed_factor core_96m_fck_data = {
411	.parent = "omap_96m_fck",
412	.div = 1,
413	.mult = 1,
414};
415
416static 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
422static 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
430static 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
437static 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
445static 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
452static 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
460static 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
467static struct ti_clk_fixed_factor security_l4_ick2_data = {
468	.parent = "l4_ick",
469	.div = 1,
470	.mult = 1,
471};
472
473static 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
479static 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
487static struct ti_clk aes1_ick = {
488	.name = "aes1_ick",
489	.type = TI_CLK_GATE,
490	.data = &aes1_ick_data,
491};
492
493static const char *dpll5_ck_parents[] = {
494	"sys_ck",
495	"sys_ck",
496};
497
498static 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
521static 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
528static 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
536static struct ti_clk dpll5_m2_ck = {
537	.name = "dpll5_m2_ck",
538	.type = TI_CLK_DIVIDER,
539	.data = &dpll5_m2_ck_data,
540};
541
542static 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
549static 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
556static struct ti_clk_fixed_factor cm_96m_d2_fck_data = {
557	.parent = "cm_96m_fck",
558	.div = 2,
559	.mult = 1,
560};
561
562static 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
568static struct ti_clk_fixed sys_altclk_data = {
569	.frequency = 0x0,
570};
571
572static struct ti_clk sys_altclk = {
573	.name = "sys_altclk",
574	.type = TI_CLK_FIXED,
575	.data = &sys_altclk_data,
576};
577
578static const char *omap_48m_fck_parents[] = {
579	"cm_96m_d2_fck",
580	"sys_altclk",
581};
582
583static 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
591static struct ti_clk omap_48m_fck = {
592	.name = "omap_48m_fck",
593	.type = TI_CLK_MUX,
594	.data = &omap_48m_fck_data,
595};
596
597static struct ti_clk_fixed_factor core_48m_fck_data = {
598	.parent = "omap_48m_fck",
599	.div = 1,
600	.mult = 1,
601};
602
603static 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
609static struct ti_clk_fixed mcbsp_clks_data = {
610	.frequency = 0x0,
611};
612
613static struct ti_clk mcbsp_clks = {
614	.name = "mcbsp_clks",
615	.type = TI_CLK_FIXED,
616	.data = &mcbsp_clks_data,
617};
618
619static 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
626static struct ti_clk_fixed_factor per_96m_fck_data = {
627	.parent = "omap_96m_alwon_fck",
628	.div = 1,
629	.mult = 1,
630};
631
632static 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
638static const char *mcbsp2_mux_fck_parents[] = {
639	"per_96m_fck",
640	"mcbsp_clks",
641};
642
643static 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
651static struct ti_clk_composite mcbsp2_fck_data = {
652	.mux = &mcbsp2_mux_fck_data,
653	.gate = &mcbsp2_gate_fck_data,
654};
655
656static struct ti_clk mcbsp2_fck = {
657	.name = "mcbsp2_fck",
658	.type = TI_CLK_COMPOSITE,
659	.data = &mcbsp2_fck_data,
660};
661
662static struct ti_clk_fixed_factor dpll3_m2x2_ck_data = {
663	.parent = "dpll3_m2_ck",
664	.div = 1,
665	.mult = 2,
666};
667
668static 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
674static struct ti_clk_fixed_factor corex2_fck_data = {
675	.parent = "dpll3_m2x2_ck",
676	.div = 1,
677	.mult = 1,
678};
679
680static struct ti_clk corex2_fck = {
681	.name = "corex2_fck",
682	.type = TI_CLK_FIXED_FACTOR,
683	.data = &corex2_fck_data,
684};
685
686static 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
694static 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
706static 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
715static 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
720static 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
726static struct ti_clk_fixed_factor ssi_sst_fck_3430es1_data = {
727	.parent = "ssi_ssr_fck",
728	.div = 2,
729	.mult = 1,
730};
731
732static 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
738static struct ti_clk_fixed omap_32k_fck_data = {
739	.frequency = 32768,
740};
741
742static struct ti_clk omap_32k_fck = {
743	.name = "omap_32k_fck",
744	.type = TI_CLK_FIXED,
745	.data = &omap_32k_fck_data,
746};
747
748static struct ti_clk_fixed_factor per_32k_alwon_fck_data = {
749	.parent = "omap_32k_fck",
750	.div = 1,
751	.mult = 1,
752};
753
754static 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
760static 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
767static 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
774static 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
782static 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
789static 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
797static 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
804static 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
811static const char *gpt2_mux_fck_parents[] = {
812	"omap_32k_fck",
813	"sys_ck",
814};
815
816static 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
823static struct ti_clk_composite gpt2_fck_data = {
824	.mux = &gpt2_mux_fck_data,
825	.gate = &gpt2_gate_fck_data,
826};
827
828static struct ti_clk gpt2_fck = {
829	.name = "gpt2_fck",
830	.type = TI_CLK_COMPOSITE,
831	.data = &gpt2_fck_data,
832};
833
834static 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
842static 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
849static 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
857static 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
864static struct ti_clk_fixed_factor sr_l4_ick_data = {
865	.parent = "l4_ick",
866	.div = 1,
867	.mult = 1,
868};
869
870static 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
876static struct ti_clk_fixed_factor omap_96m_d8_fck_data = {
877	.parent = "omap_96m_fck",
878	.div = 8,
879	.mult = 1,
880};
881
882static 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
888static 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
896static struct ti_clk dpll4_m5_ck = {
897	.name = "dpll4_m5_ck",
898	.type = TI_CLK_DIVIDER,
899	.data = &dpll4_m5_ck_data,
900};
901
902static 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
909static 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
915static 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
923static struct ti_clk dpll4_m5x2_ck = {
924	.name = "dpll4_m5x2_ck",
925	.type = TI_CLK_GATE,
926	.data = &dpll4_m5x2_ck_data,
927};
928
929static 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
937static struct ti_clk cam_mclk = {
938	.name = "cam_mclk",
939	.type = TI_CLK_GATE,
940	.data = &cam_mclk_data,
941};
942
943static 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
950static const char *mcbsp3_mux_fck_parents[] = {
951	"per_96m_fck",
952	"mcbsp_clks",
953};
954
955static 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
962static struct ti_clk_composite mcbsp3_fck_data = {
963	.mux = &mcbsp3_mux_fck_data,
964	.gate = &mcbsp3_gate_fck_data,
965};
966
967static struct ti_clk mcbsp3_fck = {
968	.name = "mcbsp3_fck",
969	.type = TI_CLK_COMPOSITE,
970	.data = &mcbsp3_fck_data,
971};
972
973static 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
980static 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
987static 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
994static const char *gpt9_mux_fck_parents[] = {
995	"omap_32k_fck",
996	"sys_ck",
997};
998
999static 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
1007static struct ti_clk_composite gpt9_fck_data = {
1008	.mux = &gpt9_mux_fck_data,
1009	.gate = &gpt9_gate_fck_data,
1010};
1011
1012static struct ti_clk gpt9_fck = {
1013	.name = "gpt9_fck",
1014	.type = TI_CLK_COMPOSITE,
1015	.data = &gpt9_fck_data,
1016};
1017
1018static 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
1027static struct ti_clk dpll3_m3_ck = {
1028	.name = "dpll3_m3_ck",
1029	.type = TI_CLK_DIVIDER,
1030	.data = &dpll3_m3_ck_data,
1031};
1032
1033static struct ti_clk_fixed_factor dpll3_m3x2_mul_ck_data = {
1034	.parent = "dpll3_m3_ck",
1035	.div = 1,
1036	.mult = 2,
1037};
1038
1039static 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
1045static 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
1053static 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
1060static struct ti_clk_fixed pclk_ck_data = {
1061	.frequency = 27000000,
1062};
1063
1064static struct ti_clk pclk_ck = {
1065	.name = "pclk_ck",
1066	.type = TI_CLK_FIXED,
1067	.data = &pclk_ck_data,
1068};
1069
1070static 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
1078static 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
1085static struct ti_clk_fixed_factor core_l3_ick_data = {
1086	.parent = "l3_ick",
1087	.div = 1,
1088	.mult = 1,
1089};
1090
1091static 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
1097static 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
1105static 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
1112static struct ti_clk_fixed_factor per_48m_fck_data = {
1113	.parent = "omap_48m_fck",
1114	.div = 1,
1115	.mult = 1,
1116};
1117
1118static 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
1124static 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
1132static 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
1139static struct ti_clk_fixed_factor omap_96m_d10_fck_data = {
1140	.parent = "omap_96m_fck",
1141	.div = 10,
1142	.mult = 1,
1143};
1144
1145static 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
1151static 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
1158static struct ti_clk_fixed_factor per_l4_ick_data = {
1159	.parent = "l4_ick",
1160	.div = 1,
1161	.mult = 1,
1162};
1163
1164static 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
1170static 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
1178static 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
1185static 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
1193static 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
1200static struct ti_clk_fixed_factor ssi_l4_ick_data = {
1201	.parent = "l4_ick",
1202	.div = 1,
1203	.mult = 1,
1204};
1205
1206static 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
1213static 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
1221static 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
1228static 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
1236static 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
1243static 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
1252static struct ti_clk dpll1_fck = {
1253	.name = "dpll1_fck",
1254	.type = TI_CLK_DIVIDER,
1255	.data = &dpll1_fck_data,
1256};
1257
1258static const char *dpll1_ck_parents[] = {
1259	"sys_ck",
1260	"dpll1_fck",
1261};
1262
1263static 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
1286static 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
1293static struct ti_clk_fixed secure_32k_fck_data = {
1294	.frequency = 32768,
1295};
1296
1297static struct ti_clk secure_32k_fck = {
1298	.name = "secure_32k_fck",
1299	.type = TI_CLK_FIXED,
1300	.data = &secure_32k_fck_data,
1301};
1302
1303static 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
1311static 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
1318static 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
1326static struct ti_clk dpll4_m4_ck = {
1327	.name = "dpll4_m4_ck",
1328	.type = TI_CLK_DIVIDER,
1329	.data = &dpll4_m4_ck_data,
1330};
1331
1332static 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
1339static 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
1345static 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
1353static struct ti_clk dpll4_m4x2_ck = {
1354	.name = "dpll4_m4x2_ck",
1355	.type = TI_CLK_GATE,
1356	.data = &dpll4_m4x2_ck_data,
1357};
1358
1359static 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
1367static 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
1374static 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
1382static 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
1389static 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
1398static struct ti_clk dpll4_m3_ck = {
1399	.name = "dpll4_m3_ck",
1400	.type = TI_CLK_DIVIDER,
1401	.data = &dpll4_m3_ck_data,
1402};
1403
1404static 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
1412static 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
1419static 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
1426static 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
1433static 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
1441static 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
1448static 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
1456static struct ti_clk_fixed_factor dpll4_m3x2_mul_ck_data = {
1457	.parent = "dpll4_m3_ck",
1458	.div = 1,
1459	.mult = 2,
1460};
1461
1462static 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
1468static 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
1476static struct ti_clk dpll4_m3x2_ck = {
1477	.name = "dpll4_m3x2_ck",
1478	.type = TI_CLK_GATE,
1479	.data = &dpll4_m3x2_ck_data,
1480};
1481
1482static const char *omap_54m_fck_parents[] = {
1483	"dpll4_m3x2_ck",
1484	"sys_altclk",
1485};
1486
1487static 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
1495static struct ti_clk omap_54m_fck = {
1496	.name = "omap_54m_fck",
1497	.type = TI_CLK_MUX,
1498	.data = &omap_54m_fck_data,
1499};
1500
1501static const char *clkout2_src_mux_ck_parents[] = {
1502	"core_ck",
1503	"sys_ck",
1504	"cm_96m_fck",
1505	"omap_54m_fck",
1506};
1507
1508static 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
1515static struct ti_clk_composite clkout2_src_ck_data = {
1516	.mux = &clkout2_src_mux_ck_data,
1517	.gate = &clkout2_src_gate_ck_data,
1518};
1519
1520static struct ti_clk clkout2_src_ck = {
1521	.name = "clkout2_src_ck",
1522	.type = TI_CLK_COMPOSITE,
1523	.data = &clkout2_src_ck_data,
1524};
1525
1526static 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
1534static 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
1541static 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
1549static 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
1556static 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
1563static const char *gpt7_mux_fck_parents[] = {
1564	"omap_32k_fck",
1565	"sys_ck",
1566};
1567
1568static 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
1576static struct ti_clk_composite gpt7_fck_data = {
1577	.mux = &gpt7_mux_fck_data,
1578	.gate = &gpt7_gate_fck_data,
1579};
1580
1581static struct ti_clk gpt7_fck = {
1582	.name = "gpt7_fck",
1583	.type = TI_CLK_COMPOSITE,
1584	.data = &gpt7_fck_data,
1585};
1586
1587static 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
1595static 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
1604static struct ti_clk_composite usb_l4_ick_data = {
1605	.gate = &usb_l4_gate_ick_data,
1606	.divider = &usb_l4_div_ick_data,
1607};
1608
1609static struct ti_clk usb_l4_ick = {
1610	.name = "usb_l4_ick",
1611	.type = TI_CLK_COMPOSITE,
1612	.data = &usb_l4_ick_data,
1613};
1614
1615static 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
1623static 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
1630static struct ti_clk_fixed dummy_ck_data = {
1631	.frequency = 0,
1632};
1633
1634static struct ti_clk dummy_ck = {
1635	.name = "dummy_ck",
1636	.type = TI_CLK_FIXED,
1637	.data = &dummy_ck_data,
1638};
1639
1640static const char *gpt3_mux_fck_parents[] = {
1641	"omap_32k_fck",
1642	"sys_ck",
1643};
1644
1645static 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
1653static 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
1661static 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
1668static 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
1675static 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
1683static 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
1690static 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
1698static 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
1705static 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
1714static struct ti_clk dpll2_fck = {
1715	.name = "dpll2_fck",
1716	.type = TI_CLK_DIVIDER,
1717	.data = &dpll2_fck_data,
1718};
1719
1720static 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
1728static 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
1735static 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
1743static 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
1750static 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
1758static 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
1765static 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
1773static 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
1780static 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
1788static 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
1795static 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
1803static 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
1810static 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
1818static 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
1825static const char *gpt6_mux_fck_parents[] = {
1826	"omap_32k_fck",
1827	"sys_ck",
1828};
1829
1830static 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
1838static struct ti_clk_fixed_factor dpll1_x2_ck_data = {
1839	.parent = "dpll1_ck",
1840	.div = 1,
1841	.mult = 2,
1842};
1843
1844static 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
1850static 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
1858static struct ti_clk dpll1_x2m2_ck = {
1859	.name = "dpll1_x2m2_ck",
1860	.type = TI_CLK_DIVIDER,
1861	.data = &dpll1_x2m2_ck_data,
1862};
1863
1864static struct ti_clk_fixed_factor mpu_ck_data = {
1865	.parent = "dpll1_x2m2_ck",
1866	.div = 1,
1867	.mult = 1,
1868};
1869
1870static struct ti_clk mpu_ck = {
1871	.name = "mpu_ck",
1872	.type = TI_CLK_FIXED_FACTOR,
1873	.data = &mpu_ck_data,
1874};
1875
1876static 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
1883static struct ti_clk arm_fck = {
1884	.name = "arm_fck",
1885	.type = TI_CLK_DIVIDER,
1886	.data = &arm_fck_data,
1887};
1888
1889static struct ti_clk_fixed_factor core_d3_ck_data = {
1890	.parent = "core_ck",
1891	.div = 3,
1892	.mult = 1,
1893};
1894
1895static 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
1901static 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
1908static const char *gpt11_mux_fck_parents[] = {
1909	"omap_32k_fck",
1910	"sys_ck",
1911};
1912
1913static 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
1921static struct ti_clk_composite gpt11_fck_data = {
1922	.mux = &gpt11_mux_fck_data,
1923	.gate = &gpt11_gate_fck_data,
1924};
1925
1926static struct ti_clk gpt11_fck = {
1927	.name = "gpt11_fck",
1928	.type = TI_CLK_COMPOSITE,
1929	.data = &gpt11_fck_data,
1930};
1931
1932static struct ti_clk_fixed_factor core_d6_ck_data = {
1933	.parent = "core_ck",
1934	.div = 6,
1935	.mult = 1,
1936};
1937
1938static 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
1944static 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
1952static 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
1959static 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
1967static struct ti_clk dpll3_m3x2_ck = {
1968	.name = "dpll3_m3x2_ck",
1969	.type = TI_CLK_GATE,
1970	.data = &dpll3_m3x2_ck_data,
1971};
1972
1973static struct ti_clk_fixed_factor emu_core_alwon_ck_data = {
1974	.parent = "dpll3_m3x2_ck",
1975	.div = 1,
1976	.mult = 1,
1977};
1978
1979static 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
1985static 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
1994static struct ti_clk dpll4_m6_ck = {
1995	.name = "dpll4_m6_ck",
1996	.type = TI_CLK_DIVIDER,
1997	.data = &dpll4_m6_ck_data,
1998};
1999
2000static struct ti_clk_fixed_factor dpll4_m6x2_mul_ck_data = {
2001	.parent = "dpll4_m6_ck",
2002	.div = 1,
2003	.mult = 2,
2004};
2005
2006static 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
2012static 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
2020static struct ti_clk dpll4_m6x2_ck = {
2021	.name = "dpll4_m6x2_ck",
2022	.type = TI_CLK_GATE,
2023	.data = &dpll4_m6x2_ck_data,
2024};
2025
2026static struct ti_clk_fixed_factor emu_per_alwon_ck_data = {
2027	.parent = "dpll4_m6x2_ck",
2028	.div = 1,
2029	.mult = 1,
2030};
2031
2032static 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
2038static struct ti_clk_fixed_factor emu_mpu_alwon_ck_data = {
2039	.parent = "mpu_ck",
2040	.div = 1,
2041	.mult = 1,
2042};
2043
2044static 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
2050static 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
2057static 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
2064static 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
2070static struct ti_clk_gate emu_src_ck_data = {
2071	.parent = "emu_src_mux_ck",
2072	.flags = CLKF_CLKDM,
2073};
2074
2075static 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
2082static 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
2091static struct ti_clk atclk_fck = {
2092	.name = "atclk_fck",
2093	.type = TI_CLK_DIVIDER,
2094	.data = &atclk_fck_data,
2095};
2096
2097static 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
2105static 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
2112static 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
2120static 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
2127static 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
2135static 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
2142static const char *dpll2_ck_parents[] = {
2143	"sys_ck",
2144	"dpll2_fck",
2145};
2146
2147static 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
2170static 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
2177static 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
2185static struct ti_clk dpll2_m2_ck = {
2186	.name = "dpll2_m2_ck",
2187	.type = TI_CLK_DIVIDER,
2188	.data = &dpll2_m2_ck_data,
2189};
2190
2191static const char *mcbsp4_mux_fck_parents[] = {
2192	"per_96m_fck",
2193	"mcbsp_clks",
2194};
2195
2196static 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
2204static const char *mcbsp1_mux_fck_parents[] = {
2205	"core_96m_fck",
2206	"mcbsp_clks",
2207};
2208
2209static 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
2217static 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
2224static 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
2232static 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
2239static const char *gpt10_mux_fck_parents[] = {
2240	"omap_32k_fck",
2241	"sys_ck",
2242};
2243
2244static 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
2252static 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
2260static 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
2267static 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
2275static 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
2282static 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
2289static 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
2297static struct ti_clk traceclk_src_fck = {
2298	.name = "traceclk_src_fck",
2299	.type = TI_CLK_MUX,
2300	.data = &traceclk_src_fck_data,
2301};
2302
2303static 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
2312static struct ti_clk traceclk_fck = {
2313	.name = "traceclk_fck",
2314	.type = TI_CLK_DIVIDER,
2315	.data = &traceclk_fck_data,
2316};
2317
2318static 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
2325static 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
2333static 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
2340static const char *gpt1_mux_fck_parents[] = {
2341	"omap_32k_fck",
2342	"sys_ck",
2343};
2344
2345static 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
2352static 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
2360static 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
2367static 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
2374static struct ti_clk_composite gpt1_fck_data = {
2375	.mux = &gpt1_mux_fck_data,
2376	.gate = &gpt1_gate_fck_data,
2377};
2378
2379static struct ti_clk gpt1_fck = {
2380	.name = "gpt1_fck",
2381	.type = TI_CLK_COMPOSITE,
2382	.data = &gpt1_fck_data,
2383};
2384
2385static 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
2393static 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
2400static 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
2408static struct ti_clk gfx_l3_fck = {
2409	.name = "gfx_l3_fck",
2410	.type = TI_CLK_DIVIDER,
2411	.data = &gfx_l3_fck_data,
2412};
2413
2414static 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
2422static 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
2429static 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
2437static 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
2444static 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
2452static struct ti_clk sha11_ick = {
2453	.name = "sha11_ick",
2454	.type = TI_CLK_GATE,
2455	.data = &sha11_ick_data,
2456};
2457
2458static 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
2466static 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
2473static 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
2481static 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
2488static 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
2497static struct ti_clk pclk_fck = {
2498	.name = "pclk_fck",
2499	.type = TI_CLK_DIVIDER,
2500	.data = &pclk_fck_data,
2501};
2502
2503static const char *dpll4_ck_omap36xx_parents[] = {
2504	"sys_ck",
2505	"sys_ck",
2506};
2507
2508static 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
2533static 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
2540static 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
2548static 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
2555static struct ti_clk_fixed_factor wkup_32k_fck_data = {
2556	.parent = "omap_32k_fck",
2557	.div = 1,
2558	.mult = 1,
2559};
2560
2561static 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
2567static 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
2574static struct ti_clk sys_clkout1 = {
2575	.name = "sys_clkout1",
2576	.type = TI_CLK_GATE,
2577	.data = &sys_clkout1_data,
2578};
2579
2580static struct ti_clk_fixed_factor gpmc_fck_data = {
2581	.parent = "core_l3_ick",
2582	.div = 1,
2583	.mult = 1,
2584};
2585
2586static struct ti_clk gpmc_fck = {
2587	.name = "gpmc_fck",
2588	.type = TI_CLK_FIXED_FACTOR,
2589	.data = &gpmc_fck_data,
2590};
2591
2592static struct ti_clk_fixed_factor dpll5_m2_d20_ck_data = {
2593	.parent = "dpll5_m2_ck",
2594	.div = 20,
2595	.mult = 1,
2596};
2597
2598static 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
2604static 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
2612static 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
2619static 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
2627static 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
2635static 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
2642static 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
2650static 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
2657static 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
2665static struct ti_clk pka_ick = {
2666	.name = "pka_ick",
2667	.type = TI_CLK_GATE,
2668	.data = &pka_ick_data,
2669};
2670
2671static 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
2679static 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
2686static const char *mcbsp5_mux_fck_parents[] = {
2687	"core_96m_fck",
2688	"mcbsp_clks",
2689};
2690
2691static 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
2699static struct ti_clk_composite mcbsp5_fck_data = {
2700	.mux = &mcbsp5_mux_fck_data,
2701	.gate = &mcbsp5_gate_fck_data,
2702};
2703
2704static struct ti_clk mcbsp5_fck = {
2705	.name = "mcbsp5_fck",
2706	.type = TI_CLK_COMPOSITE,
2707	.data = &mcbsp5_fck_data,
2708};
2709
2710static 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
2718static 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
2725static 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
2733static struct ti_clk des1_ick = {
2734	.name = "des1_ick",
2735	.type = TI_CLK_GATE,
2736	.data = &des1_ick_data,
2737};
2738
2739static 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
2746static struct ti_clk_fixed_factor core_d4_ck_data = {
2747	.parent = "core_ck",
2748	.div = 4,
2749	.mult = 1,
2750};
2751
2752static 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
2758static struct ti_clk_fixed_factor omap_192m_alwon_fck_data = {
2759	.parent = "dpll4_m2x2_ck",
2760	.div = 1,
2761	.mult = 1,
2762};
2763
2764static 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
2770static struct ti_clk_fixed_factor core_d2_ck_data = {
2771	.parent = "core_ck",
2772	.div = 2,
2773	.mult = 1,
2774};
2775
2776static 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
2782static struct ti_clk_fixed_factor corex2_d3_fck_data = {
2783	.parent = "corex2_fck",
2784	.div = 3,
2785	.mult = 1,
2786};
2787
2788static 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
2794static struct ti_clk_fixed_factor corex2_d5_fck_data = {
2795	.parent = "corex2_fck",
2796	.div = 5,
2797	.mult = 1,
2798};
2799
2800static 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
2806static 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
2817static 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
2824static struct ti_clk_composite sgx_fck_data = {
2825	.mux = &sgx_mux_fck_data,
2826	.gate = &sgx_gate_fck_data,
2827};
2828
2829static struct ti_clk sgx_fck = {
2830	.name = "sgx_fck",
2831	.type = TI_CLK_COMPOSITE,
2832	.data = &sgx_fck_data,
2833};
2834
2835static 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
2843static 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
2850static 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
2858static 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
2865static 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
2873static 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
2880static 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
2887static struct ti_clk vpfe_fck = {
2888	.name = "vpfe_fck",
2889	.type = TI_CLK_GATE,
2890	.data = &vpfe_fck_data,
2891};
2892
2893static 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
2900static 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
2907static 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
2914static const char *gpt5_mux_fck_parents[] = {
2915	"omap_32k_fck",
2916	"sys_ck",
2917};
2918
2919static 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
2927static struct ti_clk_composite gpt5_fck_data = {
2928	.mux = &gpt5_mux_fck_data,
2929	.gate = &gpt5_gate_fck_data,
2930};
2931
2932static struct ti_clk gpt5_fck = {
2933	.name = "gpt5_fck",
2934	.type = TI_CLK_COMPOSITE,
2935	.data = &gpt5_fck_data,
2936};
2937
2938static 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
2945static 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
2952static struct ti_clk_fixed_factor wdt1_fck_data = {
2953	.parent = "secure_32k_fck",
2954	.div = 1,
2955	.mult = 1,
2956};
2957
2958static struct ti_clk wdt1_fck = {
2959	.name = "wdt1_fck",
2960	.type = TI_CLK_FIXED_FACTOR,
2961	.data = &wdt1_fck_data,
2962};
2963
2964static 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
2972static 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
2979static const char *gpt4_mux_fck_parents[] = {
2980	"omap_32k_fck",
2981	"sys_ck",
2982};
2983
2984static 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
2992static 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
3000static 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
3007static 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
3015static 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
3022static 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
3030static 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
3037static struct ti_clk_fixed_factor omap_96m_d4_fck_data = {
3038	.parent = "omap_96m_fck",
3039	.div = 4,
3040	.mult = 1,
3041};
3042
3043static 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
3049static 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
3057static 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
3064static 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
3072static 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
3079static 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
3087static 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
3094static 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
3102static 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
3109static 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
3117static 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
3124static struct ti_clk_composite mcbsp1_fck_data = {
3125	.mux = &mcbsp1_mux_fck_data,
3126	.gate = &mcbsp1_gate_fck_data,
3127};
3128
3129static struct ti_clk mcbsp1_fck = {
3130	.name = "mcbsp1_fck",
3131	.type = TI_CLK_COMPOSITE,
3132	.data = &mcbsp1_fck_data,
3133};
3134
3135static 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
3142static struct ti_clk_fixed rmii_ck_data = {
3143	.frequency = 50000000,
3144};
3145
3146static struct ti_clk rmii_ck = {
3147	.name = "rmii_ck",
3148	.type = TI_CLK_FIXED,
3149	.data = &rmii_ck_data,
3150};
3151
3152static 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
3159static struct ti_clk_composite gpt6_fck_data = {
3160	.mux = &gpt6_mux_fck_data,
3161	.gate = &gpt6_gate_fck_data,
3162};
3163
3164static struct ti_clk gpt6_fck = {
3165	.name = "gpt6_fck",
3166	.type = TI_CLK_COMPOSITE,
3167	.data = &gpt6_fck_data,
3168};
3169
3170static struct ti_clk_fixed_factor dpll5_m2_d4_ck_data = {
3171	.parent = "dpll5_m2_ck",
3172	.div = 4,
3173	.mult = 1,
3174};
3175
3176static 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
3182static struct ti_clk_fixed_factor sys_d2_ck_data = {
3183	.parent = "sys_ck",
3184	.div = 2,
3185	.mult = 1,
3186};
3187
3188static 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
3194static struct ti_clk_fixed_factor omap_96m_d2_fck_data = {
3195	.parent = "omap_96m_fck",
3196	.div = 2,
3197	.mult = 1,
3198};
3199
3200static 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
3206static struct ti_clk_fixed_factor dpll5_m2_d8_ck_data = {
3207	.parent = "dpll5_m2_ck",
3208	.div = 8,
3209	.mult = 1,
3210};
3211
3212static 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
3218static struct ti_clk_fixed_factor dpll5_m2_d16_ck_data = {
3219	.parent = "dpll5_m2_ck",
3220	.div = 16,
3221	.mult = 1,
3222};
3223
3224static 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
3230static 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
3243static 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
3252static struct ti_clk_composite usim_fck_data = {
3253	.mux = &usim_mux_fck_data,
3254	.gate = &usim_gate_fck_data,
3255};
3256
3257static struct ti_clk usim_fck = {
3258	.name = "usim_fck",
3259	.type = TI_CLK_COMPOSITE,
3260	.data = &usim_fck_data,
3261};
3262
3263static 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
3275static 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
3284static 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
3289static 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
3295static 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
3303static 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
3310static 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
3318static 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
3325static struct ti_clk_fixed_factor omap_12m_fck_data = {
3326	.parent = "omap_48m_fck",
3327	.div = 4,
3328	.mult = 1,
3329};
3330
3331static 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
3337static struct ti_clk_fixed_factor core_12m_fck_data = {
3338	.parent = "omap_12m_fck",
3339	.div = 1,
3340	.mult = 1,
3341};
3342
3343static 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
3349static 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
3357static 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
3364static 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
3372static 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
3379static 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
3386static 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
3393static 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
3401static 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
3408static 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
3416static 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
3423static struct ti_clk_fixed_factor gfx_l3_ick_data = {
3424	.parent = "gfx_l3_ck",
3425	.div = 1,
3426	.mult = 1,
3427};
3428
3429static 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
3435static 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
3443static 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
3450static struct ti_clk_fixed_factor gpt12_fck_data = {
3451	.parent = "secure_32k_fck",
3452	.div = 1,
3453	.mult = 1,
3454};
3455
3456static struct ti_clk gpt12_fck = {
3457	.name = "gpt12_fck",
3458	.type = TI_CLK_FIXED_FACTOR,
3459	.data = &gpt12_fck_data,
3460};
3461
3462static 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
3470static 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
3477static 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
3485static 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
3492static 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
3499static 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
3506static 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
3514static 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
3521static struct ti_clk_composite gpt3_fck_data = {
3522	.mux = &gpt3_mux_fck_data,
3523	.gate = &gpt3_gate_fck_data,
3524};
3525
3526static struct ti_clk gpt3_fck = {
3527	.name = "gpt3_fck",
3528	.type = TI_CLK_COMPOSITE,
3529	.data = &gpt3_fck_data,
3530};
3531
3532static 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
3540static 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
3547static 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
3555static 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
3562static 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
3570static 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
3577static const char *gpt8_mux_fck_parents[] = {
3578	"omap_32k_fck",
3579	"sys_ck",
3580};
3581
3582static 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
3590static struct ti_clk_composite gpt8_fck_data = {
3591	.mux = &gpt8_mux_fck_data,
3592	.gate = &gpt8_gate_fck_data,
3593};
3594
3595static struct ti_clk gpt8_fck = {
3596	.name = "gpt8_fck",
3597	.type = TI_CLK_COMPOSITE,
3598	.data = &gpt8_fck_data,
3599};
3600
3601static 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
3608static struct ti_clk_composite mcbsp4_fck_data = {
3609	.mux = &mcbsp4_mux_fck_data,
3610	.gate = &mcbsp4_gate_fck_data,
3611};
3612
3613static struct ti_clk mcbsp4_fck = {
3614	.name = "mcbsp4_fck",
3615	.type = TI_CLK_COMPOSITE,
3616	.data = &mcbsp4_fck_data,
3617};
3618
3619static 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
3626static 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
3633static 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
3641static 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
3648static 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
3656static 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
3663static 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
3670static 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
3677static 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
3686static struct ti_clk rm_ick = {
3687	.name = "rm_ick",
3688	.type = TI_CLK_DIVIDER,
3689	.data = &rm_ick_data,
3690};
3691
3692static 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
3700static 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
3707static struct ti_clk_fixed_factor dpll3_x2_ck_data = {
3708	.parent = "dpll3_ck",
3709	.div = 1,
3710	.mult = 2,
3711};
3712
3713static 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
3719static 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
3727static 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
3734static 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
3742static 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
3749static 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
3757static 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
3764static 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
3772static 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
3779static 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
3787static 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
3794static struct ti_clk_composite gpt4_fck_data = {
3795	.mux = &gpt4_mux_fck_data,
3796	.gate = &gpt4_gate_fck_data,
3797};
3798
3799static struct ti_clk gpt4_fck = {
3800	.name = "gpt4_fck",
3801	.type = TI_CLK_COMPOSITE,
3802	.data = &gpt4_fck_data,
3803};
3804
3805static 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
3813static 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
3820static 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
3827static 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
3834static 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
3842static 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
3849static struct ti_clk_fixed_factor ssi_sst_fck_3430es2_data = {
3850	.parent = "ssi_ssr_fck",
3851	.div = 2,
3852	.mult = 1,
3853};
3854
3855static 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
3861static 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
3868static 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
3875static 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
3883static 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
3890static 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
3898static 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
3905static 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
3913static 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
3920static struct ti_clk_fixed dummy_apb_pclk_data = {
3921	.frequency = 0x0,
3922};
3923
3924static struct ti_clk dummy_apb_pclk = {
3925	.name = "dummy_apb_pclk",
3926	.type = TI_CLK_FIXED,
3927	.data = &dummy_apb_pclk_data,
3928};
3929
3930static 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
3937static 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
3944static 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
3952static 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
3959static struct ti_clk_fixed_factor dpll4_x2_ck_data = {
3960	.parent = "dpll4_ck",
3961	.div = 1,
3962	.mult = 2,
3963};
3964
3965static 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
3971static 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
3979static 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
3986static 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
3993static 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
4000static 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
4008static 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
4015static 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
4023static 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
4030static 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
4038static 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
4045static 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
4053static 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
4060static 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
4069static struct ti_clk pclkx2_fck = {
4070	.name = "pclkx2_fck",
4071	.type = TI_CLK_DIVIDER,
4072	.data = &pclkx2_fck_data,
4073};
4074
4075static 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
4083static 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
4090static 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
4097static struct ti_clk emac_fck = {
4098	.name = "emac_fck",
4099	.type = TI_CLK_GATE,
4100	.data = &emac_fck_data,
4101};
4102
4103static struct ti_clk_composite gpt10_fck_data = {
4104	.mux = &gpt10_mux_fck_data,
4105	.gate = &gpt10_gate_fck_data,
4106};
4107
4108static struct ti_clk gpt10_fck = {
4109	.name = "gpt10_fck",
4110	.type = TI_CLK_COMPOSITE,
4111	.data = &gpt10_fck_data,
4112};
4113
4114static 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
4122static 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
4129static 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
4137static 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
4144static 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
4152static 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
4159static 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
4167static 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
4174static 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
4182static 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
4189static 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
4197static struct ti_clk rng_ick = {
4198	.name = "rng_ick",
4199	.type = TI_CLK_GATE,
4200	.data = &rng_ick_data,
4201};
4202
4203static 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
4211static 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
4218static 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
4226static 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
4233static 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
4242static struct ti_clk sys_clkout2 = {
4243	.name = "sys_clkout2",
4244	.type = TI_CLK_DIVIDER,
4245	.data = &sys_clkout2_data,
4246};
4247
4248static 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
4279static 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
4299static 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
4496static 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
4524static 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
4545static struct ti_clk_alias omap36xx_clks[] = {
4546	CLK(NULL, "uart4_fck", &uart4_fck),
4547	{ NULL },
4548};
4549
4550static 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
4568static 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
4578static const char *enable_init_clks[] = {
4579	"sdrc_ick",
4580	"gpmc_fck",
4581	"omapctrl_ick",
4582};
4583
4584static 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
4598int __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
4611int __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
4626int __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
4643int __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