[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