driver: uart: stm32: Clear buffer length only in UART TC event
The buffer_length != 0 is used to check if there is transfer ongoing inside the uart_stm32_async_tx function. uart_stm32_dma_tx_cb clears it to 0 when TX DMA is finished, but before the USART send all the data from shift register. buffer_length is also cleared in callback async_evt_tx_done, which is called when USART finished sending all the bytes. If the uart_stm32_async_tx would be called after uart_stm32_async_tx, but before async_evt_tx_done there could be race condition on buffer_length. Signed-off-by: Adam BERLINGER <adam.berlinger@st.com>
This commit is contained in:
parent
56446ffbe8
commit
ccf07d45b5
1 changed files with 0 additions and 2 deletions
|
@ -1532,8 +1532,6 @@ void uart_stm32_dma_tx_cb(const struct device *dma_dev, void *user_data,
|
|||
stat.pending_length;
|
||||
}
|
||||
|
||||
data->dma_tx.buffer_length = 0;
|
||||
|
||||
irq_unlock(key);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue