ARM: OMAP3: control: add API for setting IVA bootmode
authorTero Kristo <t-kristo@ti.com>
Fri, 11 Oct 2013 16:15:38 +0000 (19:15 +0300)
committerPaul Walmsley <paul@pwsan.com>
Sat, 19 Oct 2013 16:11:52 +0000 (10:11 -0600)
OMAP3 PM core requires IVA2 bootmode to be set to idle during init. Currently,
a direct register write is used for this. Add a new ctrl API for this purpose
instead.

Signed-off-by: Tero Kristo <t-kristo@ti.com>
Signed-off-by: Paul Walmsley <paul@pwsan.com>
arch/arm/mach-omap2/control.c
arch/arm/mach-omap2/control.h
arch/arm/mach-omap2/pm34xx.c

index a597114..44bb4d5 100644 (file)
@@ -569,4 +569,15 @@ int omap3_ctrl_save_padconf(void)
        return 0;
 }
 
+/**
+ * omap3_ctrl_set_iva_bootmode_idle - sets the IVA2 bootmode to idle
+ *
+ * Sets the bootmode for IVA2 to idle. This is needed by the PM code to
+ * force disable IVA2 so that it does not prevent any low-power states.
+ */
+void omap3_ctrl_set_iva_bootmode_idle(void)
+{
+       omap_ctrl_writel(OMAP3_IVA2_BOOTMOD_IDLE,
+                        OMAP343X_CONTROL_IVA2_BOOTMOD);
+}
 #endif /* CONFIG_ARCH_OMAP3 && CONFIG_PM */
index f7d7c2e..da05480 100644 (file)
@@ -427,6 +427,7 @@ extern void omap_ctrl_write_dsp_boot_addr(u32 bootaddr);
 extern void omap_ctrl_write_dsp_boot_mode(u8 bootmode);
 extern void omap3630_ctrl_disable_rta(void);
 extern int omap3_ctrl_save_padconf(void);
+extern void omap3_ctrl_set_iva_bootmode_idle(void);
 extern void omap2_set_globals_control(void __iomem *ctrl,
                                      void __iomem *ctrl_pad);
 #else
index 5a2d803..93b80e5 100644 (file)
@@ -430,8 +430,7 @@ static void __init omap3_iva_idle(void)
                         OMAP3430_IVA2_MOD, CM_FCLKEN);
 
        /* Set IVA2 boot mode to 'idle' */
-       omap_ctrl_writel(OMAP3_IVA2_BOOTMOD_IDLE,
-                        OMAP343X_CONTROL_IVA2_BOOTMOD);
+       omap3_ctrl_set_iva_bootmode_idle();
 
        /* Un-reset IVA2 */
        omap2_prm_write_mod_reg(0, OMAP3430_IVA2_MOD, OMAP2_RM_RSTCTRL);