speedtouch driver patch

Przemyslaw Wegrzyn czajnik at czajsoft.pl
Wed Mar 2 12:52:09 EST 2005


Hi !

The problem - after moving to kernel 2.6.10 (from 2.4.x) modem sometimes fails 
to boot up, with the following in traces:

Feb 27 03:16:33 lapcio kernel: speedtch_test_sequence failed on URB147: -32
Feb 27 03:16:33 lapcio kernel: speedtch_test_sequence failed on URB148: -32
Feb 27 03:16:33 lapcio kernel: speedtch_test_sequence failed on URB149: -32
Feb 27 03:16:33 lapcio kernel: speedtch_test_sequence failed on URB150: -32
Feb 27 03:16:33 lapcio kernel: SpeedTouch: Failed to start ADSL 
synchronisation: -32

It appears that the check that the driver performs at the beginning to see if 
the firmware is loaded is the reason. After plugging in the device it always 
returns -110 (ETIMEDOUT) on ep0in, but it also (sometimes) makes 
all subsequent requests to ep0 fail with EPIPE (STALL condition). I haven't 
seen windows driver doing anything like that after plugging in - it goes 
directly to firmware upload stuff.

If anyone is interested, below is the patch that solved the problem for me by 
resetting the device in case of failed firmware check. With this patch I've 
seen no more the problems mentioned above. This patch I've already posted to 
speedtouch mailing list.

Best Regards,
Przemyslaw

--- speedtch.c.orig 2005-02-27 03:59:53.000000000 +0100
+++ speedtch.c 2005-02-27 04:01:52.000000000 +0100
@@ -792,6 +792,10 @@
   speedtch_got_firmware(instance, 1);
   speedtch_poll_status(instance);
  } else {
+  dbg("firmware not loaded yet, resetting device");
+  ret = usb_reset_device(dev);
+  dbg("usb_reset_device returned %d", ret);
+
   speedtch_firmware_start(instance);
  }




More information about the Usbatm mailing list