summaryrefslogtreecommitdiffstats
path: root/bootloader/iriver_h300.c
diff options
context:
space:
mode:
authorJames Buren <braewoods+rb@braewoods.net>2020-11-15 09:56:14 +0000
committerJames Buren <braewoods+rb@braewoods.net>2020-11-15 10:11:56 +0000
commitfc5c8192ffc8a10ce5f7ccbd96320dfbade1a8ef (patch)
tree427c066b1169d371885d8247c17dd824f0c4f632 /bootloader/iriver_h300.c
parent29a20bd20974780345197e4fe2be4b06ad08954b (diff)
downloadrockbox-fc5c8192ff.tar.gz
rockbox-fc5c8192ff.tar.bz2
rockbox-fc5c8192ff.zip
h1x0/h300: fix h300 bootloader hold switch check
This fixes an early boot bug on the h300 where hold_status is read before it has a chance to properly check whether the hold switch is even active. This was accomplished by porting over the method the h1x0 uses to perform the same check. Change-Id: I04679d82f65a2edcbee4be9a146437c3988040a2
Diffstat (limited to 'bootloader/iriver_h300.c')
-rw-r--r--bootloader/iriver_h300.c27
1 files changed, 20 insertions, 7 deletions
diff --git a/bootloader/iriver_h300.c b/bootloader/iriver_h300.c
index 6cacbc4a42..2e4909fd53 100644
--- a/bootloader/iriver_h300.c
+++ b/bootloader/iriver_h300.c
@@ -425,6 +425,22 @@ void main(void)
adc_init();
button_init();
+ sleep(HZ/50); /* Allow the button driver to check the buttons */
+
+ /* Only check remote hold status if remote power button was actually used. */
+ if (rc_on_button)
+ {
+ lcd_remote_init();
+
+ if (remote_button_hold())
+ hold_status = true;
+ }
+
+ /* Check main hold switch status too. */
+ if (on_button && button_hold())
+ {
+ hold_status = true;
+ }
/* Power on the hard drive early, to speed up the loading. */
if (!hold_status && !recovery_mode)
@@ -436,7 +452,10 @@ void main(void)
}
lcd_init();
- lcd_remote_init();
+
+ if (!rc_on_button)
+ lcd_remote_init();
+
font_init();
lcd_setfont(FONT_SYSFIXED);
@@ -446,7 +465,6 @@ void main(void)
printf("Rockbox boot loader");
printf("Version %s", rbversion);
- sleep(HZ/50); /* Allow the button driver to check the buttons */
rec_button = ((button_status() & BUTTON_REC) == BUTTON_REC)
|| ((button_status() & BUTTON_RC_REC) == BUTTON_RC_REC);
@@ -457,11 +475,6 @@ void main(void)
/* Don't start if the Hold button is active on the device you
are starting with */
- if ((on_button && button_hold()) ||
- (rc_on_button && remote_button_hold()))
- {
- hold_status = true;
- }
if ((hold_status || recovery_mode) && !rtc_alarm &&
(usb_detect() != USB_INSERTED) && !charger_inserted())
{