diff --git a/src/board/system76/common/kbscan.c b/src/board/system76/common/kbscan.c index 10345a3..f9f4292 100644 --- a/src/board/system76/common/kbscan.c +++ b/src/board/system76/common/kbscan.c @@ -190,9 +190,7 @@ bool kbscan_press(uint16_t key, bool pressed, uint8_t * layer) { if (pressed && lid_state && (power_state == POWER_STATE_S3 || power_state == POWER_STATE_DS3)) { - gpio_set(&SWI_N, false); - delay_ticks(10); //TODO: find correct delay - gpio_set(&SWI_N, true); + pmc_swi(); } switch (key & KT_MASK) { diff --git a/src/board/system76/common/lid.c b/src/board/system76/common/lid.c index d2c2383..e3dd12b 100644 --- a/src/board/system76/common/lid.c +++ b/src/board/system76/common/lid.c @@ -7,7 +7,8 @@ #include #include -bool lid_state = true; +// Default closed to prevent spurious power on +bool lid_state = false; bool lid_wake = false; void lid_event(void) { @@ -21,13 +22,7 @@ void lid_event(void) { DEBUG("open\n"); if (lid_wake) { - gpio_set(&SWI_N, false); - - //TODO: find correct delay - delay_ticks(10); - - gpio_set(&SWI_N, true); - + pmc_swi(); lid_wake = false; } } else {