Re: webcam problem after suspend/hibernate

From: Philippe Troin
Date: Sun Apr 04 2010 - 14:59:09 EST


Pavel Machek <pavel@xxxxxx> writes:

> Hi!
>
> > > > Do you mean the dmesg output ?
> > > > A full dmesg is included in this address :
> > > > http://pastebin.com/8XU619Uk
> > > > Not in all suspend/hibernate the problem comes, only in some of them
> > > > and this included dmesg output is just after a non working case of
> > > > webcam fault.
> > > >
> > > >
> > > > I also have found this in `/var/log/messages | grep uvcvideo`
> > > > Mar 31 00:31:16 linux-l365 kernel: [399905.714743] usbcore:
> > > > deregistering interface driver uvcvideo
> > > > Mar 31 00:31:24 linux-l365 kernel: [399914.121386] uvcvideo: Found UVC
> > > > 1.00 device LG Webcam (0c45:62c0)
> > > > Mar 31 00:31:24 linux-l365 kernel: [399914.135661] usbcore: registered
> > > > new interface driver uvcvideo
> > >
> > > Also try unloading uvcvideo before suspend and reloading it after
> > > resume...
> >
> > I have a similar problem with a Creative Optia webcam.
> >
> > I have found that removing the ehci_hcd module and reinserting it
> > fixes the problem.
> >
> > If your kernel ships with ehci_hcd built-in (F11 and later), the
> > script included also fixes the problem (it rebind the device).
> >
> > Of course, I'd love to see this issue fixed.
>
> If unload/reload of uvcvideo helps, it is most likely problem in that.
>
> If unload/reload of ehci_hcd is needed, it is most likely ehci problem.

My testing shows that:

1. If I remove uvcvideo BEFORE suspend and reinsert it after resume,
it works. However, I cannot always rmmod uvcvideo before suspend
as it may be in use.

2. As a work around, removing ehci_hcd and reinserting ehci_hcd upon
resume works as well.

3. Since my distribution's kernels come with ehci_hcd built into the
kernel, and I cannot do #2 any more, I also found that unbinding
and rebinding the device (with the script I sent earlier on) works
as well.

I think uvcvideo is failing to reinitialize the camera on resume, and
forcing an uvcvideo "reset" with either of these three methods kicks
uvcvideo into working again.

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