From: Florent Kermarrec Date: Tue, 22 Oct 2013 17:44:58 +0000 (+0200) Subject: uart_isr: fix interrupts clear X-Git-Tag: 24jan2021_ls180~2828 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e7c72a826c1d9180bfe9dcd5c6eae6072dd8af3d;p=litex.git uart_isr: fix interrupts clear --- diff --git a/software/libbase/uart.c b/software/libbase/uart.c index dc11d3e7..5b88569b 100644 --- a/software/libbase/uart.c +++ b/software/libbase/uart.c @@ -33,9 +33,11 @@ void uart_isr(void) if(stat & UART_EV_RX) { rx_buf[rx_produce] = uart_rxtx_read(); rx_produce = (rx_produce + 1) & UART_RINGBUFFER_MASK_RX; + uart_ev_pending_write(UART_EV_RX); } if(stat & UART_EV_TX) { + uart_ev_pending_write(UART_EV_TX); if(tx_level > 0) { uart_rxtx_write(tx_buf[tx_consume]); tx_consume = (tx_consume + 1) & UART_RINGBUFFER_MASK_TX; @@ -43,8 +45,6 @@ void uart_isr(void) } else tx_cts = 1; } - - uart_ev_pending_write(stat); } /* Do not use in interrupt handlers! */