[PATCH 1/8] pl2303: restrict the divisor based baud rate encoding method to the "HX" chip type

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



It's not clear if the type_0 and type_1 chips support the divisor based baud
rate encoding method, so don't use it until anyone with such chip has tested it
to avoid regressions with the following patches.

Even if it has been working fine with these chips since the code has been added
2 years ago, this change will not cause any regressions, because the baud rates
currently supported/allowed with the divisor based method are supported with
the direct method, too.

The code for the divisor based method also isn't entirely correct (yet), so that the
direct encoding method actually works better (sets the baud rate more precisely).

Signed-off-by: Frank Schäfer <fschaefer.oss@xxxxxxxxxxxxxx>
---
 drivers/usb/serial/pl2303.c |    6 +++++-
 1 Datei geändert, 5 Zeilen hinzugefügt(+), 1 Zeile entfernt(-)

diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c
index 1e6de4c..2448201 100644
--- a/drivers/usb/serial/pl2303.c
+++ b/drivers/usb/serial/pl2303.c
@@ -305,10 +305,14 @@ static void pl2303_encode_baudrate(struct tty_struct *tty,
 	if (spriv->type != HX)
 		baud = min_t(int, baud, 1228800);
 
-	if (baud <= 115200) {
+	if (spriv->type != HX || baud <= 115200) {
+		/* Direct (standard) baud rate encoding method */
 		put_unaligned_le32(baud, buf);
 	} else {
 		/*
+		 * NOTE: it's not clear if the type_0/1 chips
+		 * support this method
+		 *
 		 * Apparently the formula for higher speeds is:
 		 * baudrate = 12M * 32 / (2^buf[1]) / buf[0]
 		 */
-- 
1.7.10.4

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux