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: 1216761 Return-Path: X-Original-To: patchwork-linux-omap@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork1.kernel.org (Postfix) with ESMTP id 5D1FD3FD48 for ; Thu, 19 Jul 2012 13:27:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751740Ab2GSN11 (ORCPT ); Thu, 19 Jul 2012 09:27:27 -0400 Received: from comal.ext.ti.com ([198.47.26.152]:56333 "EHLO comal.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751615Ab2GSN10 (ORCPT ); Thu, 19 Jul 2012 09:27:26 -0400 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: , , , , CC: 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 Sender: linux-omap-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-omap@vger.kernel.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,