From ae7dd5388dca29acca5b07a591f23d95b5fbcf28 Mon Sep 17 00:00:00 2001 From: Amaury Pouly Date: Sat, 28 May 2016 16:50:07 +0100 Subject: imx233: fix red stop pretending that stmp3600 and stmp3700 have a 4.2V power rail Change-Id: If2506ed3e7c5db96dedc668f0931d59a5197dd88 --- firmware/target/arm/imx233/debug-imx233.c | 5 +++++ firmware/target/arm/imx233/powermgmt-imx233.c | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/firmware/target/arm/imx233/debug-imx233.c b/firmware/target/arm/imx233/debug-imx233.c index 979f743601..01058c40fd 100644 --- a/firmware/target/arm/imx233/debug-imx233.c +++ b/firmware/target/arm/imx233/debug-imx233.c @@ -420,6 +420,8 @@ bool dbg_hw_info_powermgmt(void) } } +#if IMX233_SUBTARGET >= 3780 +/* stmp < 3780 does not have a 4.2V rail and thus cannot do this magic trick */ bool dbg_hw_info_power2(void) { lcd_setfont(FONT_SYSFIXED); @@ -504,6 +506,7 @@ bool dbg_hw_info_power2(void) yield(); } } +#endif /* IMX233_SUBTARGET >= 3780 */ bool dbg_hw_info_rtc(void) { @@ -1192,7 +1195,9 @@ static struct {"dma", dbg_hw_info_dma}, {"lradc", dbg_hw_info_lradc}, {"power", dbg_hw_info_power}, +#if IMX233_SUBTARGET >= 3780 {"power2", dbg_hw_info_power2}, +#endif {"powermgmt", dbg_hw_info_powermgmt}, {"rtc", dbg_hw_info_rtc}, {"dcp", dbg_hw_info_dcp}, diff --git a/firmware/target/arm/imx233/powermgmt-imx233.c b/firmware/target/arm/imx233/powermgmt-imx233.c index 2706ee99fa..3aee5934b9 100644 --- a/firmware/target/arm/imx233/powermgmt-imx233.c +++ b/firmware/target/arm/imx233/powermgmt-imx233.c @@ -70,6 +70,7 @@ void imx233_powermgmt_init(void) #define MAX_4P2_ILIMIT 0x3f +#if IMX233_SUBTARGET >= 3780 /* The code below assumes HZ = 100 so that it runs every 10ms */ #if HZ != 100 #warning The ramp_up_4p2_rail() tick task assumes HZ = 100, this may break charging @@ -81,11 +82,15 @@ static void ramp_up_4p2_rail(void) if(charge_state == TRICKLE && BF_RD(POWER_5VCTRL, CHARGE_4P2_ILIMIT) < MAX_4P2_ILIMIT) HW_POWER_5VCTRL += BF_POWER_5VCTRL_CHARGE_4P2_ILIMIT(1); } +#endif /* IMX233_SUBTARGET >= 3780 */ void powermgmt_init_target(void) { charge_state = DISCHARGING; + /* stmp < 3780 does not have a 4.2 rail */ +#if IMX233_SUBTARGET >= 3780 tick_add_task(&ramp_up_4p2_rail); +#endif } void charging_algorithm_step(void) @@ -191,7 +196,9 @@ void charging_algorithm_step(void) void charging_algorithm_close(void) { +#if IMX233_SUBTARGET >= 3780 tick_remove_task(&ramp_up_4p2_rail); +#endif } struct imx233_powermgmt_info_t imx233_powermgmt_get_info(void) -- cgit v1.2.3