USB: serial: pl2303: fix line-speed handling on newer chips
Subsystems (3)
Johan Hovold
maintainerPATCH 1/1 USB: serial: pl2303: fix line-speed handling on newer chips
The latest chip family (HXN) apparently does not support setting the line speed using divisors and instead needs to use the direct encoding scheme for all rates.
This specifically enables 50, 110, 134, 200 bps and other rates not supported by the original chip type.
Fixes ebd09f1cd417 ("USB: serial: pl2303: add support for PL2303HXN")
Cc [email protected] # 5.5
Cc Charles Yeh <[email protected]>
Signed-off-by Johan Hovold <[email protected]>
--- drivers/usb/serial/pl2303.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)
drivers/usb/serial/pl2303.c +7 -1
@@ -183,6 +183,7 @@ struct pl2303_type_data {speed_t max_baud_rate;unsigned long quirks; unsigned int no_autoxonxoff:1; + unsigned int no_divisors:1; };struct pl2303_serial_private {
@@ -209,6 +210,7 @@ static const struct pl2303_type_data pl2303_type_data[TYPE_COUNT] = { }, [TYPE_HXN ] = { .max_baud_rate =12000000 , + .no_divisors = true, }, };
@@ -571,8 +573,12 @@ static void pl2303_encode_baud_rate(struct tty_struct *tty, baud =min_t (speed_t, baud, spriv->type->max_baud_rate);/* * Use direct method for supported baud rates, otherwise use divisors. +* Newer chip types do not support divisor encoding. */ - baud_sup =pl2303_get_supported_baud_rate (baud); +if (spriv->type->no_divisors) + baud_sup = baud; +else + baud_sup =pl2303_get_supported_baud_rate (baud);if (baud == baud_sup) baud =pl2303_encode_baud_rate_direct (buf, baud);
Signature · 1 line
2.26.2