I've been working on getting the TI OMAPPSP-03.00.01.06 kernel to properly suspend/resume on my DM37x board and all was going well until I added OTG support to the kernel and on suspend, the IVA2 and CORE pwrdms would not properly go into suspend. When comparing output from /debug/pm-debug/registers/current to the TRM, I noticed the following:

MOD: CM_IVA2 (48014000)
  04 => 00000017  20 => 00000001  24 => 00000001  34 => 00000001
  40 => 00080a00  44 => 00000001  48 => 00000003
MOD: PRM_IVA2 (48316000)
  50 => 00000007  e0 => 00ff0f05  e4 => 00000ff7  e8 => 00000ff7
  f8 => 00000001

Looking at the TRM, the PRM_IVA2 registers are at 0x48306000, not 0x48316000. OMAP3430_IVA2_MOD is defined in prcm-common.h as -0x800 which means any module + reg_offset address calculation has to be signed. Once I corrected the "unsigned short offset" declaration in pm_module_def, rebuilt and tested again, IVA2/core pwrdms go into suspend correctly (and addresses look correct):


Signed-off-by: Peter Barada <peter.bar...@logicpd.com>


diff --git a/arch/arm/mach-omap2/pm-debug.c b/arch/arm/mach-omap2/pm-debug.c
index 125f565..b731ef3 100644
--- a/arch/arm/mach-omap2/pm-debug.c
+++ b/arch/arm/mach-omap2/pm-debug.c
@@ -199,7 +199,7 @@ enum {
 struct pm_module_def {
     char name[8]; /* Name of the module */
     short type; /* CM or PRM */
-    unsigned short offset;
+    short offset;
     int low; /* First register address on this module */
     int high; /* Last register address on this module */
 };

--
Peter Barada
peter.bar...@gmail.com

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

Reply via email to