serial: stm32f7: disable overrun
authorVikas Manocha <vikas.manocha@st.com>
Sun, 28 May 2017 19:55:12 +0000 (12:55 -0700)
committerTom Rini <trini@konsulko.com>
Fri, 9 Jun 2017 15:23:59 +0000 (11:23 -0400)
With overrun enabled, serial port console freezes & stops receiving data with
overun error if we keep sending data.

Signed-off-by: Vikas Manocha <vikas.manocha@st.com>
drivers/serial/serial_stm32x7.c
drivers/serial/serial_stm32x7.h

index bdabf87..483e4ba 100644 (file)
@@ -93,6 +93,9 @@ static int stm32_serial_probe(struct udevice *dev)
        }
 #endif
 
+       /* Disable usart-> disable overrun-> enable usart */
+       clrbits_le32(&usart->cr1, USART_CR1_RE | USART_CR1_TE | USART_CR1_UE);
+       setbits_le32(&usart->cr3, USART_CR3_OVRDIS);
        setbits_le32(&usart->cr1, USART_CR1_RE | USART_CR1_TE | USART_CR1_UE);
 
        return 0;
index 6190d67..8c02548 100644 (file)
@@ -27,6 +27,8 @@ struct stm32_usart {
 #define USART_CR1_TE                   (1 << 3)
 #define USART_CR1_UE                   (1 << 0)
 
+#define USART_CR3_OVRDIS               (1 << 12)
+
 #define USART_SR_FLAG_RXNE             (1 << 5)
 #define USART_SR_FLAG_TXE              (1 << 7)