serial: dz: Assume previous baudrate is valid
authorIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Tue, 16 Aug 2022 11:57:34 +0000 (14:57 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 30 Aug 2022 12:22:34 +0000 (14:22 +0200)
Assume previously used termios has a valid baudrate and use
it directly.

Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Acked-by: Maciej W. Rozycki <macro@orcam.me.uk>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Link: https://lore.kernel.org/r/20220816115739.10928-4-ilpo.jarvinen@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/dz.c

index 2e21acf397202494e2b8c241374810ba6509c544..3eaf4e85bfdd9b13b03080302adb3173b521c2c5 100644 (file)
@@ -592,9 +592,12 @@ static void dz_set_termios(struct uart_port *uport, struct ktermios *termios,
 
        baud = uart_get_baud_rate(uport, termios, old_termios, 50, 9600);
        bflag = dz_encode_baud_rate(baud);
-       if (bflag < 0)  {                       /* Try to keep unchanged.  */
-               baud = uart_get_baud_rate(uport, old_termios, NULL, 50, 9600);
-               bflag = dz_encode_baud_rate(baud);
+       if (bflag < 0)  {
+               if (old_termios) {
+                       /* Keep unchanged. */
+                       baud = tty_termios_baud_rate(old_termios);
+                       bflag = dz_encode_baud_rate(baud);
+               }
                if (bflag < 0)  {               /* Resort to 9600.  */
                        baud = 9600;
                        bflag = DZ_B9600;