|
@@ -257,12 +257,16 @@ void usb_remove_config(struct usb_composite_dev *,
|
|
|
* not set.
|
|
|
* @dev: Template descriptor for the device, including default device
|
|
|
* identifiers.
|
|
|
- * @strings: tables of strings, keyed by identifiers assigned during bind()
|
|
|
+ * @strings: tables of strings, keyed by identifiers assigned during @bind
|
|
|
* and language IDs provided in control requests
|
|
|
* @max_speed: Highest speed the driver supports.
|
|
|
* @needs_serial: set to 1 if the gadget needs userspace to provide
|
|
|
* a serial number. If one is not provided, warning will be printed.
|
|
|
- * @unbind: Reverses bind; called as a side effect of unregistering
|
|
|
+ * @bind: (REQUIRED) Used to allocate resources that are shared across the
|
|
|
+ * whole device, such as string IDs, and add its configurations using
|
|
|
+ * @usb_add_config(). This may fail by returning a negative errno
|
|
|
+ * value; it should return zero on successful initialization.
|
|
|
+ * @unbind: Reverses @bind; called as a side effect of unregistering
|
|
|
* this driver.
|
|
|
* @disconnect: optional driver disconnect method
|
|
|
* @suspend: Notifies when the host stops sending USB traffic,
|
|
@@ -271,9 +275,9 @@ void usb_remove_config(struct usb_composite_dev *,
|
|
|
* before function notifications
|
|
|
*
|
|
|
* Devices default to reporting self powered operation. Devices which rely
|
|
|
- * on bus powered operation should report this in their @bind() method.
|
|
|
+ * on bus powered operation should report this in their @bind method.
|
|
|
*
|
|
|
- * Before returning from bind, various fields in the template descriptor
|
|
|
+ * Before returning from @bind, various fields in the template descriptor
|
|
|
* may be overridden. These include the idVendor/idProduct/bcdDevice values
|
|
|
* normally to bind the appropriate host side driver, and the three strings
|
|
|
* (iManufacturer, iProduct, iSerialNumber) normally used to provide user
|
|
@@ -291,6 +295,7 @@ struct usb_composite_driver {
|
|
|
enum usb_device_speed max_speed;
|
|
|
unsigned needs_serial:1;
|
|
|
|
|
|
+ int (*bind)(struct usb_composite_dev *cdev);
|
|
|
int (*unbind)(struct usb_composite_dev *);
|
|
|
|
|
|
void (*disconnect)(struct usb_composite_dev *);
|