From 3ec158c8b0bfe80b010dc5e0b6adefdcf8d0c6d2 Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Fri, 16 Jun 2023 13:42:12 +0000 Subject: [PATCH] git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@16288 27425a3e-05d8-49a3-a47f-9c15f0e5edd8 --- os/xhal/codegen/hal_spi.xml | 7 ++++++- os/xhal/include/hal_spi.h | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/os/xhal/codegen/hal_spi.xml b/os/xhal/codegen/hal_spi.xml index 3bf0c9510..5c8e899e3 100644 --- a/os/xhal/codegen/hal_spi.xml +++ b/os/xhal/codegen/hal_spi.xml @@ -844,9 +844,14 @@ if (self->cb != NULL) { cb) { +if (self->cb != NULL) { + self->state = HAL_DRV_STATE_ERROR; self->cb(self); + if (self->state == HAL_DRV_STATE_ERROR) { + self->state = HAL_DRV_STATE_READY; + } } + __spi_wakeup_isr(self, msg);]]> diff --git a/os/xhal/include/hal_spi.h b/os/xhal/include/hal_spi.h index d8a90d716..255cbd234 100644 --- a/os/xhal/include/hal_spi.h +++ b/os/xhal/include/hal_spi.h @@ -574,9 +574,14 @@ CC_FORCE_INLINE static inline void __spi_isr_error_code(void *ip, msg_t msg) { hal_spi_driver_c *self = (hal_spi_driver_c *)ip; - if (self->cb) { + if (self->cb != NULL) { + self->state = HAL_DRV_STATE_ERROR; self->cb(self); + if (self->state == HAL_DRV_STATE_ERROR) { + self->state = HAL_DRV_STATE_READY; + } } + __spi_wakeup_isr(self, msg); } /** @} */