Skip to content
Snippets Groups Projects
usb.c 28.4 KiB
Newer Older
  • Learn to ignore specific revisions
  • Wolfgang Denk's avatar
    Wolfgang Denk committed
    	/* only support for one config for now */
    
    	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);
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    	usb_set_maxpacket(dev);
    	/* we set the default configuration here */
    
    	if (usb_set_configuration(dev, dev->config.desc.bConfigurationValue)) {
    
    		printf("failed to set default configuration " \
    			"len %d, status %lX\n", dev->act_len, dev->status);
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    		return -1;
    	}
    
    	debug("new device strings: Mfr=%d, Product=%d, SerialNumber=%d\n",
    	      dev->descriptor.iManufacturer, dev->descriptor.iProduct,
    	      dev->descriptor.iSerialNumber);
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    	memset(dev->mf, 0, sizeof(dev->mf));
    	memset(dev->prod, 0, sizeof(dev->prod));
    	memset(dev->serial, 0, sizeof(dev->serial));
    	if (dev->descriptor.iManufacturer)
    
    		usb_string(dev, dev->descriptor.iManufacturer,
    			   dev->mf, sizeof(dev->mf));
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    	if (dev->descriptor.iProduct)
    
    		usb_string(dev, dev->descriptor.iProduct,
    			   dev->prod, sizeof(dev->prod));
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    	if (dev->descriptor.iSerialNumber)
    
    		usb_string(dev, dev->descriptor.iSerialNumber,
    			   dev->serial, sizeof(dev->serial));
    
    	debug("Manufacturer %s\n", dev->mf);
    	debug("Product      %s\n", dev->prod);
    	debug("SerialNumber %s\n", dev->serial);
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    	/* now prode if the device is a hub */
    
    	usb_hub_probe(dev, 0);
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    	return 0;
    }
    
    /* EOF */