FreeCalypso > hg > fc-tourmaline
changeset 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 | 34b7059b9337 |
children | 7420959e02ec |
files | src/cs/drivers/drv_app/spi/spi_env.c |
diffstat | 1 files changed, 8 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/cs/drivers/drv_app/spi/spi_env.c Fri May 14 02:13:47 2021 +0000 +++ b/src/cs/drivers/drv_app/spi/spi_env.c Fri May 14 02:49:05 2021 +0000 @@ -26,6 +26,8 @@ //extern T_RV_RET spi_core(void); #include "spi/spi_task.h" +#include "abb/abb.h" /* FreeCalypso addition for initial IT clearing */ + /* global pointer to the error function */ static T_RVM_RETURN (*spi_error_ft)(T_RVM_NAME swe_name, T_RVM_RETURN error_cause, @@ -171,6 +173,12 @@ ******************************************************************************/ T_RVM_RETURN spi_init(void) { + /* + * FreeCalypso addition: clear any initial interrupts, + * particularly charger plug/unplug. + */ + (void) ABB_Read_Register_on_page(PAGE0, ITSTATREG); + return RV_OK; }