Commit 20b4c787 authored by Johan Hovold's avatar Johan Hovold Committed by Greg Kroah-Hartman

USB: pl2303: add helper function for direct baud-rate encoding

Add helper function for direct baud-rate encoding.
Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent c82c6d45
...@@ -339,6 +339,18 @@ static speed_t pl2303_get_supported_baud_rate(speed_t baud) ...@@ -339,6 +339,18 @@ static speed_t pl2303_get_supported_baud_rate(speed_t baud)
return 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], static speed_t pl2303_encode_baud_rate_divisor(unsigned char buf[4],
speed_t baud) speed_t baud)
{ {
...@@ -376,16 +388,12 @@ static void pl2303_encode_baud_rate(struct tty_struct *tty, ...@@ -376,16 +388,12 @@ static void pl2303_encode_baud_rate(struct tty_struct *tty,
if (spriv->type->max_baud_rate) if (spriv->type->max_baud_rate)
baud = min_t(speed_t, baud, spriv->type->max_baud_rate); baud = min_t(speed_t, baud, spriv->type->max_baud_rate);
/*
* Set baud rate to nearest supported value. /* Set baud rate to nearest supported value. */
*
* NOTE: If unsupported values are set directly, the PL2303 seems to
* use 9600 baud.
*/
baud = pl2303_get_supported_baud_rate(baud); baud = pl2303_get_supported_baud_rate(baud);
if (baud <= 115200) if (baud <= 115200)
put_unaligned_le32(baud, buf); baud = pl2303_encode_baud_rate_direct(buf, baud);
else else
baud = pl2303_encode_baud_rate_divisor(buf, baud); baud = pl2303_encode_baud_rate_divisor(buf, baud);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment