~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 // SPDX-License-Identifier: GPL-2.0-only
  2 /*
  3  * omap_hwmod_2xxx_ipblock_data.c - common IP block data for OMAP2xxx
  4  *
  5  * Copyright (C) 2011 Nokia Corporation
  6  * Paul Walmsley
  7  */
  8 
  9 #include <linux/types.h>
 10 
 11 #include "omap_hwmod.h"
 12 #include "omap_hwmod_common_data.h"
 13 #include "cm-regbits-24xx.h"
 14 #include "prm-regbits-24xx.h"
 15 #include "wd_timer.h"
 16 
 17 /*
 18  * 'dispc' class
 19  * display controller
 20  */
 21 
 22 static struct omap_hwmod_class_sysconfig omap2_dispc_sysc = {
 23         .rev_offs       = 0x0000,
 24         .sysc_offs      = 0x0010,
 25         .syss_offs      = 0x0014,
 26         .sysc_flags     = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE |
 27                            SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE),
 28         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
 29                            MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
 30         .sysc_fields    = &omap_hwmod_sysc_type1,
 31 };
 32 
 33 static struct omap_hwmod_class omap2_dispc_hwmod_class = {
 34         .name   = "dispc",
 35         .sysc   = &omap2_dispc_sysc,
 36 };
 37 
 38 /* OMAP2xxx Timer Common */
 39 static struct omap_hwmod_class_sysconfig omap2xxx_timer_sysc = {
 40         .rev_offs       = 0x0000,
 41         .sysc_offs      = 0x0010,
 42         .syss_offs      = 0x0014,
 43         .sysc_flags     = (SYSC_HAS_SIDLEMODE | SYSC_HAS_CLOCKACTIVITY |
 44                            SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
 45                            SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS),
 46         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
 47         .sysc_fields    = &omap_hwmod_sysc_type1,
 48 };
 49 
 50 static struct omap_hwmod_class omap2xxx_timer_hwmod_class = {
 51         .name   = "timer",
 52         .sysc   = &omap2xxx_timer_sysc,
 53 };
 54 
 55 /*
 56  * 'wd_timer' class
 57  * 32-bit watchdog upward counter that generates a pulse on the reset pin on
 58  * overflow condition
 59  */
 60 
 61 static struct omap_hwmod_class_sysconfig omap2xxx_wd_timer_sysc = {
 62         .rev_offs       = 0x0000,
 63         .sysc_offs      = 0x0010,
 64         .syss_offs      = 0x0014,
 65         .sysc_flags     = (SYSC_HAS_EMUFREE | SYSC_HAS_SOFTRESET |
 66                            SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS),
 67         .sysc_fields    = &omap_hwmod_sysc_type1,
 68 };
 69 
 70 static struct omap_hwmod_class omap2xxx_wd_timer_hwmod_class = {
 71         .name           = "wd_timer",
 72         .sysc           = &omap2xxx_wd_timer_sysc,
 73         .pre_shutdown   = &omap2_wd_timer_disable,
 74         .reset          = &omap2_wd_timer_reset,
 75 };
 76 
 77 /*
 78  * 'gpio' class
 79  * general purpose io module
 80  */
 81 static struct omap_hwmod_class_sysconfig omap2xxx_gpio_sysc = {
 82         .rev_offs       = 0x0000,
 83         .sysc_offs      = 0x0010,
 84         .syss_offs      = 0x0014,
 85         .sysc_flags     = (SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
 86                            SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
 87                            SYSS_HAS_RESET_STATUS),
 88         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
 89         .sysc_fields    = &omap_hwmod_sysc_type1,
 90 };
 91 
 92 struct omap_hwmod_class omap2xxx_gpio_hwmod_class = {
 93         .name = "gpio",
 94         .sysc = &omap2xxx_gpio_sysc,
 95 };
 96 
 97 /*
 98  * 'mailbox' class
 99  * mailbox module allowing communication between the on-chip processors
100  * using a queued mailbox-interrupt mechanism.
101  */
102 
103 static struct omap_hwmod_class_sysconfig omap2xxx_mailbox_sysc = {
104         .rev_offs       = 0x000,
105         .sysc_offs      = 0x010,
106         .syss_offs      = 0x014,
107         .sysc_flags     = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
108                            SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE),
109         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
110         .sysc_fields    = &omap_hwmod_sysc_type1,
111 };
112 
113 struct omap_hwmod_class omap2xxx_mailbox_hwmod_class = {
114         .name   = "mailbox",
115         .sysc   = &omap2xxx_mailbox_sysc,
116 };
117 
118 /*
119  * 'mcspi' class
120  * multichannel serial port interface (mcspi) / master/slave synchronous serial
121  * bus
122  */
123 
124 static struct omap_hwmod_class_sysconfig omap2xxx_mcspi_sysc = {
125         .rev_offs       = 0x0000,
126         .sysc_offs      = 0x0010,
127         .syss_offs      = 0x0014,
128         .sysc_flags     = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
129                                 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
130                                 SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS),
131         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
132         .sysc_fields    = &omap_hwmod_sysc_type1,
133 };
134 
135 struct omap_hwmod_class omap2xxx_mcspi_class = {
136         .name   = "mcspi",
137         .sysc   = &omap2xxx_mcspi_sysc,
138 };
139 
140 /*
141  * 'gpmc' class
142  * general purpose memory controller
143  */
144 
145 static struct omap_hwmod_class_sysconfig omap2xxx_gpmc_sysc = {
146         .rev_offs       = 0x0000,
147         .sysc_offs      = 0x0010,
148         .syss_offs      = 0x0014,
149         .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE |
150                            SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
151         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
152         .sysc_fields    = &omap_hwmod_sysc_type1,
153 };
154 
155 static struct omap_hwmod_class omap2xxx_gpmc_hwmod_class = {
156         .name   = "gpmc",
157         .sysc   = &omap2xxx_gpmc_sysc,
158 };
159 
160 /*
161  * IP blocks
162  */
163 
164 /* L3 */
165 struct omap_hwmod omap2xxx_l3_main_hwmod = {
166         .name           = "l3_main",
167         .class          = &l3_hwmod_class,
168         .flags          = HWMOD_NO_IDLEST,
169 };
170 
171 /* L4 CORE */
172 struct omap_hwmod omap2xxx_l4_core_hwmod = {
173         .name           = "l4_core",
174         .class          = &l4_hwmod_class,
175         .flags          = HWMOD_NO_IDLEST,
176 };
177 
178 /* L4 WKUP */
179 struct omap_hwmod omap2xxx_l4_wkup_hwmod = {
180         .name           = "l4_wkup",
181         .class          = &l4_hwmod_class,
182         .flags          = HWMOD_NO_IDLEST,
183 };
184 
185 /* MPU */
186 struct omap_hwmod omap2xxx_mpu_hwmod = {
187         .name           = "mpu",
188         .class          = &mpu_hwmod_class,
189         .main_clk       = "mpu_ck",
190 };
191 
192 /* timer3 */
193 struct omap_hwmod omap2xxx_timer3_hwmod = {
194         .name           = "timer3",
195         .main_clk       = "gpt3_fck",
196         .prcm           = {
197                 .omap2 = {
198                         .module_offs = CORE_MOD,
199                         .idlest_reg_id = 1,
200                         .idlest_idle_bit = OMAP24XX_ST_GPT3_SHIFT,
201                 },
202         },
203         .class          = &omap2xxx_timer_hwmod_class,
204         .flags          = HWMOD_SET_DEFAULT_CLOCKACT,
205 };
206 
207 /* timer4 */
208 struct omap_hwmod omap2xxx_timer4_hwmod = {
209         .name           = "timer4",
210         .main_clk       = "gpt4_fck",
211         .prcm           = {
212                 .omap2 = {
213                         .module_offs = CORE_MOD,
214                         .idlest_reg_id = 1,
215                         .idlest_idle_bit = OMAP24XX_ST_GPT4_SHIFT,
216                 },
217         },
218         .class          = &omap2xxx_timer_hwmod_class,
219         .flags          = HWMOD_SET_DEFAULT_CLOCKACT,
220 };
221 
222 /* timer5 */
223 struct omap_hwmod omap2xxx_timer5_hwmod = {
224         .name           = "timer5",
225         .main_clk       = "gpt5_fck",
226         .prcm           = {
227                 .omap2 = {
228                         .module_offs = CORE_MOD,
229                         .idlest_reg_id = 1,
230                         .idlest_idle_bit = OMAP24XX_ST_GPT5_SHIFT,
231                 },
232         },
233         .class          = &omap2xxx_timer_hwmod_class,
234         .flags          = HWMOD_SET_DEFAULT_CLOCKACT,
235 };
236 
237 /* timer6 */
238 struct omap_hwmod omap2xxx_timer6_hwmod = {
239         .name           = "timer6",
240         .main_clk       = "gpt6_fck",
241         .prcm           = {
242                 .omap2 = {
243                         .module_offs = CORE_MOD,
244                         .idlest_reg_id = 1,
245                         .idlest_idle_bit = OMAP24XX_ST_GPT6_SHIFT,
246                 },
247         },
248         .class          = &omap2xxx_timer_hwmod_class,
249         .flags          = HWMOD_SET_DEFAULT_CLOCKACT,
250 };
251 
252 /* timer7 */
253 struct omap_hwmod omap2xxx_timer7_hwmod = {
254         .name           = "timer7",
255         .main_clk       = "gpt7_fck",
256         .prcm           = {
257                 .omap2 = {
258                         .module_offs = CORE_MOD,
259                         .idlest_reg_id = 1,
260                         .idlest_idle_bit = OMAP24XX_ST_GPT7_SHIFT,
261                 },
262         },
263         .class          = &omap2xxx_timer_hwmod_class,
264         .flags          = HWMOD_SET_DEFAULT_CLOCKACT,
265 };
266 
267 /* timer8 */
268 struct omap_hwmod omap2xxx_timer8_hwmod = {
269         .name           = "timer8",
270         .main_clk       = "gpt8_fck",
271         .prcm           = {
272                 .omap2 = {
273                         .module_offs = CORE_MOD,
274                         .idlest_reg_id = 1,
275                         .idlest_idle_bit = OMAP24XX_ST_GPT8_SHIFT,
276                 },
277         },
278         .class          = &omap2xxx_timer_hwmod_class,
279         .flags          = HWMOD_SET_DEFAULT_CLOCKACT,
280 };
281 
282 /* timer9 */
283 struct omap_hwmod omap2xxx_timer9_hwmod = {
284         .name           = "timer9",
285         .main_clk       = "gpt9_fck",
286         .prcm           = {
287                 .omap2 = {
288                         .module_offs = CORE_MOD,
289                         .idlest_reg_id = 1,
290                         .idlest_idle_bit = OMAP24XX_ST_GPT9_SHIFT,
291                 },
292         },
293         .class          = &omap2xxx_timer_hwmod_class,
294         .flags          = HWMOD_SET_DEFAULT_CLOCKACT,
295 };
296 
297 /* timer10 */
298 struct omap_hwmod omap2xxx_timer10_hwmod = {
299         .name           = "timer10",
300         .main_clk       = "gpt10_fck",
301         .prcm           = {
302                 .omap2 = {
303                         .module_offs = CORE_MOD,
304                         .idlest_reg_id = 1,
305                         .idlest_idle_bit = OMAP24XX_ST_GPT10_SHIFT,
306                 },
307         },
308         .class          = &omap2xxx_timer_hwmod_class,
309         .flags          = HWMOD_SET_DEFAULT_CLOCKACT,
310 };
311 
312 /* timer11 */
313 struct omap_hwmod omap2xxx_timer11_hwmod = {
314         .name           = "timer11",
315         .main_clk       = "gpt11_fck",
316         .prcm           = {
317                 .omap2 = {
318                         .module_offs = CORE_MOD,
319                         .idlest_reg_id = 1,
320                         .idlest_idle_bit = OMAP24XX_ST_GPT11_SHIFT,
321                 },
322         },
323         .class          = &omap2xxx_timer_hwmod_class,
324         .flags          = HWMOD_SET_DEFAULT_CLOCKACT,
325 };
326 
327 /* timer12 */
328 struct omap_hwmod omap2xxx_timer12_hwmod = {
329         .name           = "timer12",
330         .main_clk       = "gpt12_fck",
331         .prcm           = {
332                 .omap2 = {
333                         .module_offs = CORE_MOD,
334                         .idlest_reg_id = 1,
335                         .idlest_idle_bit = OMAP24XX_ST_GPT12_SHIFT,
336                 },
337         },
338         .class          = &omap2xxx_timer_hwmod_class,
339         .flags          = HWMOD_SET_DEFAULT_CLOCKACT,
340 };
341 
342 /* wd_timer2 */
343 struct omap_hwmod omap2xxx_wd_timer2_hwmod = {
344         .name           = "wd_timer2",
345         .class          = &omap2xxx_wd_timer_hwmod_class,
346         .main_clk       = "mpu_wdt_fck",
347         .prcm           = {
348                 .omap2 = {
349                         .module_offs = WKUP_MOD,
350                         .idlest_reg_id = 1,
351                         .idlest_idle_bit = OMAP24XX_ST_MPU_WDT_SHIFT,
352                 },
353         },
354 };
355 
356 /* UART1 */
357 
358 struct omap_hwmod omap2xxx_uart1_hwmod = {
359         .name           = "uart1",
360         .main_clk       = "uart1_fck",
361         .flags          = DEBUG_OMAP2UART1_FLAGS | HWMOD_SWSUP_SIDLE_ACT,
362         .prcm           = {
363                 .omap2 = {
364                         .module_offs = CORE_MOD,
365                         .idlest_reg_id = 1,
366                         .idlest_idle_bit = OMAP24XX_EN_UART1_SHIFT,
367                 },
368         },
369         .class          = &omap2_uart_class,
370 };
371 
372 /* UART2 */
373 
374 struct omap_hwmod omap2xxx_uart2_hwmod = {
375         .name           = "uart2",
376         .main_clk       = "uart2_fck",
377         .flags          = DEBUG_OMAP2UART2_FLAGS | HWMOD_SWSUP_SIDLE_ACT,
378         .prcm           = {
379                 .omap2 = {
380                         .module_offs = CORE_MOD,
381                         .idlest_reg_id = 1,
382                         .idlest_idle_bit = OMAP24XX_EN_UART2_SHIFT,
383                 },
384         },
385         .class          = &omap2_uart_class,
386 };
387 
388 /* UART3 */
389 
390 struct omap_hwmod omap2xxx_uart3_hwmod = {
391         .name           = "uart3",
392         .main_clk       = "uart3_fck",
393         .flags          = DEBUG_OMAP2UART3_FLAGS | HWMOD_SWSUP_SIDLE_ACT,
394         .prcm           = {
395                 .omap2 = {
396                         .module_offs = CORE_MOD,
397                         .idlest_reg_id = 2,
398                         .idlest_idle_bit = OMAP24XX_EN_UART3_SHIFT,
399                 },
400         },
401         .class          = &omap2_uart_class,
402 };
403 
404 /* dss */
405 
406 static struct omap_hwmod_opt_clk dss_opt_clks[] = {
407         /*
408          * The DSS HW needs all DSS clocks enabled during reset. The dss_core
409          * driver does not use these clocks.
410          */
411         { .role = "tv_clk", .clk = "dss_54m_fck" },
412         { .role = "sys_clk", .clk = "dss2_fck" },
413 };
414 
415 struct omap_hwmod omap2xxx_dss_core_hwmod = {
416         .name           = "dss_core",
417         .class          = &omap2_dss_hwmod_class,
418         .main_clk       = "dss1_fck", /* instead of dss_fck */
419         .prcm           = {
420                 .omap2 = {
421                         .module_offs = CORE_MOD,
422                         .idlest_reg_id = 1,
423                 },
424         },
425         .opt_clks       = dss_opt_clks,
426         .opt_clks_cnt = ARRAY_SIZE(dss_opt_clks),
427         .flags          = HWMOD_NO_IDLEST | HWMOD_CONTROL_OPT_CLKS_IN_RESET,
428 };
429 
430 struct omap_hwmod omap2xxx_dss_dispc_hwmod = {
431         .name           = "dss_dispc",
432         .class          = &omap2_dispc_hwmod_class,
433         .main_clk       = "dss1_fck",
434         .prcm           = {
435                 .omap2 = {
436                         .module_offs = CORE_MOD,
437                         .idlest_reg_id = 1,
438                 },
439         },
440         .flags          = HWMOD_NO_IDLEST,
441         .dev_attr       = &omap2_3_dss_dispc_dev_attr,
442 };
443 
444 static struct omap_hwmod_opt_clk dss_rfbi_opt_clks[] = {
445         { .role = "ick", .clk = "dss_ick" },
446 };
447 
448 struct omap_hwmod omap2xxx_dss_rfbi_hwmod = {
449         .name           = "dss_rfbi",
450         .class          = &omap2_rfbi_hwmod_class,
451         .main_clk       = "dss1_fck",
452         .prcm           = {
453                 .omap2 = {
454                         .module_offs = CORE_MOD,
455                 },
456         },
457         .opt_clks       = dss_rfbi_opt_clks,
458         .opt_clks_cnt   = ARRAY_SIZE(dss_rfbi_opt_clks),
459         .flags          = HWMOD_NO_IDLEST,
460 };
461 
462 struct omap_hwmod omap2xxx_dss_venc_hwmod = {
463         .name           = "dss_venc",
464         .class          = &omap2_venc_hwmod_class,
465         .main_clk       = "dss_54m_fck",
466         .prcm           = {
467                 .omap2 = {
468                         .module_offs = CORE_MOD,
469                 },
470         },
471         .flags          = HWMOD_NO_IDLEST,
472 };
473 
474 /* gpio1 */
475 struct omap_hwmod omap2xxx_gpio1_hwmod = {
476         .name           = "gpio1",
477         .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
478         .main_clk       = "gpios_fck",
479         .prcm           = {
480                 .omap2 = {
481                         .module_offs = WKUP_MOD,
482                         .idlest_reg_id = 1,
483                         .idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
484                 },
485         },
486         .class          = &omap2xxx_gpio_hwmod_class,
487 };
488 
489 /* gpio2 */
490 struct omap_hwmod omap2xxx_gpio2_hwmod = {
491         .name           = "gpio2",
492         .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
493         .main_clk       = "gpios_fck",
494         .prcm           = {
495                 .omap2 = {
496                         .module_offs = WKUP_MOD,
497                         .idlest_reg_id = 1,
498                         .idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
499                 },
500         },
501         .class          = &omap2xxx_gpio_hwmod_class,
502 };
503 
504 /* gpio3 */
505 struct omap_hwmod omap2xxx_gpio3_hwmod = {
506         .name           = "gpio3",
507         .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
508         .main_clk       = "gpios_fck",
509         .prcm           = {
510                 .omap2 = {
511                         .module_offs = WKUP_MOD,
512                         .idlest_reg_id = 1,
513                         .idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
514                 },
515         },
516         .class          = &omap2xxx_gpio_hwmod_class,
517 };
518 
519 /* gpio4 */
520 struct omap_hwmod omap2xxx_gpio4_hwmod = {
521         .name           = "gpio4",
522         .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
523         .main_clk       = "gpios_fck",
524         .prcm           = {
525                 .omap2 = {
526                         .module_offs = WKUP_MOD,
527                         .idlest_reg_id = 1,
528                         .idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
529                 },
530         },
531         .class          = &omap2xxx_gpio_hwmod_class,
532 };
533 
534 /* mcspi1 */
535 struct omap_hwmod omap2xxx_mcspi1_hwmod = {
536         .name           = "mcspi1",
537         .main_clk       = "mcspi1_fck",
538         .prcm           = {
539                 .omap2 = {
540                         .module_offs = CORE_MOD,
541                         .idlest_reg_id = 1,
542                         .idlest_idle_bit = OMAP24XX_ST_MCSPI1_SHIFT,
543                 },
544         },
545         .class          = &omap2xxx_mcspi_class,
546 };
547 
548 /* mcspi2 */
549 struct omap_hwmod omap2xxx_mcspi2_hwmod = {
550         .name           = "mcspi2",
551         .main_clk       = "mcspi2_fck",
552         .prcm           = {
553                 .omap2 = {
554                         .module_offs = CORE_MOD,
555                         .idlest_reg_id = 1,
556                         .idlest_idle_bit = OMAP24XX_ST_MCSPI2_SHIFT,
557                 },
558         },
559         .class          = &omap2xxx_mcspi_class,
560 };
561 
562 /* gpmc */
563 struct omap_hwmod omap2xxx_gpmc_hwmod = {
564         .name           = "gpmc",
565         .class          = &omap2xxx_gpmc_hwmod_class,
566         .main_clk       = "gpmc_fck",
567         /* Skip reset for CONFIG_OMAP_GPMC_DEBUG for bootloader timings */
568         .flags          = HWMOD_NO_IDLEST | DEBUG_OMAP_GPMC_HWMOD_FLAGS,
569         .prcm           = {
570                 .omap2  = {
571                         .module_offs = CORE_MOD,
572                 },
573         },
574 };
575 
576 /* RNG */
577 
578 static struct omap_hwmod_class_sysconfig omap2_rng_sysc = {
579         .rev_offs       = 0x3c,
580         .sysc_offs      = 0x40,
581         .syss_offs      = 0x44,
582         .sysc_flags     = (SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
583                            SYSS_HAS_RESET_STATUS),
584         .sysc_fields    = &omap_hwmod_sysc_type1,
585 };
586 
587 static struct omap_hwmod_class omap2_rng_hwmod_class = {
588         .name           = "rng",
589         .sysc           = &omap2_rng_sysc,
590 };
591 
592 struct omap_hwmod omap2xxx_rng_hwmod = {
593         .name           = "rng",
594         .main_clk       = "l4_ck",
595         .prcm           = {
596                 .omap2 = {
597                         .module_offs = CORE_MOD,
598                         .idlest_reg_id = 4,
599                         .idlest_idle_bit = OMAP24XX_ST_RNG_SHIFT,
600                 },
601         },
602         /*
603          * XXX The first read from the SYSSTATUS register of the RNG
604          * after the SYSCONFIG SOFTRESET bit is set triggers an
605          * imprecise external abort.  It's unclear why this happens.
606          * Until this is analyzed, skip the IP block reset.
607          */
608         .flags          = HWMOD_INIT_NO_RESET,
609         .class          = &omap2_rng_hwmod_class,
610 };
611 
612 /* SHAM */
613 
614 static struct omap_hwmod_class_sysconfig omap2_sham_sysc = {
615         .rev_offs       = 0x5c,
616         .sysc_offs      = 0x60,
617         .syss_offs      = 0x64,
618         .sysc_flags     = (SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
619                            SYSS_HAS_RESET_STATUS),
620         .sysc_fields    = &omap_hwmod_sysc_type1,
621 };
622 
623 static struct omap_hwmod_class omap2xxx_sham_class = {
624         .name   = "sham",
625         .sysc   = &omap2_sham_sysc,
626 };
627 
628 struct omap_hwmod omap2xxx_sham_hwmod = {
629         .name           = "sham",
630         .main_clk       = "l4_ck",
631         .prcm           = {
632                 .omap2 = {
633                         .module_offs = CORE_MOD,
634                         .idlest_reg_id = 4,
635                         .idlest_idle_bit = OMAP24XX_ST_SHA_SHIFT,
636                 },
637         },
638         .class          = &omap2xxx_sham_class,
639 };
640 
641 /* AES */
642 
643 static struct omap_hwmod_class_sysconfig omap2_aes_sysc = {
644         .rev_offs       = 0x44,
645         .sysc_offs      = 0x48,
646         .syss_offs      = 0x4c,
647         .sysc_flags     = (SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
648                            SYSS_HAS_RESET_STATUS),
649         .sysc_fields    = &omap_hwmod_sysc_type1,
650 };
651 
652 static struct omap_hwmod_class omap2xxx_aes_class = {
653         .name   = "aes",
654         .sysc   = &omap2_aes_sysc,
655 };
656 
657 struct omap_hwmod omap2xxx_aes_hwmod = {
658         .name           = "aes",
659         .main_clk       = "l4_ck",
660         .prcm           = {
661                 .omap2 = {
662                         .module_offs = CORE_MOD,
663                         .idlest_reg_id = 4,
664                         .idlest_idle_bit = OMAP24XX_ST_AES_SHIFT,
665                 },
666         },
667         .class          = &omap2xxx_aes_class,
668 };
669 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php