2012-07-25 13:51:13 -06:00
/*
* omap_hwmod_33xx_data . c : Hardware modules present on the AM33XX chips
*
* Copyright ( C ) { 2012 } Texas Instruments Incorporated - http : //www.ti.com/
*
* This file is automatically generated from the AM33XX hardware databases .
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation version 2.
*
* This program is distributed " as is " WITHOUT ANY WARRANTY of any
* kind , whether express or implied ; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*/
2012-10-08 09:11:22 -07:00
# include <linux/i2c-omap.h>
2012-10-02 17:41:35 -07:00
# include "omap_hwmod.h"
2012-09-12 21:29:07 -07:00
# include <linux/platform_data/gpio-omap.h>
2012-09-20 09:38:14 -07:00
# include <linux/platform_data/spi-omap2-mcspi.h>
2012-07-25 13:51:13 -06:00
# include "omap_hwmod_common_data.h"
# include "control.h"
# include "cm33xx.h"
# include "prm33xx.h"
# include "prm-regbits-33xx.h"
2012-10-08 09:11:22 -07:00
# include "i2c.h"
2013-03-31 20:22:21 -06:00
# include "wd_timer.h"
2013-10-12 15:44:46 +05:30
# include "omap_hwmod_33xx_43xx_common_data.h"
2012-07-25 13:51:13 -06:00
/*
* IP blocks
*/
/* emif */
static struct omap_hwmod am33xx_emif_hwmod = {
. name = " emif " ,
. class = & am33xx_emif_hwmod_class ,
. clkdm_name = " l3_clkdm " ,
2013-08-20 13:02:44 +05:30
. flags = HWMOD_INIT_NO_IDLE ,
2012-07-25 13:51:13 -06:00
. main_clk = " dpll_ddr_m2_div2_ck " ,
. prcm = {
. omap4 = {
. clkctrl_offs = AM33XX_CM_PER_EMIF_CLKCTRL_OFFSET ,
. modulemode = MODULEMODE_SWCTRL ,
} ,
} ,
} ;
/* l4_hs */
static struct omap_hwmod am33xx_l4_hs_hwmod = {
. name = " l4_hs " ,
. class = & am33xx_l4_hwmod_class ,
. clkdm_name = " l4hs_clkdm " ,
2013-08-20 13:02:44 +05:30
. flags = HWMOD_INIT_NO_IDLE ,
2012-07-25 13:51:13 -06:00
. main_clk = " l4hs_gclk " ,
. prcm = {
. omap4 = {
. clkctrl_offs = AM33XX_CM_PER_L4HS_CLKCTRL_OFFSET ,
. modulemode = MODULEMODE_SWCTRL ,
} ,
} ,
} ;
static struct omap_hwmod_rst_info am33xx_wkup_m3_resets [ ] = {
{ . name = " wkup_m3 " , . rst_shift = 3 , . st_shift = 5 } ,
} ;
/* wkup_m3 */
static struct omap_hwmod am33xx_wkup_m3_hwmod = {
. name = " wkup_m3 " ,
. class = & am33xx_wkup_m3_hwmod_class ,
. clkdm_name = " l4_wkup_aon_clkdm " ,
2013-02-08 08:21:10 -07:00
/* Keep hardreset asserted */
. flags = HWMOD_INIT_NO_RESET | HWMOD_NO_IDLEST ,
2012-07-25 13:51:13 -06:00
. main_clk = " dpll_core_m4_div2_ck " ,
. prcm = {
. omap4 = {
. clkctrl_offs = AM33XX_CM_WKUP_WKUP_M3_CLKCTRL_OFFSET ,
. rstctrl_offs = AM33XX_RM_WKUP_RSTCTRL_OFFSET ,
2013-01-29 16:45:05 +05:30
. rstst_offs = AM33XX_RM_WKUP_RSTST_OFFSET ,
2012-07-25 13:51:13 -06:00
. modulemode = MODULEMODE_SWCTRL ,
} ,
} ,
. rst_lines = am33xx_wkup_m3_resets ,
. rst_lines_cnt = ARRAY_SIZE ( am33xx_wkup_m3_resets ) ,
} ;
/*
* ' adc / tsc ' class
* TouchScreen Controller ( Anolog - To - Digital Converter )
*/
static struct omap_hwmod_class_sysconfig am33xx_adc_tsc_sysc = {
. rev_offs = 0x00 ,
. sysc_offs = 0x10 ,
. sysc_flags = SYSC_HAS_SIDLEMODE ,
. idlemodes = ( SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
SIDLE_SMART_WKUP ) ,
. sysc_fields = & omap_hwmod_sysc_type2 ,
} ;
static struct omap_hwmod_class am33xx_adc_tsc_hwmod_class = {
. name = " adc_tsc " ,
. sysc = & am33xx_adc_tsc_sysc ,
} ;
static struct omap_hwmod am33xx_adc_tsc_hwmod = {
. name = " adc_tsc " ,
. class = & am33xx_adc_tsc_hwmod_class ,
. clkdm_name = " l4_wkup_clkdm " ,
. main_clk = " adc_tsc_fck " ,
. prcm = {
. omap4 = {
. clkctrl_offs = AM33XX_CM_WKUP_ADC_TSC_CLKCTRL_OFFSET ,
. modulemode = MODULEMODE_SWCTRL ,
} ,
} ,
} ;
/*
* Modules omap_hwmod structures
*
* The following IPs are excluded for the moment because :
* - They do not need an explicit SW control using omap_hwmod API .
* - They still need to be validated with the driver
* properly adapted to omap_hwmod / omap_device
*
* - cEFUSE ( doesn ' t fall under any ocp_if )
* - clkdiv32k
* - ocp watch point
*/
#if 0
/*
* ' cefuse ' class
*/
static struct omap_hwmod_class am33xx_cefuse_hwmod_class = {
. name = " cefuse " ,
} ;
static struct omap_hwmod am33xx_cefuse_hwmod = {
. name = " cefuse " ,
. class = & am33xx_cefuse_hwmod_class ,
. clkdm_name = " l4_cefuse_clkdm " ,
. main_clk = " cefuse_fck " ,
. prcm = {
. omap4 = {
. clkctrl_offs = AM33XX_CM_CEFUSE_CEFUSE_CLKCTRL_OFFSET ,
. modulemode = MODULEMODE_SWCTRL ,
} ,
} ,
} ;
/*
* ' clkdiv32k ' class
*/
static struct omap_hwmod_class am33xx_clkdiv32k_hwmod_class = {
. name = " clkdiv32k " ,
} ;
static struct omap_hwmod am33xx_clkdiv32k_hwmod = {
. name = " clkdiv32k " ,
. class = & am33xx_clkdiv32k_hwmod_class ,
. clkdm_name = " clk_24mhz_clkdm " ,
. main_clk = " clkdiv32k_ick " ,
. prcm = {
. omap4 = {
. clkctrl_offs = AM33XX_CM_PER_CLKDIV32K_CLKCTRL_OFFSET ,
. modulemode = MODULEMODE_SWCTRL ,
} ,
} ,
} ;
/* ocpwp */
static struct omap_hwmod_class am33xx_ocpwp_hwmod_class = {
. name = " ocpwp " ,
} ;
static struct omap_hwmod am33xx_ocpwp_hwmod = {
. name = " ocpwp " ,
. class = & am33xx_ocpwp_hwmod_class ,
. clkdm_name = " l4ls_clkdm " ,
. main_clk = " l4ls_gclk " ,
. prcm = {
. omap4 = {
. clkctrl_offs = AM33XX_CM_PER_OCPWP_CLKCTRL_OFFSET ,
. modulemode = MODULEMODE_SWCTRL ,
} ,
} ,
} ;
2012-12-21 09:28:14 -07:00
# endif
2012-07-25 13:51:13 -06:00
2013-08-20 18:54:09 -06:00
/*
* ' debugss ' class
* debug sub system
*/
static struct omap_hwmod_opt_clk debugss_opt_clks [ ] = {
{ . role = " dbg_sysclk " , . clk = " dbg_sysclk_ck " } ,
{ . role = " dbg_clka " , . clk = " dbg_clka_ck " } ,
} ;
static struct omap_hwmod_class am33xx_debugss_hwmod_class = {
. name = " debugss " ,
} ;
static struct omap_hwmod am33xx_debugss_hwmod = {
. name = " debugss " ,
. class = & am33xx_debugss_hwmod_class ,
. clkdm_name = " l3_aon_clkdm " ,
. main_clk = " trace_clk_div_ck " ,
. prcm = {
. omap4 = {
. clkctrl_offs = AM33XX_CM_WKUP_DEBUGSS_CLKCTRL_OFFSET ,
. modulemode = MODULEMODE_SWCTRL ,
} ,
} ,
. opt_clks = debugss_opt_clks ,
. opt_clks_cnt = ARRAY_SIZE ( debugss_opt_clks ) ,
} ;
2012-07-25 13:51:13 -06:00
static struct omap_hwmod am33xx_control_hwmod = {
. name = " control " ,
. class = & am33xx_control_hwmod_class ,
. clkdm_name = " l4_wkup_clkdm " ,
2013-08-20 13:02:44 +05:30
. flags = HWMOD_INIT_NO_IDLE ,
2012-07-25 13:51:13 -06:00
. main_clk = " dpll_core_m4_div2_ck " ,
. prcm = {
. omap4 = {
. clkctrl_offs = AM33XX_CM_WKUP_CONTROL_CLKCTRL_OFFSET ,
. modulemode = MODULEMODE_SWCTRL ,
} ,
} ,
} ;
2013-10-12 15:44:46 +05:30
/* gpio0 */
static struct omap_hwmod_opt_clk gpio0_opt_clks [ ] = {
{ . role = " dbclk " , . clk = " gpio0_dbclk " } ,
2012-07-25 13:51:13 -06:00
} ;
2013-10-12 15:44:46 +05:30
static struct omap_hwmod am33xx_gpio0_hwmod = {
. name = " gpio1 " ,
. class = & am33xx_gpio_hwmod_class ,
. clkdm_name = " l4_wkup_clkdm " ,
. flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET ,
. main_clk = " dpll_core_m4_div2_ck " ,
2012-07-25 13:51:13 -06:00
. prcm = {
. omap4 = {
2013-10-12 15:44:46 +05:30
. clkctrl_offs = AM33XX_CM_WKUP_GPIO0_CLKCTRL_OFFSET ,
2012-07-25 13:51:13 -06:00
. modulemode = MODULEMODE_SWCTRL ,
} ,
} ,
2013-10-12 15:44:46 +05:30
. opt_clks = gpio0_opt_clks ,
. opt_clks_cnt = ARRAY_SIZE ( gpio0_opt_clks ) ,
. dev_attr = & gpio_dev_attr ,
2012-07-25 13:51:13 -06:00
} ;
2013-10-12 15:44:46 +05:30
/* lcdc */
static struct omap_hwmod_class_sysconfig lcdc_sysc = {
. rev_offs = 0x0 ,
. sysc_offs = 0x54 ,
. sysc_flags = ( SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE ) ,
2012-07-25 13:51:13 -06:00
. idlemodes = ( SIDLE_FORCE | SIDLE_NO | SIDLE_SMART ) ,
2013-10-12 15:44:46 +05:30
. sysc_fields = & omap_hwmod_sysc_type2 ,
2012-07-25 13:51:13 -06:00
} ;
2013-10-12 15:44:46 +05:30
static struct omap_hwmod_class am33xx_lcdc_hwmod_class = {
. name = " lcdc " ,
. sysc = & lcdc_sysc ,
2012-07-25 13:51:13 -06:00
} ;
2013-10-12 15:44:46 +05:30
static struct omap_hwmod am33xx_lcdc_hwmod = {
. name = " lcdc " ,
. class = & am33xx_lcdc_hwmod_class ,
. clkdm_name = " lcdc_clkdm " ,
. flags = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY ,
. main_clk = " lcd_gclk " ,
2012-07-25 13:51:13 -06:00
. prcm = {
. omap4 = {
2013-10-12 15:44:46 +05:30
. clkctrl_offs = AM33XX_CM_PER_LCDC_CLKCTRL_OFFSET ,
2012-07-25 13:51:13 -06:00
. modulemode = MODULEMODE_SWCTRL ,
} ,
} ,
} ;
2013-10-12 15:44:46 +05:30
/*
* ' usb_otg ' class
* high - speed on - the - go universal serial bus ( usb_otg ) controller
*/
static struct omap_hwmod_class_sysconfig am33xx_usbhsotg_sysc = {
2012-07-25 13:51:13 -06:00
. rev_offs = 0x0 ,
2013-10-12 15:44:46 +05:30
. sysc_offs = 0x10 ,
2012-07-25 13:51:13 -06:00
. sysc_flags = ( SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE ) ,
. idlemodes = ( SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2013-10-12 15:44:46 +05:30
MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART ) ,
2012-07-25 13:51:13 -06:00
. sysc_fields = & omap_hwmod_sysc_type2 ,
} ;
2013-10-12 15:44:46 +05:30
static struct omap_hwmod_class am33xx_usbotg_class = {
. name = " usbotg " ,
. sysc = & am33xx_usbhsotg_sysc ,
2012-07-25 13:51:13 -06:00
} ;
2013-10-12 15:44:46 +05:30
static struct omap_hwmod am33xx_usbss_hwmod = {
. name = " usb_otg_hs " ,
. class = & am33xx_usbotg_class ,
. clkdm_name = " l3s_clkdm " ,
. flags = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY ,
. main_clk = " usbotg_fck " ,
2012-07-25 13:51:13 -06:00
. prcm = {
. omap4 = {
2013-10-12 15:44:46 +05:30
. clkctrl_offs = AM33XX_CM_PER_USB0_CLKCTRL_OFFSET ,
2012-07-25 13:51:13 -06:00
. modulemode = MODULEMODE_SWCTRL ,
} ,
} ,
} ;
2013-01-02 18:54:48 +05:30
2013-10-12 15:44:46 +05:30
/*
* Interfaces
*/
2012-07-25 13:51:13 -06:00
2013-10-12 15:44:46 +05:30
static struct omap_hwmod_addr_space am33xx_emif_addrs [ ] = {
2012-07-25 13:51:13 -06:00
{
2013-10-12 15:44:46 +05:30
. pa_start = 0x4c000000 ,
. pa_end = 0x4c000fff ,
. flags = ADDR_TYPE_RT
2012-07-25 13:51:13 -06:00
} ,
{ }
} ;
2013-10-12 15:44:46 +05:30
/* l3 main -> emif */
static struct omap_hwmod_ocp_if am33xx_l3_main__emif = {
. master = & am33xx_l3_main_hwmod ,
. slave = & am33xx_emif_hwmod ,
. clk = " dpll_core_m4_ck " ,
. addr = am33xx_emif_addrs ,
. user = OCP_USER_MPU | OCP_USER_SDMA ,
2012-07-25 13:51:13 -06:00
} ;
2013-10-12 15:44:46 +05:30
/* l3 main -> l4 hs */
static struct omap_hwmod_ocp_if am33xx_l3_main__l4_hs = {
. master = & am33xx_l3_main_hwmod ,
. slave = & am33xx_l4_hs_hwmod ,
. clk = " l3s_gclk " ,
. user = OCP_USER_MPU | OCP_USER_SDMA ,
2012-07-25 13:51:13 -06:00
} ;
2013-10-12 15:44:46 +05:30
/* wkup m3 -> l4 wkup */
static struct omap_hwmod_ocp_if am33xx_wkup_m3__l4_wkup = {
. master = & am33xx_wkup_m3_hwmod ,
. slave = & am33xx_l4_wkup_hwmod ,
. clk = " dpll_core_m4_div2_ck " ,
. user = OCP_USER_MPU | OCP_USER_SDMA ,
2012-07-25 13:51:13 -06:00
} ;
2013-10-12 15:44:46 +05:30
/* l4 wkup -> wkup m3 */
static struct omap_hwmod_ocp_if am33xx_l4_wkup__wkup_m3 = {
. master = & am33xx_l4_wkup_hwmod ,
. slave = & am33xx_wkup_m3_hwmod ,
. clk = " dpll_core_m4_div2_ck " ,
. user = OCP_USER_MPU | OCP_USER_SDMA ,
2012-07-25 13:51:13 -06:00
} ;
2013-10-12 15:44:46 +05:30
/* l4 hs -> pru-icss */
static struct omap_hwmod_ocp_if am33xx_l4_hs__pruss = {
. master = & am33xx_l4_hs_hwmod ,
. slave = & am33xx_pruss_hwmod ,
2012-07-25 13:51:13 -06:00
. clk = " dpll_core_m4_ck " ,
2013-10-12 15:44:46 +05:30
. user = OCP_USER_MPU | OCP_USER_SDMA ,
2012-07-25 13:51:13 -06:00
} ;
2013-10-12 15:44:46 +05:30
/* l3_main -> debugss */
static struct omap_hwmod_addr_space am33xx_debugss_addrs [ ] = {
2012-07-25 13:51:13 -06:00
{
2013-10-12 15:44:46 +05:30
. pa_start = 0x4b000000 ,
. pa_end = 0x4b000000 + SZ_16M - 1 ,
2012-07-25 13:51:13 -06:00
. flags = ADDR_TYPE_RT
} ,
{ }
} ;
2013-10-12 15:44:46 +05:30
static struct omap_hwmod_ocp_if am33xx_l3_main__debugss = {
. master = & am33xx_l3_main_hwmod ,
. slave = & am33xx_debugss_hwmod ,
. clk = " dpll_core_m4_ck " ,
. addr = am33xx_debugss_addrs ,
2012-07-25 13:51:13 -06:00
. user = OCP_USER_MPU ,
} ;
2013-10-12 15:44:46 +05:30
/* l4 wkup -> smartreflex0 */
static struct omap_hwmod_ocp_if am33xx_l4_wkup__smartreflex0 = {
. master = & am33xx_l4_wkup_hwmod ,
. slave = & am33xx_smartreflex0_hwmod ,
. clk = " dpll_core_m4_div2_ck " ,
2012-07-25 13:51:13 -06:00
. user = OCP_USER_MPU ,
} ;
2013-10-12 15:44:46 +05:30
/* l4 wkup -> smartreflex1 */
static struct omap_hwmod_ocp_if am33xx_l4_wkup__smartreflex1 = {
. master = & am33xx_l4_wkup_hwmod ,
. slave = & am33xx_smartreflex1_hwmod ,
. clk = " dpll_core_m4_div2_ck " ,
2012-07-25 13:51:13 -06:00
. user = OCP_USER_MPU ,
} ;
2013-10-12 15:44:46 +05:30
/* l4 wkup -> control */
static struct omap_hwmod_ocp_if am33xx_l4_wkup__control = {
. master = & am33xx_l4_wkup_hwmod ,
. slave = & am33xx_control_hwmod ,
. clk = " dpll_core_m4_div2_ck " ,
2012-07-25 13:51:13 -06:00
. user = OCP_USER_MPU ,
} ;
2013-10-12 15:44:46 +05:30
/* L4 WKUP -> I2C1 */
static struct omap_hwmod_ocp_if am33xx_l4_wkup__i2c1 = {
. master = & am33xx_l4_wkup_hwmod ,
. slave = & am33xx_i2c1_hwmod ,
. clk = " dpll_core_m4_div2_ck " ,
2012-07-25 13:51:13 -06:00
. user = OCP_USER_MPU ,
} ;
2013-10-12 15:44:46 +05:30
/* L4 WKUP -> GPIO1 */
static struct omap_hwmod_ocp_if am33xx_l4_wkup__gpio0 = {
. master = & am33xx_l4_wkup_hwmod ,
. slave = & am33xx_gpio0_hwmod ,
. clk = " dpll_core_m4_div2_ck " ,
. user = OCP_USER_MPU | OCP_USER_SDMA ,
2012-07-25 13:51:13 -06:00
} ;
2013-10-12 15:44:46 +05:30
/* L4 WKUP -> ADC_TSC */
static struct omap_hwmod_addr_space am33xx_adc_tsc_addrs [ ] = {
2012-07-25 13:51:13 -06:00
{
2013-10-12 15:44:46 +05:30
. pa_start = 0x44E0D000 ,
. pa_end = 0x44E0D000 + SZ_8K - 1 ,
. flags = ADDR_TYPE_RT
2012-07-25 13:51:13 -06:00
} ,
{ }
} ;
2013-10-12 15:44:46 +05:30
static struct omap_hwmod_ocp_if am33xx_l4_wkup__adc_tsc = {
2012-07-25 13:51:13 -06:00
. master = & am33xx_l4_wkup_hwmod ,
2013-10-12 15:44:46 +05:30
. slave = & am33xx_adc_tsc_hwmod ,
2012-07-25 13:51:13 -06:00
. clk = " dpll_core_m4_div2_ck " ,
2013-10-12 15:44:46 +05:30
. addr = am33xx_adc_tsc_addrs ,
2012-07-25 13:51:13 -06:00
. user = OCP_USER_MPU ,
} ;
2013-10-12 15:44:46 +05:30
static struct omap_hwmod_ocp_if am33xx_l4_hs__cpgmac0 = {
. master = & am33xx_l4_hs_hwmod ,
. slave = & am33xx_cpgmac0_hwmod ,
. clk = " cpsw_125mhz_gclk " ,
2012-07-25 13:51:13 -06:00
. user = OCP_USER_MPU ,
} ;
2013-10-12 15:44:46 +05:30
static struct omap_hwmod_addr_space am33xx_lcdc_addr_space [ ] = {
2012-07-25 13:51:13 -06:00
{
2013-10-12 15:44:46 +05:30
. pa_start = 0x4830E000 ,
. pa_end = 0x4830E000 + SZ_8K - 1 ,
2012-07-25 13:51:13 -06:00
. flags = ADDR_TYPE_RT ,
} ,
{ }
} ;
2013-10-12 15:44:46 +05:30
static struct omap_hwmod_ocp_if am33xx_l3_main__lcdc = {
2012-07-25 13:51:13 -06:00
. master = & am33xx_l3_main_hwmod ,
2013-10-12 15:44:46 +05:30
. slave = & am33xx_lcdc_hwmod ,
. clk = " dpll_core_m4_ck " ,
. addr = am33xx_lcdc_addr_space ,
2012-07-25 13:51:13 -06:00
. user = OCP_USER_MPU ,
} ;
2013-10-12 15:44:46 +05:30
/* l4 wkup -> timer1 */
static struct omap_hwmod_ocp_if am33xx_l4_wkup__timer1 = {
. master = & am33xx_l4_wkup_hwmod ,
. slave = & am33xx_timer1_hwmod ,
. clk = " dpll_core_m4_div2_ck " ,
2012-07-25 13:51:13 -06:00
. user = OCP_USER_MPU ,
} ;
/* l4 wkup -> uart1 */
static struct omap_hwmod_ocp_if am33xx_l4_wkup__uart1 = {
. master = & am33xx_l4_wkup_hwmod ,
. slave = & am33xx_uart1_hwmod ,
. clk = " dpll_core_m4_div2_ck " ,
. user = OCP_USER_MPU ,
} ;
/* l4 wkup -> wd_timer1 */
static struct omap_hwmod_ocp_if am33xx_l4_wkup__wd_timer1 = {
. master = & am33xx_l4_wkup_hwmod ,
. slave = & am33xx_wd_timer1_hwmod ,
. clk = " dpll_core_m4_div2_ck " ,
. user = OCP_USER_MPU ,
} ;
/* usbss */
/* l3 s -> USBSS interface */
static struct omap_hwmod_ocp_if am33xx_l3_s__usbss = {
. master = & am33xx_l3_s_hwmod ,
. slave = & am33xx_usbss_hwmod ,
. clk = " l3s_gclk " ,
. user = OCP_USER_MPU ,
. flags = OCPIF_SWSUP_IDLE ,
} ;
static struct omap_hwmod_ocp_if * am33xx_hwmod_ocp_ifs [ ] __initdata = {
& am33xx_l3_main__emif ,
& am33xx_mpu__l3_main ,
& am33xx_mpu__prcm ,
& am33xx_l3_s__l4_ls ,
& am33xx_l3_s__l4_wkup ,
& am33xx_l3_main__l4_hs ,
& am33xx_l3_main__l3_s ,
& am33xx_l3_main__l3_instr ,
& am33xx_l3_main__gfx ,
& am33xx_l3_s__l3_main ,
& am33xx_pruss__l3_main ,
& am33xx_wkup_m3__l4_wkup ,
& am33xx_gfx__l3_main ,
2013-08-20 18:54:09 -06:00
& am33xx_l3_main__debugss ,
2012-07-25 13:51:13 -06:00
& am33xx_l4_wkup__wkup_m3 ,
& am33xx_l4_wkup__control ,
& am33xx_l4_wkup__smartreflex0 ,
& am33xx_l4_wkup__smartreflex1 ,
& am33xx_l4_wkup__uart1 ,
& am33xx_l4_wkup__timer1 ,
& am33xx_l4_wkup__rtc ,
& am33xx_l4_wkup__i2c1 ,
& am33xx_l4_wkup__gpio0 ,
& am33xx_l4_wkup__adc_tsc ,
& am33xx_l4_wkup__wd_timer1 ,
& am33xx_l4_hs__pruss ,
& am33xx_l4_per__dcan0 ,
& am33xx_l4_per__dcan1 ,
& am33xx_l4_per__gpio1 ,
& am33xx_l4_per__gpio2 ,
& am33xx_l4_per__gpio3 ,
& am33xx_l4_per__i2c2 ,
& am33xx_l4_per__i2c3 ,
& am33xx_l4_per__mailbox ,
& am33xx_l4_ls__mcasp0 ,
& am33xx_l4_ls__mcasp1 ,
& am33xx_l4_ls__mmc0 ,
& am33xx_l4_ls__mmc1 ,
& am33xx_l3_s__mmc2 ,
& am33xx_l4_ls__timer2 ,
& am33xx_l4_ls__timer3 ,
& am33xx_l4_ls__timer4 ,
& am33xx_l4_ls__timer5 ,
& am33xx_l4_ls__timer6 ,
& am33xx_l4_ls__timer7 ,
& am33xx_l3_main__tpcc ,
& am33xx_l4_ls__uart2 ,
& am33xx_l4_ls__uart3 ,
& am33xx_l4_ls__uart4 ,
& am33xx_l4_ls__uart5 ,
& am33xx_l4_ls__uart6 ,
& am33xx_l4_ls__spinlock ,
& am33xx_l4_ls__elm ,
2013-01-02 18:54:49 +05:30
& am33xx_l4_ls__epwmss0 ,
& am33xx_l4_ls__epwmss1 ,
& am33xx_l4_ls__epwmss2 ,
2012-07-25 13:51:13 -06:00
& am33xx_l3_s__gpmc ,
& am33xx_l3_main__lcdc ,
& am33xx_l4_ls__mcspi0 ,
& am33xx_l4_ls__mcspi1 ,
& am33xx_l3_main__tptc0 ,
& am33xx_l3_main__tptc1 ,
& am33xx_l3_main__tptc2 ,
2013-01-29 16:45:02 +05:30
& am33xx_l3_main__ocmc ,
2012-07-25 13:51:13 -06:00
& am33xx_l3_s__usbss ,
& am33xx_l4_hs__cpgmac0 ,
ARM: OMAP3+: hwmod: Add AM33XX HWMOD data for davinci_mdio module
This patch adds hwmod entry for davinci MDIO module,
creating parent<->child relationship between CPSW and MDIO module.
This Parent-child relation is required in order to use common resources
like, clock, but still maintaining the logical separation between them.
CPGMAC SubSystem consist of various sub-modules, like, mdio, cpdma,
cpsw, etc... These sub-modules are also used in some of Davinci
family of devices, so separate and independent platform devices &
drivers for CPSW and MDIO is implemented.
In case of AM33XX, the resources are shared and common register
bit-field is provided to control module/clock enable/disable,
makes it difficult to handle common resources from both drivers.
So the solution is, create parent<->child relationship between
CPGMAC & MDIO modules.
Signed-off-by: Mugunthan V N <mugunthanvnm@ti.com>
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
Cc: Paul Walmsley <paul@pwsan.com>
Acked-by: Peter Korsgaard <jacmet@sunsite.dk>
Acked-by: Richard Cochran <richardcochran@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2012-11-14 09:07:58 +00:00
& am33xx_cpgmac0__mdio ,
2013-03-18 10:06:35 -06:00
& am33xx_l3_main__sha0 ,
2012-12-21 09:28:14 -07:00
& am33xx_l3_main__aes0 ,
2013-08-29 18:22:10 +05:30
& am33xx_l4_per__rng ,
2012-07-25 13:51:13 -06:00
NULL ,
} ;
int __init am33xx_hwmod_init ( void )
{
2013-10-12 15:45:26 +05:30
omap_hwmod_am33xx_reg ( ) ;
2012-07-25 13:51:13 -06:00
omap_hwmod_init ( ) ;
return omap_hwmod_register_links ( am33xx_hwmod_ocp_ifs ) ;
}