Add acpi_reset function, to reset registers set by the OS
This commit is contained in:
parent
70e6476208
commit
ee404071fb
@ -12,7 +12,7 @@
|
||||
|
||||
extern uint8_t sci_extra;
|
||||
|
||||
uint8_t ecos = 0;
|
||||
uint8_t acpi_ecos = 0;
|
||||
|
||||
static uint8_t fcmd = 0;
|
||||
static uint8_t fdat = 0;
|
||||
@ -48,6 +48,19 @@ void fcommand(void) {
|
||||
}
|
||||
}
|
||||
|
||||
void acpi_reset(void) {
|
||||
// Disable lid wake
|
||||
lid_wake = false;
|
||||
|
||||
// ECOS: No ACPI
|
||||
acpi_ecos = 0;
|
||||
|
||||
#if HAVE_LED_AIRPLANE_N
|
||||
// Clear airplane mode LED
|
||||
gpio_set(&LED_AIRPLANE_N, true);
|
||||
#endif
|
||||
}
|
||||
|
||||
uint8_t acpi_read(uint8_t addr) {
|
||||
uint8_t data = 0;
|
||||
|
||||
@ -105,7 +118,7 @@ uint8_t acpi_read(uint8_t addr) {
|
||||
ACPI_16(0x2E, battery_remaining_capacity);
|
||||
ACPI_16(0x32, battery_voltage);
|
||||
|
||||
ACPI_8(0x68, ecos);
|
||||
ACPI_8(0x68, acpi_ecos);
|
||||
|
||||
ACPI_8(0xCC, sci_extra);
|
||||
|
||||
@ -133,7 +146,6 @@ uint8_t acpi_read(uint8_t addr) {
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
void acpi_write(uint8_t addr, uint8_t data) {
|
||||
DEBUG("acpi_write %02X = %02X\n", addr, data);
|
||||
|
||||
@ -144,7 +156,7 @@ void acpi_write(uint8_t addr, uint8_t data) {
|
||||
break;
|
||||
|
||||
case 0x68:
|
||||
ecos = data;
|
||||
acpi_ecos = data;
|
||||
break;
|
||||
|
||||
#if HAVE_LED_AIRPLANE_N
|
||||
|
@ -3,6 +3,9 @@
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
extern uint8_t acpi_ecos;
|
||||
|
||||
void acpi_reset(void);
|
||||
uint8_t acpi_read(uint8_t addr);
|
||||
void acpi_write(uint8_t addr, uint8_t data);
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
#include <arch/delay.h>
|
||||
#include <arch/time.h>
|
||||
#include <board/acpi.h>
|
||||
#include <board/battery.h>
|
||||
#include <board/board.h>
|
||||
#include <board/gpio.h>
|
||||
@ -331,6 +332,8 @@ void power_off_s5(void) {
|
||||
static void power_cpu_reset(void) {
|
||||
// LPC was just reset, enable PNP devices
|
||||
pnp_enable();
|
||||
// Reset ACPI registers
|
||||
acpi_reset();
|
||||
//TODO: reset KBC and touchpad states
|
||||
kbled_reset();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user