drivers: serial: uart_async_to_irq: Move resetting to disabling function
Move resetting of the receiver state to disabling function so that once
uart is disabled there is no data pending in the module.
Signed-off-by: Krzysztof Chruściński <krzysztof.chruscinski@nordicsemi.no>
diff --git a/drivers/serial/uart_async_to_irq.c b/drivers/serial/uart_async_to_irq.c
index 59216cb..eed05e8 100644
--- a/drivers/serial/uart_async_to_irq.c
+++ b/drivers/serial/uart_async_to_irq.c
@@ -107,6 +107,10 @@
if (data->flags & A2I_RX_ENABLE) {
int err;
+ if (data->rx.async_rx.pending_bytes == 0) {
+ uart_async_rx_reset(&data->rx.async_rx);
+ }
+
err = try_rx_enable(dev, data);
if (err == 0) {
data->rx.pending_buf_req = 0;
@@ -331,7 +335,6 @@
return err;
}
- uart_async_rx_reset(&data->rx.async_rx);
err = try_rx_enable(dev, data);
if (err == 0) {
@@ -355,6 +358,8 @@
k_sem_take(&data->rx.sem, K_FOREVER);
}
+ uart_async_rx_reset(&data->rx.async_rx);
+
return 0;
}