From 3014fb3a41720477bd9d3b7692fe63d3bb9b97ed Mon Sep 17 00:00:00 2001 From: Tim Crawford Date: Thu, 20 Feb 2020 13:51:09 -0700 Subject: [PATCH] Wake from S3 using any key --- src/board/system76/darp5/kbscan.c | 8 ++++++++ src/board/system76/galp3-c/kbscan.c | 8 ++++++++ src/board/system76/lemp9/kbscan.c | 8 ++++++++ 3 files changed, 24 insertions(+) diff --git a/src/board/system76/darp5/kbscan.c b/src/board/system76/darp5/kbscan.c index 9659320..0257d89 100644 --- a/src/board/system76/darp5/kbscan.c +++ b/src/board/system76/darp5/kbscan.c @@ -5,6 +5,7 @@ #include #include #include +#include #include bool kbscan_enabled = false; @@ -29,6 +30,13 @@ void kbscan_init(void) { #define DEBOUNCE_DELAY 20 bool kbscan_press(uint16_t key, bool pressed, uint8_t * layer) { + if (pressed && + (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); + } + switch (key & KT_MASK) { case (KT_NORMAL): if (kbscan_enabled) { diff --git a/src/board/system76/galp3-c/kbscan.c b/src/board/system76/galp3-c/kbscan.c index a14be2d..f19e54e 100644 --- a/src/board/system76/galp3-c/kbscan.c +++ b/src/board/system76/galp3-c/kbscan.c @@ -6,6 +6,7 @@ #include #include #include +#include #include bool kbscan_enabled = false; @@ -30,6 +31,13 @@ void kbscan_init(void) { #define DEBOUNCE_DELAY 20 bool kbscan_press(uint16_t key, bool pressed, uint8_t * layer) { + if (pressed && + (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); + } + switch (key & KT_MASK) { case (KT_NORMAL): if (kbscan_enabled) { diff --git a/src/board/system76/lemp9/kbscan.c b/src/board/system76/lemp9/kbscan.c index a14be2d..f19e54e 100644 --- a/src/board/system76/lemp9/kbscan.c +++ b/src/board/system76/lemp9/kbscan.c @@ -6,6 +6,7 @@ #include #include #include +#include #include bool kbscan_enabled = false; @@ -30,6 +31,13 @@ void kbscan_init(void) { #define DEBOUNCE_DELAY 20 bool kbscan_press(uint16_t key, bool pressed, uint8_t * layer) { + if (pressed && + (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); + } + switch (key & KT_MASK) { case (KT_NORMAL): if (kbscan_enabled) {