FreeCalypso > hg > fc-tourmaline
view src/cs/services/dar/dar_watchdog.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
/****************************************************************************/ /* */ /* File Name: dar_watchdog.c */ /* */ /* Purpose: This function contains the DAR watchdog functions */ /* */ /* */ /* Version 0.1 */ /* */ /* Date Modification */ /* ------------------------------------ */ /* 8 November 2001 Create */ /* */ /* Author Stephanie Gerthoux */ /* */ /* (C) Copyright 2001 by Texas Instruments Incorporated, All Rights Reserved*/ /****************************************************************************/ #include "rv/rv_defined_swe.h" #ifdef RVM_DAR_SWE #ifndef _WINDOWS #include "config/swconfig.cfg" #include "config/sys.cfg" #include "config/chipset.cfg" #endif #include "rv/rv_general.h" #include "rvm/rvm_gen.h" #include "rvm/rvm_priorities.h" #include "dar/dar_api.h" #include "dar/dar_gen.h" #include "dar/dar_diagnose_i.h" /**** Global variable ****/ /* Get the dar_current status */ extern T_DAR_RECOVERY_STATUS dar_current_status; /********************************************************************************/ /* */ /* Function Name: dar_watchdog_reset */ /* */ /* Purpose: This function is called to reset the system when the general */ /* general purpose timer expires */ /* */ /* Input Parameters: */ /* Pointer to the message to store */ /* Data Format, */ /* Data level, */ /* Data Use Id, */ /* */ /* Output Parameters: */ /* Validation of the function execution. */ /* */ /* Note: */ /* None */ /* */ /********************************************************************************/ void dar_watchdog_reset(void) { /* Update the current status */ dar_current_status = DAR_WATCHDOG; /* reset the system */ dar_reset(); } /* dar_watchdog_reset */ #endif /* #ifdef RVM_DAR_SWE */