diff options
author | Randall Spangler <rspangler@chromium.org> | 2012-06-26 14:53:03 -0700 |
---|---|---|
committer | Gerrit <chrome-bot@google.com> | 2012-06-26 17:01:52 -0700 |
commit | 7b155fb8aca5784c3e85f0853869d4add2a099f0 (patch) | |
tree | 32c71e36f982ad0814ade2a4e20af02458172d94 /include/keyboard_scan.h | |
parent | fb123b48384cdf2eb1c5008324fac6f8d2811e16 (diff) | |
download | chrome-ec-7b155fb8aca5784c3e85f0853869d4add2a099f0.tar.gz |
Refactor boot key detection
Keyboard scan module now owns the recovery key state on all platforms.
And clean up a few comments to linux kernel style
BUG=chrome-os-partner:10890
TEST=manual
- Power on system. Should boot normally.
- Power+Refresh+D. Should turn dev switch on.
- Power+Refresh+F. Should turn dev switch off.
- Power+Esc. Should reboot system. Power button should power on normally.
- Power+Refresh+Esc. Should power on into recovery mode.
- Then press power to shut system down.
- Power button should power on normally (not back into recovery mode).
Change-Id: I4d16e1e8b039efeacbd41e8acec115844bc8457d
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/26147
Reviewed-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'include/keyboard_scan.h')
-rw-r--r-- | include/keyboard_scan.h | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/include/keyboard_scan.h b/include/keyboard_scan.h index 590f482317..98ff5db826 100644 --- a/include/keyboard_scan.h +++ b/include/keyboard_scan.h @@ -13,11 +13,31 @@ /* Initializes the module. */ int keyboard_scan_init(void); -/* Returns non-zero if recovery key was pressed at boot. Used by st32m-based - * boards only; lm4-based boards use power_recovery_pressed(). */ +/* Key held down at keyboard-controlled reset boot time. */ +enum boot_key { + BOOT_KEY_NONE, /* No keys other than keyboard-controlled reset keys */ + BOOT_KEY_ESC, + BOOT_KEY_D, + BOOT_KEY_F, + BOOT_KEY_DOWN_ARROW, + BOOT_KEY_OTHER = -1, /* None of the above */ +}; + +/* + * Return the key held down at boot time in addition to the keyboard-controlled + * reset keys. Returns BOOT_KEY_OTHER if none of the keys specifically checked + * was pressed, or reset was not caused by a keyboard-controlled reset, or if + * the state has been cleared by keyboard_scan_clear_boot_key(). + */ +enum boot_key keyboard_scan_get_boot_key(void); + +/* Clear the boot key state. */ +void keyboard_scan_clear_boot_key(void); + +/* Return non-zero if recovery key was pressed at boot. */ int keyboard_scan_recovery_pressed(void); -/* clear any saved keyboard state (empty FIFO, etc) */ +/* Clear any saved keyboard state (empty FIFO, etc) */ void keyboard_clear_state(void); /* Enables/disables keyboard matrix scan. */ |