aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb
diff options
context:
space:
mode:
authorFrank Schäfer <fschaefer.oss@googlemail.com>2013-08-06 19:26:29 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-08-12 15:43:41 -0700
commitc23bda365dfbf56aa4d6d4a97f83136c36050e01 (patch)
tree763ac0cafbf7cf6ba83a4e5f28043081489dd7dd /drivers/usb
parentusb: pl2303: also use the divisor based baud rate encoding method for baud rates < 115200 with HX chips (diff)
downloadlinux-dev-c23bda365dfbf56aa4d6d4a97f83136c36050e01.tar.xz
linux-dev-c23bda365dfbf56aa4d6d4a97f83136c36050e01.zip
usb: pl2303: add two comments concerning the supported baud rates with HX chips
I've found some new datasheets which describe some additionally supported standard baud rates and I've verified them with my HX (rev. 3A) device. But adding support for individual (chip type specific) baud rates would add a good amount of extra code (especially when support for further chips will be added to the driver one day), which makes no sense as long as we are not using the direct baud rate encoding method for newer chips. So for now, just drop a comment about these additionally supported baud rates. The second comment is about the baud rate differences between the two encoding methods. In theory, we could optimize the code a bit by comparing the resulting baud rates of both methods and selecting the one which is closer to the requested baud rate. But that seems to be a bit overkill, because the differences are very small and the device likely uses the same baud rate generator for both methods so that the resulting baud rate would be the same. Signed-off-by: Frank Schäfer <fschaefer.oss@googlemail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/serial/pl2303.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c
index 09fb55cf3be7..6638c5d9079d 100644
--- a/drivers/usb/serial/pl2303.c
+++ b/drivers/usb/serial/pl2303.c
@@ -281,6 +281,12 @@ static int pl2303_baudrate_encode_direct(int baud, enum pl2303_type type,
4800, 7200, 9600, 14400, 19200, 28800, 38400,
57600, 115200, 230400, 460800, 614400, 921600,
1228800, 2457600, 3000000, 6000000 };
+ /*
+ * NOTE: The PL2303HX (tested with rev. 3A) also supports the following
+ * baud rates: 128000, 134400, 161280, 201600, 268800, 403200, 806400.
+ * As long as we are not using this encoding method for them, there is
+ * no point in complicating the code to support them.
+ */
int i;
/* Set baudrate to nearest supported value */
@@ -394,6 +400,12 @@ static void pl2303_encode_baudrate(struct tty_struct *tty,
* => supported by all chip types
* 2) Divisor based method: encodes a divisor to a base value (12MHz*32)
* => supported by HX chips (and likely not by type_0/1 chips)
+ *
+ * NOTE: Although the divisor based baud rate encoding method is much
+ * more flexible, some of the standard baud rate values can not be
+ * realized exactly. But the difference is very small (max. 0.2%) and
+ * the device likely uses the same baud rate generator for both methods
+ * so that there is likley no difference.
*/
if (type != HX)
baud = pl2303_baudrate_encode_direct(baud, type, buf);