1 #include <linux/kernel.h>
2 #include <linux/errno.h>
4 #include <linux/slab.h>
6 #include <linux/module.h>
28 #define USBTEST_REQUEST _IOWR('U', 100, struct usbtest_param)
75 return interface_to_usbdev(test->
intf);
79 #define INTERRUPT_RATE 1
81 #define ERROR(tdev, fmt, args...) \
82 dev_err(&(tdev)->intf->dev , fmt , ## args)
83 #define WARNING(tdev, fmt, args...) \
84 dev_warn(&(tdev)->intf->dev , fmt , ## args)
86 #define GUARD_BYTE 0xA5
94 struct usb_host_interface *alt;
95 struct usb_host_endpoint *
in, *
out;
96 struct usb_host_endpoint *iso_in, *iso_out;
97 struct usb_device *
udev;
99 for (tmp = 0; tmp < intf->num_altsetting; tmp++) {
103 iso_in = iso_out =
NULL;
104 alt = intf->altsetting +
tmp;
109 for (ep = 0; ep < alt->desc.bNumEndpoints; ep++) {
110 struct usb_host_endpoint *
e;
112 e = alt->endpoint + ep;
113 switch (e->desc.bmAttributes) {
123 if (usb_endpoint_dir_in(&e->desc)) {
132 if (usb_endpoint_dir_in(&e->desc)) {
140 if ((in && out) || iso_in || iso_out)
146 udev = testdev_to_usbdev(dev);
147 if (alt->desc.bAlternateSetting != 0) {
149 alt->desc.bInterfaceNumber,
150 alt->desc.bAlternateSetting);
156 dev->
in_pipe = usb_rcvbulkpipe(udev,
158 dev->
out_pipe = usb_sndbulkpipe(udev,
162 dev->
iso_in = &iso_in->desc;
164 iso_in->desc.bEndpointAddress
171 iso_out->desc.bEndpointAddress
186 static void simple_callback(
struct urb *
urb)
191 static struct urb *usbtest_alloc_urb(
192 struct usb_device *
udev,
195 unsigned transfer_flags,
203 usb_fill_bulk_urb(urb, udev, pipe,
NULL, bytes, simple_callback,
NULL);
207 urb->transfer_flags = transfer_flags;
208 if (usb_pipein(pipe))
209 urb->transfer_flags |= URB_SHORT_NOT_OK;
211 if (urb->transfer_flags & URB_NO_TRANSFER_DMA_MAP)
217 if (!urb->transfer_buffer) {
226 urb->transfer_buffer +=
offset;
227 if (urb->transfer_flags & URB_NO_TRANSFER_DMA_MAP)
228 urb->transfer_dma +=
offset;
233 memset(urb->transfer_buffer,
239 static struct urb *simple_alloc_urb(
240 struct usb_device *udev,
244 return usbtest_alloc_urb(udev, pipe, bytes, URB_NO_TRANSFER_DMA_MAP, 0);
248 static unsigned mod_pattern;
252 static inline void simple_fill_buf(
struct urb *urb)
255 u8 *
buf = urb->transfer_buffer;
256 unsigned len = urb->transfer_buffer_length;
265 for (i = 0; i < len; i++)
266 *buf++ = (
u8) (i % 63);
271 static inline unsigned long buffer_offset(
void *buf)
276 static int check_guard_bytes(
struct usbtest_dev *tdev,
struct urb *urb)
278 u8 *buf = urb->transfer_buffer;
279 u8 *guard = buf - buffer_offset(buf);
282 for (i = 0; guard <
buf; i++, guard++) {
284 ERROR(tdev,
"guard byte[%d] %d (not %d)\n",
292 static int simple_check_buf(
struct usbtest_dev *tdev,
struct urb *urb)
296 u8 *buf = urb->transfer_buffer;
297 unsigned len = urb->actual_length;
299 int ret = check_guard_bytes(tdev, urb);
303 for (i = 0; i < len; i++, buf++) {
322 if (*buf == expected)
324 ERROR(tdev,
"buf[%d] = %d (not %d)\n", i, *buf, expected);
330 static void simple_free_urb(
struct urb *urb)
332 unsigned long offset = buffer_offset(urb->transfer_buffer);
334 if (urb->transfer_flags & URB_NO_TRANSFER_DMA_MAP)
337 urb->transfer_buffer_length + offset,
338 urb->transfer_buffer - offset,
339 urb->transfer_dma - offset);
341 kfree(urb->transfer_buffer - offset);
345 static int simple_io(
354 struct usb_device *udev = urb->dev;
355 int max = urb->transfer_buffer_length;
360 while (retval == 0 && iterations-- > 0) {
362 if (usb_pipeout(urb->pipe)) {
363 simple_fill_buf(urb);
364 urb->transfer_flags |= URB_ZERO_PACKET;
372 retval = urb->status;
374 if (retval == 0 && usb_pipein(urb->pipe))
375 retval = simple_check_buf(tdev, urb);
378 int len = urb->transfer_buffer_length;
383 len = (vary <
max) ? vary : max;
384 urb->transfer_buffer_length = len;
389 urb->transfer_buffer_length =
max;
391 if (expected != retval)
393 "%s failed, iterations left %d, status %d (not %d)\n",
394 label, iterations, retval, expected);
411 for (i = 0; i < nents; i++) {
412 if (!sg_page(&sg[i]))
414 kfree(sg_virt(&sg[i]));
420 alloc_sglist(
int nents,
int max,
int vary)
426 sg = kmalloc_array(nents,
sizeof *sg,
GFP_KERNEL);
431 for (i = 0; i < nents; i++) {
442 sg_set_buf(&sg[i], buf, size);
449 for (j = 0; j <
size; j++)
450 *buf++ = (
u8) (j % 63);
458 size = (vary <
max) ? vary : max;
465 static int perform_sglist(
469 struct usb_sg_request *
req,
474 struct usb_device *udev = testdev_to_usbdev(tdev);
477 while (retval == 0 && iterations-- > 0) {
487 retval = req->status;
498 ERROR(tdev,
"perform_sglist failed, "
499 "iterations left %d, status %d\n",
519 static unsigned realworld = 1;
526 struct usb_device *udev = interface_to_usbdev(iface);
531 0, iface->altsetting[0].desc.bInterfaceNumber,
532 dev->
buf, 1, USB_CTRL_GET_TIMEOUT);
547 struct usb_device *
udev;
552 udev = interface_to_usbdev(iface);
554 iface->altsetting[0].desc.bInterfaceNumber,
558 static int is_good_config(
struct usbtest_dev *tdev,
int len)
562 if (len <
sizeof *config)
570 ERROR(tdev,
"bogus config descriptor length\n");
575 ERROR(tdev,
"high bit of config attributes not set\n");
579 ERROR(tdev,
"reserved config bits set\n");
591 ERROR(tdev,
"bogus config descriptor read size\n");
613 struct usb_device *udev = interface_to_usbdev(iface);
619 for (i = 0; i < iface->num_altsetting; i++) {
622 alt = iface->altsetting[
i].desc.bAlternateSetting;
623 if (alt < 0 || alt >= iface->num_altsetting) {
625 "invalid alt [%d].bAltSetting = %d\n",
630 if (realworld && iface->num_altsetting == 1)
634 retval = set_altsetting(dev, alt);
636 dev_err(&iface->dev,
"can't set_interface = %d, %d\n",
642 retval = get_altsetting(dev);
644 dev_err(&iface->dev,
"get alt should be %d, was %d\n",
646 return (retval < 0) ? retval : -
EDOM;
652 if (!realworld || udev->descriptor.bNumConfigurations != 1) {
653 int expected = udev->actconfig->desc.bConfigurationValue;
662 0, 0, dev->
buf, 1, USB_CTRL_GET_TIMEOUT);
663 if (retval != 1 || dev->
buf[0] != expected) {
664 dev_err(&iface->dev,
"get config --> %d %d (1 %d)\n",
665 retval, dev->
buf[0], expected);
666 return (retval < 0) ? retval : -
EDOM;
672 dev->
buf,
sizeof udev->descriptor);
673 if (retval !=
sizeof udev->descriptor) {
674 dev_err(&iface->dev,
"dev descriptor --> %d\n", retval);
675 return (retval < 0) ? retval : -
EDOM;
679 for (i = 0; i < udev->descriptor.bNumConfigurations; i++) {
682 if (!is_good_config(dev, retval)) {
684 "config [%d] descriptor --> %d\n",
686 return (retval < 0) ? retval : -
EDOM;
695 if (
le16_to_cpu(udev->descriptor.bcdUSB) == 0x0200) {
702 if (retval == -
EPIPE) {
705 "hs dev qualifier --> %d\n",
707 return (retval < 0) ? retval : -
EDOM;
711 dev_err(&iface->dev,
"dev qualifier --> %d\n", retval);
712 return (retval < 0) ? retval : -
EDOM;
719 for (i = 0; i <
max; i++) {
723 if (!is_good_config(dev, retval)) {
725 "other speed config --> %d\n",
727 return (retval < 0) ? retval : -
EDOM;
737 dev_err(&iface->dev,
"get dev status --> %d\n", retval);
738 return (retval < 0) ? retval : -
EDOM;
746 iface->altsetting[0].desc.bInterfaceNumber, dev->
buf);
748 dev_err(&iface->dev,
"get interface status --> %d\n", retval);
749 return (retval < 0) ? retval : -
EDOM;
779 #define NUM_SUBCASES 15
787 static void ctrl_complete(
struct urb *urb)
797 spin_lock(&ctx->
lock);
805 if (subcase->
number > 0) {
808 "subcase %d completed out of order, last %d\n",
830 else if (subcase->
number == 12 && status == -
EPIPE)
833 ERROR(ctx->
dev,
"subtest %d error, status %d\n",
844 ERROR(ctx->
dev,
"control queue %02x.%02x, err %d, "
845 "%d left, subcase %d, len %d/%d\n",
849 urb->transfer_buffer_length);
856 for (i = 1; i < ctx->
param->sglen; i++) {
857 struct urb *
u = ctx->
urb[
859 % ctx->
param->sglen];
861 if (u == urb || !u->dev)
863 spin_unlock(&ctx->
lock);
865 spin_lock(&ctx->
lock);
872 ERROR(ctx->
dev,
"urb unlink --> %d\n",
885 "can't resubmit ctrl %02x.%02x, err %d\n",
896 spin_unlock(&ctx->
lock);
902 struct usb_device *udev = testdev_to_usbdev(dev);
912 init_completion(&
context.complete);
926 for (i = 0; i < param->
sglen; i++) {
927 int pipe = usb_rcvctrlpipe(udev, 0);
931 struct subcase *reqp;
943 memset(&req, 0,
sizeof req);
999 pipe = usb_sndctrlpipe(udev, 0);
1034 len = 1024 - udev->descriptor.bMaxPacketSize0;
1040 len = udev->descriptor.bMaxPacketSize0;
1054 ERROR(dev,
"bogus number of ctrl queue testcases!\n");
1059 urb[
i] = u = simple_alloc_urb(udev, pipe, len);
1069 u->setup_packet = (
char *) &reqp->
setup;
1072 u->complete = ctrl_complete;
1078 for (i = 0; i < param->
sglen; i++) {
1081 ERROR(dev,
"can't submit urb[%d], status %d\n",
1088 spin_unlock_irq(&
context.lock);
1097 for (i = 0; i < param->
sglen; i++) {
1101 kfree(urb[i]->setup_packet);
1102 simple_free_urb(urb[i]);
1112 static void unlink1_callback(
struct urb *urb)
1114 int status = urb->status;
1132 urb = simple_alloc_urb(testdev_to_usbdev(dev), pipe, size);
1136 urb->complete = unlink1_callback;
1146 dev_err(&dev->
intf->dev,
"submit fail %d\n", retval);
1167 ERROR(dev,
"unlink retry\n");
1175 "unlink fail %d\n", retval);
1185 retval = urb->status;
1186 simple_free_urb(urb);
1189 return (retval == -
ECONNRESET) ? 0 : retval - 1000;
1195 static int unlink_simple(
struct usbtest_dev *dev,
int pipe,
int len)
1200 retval = unlink1(dev, pipe, len, 1);
1202 retval = unlink1(dev, pipe, len, 0);
1216 static void unlink_queued_callback(
struct urb *urb)
1218 int status = urb->status;
1223 if (urb == ctx->
urbs[ctx->
num - 4] || urb == ctx->
urbs[ctx->
num - 2]) {
1236 static int unlink_queued(
struct usbtest_dev *dev,
int pipe,
unsigned num,
1240 struct usb_device *udev = testdev_to_usbdev(dev);
1260 for (i = 0; i < num; i++) {
1264 usb_fill_bulk_urb(ctx.
urbs[i], udev, pipe, buf, size,
1265 unlink_queued_callback, &ctx);
1266 ctx.
urbs[
i]->transfer_dma = buf_dma;
1267 ctx.
urbs[
i]->transfer_flags = URB_NO_TRANSFER_DMA_MAP;
1271 for (i = 0; i < num; i++) {
1275 dev_err(&dev->
intf->dev,
"submit urbs[%d] fail %d\n",
1296 for (i = 0; i < num; i++)
1306 static int verify_not_halted(
struct usbtest_dev *tdev,
int ep,
struct urb *urb)
1314 ERROR(tdev,
"ep %02x couldn't get no-halt status, %d\n",
1319 ERROR(tdev,
"ep %02x bogus status: %04x != 0\n", ep, status);
1322 retval = simple_io(tdev, urb, 1, 0, 0, __func__);
1328 static int verify_halted(
struct usbtest_dev *tdev,
int ep,
struct urb *urb)
1336 ERROR(tdev,
"ep %02x couldn't get halt status, %d\n",
1342 ERROR(tdev,
"ep %02x bogus status: %04x != 1\n", ep, status);
1345 retval = simple_io(tdev, urb, 1, 0, -
EPIPE, __func__);
1346 if (retval != -
EPIPE)
1348 retval = simple_io(tdev, urb, 1, 0, -
EPIPE,
"verify_still_halted");
1349 if (retval != -
EPIPE)
1354 static int test_halt(
struct usbtest_dev *tdev,
int ep,
struct urb *urb)
1359 retval = verify_not_halted(tdev, ep, urb);
1367 NULL, 0, USB_CTRL_SET_TIMEOUT);
1369 ERROR(tdev,
"ep %02x couldn't set halt, %d\n", ep, retval);
1372 retval = verify_halted(tdev, ep, urb);
1379 ERROR(tdev,
"ep %02x couldn't clear halt, %d\n", ep, retval);
1382 retval = verify_not_halted(tdev, ep, urb);
1396 struct usb_device *udev = testdev_to_usbdev(dev);
1399 urb = simple_alloc_urb(udev, 0, 1024);
1401 urb = simple_alloc_urb(udev, 0, 512);
1408 retval = test_halt(dev, ep, urb);
1414 ep = usb_pipeendpoint(dev->
out_pipe);
1416 retval = test_halt(dev, ep, urb);
1419 simple_free_urb(urb);
1434 unsigned count,
unsigned length,
unsigned vary,
unsigned offset)
1440 struct usb_device *
udev;
1442 if (length < 1 || length > 0xffff || vary >= length)
1450 udev = testdev_to_usbdev(dev);
1457 for (i = 0; i <
count; i++) {
1459 for (j = 0; j < len; j++)
1463 0, 0, buf, len, USB_CTRL_SET_TIMEOUT);
1464 if (retval != len) {
1467 ERROR(dev,
"ctrl_out, wlen %d (expected %d)\n",
1477 0, 0, buf, len, USB_CTRL_GET_TIMEOUT);
1478 if (retval != len) {
1481 ERROR(dev,
"ctrl_out, rlen %d (expected %d)\n",
1489 for (j = 0; j < len; j++) {
1490 if (buf[j] != (
u8) (i + j)) {
1491 ERROR(dev,
"ctrl_out, byte %d is %d not %d\n",
1492 j, buf[j], (
u8) i + j);
1509 len = realworld ? 1 : 0;
1513 ERROR(dev,
"ctrl_out %s failed, code %d, count %d\n",
1516 kfree(buf - offset);
1538 static void iso_callback(
struct urb *urb)
1542 spin_lock(&ctx->
lock);
1546 if (urb->error_count > 0)
1547 ctx->
errors += urb->error_count;
1548 else if (urb->status != 0)
1549 ctx->
errors += urb->number_of_packets;
1550 else if (urb->actual_length != urb->transfer_buffer_length)
1552 else if (check_guard_bytes(ctx->
dev, urb) != 0)
1555 if (urb->status == 0 && ctx->
count > (ctx->
pending - 1)
1563 "iso resubmit err %d\n",
1577 "iso test, %lu errors out of %lu\n",
1582 spin_unlock(&ctx->
lock);
1585 static struct urb *iso_alloc_urb(
1586 struct usb_device *udev,
1596 if (bytes < 0 || !desc)
1598 maxp = 0x7ff & usb_endpoint_maxp(desc);
1599 maxp *= 1 + (0x3 & (usb_endpoint_maxp(desc) >> 11));
1608 urb->number_of_packets =
packets;
1609 urb->transfer_buffer_length =
bytes;
1612 &urb->transfer_dma);
1613 if (!urb->transfer_buffer) {
1619 urb->transfer_buffer +=
offset;
1620 urb->transfer_dma +=
offset;
1624 memset(urb->transfer_buffer,
1628 for (i = 0; i <
packets; i++) {
1630 urb->iso_frame_desc[
i].length =
min((
unsigned) bytes, maxp);
1631 bytes -= urb->iso_frame_desc[
i].length;
1633 urb->iso_frame_desc[
i].offset = maxp *
i;
1636 urb->complete = iso_callback;
1638 urb->interval = 1 << (desc->
bInterval - 1);
1639 urb->transfer_flags = URB_ISO_ASAP | URB_NO_TRANSFER_DMA_MAP;
1648 struct usb_device *
udev;
1650 unsigned long packets = 0;
1652 struct urb *urbs[10];
1654 if (param->
sglen > 10)
1660 init_completion(&
context.done);
1663 memset(urbs, 0,
sizeof urbs);
1664 udev = testdev_to_usbdev(dev);
1666 "... iso period %d %sframes, wMaxPacket %04x\n",
1669 usb_endpoint_maxp(desc));
1671 for (i = 0; i < param->
sglen; i++) {
1672 urbs[
i] = iso_alloc_urb(udev, pipe, desc,
1678 packets += urbs[
i]->number_of_packets;
1683 "... total %lu msec (%lu packets)\n",
1684 (packets * (1 << (desc->
bInterval - 1)))
1689 for (i = 0; i < param->
sglen; i++) {
1693 ERROR(dev,
"submit iso[%d], error %d\n", i, status);
1695 spin_unlock_irq(&
context.lock);
1699 simple_free_urb(urbs[i]);
1706 spin_unlock_irq(&
context.lock);
1710 for (i = 0; i < param->
sglen; i++) {
1712 simple_free_urb(urbs[i]);
1721 else if (
context.submit_error)
1728 for (i = 0; i < param->
sglen; i++) {
1730 simple_free_urb(urbs[i]);
1735 static int test_unaligned_bulk(
1740 unsigned transfer_flags,
1744 struct urb *urb = usbtest_alloc_urb(
1745 testdev_to_usbdev(tdev), pipe, length, transfer_flags, 1);
1750 retval = simple_io(tdev, urb, iterations, 0, 0, label);
1751 simple_free_urb(urb);
1782 struct usb_device *udev = testdev_to_usbdev(dev);
1787 struct usb_sg_request req;
1793 pattern = mod_pattern;
1810 if (dev->
info->alt >= 0) {
1813 if (intf->altsetting->desc.bInterfaceNumber) {
1817 res = set_altsetting(dev, dev->
info->alt);
1820 "set altsetting to %d failed, %d\n",
1821 dev->
info->alt, res);
1840 dev_info(&intf->dev,
"TEST 0: NOP\n");
1849 "TEST 1: write %d bytes %u times\n",
1857 retval = simple_io(dev, urb, param->
iterations, 0, 0,
"test1");
1858 simple_free_urb(urb);
1864 "TEST 2: read %d bytes %u times\n",
1872 retval = simple_io(dev, urb, param->
iterations, 0, 0,
"test2");
1873 simple_free_urb(urb);
1879 "TEST 3: write/%d 0..%d bytes %u times\n",
1889 simple_free_urb(urb);
1895 "TEST 4: read/%d 0..%d bytes %u times\n",
1905 simple_free_urb(urb);
1913 "TEST 5: write %d sglists %d entries of %d bytes\n",
1916 sg = alloc_sglist(param->
sglen, param->
length, 0);
1923 &req, sg, param->
sglen);
1924 free_sglist(sg, param->
sglen);
1931 "TEST 6: read %d sglists %d entries of %d bytes\n",
1934 sg = alloc_sglist(param->
sglen, param->
length, 0);
1941 &req, sg, param->
sglen);
1942 free_sglist(sg, param->
sglen);
1948 "TEST 7: write/%d %d sglists %d entries 0..%d bytes\n",
1958 &req, sg, param->
sglen);
1959 free_sglist(sg, param->
sglen);
1965 "TEST 8: read/%d %d sglists %d entries 0..%d bytes\n",
1975 &req, sg, param->
sglen);
1976 free_sglist(sg, param->
sglen);
1983 "TEST 9: ch9 (subset) control tests, %d times\n",
1985 for (i = param->
iterations; retval == 0 && i--; )
1986 retval = ch9_postconfig(dev);
1988 dev_err(&intf->dev,
"ch9 subset failed, "
1989 "iterations left %d\n", i);
1996 "TEST 10: queue %d control calls, %d times\n",
1999 retval = test_ctrl_queue(dev, param);
2007 dev_info(&intf->dev,
"TEST 11: unlink %d reads of %d\n",
2009 for (i = param->
iterations; retval == 0 && i--; )
2010 retval = unlink_simple(dev, dev->
in_pipe,
2013 dev_err(&intf->dev,
"unlink reads failed %d, "
2014 "iterations left %d\n", retval, i);
2020 dev_info(&intf->dev,
"TEST 12: unlink %d writes of %d\n",
2022 for (i = param->
iterations; retval == 0 && i--; )
2023 retval = unlink_simple(dev, dev->
out_pipe,
2026 dev_err(&intf->dev,
"unlink writes failed %d, "
2027 "iterations left %d\n", retval, i);
2035 dev_info(&intf->dev,
"TEST 13: set/clear %d halts\n",
2037 for (i = param->
iterations; retval == 0 && i--; )
2038 retval = halt_simple(dev);
2041 ERROR(dev,
"halts failed, iterations left %d\n", i);
2046 if (!dev->
info->ctrl_out)
2048 dev_info(&intf->dev,
"TEST 14: %d ep0out, %d..%d vary %d\n",
2050 realworld ? 1 : 0, param->
length,
2061 "TEST 15: write %d iso, %d entries of %d bytes\n",
2065 retval = test_iso_queue(dev, param,
2074 "TEST 16: read %d iso, %d entries of %d bytes\n",
2078 retval = test_iso_queue(dev, param,
2089 "TEST 17: write odd addr %d bytes %u times core map\n",
2092 retval = test_unaligned_bulk(
2102 "TEST 18: read odd addr %d bytes %u times core map\n",
2105 retval = test_unaligned_bulk(
2116 "TEST 19: write odd addr %d bytes %u times premapped\n",
2119 retval = test_unaligned_bulk(
2122 URB_NO_TRANSFER_DMA_MAP,
"test19");
2129 "TEST 20: read odd addr %d bytes %u times premapped\n",
2132 retval = test_unaligned_bulk(
2135 URB_NO_TRANSFER_DMA_MAP,
"test20");
2140 if (!dev->
info->ctrl_out)
2143 "TEST 21: %d ep0out odd addr, %d..%d vary %d\n",
2145 realworld ? 1 : 0, param->
length,
2156 "TEST 22: write %d iso odd, %d entries of %d bytes\n",
2159 retval = test_iso_queue(dev, param,
2167 "TEST 23: read %d iso odd, %d entries of %d bytes\n",
2170 retval = test_iso_queue(dev, param,
2179 dev_info(&intf->dev,
"TEST 17: unlink from %d queues of "
2180 "%d %d-byte writes\n",
2182 for (i = param->
iterations; retval == 0 && i > 0; --i) {
2183 retval = unlink_queued(dev, dev->
out_pipe,
2187 "unlink queued writes failed %d, "
2188 "iterations left %d\n", retval, i);
2199 param->
duration.tv_usec += 1000 * 1000;
2208 static unsigned force_interrupt;
2213 static unsigned short vendor;
2217 static unsigned short product;
2225 struct usb_device *
udev;
2228 char *rtest, *wtest;
2229 char *irtest, *iwtest;
2231 udev = interface_to_usbdev(intf);
2237 if (!vendor ||
le16_to_cpu(udev->descriptor.idVendor) != (
u16)vendor)
2239 if (product &&
le16_to_cpu(udev->descriptor.idProduct) != (
u16)product)
2241 dev_info(&intf->dev,
"matched module params, "
2242 "vend=0x%04x prod=0x%04x\n",
2269 irtest = iwtest =
"";
2277 wtest =
" intr-out";
2283 status = get_endpoints(dev, intf);
2285 WARNING(dev,
"couldn't get endpoints, %d\n",
2294 dev->
in_pipe = usb_rcvbulkpipe(udev,
2297 dev->
out_pipe = usb_sndbulkpipe(udev,
2303 wtest =
" bulk-out";
2307 iwtest =
" iso-out";
2310 usb_set_intfdata(intf, dev);
2312 dev_info(&intf->dev,
"%s {control%s%s%s%s%s} tests%s\n",
2317 info->
alt >= 0 ?
" (+alt)" :
"");
2336 usb_set_intfdata(intf,
NULL);
2337 dev_dbg(&intf->dev,
"disconnect\n");
2354 .name =
"EZ-USB device",
2362 .name =
"FX2 device",
2371 .name =
"usb test device",
2386 .name =
"Linux gadget zero",
2393 .name =
"Linux user mode test driver",
2399 .name =
"Linux user mode ISO test driver",
2410 .
name =
"iBOT2 webcam",
2419 .name =
"Generic USB device",
2434 { USB_DEVICE(0x0547, 0x2235),
2435 .driver_info = (
unsigned long) &ez1_info,
2439 { USB_DEVICE(0x0547, 0x0080),
2440 .driver_info = (
unsigned long) &ez1_info,
2444 { USB_DEVICE(0x04b4, 0x8613),
2445 .driver_info = (
unsigned long) &ez2_info,
2449 { USB_DEVICE(0xfff0, 0xfff0),
2450 .driver_info = (
unsigned long) &fw_info,
2454 { USB_DEVICE(0x0525, 0xa4a0),
2455 .driver_info = (
unsigned long) &gz_info,
2459 { USB_DEVICE(0x0525, 0xa4a4),
2460 .driver_info = (
unsigned long) &um_info,
2464 { USB_DEVICE(0x0525, 0xa4a3),
2465 .driver_info = (
unsigned long) &um2_info,
2471 { USB_DEVICE(0x06cd, 0x010b),
2472 .driver_info = (
unsigned long) &ez1_info,
2481 { USB_DEVICE(0x0b62, 0x0059),
2482 .driver_info = (
unsigned long) &ibot2_info,
2490 { .driver_info = (
unsigned long) &generic_info, },
2499 static struct usb_driver usbtest_driver = {
2501 .id_table = id_table,
2502 .probe = usbtest_probe,
2503 .unlocked_ioctl = usbtest_ioctl,
2504 .disconnect = usbtest_disconnect,
2505 .suspend = usbtest_suspend,
2506 .resume = usbtest_resume,
2511 static int __init usbtest_init(
void)
2515 pr_debug(
"params: vend=0x%04x prod=0x%04x\n", vendor, product);
2517 return usb_register(&usbtest_driver);
2521 static void __exit usbtest_exit(
void)