aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Kroah-Hartman2013-11-01 09:18:47 -0700
committerGreg Kroah-Hartman2013-11-01 09:18:47 -0700
commit92dfe410880b8bde731ca1a6e7da2dd3b13404e6 (patch)
tree898b579d15acca3bba5b7ecb091a3531c277bbfc
parente2afb1d66644a3c55e3a46ba312e302a065ecac5 (diff)
Revert "usb: pl2303: increase the allowed baud rate range for the divisor based encoding method"
This reverts commit b5c16c6a031c52cc4b7dda6c3de46462fbc92eab. Revert all of the pl2303 changes that went into 3.12-rc1 and -rc2 as they cause regressions on some versions of the chip. This will all be revisited for later kernel versions when we can figure out how to handle this in a way that does not break working devices. Reported-by: Mika Westerberg <mika.westerberg@linux.intel.com> Cc: Frank Schäfer <fschaefer.oss@googlemail.com> Acked-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/usb/serial/pl2303.c16
1 files changed, 4 insertions, 12 deletions
diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c
index 61c9f9d28ee9..693ed7e4871a 100644
--- a/drivers/usb/serial/pl2303.c
+++ b/drivers/usb/serial/pl2303.c
@@ -324,20 +324,12 @@ static int pl2303_baudrate_encode_divisor(int baud, enum pl2303_type type,
*/
unsigned int A, B;
- /*
- * NOTE: The Windows driver allows maximum baud rates of 110% of the
- * specified maximium value.
- * Quick tests with early (2004) HX (rev. A) chips suggest, that even
- * higher baud rates (up to the maximum of 24M baud !) are working fine,
- * but that should really be tested carefully in "real life" scenarios
- * before removing the upper limit completely.
- * Baud rates smaller than the specified 75 baud are definitely working
- * fine.
- */
+ /* Respect the specified baud rate limits */
+ baud = max_t(int, baud, 75);
if (type == HX)
- baud = min_t(int, baud, 6000000 * 1.1);
+ baud = min_t(int, baud, 6000000);
else
- baud = min_t(int, baud, 1228800 * 1.1);
+ baud = min_t(int, baud, 1228800);
/* Determine factors A and B */
A = 0;
B = 12000000 * 32 / baud; /* 12MHz */