|
@@ -805,6 +805,18 @@ struct usb_device *usb_alloc_new_device(void *controller)
|
|
|
return &usb_dev[dev_index - 1];
|
|
|
}
|
|
|
|
|
|
+/*
|
|
|
+ * Free the newly created device node.
|
|
|
+ * Called in error cases where configuring a newly attached
|
|
|
+ * device fails for some reason.
|
|
|
+ */
|
|
|
+void usb_free_device(void)
|
|
|
+{
|
|
|
+ dev_index--;
|
|
|
+ USB_PRINTF("Freeing device node: %d\n", dev_index);
|
|
|
+ memset(&usb_dev[dev_index], 0, sizeof(struct usb_device));
|
|
|
+ usb_dev[dev_index].devnum = -1;
|
|
|
+}
|
|
|
|
|
|
/*
|
|
|
* By the time we get here, the device has gotten a new device ID
|