@@ -48,9 +48,14 @@ void __iomem *prcm_mpu_base;
u32 omap_prcm_get_reset_sources(void)
{
- /* XXX This presumably needs modification for 34XX */
- if (cpu_is_omap24xx() || cpu_is_omap34xx())
+ if (cpu_is_omap24xx())
return omap2_prm_read_mod_reg(WKUP_MOD, OMAP2_RM_RSTST) & 0x7f;
+
+ /* XXX This presumably needs modification for AM33XX when ready. */
+ if (cpu_is_omap34xx())
+ return omap2_prm_read_mod_reg(OMAP3430_GR_MOD, OMAP2_RM_RSTST) &
+ 0x7f;
+
if (cpu_is_omap44xx())
return omap2_prm_read_mod_reg(WKUP_MOD, OMAP4_RM_RSTST) & 0x7f;
The offset of WKUP_MOD is not right for the PRM_RSTST of OMAP3. So here put the right one to match to the actual physical addr 0x48307258, which defined in PRCM Registers section named as Global_Reg_PRM. And there is a MPU_WD_RST bit in PRM_RSTST(0x48307258) holding the signal from omap-wdt reboot, so that we can return WDIOF_CARDRESET if the board wakes up from omap-wdt reboot for WDIOC_GETBOOTSTATUS ioctl. Signed-off-by: Zumeng Chen <zumeng.chen@windriver.com> --- arch/arm/mach-omap2/prcm.c | 9 +++++++-- 1 files changed, 7 insertions(+), 2 deletions(-)