summaryrefslogtreecommitdiff
path: root/chip_interface/power_button.h
diff options
context:
space:
mode:
Diffstat (limited to 'chip_interface/power_button.h')
-rw-r--r--chip_interface/power_button.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/chip_interface/power_button.h b/chip_interface/power_button.h
new file mode 100644
index 0000000000..bc6d43e2d1
--- /dev/null
+++ b/chip_interface/power_button.h
@@ -0,0 +1,49 @@
+/* power_button.h - Power button function.
+ * Hides chip-specific implementation behind this interface.
+ *
+ * (Chromium license) */
+
+#ifndef __CHIP_INTERFACE_POWER_BUTTON_H
+#define __CHIP_INTERFACE_POWER_BUTTON_H
+
+/*
+ * Initialize the power button as GPIO input pin and enable interrupt for
+ * keyboard scanner code.
+ */
+EcError CrPowerButtonInit(void);
+
+
+/* Calls GPIOPinRead() to read the GPIO state. */
+/* TODO: has the state been debounced? */
+EcError CrPowerButtonGetState(void);
+
+
+/* Register a calback function. It is called while power button is changing its
+ * state (pressed or released ).
+ */
+EcError CrPowerButtonRegister(void (*callback)(void));
+
+/* Below is the example code to register this function. */
+#if 0
+/* This callback function is implemented in Chrome OS features layer. */
+void PowerButtonCallback(void) {
+ int pressed = CrPowerButtonGetState();
+ if (!prev_status) {
+ if (pressed) {
+ // Power button is just pressed. Generate scan code,
+ // and kick off the state machine for PWRBTN# signal.
+ }
+ } else {
+ if (!pressed) {
+ // Power button is just released. Generate scan code,
+ // and clear the state machine.
+ }
+ }
+}
+
+ ... somewhere in init code ...
+ CrPowerButtonRegister(PowerButtonCallback);
+
+#endif /* #if 0 */
+
+#endif /* __CHIP_INTERFACE_POWER_BUTTON_H */