On Wed, Aug 07, 2013 at 05:18:13AM +0800, Peter Chen wrote: > In order to increase test coverage, we can change the interval between > two remote wakeups every time, and the interval can be any user defined > value. This change will no affect current behavior if the user does not > use two introduced module paramters. > > Signed-off-by: Peter Chen <peter.chen@xxxxxxxxxxxxx> > --- > > Changes for v2: > - Change some typo and description > Ping..... > drivers/usb/gadget/zero.c | 25 +++++++++++++++++++++++-- > 1 files changed, 23 insertions(+), 2 deletions(-) > > diff --git a/drivers/usb/gadget/zero.c b/drivers/usb/gadget/zero.c > index 0deb9d6..21da094 100644 > --- a/drivers/usb/gadget/zero.c > +++ b/drivers/usb/gadget/zero.c > @@ -95,6 +95,18 @@ unsigned autoresume = DEFAULT_AUTORESUME; > module_param(autoresume, uint, S_IRUGO); > MODULE_PARM_DESC(autoresume, "zero, or seconds before remote wakeup"); > > +/* Maximum Autoresume time */ > +unsigned max_autoresume; > +module_param(max_autoresume, uint, S_IRUGO); > +MODULE_PARM_DESC(max_autoresume, "maximum seconds before remote wakeup"); > + > +/* Interval between two remote wakeups */ > +unsigned autoresume_interval_ms; > +module_param(autoresume_interval_ms, uint, S_IRUGO); > +MODULE_PARM_DESC(autoresume_interval_ms, > + "milliseconds to increase successive wakup delays"); > + > +static unsigned autoresume_step_ms; > /*-------------------------------------------------------------------------*/ > > static struct usb_device_descriptor device_desc = { > @@ -183,8 +195,16 @@ static void zero_suspend(struct usb_composite_dev *cdev) > return; > > if (autoresume) { > - mod_timer(&autoresume_timer, jiffies + (HZ * autoresume)); > - DBG(cdev, "suspend, wakeup in %d seconds\n", autoresume); > + if (max_autoresume && > + (autoresume_step_ms > max_autoresume * 1000)) > + autoresume_step_ms = autoresume * 1000; > + > + mod_timer(&autoresume_timer, jiffies + > + msecs_to_jiffies(autoresume_step_ms)); > + DBG(cdev, "suspend, wakeup in %d milliseconds\n", > + autoresume_step_ms); > + > + autoresume_step_ms += autoresume_interval_ms; > } else > DBG(cdev, "%s\n", __func__); > } > @@ -316,6 +336,7 @@ static int __init zero_bind(struct usb_composite_dev *cdev) > if (autoresume) { > sourcesink_driver.bmAttributes |= USB_CONFIG_ATT_WAKEUP; > loopback_driver.bmAttributes |= USB_CONFIG_ATT_WAKEUP; > + autoresume_step_ms = autoresume * 1000; > } > > /* support OTG systems */ > -- > 1.7.1 > > > -- > To unsubscribe from this list: send the line "unsubscribe linux-usb" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- Best Regards, Peter Chen -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html