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