aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/misc/usbtest.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/misc/usbtest.c')
-rw-r--r--drivers/usb/misc/usbtest.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/usb/misc/usbtest.c b/drivers/usb/misc/usbtest.c
index 268148de9714..8b4ca1cb450a 100644
--- a/drivers/usb/misc/usbtest.c
+++ b/drivers/usb/misc/usbtest.c
@@ -13,6 +13,12 @@
13 13
14/*-------------------------------------------------------------------------*/ 14/*-------------------------------------------------------------------------*/
15 15
16static int override_alt = -1;
17module_param_named(alt, override_alt, int, 0644);
18MODULE_PARM_DESC(alt, ">= 0 to override altsetting selection");
19
20/*-------------------------------------------------------------------------*/
21
16/* FIXME make these public somewhere; usbdevfs.h? */ 22/* FIXME make these public somewhere; usbdevfs.h? */
17struct usbtest_param { 23struct usbtest_param {
18 /* inputs */ 24 /* inputs */
@@ -103,6 +109,10 @@ get_endpoints(struct usbtest_dev *dev, struct usb_interface *intf)
103 iso_in = iso_out = NULL; 109 iso_in = iso_out = NULL;
104 alt = intf->altsetting + tmp; 110 alt = intf->altsetting + tmp;
105 111
112 if (override_alt >= 0 &&
113 override_alt != alt->desc.bAlternateSetting)
114 continue;
115
106 /* take the first altsetting with in-bulk + out-bulk; 116 /* take the first altsetting with in-bulk + out-bulk;
107 * ignore other endpoints and altsettings. 117 * ignore other endpoints and altsettings.
108 */ 118 */
@@ -144,6 +154,7 @@ try_iso:
144 154
145found: 155found:
146 udev = testdev_to_usbdev(dev); 156 udev = testdev_to_usbdev(dev);
157 dev->info->alt = alt->desc.bAlternateSetting;
147 if (alt->desc.bAlternateSetting != 0) { 158 if (alt->desc.bAlternateSetting != 0) {
148 tmp = usb_set_interface(udev, 159 tmp = usb_set_interface(udev,
149 alt->desc.bInterfaceNumber, 160 alt->desc.bInterfaceNumber,
@@ -2280,7 +2291,7 @@ usbtest_probe(struct usb_interface *intf, const struct usb_device_id *id)
2280 wtest = " intr-out"; 2291 wtest = " intr-out";
2281 } 2292 }
2282 } else { 2293 } else {
2283 if (info->autoconf) { 2294 if (override_alt >= 0 || info->autoconf) {
2284 int status; 2295 int status;
2285 2296
2286 status = get_endpoints(dev, intf); 2297 status = get_endpoints(dev, intf);