162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * DM81xx hwmod data.
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Copyright (C) 2010 Texas Instruments, Inc. - https://www.ti.com/
662306a36Sopenharmony_ci * Copyright (C) 2013 SKTB SKiT, http://www.skitlab.ru/
762306a36Sopenharmony_ci */
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#include <linux/types.h>
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#include <linux/platform_data/hsmmc-omap.h>
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci#include "omap_hwmod_common_data.h"
1462306a36Sopenharmony_ci#include "cm81xx.h"
1562306a36Sopenharmony_ci#include "ti81xx.h"
1662306a36Sopenharmony_ci#include "wd_timer.h"
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci/*
1962306a36Sopenharmony_ci * DM816X hardware modules integration data
2062306a36Sopenharmony_ci *
2162306a36Sopenharmony_ci * Note: This is incomplete and at present, not generated from h/w database.
2262306a36Sopenharmony_ci */
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci/*
2562306a36Sopenharmony_ci * Common alwon .clkctrl_offs from dm814x TRM "Table 2-278. CM_ALWON REGISTERS"
2662306a36Sopenharmony_ci * also dm816x TRM 18.7.17 CM_ALWON device register values minus 0x1400.
2762306a36Sopenharmony_ci */
2862306a36Sopenharmony_ci#define DM81XX_CM_ALWON_MCASP0_CLKCTRL		0x140
2962306a36Sopenharmony_ci#define DM81XX_CM_ALWON_MCASP1_CLKCTRL		0x144
3062306a36Sopenharmony_ci#define DM81XX_CM_ALWON_MCASP2_CLKCTRL		0x148
3162306a36Sopenharmony_ci#define DM81XX_CM_ALWON_MCBSP_CLKCTRL		0x14c
3262306a36Sopenharmony_ci#define DM81XX_CM_ALWON_UART_0_CLKCTRL		0x150
3362306a36Sopenharmony_ci#define DM81XX_CM_ALWON_UART_1_CLKCTRL		0x154
3462306a36Sopenharmony_ci#define DM81XX_CM_ALWON_UART_2_CLKCTRL		0x158
3562306a36Sopenharmony_ci#define DM81XX_CM_ALWON_GPIO_0_CLKCTRL		0x15c
3662306a36Sopenharmony_ci#define DM81XX_CM_ALWON_GPIO_1_CLKCTRL		0x160
3762306a36Sopenharmony_ci#define DM81XX_CM_ALWON_I2C_0_CLKCTRL		0x164
3862306a36Sopenharmony_ci#define DM81XX_CM_ALWON_I2C_1_CLKCTRL		0x168
3962306a36Sopenharmony_ci#define DM81XX_CM_ALWON_WDTIMER_CLKCTRL		0x18c
4062306a36Sopenharmony_ci#define DM81XX_CM_ALWON_SPI_CLKCTRL		0x190
4162306a36Sopenharmony_ci#define DM81XX_CM_ALWON_MAILBOX_CLKCTRL		0x194
4262306a36Sopenharmony_ci#define DM81XX_CM_ALWON_SPINBOX_CLKCTRL		0x198
4362306a36Sopenharmony_ci#define DM81XX_CM_ALWON_MMUDATA_CLKCTRL		0x19c
4462306a36Sopenharmony_ci#define DM81XX_CM_ALWON_MMUCFG_CLKCTRL		0x1a8
4562306a36Sopenharmony_ci#define DM81XX_CM_ALWON_CONTROL_CLKCTRL		0x1c4
4662306a36Sopenharmony_ci#define DM81XX_CM_ALWON_GPMC_CLKCTRL		0x1d0
4762306a36Sopenharmony_ci#define DM81XX_CM_ALWON_ETHERNET_0_CLKCTRL	0x1d4
4862306a36Sopenharmony_ci#define DM81XX_CM_ALWON_L3_CLKCTRL		0x1e4
4962306a36Sopenharmony_ci#define DM81XX_CM_ALWON_L4HS_CLKCTRL		0x1e8
5062306a36Sopenharmony_ci#define DM81XX_CM_ALWON_L4LS_CLKCTRL		0x1ec
5162306a36Sopenharmony_ci#define DM81XX_CM_ALWON_RTC_CLKCTRL		0x1f0
5262306a36Sopenharmony_ci#define DM81XX_CM_ALWON_TPCC_CLKCTRL		0x1f4
5362306a36Sopenharmony_ci#define DM81XX_CM_ALWON_TPTC0_CLKCTRL		0x1f8
5462306a36Sopenharmony_ci#define DM81XX_CM_ALWON_TPTC1_CLKCTRL		0x1fc
5562306a36Sopenharmony_ci#define DM81XX_CM_ALWON_TPTC2_CLKCTRL		0x200
5662306a36Sopenharmony_ci#define DM81XX_CM_ALWON_TPTC3_CLKCTRL		0x204
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ci/* Registers specific to dm814x */
5962306a36Sopenharmony_ci#define DM814X_CM_ALWON_MCASP_3_4_5_CLKCTRL	0x16c
6062306a36Sopenharmony_ci#define DM814X_CM_ALWON_ATL_CLKCTRL		0x170
6162306a36Sopenharmony_ci#define DM814X_CM_ALWON_MLB_CLKCTRL		0x174
6262306a36Sopenharmony_ci#define DM814X_CM_ALWON_PATA_CLKCTRL		0x178
6362306a36Sopenharmony_ci#define DM814X_CM_ALWON_UART_3_CLKCTRL		0x180
6462306a36Sopenharmony_ci#define DM814X_CM_ALWON_UART_4_CLKCTRL		0x184
6562306a36Sopenharmony_ci#define DM814X_CM_ALWON_UART_5_CLKCTRL		0x188
6662306a36Sopenharmony_ci#define DM814X_CM_ALWON_OCM_0_CLKCTRL		0x1b4
6762306a36Sopenharmony_ci#define DM814X_CM_ALWON_VCP_CLKCTRL		0x1b8
6862306a36Sopenharmony_ci#define DM814X_CM_ALWON_MPU_CLKCTRL		0x1dc
6962306a36Sopenharmony_ci#define DM814X_CM_ALWON_DEBUGSS_CLKCTRL		0x1e0
7062306a36Sopenharmony_ci#define DM814X_CM_ALWON_DCAN_0_1_CLKCTRL	0x218
7162306a36Sopenharmony_ci#define DM814X_CM_ALWON_MMCHS_0_CLKCTRL		0x21c
7262306a36Sopenharmony_ci#define DM814X_CM_ALWON_MMCHS_1_CLKCTRL		0x220
7362306a36Sopenharmony_ci#define DM814X_CM_ALWON_MMCHS_2_CLKCTRL		0x224
7462306a36Sopenharmony_ci#define DM814X_CM_ALWON_CUST_EFUSE_CLKCTRL	0x228
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ci/* Registers specific to dm816x */
7762306a36Sopenharmony_ci#define DM816X_DM_ALWON_BASE		0x1400
7862306a36Sopenharmony_ci#define DM816X_CM_ALWON_TIMER_1_CLKCTRL	(0x1570 - DM816X_DM_ALWON_BASE)
7962306a36Sopenharmony_ci#define DM816X_CM_ALWON_TIMER_2_CLKCTRL	(0x1574 - DM816X_DM_ALWON_BASE)
8062306a36Sopenharmony_ci#define DM816X_CM_ALWON_TIMER_3_CLKCTRL	(0x1578 - DM816X_DM_ALWON_BASE)
8162306a36Sopenharmony_ci#define DM816X_CM_ALWON_TIMER_4_CLKCTRL	(0x157c - DM816X_DM_ALWON_BASE)
8262306a36Sopenharmony_ci#define DM816X_CM_ALWON_TIMER_5_CLKCTRL	(0x1580 - DM816X_DM_ALWON_BASE)
8362306a36Sopenharmony_ci#define DM816X_CM_ALWON_TIMER_6_CLKCTRL	(0x1584 - DM816X_DM_ALWON_BASE)
8462306a36Sopenharmony_ci#define DM816X_CM_ALWON_TIMER_7_CLKCTRL	(0x1588 - DM816X_DM_ALWON_BASE)
8562306a36Sopenharmony_ci#define DM816X_CM_ALWON_SDIO_CLKCTRL	(0x15b0 - DM816X_DM_ALWON_BASE)
8662306a36Sopenharmony_ci#define DM816X_CM_ALWON_OCMC_0_CLKCTRL	(0x15b4 - DM816X_DM_ALWON_BASE)
8762306a36Sopenharmony_ci#define DM816X_CM_ALWON_OCMC_1_CLKCTRL	(0x15b8 - DM816X_DM_ALWON_BASE)
8862306a36Sopenharmony_ci#define DM816X_CM_ALWON_ETHERNET_1_CLKCTRL (0x15d8 - DM816X_DM_ALWON_BASE)
8962306a36Sopenharmony_ci#define DM816X_CM_ALWON_MPU_CLKCTRL	(0x15dc - DM816X_DM_ALWON_BASE)
9062306a36Sopenharmony_ci#define DM816X_CM_ALWON_SR_0_CLKCTRL	(0x1608 - DM816X_DM_ALWON_BASE)
9162306a36Sopenharmony_ci#define DM816X_CM_ALWON_SR_1_CLKCTRL	(0x160c - DM816X_DM_ALWON_BASE)
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_ci/*
9462306a36Sopenharmony_ci * The default .clkctrl_offs field is offset from CM_DEFAULT, that's
9562306a36Sopenharmony_ci * TRM 18.7.6 CM_DEFAULT device register values minus 0x500
9662306a36Sopenharmony_ci */
9762306a36Sopenharmony_ci#define DM81XX_CM_DEFAULT_OFFSET	0x500
9862306a36Sopenharmony_ci#define DM81XX_CM_DEFAULT_USB_CLKCTRL	(0x558 - DM81XX_CM_DEFAULT_OFFSET)
9962306a36Sopenharmony_ci#define DM81XX_CM_DEFAULT_SATA_CLKCTRL	(0x560 - DM81XX_CM_DEFAULT_OFFSET)
10062306a36Sopenharmony_ci
10162306a36Sopenharmony_ci/* L3 Interconnect entries clocked at 125, 250 and 500MHz */
10262306a36Sopenharmony_cistatic struct omap_hwmod dm81xx_alwon_l3_slow_hwmod = {
10362306a36Sopenharmony_ci	.name		= "alwon_l3_slow",
10462306a36Sopenharmony_ci	.clkdm_name	= "alwon_l3s_clkdm",
10562306a36Sopenharmony_ci	.class		= &l3_hwmod_class,
10662306a36Sopenharmony_ci	.flags		= HWMOD_NO_IDLEST,
10762306a36Sopenharmony_ci};
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_cistatic struct omap_hwmod dm81xx_default_l3_slow_hwmod = {
11062306a36Sopenharmony_ci	.name		= "default_l3_slow",
11162306a36Sopenharmony_ci	.clkdm_name	= "default_l3_slow_clkdm",
11262306a36Sopenharmony_ci	.class		= &l3_hwmod_class,
11362306a36Sopenharmony_ci	.flags		= HWMOD_NO_IDLEST,
11462306a36Sopenharmony_ci};
11562306a36Sopenharmony_ci
11662306a36Sopenharmony_cistatic struct omap_hwmod dm81xx_alwon_l3_med_hwmod = {
11762306a36Sopenharmony_ci	.name		= "l3_med",
11862306a36Sopenharmony_ci	.clkdm_name	= "alwon_l3_med_clkdm",
11962306a36Sopenharmony_ci	.class		= &l3_hwmod_class,
12062306a36Sopenharmony_ci	.flags		= HWMOD_NO_IDLEST,
12162306a36Sopenharmony_ci};
12262306a36Sopenharmony_ci
12362306a36Sopenharmony_ci/*
12462306a36Sopenharmony_ci * L4 standard peripherals, see TRM table 1-12 for devices using this.
12562306a36Sopenharmony_ci * See TRM table 1-73 for devices using the 125MHz SYSCLK6 clock.
12662306a36Sopenharmony_ci */
12762306a36Sopenharmony_cistatic struct omap_hwmod dm81xx_l4_ls_hwmod = {
12862306a36Sopenharmony_ci	.name		= "l4_ls",
12962306a36Sopenharmony_ci	.clkdm_name	= "alwon_l3s_clkdm",
13062306a36Sopenharmony_ci	.class		= &l4_hwmod_class,
13162306a36Sopenharmony_ci	.flags		= HWMOD_NO_IDLEST,
13262306a36Sopenharmony_ci};
13362306a36Sopenharmony_ci
13462306a36Sopenharmony_ci/*
13562306a36Sopenharmony_ci * L4 high-speed peripherals. For devices using this, please see the TRM
13662306a36Sopenharmony_ci * table 1-13. On dm816x, only EMAC, MDIO and SATA use this. See also TRM
13762306a36Sopenharmony_ci * table 1-73 for devices using 250MHz SYSCLK5 clock.
13862306a36Sopenharmony_ci */
13962306a36Sopenharmony_cistatic struct omap_hwmod dm81xx_l4_hs_hwmod = {
14062306a36Sopenharmony_ci	.name		= "l4_hs",
14162306a36Sopenharmony_ci	.clkdm_name	= "alwon_l3_med_clkdm",
14262306a36Sopenharmony_ci	.class		= &l4_hwmod_class,
14362306a36Sopenharmony_ci	.flags		= HWMOD_NO_IDLEST,
14462306a36Sopenharmony_ci};
14562306a36Sopenharmony_ci
14662306a36Sopenharmony_ci/* L3 slow -> L4 ls peripheral interface running at 125MHz */
14762306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm81xx_alwon_l3_slow__l4_ls = {
14862306a36Sopenharmony_ci	.master	= &dm81xx_alwon_l3_slow_hwmod,
14962306a36Sopenharmony_ci	.slave	= &dm81xx_l4_ls_hwmod,
15062306a36Sopenharmony_ci	.user	= OCP_USER_MPU,
15162306a36Sopenharmony_ci};
15262306a36Sopenharmony_ci
15362306a36Sopenharmony_ci/* L3 med -> L4 fast peripheral interface running at 250MHz */
15462306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm81xx_alwon_l3_slow__l4_hs = {
15562306a36Sopenharmony_ci	.master	= &dm81xx_alwon_l3_med_hwmod,
15662306a36Sopenharmony_ci	.slave	= &dm81xx_l4_hs_hwmod,
15762306a36Sopenharmony_ci	.user	= OCP_USER_MPU,
15862306a36Sopenharmony_ci};
15962306a36Sopenharmony_ci
16062306a36Sopenharmony_ci/* MPU */
16162306a36Sopenharmony_cistatic struct omap_hwmod dm814x_mpu_hwmod = {
16262306a36Sopenharmony_ci	.name		= "mpu",
16362306a36Sopenharmony_ci	.clkdm_name	= "alwon_l3s_clkdm",
16462306a36Sopenharmony_ci	.class		= &mpu_hwmod_class,
16562306a36Sopenharmony_ci	.flags		= HWMOD_INIT_NO_IDLE,
16662306a36Sopenharmony_ci	.main_clk	= "mpu_ck",
16762306a36Sopenharmony_ci	.prcm		= {
16862306a36Sopenharmony_ci		.omap4 = {
16962306a36Sopenharmony_ci			.clkctrl_offs = DM814X_CM_ALWON_MPU_CLKCTRL,
17062306a36Sopenharmony_ci			.modulemode = MODULEMODE_SWCTRL,
17162306a36Sopenharmony_ci		},
17262306a36Sopenharmony_ci	},
17362306a36Sopenharmony_ci};
17462306a36Sopenharmony_ci
17562306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm814x_mpu__alwon_l3_slow = {
17662306a36Sopenharmony_ci	.master		= &dm814x_mpu_hwmod,
17762306a36Sopenharmony_ci	.slave		= &dm81xx_alwon_l3_slow_hwmod,
17862306a36Sopenharmony_ci	.user		= OCP_USER_MPU,
17962306a36Sopenharmony_ci};
18062306a36Sopenharmony_ci
18162306a36Sopenharmony_ci/* L3 med peripheral interface running at 200MHz */
18262306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm814x_mpu__alwon_l3_med = {
18362306a36Sopenharmony_ci	.master	= &dm814x_mpu_hwmod,
18462306a36Sopenharmony_ci	.slave	= &dm81xx_alwon_l3_med_hwmod,
18562306a36Sopenharmony_ci	.user	= OCP_USER_MPU,
18662306a36Sopenharmony_ci};
18762306a36Sopenharmony_ci
18862306a36Sopenharmony_cistatic struct omap_hwmod dm816x_mpu_hwmod = {
18962306a36Sopenharmony_ci	.name		= "mpu",
19062306a36Sopenharmony_ci	.clkdm_name	= "alwon_mpu_clkdm",
19162306a36Sopenharmony_ci	.class		= &mpu_hwmod_class,
19262306a36Sopenharmony_ci	.flags		= HWMOD_INIT_NO_IDLE,
19362306a36Sopenharmony_ci	.main_clk	= "mpu_ck",
19462306a36Sopenharmony_ci	.prcm		= {
19562306a36Sopenharmony_ci		.omap4 = {
19662306a36Sopenharmony_ci			.clkctrl_offs = DM816X_CM_ALWON_MPU_CLKCTRL,
19762306a36Sopenharmony_ci			.modulemode = MODULEMODE_SWCTRL,
19862306a36Sopenharmony_ci		},
19962306a36Sopenharmony_ci	},
20062306a36Sopenharmony_ci};
20162306a36Sopenharmony_ci
20262306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm816x_mpu__alwon_l3_slow = {
20362306a36Sopenharmony_ci	.master		= &dm816x_mpu_hwmod,
20462306a36Sopenharmony_ci	.slave		= &dm81xx_alwon_l3_slow_hwmod,
20562306a36Sopenharmony_ci	.user		= OCP_USER_MPU,
20662306a36Sopenharmony_ci};
20762306a36Sopenharmony_ci
20862306a36Sopenharmony_ci/* L3 med peripheral interface running at 250MHz */
20962306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm816x_mpu__alwon_l3_med = {
21062306a36Sopenharmony_ci	.master	= &dm816x_mpu_hwmod,
21162306a36Sopenharmony_ci	.slave	= &dm81xx_alwon_l3_med_hwmod,
21262306a36Sopenharmony_ci	.user	= OCP_USER_MPU,
21362306a36Sopenharmony_ci};
21462306a36Sopenharmony_ci
21562306a36Sopenharmony_ci/* RTC */
21662306a36Sopenharmony_cistatic struct omap_hwmod_class_sysconfig ti81xx_rtc_sysc = {
21762306a36Sopenharmony_ci	.rev_offs	= 0x74,
21862306a36Sopenharmony_ci	.sysc_offs	= 0x78,
21962306a36Sopenharmony_ci	.sysc_flags	= SYSC_HAS_SIDLEMODE,
22062306a36Sopenharmony_ci	.idlemodes	= SIDLE_FORCE | SIDLE_NO |
22162306a36Sopenharmony_ci			  SIDLE_SMART | SIDLE_SMART_WKUP,
22262306a36Sopenharmony_ci	.sysc_fields	= &omap_hwmod_sysc_type3,
22362306a36Sopenharmony_ci};
22462306a36Sopenharmony_ci
22562306a36Sopenharmony_cistatic struct omap_hwmod_class ti81xx_rtc_hwmod_class = {
22662306a36Sopenharmony_ci	.name		= "rtc",
22762306a36Sopenharmony_ci	.sysc		= &ti81xx_rtc_sysc,
22862306a36Sopenharmony_ci};
22962306a36Sopenharmony_ci
23062306a36Sopenharmony_cistatic struct omap_hwmod ti81xx_rtc_hwmod = {
23162306a36Sopenharmony_ci	.name		= "rtc",
23262306a36Sopenharmony_ci	.class		= &ti81xx_rtc_hwmod_class,
23362306a36Sopenharmony_ci	.clkdm_name	= "alwon_l3s_clkdm",
23462306a36Sopenharmony_ci	.flags		= HWMOD_NO_IDLEST,
23562306a36Sopenharmony_ci	.main_clk	= "sysclk18_ck",
23662306a36Sopenharmony_ci	.prcm		= {
23762306a36Sopenharmony_ci		.omap4	= {
23862306a36Sopenharmony_ci			.clkctrl_offs = DM81XX_CM_ALWON_RTC_CLKCTRL,
23962306a36Sopenharmony_ci			.modulemode = MODULEMODE_SWCTRL,
24062306a36Sopenharmony_ci		},
24162306a36Sopenharmony_ci	},
24262306a36Sopenharmony_ci};
24362306a36Sopenharmony_ci
24462306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if ti81xx_l4_ls__rtc = {
24562306a36Sopenharmony_ci	.master		= &dm81xx_l4_ls_hwmod,
24662306a36Sopenharmony_ci	.slave		= &ti81xx_rtc_hwmod,
24762306a36Sopenharmony_ci	.clk		= "sysclk6_ck",
24862306a36Sopenharmony_ci	.user		= OCP_USER_MPU,
24962306a36Sopenharmony_ci};
25062306a36Sopenharmony_ci
25162306a36Sopenharmony_ci/* UART common */
25262306a36Sopenharmony_cistatic struct omap_hwmod_class_sysconfig uart_sysc = {
25362306a36Sopenharmony_ci	.rev_offs	= 0x50,
25462306a36Sopenharmony_ci	.sysc_offs	= 0x54,
25562306a36Sopenharmony_ci	.syss_offs	= 0x58,
25662306a36Sopenharmony_ci	.sysc_flags	= SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
25762306a36Sopenharmony_ci				SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
25862306a36Sopenharmony_ci				SYSS_HAS_RESET_STATUS,
25962306a36Sopenharmony_ci	.idlemodes	= SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
26062306a36Sopenharmony_ci				MSTANDBY_SMART_WKUP,
26162306a36Sopenharmony_ci	.sysc_fields	= &omap_hwmod_sysc_type1,
26262306a36Sopenharmony_ci};
26362306a36Sopenharmony_ci
26462306a36Sopenharmony_cistatic struct omap_hwmod_class uart_class = {
26562306a36Sopenharmony_ci	.name = "uart",
26662306a36Sopenharmony_ci	.sysc = &uart_sysc,
26762306a36Sopenharmony_ci};
26862306a36Sopenharmony_ci
26962306a36Sopenharmony_cistatic struct omap_hwmod dm81xx_uart1_hwmod = {
27062306a36Sopenharmony_ci	.name		= "uart1",
27162306a36Sopenharmony_ci	.clkdm_name	= "alwon_l3s_clkdm",
27262306a36Sopenharmony_ci	.main_clk	= "sysclk10_ck",
27362306a36Sopenharmony_ci	.prcm		= {
27462306a36Sopenharmony_ci		.omap4 = {
27562306a36Sopenharmony_ci			.clkctrl_offs = DM81XX_CM_ALWON_UART_0_CLKCTRL,
27662306a36Sopenharmony_ci			.modulemode = MODULEMODE_SWCTRL,
27762306a36Sopenharmony_ci		},
27862306a36Sopenharmony_ci	},
27962306a36Sopenharmony_ci	.class		= &uart_class,
28062306a36Sopenharmony_ci	.flags		= DEBUG_TI81XXUART1_FLAGS,
28162306a36Sopenharmony_ci};
28262306a36Sopenharmony_ci
28362306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm81xx_l4_ls__uart1 = {
28462306a36Sopenharmony_ci	.master		= &dm81xx_l4_ls_hwmod,
28562306a36Sopenharmony_ci	.slave		= &dm81xx_uart1_hwmod,
28662306a36Sopenharmony_ci	.clk		= "sysclk6_ck",
28762306a36Sopenharmony_ci	.user		= OCP_USER_MPU,
28862306a36Sopenharmony_ci};
28962306a36Sopenharmony_ci
29062306a36Sopenharmony_cistatic struct omap_hwmod dm81xx_uart2_hwmod = {
29162306a36Sopenharmony_ci	.name		= "uart2",
29262306a36Sopenharmony_ci	.clkdm_name	= "alwon_l3s_clkdm",
29362306a36Sopenharmony_ci	.main_clk	= "sysclk10_ck",
29462306a36Sopenharmony_ci	.prcm		= {
29562306a36Sopenharmony_ci		.omap4 = {
29662306a36Sopenharmony_ci			.clkctrl_offs = DM81XX_CM_ALWON_UART_1_CLKCTRL,
29762306a36Sopenharmony_ci			.modulemode = MODULEMODE_SWCTRL,
29862306a36Sopenharmony_ci		},
29962306a36Sopenharmony_ci	},
30062306a36Sopenharmony_ci	.class		= &uart_class,
30162306a36Sopenharmony_ci	.flags		= DEBUG_TI81XXUART2_FLAGS,
30262306a36Sopenharmony_ci};
30362306a36Sopenharmony_ci
30462306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm81xx_l4_ls__uart2 = {
30562306a36Sopenharmony_ci	.master		= &dm81xx_l4_ls_hwmod,
30662306a36Sopenharmony_ci	.slave		= &dm81xx_uart2_hwmod,
30762306a36Sopenharmony_ci	.clk		= "sysclk6_ck",
30862306a36Sopenharmony_ci	.user		= OCP_USER_MPU,
30962306a36Sopenharmony_ci};
31062306a36Sopenharmony_ci
31162306a36Sopenharmony_cistatic struct omap_hwmod dm81xx_uart3_hwmod = {
31262306a36Sopenharmony_ci	.name		= "uart3",
31362306a36Sopenharmony_ci	.clkdm_name	= "alwon_l3s_clkdm",
31462306a36Sopenharmony_ci	.main_clk	= "sysclk10_ck",
31562306a36Sopenharmony_ci	.prcm		= {
31662306a36Sopenharmony_ci		.omap4 = {
31762306a36Sopenharmony_ci			.clkctrl_offs = DM81XX_CM_ALWON_UART_2_CLKCTRL,
31862306a36Sopenharmony_ci			.modulemode = MODULEMODE_SWCTRL,
31962306a36Sopenharmony_ci		},
32062306a36Sopenharmony_ci	},
32162306a36Sopenharmony_ci	.class		= &uart_class,
32262306a36Sopenharmony_ci	.flags		= DEBUG_TI81XXUART3_FLAGS,
32362306a36Sopenharmony_ci};
32462306a36Sopenharmony_ci
32562306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm81xx_l4_ls__uart3 = {
32662306a36Sopenharmony_ci	.master		= &dm81xx_l4_ls_hwmod,
32762306a36Sopenharmony_ci	.slave		= &dm81xx_uart3_hwmod,
32862306a36Sopenharmony_ci	.clk		= "sysclk6_ck",
32962306a36Sopenharmony_ci	.user		= OCP_USER_MPU,
33062306a36Sopenharmony_ci};
33162306a36Sopenharmony_ci
33262306a36Sopenharmony_cistatic struct omap_hwmod_class_sysconfig wd_timer_sysc = {
33362306a36Sopenharmony_ci	.rev_offs	= 0x0,
33462306a36Sopenharmony_ci	.sysc_offs	= 0x10,
33562306a36Sopenharmony_ci	.syss_offs	= 0x14,
33662306a36Sopenharmony_ci	.sysc_flags	= SYSC_HAS_EMUFREE | SYSC_HAS_SOFTRESET |
33762306a36Sopenharmony_ci				SYSS_HAS_RESET_STATUS,
33862306a36Sopenharmony_ci	.sysc_fields	= &omap_hwmod_sysc_type1,
33962306a36Sopenharmony_ci};
34062306a36Sopenharmony_ci
34162306a36Sopenharmony_cistatic struct omap_hwmod_class wd_timer_class = {
34262306a36Sopenharmony_ci	.name		= "wd_timer",
34362306a36Sopenharmony_ci	.sysc		= &wd_timer_sysc,
34462306a36Sopenharmony_ci	.pre_shutdown	= &omap2_wd_timer_disable,
34562306a36Sopenharmony_ci	.reset		= &omap2_wd_timer_reset,
34662306a36Sopenharmony_ci};
34762306a36Sopenharmony_ci
34862306a36Sopenharmony_cistatic struct omap_hwmod dm81xx_wd_timer_hwmod = {
34962306a36Sopenharmony_ci	.name		= "wd_timer",
35062306a36Sopenharmony_ci	.clkdm_name	= "alwon_l3s_clkdm",
35162306a36Sopenharmony_ci	.main_clk	= "sysclk18_ck",
35262306a36Sopenharmony_ci	.flags		= HWMOD_NO_IDLEST,
35362306a36Sopenharmony_ci	.prcm		= {
35462306a36Sopenharmony_ci		.omap4 = {
35562306a36Sopenharmony_ci			.clkctrl_offs = DM81XX_CM_ALWON_WDTIMER_CLKCTRL,
35662306a36Sopenharmony_ci			.modulemode = MODULEMODE_SWCTRL,
35762306a36Sopenharmony_ci		},
35862306a36Sopenharmony_ci	},
35962306a36Sopenharmony_ci	.class		= &wd_timer_class,
36062306a36Sopenharmony_ci};
36162306a36Sopenharmony_ci
36262306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm81xx_l4_ls__wd_timer1 = {
36362306a36Sopenharmony_ci	.master		= &dm81xx_l4_ls_hwmod,
36462306a36Sopenharmony_ci	.slave		= &dm81xx_wd_timer_hwmod,
36562306a36Sopenharmony_ci	.clk		= "sysclk6_ck",
36662306a36Sopenharmony_ci	.user		= OCP_USER_MPU,
36762306a36Sopenharmony_ci};
36862306a36Sopenharmony_ci
36962306a36Sopenharmony_ci/* I2C common */
37062306a36Sopenharmony_cistatic struct omap_hwmod_class_sysconfig i2c_sysc = {
37162306a36Sopenharmony_ci	.rev_offs	= 0x0,
37262306a36Sopenharmony_ci	.sysc_offs	= 0x10,
37362306a36Sopenharmony_ci	.syss_offs	= 0x90,
37462306a36Sopenharmony_ci	.sysc_flags	= SYSC_HAS_SIDLEMODE |
37562306a36Sopenharmony_ci				SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
37662306a36Sopenharmony_ci				SYSC_HAS_AUTOIDLE,
37762306a36Sopenharmony_ci	.idlemodes	= SIDLE_FORCE | SIDLE_NO | SIDLE_SMART,
37862306a36Sopenharmony_ci	.sysc_fields	= &omap_hwmod_sysc_type1,
37962306a36Sopenharmony_ci};
38062306a36Sopenharmony_ci
38162306a36Sopenharmony_cistatic struct omap_hwmod_class i2c_class = {
38262306a36Sopenharmony_ci	.name = "i2c",
38362306a36Sopenharmony_ci	.sysc = &i2c_sysc,
38462306a36Sopenharmony_ci};
38562306a36Sopenharmony_ci
38662306a36Sopenharmony_cistatic struct omap_hwmod dm81xx_i2c1_hwmod = {
38762306a36Sopenharmony_ci	.name		= "i2c1",
38862306a36Sopenharmony_ci	.clkdm_name	= "alwon_l3s_clkdm",
38962306a36Sopenharmony_ci	.main_clk	= "sysclk10_ck",
39062306a36Sopenharmony_ci	.prcm		= {
39162306a36Sopenharmony_ci		.omap4 = {
39262306a36Sopenharmony_ci			.clkctrl_offs = DM81XX_CM_ALWON_I2C_0_CLKCTRL,
39362306a36Sopenharmony_ci			.modulemode = MODULEMODE_SWCTRL,
39462306a36Sopenharmony_ci		},
39562306a36Sopenharmony_ci	},
39662306a36Sopenharmony_ci	.class		= &i2c_class,
39762306a36Sopenharmony_ci};
39862306a36Sopenharmony_ci
39962306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm81xx_l4_ls__i2c1 = {
40062306a36Sopenharmony_ci	.master		= &dm81xx_l4_ls_hwmod,
40162306a36Sopenharmony_ci	.slave		= &dm81xx_i2c1_hwmod,
40262306a36Sopenharmony_ci	.clk		= "sysclk6_ck",
40362306a36Sopenharmony_ci	.user		= OCP_USER_MPU,
40462306a36Sopenharmony_ci};
40562306a36Sopenharmony_ci
40662306a36Sopenharmony_cistatic struct omap_hwmod dm81xx_i2c2_hwmod = {
40762306a36Sopenharmony_ci	.name		= "i2c2",
40862306a36Sopenharmony_ci	.clkdm_name	= "alwon_l3s_clkdm",
40962306a36Sopenharmony_ci	.main_clk	= "sysclk10_ck",
41062306a36Sopenharmony_ci	.prcm		= {
41162306a36Sopenharmony_ci		.omap4 = {
41262306a36Sopenharmony_ci			.clkctrl_offs = DM81XX_CM_ALWON_I2C_1_CLKCTRL,
41362306a36Sopenharmony_ci			.modulemode = MODULEMODE_SWCTRL,
41462306a36Sopenharmony_ci		},
41562306a36Sopenharmony_ci	},
41662306a36Sopenharmony_ci	.class		= &i2c_class,
41762306a36Sopenharmony_ci};
41862306a36Sopenharmony_ci
41962306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm81xx_l4_ls__i2c2 = {
42062306a36Sopenharmony_ci	.master		= &dm81xx_l4_ls_hwmod,
42162306a36Sopenharmony_ci	.slave		= &dm81xx_i2c2_hwmod,
42262306a36Sopenharmony_ci	.clk		= "sysclk6_ck",
42362306a36Sopenharmony_ci	.user		= OCP_USER_MPU,
42462306a36Sopenharmony_ci};
42562306a36Sopenharmony_ci
42662306a36Sopenharmony_cistatic struct omap_hwmod_class_sysconfig dm81xx_elm_sysc = {
42762306a36Sopenharmony_ci	.rev_offs	= 0x0000,
42862306a36Sopenharmony_ci	.sysc_offs	= 0x0010,
42962306a36Sopenharmony_ci	.syss_offs	= 0x0014,
43062306a36Sopenharmony_ci	.sysc_flags	= SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
43162306a36Sopenharmony_ci				SYSC_HAS_SOFTRESET |
43262306a36Sopenharmony_ci				SYSS_HAS_RESET_STATUS,
43362306a36Sopenharmony_ci	.idlemodes	= SIDLE_FORCE | SIDLE_NO | SIDLE_SMART,
43462306a36Sopenharmony_ci	.sysc_fields	= &omap_hwmod_sysc_type1,
43562306a36Sopenharmony_ci};
43662306a36Sopenharmony_ci
43762306a36Sopenharmony_cistatic struct omap_hwmod_class dm81xx_elm_hwmod_class = {
43862306a36Sopenharmony_ci	.name = "elm",
43962306a36Sopenharmony_ci	.sysc = &dm81xx_elm_sysc,
44062306a36Sopenharmony_ci};
44162306a36Sopenharmony_ci
44262306a36Sopenharmony_cistatic struct omap_hwmod dm81xx_elm_hwmod = {
44362306a36Sopenharmony_ci	.name		= "elm",
44462306a36Sopenharmony_ci	.clkdm_name	= "alwon_l3s_clkdm",
44562306a36Sopenharmony_ci	.class		= &dm81xx_elm_hwmod_class,
44662306a36Sopenharmony_ci	.main_clk	= "sysclk6_ck",
44762306a36Sopenharmony_ci};
44862306a36Sopenharmony_ci
44962306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm81xx_l4_ls__elm = {
45062306a36Sopenharmony_ci	.master		= &dm81xx_l4_ls_hwmod,
45162306a36Sopenharmony_ci	.slave		= &dm81xx_elm_hwmod,
45262306a36Sopenharmony_ci	.clk		= "sysclk6_ck",
45362306a36Sopenharmony_ci	.user		= OCP_USER_MPU,
45462306a36Sopenharmony_ci};
45562306a36Sopenharmony_ci
45662306a36Sopenharmony_cistatic struct omap_hwmod_class_sysconfig dm81xx_gpio_sysc = {
45762306a36Sopenharmony_ci	.rev_offs	= 0x0000,
45862306a36Sopenharmony_ci	.sysc_offs	= 0x0010,
45962306a36Sopenharmony_ci	.syss_offs	= 0x0114,
46062306a36Sopenharmony_ci	.sysc_flags	= SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP |
46162306a36Sopenharmony_ci				SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
46262306a36Sopenharmony_ci				SYSS_HAS_RESET_STATUS,
46362306a36Sopenharmony_ci	.idlemodes	= SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
46462306a36Sopenharmony_ci				SIDLE_SMART_WKUP,
46562306a36Sopenharmony_ci	.sysc_fields	= &omap_hwmod_sysc_type1,
46662306a36Sopenharmony_ci};
46762306a36Sopenharmony_ci
46862306a36Sopenharmony_cistatic struct omap_hwmod_class dm81xx_gpio_hwmod_class = {
46962306a36Sopenharmony_ci	.name	= "gpio",
47062306a36Sopenharmony_ci	.sysc	= &dm81xx_gpio_sysc,
47162306a36Sopenharmony_ci};
47262306a36Sopenharmony_ci
47362306a36Sopenharmony_cistatic struct omap_hwmod_opt_clk gpio1_opt_clks[] = {
47462306a36Sopenharmony_ci	{ .role = "dbclk", .clk = "sysclk18_ck" },
47562306a36Sopenharmony_ci};
47662306a36Sopenharmony_ci
47762306a36Sopenharmony_cistatic struct omap_hwmod dm81xx_gpio1_hwmod = {
47862306a36Sopenharmony_ci	.name		= "gpio1",
47962306a36Sopenharmony_ci	.clkdm_name	= "alwon_l3s_clkdm",
48062306a36Sopenharmony_ci	.class		= &dm81xx_gpio_hwmod_class,
48162306a36Sopenharmony_ci	.main_clk	= "sysclk6_ck",
48262306a36Sopenharmony_ci	.prcm = {
48362306a36Sopenharmony_ci		.omap4 = {
48462306a36Sopenharmony_ci			.clkctrl_offs = DM81XX_CM_ALWON_GPIO_0_CLKCTRL,
48562306a36Sopenharmony_ci			.modulemode = MODULEMODE_SWCTRL,
48662306a36Sopenharmony_ci		},
48762306a36Sopenharmony_ci	},
48862306a36Sopenharmony_ci	.opt_clks	= gpio1_opt_clks,
48962306a36Sopenharmony_ci	.opt_clks_cnt	= ARRAY_SIZE(gpio1_opt_clks),
49062306a36Sopenharmony_ci};
49162306a36Sopenharmony_ci
49262306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm81xx_l4_ls__gpio1 = {
49362306a36Sopenharmony_ci	.master		= &dm81xx_l4_ls_hwmod,
49462306a36Sopenharmony_ci	.slave		= &dm81xx_gpio1_hwmod,
49562306a36Sopenharmony_ci	.clk		= "sysclk6_ck",
49662306a36Sopenharmony_ci	.user		= OCP_USER_MPU,
49762306a36Sopenharmony_ci};
49862306a36Sopenharmony_ci
49962306a36Sopenharmony_cistatic struct omap_hwmod_opt_clk gpio2_opt_clks[] = {
50062306a36Sopenharmony_ci	{ .role = "dbclk", .clk = "sysclk18_ck" },
50162306a36Sopenharmony_ci};
50262306a36Sopenharmony_ci
50362306a36Sopenharmony_cistatic struct omap_hwmod dm81xx_gpio2_hwmod = {
50462306a36Sopenharmony_ci	.name		= "gpio2",
50562306a36Sopenharmony_ci	.clkdm_name	= "alwon_l3s_clkdm",
50662306a36Sopenharmony_ci	.class		= &dm81xx_gpio_hwmod_class,
50762306a36Sopenharmony_ci	.main_clk	= "sysclk6_ck",
50862306a36Sopenharmony_ci	.prcm = {
50962306a36Sopenharmony_ci		.omap4 = {
51062306a36Sopenharmony_ci			.clkctrl_offs = DM81XX_CM_ALWON_GPIO_1_CLKCTRL,
51162306a36Sopenharmony_ci			.modulemode = MODULEMODE_SWCTRL,
51262306a36Sopenharmony_ci		},
51362306a36Sopenharmony_ci	},
51462306a36Sopenharmony_ci	.opt_clks	= gpio2_opt_clks,
51562306a36Sopenharmony_ci	.opt_clks_cnt	= ARRAY_SIZE(gpio2_opt_clks),
51662306a36Sopenharmony_ci};
51762306a36Sopenharmony_ci
51862306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm81xx_l4_ls__gpio2 = {
51962306a36Sopenharmony_ci	.master		= &dm81xx_l4_ls_hwmod,
52062306a36Sopenharmony_ci	.slave		= &dm81xx_gpio2_hwmod,
52162306a36Sopenharmony_ci	.clk		= "sysclk6_ck",
52262306a36Sopenharmony_ci	.user		= OCP_USER_MPU,
52362306a36Sopenharmony_ci};
52462306a36Sopenharmony_ci
52562306a36Sopenharmony_cistatic struct omap_hwmod_opt_clk gpio3_opt_clks[] = {
52662306a36Sopenharmony_ci	{ .role = "dbclk", .clk = "sysclk18_ck" },
52762306a36Sopenharmony_ci};
52862306a36Sopenharmony_ci
52962306a36Sopenharmony_cistatic struct omap_hwmod dm81xx_gpio3_hwmod = {
53062306a36Sopenharmony_ci	.name		= "gpio3",
53162306a36Sopenharmony_ci	.clkdm_name	= "alwon_l3s_clkdm",
53262306a36Sopenharmony_ci	.class		= &dm81xx_gpio_hwmod_class,
53362306a36Sopenharmony_ci	.main_clk	= "sysclk6_ck",
53462306a36Sopenharmony_ci	.prcm = {
53562306a36Sopenharmony_ci		.omap4 = {
53662306a36Sopenharmony_ci			.clkctrl_offs = DM81XX_CM_ALWON_GPIO_1_CLKCTRL,
53762306a36Sopenharmony_ci			.modulemode = MODULEMODE_SWCTRL,
53862306a36Sopenharmony_ci		},
53962306a36Sopenharmony_ci	},
54062306a36Sopenharmony_ci	.opt_clks	= gpio3_opt_clks,
54162306a36Sopenharmony_ci	.opt_clks_cnt	= ARRAY_SIZE(gpio3_opt_clks),
54262306a36Sopenharmony_ci};
54362306a36Sopenharmony_ci
54462306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm81xx_l4_ls__gpio3 = {
54562306a36Sopenharmony_ci	.master		= &dm81xx_l4_ls_hwmod,
54662306a36Sopenharmony_ci	.slave		= &dm81xx_gpio3_hwmod,
54762306a36Sopenharmony_ci	.clk		= "sysclk6_ck",
54862306a36Sopenharmony_ci	.user		= OCP_USER_MPU,
54962306a36Sopenharmony_ci};
55062306a36Sopenharmony_ci
55162306a36Sopenharmony_cistatic struct omap_hwmod_opt_clk gpio4_opt_clks[] = {
55262306a36Sopenharmony_ci	{ .role = "dbclk", .clk = "sysclk18_ck" },
55362306a36Sopenharmony_ci};
55462306a36Sopenharmony_ci
55562306a36Sopenharmony_cistatic struct omap_hwmod dm81xx_gpio4_hwmod = {
55662306a36Sopenharmony_ci	.name		= "gpio4",
55762306a36Sopenharmony_ci	.clkdm_name	= "alwon_l3s_clkdm",
55862306a36Sopenharmony_ci	.class		= &dm81xx_gpio_hwmod_class,
55962306a36Sopenharmony_ci	.main_clk	= "sysclk6_ck",
56062306a36Sopenharmony_ci	.prcm = {
56162306a36Sopenharmony_ci		.omap4 = {
56262306a36Sopenharmony_ci			.clkctrl_offs = DM81XX_CM_ALWON_GPIO_1_CLKCTRL,
56362306a36Sopenharmony_ci			.modulemode = MODULEMODE_SWCTRL,
56462306a36Sopenharmony_ci		},
56562306a36Sopenharmony_ci	},
56662306a36Sopenharmony_ci	.opt_clks	= gpio4_opt_clks,
56762306a36Sopenharmony_ci	.opt_clks_cnt	= ARRAY_SIZE(gpio4_opt_clks),
56862306a36Sopenharmony_ci};
56962306a36Sopenharmony_ci
57062306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm81xx_l4_ls__gpio4 = {
57162306a36Sopenharmony_ci	.master		= &dm81xx_l4_ls_hwmod,
57262306a36Sopenharmony_ci	.slave		= &dm81xx_gpio4_hwmod,
57362306a36Sopenharmony_ci	.clk		= "sysclk6_ck",
57462306a36Sopenharmony_ci	.user		= OCP_USER_MPU,
57562306a36Sopenharmony_ci};
57662306a36Sopenharmony_ci
57762306a36Sopenharmony_cistatic struct omap_hwmod_class_sysconfig dm81xx_gpmc_sysc = {
57862306a36Sopenharmony_ci	.rev_offs	= 0x0,
57962306a36Sopenharmony_ci	.sysc_offs	= 0x10,
58062306a36Sopenharmony_ci	.syss_offs	= 0x14,
58162306a36Sopenharmony_ci	.sysc_flags	= SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
58262306a36Sopenharmony_ci				SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS,
58362306a36Sopenharmony_ci	.idlemodes	= SIDLE_FORCE | SIDLE_NO | SIDLE_SMART,
58462306a36Sopenharmony_ci	.sysc_fields	= &omap_hwmod_sysc_type1,
58562306a36Sopenharmony_ci};
58662306a36Sopenharmony_ci
58762306a36Sopenharmony_cistatic struct omap_hwmod_class dm81xx_gpmc_hwmod_class = {
58862306a36Sopenharmony_ci	.name	= "gpmc",
58962306a36Sopenharmony_ci	.sysc	= &dm81xx_gpmc_sysc,
59062306a36Sopenharmony_ci};
59162306a36Sopenharmony_ci
59262306a36Sopenharmony_cistatic struct omap_hwmod dm81xx_gpmc_hwmod = {
59362306a36Sopenharmony_ci	.name		= "gpmc",
59462306a36Sopenharmony_ci	.clkdm_name	= "alwon_l3s_clkdm",
59562306a36Sopenharmony_ci	.class		= &dm81xx_gpmc_hwmod_class,
59662306a36Sopenharmony_ci	.main_clk	= "sysclk6_ck",
59762306a36Sopenharmony_ci	/* Skip reset for CONFIG_OMAP_GPMC_DEBUG for bootloader timings */
59862306a36Sopenharmony_ci	.flags		= DEBUG_OMAP_GPMC_HWMOD_FLAGS,
59962306a36Sopenharmony_ci	.prcm = {
60062306a36Sopenharmony_ci		.omap4 = {
60162306a36Sopenharmony_ci			.clkctrl_offs = DM81XX_CM_ALWON_GPMC_CLKCTRL,
60262306a36Sopenharmony_ci			.modulemode = MODULEMODE_SWCTRL,
60362306a36Sopenharmony_ci		},
60462306a36Sopenharmony_ci	},
60562306a36Sopenharmony_ci};
60662306a36Sopenharmony_ci
60762306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm81xx_alwon_l3_slow__gpmc = {
60862306a36Sopenharmony_ci	.master		= &dm81xx_alwon_l3_slow_hwmod,
60962306a36Sopenharmony_ci	.slave		= &dm81xx_gpmc_hwmod,
61062306a36Sopenharmony_ci	.user		= OCP_USER_MPU,
61162306a36Sopenharmony_ci};
61262306a36Sopenharmony_ci
61362306a36Sopenharmony_ci/* USB needs udelay 1 after reset at least on hp t410, use 2 for margin */
61462306a36Sopenharmony_cistatic struct omap_hwmod_class_sysconfig dm81xx_usbhsotg_sysc = {
61562306a36Sopenharmony_ci	.rev_offs	= 0x0,
61662306a36Sopenharmony_ci	.sysc_offs	= 0x10,
61762306a36Sopenharmony_ci	.srst_udelay	= 2,
61862306a36Sopenharmony_ci	.sysc_flags	= SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE |
61962306a36Sopenharmony_ci				SYSC_HAS_SOFTRESET,
62062306a36Sopenharmony_ci	.idlemodes	= SIDLE_SMART | MSTANDBY_FORCE | MSTANDBY_SMART,
62162306a36Sopenharmony_ci	.sysc_fields	= &omap_hwmod_sysc_type2,
62262306a36Sopenharmony_ci};
62362306a36Sopenharmony_ci
62462306a36Sopenharmony_cistatic struct omap_hwmod_class dm81xx_usbotg_class = {
62562306a36Sopenharmony_ci	.name = "usbotg",
62662306a36Sopenharmony_ci	.sysc = &dm81xx_usbhsotg_sysc,
62762306a36Sopenharmony_ci};
62862306a36Sopenharmony_ci
62962306a36Sopenharmony_cistatic struct omap_hwmod dm814x_usbss_hwmod = {
63062306a36Sopenharmony_ci	.name		= "usb_otg_hs",
63162306a36Sopenharmony_ci	.clkdm_name	= "default_l3_slow_clkdm",
63262306a36Sopenharmony_ci	.main_clk	= "pll260dcoclkldo",	/* 481c5260.adpll.dcoclkldo */
63362306a36Sopenharmony_ci	.prcm		= {
63462306a36Sopenharmony_ci		.omap4 = {
63562306a36Sopenharmony_ci			.clkctrl_offs = DM81XX_CM_DEFAULT_USB_CLKCTRL,
63662306a36Sopenharmony_ci			.modulemode = MODULEMODE_SWCTRL,
63762306a36Sopenharmony_ci		},
63862306a36Sopenharmony_ci	},
63962306a36Sopenharmony_ci	.class		= &dm81xx_usbotg_class,
64062306a36Sopenharmony_ci};
64162306a36Sopenharmony_ci
64262306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm814x_default_l3_slow__usbss = {
64362306a36Sopenharmony_ci	.master		= &dm81xx_default_l3_slow_hwmod,
64462306a36Sopenharmony_ci	.slave		= &dm814x_usbss_hwmod,
64562306a36Sopenharmony_ci	.clk		= "sysclk6_ck",
64662306a36Sopenharmony_ci	.user		= OCP_USER_MPU,
64762306a36Sopenharmony_ci};
64862306a36Sopenharmony_ci
64962306a36Sopenharmony_cistatic struct omap_hwmod dm816x_usbss_hwmod = {
65062306a36Sopenharmony_ci	.name		= "usb_otg_hs",
65162306a36Sopenharmony_ci	.clkdm_name	= "default_l3_slow_clkdm",
65262306a36Sopenharmony_ci	.main_clk	= "sysclk6_ck",
65362306a36Sopenharmony_ci	.prcm		= {
65462306a36Sopenharmony_ci		.omap4 = {
65562306a36Sopenharmony_ci			.clkctrl_offs = DM81XX_CM_DEFAULT_USB_CLKCTRL,
65662306a36Sopenharmony_ci			.modulemode = MODULEMODE_SWCTRL,
65762306a36Sopenharmony_ci		},
65862306a36Sopenharmony_ci	},
65962306a36Sopenharmony_ci	.class		= &dm81xx_usbotg_class,
66062306a36Sopenharmony_ci};
66162306a36Sopenharmony_ci
66262306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm816x_default_l3_slow__usbss = {
66362306a36Sopenharmony_ci	.master		= &dm81xx_default_l3_slow_hwmod,
66462306a36Sopenharmony_ci	.slave		= &dm816x_usbss_hwmod,
66562306a36Sopenharmony_ci	.clk		= "sysclk6_ck",
66662306a36Sopenharmony_ci	.user		= OCP_USER_MPU,
66762306a36Sopenharmony_ci};
66862306a36Sopenharmony_ci
66962306a36Sopenharmony_cistatic struct omap_hwmod_class_sysconfig dm816x_timer_sysc = {
67062306a36Sopenharmony_ci	.rev_offs	= 0x0000,
67162306a36Sopenharmony_ci	.sysc_offs	= 0x0010,
67262306a36Sopenharmony_ci	.syss_offs	= 0x0014,
67362306a36Sopenharmony_ci	.sysc_flags	= SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET,
67462306a36Sopenharmony_ci	.idlemodes	= SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
67562306a36Sopenharmony_ci				SIDLE_SMART_WKUP,
67662306a36Sopenharmony_ci	.sysc_fields	= &omap_hwmod_sysc_type2,
67762306a36Sopenharmony_ci};
67862306a36Sopenharmony_ci
67962306a36Sopenharmony_cistatic struct omap_hwmod_class dm816x_timer_hwmod_class = {
68062306a36Sopenharmony_ci	.name = "timer",
68162306a36Sopenharmony_ci	.sysc = &dm816x_timer_sysc,
68262306a36Sopenharmony_ci};
68362306a36Sopenharmony_ci
68462306a36Sopenharmony_cistatic struct omap_hwmod dm816x_timer3_hwmod = {
68562306a36Sopenharmony_ci	.name		= "timer3",
68662306a36Sopenharmony_ci	.clkdm_name	= "alwon_l3s_clkdm",
68762306a36Sopenharmony_ci	.main_clk	= "timer3_fck",
68862306a36Sopenharmony_ci	.prcm		= {
68962306a36Sopenharmony_ci		.omap4 = {
69062306a36Sopenharmony_ci			.clkctrl_offs = DM816X_CM_ALWON_TIMER_3_CLKCTRL,
69162306a36Sopenharmony_ci			.modulemode = MODULEMODE_SWCTRL,
69262306a36Sopenharmony_ci		},
69362306a36Sopenharmony_ci	},
69462306a36Sopenharmony_ci	.class		= &dm816x_timer_hwmod_class,
69562306a36Sopenharmony_ci};
69662306a36Sopenharmony_ci
69762306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm816x_l4_ls__timer3 = {
69862306a36Sopenharmony_ci	.master		= &dm81xx_l4_ls_hwmod,
69962306a36Sopenharmony_ci	.slave		= &dm816x_timer3_hwmod,
70062306a36Sopenharmony_ci	.clk		= "sysclk6_ck",
70162306a36Sopenharmony_ci	.user		= OCP_USER_MPU,
70262306a36Sopenharmony_ci};
70362306a36Sopenharmony_ci
70462306a36Sopenharmony_cistatic struct omap_hwmod dm816x_timer4_hwmod = {
70562306a36Sopenharmony_ci	.name		= "timer4",
70662306a36Sopenharmony_ci	.clkdm_name	= "alwon_l3s_clkdm",
70762306a36Sopenharmony_ci	.main_clk	= "timer4_fck",
70862306a36Sopenharmony_ci	.prcm		= {
70962306a36Sopenharmony_ci		.omap4 = {
71062306a36Sopenharmony_ci			.clkctrl_offs = DM816X_CM_ALWON_TIMER_4_CLKCTRL,
71162306a36Sopenharmony_ci			.modulemode = MODULEMODE_SWCTRL,
71262306a36Sopenharmony_ci		},
71362306a36Sopenharmony_ci	},
71462306a36Sopenharmony_ci	.class		= &dm816x_timer_hwmod_class,
71562306a36Sopenharmony_ci};
71662306a36Sopenharmony_ci
71762306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm816x_l4_ls__timer4 = {
71862306a36Sopenharmony_ci	.master		= &dm81xx_l4_ls_hwmod,
71962306a36Sopenharmony_ci	.slave		= &dm816x_timer4_hwmod,
72062306a36Sopenharmony_ci	.clk		= "sysclk6_ck",
72162306a36Sopenharmony_ci	.user		= OCP_USER_MPU,
72262306a36Sopenharmony_ci};
72362306a36Sopenharmony_ci
72462306a36Sopenharmony_cistatic struct omap_hwmod dm816x_timer5_hwmod = {
72562306a36Sopenharmony_ci	.name		= "timer5",
72662306a36Sopenharmony_ci	.clkdm_name	= "alwon_l3s_clkdm",
72762306a36Sopenharmony_ci	.main_clk	= "timer5_fck",
72862306a36Sopenharmony_ci	.prcm		= {
72962306a36Sopenharmony_ci		.omap4 = {
73062306a36Sopenharmony_ci			.clkctrl_offs = DM816X_CM_ALWON_TIMER_5_CLKCTRL,
73162306a36Sopenharmony_ci			.modulemode = MODULEMODE_SWCTRL,
73262306a36Sopenharmony_ci		},
73362306a36Sopenharmony_ci	},
73462306a36Sopenharmony_ci	.class		= &dm816x_timer_hwmod_class,
73562306a36Sopenharmony_ci};
73662306a36Sopenharmony_ci
73762306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm816x_l4_ls__timer5 = {
73862306a36Sopenharmony_ci	.master		= &dm81xx_l4_ls_hwmod,
73962306a36Sopenharmony_ci	.slave		= &dm816x_timer5_hwmod,
74062306a36Sopenharmony_ci	.clk		= "sysclk6_ck",
74162306a36Sopenharmony_ci	.user		= OCP_USER_MPU,
74262306a36Sopenharmony_ci};
74362306a36Sopenharmony_ci
74462306a36Sopenharmony_cistatic struct omap_hwmod dm816x_timer6_hwmod = {
74562306a36Sopenharmony_ci	.name		= "timer6",
74662306a36Sopenharmony_ci	.clkdm_name	= "alwon_l3s_clkdm",
74762306a36Sopenharmony_ci	.main_clk	= "timer6_fck",
74862306a36Sopenharmony_ci	.prcm		= {
74962306a36Sopenharmony_ci		.omap4 = {
75062306a36Sopenharmony_ci			.clkctrl_offs = DM816X_CM_ALWON_TIMER_6_CLKCTRL,
75162306a36Sopenharmony_ci			.modulemode = MODULEMODE_SWCTRL,
75262306a36Sopenharmony_ci		},
75362306a36Sopenharmony_ci	},
75462306a36Sopenharmony_ci	.class		= &dm816x_timer_hwmod_class,
75562306a36Sopenharmony_ci};
75662306a36Sopenharmony_ci
75762306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm816x_l4_ls__timer6 = {
75862306a36Sopenharmony_ci	.master		= &dm81xx_l4_ls_hwmod,
75962306a36Sopenharmony_ci	.slave		= &dm816x_timer6_hwmod,
76062306a36Sopenharmony_ci	.clk		= "sysclk6_ck",
76162306a36Sopenharmony_ci	.user		= OCP_USER_MPU,
76262306a36Sopenharmony_ci};
76362306a36Sopenharmony_ci
76462306a36Sopenharmony_cistatic struct omap_hwmod dm816x_timer7_hwmod = {
76562306a36Sopenharmony_ci	.name		= "timer7",
76662306a36Sopenharmony_ci	.clkdm_name	= "alwon_l3s_clkdm",
76762306a36Sopenharmony_ci	.main_clk	= "timer7_fck",
76862306a36Sopenharmony_ci	.prcm		= {
76962306a36Sopenharmony_ci		.omap4 = {
77062306a36Sopenharmony_ci			.clkctrl_offs = DM816X_CM_ALWON_TIMER_7_CLKCTRL,
77162306a36Sopenharmony_ci			.modulemode = MODULEMODE_SWCTRL,
77262306a36Sopenharmony_ci		},
77362306a36Sopenharmony_ci	},
77462306a36Sopenharmony_ci	.class		= &dm816x_timer_hwmod_class,
77562306a36Sopenharmony_ci};
77662306a36Sopenharmony_ci
77762306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm816x_l4_ls__timer7 = {
77862306a36Sopenharmony_ci	.master		= &dm81xx_l4_ls_hwmod,
77962306a36Sopenharmony_ci	.slave		= &dm816x_timer7_hwmod,
78062306a36Sopenharmony_ci	.clk		= "sysclk6_ck",
78162306a36Sopenharmony_ci	.user		= OCP_USER_MPU,
78262306a36Sopenharmony_ci};
78362306a36Sopenharmony_ci
78462306a36Sopenharmony_ci/* EMAC Ethernet */
78562306a36Sopenharmony_cistatic struct omap_hwmod_class_sysconfig dm816x_emac_sysc = {
78662306a36Sopenharmony_ci	.rev_offs	= 0x0,
78762306a36Sopenharmony_ci	.sysc_offs	= 0x4,
78862306a36Sopenharmony_ci	.sysc_flags	= SYSC_HAS_SOFTRESET,
78962306a36Sopenharmony_ci	.sysc_fields	= &omap_hwmod_sysc_type2,
79062306a36Sopenharmony_ci};
79162306a36Sopenharmony_ci
79262306a36Sopenharmony_cistatic struct omap_hwmod_class dm816x_emac_hwmod_class = {
79362306a36Sopenharmony_ci	.name		= "emac",
79462306a36Sopenharmony_ci	.sysc		= &dm816x_emac_sysc,
79562306a36Sopenharmony_ci};
79662306a36Sopenharmony_ci
79762306a36Sopenharmony_ci/*
79862306a36Sopenharmony_ci * On dm816x the MDIO is within EMAC0. As the MDIO driver is a separate
79962306a36Sopenharmony_ci * driver probed before EMAC0, we let MDIO do the clock idling.
80062306a36Sopenharmony_ci */
80162306a36Sopenharmony_cistatic struct omap_hwmod dm816x_emac0_hwmod = {
80262306a36Sopenharmony_ci	.name		= "emac0",
80362306a36Sopenharmony_ci	.clkdm_name	= "alwon_ethernet_clkdm",
80462306a36Sopenharmony_ci	.class		= &dm816x_emac_hwmod_class,
80562306a36Sopenharmony_ci	.flags		= HWMOD_NO_IDLEST,
80662306a36Sopenharmony_ci};
80762306a36Sopenharmony_ci
80862306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm81xx_l4_hs__emac0 = {
80962306a36Sopenharmony_ci	.master		= &dm81xx_l4_hs_hwmod,
81062306a36Sopenharmony_ci	.slave		= &dm816x_emac0_hwmod,
81162306a36Sopenharmony_ci	.clk		= "sysclk5_ck",
81262306a36Sopenharmony_ci	.user		= OCP_USER_MPU,
81362306a36Sopenharmony_ci};
81462306a36Sopenharmony_ci
81562306a36Sopenharmony_cistatic struct omap_hwmod_class dm81xx_mdio_hwmod_class = {
81662306a36Sopenharmony_ci	.name		= "davinci_mdio",
81762306a36Sopenharmony_ci	.sysc		= &dm816x_emac_sysc,
81862306a36Sopenharmony_ci};
81962306a36Sopenharmony_ci
82062306a36Sopenharmony_cistatic struct omap_hwmod dm81xx_emac0_mdio_hwmod = {
82162306a36Sopenharmony_ci	.name		= "davinci_mdio",
82262306a36Sopenharmony_ci	.class		= &dm81xx_mdio_hwmod_class,
82362306a36Sopenharmony_ci	.clkdm_name	= "alwon_ethernet_clkdm",
82462306a36Sopenharmony_ci	.main_clk	= "sysclk24_ck",
82562306a36Sopenharmony_ci	.flags		= HWMOD_NO_IDLEST,
82662306a36Sopenharmony_ci	/*
82762306a36Sopenharmony_ci	 * REVISIT: This should be moved to the emac0_hwmod
82862306a36Sopenharmony_ci	 * once we have a better way to handle device slaves.
82962306a36Sopenharmony_ci	 */
83062306a36Sopenharmony_ci	.prcm		= {
83162306a36Sopenharmony_ci		.omap4 = {
83262306a36Sopenharmony_ci			.clkctrl_offs = DM81XX_CM_ALWON_ETHERNET_0_CLKCTRL,
83362306a36Sopenharmony_ci			.modulemode = MODULEMODE_SWCTRL,
83462306a36Sopenharmony_ci		},
83562306a36Sopenharmony_ci	},
83662306a36Sopenharmony_ci};
83762306a36Sopenharmony_ci
83862306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm81xx_emac0__mdio = {
83962306a36Sopenharmony_ci	.master		= &dm81xx_l4_hs_hwmod,
84062306a36Sopenharmony_ci	.slave		= &dm81xx_emac0_mdio_hwmod,
84162306a36Sopenharmony_ci	.user		= OCP_USER_MPU,
84262306a36Sopenharmony_ci};
84362306a36Sopenharmony_ci
84462306a36Sopenharmony_cistatic struct omap_hwmod dm816x_emac1_hwmod = {
84562306a36Sopenharmony_ci	.name		= "emac1",
84662306a36Sopenharmony_ci	.clkdm_name	= "alwon_ethernet_clkdm",
84762306a36Sopenharmony_ci	.main_clk	= "sysclk24_ck",
84862306a36Sopenharmony_ci	.flags		= HWMOD_NO_IDLEST,
84962306a36Sopenharmony_ci	.prcm		= {
85062306a36Sopenharmony_ci		.omap4 = {
85162306a36Sopenharmony_ci			.clkctrl_offs = DM816X_CM_ALWON_ETHERNET_1_CLKCTRL,
85262306a36Sopenharmony_ci			.modulemode = MODULEMODE_SWCTRL,
85362306a36Sopenharmony_ci		},
85462306a36Sopenharmony_ci	},
85562306a36Sopenharmony_ci	.class		= &dm816x_emac_hwmod_class,
85662306a36Sopenharmony_ci};
85762306a36Sopenharmony_ci
85862306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm816x_l4_hs__emac1 = {
85962306a36Sopenharmony_ci	.master		= &dm81xx_l4_hs_hwmod,
86062306a36Sopenharmony_ci	.slave		= &dm816x_emac1_hwmod,
86162306a36Sopenharmony_ci	.clk		= "sysclk5_ck",
86262306a36Sopenharmony_ci	.user		= OCP_USER_MPU,
86362306a36Sopenharmony_ci};
86462306a36Sopenharmony_ci
86562306a36Sopenharmony_cistatic struct omap_hwmod_class_sysconfig dm81xx_sata_sysc = {
86662306a36Sopenharmony_ci	.rev_offs	= 0x00fc,
86762306a36Sopenharmony_ci	.sysc_offs	= 0x1100,
86862306a36Sopenharmony_ci	.sysc_flags	= SYSC_HAS_SIDLEMODE,
86962306a36Sopenharmony_ci	.idlemodes	= SIDLE_FORCE,
87062306a36Sopenharmony_ci	.sysc_fields	= &omap_hwmod_sysc_type3,
87162306a36Sopenharmony_ci};
87262306a36Sopenharmony_ci
87362306a36Sopenharmony_cistatic struct omap_hwmod_class dm81xx_sata_hwmod_class = {
87462306a36Sopenharmony_ci	.name	= "sata",
87562306a36Sopenharmony_ci	.sysc	= &dm81xx_sata_sysc,
87662306a36Sopenharmony_ci};
87762306a36Sopenharmony_ci
87862306a36Sopenharmony_cistatic struct omap_hwmod dm81xx_sata_hwmod = {
87962306a36Sopenharmony_ci	.name		= "sata",
88062306a36Sopenharmony_ci	.clkdm_name	= "default_clkdm",
88162306a36Sopenharmony_ci	.flags		= HWMOD_NO_IDLEST,
88262306a36Sopenharmony_ci	.prcm = {
88362306a36Sopenharmony_ci		.omap4 = {
88462306a36Sopenharmony_ci			.clkctrl_offs = DM81XX_CM_DEFAULT_SATA_CLKCTRL,
88562306a36Sopenharmony_ci			.modulemode   = MODULEMODE_SWCTRL,
88662306a36Sopenharmony_ci		},
88762306a36Sopenharmony_ci	},
88862306a36Sopenharmony_ci	.class		= &dm81xx_sata_hwmod_class,
88962306a36Sopenharmony_ci};
89062306a36Sopenharmony_ci
89162306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm81xx_l4_hs__sata = {
89262306a36Sopenharmony_ci	.master		= &dm81xx_l4_hs_hwmod,
89362306a36Sopenharmony_ci	.slave		= &dm81xx_sata_hwmod,
89462306a36Sopenharmony_ci	.clk		= "sysclk5_ck",
89562306a36Sopenharmony_ci	.user		= OCP_USER_MPU,
89662306a36Sopenharmony_ci};
89762306a36Sopenharmony_ci
89862306a36Sopenharmony_cistatic struct omap_hwmod_class_sysconfig dm81xx_mmc_sysc = {
89962306a36Sopenharmony_ci	.rev_offs	= 0x0,
90062306a36Sopenharmony_ci	.sysc_offs	= 0x110,
90162306a36Sopenharmony_ci	.syss_offs	= 0x114,
90262306a36Sopenharmony_ci	.sysc_flags	= SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
90362306a36Sopenharmony_ci				SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
90462306a36Sopenharmony_ci				SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS,
90562306a36Sopenharmony_ci	.idlemodes	= SIDLE_FORCE | SIDLE_NO | SIDLE_SMART,
90662306a36Sopenharmony_ci	.sysc_fields	= &omap_hwmod_sysc_type1,
90762306a36Sopenharmony_ci};
90862306a36Sopenharmony_ci
90962306a36Sopenharmony_cistatic struct omap_hwmod_class dm81xx_mmc_class = {
91062306a36Sopenharmony_ci	.name = "mmc",
91162306a36Sopenharmony_ci	.sysc = &dm81xx_mmc_sysc,
91262306a36Sopenharmony_ci};
91362306a36Sopenharmony_ci
91462306a36Sopenharmony_cistatic struct omap_hwmod_opt_clk dm81xx_mmc_opt_clks[] = {
91562306a36Sopenharmony_ci	{ .role = "dbck", .clk = "sysclk18_ck", },
91662306a36Sopenharmony_ci};
91762306a36Sopenharmony_ci
91862306a36Sopenharmony_cistatic struct omap_hsmmc_dev_attr mmc_dev_attr = {
91962306a36Sopenharmony_ci};
92062306a36Sopenharmony_ci
92162306a36Sopenharmony_cistatic struct omap_hwmod dm814x_mmc1_hwmod = {
92262306a36Sopenharmony_ci	.name		= "mmc1",
92362306a36Sopenharmony_ci	.clkdm_name	= "alwon_l3s_clkdm",
92462306a36Sopenharmony_ci	.opt_clks	= dm81xx_mmc_opt_clks,
92562306a36Sopenharmony_ci	.opt_clks_cnt	= ARRAY_SIZE(dm81xx_mmc_opt_clks),
92662306a36Sopenharmony_ci	.main_clk	= "sysclk8_ck",
92762306a36Sopenharmony_ci	.prcm		= {
92862306a36Sopenharmony_ci		.omap4 = {
92962306a36Sopenharmony_ci			.clkctrl_offs = DM814X_CM_ALWON_MMCHS_0_CLKCTRL,
93062306a36Sopenharmony_ci			.modulemode = MODULEMODE_SWCTRL,
93162306a36Sopenharmony_ci		},
93262306a36Sopenharmony_ci	},
93362306a36Sopenharmony_ci	.dev_attr	= &mmc_dev_attr,
93462306a36Sopenharmony_ci	.class		= &dm81xx_mmc_class,
93562306a36Sopenharmony_ci};
93662306a36Sopenharmony_ci
93762306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm814x_l4_ls__mmc1 = {
93862306a36Sopenharmony_ci	.master		= &dm81xx_l4_ls_hwmod,
93962306a36Sopenharmony_ci	.slave		= &dm814x_mmc1_hwmod,
94062306a36Sopenharmony_ci	.clk		= "sysclk6_ck",
94162306a36Sopenharmony_ci	.user		= OCP_USER_MPU,
94262306a36Sopenharmony_ci	.flags		= OMAP_FIREWALL_L4
94362306a36Sopenharmony_ci};
94462306a36Sopenharmony_ci
94562306a36Sopenharmony_cistatic struct omap_hwmod dm814x_mmc2_hwmod = {
94662306a36Sopenharmony_ci	.name		= "mmc2",
94762306a36Sopenharmony_ci	.clkdm_name	= "alwon_l3s_clkdm",
94862306a36Sopenharmony_ci	.opt_clks	= dm81xx_mmc_opt_clks,
94962306a36Sopenharmony_ci	.opt_clks_cnt	= ARRAY_SIZE(dm81xx_mmc_opt_clks),
95062306a36Sopenharmony_ci	.main_clk	= "sysclk8_ck",
95162306a36Sopenharmony_ci	.prcm		= {
95262306a36Sopenharmony_ci		.omap4 = {
95362306a36Sopenharmony_ci			.clkctrl_offs = DM814X_CM_ALWON_MMCHS_1_CLKCTRL,
95462306a36Sopenharmony_ci			.modulemode = MODULEMODE_SWCTRL,
95562306a36Sopenharmony_ci		},
95662306a36Sopenharmony_ci	},
95762306a36Sopenharmony_ci	.dev_attr	= &mmc_dev_attr,
95862306a36Sopenharmony_ci	.class		= &dm81xx_mmc_class,
95962306a36Sopenharmony_ci};
96062306a36Sopenharmony_ci
96162306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm814x_l4_ls__mmc2 = {
96262306a36Sopenharmony_ci	.master		= &dm81xx_l4_ls_hwmod,
96362306a36Sopenharmony_ci	.slave		= &dm814x_mmc2_hwmod,
96462306a36Sopenharmony_ci	.clk		= "sysclk6_ck",
96562306a36Sopenharmony_ci	.user		= OCP_USER_MPU,
96662306a36Sopenharmony_ci	.flags		= OMAP_FIREWALL_L4
96762306a36Sopenharmony_ci};
96862306a36Sopenharmony_ci
96962306a36Sopenharmony_cistatic struct omap_hwmod dm814x_mmc3_hwmod = {
97062306a36Sopenharmony_ci	.name		= "mmc3",
97162306a36Sopenharmony_ci	.clkdm_name	= "alwon_l3_med_clkdm",
97262306a36Sopenharmony_ci	.opt_clks	= dm81xx_mmc_opt_clks,
97362306a36Sopenharmony_ci	.opt_clks_cnt	= ARRAY_SIZE(dm81xx_mmc_opt_clks),
97462306a36Sopenharmony_ci	.main_clk	= "sysclk8_ck",
97562306a36Sopenharmony_ci	.prcm		= {
97662306a36Sopenharmony_ci		.omap4 = {
97762306a36Sopenharmony_ci			.clkctrl_offs = DM814X_CM_ALWON_MMCHS_2_CLKCTRL,
97862306a36Sopenharmony_ci			.modulemode = MODULEMODE_SWCTRL,
97962306a36Sopenharmony_ci		},
98062306a36Sopenharmony_ci	},
98162306a36Sopenharmony_ci	.dev_attr	= &mmc_dev_attr,
98262306a36Sopenharmony_ci	.class		= &dm81xx_mmc_class,
98362306a36Sopenharmony_ci};
98462306a36Sopenharmony_ci
98562306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm814x_alwon_l3_med__mmc3 = {
98662306a36Sopenharmony_ci	.master		= &dm81xx_alwon_l3_med_hwmod,
98762306a36Sopenharmony_ci	.slave		= &dm814x_mmc3_hwmod,
98862306a36Sopenharmony_ci	.clk		= "sysclk4_ck",
98962306a36Sopenharmony_ci	.user		= OCP_USER_MPU,
99062306a36Sopenharmony_ci};
99162306a36Sopenharmony_ci
99262306a36Sopenharmony_cistatic struct omap_hwmod dm816x_mmc1_hwmod = {
99362306a36Sopenharmony_ci	.name		= "mmc1",
99462306a36Sopenharmony_ci	.clkdm_name	= "alwon_l3s_clkdm",
99562306a36Sopenharmony_ci	.opt_clks	= dm81xx_mmc_opt_clks,
99662306a36Sopenharmony_ci	.opt_clks_cnt	= ARRAY_SIZE(dm81xx_mmc_opt_clks),
99762306a36Sopenharmony_ci	.main_clk	= "sysclk10_ck",
99862306a36Sopenharmony_ci	.prcm		= {
99962306a36Sopenharmony_ci		.omap4 = {
100062306a36Sopenharmony_ci			.clkctrl_offs = DM816X_CM_ALWON_SDIO_CLKCTRL,
100162306a36Sopenharmony_ci			.modulemode = MODULEMODE_SWCTRL,
100262306a36Sopenharmony_ci		},
100362306a36Sopenharmony_ci	},
100462306a36Sopenharmony_ci	.dev_attr	= &mmc_dev_attr,
100562306a36Sopenharmony_ci	.class		= &dm81xx_mmc_class,
100662306a36Sopenharmony_ci};
100762306a36Sopenharmony_ci
100862306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm816x_l4_ls__mmc1 = {
100962306a36Sopenharmony_ci	.master		= &dm81xx_l4_ls_hwmod,
101062306a36Sopenharmony_ci	.slave		= &dm816x_mmc1_hwmod,
101162306a36Sopenharmony_ci	.clk		= "sysclk6_ck",
101262306a36Sopenharmony_ci	.user		= OCP_USER_MPU,
101362306a36Sopenharmony_ci	.flags		= OMAP_FIREWALL_L4
101462306a36Sopenharmony_ci};
101562306a36Sopenharmony_ci
101662306a36Sopenharmony_cistatic struct omap_hwmod_class_sysconfig dm816x_mcspi_sysc = {
101762306a36Sopenharmony_ci	.rev_offs	= 0x0,
101862306a36Sopenharmony_ci	.sysc_offs	= 0x110,
101962306a36Sopenharmony_ci	.syss_offs	= 0x114,
102062306a36Sopenharmony_ci	.sysc_flags	= SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
102162306a36Sopenharmony_ci				SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
102262306a36Sopenharmony_ci				SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS,
102362306a36Sopenharmony_ci	.idlemodes	= SIDLE_FORCE | SIDLE_NO | SIDLE_SMART,
102462306a36Sopenharmony_ci	.sysc_fields	= &omap_hwmod_sysc_type1,
102562306a36Sopenharmony_ci};
102662306a36Sopenharmony_ci
102762306a36Sopenharmony_cistatic struct omap_hwmod_class dm816x_mcspi_class = {
102862306a36Sopenharmony_ci	.name = "mcspi",
102962306a36Sopenharmony_ci	.sysc = &dm816x_mcspi_sysc,
103062306a36Sopenharmony_ci};
103162306a36Sopenharmony_ci
103262306a36Sopenharmony_cistatic struct omap_hwmod dm81xx_mcspi1_hwmod = {
103362306a36Sopenharmony_ci	.name		= "mcspi1",
103462306a36Sopenharmony_ci	.clkdm_name	= "alwon_l3s_clkdm",
103562306a36Sopenharmony_ci	.main_clk	= "sysclk10_ck",
103662306a36Sopenharmony_ci	.prcm		= {
103762306a36Sopenharmony_ci		.omap4 = {
103862306a36Sopenharmony_ci			.clkctrl_offs = DM81XX_CM_ALWON_SPI_CLKCTRL,
103962306a36Sopenharmony_ci			.modulemode = MODULEMODE_SWCTRL,
104062306a36Sopenharmony_ci		},
104162306a36Sopenharmony_ci	},
104262306a36Sopenharmony_ci	.class		= &dm816x_mcspi_class,
104362306a36Sopenharmony_ci};
104462306a36Sopenharmony_ci
104562306a36Sopenharmony_cistatic struct omap_hwmod dm81xx_mcspi2_hwmod = {
104662306a36Sopenharmony_ci	.name		= "mcspi2",
104762306a36Sopenharmony_ci	.clkdm_name	= "alwon_l3s_clkdm",
104862306a36Sopenharmony_ci	.main_clk	= "sysclk10_ck",
104962306a36Sopenharmony_ci	.prcm		= {
105062306a36Sopenharmony_ci		.omap4 = {
105162306a36Sopenharmony_ci			.clkctrl_offs = DM81XX_CM_ALWON_SPI_CLKCTRL,
105262306a36Sopenharmony_ci			.modulemode = MODULEMODE_SWCTRL,
105362306a36Sopenharmony_ci		},
105462306a36Sopenharmony_ci	},
105562306a36Sopenharmony_ci	.class		= &dm816x_mcspi_class,
105662306a36Sopenharmony_ci};
105762306a36Sopenharmony_ci
105862306a36Sopenharmony_cistatic struct omap_hwmod dm81xx_mcspi3_hwmod = {
105962306a36Sopenharmony_ci	.name		= "mcspi3",
106062306a36Sopenharmony_ci	.clkdm_name	= "alwon_l3s_clkdm",
106162306a36Sopenharmony_ci	.main_clk	= "sysclk10_ck",
106262306a36Sopenharmony_ci	.prcm		= {
106362306a36Sopenharmony_ci		.omap4 = {
106462306a36Sopenharmony_ci			.clkctrl_offs = DM81XX_CM_ALWON_SPI_CLKCTRL,
106562306a36Sopenharmony_ci			.modulemode = MODULEMODE_SWCTRL,
106662306a36Sopenharmony_ci		},
106762306a36Sopenharmony_ci	},
106862306a36Sopenharmony_ci	.class		= &dm816x_mcspi_class,
106962306a36Sopenharmony_ci};
107062306a36Sopenharmony_ci
107162306a36Sopenharmony_cistatic struct omap_hwmod dm81xx_mcspi4_hwmod = {
107262306a36Sopenharmony_ci	.name		= "mcspi4",
107362306a36Sopenharmony_ci	.clkdm_name	= "alwon_l3s_clkdm",
107462306a36Sopenharmony_ci	.main_clk	= "sysclk10_ck",
107562306a36Sopenharmony_ci	.prcm		= {
107662306a36Sopenharmony_ci		.omap4 = {
107762306a36Sopenharmony_ci			.clkctrl_offs = DM81XX_CM_ALWON_SPI_CLKCTRL,
107862306a36Sopenharmony_ci			.modulemode = MODULEMODE_SWCTRL,
107962306a36Sopenharmony_ci		},
108062306a36Sopenharmony_ci	},
108162306a36Sopenharmony_ci	.class		= &dm816x_mcspi_class,
108262306a36Sopenharmony_ci};
108362306a36Sopenharmony_ci
108462306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm81xx_l4_ls__mcspi1 = {
108562306a36Sopenharmony_ci	.master		= &dm81xx_l4_ls_hwmod,
108662306a36Sopenharmony_ci	.slave		= &dm81xx_mcspi1_hwmod,
108762306a36Sopenharmony_ci	.clk		= "sysclk6_ck",
108862306a36Sopenharmony_ci	.user		= OCP_USER_MPU,
108962306a36Sopenharmony_ci};
109062306a36Sopenharmony_ci
109162306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm81xx_l4_ls__mcspi2 = {
109262306a36Sopenharmony_ci	.master		= &dm81xx_l4_ls_hwmod,
109362306a36Sopenharmony_ci	.slave		= &dm81xx_mcspi2_hwmod,
109462306a36Sopenharmony_ci	.clk		= "sysclk6_ck",
109562306a36Sopenharmony_ci	.user		= OCP_USER_MPU,
109662306a36Sopenharmony_ci};
109762306a36Sopenharmony_ci
109862306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm81xx_l4_ls__mcspi3 = {
109962306a36Sopenharmony_ci	.master		= &dm81xx_l4_ls_hwmod,
110062306a36Sopenharmony_ci	.slave		= &dm81xx_mcspi3_hwmod,
110162306a36Sopenharmony_ci	.clk		= "sysclk6_ck",
110262306a36Sopenharmony_ci	.user		= OCP_USER_MPU,
110362306a36Sopenharmony_ci};
110462306a36Sopenharmony_ci
110562306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm81xx_l4_ls__mcspi4 = {
110662306a36Sopenharmony_ci	.master		= &dm81xx_l4_ls_hwmod,
110762306a36Sopenharmony_ci	.slave		= &dm81xx_mcspi4_hwmod,
110862306a36Sopenharmony_ci	.clk		= "sysclk6_ck",
110962306a36Sopenharmony_ci	.user		= OCP_USER_MPU,
111062306a36Sopenharmony_ci};
111162306a36Sopenharmony_ci
111262306a36Sopenharmony_cistatic struct omap_hwmod_class_sysconfig dm81xx_mailbox_sysc = {
111362306a36Sopenharmony_ci	.rev_offs	= 0x000,
111462306a36Sopenharmony_ci	.sysc_offs	= 0x010,
111562306a36Sopenharmony_ci	.syss_offs	= 0x014,
111662306a36Sopenharmony_ci	.sysc_flags	= SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
111762306a36Sopenharmony_ci				SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE,
111862306a36Sopenharmony_ci	.idlemodes	= SIDLE_FORCE | SIDLE_NO | SIDLE_SMART,
111962306a36Sopenharmony_ci	.sysc_fields	= &omap_hwmod_sysc_type1,
112062306a36Sopenharmony_ci};
112162306a36Sopenharmony_ci
112262306a36Sopenharmony_cistatic struct omap_hwmod_class dm81xx_mailbox_hwmod_class = {
112362306a36Sopenharmony_ci	.name = "mailbox",
112462306a36Sopenharmony_ci	.sysc = &dm81xx_mailbox_sysc,
112562306a36Sopenharmony_ci};
112662306a36Sopenharmony_ci
112762306a36Sopenharmony_cistatic struct omap_hwmod dm81xx_mailbox_hwmod = {
112862306a36Sopenharmony_ci	.name		= "mailbox",
112962306a36Sopenharmony_ci	.clkdm_name	= "alwon_l3s_clkdm",
113062306a36Sopenharmony_ci	.class		= &dm81xx_mailbox_hwmod_class,
113162306a36Sopenharmony_ci	.main_clk	= "sysclk6_ck",
113262306a36Sopenharmony_ci	.prcm		= {
113362306a36Sopenharmony_ci		.omap4 = {
113462306a36Sopenharmony_ci			.clkctrl_offs = DM81XX_CM_ALWON_MAILBOX_CLKCTRL,
113562306a36Sopenharmony_ci			.modulemode = MODULEMODE_SWCTRL,
113662306a36Sopenharmony_ci		},
113762306a36Sopenharmony_ci	},
113862306a36Sopenharmony_ci};
113962306a36Sopenharmony_ci
114062306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm81xx_l4_ls__mailbox = {
114162306a36Sopenharmony_ci	.master		= &dm81xx_l4_ls_hwmod,
114262306a36Sopenharmony_ci	.slave		= &dm81xx_mailbox_hwmod,
114362306a36Sopenharmony_ci	.clk		= "sysclk6_ck",
114462306a36Sopenharmony_ci	.user		= OCP_USER_MPU,
114562306a36Sopenharmony_ci};
114662306a36Sopenharmony_ci
114762306a36Sopenharmony_cistatic struct omap_hwmod_class_sysconfig dm81xx_spinbox_sysc = {
114862306a36Sopenharmony_ci	.rev_offs	= 0x000,
114962306a36Sopenharmony_ci	.sysc_offs	= 0x010,
115062306a36Sopenharmony_ci	.syss_offs	= 0x014,
115162306a36Sopenharmony_ci	.sysc_flags	= SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
115262306a36Sopenharmony_ci				SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE,
115362306a36Sopenharmony_ci	.idlemodes	= SIDLE_FORCE | SIDLE_NO | SIDLE_SMART,
115462306a36Sopenharmony_ci	.sysc_fields	= &omap_hwmod_sysc_type1,
115562306a36Sopenharmony_ci};
115662306a36Sopenharmony_ci
115762306a36Sopenharmony_cistatic struct omap_hwmod_class dm81xx_spinbox_hwmod_class = {
115862306a36Sopenharmony_ci	.name = "spinbox",
115962306a36Sopenharmony_ci	.sysc = &dm81xx_spinbox_sysc,
116062306a36Sopenharmony_ci};
116162306a36Sopenharmony_ci
116262306a36Sopenharmony_cistatic struct omap_hwmod dm81xx_spinbox_hwmod = {
116362306a36Sopenharmony_ci	.name		= "spinbox",
116462306a36Sopenharmony_ci	.clkdm_name	= "alwon_l3s_clkdm",
116562306a36Sopenharmony_ci	.class		= &dm81xx_spinbox_hwmod_class,
116662306a36Sopenharmony_ci	.main_clk	= "sysclk6_ck",
116762306a36Sopenharmony_ci	.prcm		= {
116862306a36Sopenharmony_ci		.omap4 = {
116962306a36Sopenharmony_ci			.clkctrl_offs = DM81XX_CM_ALWON_SPINBOX_CLKCTRL,
117062306a36Sopenharmony_ci			.modulemode = MODULEMODE_SWCTRL,
117162306a36Sopenharmony_ci		},
117262306a36Sopenharmony_ci	},
117362306a36Sopenharmony_ci};
117462306a36Sopenharmony_ci
117562306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if dm81xx_l4_ls__spinbox = {
117662306a36Sopenharmony_ci	.master		= &dm81xx_l4_ls_hwmod,
117762306a36Sopenharmony_ci	.slave		= &dm81xx_spinbox_hwmod,
117862306a36Sopenharmony_ci	.clk		= "sysclk6_ck",
117962306a36Sopenharmony_ci	.user		= OCP_USER_MPU,
118062306a36Sopenharmony_ci};
118162306a36Sopenharmony_ci
118262306a36Sopenharmony_ci/*
118362306a36Sopenharmony_ci * REVISIT: Test and enable the following once clocks work:
118462306a36Sopenharmony_ci * dm81xx_l4_ls__mailbox
118562306a36Sopenharmony_ci *
118662306a36Sopenharmony_ci * Also note that some devices share a single clkctrl_offs..
118762306a36Sopenharmony_ci * For example, i2c1 and 3 share one, and i2c2 and 4 share one.
118862306a36Sopenharmony_ci */
118962306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if *dm814x_hwmod_ocp_ifs[] __initdata = {
119062306a36Sopenharmony_ci	&dm814x_mpu__alwon_l3_slow,
119162306a36Sopenharmony_ci	&dm814x_mpu__alwon_l3_med,
119262306a36Sopenharmony_ci	&dm81xx_alwon_l3_slow__l4_ls,
119362306a36Sopenharmony_ci	&dm81xx_alwon_l3_slow__l4_hs,
119462306a36Sopenharmony_ci	&dm81xx_l4_ls__uart1,
119562306a36Sopenharmony_ci	&dm81xx_l4_ls__uart2,
119662306a36Sopenharmony_ci	&dm81xx_l4_ls__uart3,
119762306a36Sopenharmony_ci	&dm81xx_l4_ls__wd_timer1,
119862306a36Sopenharmony_ci	&dm81xx_l4_ls__i2c1,
119962306a36Sopenharmony_ci	&dm81xx_l4_ls__i2c2,
120062306a36Sopenharmony_ci	&dm81xx_l4_ls__gpio1,
120162306a36Sopenharmony_ci	&dm81xx_l4_ls__gpio2,
120262306a36Sopenharmony_ci	&dm81xx_l4_ls__gpio3,
120362306a36Sopenharmony_ci	&dm81xx_l4_ls__gpio4,
120462306a36Sopenharmony_ci	&dm81xx_l4_ls__elm,
120562306a36Sopenharmony_ci	&dm81xx_l4_ls__mcspi1,
120662306a36Sopenharmony_ci	&dm81xx_l4_ls__mcspi2,
120762306a36Sopenharmony_ci	&dm81xx_l4_ls__mcspi3,
120862306a36Sopenharmony_ci	&dm81xx_l4_ls__mcspi4,
120962306a36Sopenharmony_ci	&dm814x_l4_ls__mmc1,
121062306a36Sopenharmony_ci	&dm814x_l4_ls__mmc2,
121162306a36Sopenharmony_ci	&ti81xx_l4_ls__rtc,
121262306a36Sopenharmony_ci	&dm81xx_alwon_l3_slow__gpmc,
121362306a36Sopenharmony_ci	&dm814x_default_l3_slow__usbss,
121462306a36Sopenharmony_ci	&dm814x_alwon_l3_med__mmc3,
121562306a36Sopenharmony_ci	NULL,
121662306a36Sopenharmony_ci};
121762306a36Sopenharmony_ci
121862306a36Sopenharmony_ciint __init dm814x_hwmod_init(void)
121962306a36Sopenharmony_ci{
122062306a36Sopenharmony_ci	omap_hwmod_init();
122162306a36Sopenharmony_ci	return omap_hwmod_register_links(dm814x_hwmod_ocp_ifs);
122262306a36Sopenharmony_ci}
122362306a36Sopenharmony_ci
122462306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if *dm816x_hwmod_ocp_ifs[] __initdata = {
122562306a36Sopenharmony_ci	&dm816x_mpu__alwon_l3_slow,
122662306a36Sopenharmony_ci	&dm816x_mpu__alwon_l3_med,
122762306a36Sopenharmony_ci	&dm81xx_alwon_l3_slow__l4_ls,
122862306a36Sopenharmony_ci	&dm81xx_alwon_l3_slow__l4_hs,
122962306a36Sopenharmony_ci	&dm81xx_l4_ls__uart1,
123062306a36Sopenharmony_ci	&dm81xx_l4_ls__uart2,
123162306a36Sopenharmony_ci	&dm81xx_l4_ls__uart3,
123262306a36Sopenharmony_ci	&dm81xx_l4_ls__wd_timer1,
123362306a36Sopenharmony_ci	&dm81xx_l4_ls__i2c1,
123462306a36Sopenharmony_ci	&dm81xx_l4_ls__i2c2,
123562306a36Sopenharmony_ci	&dm81xx_l4_ls__gpio1,
123662306a36Sopenharmony_ci	&dm81xx_l4_ls__gpio2,
123762306a36Sopenharmony_ci	&dm81xx_l4_ls__elm,
123862306a36Sopenharmony_ci	&ti81xx_l4_ls__rtc,
123962306a36Sopenharmony_ci	&dm816x_l4_ls__mmc1,
124062306a36Sopenharmony_ci	&dm816x_l4_ls__timer3,
124162306a36Sopenharmony_ci	&dm816x_l4_ls__timer4,
124262306a36Sopenharmony_ci	&dm816x_l4_ls__timer5,
124362306a36Sopenharmony_ci	&dm816x_l4_ls__timer6,
124462306a36Sopenharmony_ci	&dm816x_l4_ls__timer7,
124562306a36Sopenharmony_ci	&dm81xx_l4_ls__mcspi1,
124662306a36Sopenharmony_ci	&dm81xx_l4_ls__mailbox,
124762306a36Sopenharmony_ci	&dm81xx_l4_ls__spinbox,
124862306a36Sopenharmony_ci	&dm81xx_l4_hs__emac0,
124962306a36Sopenharmony_ci	&dm81xx_emac0__mdio,
125062306a36Sopenharmony_ci	&dm816x_l4_hs__emac1,
125162306a36Sopenharmony_ci	&dm81xx_l4_hs__sata,
125262306a36Sopenharmony_ci	&dm81xx_alwon_l3_slow__gpmc,
125362306a36Sopenharmony_ci	&dm816x_default_l3_slow__usbss,
125462306a36Sopenharmony_ci	NULL,
125562306a36Sopenharmony_ci};
125662306a36Sopenharmony_ci
125762306a36Sopenharmony_ciint __init dm816x_hwmod_init(void)
125862306a36Sopenharmony_ci{
125962306a36Sopenharmony_ci	omap_hwmod_init();
126062306a36Sopenharmony_ci	return omap_hwmod_register_links(dm816x_hwmod_ocp_ifs);
126162306a36Sopenharmony_ci}
1262