if (ofs->rqr != UNDEF_REG)
                stm32_usart_set_bits(port, ofs->rqr, USART_RQR_RXFRQ);
 
-       /* Tx and RX FIFO configuration */
-       if (stm32_port->fifoen) {
-               val = readl_relaxed(port->membase + ofs->cr3);
-               val &= ~(USART_CR3_TXFTCFG_MASK | USART_CR3_RXFTCFG_MASK);
-               val |= USART_CR3_TXFTCFG_HALF << USART_CR3_TXFTCFG_SHIFT;
-               val |= USART_CR3_RXFTCFG_HALF << USART_CR3_RXFTCFG_SHIFT;
-               writel_relaxed(val, port->membase + ofs->cr3);
-       }
-
-       /* RX FIFO enabling */
+       /* RX enabling */
        val = stm32_port->cr1_irq | USART_CR1_RE | BIT(cfg->uart_enable_bit);
-       if (stm32_port->fifoen)
-               val |= USART_CR1_FIFOEN;
        stm32_usart_set_bits(port, ofs->cr1, val);
 
        return 0;
        if (stm32_port->fifoen)
                cr1 |= USART_CR1_FIFOEN;
        cr2 = 0;
+
+       /* Tx and RX FIFO configuration */
        cr3 = readl_relaxed(port->membase + ofs->cr3);
-       cr3 &= USART_CR3_TXFTIE | USART_CR3_RXFTCFG_MASK | USART_CR3_RXFTIE
-               | USART_CR3_TXFTCFG_MASK;
+       cr3 &= USART_CR3_TXFTIE | USART_CR3_RXFTIE;
+       if (stm32_port->fifoen) {
+               cr3 &= ~(USART_CR3_TXFTCFG_MASK | USART_CR3_RXFTCFG_MASK);
+               cr3 |= USART_CR3_TXFTCFG_HALF << USART_CR3_TXFTCFG_SHIFT;
+               cr3 |= USART_CR3_RXFTCFG_HALF << USART_CR3_RXFTCFG_SHIFT;
+       }
 
        if (cflag & CSTOPB)
                cr2 |= USART_CR2_STOP_2B;