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