FreeCalypso > hg > fc-tourmaline
view cdg-hybrid/cdginc/p_mmcm.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 | 35f7a1dc9f7d |
children |
line wrap: on
line source
/* +--------------------------------------------------------------------------+ | PROJECT : PROTOCOL STACK | | FILE : p_mmcm.h | | SOURCE : "sap\mmcm.pdf" | | LastModified : "2004-02-12" | | IdAndVersion : "6147.104.97.103" | | SrcFileTime : "Thu Nov 29 09:45:56 2007" | | Generated by CCDGEN_2.5.5A on Fri Oct 14 21:41:52 2016 | | !!DO NOT MODIFY!!DO NOT MODIFY!!DO NOT MODIFY!! | +--------------------------------------------------------------------------+ */ /* PRAGMAS * PREFIX : MMCM * COMPATIBILITY_DEFINES : NO * ALWAYS_ENUM_IN_VAL_FILE: NO * ENABLE_GROUP: NO * CAPITALIZE_TYPENAME: NO */ #ifndef P_MMCM_H #define P_MMCM_H #define CDG_ENTER__P_MMCM_H #define CDG_ENTER__FILENAME _P_MMCM_H #define CDG_ENTER__P_MMCM_H__FILE_TYPE CDGINC #define CDG_ENTER__P_MMCM_H__LAST_MODIFIED _2004_02_12 #define CDG_ENTER__P_MMCM_H__ID_AND_VERSION _6147_104_97_103 #define CDG_ENTER__P_MMCM_H__SRC_FILE_TIME _Thu_Nov_29_09_45_56_2007 #include "CDG_ENTER.h" #undef CDG_ENTER__P_MMCM_H #undef CDG_ENTER__FILENAME #include "p_mmcm.val" #ifndef __T_MMCM_ch_info__ #define __T_MMCM_ch_info__ /* * Channel information * CCDGEN:WriteStruct_Count==1788 */ typedef struct { U8 ch_type; /*< 0: 1> Channel Type */ U8 ch_mode; /*< 1: 1> Channel Mode */ U8 _align0; /*< 2: 1> alignment */ U8 _align1; /*< 3: 1> alignment */ } T_MMCM_ch_info; #endif #ifndef __T_MMCM_sync_info__ #define __T_MMCM_sync_info__ /* * Container for synchronisation info * CCDGEN:WriteStruct_Count==1790 */ typedef struct { T_MMCM_ch_info ch_info; /*< 0: 4> Channel information */ } T_MMCM_sync_info; #endif /* * End of substructure section, begin of primitive definition section */ #ifndef __T_MMCM_ESTABLISH_REQ__ #define __T_MMCM_ESTABLISH_REQ__ /* * * CCDGEN:WriteStruct_Count==1794 */ typedef struct { U8 ti; /*< 0: 1> transaction identifier */ U8 org_entity; /*< 1: 1> originating entity */ U16 estcs; /*< 2: 2> establishment cause */ } T_MMCM_ESTABLISH_REQ; #endif #ifndef __T_MMCM_ESTABLISH_CNF__ #define __T_MMCM_ESTABLISH_CNF__ /* * * CCDGEN:WriteStruct_Count==1795 */ typedef struct { U8 ti; /*< 0: 1> transaction identifier */ U8 _align0; /*< 1: 1> alignment */ U8 _align1; /*< 2: 1> alignment */ U8 _align2; /*< 3: 1> alignment */ } T_MMCM_ESTABLISH_CNF; #endif #ifndef __T_MMCM_ESTABLISH_IND__ #define __T_MMCM_ESTABLISH_IND__ /* * * CCDGEN:WriteStruct_Count==1796 */ typedef struct { U8 d1; /*< 0: 1> dummy, not used */ U8 d2; /*< 1: 1> dummy, not used */ U8 _align0; /*< 2: 1> alignment */ U8 _align1; /*< 3: 1> alignment */ T_sdu sdu; /*< 4: ? > Service Data Unit */ } T_MMCM_ESTABLISH_IND; #endif #ifndef __T_MMCM_DATA_REQ__ #define __T_MMCM_DATA_REQ__ /* * * CCDGEN:WriteStruct_Count==1797 */ typedef struct { U8 org_entity; /*< 0: 1> originating entity */ U8 d2; /*< 1: 1> dummy, not used */ U8 _align0; /*< 2: 1> alignment */ U8 _align1; /*< 3: 1> alignment */ T_sdu sdu; /*< 4: ? > Service Data Unit */ } T_MMCM_DATA_REQ; #endif #ifndef __T_MMCM_DATA_IND__ #define __T_MMCM_DATA_IND__ /* * * CCDGEN:WriteStruct_Count==1798 */ typedef struct { U8 d1; /*< 0: 1> dummy, not used */ U8 d2; /*< 1: 1> dummy, not used */ U8 _align0; /*< 2: 1> alignment */ U8 _align1; /*< 3: 1> alignment */ T_sdu sdu; /*< 4: ? > Service Data Unit */ } T_MMCM_DATA_IND; #endif #ifndef __T_MMCM_RELEASE_REQ__ #define __T_MMCM_RELEASE_REQ__ /* * * CCDGEN:WriteStruct_Count==1799 */ typedef struct { U8 ti; /*< 0: 1> transaction identifier */ U8 org_entity; /*< 1: 1> originating entity */ U8 _align0; /*< 2: 1> alignment */ U8 _align1; /*< 3: 1> alignment */ } T_MMCM_RELEASE_REQ; #endif #ifndef __T_MMCM_RELEASE_IND__ #define __T_MMCM_RELEASE_IND__ /* * * CCDGEN:WriteStruct_Count==1800 */ typedef struct { U8 ti; /*< 0: 1> transaction identifier */ U8 _align0; /*< 1: 1> alignment */ U16 cause; /*< 2: 2> MM cause */ } T_MMCM_RELEASE_IND; #endif #ifndef __T_MMCM_ERROR_IND__ #define __T_MMCM_ERROR_IND__ /* * * CCDGEN:WriteStruct_Count==1801 */ typedef struct { U8 ti; /*< 0: 1> transaction identifier */ U8 _align0; /*< 1: 1> alignment */ U16 cause; /*< 2: 2> MM cause */ } T_MMCM_ERROR_IND; #endif #ifndef __T_MMCM_REESTABLISH_REQ__ #define __T_MMCM_REESTABLISH_REQ__ /* * * CCDGEN:WriteStruct_Count==1802 */ typedef struct { U8 ti; /*< 0: 1> transaction identifier */ U8 _align0; /*< 1: 1> alignment */ U8 _align1; /*< 2: 1> alignment */ U8 _align2; /*< 3: 1> alignment */ } T_MMCM_REESTABLISH_REQ; #endif #ifndef __T_MMCM_REESTABLISH_CNF__ #define __T_MMCM_REESTABLISH_CNF__ /* * * CCDGEN:WriteStruct_Count==1803 */ typedef struct { U8 ti; /*< 0: 1> transaction identifier */ U8 _align0; /*< 1: 1> alignment */ U8 _align1; /*< 2: 1> alignment */ U8 _align2; /*< 3: 1> alignment */ } T_MMCM_REESTABLISH_CNF; #endif #ifndef __T_MMCM_PROMPT_IND__ #define __T_MMCM_PROMPT_IND__ /* * * CCDGEN:WriteStruct_Count==1804 */ typedef struct { U8 dummy; /*< 0: 1> no parameters */ } T_MMCM_PROMPT_IND; #endif #ifndef __T_MMCM_PROMPT_RES__ #define __T_MMCM_PROMPT_RES__ /* * * CCDGEN:WriteStruct_Count==1805 */ typedef struct { U8 ti; /*< 0: 1> transaction identifier */ U8 _align0; /*< 1: 1> alignment */ U8 _align1; /*< 2: 1> alignment */ U8 _align2; /*< 3: 1> alignment */ } T_MMCM_PROMPT_RES; #endif #ifndef __T_MMCM_PROMPT_REJ__ #define __T_MMCM_PROMPT_REJ__ /* * * CCDGEN:WriteStruct_Count==1806 */ typedef struct { U8 dummy; /*< 0: 1> no parameters */ } T_MMCM_PROMPT_REJ; #endif #ifndef __T_MMCM_SYNC_IND__ #define __T_MMCM_SYNC_IND__ /* * * CCDGEN:WriteStruct_Count==1807 */ typedef struct { U8 ti; /*< 0: 1> transaction identifier */ U8 _align0; /*< 1: 1> alignment */ U8 _align1; /*< 2: 1> alignment */ U8 _align2; /*< 3: 1> alignment */ T_MMCM_sync_info sync_info; /*< 4: 4> Container for synchronisation info */ } T_MMCM_SYNC_IND; #endif #include "CDG_LEAVE.h" #endif