Index: firmware/target/arm/ipod/power-ipod.c =================================================================== --- firmware/target/arm/ipod/power-ipod.c (revision 22379) +++ firmware/target/arm/ipod/power-ipod.c (working copy) @@ -28,6 +28,10 @@ #include "pcf50605.h" #include "usb.h" #include "lcd.h" +#include "string.h" +#if CONFIG_CPU == PP5022 || CONFIG_CPU == PP5020 +#include "rtc.h" +#endif void power_init(void) { @@ -152,9 +156,24 @@ #endif #ifndef BOOTLOADER -#ifdef IPOD_1G2G +#if CONFIG_CPU == PP5022 || CONFIG_CPU == PP5020 + /* When shut down by OF, wakeup via alarm is enabled. This resets the + alarm time so an unintended wakeup does not occur. */ + if (!(pcf50605_wakeup_flags & 0x10)) + rtc_enable_alarm(false); +#endif +#if defined(IPOD_1G2G) /* we cannot turn off the 1st gen/ 2nd gen yet. Need to figure out sleep mode. */ system_reboot(); +#elif CONFIG_CPU == PP5022 + /* The OF in flash assumes boot failed because the battery is low. + If there is no charger connected, this leads to a shutdown. + */ + memcpy((void *)(0x4001ff00+8), "booting!", 8); + system_reboot(); +#elif CONFIG_CPU == PP5020 + memcpy((void *)(0x40017f00+8), "booting!", 8); + system_reboot(); #else /* We don't turn off the ipod, we put it in a deep sleep */ pcf50605_standby_mode();