summaryrefslogtreecommitdiffstats
path: root/bootloader/iriver_h1x0.c
diff options
context:
space:
mode:
Diffstat (limited to 'bootloader/iriver_h1x0.c')
-rw-r--r--bootloader/iriver_h1x0.c31
1 files changed, 14 insertions, 17 deletions
diff --git a/bootloader/iriver_h1x0.c b/bootloader/iriver_h1x0.c
index 94ec6cb0fb..7efaaa3308 100644
--- a/bootloader/iriver_h1x0.c
+++ b/bootloader/iriver_h1x0.c
@@ -479,19 +479,6 @@ void main(void)
check_battery();
- /* Don't start if the Hold button is active on the device you
- are starting with */
- if ((usb_detect() != USB_INSERTED) && (hold_status || recovery_mode))
- {
- if (detect_original_firmware())
- {
- printf("Hold switch on");
- shutdown();
- }
-
- failsafe_menu();
- }
-
/* Holding REC while starting runs the original firmware */
if (detect_original_firmware() && rec_button)
{
@@ -544,10 +531,20 @@ void main(void)
lcd_update();
}
- /* boot from flash if that is the default */
- try_flashboot();
- if (recovery_mode)
- printf("Falling back to boot from disk");
+ /* recheck the hold switch status as it may have changed */
+ hold_status = (button_hold() || remote_button_hold());
+
+ /* hold switch shutdown or failsafe recovery mode */
+ if (hold_status || recovery_mode)
+ {
+ if (detect_original_firmware())
+ {
+ printf("Hold switch on");
+ shutdown();
+ }
+
+ failsafe_menu();
+ }
rc = storage_init();
if(rc)