[PATCHv7 12/12] ARM: OMAP4: hwmod: update context lost counter logic for hwmods without context reg

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 <t-kristo@xxxxxx>
---
 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,
-- 
1.7.4.1

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux