diff options
Diffstat (limited to 'common/keyboard_scan.c')
-rw-r--r-- | common/keyboard_scan.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/common/keyboard_scan.c b/common/keyboard_scan.c index 76db0b58f9..7632458cb7 100644 --- a/common/keyboard_scan.c +++ b/common/keyboard_scan.c @@ -20,6 +20,12 @@ #include "timer.h" #include "util.h" +#ifdef BOARD_peppy +/* HORRIBLE HACK: SEE crosbug.com/p/22127 DO NOT RE-USE */ +#include "gpio.h" +#define PEPPY_BOOTKEY_DELAY_USEC (5 * MSEC) +#endif /* BOARD_peppy */ + /* Console output macros */ #define CPUTS(outstr) cputs(CC_KEYSCAN, outstr) #define CPRINTF(format, args...) cprintf(CC_KEYSCAN, format, ## args) @@ -462,6 +468,11 @@ const uint8_t *keyboard_scan_get_state(void) void keyboard_scan_init(void) { +#ifdef BOARD_peppy + /* HORRIBLE HACK: SEE crosbug.com/p/22127 DO NOT RE-USE */ + int gpio_pp5000_prev_state; +#endif /* BOARD_peppy */ + /* Configure GPIO */ keyboard_raw_init(); @@ -470,6 +481,18 @@ void keyboard_scan_init(void) /* Initialize raw state */ read_matrix(debounced_state); + +#ifdef BOARD_peppy + /* HORRIBLE HACK: SEE crosbug.com/p/22127 DO NOT RE-USE */ + if (check_boot_key(debounced_state) != BOOT_KEY_NONE) { + gpio_pp5000_prev_state = gpio_get_level(GPIO_PP5000_EN); + gpio_set_level(GPIO_PP5000_EN, 1); + usleep(PEPPY_BOOTKEY_DELAY_USEC); + read_matrix(debounced_state); + gpio_set_level(GPIO_PP5000_EN, gpio_pp5000_prev_state); + } +#endif /* BOARD_peppy */ + memcpy(prev_state, debounced_state, sizeof(prev_state)); /* Check for keys held down at boot */ |