18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * omap_hwmod_3xxx_data.c - hardware modules present on the OMAP3xxx chips 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright (C) 2009-2011 Nokia Corporation 68c2ecf20Sopenharmony_ci * Copyright (C) 2012 Texas Instruments, Inc. 78c2ecf20Sopenharmony_ci * Paul Walmsley 88c2ecf20Sopenharmony_ci * 98c2ecf20Sopenharmony_ci * The data in this file should be completely autogeneratable from 108c2ecf20Sopenharmony_ci * the TI hardware database or other technical documentation. 118c2ecf20Sopenharmony_ci * 128c2ecf20Sopenharmony_ci * XXX these should be marked initdata for multi-OMAP kernels 138c2ecf20Sopenharmony_ci */ 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_ci#include <linux/platform_data/i2c-omap.h> 168c2ecf20Sopenharmony_ci#include <linux/power/smartreflex.h> 178c2ecf20Sopenharmony_ci#include <linux/platform_data/hsmmc-omap.h> 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_ci#include "l3_3xxx.h" 208c2ecf20Sopenharmony_ci#include "l4_3xxx.h" 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_ci#include "soc.h" 238c2ecf20Sopenharmony_ci#include "omap_hwmod.h" 248c2ecf20Sopenharmony_ci#include "omap_hwmod_common_data.h" 258c2ecf20Sopenharmony_ci#include "prm-regbits-34xx.h" 268c2ecf20Sopenharmony_ci#include "cm-regbits-34xx.h" 278c2ecf20Sopenharmony_ci 288c2ecf20Sopenharmony_ci#include "i2c.h" 298c2ecf20Sopenharmony_ci#include "wd_timer.h" 308c2ecf20Sopenharmony_ci#include "serial.h" 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_ci/* 338c2ecf20Sopenharmony_ci * OMAP3xxx hardware module integration data 348c2ecf20Sopenharmony_ci * 358c2ecf20Sopenharmony_ci * All of the data in this section should be autogeneratable from the 368c2ecf20Sopenharmony_ci * TI hardware database or other technical documentation. Data that 378c2ecf20Sopenharmony_ci * is driver-specific or driver-kernel integration-specific belongs 388c2ecf20Sopenharmony_ci * elsewhere. 398c2ecf20Sopenharmony_ci */ 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_ci#define AM35XX_IPSS_USBOTGSS_BASE 0x5C040000 428c2ecf20Sopenharmony_ci 438c2ecf20Sopenharmony_ci/* 448c2ecf20Sopenharmony_ci * IP blocks 458c2ecf20Sopenharmony_ci */ 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_ci/* L3 */ 488c2ecf20Sopenharmony_ci 498c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_l3_main_hwmod = { 508c2ecf20Sopenharmony_ci .name = "l3_main", 518c2ecf20Sopenharmony_ci .class = &l3_hwmod_class, 528c2ecf20Sopenharmony_ci .flags = HWMOD_NO_IDLEST, 538c2ecf20Sopenharmony_ci}; 548c2ecf20Sopenharmony_ci 558c2ecf20Sopenharmony_ci/* L4 CORE */ 568c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_l4_core_hwmod = { 578c2ecf20Sopenharmony_ci .name = "l4_core", 588c2ecf20Sopenharmony_ci .class = &l4_hwmod_class, 598c2ecf20Sopenharmony_ci .flags = HWMOD_NO_IDLEST, 608c2ecf20Sopenharmony_ci}; 618c2ecf20Sopenharmony_ci 628c2ecf20Sopenharmony_ci/* L4 PER */ 638c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_l4_per_hwmod = { 648c2ecf20Sopenharmony_ci .name = "l4_per", 658c2ecf20Sopenharmony_ci .class = &l4_hwmod_class, 668c2ecf20Sopenharmony_ci .flags = HWMOD_NO_IDLEST, 678c2ecf20Sopenharmony_ci}; 688c2ecf20Sopenharmony_ci 698c2ecf20Sopenharmony_ci/* L4 WKUP */ 708c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_l4_wkup_hwmod = { 718c2ecf20Sopenharmony_ci .name = "l4_wkup", 728c2ecf20Sopenharmony_ci .class = &l4_hwmod_class, 738c2ecf20Sopenharmony_ci .flags = HWMOD_NO_IDLEST, 748c2ecf20Sopenharmony_ci}; 758c2ecf20Sopenharmony_ci 768c2ecf20Sopenharmony_ci/* L4 SEC */ 778c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_l4_sec_hwmod = { 788c2ecf20Sopenharmony_ci .name = "l4_sec", 798c2ecf20Sopenharmony_ci .class = &l4_hwmod_class, 808c2ecf20Sopenharmony_ci .flags = HWMOD_NO_IDLEST, 818c2ecf20Sopenharmony_ci}; 828c2ecf20Sopenharmony_ci 838c2ecf20Sopenharmony_ci/* MPU */ 848c2ecf20Sopenharmony_ci 858c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_mpu_hwmod = { 868c2ecf20Sopenharmony_ci .name = "mpu", 878c2ecf20Sopenharmony_ci .class = &mpu_hwmod_class, 888c2ecf20Sopenharmony_ci .main_clk = "arm_fck", 898c2ecf20Sopenharmony_ci}; 908c2ecf20Sopenharmony_ci 918c2ecf20Sopenharmony_ci/* IVA2 (IVA2) */ 928c2ecf20Sopenharmony_cistatic struct omap_hwmod_rst_info omap3xxx_iva_resets[] = { 938c2ecf20Sopenharmony_ci { .name = "logic", .rst_shift = 0, .st_shift = 8 }, 948c2ecf20Sopenharmony_ci { .name = "seq0", .rst_shift = 1, .st_shift = 9 }, 958c2ecf20Sopenharmony_ci { .name = "seq1", .rst_shift = 2, .st_shift = 10 }, 968c2ecf20Sopenharmony_ci}; 978c2ecf20Sopenharmony_ci 988c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_iva_hwmod = { 998c2ecf20Sopenharmony_ci .name = "iva", 1008c2ecf20Sopenharmony_ci .class = &iva_hwmod_class, 1018c2ecf20Sopenharmony_ci .clkdm_name = "iva2_clkdm", 1028c2ecf20Sopenharmony_ci .rst_lines = omap3xxx_iva_resets, 1038c2ecf20Sopenharmony_ci .rst_lines_cnt = ARRAY_SIZE(omap3xxx_iva_resets), 1048c2ecf20Sopenharmony_ci .main_clk = "iva2_ck", 1058c2ecf20Sopenharmony_ci .prcm = { 1068c2ecf20Sopenharmony_ci .omap2 = { 1078c2ecf20Sopenharmony_ci .module_offs = OMAP3430_IVA2_MOD, 1088c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 1098c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_IVA2_SHIFT, 1108c2ecf20Sopenharmony_ci }, 1118c2ecf20Sopenharmony_ci }, 1128c2ecf20Sopenharmony_ci}; 1138c2ecf20Sopenharmony_ci 1148c2ecf20Sopenharmony_ci/* 1158c2ecf20Sopenharmony_ci * 'debugss' class 1168c2ecf20Sopenharmony_ci * debug and emulation sub system 1178c2ecf20Sopenharmony_ci */ 1188c2ecf20Sopenharmony_ci 1198c2ecf20Sopenharmony_cistatic struct omap_hwmod_class omap3xxx_debugss_hwmod_class = { 1208c2ecf20Sopenharmony_ci .name = "debugss", 1218c2ecf20Sopenharmony_ci}; 1228c2ecf20Sopenharmony_ci 1238c2ecf20Sopenharmony_ci/* debugss */ 1248c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_debugss_hwmod = { 1258c2ecf20Sopenharmony_ci .name = "debugss", 1268c2ecf20Sopenharmony_ci .class = &omap3xxx_debugss_hwmod_class, 1278c2ecf20Sopenharmony_ci .clkdm_name = "emu_clkdm", 1288c2ecf20Sopenharmony_ci .main_clk = "emu_src_ck", 1298c2ecf20Sopenharmony_ci .flags = HWMOD_NO_IDLEST, 1308c2ecf20Sopenharmony_ci}; 1318c2ecf20Sopenharmony_ci 1328c2ecf20Sopenharmony_ci/* timer class */ 1338c2ecf20Sopenharmony_cistatic struct omap_hwmod_class_sysconfig omap3xxx_timer_sysc = { 1348c2ecf20Sopenharmony_ci .rev_offs = 0x0000, 1358c2ecf20Sopenharmony_ci .sysc_offs = 0x0010, 1368c2ecf20Sopenharmony_ci .syss_offs = 0x0014, 1378c2ecf20Sopenharmony_ci .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_CLOCKACTIVITY | 1388c2ecf20Sopenharmony_ci SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET | 1398c2ecf20Sopenharmony_ci SYSC_HAS_EMUFREE | SYSC_HAS_AUTOIDLE | 1408c2ecf20Sopenharmony_ci SYSS_HAS_RESET_STATUS), 1418c2ecf20Sopenharmony_ci .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), 1428c2ecf20Sopenharmony_ci .sysc_fields = &omap_hwmod_sysc_type1, 1438c2ecf20Sopenharmony_ci}; 1448c2ecf20Sopenharmony_ci 1458c2ecf20Sopenharmony_cistatic struct omap_hwmod_class omap3xxx_timer_hwmod_class = { 1468c2ecf20Sopenharmony_ci .name = "timer", 1478c2ecf20Sopenharmony_ci .sysc = &omap3xxx_timer_sysc, 1488c2ecf20Sopenharmony_ci}; 1498c2ecf20Sopenharmony_ci 1508c2ecf20Sopenharmony_ci/* timer3 */ 1518c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_timer3_hwmod = { 1528c2ecf20Sopenharmony_ci .name = "timer3", 1538c2ecf20Sopenharmony_ci .main_clk = "gpt3_fck", 1548c2ecf20Sopenharmony_ci .prcm = { 1558c2ecf20Sopenharmony_ci .omap2 = { 1568c2ecf20Sopenharmony_ci .module_offs = OMAP3430_PER_MOD, 1578c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 1588c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_GPT3_SHIFT, 1598c2ecf20Sopenharmony_ci }, 1608c2ecf20Sopenharmony_ci }, 1618c2ecf20Sopenharmony_ci .class = &omap3xxx_timer_hwmod_class, 1628c2ecf20Sopenharmony_ci .flags = HWMOD_SET_DEFAULT_CLOCKACT, 1638c2ecf20Sopenharmony_ci}; 1648c2ecf20Sopenharmony_ci 1658c2ecf20Sopenharmony_ci/* timer4 */ 1668c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_timer4_hwmod = { 1678c2ecf20Sopenharmony_ci .name = "timer4", 1688c2ecf20Sopenharmony_ci .main_clk = "gpt4_fck", 1698c2ecf20Sopenharmony_ci .prcm = { 1708c2ecf20Sopenharmony_ci .omap2 = { 1718c2ecf20Sopenharmony_ci .module_offs = OMAP3430_PER_MOD, 1728c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 1738c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_GPT4_SHIFT, 1748c2ecf20Sopenharmony_ci }, 1758c2ecf20Sopenharmony_ci }, 1768c2ecf20Sopenharmony_ci .class = &omap3xxx_timer_hwmod_class, 1778c2ecf20Sopenharmony_ci .flags = HWMOD_SET_DEFAULT_CLOCKACT, 1788c2ecf20Sopenharmony_ci}; 1798c2ecf20Sopenharmony_ci 1808c2ecf20Sopenharmony_ci/* timer5 */ 1818c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_timer5_hwmod = { 1828c2ecf20Sopenharmony_ci .name = "timer5", 1838c2ecf20Sopenharmony_ci .main_clk = "gpt5_fck", 1848c2ecf20Sopenharmony_ci .prcm = { 1858c2ecf20Sopenharmony_ci .omap2 = { 1868c2ecf20Sopenharmony_ci .module_offs = OMAP3430_PER_MOD, 1878c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 1888c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_GPT5_SHIFT, 1898c2ecf20Sopenharmony_ci }, 1908c2ecf20Sopenharmony_ci }, 1918c2ecf20Sopenharmony_ci .class = &omap3xxx_timer_hwmod_class, 1928c2ecf20Sopenharmony_ci .flags = HWMOD_SET_DEFAULT_CLOCKACT, 1938c2ecf20Sopenharmony_ci}; 1948c2ecf20Sopenharmony_ci 1958c2ecf20Sopenharmony_ci/* timer6 */ 1968c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_timer6_hwmod = { 1978c2ecf20Sopenharmony_ci .name = "timer6", 1988c2ecf20Sopenharmony_ci .main_clk = "gpt6_fck", 1998c2ecf20Sopenharmony_ci .prcm = { 2008c2ecf20Sopenharmony_ci .omap2 = { 2018c2ecf20Sopenharmony_ci .module_offs = OMAP3430_PER_MOD, 2028c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 2038c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_GPT6_SHIFT, 2048c2ecf20Sopenharmony_ci }, 2058c2ecf20Sopenharmony_ci }, 2068c2ecf20Sopenharmony_ci .class = &omap3xxx_timer_hwmod_class, 2078c2ecf20Sopenharmony_ci .flags = HWMOD_SET_DEFAULT_CLOCKACT, 2088c2ecf20Sopenharmony_ci}; 2098c2ecf20Sopenharmony_ci 2108c2ecf20Sopenharmony_ci/* timer7 */ 2118c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_timer7_hwmod = { 2128c2ecf20Sopenharmony_ci .name = "timer7", 2138c2ecf20Sopenharmony_ci .main_clk = "gpt7_fck", 2148c2ecf20Sopenharmony_ci .prcm = { 2158c2ecf20Sopenharmony_ci .omap2 = { 2168c2ecf20Sopenharmony_ci .module_offs = OMAP3430_PER_MOD, 2178c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 2188c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_GPT7_SHIFT, 2198c2ecf20Sopenharmony_ci }, 2208c2ecf20Sopenharmony_ci }, 2218c2ecf20Sopenharmony_ci .class = &omap3xxx_timer_hwmod_class, 2228c2ecf20Sopenharmony_ci .flags = HWMOD_SET_DEFAULT_CLOCKACT, 2238c2ecf20Sopenharmony_ci}; 2248c2ecf20Sopenharmony_ci 2258c2ecf20Sopenharmony_ci/* timer8 */ 2268c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_timer8_hwmod = { 2278c2ecf20Sopenharmony_ci .name = "timer8", 2288c2ecf20Sopenharmony_ci .main_clk = "gpt8_fck", 2298c2ecf20Sopenharmony_ci .prcm = { 2308c2ecf20Sopenharmony_ci .omap2 = { 2318c2ecf20Sopenharmony_ci .module_offs = OMAP3430_PER_MOD, 2328c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 2338c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_GPT8_SHIFT, 2348c2ecf20Sopenharmony_ci }, 2358c2ecf20Sopenharmony_ci }, 2368c2ecf20Sopenharmony_ci .class = &omap3xxx_timer_hwmod_class, 2378c2ecf20Sopenharmony_ci .flags = HWMOD_SET_DEFAULT_CLOCKACT, 2388c2ecf20Sopenharmony_ci}; 2398c2ecf20Sopenharmony_ci 2408c2ecf20Sopenharmony_ci/* timer9 */ 2418c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_timer9_hwmod = { 2428c2ecf20Sopenharmony_ci .name = "timer9", 2438c2ecf20Sopenharmony_ci .main_clk = "gpt9_fck", 2448c2ecf20Sopenharmony_ci .prcm = { 2458c2ecf20Sopenharmony_ci .omap2 = { 2468c2ecf20Sopenharmony_ci .module_offs = OMAP3430_PER_MOD, 2478c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 2488c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_GPT9_SHIFT, 2498c2ecf20Sopenharmony_ci }, 2508c2ecf20Sopenharmony_ci }, 2518c2ecf20Sopenharmony_ci .class = &omap3xxx_timer_hwmod_class, 2528c2ecf20Sopenharmony_ci .flags = HWMOD_SET_DEFAULT_CLOCKACT, 2538c2ecf20Sopenharmony_ci}; 2548c2ecf20Sopenharmony_ci 2558c2ecf20Sopenharmony_ci/* timer10 */ 2568c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_timer10_hwmod = { 2578c2ecf20Sopenharmony_ci .name = "timer10", 2588c2ecf20Sopenharmony_ci .main_clk = "gpt10_fck", 2598c2ecf20Sopenharmony_ci .prcm = { 2608c2ecf20Sopenharmony_ci .omap2 = { 2618c2ecf20Sopenharmony_ci .module_offs = CORE_MOD, 2628c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 2638c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_GPT10_SHIFT, 2648c2ecf20Sopenharmony_ci }, 2658c2ecf20Sopenharmony_ci }, 2668c2ecf20Sopenharmony_ci .class = &omap3xxx_timer_hwmod_class, 2678c2ecf20Sopenharmony_ci .flags = HWMOD_SET_DEFAULT_CLOCKACT, 2688c2ecf20Sopenharmony_ci}; 2698c2ecf20Sopenharmony_ci 2708c2ecf20Sopenharmony_ci/* timer11 */ 2718c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_timer11_hwmod = { 2728c2ecf20Sopenharmony_ci .name = "timer11", 2738c2ecf20Sopenharmony_ci .main_clk = "gpt11_fck", 2748c2ecf20Sopenharmony_ci .prcm = { 2758c2ecf20Sopenharmony_ci .omap2 = { 2768c2ecf20Sopenharmony_ci .module_offs = CORE_MOD, 2778c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 2788c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_GPT11_SHIFT, 2798c2ecf20Sopenharmony_ci }, 2808c2ecf20Sopenharmony_ci }, 2818c2ecf20Sopenharmony_ci .class = &omap3xxx_timer_hwmod_class, 2828c2ecf20Sopenharmony_ci .flags = HWMOD_SET_DEFAULT_CLOCKACT, 2838c2ecf20Sopenharmony_ci}; 2848c2ecf20Sopenharmony_ci 2858c2ecf20Sopenharmony_ci/* 2868c2ecf20Sopenharmony_ci * 'wd_timer' class 2878c2ecf20Sopenharmony_ci * 32-bit watchdog upward counter that generates a pulse on the reset pin on 2888c2ecf20Sopenharmony_ci * overflow condition 2898c2ecf20Sopenharmony_ci */ 2908c2ecf20Sopenharmony_ci 2918c2ecf20Sopenharmony_cistatic struct omap_hwmod_class_sysconfig omap3xxx_wd_timer_sysc = { 2928c2ecf20Sopenharmony_ci .rev_offs = 0x0000, 2938c2ecf20Sopenharmony_ci .sysc_offs = 0x0010, 2948c2ecf20Sopenharmony_ci .syss_offs = 0x0014, 2958c2ecf20Sopenharmony_ci .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_EMUFREE | 2968c2ecf20Sopenharmony_ci SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET | 2978c2ecf20Sopenharmony_ci SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY | 2988c2ecf20Sopenharmony_ci SYSS_HAS_RESET_STATUS), 2998c2ecf20Sopenharmony_ci .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), 3008c2ecf20Sopenharmony_ci .sysc_fields = &omap_hwmod_sysc_type1, 3018c2ecf20Sopenharmony_ci}; 3028c2ecf20Sopenharmony_ci 3038c2ecf20Sopenharmony_ci/* I2C common */ 3048c2ecf20Sopenharmony_cistatic struct omap_hwmod_class_sysconfig i2c_sysc = { 3058c2ecf20Sopenharmony_ci .rev_offs = 0x00, 3068c2ecf20Sopenharmony_ci .sysc_offs = 0x20, 3078c2ecf20Sopenharmony_ci .syss_offs = 0x10, 3088c2ecf20Sopenharmony_ci .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE | 3098c2ecf20Sopenharmony_ci SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET | 3108c2ecf20Sopenharmony_ci SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS), 3118c2ecf20Sopenharmony_ci .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), 3128c2ecf20Sopenharmony_ci .sysc_fields = &omap_hwmod_sysc_type1, 3138c2ecf20Sopenharmony_ci}; 3148c2ecf20Sopenharmony_ci 3158c2ecf20Sopenharmony_cistatic struct omap_hwmod_class omap3xxx_wd_timer_hwmod_class = { 3168c2ecf20Sopenharmony_ci .name = "wd_timer", 3178c2ecf20Sopenharmony_ci .sysc = &omap3xxx_wd_timer_sysc, 3188c2ecf20Sopenharmony_ci .pre_shutdown = &omap2_wd_timer_disable, 3198c2ecf20Sopenharmony_ci .reset = &omap2_wd_timer_reset, 3208c2ecf20Sopenharmony_ci}; 3218c2ecf20Sopenharmony_ci 3228c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_wd_timer2_hwmod = { 3238c2ecf20Sopenharmony_ci .name = "wd_timer2", 3248c2ecf20Sopenharmony_ci .class = &omap3xxx_wd_timer_hwmod_class, 3258c2ecf20Sopenharmony_ci .main_clk = "wdt2_fck", 3268c2ecf20Sopenharmony_ci .prcm = { 3278c2ecf20Sopenharmony_ci .omap2 = { 3288c2ecf20Sopenharmony_ci .module_offs = WKUP_MOD, 3298c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 3308c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_WDT2_SHIFT, 3318c2ecf20Sopenharmony_ci }, 3328c2ecf20Sopenharmony_ci }, 3338c2ecf20Sopenharmony_ci /* 3348c2ecf20Sopenharmony_ci * XXX: Use software supervised mode, HW supervised smartidle seems to 3358c2ecf20Sopenharmony_ci * block CORE power domain idle transitions. Maybe a HW bug in wdt2? 3368c2ecf20Sopenharmony_ci */ 3378c2ecf20Sopenharmony_ci .flags = HWMOD_SWSUP_SIDLE, 3388c2ecf20Sopenharmony_ci}; 3398c2ecf20Sopenharmony_ci 3408c2ecf20Sopenharmony_ci/* UART1 */ 3418c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_uart1_hwmod = { 3428c2ecf20Sopenharmony_ci .name = "uart1", 3438c2ecf20Sopenharmony_ci .main_clk = "uart1_fck", 3448c2ecf20Sopenharmony_ci .flags = DEBUG_TI81XXUART1_FLAGS | HWMOD_SWSUP_SIDLE, 3458c2ecf20Sopenharmony_ci .prcm = { 3468c2ecf20Sopenharmony_ci .omap2 = { 3478c2ecf20Sopenharmony_ci .module_offs = CORE_MOD, 3488c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 3498c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_EN_UART1_SHIFT, 3508c2ecf20Sopenharmony_ci }, 3518c2ecf20Sopenharmony_ci }, 3528c2ecf20Sopenharmony_ci .class = &omap2_uart_class, 3538c2ecf20Sopenharmony_ci}; 3548c2ecf20Sopenharmony_ci 3558c2ecf20Sopenharmony_ci/* UART2 */ 3568c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_uart2_hwmod = { 3578c2ecf20Sopenharmony_ci .name = "uart2", 3588c2ecf20Sopenharmony_ci .main_clk = "uart2_fck", 3598c2ecf20Sopenharmony_ci .flags = DEBUG_TI81XXUART2_FLAGS | HWMOD_SWSUP_SIDLE, 3608c2ecf20Sopenharmony_ci .prcm = { 3618c2ecf20Sopenharmony_ci .omap2 = { 3628c2ecf20Sopenharmony_ci .module_offs = CORE_MOD, 3638c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 3648c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_EN_UART2_SHIFT, 3658c2ecf20Sopenharmony_ci }, 3668c2ecf20Sopenharmony_ci }, 3678c2ecf20Sopenharmony_ci .class = &omap2_uart_class, 3688c2ecf20Sopenharmony_ci}; 3698c2ecf20Sopenharmony_ci 3708c2ecf20Sopenharmony_ci/* UART3 */ 3718c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_uart3_hwmod = { 3728c2ecf20Sopenharmony_ci .name = "uart3", 3738c2ecf20Sopenharmony_ci .main_clk = "uart3_fck", 3748c2ecf20Sopenharmony_ci .flags = DEBUG_OMAP3UART3_FLAGS | DEBUG_TI81XXUART3_FLAGS | 3758c2ecf20Sopenharmony_ci HWMOD_SWSUP_SIDLE, 3768c2ecf20Sopenharmony_ci .prcm = { 3778c2ecf20Sopenharmony_ci .omap2 = { 3788c2ecf20Sopenharmony_ci .module_offs = OMAP3430_PER_MOD, 3798c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 3808c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_EN_UART3_SHIFT, 3818c2ecf20Sopenharmony_ci }, 3828c2ecf20Sopenharmony_ci }, 3838c2ecf20Sopenharmony_ci .class = &omap2_uart_class, 3848c2ecf20Sopenharmony_ci}; 3858c2ecf20Sopenharmony_ci 3868c2ecf20Sopenharmony_ci/* UART4 */ 3878c2ecf20Sopenharmony_ci 3888c2ecf20Sopenharmony_ci 3898c2ecf20Sopenharmony_cistatic struct omap_hwmod omap36xx_uart4_hwmod = { 3908c2ecf20Sopenharmony_ci .name = "uart4", 3918c2ecf20Sopenharmony_ci .main_clk = "uart4_fck", 3928c2ecf20Sopenharmony_ci .flags = DEBUG_OMAP3UART4_FLAGS | HWMOD_SWSUP_SIDLE, 3938c2ecf20Sopenharmony_ci .prcm = { 3948c2ecf20Sopenharmony_ci .omap2 = { 3958c2ecf20Sopenharmony_ci .module_offs = OMAP3430_PER_MOD, 3968c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 3978c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3630_EN_UART4_SHIFT, 3988c2ecf20Sopenharmony_ci }, 3998c2ecf20Sopenharmony_ci }, 4008c2ecf20Sopenharmony_ci .class = &omap2_uart_class, 4018c2ecf20Sopenharmony_ci}; 4028c2ecf20Sopenharmony_ci 4038c2ecf20Sopenharmony_ci 4048c2ecf20Sopenharmony_ci 4058c2ecf20Sopenharmony_ci/* 4068c2ecf20Sopenharmony_ci * XXX AM35xx UART4 cannot complete its softreset without uart1_fck or 4078c2ecf20Sopenharmony_ci * uart2_fck being enabled. So we add uart1_fck as an optional clock, 4088c2ecf20Sopenharmony_ci * below, and set the HWMOD_CONTROL_OPT_CLKS_IN_RESET. This really 4098c2ecf20Sopenharmony_ci * should not be needed. The functional clock structure of the AM35xx 4108c2ecf20Sopenharmony_ci * UART4 is extremely unclear and opaque; it is unclear what the role 4118c2ecf20Sopenharmony_ci * of uart1/2_fck is for the UART4. Any clarification from either 4128c2ecf20Sopenharmony_ci * empirical testing or the AM3505/3517 hardware designers would be 4138c2ecf20Sopenharmony_ci * most welcome. 4148c2ecf20Sopenharmony_ci */ 4158c2ecf20Sopenharmony_cistatic struct omap_hwmod_opt_clk am35xx_uart4_opt_clks[] = { 4168c2ecf20Sopenharmony_ci { .role = "softreset_uart1_fck", .clk = "uart1_fck" }, 4178c2ecf20Sopenharmony_ci}; 4188c2ecf20Sopenharmony_ci 4198c2ecf20Sopenharmony_cistatic struct omap_hwmod am35xx_uart4_hwmod = { 4208c2ecf20Sopenharmony_ci .name = "uart4", 4218c2ecf20Sopenharmony_ci .main_clk = "uart4_fck", 4228c2ecf20Sopenharmony_ci .prcm = { 4238c2ecf20Sopenharmony_ci .omap2 = { 4248c2ecf20Sopenharmony_ci .module_offs = CORE_MOD, 4258c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 4268c2ecf20Sopenharmony_ci .idlest_idle_bit = AM35XX_ST_UART4_SHIFT, 4278c2ecf20Sopenharmony_ci }, 4288c2ecf20Sopenharmony_ci }, 4298c2ecf20Sopenharmony_ci .opt_clks = am35xx_uart4_opt_clks, 4308c2ecf20Sopenharmony_ci .opt_clks_cnt = ARRAY_SIZE(am35xx_uart4_opt_clks), 4318c2ecf20Sopenharmony_ci .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET, 4328c2ecf20Sopenharmony_ci .class = &omap2_uart_class, 4338c2ecf20Sopenharmony_ci}; 4348c2ecf20Sopenharmony_ci 4358c2ecf20Sopenharmony_cistatic struct omap_hwmod_class i2c_class = { 4368c2ecf20Sopenharmony_ci .name = "i2c", 4378c2ecf20Sopenharmony_ci .sysc = &i2c_sysc, 4388c2ecf20Sopenharmony_ci .reset = &omap_i2c_reset, 4398c2ecf20Sopenharmony_ci}; 4408c2ecf20Sopenharmony_ci 4418c2ecf20Sopenharmony_ci/* dss */ 4428c2ecf20Sopenharmony_cistatic struct omap_hwmod_opt_clk dss_opt_clks[] = { 4438c2ecf20Sopenharmony_ci /* 4448c2ecf20Sopenharmony_ci * The DSS HW needs all DSS clocks enabled during reset. The dss_core 4458c2ecf20Sopenharmony_ci * driver does not use these clocks. 4468c2ecf20Sopenharmony_ci */ 4478c2ecf20Sopenharmony_ci { .role = "sys_clk", .clk = "dss2_alwon_fck" }, 4488c2ecf20Sopenharmony_ci { .role = "tv_clk", .clk = "dss_tv_fck" }, 4498c2ecf20Sopenharmony_ci /* required only on OMAP3430 */ 4508c2ecf20Sopenharmony_ci { .role = "tv_dac_clk", .clk = "dss_96m_fck" }, 4518c2ecf20Sopenharmony_ci}; 4528c2ecf20Sopenharmony_ci 4538c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3430es1_dss_core_hwmod = { 4548c2ecf20Sopenharmony_ci .name = "dss_core", 4558c2ecf20Sopenharmony_ci .class = &omap2_dss_hwmod_class, 4568c2ecf20Sopenharmony_ci .main_clk = "dss1_alwon_fck", /* instead of dss_fck */ 4578c2ecf20Sopenharmony_ci .prcm = { 4588c2ecf20Sopenharmony_ci .omap2 = { 4598c2ecf20Sopenharmony_ci .module_offs = OMAP3430_DSS_MOD, 4608c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 4618c2ecf20Sopenharmony_ci }, 4628c2ecf20Sopenharmony_ci }, 4638c2ecf20Sopenharmony_ci .opt_clks = dss_opt_clks, 4648c2ecf20Sopenharmony_ci .opt_clks_cnt = ARRAY_SIZE(dss_opt_clks), 4658c2ecf20Sopenharmony_ci .flags = HWMOD_NO_IDLEST | HWMOD_CONTROL_OPT_CLKS_IN_RESET, 4668c2ecf20Sopenharmony_ci}; 4678c2ecf20Sopenharmony_ci 4688c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_dss_core_hwmod = { 4698c2ecf20Sopenharmony_ci .name = "dss_core", 4708c2ecf20Sopenharmony_ci .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET, 4718c2ecf20Sopenharmony_ci .class = &omap2_dss_hwmod_class, 4728c2ecf20Sopenharmony_ci .main_clk = "dss1_alwon_fck", /* instead of dss_fck */ 4738c2ecf20Sopenharmony_ci .prcm = { 4748c2ecf20Sopenharmony_ci .omap2 = { 4758c2ecf20Sopenharmony_ci .module_offs = OMAP3430_DSS_MOD, 4768c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 4778c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430ES2_ST_DSS_IDLE_SHIFT, 4788c2ecf20Sopenharmony_ci }, 4798c2ecf20Sopenharmony_ci }, 4808c2ecf20Sopenharmony_ci .opt_clks = dss_opt_clks, 4818c2ecf20Sopenharmony_ci .opt_clks_cnt = ARRAY_SIZE(dss_opt_clks), 4828c2ecf20Sopenharmony_ci}; 4838c2ecf20Sopenharmony_ci 4848c2ecf20Sopenharmony_ci/* 4858c2ecf20Sopenharmony_ci * 'dispc' class 4868c2ecf20Sopenharmony_ci * display controller 4878c2ecf20Sopenharmony_ci */ 4888c2ecf20Sopenharmony_ci 4898c2ecf20Sopenharmony_cistatic struct omap_hwmod_class_sysconfig omap3_dispc_sysc = { 4908c2ecf20Sopenharmony_ci .rev_offs = 0x0000, 4918c2ecf20Sopenharmony_ci .sysc_offs = 0x0010, 4928c2ecf20Sopenharmony_ci .syss_offs = 0x0014, 4938c2ecf20Sopenharmony_ci .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE | 4948c2ecf20Sopenharmony_ci SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE | 4958c2ecf20Sopenharmony_ci SYSC_HAS_ENAWAKEUP), 4968c2ecf20Sopenharmony_ci .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | 4978c2ecf20Sopenharmony_ci MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART), 4988c2ecf20Sopenharmony_ci .sysc_fields = &omap_hwmod_sysc_type1, 4998c2ecf20Sopenharmony_ci}; 5008c2ecf20Sopenharmony_ci 5018c2ecf20Sopenharmony_cistatic struct omap_hwmod_class omap3_dispc_hwmod_class = { 5028c2ecf20Sopenharmony_ci .name = "dispc", 5038c2ecf20Sopenharmony_ci .sysc = &omap3_dispc_sysc, 5048c2ecf20Sopenharmony_ci}; 5058c2ecf20Sopenharmony_ci 5068c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_dss_dispc_hwmod = { 5078c2ecf20Sopenharmony_ci .name = "dss_dispc", 5088c2ecf20Sopenharmony_ci .class = &omap3_dispc_hwmod_class, 5098c2ecf20Sopenharmony_ci .main_clk = "dss1_alwon_fck", 5108c2ecf20Sopenharmony_ci .prcm = { 5118c2ecf20Sopenharmony_ci .omap2 = { 5128c2ecf20Sopenharmony_ci .module_offs = OMAP3430_DSS_MOD, 5138c2ecf20Sopenharmony_ci }, 5148c2ecf20Sopenharmony_ci }, 5158c2ecf20Sopenharmony_ci .flags = HWMOD_NO_IDLEST, 5168c2ecf20Sopenharmony_ci .dev_attr = &omap2_3_dss_dispc_dev_attr, 5178c2ecf20Sopenharmony_ci}; 5188c2ecf20Sopenharmony_ci 5198c2ecf20Sopenharmony_ci/* 5208c2ecf20Sopenharmony_ci * 'dsi' class 5218c2ecf20Sopenharmony_ci * display serial interface controller 5228c2ecf20Sopenharmony_ci */ 5238c2ecf20Sopenharmony_ci 5248c2ecf20Sopenharmony_cistatic struct omap_hwmod_class_sysconfig omap3xxx_dsi_sysc = { 5258c2ecf20Sopenharmony_ci .rev_offs = 0x0000, 5268c2ecf20Sopenharmony_ci .sysc_offs = 0x0010, 5278c2ecf20Sopenharmony_ci .syss_offs = 0x0014, 5288c2ecf20Sopenharmony_ci .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY | 5298c2ecf20Sopenharmony_ci SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE | 5308c2ecf20Sopenharmony_ci SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS), 5318c2ecf20Sopenharmony_ci .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), 5328c2ecf20Sopenharmony_ci .sysc_fields = &omap_hwmod_sysc_type1, 5338c2ecf20Sopenharmony_ci}; 5348c2ecf20Sopenharmony_ci 5358c2ecf20Sopenharmony_cistatic struct omap_hwmod_class omap3xxx_dsi_hwmod_class = { 5368c2ecf20Sopenharmony_ci .name = "dsi", 5378c2ecf20Sopenharmony_ci .sysc = &omap3xxx_dsi_sysc, 5388c2ecf20Sopenharmony_ci}; 5398c2ecf20Sopenharmony_ci 5408c2ecf20Sopenharmony_ci/* dss_dsi1 */ 5418c2ecf20Sopenharmony_cistatic struct omap_hwmod_opt_clk dss_dsi1_opt_clks[] = { 5428c2ecf20Sopenharmony_ci { .role = "sys_clk", .clk = "dss2_alwon_fck" }, 5438c2ecf20Sopenharmony_ci}; 5448c2ecf20Sopenharmony_ci 5458c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_dss_dsi1_hwmod = { 5468c2ecf20Sopenharmony_ci .name = "dss_dsi1", 5478c2ecf20Sopenharmony_ci .class = &omap3xxx_dsi_hwmod_class, 5488c2ecf20Sopenharmony_ci .main_clk = "dss1_alwon_fck", 5498c2ecf20Sopenharmony_ci .prcm = { 5508c2ecf20Sopenharmony_ci .omap2 = { 5518c2ecf20Sopenharmony_ci .module_offs = OMAP3430_DSS_MOD, 5528c2ecf20Sopenharmony_ci }, 5538c2ecf20Sopenharmony_ci }, 5548c2ecf20Sopenharmony_ci .opt_clks = dss_dsi1_opt_clks, 5558c2ecf20Sopenharmony_ci .opt_clks_cnt = ARRAY_SIZE(dss_dsi1_opt_clks), 5568c2ecf20Sopenharmony_ci .flags = HWMOD_NO_IDLEST, 5578c2ecf20Sopenharmony_ci}; 5588c2ecf20Sopenharmony_ci 5598c2ecf20Sopenharmony_cistatic struct omap_hwmod_opt_clk dss_rfbi_opt_clks[] = { 5608c2ecf20Sopenharmony_ci { .role = "ick", .clk = "dss_ick" }, 5618c2ecf20Sopenharmony_ci}; 5628c2ecf20Sopenharmony_ci 5638c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_dss_rfbi_hwmod = { 5648c2ecf20Sopenharmony_ci .name = "dss_rfbi", 5658c2ecf20Sopenharmony_ci .class = &omap2_rfbi_hwmod_class, 5668c2ecf20Sopenharmony_ci .main_clk = "dss1_alwon_fck", 5678c2ecf20Sopenharmony_ci .prcm = { 5688c2ecf20Sopenharmony_ci .omap2 = { 5698c2ecf20Sopenharmony_ci .module_offs = OMAP3430_DSS_MOD, 5708c2ecf20Sopenharmony_ci }, 5718c2ecf20Sopenharmony_ci }, 5728c2ecf20Sopenharmony_ci .opt_clks = dss_rfbi_opt_clks, 5738c2ecf20Sopenharmony_ci .opt_clks_cnt = ARRAY_SIZE(dss_rfbi_opt_clks), 5748c2ecf20Sopenharmony_ci .flags = HWMOD_NO_IDLEST, 5758c2ecf20Sopenharmony_ci}; 5768c2ecf20Sopenharmony_ci 5778c2ecf20Sopenharmony_cistatic struct omap_hwmod_opt_clk dss_venc_opt_clks[] = { 5788c2ecf20Sopenharmony_ci /* required only on OMAP3430 */ 5798c2ecf20Sopenharmony_ci { .role = "tv_dac_clk", .clk = "dss_96m_fck" }, 5808c2ecf20Sopenharmony_ci}; 5818c2ecf20Sopenharmony_ci 5828c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_dss_venc_hwmod = { 5838c2ecf20Sopenharmony_ci .name = "dss_venc", 5848c2ecf20Sopenharmony_ci .class = &omap2_venc_hwmod_class, 5858c2ecf20Sopenharmony_ci .main_clk = "dss_tv_fck", 5868c2ecf20Sopenharmony_ci .prcm = { 5878c2ecf20Sopenharmony_ci .omap2 = { 5888c2ecf20Sopenharmony_ci .module_offs = OMAP3430_DSS_MOD, 5898c2ecf20Sopenharmony_ci }, 5908c2ecf20Sopenharmony_ci }, 5918c2ecf20Sopenharmony_ci .opt_clks = dss_venc_opt_clks, 5928c2ecf20Sopenharmony_ci .opt_clks_cnt = ARRAY_SIZE(dss_venc_opt_clks), 5938c2ecf20Sopenharmony_ci .flags = HWMOD_NO_IDLEST, 5948c2ecf20Sopenharmony_ci}; 5958c2ecf20Sopenharmony_ci 5968c2ecf20Sopenharmony_ci/* I2C1 */ 5978c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_i2c1_hwmod = { 5988c2ecf20Sopenharmony_ci .name = "i2c1", 5998c2ecf20Sopenharmony_ci .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT, 6008c2ecf20Sopenharmony_ci .main_clk = "i2c1_fck", 6018c2ecf20Sopenharmony_ci .prcm = { 6028c2ecf20Sopenharmony_ci .omap2 = { 6038c2ecf20Sopenharmony_ci .module_offs = CORE_MOD, 6048c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 6058c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_I2C1_SHIFT, 6068c2ecf20Sopenharmony_ci }, 6078c2ecf20Sopenharmony_ci }, 6088c2ecf20Sopenharmony_ci .class = &i2c_class, 6098c2ecf20Sopenharmony_ci}; 6108c2ecf20Sopenharmony_ci 6118c2ecf20Sopenharmony_ci/* I2C2 */ 6128c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_i2c2_hwmod = { 6138c2ecf20Sopenharmony_ci .name = "i2c2", 6148c2ecf20Sopenharmony_ci .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT, 6158c2ecf20Sopenharmony_ci .main_clk = "i2c2_fck", 6168c2ecf20Sopenharmony_ci .prcm = { 6178c2ecf20Sopenharmony_ci .omap2 = { 6188c2ecf20Sopenharmony_ci .module_offs = CORE_MOD, 6198c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 6208c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_I2C2_SHIFT, 6218c2ecf20Sopenharmony_ci }, 6228c2ecf20Sopenharmony_ci }, 6238c2ecf20Sopenharmony_ci .class = &i2c_class, 6248c2ecf20Sopenharmony_ci}; 6258c2ecf20Sopenharmony_ci 6268c2ecf20Sopenharmony_ci/* I2C3 */ 6278c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_i2c3_hwmod = { 6288c2ecf20Sopenharmony_ci .name = "i2c3", 6298c2ecf20Sopenharmony_ci .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT, 6308c2ecf20Sopenharmony_ci .main_clk = "i2c3_fck", 6318c2ecf20Sopenharmony_ci .prcm = { 6328c2ecf20Sopenharmony_ci .omap2 = { 6338c2ecf20Sopenharmony_ci .module_offs = CORE_MOD, 6348c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 6358c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_I2C3_SHIFT, 6368c2ecf20Sopenharmony_ci }, 6378c2ecf20Sopenharmony_ci }, 6388c2ecf20Sopenharmony_ci .class = &i2c_class, 6398c2ecf20Sopenharmony_ci}; 6408c2ecf20Sopenharmony_ci 6418c2ecf20Sopenharmony_ci/* 6428c2ecf20Sopenharmony_ci * 'gpio' class 6438c2ecf20Sopenharmony_ci * general purpose io module 6448c2ecf20Sopenharmony_ci */ 6458c2ecf20Sopenharmony_ci 6468c2ecf20Sopenharmony_cistatic struct omap_hwmod_class_sysconfig omap3xxx_gpio_sysc = { 6478c2ecf20Sopenharmony_ci .rev_offs = 0x0000, 6488c2ecf20Sopenharmony_ci .sysc_offs = 0x0010, 6498c2ecf20Sopenharmony_ci .syss_offs = 0x0014, 6508c2ecf20Sopenharmony_ci .sysc_flags = (SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE | 6518c2ecf20Sopenharmony_ci SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE | 6528c2ecf20Sopenharmony_ci SYSS_HAS_RESET_STATUS), 6538c2ecf20Sopenharmony_ci .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), 6548c2ecf20Sopenharmony_ci .sysc_fields = &omap_hwmod_sysc_type1, 6558c2ecf20Sopenharmony_ci}; 6568c2ecf20Sopenharmony_ci 6578c2ecf20Sopenharmony_cistatic struct omap_hwmod_class omap3xxx_gpio_hwmod_class = { 6588c2ecf20Sopenharmony_ci .name = "gpio", 6598c2ecf20Sopenharmony_ci .sysc = &omap3xxx_gpio_sysc, 6608c2ecf20Sopenharmony_ci}; 6618c2ecf20Sopenharmony_ci 6628c2ecf20Sopenharmony_ci/* gpio1 */ 6638c2ecf20Sopenharmony_cistatic struct omap_hwmod_opt_clk gpio1_opt_clks[] = { 6648c2ecf20Sopenharmony_ci { .role = "dbclk", .clk = "gpio1_dbck", }, 6658c2ecf20Sopenharmony_ci}; 6668c2ecf20Sopenharmony_ci 6678c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_gpio1_hwmod = { 6688c2ecf20Sopenharmony_ci .name = "gpio1", 6698c2ecf20Sopenharmony_ci .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET, 6708c2ecf20Sopenharmony_ci .main_clk = "gpio1_ick", 6718c2ecf20Sopenharmony_ci .opt_clks = gpio1_opt_clks, 6728c2ecf20Sopenharmony_ci .opt_clks_cnt = ARRAY_SIZE(gpio1_opt_clks), 6738c2ecf20Sopenharmony_ci .prcm = { 6748c2ecf20Sopenharmony_ci .omap2 = { 6758c2ecf20Sopenharmony_ci .module_offs = WKUP_MOD, 6768c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 6778c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_GPIO1_SHIFT, 6788c2ecf20Sopenharmony_ci }, 6798c2ecf20Sopenharmony_ci }, 6808c2ecf20Sopenharmony_ci .class = &omap3xxx_gpio_hwmod_class, 6818c2ecf20Sopenharmony_ci}; 6828c2ecf20Sopenharmony_ci 6838c2ecf20Sopenharmony_ci/* gpio2 */ 6848c2ecf20Sopenharmony_cistatic struct omap_hwmod_opt_clk gpio2_opt_clks[] = { 6858c2ecf20Sopenharmony_ci { .role = "dbclk", .clk = "gpio2_dbck", }, 6868c2ecf20Sopenharmony_ci}; 6878c2ecf20Sopenharmony_ci 6888c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_gpio2_hwmod = { 6898c2ecf20Sopenharmony_ci .name = "gpio2", 6908c2ecf20Sopenharmony_ci .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET, 6918c2ecf20Sopenharmony_ci .main_clk = "gpio2_ick", 6928c2ecf20Sopenharmony_ci .opt_clks = gpio2_opt_clks, 6938c2ecf20Sopenharmony_ci .opt_clks_cnt = ARRAY_SIZE(gpio2_opt_clks), 6948c2ecf20Sopenharmony_ci .prcm = { 6958c2ecf20Sopenharmony_ci .omap2 = { 6968c2ecf20Sopenharmony_ci .module_offs = OMAP3430_PER_MOD, 6978c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 6988c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_GPIO2_SHIFT, 6998c2ecf20Sopenharmony_ci }, 7008c2ecf20Sopenharmony_ci }, 7018c2ecf20Sopenharmony_ci .class = &omap3xxx_gpio_hwmod_class, 7028c2ecf20Sopenharmony_ci}; 7038c2ecf20Sopenharmony_ci 7048c2ecf20Sopenharmony_ci/* gpio3 */ 7058c2ecf20Sopenharmony_cistatic struct omap_hwmod_opt_clk gpio3_opt_clks[] = { 7068c2ecf20Sopenharmony_ci { .role = "dbclk", .clk = "gpio3_dbck", }, 7078c2ecf20Sopenharmony_ci}; 7088c2ecf20Sopenharmony_ci 7098c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_gpio3_hwmod = { 7108c2ecf20Sopenharmony_ci .name = "gpio3", 7118c2ecf20Sopenharmony_ci .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET, 7128c2ecf20Sopenharmony_ci .main_clk = "gpio3_ick", 7138c2ecf20Sopenharmony_ci .opt_clks = gpio3_opt_clks, 7148c2ecf20Sopenharmony_ci .opt_clks_cnt = ARRAY_SIZE(gpio3_opt_clks), 7158c2ecf20Sopenharmony_ci .prcm = { 7168c2ecf20Sopenharmony_ci .omap2 = { 7178c2ecf20Sopenharmony_ci .module_offs = OMAP3430_PER_MOD, 7188c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 7198c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_GPIO3_SHIFT, 7208c2ecf20Sopenharmony_ci }, 7218c2ecf20Sopenharmony_ci }, 7228c2ecf20Sopenharmony_ci .class = &omap3xxx_gpio_hwmod_class, 7238c2ecf20Sopenharmony_ci}; 7248c2ecf20Sopenharmony_ci 7258c2ecf20Sopenharmony_ci/* gpio4 */ 7268c2ecf20Sopenharmony_cistatic struct omap_hwmod_opt_clk gpio4_opt_clks[] = { 7278c2ecf20Sopenharmony_ci { .role = "dbclk", .clk = "gpio4_dbck", }, 7288c2ecf20Sopenharmony_ci}; 7298c2ecf20Sopenharmony_ci 7308c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_gpio4_hwmod = { 7318c2ecf20Sopenharmony_ci .name = "gpio4", 7328c2ecf20Sopenharmony_ci .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET, 7338c2ecf20Sopenharmony_ci .main_clk = "gpio4_ick", 7348c2ecf20Sopenharmony_ci .opt_clks = gpio4_opt_clks, 7358c2ecf20Sopenharmony_ci .opt_clks_cnt = ARRAY_SIZE(gpio4_opt_clks), 7368c2ecf20Sopenharmony_ci .prcm = { 7378c2ecf20Sopenharmony_ci .omap2 = { 7388c2ecf20Sopenharmony_ci .module_offs = OMAP3430_PER_MOD, 7398c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 7408c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_GPIO4_SHIFT, 7418c2ecf20Sopenharmony_ci }, 7428c2ecf20Sopenharmony_ci }, 7438c2ecf20Sopenharmony_ci .class = &omap3xxx_gpio_hwmod_class, 7448c2ecf20Sopenharmony_ci}; 7458c2ecf20Sopenharmony_ci 7468c2ecf20Sopenharmony_ci/* gpio5 */ 7478c2ecf20Sopenharmony_ci 7488c2ecf20Sopenharmony_cistatic struct omap_hwmod_opt_clk gpio5_opt_clks[] = { 7498c2ecf20Sopenharmony_ci { .role = "dbclk", .clk = "gpio5_dbck", }, 7508c2ecf20Sopenharmony_ci}; 7518c2ecf20Sopenharmony_ci 7528c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_gpio5_hwmod = { 7538c2ecf20Sopenharmony_ci .name = "gpio5", 7548c2ecf20Sopenharmony_ci .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET, 7558c2ecf20Sopenharmony_ci .main_clk = "gpio5_ick", 7568c2ecf20Sopenharmony_ci .opt_clks = gpio5_opt_clks, 7578c2ecf20Sopenharmony_ci .opt_clks_cnt = ARRAY_SIZE(gpio5_opt_clks), 7588c2ecf20Sopenharmony_ci .prcm = { 7598c2ecf20Sopenharmony_ci .omap2 = { 7608c2ecf20Sopenharmony_ci .module_offs = OMAP3430_PER_MOD, 7618c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 7628c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_GPIO5_SHIFT, 7638c2ecf20Sopenharmony_ci }, 7648c2ecf20Sopenharmony_ci }, 7658c2ecf20Sopenharmony_ci .class = &omap3xxx_gpio_hwmod_class, 7668c2ecf20Sopenharmony_ci}; 7678c2ecf20Sopenharmony_ci 7688c2ecf20Sopenharmony_ci/* gpio6 */ 7698c2ecf20Sopenharmony_ci 7708c2ecf20Sopenharmony_cistatic struct omap_hwmod_opt_clk gpio6_opt_clks[] = { 7718c2ecf20Sopenharmony_ci { .role = "dbclk", .clk = "gpio6_dbck", }, 7728c2ecf20Sopenharmony_ci}; 7738c2ecf20Sopenharmony_ci 7748c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_gpio6_hwmod = { 7758c2ecf20Sopenharmony_ci .name = "gpio6", 7768c2ecf20Sopenharmony_ci .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET, 7778c2ecf20Sopenharmony_ci .main_clk = "gpio6_ick", 7788c2ecf20Sopenharmony_ci .opt_clks = gpio6_opt_clks, 7798c2ecf20Sopenharmony_ci .opt_clks_cnt = ARRAY_SIZE(gpio6_opt_clks), 7808c2ecf20Sopenharmony_ci .prcm = { 7818c2ecf20Sopenharmony_ci .omap2 = { 7828c2ecf20Sopenharmony_ci .module_offs = OMAP3430_PER_MOD, 7838c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 7848c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_GPIO6_SHIFT, 7858c2ecf20Sopenharmony_ci }, 7868c2ecf20Sopenharmony_ci }, 7878c2ecf20Sopenharmony_ci .class = &omap3xxx_gpio_hwmod_class, 7888c2ecf20Sopenharmony_ci}; 7898c2ecf20Sopenharmony_ci 7908c2ecf20Sopenharmony_ci/* 7918c2ecf20Sopenharmony_ci * 'mcbsp' class 7928c2ecf20Sopenharmony_ci * multi channel buffered serial port controller 7938c2ecf20Sopenharmony_ci */ 7948c2ecf20Sopenharmony_ci 7958c2ecf20Sopenharmony_cistatic struct omap_hwmod_class_sysconfig omap3xxx_mcbsp_sysc = { 7968c2ecf20Sopenharmony_ci .rev_offs = -ENODEV, 7978c2ecf20Sopenharmony_ci .sysc_offs = 0x008c, 7988c2ecf20Sopenharmony_ci .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_ENAWAKEUP | 7998c2ecf20Sopenharmony_ci SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET), 8008c2ecf20Sopenharmony_ci .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), 8018c2ecf20Sopenharmony_ci .sysc_fields = &omap_hwmod_sysc_type1, 8028c2ecf20Sopenharmony_ci}; 8038c2ecf20Sopenharmony_ci 8048c2ecf20Sopenharmony_cistatic struct omap_hwmod_class omap3xxx_mcbsp_hwmod_class = { 8058c2ecf20Sopenharmony_ci .name = "mcbsp", 8068c2ecf20Sopenharmony_ci .sysc = &omap3xxx_mcbsp_sysc, 8078c2ecf20Sopenharmony_ci}; 8088c2ecf20Sopenharmony_ci 8098c2ecf20Sopenharmony_ci/* McBSP functional clock mapping */ 8108c2ecf20Sopenharmony_cistatic struct omap_hwmod_opt_clk mcbsp15_opt_clks[] = { 8118c2ecf20Sopenharmony_ci { .role = "pad_fck", .clk = "mcbsp_clks" }, 8128c2ecf20Sopenharmony_ci { .role = "prcm_fck", .clk = "core_96m_fck" }, 8138c2ecf20Sopenharmony_ci}; 8148c2ecf20Sopenharmony_ci 8158c2ecf20Sopenharmony_cistatic struct omap_hwmod_opt_clk mcbsp234_opt_clks[] = { 8168c2ecf20Sopenharmony_ci { .role = "pad_fck", .clk = "mcbsp_clks" }, 8178c2ecf20Sopenharmony_ci { .role = "prcm_fck", .clk = "per_96m_fck" }, 8188c2ecf20Sopenharmony_ci}; 8198c2ecf20Sopenharmony_ci 8208c2ecf20Sopenharmony_ci/* mcbsp1 */ 8218c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_mcbsp1_hwmod = { 8228c2ecf20Sopenharmony_ci .name = "mcbsp1", 8238c2ecf20Sopenharmony_ci .class = &omap3xxx_mcbsp_hwmod_class, 8248c2ecf20Sopenharmony_ci .main_clk = "mcbsp1_fck", 8258c2ecf20Sopenharmony_ci .prcm = { 8268c2ecf20Sopenharmony_ci .omap2 = { 8278c2ecf20Sopenharmony_ci .module_offs = CORE_MOD, 8288c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 8298c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_MCBSP1_SHIFT, 8308c2ecf20Sopenharmony_ci }, 8318c2ecf20Sopenharmony_ci }, 8328c2ecf20Sopenharmony_ci .opt_clks = mcbsp15_opt_clks, 8338c2ecf20Sopenharmony_ci .opt_clks_cnt = ARRAY_SIZE(mcbsp15_opt_clks), 8348c2ecf20Sopenharmony_ci}; 8358c2ecf20Sopenharmony_ci 8368c2ecf20Sopenharmony_ci/* mcbsp2 */ 8378c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_mcbsp2_hwmod = { 8388c2ecf20Sopenharmony_ci .name = "mcbsp2", 8398c2ecf20Sopenharmony_ci .class = &omap3xxx_mcbsp_hwmod_class, 8408c2ecf20Sopenharmony_ci .main_clk = "mcbsp2_fck", 8418c2ecf20Sopenharmony_ci .prcm = { 8428c2ecf20Sopenharmony_ci .omap2 = { 8438c2ecf20Sopenharmony_ci .module_offs = OMAP3430_PER_MOD, 8448c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 8458c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_MCBSP2_SHIFT, 8468c2ecf20Sopenharmony_ci }, 8478c2ecf20Sopenharmony_ci }, 8488c2ecf20Sopenharmony_ci .opt_clks = mcbsp234_opt_clks, 8498c2ecf20Sopenharmony_ci .opt_clks_cnt = ARRAY_SIZE(mcbsp234_opt_clks), 8508c2ecf20Sopenharmony_ci}; 8518c2ecf20Sopenharmony_ci 8528c2ecf20Sopenharmony_ci/* mcbsp3 */ 8538c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_mcbsp3_hwmod = { 8548c2ecf20Sopenharmony_ci .name = "mcbsp3", 8558c2ecf20Sopenharmony_ci .class = &omap3xxx_mcbsp_hwmod_class, 8568c2ecf20Sopenharmony_ci .main_clk = "mcbsp3_fck", 8578c2ecf20Sopenharmony_ci .prcm = { 8588c2ecf20Sopenharmony_ci .omap2 = { 8598c2ecf20Sopenharmony_ci .module_offs = OMAP3430_PER_MOD, 8608c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 8618c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_MCBSP3_SHIFT, 8628c2ecf20Sopenharmony_ci }, 8638c2ecf20Sopenharmony_ci }, 8648c2ecf20Sopenharmony_ci .opt_clks = mcbsp234_opt_clks, 8658c2ecf20Sopenharmony_ci .opt_clks_cnt = ARRAY_SIZE(mcbsp234_opt_clks), 8668c2ecf20Sopenharmony_ci}; 8678c2ecf20Sopenharmony_ci 8688c2ecf20Sopenharmony_ci/* mcbsp4 */ 8698c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_mcbsp4_hwmod = { 8708c2ecf20Sopenharmony_ci .name = "mcbsp4", 8718c2ecf20Sopenharmony_ci .class = &omap3xxx_mcbsp_hwmod_class, 8728c2ecf20Sopenharmony_ci .main_clk = "mcbsp4_fck", 8738c2ecf20Sopenharmony_ci .prcm = { 8748c2ecf20Sopenharmony_ci .omap2 = { 8758c2ecf20Sopenharmony_ci .module_offs = OMAP3430_PER_MOD, 8768c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 8778c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_MCBSP4_SHIFT, 8788c2ecf20Sopenharmony_ci }, 8798c2ecf20Sopenharmony_ci }, 8808c2ecf20Sopenharmony_ci .opt_clks = mcbsp234_opt_clks, 8818c2ecf20Sopenharmony_ci .opt_clks_cnt = ARRAY_SIZE(mcbsp234_opt_clks), 8828c2ecf20Sopenharmony_ci}; 8838c2ecf20Sopenharmony_ci 8848c2ecf20Sopenharmony_ci/* mcbsp5 */ 8858c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_mcbsp5_hwmod = { 8868c2ecf20Sopenharmony_ci .name = "mcbsp5", 8878c2ecf20Sopenharmony_ci .class = &omap3xxx_mcbsp_hwmod_class, 8888c2ecf20Sopenharmony_ci .main_clk = "mcbsp5_fck", 8898c2ecf20Sopenharmony_ci .prcm = { 8908c2ecf20Sopenharmony_ci .omap2 = { 8918c2ecf20Sopenharmony_ci .module_offs = CORE_MOD, 8928c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 8938c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_MCBSP5_SHIFT, 8948c2ecf20Sopenharmony_ci }, 8958c2ecf20Sopenharmony_ci }, 8968c2ecf20Sopenharmony_ci .opt_clks = mcbsp15_opt_clks, 8978c2ecf20Sopenharmony_ci .opt_clks_cnt = ARRAY_SIZE(mcbsp15_opt_clks), 8988c2ecf20Sopenharmony_ci}; 8998c2ecf20Sopenharmony_ci 9008c2ecf20Sopenharmony_ci/* 'mcbsp sidetone' class */ 9018c2ecf20Sopenharmony_cistatic struct omap_hwmod_class_sysconfig omap3xxx_mcbsp_sidetone_sysc = { 9028c2ecf20Sopenharmony_ci .rev_offs = -ENODEV, 9038c2ecf20Sopenharmony_ci .sysc_offs = 0x0010, 9048c2ecf20Sopenharmony_ci .sysc_flags = SYSC_HAS_AUTOIDLE, 9058c2ecf20Sopenharmony_ci .sysc_fields = &omap_hwmod_sysc_type1, 9068c2ecf20Sopenharmony_ci}; 9078c2ecf20Sopenharmony_ci 9088c2ecf20Sopenharmony_cistatic struct omap_hwmod_class omap3xxx_mcbsp_sidetone_hwmod_class = { 9098c2ecf20Sopenharmony_ci .name = "mcbsp_sidetone", 9108c2ecf20Sopenharmony_ci .sysc = &omap3xxx_mcbsp_sidetone_sysc, 9118c2ecf20Sopenharmony_ci}; 9128c2ecf20Sopenharmony_ci 9138c2ecf20Sopenharmony_ci/* mcbsp2_sidetone */ 9148c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_mcbsp2_sidetone_hwmod = { 9158c2ecf20Sopenharmony_ci .name = "mcbsp2_sidetone", 9168c2ecf20Sopenharmony_ci .class = &omap3xxx_mcbsp_sidetone_hwmod_class, 9178c2ecf20Sopenharmony_ci .main_clk = "mcbsp2_ick", 9188c2ecf20Sopenharmony_ci .flags = HWMOD_NO_IDLEST, 9198c2ecf20Sopenharmony_ci}; 9208c2ecf20Sopenharmony_ci 9218c2ecf20Sopenharmony_ci/* mcbsp3_sidetone */ 9228c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_mcbsp3_sidetone_hwmod = { 9238c2ecf20Sopenharmony_ci .name = "mcbsp3_sidetone", 9248c2ecf20Sopenharmony_ci .class = &omap3xxx_mcbsp_sidetone_hwmod_class, 9258c2ecf20Sopenharmony_ci .main_clk = "mcbsp3_ick", 9268c2ecf20Sopenharmony_ci .flags = HWMOD_NO_IDLEST, 9278c2ecf20Sopenharmony_ci}; 9288c2ecf20Sopenharmony_ci 9298c2ecf20Sopenharmony_ci/* SR common */ 9308c2ecf20Sopenharmony_cistatic struct omap_hwmod_class_sysconfig omap34xx_sr_sysc = { 9318c2ecf20Sopenharmony_ci .rev_offs = -ENODEV, 9328c2ecf20Sopenharmony_ci .sysc_offs = 0x24, 9338c2ecf20Sopenharmony_ci .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_NO_CACHE), 9348c2ecf20Sopenharmony_ci .sysc_fields = &omap34xx_sr_sysc_fields, 9358c2ecf20Sopenharmony_ci}; 9368c2ecf20Sopenharmony_ci 9378c2ecf20Sopenharmony_cistatic struct omap_hwmod_class omap34xx_smartreflex_hwmod_class = { 9388c2ecf20Sopenharmony_ci .name = "smartreflex", 9398c2ecf20Sopenharmony_ci .sysc = &omap34xx_sr_sysc, 9408c2ecf20Sopenharmony_ci}; 9418c2ecf20Sopenharmony_ci 9428c2ecf20Sopenharmony_cistatic struct omap_hwmod_class_sysconfig omap36xx_sr_sysc = { 9438c2ecf20Sopenharmony_ci .rev_offs = -ENODEV, 9448c2ecf20Sopenharmony_ci .sysc_offs = 0x38, 9458c2ecf20Sopenharmony_ci .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), 9468c2ecf20Sopenharmony_ci .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_ENAWAKEUP | 9478c2ecf20Sopenharmony_ci SYSC_NO_CACHE), 9488c2ecf20Sopenharmony_ci .sysc_fields = &omap36xx_sr_sysc_fields, 9498c2ecf20Sopenharmony_ci}; 9508c2ecf20Sopenharmony_ci 9518c2ecf20Sopenharmony_cistatic struct omap_hwmod_class omap36xx_smartreflex_hwmod_class = { 9528c2ecf20Sopenharmony_ci .name = "smartreflex", 9538c2ecf20Sopenharmony_ci .sysc = &omap36xx_sr_sysc, 9548c2ecf20Sopenharmony_ci}; 9558c2ecf20Sopenharmony_ci 9568c2ecf20Sopenharmony_ci/* SR1 */ 9578c2ecf20Sopenharmony_cistatic struct omap_smartreflex_dev_attr sr1_dev_attr = { 9588c2ecf20Sopenharmony_ci .sensor_voltdm_name = "mpu_iva", 9598c2ecf20Sopenharmony_ci}; 9608c2ecf20Sopenharmony_ci 9618c2ecf20Sopenharmony_ci 9628c2ecf20Sopenharmony_cistatic struct omap_hwmod omap34xx_sr1_hwmod = { 9638c2ecf20Sopenharmony_ci .name = "smartreflex_mpu_iva", 9648c2ecf20Sopenharmony_ci .class = &omap34xx_smartreflex_hwmod_class, 9658c2ecf20Sopenharmony_ci .main_clk = "sr1_fck", 9668c2ecf20Sopenharmony_ci .prcm = { 9678c2ecf20Sopenharmony_ci .omap2 = { 9688c2ecf20Sopenharmony_ci .module_offs = WKUP_MOD, 9698c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 9708c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_EN_SR1_SHIFT, 9718c2ecf20Sopenharmony_ci }, 9728c2ecf20Sopenharmony_ci }, 9738c2ecf20Sopenharmony_ci .dev_attr = &sr1_dev_attr, 9748c2ecf20Sopenharmony_ci .flags = HWMOD_SET_DEFAULT_CLOCKACT, 9758c2ecf20Sopenharmony_ci}; 9768c2ecf20Sopenharmony_ci 9778c2ecf20Sopenharmony_cistatic struct omap_hwmod omap36xx_sr1_hwmod = { 9788c2ecf20Sopenharmony_ci .name = "smartreflex_mpu_iva", 9798c2ecf20Sopenharmony_ci .class = &omap36xx_smartreflex_hwmod_class, 9808c2ecf20Sopenharmony_ci .main_clk = "sr1_fck", 9818c2ecf20Sopenharmony_ci .prcm = { 9828c2ecf20Sopenharmony_ci .omap2 = { 9838c2ecf20Sopenharmony_ci .module_offs = WKUP_MOD, 9848c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 9858c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_EN_SR1_SHIFT, 9868c2ecf20Sopenharmony_ci }, 9878c2ecf20Sopenharmony_ci }, 9888c2ecf20Sopenharmony_ci .dev_attr = &sr1_dev_attr, 9898c2ecf20Sopenharmony_ci}; 9908c2ecf20Sopenharmony_ci 9918c2ecf20Sopenharmony_ci/* SR2 */ 9928c2ecf20Sopenharmony_cistatic struct omap_smartreflex_dev_attr sr2_dev_attr = { 9938c2ecf20Sopenharmony_ci .sensor_voltdm_name = "core", 9948c2ecf20Sopenharmony_ci}; 9958c2ecf20Sopenharmony_ci 9968c2ecf20Sopenharmony_ci 9978c2ecf20Sopenharmony_cistatic struct omap_hwmod omap34xx_sr2_hwmod = { 9988c2ecf20Sopenharmony_ci .name = "smartreflex_core", 9998c2ecf20Sopenharmony_ci .class = &omap34xx_smartreflex_hwmod_class, 10008c2ecf20Sopenharmony_ci .main_clk = "sr2_fck", 10018c2ecf20Sopenharmony_ci .prcm = { 10028c2ecf20Sopenharmony_ci .omap2 = { 10038c2ecf20Sopenharmony_ci .module_offs = WKUP_MOD, 10048c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 10058c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_EN_SR2_SHIFT, 10068c2ecf20Sopenharmony_ci }, 10078c2ecf20Sopenharmony_ci }, 10088c2ecf20Sopenharmony_ci .dev_attr = &sr2_dev_attr, 10098c2ecf20Sopenharmony_ci .flags = HWMOD_SET_DEFAULT_CLOCKACT, 10108c2ecf20Sopenharmony_ci}; 10118c2ecf20Sopenharmony_ci 10128c2ecf20Sopenharmony_cistatic struct omap_hwmod omap36xx_sr2_hwmod = { 10138c2ecf20Sopenharmony_ci .name = "smartreflex_core", 10148c2ecf20Sopenharmony_ci .class = &omap36xx_smartreflex_hwmod_class, 10158c2ecf20Sopenharmony_ci .main_clk = "sr2_fck", 10168c2ecf20Sopenharmony_ci .prcm = { 10178c2ecf20Sopenharmony_ci .omap2 = { 10188c2ecf20Sopenharmony_ci .module_offs = WKUP_MOD, 10198c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 10208c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_EN_SR2_SHIFT, 10218c2ecf20Sopenharmony_ci }, 10228c2ecf20Sopenharmony_ci }, 10238c2ecf20Sopenharmony_ci .dev_attr = &sr2_dev_attr, 10248c2ecf20Sopenharmony_ci}; 10258c2ecf20Sopenharmony_ci 10268c2ecf20Sopenharmony_ci/* 10278c2ecf20Sopenharmony_ci * 'mailbox' class 10288c2ecf20Sopenharmony_ci * mailbox module allowing communication between the on-chip processors 10298c2ecf20Sopenharmony_ci * using a queued mailbox-interrupt mechanism. 10308c2ecf20Sopenharmony_ci */ 10318c2ecf20Sopenharmony_ci 10328c2ecf20Sopenharmony_cistatic struct omap_hwmod_class_sysconfig omap3xxx_mailbox_sysc = { 10338c2ecf20Sopenharmony_ci .rev_offs = 0x000, 10348c2ecf20Sopenharmony_ci .sysc_offs = 0x010, 10358c2ecf20Sopenharmony_ci .syss_offs = 0x014, 10368c2ecf20Sopenharmony_ci .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE | 10378c2ecf20Sopenharmony_ci SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE), 10388c2ecf20Sopenharmony_ci .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), 10398c2ecf20Sopenharmony_ci .sysc_fields = &omap_hwmod_sysc_type1, 10408c2ecf20Sopenharmony_ci}; 10418c2ecf20Sopenharmony_ci 10428c2ecf20Sopenharmony_cistatic struct omap_hwmod_class omap3xxx_mailbox_hwmod_class = { 10438c2ecf20Sopenharmony_ci .name = "mailbox", 10448c2ecf20Sopenharmony_ci .sysc = &omap3xxx_mailbox_sysc, 10458c2ecf20Sopenharmony_ci}; 10468c2ecf20Sopenharmony_ci 10478c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_mailbox_hwmod = { 10488c2ecf20Sopenharmony_ci .name = "mailbox", 10498c2ecf20Sopenharmony_ci .class = &omap3xxx_mailbox_hwmod_class, 10508c2ecf20Sopenharmony_ci .main_clk = "mailboxes_ick", 10518c2ecf20Sopenharmony_ci .prcm = { 10528c2ecf20Sopenharmony_ci .omap2 = { 10538c2ecf20Sopenharmony_ci .module_offs = CORE_MOD, 10548c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 10558c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_MAILBOXES_SHIFT, 10568c2ecf20Sopenharmony_ci }, 10578c2ecf20Sopenharmony_ci }, 10588c2ecf20Sopenharmony_ci}; 10598c2ecf20Sopenharmony_ci 10608c2ecf20Sopenharmony_ci/* 10618c2ecf20Sopenharmony_ci * 'mcspi' class 10628c2ecf20Sopenharmony_ci * multichannel serial port interface (mcspi) / master/slave synchronous serial 10638c2ecf20Sopenharmony_ci * bus 10648c2ecf20Sopenharmony_ci */ 10658c2ecf20Sopenharmony_ci 10668c2ecf20Sopenharmony_cistatic struct omap_hwmod_class_sysconfig omap34xx_mcspi_sysc = { 10678c2ecf20Sopenharmony_ci .rev_offs = 0x0000, 10688c2ecf20Sopenharmony_ci .sysc_offs = 0x0010, 10698c2ecf20Sopenharmony_ci .syss_offs = 0x0014, 10708c2ecf20Sopenharmony_ci .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE | 10718c2ecf20Sopenharmony_ci SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET | 10728c2ecf20Sopenharmony_ci SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS), 10738c2ecf20Sopenharmony_ci .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), 10748c2ecf20Sopenharmony_ci .sysc_fields = &omap_hwmod_sysc_type1, 10758c2ecf20Sopenharmony_ci}; 10768c2ecf20Sopenharmony_ci 10778c2ecf20Sopenharmony_cistatic struct omap_hwmod_class omap34xx_mcspi_class = { 10788c2ecf20Sopenharmony_ci .name = "mcspi", 10798c2ecf20Sopenharmony_ci .sysc = &omap34xx_mcspi_sysc, 10808c2ecf20Sopenharmony_ci}; 10818c2ecf20Sopenharmony_ci 10828c2ecf20Sopenharmony_ci/* mcspi1 */ 10838c2ecf20Sopenharmony_cistatic struct omap_hwmod omap34xx_mcspi1 = { 10848c2ecf20Sopenharmony_ci .name = "mcspi1", 10858c2ecf20Sopenharmony_ci .main_clk = "mcspi1_fck", 10868c2ecf20Sopenharmony_ci .prcm = { 10878c2ecf20Sopenharmony_ci .omap2 = { 10888c2ecf20Sopenharmony_ci .module_offs = CORE_MOD, 10898c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 10908c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_MCSPI1_SHIFT, 10918c2ecf20Sopenharmony_ci }, 10928c2ecf20Sopenharmony_ci }, 10938c2ecf20Sopenharmony_ci .class = &omap34xx_mcspi_class, 10948c2ecf20Sopenharmony_ci}; 10958c2ecf20Sopenharmony_ci 10968c2ecf20Sopenharmony_ci/* mcspi2 */ 10978c2ecf20Sopenharmony_cistatic struct omap_hwmod omap34xx_mcspi2 = { 10988c2ecf20Sopenharmony_ci .name = "mcspi2", 10998c2ecf20Sopenharmony_ci .main_clk = "mcspi2_fck", 11008c2ecf20Sopenharmony_ci .prcm = { 11018c2ecf20Sopenharmony_ci .omap2 = { 11028c2ecf20Sopenharmony_ci .module_offs = CORE_MOD, 11038c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 11048c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_MCSPI2_SHIFT, 11058c2ecf20Sopenharmony_ci }, 11068c2ecf20Sopenharmony_ci }, 11078c2ecf20Sopenharmony_ci .class = &omap34xx_mcspi_class, 11088c2ecf20Sopenharmony_ci}; 11098c2ecf20Sopenharmony_ci 11108c2ecf20Sopenharmony_ci/* mcspi3 */ 11118c2ecf20Sopenharmony_cistatic struct omap_hwmod omap34xx_mcspi3 = { 11128c2ecf20Sopenharmony_ci .name = "mcspi3", 11138c2ecf20Sopenharmony_ci .main_clk = "mcspi3_fck", 11148c2ecf20Sopenharmony_ci .prcm = { 11158c2ecf20Sopenharmony_ci .omap2 = { 11168c2ecf20Sopenharmony_ci .module_offs = CORE_MOD, 11178c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 11188c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_MCSPI3_SHIFT, 11198c2ecf20Sopenharmony_ci }, 11208c2ecf20Sopenharmony_ci }, 11218c2ecf20Sopenharmony_ci .class = &omap34xx_mcspi_class, 11228c2ecf20Sopenharmony_ci}; 11238c2ecf20Sopenharmony_ci 11248c2ecf20Sopenharmony_ci/* mcspi4 */ 11258c2ecf20Sopenharmony_cistatic struct omap_hwmod omap34xx_mcspi4 = { 11268c2ecf20Sopenharmony_ci .name = "mcspi4", 11278c2ecf20Sopenharmony_ci .main_clk = "mcspi4_fck", 11288c2ecf20Sopenharmony_ci .prcm = { 11298c2ecf20Sopenharmony_ci .omap2 = { 11308c2ecf20Sopenharmony_ci .module_offs = CORE_MOD, 11318c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 11328c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_MCSPI4_SHIFT, 11338c2ecf20Sopenharmony_ci }, 11348c2ecf20Sopenharmony_ci }, 11358c2ecf20Sopenharmony_ci .class = &omap34xx_mcspi_class, 11368c2ecf20Sopenharmony_ci}; 11378c2ecf20Sopenharmony_ci 11388c2ecf20Sopenharmony_ci/* usbhsotg */ 11398c2ecf20Sopenharmony_cistatic struct omap_hwmod_class_sysconfig omap3xxx_usbhsotg_sysc = { 11408c2ecf20Sopenharmony_ci .rev_offs = 0x0400, 11418c2ecf20Sopenharmony_ci .sysc_offs = 0x0404, 11428c2ecf20Sopenharmony_ci .syss_offs = 0x0408, 11438c2ecf20Sopenharmony_ci .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE| 11448c2ecf20Sopenharmony_ci SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET | 11458c2ecf20Sopenharmony_ci SYSC_HAS_AUTOIDLE), 11468c2ecf20Sopenharmony_ci .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | 11478c2ecf20Sopenharmony_ci MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART), 11488c2ecf20Sopenharmony_ci .sysc_fields = &omap_hwmod_sysc_type1, 11498c2ecf20Sopenharmony_ci}; 11508c2ecf20Sopenharmony_ci 11518c2ecf20Sopenharmony_cistatic struct omap_hwmod_class usbotg_class = { 11528c2ecf20Sopenharmony_ci .name = "usbotg", 11538c2ecf20Sopenharmony_ci .sysc = &omap3xxx_usbhsotg_sysc, 11548c2ecf20Sopenharmony_ci}; 11558c2ecf20Sopenharmony_ci 11568c2ecf20Sopenharmony_ci/* usb_otg_hs */ 11578c2ecf20Sopenharmony_ci 11588c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_usbhsotg_hwmod = { 11598c2ecf20Sopenharmony_ci .name = "usb_otg_hs", 11608c2ecf20Sopenharmony_ci .main_clk = "hsotgusb_ick", 11618c2ecf20Sopenharmony_ci .prcm = { 11628c2ecf20Sopenharmony_ci .omap2 = { 11638c2ecf20Sopenharmony_ci .module_offs = CORE_MOD, 11648c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 11658c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430ES2_ST_HSOTGUSB_IDLE_SHIFT, 11668c2ecf20Sopenharmony_ci }, 11678c2ecf20Sopenharmony_ci }, 11688c2ecf20Sopenharmony_ci .class = &usbotg_class, 11698c2ecf20Sopenharmony_ci 11708c2ecf20Sopenharmony_ci /* 11718c2ecf20Sopenharmony_ci * Erratum ID: i479 idle_req / idle_ack mechanism potentially 11728c2ecf20Sopenharmony_ci * broken when autoidle is enabled 11738c2ecf20Sopenharmony_ci * workaround is to disable the autoidle bit at module level. 11748c2ecf20Sopenharmony_ci * 11758c2ecf20Sopenharmony_ci * Enabling the device in any other MIDLEMODE setting but force-idle 11768c2ecf20Sopenharmony_ci * causes core_pwrdm not enter idle states at least on OMAP3630. 11778c2ecf20Sopenharmony_ci * Note that musb has OTG_FORCESTDBY register that controls MSTANDBY 11788c2ecf20Sopenharmony_ci * signal when MIDLEMODE is set to force-idle. 11798c2ecf20Sopenharmony_ci */ 11808c2ecf20Sopenharmony_ci .flags = HWMOD_NO_OCP_AUTOIDLE | HWMOD_SWSUP_SIDLE | 11818c2ecf20Sopenharmony_ci HWMOD_FORCE_MSTANDBY | HWMOD_RECONFIG_IO_CHAIN, 11828c2ecf20Sopenharmony_ci}; 11838c2ecf20Sopenharmony_ci 11848c2ecf20Sopenharmony_ci/* usb_otg_hs */ 11858c2ecf20Sopenharmony_ci 11868c2ecf20Sopenharmony_cistatic struct omap_hwmod_class am35xx_usbotg_class = { 11878c2ecf20Sopenharmony_ci .name = "am35xx_usbotg", 11888c2ecf20Sopenharmony_ci}; 11898c2ecf20Sopenharmony_ci 11908c2ecf20Sopenharmony_cistatic struct omap_hwmod am35xx_usbhsotg_hwmod = { 11918c2ecf20Sopenharmony_ci .name = "am35x_otg_hs", 11928c2ecf20Sopenharmony_ci .main_clk = "hsotgusb_fck", 11938c2ecf20Sopenharmony_ci .class = &am35xx_usbotg_class, 11948c2ecf20Sopenharmony_ci .flags = HWMOD_NO_IDLEST, 11958c2ecf20Sopenharmony_ci}; 11968c2ecf20Sopenharmony_ci 11978c2ecf20Sopenharmony_ci/* MMC/SD/SDIO common */ 11988c2ecf20Sopenharmony_cistatic struct omap_hwmod_class_sysconfig omap34xx_mmc_sysc = { 11998c2ecf20Sopenharmony_ci .rev_offs = 0x1fc, 12008c2ecf20Sopenharmony_ci .sysc_offs = 0x10, 12018c2ecf20Sopenharmony_ci .syss_offs = 0x14, 12028c2ecf20Sopenharmony_ci .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE | 12038c2ecf20Sopenharmony_ci SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET | 12048c2ecf20Sopenharmony_ci SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS), 12058c2ecf20Sopenharmony_ci .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), 12068c2ecf20Sopenharmony_ci .sysc_fields = &omap_hwmod_sysc_type1, 12078c2ecf20Sopenharmony_ci}; 12088c2ecf20Sopenharmony_ci 12098c2ecf20Sopenharmony_cistatic struct omap_hwmod_class omap34xx_mmc_class = { 12108c2ecf20Sopenharmony_ci .name = "mmc", 12118c2ecf20Sopenharmony_ci .sysc = &omap34xx_mmc_sysc, 12128c2ecf20Sopenharmony_ci}; 12138c2ecf20Sopenharmony_ci 12148c2ecf20Sopenharmony_ci/* MMC/SD/SDIO1 */ 12158c2ecf20Sopenharmony_ci 12168c2ecf20Sopenharmony_ci 12178c2ecf20Sopenharmony_ci 12188c2ecf20Sopenharmony_cistatic struct omap_hwmod_opt_clk omap34xx_mmc1_opt_clks[] = { 12198c2ecf20Sopenharmony_ci { .role = "dbck", .clk = "omap_32k_fck", }, 12208c2ecf20Sopenharmony_ci}; 12218c2ecf20Sopenharmony_ci 12228c2ecf20Sopenharmony_cistatic struct omap_hsmmc_dev_attr mmc1_dev_attr = { 12238c2ecf20Sopenharmony_ci .flags = OMAP_HSMMC_SUPPORTS_DUAL_VOLT, 12248c2ecf20Sopenharmony_ci}; 12258c2ecf20Sopenharmony_ci 12268c2ecf20Sopenharmony_ci/* See 35xx errata 2.1.1.128 in SPRZ278F */ 12278c2ecf20Sopenharmony_cistatic struct omap_hsmmc_dev_attr mmc1_pre_es3_dev_attr = { 12288c2ecf20Sopenharmony_ci .flags = (OMAP_HSMMC_SUPPORTS_DUAL_VOLT | 12298c2ecf20Sopenharmony_ci OMAP_HSMMC_BROKEN_MULTIBLOCK_READ), 12308c2ecf20Sopenharmony_ci}; 12318c2ecf20Sopenharmony_ci 12328c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_pre_es3_mmc1_hwmod = { 12338c2ecf20Sopenharmony_ci .name = "mmc1", 12348c2ecf20Sopenharmony_ci .opt_clks = omap34xx_mmc1_opt_clks, 12358c2ecf20Sopenharmony_ci .opt_clks_cnt = ARRAY_SIZE(omap34xx_mmc1_opt_clks), 12368c2ecf20Sopenharmony_ci .main_clk = "mmchs1_fck", 12378c2ecf20Sopenharmony_ci .prcm = { 12388c2ecf20Sopenharmony_ci .omap2 = { 12398c2ecf20Sopenharmony_ci .module_offs = CORE_MOD, 12408c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 12418c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_MMC1_SHIFT, 12428c2ecf20Sopenharmony_ci }, 12438c2ecf20Sopenharmony_ci }, 12448c2ecf20Sopenharmony_ci .dev_attr = &mmc1_pre_es3_dev_attr, 12458c2ecf20Sopenharmony_ci .class = &omap34xx_mmc_class, 12468c2ecf20Sopenharmony_ci}; 12478c2ecf20Sopenharmony_ci 12488c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_es3plus_mmc1_hwmod = { 12498c2ecf20Sopenharmony_ci .name = "mmc1", 12508c2ecf20Sopenharmony_ci .opt_clks = omap34xx_mmc1_opt_clks, 12518c2ecf20Sopenharmony_ci .opt_clks_cnt = ARRAY_SIZE(omap34xx_mmc1_opt_clks), 12528c2ecf20Sopenharmony_ci .main_clk = "mmchs1_fck", 12538c2ecf20Sopenharmony_ci .prcm = { 12548c2ecf20Sopenharmony_ci .omap2 = { 12558c2ecf20Sopenharmony_ci .module_offs = CORE_MOD, 12568c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 12578c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_MMC1_SHIFT, 12588c2ecf20Sopenharmony_ci }, 12598c2ecf20Sopenharmony_ci }, 12608c2ecf20Sopenharmony_ci .dev_attr = &mmc1_dev_attr, 12618c2ecf20Sopenharmony_ci .class = &omap34xx_mmc_class, 12628c2ecf20Sopenharmony_ci}; 12638c2ecf20Sopenharmony_ci 12648c2ecf20Sopenharmony_ci/* MMC/SD/SDIO2 */ 12658c2ecf20Sopenharmony_ci 12668c2ecf20Sopenharmony_ci 12678c2ecf20Sopenharmony_ci 12688c2ecf20Sopenharmony_cistatic struct omap_hwmod_opt_clk omap34xx_mmc2_opt_clks[] = { 12698c2ecf20Sopenharmony_ci { .role = "dbck", .clk = "omap_32k_fck", }, 12708c2ecf20Sopenharmony_ci}; 12718c2ecf20Sopenharmony_ci 12728c2ecf20Sopenharmony_ci/* See 35xx errata 2.1.1.128 in SPRZ278F */ 12738c2ecf20Sopenharmony_cistatic struct omap_hsmmc_dev_attr mmc2_pre_es3_dev_attr = { 12748c2ecf20Sopenharmony_ci .flags = OMAP_HSMMC_BROKEN_MULTIBLOCK_READ, 12758c2ecf20Sopenharmony_ci}; 12768c2ecf20Sopenharmony_ci 12778c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_pre_es3_mmc2_hwmod = { 12788c2ecf20Sopenharmony_ci .name = "mmc2", 12798c2ecf20Sopenharmony_ci .opt_clks = omap34xx_mmc2_opt_clks, 12808c2ecf20Sopenharmony_ci .opt_clks_cnt = ARRAY_SIZE(omap34xx_mmc2_opt_clks), 12818c2ecf20Sopenharmony_ci .main_clk = "mmchs2_fck", 12828c2ecf20Sopenharmony_ci .prcm = { 12838c2ecf20Sopenharmony_ci .omap2 = { 12848c2ecf20Sopenharmony_ci .module_offs = CORE_MOD, 12858c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 12868c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_MMC2_SHIFT, 12878c2ecf20Sopenharmony_ci }, 12888c2ecf20Sopenharmony_ci }, 12898c2ecf20Sopenharmony_ci .dev_attr = &mmc2_pre_es3_dev_attr, 12908c2ecf20Sopenharmony_ci .class = &omap34xx_mmc_class, 12918c2ecf20Sopenharmony_ci}; 12928c2ecf20Sopenharmony_ci 12938c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_es3plus_mmc2_hwmod = { 12948c2ecf20Sopenharmony_ci .name = "mmc2", 12958c2ecf20Sopenharmony_ci .opt_clks = omap34xx_mmc2_opt_clks, 12968c2ecf20Sopenharmony_ci .opt_clks_cnt = ARRAY_SIZE(omap34xx_mmc2_opt_clks), 12978c2ecf20Sopenharmony_ci .main_clk = "mmchs2_fck", 12988c2ecf20Sopenharmony_ci .prcm = { 12998c2ecf20Sopenharmony_ci .omap2 = { 13008c2ecf20Sopenharmony_ci .module_offs = CORE_MOD, 13018c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 13028c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_MMC2_SHIFT, 13038c2ecf20Sopenharmony_ci }, 13048c2ecf20Sopenharmony_ci }, 13058c2ecf20Sopenharmony_ci .class = &omap34xx_mmc_class, 13068c2ecf20Sopenharmony_ci}; 13078c2ecf20Sopenharmony_ci 13088c2ecf20Sopenharmony_ci/* MMC/SD/SDIO3 */ 13098c2ecf20Sopenharmony_ci 13108c2ecf20Sopenharmony_ci 13118c2ecf20Sopenharmony_ci 13128c2ecf20Sopenharmony_cistatic struct omap_hwmod_opt_clk omap34xx_mmc3_opt_clks[] = { 13138c2ecf20Sopenharmony_ci { .role = "dbck", .clk = "omap_32k_fck", }, 13148c2ecf20Sopenharmony_ci}; 13158c2ecf20Sopenharmony_ci 13168c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_mmc3_hwmod = { 13178c2ecf20Sopenharmony_ci .name = "mmc3", 13188c2ecf20Sopenharmony_ci .opt_clks = omap34xx_mmc3_opt_clks, 13198c2ecf20Sopenharmony_ci .opt_clks_cnt = ARRAY_SIZE(omap34xx_mmc3_opt_clks), 13208c2ecf20Sopenharmony_ci .main_clk = "mmchs3_fck", 13218c2ecf20Sopenharmony_ci .prcm = { 13228c2ecf20Sopenharmony_ci .omap2 = { 13238c2ecf20Sopenharmony_ci .module_offs = CORE_MOD, 13248c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 13258c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_MMC3_SHIFT, 13268c2ecf20Sopenharmony_ci }, 13278c2ecf20Sopenharmony_ci }, 13288c2ecf20Sopenharmony_ci .class = &omap34xx_mmc_class, 13298c2ecf20Sopenharmony_ci}; 13308c2ecf20Sopenharmony_ci 13318c2ecf20Sopenharmony_ci/* 13328c2ecf20Sopenharmony_ci * 'usb_host_hs' class 13338c2ecf20Sopenharmony_ci * high-speed multi-port usb host controller 13348c2ecf20Sopenharmony_ci */ 13358c2ecf20Sopenharmony_ci 13368c2ecf20Sopenharmony_cistatic struct omap_hwmod_class_sysconfig omap3xxx_usb_host_hs_sysc = { 13378c2ecf20Sopenharmony_ci .rev_offs = 0x0000, 13388c2ecf20Sopenharmony_ci .sysc_offs = 0x0010, 13398c2ecf20Sopenharmony_ci .syss_offs = 0x0014, 13408c2ecf20Sopenharmony_ci .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_CLOCKACTIVITY | 13418c2ecf20Sopenharmony_ci SYSC_HAS_SIDLEMODE | SYSC_HAS_ENAWAKEUP | 13428c2ecf20Sopenharmony_ci SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE | 13438c2ecf20Sopenharmony_ci SYSS_HAS_RESET_STATUS), 13448c2ecf20Sopenharmony_ci .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | 13458c2ecf20Sopenharmony_ci MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART), 13468c2ecf20Sopenharmony_ci .sysc_fields = &omap_hwmod_sysc_type1, 13478c2ecf20Sopenharmony_ci}; 13488c2ecf20Sopenharmony_ci 13498c2ecf20Sopenharmony_cistatic struct omap_hwmod_class omap3xxx_usb_host_hs_hwmod_class = { 13508c2ecf20Sopenharmony_ci .name = "usb_host_hs", 13518c2ecf20Sopenharmony_ci .sysc = &omap3xxx_usb_host_hs_sysc, 13528c2ecf20Sopenharmony_ci}; 13538c2ecf20Sopenharmony_ci 13548c2ecf20Sopenharmony_ci 13558c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_usb_host_hs_hwmod = { 13568c2ecf20Sopenharmony_ci .name = "usb_host_hs", 13578c2ecf20Sopenharmony_ci .class = &omap3xxx_usb_host_hs_hwmod_class, 13588c2ecf20Sopenharmony_ci .clkdm_name = "usbhost_clkdm", 13598c2ecf20Sopenharmony_ci .main_clk = "usbhost_48m_fck", 13608c2ecf20Sopenharmony_ci .prcm = { 13618c2ecf20Sopenharmony_ci .omap2 = { 13628c2ecf20Sopenharmony_ci .module_offs = OMAP3430ES2_USBHOST_MOD, 13638c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 13648c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430ES2_ST_USBHOST_IDLE_SHIFT, 13658c2ecf20Sopenharmony_ci }, 13668c2ecf20Sopenharmony_ci }, 13678c2ecf20Sopenharmony_ci 13688c2ecf20Sopenharmony_ci /* 13698c2ecf20Sopenharmony_ci * Errata: USBHOST Configured In Smart-Idle Can Lead To a Deadlock 13708c2ecf20Sopenharmony_ci * id: i660 13718c2ecf20Sopenharmony_ci * 13728c2ecf20Sopenharmony_ci * Description: 13738c2ecf20Sopenharmony_ci * In the following configuration : 13748c2ecf20Sopenharmony_ci * - USBHOST module is set to smart-idle mode 13758c2ecf20Sopenharmony_ci * - PRCM asserts idle_req to the USBHOST module ( This typically 13768c2ecf20Sopenharmony_ci * happens when the system is going to a low power mode : all ports 13778c2ecf20Sopenharmony_ci * have been suspended, the master part of the USBHOST module has 13788c2ecf20Sopenharmony_ci * entered the standby state, and SW has cut the functional clocks) 13798c2ecf20Sopenharmony_ci * - an USBHOST interrupt occurs before the module is able to answer 13808c2ecf20Sopenharmony_ci * idle_ack, typically a remote wakeup IRQ. 13818c2ecf20Sopenharmony_ci * Then the USB HOST module will enter a deadlock situation where it 13828c2ecf20Sopenharmony_ci * is no more accessible nor functional. 13838c2ecf20Sopenharmony_ci * 13848c2ecf20Sopenharmony_ci * Workaround: 13858c2ecf20Sopenharmony_ci * Don't use smart idle; use only force idle, hence HWMOD_SWSUP_SIDLE 13868c2ecf20Sopenharmony_ci */ 13878c2ecf20Sopenharmony_ci 13888c2ecf20Sopenharmony_ci /* 13898c2ecf20Sopenharmony_ci * Errata: USB host EHCI may stall when entering smart-standby mode 13908c2ecf20Sopenharmony_ci * Id: i571 13918c2ecf20Sopenharmony_ci * 13928c2ecf20Sopenharmony_ci * Description: 13938c2ecf20Sopenharmony_ci * When the USBHOST module is set to smart-standby mode, and when it is 13948c2ecf20Sopenharmony_ci * ready to enter the standby state (i.e. all ports are suspended and 13958c2ecf20Sopenharmony_ci * all attached devices are in suspend mode), then it can wrongly assert 13968c2ecf20Sopenharmony_ci * the Mstandby signal too early while there are still some residual OCP 13978c2ecf20Sopenharmony_ci * transactions ongoing. If this condition occurs, the internal state 13988c2ecf20Sopenharmony_ci * machine may go to an undefined state and the USB link may be stuck 13998c2ecf20Sopenharmony_ci * upon the next resume. 14008c2ecf20Sopenharmony_ci * 14018c2ecf20Sopenharmony_ci * Workaround: 14028c2ecf20Sopenharmony_ci * Don't use smart standby; use only force standby, 14038c2ecf20Sopenharmony_ci * hence HWMOD_SWSUP_MSTANDBY 14048c2ecf20Sopenharmony_ci */ 14058c2ecf20Sopenharmony_ci 14068c2ecf20Sopenharmony_ci .flags = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY, 14078c2ecf20Sopenharmony_ci}; 14088c2ecf20Sopenharmony_ci 14098c2ecf20Sopenharmony_ci/* 14108c2ecf20Sopenharmony_ci * 'usb_tll_hs' class 14118c2ecf20Sopenharmony_ci * usb_tll_hs module is the adapter on the usb_host_hs ports 14128c2ecf20Sopenharmony_ci */ 14138c2ecf20Sopenharmony_cistatic struct omap_hwmod_class_sysconfig omap3xxx_usb_tll_hs_sysc = { 14148c2ecf20Sopenharmony_ci .rev_offs = 0x0000, 14158c2ecf20Sopenharmony_ci .sysc_offs = 0x0010, 14168c2ecf20Sopenharmony_ci .syss_offs = 0x0014, 14178c2ecf20Sopenharmony_ci .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE | 14188c2ecf20Sopenharmony_ci SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET | 14198c2ecf20Sopenharmony_ci SYSC_HAS_AUTOIDLE), 14208c2ecf20Sopenharmony_ci .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), 14218c2ecf20Sopenharmony_ci .sysc_fields = &omap_hwmod_sysc_type1, 14228c2ecf20Sopenharmony_ci}; 14238c2ecf20Sopenharmony_ci 14248c2ecf20Sopenharmony_cistatic struct omap_hwmod_class omap3xxx_usb_tll_hs_hwmod_class = { 14258c2ecf20Sopenharmony_ci .name = "usb_tll_hs", 14268c2ecf20Sopenharmony_ci .sysc = &omap3xxx_usb_tll_hs_sysc, 14278c2ecf20Sopenharmony_ci}; 14288c2ecf20Sopenharmony_ci 14298c2ecf20Sopenharmony_ci 14308c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_usb_tll_hs_hwmod = { 14318c2ecf20Sopenharmony_ci .name = "usb_tll_hs", 14328c2ecf20Sopenharmony_ci .class = &omap3xxx_usb_tll_hs_hwmod_class, 14338c2ecf20Sopenharmony_ci .clkdm_name = "core_l4_clkdm", 14348c2ecf20Sopenharmony_ci .main_clk = "usbtll_fck", 14358c2ecf20Sopenharmony_ci .prcm = { 14368c2ecf20Sopenharmony_ci .omap2 = { 14378c2ecf20Sopenharmony_ci .module_offs = CORE_MOD, 14388c2ecf20Sopenharmony_ci .idlest_reg_id = 3, 14398c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430ES2_ST_USBTLL_SHIFT, 14408c2ecf20Sopenharmony_ci }, 14418c2ecf20Sopenharmony_ci }, 14428c2ecf20Sopenharmony_ci}; 14438c2ecf20Sopenharmony_ci 14448c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_hdq1w_hwmod = { 14458c2ecf20Sopenharmony_ci .name = "hdq1w", 14468c2ecf20Sopenharmony_ci .main_clk = "hdq_fck", 14478c2ecf20Sopenharmony_ci .prcm = { 14488c2ecf20Sopenharmony_ci .omap2 = { 14498c2ecf20Sopenharmony_ci .module_offs = CORE_MOD, 14508c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 14518c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_HDQ_SHIFT, 14528c2ecf20Sopenharmony_ci }, 14538c2ecf20Sopenharmony_ci }, 14548c2ecf20Sopenharmony_ci .class = &omap2_hdq1w_class, 14558c2ecf20Sopenharmony_ci}; 14568c2ecf20Sopenharmony_ci 14578c2ecf20Sopenharmony_ci/* SAD2D */ 14588c2ecf20Sopenharmony_cistatic struct omap_hwmod_rst_info omap3xxx_sad2d_resets[] = { 14598c2ecf20Sopenharmony_ci { .name = "rst_modem_pwron_sw", .rst_shift = 0 }, 14608c2ecf20Sopenharmony_ci { .name = "rst_modem_sw", .rst_shift = 1 }, 14618c2ecf20Sopenharmony_ci}; 14628c2ecf20Sopenharmony_ci 14638c2ecf20Sopenharmony_cistatic struct omap_hwmod_class omap3xxx_sad2d_class = { 14648c2ecf20Sopenharmony_ci .name = "sad2d", 14658c2ecf20Sopenharmony_ci}; 14668c2ecf20Sopenharmony_ci 14678c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_sad2d_hwmod = { 14688c2ecf20Sopenharmony_ci .name = "sad2d", 14698c2ecf20Sopenharmony_ci .rst_lines = omap3xxx_sad2d_resets, 14708c2ecf20Sopenharmony_ci .rst_lines_cnt = ARRAY_SIZE(omap3xxx_sad2d_resets), 14718c2ecf20Sopenharmony_ci .main_clk = "sad2d_ick", 14728c2ecf20Sopenharmony_ci .prcm = { 14738c2ecf20Sopenharmony_ci .omap2 = { 14748c2ecf20Sopenharmony_ci .module_offs = CORE_MOD, 14758c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 14768c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_SAD2D_SHIFT, 14778c2ecf20Sopenharmony_ci }, 14788c2ecf20Sopenharmony_ci }, 14798c2ecf20Sopenharmony_ci .class = &omap3xxx_sad2d_class, 14808c2ecf20Sopenharmony_ci}; 14818c2ecf20Sopenharmony_ci 14828c2ecf20Sopenharmony_ci/* 14838c2ecf20Sopenharmony_ci * 'gpmc' class 14848c2ecf20Sopenharmony_ci * general purpose memory controller 14858c2ecf20Sopenharmony_ci */ 14868c2ecf20Sopenharmony_ci 14878c2ecf20Sopenharmony_cistatic struct omap_hwmod_class_sysconfig omap3xxx_gpmc_sysc = { 14888c2ecf20Sopenharmony_ci .rev_offs = 0x0000, 14898c2ecf20Sopenharmony_ci .sysc_offs = 0x0010, 14908c2ecf20Sopenharmony_ci .syss_offs = 0x0014, 14918c2ecf20Sopenharmony_ci .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE | 14928c2ecf20Sopenharmony_ci SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS), 14938c2ecf20Sopenharmony_ci .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), 14948c2ecf20Sopenharmony_ci .sysc_fields = &omap_hwmod_sysc_type1, 14958c2ecf20Sopenharmony_ci}; 14968c2ecf20Sopenharmony_ci 14978c2ecf20Sopenharmony_cistatic struct omap_hwmod_class omap3xxx_gpmc_hwmod_class = { 14988c2ecf20Sopenharmony_ci .name = "gpmc", 14998c2ecf20Sopenharmony_ci .sysc = &omap3xxx_gpmc_sysc, 15008c2ecf20Sopenharmony_ci}; 15018c2ecf20Sopenharmony_ci 15028c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_gpmc_hwmod = { 15038c2ecf20Sopenharmony_ci .name = "gpmc", 15048c2ecf20Sopenharmony_ci .class = &omap3xxx_gpmc_hwmod_class, 15058c2ecf20Sopenharmony_ci .clkdm_name = "core_l3_clkdm", 15068c2ecf20Sopenharmony_ci .main_clk = "gpmc_fck", 15078c2ecf20Sopenharmony_ci /* Skip reset for CONFIG_OMAP_GPMC_DEBUG for bootloader timings */ 15088c2ecf20Sopenharmony_ci .flags = HWMOD_NO_IDLEST | DEBUG_OMAP_GPMC_HWMOD_FLAGS, 15098c2ecf20Sopenharmony_ci}; 15108c2ecf20Sopenharmony_ci 15118c2ecf20Sopenharmony_ci/* 15128c2ecf20Sopenharmony_ci * interfaces 15138c2ecf20Sopenharmony_ci */ 15148c2ecf20Sopenharmony_ci 15158c2ecf20Sopenharmony_ci/* L3 -> L4_CORE interface */ 15168c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l3_main__l4_core = { 15178c2ecf20Sopenharmony_ci .master = &omap3xxx_l3_main_hwmod, 15188c2ecf20Sopenharmony_ci .slave = &omap3xxx_l4_core_hwmod, 15198c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 15208c2ecf20Sopenharmony_ci}; 15218c2ecf20Sopenharmony_ci 15228c2ecf20Sopenharmony_ci/* L3 -> L4_PER interface */ 15238c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l3_main__l4_per = { 15248c2ecf20Sopenharmony_ci .master = &omap3xxx_l3_main_hwmod, 15258c2ecf20Sopenharmony_ci .slave = &omap3xxx_l4_per_hwmod, 15268c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 15278c2ecf20Sopenharmony_ci}; 15288c2ecf20Sopenharmony_ci 15298c2ecf20Sopenharmony_ci 15308c2ecf20Sopenharmony_ci/* MPU -> L3 interface */ 15318c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_mpu__l3_main = { 15328c2ecf20Sopenharmony_ci .master = &omap3xxx_mpu_hwmod, 15338c2ecf20Sopenharmony_ci .slave = &omap3xxx_l3_main_hwmod, 15348c2ecf20Sopenharmony_ci .user = OCP_USER_MPU, 15358c2ecf20Sopenharmony_ci}; 15368c2ecf20Sopenharmony_ci 15378c2ecf20Sopenharmony_ci 15388c2ecf20Sopenharmony_ci/* l3 -> debugss */ 15398c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l3_main__l4_debugss = { 15408c2ecf20Sopenharmony_ci .master = &omap3xxx_l3_main_hwmod, 15418c2ecf20Sopenharmony_ci .slave = &omap3xxx_debugss_hwmod, 15428c2ecf20Sopenharmony_ci .user = OCP_USER_MPU, 15438c2ecf20Sopenharmony_ci}; 15448c2ecf20Sopenharmony_ci 15458c2ecf20Sopenharmony_ci/* DSS -> l3 */ 15468c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3430es1_dss__l3 = { 15478c2ecf20Sopenharmony_ci .master = &omap3430es1_dss_core_hwmod, 15488c2ecf20Sopenharmony_ci .slave = &omap3xxx_l3_main_hwmod, 15498c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 15508c2ecf20Sopenharmony_ci}; 15518c2ecf20Sopenharmony_ci 15528c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_dss__l3 = { 15538c2ecf20Sopenharmony_ci .master = &omap3xxx_dss_core_hwmod, 15548c2ecf20Sopenharmony_ci .slave = &omap3xxx_l3_main_hwmod, 15558c2ecf20Sopenharmony_ci .fw = { 15568c2ecf20Sopenharmony_ci .omap2 = { 15578c2ecf20Sopenharmony_ci .l3_perm_bit = OMAP3_L3_CORE_FW_INIT_ID_DSS, 15588c2ecf20Sopenharmony_ci .flags = OMAP_FIREWALL_L3, 15598c2ecf20Sopenharmony_ci }, 15608c2ecf20Sopenharmony_ci }, 15618c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 15628c2ecf20Sopenharmony_ci}; 15638c2ecf20Sopenharmony_ci 15648c2ecf20Sopenharmony_ci/* l3_core -> usbhsotg interface */ 15658c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_usbhsotg__l3 = { 15668c2ecf20Sopenharmony_ci .master = &omap3xxx_usbhsotg_hwmod, 15678c2ecf20Sopenharmony_ci .slave = &omap3xxx_l3_main_hwmod, 15688c2ecf20Sopenharmony_ci .clk = "core_l3_ick", 15698c2ecf20Sopenharmony_ci .user = OCP_USER_MPU, 15708c2ecf20Sopenharmony_ci}; 15718c2ecf20Sopenharmony_ci 15728c2ecf20Sopenharmony_ci/* l3_core -> am35xx_usbhsotg interface */ 15738c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if am35xx_usbhsotg__l3 = { 15748c2ecf20Sopenharmony_ci .master = &am35xx_usbhsotg_hwmod, 15758c2ecf20Sopenharmony_ci .slave = &omap3xxx_l3_main_hwmod, 15768c2ecf20Sopenharmony_ci .clk = "hsotgusb_ick", 15778c2ecf20Sopenharmony_ci .user = OCP_USER_MPU, 15788c2ecf20Sopenharmony_ci}; 15798c2ecf20Sopenharmony_ci 15808c2ecf20Sopenharmony_ci/* l3_core -> sad2d interface */ 15818c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_sad2d__l3 = { 15828c2ecf20Sopenharmony_ci .master = &omap3xxx_sad2d_hwmod, 15838c2ecf20Sopenharmony_ci .slave = &omap3xxx_l3_main_hwmod, 15848c2ecf20Sopenharmony_ci .clk = "core_l3_ick", 15858c2ecf20Sopenharmony_ci .user = OCP_USER_MPU, 15868c2ecf20Sopenharmony_ci}; 15878c2ecf20Sopenharmony_ci 15888c2ecf20Sopenharmony_ci/* L4_CORE -> L4_WKUP interface */ 15898c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_core__l4_wkup = { 15908c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 15918c2ecf20Sopenharmony_ci .slave = &omap3xxx_l4_wkup_hwmod, 15928c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 15938c2ecf20Sopenharmony_ci}; 15948c2ecf20Sopenharmony_ci 15958c2ecf20Sopenharmony_ci/* L4 CORE -> MMC1 interface */ 15968c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_core__pre_es3_mmc1 = { 15978c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 15988c2ecf20Sopenharmony_ci .slave = &omap3xxx_pre_es3_mmc1_hwmod, 15998c2ecf20Sopenharmony_ci .clk = "mmchs1_ick", 16008c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 16018c2ecf20Sopenharmony_ci .flags = OMAP_FIREWALL_L4, 16028c2ecf20Sopenharmony_ci}; 16038c2ecf20Sopenharmony_ci 16048c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_core__es3plus_mmc1 = { 16058c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 16068c2ecf20Sopenharmony_ci .slave = &omap3xxx_es3plus_mmc1_hwmod, 16078c2ecf20Sopenharmony_ci .clk = "mmchs1_ick", 16088c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 16098c2ecf20Sopenharmony_ci .flags = OMAP_FIREWALL_L4, 16108c2ecf20Sopenharmony_ci}; 16118c2ecf20Sopenharmony_ci 16128c2ecf20Sopenharmony_ci/* L4 CORE -> MMC2 interface */ 16138c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_core__pre_es3_mmc2 = { 16148c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 16158c2ecf20Sopenharmony_ci .slave = &omap3xxx_pre_es3_mmc2_hwmod, 16168c2ecf20Sopenharmony_ci .clk = "mmchs2_ick", 16178c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 16188c2ecf20Sopenharmony_ci .flags = OMAP_FIREWALL_L4, 16198c2ecf20Sopenharmony_ci}; 16208c2ecf20Sopenharmony_ci 16218c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_core__es3plus_mmc2 = { 16228c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 16238c2ecf20Sopenharmony_ci .slave = &omap3xxx_es3plus_mmc2_hwmod, 16248c2ecf20Sopenharmony_ci .clk = "mmchs2_ick", 16258c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 16268c2ecf20Sopenharmony_ci .flags = OMAP_FIREWALL_L4, 16278c2ecf20Sopenharmony_ci}; 16288c2ecf20Sopenharmony_ci 16298c2ecf20Sopenharmony_ci/* L4 CORE -> MMC3 interface */ 16308c2ecf20Sopenharmony_ci 16318c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_core__mmc3 = { 16328c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 16338c2ecf20Sopenharmony_ci .slave = &omap3xxx_mmc3_hwmod, 16348c2ecf20Sopenharmony_ci .clk = "mmchs3_ick", 16358c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 16368c2ecf20Sopenharmony_ci .flags = OMAP_FIREWALL_L4, 16378c2ecf20Sopenharmony_ci}; 16388c2ecf20Sopenharmony_ci 16398c2ecf20Sopenharmony_ci/* L4 CORE -> UART1 interface */ 16408c2ecf20Sopenharmony_ci 16418c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3_l4_core__uart1 = { 16428c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 16438c2ecf20Sopenharmony_ci .slave = &omap3xxx_uart1_hwmod, 16448c2ecf20Sopenharmony_ci .clk = "uart1_ick", 16458c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 16468c2ecf20Sopenharmony_ci}; 16478c2ecf20Sopenharmony_ci 16488c2ecf20Sopenharmony_ci/* L4 CORE -> UART2 interface */ 16498c2ecf20Sopenharmony_ci 16508c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3_l4_core__uart2 = { 16518c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 16528c2ecf20Sopenharmony_ci .slave = &omap3xxx_uart2_hwmod, 16538c2ecf20Sopenharmony_ci .clk = "uart2_ick", 16548c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 16558c2ecf20Sopenharmony_ci}; 16568c2ecf20Sopenharmony_ci 16578c2ecf20Sopenharmony_ci/* L4 PER -> UART3 interface */ 16588c2ecf20Sopenharmony_ci 16598c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3_l4_per__uart3 = { 16608c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_per_hwmod, 16618c2ecf20Sopenharmony_ci .slave = &omap3xxx_uart3_hwmod, 16628c2ecf20Sopenharmony_ci .clk = "uart3_ick", 16638c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 16648c2ecf20Sopenharmony_ci}; 16658c2ecf20Sopenharmony_ci 16668c2ecf20Sopenharmony_ci/* L4 PER -> UART4 interface */ 16678c2ecf20Sopenharmony_ci 16688c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap36xx_l4_per__uart4 = { 16698c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_per_hwmod, 16708c2ecf20Sopenharmony_ci .slave = &omap36xx_uart4_hwmod, 16718c2ecf20Sopenharmony_ci .clk = "uart4_ick", 16728c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 16738c2ecf20Sopenharmony_ci}; 16748c2ecf20Sopenharmony_ci 16758c2ecf20Sopenharmony_ci/* AM35xx: L4 CORE -> UART4 interface */ 16768c2ecf20Sopenharmony_ci 16778c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if am35xx_l4_core__uart4 = { 16788c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 16798c2ecf20Sopenharmony_ci .slave = &am35xx_uart4_hwmod, 16808c2ecf20Sopenharmony_ci .clk = "uart4_ick", 16818c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 16828c2ecf20Sopenharmony_ci}; 16838c2ecf20Sopenharmony_ci 16848c2ecf20Sopenharmony_ci/* L4 CORE -> I2C1 interface */ 16858c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3_l4_core__i2c1 = { 16868c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 16878c2ecf20Sopenharmony_ci .slave = &omap3xxx_i2c1_hwmod, 16888c2ecf20Sopenharmony_ci .clk = "i2c1_ick", 16898c2ecf20Sopenharmony_ci .fw = { 16908c2ecf20Sopenharmony_ci .omap2 = { 16918c2ecf20Sopenharmony_ci .l4_fw_region = OMAP3_L4_CORE_FW_I2C1_REGION, 16928c2ecf20Sopenharmony_ci .l4_prot_group = 7, 16938c2ecf20Sopenharmony_ci .flags = OMAP_FIREWALL_L4, 16948c2ecf20Sopenharmony_ci }, 16958c2ecf20Sopenharmony_ci }, 16968c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 16978c2ecf20Sopenharmony_ci}; 16988c2ecf20Sopenharmony_ci 16998c2ecf20Sopenharmony_ci/* L4 CORE -> I2C2 interface */ 17008c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3_l4_core__i2c2 = { 17018c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 17028c2ecf20Sopenharmony_ci .slave = &omap3xxx_i2c2_hwmod, 17038c2ecf20Sopenharmony_ci .clk = "i2c2_ick", 17048c2ecf20Sopenharmony_ci .fw = { 17058c2ecf20Sopenharmony_ci .omap2 = { 17068c2ecf20Sopenharmony_ci .l4_fw_region = OMAP3_L4_CORE_FW_I2C2_REGION, 17078c2ecf20Sopenharmony_ci .l4_prot_group = 7, 17088c2ecf20Sopenharmony_ci .flags = OMAP_FIREWALL_L4, 17098c2ecf20Sopenharmony_ci }, 17108c2ecf20Sopenharmony_ci }, 17118c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 17128c2ecf20Sopenharmony_ci}; 17138c2ecf20Sopenharmony_ci 17148c2ecf20Sopenharmony_ci/* L4 CORE -> I2C3 interface */ 17158c2ecf20Sopenharmony_ci 17168c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3_l4_core__i2c3 = { 17178c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 17188c2ecf20Sopenharmony_ci .slave = &omap3xxx_i2c3_hwmod, 17198c2ecf20Sopenharmony_ci .clk = "i2c3_ick", 17208c2ecf20Sopenharmony_ci .fw = { 17218c2ecf20Sopenharmony_ci .omap2 = { 17228c2ecf20Sopenharmony_ci .l4_fw_region = OMAP3_L4_CORE_FW_I2C3_REGION, 17238c2ecf20Sopenharmony_ci .l4_prot_group = 7, 17248c2ecf20Sopenharmony_ci .flags = OMAP_FIREWALL_L4, 17258c2ecf20Sopenharmony_ci }, 17268c2ecf20Sopenharmony_ci }, 17278c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 17288c2ecf20Sopenharmony_ci}; 17298c2ecf20Sopenharmony_ci 17308c2ecf20Sopenharmony_ci/* L4 CORE -> SR1 interface */ 17318c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap34xx_l4_core__sr1 = { 17328c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 17338c2ecf20Sopenharmony_ci .slave = &omap34xx_sr1_hwmod, 17348c2ecf20Sopenharmony_ci .clk = "sr_l4_ick", 17358c2ecf20Sopenharmony_ci .user = OCP_USER_MPU, 17368c2ecf20Sopenharmony_ci}; 17378c2ecf20Sopenharmony_ci 17388c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap36xx_l4_core__sr1 = { 17398c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 17408c2ecf20Sopenharmony_ci .slave = &omap36xx_sr1_hwmod, 17418c2ecf20Sopenharmony_ci .clk = "sr_l4_ick", 17428c2ecf20Sopenharmony_ci .user = OCP_USER_MPU, 17438c2ecf20Sopenharmony_ci}; 17448c2ecf20Sopenharmony_ci 17458c2ecf20Sopenharmony_ci/* L4 CORE -> SR2 interface */ 17468c2ecf20Sopenharmony_ci 17478c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap34xx_l4_core__sr2 = { 17488c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 17498c2ecf20Sopenharmony_ci .slave = &omap34xx_sr2_hwmod, 17508c2ecf20Sopenharmony_ci .clk = "sr_l4_ick", 17518c2ecf20Sopenharmony_ci .user = OCP_USER_MPU, 17528c2ecf20Sopenharmony_ci}; 17538c2ecf20Sopenharmony_ci 17548c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap36xx_l4_core__sr2 = { 17558c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 17568c2ecf20Sopenharmony_ci .slave = &omap36xx_sr2_hwmod, 17578c2ecf20Sopenharmony_ci .clk = "sr_l4_ick", 17588c2ecf20Sopenharmony_ci .user = OCP_USER_MPU, 17598c2ecf20Sopenharmony_ci}; 17608c2ecf20Sopenharmony_ci 17618c2ecf20Sopenharmony_ci 17628c2ecf20Sopenharmony_ci/* l4_core -> usbhsotg */ 17638c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_core__usbhsotg = { 17648c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 17658c2ecf20Sopenharmony_ci .slave = &omap3xxx_usbhsotg_hwmod, 17668c2ecf20Sopenharmony_ci .clk = "l4_ick", 17678c2ecf20Sopenharmony_ci .user = OCP_USER_MPU, 17688c2ecf20Sopenharmony_ci}; 17698c2ecf20Sopenharmony_ci 17708c2ecf20Sopenharmony_ci 17718c2ecf20Sopenharmony_ci/* l4_core -> usbhsotg */ 17728c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if am35xx_l4_core__usbhsotg = { 17738c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 17748c2ecf20Sopenharmony_ci .slave = &am35xx_usbhsotg_hwmod, 17758c2ecf20Sopenharmony_ci .clk = "hsotgusb_ick", 17768c2ecf20Sopenharmony_ci .user = OCP_USER_MPU, 17778c2ecf20Sopenharmony_ci}; 17788c2ecf20Sopenharmony_ci 17798c2ecf20Sopenharmony_ci/* L4_WKUP -> L4_SEC interface */ 17808c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_wkup__l4_sec = { 17818c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_wkup_hwmod, 17828c2ecf20Sopenharmony_ci .slave = &omap3xxx_l4_sec_hwmod, 17838c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 17848c2ecf20Sopenharmony_ci}; 17858c2ecf20Sopenharmony_ci 17868c2ecf20Sopenharmony_ci/* IVA2 <- L3 interface */ 17878c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l3__iva = { 17888c2ecf20Sopenharmony_ci .master = &omap3xxx_l3_main_hwmod, 17898c2ecf20Sopenharmony_ci .slave = &omap3xxx_iva_hwmod, 17908c2ecf20Sopenharmony_ci .clk = "core_l3_ick", 17918c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 17928c2ecf20Sopenharmony_ci}; 17938c2ecf20Sopenharmony_ci 17948c2ecf20Sopenharmony_ci/* l4_per -> timer3 */ 17958c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_per__timer3 = { 17968c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_per_hwmod, 17978c2ecf20Sopenharmony_ci .slave = &omap3xxx_timer3_hwmod, 17988c2ecf20Sopenharmony_ci .clk = "gpt3_ick", 17998c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 18008c2ecf20Sopenharmony_ci}; 18018c2ecf20Sopenharmony_ci 18028c2ecf20Sopenharmony_ci 18038c2ecf20Sopenharmony_ci/* l4_per -> timer4 */ 18048c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_per__timer4 = { 18058c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_per_hwmod, 18068c2ecf20Sopenharmony_ci .slave = &omap3xxx_timer4_hwmod, 18078c2ecf20Sopenharmony_ci .clk = "gpt4_ick", 18088c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 18098c2ecf20Sopenharmony_ci}; 18108c2ecf20Sopenharmony_ci 18118c2ecf20Sopenharmony_ci 18128c2ecf20Sopenharmony_ci/* l4_per -> timer5 */ 18138c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_per__timer5 = { 18148c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_per_hwmod, 18158c2ecf20Sopenharmony_ci .slave = &omap3xxx_timer5_hwmod, 18168c2ecf20Sopenharmony_ci .clk = "gpt5_ick", 18178c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 18188c2ecf20Sopenharmony_ci}; 18198c2ecf20Sopenharmony_ci 18208c2ecf20Sopenharmony_ci 18218c2ecf20Sopenharmony_ci/* l4_per -> timer6 */ 18228c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_per__timer6 = { 18238c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_per_hwmod, 18248c2ecf20Sopenharmony_ci .slave = &omap3xxx_timer6_hwmod, 18258c2ecf20Sopenharmony_ci .clk = "gpt6_ick", 18268c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 18278c2ecf20Sopenharmony_ci}; 18288c2ecf20Sopenharmony_ci 18298c2ecf20Sopenharmony_ci 18308c2ecf20Sopenharmony_ci/* l4_per -> timer7 */ 18318c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_per__timer7 = { 18328c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_per_hwmod, 18338c2ecf20Sopenharmony_ci .slave = &omap3xxx_timer7_hwmod, 18348c2ecf20Sopenharmony_ci .clk = "gpt7_ick", 18358c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 18368c2ecf20Sopenharmony_ci}; 18378c2ecf20Sopenharmony_ci 18388c2ecf20Sopenharmony_ci 18398c2ecf20Sopenharmony_ci/* l4_per -> timer8 */ 18408c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_per__timer8 = { 18418c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_per_hwmod, 18428c2ecf20Sopenharmony_ci .slave = &omap3xxx_timer8_hwmod, 18438c2ecf20Sopenharmony_ci .clk = "gpt8_ick", 18448c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 18458c2ecf20Sopenharmony_ci}; 18468c2ecf20Sopenharmony_ci 18478c2ecf20Sopenharmony_ci 18488c2ecf20Sopenharmony_ci/* l4_per -> timer9 */ 18498c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_per__timer9 = { 18508c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_per_hwmod, 18518c2ecf20Sopenharmony_ci .slave = &omap3xxx_timer9_hwmod, 18528c2ecf20Sopenharmony_ci .clk = "gpt9_ick", 18538c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 18548c2ecf20Sopenharmony_ci}; 18558c2ecf20Sopenharmony_ci 18568c2ecf20Sopenharmony_ci/* l4_core -> timer10 */ 18578c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_core__timer10 = { 18588c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 18598c2ecf20Sopenharmony_ci .slave = &omap3xxx_timer10_hwmod, 18608c2ecf20Sopenharmony_ci .clk = "gpt10_ick", 18618c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 18628c2ecf20Sopenharmony_ci}; 18638c2ecf20Sopenharmony_ci 18648c2ecf20Sopenharmony_ci/* l4_core -> timer11 */ 18658c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_core__timer11 = { 18668c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 18678c2ecf20Sopenharmony_ci .slave = &omap3xxx_timer11_hwmod, 18688c2ecf20Sopenharmony_ci .clk = "gpt11_ick", 18698c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 18708c2ecf20Sopenharmony_ci}; 18718c2ecf20Sopenharmony_ci 18728c2ecf20Sopenharmony_ci/* l4_wkup -> wd_timer2 */ 18738c2ecf20Sopenharmony_ci 18748c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_wkup__wd_timer2 = { 18758c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_wkup_hwmod, 18768c2ecf20Sopenharmony_ci .slave = &omap3xxx_wd_timer2_hwmod, 18778c2ecf20Sopenharmony_ci .clk = "wdt2_ick", 18788c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 18798c2ecf20Sopenharmony_ci}; 18808c2ecf20Sopenharmony_ci 18818c2ecf20Sopenharmony_ci/* l4_core -> dss */ 18828c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3430es1_l4_core__dss = { 18838c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 18848c2ecf20Sopenharmony_ci .slave = &omap3430es1_dss_core_hwmod, 18858c2ecf20Sopenharmony_ci .clk = "dss_ick", 18868c2ecf20Sopenharmony_ci .fw = { 18878c2ecf20Sopenharmony_ci .omap2 = { 18888c2ecf20Sopenharmony_ci .l4_fw_region = OMAP3ES1_L4_CORE_FW_DSS_CORE_REGION, 18898c2ecf20Sopenharmony_ci .l4_prot_group = OMAP3_L4_CORE_FW_DSS_PROT_GROUP, 18908c2ecf20Sopenharmony_ci .flags = OMAP_FIREWALL_L4, 18918c2ecf20Sopenharmony_ci }, 18928c2ecf20Sopenharmony_ci }, 18938c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 18948c2ecf20Sopenharmony_ci}; 18958c2ecf20Sopenharmony_ci 18968c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_core__dss = { 18978c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 18988c2ecf20Sopenharmony_ci .slave = &omap3xxx_dss_core_hwmod, 18998c2ecf20Sopenharmony_ci .clk = "dss_ick", 19008c2ecf20Sopenharmony_ci .fw = { 19018c2ecf20Sopenharmony_ci .omap2 = { 19028c2ecf20Sopenharmony_ci .l4_fw_region = OMAP3_L4_CORE_FW_DSS_CORE_REGION, 19038c2ecf20Sopenharmony_ci .l4_prot_group = OMAP3_L4_CORE_FW_DSS_PROT_GROUP, 19048c2ecf20Sopenharmony_ci .flags = OMAP_FIREWALL_L4, 19058c2ecf20Sopenharmony_ci }, 19068c2ecf20Sopenharmony_ci }, 19078c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 19088c2ecf20Sopenharmony_ci}; 19098c2ecf20Sopenharmony_ci 19108c2ecf20Sopenharmony_ci/* l4_core -> dss_dispc */ 19118c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_dispc = { 19128c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 19138c2ecf20Sopenharmony_ci .slave = &omap3xxx_dss_dispc_hwmod, 19148c2ecf20Sopenharmony_ci .clk = "dss_ick", 19158c2ecf20Sopenharmony_ci .fw = { 19168c2ecf20Sopenharmony_ci .omap2 = { 19178c2ecf20Sopenharmony_ci .l4_fw_region = OMAP3_L4_CORE_FW_DSS_DISPC_REGION, 19188c2ecf20Sopenharmony_ci .l4_prot_group = OMAP3_L4_CORE_FW_DSS_PROT_GROUP, 19198c2ecf20Sopenharmony_ci .flags = OMAP_FIREWALL_L4, 19208c2ecf20Sopenharmony_ci }, 19218c2ecf20Sopenharmony_ci }, 19228c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 19238c2ecf20Sopenharmony_ci}; 19248c2ecf20Sopenharmony_ci 19258c2ecf20Sopenharmony_ci/* l4_core -> dss_dsi1 */ 19268c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_dsi1 = { 19278c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 19288c2ecf20Sopenharmony_ci .slave = &omap3xxx_dss_dsi1_hwmod, 19298c2ecf20Sopenharmony_ci .clk = "dss_ick", 19308c2ecf20Sopenharmony_ci .fw = { 19318c2ecf20Sopenharmony_ci .omap2 = { 19328c2ecf20Sopenharmony_ci .l4_fw_region = OMAP3_L4_CORE_FW_DSS_DSI_REGION, 19338c2ecf20Sopenharmony_ci .l4_prot_group = OMAP3_L4_CORE_FW_DSS_PROT_GROUP, 19348c2ecf20Sopenharmony_ci .flags = OMAP_FIREWALL_L4, 19358c2ecf20Sopenharmony_ci }, 19368c2ecf20Sopenharmony_ci }, 19378c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 19388c2ecf20Sopenharmony_ci}; 19398c2ecf20Sopenharmony_ci 19408c2ecf20Sopenharmony_ci/* l4_core -> dss_rfbi */ 19418c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_rfbi = { 19428c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 19438c2ecf20Sopenharmony_ci .slave = &omap3xxx_dss_rfbi_hwmod, 19448c2ecf20Sopenharmony_ci .clk = "dss_ick", 19458c2ecf20Sopenharmony_ci .fw = { 19468c2ecf20Sopenharmony_ci .omap2 = { 19478c2ecf20Sopenharmony_ci .l4_fw_region = OMAP3_L4_CORE_FW_DSS_RFBI_REGION, 19488c2ecf20Sopenharmony_ci .l4_prot_group = OMAP3_L4_CORE_FW_DSS_PROT_GROUP , 19498c2ecf20Sopenharmony_ci .flags = OMAP_FIREWALL_L4, 19508c2ecf20Sopenharmony_ci }, 19518c2ecf20Sopenharmony_ci }, 19528c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 19538c2ecf20Sopenharmony_ci}; 19548c2ecf20Sopenharmony_ci 19558c2ecf20Sopenharmony_ci/* l4_core -> dss_venc */ 19568c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_venc = { 19578c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 19588c2ecf20Sopenharmony_ci .slave = &omap3xxx_dss_venc_hwmod, 19598c2ecf20Sopenharmony_ci .clk = "dss_ick", 19608c2ecf20Sopenharmony_ci .fw = { 19618c2ecf20Sopenharmony_ci .omap2 = { 19628c2ecf20Sopenharmony_ci .l4_fw_region = OMAP3_L4_CORE_FW_DSS_VENC_REGION, 19638c2ecf20Sopenharmony_ci .l4_prot_group = OMAP3_L4_CORE_FW_DSS_PROT_GROUP, 19648c2ecf20Sopenharmony_ci .flags = OMAP_FIREWALL_L4, 19658c2ecf20Sopenharmony_ci }, 19668c2ecf20Sopenharmony_ci }, 19678c2ecf20Sopenharmony_ci .flags = OCPIF_SWSUP_IDLE, 19688c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 19698c2ecf20Sopenharmony_ci}; 19708c2ecf20Sopenharmony_ci 19718c2ecf20Sopenharmony_ci/* l4_wkup -> gpio1 */ 19728c2ecf20Sopenharmony_ci 19738c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_wkup__gpio1 = { 19748c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_wkup_hwmod, 19758c2ecf20Sopenharmony_ci .slave = &omap3xxx_gpio1_hwmod, 19768c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 19778c2ecf20Sopenharmony_ci}; 19788c2ecf20Sopenharmony_ci 19798c2ecf20Sopenharmony_ci/* l4_per -> gpio2 */ 19808c2ecf20Sopenharmony_ci 19818c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_per__gpio2 = { 19828c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_per_hwmod, 19838c2ecf20Sopenharmony_ci .slave = &omap3xxx_gpio2_hwmod, 19848c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 19858c2ecf20Sopenharmony_ci}; 19868c2ecf20Sopenharmony_ci 19878c2ecf20Sopenharmony_ci/* l4_per -> gpio3 */ 19888c2ecf20Sopenharmony_ci 19898c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_per__gpio3 = { 19908c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_per_hwmod, 19918c2ecf20Sopenharmony_ci .slave = &omap3xxx_gpio3_hwmod, 19928c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 19938c2ecf20Sopenharmony_ci}; 19948c2ecf20Sopenharmony_ci 19958c2ecf20Sopenharmony_ci/* 19968c2ecf20Sopenharmony_ci * 'mmu' class 19978c2ecf20Sopenharmony_ci * The memory management unit performs virtual to physical address translation 19988c2ecf20Sopenharmony_ci * for its requestors. 19998c2ecf20Sopenharmony_ci */ 20008c2ecf20Sopenharmony_ci 20018c2ecf20Sopenharmony_cistatic struct omap_hwmod_class_sysconfig mmu_sysc = { 20028c2ecf20Sopenharmony_ci .rev_offs = 0x000, 20038c2ecf20Sopenharmony_ci .sysc_offs = 0x010, 20048c2ecf20Sopenharmony_ci .syss_offs = 0x014, 20058c2ecf20Sopenharmony_ci .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE | 20068c2ecf20Sopenharmony_ci SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE), 20078c2ecf20Sopenharmony_ci .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), 20088c2ecf20Sopenharmony_ci .sysc_fields = &omap_hwmod_sysc_type1, 20098c2ecf20Sopenharmony_ci}; 20108c2ecf20Sopenharmony_ci 20118c2ecf20Sopenharmony_cistatic struct omap_hwmod_class omap3xxx_mmu_hwmod_class = { 20128c2ecf20Sopenharmony_ci .name = "mmu", 20138c2ecf20Sopenharmony_ci .sysc = &mmu_sysc, 20148c2ecf20Sopenharmony_ci}; 20158c2ecf20Sopenharmony_ci 20168c2ecf20Sopenharmony_ci/* mmu isp */ 20178c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_mmu_isp_hwmod; 20188c2ecf20Sopenharmony_ci 20198c2ecf20Sopenharmony_ci/* l4_core -> mmu isp */ 20208c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_core__mmu_isp = { 20218c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 20228c2ecf20Sopenharmony_ci .slave = &omap3xxx_mmu_isp_hwmod, 20238c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 20248c2ecf20Sopenharmony_ci}; 20258c2ecf20Sopenharmony_ci 20268c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_mmu_isp_hwmod = { 20278c2ecf20Sopenharmony_ci .name = "mmu_isp", 20288c2ecf20Sopenharmony_ci .class = &omap3xxx_mmu_hwmod_class, 20298c2ecf20Sopenharmony_ci .main_clk = "cam_ick", 20308c2ecf20Sopenharmony_ci .flags = HWMOD_NO_IDLEST, 20318c2ecf20Sopenharmony_ci}; 20328c2ecf20Sopenharmony_ci 20338c2ecf20Sopenharmony_ci/* mmu iva */ 20348c2ecf20Sopenharmony_ci 20358c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_mmu_iva_hwmod; 20368c2ecf20Sopenharmony_ci 20378c2ecf20Sopenharmony_cistatic struct omap_hwmod_rst_info omap3xxx_mmu_iva_resets[] = { 20388c2ecf20Sopenharmony_ci { .name = "mmu", .rst_shift = 1, .st_shift = 9 }, 20398c2ecf20Sopenharmony_ci}; 20408c2ecf20Sopenharmony_ci 20418c2ecf20Sopenharmony_ci/* l3_main -> iva mmu */ 20428c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l3_main__mmu_iva = { 20438c2ecf20Sopenharmony_ci .master = &omap3xxx_l3_main_hwmod, 20448c2ecf20Sopenharmony_ci .slave = &omap3xxx_mmu_iva_hwmod, 20458c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 20468c2ecf20Sopenharmony_ci}; 20478c2ecf20Sopenharmony_ci 20488c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_mmu_iva_hwmod = { 20498c2ecf20Sopenharmony_ci .name = "mmu_iva", 20508c2ecf20Sopenharmony_ci .class = &omap3xxx_mmu_hwmod_class, 20518c2ecf20Sopenharmony_ci .clkdm_name = "iva2_clkdm", 20528c2ecf20Sopenharmony_ci .rst_lines = omap3xxx_mmu_iva_resets, 20538c2ecf20Sopenharmony_ci .rst_lines_cnt = ARRAY_SIZE(omap3xxx_mmu_iva_resets), 20548c2ecf20Sopenharmony_ci .main_clk = "iva2_ck", 20558c2ecf20Sopenharmony_ci .prcm = { 20568c2ecf20Sopenharmony_ci .omap2 = { 20578c2ecf20Sopenharmony_ci .module_offs = OMAP3430_IVA2_MOD, 20588c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 20598c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_IVA2_SHIFT, 20608c2ecf20Sopenharmony_ci }, 20618c2ecf20Sopenharmony_ci }, 20628c2ecf20Sopenharmony_ci .flags = HWMOD_NO_IDLEST, 20638c2ecf20Sopenharmony_ci}; 20648c2ecf20Sopenharmony_ci 20658c2ecf20Sopenharmony_ci/* l4_per -> gpio4 */ 20668c2ecf20Sopenharmony_ci 20678c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_per__gpio4 = { 20688c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_per_hwmod, 20698c2ecf20Sopenharmony_ci .slave = &omap3xxx_gpio4_hwmod, 20708c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 20718c2ecf20Sopenharmony_ci}; 20728c2ecf20Sopenharmony_ci 20738c2ecf20Sopenharmony_ci/* l4_per -> gpio5 */ 20748c2ecf20Sopenharmony_ci 20758c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_per__gpio5 = { 20768c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_per_hwmod, 20778c2ecf20Sopenharmony_ci .slave = &omap3xxx_gpio5_hwmod, 20788c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 20798c2ecf20Sopenharmony_ci}; 20808c2ecf20Sopenharmony_ci 20818c2ecf20Sopenharmony_ci/* l4_per -> gpio6 */ 20828c2ecf20Sopenharmony_ci 20838c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_per__gpio6 = { 20848c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_per_hwmod, 20858c2ecf20Sopenharmony_ci .slave = &omap3xxx_gpio6_hwmod, 20868c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 20878c2ecf20Sopenharmony_ci}; 20888c2ecf20Sopenharmony_ci 20898c2ecf20Sopenharmony_ci/* l4_core -> mcbsp1 */ 20908c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_core__mcbsp1 = { 20918c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 20928c2ecf20Sopenharmony_ci .slave = &omap3xxx_mcbsp1_hwmod, 20938c2ecf20Sopenharmony_ci .clk = "mcbsp1_ick", 20948c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 20958c2ecf20Sopenharmony_ci}; 20968c2ecf20Sopenharmony_ci 20978c2ecf20Sopenharmony_ci 20988c2ecf20Sopenharmony_ci/* l4_per -> mcbsp2 */ 20998c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_per__mcbsp2 = { 21008c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_per_hwmod, 21018c2ecf20Sopenharmony_ci .slave = &omap3xxx_mcbsp2_hwmod, 21028c2ecf20Sopenharmony_ci .clk = "mcbsp2_ick", 21038c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 21048c2ecf20Sopenharmony_ci}; 21058c2ecf20Sopenharmony_ci 21068c2ecf20Sopenharmony_ci 21078c2ecf20Sopenharmony_ci/* l4_per -> mcbsp3 */ 21088c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_per__mcbsp3 = { 21098c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_per_hwmod, 21108c2ecf20Sopenharmony_ci .slave = &omap3xxx_mcbsp3_hwmod, 21118c2ecf20Sopenharmony_ci .clk = "mcbsp3_ick", 21128c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 21138c2ecf20Sopenharmony_ci}; 21148c2ecf20Sopenharmony_ci 21158c2ecf20Sopenharmony_ci 21168c2ecf20Sopenharmony_ci/* l4_per -> mcbsp4 */ 21178c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_per__mcbsp4 = { 21188c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_per_hwmod, 21198c2ecf20Sopenharmony_ci .slave = &omap3xxx_mcbsp4_hwmod, 21208c2ecf20Sopenharmony_ci .clk = "mcbsp4_ick", 21218c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 21228c2ecf20Sopenharmony_ci}; 21238c2ecf20Sopenharmony_ci 21248c2ecf20Sopenharmony_ci 21258c2ecf20Sopenharmony_ci/* l4_core -> mcbsp5 */ 21268c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_core__mcbsp5 = { 21278c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 21288c2ecf20Sopenharmony_ci .slave = &omap3xxx_mcbsp5_hwmod, 21298c2ecf20Sopenharmony_ci .clk = "mcbsp5_ick", 21308c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 21318c2ecf20Sopenharmony_ci}; 21328c2ecf20Sopenharmony_ci 21338c2ecf20Sopenharmony_ci 21348c2ecf20Sopenharmony_ci/* l4_per -> mcbsp2_sidetone */ 21358c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_per__mcbsp2_sidetone = { 21368c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_per_hwmod, 21378c2ecf20Sopenharmony_ci .slave = &omap3xxx_mcbsp2_sidetone_hwmod, 21388c2ecf20Sopenharmony_ci .clk = "mcbsp2_ick", 21398c2ecf20Sopenharmony_ci .user = OCP_USER_MPU, 21408c2ecf20Sopenharmony_ci}; 21418c2ecf20Sopenharmony_ci 21428c2ecf20Sopenharmony_ci 21438c2ecf20Sopenharmony_ci/* l4_per -> mcbsp3_sidetone */ 21448c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_per__mcbsp3_sidetone = { 21458c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_per_hwmod, 21468c2ecf20Sopenharmony_ci .slave = &omap3xxx_mcbsp3_sidetone_hwmod, 21478c2ecf20Sopenharmony_ci .clk = "mcbsp3_ick", 21488c2ecf20Sopenharmony_ci .user = OCP_USER_MPU, 21498c2ecf20Sopenharmony_ci}; 21508c2ecf20Sopenharmony_ci 21518c2ecf20Sopenharmony_ci/* l4_core -> mailbox */ 21528c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_core__mailbox = { 21538c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 21548c2ecf20Sopenharmony_ci .slave = &omap3xxx_mailbox_hwmod, 21558c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 21568c2ecf20Sopenharmony_ci}; 21578c2ecf20Sopenharmony_ci 21588c2ecf20Sopenharmony_ci/* l4 core -> mcspi1 interface */ 21598c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap34xx_l4_core__mcspi1 = { 21608c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 21618c2ecf20Sopenharmony_ci .slave = &omap34xx_mcspi1, 21628c2ecf20Sopenharmony_ci .clk = "mcspi1_ick", 21638c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 21648c2ecf20Sopenharmony_ci}; 21658c2ecf20Sopenharmony_ci 21668c2ecf20Sopenharmony_ci/* l4 core -> mcspi2 interface */ 21678c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap34xx_l4_core__mcspi2 = { 21688c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 21698c2ecf20Sopenharmony_ci .slave = &omap34xx_mcspi2, 21708c2ecf20Sopenharmony_ci .clk = "mcspi2_ick", 21718c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 21728c2ecf20Sopenharmony_ci}; 21738c2ecf20Sopenharmony_ci 21748c2ecf20Sopenharmony_ci/* l4 core -> mcspi3 interface */ 21758c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap34xx_l4_core__mcspi3 = { 21768c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 21778c2ecf20Sopenharmony_ci .slave = &omap34xx_mcspi3, 21788c2ecf20Sopenharmony_ci .clk = "mcspi3_ick", 21798c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 21808c2ecf20Sopenharmony_ci}; 21818c2ecf20Sopenharmony_ci 21828c2ecf20Sopenharmony_ci/* l4 core -> mcspi4 interface */ 21838c2ecf20Sopenharmony_ci 21848c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap34xx_l4_core__mcspi4 = { 21858c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 21868c2ecf20Sopenharmony_ci .slave = &omap34xx_mcspi4, 21878c2ecf20Sopenharmony_ci .clk = "mcspi4_ick", 21888c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 21898c2ecf20Sopenharmony_ci}; 21908c2ecf20Sopenharmony_ci 21918c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_usb_host_hs__l3_main_2 = { 21928c2ecf20Sopenharmony_ci .master = &omap3xxx_usb_host_hs_hwmod, 21938c2ecf20Sopenharmony_ci .slave = &omap3xxx_l3_main_hwmod, 21948c2ecf20Sopenharmony_ci .clk = "core_l3_ick", 21958c2ecf20Sopenharmony_ci .user = OCP_USER_MPU, 21968c2ecf20Sopenharmony_ci}; 21978c2ecf20Sopenharmony_ci 21988c2ecf20Sopenharmony_ci 21998c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_core__usb_host_hs = { 22008c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 22018c2ecf20Sopenharmony_ci .slave = &omap3xxx_usb_host_hs_hwmod, 22028c2ecf20Sopenharmony_ci .clk = "usbhost_ick", 22038c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 22048c2ecf20Sopenharmony_ci}; 22058c2ecf20Sopenharmony_ci 22068c2ecf20Sopenharmony_ci 22078c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_core__usb_tll_hs = { 22088c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 22098c2ecf20Sopenharmony_ci .slave = &omap3xxx_usb_tll_hs_hwmod, 22108c2ecf20Sopenharmony_ci .clk = "usbtll_ick", 22118c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 22128c2ecf20Sopenharmony_ci}; 22138c2ecf20Sopenharmony_ci 22148c2ecf20Sopenharmony_ci/* l4_core -> hdq1w interface */ 22158c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_core__hdq1w = { 22168c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 22178c2ecf20Sopenharmony_ci .slave = &omap3xxx_hdq1w_hwmod, 22188c2ecf20Sopenharmony_ci .clk = "hdq_ick", 22198c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 22208c2ecf20Sopenharmony_ci .flags = OMAP_FIREWALL_L4 | OCPIF_SWSUP_IDLE, 22218c2ecf20Sopenharmony_ci}; 22228c2ecf20Sopenharmony_ci 22238c2ecf20Sopenharmony_ci/* am35xx has Davinci MDIO & EMAC */ 22248c2ecf20Sopenharmony_cistatic struct omap_hwmod_class am35xx_mdio_class = { 22258c2ecf20Sopenharmony_ci .name = "davinci_mdio", 22268c2ecf20Sopenharmony_ci}; 22278c2ecf20Sopenharmony_ci 22288c2ecf20Sopenharmony_cistatic struct omap_hwmod am35xx_mdio_hwmod = { 22298c2ecf20Sopenharmony_ci .name = "davinci_mdio", 22308c2ecf20Sopenharmony_ci .class = &am35xx_mdio_class, 22318c2ecf20Sopenharmony_ci .flags = HWMOD_NO_IDLEST, 22328c2ecf20Sopenharmony_ci}; 22338c2ecf20Sopenharmony_ci 22348c2ecf20Sopenharmony_ci/* 22358c2ecf20Sopenharmony_ci * XXX Should be connected to an IPSS hwmod, not the L3 directly; 22368c2ecf20Sopenharmony_ci * but this will probably require some additional hwmod core support, 22378c2ecf20Sopenharmony_ci * so is left as a future to-do item. 22388c2ecf20Sopenharmony_ci */ 22398c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if am35xx_mdio__l3 = { 22408c2ecf20Sopenharmony_ci .master = &am35xx_mdio_hwmod, 22418c2ecf20Sopenharmony_ci .slave = &omap3xxx_l3_main_hwmod, 22428c2ecf20Sopenharmony_ci .clk = "emac_fck", 22438c2ecf20Sopenharmony_ci .user = OCP_USER_MPU, 22448c2ecf20Sopenharmony_ci}; 22458c2ecf20Sopenharmony_ci 22468c2ecf20Sopenharmony_ci/* l4_core -> davinci mdio */ 22478c2ecf20Sopenharmony_ci/* 22488c2ecf20Sopenharmony_ci * XXX Should be connected to an IPSS hwmod, not the L4_CORE directly; 22498c2ecf20Sopenharmony_ci * but this will probably require some additional hwmod core support, 22508c2ecf20Sopenharmony_ci * so is left as a future to-do item. 22518c2ecf20Sopenharmony_ci */ 22528c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if am35xx_l4_core__mdio = { 22538c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 22548c2ecf20Sopenharmony_ci .slave = &am35xx_mdio_hwmod, 22558c2ecf20Sopenharmony_ci .clk = "emac_fck", 22568c2ecf20Sopenharmony_ci .user = OCP_USER_MPU, 22578c2ecf20Sopenharmony_ci}; 22588c2ecf20Sopenharmony_ci 22598c2ecf20Sopenharmony_cistatic struct omap_hwmod_class am35xx_emac_class = { 22608c2ecf20Sopenharmony_ci .name = "davinci_emac", 22618c2ecf20Sopenharmony_ci}; 22628c2ecf20Sopenharmony_ci 22638c2ecf20Sopenharmony_cistatic struct omap_hwmod am35xx_emac_hwmod = { 22648c2ecf20Sopenharmony_ci .name = "davinci_emac", 22658c2ecf20Sopenharmony_ci .class = &am35xx_emac_class, 22668c2ecf20Sopenharmony_ci /* 22678c2ecf20Sopenharmony_ci * According to Mark Greer, the MPU will not return from WFI 22688c2ecf20Sopenharmony_ci * when the EMAC signals an interrupt. 22698c2ecf20Sopenharmony_ci * http://www.spinics.net/lists/arm-kernel/msg174734.html 22708c2ecf20Sopenharmony_ci */ 22718c2ecf20Sopenharmony_ci .flags = (HWMOD_NO_IDLEST | HWMOD_BLOCK_WFI), 22728c2ecf20Sopenharmony_ci}; 22738c2ecf20Sopenharmony_ci 22748c2ecf20Sopenharmony_ci/* l3_core -> davinci emac interface */ 22758c2ecf20Sopenharmony_ci/* 22768c2ecf20Sopenharmony_ci * XXX Should be connected to an IPSS hwmod, not the L3 directly; 22778c2ecf20Sopenharmony_ci * but this will probably require some additional hwmod core support, 22788c2ecf20Sopenharmony_ci * so is left as a future to-do item. 22798c2ecf20Sopenharmony_ci */ 22808c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if am35xx_emac__l3 = { 22818c2ecf20Sopenharmony_ci .master = &am35xx_emac_hwmod, 22828c2ecf20Sopenharmony_ci .slave = &omap3xxx_l3_main_hwmod, 22838c2ecf20Sopenharmony_ci .clk = "emac_ick", 22848c2ecf20Sopenharmony_ci .user = OCP_USER_MPU, 22858c2ecf20Sopenharmony_ci}; 22868c2ecf20Sopenharmony_ci 22878c2ecf20Sopenharmony_ci/* l4_core -> davinci emac */ 22888c2ecf20Sopenharmony_ci/* 22898c2ecf20Sopenharmony_ci * XXX Should be connected to an IPSS hwmod, not the L4_CORE directly; 22908c2ecf20Sopenharmony_ci * but this will probably require some additional hwmod core support, 22918c2ecf20Sopenharmony_ci * so is left as a future to-do item. 22928c2ecf20Sopenharmony_ci */ 22938c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if am35xx_l4_core__emac = { 22948c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 22958c2ecf20Sopenharmony_ci .slave = &am35xx_emac_hwmod, 22968c2ecf20Sopenharmony_ci .clk = "emac_ick", 22978c2ecf20Sopenharmony_ci .user = OCP_USER_MPU, 22988c2ecf20Sopenharmony_ci}; 22998c2ecf20Sopenharmony_ci 23008c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l3_main__gpmc = { 23018c2ecf20Sopenharmony_ci .master = &omap3xxx_l3_main_hwmod, 23028c2ecf20Sopenharmony_ci .slave = &omap3xxx_gpmc_hwmod, 23038c2ecf20Sopenharmony_ci .clk = "core_l3_ick", 23048c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 23058c2ecf20Sopenharmony_ci}; 23068c2ecf20Sopenharmony_ci 23078c2ecf20Sopenharmony_ci/* l4_core -> SHAM2 (SHA1/MD5) (similar to omap24xx) */ 23088c2ecf20Sopenharmony_cistatic struct omap_hwmod_class_sysconfig omap3_sham_sysc = { 23098c2ecf20Sopenharmony_ci .rev_offs = 0x5c, 23108c2ecf20Sopenharmony_ci .sysc_offs = 0x60, 23118c2ecf20Sopenharmony_ci .syss_offs = 0x64, 23128c2ecf20Sopenharmony_ci .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET | 23138c2ecf20Sopenharmony_ci SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS), 23148c2ecf20Sopenharmony_ci .sysc_fields = &omap3_sham_sysc_fields, 23158c2ecf20Sopenharmony_ci}; 23168c2ecf20Sopenharmony_ci 23178c2ecf20Sopenharmony_cistatic struct omap_hwmod_class omap3xxx_sham_class = { 23188c2ecf20Sopenharmony_ci .name = "sham", 23198c2ecf20Sopenharmony_ci .sysc = &omap3_sham_sysc, 23208c2ecf20Sopenharmony_ci}; 23218c2ecf20Sopenharmony_ci 23228c2ecf20Sopenharmony_ci 23238c2ecf20Sopenharmony_ci 23248c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_sham_hwmod = { 23258c2ecf20Sopenharmony_ci .name = "sham", 23268c2ecf20Sopenharmony_ci .main_clk = "sha12_ick", 23278c2ecf20Sopenharmony_ci .prcm = { 23288c2ecf20Sopenharmony_ci .omap2 = { 23298c2ecf20Sopenharmony_ci .module_offs = CORE_MOD, 23308c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 23318c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430_ST_SHA12_SHIFT, 23328c2ecf20Sopenharmony_ci }, 23338c2ecf20Sopenharmony_ci }, 23348c2ecf20Sopenharmony_ci .class = &omap3xxx_sham_class, 23358c2ecf20Sopenharmony_ci}; 23368c2ecf20Sopenharmony_ci 23378c2ecf20Sopenharmony_ci 23388c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_core__sham = { 23398c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 23408c2ecf20Sopenharmony_ci .slave = &omap3xxx_sham_hwmod, 23418c2ecf20Sopenharmony_ci .clk = "sha12_ick", 23428c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 23438c2ecf20Sopenharmony_ci}; 23448c2ecf20Sopenharmony_ci 23458c2ecf20Sopenharmony_ci/* 23468c2ecf20Sopenharmony_ci * 'ssi' class 23478c2ecf20Sopenharmony_ci * synchronous serial interface (multichannel and full-duplex serial if) 23488c2ecf20Sopenharmony_ci */ 23498c2ecf20Sopenharmony_ci 23508c2ecf20Sopenharmony_cistatic struct omap_hwmod_class_sysconfig omap34xx_ssi_sysc = { 23518c2ecf20Sopenharmony_ci .rev_offs = 0x0000, 23528c2ecf20Sopenharmony_ci .sysc_offs = 0x0010, 23538c2ecf20Sopenharmony_ci .syss_offs = 0x0014, 23548c2ecf20Sopenharmony_ci .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_MIDLEMODE | 23558c2ecf20Sopenharmony_ci SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET), 23568c2ecf20Sopenharmony_ci .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), 23578c2ecf20Sopenharmony_ci .sysc_fields = &omap_hwmod_sysc_type1, 23588c2ecf20Sopenharmony_ci}; 23598c2ecf20Sopenharmony_ci 23608c2ecf20Sopenharmony_cistatic struct omap_hwmod_class omap3xxx_ssi_hwmod_class = { 23618c2ecf20Sopenharmony_ci .name = "ssi", 23628c2ecf20Sopenharmony_ci .sysc = &omap34xx_ssi_sysc, 23638c2ecf20Sopenharmony_ci}; 23648c2ecf20Sopenharmony_ci 23658c2ecf20Sopenharmony_cistatic struct omap_hwmod omap3xxx_ssi_hwmod = { 23668c2ecf20Sopenharmony_ci .name = "ssi", 23678c2ecf20Sopenharmony_ci .class = &omap3xxx_ssi_hwmod_class, 23688c2ecf20Sopenharmony_ci .clkdm_name = "core_l4_clkdm", 23698c2ecf20Sopenharmony_ci .main_clk = "ssi_ssr_fck", 23708c2ecf20Sopenharmony_ci .prcm = { 23718c2ecf20Sopenharmony_ci .omap2 = { 23728c2ecf20Sopenharmony_ci .module_offs = CORE_MOD, 23738c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 23748c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP3430ES2_ST_SSI_IDLE_SHIFT, 23758c2ecf20Sopenharmony_ci }, 23768c2ecf20Sopenharmony_ci }, 23778c2ecf20Sopenharmony_ci}; 23788c2ecf20Sopenharmony_ci 23798c2ecf20Sopenharmony_ci/* L4 CORE -> SSI */ 23808c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap3xxx_l4_core__ssi = { 23818c2ecf20Sopenharmony_ci .master = &omap3xxx_l4_core_hwmod, 23828c2ecf20Sopenharmony_ci .slave = &omap3xxx_ssi_hwmod, 23838c2ecf20Sopenharmony_ci .clk = "ssi_ick", 23848c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 23858c2ecf20Sopenharmony_ci}; 23868c2ecf20Sopenharmony_ci 23878c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if *omap3xxx_hwmod_ocp_ifs[] __initdata = { 23888c2ecf20Sopenharmony_ci &omap3xxx_l3_main__l4_core, 23898c2ecf20Sopenharmony_ci &omap3xxx_l3_main__l4_per, 23908c2ecf20Sopenharmony_ci &omap3xxx_mpu__l3_main, 23918c2ecf20Sopenharmony_ci &omap3xxx_l3_main__l4_debugss, 23928c2ecf20Sopenharmony_ci &omap3xxx_l4_core__l4_wkup, 23938c2ecf20Sopenharmony_ci &omap3xxx_l4_core__mmc3, 23948c2ecf20Sopenharmony_ci &omap3_l4_core__uart1, 23958c2ecf20Sopenharmony_ci &omap3_l4_core__uart2, 23968c2ecf20Sopenharmony_ci &omap3_l4_per__uart3, 23978c2ecf20Sopenharmony_ci &omap3_l4_core__i2c1, 23988c2ecf20Sopenharmony_ci &omap3_l4_core__i2c2, 23998c2ecf20Sopenharmony_ci &omap3_l4_core__i2c3, 24008c2ecf20Sopenharmony_ci &omap3xxx_l4_wkup__l4_sec, 24018c2ecf20Sopenharmony_ci &omap3xxx_l4_per__timer3, 24028c2ecf20Sopenharmony_ci &omap3xxx_l4_per__timer4, 24038c2ecf20Sopenharmony_ci &omap3xxx_l4_per__timer5, 24048c2ecf20Sopenharmony_ci &omap3xxx_l4_per__timer6, 24058c2ecf20Sopenharmony_ci &omap3xxx_l4_per__timer7, 24068c2ecf20Sopenharmony_ci &omap3xxx_l4_per__timer8, 24078c2ecf20Sopenharmony_ci &omap3xxx_l4_per__timer9, 24088c2ecf20Sopenharmony_ci &omap3xxx_l4_core__timer10, 24098c2ecf20Sopenharmony_ci &omap3xxx_l4_core__timer11, 24108c2ecf20Sopenharmony_ci &omap3xxx_l4_wkup__wd_timer2, 24118c2ecf20Sopenharmony_ci &omap3xxx_l4_wkup__gpio1, 24128c2ecf20Sopenharmony_ci &omap3xxx_l4_per__gpio2, 24138c2ecf20Sopenharmony_ci &omap3xxx_l4_per__gpio3, 24148c2ecf20Sopenharmony_ci &omap3xxx_l4_per__gpio4, 24158c2ecf20Sopenharmony_ci &omap3xxx_l4_per__gpio5, 24168c2ecf20Sopenharmony_ci &omap3xxx_l4_per__gpio6, 24178c2ecf20Sopenharmony_ci &omap3xxx_l4_core__mcbsp1, 24188c2ecf20Sopenharmony_ci &omap3xxx_l4_per__mcbsp2, 24198c2ecf20Sopenharmony_ci &omap3xxx_l4_per__mcbsp3, 24208c2ecf20Sopenharmony_ci &omap3xxx_l4_per__mcbsp4, 24218c2ecf20Sopenharmony_ci &omap3xxx_l4_core__mcbsp5, 24228c2ecf20Sopenharmony_ci &omap3xxx_l4_per__mcbsp2_sidetone, 24238c2ecf20Sopenharmony_ci &omap3xxx_l4_per__mcbsp3_sidetone, 24248c2ecf20Sopenharmony_ci &omap34xx_l4_core__mcspi1, 24258c2ecf20Sopenharmony_ci &omap34xx_l4_core__mcspi2, 24268c2ecf20Sopenharmony_ci &omap34xx_l4_core__mcspi3, 24278c2ecf20Sopenharmony_ci &omap34xx_l4_core__mcspi4, 24288c2ecf20Sopenharmony_ci &omap3xxx_l3_main__gpmc, 24298c2ecf20Sopenharmony_ci NULL, 24308c2ecf20Sopenharmony_ci}; 24318c2ecf20Sopenharmony_ci 24328c2ecf20Sopenharmony_ci/* crypto hwmod links */ 24338c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if *omap34xx_sham_hwmod_ocp_ifs[] __initdata = { 24348c2ecf20Sopenharmony_ci &omap3xxx_l4_core__sham, 24358c2ecf20Sopenharmony_ci NULL, 24368c2ecf20Sopenharmony_ci}; 24378c2ecf20Sopenharmony_ci 24388c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if *omap36xx_sham_hwmod_ocp_ifs[] __initdata = { 24398c2ecf20Sopenharmony_ci &omap3xxx_l4_core__sham, 24408c2ecf20Sopenharmony_ci NULL 24418c2ecf20Sopenharmony_ci}; 24428c2ecf20Sopenharmony_ci 24438c2ecf20Sopenharmony_ci 24448c2ecf20Sopenharmony_ci/* 24458c2ecf20Sopenharmony_ci * Apparently the SHA/MD5 and AES accelerator IP blocks are 24468c2ecf20Sopenharmony_ci * only present on some AM35xx chips, and no one knows which 24478c2ecf20Sopenharmony_ci * ones. See 24488c2ecf20Sopenharmony_ci * http://www.spinics.net/lists/arm-kernel/msg215466.html So 24498c2ecf20Sopenharmony_ci * if you need these IP blocks on an AM35xx, try uncommenting 24508c2ecf20Sopenharmony_ci * the following lines. 24518c2ecf20Sopenharmony_ci */ 24528c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if *am35xx_sham_hwmod_ocp_ifs[] __initdata = { 24538c2ecf20Sopenharmony_ci /* &omap3xxx_l4_core__sham, */ 24548c2ecf20Sopenharmony_ci NULL 24558c2ecf20Sopenharmony_ci}; 24568c2ecf20Sopenharmony_ci 24578c2ecf20Sopenharmony_ci/* 3430ES1-only hwmod links */ 24588c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if *omap3430es1_hwmod_ocp_ifs[] __initdata = { 24598c2ecf20Sopenharmony_ci &omap3430es1_dss__l3, 24608c2ecf20Sopenharmony_ci &omap3430es1_l4_core__dss, 24618c2ecf20Sopenharmony_ci NULL, 24628c2ecf20Sopenharmony_ci}; 24638c2ecf20Sopenharmony_ci 24648c2ecf20Sopenharmony_ci/* 3430ES2+-only hwmod links */ 24658c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if *omap3430es2plus_hwmod_ocp_ifs[] __initdata = { 24668c2ecf20Sopenharmony_ci &omap3xxx_dss__l3, 24678c2ecf20Sopenharmony_ci &omap3xxx_l4_core__dss, 24688c2ecf20Sopenharmony_ci &omap3xxx_usbhsotg__l3, 24698c2ecf20Sopenharmony_ci &omap3xxx_l4_core__usbhsotg, 24708c2ecf20Sopenharmony_ci &omap3xxx_usb_host_hs__l3_main_2, 24718c2ecf20Sopenharmony_ci &omap3xxx_l4_core__usb_host_hs, 24728c2ecf20Sopenharmony_ci &omap3xxx_l4_core__usb_tll_hs, 24738c2ecf20Sopenharmony_ci NULL, 24748c2ecf20Sopenharmony_ci}; 24758c2ecf20Sopenharmony_ci 24768c2ecf20Sopenharmony_ci/* <= 3430ES3-only hwmod links */ 24778c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if *omap3430_pre_es3_hwmod_ocp_ifs[] __initdata = { 24788c2ecf20Sopenharmony_ci &omap3xxx_l4_core__pre_es3_mmc1, 24798c2ecf20Sopenharmony_ci &omap3xxx_l4_core__pre_es3_mmc2, 24808c2ecf20Sopenharmony_ci NULL, 24818c2ecf20Sopenharmony_ci}; 24828c2ecf20Sopenharmony_ci 24838c2ecf20Sopenharmony_ci/* 3430ES3+-only hwmod links */ 24848c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if *omap3430_es3plus_hwmod_ocp_ifs[] __initdata = { 24858c2ecf20Sopenharmony_ci &omap3xxx_l4_core__es3plus_mmc1, 24868c2ecf20Sopenharmony_ci &omap3xxx_l4_core__es3plus_mmc2, 24878c2ecf20Sopenharmony_ci NULL, 24888c2ecf20Sopenharmony_ci}; 24898c2ecf20Sopenharmony_ci 24908c2ecf20Sopenharmony_ci/* 34xx-only hwmod links (all ES revisions) */ 24918c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if *omap34xx_hwmod_ocp_ifs[] __initdata = { 24928c2ecf20Sopenharmony_ci &omap3xxx_l3__iva, 24938c2ecf20Sopenharmony_ci &omap34xx_l4_core__sr1, 24948c2ecf20Sopenharmony_ci &omap34xx_l4_core__sr2, 24958c2ecf20Sopenharmony_ci &omap3xxx_l4_core__mailbox, 24968c2ecf20Sopenharmony_ci &omap3xxx_l4_core__hdq1w, 24978c2ecf20Sopenharmony_ci &omap3xxx_sad2d__l3, 24988c2ecf20Sopenharmony_ci &omap3xxx_l4_core__mmu_isp, 24998c2ecf20Sopenharmony_ci &omap3xxx_l3_main__mmu_iva, 25008c2ecf20Sopenharmony_ci &omap3xxx_l4_core__ssi, 25018c2ecf20Sopenharmony_ci NULL, 25028c2ecf20Sopenharmony_ci}; 25038c2ecf20Sopenharmony_ci 25048c2ecf20Sopenharmony_ci/* 36xx-only hwmod links (all ES revisions) */ 25058c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if *omap36xx_hwmod_ocp_ifs[] __initdata = { 25068c2ecf20Sopenharmony_ci &omap3xxx_l3__iva, 25078c2ecf20Sopenharmony_ci &omap36xx_l4_per__uart4, 25088c2ecf20Sopenharmony_ci &omap3xxx_dss__l3, 25098c2ecf20Sopenharmony_ci &omap3xxx_l4_core__dss, 25108c2ecf20Sopenharmony_ci &omap36xx_l4_core__sr1, 25118c2ecf20Sopenharmony_ci &omap36xx_l4_core__sr2, 25128c2ecf20Sopenharmony_ci &omap3xxx_usbhsotg__l3, 25138c2ecf20Sopenharmony_ci &omap3xxx_l4_core__usbhsotg, 25148c2ecf20Sopenharmony_ci &omap3xxx_l4_core__mailbox, 25158c2ecf20Sopenharmony_ci &omap3xxx_usb_host_hs__l3_main_2, 25168c2ecf20Sopenharmony_ci &omap3xxx_l4_core__usb_host_hs, 25178c2ecf20Sopenharmony_ci &omap3xxx_l4_core__usb_tll_hs, 25188c2ecf20Sopenharmony_ci &omap3xxx_l4_core__es3plus_mmc1, 25198c2ecf20Sopenharmony_ci &omap3xxx_l4_core__es3plus_mmc2, 25208c2ecf20Sopenharmony_ci &omap3xxx_l4_core__hdq1w, 25218c2ecf20Sopenharmony_ci &omap3xxx_sad2d__l3, 25228c2ecf20Sopenharmony_ci &omap3xxx_l4_core__mmu_isp, 25238c2ecf20Sopenharmony_ci &omap3xxx_l3_main__mmu_iva, 25248c2ecf20Sopenharmony_ci &omap3xxx_l4_core__ssi, 25258c2ecf20Sopenharmony_ci NULL, 25268c2ecf20Sopenharmony_ci}; 25278c2ecf20Sopenharmony_ci 25288c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if *am35xx_hwmod_ocp_ifs[] __initdata = { 25298c2ecf20Sopenharmony_ci &omap3xxx_dss__l3, 25308c2ecf20Sopenharmony_ci &omap3xxx_l4_core__dss, 25318c2ecf20Sopenharmony_ci &am35xx_usbhsotg__l3, 25328c2ecf20Sopenharmony_ci &am35xx_l4_core__usbhsotg, 25338c2ecf20Sopenharmony_ci &am35xx_l4_core__uart4, 25348c2ecf20Sopenharmony_ci &omap3xxx_usb_host_hs__l3_main_2, 25358c2ecf20Sopenharmony_ci &omap3xxx_l4_core__usb_host_hs, 25368c2ecf20Sopenharmony_ci &omap3xxx_l4_core__usb_tll_hs, 25378c2ecf20Sopenharmony_ci &omap3xxx_l4_core__es3plus_mmc1, 25388c2ecf20Sopenharmony_ci &omap3xxx_l4_core__es3plus_mmc2, 25398c2ecf20Sopenharmony_ci &omap3xxx_l4_core__hdq1w, 25408c2ecf20Sopenharmony_ci &am35xx_mdio__l3, 25418c2ecf20Sopenharmony_ci &am35xx_l4_core__mdio, 25428c2ecf20Sopenharmony_ci &am35xx_emac__l3, 25438c2ecf20Sopenharmony_ci &am35xx_l4_core__emac, 25448c2ecf20Sopenharmony_ci NULL, 25458c2ecf20Sopenharmony_ci}; 25468c2ecf20Sopenharmony_ci 25478c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if *omap3xxx_dss_hwmod_ocp_ifs[] __initdata = { 25488c2ecf20Sopenharmony_ci &omap3xxx_l4_core__dss_dispc, 25498c2ecf20Sopenharmony_ci &omap3xxx_l4_core__dss_dsi1, 25508c2ecf20Sopenharmony_ci &omap3xxx_l4_core__dss_rfbi, 25518c2ecf20Sopenharmony_ci &omap3xxx_l4_core__dss_venc, 25528c2ecf20Sopenharmony_ci NULL, 25538c2ecf20Sopenharmony_ci}; 25548c2ecf20Sopenharmony_ci 25558c2ecf20Sopenharmony_ci/** 25568c2ecf20Sopenharmony_ci * omap3xxx_hwmod_is_hs_ip_block_usable - is a security IP block accessible? 25578c2ecf20Sopenharmony_ci * @bus: struct device_node * for the top-level OMAP DT data 25588c2ecf20Sopenharmony_ci * @dev_name: device name used in the DT file 25598c2ecf20Sopenharmony_ci * 25608c2ecf20Sopenharmony_ci * Determine whether a "secure" IP block @dev_name is usable by Linux. 25618c2ecf20Sopenharmony_ci * There doesn't appear to be a 100% reliable way to determine this, 25628c2ecf20Sopenharmony_ci * so we rely on heuristics. If @bus is null, meaning there's no DT 25638c2ecf20Sopenharmony_ci * data, then we only assume the IP block is accessible if the OMAP is 25648c2ecf20Sopenharmony_ci * fused as a 'general-purpose' SoC. If however DT data is present, 25658c2ecf20Sopenharmony_ci * test to see if the IP block is described in the DT data and set to 25668c2ecf20Sopenharmony_ci * 'status = "okay"'. If so then we assume the ODM has configured the 25678c2ecf20Sopenharmony_ci * OMAP firewalls to allow access to the IP block. 25688c2ecf20Sopenharmony_ci * 25698c2ecf20Sopenharmony_ci * Return: 0 if device named @dev_name is not likely to be accessible, 25708c2ecf20Sopenharmony_ci * or 1 if it is likely to be accessible. 25718c2ecf20Sopenharmony_ci */ 25728c2ecf20Sopenharmony_cistatic bool __init omap3xxx_hwmod_is_hs_ip_block_usable(struct device_node *bus, 25738c2ecf20Sopenharmony_ci const char *dev_name) 25748c2ecf20Sopenharmony_ci{ 25758c2ecf20Sopenharmony_ci struct device_node *node; 25768c2ecf20Sopenharmony_ci bool available; 25778c2ecf20Sopenharmony_ci 25788c2ecf20Sopenharmony_ci if (!bus) 25798c2ecf20Sopenharmony_ci return omap_type() == OMAP2_DEVICE_TYPE_GP; 25808c2ecf20Sopenharmony_ci 25818c2ecf20Sopenharmony_ci node = of_get_child_by_name(bus, dev_name); 25828c2ecf20Sopenharmony_ci available = of_device_is_available(node); 25838c2ecf20Sopenharmony_ci of_node_put(node); 25848c2ecf20Sopenharmony_ci 25858c2ecf20Sopenharmony_ci return available; 25868c2ecf20Sopenharmony_ci} 25878c2ecf20Sopenharmony_ci 25888c2ecf20Sopenharmony_ciint __init omap3xxx_hwmod_init(void) 25898c2ecf20Sopenharmony_ci{ 25908c2ecf20Sopenharmony_ci int r; 25918c2ecf20Sopenharmony_ci struct omap_hwmod_ocp_if **h = NULL, **h_sham = NULL; 25928c2ecf20Sopenharmony_ci struct device_node *bus; 25938c2ecf20Sopenharmony_ci unsigned int rev; 25948c2ecf20Sopenharmony_ci 25958c2ecf20Sopenharmony_ci omap_hwmod_init(); 25968c2ecf20Sopenharmony_ci 25978c2ecf20Sopenharmony_ci /* Register hwmod links common to all OMAP3 */ 25988c2ecf20Sopenharmony_ci r = omap_hwmod_register_links(omap3xxx_hwmod_ocp_ifs); 25998c2ecf20Sopenharmony_ci if (r < 0) 26008c2ecf20Sopenharmony_ci return r; 26018c2ecf20Sopenharmony_ci 26028c2ecf20Sopenharmony_ci rev = omap_rev(); 26038c2ecf20Sopenharmony_ci 26048c2ecf20Sopenharmony_ci /* 26058c2ecf20Sopenharmony_ci * Register hwmod links common to individual OMAP3 families, all 26068c2ecf20Sopenharmony_ci * silicon revisions (e.g., 34xx, or AM3505/3517, or 36xx) 26078c2ecf20Sopenharmony_ci * All possible revisions should be included in this conditional. 26088c2ecf20Sopenharmony_ci */ 26098c2ecf20Sopenharmony_ci if (rev == OMAP3430_REV_ES1_0 || rev == OMAP3430_REV_ES2_0 || 26108c2ecf20Sopenharmony_ci rev == OMAP3430_REV_ES2_1 || rev == OMAP3430_REV_ES3_0 || 26118c2ecf20Sopenharmony_ci rev == OMAP3430_REV_ES3_1 || rev == OMAP3430_REV_ES3_1_2) { 26128c2ecf20Sopenharmony_ci h = omap34xx_hwmod_ocp_ifs; 26138c2ecf20Sopenharmony_ci h_sham = omap34xx_sham_hwmod_ocp_ifs; 26148c2ecf20Sopenharmony_ci } else if (rev == AM35XX_REV_ES1_0 || rev == AM35XX_REV_ES1_1) { 26158c2ecf20Sopenharmony_ci h = am35xx_hwmod_ocp_ifs; 26168c2ecf20Sopenharmony_ci h_sham = am35xx_sham_hwmod_ocp_ifs; 26178c2ecf20Sopenharmony_ci } else if (rev == OMAP3630_REV_ES1_0 || rev == OMAP3630_REV_ES1_1 || 26188c2ecf20Sopenharmony_ci rev == OMAP3630_REV_ES1_2) { 26198c2ecf20Sopenharmony_ci h = omap36xx_hwmod_ocp_ifs; 26208c2ecf20Sopenharmony_ci h_sham = omap36xx_sham_hwmod_ocp_ifs; 26218c2ecf20Sopenharmony_ci } else { 26228c2ecf20Sopenharmony_ci WARN(1, "OMAP3 hwmod family init: unknown chip type\n"); 26238c2ecf20Sopenharmony_ci return -EINVAL; 26248c2ecf20Sopenharmony_ci } 26258c2ecf20Sopenharmony_ci 26268c2ecf20Sopenharmony_ci r = omap_hwmod_register_links(h); 26278c2ecf20Sopenharmony_ci if (r < 0) 26288c2ecf20Sopenharmony_ci return r; 26298c2ecf20Sopenharmony_ci 26308c2ecf20Sopenharmony_ci /* 26318c2ecf20Sopenharmony_ci * Register crypto hwmod links only if they are not disabled in DT. 26328c2ecf20Sopenharmony_ci * If DT information is missing, enable them only for GP devices. 26338c2ecf20Sopenharmony_ci */ 26348c2ecf20Sopenharmony_ci 26358c2ecf20Sopenharmony_ci bus = of_find_node_by_name(NULL, "ocp"); 26368c2ecf20Sopenharmony_ci 26378c2ecf20Sopenharmony_ci if (h_sham && omap3xxx_hwmod_is_hs_ip_block_usable(bus, "sham")) { 26388c2ecf20Sopenharmony_ci r = omap_hwmod_register_links(h_sham); 26398c2ecf20Sopenharmony_ci if (r < 0) 26408c2ecf20Sopenharmony_ci goto put_node; 26418c2ecf20Sopenharmony_ci } 26428c2ecf20Sopenharmony_ci 26438c2ecf20Sopenharmony_ci of_node_put(bus); 26448c2ecf20Sopenharmony_ci 26458c2ecf20Sopenharmony_ci /* 26468c2ecf20Sopenharmony_ci * Register hwmod links specific to certain ES levels of a 26478c2ecf20Sopenharmony_ci * particular family of silicon (e.g., 34xx ES1.0) 26488c2ecf20Sopenharmony_ci */ 26498c2ecf20Sopenharmony_ci h = NULL; 26508c2ecf20Sopenharmony_ci if (rev == OMAP3430_REV_ES1_0) { 26518c2ecf20Sopenharmony_ci h = omap3430es1_hwmod_ocp_ifs; 26528c2ecf20Sopenharmony_ci } else if (rev == OMAP3430_REV_ES2_0 || rev == OMAP3430_REV_ES2_1 || 26538c2ecf20Sopenharmony_ci rev == OMAP3430_REV_ES3_0 || rev == OMAP3430_REV_ES3_1 || 26548c2ecf20Sopenharmony_ci rev == OMAP3430_REV_ES3_1_2) { 26558c2ecf20Sopenharmony_ci h = omap3430es2plus_hwmod_ocp_ifs; 26568c2ecf20Sopenharmony_ci } 26578c2ecf20Sopenharmony_ci 26588c2ecf20Sopenharmony_ci if (h) { 26598c2ecf20Sopenharmony_ci r = omap_hwmod_register_links(h); 26608c2ecf20Sopenharmony_ci if (r < 0) 26618c2ecf20Sopenharmony_ci return r; 26628c2ecf20Sopenharmony_ci } 26638c2ecf20Sopenharmony_ci 26648c2ecf20Sopenharmony_ci h = NULL; 26658c2ecf20Sopenharmony_ci if (rev == OMAP3430_REV_ES1_0 || rev == OMAP3430_REV_ES2_0 || 26668c2ecf20Sopenharmony_ci rev == OMAP3430_REV_ES2_1) { 26678c2ecf20Sopenharmony_ci h = omap3430_pre_es3_hwmod_ocp_ifs; 26688c2ecf20Sopenharmony_ci } else if (rev == OMAP3430_REV_ES3_0 || rev == OMAP3430_REV_ES3_1 || 26698c2ecf20Sopenharmony_ci rev == OMAP3430_REV_ES3_1_2) { 26708c2ecf20Sopenharmony_ci h = omap3430_es3plus_hwmod_ocp_ifs; 26718c2ecf20Sopenharmony_ci } 26728c2ecf20Sopenharmony_ci 26738c2ecf20Sopenharmony_ci if (h) 26748c2ecf20Sopenharmony_ci r = omap_hwmod_register_links(h); 26758c2ecf20Sopenharmony_ci if (r < 0) 26768c2ecf20Sopenharmony_ci return r; 26778c2ecf20Sopenharmony_ci 26788c2ecf20Sopenharmony_ci /* 26798c2ecf20Sopenharmony_ci * DSS code presumes that dss_core hwmod is handled first, 26808c2ecf20Sopenharmony_ci * _before_ any other DSS related hwmods so register common 26818c2ecf20Sopenharmony_ci * DSS hwmod links last to ensure that dss_core is already 26828c2ecf20Sopenharmony_ci * registered. Otherwise some change things may happen, for 26838c2ecf20Sopenharmony_ci * ex. if dispc is handled before dss_core and DSS is enabled 26848c2ecf20Sopenharmony_ci * in bootloader DISPC will be reset with outputs enabled 26858c2ecf20Sopenharmony_ci * which sometimes leads to unrecoverable L3 error. XXX The 26868c2ecf20Sopenharmony_ci * long-term fix to this is to ensure hwmods are set up in 26878c2ecf20Sopenharmony_ci * dependency order in the hwmod core code. 26888c2ecf20Sopenharmony_ci */ 26898c2ecf20Sopenharmony_ci r = omap_hwmod_register_links(omap3xxx_dss_hwmod_ocp_ifs); 26908c2ecf20Sopenharmony_ci 26918c2ecf20Sopenharmony_ci return r; 26928c2ecf20Sopenharmony_ci 26938c2ecf20Sopenharmony_ciput_node: 26948c2ecf20Sopenharmony_ci of_node_put(bus); 26958c2ecf20Sopenharmony_ci return r; 26968c2ecf20Sopenharmony_ci} 2697