Loading drivers/usb/serial/ipaq.c +52 −45 Original line number Diff line number Diff line Loading @@ -53,7 +53,7 @@ #include <linux/tty_flip.h> #include <linux/module.h> #include <linux/spinlock.h> #include <asm/uaccess.h> #include <linux/uaccess.h> #include <linux/usb.h> #include <linux/usb/serial.h> #include "ipaq.h" Loading Loading @@ -82,8 +82,8 @@ static int ipaq_startup(struct usb_serial *serial); static void ipaq_shutdown(struct usb_serial *serial); static int ipaq_write(struct tty_struct *tty, struct usb_serial_port *port, const unsigned char *buf, int count); static int ipaq_write_bulk(struct usb_serial_port *port, const unsigned char *buf, int count); static int ipaq_write_bulk(struct usb_serial_port *port, const unsigned char *buf, int count); static void ipaq_write_gather(struct usb_serial_port *port); static void ipaq_read_bulk_callback(struct urb *urb); static void ipaq_write_bulk_callback(struct urb *urb); Loading Loading @@ -620,9 +620,9 @@ static int ipaq_open(struct tty_struct *tty, for (i = 0; i < URBDATA_QUEUE_MAX / PACKET_SIZE; i++) { pkt = kmalloc(sizeof(struct ipaq_packet), GFP_KERNEL); if (pkt == NULL) { if (pkt == NULL) goto enomem; } pkt->data = kmalloc(PACKET_SIZE, GFP_KERNEL); if (pkt->data == NULL) { kfree(pkt); Loading Loading @@ -667,7 +667,8 @@ static int ipaq_open(struct tty_struct *tty, port->read_urb->transfer_buffer = port->bulk_in_buffer; port->write_urb->transfer_buffer = port->bulk_out_buffer; port->read_urb->transfer_buffer_length = URBDATA_SIZE; port->bulk_out_size = port->write_urb->transfer_buffer_length = URBDATA_SIZE; port->bulk_out_size = port->write_urb->transfer_buffer_length = URBDATA_SIZE; msleep(1000*initial_wait); Loading Loading @@ -698,12 +699,14 @@ static int ipaq_open(struct tty_struct *tty, /* Start reading from the device */ usb_fill_bulk_urb(port->read_urb, serial->dev, usb_rcvbulkpipe(serial->dev, port->bulk_in_endpointAddress), port->read_urb->transfer_buffer, port->read_urb->transfer_buffer_length, port->read_urb->transfer_buffer, port->read_urb->transfer_buffer_length, ipaq_read_bulk_callback, port); result = usb_submit_urb(port->read_urb, GFP_KERNEL); if (result) { err("%s - failed submitting read urb, error %d", __func__, result); err("%s - failed submitting read urb, error %d", __func__, result); goto error; } Loading Loading @@ -735,7 +738,8 @@ static void ipaq_close(struct tty_struct *tty, kfree(priv); usb_set_serial_port_data(port, NULL); /* Uncomment the following line if you want to see some statistics in your syslog */ /* Uncomment the following line if you want to see some statistics * in your syslog */ /* info ("Bytes In = %d Bytes Out = %d", bytes_in, bytes_out); */ } Loading @@ -755,7 +759,8 @@ static void ipaq_read_bulk_callback(struct urb *urb) 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); tty = port->port.tty; if (tty && urb->actual_length) { Loading @@ -768,11 +773,13 @@ static void ipaq_read_bulk_callback(struct urb *urb) /* Continue trying to always read */ usb_fill_bulk_urb(port->read_urb, port->serial->dev, usb_rcvbulkpipe(port->serial->dev, port->bulk_in_endpointAddress), port->read_urb->transfer_buffer, port->read_urb->transfer_buffer_length, port->read_urb->transfer_buffer, port->read_urb->transfer_buffer_length, ipaq_read_bulk_callback, port); result = usb_submit_urb(port->read_urb, GFP_ATOMIC); if (result) err("%s - failed resubmitting read urb, error %d", __func__, result); err("%s - failed resubmitting read urb, error %d", __func__, result); return; } Loading @@ -787,9 +794,8 @@ static int ipaq_write(struct tty_struct *tty, struct usb_serial_port *port, while (count > 0) { transfer_size = min(count, PACKET_SIZE); if (ipaq_write_bulk(port, current_position, transfer_size)) { if (ipaq_write_bulk(port, current_position, transfer_size)) break; } current_position += transfer_size; bytes_sent += transfer_size; count -= transfer_size; Loading @@ -799,8 +805,8 @@ static int ipaq_write(struct tty_struct *tty, struct usb_serial_port *port, return bytes_sent; } static int ipaq_write_bulk(struct usb_serial_port *port, const unsigned char *buf, int count) static int ipaq_write_bulk(struct usb_serial_port *port, const unsigned char *buf, int count) { struct ipaq_private *priv = usb_get_serial_port_data(port); struct ipaq_packet *pkt = NULL; Loading Loading @@ -837,9 +843,9 @@ static int ipaq_write_bulk(struct usb_serial_port *port, const unsigned char *bu ipaq_write_gather(port); spin_unlock_irqrestore(&write_list_lock, flags); result = usb_submit_urb(port->write_urb, GFP_ATOMIC); if (result) { err("%s - failed submitting write urb, error %d", __func__, result); } if (result) err("%s - failed submitting write urb, error %d", __func__, result); } else { spin_unlock_irqrestore(&write_list_lock, flags); } Loading @@ -866,16 +872,15 @@ static void ipaq_write_gather(struct usb_serial_port *port) list_move(&pkt->list, &priv->freelist); priv->free_len += PACKET_SIZE; } if (room == 0) { if (room == 0) break; } } count = URBDATA_SIZE - room; usb_fill_bulk_urb(port->write_urb, serial->dev, usb_sndbulkpipe(serial->dev, port->bulk_out_endpointAddress), port->write_urb->transfer_buffer, count, ipaq_write_bulk_callback, port); port->write_urb->transfer_buffer, count, ipaq_write_bulk_callback, port); return; } Loading @@ -900,9 +905,9 @@ static void ipaq_write_bulk_callback(struct urb *urb) ipaq_write_gather(port); spin_unlock_irqrestore(&write_list_lock, flags); result = usb_submit_urb(port->write_urb, GFP_ATOMIC); if (result) { err("%s - failed submitting write urb, error %d", __func__, result); } if (result) err("%s - failed submitting write urb, error %d", __func__, result); } else { priv->active = 0; spin_unlock_irqrestore(&write_list_lock, flags); Loading Loading @@ -1009,7 +1014,9 @@ module_param(product, ushort, 0); MODULE_PARM_DESC(product, "User specified USB idProduct"); module_param(connect_retries, int, S_IRUGO|S_IWUSR); MODULE_PARM_DESC(connect_retries, "Maximum number of connect retries (one second each)"); MODULE_PARM_DESC(connect_retries, "Maximum number of connect retries (one second each)"); module_param(initial_wait, int, S_IRUGO|S_IWUSR); MODULE_PARM_DESC(initial_wait, "Time to wait before attempting a connection (in seconds)"); MODULE_PARM_DESC(initial_wait, "Time to wait before attempting a connection (in seconds)"); Loading
drivers/usb/serial/ipaq.c +52 −45 Original line number Diff line number Diff line Loading @@ -53,7 +53,7 @@ #include <linux/tty_flip.h> #include <linux/module.h> #include <linux/spinlock.h> #include <asm/uaccess.h> #include <linux/uaccess.h> #include <linux/usb.h> #include <linux/usb/serial.h> #include "ipaq.h" Loading Loading @@ -82,8 +82,8 @@ static int ipaq_startup(struct usb_serial *serial); static void ipaq_shutdown(struct usb_serial *serial); static int ipaq_write(struct tty_struct *tty, struct usb_serial_port *port, const unsigned char *buf, int count); static int ipaq_write_bulk(struct usb_serial_port *port, const unsigned char *buf, int count); static int ipaq_write_bulk(struct usb_serial_port *port, const unsigned char *buf, int count); static void ipaq_write_gather(struct usb_serial_port *port); static void ipaq_read_bulk_callback(struct urb *urb); static void ipaq_write_bulk_callback(struct urb *urb); Loading Loading @@ -620,9 +620,9 @@ static int ipaq_open(struct tty_struct *tty, for (i = 0; i < URBDATA_QUEUE_MAX / PACKET_SIZE; i++) { pkt = kmalloc(sizeof(struct ipaq_packet), GFP_KERNEL); if (pkt == NULL) { if (pkt == NULL) goto enomem; } pkt->data = kmalloc(PACKET_SIZE, GFP_KERNEL); if (pkt->data == NULL) { kfree(pkt); Loading Loading @@ -667,7 +667,8 @@ static int ipaq_open(struct tty_struct *tty, port->read_urb->transfer_buffer = port->bulk_in_buffer; port->write_urb->transfer_buffer = port->bulk_out_buffer; port->read_urb->transfer_buffer_length = URBDATA_SIZE; port->bulk_out_size = port->write_urb->transfer_buffer_length = URBDATA_SIZE; port->bulk_out_size = port->write_urb->transfer_buffer_length = URBDATA_SIZE; msleep(1000*initial_wait); Loading Loading @@ -698,12 +699,14 @@ static int ipaq_open(struct tty_struct *tty, /* Start reading from the device */ usb_fill_bulk_urb(port->read_urb, serial->dev, usb_rcvbulkpipe(serial->dev, port->bulk_in_endpointAddress), port->read_urb->transfer_buffer, port->read_urb->transfer_buffer_length, port->read_urb->transfer_buffer, port->read_urb->transfer_buffer_length, ipaq_read_bulk_callback, port); result = usb_submit_urb(port->read_urb, GFP_KERNEL); if (result) { err("%s - failed submitting read urb, error %d", __func__, result); err("%s - failed submitting read urb, error %d", __func__, result); goto error; } Loading Loading @@ -735,7 +738,8 @@ static void ipaq_close(struct tty_struct *tty, kfree(priv); usb_set_serial_port_data(port, NULL); /* Uncomment the following line if you want to see some statistics in your syslog */ /* Uncomment the following line if you want to see some statistics * in your syslog */ /* info ("Bytes In = %d Bytes Out = %d", bytes_in, bytes_out); */ } Loading @@ -755,7 +759,8 @@ static void ipaq_read_bulk_callback(struct urb *urb) 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); tty = port->port.tty; if (tty && urb->actual_length) { Loading @@ -768,11 +773,13 @@ static void ipaq_read_bulk_callback(struct urb *urb) /* Continue trying to always read */ usb_fill_bulk_urb(port->read_urb, port->serial->dev, usb_rcvbulkpipe(port->serial->dev, port->bulk_in_endpointAddress), port->read_urb->transfer_buffer, port->read_urb->transfer_buffer_length, port->read_urb->transfer_buffer, port->read_urb->transfer_buffer_length, ipaq_read_bulk_callback, port); result = usb_submit_urb(port->read_urb, GFP_ATOMIC); if (result) err("%s - failed resubmitting read urb, error %d", __func__, result); err("%s - failed resubmitting read urb, error %d", __func__, result); return; } Loading @@ -787,9 +794,8 @@ static int ipaq_write(struct tty_struct *tty, struct usb_serial_port *port, while (count > 0) { transfer_size = min(count, PACKET_SIZE); if (ipaq_write_bulk(port, current_position, transfer_size)) { if (ipaq_write_bulk(port, current_position, transfer_size)) break; } current_position += transfer_size; bytes_sent += transfer_size; count -= transfer_size; Loading @@ -799,8 +805,8 @@ static int ipaq_write(struct tty_struct *tty, struct usb_serial_port *port, return bytes_sent; } static int ipaq_write_bulk(struct usb_serial_port *port, const unsigned char *buf, int count) static int ipaq_write_bulk(struct usb_serial_port *port, const unsigned char *buf, int count) { struct ipaq_private *priv = usb_get_serial_port_data(port); struct ipaq_packet *pkt = NULL; Loading Loading @@ -837,9 +843,9 @@ static int ipaq_write_bulk(struct usb_serial_port *port, const unsigned char *bu ipaq_write_gather(port); spin_unlock_irqrestore(&write_list_lock, flags); result = usb_submit_urb(port->write_urb, GFP_ATOMIC); if (result) { err("%s - failed submitting write urb, error %d", __func__, result); } if (result) err("%s - failed submitting write urb, error %d", __func__, result); } else { spin_unlock_irqrestore(&write_list_lock, flags); } Loading @@ -866,16 +872,15 @@ static void ipaq_write_gather(struct usb_serial_port *port) list_move(&pkt->list, &priv->freelist); priv->free_len += PACKET_SIZE; } if (room == 0) { if (room == 0) break; } } count = URBDATA_SIZE - room; usb_fill_bulk_urb(port->write_urb, serial->dev, usb_sndbulkpipe(serial->dev, port->bulk_out_endpointAddress), port->write_urb->transfer_buffer, count, ipaq_write_bulk_callback, port); port->write_urb->transfer_buffer, count, ipaq_write_bulk_callback, port); return; } Loading @@ -900,9 +905,9 @@ static void ipaq_write_bulk_callback(struct urb *urb) ipaq_write_gather(port); spin_unlock_irqrestore(&write_list_lock, flags); result = usb_submit_urb(port->write_urb, GFP_ATOMIC); if (result) { err("%s - failed submitting write urb, error %d", __func__, result); } if (result) err("%s - failed submitting write urb, error %d", __func__, result); } else { priv->active = 0; spin_unlock_irqrestore(&write_list_lock, flags); Loading Loading @@ -1009,7 +1014,9 @@ module_param(product, ushort, 0); MODULE_PARM_DESC(product, "User specified USB idProduct"); module_param(connect_retries, int, S_IRUGO|S_IWUSR); MODULE_PARM_DESC(connect_retries, "Maximum number of connect retries (one second each)"); MODULE_PARM_DESC(connect_retries, "Maximum number of connect retries (one second each)"); module_param(initial_wait, int, S_IRUGO|S_IWUSR); MODULE_PARM_DESC(initial_wait, "Time to wait before attempting a connection (in seconds)"); MODULE_PARM_DESC(initial_wait, "Time to wait before attempting a connection (in seconds)");