diff options
Diffstat (limited to 'drivers/usb/misc/usbtest.c')
-rw-r--r-- | drivers/usb/misc/usbtest.c | 13 |
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 | ||
16 | static int override_alt = -1; | ||
17 | module_param_named(alt, override_alt, int, 0644); | ||
18 | MODULE_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? */ |
17 | struct usbtest_param { | 23 | struct 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 | ||
145 | found: | 155 | found: |
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); |