diff options
Diffstat (limited to 'drivers/usb/serial/generic.c')
| -rw-r--r-- | drivers/usb/serial/generic.c | 22 | 
1 files changed, 10 insertions, 12 deletions
diff --git a/drivers/usb/serial/generic.c b/drivers/usb/serial/generic.c index 5cdf180cda23..d10aa3d2ee49 100644 --- a/drivers/usb/serial/generic.c +++ b/drivers/usb/serial/generic.c @@ -345,7 +345,7 @@ EXPORT_SYMBOL_GPL(usb_serial_generic_submit_read_urbs);  void usb_serial_generic_process_read_urb(struct urb *urb)  {  	struct usb_serial_port *port = urb->context; -	char *ch = (char *)urb->transfer_buffer; +	char *ch = urb->transfer_buffer;  	int i;  	if (!urb->actual_length) @@ -355,13 +355,13 @@ void usb_serial_generic_process_read_urb(struct urb *urb)  	 * stuff like 3G modems, so shortcircuit it in the 99.9999999% of  	 * cases where the USB serial is not a console anyway.  	 */ -	if (!port->port.console || !port->sysrq) { -		tty_insert_flip_string(&port->port, ch, urb->actual_length); -	} else { +	if (port->sysrq) {  		for (i = 0; i < urb->actual_length; i++, ch++) {  			if (!usb_serial_handle_sysrq_char(port, *ch))  				tty_insert_flip_char(&port->port, *ch, TTY_NORMAL);  		} +	} else { +		tty_insert_flip_string(&port->port, ch, urb->actual_length);  	}  	tty_flip_buffer_push(&port->port);  } @@ -571,10 +571,10 @@ int usb_serial_generic_get_icount(struct tty_struct *tty,  }  EXPORT_SYMBOL_GPL(usb_serial_generic_get_icount); -#ifdef CONFIG_MAGIC_SYSRQ +#if defined(CONFIG_USB_SERIAL_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ)  int usb_serial_handle_sysrq_char(struct usb_serial_port *port, unsigned int ch)  { -	if (port->sysrq && port->port.console) { +	if (port->sysrq) {  		if (ch && time_before(jiffies, port->sysrq)) {  			handle_sysrq(ch);  			port->sysrq = 0; @@ -584,16 +584,13 @@ int usb_serial_handle_sysrq_char(struct usb_serial_port *port, unsigned int ch)  	}  	return 0;  } -#else -int usb_serial_handle_sysrq_char(struct usb_serial_port *port, unsigned int ch) -{ -	return 0; -} -#endif  EXPORT_SYMBOL_GPL(usb_serial_handle_sysrq_char);  int usb_serial_handle_break(struct usb_serial_port *port)  { +	if (!port->port.console) +		return 0; +  	if (!port->sysrq) {  		port->sysrq = jiffies + HZ*5;  		return 1; @@ -602,6 +599,7 @@ int usb_serial_handle_break(struct usb_serial_port *port)  	return 0;  }  EXPORT_SYMBOL_GPL(usb_serial_handle_break); +#endif  /**   * usb_serial_handle_dcd_change - handle a change of carrier detect state  | 
