FreeCalypso > hg > fc-tourmaline
view src/nucleus/smd.c @ 244:96784b8974eb
Switch_ON(): detect charging mode by CHGPRES bit
Consider the following scenario: the phone is on, the user plugs in
the charger, and then executes the power-off operation. In the Iota
VRPC this sequence translates to a switch-off immediately followed
by another switch-on - but the CHGSTS bit doesn't get set on the second
switch-on cycle! Disassembly of Pirelli's fw shows that they check
the CHGPRES bit, and furthermore, if both CHGPRES and ONBSTS are set,
the code they pass to their modified Power_ON_Button() function is
the one for charging - so let's adopt the same CHGPRES check and
the same priority order for switch-on causes.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 03 May 2021 06:51:29 +0000 |
parents | 4e78acac3d88 |
children |
line wrap: on
line source
/*************************************************************************/ /* */ /* Copyright Mentor Graphics Corporation 2002 */ /* All Rights Reserved. */ /* */ /* THIS WORK CONTAINS TRADE SECRET AND PROPRIETARY INFORMATION WHICH IS */ /* THE PROPERTY OF MENTOR GRAPHICS CORPORATION OR ITS LICENSORS AND IS */ /* SUBJECT TO LICENSE TERMS. */ /* */ /*************************************************************************/ /*************************************************************************/ /* */ /* FILE NAME VERSION */ /* */ /* smd.c Nucleus PLUS 1.14 */ /* */ /* COMPONENT */ /* */ /* SM - Semaphore Management */ /* */ /* DESCRIPTION */ /* */ /* This file contains global data structures for use within the */ /* semaphore management component. */ /* */ /* DATA STRUCTURES */ /* */ /* SMD_Created_Semaphores_List Pointer to the linked-list */ /* of created semaphores */ /* SMD_Total_Semaphores Total number of created */ /* semaphores */ /* SMD_List_Protect Semaphore list protection */ /* */ /* FUNCTIONS */ /* */ /* None */ /* */ /* DEPENDENCIES */ /* */ /* sm_defs.h Semaphore Management constant*/ /* */ /* HISTORY */ /* */ /* DATE REMARKS */ /* */ /* 03-01-1993 Created initial version 1.0 */ /* 04-19-1993 Verified version 1.0 */ /* 03-01-1994 Modified copyright, resulting in */ /* version 1.1 */ /* */ /* 03-18-1994 Verified version 1.1 */ /* 04-17-1996 updated to version 1.2 */ /* 03-24-1998 Released version 1.3. */ /* 03-26-1999 Released 1.11m (new release */ /* numbering scheme) */ /* 04-17-2002 Released version 1.13m */ /* 11-07-2002 Released version 1.14 */ /*************************************************************************/ #define NU_SOURCE_FILE #include "sm_defs.h" /* Semaphore constants */ /* SMD_Created_Semaphores_List is the head pointer of the linked list of created semaphores. If the list is NU_NULL, there are no semaphores created. */ CS_NODE *SMD_Created_Semaphores_List; /* SMD_Total_Semaphores contains the number of currently created semaphores. */ UNSIGNED SMD_Total_Semaphores; /* SMD_List_Protect is a list protection structure used to block any other thread from access to the created semaphore list. */ TC_PROTECT SMD_List_Protect;