diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c index 985cbcf..482b012 100644 --- a/drivers/usb/serial/cp210x.c +++ b/drivers/usb/serial/cp210x.c @@ -309,10 +309,10 @@ static int cp210x_set_config(struct usb_serial_port *port, u8 request, } /* Single data value */ - result = usb_control_msg(serial->dev, +/* result = usb_control_msg(serial->dev, usb_sndctrlpipe(serial->dev, 0), request, REQTYPE_HOST_TO_DEVICE, data[0], - 0, NULL, 0, 300); + 0, NULL, 0, 300); */ return 0; } @@ -376,12 +376,21 @@ static int cp210x_open(struct tty_struct *tty, struct usb_serial_port *port, dbg("%s - port %d", __func__, port->number); + dbg("%s - port reset %d", __func__, port->number); + if (cp210x_set_config_single(port, CP210X_RESET, 0x0)) { + dev_err(&port->dev, "%s - Unable to reset UART\n", + __func__); + return -EPROTO; + } + + dbg("%s - port enable %d", __func__, port->number); if (cp210x_set_config_single(port, CP210X_IFC_ENABLE, UART_ENABLE)) { dev_err(&port->dev, "%s - Unable to enable UART\n", __func__); return -EPROTO; } + /* Start reading from the device */ usb_fill_bulk_urb(port->read_urb, serial->dev, usb_rcvbulkpipe(serial->dev,