1*52e6676eSThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only 24d38bd12STony Lindgren /* 34d38bd12STony Lindgren * DM81xx hwmod data. 44d38bd12STony Lindgren * 5a784e589SAlexander A. Klimov * Copyright (C) 2010 Texas Instruments, Inc. - https://www.ti.com/ 64d38bd12STony Lindgren * Copyright (C) 2013 SKTB SKiT, http://www.skitlab.ru/ 74d38bd12STony Lindgren */ 84d38bd12STony Lindgren 9ddd6a9d9STony Lindgren #include <linux/types.h> 10ddd6a9d9STony Lindgren 114d38bd12STony Lindgren #include <linux/platform_data/hsmmc-omap.h> 124d38bd12STony Lindgren 134d38bd12STony Lindgren #include "omap_hwmod_common_data.h" 144d38bd12STony Lindgren #include "cm81xx.h" 154d38bd12STony Lindgren #include "ti81xx.h" 164d38bd12STony Lindgren #include "wd_timer.h" 174d38bd12STony Lindgren 184d38bd12STony Lindgren /* 194d38bd12STony Lindgren * DM816X hardware modules integration data 204d38bd12STony Lindgren * 214d38bd12STony Lindgren * Note: This is incomplete and at present, not generated from h/w database. 224d38bd12STony Lindgren */ 234d38bd12STony Lindgren 244d38bd12STony Lindgren /* 257e1b11d1STony Lindgren * Common alwon .clkctrl_offs from dm814x TRM "Table 2-278. CM_ALWON REGISTERS" 267e1b11d1STony Lindgren * also dm816x TRM 18.7.17 CM_ALWON device register values minus 0x1400. 274d38bd12STony Lindgren */ 287e1b11d1STony Lindgren #define DM81XX_CM_ALWON_MCASP0_CLKCTRL 0x140 297e1b11d1STony Lindgren #define DM81XX_CM_ALWON_MCASP1_CLKCTRL 0x144 307e1b11d1STony Lindgren #define DM81XX_CM_ALWON_MCASP2_CLKCTRL 0x148 317e1b11d1STony Lindgren #define DM81XX_CM_ALWON_MCBSP_CLKCTRL 0x14c 327e1b11d1STony Lindgren #define DM81XX_CM_ALWON_UART_0_CLKCTRL 0x150 337e1b11d1STony Lindgren #define DM81XX_CM_ALWON_UART_1_CLKCTRL 0x154 347e1b11d1STony Lindgren #define DM81XX_CM_ALWON_UART_2_CLKCTRL 0x158 357e1b11d1STony Lindgren #define DM81XX_CM_ALWON_GPIO_0_CLKCTRL 0x15c 367e1b11d1STony Lindgren #define DM81XX_CM_ALWON_GPIO_1_CLKCTRL 0x160 377e1b11d1STony Lindgren #define DM81XX_CM_ALWON_I2C_0_CLKCTRL 0x164 387e1b11d1STony Lindgren #define DM81XX_CM_ALWON_I2C_1_CLKCTRL 0x168 397e1b11d1STony Lindgren #define DM81XX_CM_ALWON_WDTIMER_CLKCTRL 0x18c 407e1b11d1STony Lindgren #define DM81XX_CM_ALWON_SPI_CLKCTRL 0x190 417e1b11d1STony Lindgren #define DM81XX_CM_ALWON_MAILBOX_CLKCTRL 0x194 427e1b11d1STony Lindgren #define DM81XX_CM_ALWON_SPINBOX_CLKCTRL 0x198 437e1b11d1STony Lindgren #define DM81XX_CM_ALWON_MMUDATA_CLKCTRL 0x19c 447e1b11d1STony Lindgren #define DM81XX_CM_ALWON_MMUCFG_CLKCTRL 0x1a8 457e1b11d1STony Lindgren #define DM81XX_CM_ALWON_CONTROL_CLKCTRL 0x1c4 467e1b11d1STony Lindgren #define DM81XX_CM_ALWON_GPMC_CLKCTRL 0x1d0 477e1b11d1STony Lindgren #define DM81XX_CM_ALWON_ETHERNET_0_CLKCTRL 0x1d4 487e1b11d1STony Lindgren #define DM81XX_CM_ALWON_L3_CLKCTRL 0x1e4 497e1b11d1STony Lindgren #define DM81XX_CM_ALWON_L4HS_CLKCTRL 0x1e8 507e1b11d1STony Lindgren #define DM81XX_CM_ALWON_L4LS_CLKCTRL 0x1ec 517e1b11d1STony Lindgren #define DM81XX_CM_ALWON_RTC_CLKCTRL 0x1f0 527e1b11d1STony Lindgren #define DM81XX_CM_ALWON_TPCC_CLKCTRL 0x1f4 537e1b11d1STony Lindgren #define DM81XX_CM_ALWON_TPTC0_CLKCTRL 0x1f8 547e1b11d1STony Lindgren #define DM81XX_CM_ALWON_TPTC1_CLKCTRL 0x1fc 557e1b11d1STony Lindgren #define DM81XX_CM_ALWON_TPTC2_CLKCTRL 0x200 567e1b11d1STony Lindgren #define DM81XX_CM_ALWON_TPTC3_CLKCTRL 0x204 577e1b11d1STony Lindgren 587e1b11d1STony Lindgren /* Registers specific to dm814x */ 597e1b11d1STony Lindgren #define DM814X_CM_ALWON_MCASP_3_4_5_CLKCTRL 0x16c 607e1b11d1STony Lindgren #define DM814X_CM_ALWON_ATL_CLKCTRL 0x170 617e1b11d1STony Lindgren #define DM814X_CM_ALWON_MLB_CLKCTRL 0x174 627e1b11d1STony Lindgren #define DM814X_CM_ALWON_PATA_CLKCTRL 0x178 637e1b11d1STony Lindgren #define DM814X_CM_ALWON_UART_3_CLKCTRL 0x180 647e1b11d1STony Lindgren #define DM814X_CM_ALWON_UART_4_CLKCTRL 0x184 657e1b11d1STony Lindgren #define DM814X_CM_ALWON_UART_5_CLKCTRL 0x188 667e1b11d1STony Lindgren #define DM814X_CM_ALWON_OCM_0_CLKCTRL 0x1b4 677e1b11d1STony Lindgren #define DM814X_CM_ALWON_VCP_CLKCTRL 0x1b8 687e1b11d1STony Lindgren #define DM814X_CM_ALWON_MPU_CLKCTRL 0x1dc 697e1b11d1STony Lindgren #define DM814X_CM_ALWON_DEBUGSS_CLKCTRL 0x1e0 707e1b11d1STony Lindgren #define DM814X_CM_ALWON_DCAN_0_1_CLKCTRL 0x218 717e1b11d1STony Lindgren #define DM814X_CM_ALWON_MMCHS_0_CLKCTRL 0x21c 727e1b11d1STony Lindgren #define DM814X_CM_ALWON_MMCHS_1_CLKCTRL 0x220 737e1b11d1STony Lindgren #define DM814X_CM_ALWON_MMCHS_2_CLKCTRL 0x224 747e1b11d1STony Lindgren #define DM814X_CM_ALWON_CUST_EFUSE_CLKCTRL 0x228 757e1b11d1STony Lindgren 767e1b11d1STony Lindgren /* Registers specific to dm816x */ 774d38bd12STony Lindgren #define DM816X_DM_ALWON_BASE 0x1400 784d38bd12STony Lindgren #define DM816X_CM_ALWON_TIMER_1_CLKCTRL (0x1570 - DM816X_DM_ALWON_BASE) 794d38bd12STony Lindgren #define DM816X_CM_ALWON_TIMER_2_CLKCTRL (0x1574 - DM816X_DM_ALWON_BASE) 804d38bd12STony Lindgren #define DM816X_CM_ALWON_TIMER_3_CLKCTRL (0x1578 - DM816X_DM_ALWON_BASE) 814d38bd12STony Lindgren #define DM816X_CM_ALWON_TIMER_4_CLKCTRL (0x157c - DM816X_DM_ALWON_BASE) 824d38bd12STony Lindgren #define DM816X_CM_ALWON_TIMER_5_CLKCTRL (0x1580 - DM816X_DM_ALWON_BASE) 834d38bd12STony Lindgren #define DM816X_CM_ALWON_TIMER_6_CLKCTRL (0x1584 - DM816X_DM_ALWON_BASE) 844d38bd12STony Lindgren #define DM816X_CM_ALWON_TIMER_7_CLKCTRL (0x1588 - DM816X_DM_ALWON_BASE) 854d38bd12STony Lindgren #define DM816X_CM_ALWON_SDIO_CLKCTRL (0x15b0 - DM816X_DM_ALWON_BASE) 864d38bd12STony Lindgren #define DM816X_CM_ALWON_OCMC_0_CLKCTRL (0x15b4 - DM816X_DM_ALWON_BASE) 874d38bd12STony Lindgren #define DM816X_CM_ALWON_OCMC_1_CLKCTRL (0x15b8 - DM816X_DM_ALWON_BASE) 884d38bd12STony Lindgren #define DM816X_CM_ALWON_ETHERNET_1_CLKCTRL (0x15d8 - DM816X_DM_ALWON_BASE) 894d38bd12STony Lindgren #define DM816X_CM_ALWON_MPU_CLKCTRL (0x15dc - DM816X_DM_ALWON_BASE) 904d38bd12STony Lindgren #define DM816X_CM_ALWON_SR_0_CLKCTRL (0x1608 - DM816X_DM_ALWON_BASE) 914d38bd12STony Lindgren #define DM816X_CM_ALWON_SR_1_CLKCTRL (0x160c - DM816X_DM_ALWON_BASE) 924d38bd12STony Lindgren 934d38bd12STony Lindgren /* 944d38bd12STony Lindgren * The default .clkctrl_offs field is offset from CM_DEFAULT, that's 954d38bd12STony Lindgren * TRM 18.7.6 CM_DEFAULT device register values minus 0x500 964d38bd12STony Lindgren */ 97f53850b5STony Lindgren #define DM81XX_CM_DEFAULT_OFFSET 0x500 98f53850b5STony Lindgren #define DM81XX_CM_DEFAULT_USB_CLKCTRL (0x558 - DM81XX_CM_DEFAULT_OFFSET) 9949e9e616SKevin Hilman #define DM81XX_CM_DEFAULT_SATA_CLKCTRL (0x560 - DM81XX_CM_DEFAULT_OFFSET) 1004d38bd12STony Lindgren 1014d38bd12STony Lindgren /* L3 Interconnect entries clocked at 125, 250 and 500MHz */ 1027e1b11d1STony Lindgren static struct omap_hwmod dm81xx_alwon_l3_slow_hwmod = { 1034d38bd12STony Lindgren .name = "alwon_l3_slow", 1044d38bd12STony Lindgren .clkdm_name = "alwon_l3s_clkdm", 1054d38bd12STony Lindgren .class = &l3_hwmod_class, 1064d38bd12STony Lindgren .flags = HWMOD_NO_IDLEST, 1074d38bd12STony Lindgren }; 1084d38bd12STony Lindgren 1097e1b11d1STony Lindgren static struct omap_hwmod dm81xx_default_l3_slow_hwmod = { 1104d38bd12STony Lindgren .name = "default_l3_slow", 1114d38bd12STony Lindgren .clkdm_name = "default_l3_slow_clkdm", 1124d38bd12STony Lindgren .class = &l3_hwmod_class, 1134d38bd12STony Lindgren .flags = HWMOD_NO_IDLEST, 1144d38bd12STony Lindgren }; 1154d38bd12STony Lindgren 1167e1b11d1STony Lindgren static struct omap_hwmod dm81xx_alwon_l3_med_hwmod = { 1174d38bd12STony Lindgren .name = "l3_med", 1184d38bd12STony Lindgren .clkdm_name = "alwon_l3_med_clkdm", 1194d38bd12STony Lindgren .class = &l3_hwmod_class, 1204d38bd12STony Lindgren .flags = HWMOD_NO_IDLEST, 1214d38bd12STony Lindgren }; 1224d38bd12STony Lindgren 1234d38bd12STony Lindgren /* 1244d38bd12STony Lindgren * L4 standard peripherals, see TRM table 1-12 for devices using this. 1254d38bd12STony Lindgren * See TRM table 1-73 for devices using the 125MHz SYSCLK6 clock. 1264d38bd12STony Lindgren */ 1277e1b11d1STony Lindgren static struct omap_hwmod dm81xx_l4_ls_hwmod = { 1284d38bd12STony Lindgren .name = "l4_ls", 1294d38bd12STony Lindgren .clkdm_name = "alwon_l3s_clkdm", 1304d38bd12STony Lindgren .class = &l4_hwmod_class, 13129f5b34cSNeil Armstrong .flags = HWMOD_NO_IDLEST, 1324d38bd12STony Lindgren }; 1334d38bd12STony Lindgren 1344d38bd12STony Lindgren /* 1354d38bd12STony Lindgren * L4 high-speed peripherals. For devices using this, please see the TRM 1364d38bd12STony Lindgren * table 1-13. On dm816x, only EMAC, MDIO and SATA use this. See also TRM 1374d38bd12STony Lindgren * table 1-73 for devices using 250MHz SYSCLK5 clock. 1384d38bd12STony Lindgren */ 1397e1b11d1STony Lindgren static struct omap_hwmod dm81xx_l4_hs_hwmod = { 1404d38bd12STony Lindgren .name = "l4_hs", 1414d38bd12STony Lindgren .clkdm_name = "alwon_l3_med_clkdm", 1424d38bd12STony Lindgren .class = &l4_hwmod_class, 14329f5b34cSNeil Armstrong .flags = HWMOD_NO_IDLEST, 1444d38bd12STony Lindgren }; 1454d38bd12STony Lindgren 1464d38bd12STony Lindgren /* L3 slow -> L4 ls peripheral interface running at 125MHz */ 1477e1b11d1STony Lindgren static struct omap_hwmod_ocp_if dm81xx_alwon_l3_slow__l4_ls = { 1487e1b11d1STony Lindgren .master = &dm81xx_alwon_l3_slow_hwmod, 1497e1b11d1STony Lindgren .slave = &dm81xx_l4_ls_hwmod, 1504d38bd12STony Lindgren .user = OCP_USER_MPU, 1514d38bd12STony Lindgren }; 1524d38bd12STony Lindgren 1534d38bd12STony Lindgren /* L3 med -> L4 fast peripheral interface running at 250MHz */ 1547e1b11d1STony Lindgren static struct omap_hwmod_ocp_if dm81xx_alwon_l3_slow__l4_hs = { 1557e1b11d1STony Lindgren .master = &dm81xx_alwon_l3_med_hwmod, 1567e1b11d1STony Lindgren .slave = &dm81xx_l4_hs_hwmod, 1574d38bd12STony Lindgren .user = OCP_USER_MPU, 1584d38bd12STony Lindgren }; 1594d38bd12STony Lindgren 1604d38bd12STony Lindgren /* MPU */ 1610f3ccb24STony Lindgren static struct omap_hwmod dm814x_mpu_hwmod = { 1620f3ccb24STony Lindgren .name = "mpu", 1630f3ccb24STony Lindgren .clkdm_name = "alwon_l3s_clkdm", 1640f3ccb24STony Lindgren .class = &mpu_hwmod_class, 1650f3ccb24STony Lindgren .flags = HWMOD_INIT_NO_IDLE, 1660f3ccb24STony Lindgren .main_clk = "mpu_ck", 1670f3ccb24STony Lindgren .prcm = { 1680f3ccb24STony Lindgren .omap4 = { 1690f3ccb24STony Lindgren .clkctrl_offs = DM814X_CM_ALWON_MPU_CLKCTRL, 1700f3ccb24STony Lindgren .modulemode = MODULEMODE_SWCTRL, 1710f3ccb24STony Lindgren }, 1720f3ccb24STony Lindgren }, 1730f3ccb24STony Lindgren }; 1740f3ccb24STony Lindgren 1750f3ccb24STony Lindgren static struct omap_hwmod_ocp_if dm814x_mpu__alwon_l3_slow = { 1760f3ccb24STony Lindgren .master = &dm814x_mpu_hwmod, 1770f3ccb24STony Lindgren .slave = &dm81xx_alwon_l3_slow_hwmod, 1780f3ccb24STony Lindgren .user = OCP_USER_MPU, 1790f3ccb24STony Lindgren }; 1800f3ccb24STony Lindgren 1810f3ccb24STony Lindgren /* L3 med peripheral interface running at 200MHz */ 1820f3ccb24STony Lindgren static struct omap_hwmod_ocp_if dm814x_mpu__alwon_l3_med = { 1830f3ccb24STony Lindgren .master = &dm814x_mpu_hwmod, 1840f3ccb24STony Lindgren .slave = &dm81xx_alwon_l3_med_hwmod, 1850f3ccb24STony Lindgren .user = OCP_USER_MPU, 1860f3ccb24STony Lindgren }; 1870f3ccb24STony Lindgren 1884d38bd12STony Lindgren static struct omap_hwmod dm816x_mpu_hwmod = { 1894d38bd12STony Lindgren .name = "mpu", 1904d38bd12STony Lindgren .clkdm_name = "alwon_mpu_clkdm", 1914d38bd12STony Lindgren .class = &mpu_hwmod_class, 1924d38bd12STony Lindgren .flags = HWMOD_INIT_NO_IDLE, 1934d38bd12STony Lindgren .main_clk = "mpu_ck", 1944d38bd12STony Lindgren .prcm = { 1954d38bd12STony Lindgren .omap4 = { 1964d38bd12STony Lindgren .clkctrl_offs = DM816X_CM_ALWON_MPU_CLKCTRL, 1974d38bd12STony Lindgren .modulemode = MODULEMODE_SWCTRL, 1984d38bd12STony Lindgren }, 1994d38bd12STony Lindgren }, 2004d38bd12STony Lindgren }; 2014d38bd12STony Lindgren 2024d38bd12STony Lindgren static struct omap_hwmod_ocp_if dm816x_mpu__alwon_l3_slow = { 2034d38bd12STony Lindgren .master = &dm816x_mpu_hwmod, 2047e1b11d1STony Lindgren .slave = &dm81xx_alwon_l3_slow_hwmod, 2054d38bd12STony Lindgren .user = OCP_USER_MPU, 2064d38bd12STony Lindgren }; 2074d38bd12STony Lindgren 2084d38bd12STony Lindgren /* L3 med peripheral interface running at 250MHz */ 2094d38bd12STony Lindgren static struct omap_hwmod_ocp_if dm816x_mpu__alwon_l3_med = { 2104d38bd12STony Lindgren .master = &dm816x_mpu_hwmod, 2117e1b11d1STony Lindgren .slave = &dm81xx_alwon_l3_med_hwmod, 2124d38bd12STony Lindgren .user = OCP_USER_MPU, 2134d38bd12STony Lindgren }; 2144d38bd12STony Lindgren 215c5803246STony Lindgren /* RTC */ 216c5803246STony Lindgren static struct omap_hwmod_class_sysconfig ti81xx_rtc_sysc = { 217c5803246STony Lindgren .rev_offs = 0x74, 218c5803246STony Lindgren .sysc_offs = 0x78, 219c5803246STony Lindgren .sysc_flags = SYSC_HAS_SIDLEMODE, 220c5803246STony Lindgren .idlemodes = SIDLE_FORCE | SIDLE_NO | 221c5803246STony Lindgren SIDLE_SMART | SIDLE_SMART_WKUP, 222c5803246STony Lindgren .sysc_fields = &omap_hwmod_sysc_type3, 223c5803246STony Lindgren }; 224c5803246STony Lindgren 225c5803246STony Lindgren static struct omap_hwmod_class ti81xx_rtc_hwmod_class = { 226c5803246STony Lindgren .name = "rtc", 227c5803246STony Lindgren .sysc = &ti81xx_rtc_sysc, 228c5803246STony Lindgren }; 229c5803246STony Lindgren 23041dc5483SBen Dooks static struct omap_hwmod ti81xx_rtc_hwmod = { 231c5803246STony Lindgren .name = "rtc", 232c5803246STony Lindgren .class = &ti81xx_rtc_hwmod_class, 233c5803246STony Lindgren .clkdm_name = "alwon_l3s_clkdm", 234c5803246STony Lindgren .flags = HWMOD_NO_IDLEST, 235c5803246STony Lindgren .main_clk = "sysclk18_ck", 236c5803246STony Lindgren .prcm = { 237c5803246STony Lindgren .omap4 = { 238c5803246STony Lindgren .clkctrl_offs = DM81XX_CM_ALWON_RTC_CLKCTRL, 239c5803246STony Lindgren .modulemode = MODULEMODE_SWCTRL, 240c5803246STony Lindgren }, 241c5803246STony Lindgren }, 242c5803246STony Lindgren }; 243c5803246STony Lindgren 244c5803246STony Lindgren static struct omap_hwmod_ocp_if ti81xx_l4_ls__rtc = { 245c5803246STony Lindgren .master = &dm81xx_l4_ls_hwmod, 246c5803246STony Lindgren .slave = &ti81xx_rtc_hwmod, 247c5803246STony Lindgren .clk = "sysclk6_ck", 248c5803246STony Lindgren .user = OCP_USER_MPU, 249c5803246STony Lindgren }; 250c5803246STony Lindgren 2514d38bd12STony Lindgren /* UART common */ 2524d38bd12STony Lindgren static struct omap_hwmod_class_sysconfig uart_sysc = { 2534d38bd12STony Lindgren .rev_offs = 0x50, 2544d38bd12STony Lindgren .sysc_offs = 0x54, 2554d38bd12STony Lindgren .syss_offs = 0x58, 2564d38bd12STony Lindgren .sysc_flags = SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE | 2574d38bd12STony Lindgren SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE | 2584d38bd12STony Lindgren SYSS_HAS_RESET_STATUS, 2594d38bd12STony Lindgren .idlemodes = SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | 2604d38bd12STony Lindgren MSTANDBY_SMART_WKUP, 2614d38bd12STony Lindgren .sysc_fields = &omap_hwmod_sysc_type1, 2624d38bd12STony Lindgren }; 2634d38bd12STony Lindgren 2644d38bd12STony Lindgren static struct omap_hwmod_class uart_class = { 2654d38bd12STony Lindgren .name = "uart", 2664d38bd12STony Lindgren .sysc = &uart_sysc, 2674d38bd12STony Lindgren }; 2684d38bd12STony Lindgren 2697e1b11d1STony Lindgren static struct omap_hwmod dm81xx_uart1_hwmod = { 2704d38bd12STony Lindgren .name = "uart1", 2714d38bd12STony Lindgren .clkdm_name = "alwon_l3s_clkdm", 2724d38bd12STony Lindgren .main_clk = "sysclk10_ck", 2734d38bd12STony Lindgren .prcm = { 2744d38bd12STony Lindgren .omap4 = { 2757e1b11d1STony Lindgren .clkctrl_offs = DM81XX_CM_ALWON_UART_0_CLKCTRL, 2764d38bd12STony Lindgren .modulemode = MODULEMODE_SWCTRL, 2774d38bd12STony Lindgren }, 2784d38bd12STony Lindgren }, 2794d38bd12STony Lindgren .class = &uart_class, 2804d38bd12STony Lindgren .flags = DEBUG_TI81XXUART1_FLAGS, 2814d38bd12STony Lindgren }; 2824d38bd12STony Lindgren 2837e1b11d1STony Lindgren static struct omap_hwmod_ocp_if dm81xx_l4_ls__uart1 = { 2847e1b11d1STony Lindgren .master = &dm81xx_l4_ls_hwmod, 2857e1b11d1STony Lindgren .slave = &dm81xx_uart1_hwmod, 2864d38bd12STony Lindgren .clk = "sysclk6_ck", 2874d38bd12STony Lindgren .user = OCP_USER_MPU, 2884d38bd12STony Lindgren }; 2894d38bd12STony Lindgren 2907e1b11d1STony Lindgren static struct omap_hwmod dm81xx_uart2_hwmod = { 2914d38bd12STony Lindgren .name = "uart2", 2924d38bd12STony Lindgren .clkdm_name = "alwon_l3s_clkdm", 2934d38bd12STony Lindgren .main_clk = "sysclk10_ck", 2944d38bd12STony Lindgren .prcm = { 2954d38bd12STony Lindgren .omap4 = { 2967e1b11d1STony Lindgren .clkctrl_offs = DM81XX_CM_ALWON_UART_1_CLKCTRL, 2974d38bd12STony Lindgren .modulemode = MODULEMODE_SWCTRL, 2984d38bd12STony Lindgren }, 2994d38bd12STony Lindgren }, 3004d38bd12STony Lindgren .class = &uart_class, 3014d38bd12STony Lindgren .flags = DEBUG_TI81XXUART2_FLAGS, 3024d38bd12STony Lindgren }; 3034d38bd12STony Lindgren 3047e1b11d1STony Lindgren static struct omap_hwmod_ocp_if dm81xx_l4_ls__uart2 = { 3057e1b11d1STony Lindgren .master = &dm81xx_l4_ls_hwmod, 3067e1b11d1STony Lindgren .slave = &dm81xx_uart2_hwmod, 3074d38bd12STony Lindgren .clk = "sysclk6_ck", 3084d38bd12STony Lindgren .user = OCP_USER_MPU, 3094d38bd12STony Lindgren }; 3104d38bd12STony Lindgren 3117e1b11d1STony Lindgren static struct omap_hwmod dm81xx_uart3_hwmod = { 3124d38bd12STony Lindgren .name = "uart3", 3134d38bd12STony Lindgren .clkdm_name = "alwon_l3s_clkdm", 3144d38bd12STony Lindgren .main_clk = "sysclk10_ck", 3154d38bd12STony Lindgren .prcm = { 3164d38bd12STony Lindgren .omap4 = { 3177e1b11d1STony Lindgren .clkctrl_offs = DM81XX_CM_ALWON_UART_2_CLKCTRL, 3184d38bd12STony Lindgren .modulemode = MODULEMODE_SWCTRL, 3194d38bd12STony Lindgren }, 3204d38bd12STony Lindgren }, 3214d38bd12STony Lindgren .class = &uart_class, 3224d38bd12STony Lindgren .flags = DEBUG_TI81XXUART3_FLAGS, 3234d38bd12STony Lindgren }; 3244d38bd12STony Lindgren 3257e1b11d1STony Lindgren static struct omap_hwmod_ocp_if dm81xx_l4_ls__uart3 = { 3267e1b11d1STony Lindgren .master = &dm81xx_l4_ls_hwmod, 3277e1b11d1STony Lindgren .slave = &dm81xx_uart3_hwmod, 3284d38bd12STony Lindgren .clk = "sysclk6_ck", 3294d38bd12STony Lindgren .user = OCP_USER_MPU, 3304d38bd12STony Lindgren }; 3314d38bd12STony Lindgren 3324d38bd12STony Lindgren static struct omap_hwmod_class_sysconfig wd_timer_sysc = { 3334d38bd12STony Lindgren .rev_offs = 0x0, 3344d38bd12STony Lindgren .sysc_offs = 0x10, 3354d38bd12STony Lindgren .syss_offs = 0x14, 3364d38bd12STony Lindgren .sysc_flags = SYSC_HAS_EMUFREE | SYSC_HAS_SOFTRESET | 3374d38bd12STony Lindgren SYSS_HAS_RESET_STATUS, 3384d38bd12STony Lindgren .sysc_fields = &omap_hwmod_sysc_type1, 3394d38bd12STony Lindgren }; 3404d38bd12STony Lindgren 3414d38bd12STony Lindgren static struct omap_hwmod_class wd_timer_class = { 3424d38bd12STony Lindgren .name = "wd_timer", 3434d38bd12STony Lindgren .sysc = &wd_timer_sysc, 3444d38bd12STony Lindgren .pre_shutdown = &omap2_wd_timer_disable, 3454d38bd12STony Lindgren .reset = &omap2_wd_timer_reset, 3464d38bd12STony Lindgren }; 3474d38bd12STony Lindgren 3487e1b11d1STony Lindgren static struct omap_hwmod dm81xx_wd_timer_hwmod = { 3494d38bd12STony Lindgren .name = "wd_timer", 3504d38bd12STony Lindgren .clkdm_name = "alwon_l3s_clkdm", 3514d38bd12STony Lindgren .main_clk = "sysclk18_ck", 3524d38bd12STony Lindgren .flags = HWMOD_NO_IDLEST, 3534d38bd12STony Lindgren .prcm = { 3544d38bd12STony Lindgren .omap4 = { 3557e1b11d1STony Lindgren .clkctrl_offs = DM81XX_CM_ALWON_WDTIMER_CLKCTRL, 3564d38bd12STony Lindgren .modulemode = MODULEMODE_SWCTRL, 3574d38bd12STony Lindgren }, 3584d38bd12STony Lindgren }, 3594d38bd12STony Lindgren .class = &wd_timer_class, 3604d38bd12STony Lindgren }; 3614d38bd12STony Lindgren 3627e1b11d1STony Lindgren static struct omap_hwmod_ocp_if dm81xx_l4_ls__wd_timer1 = { 3637e1b11d1STony Lindgren .master = &dm81xx_l4_ls_hwmod, 3647e1b11d1STony Lindgren .slave = &dm81xx_wd_timer_hwmod, 3654d38bd12STony Lindgren .clk = "sysclk6_ck", 3664d38bd12STony Lindgren .user = OCP_USER_MPU, 3674d38bd12STony Lindgren }; 3684d38bd12STony Lindgren 3694d38bd12STony Lindgren /* I2C common */ 3704d38bd12STony Lindgren static struct omap_hwmod_class_sysconfig i2c_sysc = { 3714d38bd12STony Lindgren .rev_offs = 0x0, 3724d38bd12STony Lindgren .sysc_offs = 0x10, 3734d38bd12STony Lindgren .syss_offs = 0x90, 3744d38bd12STony Lindgren .sysc_flags = SYSC_HAS_SIDLEMODE | 3754d38bd12STony Lindgren SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET | 3764d38bd12STony Lindgren SYSC_HAS_AUTOIDLE, 3774d38bd12STony Lindgren .idlemodes = SIDLE_FORCE | SIDLE_NO | SIDLE_SMART, 3784d38bd12STony Lindgren .sysc_fields = &omap_hwmod_sysc_type1, 3794d38bd12STony Lindgren }; 3804d38bd12STony Lindgren 3814d38bd12STony Lindgren static struct omap_hwmod_class i2c_class = { 3824d38bd12STony Lindgren .name = "i2c", 3834d38bd12STony Lindgren .sysc = &i2c_sysc, 3844d38bd12STony Lindgren }; 3854d38bd12STony Lindgren 3864d38bd12STony Lindgren static struct omap_hwmod dm81xx_i2c1_hwmod = { 3874d38bd12STony Lindgren .name = "i2c1", 3884d38bd12STony Lindgren .clkdm_name = "alwon_l3s_clkdm", 3894d38bd12STony Lindgren .main_clk = "sysclk10_ck", 3904d38bd12STony Lindgren .prcm = { 3914d38bd12STony Lindgren .omap4 = { 3927e1b11d1STony Lindgren .clkctrl_offs = DM81XX_CM_ALWON_I2C_0_CLKCTRL, 3934d38bd12STony Lindgren .modulemode = MODULEMODE_SWCTRL, 3944d38bd12STony Lindgren }, 3954d38bd12STony Lindgren }, 3964d38bd12STony Lindgren .class = &i2c_class, 3974d38bd12STony Lindgren }; 3984d38bd12STony Lindgren 3997e1b11d1STony Lindgren static struct omap_hwmod_ocp_if dm81xx_l4_ls__i2c1 = { 4007e1b11d1STony Lindgren .master = &dm81xx_l4_ls_hwmod, 4014d38bd12STony Lindgren .slave = &dm81xx_i2c1_hwmod, 4024d38bd12STony Lindgren .clk = "sysclk6_ck", 4034d38bd12STony Lindgren .user = OCP_USER_MPU, 4044d38bd12STony Lindgren }; 4054d38bd12STony Lindgren 4067e1b11d1STony Lindgren static struct omap_hwmod dm81xx_i2c2_hwmod = { 4074d38bd12STony Lindgren .name = "i2c2", 4084d38bd12STony Lindgren .clkdm_name = "alwon_l3s_clkdm", 4094d38bd12STony Lindgren .main_clk = "sysclk10_ck", 4104d38bd12STony Lindgren .prcm = { 4114d38bd12STony Lindgren .omap4 = { 4127e1b11d1STony Lindgren .clkctrl_offs = DM81XX_CM_ALWON_I2C_1_CLKCTRL, 4134d38bd12STony Lindgren .modulemode = MODULEMODE_SWCTRL, 4144d38bd12STony Lindgren }, 4154d38bd12STony Lindgren }, 4164d38bd12STony Lindgren .class = &i2c_class, 4174d38bd12STony Lindgren }; 4184d38bd12STony Lindgren 419fee3b674SGraeme Smecher static struct omap_hwmod_ocp_if dm81xx_l4_ls__i2c2 = { 420fee3b674SGraeme Smecher .master = &dm81xx_l4_ls_hwmod, 421fee3b674SGraeme Smecher .slave = &dm81xx_i2c2_hwmod, 422fee3b674SGraeme Smecher .clk = "sysclk6_ck", 423fee3b674SGraeme Smecher .user = OCP_USER_MPU, 424fee3b674SGraeme Smecher }; 425fee3b674SGraeme Smecher 4264d38bd12STony Lindgren static struct omap_hwmod_class_sysconfig dm81xx_elm_sysc = { 4274d38bd12STony Lindgren .rev_offs = 0x0000, 4284d38bd12STony Lindgren .sysc_offs = 0x0010, 4294d38bd12STony Lindgren .syss_offs = 0x0014, 4304d38bd12STony Lindgren .sysc_flags = SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE | 4314d38bd12STony Lindgren SYSC_HAS_SOFTRESET | 4324d38bd12STony Lindgren SYSS_HAS_RESET_STATUS, 4334d38bd12STony Lindgren .idlemodes = SIDLE_FORCE | SIDLE_NO | SIDLE_SMART, 4344d38bd12STony Lindgren .sysc_fields = &omap_hwmod_sysc_type1, 4354d38bd12STony Lindgren }; 4364d38bd12STony Lindgren 4374d38bd12STony Lindgren static struct omap_hwmod_class dm81xx_elm_hwmod_class = { 4384d38bd12STony Lindgren .name = "elm", 4394d38bd12STony Lindgren .sysc = &dm81xx_elm_sysc, 4404d38bd12STony Lindgren }; 4414d38bd12STony Lindgren 4424d38bd12STony Lindgren static struct omap_hwmod dm81xx_elm_hwmod = { 4434d38bd12STony Lindgren .name = "elm", 4444d38bd12STony Lindgren .clkdm_name = "alwon_l3s_clkdm", 4454d38bd12STony Lindgren .class = &dm81xx_elm_hwmod_class, 4464d38bd12STony Lindgren .main_clk = "sysclk6_ck", 4474d38bd12STony Lindgren }; 4484d38bd12STony Lindgren 4494d38bd12STony Lindgren static struct omap_hwmod_ocp_if dm81xx_l4_ls__elm = { 4507e1b11d1STony Lindgren .master = &dm81xx_l4_ls_hwmod, 4514d38bd12STony Lindgren .slave = &dm81xx_elm_hwmod, 4524f5395f0STony Lindgren .clk = "sysclk6_ck", 4534d38bd12STony Lindgren .user = OCP_USER_MPU, 4544d38bd12STony Lindgren }; 4554d38bd12STony Lindgren 4564d38bd12STony Lindgren static struct omap_hwmod_class_sysconfig dm81xx_gpio_sysc = { 4574d38bd12STony Lindgren .rev_offs = 0x0000, 4584d38bd12STony Lindgren .sysc_offs = 0x0010, 4594d38bd12STony Lindgren .syss_offs = 0x0114, 4604d38bd12STony Lindgren .sysc_flags = SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP | 4614d38bd12STony Lindgren SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET | 4624d38bd12STony Lindgren SYSS_HAS_RESET_STATUS, 4634d38bd12STony Lindgren .idlemodes = SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | 4644d38bd12STony Lindgren SIDLE_SMART_WKUP, 4654d38bd12STony Lindgren .sysc_fields = &omap_hwmod_sysc_type1, 4664d38bd12STony Lindgren }; 4674d38bd12STony Lindgren 4684d38bd12STony Lindgren static struct omap_hwmod_class dm81xx_gpio_hwmod_class = { 4694d38bd12STony Lindgren .name = "gpio", 4704d38bd12STony Lindgren .sysc = &dm81xx_gpio_sysc, 4714d38bd12STony Lindgren }; 4724d38bd12STony Lindgren 4734d38bd12STony Lindgren static struct omap_hwmod_opt_clk gpio1_opt_clks[] = { 4744d38bd12STony Lindgren { .role = "dbclk", .clk = "sysclk18_ck" }, 4754d38bd12STony Lindgren }; 4764d38bd12STony Lindgren 4774d38bd12STony Lindgren static struct omap_hwmod dm81xx_gpio1_hwmod = { 4784d38bd12STony Lindgren .name = "gpio1", 4794d38bd12STony Lindgren .clkdm_name = "alwon_l3s_clkdm", 4804d38bd12STony Lindgren .class = &dm81xx_gpio_hwmod_class, 4814d38bd12STony Lindgren .main_clk = "sysclk6_ck", 4824d38bd12STony Lindgren .prcm = { 4834d38bd12STony Lindgren .omap4 = { 4847e1b11d1STony Lindgren .clkctrl_offs = DM81XX_CM_ALWON_GPIO_0_CLKCTRL, 4854d38bd12STony Lindgren .modulemode = MODULEMODE_SWCTRL, 4864d38bd12STony Lindgren }, 4874d38bd12STony Lindgren }, 4884d38bd12STony Lindgren .opt_clks = gpio1_opt_clks, 4894d38bd12STony Lindgren .opt_clks_cnt = ARRAY_SIZE(gpio1_opt_clks), 4904d38bd12STony Lindgren }; 4914d38bd12STony Lindgren 4924d38bd12STony Lindgren static struct omap_hwmod_ocp_if dm81xx_l4_ls__gpio1 = { 4937e1b11d1STony Lindgren .master = &dm81xx_l4_ls_hwmod, 4944d38bd12STony Lindgren .slave = &dm81xx_gpio1_hwmod, 4954f5395f0STony Lindgren .clk = "sysclk6_ck", 4964d38bd12STony Lindgren .user = OCP_USER_MPU, 4974d38bd12STony Lindgren }; 4984d38bd12STony Lindgren 4994d38bd12STony Lindgren static struct omap_hwmod_opt_clk gpio2_opt_clks[] = { 5004d38bd12STony Lindgren { .role = "dbclk", .clk = "sysclk18_ck" }, 5014d38bd12STony Lindgren }; 5024d38bd12STony Lindgren 5034d38bd12STony Lindgren static struct omap_hwmod dm81xx_gpio2_hwmod = { 5044d38bd12STony Lindgren .name = "gpio2", 5054d38bd12STony Lindgren .clkdm_name = "alwon_l3s_clkdm", 5064d38bd12STony Lindgren .class = &dm81xx_gpio_hwmod_class, 5074d38bd12STony Lindgren .main_clk = "sysclk6_ck", 5084d38bd12STony Lindgren .prcm = { 5094d38bd12STony Lindgren .omap4 = { 5107e1b11d1STony Lindgren .clkctrl_offs = DM81XX_CM_ALWON_GPIO_1_CLKCTRL, 5114d38bd12STony Lindgren .modulemode = MODULEMODE_SWCTRL, 5124d38bd12STony Lindgren }, 5134d38bd12STony Lindgren }, 5144d38bd12STony Lindgren .opt_clks = gpio2_opt_clks, 5154d38bd12STony Lindgren .opt_clks_cnt = ARRAY_SIZE(gpio2_opt_clks), 5164d38bd12STony Lindgren }; 5174d38bd12STony Lindgren 5184d38bd12STony Lindgren static struct omap_hwmod_ocp_if dm81xx_l4_ls__gpio2 = { 5197e1b11d1STony Lindgren .master = &dm81xx_l4_ls_hwmod, 5204d38bd12STony Lindgren .slave = &dm81xx_gpio2_hwmod, 5214f5395f0STony Lindgren .clk = "sysclk6_ck", 5224d38bd12STony Lindgren .user = OCP_USER_MPU, 5234d38bd12STony Lindgren }; 5244d38bd12STony Lindgren 525d27cda29SGraeme Smecher static struct omap_hwmod_opt_clk gpio3_opt_clks[] = { 526d27cda29SGraeme Smecher { .role = "dbclk", .clk = "sysclk18_ck" }, 527d27cda29SGraeme Smecher }; 528d27cda29SGraeme Smecher 529d27cda29SGraeme Smecher static struct omap_hwmod dm81xx_gpio3_hwmod = { 530d27cda29SGraeme Smecher .name = "gpio3", 531d27cda29SGraeme Smecher .clkdm_name = "alwon_l3s_clkdm", 532d27cda29SGraeme Smecher .class = &dm81xx_gpio_hwmod_class, 533d27cda29SGraeme Smecher .main_clk = "sysclk6_ck", 534d27cda29SGraeme Smecher .prcm = { 535d27cda29SGraeme Smecher .omap4 = { 536d27cda29SGraeme Smecher .clkctrl_offs = DM81XX_CM_ALWON_GPIO_1_CLKCTRL, 537d27cda29SGraeme Smecher .modulemode = MODULEMODE_SWCTRL, 538d27cda29SGraeme Smecher }, 539d27cda29SGraeme Smecher }, 540d27cda29SGraeme Smecher .opt_clks = gpio3_opt_clks, 541d27cda29SGraeme Smecher .opt_clks_cnt = ARRAY_SIZE(gpio3_opt_clks), 542d27cda29SGraeme Smecher }; 543d27cda29SGraeme Smecher 544d27cda29SGraeme Smecher static struct omap_hwmod_ocp_if dm81xx_l4_ls__gpio3 = { 545d27cda29SGraeme Smecher .master = &dm81xx_l4_ls_hwmod, 546d27cda29SGraeme Smecher .slave = &dm81xx_gpio3_hwmod, 547d27cda29SGraeme Smecher .clk = "sysclk6_ck", 548d27cda29SGraeme Smecher .user = OCP_USER_MPU, 549d27cda29SGraeme Smecher }; 550d27cda29SGraeme Smecher 551d27cda29SGraeme Smecher static struct omap_hwmod_opt_clk gpio4_opt_clks[] = { 552d27cda29SGraeme Smecher { .role = "dbclk", .clk = "sysclk18_ck" }, 553d27cda29SGraeme Smecher }; 554d27cda29SGraeme Smecher 555d27cda29SGraeme Smecher static struct omap_hwmod dm81xx_gpio4_hwmod = { 556d27cda29SGraeme Smecher .name = "gpio4", 557d27cda29SGraeme Smecher .clkdm_name = "alwon_l3s_clkdm", 558d27cda29SGraeme Smecher .class = &dm81xx_gpio_hwmod_class, 559d27cda29SGraeme Smecher .main_clk = "sysclk6_ck", 560d27cda29SGraeme Smecher .prcm = { 561d27cda29SGraeme Smecher .omap4 = { 562d27cda29SGraeme Smecher .clkctrl_offs = DM81XX_CM_ALWON_GPIO_1_CLKCTRL, 563d27cda29SGraeme Smecher .modulemode = MODULEMODE_SWCTRL, 564d27cda29SGraeme Smecher }, 565d27cda29SGraeme Smecher }, 566d27cda29SGraeme Smecher .opt_clks = gpio4_opt_clks, 567d27cda29SGraeme Smecher .opt_clks_cnt = ARRAY_SIZE(gpio4_opt_clks), 568d27cda29SGraeme Smecher }; 569d27cda29SGraeme Smecher 570d27cda29SGraeme Smecher static struct omap_hwmod_ocp_if dm81xx_l4_ls__gpio4 = { 571d27cda29SGraeme Smecher .master = &dm81xx_l4_ls_hwmod, 572d27cda29SGraeme Smecher .slave = &dm81xx_gpio4_hwmod, 573d27cda29SGraeme Smecher .clk = "sysclk6_ck", 574d27cda29SGraeme Smecher .user = OCP_USER_MPU, 575d27cda29SGraeme Smecher }; 576d27cda29SGraeme Smecher 5774d38bd12STony Lindgren static struct omap_hwmod_class_sysconfig dm81xx_gpmc_sysc = { 5784d38bd12STony Lindgren .rev_offs = 0x0, 5794d38bd12STony Lindgren .sysc_offs = 0x10, 5804d38bd12STony Lindgren .syss_offs = 0x14, 5814d38bd12STony Lindgren .sysc_flags = SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET | 5824d38bd12STony Lindgren SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS, 5834d38bd12STony Lindgren .idlemodes = SIDLE_FORCE | SIDLE_NO | SIDLE_SMART, 5844d38bd12STony Lindgren .sysc_fields = &omap_hwmod_sysc_type1, 5854d38bd12STony Lindgren }; 5864d38bd12STony Lindgren 5874d38bd12STony Lindgren static struct omap_hwmod_class dm81xx_gpmc_hwmod_class = { 5884d38bd12STony Lindgren .name = "gpmc", 5894d38bd12STony Lindgren .sysc = &dm81xx_gpmc_sysc, 5904d38bd12STony Lindgren }; 5914d38bd12STony Lindgren 5924d38bd12STony Lindgren static struct omap_hwmod dm81xx_gpmc_hwmod = { 5934d38bd12STony Lindgren .name = "gpmc", 5944d38bd12STony Lindgren .clkdm_name = "alwon_l3s_clkdm", 5954d38bd12STony Lindgren .class = &dm81xx_gpmc_hwmod_class, 5964d38bd12STony Lindgren .main_clk = "sysclk6_ck", 59763aa945bSTony Lindgren /* Skip reset for CONFIG_OMAP_GPMC_DEBUG for bootloader timings */ 59863aa945bSTony Lindgren .flags = DEBUG_OMAP_GPMC_HWMOD_FLAGS, 5994d38bd12STony Lindgren .prcm = { 6004d38bd12STony Lindgren .omap4 = { 6017e1b11d1STony Lindgren .clkctrl_offs = DM81XX_CM_ALWON_GPMC_CLKCTRL, 6024d38bd12STony Lindgren .modulemode = MODULEMODE_SWCTRL, 6034d38bd12STony Lindgren }, 6044d38bd12STony Lindgren }, 6054d38bd12STony Lindgren }; 6064d38bd12STony Lindgren 607f734a9b3SSekhar Nori static struct omap_hwmod_ocp_if dm81xx_alwon_l3_slow__gpmc = { 6087e1b11d1STony Lindgren .master = &dm81xx_alwon_l3_slow_hwmod, 6094d38bd12STony Lindgren .slave = &dm81xx_gpmc_hwmod, 6104d38bd12STony Lindgren .user = OCP_USER_MPU, 6114d38bd12STony Lindgren }; 6124d38bd12STony Lindgren 613ebf24414STony Lindgren /* USB needs udelay 1 after reset at least on hp t410, use 2 for margin */ 6144d38bd12STony Lindgren static struct omap_hwmod_class_sysconfig dm81xx_usbhsotg_sysc = { 6154d38bd12STony Lindgren .rev_offs = 0x0, 6164d38bd12STony Lindgren .sysc_offs = 0x10, 617ebf24414STony Lindgren .srst_udelay = 2, 6184d38bd12STony Lindgren .sysc_flags = SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE | 6194d38bd12STony Lindgren SYSC_HAS_SOFTRESET, 6204d38bd12STony Lindgren .idlemodes = SIDLE_SMART | MSTANDBY_FORCE | MSTANDBY_SMART, 6214d38bd12STony Lindgren .sysc_fields = &omap_hwmod_sysc_type2, 6224d38bd12STony Lindgren }; 6234d38bd12STony Lindgren 6244d38bd12STony Lindgren static struct omap_hwmod_class dm81xx_usbotg_class = { 6254d38bd12STony Lindgren .name = "usbotg", 6264d38bd12STony Lindgren .sysc = &dm81xx_usbhsotg_sysc, 6274d38bd12STony Lindgren }; 6284d38bd12STony Lindgren 629f53850b5STony Lindgren static struct omap_hwmod dm814x_usbss_hwmod = { 6304d38bd12STony Lindgren .name = "usb_otg_hs", 6314d38bd12STony Lindgren .clkdm_name = "default_l3_slow_clkdm", 632f53850b5STony Lindgren .main_clk = "pll260dcoclkldo", /* 481c5260.adpll.dcoclkldo */ 6334d38bd12STony Lindgren .prcm = { 6344d38bd12STony Lindgren .omap4 = { 635f53850b5STony Lindgren .clkctrl_offs = DM81XX_CM_DEFAULT_USB_CLKCTRL, 6364d38bd12STony Lindgren .modulemode = MODULEMODE_SWCTRL, 6374d38bd12STony Lindgren }, 6384d38bd12STony Lindgren }, 6394d38bd12STony Lindgren .class = &dm81xx_usbotg_class, 6404d38bd12STony Lindgren }; 6414d38bd12STony Lindgren 642f53850b5STony Lindgren static struct omap_hwmod_ocp_if dm814x_default_l3_slow__usbss = { 6437e1b11d1STony Lindgren .master = &dm81xx_default_l3_slow_hwmod, 644f53850b5STony Lindgren .slave = &dm814x_usbss_hwmod, 645f53850b5STony Lindgren .clk = "sysclk6_ck", 646f53850b5STony Lindgren .user = OCP_USER_MPU, 647f53850b5STony Lindgren }; 648f53850b5STony Lindgren 649f53850b5STony Lindgren static struct omap_hwmod dm816x_usbss_hwmod = { 650f53850b5STony Lindgren .name = "usb_otg_hs", 651f53850b5STony Lindgren .clkdm_name = "default_l3_slow_clkdm", 652f53850b5STony Lindgren .main_clk = "sysclk6_ck", 653f53850b5STony Lindgren .prcm = { 654f53850b5STony Lindgren .omap4 = { 655f53850b5STony Lindgren .clkctrl_offs = DM81XX_CM_DEFAULT_USB_CLKCTRL, 656f53850b5STony Lindgren .modulemode = MODULEMODE_SWCTRL, 657f53850b5STony Lindgren }, 658f53850b5STony Lindgren }, 659f53850b5STony Lindgren .class = &dm81xx_usbotg_class, 660f53850b5STony Lindgren }; 661f53850b5STony Lindgren 662f53850b5STony Lindgren static struct omap_hwmod_ocp_if dm816x_default_l3_slow__usbss = { 663f53850b5STony Lindgren .master = &dm81xx_default_l3_slow_hwmod, 664f53850b5STony Lindgren .slave = &dm816x_usbss_hwmod, 6654d38bd12STony Lindgren .clk = "sysclk6_ck", 6664d38bd12STony Lindgren .user = OCP_USER_MPU, 6674d38bd12STony Lindgren }; 6684d38bd12STony Lindgren 6694d38bd12STony Lindgren static struct omap_hwmod_class_sysconfig dm816x_timer_sysc = { 6704d38bd12STony Lindgren .rev_offs = 0x0000, 6714d38bd12STony Lindgren .sysc_offs = 0x0010, 6724d38bd12STony Lindgren .syss_offs = 0x0014, 6734d38bd12STony Lindgren .sysc_flags = SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET, 6744d38bd12STony Lindgren .idlemodes = SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | 6754d38bd12STony Lindgren SIDLE_SMART_WKUP, 6764d38bd12STony Lindgren .sysc_fields = &omap_hwmod_sysc_type2, 6774d38bd12STony Lindgren }; 6784d38bd12STony Lindgren 6794d38bd12STony Lindgren static struct omap_hwmod_class dm816x_timer_hwmod_class = { 6804d38bd12STony Lindgren .name = "timer", 6814d38bd12STony Lindgren .sysc = &dm816x_timer_sysc, 6824d38bd12STony Lindgren }; 6834d38bd12STony Lindgren 6844d38bd12STony Lindgren static struct omap_hwmod dm816x_timer3_hwmod = { 6854d38bd12STony Lindgren .name = "timer3", 6864d38bd12STony Lindgren .clkdm_name = "alwon_l3s_clkdm", 6874d38bd12STony Lindgren .main_clk = "timer3_fck", 6884d38bd12STony Lindgren .prcm = { 6894d38bd12STony Lindgren .omap4 = { 6904d38bd12STony Lindgren .clkctrl_offs = DM816X_CM_ALWON_TIMER_3_CLKCTRL, 6914d38bd12STony Lindgren .modulemode = MODULEMODE_SWCTRL, 6924d38bd12STony Lindgren }, 6934d38bd12STony Lindgren }, 6944d38bd12STony Lindgren .class = &dm816x_timer_hwmod_class, 6954d38bd12STony Lindgren }; 6964d38bd12STony Lindgren 6974d38bd12STony Lindgren static struct omap_hwmod_ocp_if dm816x_l4_ls__timer3 = { 6987e1b11d1STony Lindgren .master = &dm81xx_l4_ls_hwmod, 6994d38bd12STony Lindgren .slave = &dm816x_timer3_hwmod, 7004d38bd12STony Lindgren .clk = "sysclk6_ck", 7014d38bd12STony Lindgren .user = OCP_USER_MPU, 7024d38bd12STony Lindgren }; 7034d38bd12STony Lindgren 7044d38bd12STony Lindgren static struct omap_hwmod dm816x_timer4_hwmod = { 7054d38bd12STony Lindgren .name = "timer4", 7064d38bd12STony Lindgren .clkdm_name = "alwon_l3s_clkdm", 7074d38bd12STony Lindgren .main_clk = "timer4_fck", 7084d38bd12STony Lindgren .prcm = { 7094d38bd12STony Lindgren .omap4 = { 7104d38bd12STony Lindgren .clkctrl_offs = DM816X_CM_ALWON_TIMER_4_CLKCTRL, 7114d38bd12STony Lindgren .modulemode = MODULEMODE_SWCTRL, 7124d38bd12STony Lindgren }, 7134d38bd12STony Lindgren }, 7144d38bd12STony Lindgren .class = &dm816x_timer_hwmod_class, 7154d38bd12STony Lindgren }; 7164d38bd12STony Lindgren 7174d38bd12STony Lindgren static struct omap_hwmod_ocp_if dm816x_l4_ls__timer4 = { 7187e1b11d1STony Lindgren .master = &dm81xx_l4_ls_hwmod, 7194d38bd12STony Lindgren .slave = &dm816x_timer4_hwmod, 7204d38bd12STony Lindgren .clk = "sysclk6_ck", 7214d38bd12STony Lindgren .user = OCP_USER_MPU, 7224d38bd12STony Lindgren }; 7234d38bd12STony Lindgren 7244d38bd12STony Lindgren static struct omap_hwmod dm816x_timer5_hwmod = { 7254d38bd12STony Lindgren .name = "timer5", 7264d38bd12STony Lindgren .clkdm_name = "alwon_l3s_clkdm", 7274d38bd12STony Lindgren .main_clk = "timer5_fck", 7284d38bd12STony Lindgren .prcm = { 7294d38bd12STony Lindgren .omap4 = { 7304d38bd12STony Lindgren .clkctrl_offs = DM816X_CM_ALWON_TIMER_5_CLKCTRL, 7314d38bd12STony Lindgren .modulemode = MODULEMODE_SWCTRL, 7324d38bd12STony Lindgren }, 7334d38bd12STony Lindgren }, 7344d38bd12STony Lindgren .class = &dm816x_timer_hwmod_class, 7354d38bd12STony Lindgren }; 7364d38bd12STony Lindgren 7374d38bd12STony Lindgren static struct omap_hwmod_ocp_if dm816x_l4_ls__timer5 = { 7387e1b11d1STony Lindgren .master = &dm81xx_l4_ls_hwmod, 7394d38bd12STony Lindgren .slave = &dm816x_timer5_hwmod, 7404d38bd12STony Lindgren .clk = "sysclk6_ck", 7414d38bd12STony Lindgren .user = OCP_USER_MPU, 7424d38bd12STony Lindgren }; 7434d38bd12STony Lindgren 7444d38bd12STony Lindgren static struct omap_hwmod dm816x_timer6_hwmod = { 7454d38bd12STony Lindgren .name = "timer6", 7464d38bd12STony Lindgren .clkdm_name = "alwon_l3s_clkdm", 7474d38bd12STony Lindgren .main_clk = "timer6_fck", 7484d38bd12STony Lindgren .prcm = { 7494d38bd12STony Lindgren .omap4 = { 7504d38bd12STony Lindgren .clkctrl_offs = DM816X_CM_ALWON_TIMER_6_CLKCTRL, 7514d38bd12STony Lindgren .modulemode = MODULEMODE_SWCTRL, 7524d38bd12STony Lindgren }, 7534d38bd12STony Lindgren }, 7544d38bd12STony Lindgren .class = &dm816x_timer_hwmod_class, 7554d38bd12STony Lindgren }; 7564d38bd12STony Lindgren 7574d38bd12STony Lindgren static struct omap_hwmod_ocp_if dm816x_l4_ls__timer6 = { 7587e1b11d1STony Lindgren .master = &dm81xx_l4_ls_hwmod, 7594d38bd12STony Lindgren .slave = &dm816x_timer6_hwmod, 7604d38bd12STony Lindgren .clk = "sysclk6_ck", 7614d38bd12STony Lindgren .user = OCP_USER_MPU, 7624d38bd12STony Lindgren }; 7634d38bd12STony Lindgren 7644d38bd12STony Lindgren static struct omap_hwmod dm816x_timer7_hwmod = { 7654d38bd12STony Lindgren .name = "timer7", 7664d38bd12STony Lindgren .clkdm_name = "alwon_l3s_clkdm", 7674d38bd12STony Lindgren .main_clk = "timer7_fck", 7684d38bd12STony Lindgren .prcm = { 7694d38bd12STony Lindgren .omap4 = { 7704d38bd12STony Lindgren .clkctrl_offs = DM816X_CM_ALWON_TIMER_7_CLKCTRL, 7714d38bd12STony Lindgren .modulemode = MODULEMODE_SWCTRL, 7724d38bd12STony Lindgren }, 7734d38bd12STony Lindgren }, 7744d38bd12STony Lindgren .class = &dm816x_timer_hwmod_class, 7754d38bd12STony Lindgren }; 7764d38bd12STony Lindgren 7774d38bd12STony Lindgren static struct omap_hwmod_ocp_if dm816x_l4_ls__timer7 = { 7787e1b11d1STony Lindgren .master = &dm81xx_l4_ls_hwmod, 7794d38bd12STony Lindgren .slave = &dm816x_timer7_hwmod, 7804d38bd12STony Lindgren .clk = "sysclk6_ck", 7814d38bd12STony Lindgren .user = OCP_USER_MPU, 7824d38bd12STony Lindgren }; 7834d38bd12STony Lindgren 7844d38bd12STony Lindgren /* EMAC Ethernet */ 7854d38bd12STony Lindgren static struct omap_hwmod_class_sysconfig dm816x_emac_sysc = { 7864d38bd12STony Lindgren .rev_offs = 0x0, 7874d38bd12STony Lindgren .sysc_offs = 0x4, 7884d38bd12STony Lindgren .sysc_flags = SYSC_HAS_SOFTRESET, 7894d38bd12STony Lindgren .sysc_fields = &omap_hwmod_sysc_type2, 7904d38bd12STony Lindgren }; 7914d38bd12STony Lindgren 7924d38bd12STony Lindgren static struct omap_hwmod_class dm816x_emac_hwmod_class = { 7934d38bd12STony Lindgren .name = "emac", 7944d38bd12STony Lindgren .sysc = &dm816x_emac_sysc, 7954d38bd12STony Lindgren }; 7964d38bd12STony Lindgren 7974d38bd12STony Lindgren /* 7984d38bd12STony Lindgren * On dm816x the MDIO is within EMAC0. As the MDIO driver is a separate 7994d38bd12STony Lindgren * driver probed before EMAC0, we let MDIO do the clock idling. 8004d38bd12STony Lindgren */ 8014d38bd12STony Lindgren static struct omap_hwmod dm816x_emac0_hwmod = { 8024d38bd12STony Lindgren .name = "emac0", 8034d38bd12STony Lindgren .clkdm_name = "alwon_ethernet_clkdm", 8044d38bd12STony Lindgren .class = &dm816x_emac_hwmod_class, 80529f5b34cSNeil Armstrong .flags = HWMOD_NO_IDLEST, 8064d38bd12STony Lindgren }; 8074d38bd12STony Lindgren 8087e1b11d1STony Lindgren static struct omap_hwmod_ocp_if dm81xx_l4_hs__emac0 = { 8097e1b11d1STony Lindgren .master = &dm81xx_l4_hs_hwmod, 8104d38bd12STony Lindgren .slave = &dm816x_emac0_hwmod, 8114d38bd12STony Lindgren .clk = "sysclk5_ck", 8124d38bd12STony Lindgren .user = OCP_USER_MPU, 8134d38bd12STony Lindgren }; 8144d38bd12STony Lindgren 8157e1b11d1STony Lindgren static struct omap_hwmod_class dm81xx_mdio_hwmod_class = { 8164d38bd12STony Lindgren .name = "davinci_mdio", 8174d38bd12STony Lindgren .sysc = &dm816x_emac_sysc, 8184d38bd12STony Lindgren }; 8194d38bd12STony Lindgren 82024da741cSTony Lindgren static struct omap_hwmod dm81xx_emac0_mdio_hwmod = { 8214d38bd12STony Lindgren .name = "davinci_mdio", 8227e1b11d1STony Lindgren .class = &dm81xx_mdio_hwmod_class, 8234d38bd12STony Lindgren .clkdm_name = "alwon_ethernet_clkdm", 8244d38bd12STony Lindgren .main_clk = "sysclk24_ck", 8254d38bd12STony Lindgren .flags = HWMOD_NO_IDLEST, 8264d38bd12STony Lindgren /* 8274d38bd12STony Lindgren * REVISIT: This should be moved to the emac0_hwmod 8284d38bd12STony Lindgren * once we have a better way to handle device slaves. 8294d38bd12STony Lindgren */ 8304d38bd12STony Lindgren .prcm = { 8314d38bd12STony Lindgren .omap4 = { 8327e1b11d1STony Lindgren .clkctrl_offs = DM81XX_CM_ALWON_ETHERNET_0_CLKCTRL, 8334d38bd12STony Lindgren .modulemode = MODULEMODE_SWCTRL, 8344d38bd12STony Lindgren }, 8354d38bd12STony Lindgren }, 8364d38bd12STony Lindgren }; 8374d38bd12STony Lindgren 83824da741cSTony Lindgren static struct omap_hwmod_ocp_if dm81xx_emac0__mdio = { 8397e1b11d1STony Lindgren .master = &dm81xx_l4_hs_hwmod, 8407e1b11d1STony Lindgren .slave = &dm81xx_emac0_mdio_hwmod, 8414d38bd12STony Lindgren .user = OCP_USER_MPU, 8424d38bd12STony Lindgren }; 8434d38bd12STony Lindgren 8444d38bd12STony Lindgren static struct omap_hwmod dm816x_emac1_hwmod = { 8454d38bd12STony Lindgren .name = "emac1", 8464d38bd12STony Lindgren .clkdm_name = "alwon_ethernet_clkdm", 8474d38bd12STony Lindgren .main_clk = "sysclk24_ck", 8484d38bd12STony Lindgren .flags = HWMOD_NO_IDLEST, 8494d38bd12STony Lindgren .prcm = { 8504d38bd12STony Lindgren .omap4 = { 8514d38bd12STony Lindgren .clkctrl_offs = DM816X_CM_ALWON_ETHERNET_1_CLKCTRL, 8524d38bd12STony Lindgren .modulemode = MODULEMODE_SWCTRL, 8534d38bd12STony Lindgren }, 8544d38bd12STony Lindgren }, 8554d38bd12STony Lindgren .class = &dm816x_emac_hwmod_class, 8564d38bd12STony Lindgren }; 8574d38bd12STony Lindgren 8584d38bd12STony Lindgren static struct omap_hwmod_ocp_if dm816x_l4_hs__emac1 = { 8597e1b11d1STony Lindgren .master = &dm81xx_l4_hs_hwmod, 8604d38bd12STony Lindgren .slave = &dm816x_emac1_hwmod, 8614d38bd12STony Lindgren .clk = "sysclk5_ck", 8624d38bd12STony Lindgren .user = OCP_USER_MPU, 8634d38bd12STony Lindgren }; 8644d38bd12STony Lindgren 86549e9e616SKevin Hilman static struct omap_hwmod_class_sysconfig dm81xx_sata_sysc = { 866103fd8e7STony Lindgren .rev_offs = 0x00fc, 86749e9e616SKevin Hilman .sysc_offs = 0x1100, 86849e9e616SKevin Hilman .sysc_flags = SYSC_HAS_SIDLEMODE, 86949e9e616SKevin Hilman .idlemodes = SIDLE_FORCE, 87049e9e616SKevin Hilman .sysc_fields = &omap_hwmod_sysc_type3, 87149e9e616SKevin Hilman }; 87249e9e616SKevin Hilman 87349e9e616SKevin Hilman static struct omap_hwmod_class dm81xx_sata_hwmod_class = { 87449e9e616SKevin Hilman .name = "sata", 87549e9e616SKevin Hilman .sysc = &dm81xx_sata_sysc, 87649e9e616SKevin Hilman }; 87749e9e616SKevin Hilman 87849e9e616SKevin Hilman static struct omap_hwmod dm81xx_sata_hwmod = { 87949e9e616SKevin Hilman .name = "sata", 88071d50393STero Kristo .clkdm_name = "default_clkdm", 88149e9e616SKevin Hilman .flags = HWMOD_NO_IDLEST, 88249e9e616SKevin Hilman .prcm = { 88349e9e616SKevin Hilman .omap4 = { 88449e9e616SKevin Hilman .clkctrl_offs = DM81XX_CM_DEFAULT_SATA_CLKCTRL, 88549e9e616SKevin Hilman .modulemode = MODULEMODE_SWCTRL, 88649e9e616SKevin Hilman }, 88749e9e616SKevin Hilman }, 88849e9e616SKevin Hilman .class = &dm81xx_sata_hwmod_class, 88949e9e616SKevin Hilman }; 89049e9e616SKevin Hilman 89149e9e616SKevin Hilman static struct omap_hwmod_ocp_if dm81xx_l4_hs__sata = { 89249e9e616SKevin Hilman .master = &dm81xx_l4_hs_hwmod, 89349e9e616SKevin Hilman .slave = &dm81xx_sata_hwmod, 89449e9e616SKevin Hilman .clk = "sysclk5_ck", 89549e9e616SKevin Hilman .user = OCP_USER_MPU, 89649e9e616SKevin Hilman }; 89749e9e616SKevin Hilman 898c757fda8STony Lindgren static struct omap_hwmod_class_sysconfig dm81xx_mmc_sysc = { 8994d38bd12STony Lindgren .rev_offs = 0x0, 9004d38bd12STony Lindgren .sysc_offs = 0x110, 9014d38bd12STony Lindgren .syss_offs = 0x114, 9024d38bd12STony Lindgren .sysc_flags = SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE | 9034d38bd12STony Lindgren SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET | 9044d38bd12STony Lindgren SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS, 9054d38bd12STony Lindgren .idlemodes = SIDLE_FORCE | SIDLE_NO | SIDLE_SMART, 9064d38bd12STony Lindgren .sysc_fields = &omap_hwmod_sysc_type1, 9074d38bd12STony Lindgren }; 9084d38bd12STony Lindgren 909c757fda8STony Lindgren static struct omap_hwmod_class dm81xx_mmc_class = { 9104d38bd12STony Lindgren .name = "mmc", 911c757fda8STony Lindgren .sysc = &dm81xx_mmc_sysc, 9124d38bd12STony Lindgren }; 9134d38bd12STony Lindgren 914c757fda8STony Lindgren static struct omap_hwmod_opt_clk dm81xx_mmc_opt_clks[] = { 9154d38bd12STony Lindgren { .role = "dbck", .clk = "sysclk18_ck", }, 9164d38bd12STony Lindgren }; 9174d38bd12STony Lindgren 918c757fda8STony Lindgren static struct omap_hsmmc_dev_attr mmc_dev_attr = { 919c757fda8STony Lindgren }; 920c757fda8STony Lindgren 921c757fda8STony Lindgren static struct omap_hwmod dm814x_mmc1_hwmod = { 922c757fda8STony Lindgren .name = "mmc1", 923c757fda8STony Lindgren .clkdm_name = "alwon_l3s_clkdm", 924c757fda8STony Lindgren .opt_clks = dm81xx_mmc_opt_clks, 925c757fda8STony Lindgren .opt_clks_cnt = ARRAY_SIZE(dm81xx_mmc_opt_clks), 926c757fda8STony Lindgren .main_clk = "sysclk8_ck", 927c757fda8STony Lindgren .prcm = { 928c757fda8STony Lindgren .omap4 = { 929c757fda8STony Lindgren .clkctrl_offs = DM814X_CM_ALWON_MMCHS_0_CLKCTRL, 930c757fda8STony Lindgren .modulemode = MODULEMODE_SWCTRL, 931c757fda8STony Lindgren }, 932c757fda8STony Lindgren }, 933c757fda8STony Lindgren .dev_attr = &mmc_dev_attr, 934c757fda8STony Lindgren .class = &dm81xx_mmc_class, 935c757fda8STony Lindgren }; 936c757fda8STony Lindgren 937c757fda8STony Lindgren static struct omap_hwmod_ocp_if dm814x_l4_ls__mmc1 = { 938c757fda8STony Lindgren .master = &dm81xx_l4_ls_hwmod, 939c757fda8STony Lindgren .slave = &dm814x_mmc1_hwmod, 940c757fda8STony Lindgren .clk = "sysclk6_ck", 941c757fda8STony Lindgren .user = OCP_USER_MPU, 942c757fda8STony Lindgren .flags = OMAP_FIREWALL_L4 943c757fda8STony Lindgren }; 944c757fda8STony Lindgren 945c757fda8STony Lindgren static struct omap_hwmod dm814x_mmc2_hwmod = { 946c757fda8STony Lindgren .name = "mmc2", 947c757fda8STony Lindgren .clkdm_name = "alwon_l3s_clkdm", 948c757fda8STony Lindgren .opt_clks = dm81xx_mmc_opt_clks, 949c757fda8STony Lindgren .opt_clks_cnt = ARRAY_SIZE(dm81xx_mmc_opt_clks), 950c757fda8STony Lindgren .main_clk = "sysclk8_ck", 951c757fda8STony Lindgren .prcm = { 952c757fda8STony Lindgren .omap4 = { 953c757fda8STony Lindgren .clkctrl_offs = DM814X_CM_ALWON_MMCHS_1_CLKCTRL, 954c757fda8STony Lindgren .modulemode = MODULEMODE_SWCTRL, 955c757fda8STony Lindgren }, 956c757fda8STony Lindgren }, 957c757fda8STony Lindgren .dev_attr = &mmc_dev_attr, 958c757fda8STony Lindgren .class = &dm81xx_mmc_class, 959c757fda8STony Lindgren }; 960c757fda8STony Lindgren 961c757fda8STony Lindgren static struct omap_hwmod_ocp_if dm814x_l4_ls__mmc2 = { 962c757fda8STony Lindgren .master = &dm81xx_l4_ls_hwmod, 963c757fda8STony Lindgren .slave = &dm814x_mmc2_hwmod, 964c757fda8STony Lindgren .clk = "sysclk6_ck", 965c757fda8STony Lindgren .user = OCP_USER_MPU, 966c757fda8STony Lindgren .flags = OMAP_FIREWALL_L4 967c757fda8STony Lindgren }; 968c757fda8STony Lindgren 969c757fda8STony Lindgren static struct omap_hwmod dm814x_mmc3_hwmod = { 970c757fda8STony Lindgren .name = "mmc3", 971c757fda8STony Lindgren .clkdm_name = "alwon_l3_med_clkdm", 972c757fda8STony Lindgren .opt_clks = dm81xx_mmc_opt_clks, 973c757fda8STony Lindgren .opt_clks_cnt = ARRAY_SIZE(dm81xx_mmc_opt_clks), 974c757fda8STony Lindgren .main_clk = "sysclk8_ck", 975c757fda8STony Lindgren .prcm = { 976c757fda8STony Lindgren .omap4 = { 977c757fda8STony Lindgren .clkctrl_offs = DM814X_CM_ALWON_MMCHS_2_CLKCTRL, 978c757fda8STony Lindgren .modulemode = MODULEMODE_SWCTRL, 979c757fda8STony Lindgren }, 980c757fda8STony Lindgren }, 981c757fda8STony Lindgren .dev_attr = &mmc_dev_attr, 982c757fda8STony Lindgren .class = &dm81xx_mmc_class, 983c757fda8STony Lindgren }; 984c757fda8STony Lindgren 985c757fda8STony Lindgren static struct omap_hwmod_ocp_if dm814x_alwon_l3_med__mmc3 = { 986c757fda8STony Lindgren .master = &dm81xx_alwon_l3_med_hwmod, 987c757fda8STony Lindgren .slave = &dm814x_mmc3_hwmod, 988c757fda8STony Lindgren .clk = "sysclk4_ck", 989c757fda8STony Lindgren .user = OCP_USER_MPU, 9904d38bd12STony Lindgren }; 9914d38bd12STony Lindgren 9924d38bd12STony Lindgren static struct omap_hwmod dm816x_mmc1_hwmod = { 9934d38bd12STony Lindgren .name = "mmc1", 9944d38bd12STony Lindgren .clkdm_name = "alwon_l3s_clkdm", 995c757fda8STony Lindgren .opt_clks = dm81xx_mmc_opt_clks, 996c757fda8STony Lindgren .opt_clks_cnt = ARRAY_SIZE(dm81xx_mmc_opt_clks), 9974d38bd12STony Lindgren .main_clk = "sysclk10_ck", 9984d38bd12STony Lindgren .prcm = { 9994d38bd12STony Lindgren .omap4 = { 10004d38bd12STony Lindgren .clkctrl_offs = DM816X_CM_ALWON_SDIO_CLKCTRL, 10014d38bd12STony Lindgren .modulemode = MODULEMODE_SWCTRL, 10024d38bd12STony Lindgren }, 10034d38bd12STony Lindgren }, 1004c757fda8STony Lindgren .dev_attr = &mmc_dev_attr, 1005c757fda8STony Lindgren .class = &dm81xx_mmc_class, 10064d38bd12STony Lindgren }; 10074d38bd12STony Lindgren 10084d38bd12STony Lindgren static struct omap_hwmod_ocp_if dm816x_l4_ls__mmc1 = { 10097e1b11d1STony Lindgren .master = &dm81xx_l4_ls_hwmod, 10104d38bd12STony Lindgren .slave = &dm816x_mmc1_hwmod, 10114d38bd12STony Lindgren .clk = "sysclk6_ck", 10124d38bd12STony Lindgren .user = OCP_USER_MPU, 10134d38bd12STony Lindgren .flags = OMAP_FIREWALL_L4 10144d38bd12STony Lindgren }; 10154d38bd12STony Lindgren 10164d38bd12STony Lindgren static struct omap_hwmod_class_sysconfig dm816x_mcspi_sysc = { 10174d38bd12STony Lindgren .rev_offs = 0x0, 10184d38bd12STony Lindgren .sysc_offs = 0x110, 10194d38bd12STony Lindgren .syss_offs = 0x114, 10204d38bd12STony Lindgren .sysc_flags = SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE | 10214d38bd12STony Lindgren SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET | 10224d38bd12STony Lindgren SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS, 10234d38bd12STony Lindgren .idlemodes = SIDLE_FORCE | SIDLE_NO | SIDLE_SMART, 10244d38bd12STony Lindgren .sysc_fields = &omap_hwmod_sysc_type1, 10254d38bd12STony Lindgren }; 10264d38bd12STony Lindgren 10274d38bd12STony Lindgren static struct omap_hwmod_class dm816x_mcspi_class = { 10284d38bd12STony Lindgren .name = "mcspi", 10294d38bd12STony Lindgren .sysc = &dm816x_mcspi_sysc, 10304d38bd12STony Lindgren }; 10314d38bd12STony Lindgren 10327e1b11d1STony Lindgren static struct omap_hwmod dm81xx_mcspi1_hwmod = { 10334d38bd12STony Lindgren .name = "mcspi1", 10344d38bd12STony Lindgren .clkdm_name = "alwon_l3s_clkdm", 10354d38bd12STony Lindgren .main_clk = "sysclk10_ck", 10364d38bd12STony Lindgren .prcm = { 10374d38bd12STony Lindgren .omap4 = { 10387e1b11d1STony Lindgren .clkctrl_offs = DM81XX_CM_ALWON_SPI_CLKCTRL, 10394d38bd12STony Lindgren .modulemode = MODULEMODE_SWCTRL, 10404d38bd12STony Lindgren }, 10414d38bd12STony Lindgren }, 10424d38bd12STony Lindgren .class = &dm816x_mcspi_class, 10434d38bd12STony Lindgren }; 10444d38bd12STony Lindgren 1045d27cda29SGraeme Smecher static struct omap_hwmod dm81xx_mcspi2_hwmod = { 1046d27cda29SGraeme Smecher .name = "mcspi2", 1047d27cda29SGraeme Smecher .clkdm_name = "alwon_l3s_clkdm", 1048d27cda29SGraeme Smecher .main_clk = "sysclk10_ck", 1049d27cda29SGraeme Smecher .prcm = { 1050d27cda29SGraeme Smecher .omap4 = { 1051d27cda29SGraeme Smecher .clkctrl_offs = DM81XX_CM_ALWON_SPI_CLKCTRL, 1052d27cda29SGraeme Smecher .modulemode = MODULEMODE_SWCTRL, 1053d27cda29SGraeme Smecher }, 1054d27cda29SGraeme Smecher }, 1055d27cda29SGraeme Smecher .class = &dm816x_mcspi_class, 1056d27cda29SGraeme Smecher }; 1057d27cda29SGraeme Smecher 1058d27cda29SGraeme Smecher static struct omap_hwmod dm81xx_mcspi3_hwmod = { 1059d27cda29SGraeme Smecher .name = "mcspi3", 1060d27cda29SGraeme Smecher .clkdm_name = "alwon_l3s_clkdm", 1061d27cda29SGraeme Smecher .main_clk = "sysclk10_ck", 1062d27cda29SGraeme Smecher .prcm = { 1063d27cda29SGraeme Smecher .omap4 = { 1064d27cda29SGraeme Smecher .clkctrl_offs = DM81XX_CM_ALWON_SPI_CLKCTRL, 1065d27cda29SGraeme Smecher .modulemode = MODULEMODE_SWCTRL, 1066d27cda29SGraeme Smecher }, 1067d27cda29SGraeme Smecher }, 1068d27cda29SGraeme Smecher .class = &dm816x_mcspi_class, 1069d27cda29SGraeme Smecher }; 1070d27cda29SGraeme Smecher 1071d27cda29SGraeme Smecher static struct omap_hwmod dm81xx_mcspi4_hwmod = { 1072d27cda29SGraeme Smecher .name = "mcspi4", 1073d27cda29SGraeme Smecher .clkdm_name = "alwon_l3s_clkdm", 1074d27cda29SGraeme Smecher .main_clk = "sysclk10_ck", 1075d27cda29SGraeme Smecher .prcm = { 1076d27cda29SGraeme Smecher .omap4 = { 1077d27cda29SGraeme Smecher .clkctrl_offs = DM81XX_CM_ALWON_SPI_CLKCTRL, 1078d27cda29SGraeme Smecher .modulemode = MODULEMODE_SWCTRL, 1079d27cda29SGraeme Smecher }, 1080d27cda29SGraeme Smecher }, 1081d27cda29SGraeme Smecher .class = &dm816x_mcspi_class, 1082d27cda29SGraeme Smecher }; 1083d27cda29SGraeme Smecher 10847e1b11d1STony Lindgren static struct omap_hwmod_ocp_if dm81xx_l4_ls__mcspi1 = { 10857e1b11d1STony Lindgren .master = &dm81xx_l4_ls_hwmod, 10867e1b11d1STony Lindgren .slave = &dm81xx_mcspi1_hwmod, 10874d38bd12STony Lindgren .clk = "sysclk6_ck", 10884d38bd12STony Lindgren .user = OCP_USER_MPU, 10894d38bd12STony Lindgren }; 10904d38bd12STony Lindgren 1091d27cda29SGraeme Smecher static struct omap_hwmod_ocp_if dm81xx_l4_ls__mcspi2 = { 1092d27cda29SGraeme Smecher .master = &dm81xx_l4_ls_hwmod, 1093d27cda29SGraeme Smecher .slave = &dm81xx_mcspi2_hwmod, 1094d27cda29SGraeme Smecher .clk = "sysclk6_ck", 1095d27cda29SGraeme Smecher .user = OCP_USER_MPU, 1096d27cda29SGraeme Smecher }; 1097d27cda29SGraeme Smecher 1098d27cda29SGraeme Smecher static struct omap_hwmod_ocp_if dm81xx_l4_ls__mcspi3 = { 1099d27cda29SGraeme Smecher .master = &dm81xx_l4_ls_hwmod, 1100d27cda29SGraeme Smecher .slave = &dm81xx_mcspi3_hwmod, 1101d27cda29SGraeme Smecher .clk = "sysclk6_ck", 1102d27cda29SGraeme Smecher .user = OCP_USER_MPU, 1103d27cda29SGraeme Smecher }; 1104d27cda29SGraeme Smecher 1105d27cda29SGraeme Smecher static struct omap_hwmod_ocp_if dm81xx_l4_ls__mcspi4 = { 1106d27cda29SGraeme Smecher .master = &dm81xx_l4_ls_hwmod, 1107d27cda29SGraeme Smecher .slave = &dm81xx_mcspi4_hwmod, 1108d27cda29SGraeme Smecher .clk = "sysclk6_ck", 1109d27cda29SGraeme Smecher .user = OCP_USER_MPU, 1110d27cda29SGraeme Smecher }; 1111d27cda29SGraeme Smecher 11127e1b11d1STony Lindgren static struct omap_hwmod_class_sysconfig dm81xx_mailbox_sysc = { 11134d38bd12STony Lindgren .rev_offs = 0x000, 11144d38bd12STony Lindgren .sysc_offs = 0x010, 11154d38bd12STony Lindgren .syss_offs = 0x014, 11164d38bd12STony Lindgren .sysc_flags = SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE | 11174d38bd12STony Lindgren SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE, 11184d38bd12STony Lindgren .idlemodes = SIDLE_FORCE | SIDLE_NO | SIDLE_SMART, 11194d38bd12STony Lindgren .sysc_fields = &omap_hwmod_sysc_type1, 11204d38bd12STony Lindgren }; 11214d38bd12STony Lindgren 11227e1b11d1STony Lindgren static struct omap_hwmod_class dm81xx_mailbox_hwmod_class = { 11234d38bd12STony Lindgren .name = "mailbox", 11247e1b11d1STony Lindgren .sysc = &dm81xx_mailbox_sysc, 11254d38bd12STony Lindgren }; 11264d38bd12STony Lindgren 11277e1b11d1STony Lindgren static struct omap_hwmod dm81xx_mailbox_hwmod = { 11284d38bd12STony Lindgren .name = "mailbox", 11294d38bd12STony Lindgren .clkdm_name = "alwon_l3s_clkdm", 11307e1b11d1STony Lindgren .class = &dm81xx_mailbox_hwmod_class, 11314d38bd12STony Lindgren .main_clk = "sysclk6_ck", 11324d38bd12STony Lindgren .prcm = { 11334d38bd12STony Lindgren .omap4 = { 11347e1b11d1STony Lindgren .clkctrl_offs = DM81XX_CM_ALWON_MAILBOX_CLKCTRL, 11354d38bd12STony Lindgren .modulemode = MODULEMODE_SWCTRL, 11364d38bd12STony Lindgren }, 11374d38bd12STony Lindgren }, 11384d38bd12STony Lindgren }; 11394d38bd12STony Lindgren 11407e1b11d1STony Lindgren static struct omap_hwmod_ocp_if dm81xx_l4_ls__mailbox = { 11417e1b11d1STony Lindgren .master = &dm81xx_l4_ls_hwmod, 11427e1b11d1STony Lindgren .slave = &dm81xx_mailbox_hwmod, 11434f5395f0STony Lindgren .clk = "sysclk6_ck", 11444d38bd12STony Lindgren .user = OCP_USER_MPU, 11454d38bd12STony Lindgren }; 11464d38bd12STony Lindgren 11471539569bSNeil Armstrong static struct omap_hwmod_class_sysconfig dm81xx_spinbox_sysc = { 11481539569bSNeil Armstrong .rev_offs = 0x000, 11491539569bSNeil Armstrong .sysc_offs = 0x010, 11501539569bSNeil Armstrong .syss_offs = 0x014, 11511539569bSNeil Armstrong .sysc_flags = SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE | 11521539569bSNeil Armstrong SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE, 11531539569bSNeil Armstrong .idlemodes = SIDLE_FORCE | SIDLE_NO | SIDLE_SMART, 11541539569bSNeil Armstrong .sysc_fields = &omap_hwmod_sysc_type1, 11551539569bSNeil Armstrong }; 11561539569bSNeil Armstrong 11571539569bSNeil Armstrong static struct omap_hwmod_class dm81xx_spinbox_hwmod_class = { 11581539569bSNeil Armstrong .name = "spinbox", 11591539569bSNeil Armstrong .sysc = &dm81xx_spinbox_sysc, 11601539569bSNeil Armstrong }; 11611539569bSNeil Armstrong 11621539569bSNeil Armstrong static struct omap_hwmod dm81xx_spinbox_hwmod = { 11631539569bSNeil Armstrong .name = "spinbox", 11641539569bSNeil Armstrong .clkdm_name = "alwon_l3s_clkdm", 11651539569bSNeil Armstrong .class = &dm81xx_spinbox_hwmod_class, 11661539569bSNeil Armstrong .main_clk = "sysclk6_ck", 11671539569bSNeil Armstrong .prcm = { 11681539569bSNeil Armstrong .omap4 = { 11691539569bSNeil Armstrong .clkctrl_offs = DM81XX_CM_ALWON_SPINBOX_CLKCTRL, 11701539569bSNeil Armstrong .modulemode = MODULEMODE_SWCTRL, 11711539569bSNeil Armstrong }, 11721539569bSNeil Armstrong }, 11731539569bSNeil Armstrong }; 11741539569bSNeil Armstrong 11751539569bSNeil Armstrong static struct omap_hwmod_ocp_if dm81xx_l4_ls__spinbox = { 11761539569bSNeil Armstrong .master = &dm81xx_l4_ls_hwmod, 11771539569bSNeil Armstrong .slave = &dm81xx_spinbox_hwmod, 11784f5395f0STony Lindgren .clk = "sysclk6_ck", 11791539569bSNeil Armstrong .user = OCP_USER_MPU, 11801539569bSNeil Armstrong }; 11811539569bSNeil Armstrong 11820f3ccb24STony Lindgren /* 11830f3ccb24STony Lindgren * REVISIT: Test and enable the following once clocks work: 11840f3ccb24STony Lindgren * dm81xx_l4_ls__mailbox 11850f3ccb24STony Lindgren * 11860f3ccb24STony Lindgren * Also note that some devices share a single clkctrl_offs.. 11870f3ccb24STony Lindgren * For example, i2c1 and 3 share one, and i2c2 and 4 share one. 11880f3ccb24STony Lindgren */ 11890f3ccb24STony Lindgren static struct omap_hwmod_ocp_if *dm814x_hwmod_ocp_ifs[] __initdata = { 11900f3ccb24STony Lindgren &dm814x_mpu__alwon_l3_slow, 11910f3ccb24STony Lindgren &dm814x_mpu__alwon_l3_med, 11920f3ccb24STony Lindgren &dm81xx_alwon_l3_slow__l4_ls, 11930f3ccb24STony Lindgren &dm81xx_alwon_l3_slow__l4_hs, 11940f3ccb24STony Lindgren &dm81xx_l4_ls__uart1, 11950f3ccb24STony Lindgren &dm81xx_l4_ls__uart2, 11960f3ccb24STony Lindgren &dm81xx_l4_ls__uart3, 11970f3ccb24STony Lindgren &dm81xx_l4_ls__wd_timer1, 11980f3ccb24STony Lindgren &dm81xx_l4_ls__i2c1, 11990f3ccb24STony Lindgren &dm81xx_l4_ls__i2c2, 12003022b29dSTony Lindgren &dm81xx_l4_ls__gpio1, 12013022b29dSTony Lindgren &dm81xx_l4_ls__gpio2, 1202d27cda29SGraeme Smecher &dm81xx_l4_ls__gpio3, 1203d27cda29SGraeme Smecher &dm81xx_l4_ls__gpio4, 12040f3ccb24STony Lindgren &dm81xx_l4_ls__elm, 12050f3ccb24STony Lindgren &dm81xx_l4_ls__mcspi1, 1206d27cda29SGraeme Smecher &dm81xx_l4_ls__mcspi2, 1207d27cda29SGraeme Smecher &dm81xx_l4_ls__mcspi3, 1208d27cda29SGraeme Smecher &dm81xx_l4_ls__mcspi4, 1209c757fda8STony Lindgren &dm814x_l4_ls__mmc1, 1210c757fda8STony Lindgren &dm814x_l4_ls__mmc2, 1211c5803246STony Lindgren &ti81xx_l4_ls__rtc, 1212f53850b5STony Lindgren &dm81xx_alwon_l3_slow__gpmc, 1213f53850b5STony Lindgren &dm814x_default_l3_slow__usbss, 1214c757fda8STony Lindgren &dm814x_alwon_l3_med__mmc3, 12150f3ccb24STony Lindgren NULL, 12160f3ccb24STony Lindgren }; 12170f3ccb24STony Lindgren 12180f3ccb24STony Lindgren int __init dm814x_hwmod_init(void) 12190f3ccb24STony Lindgren { 12200f3ccb24STony Lindgren omap_hwmod_init(); 12210f3ccb24STony Lindgren return omap_hwmod_register_links(dm814x_hwmod_ocp_ifs); 12220f3ccb24STony Lindgren } 12230f3ccb24STony Lindgren 12244d38bd12STony Lindgren static struct omap_hwmod_ocp_if *dm816x_hwmod_ocp_ifs[] __initdata = { 12254d38bd12STony Lindgren &dm816x_mpu__alwon_l3_slow, 12264d38bd12STony Lindgren &dm816x_mpu__alwon_l3_med, 12277e1b11d1STony Lindgren &dm81xx_alwon_l3_slow__l4_ls, 12287e1b11d1STony Lindgren &dm81xx_alwon_l3_slow__l4_hs, 12297e1b11d1STony Lindgren &dm81xx_l4_ls__uart1, 12307e1b11d1STony Lindgren &dm81xx_l4_ls__uart2, 12317e1b11d1STony Lindgren &dm81xx_l4_ls__uart3, 12327e1b11d1STony Lindgren &dm81xx_l4_ls__wd_timer1, 12337e1b11d1STony Lindgren &dm81xx_l4_ls__i2c1, 12347e1b11d1STony Lindgren &dm81xx_l4_ls__i2c2, 12354d38bd12STony Lindgren &dm81xx_l4_ls__gpio1, 12364d38bd12STony Lindgren &dm81xx_l4_ls__gpio2, 12374d38bd12STony Lindgren &dm81xx_l4_ls__elm, 1238c5803246STony Lindgren &ti81xx_l4_ls__rtc, 12394d38bd12STony Lindgren &dm816x_l4_ls__mmc1, 12404d38bd12STony Lindgren &dm816x_l4_ls__timer3, 12414d38bd12STony Lindgren &dm816x_l4_ls__timer4, 12424d38bd12STony Lindgren &dm816x_l4_ls__timer5, 12434d38bd12STony Lindgren &dm816x_l4_ls__timer6, 12444d38bd12STony Lindgren &dm816x_l4_ls__timer7, 12457e1b11d1STony Lindgren &dm81xx_l4_ls__mcspi1, 12467e1b11d1STony Lindgren &dm81xx_l4_ls__mailbox, 12471539569bSNeil Armstrong &dm81xx_l4_ls__spinbox, 12487e1b11d1STony Lindgren &dm81xx_l4_hs__emac0, 12497e1b11d1STony Lindgren &dm81xx_emac0__mdio, 12504d38bd12STony Lindgren &dm816x_l4_hs__emac1, 125149e9e616SKevin Hilman &dm81xx_l4_hs__sata, 12524d38bd12STony Lindgren &dm81xx_alwon_l3_slow__gpmc, 1253f53850b5STony Lindgren &dm816x_default_l3_slow__usbss, 12544d38bd12STony Lindgren NULL, 12554d38bd12STony Lindgren }; 12564d38bd12STony Lindgren 12570f3ccb24STony Lindgren int __init dm816x_hwmod_init(void) 12584d38bd12STony Lindgren { 12594d38bd12STony Lindgren omap_hwmod_init(); 12604d38bd12STony Lindgren return omap_hwmod_register_links(dm816x_hwmod_ocp_ifs); 12614d38bd12STony Lindgren } 1262