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