|
@@ -296,6 +296,8 @@ out:
|
|
|
}
|
|
|
|
|
|
#ifdef CONFIG_SUSPEND
|
|
|
+static suspend_state_t suspend_state;
|
|
|
+
|
|
|
static int omap3_pm_prepare(void)
|
|
|
{
|
|
|
disable_hlt();
|
|
@@ -342,11 +344,11 @@ restore:
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
-static int omap3_pm_enter(suspend_state_t state)
|
|
|
+static int omap3_pm_enter(suspend_state_t unused)
|
|
|
{
|
|
|
int ret = 0;
|
|
|
|
|
|
- switch (state) {
|
|
|
+ switch (suspend_state) {
|
|
|
case PM_SUSPEND_STANDBY:
|
|
|
case PM_SUSPEND_MEM:
|
|
|
ret = omap3_pm_suspend();
|
|
@@ -363,7 +365,24 @@ static void omap3_pm_finish(void)
|
|
|
enable_hlt();
|
|
|
}
|
|
|
|
|
|
+/* Hooks to enable / disable UART interrupts during suspend */
|
|
|
+static int omap3_pm_begin(suspend_state_t state)
|
|
|
+{
|
|
|
+ suspend_state = state;
|
|
|
+ omap_uart_enable_irqs(0);
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+static void omap3_pm_end(void)
|
|
|
+{
|
|
|
+ suspend_state = PM_SUSPEND_ON;
|
|
|
+ omap_uart_enable_irqs(1);
|
|
|
+ return;
|
|
|
+}
|
|
|
+
|
|
|
static struct platform_suspend_ops omap_pm_ops = {
|
|
|
+ .begin = omap3_pm_begin,
|
|
|
+ .end = omap3_pm_end,
|
|
|
.prepare = omap3_pm_prepare,
|
|
|
.enter = omap3_pm_enter,
|
|
|
.finish = omap3_pm_finish,
|