diff options
author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-07-12 21:16:52 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-07-12 21:16:52 -0700 |
commit | 70d002bccac5e107fafb95e83fcb7fc010a88695 (patch) | |
tree | 58607b980731b3ac418693a1d511630f482564c1 /drivers/usb/serial/ipaq.c | |
parent | 7f0852f959d8e92786c684ebd7fee3332a2f4efe (diff) | |
parent | a969888ce91673c7f4b86520d851a6f0d5a5fa7d (diff) |
Merge commit master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6 of HEAD
* HEAD: (44 commits)
[PATCH] USB: move usb-serial.h to include/linux/usb/
[PATCH] USB: Anydata: Fixes wrong URB callback.
[PATCH] USB: gadget section fixups
[PATCH] USB: another unusual device
[PATCH] USB: Add one VID/PID to ftdi_sio
[PATCH] USB: unusual_devs entry for Sony DSC-H5
[PATCH] USB: unusual_devs entry for Nokia E61
[PATCH] USB: unusual_devs entry for Nokia N91
[PATCH] USB: add ZyXEL vendor/product ID to rtl8150 driver
[PATCH] USB: Option driver: new product ID
[PATCH] USB: add support for WiseGroup., Ltd SmartJoy Dual PLUS Adapter
[PATCH] USB: ipw.c driver fix
[PATCH] USB: remove devfs information from Kconfig
[PATCH] USB: remove empty destructor from drivers/usb/mon/mon_text.c
[PATCH] USB: ipaq.c timing parameters
[PATCH] USB: ipaq.c bugfixes
[PATCH] USB: ehci: fix bogus alteration of a local variable
[PATCH] USB: add driver for non-composite Sierra Wireless devices
[PATCH] USB: fix pointer dereference in drivers/usb/misc/usblcd
[PATCH] USB: Kill compiler warning in quirk_usb_handoff_ohci
...
Diffstat (limited to 'drivers/usb/serial/ipaq.c')
-rw-r--r-- | drivers/usb/serial/ipaq.c | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/drivers/usb/serial/ipaq.c b/drivers/usb/serial/ipaq.c index dbcfe172a5c..59c5d999009 100644 --- a/drivers/usb/serial/ipaq.c +++ b/drivers/usb/serial/ipaq.c @@ -55,7 +55,7 @@ #include <linux/spinlock.h> #include <asm/uaccess.h> #include <linux/usb.h> -#include "usb-serial.h" +#include <linux/usb/serial.h> #include "ipaq.h" #define KP_RETRIES 100 @@ -70,6 +70,8 @@ static __u16 product, vendor; static int debug; +static int connect_retries = KP_RETRIES; +static int initial_wait; /* Function prototypes for an ipaq */ static int ipaq_open (struct usb_serial_port *port, struct file *filp); @@ -582,7 +584,7 @@ static int ipaq_open(struct usb_serial_port *port, struct file *filp) struct ipaq_private *priv; struct ipaq_packet *pkt; int i, result = 0; - int retries = KP_RETRIES; + int retries = connect_retries; dbg("%s - port %d", __FUNCTION__, port->number); @@ -646,16 +648,12 @@ static int ipaq_open(struct usb_serial_port *port, struct file *filp) port->read_urb->transfer_buffer_length = URBDATA_SIZE; port->bulk_out_size = port->write_urb->transfer_buffer_length = URBDATA_SIZE; + msleep(1000*initial_wait); /* 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); - result = usb_submit_urb(port->read_urb, GFP_KERNEL); - if (result) { - err("%s - failed submitting read urb, error %d", __FUNCTION__, result); - goto error; - } /* * Send out control message observed in win98 sniffs. Not sure what @@ -670,8 +668,14 @@ static int ipaq_open(struct usb_serial_port *port, struct file *filp) usb_sndctrlpipe(serial->dev, 0), 0x22, 0x21, 0x1, 0, NULL, 0, 100); if (result == 0) { + result = usb_submit_urb(port->read_urb, GFP_KERNEL); + if (result) { + err("%s - failed submitting read urb, error %d", __FUNCTION__, result); + goto error; + } return 0; } + msleep(1000); } err("%s - failed doing control urb, error %d", __FUNCTION__, result); goto error; @@ -854,6 +858,7 @@ static void ipaq_write_bulk_callback(struct urb *urb, struct pt_regs *regs) if (urb->status) { dbg("%s - nonzero write bulk status received: %d", __FUNCTION__, urb->status); + return; } spin_lock_irqsave(&write_list_lock, flags); @@ -966,3 +971,9 @@ MODULE_PARM_DESC(vendor, "User specified USB idVendor"); 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_param(initial_wait, int, S_IRUGO|S_IWUSR); +MODULE_PARM_DESC(initial_wait, "Time to wait before attempting a connection (in seconds)"); |