From 8ec71a338da981d968fcaf0cc948059cd6f2add6 Mon Sep 17 00:00:00 2001 From: Tim Crawford Date: Thu, 20 Feb 2020 13:51:09 -0700 Subject: [PATCH] WIP: 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 965932007..0257d89b5 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 a14be2df0..f19e54ed6 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 a14be2df0..f19e54ed6 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) {