Add battery detection
Don't turn on battery LEDs or report it connected if not initialized.
This commit is contained in:
parent
61ca9c7b6a
commit
83c219589a
@ -99,8 +99,10 @@ uint8_t acpi_read(uint8_t addr) {
|
|||||||
// AC adapter connected
|
// AC adapter connected
|
||||||
data |= 1 << 0;
|
data |= 1 << 0;
|
||||||
}
|
}
|
||||||
// BAT0 always connected - TODO
|
if (battery_status & BATTERY_INITIALIZED) {
|
||||||
data |= 1 << 2;
|
// BAT0 connected
|
||||||
|
data |= 1 << 2;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
ACPI_16(0x16, battery_design_capacity);
|
ACPI_16(0x16, battery_design_capacity);
|
||||||
|
@ -3,6 +3,8 @@
|
|||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#define BATTERY_INITIALIZED (1U << 7)
|
||||||
|
|
||||||
extern uint16_t battery_temp;
|
extern uint16_t battery_temp;
|
||||||
extern uint16_t battery_voltage;
|
extern uint16_t battery_voltage;
|
||||||
extern uint16_t battery_current;
|
extern uint16_t battery_current;
|
||||||
|
@ -552,7 +552,11 @@ void power_event(void) {
|
|||||||
|
|
||||||
//TODO: do not require both LEDs
|
//TODO: do not require both LEDs
|
||||||
#if HAVE_LED_BAT_CHG && HAVE_LED_BAT_FULL
|
#if HAVE_LED_BAT_CHG && HAVE_LED_BAT_FULL
|
||||||
if (ac_new) {
|
if (!(battery_status & BATTERY_INITIALIZED)) {
|
||||||
|
// No battery connected
|
||||||
|
gpio_set(&LED_BAT_CHG, false);
|
||||||
|
gpio_set(&LED_BAT_FULL, false);
|
||||||
|
} else if (ac_new) {
|
||||||
// Discharging (no AC adapter)
|
// Discharging (no AC adapter)
|
||||||
gpio_set(&LED_BAT_CHG, false);
|
gpio_set(&LED_BAT_CHG, false);
|
||||||
gpio_set(&LED_BAT_FULL, false);
|
gpio_set(&LED_BAT_FULL, false);
|
||||||
@ -563,7 +567,6 @@ void power_event(void) {
|
|||||||
gpio_set(&LED_BAT_FULL, true);
|
gpio_set(&LED_BAT_FULL, true);
|
||||||
} else {
|
} else {
|
||||||
// Charging
|
// Charging
|
||||||
// TODO: detect no battery connected
|
|
||||||
gpio_set(&LED_BAT_CHG, true);
|
gpio_set(&LED_BAT_CHG, true);
|
||||||
gpio_set(&LED_BAT_FULL, false);
|
gpio_set(&LED_BAT_FULL, false);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user