From patchwork Wed Dec 8 09:09:24 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jean Pihet X-Patchwork-Id: 390212 X-Patchwork-Delegate: khilman@deeprootsystems.com Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id oB899oS4031662 for ; Wed, 8 Dec 2010 09:09:51 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754054Ab0LHJJs (ORCPT ); Wed, 8 Dec 2010 04:09:48 -0500 Received: from mail-ww0-f44.google.com ([74.125.82.44]:63870 "EHLO mail-ww0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752639Ab0LHJJq (ORCPT ); Wed, 8 Dec 2010 04:09:46 -0500 Received: by wwa36 with SMTP id 36so925115wwa.1 for ; Wed, 08 Dec 2010 01:09:44 -0800 (PST) Received: by 10.227.134.5 with SMTP id h5mr8730594wbt.179.1291799384858; Wed, 08 Dec 2010 01:09:44 -0800 (PST) Received: from localhost.localdomain (117.24-245-81.adsl-dyn.isp.belgacom.be [81.245.24.117]) by mx.google.com with ESMTPS id m10sm240062wbc.4.2010.12.08.01.09.43 (version=TLSv1/SSLv3 cipher=RC4-MD5); Wed, 08 Dec 2010 01:09:44 -0800 (PST) From: jean.pihet@newoldbits.com To: linux-omap@vger.kernel.org Cc: Jean Pihet , Kevin Hilman Subject: [PATCH v2] OMAP2+: disable idle early in the suspend sequence Date: Wed, 8 Dec 2010 10:09:24 +0100 Message-Id: <1291799364-23154-1-git-send-email-jean.pihet@newoldbits.com> X-Mailer: git-send-email 1.7.1 Sender: linux-omap-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-omap@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter1.kernel.org [140.211.167.41]); Wed, 08 Dec 2010 09:09:51 +0000 (UTC) diff --git a/arch/arm/mach-omap2/pm24xx.c b/arch/arm/mach-omap2/pm24xx.c index c85923e..3820179 100644 --- a/arch/arm/mach-omap2/pm24xx.c +++ b/arch/arm/mach-omap2/pm24xx.c @@ -286,8 +286,6 @@ out: static int omap2_pm_prepare(void) { - /* We cannot sleep in idle until we have resumed */ - disable_hlt(); return 0; } @@ -330,10 +328,24 @@ static int omap2_pm_enter(suspend_state_t state) static void omap2_pm_finish(void) { +} + +static int omap2_pm_begin(suspend_state_t state) +{ + /* We cannot sleep in idle until we have resumed */ + disable_hlt(); + return 0; +} + +static void omap2_pm_end(void) +{ enable_hlt(); + return; } static struct platform_suspend_ops omap_pm_ops = { + .begin = omap2_pm_begin, + .end = omap2_pm_end, .prepare = omap2_pm_prepare, .enter = omap2_pm_enter, .finish = omap2_pm_finish, diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c index 0ec8a04..ec80d38 100644 --- a/arch/arm/mach-omap2/pm34xx.c +++ b/arch/arm/mach-omap2/pm34xx.c @@ -518,7 +518,6 @@ static suspend_state_t suspend_state; static int omap3_pm_prepare(void) { - disable_hlt(); return 0; } @@ -586,12 +585,12 @@ static int omap3_pm_enter(suspend_state_t unused) 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) { + disable_hlt(); suspend_state = state; omap_uart_enable_irqs(0); return 0; @@ -601,6 +600,7 @@ static void omap3_pm_end(void) { suspend_state = PM_SUSPEND_ON; omap_uart_enable_irqs(1); + enable_hlt(); return; } diff --git a/arch/arm/mach-omap2/pm44xx.c b/arch/arm/mach-omap2/pm44xx.c index 54544b4..f4c4fab 100644 --- a/arch/arm/mach-omap2/pm44xx.c +++ b/arch/arm/mach-omap2/pm44xx.c @@ -33,7 +33,6 @@ static LIST_HEAD(pwrst_list); #ifdef CONFIG_SUSPEND static int omap4_pm_prepare(void) { - disable_hlt(); return 0; } @@ -61,17 +60,18 @@ static int omap4_pm_enter(suspend_state_t suspend_state) static void omap4_pm_finish(void) { - enable_hlt(); return; } static int omap4_pm_begin(suspend_state_t state) { + disable_hlt(); return 0; } static void omap4_pm_end(void) { + enable_hlt(); return; }