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;
 }