unsigned int baud, bits;
        u32 usartdiv, mantissa, fraction, oversampling;
        tcflag_t cflag = termios->c_cflag;
-       u32 cr1, cr2, cr3;
+       u32 cr1, cr2, cr3, isr;
        unsigned long flags;
+       int ret;
 
        if (!stm32_port->hw_flow_control)
                cflag &= ~CRTSCTS;
 
        spin_lock_irqsave(&port->lock, flags);
 
+       ret = readl_relaxed_poll_timeout_atomic(port->membase + ofs->isr,
+                                               isr,
+                                               (isr & USART_SR_TC),
+                                               10, 100000);
+
+       /* Send the TC error message only when ISR_TC is not set. */
+       if (ret)
+               dev_err(port->dev, "Transmission is not complete\n");
+
        /* Stop serial port and reset value */
        writel_relaxed(0, port->membase + ofs->cr1);