[linux-dvb] Cinergy T2 lockup, needs power cycling
Holger Waechtler
holger at qanu.de
Tue Apr 5 14:00:00 CEST 2005
hi,
Stephen Williams wrote:
>>You could try to issue a usb_reset_device() at driver initialisation in
>>order to restart the firmware. Please report if this solves your problem.
>>thanks,
>>
>>Holger
>>
>>
>
>That certainly sounds like it could help. I'll give this a try the
>next time the device locks itself up (could be a few days). Am I right
>in thinking that I just need to make the following changes to the
>cinergyt2_probe function:
>
>
> INIT_WORK(&cinergyt2->query_work, cinergyt2_query, cinergyt2);
>
> cinergyt2->udev = udev;
>
>+ if ((err = usb_reset_device(&cinergyt2->udev)) != 0) {
>+ printk("%s: usb_reset_device() failed (err = %d)\n",
>+ __FUNCTION__, err);
>+ goto bailout;
>+ }
>
>
looks ok to me, but one would have to test to be sure.
> if (cinergyt2_alloc_stream_urbs (cinergyt2) < 0) {
> dprintk(1, "unable to allocate stream urbs\n");
> kfree(cinergyt2);
>
>Thanks for your help.
>
>
something else you might try: in order to re-synchronize the
communication you may insert a dummy read/write/read command and ignore
the error code if an error occurs. The first read will fail in normal
case (no previous write issued, the device is awaiting a new command)
and succeed in the unusual case when the device communication is
out-of-sync...
please report your experiences and let us know whether this makes the
code more robust,
Holger
More information about the linux-dvb
mailing list