summaryrefslogtreecommitdiffstats
path: root/bootloader
diff options
context:
space:
mode:
authorMarcin Bukat <marcin.bukat@gmail.com>2010-07-06 17:30:10 +0000
committerMarcin Bukat <marcin.bukat@gmail.com>2010-07-06 17:30:10 +0000
commit57484bdf0458ec0f0f0c447b929b128e4b54a294 (patch)
tree4df0ad30ce755018004aaed52d3077497e014c8d /bootloader
parentf99e4fb3bf5e93db4b3a9f3e1df94883570ab72e (diff)
downloadrockbox-57484bdf0458ec0f0f0c447b929b128e4b54a294.tar.gz
rockbox-57484bdf0458ec0f0f0c447b929b128e4b54a294.tar.bz2
rockbox-57484bdf0458ec0f0f0c447b929b128e4b54a294.zip
HD200 - add support for remote in bootloader
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27316 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'bootloader')
-rw-r--r--bootloader/mpio_hd200.c45
1 files changed, 38 insertions, 7 deletions
diff --git a/bootloader/mpio_hd200.c b/bootloader/mpio_hd200.c
index 5b72dd3243..0eec84d6d5 100644
--- a/bootloader/mpio_hd200.c
+++ b/bootloader/mpio_hd200.c
@@ -186,6 +186,9 @@ static void rb_boot(void)
{
int rc;
+ /* boost to speedup rb image loading */
+ cpu_boost(true);
+
rc = storage_init();
if(rc)
{
@@ -218,6 +221,7 @@ static void rb_boot(void)
return;
}
+ cpu_boost(false);
start_rockbox();
}
@@ -272,6 +276,7 @@ static void bootmenu(void)
switch (button)
{
case BUTTON_PREV:
+ case BUTTON_RC_PREV:
if (option > rockbox)
option--;
else
@@ -279,6 +284,7 @@ static void bootmenu(void)
break;
case BUTTON_NEXT:
+ case BUTTON_RC_NEXT:
if (option < shutdown)
option++;
else
@@ -286,6 +292,7 @@ static void bootmenu(void)
break;
case BUTTON_PLAY:
+ case BUTTON_RC_PLAY:
case (BUTTON_PLAY|BUTTON_REC):
reset_screen();
@@ -322,6 +329,9 @@ void main(void)
unsigned int event = EVENT_NONE;
unsigned int last_event = EVENT_NONE;
+ /* this is default mode after power_init() */
+ bool high_current_charging = true;
+
power_init();
system_init();
@@ -360,7 +370,7 @@ void main(void)
event = EVENT_NONE;
button = button_get_w_tmo(HZ);
- if ( button & BUTTON_PLAY )
+ if ( (button & BUTTON_PLAY) || (button & BUTTON_RC_PLAY) )
event |= EVENT_ON;
if ( usb_detect() == USB_INSERTED )
@@ -388,8 +398,7 @@ void main(void)
case EVENT_AC:
if (!(last_event & EVENT_AC))
{
- /* high current charge */
- or_l((1<<15),&GPIO_OUT);
+ /* reset charging circuit */
and_l(~(1<<23), &GPIO_ENABLE);
}
@@ -407,9 +416,25 @@ void main(void)
blink_toggle = !blink_toggle;
}
- else
+ else /* end of charge condition */
{
- lcd_putstring_centered(complete_msg);
+ /* put LTC1733 into shutdown mode */
+ or_l((1<<23), &GPIO_ENABLE);
+
+ if (high_current_charging)
+ {
+ /* switch to low current mode */
+ and_l(~(1<<15), &GPIO_OUT);
+
+ /* reset charging circuit */
+ and_l(~(1<<23), &GPIO_ENABLE);
+
+ high_current_charging = false;
+ }
+ else
+ {
+ lcd_putstring_centered(complete_msg);
+ }
}
check_battery();
break;
@@ -418,8 +443,7 @@ void main(void)
case (EVENT_USB | EVENT_AC):
if (!(last_event & EVENT_AC))
{
- /* high current charge */
- or_l((1<<15),&GPIO_OUT);
+ /* reset charger circuit */
and_l(~(1<<23), &GPIO_ENABLE);
}
@@ -442,6 +466,13 @@ void main(void)
break;
default:
+ if (last_event & EVENT_USB)
+ {
+ /* USB unplug */
+ usb_enable(false);
+ ide_power_enable(false);
+ }
+
/* spurious wakeup */
__shutdown();
break;