diff options
author | Johan Hovold <jhovold@gmail.com> | 2013-12-29 18:23:14 (GMT) |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-01-03 20:31:48 (GMT) |
commit | 20b4c787199f4fcf0fae5ed78a4ff0104e2afaa3 (patch) | |
tree | cdad57048ead95f9afc8aa8fb69ed78121765a6c /drivers/usb/serial/pl2303.c | |
parent | c82c6d45a2fc882fedfde517ba86690b2d5ed555 (diff) | |
download | linux-20b4c787199f4fcf0fae5ed78a4ff0104e2afaa3.tar.xz |
USB: pl2303: add helper function for direct baud-rate encoding
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>
Diffstat (limited to 'drivers/usb/serial/pl2303.c')
-rw-r--r-- | drivers/usb/serial/pl2303.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c index 44f4b54..b4e7297 100644 --- a/drivers/usb/serial/pl2303.c +++ b/drivers/usb/serial/pl2303.c @@ -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); |