cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

omap_hwmod_2xxx_ipblock_data.c (15250B)


      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
     22static 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
     33struct omap_hwmod_class omap2_dispc_hwmod_class = {
     34	.name	= "dispc",
     35	.sysc	= &omap2_dispc_sysc,
     36};
     37
     38/* OMAP2xxx Timer Common */
     39static 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
     50struct 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
     61static 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
     70struct 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 */
     81static 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
     92struct 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
    103static 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
    113struct 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
    124static 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
    135struct 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
    145static 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
    155static 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 */
    165struct 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 */
    172struct 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 */
    179struct omap_hwmod omap2xxx_l4_wkup_hwmod = {
    180	.name		= "l4_wkup",
    181	.class		= &l4_hwmod_class,
    182	.flags		= HWMOD_NO_IDLEST,
    183};
    184
    185/* MPU */
    186struct omap_hwmod omap2xxx_mpu_hwmod = {
    187	.name		= "mpu",
    188	.class		= &mpu_hwmod_class,
    189	.main_clk	= "mpu_ck",
    190};
    191
    192/* IVA2 */
    193struct omap_hwmod omap2xxx_iva_hwmod = {
    194	.name		= "iva",
    195	.class		= &iva_hwmod_class,
    196};
    197
    198/* timer3 */
    199struct omap_hwmod omap2xxx_timer3_hwmod = {
    200	.name		= "timer3",
    201	.main_clk	= "gpt3_fck",
    202	.prcm		= {
    203		.omap2 = {
    204			.module_offs = CORE_MOD,
    205			.idlest_reg_id = 1,
    206			.idlest_idle_bit = OMAP24XX_ST_GPT3_SHIFT,
    207		},
    208	},
    209	.class		= &omap2xxx_timer_hwmod_class,
    210	.flags          = HWMOD_SET_DEFAULT_CLOCKACT,
    211};
    212
    213/* timer4 */
    214struct omap_hwmod omap2xxx_timer4_hwmod = {
    215	.name		= "timer4",
    216	.main_clk	= "gpt4_fck",
    217	.prcm		= {
    218		.omap2 = {
    219			.module_offs = CORE_MOD,
    220			.idlest_reg_id = 1,
    221			.idlest_idle_bit = OMAP24XX_ST_GPT4_SHIFT,
    222		},
    223	},
    224	.class		= &omap2xxx_timer_hwmod_class,
    225	.flags          = HWMOD_SET_DEFAULT_CLOCKACT,
    226};
    227
    228/* timer5 */
    229struct omap_hwmod omap2xxx_timer5_hwmod = {
    230	.name		= "timer5",
    231	.main_clk	= "gpt5_fck",
    232	.prcm		= {
    233		.omap2 = {
    234			.module_offs = CORE_MOD,
    235			.idlest_reg_id = 1,
    236			.idlest_idle_bit = OMAP24XX_ST_GPT5_SHIFT,
    237		},
    238	},
    239	.class		= &omap2xxx_timer_hwmod_class,
    240	.flags          = HWMOD_SET_DEFAULT_CLOCKACT,
    241};
    242
    243/* timer6 */
    244struct omap_hwmod omap2xxx_timer6_hwmod = {
    245	.name		= "timer6",
    246	.main_clk	= "gpt6_fck",
    247	.prcm		= {
    248		.omap2 = {
    249			.module_offs = CORE_MOD,
    250			.idlest_reg_id = 1,
    251			.idlest_idle_bit = OMAP24XX_ST_GPT6_SHIFT,
    252		},
    253	},
    254	.class		= &omap2xxx_timer_hwmod_class,
    255	.flags          = HWMOD_SET_DEFAULT_CLOCKACT,
    256};
    257
    258/* timer7 */
    259struct omap_hwmod omap2xxx_timer7_hwmod = {
    260	.name		= "timer7",
    261	.main_clk	= "gpt7_fck",
    262	.prcm		= {
    263		.omap2 = {
    264			.module_offs = CORE_MOD,
    265			.idlest_reg_id = 1,
    266			.idlest_idle_bit = OMAP24XX_ST_GPT7_SHIFT,
    267		},
    268	},
    269	.class		= &omap2xxx_timer_hwmod_class,
    270	.flags          = HWMOD_SET_DEFAULT_CLOCKACT,
    271};
    272
    273/* timer8 */
    274struct omap_hwmod omap2xxx_timer8_hwmod = {
    275	.name		= "timer8",
    276	.main_clk	= "gpt8_fck",
    277	.prcm		= {
    278		.omap2 = {
    279			.module_offs = CORE_MOD,
    280			.idlest_reg_id = 1,
    281			.idlest_idle_bit = OMAP24XX_ST_GPT8_SHIFT,
    282		},
    283	},
    284	.class		= &omap2xxx_timer_hwmod_class,
    285	.flags          = HWMOD_SET_DEFAULT_CLOCKACT,
    286};
    287
    288/* timer9 */
    289struct omap_hwmod omap2xxx_timer9_hwmod = {
    290	.name		= "timer9",
    291	.main_clk	= "gpt9_fck",
    292	.prcm		= {
    293		.omap2 = {
    294			.module_offs = CORE_MOD,
    295			.idlest_reg_id = 1,
    296			.idlest_idle_bit = OMAP24XX_ST_GPT9_SHIFT,
    297		},
    298	},
    299	.class		= &omap2xxx_timer_hwmod_class,
    300	.flags          = HWMOD_SET_DEFAULT_CLOCKACT,
    301};
    302
    303/* timer10 */
    304struct omap_hwmod omap2xxx_timer10_hwmod = {
    305	.name		= "timer10",
    306	.main_clk	= "gpt10_fck",
    307	.prcm		= {
    308		.omap2 = {
    309			.module_offs = CORE_MOD,
    310			.idlest_reg_id = 1,
    311			.idlest_idle_bit = OMAP24XX_ST_GPT10_SHIFT,
    312		},
    313	},
    314	.class		= &omap2xxx_timer_hwmod_class,
    315	.flags          = HWMOD_SET_DEFAULT_CLOCKACT,
    316};
    317
    318/* timer11 */
    319struct omap_hwmod omap2xxx_timer11_hwmod = {
    320	.name		= "timer11",
    321	.main_clk	= "gpt11_fck",
    322	.prcm		= {
    323		.omap2 = {
    324			.module_offs = CORE_MOD,
    325			.idlest_reg_id = 1,
    326			.idlest_idle_bit = OMAP24XX_ST_GPT11_SHIFT,
    327		},
    328	},
    329	.class		= &omap2xxx_timer_hwmod_class,
    330	.flags          = HWMOD_SET_DEFAULT_CLOCKACT,
    331};
    332
    333/* timer12 */
    334struct omap_hwmod omap2xxx_timer12_hwmod = {
    335	.name		= "timer12",
    336	.main_clk	= "gpt12_fck",
    337	.prcm		= {
    338		.omap2 = {
    339			.module_offs = CORE_MOD,
    340			.idlest_reg_id = 1,
    341			.idlest_idle_bit = OMAP24XX_ST_GPT12_SHIFT,
    342		},
    343	},
    344	.class		= &omap2xxx_timer_hwmod_class,
    345	.flags          = HWMOD_SET_DEFAULT_CLOCKACT,
    346};
    347
    348/* wd_timer2 */
    349struct omap_hwmod omap2xxx_wd_timer2_hwmod = {
    350	.name		= "wd_timer2",
    351	.class		= &omap2xxx_wd_timer_hwmod_class,
    352	.main_clk	= "mpu_wdt_fck",
    353	.prcm		= {
    354		.omap2 = {
    355			.module_offs = WKUP_MOD,
    356			.idlest_reg_id = 1,
    357			.idlest_idle_bit = OMAP24XX_ST_MPU_WDT_SHIFT,
    358		},
    359	},
    360};
    361
    362/* UART1 */
    363
    364struct omap_hwmod omap2xxx_uart1_hwmod = {
    365	.name		= "uart1",
    366	.main_clk	= "uart1_fck",
    367	.flags		= DEBUG_OMAP2UART1_FLAGS | HWMOD_SWSUP_SIDLE_ACT,
    368	.prcm		= {
    369		.omap2 = {
    370			.module_offs = CORE_MOD,
    371			.idlest_reg_id = 1,
    372			.idlest_idle_bit = OMAP24XX_EN_UART1_SHIFT,
    373		},
    374	},
    375	.class		= &omap2_uart_class,
    376};
    377
    378/* UART2 */
    379
    380struct omap_hwmod omap2xxx_uart2_hwmod = {
    381	.name		= "uart2",
    382	.main_clk	= "uart2_fck",
    383	.flags		= DEBUG_OMAP2UART2_FLAGS | HWMOD_SWSUP_SIDLE_ACT,
    384	.prcm		= {
    385		.omap2 = {
    386			.module_offs = CORE_MOD,
    387			.idlest_reg_id = 1,
    388			.idlest_idle_bit = OMAP24XX_EN_UART2_SHIFT,
    389		},
    390	},
    391	.class		= &omap2_uart_class,
    392};
    393
    394/* UART3 */
    395
    396struct omap_hwmod omap2xxx_uart3_hwmod = {
    397	.name		= "uart3",
    398	.main_clk	= "uart3_fck",
    399	.flags		= DEBUG_OMAP2UART3_FLAGS | HWMOD_SWSUP_SIDLE_ACT,
    400	.prcm		= {
    401		.omap2 = {
    402			.module_offs = CORE_MOD,
    403			.idlest_reg_id = 2,
    404			.idlest_idle_bit = OMAP24XX_EN_UART3_SHIFT,
    405		},
    406	},
    407	.class		= &omap2_uart_class,
    408};
    409
    410/* dss */
    411
    412static struct omap_hwmod_opt_clk dss_opt_clks[] = {
    413	/*
    414	 * The DSS HW needs all DSS clocks enabled during reset. The dss_core
    415	 * driver does not use these clocks.
    416	 */
    417	{ .role = "tv_clk", .clk = "dss_54m_fck" },
    418	{ .role = "sys_clk", .clk = "dss2_fck" },
    419};
    420
    421struct omap_hwmod omap2xxx_dss_core_hwmod = {
    422	.name		= "dss_core",
    423	.class		= &omap2_dss_hwmod_class,
    424	.main_clk	= "dss1_fck", /* instead of dss_fck */
    425	.prcm		= {
    426		.omap2 = {
    427			.module_offs = CORE_MOD,
    428			.idlest_reg_id = 1,
    429		},
    430	},
    431	.opt_clks	= dss_opt_clks,
    432	.opt_clks_cnt = ARRAY_SIZE(dss_opt_clks),
    433	.flags		= HWMOD_NO_IDLEST | HWMOD_CONTROL_OPT_CLKS_IN_RESET,
    434};
    435
    436struct omap_hwmod omap2xxx_dss_dispc_hwmod = {
    437	.name		= "dss_dispc",
    438	.class		= &omap2_dispc_hwmod_class,
    439	.main_clk	= "dss1_fck",
    440	.prcm		= {
    441		.omap2 = {
    442			.module_offs = CORE_MOD,
    443			.idlest_reg_id = 1,
    444		},
    445	},
    446	.flags		= HWMOD_NO_IDLEST,
    447	.dev_attr	= &omap2_3_dss_dispc_dev_attr,
    448};
    449
    450static struct omap_hwmod_opt_clk dss_rfbi_opt_clks[] = {
    451	{ .role = "ick", .clk = "dss_ick" },
    452};
    453
    454struct omap_hwmod omap2xxx_dss_rfbi_hwmod = {
    455	.name		= "dss_rfbi",
    456	.class		= &omap2_rfbi_hwmod_class,
    457	.main_clk	= "dss1_fck",
    458	.prcm		= {
    459		.omap2 = {
    460			.module_offs = CORE_MOD,
    461		},
    462	},
    463	.opt_clks	= dss_rfbi_opt_clks,
    464	.opt_clks_cnt	= ARRAY_SIZE(dss_rfbi_opt_clks),
    465	.flags		= HWMOD_NO_IDLEST,
    466};
    467
    468struct omap_hwmod omap2xxx_dss_venc_hwmod = {
    469	.name		= "dss_venc",
    470	.class		= &omap2_venc_hwmod_class,
    471	.main_clk	= "dss_54m_fck",
    472	.prcm		= {
    473		.omap2 = {
    474			.module_offs = CORE_MOD,
    475		},
    476	},
    477	.flags		= HWMOD_NO_IDLEST,
    478};
    479
    480/* gpio1 */
    481struct omap_hwmod omap2xxx_gpio1_hwmod = {
    482	.name		= "gpio1",
    483	.flags		= HWMOD_CONTROL_OPT_CLKS_IN_RESET,
    484	.main_clk	= "gpios_fck",
    485	.prcm		= {
    486		.omap2 = {
    487			.module_offs = WKUP_MOD,
    488			.idlest_reg_id = 1,
    489			.idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
    490		},
    491	},
    492	.class		= &omap2xxx_gpio_hwmod_class,
    493};
    494
    495/* gpio2 */
    496struct omap_hwmod omap2xxx_gpio2_hwmod = {
    497	.name		= "gpio2",
    498	.flags		= HWMOD_CONTROL_OPT_CLKS_IN_RESET,
    499	.main_clk	= "gpios_fck",
    500	.prcm		= {
    501		.omap2 = {
    502			.module_offs = WKUP_MOD,
    503			.idlest_reg_id = 1,
    504			.idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
    505		},
    506	},
    507	.class		= &omap2xxx_gpio_hwmod_class,
    508};
    509
    510/* gpio3 */
    511struct omap_hwmod omap2xxx_gpio3_hwmod = {
    512	.name		= "gpio3",
    513	.flags		= HWMOD_CONTROL_OPT_CLKS_IN_RESET,
    514	.main_clk	= "gpios_fck",
    515	.prcm		= {
    516		.omap2 = {
    517			.module_offs = WKUP_MOD,
    518			.idlest_reg_id = 1,
    519			.idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
    520		},
    521	},
    522	.class		= &omap2xxx_gpio_hwmod_class,
    523};
    524
    525/* gpio4 */
    526struct omap_hwmod omap2xxx_gpio4_hwmod = {
    527	.name		= "gpio4",
    528	.flags		= HWMOD_CONTROL_OPT_CLKS_IN_RESET,
    529	.main_clk	= "gpios_fck",
    530	.prcm		= {
    531		.omap2 = {
    532			.module_offs = WKUP_MOD,
    533			.idlest_reg_id = 1,
    534			.idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
    535		},
    536	},
    537	.class		= &omap2xxx_gpio_hwmod_class,
    538};
    539
    540/* mcspi1 */
    541struct omap_hwmod omap2xxx_mcspi1_hwmod = {
    542	.name		= "mcspi1",
    543	.main_clk	= "mcspi1_fck",
    544	.prcm		= {
    545		.omap2 = {
    546			.module_offs = CORE_MOD,
    547			.idlest_reg_id = 1,
    548			.idlest_idle_bit = OMAP24XX_ST_MCSPI1_SHIFT,
    549		},
    550	},
    551	.class		= &omap2xxx_mcspi_class,
    552};
    553
    554/* mcspi2 */
    555struct omap_hwmod omap2xxx_mcspi2_hwmod = {
    556	.name		= "mcspi2",
    557	.main_clk	= "mcspi2_fck",
    558	.prcm		= {
    559		.omap2 = {
    560			.module_offs = CORE_MOD,
    561			.idlest_reg_id = 1,
    562			.idlest_idle_bit = OMAP24XX_ST_MCSPI2_SHIFT,
    563		},
    564	},
    565	.class		= &omap2xxx_mcspi_class,
    566};
    567
    568/* gpmc */
    569struct omap_hwmod omap2xxx_gpmc_hwmod = {
    570	.name		= "gpmc",
    571	.class		= &omap2xxx_gpmc_hwmod_class,
    572	.main_clk	= "gpmc_fck",
    573	/* Skip reset for CONFIG_OMAP_GPMC_DEBUG for bootloader timings */
    574	.flags		= HWMOD_NO_IDLEST | DEBUG_OMAP_GPMC_HWMOD_FLAGS,
    575	.prcm		= {
    576		.omap2	= {
    577			.module_offs = CORE_MOD,
    578		},
    579	},
    580};
    581
    582/* RNG */
    583
    584static struct omap_hwmod_class_sysconfig omap2_rng_sysc = {
    585	.rev_offs	= 0x3c,
    586	.sysc_offs	= 0x40,
    587	.syss_offs	= 0x44,
    588	.sysc_flags	= (SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
    589			   SYSS_HAS_RESET_STATUS),
    590	.sysc_fields	= &omap_hwmod_sysc_type1,
    591};
    592
    593static struct omap_hwmod_class omap2_rng_hwmod_class = {
    594	.name		= "rng",
    595	.sysc		= &omap2_rng_sysc,
    596};
    597
    598struct omap_hwmod omap2xxx_rng_hwmod = {
    599	.name		= "rng",
    600	.main_clk	= "l4_ck",
    601	.prcm		= {
    602		.omap2 = {
    603			.module_offs = CORE_MOD,
    604			.idlest_reg_id = 4,
    605			.idlest_idle_bit = OMAP24XX_ST_RNG_SHIFT,
    606		},
    607	},
    608	/*
    609	 * XXX The first read from the SYSSTATUS register of the RNG
    610	 * after the SYSCONFIG SOFTRESET bit is set triggers an
    611	 * imprecise external abort.  It's unclear why this happens.
    612	 * Until this is analyzed, skip the IP block reset.
    613	 */
    614	.flags		= HWMOD_INIT_NO_RESET,
    615	.class		= &omap2_rng_hwmod_class,
    616};
    617
    618/* SHAM */
    619
    620static struct omap_hwmod_class_sysconfig omap2_sham_sysc = {
    621	.rev_offs	= 0x5c,
    622	.sysc_offs	= 0x60,
    623	.syss_offs	= 0x64,
    624	.sysc_flags	= (SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
    625			   SYSS_HAS_RESET_STATUS),
    626	.sysc_fields	= &omap_hwmod_sysc_type1,
    627};
    628
    629static struct omap_hwmod_class omap2xxx_sham_class = {
    630	.name	= "sham",
    631	.sysc	= &omap2_sham_sysc,
    632};
    633
    634struct omap_hwmod omap2xxx_sham_hwmod = {
    635	.name		= "sham",
    636	.main_clk	= "l4_ck",
    637	.prcm		= {
    638		.omap2 = {
    639			.module_offs = CORE_MOD,
    640			.idlest_reg_id = 4,
    641			.idlest_idle_bit = OMAP24XX_ST_SHA_SHIFT,
    642		},
    643	},
    644	.class		= &omap2xxx_sham_class,
    645};
    646
    647/* AES */
    648
    649static struct omap_hwmod_class_sysconfig omap2_aes_sysc = {
    650	.rev_offs	= 0x44,
    651	.sysc_offs	= 0x48,
    652	.syss_offs	= 0x4c,
    653	.sysc_flags	= (SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
    654			   SYSS_HAS_RESET_STATUS),
    655	.sysc_fields	= &omap_hwmod_sysc_type1,
    656};
    657
    658static struct omap_hwmod_class omap2xxx_aes_class = {
    659	.name	= "aes",
    660	.sysc	= &omap2_aes_sysc,
    661};
    662
    663struct omap_hwmod omap2xxx_aes_hwmod = {
    664	.name		= "aes",
    665	.main_clk	= "l4_ck",
    666	.prcm		= {
    667		.omap2 = {
    668			.module_offs = CORE_MOD,
    669			.idlest_reg_id = 4,
    670			.idlest_idle_bit = OMAP24XX_ST_AES_SHIFT,
    671		},
    672	},
    673	.class		= &omap2xxx_aes_class,
    674};