<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">ChangeSet 1.1043.1.15, 2003/02/17 10:13:56-08:00, baldrick@wanadoo.fr

[PATCH] USB speedtouch: speedtouch 330 support

Differences: speedtouch 330 vs the older speedtouch USB:
Vendor and ProdID: no difference (!)
Rev: 2.00 vs 0.00
SerialNumber: 0090D0xxxxxx, xxxxxx larger for 330
Interface 1, Alt 2:
	E: Ad=06(O) Atr=02(Bulk) MxPS=64 Ivl=0ms
	E: Ad=07(O) Atr=02(Bulk) MxPS=64 Ivl=0ms
	E: Ad=87(I) Atr=01(Isoc) MxPS=640 Ivl=1ms
vs
	E: Ad=06(O) Atr=02(Bulk) MxPS=32 Ivl=0ms
	E: Ad=07(O) Atr=02(Bulk) MxPS=32 Ivl=0ms
	E: Ad=87(I) Atr=02(Bulk) MxPS=64 Ivl=0ms
Interface 1, Alt 3:
	E: Ad=06(O) Atr=02(Bulk) MxPS=64 Ivl=0ms
	E: Ad=07(O) Atr=02(Bulk) MxPS=64 Ivl=0ms
	E: Ad=87(I) Atr=01(Isoc) MxPS=960 Ivl=1ms
vs
	E: Ad=06(O) Atr=02(Bulk) MxPS=16 Ivl=0ms
	E: Ad=07(O) Atr=02(Bulk) MxPS=16 Ivl=0ms
	E: Ad=87(I) Atr=02(Bulk) MxPS=64 Ivl=0ms
The current driver works with the speedtouch 330 as long as we use alternate setting
1 on interface 1 rather than alternate 2 as we do now.  In fact it makes sense to use
alternate 1 for the speedtouch USB as well: the difference is in the max packet size
for the out bulk endpoint (0x07): 64 for Alt 1, 32 for Alt 2.  Since we send only
multiples of 53 bytes (ATM cell size), the potential lower latency for Alt 2 is not
really exploitable (think about it!).  My tests indicate no harm and perhaps a slight
gain by using Alt 1.  The manufacturer seems to think so too, since they chose to
keep the Alt 1 setting and threw out Alt 2 when designing the 330.  So just use Alt 1
for both modems.


diff -Nru a/drivers/usb/misc/speedtouch.c b/drivers/usb/misc/speedtouch.c
--- a/drivers/usb/misc/speedtouch.c	Tue Feb 18 16:39:47 2003
+++ b/drivers/usb/misc/speedtouch.c	Tue Feb 18 16:39:47 2003
@@ -859,7 +859,7 @@
 		instance-&gt;atm_dev-&gt;signal = ATM_PHY_SIG_FOUND;
 		down (&amp;instance-&gt;serialize); /* vs self */
 		if (!instance-&gt;firmware_loaded) {
-			usb_set_interface (instance-&gt;usb_dev, 1, 2);
+			usb_set_interface (instance-&gt;usb_dev, 1, 1);
 			instance-&gt;firmware_loaded = 1;
 		}
 		up (&amp;instance-&gt;serialize);
</pre></body></html>