Commit ae64387a authored by Alan Cox's avatar Alan Cox Committed by Linus Torvalds

tty-usb-generic: Code cleanup

Signed-off-by: default avatarAlan Cox <alan@redhat.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent af6d780b
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
#include <linux/moduleparam.h> #include <linux/moduleparam.h>
#include <linux/usb.h> #include <linux/usb.h>
#include <linux/usb/serial.h> #include <linux/usb/serial.h>
#include <asm/uaccess.h> #include <linux/uaccess.h>
static int debug; static int debug;
...@@ -81,7 +81,7 @@ static int generic_probe(struct usb_interface *interface, ...@@ -81,7 +81,7 @@ static int generic_probe(struct usb_interface *interface,
} }
#endif #endif
int usb_serial_generic_register (int _debug) int usb_serial_generic_register(int _debug)
{ {
int retval = 0; int retval = 0;
...@@ -89,10 +89,11 @@ int usb_serial_generic_register (int _debug) ...@@ -89,10 +89,11 @@ int usb_serial_generic_register (int _debug)
#ifdef CONFIG_USB_SERIAL_GENERIC #ifdef CONFIG_USB_SERIAL_GENERIC
generic_device_ids[0].idVendor = vendor; generic_device_ids[0].idVendor = vendor;
generic_device_ids[0].idProduct = product; generic_device_ids[0].idProduct = product;
generic_device_ids[0].match_flags = USB_DEVICE_ID_MATCH_VENDOR | USB_DEVICE_ID_MATCH_PRODUCT; generic_device_ids[0].match_flags =
USB_DEVICE_ID_MATCH_VENDOR | USB_DEVICE_ID_MATCH_PRODUCT;
/* register our generic driver with ourselves */ /* register our generic driver with ourselves */
retval = usb_serial_register (&usb_serial_generic_device); retval = usb_serial_register(&usb_serial_generic_device);
if (retval) if (retval)
goto exit; goto exit;
retval = usb_register(&generic_driver); retval = usb_register(&generic_driver);
...@@ -103,12 +104,12 @@ exit: ...@@ -103,12 +104,12 @@ exit:
return retval; return retval;
} }
void usb_serial_generic_deregister (void) void usb_serial_generic_deregister(void)
{ {
#ifdef CONFIG_USB_SERIAL_GENERIC #ifdef CONFIG_USB_SERIAL_GENERIC
/* remove our generic driver */ /* remove our generic driver */
usb_deregister(&generic_driver); usb_deregister(&generic_driver);
usb_serial_deregister (&usb_serial_generic_device); usb_serial_deregister(&usb_serial_generic_device);
#endif #endif
} }
...@@ -121,9 +122,9 @@ int usb_serial_generic_open(struct tty_struct *tty, ...@@ -121,9 +122,9 @@ int usb_serial_generic_open(struct tty_struct *tty,
dbg("%s - port %d", __func__, port->number); dbg("%s - port %d", __func__, port->number);
/* force low_latency on so that our tty_push actually forces the data through, /* force low_latency on so that our tty_push actually forces the data
otherwise it is scheduled, and with high data rates (like with OHCI) data through, otherwise it is scheduled, and with high data rates (like
can get lost. */ with OHCI) data can get lost. */
if (tty) if (tty)
tty->low_latency = 1; tty->low_latency = 1;
...@@ -136,8 +137,9 @@ int usb_serial_generic_open(struct tty_struct *tty, ...@@ -136,8 +137,9 @@ int usb_serial_generic_open(struct tty_struct *tty,
/* if we have a bulk endpoint, start reading from it */ /* if we have a bulk endpoint, start reading from it */
if (serial->num_bulk_in) { if (serial->num_bulk_in) {
/* Start reading from the device */ /* Start reading from the device */
usb_fill_bulk_urb (port->read_urb, serial->dev, usb_fill_bulk_urb(port->read_urb, serial->dev,
usb_rcvbulkpipe(serial->dev, port->bulk_in_endpointAddress), usb_rcvbulkpipe(serial->dev,
port->bulk_in_endpointAddress),
port->read_urb->transfer_buffer, port->read_urb->transfer_buffer,
port->read_urb->transfer_buffer_length, port->read_urb->transfer_buffer_length,
((serial->type->read_bulk_callback) ? ((serial->type->read_bulk_callback) ?
...@@ -146,7 +148,9 @@ int usb_serial_generic_open(struct tty_struct *tty, ...@@ -146,7 +148,9 @@ int usb_serial_generic_open(struct tty_struct *tty,
port); port);
result = usb_submit_urb(port->read_urb, GFP_KERNEL); result = usb_submit_urb(port->read_urb, GFP_KERNEL);
if (result) if (result)
dev_err(&port->dev, "%s - failed resubmitting read urb, error %d\n", __func__, result); dev_err(&port->dev,
"%s - failed resubmitting read urb, error %d\n",
__func__, result);
} }
return result; return result;
...@@ -194,10 +198,10 @@ int usb_serial_generic_resume(struct usb_serial *serial) ...@@ -194,10 +198,10 @@ int usb_serial_generic_resume(struct usb_serial *serial)
} }
void usb_serial_generic_close(struct tty_struct *tty, void usb_serial_generic_close(struct tty_struct *tty,
struct usb_serial_port *port, struct file * filp) struct usb_serial_port *port, struct file *filp)
{ {
dbg("%s - port %d", __func__, port->number); dbg("%s - port %d", __func__, port->number);
generic_cleanup (port); generic_cleanup(port);
} }
int usb_serial_generic_write(struct tty_struct *tty, int usb_serial_generic_write(struct tty_struct *tty,
...@@ -211,7 +215,7 @@ int usb_serial_generic_write(struct tty_struct *tty, ...@@ -211,7 +215,7 @@ int usb_serial_generic_write(struct tty_struct *tty,
if (count == 0) { if (count == 0) {
dbg("%s - write request of 0 bytes", __func__); dbg("%s - write request of 0 bytes", __func__);
return (0); return 0;
} }
/* only do something if we have a bulk out endpoint */ /* only do something if we have a bulk out endpoint */
...@@ -226,27 +230,32 @@ int usb_serial_generic_write(struct tty_struct *tty, ...@@ -226,27 +230,32 @@ int usb_serial_generic_write(struct tty_struct *tty,
port->write_urb_busy = 1; port->write_urb_busy = 1;
spin_unlock_irqrestore(&port->lock, flags); spin_unlock_irqrestore(&port->lock, flags);
count = (count > port->bulk_out_size) ? port->bulk_out_size : count; count = (count > port->bulk_out_size) ?
port->bulk_out_size : count;
memcpy (port->write_urb->transfer_buffer, buf, count); memcpy(port->write_urb->transfer_buffer, buf, count);
data = port->write_urb->transfer_buffer; data = port->write_urb->transfer_buffer;
usb_serial_debug_data(debug, &port->dev, __func__, count, data); usb_serial_debug_data(debug, &port->dev, __func__, count, data);
/* set up our urb */ /* set up our urb */
usb_fill_bulk_urb (port->write_urb, serial->dev, usb_fill_bulk_urb(port->write_urb, serial->dev,
usb_sndbulkpipe (serial->dev, usb_sndbulkpipe(serial->dev,
port->bulk_out_endpointAddress), port->bulk_out_endpointAddress),
port->write_urb->transfer_buffer, count, port->write_urb->transfer_buffer, count,
((serial->type->write_bulk_callback) ? ((serial->type->write_bulk_callback) ?
serial->type->write_bulk_callback : serial->type->write_bulk_callback :
usb_serial_generic_write_bulk_callback), port); usb_serial_generic_write_bulk_callback),
port);
/* send the data out the bulk port */ /* send the data out the bulk port */
port->write_urb_busy = 1; port->write_urb_busy = 1;
result = usb_submit_urb(port->write_urb, GFP_ATOMIC); result = usb_submit_urb(port->write_urb, GFP_ATOMIC);
if (result) { if (result) {
dev_err(&port->dev, "%s - failed submitting write urb, error %d\n", __func__, result); dev_err(&port->dev,
/* don't have to grab the lock here, as we will retry if != 0 */ "%s - failed submitting write urb, error %d\n",
__func__, result);
/* don't have to grab the lock here, as we will
retry if != 0 */
port->write_urb_busy = 0; port->write_urb_busy = 0;
} else } else
result = count; result = count;
...@@ -258,7 +267,7 @@ int usb_serial_generic_write(struct tty_struct *tty, ...@@ -258,7 +267,7 @@ int usb_serial_generic_write(struct tty_struct *tty,
return 0; return 0;
} }
int usb_serial_generic_write_room (struct tty_struct *tty) int usb_serial_generic_write_room(struct tty_struct *tty)
{ {
struct usb_serial_port *port = tty->driver_data; struct usb_serial_port *port = tty->driver_data;
struct usb_serial *serial = port->serial; struct usb_serial *serial = port->serial;
...@@ -302,17 +311,19 @@ static void resubmit_read_urb(struct usb_serial_port *port, gfp_t mem_flags) ...@@ -302,17 +311,19 @@ static void resubmit_read_urb(struct usb_serial_port *port, gfp_t mem_flags)
int result; int result;
/* Continue reading from device */ /* Continue reading from device */
usb_fill_bulk_urb (urb, serial->dev, usb_fill_bulk_urb(urb, serial->dev,
usb_rcvbulkpipe (serial->dev, usb_rcvbulkpipe(serial->dev,
port->bulk_in_endpointAddress), port->bulk_in_endpointAddress),
urb->transfer_buffer, urb->transfer_buffer,
urb->transfer_buffer_length, urb->transfer_buffer_length,
((serial->type->read_bulk_callback) ? ((serial->type->read_bulk_callback) ?
serial->type->read_bulk_callback : serial->type->read_bulk_callback :
usb_serial_generic_read_bulk_callback), port); usb_serial_generic_read_bulk_callback), port);
result = usb_submit_urb(urb, mem_flags); result = usb_submit_urb(urb, mem_flags);
if (result) if (result)
dev_err(&port->dev, "%s - failed resubmitting read urb, error %d\n", __func__, result); dev_err(&port->dev,
"%s - failed resubmitting read urb, error %d\n",
__func__, result);
} }
/* Push data to tty layer and resubmit the bulk read URB */ /* Push data to tty layer and resubmit the bulk read URB */
...@@ -349,16 +360,17 @@ void usb_serial_generic_read_bulk_callback(struct urb *urb) ...@@ -349,16 +360,17 @@ void usb_serial_generic_read_bulk_callback(struct urb *urb)
return; return;
} }
usb_serial_debug_data(debug, &port->dev, __func__, urb->actual_length, data); usb_serial_debug_data(debug, &port->dev, __func__,
urb->actual_length, data);
/* Throttle the device if requested by tty */ /* Throttle the device if requested by tty */
spin_lock_irqsave(&port->lock, flags); spin_lock_irqsave(&port->lock, flags);
if (!(port->throttled = port->throttle_req)) { port->throttled = port->throttle_req;
if (!port->throttled) {
spin_unlock_irqrestore(&port->lock, flags); spin_unlock_irqrestore(&port->lock, flags);
flush_and_resubmit_read_urb(port); flush_and_resubmit_read_urb(port);
} else { } else
spin_unlock_irqrestore(&port->lock, flags); spin_unlock_irqrestore(&port->lock, flags);
}
} }
EXPORT_SYMBOL_GPL(usb_serial_generic_read_bulk_callback); EXPORT_SYMBOL_GPL(usb_serial_generic_read_bulk_callback);
...@@ -413,15 +425,14 @@ void usb_serial_generic_unthrottle(struct tty_struct *tty) ...@@ -413,15 +425,14 @@ void usb_serial_generic_unthrottle(struct tty_struct *tty)
} }
} }
void usb_serial_generic_shutdown (struct usb_serial *serial) void usb_serial_generic_shutdown(struct usb_serial *serial)
{ {
int i; int i;
dbg("%s", __func__); dbg("%s", __func__);
/* stop reads and writes on all ports */ /* stop reads and writes on all ports */
for (i=0; i < serial->num_ports; ++i) { for (i = 0; i < serial->num_ports; ++i)
generic_cleanup(serial->port[i]); generic_cleanup(serial->port[i]);
}
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment