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
dm814x_hwmod_init(void)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
dm816x_hwmod_init(void)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