FreeCalypso > hg > fc-tourmaline
view src/cs/drivers/drv_app/kpd/kpd_power_api.h @ 280:82665effff30
keypad boot init overhaul: handle initially held-down keys
This change fixes two previous behavioural defects:
1) On Compal phones, the PWR key had to be released before the boot
sequence would proceed at all - it was stuck in an endless IRQ loop
at the point of Nucleus enabling interrupts, before anything else.
2) On both Compal and sane platforms including Luna, if some regular
non-PWR key was held down at boot time, the boot sequence would
proceed and complete normally, but all non-PWR keypad buttons would
be dead for the remainder of that boot cycle.
The fix is a generic solution - no Compal-specific hack ended up being
needed for the special case of their idiotic PWON-to-ROW4 hw wiring.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 24 Sep 2021 00:47:12 +0000 |
parents | 4e78acac3d88 |
children |
line wrap: on
line source
/** * @file kpd_power_api.h * * API Definition for keypad driver, used bi PWR SWE. * * * @author Laurent Sollier (l-sollier@ti.com) * @version 0.1 */ /* * History: * * Date Author Modification * ---------------------------------------- * 11/02/2001 L Sollier Create * * * (C) Copyright 2001 by Texas Instruments Incorporated, All Rights Reserved */ #ifndef _KPD_POWER_API_H_ #define _KPD_POWER_API_H_ #include "kpd/kpd_cfg.h" #include "kpd/kpd_api.h" #include "rv/rv_general.h" #include "rvf/rvf_api.h" /* This structure defines the two functions to call when PWR key is pressed */ typedef struct { void (*pressed)(T_KPD_VIRTUAL_KEY_ID); void (*released)(void); } T_KPD_KEYPAD; #ifdef __cplusplus extern "C" { #endif /** * @name API functions * * API functions declarations. */ /*@{*/ /** * function: kpd_power_key_pressed * * This function is called by the PWR SWE when the PWR key is pressed. * * @return * - RV_OK if operation is successfull, * - RV_MEMORY_ERR if message could not be sent to the keypad task. * - RV_INTERNAL_ERR if keypad driver is not yet initialized. * */ T_RV_RET kpd_power_key_pressed(void); #ifdef __cplusplus } #endif #endif /* #ifndef _KPD_POWER_API_H_ */