diff options
Diffstat (limited to 'bootloader/iriver_h300.c')
-rw-r--r-- | bootloader/iriver_h300.c | 32 |
1 files changed, 14 insertions, 18 deletions
diff --git a/bootloader/iriver_h300.c b/bootloader/iriver_h300.c index 2e4909fd53..3a254f4487 100644 --- a/bootloader/iriver_h300.c +++ b/bootloader/iriver_h300.c @@ -473,20 +473,6 @@ void main(void) if(rtc_alarm) printf("RTC alarm detected"); - /* Don't start if the Hold button is active on the device you - are starting with */ - if ((hold_status || recovery_mode) && !rtc_alarm && - (usb_detect() != USB_INSERTED) && !charger_inserted()) - { - 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) { @@ -605,10 +591,20 @@ void main(void) usb_charge = false; } - /* 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) |