xref: /linux/arch/arm/mach-omap2/omap_hwmod_81xx_data.c (revision 52e6676ef56f4803b1ef14ed427c5824050163a3)
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