lkml.org 
[lkml]   [2006]   [Jun]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [RESEND] [PATCH 2/2] ipaq.c timing parameters
    On Mon, 19 Jun 2006 10:46:19 +0200
    Frank Gevaerts <frank.gevaerts@fks.be> wrote:

    | Adds configurable waiting periods to the ipaq connection code. These are
    | not needed when the pocketpc device is running normally when plugged in,
    | but they need extra delays if they are physically connected while
    | rebooting.
    | There are two parameters :
    | * initial_wait : this is the delay before the driver attemts to start the
    | connection. This is needed because the pocktpc device takes much
    | longer to boot if the driver starts sending control packets too soon.
    | * connect_retries : this is the number of times the control urb is
    | retried before finally giving up. The patch also adds a 1 second delay
    | between retries.
    | I'm not sure if the cases where this patch is useful are general enough
    | to include this in the kernel.
    |
    | Signed-off-by: Frank Gevaerts <frank.gevaerts@fks.be>
    |
    | diff -urp linux-2.6.17-rc6.a/drivers/usb/serial/ipaq.c linux-2.6.17-rc6.b/drivers/usb/serial/ipaq.c
    | --- linux-2.6.17-rc6.a/drivers/usb/serial/ipaq.c 2006-06-14 16:02:03.000000000 +0200
    | +++ linux-2.6.17-rc6.b/drivers/usb/serial/ipaq.c 2006-06-14 16:06:44.000000000 +0200
    | @@ -71,6 +71,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);
    | @@ -583,7 +585,7 @@ static int ipaq_open(struct usb_serial_p
    | 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);
    |
    | @@ -647,6 +649,7 @@ static int ipaq_open(struct usb_serial_p
    | port->read_urb->transfer_buffer_length = URBDATA_SIZE;
    | port->bulk_out_size = port->write_urb->transfer_buffer_length = URBDATA_SIZE;
    |
    | + msleep(1000*initial_wait);

    I was going to say you should use ssleep() here, but I can't find a
    ssleep_interruptible(). Then either: use msleep_interruptible() or
    creates a new ssleep_interruptible().

    | /* Start reading from the device */
    | usb_fill_bulk_urb(port->read_urb, serial->dev,
    | usb_rcvbulkpipe(serial->dev, port->bulk_in_endpointAddress),
    | @@ -673,6 +676,7 @@ static int ipaq_open(struct usb_serial_p
    | }
    | return 0;
    | }
    | + msleep(1000);
    | }

    Don't you want msleep(100); here?

    --
    Luiz Fernando N. Capitulino
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2006-06-19 18:45    [W:0.023 / U:0.404 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site