FreeCalypso > hg > fc-tourmaline
view src/cs/drivers/drv_app/pwr/pwr_messages_i.c @ 261:841a848ba762
SPI SWE: clear any pending boot-time interrupts in spi_init()
Charger plug/unplug hw logic in the Iota ABB has no built-in debouncing,
thus electrical contact bounce on the charging power connection interface
produces a lot of charger plug/unplug interrupts. When we boot in
charging mode (charging power present at boot time and is presumably
the cause of Switch-ON), some bounce may occur between the initial
Iota Switch-ON action and Calypso firmware booting. By clearing any
accumulated ITSTATREG interrupts on boot, we prevent these pre-boot
interrupts from generating charger plug/unplug events to FCHG, which
would upset smooth from-boot charging.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 14 May 2021 02:49:05 +0000 |
parents | 4e78acac3d88 |
children |
line wrap: on
line source
/******************************************************************************* * * pwr_messages_i.c * * Purpose: Contains functions used by PWR SWE to send events to the SPI task. * * * Author Candice Bazanegue (c-brille@ti.com) * * (C) Texas Instruments 2001 * ******************************************************************************/ #include "rv/rv_defined_swe.h" // for RVM_PWR_SWE #ifdef RVM_PWR_SWE #include "rvm/rvm_use_id_list.h" #include "rvf/rvf_api.h" #include "pwr/pwr_messages_i.h" #include "pwr/pwr_env.h" #include "spi/spi_env.h" /********************************************************************************/ /* */ /* Function Name: pwr_spi_battery_info */ /* */ /* Purpose: This function is used to send a PWR_SPI_INFO_BATTERY_EVT */ /* message to the SPI task. */ /* */ /********************************************************************************/ T_RV_RET pwr_spi_battery_info(CALLBACK_FUNC CallBack) { T_RV_HDR *msgPtr; /* check if the driver has been started */ if (pwr_env_ctrl_blk == NULL) return (RVM_NOT_READY); if(SPI_GBL_INFO_PTR->SpiTaskReady == FALSE) return(RVM_NOT_READY); if (rvf_get_buf (pwr_env_ctrl_blk->prim_id, sizeof (T_RV_HDR),(void **) &msgPtr) == RVF_RED) { rvf_send_trace ("PWR ERROR: Not enough memory", 28, NULL_PARAM, RV_TRACE_LEVEL_ERROR, PWR_USE_ID); return (RV_MEMORY_ERR); } msgPtr->msg_id = PWR_SPI_INFO_BATTERY_EVT; msgPtr->dest_addr_id = pwr_env_ctrl_blk->addr_id; msgPtr->callback_func = (CALLBACK_FUNC) CallBack; rvf_send_msg (pwr_env_ctrl_blk->addr_id, msgPtr); return (RV_OK); } #endif /* #ifdef RVM_PWR_SWE */