diff options
Diffstat (limited to 'chip_interface/power_button.h')
-rw-r--r-- | chip_interface/power_button.h | 49 |
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 */ |