Commit a792bb5c authored by Duncan Sands's avatar Duncan Sands Committed by Greg Kroah-Hartman

[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.
parent dff40c3a
...@@ -859,7 +859,7 @@ static int udsl_usb_ioctl (struct usb_interface *intf, unsigned int code, void * ...@@ -859,7 +859,7 @@ static int udsl_usb_ioctl (struct usb_interface *intf, unsigned int code, void *
instance->atm_dev->signal = ATM_PHY_SIG_FOUND; instance->atm_dev->signal = ATM_PHY_SIG_FOUND;
down (&instance->serialize); /* vs self */ down (&instance->serialize); /* vs self */
if (!instance->firmware_loaded) { if (!instance->firmware_loaded) {
usb_set_interface (instance->usb_dev, 1, 2); usb_set_interface (instance->usb_dev, 1, 1);
instance->firmware_loaded = 1; instance->firmware_loaded = 1;
} }
up (&instance->serialize); up (&instance->serialize);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment