From 738a3645b126e7e48ae2964eab7d08ed4103e17b Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Wed, 10 Aug 2022 08:44:27 +0000 Subject: [PATCH] Fixes in idle handling. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@15718 27425a3e-05d8-49a3-a47f-9c15f0e5edd8 --- os/hal/ports/RP/LLD/UARTv1/hal_sio_lld.c | 4 ++-- os/hal/ports/RP/LLD/UARTv1/hal_sio_lld.h | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/os/hal/ports/RP/LLD/UARTv1/hal_sio_lld.c b/os/hal/ports/RP/LLD/UARTv1/hal_sio_lld.c index c3bfe1f28..a324673a2 100644 --- a/os/hal/ports/RP/LLD/UARTv1/hal_sio_lld.c +++ b/os/hal/ports/RP/LLD/UARTv1/hal_sio_lld.c @@ -532,7 +532,7 @@ void sio_lld_serve_interrupt(SIODriver *siop) { #if SIO_USE_SYNCHRONIZATION /* The idle flag is forcibly cleared when an RX error event is detected.*/ - imsc &= ~UART_UARTIMSC_RTIM; + u->UARTICR = UART_UARTICR_RTIC; #endif /* Disabling event sources.*/ @@ -564,7 +564,7 @@ void sio_lld_serve_interrupt(SIODriver *siop) { #if SIO_USE_SYNCHRONIZATION /* The idle flag is forcibly cleared when an RX data event is detected.*/ - imsc &= ~UART_UARTIMSC_RTIM; + u->UARTICR = UART_UARTICR_RTIC; #endif /* Called once then the interrupt source is disabled.*/ diff --git a/os/hal/ports/RP/LLD/UARTv1/hal_sio_lld.h b/os/hal/ports/RP/LLD/UARTv1/hal_sio_lld.h index cadaccc84..229a383a4 100644 --- a/os/hal/ports/RP/LLD/UARTv1/hal_sio_lld.h +++ b/os/hal/ports/RP/LLD/UARTv1/hal_sio_lld.h @@ -149,7 +149,8 @@ * * @notapi */ -#define sio_lld_is_rx_idle(siop) true +#define sio_lld_is_rx_idle(siop) \ + (bool)(((siop)->uart->UARTRIS & UART_UARTRIS_RTRIS) != 0U) /** * @brief Determines if RX has pending error events to be read and cleared.