From patchwork Thu Jul 19 13:26:32 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tero Kristo X-Patchwork-Id: 1216941 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) by patchwork1.kernel.org (Postfix) with ESMTP id 23BB83FD48 for ; Thu, 19 Jul 2012 13:52:18 +0000 (UTC) Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.76 #1 (Red Hat Linux)) id 1Srr3l-0004lb-Ve; Thu, 19 Jul 2012 13:46:31 +0000 Received: from comal.ext.ti.com ([198.47.26.152]) by merlin.infradead.org with esmtps (Exim 4.76 #1 (Red Hat Linux)) id 1Srql5-0001Fo-BM for linux-arm-kernel@lists.infradead.org; Thu, 19 Jul 2012 13:27:24 +0000 Received: from dlelxv30.itg.ti.com ([172.17.2.17]) by comal.ext.ti.com (8.13.7/8.13.7) with ESMTP id q6JDRA3N020701; Thu, 19 Jul 2012 08:27:10 -0500 Received: from DFLE72.ent.ti.com (dfle72.ent.ti.com [128.247.5.109]) by dlelxv30.itg.ti.com (8.13.8/8.13.8) with ESMTP id q6JDRAmu012237; Thu, 19 Jul 2012 08:27:10 -0500 Received: from dlelxv22.itg.ti.com (172.17.1.197) by dfle72.ent.ti.com (128.247.5.109) with Microsoft SMTP Server id 14.1.323.3; Thu, 19 Jul 2012 08:27:10 -0500 Received: from localhost.localdomain (h64-4.vpn.ti.com [172.24.64.4]) by dlelxv22.itg.ti.com (8.13.8/8.13.8) with ESMTP id q6JDQliS019992; Thu, 19 Jul 2012 08:27:08 -0500 From: Tero Kristo To: , , , , Subject: [PATCHv7 12/12] ARM: OMAP4: hwmod: update context lost counter logic for hwmods without context reg Date: Thu, 19 Jul 2012 16:26:32 +0300 Message-ID: <1342704392-23657-13-git-send-email-t-kristo@ti.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1342704392-23657-1-git-send-email-t-kristo@ti.com> References: <1342704392-23657-1-git-send-email-t-kristo@ti.com> MIME-Version: 1.0 X-Spam-Note: CRM114 invocation failed X-Spam-Score: -6.9 (------) X-Spam-Report: SpamAssassin version 3.3.2 on merlin.infradead.org summary: Content analysis details: (-6.9 points) pts rule name description ---- ---------------------- -------------------------------------------------- -5.0 RCVD_IN_DNSWL_HI RBL: Sender listed at http://www.dnswl.org/, high trust [198.47.26.152 listed in list.dnswl.org] -0.0 T_RP_MATCHES_RCVD Envelope sender domain matches handover relay domain -0.0 SPF_PASS SPF: sender matches SPF record -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] Cc: linux-arm-kernel@lists.infradead.org X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-arm-kernel-bounces@lists.infradead.org Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org With this patch, the hwmods that don't have context register, will now increment their context lost counter always unless they belong to an always on powerdomain which never loses context. The always on pwrdm type is checked by looking at the the powerdomain registered for the hwmod, and seeing if it only has ON within its valid powerstates. Signed-off-by: Tero Kristo --- arch/arm/mach-omap2/omap_hwmod.c | 21 ++++++++++++++++++++- 1 files changed, 20 insertions(+), 1 deletions(-) diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c index 3ebf93e..daf5322 100644 --- a/arch/arm/mach-omap2/omap_hwmod.c +++ b/arch/arm/mach-omap2/omap_hwmod.c @@ -1802,9 +1802,28 @@ static void _reconfigure_io_chain(void) static void _omap4_update_context_lost(struct omap_hwmod *oh) { u32 r; + struct powerdomain *pwrdm; + + /* Special handling if we have not defined context register */ + if (oh->prcm.omap4.context_offs == USHRT_MAX) { + /* Get powerdomain pointer for this hwmod */ + if (oh->clkdm) + pwrdm = oh->clkdm->pwrdm.ptr; + else + pwrdm = NULL; - if (oh->prcm.omap4.context_offs == USHRT_MAX) + /* + * If our powerdomain is of 'always on' type (i.e. + * available powerstates == PWRSTS_ON), don't increment + * context lost and return + */ + if (pwrdm && pwrdm->pwrsts == PWRSTS_ON) + return; + + /* Otherwise, increase context lost counter and return */ + oh->prcm.omap4.context_lost_counter++; return; + } r = omap4_prminst_read_inst_reg(oh->clkdm->pwrdm.ptr->prcm_partition, oh->clkdm->pwrdm.ptr->prcm_offs,