Merge tag 'usb-3.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb
Pull USB patches from Greg Kroah-Hartman: "Here's the big USB pull request for 3.10-rc1. Lots of USB patches here, the majority being USB gadget changes and USB-serial driver cleanups, the rest being ARM build fixes / cleanups, and individual driver updates. We also finally got some chipidea fixes, which have been delayed for a number of kernel releases, as the maintainer has now reappeared. All of these have been in linux-next for a while" * tag 'usb-3.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (568 commits) USB: ehci-msm: USB_MSM_OTG needs USB_PHY USB: OHCI: avoid conflicting platform drivers USB: OMAP: ISP1301 needs USB_PHY USB: lpc32xx: ISP1301 needs USB_PHY USB: ftdi_sio: enable two UART ports on ST Microconnect Lite usb: phy: tegra: don't call into tegra-ehci directly usb: phy: phy core cannot yet be a module USB: Fix initconst in ehci driver usb-storage: CY7C68300A chips do not support Cypress ATACB USB: serial: option: Added support Olivetti Olicard 145 USB: ftdi_sio: correct ST Micro Connect Lite PIDs ARM: mxs_defconfig: add CONFIG_USB_PHY ARM: imx_v6_v7_defconfig: add CONFIG_USB_PHY usb: phy: remove exported function from __init section usb: gadget: zero: put function instances on unbind usb: gadget: f_sourcesink.c: correct a copy-paste misnomer usb: gadget: cdc2: fix error return code in cdc_do_config() usb: gadget: multi: fix error return code in rndis_do_config() usb: gadget: f_obex: fix error return code in obex_bind() USB: storage: convert to use module_usb_driver() ...
This commit is contained in:
@@ -712,45 +712,45 @@ static void usa49wg_indat_callback(struct urb *urb)
|
||||
i = 0;
|
||||
len = 0;
|
||||
|
||||
if (urb->actual_length) {
|
||||
while (i < urb->actual_length) {
|
||||
while (i < urb->actual_length) {
|
||||
|
||||
/* Check port number from message*/
|
||||
if (data[i] >= serial->num_ports) {
|
||||
dev_dbg(&urb->dev->dev, "%s - Unexpected port number %d\n",
|
||||
__func__, data[i]);
|
||||
return;
|
||||
}
|
||||
port = serial->port[data[i++]];
|
||||
len = data[i++];
|
||||
|
||||
/* 0x80 bit is error flag */
|
||||
if ((data[i] & 0x80) == 0) {
|
||||
/* no error on any byte */
|
||||
i++;
|
||||
for (x = 1; x < len ; ++x)
|
||||
tty_insert_flip_char(&port->port,
|
||||
data[i++], 0);
|
||||
} else {
|
||||
/*
|
||||
* some bytes had errors, every byte has status
|
||||
*/
|
||||
for (x = 0; x + 1 < len; x += 2) {
|
||||
int stat = data[i], flag = 0;
|
||||
if (stat & RXERROR_OVERRUN)
|
||||
flag |= TTY_OVERRUN;
|
||||
if (stat & RXERROR_FRAMING)
|
||||
flag |= TTY_FRAME;
|
||||
if (stat & RXERROR_PARITY)
|
||||
flag |= TTY_PARITY;
|
||||
/* XXX should handle break (0x10) */
|
||||
tty_insert_flip_char(&port->port,
|
||||
data[i+1], flag);
|
||||
i += 2;
|
||||
}
|
||||
}
|
||||
tty_flip_buffer_push(&port->port);
|
||||
/* Check port number from message */
|
||||
if (data[i] >= serial->num_ports) {
|
||||
dev_dbg(&urb->dev->dev, "%s - Unexpected port number %d\n",
|
||||
__func__, data[i]);
|
||||
return;
|
||||
}
|
||||
port = serial->port[data[i++]];
|
||||
len = data[i++];
|
||||
|
||||
/* 0x80 bit is error flag */
|
||||
if ((data[i] & 0x80) == 0) {
|
||||
/* no error on any byte */
|
||||
i++;
|
||||
for (x = 1; x < len && i < urb->actual_length; ++x)
|
||||
tty_insert_flip_char(&port->port,
|
||||
data[i++], 0);
|
||||
} else {
|
||||
/*
|
||||
* some bytes had errors, every byte has status
|
||||
*/
|
||||
for (x = 0; x + 1 < len &&
|
||||
i + 1 < urb->actual_length; x += 2) {
|
||||
int stat = data[i], flag = 0;
|
||||
|
||||
if (stat & RXERROR_OVERRUN)
|
||||
flag |= TTY_OVERRUN;
|
||||
if (stat & RXERROR_FRAMING)
|
||||
flag |= TTY_FRAME;
|
||||
if (stat & RXERROR_PARITY)
|
||||
flag |= TTY_PARITY;
|
||||
/* XXX should handle break (0x10) */
|
||||
tty_insert_flip_char(&port->port, data[i+1],
|
||||
flag);
|
||||
i += 2;
|
||||
}
|
||||
}
|
||||
tty_flip_buffer_push(&port->port);
|
||||
}
|
||||
|
||||
/* Resubmit urb so we continue receiving */
|
||||
@@ -1092,7 +1092,6 @@ static void keyspan_dtr_rts(struct usb_serial_port *port, int on)
|
||||
static void keyspan_close(struct usb_serial_port *port)
|
||||
{
|
||||
int i;
|
||||
struct usb_serial *serial = port->serial;
|
||||
struct keyspan_port_private *p_priv;
|
||||
|
||||
p_priv = usb_get_serial_port_data(port);
|
||||
@@ -1100,28 +1099,17 @@ static void keyspan_close(struct usb_serial_port *port)
|
||||
p_priv->rts_state = 0;
|
||||
p_priv->dtr_state = 0;
|
||||
|
||||
if (serial->dev) {
|
||||
keyspan_send_setup(port, 2);
|
||||
/* pilot-xfer seems to work best with this delay */
|
||||
mdelay(100);
|
||||
/* keyspan_set_termios(port, NULL); */
|
||||
}
|
||||
|
||||
/*while (p_priv->outcont_urb->status == -EINPROGRESS) {
|
||||
dev_dbg(&port->dev, "%s - urb in progress\n", __func__);
|
||||
}*/
|
||||
keyspan_send_setup(port, 2);
|
||||
/* pilot-xfer seems to work best with this delay */
|
||||
mdelay(100);
|
||||
|
||||
p_priv->out_flip = 0;
|
||||
p_priv->in_flip = 0;
|
||||
|
||||
if (serial->dev) {
|
||||
/* Stop reading/writing urbs */
|
||||
stop_urb(p_priv->inack_urb);
|
||||
/* stop_urb(p_priv->outcont_urb); */
|
||||
for (i = 0; i < 2; i++) {
|
||||
stop_urb(p_priv->in_urbs[i]);
|
||||
stop_urb(p_priv->out_urbs[i]);
|
||||
}
|
||||
stop_urb(p_priv->inack_urb);
|
||||
for (i = 0; i < 2; i++) {
|
||||
stop_urb(p_priv->in_urbs[i]);
|
||||
stop_urb(p_priv->out_urbs[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user