0001
0002
0003
0004
0005
0006
0007
0008
0009 #include <linux/types.h>
0010
0011 #include <linux/platform_data/hsmmc-omap.h>
0012
0013 #include "omap_hwmod_common_data.h"
0014 #include "cm81xx.h"
0015 #include "ti81xx.h"
0016 #include "wd_timer.h"
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028 #define DM81XX_CM_ALWON_MCASP0_CLKCTRL 0x140
0029 #define DM81XX_CM_ALWON_MCASP1_CLKCTRL 0x144
0030 #define DM81XX_CM_ALWON_MCASP2_CLKCTRL 0x148
0031 #define DM81XX_CM_ALWON_MCBSP_CLKCTRL 0x14c
0032 #define DM81XX_CM_ALWON_UART_0_CLKCTRL 0x150
0033 #define DM81XX_CM_ALWON_UART_1_CLKCTRL 0x154
0034 #define DM81XX_CM_ALWON_UART_2_CLKCTRL 0x158
0035 #define DM81XX_CM_ALWON_GPIO_0_CLKCTRL 0x15c
0036 #define DM81XX_CM_ALWON_GPIO_1_CLKCTRL 0x160
0037 #define DM81XX_CM_ALWON_I2C_0_CLKCTRL 0x164
0038 #define DM81XX_CM_ALWON_I2C_1_CLKCTRL 0x168
0039 #define DM81XX_CM_ALWON_WDTIMER_CLKCTRL 0x18c
0040 #define DM81XX_CM_ALWON_SPI_CLKCTRL 0x190
0041 #define DM81XX_CM_ALWON_MAILBOX_CLKCTRL 0x194
0042 #define DM81XX_CM_ALWON_SPINBOX_CLKCTRL 0x198
0043 #define DM81XX_CM_ALWON_MMUDATA_CLKCTRL 0x19c
0044 #define DM81XX_CM_ALWON_MMUCFG_CLKCTRL 0x1a8
0045 #define DM81XX_CM_ALWON_CONTROL_CLKCTRL 0x1c4
0046 #define DM81XX_CM_ALWON_GPMC_CLKCTRL 0x1d0
0047 #define DM81XX_CM_ALWON_ETHERNET_0_CLKCTRL 0x1d4
0048 #define DM81XX_CM_ALWON_L3_CLKCTRL 0x1e4
0049 #define DM81XX_CM_ALWON_L4HS_CLKCTRL 0x1e8
0050 #define DM81XX_CM_ALWON_L4LS_CLKCTRL 0x1ec
0051 #define DM81XX_CM_ALWON_RTC_CLKCTRL 0x1f0
0052 #define DM81XX_CM_ALWON_TPCC_CLKCTRL 0x1f4
0053 #define DM81XX_CM_ALWON_TPTC0_CLKCTRL 0x1f8
0054 #define DM81XX_CM_ALWON_TPTC1_CLKCTRL 0x1fc
0055 #define DM81XX_CM_ALWON_TPTC2_CLKCTRL 0x200
0056 #define DM81XX_CM_ALWON_TPTC3_CLKCTRL 0x204
0057
0058
0059 #define DM814X_CM_ALWON_MCASP_3_4_5_CLKCTRL 0x16c
0060 #define DM814X_CM_ALWON_ATL_CLKCTRL 0x170
0061 #define DM814X_CM_ALWON_MLB_CLKCTRL 0x174
0062 #define DM814X_CM_ALWON_PATA_CLKCTRL 0x178
0063 #define DM814X_CM_ALWON_UART_3_CLKCTRL 0x180
0064 #define DM814X_CM_ALWON_UART_4_CLKCTRL 0x184
0065 #define DM814X_CM_ALWON_UART_5_CLKCTRL 0x188
0066 #define DM814X_CM_ALWON_OCM_0_CLKCTRL 0x1b4
0067 #define DM814X_CM_ALWON_VCP_CLKCTRL 0x1b8
0068 #define DM814X_CM_ALWON_MPU_CLKCTRL 0x1dc
0069 #define DM814X_CM_ALWON_DEBUGSS_CLKCTRL 0x1e0
0070 #define DM814X_CM_ALWON_DCAN_0_1_CLKCTRL 0x218
0071 #define DM814X_CM_ALWON_MMCHS_0_CLKCTRL 0x21c
0072 #define DM814X_CM_ALWON_MMCHS_1_CLKCTRL 0x220
0073 #define DM814X_CM_ALWON_MMCHS_2_CLKCTRL 0x224
0074 #define DM814X_CM_ALWON_CUST_EFUSE_CLKCTRL 0x228
0075
0076
0077 #define DM816X_DM_ALWON_BASE 0x1400
0078 #define DM816X_CM_ALWON_TIMER_1_CLKCTRL (0x1570 - DM816X_DM_ALWON_BASE)
0079 #define DM816X_CM_ALWON_TIMER_2_CLKCTRL (0x1574 - DM816X_DM_ALWON_BASE)
0080 #define DM816X_CM_ALWON_TIMER_3_CLKCTRL (0x1578 - DM816X_DM_ALWON_BASE)
0081 #define DM816X_CM_ALWON_TIMER_4_CLKCTRL (0x157c - DM816X_DM_ALWON_BASE)
0082 #define DM816X_CM_ALWON_TIMER_5_CLKCTRL (0x1580 - DM816X_DM_ALWON_BASE)
0083 #define DM816X_CM_ALWON_TIMER_6_CLKCTRL (0x1584 - DM816X_DM_ALWON_BASE)
0084 #define DM816X_CM_ALWON_TIMER_7_CLKCTRL (0x1588 - DM816X_DM_ALWON_BASE)
0085 #define DM816X_CM_ALWON_SDIO_CLKCTRL (0x15b0 - DM816X_DM_ALWON_BASE)
0086 #define DM816X_CM_ALWON_OCMC_0_CLKCTRL (0x15b4 - DM816X_DM_ALWON_BASE)
0087 #define DM816X_CM_ALWON_OCMC_1_CLKCTRL (0x15b8 - DM816X_DM_ALWON_BASE)
0088 #define DM816X_CM_ALWON_ETHERNET_1_CLKCTRL (0x15d8 - DM816X_DM_ALWON_BASE)
0089 #define DM816X_CM_ALWON_MPU_CLKCTRL (0x15dc - DM816X_DM_ALWON_BASE)
0090 #define DM816X_CM_ALWON_SR_0_CLKCTRL (0x1608 - DM816X_DM_ALWON_BASE)
0091 #define DM816X_CM_ALWON_SR_1_CLKCTRL (0x160c - DM816X_DM_ALWON_BASE)
0092
0093
0094
0095
0096
0097 #define DM81XX_CM_DEFAULT_OFFSET 0x500
0098 #define DM81XX_CM_DEFAULT_USB_CLKCTRL (0x558 - DM81XX_CM_DEFAULT_OFFSET)
0099 #define DM81XX_CM_DEFAULT_SATA_CLKCTRL (0x560 - DM81XX_CM_DEFAULT_OFFSET)
0100
0101
0102 static struct omap_hwmod dm81xx_alwon_l3_slow_hwmod = {
0103 .name = "alwon_l3_slow",
0104 .clkdm_name = "alwon_l3s_clkdm",
0105 .class = &l3_hwmod_class,
0106 .flags = HWMOD_NO_IDLEST,
0107 };
0108
0109 static struct omap_hwmod dm81xx_default_l3_slow_hwmod = {
0110 .name = "default_l3_slow",
0111 .clkdm_name = "default_l3_slow_clkdm",
0112 .class = &l3_hwmod_class,
0113 .flags = HWMOD_NO_IDLEST,
0114 };
0115
0116 static struct omap_hwmod dm81xx_alwon_l3_med_hwmod = {
0117 .name = "l3_med",
0118 .clkdm_name = "alwon_l3_med_clkdm",
0119 .class = &l3_hwmod_class,
0120 .flags = HWMOD_NO_IDLEST,
0121 };
0122
0123
0124
0125
0126
0127 static struct omap_hwmod dm81xx_l4_ls_hwmod = {
0128 .name = "l4_ls",
0129 .clkdm_name = "alwon_l3s_clkdm",
0130 .class = &l4_hwmod_class,
0131 .flags = HWMOD_NO_IDLEST,
0132 };
0133
0134
0135
0136
0137
0138
0139 static struct omap_hwmod dm81xx_l4_hs_hwmod = {
0140 .name = "l4_hs",
0141 .clkdm_name = "alwon_l3_med_clkdm",
0142 .class = &l4_hwmod_class,
0143 .flags = HWMOD_NO_IDLEST,
0144 };
0145
0146
0147 static struct omap_hwmod_ocp_if dm81xx_alwon_l3_slow__l4_ls = {
0148 .master = &dm81xx_alwon_l3_slow_hwmod,
0149 .slave = &dm81xx_l4_ls_hwmod,
0150 .user = OCP_USER_MPU,
0151 };
0152
0153
0154 static struct omap_hwmod_ocp_if dm81xx_alwon_l3_slow__l4_hs = {
0155 .master = &dm81xx_alwon_l3_med_hwmod,
0156 .slave = &dm81xx_l4_hs_hwmod,
0157 .user = OCP_USER_MPU,
0158 };
0159
0160
0161 static struct omap_hwmod dm814x_mpu_hwmod = {
0162 .name = "mpu",
0163 .clkdm_name = "alwon_l3s_clkdm",
0164 .class = &mpu_hwmod_class,
0165 .flags = HWMOD_INIT_NO_IDLE,
0166 .main_clk = "mpu_ck",
0167 .prcm = {
0168 .omap4 = {
0169 .clkctrl_offs = DM814X_CM_ALWON_MPU_CLKCTRL,
0170 .modulemode = MODULEMODE_SWCTRL,
0171 },
0172 },
0173 };
0174
0175 static struct omap_hwmod_ocp_if dm814x_mpu__alwon_l3_slow = {
0176 .master = &dm814x_mpu_hwmod,
0177 .slave = &dm81xx_alwon_l3_slow_hwmod,
0178 .user = OCP_USER_MPU,
0179 };
0180
0181
0182 static struct omap_hwmod_ocp_if dm814x_mpu__alwon_l3_med = {
0183 .master = &dm814x_mpu_hwmod,
0184 .slave = &dm81xx_alwon_l3_med_hwmod,
0185 .user = OCP_USER_MPU,
0186 };
0187
0188 static struct omap_hwmod dm816x_mpu_hwmod = {
0189 .name = "mpu",
0190 .clkdm_name = "alwon_mpu_clkdm",
0191 .class = &mpu_hwmod_class,
0192 .flags = HWMOD_INIT_NO_IDLE,
0193 .main_clk = "mpu_ck",
0194 .prcm = {
0195 .omap4 = {
0196 .clkctrl_offs = DM816X_CM_ALWON_MPU_CLKCTRL,
0197 .modulemode = MODULEMODE_SWCTRL,
0198 },
0199 },
0200 };
0201
0202 static struct omap_hwmod_ocp_if dm816x_mpu__alwon_l3_slow = {
0203 .master = &dm816x_mpu_hwmod,
0204 .slave = &dm81xx_alwon_l3_slow_hwmod,
0205 .user = OCP_USER_MPU,
0206 };
0207
0208
0209 static struct omap_hwmod_ocp_if dm816x_mpu__alwon_l3_med = {
0210 .master = &dm816x_mpu_hwmod,
0211 .slave = &dm81xx_alwon_l3_med_hwmod,
0212 .user = OCP_USER_MPU,
0213 };
0214
0215
0216 static struct omap_hwmod_class_sysconfig ti81xx_rtc_sysc = {
0217 .rev_offs = 0x74,
0218 .sysc_offs = 0x78,
0219 .sysc_flags = SYSC_HAS_SIDLEMODE,
0220 .idlemodes = SIDLE_FORCE | SIDLE_NO |
0221 SIDLE_SMART | SIDLE_SMART_WKUP,
0222 .sysc_fields = &omap_hwmod_sysc_type3,
0223 };
0224
0225 static struct omap_hwmod_class ti81xx_rtc_hwmod_class = {
0226 .name = "rtc",
0227 .sysc = &ti81xx_rtc_sysc,
0228 };
0229
0230 static struct omap_hwmod ti81xx_rtc_hwmod = {
0231 .name = "rtc",
0232 .class = &ti81xx_rtc_hwmod_class,
0233 .clkdm_name = "alwon_l3s_clkdm",
0234 .flags = HWMOD_NO_IDLEST,
0235 .main_clk = "sysclk18_ck",
0236 .prcm = {
0237 .omap4 = {
0238 .clkctrl_offs = DM81XX_CM_ALWON_RTC_CLKCTRL,
0239 .modulemode = MODULEMODE_SWCTRL,
0240 },
0241 },
0242 };
0243
0244 static struct omap_hwmod_ocp_if ti81xx_l4_ls__rtc = {
0245 .master = &dm81xx_l4_ls_hwmod,
0246 .slave = &ti81xx_rtc_hwmod,
0247 .clk = "sysclk6_ck",
0248 .user = OCP_USER_MPU,
0249 };
0250
0251
0252 static struct omap_hwmod_class_sysconfig uart_sysc = {
0253 .rev_offs = 0x50,
0254 .sysc_offs = 0x54,
0255 .syss_offs = 0x58,
0256 .sysc_flags = SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
0257 SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
0258 SYSS_HAS_RESET_STATUS,
0259 .idlemodes = SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
0260 MSTANDBY_SMART_WKUP,
0261 .sysc_fields = &omap_hwmod_sysc_type1,
0262 };
0263
0264 static struct omap_hwmod_class uart_class = {
0265 .name = "uart",
0266 .sysc = &uart_sysc,
0267 };
0268
0269 static struct omap_hwmod dm81xx_uart1_hwmod = {
0270 .name = "uart1",
0271 .clkdm_name = "alwon_l3s_clkdm",
0272 .main_clk = "sysclk10_ck",
0273 .prcm = {
0274 .omap4 = {
0275 .clkctrl_offs = DM81XX_CM_ALWON_UART_0_CLKCTRL,
0276 .modulemode = MODULEMODE_SWCTRL,
0277 },
0278 },
0279 .class = &uart_class,
0280 .flags = DEBUG_TI81XXUART1_FLAGS,
0281 };
0282
0283 static struct omap_hwmod_ocp_if dm81xx_l4_ls__uart1 = {
0284 .master = &dm81xx_l4_ls_hwmod,
0285 .slave = &dm81xx_uart1_hwmod,
0286 .clk = "sysclk6_ck",
0287 .user = OCP_USER_MPU,
0288 };
0289
0290 static struct omap_hwmod dm81xx_uart2_hwmod = {
0291 .name = "uart2",
0292 .clkdm_name = "alwon_l3s_clkdm",
0293 .main_clk = "sysclk10_ck",
0294 .prcm = {
0295 .omap4 = {
0296 .clkctrl_offs = DM81XX_CM_ALWON_UART_1_CLKCTRL,
0297 .modulemode = MODULEMODE_SWCTRL,
0298 },
0299 },
0300 .class = &uart_class,
0301 .flags = DEBUG_TI81XXUART2_FLAGS,
0302 };
0303
0304 static struct omap_hwmod_ocp_if dm81xx_l4_ls__uart2 = {
0305 .master = &dm81xx_l4_ls_hwmod,
0306 .slave = &dm81xx_uart2_hwmod,
0307 .clk = "sysclk6_ck",
0308 .user = OCP_USER_MPU,
0309 };
0310
0311 static struct omap_hwmod dm81xx_uart3_hwmod = {
0312 .name = "uart3",
0313 .clkdm_name = "alwon_l3s_clkdm",
0314 .main_clk = "sysclk10_ck",
0315 .prcm = {
0316 .omap4 = {
0317 .clkctrl_offs = DM81XX_CM_ALWON_UART_2_CLKCTRL,
0318 .modulemode = MODULEMODE_SWCTRL,
0319 },
0320 },
0321 .class = &uart_class,
0322 .flags = DEBUG_TI81XXUART3_FLAGS,
0323 };
0324
0325 static struct omap_hwmod_ocp_if dm81xx_l4_ls__uart3 = {
0326 .master = &dm81xx_l4_ls_hwmod,
0327 .slave = &dm81xx_uart3_hwmod,
0328 .clk = "sysclk6_ck",
0329 .user = OCP_USER_MPU,
0330 };
0331
0332 static struct omap_hwmod_class_sysconfig wd_timer_sysc = {
0333 .rev_offs = 0x0,
0334 .sysc_offs = 0x10,
0335 .syss_offs = 0x14,
0336 .sysc_flags = SYSC_HAS_EMUFREE | SYSC_HAS_SOFTRESET |
0337 SYSS_HAS_RESET_STATUS,
0338 .sysc_fields = &omap_hwmod_sysc_type1,
0339 };
0340
0341 static struct omap_hwmod_class wd_timer_class = {
0342 .name = "wd_timer",
0343 .sysc = &wd_timer_sysc,
0344 .pre_shutdown = &omap2_wd_timer_disable,
0345 .reset = &omap2_wd_timer_reset,
0346 };
0347
0348 static struct omap_hwmod dm81xx_wd_timer_hwmod = {
0349 .name = "wd_timer",
0350 .clkdm_name = "alwon_l3s_clkdm",
0351 .main_clk = "sysclk18_ck",
0352 .flags = HWMOD_NO_IDLEST,
0353 .prcm = {
0354 .omap4 = {
0355 .clkctrl_offs = DM81XX_CM_ALWON_WDTIMER_CLKCTRL,
0356 .modulemode = MODULEMODE_SWCTRL,
0357 },
0358 },
0359 .class = &wd_timer_class,
0360 };
0361
0362 static struct omap_hwmod_ocp_if dm81xx_l4_ls__wd_timer1 = {
0363 .master = &dm81xx_l4_ls_hwmod,
0364 .slave = &dm81xx_wd_timer_hwmod,
0365 .clk = "sysclk6_ck",
0366 .user = OCP_USER_MPU,
0367 };
0368
0369
0370 static struct omap_hwmod_class_sysconfig i2c_sysc = {
0371 .rev_offs = 0x0,
0372 .sysc_offs = 0x10,
0373 .syss_offs = 0x90,
0374 .sysc_flags = SYSC_HAS_SIDLEMODE |
0375 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
0376 SYSC_HAS_AUTOIDLE,
0377 .idlemodes = SIDLE_FORCE | SIDLE_NO | SIDLE_SMART,
0378 .sysc_fields = &omap_hwmod_sysc_type1,
0379 };
0380
0381 static struct omap_hwmod_class i2c_class = {
0382 .name = "i2c",
0383 .sysc = &i2c_sysc,
0384 };
0385
0386 static struct omap_hwmod dm81xx_i2c1_hwmod = {
0387 .name = "i2c1",
0388 .clkdm_name = "alwon_l3s_clkdm",
0389 .main_clk = "sysclk10_ck",
0390 .prcm = {
0391 .omap4 = {
0392 .clkctrl_offs = DM81XX_CM_ALWON_I2C_0_CLKCTRL,
0393 .modulemode = MODULEMODE_SWCTRL,
0394 },
0395 },
0396 .class = &i2c_class,
0397 };
0398
0399 static struct omap_hwmod_ocp_if dm81xx_l4_ls__i2c1 = {
0400 .master = &dm81xx_l4_ls_hwmod,
0401 .slave = &dm81xx_i2c1_hwmod,
0402 .clk = "sysclk6_ck",
0403 .user = OCP_USER_MPU,
0404 };
0405
0406 static struct omap_hwmod dm81xx_i2c2_hwmod = {
0407 .name = "i2c2",
0408 .clkdm_name = "alwon_l3s_clkdm",
0409 .main_clk = "sysclk10_ck",
0410 .prcm = {
0411 .omap4 = {
0412 .clkctrl_offs = DM81XX_CM_ALWON_I2C_1_CLKCTRL,
0413 .modulemode = MODULEMODE_SWCTRL,
0414 },
0415 },
0416 .class = &i2c_class,
0417 };
0418
0419 static struct omap_hwmod_ocp_if dm81xx_l4_ls__i2c2 = {
0420 .master = &dm81xx_l4_ls_hwmod,
0421 .slave = &dm81xx_i2c2_hwmod,
0422 .clk = "sysclk6_ck",
0423 .user = OCP_USER_MPU,
0424 };
0425
0426 static struct omap_hwmod_class_sysconfig dm81xx_elm_sysc = {
0427 .rev_offs = 0x0000,
0428 .sysc_offs = 0x0010,
0429 .syss_offs = 0x0014,
0430 .sysc_flags = SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
0431 SYSC_HAS_SOFTRESET |
0432 SYSS_HAS_RESET_STATUS,
0433 .idlemodes = SIDLE_FORCE | SIDLE_NO | SIDLE_SMART,
0434 .sysc_fields = &omap_hwmod_sysc_type1,
0435 };
0436
0437 static struct omap_hwmod_class dm81xx_elm_hwmod_class = {
0438 .name = "elm",
0439 .sysc = &dm81xx_elm_sysc,
0440 };
0441
0442 static struct omap_hwmod dm81xx_elm_hwmod = {
0443 .name = "elm",
0444 .clkdm_name = "alwon_l3s_clkdm",
0445 .class = &dm81xx_elm_hwmod_class,
0446 .main_clk = "sysclk6_ck",
0447 };
0448
0449 static struct omap_hwmod_ocp_if dm81xx_l4_ls__elm = {
0450 .master = &dm81xx_l4_ls_hwmod,
0451 .slave = &dm81xx_elm_hwmod,
0452 .clk = "sysclk6_ck",
0453 .user = OCP_USER_MPU,
0454 };
0455
0456 static struct omap_hwmod_class_sysconfig dm81xx_gpio_sysc = {
0457 .rev_offs = 0x0000,
0458 .sysc_offs = 0x0010,
0459 .syss_offs = 0x0114,
0460 .sysc_flags = SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP |
0461 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
0462 SYSS_HAS_RESET_STATUS,
0463 .idlemodes = SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
0464 SIDLE_SMART_WKUP,
0465 .sysc_fields = &omap_hwmod_sysc_type1,
0466 };
0467
0468 static struct omap_hwmod_class dm81xx_gpio_hwmod_class = {
0469 .name = "gpio",
0470 .sysc = &dm81xx_gpio_sysc,
0471 };
0472
0473 static struct omap_hwmod_opt_clk gpio1_opt_clks[] = {
0474 { .role = "dbclk", .clk = "sysclk18_ck" },
0475 };
0476
0477 static struct omap_hwmod dm81xx_gpio1_hwmod = {
0478 .name = "gpio1",
0479 .clkdm_name = "alwon_l3s_clkdm",
0480 .class = &dm81xx_gpio_hwmod_class,
0481 .main_clk = "sysclk6_ck",
0482 .prcm = {
0483 .omap4 = {
0484 .clkctrl_offs = DM81XX_CM_ALWON_GPIO_0_CLKCTRL,
0485 .modulemode = MODULEMODE_SWCTRL,
0486 },
0487 },
0488 .opt_clks = gpio1_opt_clks,
0489 .opt_clks_cnt = ARRAY_SIZE(gpio1_opt_clks),
0490 };
0491
0492 static struct omap_hwmod_ocp_if dm81xx_l4_ls__gpio1 = {
0493 .master = &dm81xx_l4_ls_hwmod,
0494 .slave = &dm81xx_gpio1_hwmod,
0495 .clk = "sysclk6_ck",
0496 .user = OCP_USER_MPU,
0497 };
0498
0499 static struct omap_hwmod_opt_clk gpio2_opt_clks[] = {
0500 { .role = "dbclk", .clk = "sysclk18_ck" },
0501 };
0502
0503 static struct omap_hwmod dm81xx_gpio2_hwmod = {
0504 .name = "gpio2",
0505 .clkdm_name = "alwon_l3s_clkdm",
0506 .class = &dm81xx_gpio_hwmod_class,
0507 .main_clk = "sysclk6_ck",
0508 .prcm = {
0509 .omap4 = {
0510 .clkctrl_offs = DM81XX_CM_ALWON_GPIO_1_CLKCTRL,
0511 .modulemode = MODULEMODE_SWCTRL,
0512 },
0513 },
0514 .opt_clks = gpio2_opt_clks,
0515 .opt_clks_cnt = ARRAY_SIZE(gpio2_opt_clks),
0516 };
0517
0518 static struct omap_hwmod_ocp_if dm81xx_l4_ls__gpio2 = {
0519 .master = &dm81xx_l4_ls_hwmod,
0520 .slave = &dm81xx_gpio2_hwmod,
0521 .clk = "sysclk6_ck",
0522 .user = OCP_USER_MPU,
0523 };
0524
0525 static struct omap_hwmod_opt_clk gpio3_opt_clks[] = {
0526 { .role = "dbclk", .clk = "sysclk18_ck" },
0527 };
0528
0529 static struct omap_hwmod dm81xx_gpio3_hwmod = {
0530 .name = "gpio3",
0531 .clkdm_name = "alwon_l3s_clkdm",
0532 .class = &dm81xx_gpio_hwmod_class,
0533 .main_clk = "sysclk6_ck",
0534 .prcm = {
0535 .omap4 = {
0536 .clkctrl_offs = DM81XX_CM_ALWON_GPIO_1_CLKCTRL,
0537 .modulemode = MODULEMODE_SWCTRL,
0538 },
0539 },
0540 .opt_clks = gpio3_opt_clks,
0541 .opt_clks_cnt = ARRAY_SIZE(gpio3_opt_clks),
0542 };
0543
0544 static struct omap_hwmod_ocp_if dm81xx_l4_ls__gpio3 = {
0545 .master = &dm81xx_l4_ls_hwmod,
0546 .slave = &dm81xx_gpio3_hwmod,
0547 .clk = "sysclk6_ck",
0548 .user = OCP_USER_MPU,
0549 };
0550
0551 static struct omap_hwmod_opt_clk gpio4_opt_clks[] = {
0552 { .role = "dbclk", .clk = "sysclk18_ck" },
0553 };
0554
0555 static struct omap_hwmod dm81xx_gpio4_hwmod = {
0556 .name = "gpio4",
0557 .clkdm_name = "alwon_l3s_clkdm",
0558 .class = &dm81xx_gpio_hwmod_class,
0559 .main_clk = "sysclk6_ck",
0560 .prcm = {
0561 .omap4 = {
0562 .clkctrl_offs = DM81XX_CM_ALWON_GPIO_1_CLKCTRL,
0563 .modulemode = MODULEMODE_SWCTRL,
0564 },
0565 },
0566 .opt_clks = gpio4_opt_clks,
0567 .opt_clks_cnt = ARRAY_SIZE(gpio4_opt_clks),
0568 };
0569
0570 static struct omap_hwmod_ocp_if dm81xx_l4_ls__gpio4 = {
0571 .master = &dm81xx_l4_ls_hwmod,
0572 .slave = &dm81xx_gpio4_hwmod,
0573 .clk = "sysclk6_ck",
0574 .user = OCP_USER_MPU,
0575 };
0576
0577 static struct omap_hwmod_class_sysconfig dm81xx_gpmc_sysc = {
0578 .rev_offs = 0x0,
0579 .sysc_offs = 0x10,
0580 .syss_offs = 0x14,
0581 .sysc_flags = SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
0582 SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS,
0583 .idlemodes = SIDLE_FORCE | SIDLE_NO | SIDLE_SMART,
0584 .sysc_fields = &omap_hwmod_sysc_type1,
0585 };
0586
0587 static struct omap_hwmod_class dm81xx_gpmc_hwmod_class = {
0588 .name = "gpmc",
0589 .sysc = &dm81xx_gpmc_sysc,
0590 };
0591
0592 static struct omap_hwmod dm81xx_gpmc_hwmod = {
0593 .name = "gpmc",
0594 .clkdm_name = "alwon_l3s_clkdm",
0595 .class = &dm81xx_gpmc_hwmod_class,
0596 .main_clk = "sysclk6_ck",
0597
0598 .flags = DEBUG_OMAP_GPMC_HWMOD_FLAGS,
0599 .prcm = {
0600 .omap4 = {
0601 .clkctrl_offs = DM81XX_CM_ALWON_GPMC_CLKCTRL,
0602 .modulemode = MODULEMODE_SWCTRL,
0603 },
0604 },
0605 };
0606
0607 static struct omap_hwmod_ocp_if dm81xx_alwon_l3_slow__gpmc = {
0608 .master = &dm81xx_alwon_l3_slow_hwmod,
0609 .slave = &dm81xx_gpmc_hwmod,
0610 .user = OCP_USER_MPU,
0611 };
0612
0613
0614 static struct omap_hwmod_class_sysconfig dm81xx_usbhsotg_sysc = {
0615 .rev_offs = 0x0,
0616 .sysc_offs = 0x10,
0617 .srst_udelay = 2,
0618 .sysc_flags = SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE |
0619 SYSC_HAS_SOFTRESET,
0620 .idlemodes = SIDLE_SMART | MSTANDBY_FORCE | MSTANDBY_SMART,
0621 .sysc_fields = &omap_hwmod_sysc_type2,
0622 };
0623
0624 static struct omap_hwmod_class dm81xx_usbotg_class = {
0625 .name = "usbotg",
0626 .sysc = &dm81xx_usbhsotg_sysc,
0627 };
0628
0629 static struct omap_hwmod dm814x_usbss_hwmod = {
0630 .name = "usb_otg_hs",
0631 .clkdm_name = "default_l3_slow_clkdm",
0632 .main_clk = "pll260dcoclkldo",
0633 .prcm = {
0634 .omap4 = {
0635 .clkctrl_offs = DM81XX_CM_DEFAULT_USB_CLKCTRL,
0636 .modulemode = MODULEMODE_SWCTRL,
0637 },
0638 },
0639 .class = &dm81xx_usbotg_class,
0640 };
0641
0642 static struct omap_hwmod_ocp_if dm814x_default_l3_slow__usbss = {
0643 .master = &dm81xx_default_l3_slow_hwmod,
0644 .slave = &dm814x_usbss_hwmod,
0645 .clk = "sysclk6_ck",
0646 .user = OCP_USER_MPU,
0647 };
0648
0649 static struct omap_hwmod dm816x_usbss_hwmod = {
0650 .name = "usb_otg_hs",
0651 .clkdm_name = "default_l3_slow_clkdm",
0652 .main_clk = "sysclk6_ck",
0653 .prcm = {
0654 .omap4 = {
0655 .clkctrl_offs = DM81XX_CM_DEFAULT_USB_CLKCTRL,
0656 .modulemode = MODULEMODE_SWCTRL,
0657 },
0658 },
0659 .class = &dm81xx_usbotg_class,
0660 };
0661
0662 static struct omap_hwmod_ocp_if dm816x_default_l3_slow__usbss = {
0663 .master = &dm81xx_default_l3_slow_hwmod,
0664 .slave = &dm816x_usbss_hwmod,
0665 .clk = "sysclk6_ck",
0666 .user = OCP_USER_MPU,
0667 };
0668
0669 static struct omap_hwmod_class_sysconfig dm816x_timer_sysc = {
0670 .rev_offs = 0x0000,
0671 .sysc_offs = 0x0010,
0672 .syss_offs = 0x0014,
0673 .sysc_flags = SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET,
0674 .idlemodes = SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
0675 SIDLE_SMART_WKUP,
0676 .sysc_fields = &omap_hwmod_sysc_type2,
0677 };
0678
0679 static struct omap_hwmod_class dm816x_timer_hwmod_class = {
0680 .name = "timer",
0681 .sysc = &dm816x_timer_sysc,
0682 };
0683
0684 static struct omap_hwmod dm816x_timer3_hwmod = {
0685 .name = "timer3",
0686 .clkdm_name = "alwon_l3s_clkdm",
0687 .main_clk = "timer3_fck",
0688 .prcm = {
0689 .omap4 = {
0690 .clkctrl_offs = DM816X_CM_ALWON_TIMER_3_CLKCTRL,
0691 .modulemode = MODULEMODE_SWCTRL,
0692 },
0693 },
0694 .class = &dm816x_timer_hwmod_class,
0695 };
0696
0697 static struct omap_hwmod_ocp_if dm816x_l4_ls__timer3 = {
0698 .master = &dm81xx_l4_ls_hwmod,
0699 .slave = &dm816x_timer3_hwmod,
0700 .clk = "sysclk6_ck",
0701 .user = OCP_USER_MPU,
0702 };
0703
0704 static struct omap_hwmod dm816x_timer4_hwmod = {
0705 .name = "timer4",
0706 .clkdm_name = "alwon_l3s_clkdm",
0707 .main_clk = "timer4_fck",
0708 .prcm = {
0709 .omap4 = {
0710 .clkctrl_offs = DM816X_CM_ALWON_TIMER_4_CLKCTRL,
0711 .modulemode = MODULEMODE_SWCTRL,
0712 },
0713 },
0714 .class = &dm816x_timer_hwmod_class,
0715 };
0716
0717 static struct omap_hwmod_ocp_if dm816x_l4_ls__timer4 = {
0718 .master = &dm81xx_l4_ls_hwmod,
0719 .slave = &dm816x_timer4_hwmod,
0720 .clk = "sysclk6_ck",
0721 .user = OCP_USER_MPU,
0722 };
0723
0724 static struct omap_hwmod dm816x_timer5_hwmod = {
0725 .name = "timer5",
0726 .clkdm_name = "alwon_l3s_clkdm",
0727 .main_clk = "timer5_fck",
0728 .prcm = {
0729 .omap4 = {
0730 .clkctrl_offs = DM816X_CM_ALWON_TIMER_5_CLKCTRL,
0731 .modulemode = MODULEMODE_SWCTRL,
0732 },
0733 },
0734 .class = &dm816x_timer_hwmod_class,
0735 };
0736
0737 static struct omap_hwmod_ocp_if dm816x_l4_ls__timer5 = {
0738 .master = &dm81xx_l4_ls_hwmod,
0739 .slave = &dm816x_timer5_hwmod,
0740 .clk = "sysclk6_ck",
0741 .user = OCP_USER_MPU,
0742 };
0743
0744 static struct omap_hwmod dm816x_timer6_hwmod = {
0745 .name = "timer6",
0746 .clkdm_name = "alwon_l3s_clkdm",
0747 .main_clk = "timer6_fck",
0748 .prcm = {
0749 .omap4 = {
0750 .clkctrl_offs = DM816X_CM_ALWON_TIMER_6_CLKCTRL,
0751 .modulemode = MODULEMODE_SWCTRL,
0752 },
0753 },
0754 .class = &dm816x_timer_hwmod_class,
0755 };
0756
0757 static struct omap_hwmod_ocp_if dm816x_l4_ls__timer6 = {
0758 .master = &dm81xx_l4_ls_hwmod,
0759 .slave = &dm816x_timer6_hwmod,
0760 .clk = "sysclk6_ck",
0761 .user = OCP_USER_MPU,
0762 };
0763
0764 static struct omap_hwmod dm816x_timer7_hwmod = {
0765 .name = "timer7",
0766 .clkdm_name = "alwon_l3s_clkdm",
0767 .main_clk = "timer7_fck",
0768 .prcm = {
0769 .omap4 = {
0770 .clkctrl_offs = DM816X_CM_ALWON_TIMER_7_CLKCTRL,
0771 .modulemode = MODULEMODE_SWCTRL,
0772 },
0773 },
0774 .class = &dm816x_timer_hwmod_class,
0775 };
0776
0777 static struct omap_hwmod_ocp_if dm816x_l4_ls__timer7 = {
0778 .master = &dm81xx_l4_ls_hwmod,
0779 .slave = &dm816x_timer7_hwmod,
0780 .clk = "sysclk6_ck",
0781 .user = OCP_USER_MPU,
0782 };
0783
0784
0785 static struct omap_hwmod_class_sysconfig dm816x_emac_sysc = {
0786 .rev_offs = 0x0,
0787 .sysc_offs = 0x4,
0788 .sysc_flags = SYSC_HAS_SOFTRESET,
0789 .sysc_fields = &omap_hwmod_sysc_type2,
0790 };
0791
0792 static struct omap_hwmod_class dm816x_emac_hwmod_class = {
0793 .name = "emac",
0794 .sysc = &dm816x_emac_sysc,
0795 };
0796
0797
0798
0799
0800
0801 static struct omap_hwmod dm816x_emac0_hwmod = {
0802 .name = "emac0",
0803 .clkdm_name = "alwon_ethernet_clkdm",
0804 .class = &dm816x_emac_hwmod_class,
0805 .flags = HWMOD_NO_IDLEST,
0806 };
0807
0808 static struct omap_hwmod_ocp_if dm81xx_l4_hs__emac0 = {
0809 .master = &dm81xx_l4_hs_hwmod,
0810 .slave = &dm816x_emac0_hwmod,
0811 .clk = "sysclk5_ck",
0812 .user = OCP_USER_MPU,
0813 };
0814
0815 static struct omap_hwmod_class dm81xx_mdio_hwmod_class = {
0816 .name = "davinci_mdio",
0817 .sysc = &dm816x_emac_sysc,
0818 };
0819
0820 static struct omap_hwmod dm81xx_emac0_mdio_hwmod = {
0821 .name = "davinci_mdio",
0822 .class = &dm81xx_mdio_hwmod_class,
0823 .clkdm_name = "alwon_ethernet_clkdm",
0824 .main_clk = "sysclk24_ck",
0825 .flags = HWMOD_NO_IDLEST,
0826
0827
0828
0829
0830 .prcm = {
0831 .omap4 = {
0832 .clkctrl_offs = DM81XX_CM_ALWON_ETHERNET_0_CLKCTRL,
0833 .modulemode = MODULEMODE_SWCTRL,
0834 },
0835 },
0836 };
0837
0838 static struct omap_hwmod_ocp_if dm81xx_emac0__mdio = {
0839 .master = &dm81xx_l4_hs_hwmod,
0840 .slave = &dm81xx_emac0_mdio_hwmod,
0841 .user = OCP_USER_MPU,
0842 };
0843
0844 static struct omap_hwmod dm816x_emac1_hwmod = {
0845 .name = "emac1",
0846 .clkdm_name = "alwon_ethernet_clkdm",
0847 .main_clk = "sysclk24_ck",
0848 .flags = HWMOD_NO_IDLEST,
0849 .prcm = {
0850 .omap4 = {
0851 .clkctrl_offs = DM816X_CM_ALWON_ETHERNET_1_CLKCTRL,
0852 .modulemode = MODULEMODE_SWCTRL,
0853 },
0854 },
0855 .class = &dm816x_emac_hwmod_class,
0856 };
0857
0858 static struct omap_hwmod_ocp_if dm816x_l4_hs__emac1 = {
0859 .master = &dm81xx_l4_hs_hwmod,
0860 .slave = &dm816x_emac1_hwmod,
0861 .clk = "sysclk5_ck",
0862 .user = OCP_USER_MPU,
0863 };
0864
0865 static struct omap_hwmod_class_sysconfig dm81xx_sata_sysc = {
0866 .rev_offs = 0x00fc,
0867 .sysc_offs = 0x1100,
0868 .sysc_flags = SYSC_HAS_SIDLEMODE,
0869 .idlemodes = SIDLE_FORCE,
0870 .sysc_fields = &omap_hwmod_sysc_type3,
0871 };
0872
0873 static struct omap_hwmod_class dm81xx_sata_hwmod_class = {
0874 .name = "sata",
0875 .sysc = &dm81xx_sata_sysc,
0876 };
0877
0878 static struct omap_hwmod dm81xx_sata_hwmod = {
0879 .name = "sata",
0880 .clkdm_name = "default_clkdm",
0881 .flags = HWMOD_NO_IDLEST,
0882 .prcm = {
0883 .omap4 = {
0884 .clkctrl_offs = DM81XX_CM_DEFAULT_SATA_CLKCTRL,
0885 .modulemode = MODULEMODE_SWCTRL,
0886 },
0887 },
0888 .class = &dm81xx_sata_hwmod_class,
0889 };
0890
0891 static struct omap_hwmod_ocp_if dm81xx_l4_hs__sata = {
0892 .master = &dm81xx_l4_hs_hwmod,
0893 .slave = &dm81xx_sata_hwmod,
0894 .clk = "sysclk5_ck",
0895 .user = OCP_USER_MPU,
0896 };
0897
0898 static struct omap_hwmod_class_sysconfig dm81xx_mmc_sysc = {
0899 .rev_offs = 0x0,
0900 .sysc_offs = 0x110,
0901 .syss_offs = 0x114,
0902 .sysc_flags = SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
0903 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
0904 SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS,
0905 .idlemodes = SIDLE_FORCE | SIDLE_NO | SIDLE_SMART,
0906 .sysc_fields = &omap_hwmod_sysc_type1,
0907 };
0908
0909 static struct omap_hwmod_class dm81xx_mmc_class = {
0910 .name = "mmc",
0911 .sysc = &dm81xx_mmc_sysc,
0912 };
0913
0914 static struct omap_hwmod_opt_clk dm81xx_mmc_opt_clks[] = {
0915 { .role = "dbck", .clk = "sysclk18_ck", },
0916 };
0917
0918 static struct omap_hsmmc_dev_attr mmc_dev_attr = {
0919 };
0920
0921 static struct omap_hwmod dm814x_mmc1_hwmod = {
0922 .name = "mmc1",
0923 .clkdm_name = "alwon_l3s_clkdm",
0924 .opt_clks = dm81xx_mmc_opt_clks,
0925 .opt_clks_cnt = ARRAY_SIZE(dm81xx_mmc_opt_clks),
0926 .main_clk = "sysclk8_ck",
0927 .prcm = {
0928 .omap4 = {
0929 .clkctrl_offs = DM814X_CM_ALWON_MMCHS_0_CLKCTRL,
0930 .modulemode = MODULEMODE_SWCTRL,
0931 },
0932 },
0933 .dev_attr = &mmc_dev_attr,
0934 .class = &dm81xx_mmc_class,
0935 };
0936
0937 static struct omap_hwmod_ocp_if dm814x_l4_ls__mmc1 = {
0938 .master = &dm81xx_l4_ls_hwmod,
0939 .slave = &dm814x_mmc1_hwmod,
0940 .clk = "sysclk6_ck",
0941 .user = OCP_USER_MPU,
0942 .flags = OMAP_FIREWALL_L4
0943 };
0944
0945 static struct omap_hwmod dm814x_mmc2_hwmod = {
0946 .name = "mmc2",
0947 .clkdm_name = "alwon_l3s_clkdm",
0948 .opt_clks = dm81xx_mmc_opt_clks,
0949 .opt_clks_cnt = ARRAY_SIZE(dm81xx_mmc_opt_clks),
0950 .main_clk = "sysclk8_ck",
0951 .prcm = {
0952 .omap4 = {
0953 .clkctrl_offs = DM814X_CM_ALWON_MMCHS_1_CLKCTRL,
0954 .modulemode = MODULEMODE_SWCTRL,
0955 },
0956 },
0957 .dev_attr = &mmc_dev_attr,
0958 .class = &dm81xx_mmc_class,
0959 };
0960
0961 static struct omap_hwmod_ocp_if dm814x_l4_ls__mmc2 = {
0962 .master = &dm81xx_l4_ls_hwmod,
0963 .slave = &dm814x_mmc2_hwmod,
0964 .clk = "sysclk6_ck",
0965 .user = OCP_USER_MPU,
0966 .flags = OMAP_FIREWALL_L4
0967 };
0968
0969 static struct omap_hwmod dm814x_mmc3_hwmod = {
0970 .name = "mmc3",
0971 .clkdm_name = "alwon_l3_med_clkdm",
0972 .opt_clks = dm81xx_mmc_opt_clks,
0973 .opt_clks_cnt = ARRAY_SIZE(dm81xx_mmc_opt_clks),
0974 .main_clk = "sysclk8_ck",
0975 .prcm = {
0976 .omap4 = {
0977 .clkctrl_offs = DM814X_CM_ALWON_MMCHS_2_CLKCTRL,
0978 .modulemode = MODULEMODE_SWCTRL,
0979 },
0980 },
0981 .dev_attr = &mmc_dev_attr,
0982 .class = &dm81xx_mmc_class,
0983 };
0984
0985 static struct omap_hwmod_ocp_if dm814x_alwon_l3_med__mmc3 = {
0986 .master = &dm81xx_alwon_l3_med_hwmod,
0987 .slave = &dm814x_mmc3_hwmod,
0988 .clk = "sysclk4_ck",
0989 .user = OCP_USER_MPU,
0990 };
0991
0992 static struct omap_hwmod dm816x_mmc1_hwmod = {
0993 .name = "mmc1",
0994 .clkdm_name = "alwon_l3s_clkdm",
0995 .opt_clks = dm81xx_mmc_opt_clks,
0996 .opt_clks_cnt = ARRAY_SIZE(dm81xx_mmc_opt_clks),
0997 .main_clk = "sysclk10_ck",
0998 .prcm = {
0999 .omap4 = {
1000 .clkctrl_offs = DM816X_CM_ALWON_SDIO_CLKCTRL,
1001 .modulemode = MODULEMODE_SWCTRL,
1002 },
1003 },
1004 .dev_attr = &mmc_dev_attr,
1005 .class = &dm81xx_mmc_class,
1006 };
1007
1008 static struct omap_hwmod_ocp_if dm816x_l4_ls__mmc1 = {
1009 .master = &dm81xx_l4_ls_hwmod,
1010 .slave = &dm816x_mmc1_hwmod,
1011 .clk = "sysclk6_ck",
1012 .user = OCP_USER_MPU,
1013 .flags = OMAP_FIREWALL_L4
1014 };
1015
1016 static struct omap_hwmod_class_sysconfig dm816x_mcspi_sysc = {
1017 .rev_offs = 0x0,
1018 .sysc_offs = 0x110,
1019 .syss_offs = 0x114,
1020 .sysc_flags = SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
1021 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
1022 SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS,
1023 .idlemodes = SIDLE_FORCE | SIDLE_NO | SIDLE_SMART,
1024 .sysc_fields = &omap_hwmod_sysc_type1,
1025 };
1026
1027 static struct omap_hwmod_class dm816x_mcspi_class = {
1028 .name = "mcspi",
1029 .sysc = &dm816x_mcspi_sysc,
1030 };
1031
1032 static struct omap_hwmod dm81xx_mcspi1_hwmod = {
1033 .name = "mcspi1",
1034 .clkdm_name = "alwon_l3s_clkdm",
1035 .main_clk = "sysclk10_ck",
1036 .prcm = {
1037 .omap4 = {
1038 .clkctrl_offs = DM81XX_CM_ALWON_SPI_CLKCTRL,
1039 .modulemode = MODULEMODE_SWCTRL,
1040 },
1041 },
1042 .class = &dm816x_mcspi_class,
1043 };
1044
1045 static struct omap_hwmod dm81xx_mcspi2_hwmod = {
1046 .name = "mcspi2",
1047 .clkdm_name = "alwon_l3s_clkdm",
1048 .main_clk = "sysclk10_ck",
1049 .prcm = {
1050 .omap4 = {
1051 .clkctrl_offs = DM81XX_CM_ALWON_SPI_CLKCTRL,
1052 .modulemode = MODULEMODE_SWCTRL,
1053 },
1054 },
1055 .class = &dm816x_mcspi_class,
1056 };
1057
1058 static struct omap_hwmod dm81xx_mcspi3_hwmod = {
1059 .name = "mcspi3",
1060 .clkdm_name = "alwon_l3s_clkdm",
1061 .main_clk = "sysclk10_ck",
1062 .prcm = {
1063 .omap4 = {
1064 .clkctrl_offs = DM81XX_CM_ALWON_SPI_CLKCTRL,
1065 .modulemode = MODULEMODE_SWCTRL,
1066 },
1067 },
1068 .class = &dm816x_mcspi_class,
1069 };
1070
1071 static struct omap_hwmod dm81xx_mcspi4_hwmod = {
1072 .name = "mcspi4",
1073 .clkdm_name = "alwon_l3s_clkdm",
1074 .main_clk = "sysclk10_ck",
1075 .prcm = {
1076 .omap4 = {
1077 .clkctrl_offs = DM81XX_CM_ALWON_SPI_CLKCTRL,
1078 .modulemode = MODULEMODE_SWCTRL,
1079 },
1080 },
1081 .class = &dm816x_mcspi_class,
1082 };
1083
1084 static struct omap_hwmod_ocp_if dm81xx_l4_ls__mcspi1 = {
1085 .master = &dm81xx_l4_ls_hwmod,
1086 .slave = &dm81xx_mcspi1_hwmod,
1087 .clk = "sysclk6_ck",
1088 .user = OCP_USER_MPU,
1089 };
1090
1091 static struct omap_hwmod_ocp_if dm81xx_l4_ls__mcspi2 = {
1092 .master = &dm81xx_l4_ls_hwmod,
1093 .slave = &dm81xx_mcspi2_hwmod,
1094 .clk = "sysclk6_ck",
1095 .user = OCP_USER_MPU,
1096 };
1097
1098 static struct omap_hwmod_ocp_if dm81xx_l4_ls__mcspi3 = {
1099 .master = &dm81xx_l4_ls_hwmod,
1100 .slave = &dm81xx_mcspi3_hwmod,
1101 .clk = "sysclk6_ck",
1102 .user = OCP_USER_MPU,
1103 };
1104
1105 static struct omap_hwmod_ocp_if dm81xx_l4_ls__mcspi4 = {
1106 .master = &dm81xx_l4_ls_hwmod,
1107 .slave = &dm81xx_mcspi4_hwmod,
1108 .clk = "sysclk6_ck",
1109 .user = OCP_USER_MPU,
1110 };
1111
1112 static struct omap_hwmod_class_sysconfig dm81xx_mailbox_sysc = {
1113 .rev_offs = 0x000,
1114 .sysc_offs = 0x010,
1115 .syss_offs = 0x014,
1116 .sysc_flags = SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
1117 SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE,
1118 .idlemodes = SIDLE_FORCE | SIDLE_NO | SIDLE_SMART,
1119 .sysc_fields = &omap_hwmod_sysc_type1,
1120 };
1121
1122 static struct omap_hwmod_class dm81xx_mailbox_hwmod_class = {
1123 .name = "mailbox",
1124 .sysc = &dm81xx_mailbox_sysc,
1125 };
1126
1127 static struct omap_hwmod dm81xx_mailbox_hwmod = {
1128 .name = "mailbox",
1129 .clkdm_name = "alwon_l3s_clkdm",
1130 .class = &dm81xx_mailbox_hwmod_class,
1131 .main_clk = "sysclk6_ck",
1132 .prcm = {
1133 .omap4 = {
1134 .clkctrl_offs = DM81XX_CM_ALWON_MAILBOX_CLKCTRL,
1135 .modulemode = MODULEMODE_SWCTRL,
1136 },
1137 },
1138 };
1139
1140 static struct omap_hwmod_ocp_if dm81xx_l4_ls__mailbox = {
1141 .master = &dm81xx_l4_ls_hwmod,
1142 .slave = &dm81xx_mailbox_hwmod,
1143 .clk = "sysclk6_ck",
1144 .user = OCP_USER_MPU,
1145 };
1146
1147 static struct omap_hwmod_class_sysconfig dm81xx_spinbox_sysc = {
1148 .rev_offs = 0x000,
1149 .sysc_offs = 0x010,
1150 .syss_offs = 0x014,
1151 .sysc_flags = SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
1152 SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE,
1153 .idlemodes = SIDLE_FORCE | SIDLE_NO | SIDLE_SMART,
1154 .sysc_fields = &omap_hwmod_sysc_type1,
1155 };
1156
1157 static struct omap_hwmod_class dm81xx_spinbox_hwmod_class = {
1158 .name = "spinbox",
1159 .sysc = &dm81xx_spinbox_sysc,
1160 };
1161
1162 static struct omap_hwmod dm81xx_spinbox_hwmod = {
1163 .name = "spinbox",
1164 .clkdm_name = "alwon_l3s_clkdm",
1165 .class = &dm81xx_spinbox_hwmod_class,
1166 .main_clk = "sysclk6_ck",
1167 .prcm = {
1168 .omap4 = {
1169 .clkctrl_offs = DM81XX_CM_ALWON_SPINBOX_CLKCTRL,
1170 .modulemode = MODULEMODE_SWCTRL,
1171 },
1172 },
1173 };
1174
1175 static struct omap_hwmod_ocp_if dm81xx_l4_ls__spinbox = {
1176 .master = &dm81xx_l4_ls_hwmod,
1177 .slave = &dm81xx_spinbox_hwmod,
1178 .clk = "sysclk6_ck",
1179 .user = OCP_USER_MPU,
1180 };
1181
1182
1183
1184
1185
1186
1187
1188
1189 static struct omap_hwmod_ocp_if *dm814x_hwmod_ocp_ifs[] __initdata = {
1190 &dm814x_mpu__alwon_l3_slow,
1191 &dm814x_mpu__alwon_l3_med,
1192 &dm81xx_alwon_l3_slow__l4_ls,
1193 &dm81xx_alwon_l3_slow__l4_hs,
1194 &dm81xx_l4_ls__uart1,
1195 &dm81xx_l4_ls__uart2,
1196 &dm81xx_l4_ls__uart3,
1197 &dm81xx_l4_ls__wd_timer1,
1198 &dm81xx_l4_ls__i2c1,
1199 &dm81xx_l4_ls__i2c2,
1200 &dm81xx_l4_ls__gpio1,
1201 &dm81xx_l4_ls__gpio2,
1202 &dm81xx_l4_ls__gpio3,
1203 &dm81xx_l4_ls__gpio4,
1204 &dm81xx_l4_ls__elm,
1205 &dm81xx_l4_ls__mcspi1,
1206 &dm81xx_l4_ls__mcspi2,
1207 &dm81xx_l4_ls__mcspi3,
1208 &dm81xx_l4_ls__mcspi4,
1209 &dm814x_l4_ls__mmc1,
1210 &dm814x_l4_ls__mmc2,
1211 &ti81xx_l4_ls__rtc,
1212 &dm81xx_alwon_l3_slow__gpmc,
1213 &dm814x_default_l3_slow__usbss,
1214 &dm814x_alwon_l3_med__mmc3,
1215 NULL,
1216 };
1217
1218 int __init dm814x_hwmod_init(void)
1219 {
1220 omap_hwmod_init();
1221 return omap_hwmod_register_links(dm814x_hwmod_ocp_ifs);
1222 }
1223
1224 static struct omap_hwmod_ocp_if *dm816x_hwmod_ocp_ifs[] __initdata = {
1225 &dm816x_mpu__alwon_l3_slow,
1226 &dm816x_mpu__alwon_l3_med,
1227 &dm81xx_alwon_l3_slow__l4_ls,
1228 &dm81xx_alwon_l3_slow__l4_hs,
1229 &dm81xx_l4_ls__uart1,
1230 &dm81xx_l4_ls__uart2,
1231 &dm81xx_l4_ls__uart3,
1232 &dm81xx_l4_ls__wd_timer1,
1233 &dm81xx_l4_ls__i2c1,
1234 &dm81xx_l4_ls__i2c2,
1235 &dm81xx_l4_ls__gpio1,
1236 &dm81xx_l4_ls__gpio2,
1237 &dm81xx_l4_ls__elm,
1238 &ti81xx_l4_ls__rtc,
1239 &dm816x_l4_ls__mmc1,
1240 &dm816x_l4_ls__timer3,
1241 &dm816x_l4_ls__timer4,
1242 &dm816x_l4_ls__timer5,
1243 &dm816x_l4_ls__timer6,
1244 &dm816x_l4_ls__timer7,
1245 &dm81xx_l4_ls__mcspi1,
1246 &dm81xx_l4_ls__mailbox,
1247 &dm81xx_l4_ls__spinbox,
1248 &dm81xx_l4_hs__emac0,
1249 &dm81xx_emac0__mdio,
1250 &dm816x_l4_hs__emac1,
1251 &dm81xx_l4_hs__sata,
1252 &dm81xx_alwon_l3_slow__gpmc,
1253 &dm816x_default_l3_slow__usbss,
1254 NULL,
1255 };
1256
1257 int __init dm816x_hwmod_init(void)
1258 {
1259 omap_hwmod_init();
1260 return omap_hwmod_register_links(dm816x_hwmod_ocp_ifs);
1261 }