diff options
author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2013-03-19 09:47:30 +0100 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2013-03-19 09:47:30 +0100 |
commit | 0d4a42f6bd298e826620585e766a154ab460617a (patch) | |
tree | 406d8f7778691d858dbe3e48e4bbb10e99c0a58a /drivers/usb/serial/quatech2.c | |
parent | d62b4892f3d9f7dd2002e5309be10719d6805b0f (diff) | |
parent | a937536b868b8369b98967929045f1df54234323 (diff) |
Merge tag 'v3.9-rc3' into drm-intel-next-queued
Backmerge so that I can merge Imre Deak's coalesced sg entries fixes,
which depend upon the new for_each_sg_page introduce in
commit a321e91b6d73ed011ffceed384c40d2785cf723b
Author: Imre Deak <imre.deak@intel.com>
Date: Wed Feb 27 17:02:56 2013 -0800
lib/scatterlist: add simple page iterator
The merge itself is just two trivial conflicts:
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/usb/serial/quatech2.c')
-rw-r--r-- | drivers/usb/serial/quatech2.c | 50 |
1 files changed, 17 insertions, 33 deletions
diff --git a/drivers/usb/serial/quatech2.c b/drivers/usb/serial/quatech2.c index d152be97d04..d643a4d4d77 100644 --- a/drivers/usb/serial/quatech2.c +++ b/drivers/usb/serial/quatech2.c @@ -609,7 +609,6 @@ void qt2_process_read_urb(struct urb *urb) struct qt2_serial_private *serial_priv; struct usb_serial_port *port; struct qt2_port_private *port_priv; - struct tty_struct *tty; bool escapeflag; unsigned char *ch; int i; @@ -620,15 +619,11 @@ void qt2_process_read_urb(struct urb *urb) return; ch = urb->transfer_buffer; - tty = NULL; serial = urb->context; serial_priv = usb_get_serial_data(serial); port = serial->port[serial_priv->current_port]; port_priv = usb_get_serial_port_data(port); - if (port_priv->is_open) - tty = tty_port_tty_get(&port->port); - for (i = 0; i < urb->actual_length; i++) { ch = (unsigned char *)urb->transfer_buffer + i; if ((i <= (len - 3)) && @@ -666,10 +661,9 @@ void qt2_process_read_urb(struct urb *urb) __func__); break; } - if (tty) { - tty_flip_buffer_push(tty); - tty_kref_put(tty); - } + + if (port_priv->is_open) + tty_flip_buffer_push(&port->port); newport = *(ch + 3); @@ -683,10 +677,6 @@ void qt2_process_read_urb(struct urb *urb) serial_priv->current_port = newport; port = serial->port[serial_priv->current_port]; port_priv = usb_get_serial_port_data(port); - if (port_priv->is_open) - tty = tty_port_tty_get(&port->port); - else - tty = NULL; i += 3; escapeflag = true; break; @@ -697,8 +687,8 @@ void qt2_process_read_urb(struct urb *urb) escapeflag = true; break; case QT2_CONTROL_ESCAPE: - tty_buffer_request_room(tty, 2); - tty_insert_flip_string(tty, ch, 2); + tty_buffer_request_room(&port->port, 2); + tty_insert_flip_string(&port->port, ch, 2); i += 2; escapeflag = true; break; @@ -712,16 +702,12 @@ void qt2_process_read_urb(struct urb *urb) continue; } - if (tty) { - tty_buffer_request_room(tty, 1); - tty_insert_flip_string(tty, ch, 1); - } + tty_buffer_request_room(&port->port, 1); + tty_insert_flip_string(&port->port, ch, 1); } - if (tty) { - tty_flip_buffer_push(tty); - tty_kref_put(tty); - } + if (port_priv->is_open) + tty_flip_buffer_push(&port->port); } static void qt2_write_bulk_callback(struct urb *urb) @@ -945,19 +931,17 @@ static void qt2_dtr_rts(struct usb_serial_port *port, int on) struct usb_device *dev = port->serial->dev; struct qt2_port_private *port_priv = usb_get_serial_port_data(port); - mutex_lock(&port->serial->disc_mutex); - if (!port->serial->disconnected) { - /* Disable flow control */ - if (!on && qt2_setregister(dev, port_priv->device_port, + /* Disable flow control */ + if (!on) { + if (qt2_setregister(dev, port_priv->device_port, UART_MCR, 0) < 0) dev_warn(&port->dev, "error from flowcontrol urb\n"); - /* drop RTS and DTR */ - if (on) - update_mctrl(port_priv, TIOCM_DTR | TIOCM_RTS, 0); - else - update_mctrl(port_priv, 0, TIOCM_DTR | TIOCM_RTS); } - mutex_unlock(&port->serial->disc_mutex); + /* drop RTS and DTR */ + if (on) + update_mctrl(port_priv, TIOCM_DTR | TIOCM_RTS, 0); + else + update_mctrl(port_priv, 0, TIOCM_DTR | TIOCM_RTS); } static void qt2_update_msr(struct usb_serial_port *port, unsigned char *ch) |