tty: omap-serial: pull out calculation from baud_is_mode16
authorFrans Klaver <frans.klaver@xsens.com>
Wed, 24 Sep 2014 07:55:22 +0000 (09:55 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 29 Sep 2014 01:24:06 +0000 (21:24 -0400)
To determine the correct divisor, we need to know the difference between
the desired baud rate and the actual baud rate. The calculation for this
difference is implemented twice within omap_serial_baud_is_mode16().
Pull out the calculation for easier maintenance.

While at it, remove the CamelCasing from the variable names.

Signed-off-by: Frans Klaver <frans.klaver@xsens.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/omap-serial.c

index e454b7c2ecd9ff35ffec5fc0dd9d3fe0ff64933b..18c30cabe27fb8236cc11254b68a65f212643f2f 100644 (file)
@@ -238,6 +238,26 @@ static void serial_omap_enable_wakeup(struct uart_omap_port *up, bool enable)
        pdata->enable_wakeup(up->dev, enable);
 }
 
+/*
+ * Calculate the absolute difference between the desired and actual baud
+ * rate for the given mode.
+ */
+static inline int calculate_baud_abs_diff(struct uart_port *port,
+                               unsigned int baud, unsigned int mode)
+{
+       unsigned int n = port->uartclk / (mode * baud);
+       int abs_diff;
+
+       if (n == 0)
+               n = 1;
+
+       abs_diff = baud - (port->uartclk / (mode * n));
+       if (abs_diff < 0)
+               abs_diff = -abs_diff;
+
+       return abs_diff;
+}
+
 /*
  * serial_omap_baud_is_mode16 - check if baud rate is MODE16X
  * @port: uart port info
@@ -252,24 +272,10 @@ static void serial_omap_enable_wakeup(struct uart_omap_port *up, bool enable)
 static bool
 serial_omap_baud_is_mode16(struct uart_port *port, unsigned int baud)
 {
-       unsigned int n13 = port->uartclk / (13 * baud);
-       unsigned int n16 = port->uartclk / (16 * baud);
-       int baudAbsDiff13;
-       int baudAbsDiff16;
-
-       if (n13 == 0)
-               n13 = 1;
-       if (n16 == 0)
-               n16 = 1;
-
-       baudAbsDiff13 = baud - (port->uartclk / (13 * n13));
-       baudAbsDiff16 = baud - (port->uartclk / (16 * n16));
-       if (baudAbsDiff13 < 0)
-               baudAbsDiff13 = -baudAbsDiff13;
-       if (baudAbsDiff16 < 0)
-               baudAbsDiff16 = -baudAbsDiff16;
-
-       return (baudAbsDiff13 >= baudAbsDiff16);
+       int abs_diff_13 = calculate_baud_abs_diff(port, baud, 13);
+       int abs_diff_16 = calculate_baud_abs_diff(port, baud, 16);
+
+       return (abs_diff_13 >= abs_diff_16);
 }
 
 /*