USB: pl2303: add helper function for direct baud-rate encoding
authorJohan Hovold <jhovold@gmail.com>
Sun, 29 Dec 2013 18:23:14 +0000 (19:23 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 3 Jan 2014 20:31:48 +0000 (12:31 -0800)
Add helper function for direct baud-rate encoding.

Signed-off-by: Johan Hovold <jhovold@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/serial/pl2303.c

index 44f4b54..b4e7297 100644 (file)
@@ -339,6 +339,18 @@ static speed_t pl2303_get_supported_baud_rate(speed_t baud)
        return baud;
 }
 
+/*
+ * NOTE: If unsupported baud rates are set directly, the PL2303 seems to
+ *       use 9600 baud.
+ */
+static speed_t pl2303_encode_baud_rate_direct(unsigned char buf[4],
+                                                               speed_t baud)
+{
+       put_unaligned_le32(baud, buf);
+
+       return baud;
+}
+
 static speed_t pl2303_encode_baud_rate_divisor(unsigned char buf[4],
                                                                speed_t baud)
 {
@@ -376,16 +388,12 @@ static void pl2303_encode_baud_rate(struct tty_struct *tty,
 
        if (spriv->type->max_baud_rate)
                baud = min_t(speed_t, baud, spriv->type->max_baud_rate);
-       /*
-        * Set baud rate to nearest supported value.
-        *
-        * NOTE: If unsupported values are set directly, the PL2303 seems to
-        *       use 9600 baud.
-        */
+
+       /* Set baud rate to nearest supported value. */
        baud = pl2303_get_supported_baud_rate(baud);
 
        if (baud <= 115200)
-               put_unaligned_le32(baud, buf);
+               baud = pl2303_encode_baud_rate_direct(buf, baud);
        else
                baud = pl2303_encode_baud_rate_divisor(buf, baud);