From a4fd5bf7cb3d8d071c5fb9d45255c8f85e517b7a Mon Sep 17 00:00:00 2001 From: Amaury Pouly Date: Thu, 15 Mar 2012 14:58:15 +0100 Subject: [PATCH] imx233: enable charging in bootloader USB mode by including powermgmt Change-Id: I8b91b3ab60cb9ffaa127333e9bcef8c33be742fa --- bootloader/imx233.c | 13 +++++++++++++ firmware/SOURCES | 2 +- firmware/powermgmt.c | 6 ++++-- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/bootloader/imx233.c b/bootloader/imx233.c index 2380dfae5b..6d356b9cce 100644 --- a/bootloader/imx233.c +++ b/bootloader/imx233.c @@ -39,6 +39,7 @@ #include "system-target.h" #include "fmradio_i2c.h" #include "version.h" +#include "powermgmt.h" #include "usb.h" @@ -81,6 +82,8 @@ static void usb_mode(int connect_timeout) { /* Got the message - wait for disconnect */ printf("Bootloader USB mode"); + /* Enable power management to charge */ + powermgmt_init(); usb_acknowledge(SYS_USB_CONNECTED_ACK); @@ -89,6 +92,16 @@ static void usb_mode(int connect_timeout) button = button_get_w_tmo(HZ/2); if(button == SYS_USB_DISCONNECTED) break; + struct imx233_powermgmt_info_t info = imx233_powermgmt_get_info(); + lcd_putsf(0, 7, "Charging status: %s", + info.state == CHARGE_STATE_DISABLED ? "disabled" : + info.state == CHARGE_STATE_ERROR ? "error" : + info.state == DISCHARGING ? "discharging" : + info.state == TRICKLE ? "trickle" : + info.state == TOPOFF ? "topoff" : + info.state == CHARGING ? "charging" : ""); + lcd_putsf(0, 8, "Battery: %d%%", battery_level()); + lcd_update(); } } diff --git a/firmware/SOURCES b/firmware/SOURCES index 9b0f83d0ed..a791cbbc94 100644 --- a/firmware/SOURCES +++ b/firmware/SOURCES @@ -1335,9 +1335,9 @@ target/arm/imx233/sansa-fuzeplus/button-fuzeplus.c target/arm/imx233/sansa-fuzeplus/debug-fuzeplus.c target/arm/imx233/sansa-fuzeplus/power-fuzeplus.c target/arm/imx233/sansa-fuzeplus/adc-fuzeplus.c +target/arm/imx233/sansa-fuzeplus/powermgmt-fuzeplus.c #ifndef BOOTLOADER target/arm/imx233/sansa-fuzeplus/audio-fuzeplus.c -target/arm/imx233/sansa-fuzeplus/powermgmt-fuzeplus.c #endif #endif diff --git a/firmware/powermgmt.c b/firmware/powermgmt.c index b31dc81624..379b91ca13 100644 --- a/firmware/powermgmt.c +++ b/firmware/powermgmt.c @@ -889,9 +889,9 @@ void set_keypress_restarts_sleep_timer(bool enable) sleeptimer_key_restarts = enable; } +#ifndef BOOTLOADER static void handle_sleep_timer(void) { -#ifndef BOOTLOADER if (!sleeptimer_active) return; @@ -912,8 +912,8 @@ static void handle_sleep_timer(void) sys_poweroff(); } } -#endif /* BOOTLOADER */ } +#endif /* BOOTLOADER */ /* * We shut off in the following cases: @@ -929,6 +929,7 @@ static void handle_sleep_timer(void) */ void handle_auto_poweroff(void) { +#ifndef BOOTLOADER long timeout = poweroff_timeout*60*HZ; int audio_stat = audio_status(); long tick = current_tick; @@ -968,4 +969,5 @@ void handle_auto_poweroff(void) } } else handle_sleep_timer(); +#endif }