diff options
Diffstat (limited to 'common')
| -rw-r--r-- | common/usb.c | 12 | 
1 files changed, 9 insertions, 3 deletions
| diff --git a/common/usb.c b/common/usb.c index 1c9763cb6..50b81752e 100644 --- a/common/usb.c +++ b/common/usb.c @@ -508,8 +508,8 @@ int usb_get_configuration_no(struct usb_device *dev,  	tmp = le16_to_cpu(config->wTotalLength);  	if (tmp > USB_BUFSIZ) { -		USB_PRINTF("usb_get_configuration_no: failed to get " \ -			   "descriptor - too long: %d\n", tmp); +		printf("usb_get_configuration_no: failed to get " \ +		       "descriptor - too long: %d\n", tmp);  		return -1;  	} @@ -946,7 +946,13 @@ int usb_new_device(struct usb_device *dev)  	le16_to_cpus(&dev->descriptor.idProduct);  	le16_to_cpus(&dev->descriptor.bcdDevice);  	/* only support for one config for now */ -	usb_get_configuration_no(dev, tmpbuf, 0); +	err = usb_get_configuration_no(dev, tmpbuf, 0); +	if (err < 0) { +		printf("usb_new_device: Cannot read configuration, " \ +		       "skipping device %04x:%04x\n", +		       dev->descriptor.idVendor, dev->descriptor.idProduct); +		return -1; +	}  	usb_parse_config(dev, tmpbuf, 0);  	usb_set_maxpacket(dev);  	/* we set the default configuration here */ |