summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Kerkmann <karlk90@pm.me>2022-07-29 20:13:16 +0200
committerGitHub <noreply@github.com>2022-07-29 20:13:16 +0200
commita204523bbb22d45e2968d1ded64d499b9777f37f (patch)
treeae9952a241823f1986d83d49661b79d71775e652
parentade2eb1e751be2918b901bfe4352a71f1d54e2a2 (diff)
[Core] RP2040 disable PIO IRQs on serial timeout (#17839)
-rw-r--r--platforms/chibios/drivers/vendor/RP/RP2040/serial_vendor.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/platforms/chibios/drivers/vendor/RP/RP2040/serial_vendor.c b/platforms/chibios/drivers/vendor/RP/RP2040/serial_vendor.c
index 338146dadd..764764b3f9 100644
--- a/platforms/chibios/drivers/vendor/RP/RP2040/serial_vendor.c
+++ b/platforms/chibios/drivers/vendor/RP/RP2040/serial_vendor.c
@@ -206,6 +206,7 @@ static inline msg_t sync_tx(sysinterval_t timeout) {
pio_set_irq0_source_enabled(pio, pis_sm0_tx_fifo_not_full + tx_state_machine, true);
msg = osalThreadSuspendTimeoutS(&tx_thread, timeout);
if (msg < MSG_OK) {
+ pio_set_irq0_source_enabled(pio, pis_sm0_tx_fifo_not_full + tx_state_machine, false);
break;
}
}
@@ -265,6 +266,7 @@ static inline msg_t sync_rx(sysinterval_t timeout) {
pio_set_irq0_source_enabled(pio, pis_sm0_rx_fifo_not_empty + rx_state_machine, true);
msg = osalThreadSuspendTimeoutS(&rx_thread, timeout);
if (msg < MSG_OK) {
+ pio_set_irq0_source_enabled(pio, pis_sm0_rx_fifo_not_empty + rx_state_machine, false);
break;
}
}