On Wed, 17 Aug 2011, Michal Nazarewicz wrote:@@ -1609,8 +1603,7 @@ int usb_composite_probe(struct
usb_composite_driver *driver,
driver->iProduct = driver->name;
composite_driver.function = (char *) driver->name;
composite_driver.driver.name = driver->name;
- composite_driver.speed = min((u8)composite_driver.speed,
- (u8)driver->max_speed);
+ composite_driver.speed = min(USB_SPEED_SUPER, driver->max_speed);
On Wed, 17 Aug 2011 16:20:15 +0200, Alan Stern wrote:I wonder if the min is needed here at all. It doesn't seem to be doing any good.
On Wed, 17 Aug 2011, Michal Nazarewicz wrote:Do you mean just doing âcomposite_driver.speed = driver->max_speedâ?
Yes. After all, there aren't any usb_device_speed values larger than
USB_SPEED_SUPER.
--- a/drivers/usb/gadget/file_storage.c
+++ b/drivers/usb/gadget/file_storage.c
@@ -3562,11 +3562,7 @@ static void fsg_resume(struct usb_gadget *gadget)
static struct usb_gadget_driver fsg_driver = {
-#ifdef CONFIG_USB_GADGET_DUALSPEED
.speed = USB_SPEED_HIGH,
-#else
- .speed = USB_SPEED_FULL,
-#endif
.function = (char *) fsg_string_product,
.unbind = fsg_unbind,
.disconnect = fsg_disconnect,
You mustn't remove the .speed field entirely. Set it to USB_SPEED_HIGH.
Please note that the field is not in fact removed.
No, but you removed its initializer and as a result, it will be set to
0 whereas it should be set to USB_SPEED_HIGH.