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
This commit is contained in:
Dana Conrad 2021-11-10 17:31:03 -06:00 committed by Aidan MacDonald
parent ee27ba416f
commit 59ef877c94
2 changed files with 13 additions and 3 deletions

View file

@ -693,10 +693,18 @@ static void power_thread(void)
/* Delay reading the first battery level */ /* Delay reading the first battery level */
#ifdef MROBE_100 #ifdef MROBE_100
while (_battery_voltage() > 4200) /* gives false readings initially */ while (_battery_voltage() > 4200) /* gives false readings initially */
{
#elif defined(DX50) || defined(DX90) #elif defined(DX50) || defined(DX90)
while (_battery_voltage() < 1) /* can give false readings initially */ 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); sleep(HZ/100);
} }

View file

@ -79,8 +79,10 @@ void power_init(void)
axp_set_charge_current(780); axp_set_charge_current(780);
/* Delay to give power outputs time to stabilize. /* Delay to give power outputs time to stabilize.
* Had one report that 190 was not long enough, let's do 250. */ * With the power thread delay, this can apparently go as low as 50,
mdelay(250); * Keeping a higher value here just to ensure the bootloader works
* correctly. */
mdelay(200);
} }
#ifdef HAVE_USB_CHARGING_ENABLE #ifdef HAVE_USB_CHARGING_ENABLE