Skip to content

Commit b6b8eee

Browse files
perezprimmahadevan108
authored andcommitted
serial: mchp_xec: Fix uart_xec_irq_tx_complete function
This function is only checking for current byte being transmitted. This patch ensures that function returns `1` until TX is disabled and no byte is being transmitted. Signed-off-by: Bernardo Perez Priego <[email protected]>
1 parent 431c340 commit b6b8eee

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

drivers/serial/uart_mchp_xec.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -747,10 +747,15 @@ static int uart_xec_irq_tx_complete(const struct device *dev)
747747
const struct uart_xec_device_config * const dev_cfg = dev->config;
748748
struct uart_xec_dev_data *dev_data = dev->data;
749749
struct uart_regs *regs = dev_cfg->regs;
750+
int ret;
750751
k_spinlock_key_t key = k_spin_lock(&dev_data->lock);
751752

752-
int ret = ((regs->LSR & (LSR_TEMT | LSR_THRE))
753-
== (LSR_TEMT | LSR_THRE)) ? 1 : 0;
753+
if ((regs->IER & IER_TBE) ||
754+
((regs->LSR & (LSR_TEMT | LSR_THRE)) != (LSR_TEMT | LSR_THRE))) {
755+
ret = 0;
756+
} else {
757+
ret = 1;
758+
}
754759

755760
k_spin_unlock(&dev_data->lock, key);
756761

0 commit comments

Comments
 (0)