[PATCH] USB: serial: cp210x: add minimun baud rate for CP2105 SCI

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

 



From: Johanna Abrahamsson <johanna.abrahamsson@xxxxxxxxxxxxx>

This patch adds a minimum baud rate of 2400 for CP2105 SCI

According to the datasheet for CP2105, the SCI supports 2400 as the
lowest baud rate. As this is not heeded in the current code, an error
message 'failed set req 0x1e size 4 status: -32' when trying to set a
lower baud rate such as 300.

Since this is, as far as I can tell, the only cp210x chip with a minimum
baud rate higher than 300, I've added a special case to
cp210x_change_speed rather than adding a min_speed field in
cp210x_serial_private.

Signed-off-by: Johanna Abrahamsson <johanna.abrahamsson@xxxxxxxxxxxxx>
---
 drivers/usb/serial/cp210x.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c
index 336a3c0f9f2c..181abf7bb8c0 100644
--- a/drivers/usb/serial/cp210x.c
+++ b/drivers/usb/serial/cp210x.c
@@ -1111,9 +1111,12 @@ static void cp210x_change_speed(struct tty_struct *tty,
 	 */
 	if (priv->use_actual_rate)
 		baud = cp210x_get_actual_rate(serial, baud);
-	else if (baud < 1000000)
+	else if (baud < 1000000) {
+		if (priv->partnum == CP210X_PARTNUM_CP2105 &&
+		    cp210x_interface_num(serial) == 1)
+			baud = clamp(baud, 2400u, priv->max_speed);
 		baud = cp210x_get_an205_rate(baud);
-	else if (baud > priv->max_speed)
+	} else if (baud > priv->max_speed)
 		baud = priv->max_speed;
 
 	dev_dbg(&port->dev, "%s - setting baud rate to %u\n", __func__, baud);
-- 
2.11.0




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

  Powered by Linux