]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
serial: stm32: add support for break control
authorErwan Le Ray <erwan.leray@foss.st.com>
Wed, 6 Sep 2023 15:15:47 +0000 (17:15 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 18 Sep 2023 09:14:42 +0000 (11:14 +0200)
Add support for break control to the stm32 serial driver.

Signed-off-by: Erwan Le Ray <erwan.leray@foss.st.com>
Signed-off-by: Valentin Caron <valentin.caron@foss.st.com>
Reviewed-by: Jiri Slaby <jirislaby@kernel.org>
Link: https://lore.kernel.org/r/20230906151547.840302-1-valentin.caron@foss.st.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/stm32-usart.c

index 5e9cf0c48813da0d44fc9f31fbb3b625197a46bd..d03ec69d79fce84d31d6dcd356e0edf97724156c 100644 (file)
@@ -1047,9 +1047,20 @@ static void stm32_usart_stop_rx(struct uart_port *port)
                stm32_usart_clr_bits(port, ofs->cr3, stm32_port->cr3_irq);
 }
 
-/* Handle breaks - ignored by us */
 static void stm32_usart_break_ctl(struct uart_port *port, int break_state)
 {
+       struct stm32_port *stm32_port = to_stm32_port(port);
+       const struct stm32_usart_offsets *ofs = &stm32_port->info->ofs;
+       unsigned long flags;
+
+       spin_lock_irqsave(&port->lock, flags);
+
+       if (break_state)
+               stm32_usart_set_bits(port, ofs->rqr, USART_RQR_SBKRQ);
+       else
+               stm32_usart_clr_bits(port, ofs->rqr, USART_RQR_SBKRQ);
+
+       spin_unlock_irqrestore(&port->lock, flags);
 }
 
 static int stm32_usart_startup(struct uart_port *port)