On Thu, 4 Mar 2004, Martin Diehl wrote: > I'm offline for the rest of the day, but I think the iso-firmware is ready > for release tomorrow :-)
Ok, here we are. New release of the usbtest-firmware (attached).
Changes against last version dated 20030720:
* (hopefully) workaround early Rev FX silicon issue with disconnect pin
* add support for ctrl_out tests (vendor EP0 R/W request). Works up to
len=1024, RequestError (protocol-STALL) otherwise.
* switch to altsetting=1 to allow ISO endpoints
* ISO sink+source support. Currently maxlen=512, interval=1ms each. Not
supported with FX2. Mode is "sink everything, source zerofilled data".
The attached tgz includes sources and Intel-Hex image usbtest_fw.ihx,
which is build to work with both AN213x and FX devices (i.e. DMA not used)
I had to modify the usbtest driver to accept the changed altsetting and
enable autoconfig (required for iso and ctrl_out tests). I've also changed
it so we can test both bulk and iso in the same altsetting.
Typical result with ehci_hcd (over HS/TT hub to FS EZUSB-FX) looks like
this (with your pending split-iso patch and the read enabled by me):
$ ./testusb -a -g8 -s1024 -v256
/proc/bus/usb/004/005 test 0, 0.000003 secs
/proc/bus/usb/004/005 test 1, 1.849929 secs
/proc/bus/usb/004/005 test 2, 1.751630 secs
/proc/bus/usb/004/005 test 3, 1.000524 secs
/proc/bus/usb/004/005 test 4, 0.999629 secs
/proc/bus/usb/004/005 test 5, 13.268032 secs
/proc/bus/usb/004/005 test 6, 13.277821 secs
/proc/bus/usb/004/005 test 7, 7.019167 secs
/proc/bus/usb/004/005 test 8, 7.001339 secs
/proc/bus/usb/004/005 test 9, 3.502091 secs
/proc/bus/usb/004/005 test 10, 1.501138 secs
/proc/bus/usb/004/005 test 11, 4.465409 secs
/proc/bus/usb/004/005 test 12, 4.268215 secs
/proc/bus/usb/004/005 test 13, 10.039727 secs
/proc/bus/usb/004/005 test 14, 3.925538 secs
/proc/bus/usb/004/005 test 15, 16.008210 secs
/proc/bus/usb/004/005 test 16, 16.007960 secs
ohci_hcd working as well, except for the famous bad entry issue during
test11/12. uhci_hcd not tried.
Happy testing ;-)
Martin
------------------
--- linux-2.6.3-bk9/drivers/usb/misc/usbtest.c Tue Feb 24 20:01:48 2004
+++ v2.6.3-bk9-md/drivers/usb/misc/usbtest.c Fri Mar 5 20:13:06 2004
@@ -149,8 +149,6 @@ get_endpoints (struct usbtest_dev *dev,
if (!out)
out = e;
}
- if (in && out)
- goto found;
continue;
try_iso:
if (e->desc.bEndpointAddress & USB_DIR_IN) {
@@ -160,9 +158,9 @@ try_iso:
if (!iso_out)
iso_out = e;
}
- if (iso_in && iso_out)
- goto found;
}
+ if ((in && out) || (iso_in && iso_out))
+ goto found;
}
return -EINVAL;
@@ -181,7 +179,8 @@ found:
in->desc.bEndpointAddress & USB_ENDPOINT_NUMBER_MASK);
dev->out_pipe = usb_sndbulkpipe (udev,
out->desc.bEndpointAddress & USB_ENDPOINT_NUMBER_MASK);
- } else if (iso_in) {
+ }
+ if (iso_in) {
dev->iso_in = &iso_in->desc;
dev->in_iso_pipe = usb_rcvisocpipe (udev,
iso_in->desc.bEndpointAddress
@@ -1965,7 +1964,10 @@ static struct usbtest_info fw_info = {
.name = "usb test device",
.ep_in = 2,
.ep_out = 2,
- .alt = 0,
+ .alt = 1,
+ .autoconf = 1, // iso and ctrl_out need autoconf
+ .ctrl_out = 1,
+ .iso = 1, // iso_ep's are #8 in/out
};
/* peripheral running Linux and 'zero.c' test firmware, or
usbtest_fw-20040305.tar.gz
Description: Binary data
