Merge tag 'for-v4.6-rc/omap-fixes-a' of git://git.kernel.org/pub/scm/linux/kernel...
[linux-2.6-block.git] / arch / arm / mach-omap2 / omap_hwmod_81xx_data.c
index e493ae37291035d1e11450e62a75f47dcd4cfe0d..df8327713d06566eeb58d8691fcc1ffc2e5952d6 100644 (file)
@@ -228,6 +228,42 @@ static struct omap_hwmod_ocp_if dm816x_mpu__alwon_l3_med = {
        .user   = OCP_USER_MPU,
 };
 
+/* RTC */
+static struct omap_hwmod_class_sysconfig ti81xx_rtc_sysc = {
+       .rev_offs       = 0x74,
+       .sysc_offs      = 0x78,
+       .sysc_flags     = SYSC_HAS_SIDLEMODE,
+       .idlemodes      = SIDLE_FORCE | SIDLE_NO |
+                         SIDLE_SMART | SIDLE_SMART_WKUP,
+       .sysc_fields    = &omap_hwmod_sysc_type3,
+};
+
+static struct omap_hwmod_class ti81xx_rtc_hwmod_class = {
+       .name           = "rtc",
+       .sysc           = &ti81xx_rtc_sysc,
+};
+
+struct omap_hwmod ti81xx_rtc_hwmod = {
+       .name           = "rtc",
+       .class          = &ti81xx_rtc_hwmod_class,
+       .clkdm_name     = "alwon_l3s_clkdm",
+       .flags          = HWMOD_NO_IDLEST,
+       .main_clk       = "sysclk18_ck",
+       .prcm           = {
+               .omap4  = {
+                       .clkctrl_offs = DM81XX_CM_ALWON_RTC_CLKCTRL,
+                       .modulemode = MODULEMODE_SWCTRL,
+               },
+       },
+};
+
+static struct omap_hwmod_ocp_if ti81xx_l4_ls__rtc = {
+       .master         = &dm81xx_l4_ls_hwmod,
+       .slave          = &ti81xx_rtc_hwmod,
+       .clk            = "sysclk6_ck",
+       .user           = OCP_USER_MPU,
+};
+
 /* UART common */
 static struct omap_hwmod_class_sysconfig uart_sysc = {
        .rev_offs       = 0x50,
@@ -429,6 +465,7 @@ static struct omap_hwmod dm81xx_elm_hwmod = {
 static struct omap_hwmod_ocp_if dm81xx_l4_ls__elm = {
        .master         = &dm81xx_l4_ls_hwmod,
        .slave          = &dm81xx_elm_hwmod,
+       .clk            = "sysclk6_ck",
        .user           = OCP_USER_MPU,
 };
 
@@ -478,6 +515,7 @@ static struct omap_hwmod dm81xx_gpio1_hwmod = {
 static struct omap_hwmod_ocp_if dm81xx_l4_ls__gpio1 = {
        .master         = &dm81xx_l4_ls_hwmod,
        .slave          = &dm81xx_gpio1_hwmod,
+       .clk            = "sysclk6_ck",
        .user           = OCP_USER_MPU,
 };
 
@@ -504,6 +542,7 @@ static struct omap_hwmod dm81xx_gpio2_hwmod = {
 static struct omap_hwmod_ocp_if dm81xx_l4_ls__gpio2 = {
        .master         = &dm81xx_l4_ls_hwmod,
        .slave          = &dm81xx_gpio2_hwmod,
+       .clk            = "sysclk6_ck",
        .user           = OCP_USER_MPU,
 };
 
@@ -543,9 +582,11 @@ static struct omap_hwmod_ocp_if dm81xx_alwon_l3_slow__gpmc = {
        .user           = OCP_USER_MPU,
 };
 
+/* USB needs udelay 1 after reset at least on hp t410, use 2 for margin */
 static struct omap_hwmod_class_sysconfig dm81xx_usbhsotg_sysc = {
        .rev_offs       = 0x0,
        .sysc_offs      = 0x10,
+       .srst_udelay    = 2,
        .sysc_flags     = SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE |
                                SYSC_HAS_SOFTRESET,
        .idlemodes      = SIDLE_SMART | MSTANDBY_FORCE | MSTANDBY_SMART,
@@ -628,7 +669,7 @@ static struct omap_hwmod dm814x_timer1_hwmod = {
 static struct omap_hwmod_ocp_if dm814x_l4_ls__timer1 = {
        .master         = &dm81xx_l4_ls_hwmod,
        .slave          = &dm814x_timer1_hwmod,
-       .clk            = "timer1_fck",
+       .clk            = "sysclk6_ck",
        .user           = OCP_USER_MPU,
 };
 
@@ -665,7 +706,7 @@ static struct omap_hwmod dm814x_timer2_hwmod = {
 static struct omap_hwmod_ocp_if dm814x_l4_ls__timer2 = {
        .master         = &dm81xx_l4_ls_hwmod,
        .slave          = &dm814x_timer2_hwmod,
-       .clk            = "timer2_fck",
+       .clk            = "sysclk6_ck",
        .user           = OCP_USER_MPU,
 };
 
@@ -1123,6 +1164,7 @@ static struct omap_hwmod dm81xx_mailbox_hwmod = {
 static struct omap_hwmod_ocp_if dm81xx_l4_ls__mailbox = {
        .master         = &dm81xx_l4_ls_hwmod,
        .slave          = &dm81xx_mailbox_hwmod,
+       .clk            = "sysclk6_ck",
        .user           = OCP_USER_MPU,
 };
 
@@ -1157,6 +1199,7 @@ static struct omap_hwmod dm81xx_spinbox_hwmod = {
 static struct omap_hwmod_ocp_if dm81xx_l4_ls__spinbox = {
        .master         = &dm81xx_l4_ls_hwmod,
        .slave          = &dm81xx_spinbox_hwmod,
+       .clk            = "sysclk6_ck",
        .user           = OCP_USER_MPU,
 };
 
@@ -1376,6 +1419,7 @@ static struct omap_hwmod_ocp_if *dm814x_hwmod_ocp_ifs[] __initdata = {
        &dm81xx_l4_ls__mcspi1,
        &dm814x_l4_ls__mmc1,
        &dm814x_l4_ls__mmc2,
+       &ti81xx_l4_ls__rtc,
        &dm81xx_alwon_l3_fast__tpcc,
        &dm81xx_alwon_l3_fast__tptc0,
        &dm81xx_alwon_l3_fast__tptc1,
@@ -1415,6 +1459,7 @@ static struct omap_hwmod_ocp_if *dm816x_hwmod_ocp_ifs[] __initdata = {
        &dm81xx_l4_ls__gpio1,
        &dm81xx_l4_ls__gpio2,
        &dm81xx_l4_ls__elm,
+       &ti81xx_l4_ls__rtc,
        &dm816x_l4_ls__mmc1,
        &dm816x_l4_ls__timer1,
        &dm816x_l4_ls__timer2,