Configuration: bLength = 9 bDescriptorType = 02 wTotalLength = 0022 bNumInterfaces = 01 bConfigurationValue = 00 iConfiguration = 00 bmAttributes = a0 bMaxPower = 100mA
Thanks for that info. It confirms what I expected: this device violates the USB specification. That's interesting to know. This particular violation doesn't seem common, since yours is the first report of this error. And it should be one we can turn into a "don't care".
Please instruct me about what to do next.
Let us know if you can use the device after applying this patch! If it does, I'll ask Greg to merge it.
- Dave
--- 1.34/drivers/usb/core/message.c Mon Aug 11 07:56:25 2003 +++ edited/drivers/usb/core/message.c Wed Aug 13 08:26:45 2003 @@ -1053,10 +1053,18 @@ break; } } - if ((!cp && configuration != 0) || (cp && configuration == 0)) { - warn("selecting invalid configuration %d", configuration); + if (!cp && configuration != 0) { + dev_dbg(&dev->dev, "selecting invalid configuration %d\n", + configuration); return -EINVAL; } + + /* the usb spec defines config zero as meaning the device is in + * ADDRESS state; otherwise it's CONFIGURED. but at least one + * usb 1.1 mouse (062a:0000 v2.4) won't even try to fake it. + */ + if (cp && configuration == 0) + dev_warn(&dev->dev, "illegal descriptors, for config #0\n"); /* if it's already configured, clear out old state first. */ if (dev->state != USB_STATE_ADDRESS)