Message ID | 1429284290-25153-3-git-send-email-tomeu.vizoso@collabora.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, 17 Apr 2015, Tomeu Vizoso wrote: > When the system goes to sleep and afterwards resumes, a significant > amount of time is spent suspending and resuming devices that were > already runtime-suspended. > > By setting the power.force_direct_complete flag, the PM core will ignore > the state of descendant devices and the device will be let in > runtime-suspend. > > Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com> > --- > drivers/media/usb/uvc/uvc_driver.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c > index 5970dd6..ae75a70 100644 > --- a/drivers/media/usb/uvc/uvc_driver.c > +++ b/drivers/media/usb/uvc/uvc_driver.c > @@ -1945,6 +1945,8 @@ static int uvc_probe(struct usb_interface *intf, > "supported.\n", ret); > } > > + intf->dev.parent->power.force_direct_complete = true; This seems wrong. The uvc driver is bound to intf, not to intf's parent. So it would be okay for the driver to set intf->dev.power.force_direct_complete, but it's wrong to set intf->dev.parent->power.force_direct_complete. Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 17 April 2015 at 19:32, Alan Stern <stern@rowland.harvard.edu> wrote: > On Fri, 17 Apr 2015, Tomeu Vizoso wrote: > >> When the system goes to sleep and afterwards resumes, a significant >> amount of time is spent suspending and resuming devices that were >> already runtime-suspended. >> >> By setting the power.force_direct_complete flag, the PM core will ignore >> the state of descendant devices and the device will be let in >> runtime-suspend. >> >> Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com> >> --- >> drivers/media/usb/uvc/uvc_driver.c | 2 ++ >> 1 file changed, 2 insertions(+) >> >> diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c >> index 5970dd6..ae75a70 100644 >> --- a/drivers/media/usb/uvc/uvc_driver.c >> +++ b/drivers/media/usb/uvc/uvc_driver.c >> @@ -1945,6 +1945,8 @@ static int uvc_probe(struct usb_interface *intf, >> "supported.\n", ret); >> } >> >> + intf->dev.parent->power.force_direct_complete = true; > > This seems wrong. The uvc driver is bound to intf, not to intf's > parent. So it would be okay for the driver to set > intf->dev.power.force_direct_complete, but it's wrong to set > intf->dev.parent->power.force_direct_complete. Agreed. Thanks, Tomeu > Alan Stern > > -- > 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/ -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi Tomeu, On Monday 20 April 2015 09:11:36 Tomeu Vizoso wrote: > On 17 April 2015 at 19:32, Alan Stern <stern@rowland.harvard.edu> wrote: > > On Fri, 17 Apr 2015, Tomeu Vizoso wrote: > >> When the system goes to sleep and afterwards resumes, a significant > >> amount of time is spent suspending and resuming devices that were > >> already runtime-suspended. > >> > >> By setting the power.force_direct_complete flag, the PM core will ignore > >> the state of descendant devices and the device will be let in > >> runtime-suspend. > >> > >> Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com> > >> --- > >> > >> drivers/media/usb/uvc/uvc_driver.c | 2 ++ > >> 1 file changed, 2 insertions(+) > >> > >> diff --git a/drivers/media/usb/uvc/uvc_driver.c > >> b/drivers/media/usb/uvc/uvc_driver.c index 5970dd6..ae75a70 100644 > >> --- a/drivers/media/usb/uvc/uvc_driver.c > >> +++ b/drivers/media/usb/uvc/uvc_driver.c > >> @@ -1945,6 +1945,8 @@ static int uvc_probe(struct usb_interface *intf, > >> > >> "supported.\n", ret); > >> > >> } > >> > >> + intf->dev.parent->power.force_direct_complete = true; > > > > This seems wrong. The uvc driver is bound to intf, not to intf's > > parent. So it would be okay for the driver to set > > intf->dev.power.force_direct_complete, but it's wrong to set > > intf->dev.parent->power.force_direct_complete. > > Agreed. Do you plan to resubmit this patch series with the above fix ? I know you've had a hard time trying to find an approach that could get accepted, but please rest assured that your work on the uvcvideo driver is appreciated.
diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c index 5970dd6..ae75a70 100644 --- a/drivers/media/usb/uvc/uvc_driver.c +++ b/drivers/media/usb/uvc/uvc_driver.c @@ -1945,6 +1945,8 @@ static int uvc_probe(struct usb_interface *intf, "supported.\n", ret); } + intf->dev.parent->power.force_direct_complete = true; + uvc_trace(UVC_TRACE_PROBE, "UVC device initialized.\n"); usb_enable_autosuspend(udev); return 0;
When the system goes to sleep and afterwards resumes, a significant amount of time is spent suspending and resuming devices that were already runtime-suspended. By setting the power.force_direct_complete flag, the PM core will ignore the state of descendant devices and the device will be let in runtime-suspend. Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com> --- drivers/media/usb/uvc/uvc_driver.c | 2 ++ 1 file changed, 2 insertions(+)