From patchwork Wed Jul 8 18:34:25 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kevin Hilman X-Patchwork-Id: 34687 X-Patchwork-Delegate: khilman@deeprootsystems.com Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id n68IYVFl008787 for ; Wed, 8 Jul 2009 18:34:31 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753841AbZGHSe3 (ORCPT ); Wed, 8 Jul 2009 14:34:29 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1754332AbZGHSe3 (ORCPT ); Wed, 8 Jul 2009 14:34:29 -0400 Received: from mail-px0-f193.google.com ([209.85.216.193]:60477 "EHLO mail-px0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753841AbZGHSe3 (ORCPT ); Wed, 8 Jul 2009 14:34:29 -0400 Received: by pxi31 with SMTP id 31so55310pxi.33 for ; Wed, 08 Jul 2009 11:34:28 -0700 (PDT) Received: by 10.142.126.6 with SMTP id y6mr2653601wfc.122.1247078068118; Wed, 08 Jul 2009 11:34:28 -0700 (PDT) Received: from localhost ([216.254.16.51]) by mx.google.com with ESMTPS id 29sm517527wfg.19.2009.07.08.11.34.26 (version=TLSv1/SSLv3 cipher=RC4-MD5); Wed, 08 Jul 2009 11:34:27 -0700 (PDT) From: Kevin Hilman To: linux-omap@vger.kernel.org Cc: Rajendra Nayak , "Peter 'p2' De Schrijver" Subject: [PATCH] OMAP3: PM: move context-loss counting into OMAP PM Date: Wed, 8 Jul 2009 11:34:25 -0700 Message-Id: <1247078065-348-1-git-send-email-khilman@deeprootsystems.com> X-Mailer: git-send-email 1.6.3.3 Sender: linux-omap-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-omap@vger.kernel.org From: Rajendra Nayak Drop get_last_off_on_transaction_id() and move functionality into OMAP PM layer. For SRF, use omapdev** to get powerdomain state counte for NOOP, use an increasing counter to ensure context is always restord. **NOTE: in future PM branch, this omapdev functinality will be replaced by omap_hwmod. Thus, context loss counting will only exist for modules with omap_hwmod implementations. Cc: Peter 'p2' De Schrijver Signed-off-by: Kevin Hilman --- Applies to current PM branch and pm-2.6.29 arch/arm/mach-omap2/pm.c | 16 ---------------- arch/arm/plat-omap/omap-pm-noop.c | 7 ++++++- arch/arm/plat-omap/omap-pm-srf.c | 11 +++++++++++ 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/arch/arm/mach-omap2/pm.c b/arch/arm/mach-omap2/pm.c index 1192e01..fec7d00 100644 --- a/arch/arm/mach-omap2/pm.c +++ b/arch/arm/mach-omap2/pm.c @@ -31,7 +31,6 @@ #include #include -#include #include #include @@ -221,21 +220,6 @@ void omap2_allow_sleep(void) BUG_ON(i < 0); } -unsigned get_last_off_on_transaction_id(struct device *dev) -{ - struct platform_device *pdev = to_platform_device(dev); - struct omapdev *odev = omapdev_find_pdev(pdev); - struct powerdomain *pwrdm; - - if (odev) { - pwrdm = omapdev_get_pwrdm(odev); - if (pwrdm) - return pwrdm->state_counter[0]; - } - - return 0; -} - static int __init omap_pm_init(void) { int error = -1; diff --git a/arch/arm/plat-omap/omap-pm-noop.c b/arch/arm/plat-omap/omap-pm-noop.c index 4ba261a..07b208b 100644 --- a/arch/arm/plat-omap/omap-pm-noop.c +++ b/arch/arm/plat-omap/omap-pm-noop.c @@ -277,6 +277,8 @@ unsigned long omap_pm_cpu_get_freq(void) int omap_pm_get_dev_context_loss_count(struct device *dev) { + static u32 counter = 0; + if (!dev) { WARN_ON(1); return -EINVAL; @@ -290,7 +292,10 @@ int omap_pm_get_dev_context_loss_count(struct device *dev) * off counter. */ - return 0; + /* For the noop case, we cannot know the off counter, so + * return an increasing counter which will ensure that + * context is always restored. */ + return counter++; } /* diff --git a/arch/arm/plat-omap/omap-pm-srf.c b/arch/arm/plat-omap/omap-pm-srf.c index 226662d..cac08e4 100644 --- a/arch/arm/plat-omap/omap-pm-srf.c +++ b/arch/arm/plat-omap/omap-pm-srf.c @@ -276,6 +276,10 @@ EXPORT_SYMBOL(omap_pm_cpu_get_freq); int omap_pm_get_dev_context_loss_count(struct device *dev) { + struct platform_device *pdev; + struct omapdev *odev; + struct powerdomain *pwrdm; + if (!dev) { WARN_ON(1); return -EINVAL; @@ -288,7 +292,14 @@ int omap_pm_get_dev_context_loss_count(struct device *dev) * Map the device to the powerdomain. Return the powerdomain * off counter. */ + pdev = to_platform_device(dev); + odev = omapdev_find_pdev(pdev); + if (odev) { + pwrdm = omapdev_get_pwrdm(odev); + if (pwrdm) + return pwrdm->state_counter[0]; + } return 0; }