-
Notifications
You must be signed in to change notification settings - Fork 15
Description
In uart_isr()
https://github.com/polarfire-soc/platform/blob/main/drivers/mss/mss_mmuart/mss_uart.c
for IIRF_THRE the code has changed and the lines (1603-1606):
if (this_uart->tx_idx == this_uart->tx_buff_size)
{
MSS_UART_disable_irq(this_uart, MSS_UART_TBE_IRQ);
this_uart->tx_buff_size = TX_COMPLETE;
}
were moved from the end of the tx_handler routine to the the isr body right after the handler has been called.
This is an issue in case the tx_handler calls portEND_SWITCHING_ISR(xHigherPriorityTaskWoken) because a task sending data over uart will restart before returning to the ISR and in case the task wants to send someting else on the using interrupts the call will stop in MSS_UART_irq_tx() at line 357:
ASSERT(TX_COMPLETE == this_uart->tx_buff_size);