# HG changeset patch # User Mychaela Falconia # Date 1620960545 0 # Node ID 841a848ba7628b4c9de21adb2a71a1f66c64bb6d # Parent 34b7059b9337ac54a3221b656d0972e51075ddc4 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. diff -r 34b7059b9337 -r 841a848ba762 src/cs/drivers/drv_app/spi/spi_env.c --- 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; }