Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 104663
b: refs/heads/master
c: eb6215c
h: refs/heads/master
i:
  104661: 54c6c84
  104659: 711f1eb
  104655: bc6b0e3
v: v3
  • Loading branch information
Alan Cox authored and Linus Torvalds committed Jul 22, 2008
1 parent c60f47a commit 67c7b86
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 46 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 2e0ddd626d14f3b69d6c1bdd526721a65d52f93b
refs/heads/master: eb6215ccd403153c6376f7eaa7b31eef19e488f5
97 changes: 52 additions & 45 deletions trunk/drivers/usb/serial/ipaq.c
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -82,10 +82,10 @@ 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_read_bulk_callback(struct urb *urb);
static void ipaq_write_bulk_callback(struct urb *urb);
static int ipaq_write_room(struct tty_struct *tty);
static int ipaq_chars_in_buffer(struct tty_struct *tty);
Expand Down Expand Up @@ -552,7 +552,7 @@ static struct usb_device_id ipaq_id_table [] = {
{ } /* Terminating entry */
};

MODULE_DEVICE_TABLE (usb, ipaq_id_table);
MODULE_DEVICE_TABLE(usb, ipaq_id_table);

static struct usb_driver ipaq_driver = {
.name = "ipaq",
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -667,8 +667,9 @@ 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);

/*
Expand Down Expand Up @@ -697,13 +698,15 @@ 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,
ipaq_read_bulk_callback, port);
usb_rcvbulkpipe(serial->dev, port->bulk_in_endpointAddress),
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;
}

Expand All @@ -725,7 +728,7 @@ static void ipaq_close(struct tty_struct *tty,
struct ipaq_private *priv = usb_get_serial_port_data(port);

dbg("%s - port %d", __func__, port->number);

/*
* shut down bulk read and write
*/
Expand All @@ -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); */
}

Expand All @@ -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) {
Expand All @@ -766,13 +771,15 @@ 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,
ipaq_read_bulk_callback, port);
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,
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;
}

Expand All @@ -787,20 +794,19 @@ 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;
bytes_out += transfer_size;
}

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;
Expand Down Expand Up @@ -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);
}
Expand All @@ -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);
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);
return;
}

Expand All @@ -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);
Expand Down Expand Up @@ -953,7 +958,7 @@ static int ipaq_startup(struct usb_serial *serial)
serial->dev->actconfig->desc.bConfigurationValue);
return -ENODEV;
}
return usb_reset_configuration (serial->dev);
return usb_reset_configuration(serial->dev);
}

static void ipaq_shutdown(struct usb_serial *serial)
Expand All @@ -966,7 +971,7 @@ static int __init ipaq_init(void)
int retval;
spin_lock_init(&write_list_lock);
retval = usb_serial_register(&ipaq_device);
if (retval)
if (retval)
goto failed_usb_serial_register;
info(DRIVER_DESC " " DRIVER_VERSION);
if (vendor) {
Expand All @@ -976,7 +981,7 @@ static int __init ipaq_init(void)
retval = usb_register(&ipaq_driver);
if (retval)
goto failed_usb_register;

return 0;
failed_usb_register:
usb_serial_deregister(&ipaq_device);
Expand All @@ -995,8 +1000,8 @@ static void __exit ipaq_exit(void)
module_init(ipaq_init);
module_exit(ipaq_exit);

MODULE_AUTHOR( DRIVER_AUTHOR );
MODULE_DESCRIPTION( DRIVER_DESC );
MODULE_AUTHOR(DRIVER_AUTHOR);
MODULE_DESCRIPTION(DRIVER_DESC);
MODULE_LICENSE("GPL");

module_param(debug, bool, S_IRUGO | S_IWUSR);
Expand All @@ -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)");

0 comments on commit 67c7b86

Please sign in to comment.