From 59ef877c94c9cabd9007e86994bc858c35fd5c95 Mon Sep 17 00:00:00 2001 From: Dana Conrad Date: Wed, 10 Nov 2021 17:31:03 -0600 Subject: [PATCH] x1000: delay power thread until valid battery read Appears to return 0 until the axp has (presumably) completed its first real measurement. Note about erosq: keep the power_inint() delay large to ensure nothing breaks in the bootloader for the time being. Change-Id: I444e858207cc401c42f1e6ceacf067ad543d4ff8 --- firmware/powermgmt.c | 10 +++++++++- .../mips/ingenic_x1000/erosqnative/power-erosqnative.c | 6 ++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/firmware/powermgmt.c b/firmware/powermgmt.c index aaec959f50..519823611f 100644 --- a/firmware/powermgmt.c +++ b/firmware/powermgmt.c @@ -693,10 +693,18 @@ static void power_thread(void) /* Delay reading the first battery level */ #ifdef MROBE_100 while (_battery_voltage() > 4200) /* gives false readings initially */ + { #elif defined(DX50) || defined(DX90) while (_battery_voltage() < 1) /* can give false readings initially */ -#endif { +#elif defined(EROS_QN) || defined(FIIO_M3K) || defined(SHANLING_Q1) + + /* wait until the first battery read is ready */ + while (_battery_voltage() <= 0) + { +#else + { +#endif sleep(HZ/100); } diff --git a/firmware/target/mips/ingenic_x1000/erosqnative/power-erosqnative.c b/firmware/target/mips/ingenic_x1000/erosqnative/power-erosqnative.c index cea8f35a40..5573919aa2 100644 --- a/firmware/target/mips/ingenic_x1000/erosqnative/power-erosqnative.c +++ b/firmware/target/mips/ingenic_x1000/erosqnative/power-erosqnative.c @@ -79,8 +79,10 @@ void power_init(void) axp_set_charge_current(780); /* Delay to give power outputs time to stabilize. - * Had one report that 190 was not long enough, let's do 250. */ - mdelay(250); + * With the power thread delay, this can apparently go as low as 50, + * Keeping a higher value here just to ensure the bootloader works + * correctly. */ + mdelay(200); } #ifdef HAVE_USB_CHARGING_ENABLE