=== modified file 'bootloader/ipod.c' --- bootloader/ipod.c 2009-05-12 19:41:44 +0000 +++ bootloader/ipod.c 2010-04-13 15:04:49 +0000 @@ -43,6 +43,7 @@ #include "file.h" #include "common.h" #include "hwcompat.h" +#include "usb.h" #define XSC(X) #X #define SC(X) XSC(X) @@ -58,12 +59,6 @@ /* Bootloader version */ char version[] = APPSVERSION; -#define BUTTON_LEFT 1 -#define BUTTON_MENU 2 -#define BUTTON_RIGHT 3 -#define BUTTON_PLAY 4 -#define BUTTON_HOLD 5 - #if CONFIG_KEYPAD == IPOD_4G_PAD && !defined(IPOD_MINI) /* check if number of seconds has past */ int timer_check(int clock_start, unsigned int usecs) @@ -206,6 +201,7 @@ #endif lcd_update(); + usb_init(); while (1) { if (button_hold() != holdstatus) { if (button_hold()) { @@ -217,6 +213,18 @@ } lcd_update(); } + if (usb_detect() == USB_INSERTED) { + ata_sleepnow(); /* Immediately spindown the disk. */ + sleep(HZ*2); +#if CONFIG_CPU == PP5020 + memcpy((void *)0x40017f00, "diskmode\0\0hotstuff\0\0\1", 21); +#elif CONFIG_CPU == PP5022 + memcpy((void *)0x4001ff00, "diskmode\0\0hotstuff\0\0\1", 21); +#elif CONFIG_CPU == PP5002 + memcpy((void *)0x40017f00, "diskmodehotstuff\1", 17); +#endif /* CONFIG_CPU */ + system_reboot(); /* Reboot */ + } udelay(100000); /* 100ms */ }