mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-19 18:53:52 +08:00
USB: ch341: set tty baud speed according to tty struct
The ch341_set_baudrate() function initialize the device baud speed according to the value on priv->baud_rate. By default the ch341_open() set it to a hardcoded value (DEFAULT_BAUD_RATE 9600). Unfortunately, the tty_struct is not initialized with the same default value. (usually 56700) This means that the tty_struct and the device baud rate generator are not synchronized after opening the port. Fixup is done by calling ch341_set_termios() if tty exist. Remove unnecessary variable priv->baud_rate setup as it's already done by ch341_port_probe(). Remove unnecessary call to ch341_set_{handshake,baudrate}() in ch341_open() as there already called in ch341_configure() and ch341_set_termios() Signed-off-by: Nicolas PLANEL <nicolas.planel@enovance.com> Signed-off-by: Johan Hovold <johan@kernel.org>
This commit is contained in:
parent
675af70856
commit
aa91def41a
@ -84,6 +84,10 @@ struct ch341_private {
|
||||
u8 line_status; /* active status of modem control inputs */
|
||||
};
|
||||
|
||||
static void ch341_set_termios(struct tty_struct *tty,
|
||||
struct usb_serial_port *port,
|
||||
struct ktermios *old_termios);
|
||||
|
||||
static int ch341_control_out(struct usb_device *dev, u8 request,
|
||||
u16 value, u16 index)
|
||||
{
|
||||
@ -309,19 +313,12 @@ static int ch341_open(struct tty_struct *tty, struct usb_serial_port *port)
|
||||
struct ch341_private *priv = usb_get_serial_port_data(port);
|
||||
int r;
|
||||
|
||||
priv->baud_rate = DEFAULT_BAUD_RATE;
|
||||
|
||||
r = ch341_configure(serial->dev, priv);
|
||||
if (r)
|
||||
goto out;
|
||||
|
||||
r = ch341_set_handshake(serial->dev, priv->line_control);
|
||||
if (r)
|
||||
goto out;
|
||||
|
||||
r = ch341_set_baudrate(serial->dev, priv);
|
||||
if (r)
|
||||
goto out;
|
||||
if (tty)
|
||||
ch341_set_termios(tty, port, NULL);
|
||||
|
||||
dev_dbg(&port->dev, "%s - submitting interrupt urb\n", __func__);
|
||||
r = usb_submit_urb(port->interrupt_in_urb, GFP_KERNEL);
|
||||
|
Loading…
Reference in New Issue
Block a user