Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
[sfrench/cifs-2.6.git] / arch / arm / mach-omap2 / omap_hwmod_33xx_43xx_ipblock_data.c
1 /*
2  *
3  * Copyright (C) 2013 Texas Instruments Incorporated
4  *
5  * Hwmod common for AM335x and AM43x
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/types.h>
18
19 #include "omap_hwmod.h"
20 #include "wd_timer.h"
21 #include "cm33xx.h"
22 #include "prm33xx.h"
23 #include "omap_hwmod_33xx_43xx_common_data.h"
24 #include "prcm43xx.h"
25 #include "common.h"
26
27 #define CLKCTRL(oh, clkctrl) ((oh).prcm.omap4.clkctrl_offs = (clkctrl))
28 #define RSTCTRL(oh, rstctrl) ((oh).prcm.omap4.rstctrl_offs = (rstctrl))
29 #define RSTST(oh, rstst) ((oh).prcm.omap4.rstst_offs = (rstst))
30 #define PRCM_FLAGS(oh, flag) ((oh).prcm.omap4.flags = (flag))
31
32 /*
33  * 'l3' class
34  * instance(s): l3_main, l3_s, l3_instr
35  */
36 static struct omap_hwmod_class am33xx_l3_hwmod_class = {
37         .name           = "l3",
38 };
39
40 struct omap_hwmod am33xx_l3_main_hwmod = {
41         .name           = "l3_main",
42         .class          = &am33xx_l3_hwmod_class,
43         .clkdm_name     = "l3_clkdm",
44         .flags          = HWMOD_INIT_NO_IDLE,
45         .main_clk       = "l3_gclk",
46         .prcm           = {
47                 .omap4  = {
48                         .modulemode     = MODULEMODE_SWCTRL,
49                 },
50         },
51 };
52
53 /* l3_s */
54 struct omap_hwmod am33xx_l3_s_hwmod = {
55         .name           = "l3_s",
56         .class          = &am33xx_l3_hwmod_class,
57         .clkdm_name     = "l3s_clkdm",
58 };
59
60 /* l3_instr */
61 struct omap_hwmod am33xx_l3_instr_hwmod = {
62         .name           = "l3_instr",
63         .class          = &am33xx_l3_hwmod_class,
64         .clkdm_name     = "l3_clkdm",
65         .flags          = HWMOD_INIT_NO_IDLE,
66         .main_clk       = "l3_gclk",
67         .prcm           = {
68                 .omap4  = {
69                         .modulemode     = MODULEMODE_SWCTRL,
70                 },
71         },
72 };
73
74 /*
75  * 'l4' class
76  * instance(s): l4_ls, l4_hs, l4_wkup, l4_fw
77  */
78 struct omap_hwmod_class am33xx_l4_hwmod_class = {
79         .name           = "l4",
80 };
81
82 /* l4_ls */
83 struct omap_hwmod am33xx_l4_ls_hwmod = {
84         .name           = "l4_ls",
85         .class          = &am33xx_l4_hwmod_class,
86         .clkdm_name     = "l4ls_clkdm",
87         .flags          = HWMOD_INIT_NO_IDLE,
88         .main_clk       = "l4ls_gclk",
89         .prcm           = {
90                 .omap4  = {
91                         .modulemode     = MODULEMODE_SWCTRL,
92                 },
93         },
94 };
95
96 /* l4_wkup */
97 struct omap_hwmod am33xx_l4_wkup_hwmod = {
98         .name           = "l4_wkup",
99         .class          = &am33xx_l4_hwmod_class,
100         .clkdm_name     = "l4_wkup_clkdm",
101         .flags          = HWMOD_INIT_NO_IDLE,
102         .prcm           = {
103                 .omap4  = {
104                         .modulemode     = MODULEMODE_SWCTRL,
105                 },
106         },
107 };
108
109 /*
110  * 'mpu' class
111  */
112 static struct omap_hwmod_class am33xx_mpu_hwmod_class = {
113         .name   = "mpu",
114 };
115
116 struct omap_hwmod am33xx_mpu_hwmod = {
117         .name           = "mpu",
118         .class          = &am33xx_mpu_hwmod_class,
119         .clkdm_name     = "mpu_clkdm",
120         .flags          = HWMOD_INIT_NO_IDLE,
121         .main_clk       = "dpll_mpu_m2_ck",
122         .prcm           = {
123                 .omap4  = {
124                         .modulemode     = MODULEMODE_SWCTRL,
125                 },
126         },
127 };
128
129 /*
130  * 'wakeup m3' class
131  * Wakeup controller sub-system under wakeup domain
132  */
133 struct omap_hwmod_class am33xx_wkup_m3_hwmod_class = {
134         .name           = "wkup_m3",
135 };
136
137 /*
138  * 'pru-icss' class
139  * Programmable Real-Time Unit and Industrial Communication Subsystem
140  */
141 static struct omap_hwmod_class am33xx_pruss_hwmod_class = {
142         .name   = "pruss",
143 };
144
145 static struct omap_hwmod_rst_info am33xx_pruss_resets[] = {
146         { .name = "pruss", .rst_shift = 1 },
147 };
148
149 /* pru-icss */
150 /* Pseudo hwmod for reset control purpose only */
151 struct omap_hwmod am33xx_pruss_hwmod = {
152         .name           = "pruss",
153         .class          = &am33xx_pruss_hwmod_class,
154         .clkdm_name     = "pruss_ocp_clkdm",
155         .main_clk       = "pruss_ocp_gclk",
156         .prcm           = {
157                 .omap4  = {
158                         .modulemode     = MODULEMODE_SWCTRL,
159                 },
160         },
161         .rst_lines      = am33xx_pruss_resets,
162         .rst_lines_cnt  = ARRAY_SIZE(am33xx_pruss_resets),
163 };
164
165 /* gfx */
166 /* Pseudo hwmod for reset control purpose only */
167 static struct omap_hwmod_class am33xx_gfx_hwmod_class = {
168         .name   = "gfx",
169 };
170
171 static struct omap_hwmod_rst_info am33xx_gfx_resets[] = {
172         { .name = "gfx", .rst_shift = 0, .st_shift = 0},
173 };
174
175 struct omap_hwmod am33xx_gfx_hwmod = {
176         .name           = "gfx",
177         .class          = &am33xx_gfx_hwmod_class,
178         .clkdm_name     = "gfx_l3_clkdm",
179         .main_clk       = "gfx_fck_div_ck",
180         .prcm           = {
181                 .omap4  = {
182                         .modulemode     = MODULEMODE_SWCTRL,
183                 },
184         },
185         .rst_lines      = am33xx_gfx_resets,
186         .rst_lines_cnt  = ARRAY_SIZE(am33xx_gfx_resets),
187 };
188
189 /*
190  * 'prcm' class
191  * power and reset manager (whole prcm infrastructure)
192  */
193 static struct omap_hwmod_class am33xx_prcm_hwmod_class = {
194         .name   = "prcm",
195 };
196
197 /* prcm */
198 struct omap_hwmod am33xx_prcm_hwmod = {
199         .name           = "prcm",
200         .class          = &am33xx_prcm_hwmod_class,
201         .clkdm_name     = "l4_wkup_clkdm",
202 };
203
204 /*
205  * 'emif' class
206  * instance(s): emif
207  */
208 static struct omap_hwmod_class_sysconfig am33xx_emif_sysc = {
209         .rev_offs       = 0x0000,
210 };
211
212 struct omap_hwmod_class am33xx_emif_hwmod_class = {
213         .name           = "emif",
214         .sysc           = &am33xx_emif_sysc,
215 };
216
217 /*
218  * 'aes0' class
219  */
220 static struct omap_hwmod_class_sysconfig am33xx_aes0_sysc = {
221         .rev_offs       = 0x80,
222         .sysc_offs      = 0x84,
223         .syss_offs      = 0x88,
224         .sysc_flags     = SYSS_HAS_RESET_STATUS,
225 };
226
227 static struct omap_hwmod_class am33xx_aes0_hwmod_class = {
228         .name           = "aes0",
229         .sysc           = &am33xx_aes0_sysc,
230 };
231
232 struct omap_hwmod am33xx_aes0_hwmod = {
233         .name           = "aes",
234         .class          = &am33xx_aes0_hwmod_class,
235         .clkdm_name     = "l3_clkdm",
236         .main_clk       = "aes0_fck",
237         .prcm           = {
238                 .omap4  = {
239                         .modulemode     = MODULEMODE_SWCTRL,
240                 },
241         },
242 };
243
244 /* sha0 HIB2 (the 'P' (public) device) */
245 static struct omap_hwmod_class_sysconfig am33xx_sha0_sysc = {
246         .rev_offs       = 0x100,
247         .sysc_offs      = 0x110,
248         .syss_offs      = 0x114,
249         .sysc_flags     = SYSS_HAS_RESET_STATUS,
250 };
251
252 static struct omap_hwmod_class am33xx_sha0_hwmod_class = {
253         .name           = "sha0",
254         .sysc           = &am33xx_sha0_sysc,
255 };
256
257 struct omap_hwmod am33xx_sha0_hwmod = {
258         .name           = "sham",
259         .class          = &am33xx_sha0_hwmod_class,
260         .clkdm_name     = "l3_clkdm",
261         .main_clk       = "l3_gclk",
262         .prcm           = {
263                 .omap4  = {
264                         .modulemode     = MODULEMODE_SWCTRL,
265                 },
266         },
267 };
268
269 /* rng */
270 static struct omap_hwmod_class_sysconfig am33xx_rng_sysc = {
271         .rev_offs       = 0x1fe0,
272         .sysc_offs      = 0x1fe4,
273         .sysc_flags     = SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE,
274         .idlemodes      = SIDLE_FORCE | SIDLE_NO,
275         .sysc_fields    = &omap_hwmod_sysc_type1,
276 };
277
278 static struct omap_hwmod_class am33xx_rng_hwmod_class = {
279         .name           = "rng",
280         .sysc           = &am33xx_rng_sysc,
281 };
282
283 struct omap_hwmod am33xx_rng_hwmod = {
284         .name           = "rng",
285         .class          = &am33xx_rng_hwmod_class,
286         .clkdm_name     = "l4ls_clkdm",
287         .flags          = HWMOD_SWSUP_SIDLE,
288         .main_clk       = "rng_fck",
289         .prcm           = {
290                 .omap4  = {
291                         .modulemode     = MODULEMODE_SWCTRL,
292                 },
293         },
294 };
295
296 /* ocmcram */
297 static struct omap_hwmod_class am33xx_ocmcram_hwmod_class = {
298         .name = "ocmcram",
299 };
300
301 struct omap_hwmod am33xx_ocmcram_hwmod = {
302         .name           = "ocmcram",
303         .class          = &am33xx_ocmcram_hwmod_class,
304         .clkdm_name     = "l3_clkdm",
305         .flags          = HWMOD_INIT_NO_IDLE,
306         .main_clk       = "l3_gclk",
307         .prcm           = {
308                 .omap4  = {
309                         .modulemode     = MODULEMODE_SWCTRL,
310                 },
311         },
312 };
313
314 /* 'smartreflex' class */
315 static struct omap_hwmod_class am33xx_smartreflex_hwmod_class = {
316         .name           = "smartreflex",
317 };
318
319 /* smartreflex0 */
320 struct omap_hwmod am33xx_smartreflex0_hwmod = {
321         .name           = "smartreflex0",
322         .class          = &am33xx_smartreflex_hwmod_class,
323         .clkdm_name     = "l4_wkup_clkdm",
324         .main_clk       = "smartreflex0_fck",
325         .prcm           = {
326                 .omap4  = {
327                         .modulemode     = MODULEMODE_SWCTRL,
328                 },
329         },
330 };
331
332 /* smartreflex1 */
333 struct omap_hwmod am33xx_smartreflex1_hwmod = {
334         .name           = "smartreflex1",
335         .class          = &am33xx_smartreflex_hwmod_class,
336         .clkdm_name     = "l4_wkup_clkdm",
337         .main_clk       = "smartreflex1_fck",
338         .prcm           = {
339                 .omap4  = {
340                         .modulemode     = MODULEMODE_SWCTRL,
341                 },
342         },
343 };
344
345 /*
346  * 'control' module class
347  */
348 struct omap_hwmod_class am33xx_control_hwmod_class = {
349         .name           = "control",
350 };
351
352 /*
353  * dcan class
354  */
355 static struct omap_hwmod_class am33xx_dcan_hwmod_class = {
356         .name = "d_can",
357 };
358
359 /* dcan0 */
360 struct omap_hwmod am33xx_dcan0_hwmod = {
361         .name           = "d_can0",
362         .class          = &am33xx_dcan_hwmod_class,
363         .clkdm_name     = "l4ls_clkdm",
364         .main_clk       = "dcan0_fck",
365         .prcm           = {
366                 .omap4  = {
367                         .modulemode     = MODULEMODE_SWCTRL,
368                 },
369         },
370 };
371
372 /* dcan1 */
373 struct omap_hwmod am33xx_dcan1_hwmod = {
374         .name           = "d_can1",
375         .class          = &am33xx_dcan_hwmod_class,
376         .clkdm_name     = "l4ls_clkdm",
377         .main_clk       = "dcan1_fck",
378         .prcm           = {
379                 .omap4  = {
380                         .modulemode     = MODULEMODE_SWCTRL,
381                 },
382         },
383 };
384
385 /* elm */
386 static struct omap_hwmod_class_sysconfig am33xx_elm_sysc = {
387         .rev_offs       = 0x0000,
388         .sysc_offs      = 0x0010,
389         .syss_offs      = 0x0014,
390         .sysc_flags     = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
391                         SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
392                         SYSS_HAS_RESET_STATUS),
393         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
394         .sysc_fields    = &omap_hwmod_sysc_type1,
395 };
396
397 static struct omap_hwmod_class am33xx_elm_hwmod_class = {
398         .name           = "elm",
399         .sysc           = &am33xx_elm_sysc,
400 };
401
402 struct omap_hwmod am33xx_elm_hwmod = {
403         .name           = "elm",
404         .class          = &am33xx_elm_hwmod_class,
405         .clkdm_name     = "l4ls_clkdm",
406         .main_clk       = "l4ls_gclk",
407         .prcm           = {
408                 .omap4  = {
409                         .modulemode     = MODULEMODE_SWCTRL,
410                 },
411         },
412 };
413
414 /* pwmss  */
415 static struct omap_hwmod_class_sysconfig am33xx_epwmss_sysc = {
416         .rev_offs       = 0x0,
417         .sysc_offs      = 0x4,
418         .sysc_flags     = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE),
419         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
420                         SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
421                         MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
422         .sysc_fields    = &omap_hwmod_sysc_type2,
423 };
424
425 struct omap_hwmod_class am33xx_epwmss_hwmod_class = {
426         .name           = "epwmss",
427         .sysc           = &am33xx_epwmss_sysc,
428 };
429
430 /* epwmss0 */
431 struct omap_hwmod am33xx_epwmss0_hwmod = {
432         .name           = "epwmss0",
433         .class          = &am33xx_epwmss_hwmod_class,
434         .clkdm_name     = "l4ls_clkdm",
435         .main_clk       = "l4ls_gclk",
436         .prcm           = {
437                 .omap4  = {
438                         .modulemode     = MODULEMODE_SWCTRL,
439                 },
440         },
441 };
442
443 /* epwmss1 */
444 struct omap_hwmod am33xx_epwmss1_hwmod = {
445         .name           = "epwmss1",
446         .class          = &am33xx_epwmss_hwmod_class,
447         .clkdm_name     = "l4ls_clkdm",
448         .main_clk       = "l4ls_gclk",
449         .prcm           = {
450                 .omap4  = {
451                         .modulemode     = MODULEMODE_SWCTRL,
452                 },
453         },
454 };
455
456 /* epwmss2 */
457 struct omap_hwmod am33xx_epwmss2_hwmod = {
458         .name           = "epwmss2",
459         .class          = &am33xx_epwmss_hwmod_class,
460         .clkdm_name     = "l4ls_clkdm",
461         .main_clk       = "l4ls_gclk",
462         .prcm           = {
463                 .omap4  = {
464                         .modulemode     = MODULEMODE_SWCTRL,
465                 },
466         },
467 };
468
469 /*
470  * 'gpio' class: for gpio 0,1,2,3
471  */
472 static struct omap_hwmod_class_sysconfig am33xx_gpio_sysc = {
473         .rev_offs       = 0x0000,
474         .sysc_offs      = 0x0010,
475         .syss_offs      = 0x0114,
476         .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP |
477                           SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
478                           SYSS_HAS_RESET_STATUS),
479         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
480                           SIDLE_SMART_WKUP),
481         .sysc_fields    = &omap_hwmod_sysc_type1,
482 };
483
484 static struct omap_hwmod_class am33xx_gpio_hwmod_class = {
485         .name           = "gpio",
486         .sysc           = &am33xx_gpio_sysc,
487 };
488
489 /* gpio1 */
490 static struct omap_hwmod_opt_clk gpio1_opt_clks[] = {
491         { .role = "dbclk", .clk = "gpio1_dbclk" },
492 };
493
494 static struct omap_hwmod am33xx_gpio1_hwmod = {
495         .name           = "gpio2",
496         .class          = &am33xx_gpio_hwmod_class,
497         .clkdm_name     = "l4ls_clkdm",
498         .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
499         .main_clk       = "l4ls_gclk",
500         .prcm           = {
501                 .omap4  = {
502                         .modulemode     = MODULEMODE_SWCTRL,
503                 },
504         },
505         .opt_clks       = gpio1_opt_clks,
506         .opt_clks_cnt   = ARRAY_SIZE(gpio1_opt_clks),
507 };
508
509 /* gpio2 */
510 static struct omap_hwmod_opt_clk gpio2_opt_clks[] = {
511         { .role = "dbclk", .clk = "gpio2_dbclk" },
512 };
513
514 static struct omap_hwmod am33xx_gpio2_hwmod = {
515         .name           = "gpio3",
516         .class          = &am33xx_gpio_hwmod_class,
517         .clkdm_name     = "l4ls_clkdm",
518         .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
519         .main_clk       = "l4ls_gclk",
520         .prcm           = {
521                 .omap4  = {
522                         .modulemode     = MODULEMODE_SWCTRL,
523                 },
524         },
525         .opt_clks       = gpio2_opt_clks,
526         .opt_clks_cnt   = ARRAY_SIZE(gpio2_opt_clks),
527 };
528
529 /* gpio3 */
530 static struct omap_hwmod_opt_clk gpio3_opt_clks[] = {
531         { .role = "dbclk", .clk = "gpio3_dbclk" },
532 };
533
534 static struct omap_hwmod am33xx_gpio3_hwmod = {
535         .name           = "gpio4",
536         .class          = &am33xx_gpio_hwmod_class,
537         .clkdm_name     = "l4ls_clkdm",
538         .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
539         .main_clk       = "l4ls_gclk",
540         .prcm           = {
541                 .omap4  = {
542                         .modulemode     = MODULEMODE_SWCTRL,
543                 },
544         },
545         .opt_clks       = gpio3_opt_clks,
546         .opt_clks_cnt   = ARRAY_SIZE(gpio3_opt_clks),
547 };
548
549 /* gpmc */
550 static struct omap_hwmod_class_sysconfig gpmc_sysc = {
551         .rev_offs       = 0x0,
552         .sysc_offs      = 0x10,
553         .syss_offs      = 0x14,
554         .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE |
555                         SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
556         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
557         .sysc_fields    = &omap_hwmod_sysc_type1,
558 };
559
560 static struct omap_hwmod_class am33xx_gpmc_hwmod_class = {
561         .name           = "gpmc",
562         .sysc           = &gpmc_sysc,
563 };
564
565 struct omap_hwmod am33xx_gpmc_hwmod = {
566         .name           = "gpmc",
567         .class          = &am33xx_gpmc_hwmod_class,
568         .clkdm_name     = "l3s_clkdm",
569         /* Skip reset for CONFIG_OMAP_GPMC_DEBUG for bootloader timings */
570         .flags          = DEBUG_OMAP_GPMC_HWMOD_FLAGS,
571         .main_clk       = "l3s_gclk",
572         .prcm           = {
573                 .omap4  = {
574                         .modulemode     = MODULEMODE_SWCTRL,
575                 },
576         },
577 };
578
579 /*
580  * 'mailbox' class
581  * mailbox module allowing communication between the on-chip processors using a
582  * queued mailbox-interrupt mechanism.
583  */
584 static struct omap_hwmod_class_sysconfig am33xx_mailbox_sysc = {
585         .rev_offs       = 0x0000,
586         .sysc_offs      = 0x0010,
587         .sysc_flags     = (SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
588                           SYSC_HAS_SOFTRESET),
589         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
590         .sysc_fields    = &omap_hwmod_sysc_type2,
591 };
592
593 static struct omap_hwmod_class am33xx_mailbox_hwmod_class = {
594         .name   = "mailbox",
595         .sysc   = &am33xx_mailbox_sysc,
596 };
597
598 struct omap_hwmod am33xx_mailbox_hwmod = {
599         .name           = "mailbox",
600         .class          = &am33xx_mailbox_hwmod_class,
601         .clkdm_name     = "l4ls_clkdm",
602         .main_clk       = "l4ls_gclk",
603         .prcm = {
604                 .omap4 = {
605                         .modulemode     = MODULEMODE_SWCTRL,
606                 },
607         },
608 };
609
610 /*
611  * 'mcasp' class
612  */
613 static struct omap_hwmod_class_sysconfig am33xx_mcasp_sysc = {
614         .rev_offs       = 0x0,
615         .sysc_offs      = 0x4,
616         .sysc_flags     = SYSC_HAS_SIDLEMODE,
617         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
618         .sysc_fields    = &omap_hwmod_sysc_type3,
619 };
620
621 static struct omap_hwmod_class am33xx_mcasp_hwmod_class = {
622         .name           = "mcasp",
623         .sysc           = &am33xx_mcasp_sysc,
624 };
625
626 /* mcasp0 */
627 struct omap_hwmod am33xx_mcasp0_hwmod = {
628         .name           = "mcasp0",
629         .class          = &am33xx_mcasp_hwmod_class,
630         .clkdm_name     = "l3s_clkdm",
631         .main_clk       = "mcasp0_fck",
632         .prcm           = {
633                 .omap4  = {
634                         .modulemode     = MODULEMODE_SWCTRL,
635                 },
636         },
637 };
638
639 /* mcasp1 */
640 struct omap_hwmod am33xx_mcasp1_hwmod = {
641         .name           = "mcasp1",
642         .class          = &am33xx_mcasp_hwmod_class,
643         .clkdm_name     = "l3s_clkdm",
644         .main_clk       = "mcasp1_fck",
645         .prcm           = {
646                 .omap4  = {
647                         .modulemode     = MODULEMODE_SWCTRL,
648                 },
649         },
650 };
651
652 /*
653  * 'rtc' class
654  * rtc subsystem
655  */
656 static struct omap_hwmod_class_sysconfig am33xx_rtc_sysc = {
657         .rev_offs       = 0x0074,
658         .sysc_offs      = 0x0078,
659         .sysc_flags     = SYSC_HAS_SIDLEMODE,
660         .idlemodes      = (SIDLE_FORCE | SIDLE_NO |
661                           SIDLE_SMART | SIDLE_SMART_WKUP),
662         .sysc_fields    = &omap_hwmod_sysc_type3,
663 };
664
665 static struct omap_hwmod_class am33xx_rtc_hwmod_class = {
666         .name           = "rtc",
667         .sysc           = &am33xx_rtc_sysc,
668         .unlock         = &omap_hwmod_rtc_unlock,
669         .lock           = &omap_hwmod_rtc_lock,
670 };
671
672 struct omap_hwmod am33xx_rtc_hwmod = {
673         .name           = "rtc",
674         .class          = &am33xx_rtc_hwmod_class,
675         .clkdm_name     = "l4_rtc_clkdm",
676         .main_clk       = "clk_32768_ck",
677         .prcm           = {
678                 .omap4  = {
679                         .modulemode     = MODULEMODE_SWCTRL,
680                 },
681         },
682 };
683
684 /* 'spi' class */
685 static struct omap_hwmod_class_sysconfig am33xx_mcspi_sysc = {
686         .rev_offs       = 0x0000,
687         .sysc_offs      = 0x0110,
688         .syss_offs      = 0x0114,
689         .sysc_flags     = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
690                           SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
691                           SYSS_HAS_RESET_STATUS),
692         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
693         .sysc_fields    = &omap_hwmod_sysc_type1,
694 };
695
696 struct omap_hwmod_class am33xx_spi_hwmod_class = {
697         .name           = "mcspi",
698         .sysc           = &am33xx_mcspi_sysc,
699 };
700
701 /* spi0 */
702 struct omap_hwmod am33xx_spi0_hwmod = {
703         .name           = "spi0",
704         .class          = &am33xx_spi_hwmod_class,
705         .clkdm_name     = "l4ls_clkdm",
706         .main_clk       = "dpll_per_m2_div4_ck",
707         .prcm           = {
708                 .omap4  = {
709                         .modulemode     = MODULEMODE_SWCTRL,
710                 },
711         },
712 };
713
714 /* spi1 */
715 struct omap_hwmod am33xx_spi1_hwmod = {
716         .name           = "spi1",
717         .class          = &am33xx_spi_hwmod_class,
718         .clkdm_name     = "l4ls_clkdm",
719         .main_clk       = "dpll_per_m2_div4_ck",
720         .prcm           = {
721                 .omap4  = {
722                         .modulemode     = MODULEMODE_SWCTRL,
723                 },
724         },
725 };
726
727 /*
728  * 'spinlock' class
729  * spinlock provides hardware assistance for synchronizing the
730  * processes running on multiple processors
731  */
732
733 static struct omap_hwmod_class_sysconfig am33xx_spinlock_sysc = {
734         .rev_offs       = 0x0000,
735         .sysc_offs      = 0x0010,
736         .syss_offs      = 0x0014,
737         .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
738                            SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
739                            SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
740         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
741         .sysc_fields    = &omap_hwmod_sysc_type1,
742 };
743
744 static struct omap_hwmod_class am33xx_spinlock_hwmod_class = {
745         .name           = "spinlock",
746         .sysc           = &am33xx_spinlock_sysc,
747 };
748
749 struct omap_hwmod am33xx_spinlock_hwmod = {
750         .name           = "spinlock",
751         .class          = &am33xx_spinlock_hwmod_class,
752         .clkdm_name     = "l4ls_clkdm",
753         .main_clk       = "l4ls_gclk",
754         .prcm           = {
755                 .omap4  = {
756                         .modulemode     = MODULEMODE_SWCTRL,
757                 },
758         },
759 };
760
761 /* 'timer 2-7' class */
762 static struct omap_hwmod_class_sysconfig am33xx_timer_sysc = {
763         .rev_offs       = 0x0000,
764         .sysc_offs      = 0x0010,
765         .syss_offs      = 0x0014,
766         .sysc_flags     = (SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
767         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
768                           SIDLE_SMART_WKUP),
769         .sysc_fields    = &omap_hwmod_sysc_type2,
770 };
771
772 struct omap_hwmod_class am33xx_timer_hwmod_class = {
773         .name           = "timer",
774         .sysc           = &am33xx_timer_sysc,
775 };
776
777 /* timer1 1ms */
778 static struct omap_hwmod_class_sysconfig am33xx_timer1ms_sysc = {
779         .rev_offs       = 0x0000,
780         .sysc_offs      = 0x0010,
781         .syss_offs      = 0x0014,
782         .sysc_flags     = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
783                         SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
784                         SYSS_HAS_RESET_STATUS),
785         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
786         .sysc_fields    = &omap_hwmod_sysc_type1,
787 };
788
789 static struct omap_hwmod_class am33xx_timer1ms_hwmod_class = {
790         .name           = "timer",
791         .sysc           = &am33xx_timer1ms_sysc,
792 };
793
794 struct omap_hwmod am33xx_timer1_hwmod = {
795         .name           = "timer1",
796         .class          = &am33xx_timer1ms_hwmod_class,
797         .clkdm_name     = "l4_wkup_clkdm",
798         .main_clk       = "timer1_fck",
799         .prcm           = {
800                 .omap4  = {
801                         .modulemode     = MODULEMODE_SWCTRL,
802                 },
803         },
804 };
805
806 struct omap_hwmod am33xx_timer2_hwmod = {
807         .name           = "timer2",
808         .class          = &am33xx_timer_hwmod_class,
809         .clkdm_name     = "l4ls_clkdm",
810         .main_clk       = "timer2_fck",
811         .prcm           = {
812                 .omap4  = {
813                         .modulemode     = MODULEMODE_SWCTRL,
814                 },
815         },
816 };
817
818 struct omap_hwmod am33xx_timer3_hwmod = {
819         .name           = "timer3",
820         .class          = &am33xx_timer_hwmod_class,
821         .clkdm_name     = "l4ls_clkdm",
822         .main_clk       = "timer3_fck",
823         .prcm           = {
824                 .omap4  = {
825                         .modulemode     = MODULEMODE_SWCTRL,
826                 },
827         },
828 };
829
830 struct omap_hwmod am33xx_timer4_hwmod = {
831         .name           = "timer4",
832         .class          = &am33xx_timer_hwmod_class,
833         .clkdm_name     = "l4ls_clkdm",
834         .main_clk       = "timer4_fck",
835         .prcm           = {
836                 .omap4  = {
837                         .modulemode     = MODULEMODE_SWCTRL,
838                 },
839         },
840 };
841
842 struct omap_hwmod am33xx_timer5_hwmod = {
843         .name           = "timer5",
844         .class          = &am33xx_timer_hwmod_class,
845         .clkdm_name     = "l4ls_clkdm",
846         .main_clk       = "timer5_fck",
847         .prcm           = {
848                 .omap4  = {
849                         .modulemode     = MODULEMODE_SWCTRL,
850                 },
851         },
852 };
853
854 struct omap_hwmod am33xx_timer6_hwmod = {
855         .name           = "timer6",
856         .class          = &am33xx_timer_hwmod_class,
857         .clkdm_name     = "l4ls_clkdm",
858         .main_clk       = "timer6_fck",
859         .prcm           = {
860                 .omap4  = {
861                         .modulemode     = MODULEMODE_SWCTRL,
862                 },
863         },
864 };
865
866 struct omap_hwmod am33xx_timer7_hwmod = {
867         .name           = "timer7",
868         .class          = &am33xx_timer_hwmod_class,
869         .clkdm_name     = "l4ls_clkdm",
870         .main_clk       = "timer7_fck",
871         .prcm           = {
872                 .omap4  = {
873                         .modulemode     = MODULEMODE_SWCTRL,
874                 },
875         },
876 };
877
878 /* tpcc */
879 static struct omap_hwmod_class am33xx_tpcc_hwmod_class = {
880         .name           = "tpcc",
881 };
882
883 struct omap_hwmod am33xx_tpcc_hwmod = {
884         .name           = "tpcc",
885         .class          = &am33xx_tpcc_hwmod_class,
886         .clkdm_name     = "l3_clkdm",
887         .main_clk       = "l3_gclk",
888         .prcm           = {
889                 .omap4  = {
890                         .modulemode     = MODULEMODE_SWCTRL,
891                 },
892         },
893 };
894
895 static struct omap_hwmod_class_sysconfig am33xx_tptc_sysc = {
896         .rev_offs       = 0x0,
897         .sysc_offs      = 0x10,
898         .sysc_flags     = (SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
899                           SYSC_HAS_MIDLEMODE),
900         .idlemodes      = (SIDLE_FORCE | SIDLE_SMART | MSTANDBY_FORCE),
901         .sysc_fields    = &omap_hwmod_sysc_type2,
902 };
903
904 /* 'tptc' class */
905 static struct omap_hwmod_class am33xx_tptc_hwmod_class = {
906         .name           = "tptc",
907         .sysc           = &am33xx_tptc_sysc,
908 };
909
910 /* tptc0 */
911 struct omap_hwmod am33xx_tptc0_hwmod = {
912         .name           = "tptc0",
913         .class          = &am33xx_tptc_hwmod_class,
914         .clkdm_name     = "l3_clkdm",
915         .flags          = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY,
916         .main_clk       = "l3_gclk",
917         .prcm           = {
918                 .omap4  = {
919                         .modulemode     = MODULEMODE_SWCTRL,
920                 },
921         },
922 };
923
924 /* tptc1 */
925 struct omap_hwmod am33xx_tptc1_hwmod = {
926         .name           = "tptc1",
927         .class          = &am33xx_tptc_hwmod_class,
928         .clkdm_name     = "l3_clkdm",
929         .flags          = (HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY),
930         .main_clk       = "l3_gclk",
931         .prcm           = {
932                 .omap4  = {
933                         .modulemode     = MODULEMODE_SWCTRL,
934                 },
935         },
936 };
937
938 /* tptc2 */
939 struct omap_hwmod am33xx_tptc2_hwmod = {
940         .name           = "tptc2",
941         .class          = &am33xx_tptc_hwmod_class,
942         .clkdm_name     = "l3_clkdm",
943         .flags          = (HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY),
944         .main_clk       = "l3_gclk",
945         .prcm           = {
946                 .omap4  = {
947                         .modulemode     = MODULEMODE_SWCTRL,
948                 },
949         },
950 };
951
952 /* 'wd_timer' class */
953 static struct omap_hwmod_class_sysconfig wdt_sysc = {
954         .rev_offs       = 0x0,
955         .sysc_offs      = 0x10,
956         .syss_offs      = 0x14,
957         .sysc_flags     = (SYSC_HAS_EMUFREE | SYSC_HAS_SIDLEMODE |
958                         SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
959         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
960                         SIDLE_SMART_WKUP),
961         .sysc_fields    = &omap_hwmod_sysc_type1,
962 };
963
964 static struct omap_hwmod_class am33xx_wd_timer_hwmod_class = {
965         .name           = "wd_timer",
966         .sysc           = &wdt_sysc,
967         .pre_shutdown   = &omap2_wd_timer_disable,
968 };
969
970 /*
971  * XXX: device.c file uses hardcoded name for watchdog timer
972  * driver "wd_timer2, so we are also using same name as of now...
973  */
974 struct omap_hwmod am33xx_wd_timer1_hwmod = {
975         .name           = "wd_timer2",
976         .class          = &am33xx_wd_timer_hwmod_class,
977         .clkdm_name     = "l4_wkup_clkdm",
978         .flags          = HWMOD_SWSUP_SIDLE,
979         .main_clk       = "wdt1_fck",
980         .prcm           = {
981                 .omap4  = {
982                         .modulemode     = MODULEMODE_SWCTRL,
983                 },
984         },
985 };
986
987 static void omap_hwmod_am33xx_clkctrl(void)
988 {
989         CLKCTRL(am33xx_dcan0_hwmod, AM33XX_CM_PER_DCAN0_CLKCTRL_OFFSET);
990         CLKCTRL(am33xx_dcan1_hwmod, AM33XX_CM_PER_DCAN1_CLKCTRL_OFFSET);
991         CLKCTRL(am33xx_elm_hwmod, AM33XX_CM_PER_ELM_CLKCTRL_OFFSET);
992         CLKCTRL(am33xx_epwmss0_hwmod, AM33XX_CM_PER_EPWMSS0_CLKCTRL_OFFSET);
993         CLKCTRL(am33xx_epwmss1_hwmod, AM33XX_CM_PER_EPWMSS1_CLKCTRL_OFFSET);
994         CLKCTRL(am33xx_epwmss2_hwmod, AM33XX_CM_PER_EPWMSS2_CLKCTRL_OFFSET);
995         CLKCTRL(am33xx_gpio1_hwmod, AM33XX_CM_PER_GPIO1_CLKCTRL_OFFSET);
996         CLKCTRL(am33xx_gpio2_hwmod, AM33XX_CM_PER_GPIO2_CLKCTRL_OFFSET);
997         CLKCTRL(am33xx_gpio3_hwmod, AM33XX_CM_PER_GPIO3_CLKCTRL_OFFSET);
998         CLKCTRL(am33xx_mailbox_hwmod, AM33XX_CM_PER_MAILBOX0_CLKCTRL_OFFSET);
999         CLKCTRL(am33xx_mcasp0_hwmod, AM33XX_CM_PER_MCASP0_CLKCTRL_OFFSET);
1000         CLKCTRL(am33xx_mcasp1_hwmod, AM33XX_CM_PER_MCASP1_CLKCTRL_OFFSET);
1001         CLKCTRL(am33xx_spi0_hwmod, AM33XX_CM_PER_SPI0_CLKCTRL_OFFSET);
1002         CLKCTRL(am33xx_spi1_hwmod, AM33XX_CM_PER_SPI1_CLKCTRL_OFFSET);
1003         CLKCTRL(am33xx_spinlock_hwmod, AM33XX_CM_PER_SPINLOCK_CLKCTRL_OFFSET);
1004         CLKCTRL(am33xx_timer2_hwmod, AM33XX_CM_PER_TIMER2_CLKCTRL_OFFSET);
1005         CLKCTRL(am33xx_timer3_hwmod, AM33XX_CM_PER_TIMER3_CLKCTRL_OFFSET);
1006         CLKCTRL(am33xx_timer4_hwmod, AM33XX_CM_PER_TIMER4_CLKCTRL_OFFSET);
1007         CLKCTRL(am33xx_timer5_hwmod, AM33XX_CM_PER_TIMER5_CLKCTRL_OFFSET);
1008         CLKCTRL(am33xx_timer6_hwmod, AM33XX_CM_PER_TIMER6_CLKCTRL_OFFSET);
1009         CLKCTRL(am33xx_timer7_hwmod, AM33XX_CM_PER_TIMER7_CLKCTRL_OFFSET);
1010         CLKCTRL(am33xx_smartreflex0_hwmod,
1011                 AM33XX_CM_WKUP_SMARTREFLEX0_CLKCTRL_OFFSET);
1012         CLKCTRL(am33xx_smartreflex1_hwmod,
1013                 AM33XX_CM_WKUP_SMARTREFLEX1_CLKCTRL_OFFSET);
1014         CLKCTRL(am33xx_timer1_hwmod, AM33XX_CM_WKUP_TIMER1_CLKCTRL_OFFSET);
1015         CLKCTRL(am33xx_wd_timer1_hwmod, AM33XX_CM_WKUP_WDT1_CLKCTRL_OFFSET);
1016         CLKCTRL(am33xx_rtc_hwmod, AM33XX_CM_RTC_RTC_CLKCTRL_OFFSET);
1017         PRCM_FLAGS(am33xx_rtc_hwmod, HWMOD_OMAP4_ZERO_CLKCTRL_OFFSET);
1018         CLKCTRL(am33xx_gpmc_hwmod, AM33XX_CM_PER_GPMC_CLKCTRL_OFFSET);
1019         CLKCTRL(am33xx_l4_ls_hwmod, AM33XX_CM_PER_L4LS_CLKCTRL_OFFSET);
1020         CLKCTRL(am33xx_l4_wkup_hwmod, AM33XX_CM_WKUP_L4WKUP_CLKCTRL_OFFSET);
1021         CLKCTRL(am33xx_l3_main_hwmod, AM33XX_CM_PER_L3_CLKCTRL_OFFSET);
1022         CLKCTRL(am33xx_tpcc_hwmod, AM33XX_CM_PER_TPCC_CLKCTRL_OFFSET);
1023         CLKCTRL(am33xx_tptc0_hwmod, AM33XX_CM_PER_TPTC0_CLKCTRL_OFFSET);
1024         CLKCTRL(am33xx_tptc1_hwmod, AM33XX_CM_PER_TPTC1_CLKCTRL_OFFSET);
1025         CLKCTRL(am33xx_tptc2_hwmod, AM33XX_CM_PER_TPTC2_CLKCTRL_OFFSET);
1026         CLKCTRL(am33xx_gfx_hwmod, AM33XX_CM_GFX_GFX_CLKCTRL_OFFSET);
1027         CLKCTRL(am33xx_pruss_hwmod, AM33XX_CM_PER_PRUSS_CLKCTRL_OFFSET);
1028         CLKCTRL(am33xx_mpu_hwmod , AM33XX_CM_MPU_MPU_CLKCTRL_OFFSET);
1029         CLKCTRL(am33xx_l3_instr_hwmod , AM33XX_CM_PER_L3_INSTR_CLKCTRL_OFFSET);
1030         CLKCTRL(am33xx_ocmcram_hwmod , AM33XX_CM_PER_OCMCRAM_CLKCTRL_OFFSET);
1031         CLKCTRL(am33xx_sha0_hwmod , AM33XX_CM_PER_SHA0_CLKCTRL_OFFSET);
1032         CLKCTRL(am33xx_aes0_hwmod , AM33XX_CM_PER_AES0_CLKCTRL_OFFSET);
1033         CLKCTRL(am33xx_rng_hwmod, AM33XX_CM_PER_RNG_CLKCTRL_OFFSET);
1034 }
1035
1036 static void omap_hwmod_am33xx_rst(void)
1037 {
1038         RSTCTRL(am33xx_pruss_hwmod, AM33XX_RM_PER_RSTCTRL_OFFSET);
1039         RSTCTRL(am33xx_gfx_hwmod, AM33XX_RM_GFX_RSTCTRL_OFFSET);
1040         RSTST(am33xx_gfx_hwmod, AM33XX_RM_GFX_RSTST_OFFSET);
1041 }
1042
1043 void omap_hwmod_am33xx_reg(void)
1044 {
1045         omap_hwmod_am33xx_clkctrl();
1046         omap_hwmod_am33xx_rst();
1047 }
1048
1049 static void omap_hwmod_am43xx_clkctrl(void)
1050 {
1051         CLKCTRL(am33xx_dcan0_hwmod, AM43XX_CM_PER_DCAN0_CLKCTRL_OFFSET);
1052         CLKCTRL(am33xx_dcan1_hwmod, AM43XX_CM_PER_DCAN1_CLKCTRL_OFFSET);
1053         CLKCTRL(am33xx_elm_hwmod, AM43XX_CM_PER_ELM_CLKCTRL_OFFSET);
1054         CLKCTRL(am33xx_epwmss0_hwmod, AM43XX_CM_PER_EPWMSS0_CLKCTRL_OFFSET);
1055         CLKCTRL(am33xx_epwmss1_hwmod, AM43XX_CM_PER_EPWMSS1_CLKCTRL_OFFSET);
1056         CLKCTRL(am33xx_epwmss2_hwmod, AM43XX_CM_PER_EPWMSS2_CLKCTRL_OFFSET);
1057         CLKCTRL(am33xx_gpio1_hwmod, AM43XX_CM_PER_GPIO1_CLKCTRL_OFFSET);
1058         CLKCTRL(am33xx_gpio2_hwmod, AM43XX_CM_PER_GPIO2_CLKCTRL_OFFSET);
1059         CLKCTRL(am33xx_gpio3_hwmod, AM43XX_CM_PER_GPIO3_CLKCTRL_OFFSET);
1060         CLKCTRL(am33xx_mailbox_hwmod, AM43XX_CM_PER_MAILBOX0_CLKCTRL_OFFSET);
1061         CLKCTRL(am33xx_mcasp0_hwmod, AM43XX_CM_PER_MCASP0_CLKCTRL_OFFSET);
1062         CLKCTRL(am33xx_mcasp1_hwmod, AM43XX_CM_PER_MCASP1_CLKCTRL_OFFSET);
1063         CLKCTRL(am33xx_spi0_hwmod, AM43XX_CM_PER_SPI0_CLKCTRL_OFFSET);
1064         CLKCTRL(am33xx_spi1_hwmod, AM43XX_CM_PER_SPI1_CLKCTRL_OFFSET);
1065         CLKCTRL(am33xx_spinlock_hwmod, AM43XX_CM_PER_SPINLOCK_CLKCTRL_OFFSET);
1066         CLKCTRL(am33xx_timer2_hwmod, AM43XX_CM_PER_TIMER2_CLKCTRL_OFFSET);
1067         CLKCTRL(am33xx_timer3_hwmod, AM43XX_CM_PER_TIMER3_CLKCTRL_OFFSET);
1068         CLKCTRL(am33xx_timer4_hwmod, AM43XX_CM_PER_TIMER4_CLKCTRL_OFFSET);
1069         CLKCTRL(am33xx_timer5_hwmod, AM43XX_CM_PER_TIMER5_CLKCTRL_OFFSET);
1070         CLKCTRL(am33xx_timer6_hwmod, AM43XX_CM_PER_TIMER6_CLKCTRL_OFFSET);
1071         CLKCTRL(am33xx_timer7_hwmod, AM43XX_CM_PER_TIMER7_CLKCTRL_OFFSET);
1072         CLKCTRL(am33xx_smartreflex0_hwmod,
1073                 AM43XX_CM_WKUP_SMARTREFLEX0_CLKCTRL_OFFSET);
1074         CLKCTRL(am33xx_smartreflex1_hwmod,
1075                 AM43XX_CM_WKUP_SMARTREFLEX1_CLKCTRL_OFFSET);
1076         CLKCTRL(am33xx_timer1_hwmod, AM43XX_CM_WKUP_TIMER1_CLKCTRL_OFFSET);
1077         CLKCTRL(am33xx_wd_timer1_hwmod, AM43XX_CM_WKUP_WDT1_CLKCTRL_OFFSET);
1078         CLKCTRL(am33xx_rtc_hwmod, AM43XX_CM_RTC_RTC_CLKCTRL_OFFSET);
1079         CLKCTRL(am33xx_gpmc_hwmod, AM43XX_CM_PER_GPMC_CLKCTRL_OFFSET);
1080         CLKCTRL(am33xx_l4_ls_hwmod, AM43XX_CM_PER_L4LS_CLKCTRL_OFFSET);
1081         CLKCTRL(am33xx_l4_wkup_hwmod, AM43XX_CM_WKUP_L4WKUP_CLKCTRL_OFFSET);
1082         CLKCTRL(am33xx_l3_main_hwmod, AM43XX_CM_PER_L3_CLKCTRL_OFFSET);
1083         CLKCTRL(am33xx_tpcc_hwmod, AM43XX_CM_PER_TPCC_CLKCTRL_OFFSET);
1084         CLKCTRL(am33xx_tptc0_hwmod, AM43XX_CM_PER_TPTC0_CLKCTRL_OFFSET);
1085         CLKCTRL(am33xx_tptc1_hwmod, AM43XX_CM_PER_TPTC1_CLKCTRL_OFFSET);
1086         CLKCTRL(am33xx_tptc2_hwmod, AM43XX_CM_PER_TPTC2_CLKCTRL_OFFSET);
1087         CLKCTRL(am33xx_gfx_hwmod, AM43XX_CM_GFX_GFX_CLKCTRL_OFFSET);
1088         CLKCTRL(am33xx_pruss_hwmod, AM43XX_CM_PER_PRUSS_CLKCTRL_OFFSET);
1089         CLKCTRL(am33xx_mpu_hwmod , AM43XX_CM_MPU_MPU_CLKCTRL_OFFSET);
1090         CLKCTRL(am33xx_l3_instr_hwmod , AM43XX_CM_PER_L3_INSTR_CLKCTRL_OFFSET);
1091         CLKCTRL(am33xx_ocmcram_hwmod , AM43XX_CM_PER_OCMCRAM_CLKCTRL_OFFSET);
1092         CLKCTRL(am33xx_sha0_hwmod , AM43XX_CM_PER_SHA0_CLKCTRL_OFFSET);
1093         CLKCTRL(am33xx_aes0_hwmod , AM43XX_CM_PER_AES0_CLKCTRL_OFFSET);
1094         CLKCTRL(am33xx_rng_hwmod, AM43XX_CM_PER_RNG_CLKCTRL_OFFSET);
1095 }
1096
1097 static void omap_hwmod_am43xx_rst(void)
1098 {
1099         RSTCTRL(am33xx_pruss_hwmod, AM43XX_RM_PER_RSTCTRL_OFFSET);
1100         RSTCTRL(am33xx_gfx_hwmod, AM43XX_RM_GFX_RSTCTRL_OFFSET);
1101         RSTST(am33xx_pruss_hwmod, AM43XX_RM_PER_RSTST_OFFSET);
1102         RSTST(am33xx_gfx_hwmod, AM43XX_RM_GFX_RSTST_OFFSET);
1103 }
1104
1105 void omap_hwmod_am43xx_reg(void)
1106 {
1107         omap_hwmod_am43xx_clkctrl();
1108         omap_hwmod_am43xx_rst();
1109 }