|
@@ -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,6 +648,7 @@ 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),
|
|
@@ -672,6 +675,7 @@ static int ipaq_open(struct usb_serial_port *port, struct file *filp)
|
|
|
}
|
|
|
return 0;
|
|
|
}
|
|
|
+ msleep(1000);
|
|
|
}
|
|
|
err("%s - failed doing control urb, error %d", __FUNCTION__, result);
|
|
|
goto error;
|
|
@@ -967,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)");
|