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;
|
extern uint8_t sci_extra;
|
||||||
|
|
||||||
uint8_t ecos = 0;
|
uint8_t acpi_ecos = 0;
|
||||||
|
|
||||||
static uint8_t fcmd = 0;
|
static uint8_t fcmd = 0;
|
||||||
static uint8_t fdat = 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 acpi_read(uint8_t addr) {
|
||||||
uint8_t data = 0;
|
uint8_t data = 0;
|
||||||
|
|
||||||
@ -105,7 +118,7 @@ uint8_t acpi_read(uint8_t addr) {
|
|||||||
ACPI_16(0x2E, battery_remaining_capacity);
|
ACPI_16(0x2E, battery_remaining_capacity);
|
||||||
ACPI_16(0x32, battery_voltage);
|
ACPI_16(0x32, battery_voltage);
|
||||||
|
|
||||||
ACPI_8(0x68, ecos);
|
ACPI_8(0x68, acpi_ecos);
|
||||||
|
|
||||||
ACPI_8(0xCC, sci_extra);
|
ACPI_8(0xCC, sci_extra);
|
||||||
|
|
||||||
@ -133,7 +146,6 @@ uint8_t acpi_read(uint8_t addr) {
|
|||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void acpi_write(uint8_t addr, uint8_t data) {
|
void acpi_write(uint8_t addr, uint8_t data) {
|
||||||
DEBUG("acpi_write %02X = %02X\n", addr, data);
|
DEBUG("acpi_write %02X = %02X\n", addr, data);
|
||||||
|
|
||||||
@ -144,7 +156,7 @@ void acpi_write(uint8_t addr, uint8_t data) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x68:
|
case 0x68:
|
||||||
ecos = data;
|
acpi_ecos = data;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#if HAVE_LED_AIRPLANE_N
|
#if HAVE_LED_AIRPLANE_N
|
||||||
|
@ -3,6 +3,9 @@
|
|||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
|
extern uint8_t acpi_ecos;
|
||||||
|
|
||||||
|
void acpi_reset(void);
|
||||||
uint8_t acpi_read(uint8_t addr);
|
uint8_t acpi_read(uint8_t addr);
|
||||||
void acpi_write(uint8_t addr, uint8_t data);
|
void acpi_write(uint8_t addr, uint8_t data);
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#include <arch/delay.h>
|
#include <arch/delay.h>
|
||||||
#include <arch/time.h>
|
#include <arch/time.h>
|
||||||
|
#include <board/acpi.h>
|
||||||
#include <board/battery.h>
|
#include <board/battery.h>
|
||||||
#include <board/board.h>
|
#include <board/board.h>
|
||||||
#include <board/gpio.h>
|
#include <board/gpio.h>
|
||||||
@ -331,6 +332,8 @@ void power_off_s5(void) {
|
|||||||
static void power_cpu_reset(void) {
|
static void power_cpu_reset(void) {
|
||||||
// LPC was just reset, enable PNP devices
|
// LPC was just reset, enable PNP devices
|
||||||
pnp_enable();
|
pnp_enable();
|
||||||
|
// Reset ACPI registers
|
||||||
|
acpi_reset();
|
||||||
//TODO: reset KBC and touchpad states
|
//TODO: reset KBC and touchpad states
|
||||||
kbled_reset();
|
kbled_reset();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user