summaryrefslogtreecommitdiffstats
path: root/firmware
diff options
context:
space:
mode:
authorDana Conrad <dconrad@fastmail.com>2021-11-10 17:31:03 -0600
committerAidan MacDonald <amachronic@protonmail.com>2021-11-12 16:31:27 -0500
commit59ef877c94c9cabd9007e86994bc858c35fd5c95 (patch)
tree2e4bb88ec310ee073e376920c0cf3e6c6cc00423 /firmware
parentee27ba416feaa9e0efe67981021338f6516258b7 (diff)
downloadrockbox-59ef877c94c9cabd9007e86994bc858c35fd5c95.tar.gz
rockbox-59ef877c94c9cabd9007e86994bc858c35fd5c95.zip
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
Diffstat (limited to 'firmware')
-rw-r--r--firmware/powermgmt.c10
-rw-r--r--firmware/target/mips/ingenic_x1000/erosqnative/power-erosqnative.c6
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