1d2912cb1SThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only 20d619a89SPaul Walmsley /* 30d619a89SPaul Walmsley * omap_hwmod_2xxx_ipblock_data.c - common IP block data for OMAP2xxx 40d619a89SPaul Walmsley * 50d619a89SPaul Walmsley * Copyright (C) 2011 Nokia Corporation 60d619a89SPaul Walmsley * Paul Walmsley 70d619a89SPaul Walmsley */ 82a296c8fSTony Lindgren 9ddd6a9d9STony Lindgren #include <linux/types.h> 10a0e37da2SSuman Anna 112a296c8fSTony Lindgren #include "omap_hwmod.h" 120d619a89SPaul Walmsley #include "omap_hwmod_common_data.h" 13cb48427eSPaul Walmsley #include "cm-regbits-24xx.h" 14cb48427eSPaul Walmsley #include "prm-regbits-24xx.h" 15273b9465SPaul Walmsley #include "wd_timer.h" 160d619a89SPaul Walmsley 171ac6d46eSTomi Valkeinen /* 181ac6d46eSTomi Valkeinen * 'dispc' class 191ac6d46eSTomi Valkeinen * display controller 201ac6d46eSTomi Valkeinen */ 211ac6d46eSTomi Valkeinen 221ac6d46eSTomi Valkeinen static struct omap_hwmod_class_sysconfig omap2_dispc_sysc = { 231ac6d46eSTomi Valkeinen .rev_offs = 0x0000, 241ac6d46eSTomi Valkeinen .sysc_offs = 0x0010, 251ac6d46eSTomi Valkeinen .syss_offs = 0x0014, 261ac6d46eSTomi Valkeinen .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE | 271ac6d46eSTomi Valkeinen SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE), 281ac6d46eSTomi Valkeinen .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | 291ac6d46eSTomi Valkeinen MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART), 301ac6d46eSTomi Valkeinen .sysc_fields = &omap_hwmod_sysc_type1, 311ac6d46eSTomi Valkeinen }; 321ac6d46eSTomi Valkeinen 33*6aeb51c1SArnd Bergmann static struct omap_hwmod_class omap2_dispc_hwmod_class = { 341ac6d46eSTomi Valkeinen .name = "dispc", 351ac6d46eSTomi Valkeinen .sysc = &omap2_dispc_sysc, 361ac6d46eSTomi Valkeinen }; 371ac6d46eSTomi Valkeinen 38273b9465SPaul Walmsley /* OMAP2xxx Timer Common */ 39273b9465SPaul Walmsley static struct omap_hwmod_class_sysconfig omap2xxx_timer_sysc = { 40273b9465SPaul Walmsley .rev_offs = 0x0000, 41273b9465SPaul Walmsley .sysc_offs = 0x0010, 42273b9465SPaul Walmsley .syss_offs = 0x0014, 43273b9465SPaul Walmsley .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_CLOCKACTIVITY | 44273b9465SPaul Walmsley SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET | 45f3a13e72SJon Hunter SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS), 46273b9465SPaul Walmsley .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), 47273b9465SPaul Walmsley .sysc_fields = &omap_hwmod_sysc_type1, 48273b9465SPaul Walmsley }; 49273b9465SPaul Walmsley 50*6aeb51c1SArnd Bergmann static struct omap_hwmod_class omap2xxx_timer_hwmod_class = { 51273b9465SPaul Walmsley .name = "timer", 52273b9465SPaul Walmsley .sysc = &omap2xxx_timer_sysc, 53273b9465SPaul Walmsley }; 54273b9465SPaul Walmsley 55273b9465SPaul Walmsley /* 56273b9465SPaul Walmsley * 'wd_timer' class 57273b9465SPaul Walmsley * 32-bit watchdog upward counter that generates a pulse on the reset pin on 58273b9465SPaul Walmsley * overflow condition 59273b9465SPaul Walmsley */ 60273b9465SPaul Walmsley 61273b9465SPaul Walmsley static struct omap_hwmod_class_sysconfig omap2xxx_wd_timer_sysc = { 62273b9465SPaul Walmsley .rev_offs = 0x0000, 63273b9465SPaul Walmsley .sysc_offs = 0x0010, 64273b9465SPaul Walmsley .syss_offs = 0x0014, 65273b9465SPaul Walmsley .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_SOFTRESET | 66273b9465SPaul Walmsley SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS), 67273b9465SPaul Walmsley .sysc_fields = &omap_hwmod_sysc_type1, 68273b9465SPaul Walmsley }; 69273b9465SPaul Walmsley 70*6aeb51c1SArnd Bergmann static struct omap_hwmod_class omap2xxx_wd_timer_hwmod_class = { 71273b9465SPaul Walmsley .name = "wd_timer", 72273b9465SPaul Walmsley .sysc = &omap2xxx_wd_timer_sysc, 73414e4128SKevin Hilman .pre_shutdown = &omap2_wd_timer_disable, 74414e4128SKevin Hilman .reset = &omap2_wd_timer_reset, 75273b9465SPaul Walmsley }; 76273b9465SPaul Walmsley 77273b9465SPaul Walmsley /* 78273b9465SPaul Walmsley * 'gpio' class 79273b9465SPaul Walmsley * general purpose io module 80273b9465SPaul Walmsley */ 81273b9465SPaul Walmsley static struct omap_hwmod_class_sysconfig omap2xxx_gpio_sysc = { 82273b9465SPaul Walmsley .rev_offs = 0x0000, 83273b9465SPaul Walmsley .sysc_offs = 0x0010, 84273b9465SPaul Walmsley .syss_offs = 0x0014, 85273b9465SPaul Walmsley .sysc_flags = (SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE | 86273b9465SPaul Walmsley SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE | 87273b9465SPaul Walmsley SYSS_HAS_RESET_STATUS), 88273b9465SPaul Walmsley .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), 89273b9465SPaul Walmsley .sysc_fields = &omap_hwmod_sysc_type1, 90273b9465SPaul Walmsley }; 91273b9465SPaul Walmsley 92273b9465SPaul Walmsley struct omap_hwmod_class omap2xxx_gpio_hwmod_class = { 93273b9465SPaul Walmsley .name = "gpio", 94273b9465SPaul Walmsley .sysc = &omap2xxx_gpio_sysc, 95273b9465SPaul Walmsley }; 96273b9465SPaul Walmsley 97273b9465SPaul Walmsley /* 98273b9465SPaul Walmsley * 'mailbox' class 99273b9465SPaul Walmsley * mailbox module allowing communication between the on-chip processors 100273b9465SPaul Walmsley * using a queued mailbox-interrupt mechanism. 101273b9465SPaul Walmsley */ 102273b9465SPaul Walmsley 103273b9465SPaul Walmsley static struct omap_hwmod_class_sysconfig omap2xxx_mailbox_sysc = { 104273b9465SPaul Walmsley .rev_offs = 0x000, 105273b9465SPaul Walmsley .sysc_offs = 0x010, 106273b9465SPaul Walmsley .syss_offs = 0x014, 107273b9465SPaul Walmsley .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE | 108273b9465SPaul Walmsley SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE), 109273b9465SPaul Walmsley .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), 110273b9465SPaul Walmsley .sysc_fields = &omap_hwmod_sysc_type1, 111273b9465SPaul Walmsley }; 112273b9465SPaul Walmsley 113273b9465SPaul Walmsley struct omap_hwmod_class omap2xxx_mailbox_hwmod_class = { 114273b9465SPaul Walmsley .name = "mailbox", 115273b9465SPaul Walmsley .sysc = &omap2xxx_mailbox_sysc, 116273b9465SPaul Walmsley }; 117273b9465SPaul Walmsley 118273b9465SPaul Walmsley /* 119273b9465SPaul Walmsley * 'mcspi' class 120273b9465SPaul Walmsley * multichannel serial port interface (mcspi) / master/slave synchronous serial 121273b9465SPaul Walmsley * bus 122273b9465SPaul Walmsley */ 123273b9465SPaul Walmsley 124273b9465SPaul Walmsley static struct omap_hwmod_class_sysconfig omap2xxx_mcspi_sysc = { 125273b9465SPaul Walmsley .rev_offs = 0x0000, 126273b9465SPaul Walmsley .sysc_offs = 0x0010, 127273b9465SPaul Walmsley .syss_offs = 0x0014, 128273b9465SPaul Walmsley .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE | 129273b9465SPaul Walmsley SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET | 130273b9465SPaul Walmsley SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS), 131273b9465SPaul Walmsley .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), 132273b9465SPaul Walmsley .sysc_fields = &omap_hwmod_sysc_type1, 133273b9465SPaul Walmsley }; 134273b9465SPaul Walmsley 135273b9465SPaul Walmsley struct omap_hwmod_class omap2xxx_mcspi_class = { 136273b9465SPaul Walmsley .name = "mcspi", 137273b9465SPaul Walmsley .sysc = &omap2xxx_mcspi_sysc, 138273b9465SPaul Walmsley }; 139cb48427eSPaul Walmsley 140cb48427eSPaul Walmsley /* 14149484a60SAfzal Mohammed * 'gpmc' class 14249484a60SAfzal Mohammed * general purpose memory controller 14349484a60SAfzal Mohammed */ 14449484a60SAfzal Mohammed 14549484a60SAfzal Mohammed static struct omap_hwmod_class_sysconfig omap2xxx_gpmc_sysc = { 14649484a60SAfzal Mohammed .rev_offs = 0x0000, 14749484a60SAfzal Mohammed .sysc_offs = 0x0010, 14849484a60SAfzal Mohammed .syss_offs = 0x0014, 14949484a60SAfzal Mohammed .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE | 15049484a60SAfzal Mohammed SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS), 15149484a60SAfzal Mohammed .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), 15249484a60SAfzal Mohammed .sysc_fields = &omap_hwmod_sysc_type1, 15349484a60SAfzal Mohammed }; 15449484a60SAfzal Mohammed 15549484a60SAfzal Mohammed static struct omap_hwmod_class omap2xxx_gpmc_hwmod_class = { 15649484a60SAfzal Mohammed .name = "gpmc", 15749484a60SAfzal Mohammed .sysc = &omap2xxx_gpmc_sysc, 15849484a60SAfzal Mohammed }; 15949484a60SAfzal Mohammed 16049484a60SAfzal Mohammed /* 161cb48427eSPaul Walmsley * IP blocks 162cb48427eSPaul Walmsley */ 163cb48427eSPaul Walmsley 164cb48427eSPaul Walmsley /* L3 */ 165cb48427eSPaul Walmsley struct omap_hwmod omap2xxx_l3_main_hwmod = { 166cb48427eSPaul Walmsley .name = "l3_main", 167cb48427eSPaul Walmsley .class = &l3_hwmod_class, 168cb48427eSPaul Walmsley .flags = HWMOD_NO_IDLEST, 169cb48427eSPaul Walmsley }; 170cb48427eSPaul Walmsley 171cb48427eSPaul Walmsley /* L4 CORE */ 172cb48427eSPaul Walmsley struct omap_hwmod omap2xxx_l4_core_hwmod = { 173cb48427eSPaul Walmsley .name = "l4_core", 174cb48427eSPaul Walmsley .class = &l4_hwmod_class, 175cb48427eSPaul Walmsley .flags = HWMOD_NO_IDLEST, 176cb48427eSPaul Walmsley }; 177cb48427eSPaul Walmsley 178cb48427eSPaul Walmsley /* L4 WKUP */ 179cb48427eSPaul Walmsley struct omap_hwmod omap2xxx_l4_wkup_hwmod = { 180cb48427eSPaul Walmsley .name = "l4_wkup", 181cb48427eSPaul Walmsley .class = &l4_hwmod_class, 182cb48427eSPaul Walmsley .flags = HWMOD_NO_IDLEST, 183cb48427eSPaul Walmsley }; 184cb48427eSPaul Walmsley 185cb48427eSPaul Walmsley /* MPU */ 186cb48427eSPaul Walmsley struct omap_hwmod omap2xxx_mpu_hwmod = { 187cb48427eSPaul Walmsley .name = "mpu", 188cb48427eSPaul Walmsley .class = &mpu_hwmod_class, 189cb48427eSPaul Walmsley .main_clk = "mpu_ck", 190cb48427eSPaul Walmsley }; 191cb48427eSPaul Walmsley 192cb48427eSPaul Walmsley /* timer3 */ 193cb48427eSPaul Walmsley struct omap_hwmod omap2xxx_timer3_hwmod = { 194cb48427eSPaul Walmsley .name = "timer3", 195cb48427eSPaul Walmsley .main_clk = "gpt3_fck", 196cb48427eSPaul Walmsley .prcm = { 197cb48427eSPaul Walmsley .omap2 = { 198cb48427eSPaul Walmsley .module_offs = CORE_MOD, 199cb48427eSPaul Walmsley .idlest_reg_id = 1, 200cb48427eSPaul Walmsley .idlest_idle_bit = OMAP24XX_ST_GPT3_SHIFT, 201cb48427eSPaul Walmsley }, 202cb48427eSPaul Walmsley }, 203cb48427eSPaul Walmsley .class = &omap2xxx_timer_hwmod_class, 20410759e82SJon Hunter .flags = HWMOD_SET_DEFAULT_CLOCKACT, 205cb48427eSPaul Walmsley }; 206cb48427eSPaul Walmsley 207cb48427eSPaul Walmsley /* timer4 */ 208cb48427eSPaul Walmsley struct omap_hwmod omap2xxx_timer4_hwmod = { 209cb48427eSPaul Walmsley .name = "timer4", 210cb48427eSPaul Walmsley .main_clk = "gpt4_fck", 211cb48427eSPaul Walmsley .prcm = { 212cb48427eSPaul Walmsley .omap2 = { 213cb48427eSPaul Walmsley .module_offs = CORE_MOD, 214cb48427eSPaul Walmsley .idlest_reg_id = 1, 215cb48427eSPaul Walmsley .idlest_idle_bit = OMAP24XX_ST_GPT4_SHIFT, 216cb48427eSPaul Walmsley }, 217cb48427eSPaul Walmsley }, 218cb48427eSPaul Walmsley .class = &omap2xxx_timer_hwmod_class, 21910759e82SJon Hunter .flags = HWMOD_SET_DEFAULT_CLOCKACT, 220cb48427eSPaul Walmsley }; 221cb48427eSPaul Walmsley 222cb48427eSPaul Walmsley /* timer5 */ 223cb48427eSPaul Walmsley struct omap_hwmod omap2xxx_timer5_hwmod = { 224cb48427eSPaul Walmsley .name = "timer5", 225cb48427eSPaul Walmsley .main_clk = "gpt5_fck", 226cb48427eSPaul Walmsley .prcm = { 227cb48427eSPaul Walmsley .omap2 = { 228cb48427eSPaul Walmsley .module_offs = CORE_MOD, 229cb48427eSPaul Walmsley .idlest_reg_id = 1, 230cb48427eSPaul Walmsley .idlest_idle_bit = OMAP24XX_ST_GPT5_SHIFT, 231cb48427eSPaul Walmsley }, 232cb48427eSPaul Walmsley }, 233cb48427eSPaul Walmsley .class = &omap2xxx_timer_hwmod_class, 23410759e82SJon Hunter .flags = HWMOD_SET_DEFAULT_CLOCKACT, 235cb48427eSPaul Walmsley }; 236cb48427eSPaul Walmsley 237cb48427eSPaul Walmsley /* timer6 */ 238cb48427eSPaul Walmsley struct omap_hwmod omap2xxx_timer6_hwmod = { 239cb48427eSPaul Walmsley .name = "timer6", 240cb48427eSPaul Walmsley .main_clk = "gpt6_fck", 241cb48427eSPaul Walmsley .prcm = { 242cb48427eSPaul Walmsley .omap2 = { 243cb48427eSPaul Walmsley .module_offs = CORE_MOD, 244cb48427eSPaul Walmsley .idlest_reg_id = 1, 245cb48427eSPaul Walmsley .idlest_idle_bit = OMAP24XX_ST_GPT6_SHIFT, 246cb48427eSPaul Walmsley }, 247cb48427eSPaul Walmsley }, 248cb48427eSPaul Walmsley .class = &omap2xxx_timer_hwmod_class, 24910759e82SJon Hunter .flags = HWMOD_SET_DEFAULT_CLOCKACT, 250cb48427eSPaul Walmsley }; 251cb48427eSPaul Walmsley 252cb48427eSPaul Walmsley /* timer7 */ 253cb48427eSPaul Walmsley struct omap_hwmod omap2xxx_timer7_hwmod = { 254cb48427eSPaul Walmsley .name = "timer7", 255cb48427eSPaul Walmsley .main_clk = "gpt7_fck", 256cb48427eSPaul Walmsley .prcm = { 257cb48427eSPaul Walmsley .omap2 = { 258cb48427eSPaul Walmsley .module_offs = CORE_MOD, 259cb48427eSPaul Walmsley .idlest_reg_id = 1, 260cb48427eSPaul Walmsley .idlest_idle_bit = OMAP24XX_ST_GPT7_SHIFT, 261cb48427eSPaul Walmsley }, 262cb48427eSPaul Walmsley }, 263cb48427eSPaul Walmsley .class = &omap2xxx_timer_hwmod_class, 26410759e82SJon Hunter .flags = HWMOD_SET_DEFAULT_CLOCKACT, 265cb48427eSPaul Walmsley }; 266cb48427eSPaul Walmsley 267cb48427eSPaul Walmsley /* timer8 */ 268cb48427eSPaul Walmsley struct omap_hwmod omap2xxx_timer8_hwmod = { 269cb48427eSPaul Walmsley .name = "timer8", 270cb48427eSPaul Walmsley .main_clk = "gpt8_fck", 271cb48427eSPaul Walmsley .prcm = { 272cb48427eSPaul Walmsley .omap2 = { 273cb48427eSPaul Walmsley .module_offs = CORE_MOD, 274cb48427eSPaul Walmsley .idlest_reg_id = 1, 275cb48427eSPaul Walmsley .idlest_idle_bit = OMAP24XX_ST_GPT8_SHIFT, 276cb48427eSPaul Walmsley }, 277cb48427eSPaul Walmsley }, 278cb48427eSPaul Walmsley .class = &omap2xxx_timer_hwmod_class, 27910759e82SJon Hunter .flags = HWMOD_SET_DEFAULT_CLOCKACT, 280cb48427eSPaul Walmsley }; 281cb48427eSPaul Walmsley 282cb48427eSPaul Walmsley /* timer9 */ 283cb48427eSPaul Walmsley struct omap_hwmod omap2xxx_timer9_hwmod = { 284cb48427eSPaul Walmsley .name = "timer9", 285cb48427eSPaul Walmsley .main_clk = "gpt9_fck", 286cb48427eSPaul Walmsley .prcm = { 287cb48427eSPaul Walmsley .omap2 = { 288cb48427eSPaul Walmsley .module_offs = CORE_MOD, 289cb48427eSPaul Walmsley .idlest_reg_id = 1, 290cb48427eSPaul Walmsley .idlest_idle_bit = OMAP24XX_ST_GPT9_SHIFT, 291cb48427eSPaul Walmsley }, 292cb48427eSPaul Walmsley }, 293cb48427eSPaul Walmsley .class = &omap2xxx_timer_hwmod_class, 29410759e82SJon Hunter .flags = HWMOD_SET_DEFAULT_CLOCKACT, 295cb48427eSPaul Walmsley }; 296cb48427eSPaul Walmsley 297cb48427eSPaul Walmsley /* timer10 */ 298cb48427eSPaul Walmsley struct omap_hwmod omap2xxx_timer10_hwmod = { 299cb48427eSPaul Walmsley .name = "timer10", 300cb48427eSPaul Walmsley .main_clk = "gpt10_fck", 301cb48427eSPaul Walmsley .prcm = { 302cb48427eSPaul Walmsley .omap2 = { 303cb48427eSPaul Walmsley .module_offs = CORE_MOD, 304cb48427eSPaul Walmsley .idlest_reg_id = 1, 305cb48427eSPaul Walmsley .idlest_idle_bit = OMAP24XX_ST_GPT10_SHIFT, 306cb48427eSPaul Walmsley }, 307cb48427eSPaul Walmsley }, 308cb48427eSPaul Walmsley .class = &omap2xxx_timer_hwmod_class, 30910759e82SJon Hunter .flags = HWMOD_SET_DEFAULT_CLOCKACT, 310cb48427eSPaul Walmsley }; 311cb48427eSPaul Walmsley 312cb48427eSPaul Walmsley /* timer11 */ 313cb48427eSPaul Walmsley struct omap_hwmod omap2xxx_timer11_hwmod = { 314cb48427eSPaul Walmsley .name = "timer11", 315cb48427eSPaul Walmsley .main_clk = "gpt11_fck", 316cb48427eSPaul Walmsley .prcm = { 317cb48427eSPaul Walmsley .omap2 = { 318cb48427eSPaul Walmsley .module_offs = CORE_MOD, 319cb48427eSPaul Walmsley .idlest_reg_id = 1, 320cb48427eSPaul Walmsley .idlest_idle_bit = OMAP24XX_ST_GPT11_SHIFT, 321cb48427eSPaul Walmsley }, 322cb48427eSPaul Walmsley }, 323cb48427eSPaul Walmsley .class = &omap2xxx_timer_hwmod_class, 32410759e82SJon Hunter .flags = HWMOD_SET_DEFAULT_CLOCKACT, 325cb48427eSPaul Walmsley }; 326cb48427eSPaul Walmsley 327cb48427eSPaul Walmsley /* timer12 */ 328cb48427eSPaul Walmsley struct omap_hwmod omap2xxx_timer12_hwmod = { 329cb48427eSPaul Walmsley .name = "timer12", 330cb48427eSPaul Walmsley .main_clk = "gpt12_fck", 331cb48427eSPaul Walmsley .prcm = { 332cb48427eSPaul Walmsley .omap2 = { 333cb48427eSPaul Walmsley .module_offs = CORE_MOD, 334cb48427eSPaul Walmsley .idlest_reg_id = 1, 335cb48427eSPaul Walmsley .idlest_idle_bit = OMAP24XX_ST_GPT12_SHIFT, 336cb48427eSPaul Walmsley }, 337cb48427eSPaul Walmsley }, 338cb48427eSPaul Walmsley .class = &omap2xxx_timer_hwmod_class, 33910759e82SJon Hunter .flags = HWMOD_SET_DEFAULT_CLOCKACT, 340cb48427eSPaul Walmsley }; 341cb48427eSPaul Walmsley 342cb48427eSPaul Walmsley /* wd_timer2 */ 343cb48427eSPaul Walmsley struct omap_hwmod omap2xxx_wd_timer2_hwmod = { 344cb48427eSPaul Walmsley .name = "wd_timer2", 345cb48427eSPaul Walmsley .class = &omap2xxx_wd_timer_hwmod_class, 346cb48427eSPaul Walmsley .main_clk = "mpu_wdt_fck", 347cb48427eSPaul Walmsley .prcm = { 348cb48427eSPaul Walmsley .omap2 = { 349cb48427eSPaul Walmsley .module_offs = WKUP_MOD, 350cb48427eSPaul Walmsley .idlest_reg_id = 1, 351cb48427eSPaul Walmsley .idlest_idle_bit = OMAP24XX_ST_MPU_WDT_SHIFT, 352cb48427eSPaul Walmsley }, 353cb48427eSPaul Walmsley }, 354cb48427eSPaul Walmsley }; 355cb48427eSPaul Walmsley 356cb48427eSPaul Walmsley /* UART1 */ 357cb48427eSPaul Walmsley 358cb48427eSPaul Walmsley struct omap_hwmod omap2xxx_uart1_hwmod = { 359cb48427eSPaul Walmsley .name = "uart1", 360cb48427eSPaul Walmsley .main_clk = "uart1_fck", 3617dedd346SRajendra Nayak .flags = DEBUG_OMAP2UART1_FLAGS | HWMOD_SWSUP_SIDLE_ACT, 362cb48427eSPaul Walmsley .prcm = { 363cb48427eSPaul Walmsley .omap2 = { 364cb48427eSPaul Walmsley .module_offs = CORE_MOD, 365cb48427eSPaul Walmsley .idlest_reg_id = 1, 366cb48427eSPaul Walmsley .idlest_idle_bit = OMAP24XX_EN_UART1_SHIFT, 367cb48427eSPaul Walmsley }, 368cb48427eSPaul Walmsley }, 369cb48427eSPaul Walmsley .class = &omap2_uart_class, 370cb48427eSPaul Walmsley }; 371cb48427eSPaul Walmsley 372cb48427eSPaul Walmsley /* UART2 */ 373cb48427eSPaul Walmsley 374cb48427eSPaul Walmsley struct omap_hwmod omap2xxx_uart2_hwmod = { 375cb48427eSPaul Walmsley .name = "uart2", 376cb48427eSPaul Walmsley .main_clk = "uart2_fck", 3777dedd346SRajendra Nayak .flags = DEBUG_OMAP2UART2_FLAGS | HWMOD_SWSUP_SIDLE_ACT, 378cb48427eSPaul Walmsley .prcm = { 379cb48427eSPaul Walmsley .omap2 = { 380cb48427eSPaul Walmsley .module_offs = CORE_MOD, 381cb48427eSPaul Walmsley .idlest_reg_id = 1, 382cb48427eSPaul Walmsley .idlest_idle_bit = OMAP24XX_EN_UART2_SHIFT, 383cb48427eSPaul Walmsley }, 384cb48427eSPaul Walmsley }, 385cb48427eSPaul Walmsley .class = &omap2_uart_class, 386cb48427eSPaul Walmsley }; 387cb48427eSPaul Walmsley 388cb48427eSPaul Walmsley /* UART3 */ 389cb48427eSPaul Walmsley 390cb48427eSPaul Walmsley struct omap_hwmod omap2xxx_uart3_hwmod = { 391cb48427eSPaul Walmsley .name = "uart3", 392cb48427eSPaul Walmsley .main_clk = "uart3_fck", 3937dedd346SRajendra Nayak .flags = DEBUG_OMAP2UART3_FLAGS | HWMOD_SWSUP_SIDLE_ACT, 394cb48427eSPaul Walmsley .prcm = { 395cb48427eSPaul Walmsley .omap2 = { 396cb48427eSPaul Walmsley .module_offs = CORE_MOD, 397cb48427eSPaul Walmsley .idlest_reg_id = 2, 398cb48427eSPaul Walmsley .idlest_idle_bit = OMAP24XX_EN_UART3_SHIFT, 399cb48427eSPaul Walmsley }, 400cb48427eSPaul Walmsley }, 401cb48427eSPaul Walmsley .class = &omap2_uart_class, 402cb48427eSPaul Walmsley }; 403cb48427eSPaul Walmsley 404cb48427eSPaul Walmsley /* dss */ 405cb48427eSPaul Walmsley 406cb48427eSPaul Walmsley static struct omap_hwmod_opt_clk dss_opt_clks[] = { 407cb48427eSPaul Walmsley /* 408cb48427eSPaul Walmsley * The DSS HW needs all DSS clocks enabled during reset. The dss_core 409cb48427eSPaul Walmsley * driver does not use these clocks. 410cb48427eSPaul Walmsley */ 411cb48427eSPaul Walmsley { .role = "tv_clk", .clk = "dss_54m_fck" }, 412cb48427eSPaul Walmsley { .role = "sys_clk", .clk = "dss2_fck" }, 413cb48427eSPaul Walmsley }; 414cb48427eSPaul Walmsley 415cb48427eSPaul Walmsley struct omap_hwmod omap2xxx_dss_core_hwmod = { 416cb48427eSPaul Walmsley .name = "dss_core", 417cb48427eSPaul Walmsley .class = &omap2_dss_hwmod_class, 418cb48427eSPaul Walmsley .main_clk = "dss1_fck", /* instead of dss_fck */ 419cb48427eSPaul Walmsley .prcm = { 420cb48427eSPaul Walmsley .omap2 = { 421cb48427eSPaul Walmsley .module_offs = CORE_MOD, 422cb48427eSPaul Walmsley .idlest_reg_id = 1, 423cb48427eSPaul Walmsley }, 424cb48427eSPaul Walmsley }, 425cb48427eSPaul Walmsley .opt_clks = dss_opt_clks, 426cb48427eSPaul Walmsley .opt_clks_cnt = ARRAY_SIZE(dss_opt_clks), 427cb48427eSPaul Walmsley .flags = HWMOD_NO_IDLEST | HWMOD_CONTROL_OPT_CLKS_IN_RESET, 428cb48427eSPaul Walmsley }; 429cb48427eSPaul Walmsley 430cb48427eSPaul Walmsley struct omap_hwmod omap2xxx_dss_dispc_hwmod = { 431cb48427eSPaul Walmsley .name = "dss_dispc", 432cb48427eSPaul Walmsley .class = &omap2_dispc_hwmod_class, 433cb48427eSPaul Walmsley .main_clk = "dss1_fck", 434cb48427eSPaul Walmsley .prcm = { 435cb48427eSPaul Walmsley .omap2 = { 436cb48427eSPaul Walmsley .module_offs = CORE_MOD, 437cb48427eSPaul Walmsley .idlest_reg_id = 1, 438cb48427eSPaul Walmsley }, 439cb48427eSPaul Walmsley }, 440cb48427eSPaul Walmsley .flags = HWMOD_NO_IDLEST, 441b05ef215STony Lindgren .dev_attr = &omap2_3_dss_dispc_dev_attr, 442cb48427eSPaul Walmsley }; 443cb48427eSPaul Walmsley 444cb48427eSPaul Walmsley static struct omap_hwmod_opt_clk dss_rfbi_opt_clks[] = { 445cb48427eSPaul Walmsley { .role = "ick", .clk = "dss_ick" }, 446cb48427eSPaul Walmsley }; 447cb48427eSPaul Walmsley 448cb48427eSPaul Walmsley struct omap_hwmod omap2xxx_dss_rfbi_hwmod = { 449cb48427eSPaul Walmsley .name = "dss_rfbi", 450cb48427eSPaul Walmsley .class = &omap2_rfbi_hwmod_class, 451cb48427eSPaul Walmsley .main_clk = "dss1_fck", 452cb48427eSPaul Walmsley .prcm = { 453cb48427eSPaul Walmsley .omap2 = { 454cb48427eSPaul Walmsley .module_offs = CORE_MOD, 455cb48427eSPaul Walmsley }, 456cb48427eSPaul Walmsley }, 457cb48427eSPaul Walmsley .opt_clks = dss_rfbi_opt_clks, 458cb48427eSPaul Walmsley .opt_clks_cnt = ARRAY_SIZE(dss_rfbi_opt_clks), 459cb48427eSPaul Walmsley .flags = HWMOD_NO_IDLEST, 460cb48427eSPaul Walmsley }; 461cb48427eSPaul Walmsley 462cb48427eSPaul Walmsley struct omap_hwmod omap2xxx_dss_venc_hwmod = { 463cb48427eSPaul Walmsley .name = "dss_venc", 464cb48427eSPaul Walmsley .class = &omap2_venc_hwmod_class, 465cb48427eSPaul Walmsley .main_clk = "dss_54m_fck", 466cb48427eSPaul Walmsley .prcm = { 467cb48427eSPaul Walmsley .omap2 = { 468cb48427eSPaul Walmsley .module_offs = CORE_MOD, 469cb48427eSPaul Walmsley }, 470cb48427eSPaul Walmsley }, 471cb48427eSPaul Walmsley .flags = HWMOD_NO_IDLEST, 472cb48427eSPaul Walmsley }; 473cb48427eSPaul Walmsley 474cb48427eSPaul Walmsley /* gpio1 */ 475cb48427eSPaul Walmsley struct omap_hwmod omap2xxx_gpio1_hwmod = { 476cb48427eSPaul Walmsley .name = "gpio1", 477cb48427eSPaul Walmsley .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET, 478cb48427eSPaul Walmsley .main_clk = "gpios_fck", 479cb48427eSPaul Walmsley .prcm = { 480cb48427eSPaul Walmsley .omap2 = { 481cb48427eSPaul Walmsley .module_offs = WKUP_MOD, 482cb48427eSPaul Walmsley .idlest_reg_id = 1, 483cb48427eSPaul Walmsley .idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT, 484cb48427eSPaul Walmsley }, 485cb48427eSPaul Walmsley }, 486cb48427eSPaul Walmsley .class = &omap2xxx_gpio_hwmod_class, 487cb48427eSPaul Walmsley }; 488cb48427eSPaul Walmsley 489cb48427eSPaul Walmsley /* gpio2 */ 490cb48427eSPaul Walmsley struct omap_hwmod omap2xxx_gpio2_hwmod = { 491cb48427eSPaul Walmsley .name = "gpio2", 492cb48427eSPaul Walmsley .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET, 493cb48427eSPaul Walmsley .main_clk = "gpios_fck", 494cb48427eSPaul Walmsley .prcm = { 495cb48427eSPaul Walmsley .omap2 = { 496cb48427eSPaul Walmsley .module_offs = WKUP_MOD, 497cb48427eSPaul Walmsley .idlest_reg_id = 1, 498cb48427eSPaul Walmsley .idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT, 499cb48427eSPaul Walmsley }, 500cb48427eSPaul Walmsley }, 501cb48427eSPaul Walmsley .class = &omap2xxx_gpio_hwmod_class, 502cb48427eSPaul Walmsley }; 503cb48427eSPaul Walmsley 504cb48427eSPaul Walmsley /* gpio3 */ 505cb48427eSPaul Walmsley struct omap_hwmod omap2xxx_gpio3_hwmod = { 506cb48427eSPaul Walmsley .name = "gpio3", 507cb48427eSPaul Walmsley .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET, 508cb48427eSPaul Walmsley .main_clk = "gpios_fck", 509cb48427eSPaul Walmsley .prcm = { 510cb48427eSPaul Walmsley .omap2 = { 511cb48427eSPaul Walmsley .module_offs = WKUP_MOD, 512cb48427eSPaul Walmsley .idlest_reg_id = 1, 513cb48427eSPaul Walmsley .idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT, 514cb48427eSPaul Walmsley }, 515cb48427eSPaul Walmsley }, 516cb48427eSPaul Walmsley .class = &omap2xxx_gpio_hwmod_class, 517cb48427eSPaul Walmsley }; 518cb48427eSPaul Walmsley 519cb48427eSPaul Walmsley /* gpio4 */ 520cb48427eSPaul Walmsley struct omap_hwmod omap2xxx_gpio4_hwmod = { 521cb48427eSPaul Walmsley .name = "gpio4", 522cb48427eSPaul Walmsley .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET, 523cb48427eSPaul Walmsley .main_clk = "gpios_fck", 524cb48427eSPaul Walmsley .prcm = { 525cb48427eSPaul Walmsley .omap2 = { 526cb48427eSPaul Walmsley .module_offs = WKUP_MOD, 527cb48427eSPaul Walmsley .idlest_reg_id = 1, 528cb48427eSPaul Walmsley .idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT, 529cb48427eSPaul Walmsley }, 530cb48427eSPaul Walmsley }, 531cb48427eSPaul Walmsley .class = &omap2xxx_gpio_hwmod_class, 532cb48427eSPaul Walmsley }; 533cb48427eSPaul Walmsley 534cb48427eSPaul Walmsley /* mcspi1 */ 535cb48427eSPaul Walmsley struct omap_hwmod omap2xxx_mcspi1_hwmod = { 536cb48427eSPaul Walmsley .name = "mcspi1", 537cb48427eSPaul Walmsley .main_clk = "mcspi1_fck", 538cb48427eSPaul Walmsley .prcm = { 539cb48427eSPaul Walmsley .omap2 = { 540cb48427eSPaul Walmsley .module_offs = CORE_MOD, 541cb48427eSPaul Walmsley .idlest_reg_id = 1, 542cb48427eSPaul Walmsley .idlest_idle_bit = OMAP24XX_ST_MCSPI1_SHIFT, 543cb48427eSPaul Walmsley }, 544cb48427eSPaul Walmsley }, 545cb48427eSPaul Walmsley .class = &omap2xxx_mcspi_class, 546cb48427eSPaul Walmsley }; 547cb48427eSPaul Walmsley 548cb48427eSPaul Walmsley /* mcspi2 */ 549cb48427eSPaul Walmsley struct omap_hwmod omap2xxx_mcspi2_hwmod = { 550cb48427eSPaul Walmsley .name = "mcspi2", 551cb48427eSPaul Walmsley .main_clk = "mcspi2_fck", 552cb48427eSPaul Walmsley .prcm = { 553cb48427eSPaul Walmsley .omap2 = { 554cb48427eSPaul Walmsley .module_offs = CORE_MOD, 555cb48427eSPaul Walmsley .idlest_reg_id = 1, 556cb48427eSPaul Walmsley .idlest_idle_bit = OMAP24XX_ST_MCSPI2_SHIFT, 557cb48427eSPaul Walmsley }, 558cb48427eSPaul Walmsley }, 559cb48427eSPaul Walmsley .class = &omap2xxx_mcspi_class, 560cb48427eSPaul Walmsley }; 561c8d82ff6SVaibhav Hiremath 56249484a60SAfzal Mohammed /* gpmc */ 56349484a60SAfzal Mohammed struct omap_hwmod omap2xxx_gpmc_hwmod = { 56449484a60SAfzal Mohammed .name = "gpmc", 56549484a60SAfzal Mohammed .class = &omap2xxx_gpmc_hwmod_class, 56649484a60SAfzal Mohammed .main_clk = "gpmc_fck", 56763aa945bSTony Lindgren /* Skip reset for CONFIG_OMAP_GPMC_DEBUG for bootloader timings */ 56863aa945bSTony Lindgren .flags = HWMOD_NO_IDLEST | DEBUG_OMAP_GPMC_HWMOD_FLAGS, 56949484a60SAfzal Mohammed .prcm = { 57049484a60SAfzal Mohammed .omap2 = { 57149484a60SAfzal Mohammed .module_offs = CORE_MOD, 57249484a60SAfzal Mohammed }, 57349484a60SAfzal Mohammed }, 57449484a60SAfzal Mohammed }; 575e9b0a2fbSPaul Walmsley 576e9b0a2fbSPaul Walmsley /* RNG */ 577e9b0a2fbSPaul Walmsley 578e9b0a2fbSPaul Walmsley static struct omap_hwmod_class_sysconfig omap2_rng_sysc = { 579e9b0a2fbSPaul Walmsley .rev_offs = 0x3c, 580e9b0a2fbSPaul Walmsley .sysc_offs = 0x40, 581e9b0a2fbSPaul Walmsley .syss_offs = 0x44, 582e9b0a2fbSPaul Walmsley .sysc_flags = (SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE | 583e9b0a2fbSPaul Walmsley SYSS_HAS_RESET_STATUS), 584e9b0a2fbSPaul Walmsley .sysc_fields = &omap_hwmod_sysc_type1, 585e9b0a2fbSPaul Walmsley }; 586e9b0a2fbSPaul Walmsley 587e9b0a2fbSPaul Walmsley static struct omap_hwmod_class omap2_rng_hwmod_class = { 588e9b0a2fbSPaul Walmsley .name = "rng", 589e9b0a2fbSPaul Walmsley .sysc = &omap2_rng_sysc, 590e9b0a2fbSPaul Walmsley }; 591e9b0a2fbSPaul Walmsley 592e9b0a2fbSPaul Walmsley struct omap_hwmod omap2xxx_rng_hwmod = { 593e9b0a2fbSPaul Walmsley .name = "rng", 594e9b0a2fbSPaul Walmsley .main_clk = "l4_ck", 595e9b0a2fbSPaul Walmsley .prcm = { 596e9b0a2fbSPaul Walmsley .omap2 = { 597e9b0a2fbSPaul Walmsley .module_offs = CORE_MOD, 598e9b0a2fbSPaul Walmsley .idlest_reg_id = 4, 599e9b0a2fbSPaul Walmsley .idlest_idle_bit = OMAP24XX_ST_RNG_SHIFT, 600e9b0a2fbSPaul Walmsley }, 601e9b0a2fbSPaul Walmsley }, 602e9b0a2fbSPaul Walmsley /* 603e9b0a2fbSPaul Walmsley * XXX The first read from the SYSSTATUS register of the RNG 604e9b0a2fbSPaul Walmsley * after the SYSCONFIG SOFTRESET bit is set triggers an 605e9b0a2fbSPaul Walmsley * imprecise external abort. It's unclear why this happens. 606e9b0a2fbSPaul Walmsley * Until this is analyzed, skip the IP block reset. 607e9b0a2fbSPaul Walmsley */ 608e9b0a2fbSPaul Walmsley .flags = HWMOD_INIT_NO_RESET, 609e9b0a2fbSPaul Walmsley .class = &omap2_rng_hwmod_class, 610e9b0a2fbSPaul Walmsley }; 611e569e994SMark A. Greer 612e569e994SMark A. Greer /* SHAM */ 613e569e994SMark A. Greer 614e569e994SMark A. Greer static struct omap_hwmod_class_sysconfig omap2_sham_sysc = { 615e569e994SMark A. Greer .rev_offs = 0x5c, 616e569e994SMark A. Greer .sysc_offs = 0x60, 617e569e994SMark A. Greer .syss_offs = 0x64, 618e569e994SMark A. Greer .sysc_flags = (SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE | 619e569e994SMark A. Greer SYSS_HAS_RESET_STATUS), 620e569e994SMark A. Greer .sysc_fields = &omap_hwmod_sysc_type1, 621e569e994SMark A. Greer }; 622e569e994SMark A. Greer 623e569e994SMark A. Greer static struct omap_hwmod_class omap2xxx_sham_class = { 624e569e994SMark A. Greer .name = "sham", 625e569e994SMark A. Greer .sysc = &omap2_sham_sysc, 626e569e994SMark A. Greer }; 627e569e994SMark A. Greer 628e569e994SMark A. Greer struct omap_hwmod omap2xxx_sham_hwmod = { 629e569e994SMark A. Greer .name = "sham", 630e569e994SMark A. Greer .main_clk = "l4_ck", 631e569e994SMark A. Greer .prcm = { 632e569e994SMark A. Greer .omap2 = { 633e569e994SMark A. Greer .module_offs = CORE_MOD, 634e569e994SMark A. Greer .idlest_reg_id = 4, 635e569e994SMark A. Greer .idlest_idle_bit = OMAP24XX_ST_SHA_SHIFT, 636e569e994SMark A. Greer }, 637e569e994SMark A. Greer }, 638e569e994SMark A. Greer .class = &omap2xxx_sham_class, 639e569e994SMark A. Greer }; 640660ffd6bSMark A. Greer 641660ffd6bSMark A. Greer /* AES */ 642660ffd6bSMark A. Greer 643660ffd6bSMark A. Greer static struct omap_hwmod_class_sysconfig omap2_aes_sysc = { 644660ffd6bSMark A. Greer .rev_offs = 0x44, 645660ffd6bSMark A. Greer .sysc_offs = 0x48, 646660ffd6bSMark A. Greer .syss_offs = 0x4c, 647660ffd6bSMark A. Greer .sysc_flags = (SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE | 648660ffd6bSMark A. Greer SYSS_HAS_RESET_STATUS), 649660ffd6bSMark A. Greer .sysc_fields = &omap_hwmod_sysc_type1, 650660ffd6bSMark A. Greer }; 651660ffd6bSMark A. Greer 652660ffd6bSMark A. Greer static struct omap_hwmod_class omap2xxx_aes_class = { 653660ffd6bSMark A. Greer .name = "aes", 654660ffd6bSMark A. Greer .sysc = &omap2_aes_sysc, 655660ffd6bSMark A. Greer }; 656660ffd6bSMark A. Greer 657660ffd6bSMark A. Greer struct omap_hwmod omap2xxx_aes_hwmod = { 658660ffd6bSMark A. Greer .name = "aes", 659660ffd6bSMark A. Greer .main_clk = "l4_ck", 660660ffd6bSMark A. Greer .prcm = { 661660ffd6bSMark A. Greer .omap2 = { 662660ffd6bSMark A. Greer .module_offs = CORE_MOD, 663660ffd6bSMark A. Greer .idlest_reg_id = 4, 664660ffd6bSMark A. Greer .idlest_idle_bit = OMAP24XX_ST_AES_SHIFT, 665660ffd6bSMark A. Greer }, 666660ffd6bSMark A. Greer }, 667660ffd6bSMark A. Greer .class = &omap2xxx_aes_class, 668660ffd6bSMark A. Greer }; 669