diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/usb/composite.h | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/include/linux/usb/composite.h b/include/linux/usb/composite.h index 9d8c3b634493..3153f73ae083 100644 --- a/include/linux/usb/composite.h +++ b/include/linux/usb/composite.h | |||
@@ -257,12 +257,16 @@ void usb_remove_config(struct usb_composite_dev *, | |||
257 | * not set. | 257 | * not set. |
258 | * @dev: Template descriptor for the device, including default device | 258 | * @dev: Template descriptor for the device, including default device |
259 | * identifiers. | 259 | * identifiers. |
260 | * @strings: tables of strings, keyed by identifiers assigned during bind() | 260 | * @strings: tables of strings, keyed by identifiers assigned during @bind |
261 | * and language IDs provided in control requests | 261 | * and language IDs provided in control requests |
262 | * @max_speed: Highest speed the driver supports. | 262 | * @max_speed: Highest speed the driver supports. |
263 | * @needs_serial: set to 1 if the gadget needs userspace to provide | 263 | * @needs_serial: set to 1 if the gadget needs userspace to provide |
264 | * a serial number. If one is not provided, warning will be printed. | 264 | * a serial number. If one is not provided, warning will be printed. |
265 | * @unbind: Reverses bind; called as a side effect of unregistering | 265 | * @bind: (REQUIRED) Used to allocate resources that are shared across the |
266 | * whole device, such as string IDs, and add its configurations using | ||
267 | * @usb_add_config(). This may fail by returning a negative errno | ||
268 | * value; it should return zero on successful initialization. | ||
269 | * @unbind: Reverses @bind; called as a side effect of unregistering | ||
266 | * this driver. | 270 | * this driver. |
267 | * @disconnect: optional driver disconnect method | 271 | * @disconnect: optional driver disconnect method |
268 | * @suspend: Notifies when the host stops sending USB traffic, | 272 | * @suspend: Notifies when the host stops sending USB traffic, |
@@ -271,9 +275,9 @@ void usb_remove_config(struct usb_composite_dev *, | |||
271 | * before function notifications | 275 | * before function notifications |
272 | * | 276 | * |
273 | * Devices default to reporting self powered operation. Devices which rely | 277 | * Devices default to reporting self powered operation. Devices which rely |
274 | * on bus powered operation should report this in their @bind() method. | 278 | * on bus powered operation should report this in their @bind method. |
275 | * | 279 | * |
276 | * Before returning from bind, various fields in the template descriptor | 280 | * Before returning from @bind, various fields in the template descriptor |
277 | * may be overridden. These include the idVendor/idProduct/bcdDevice values | 281 | * may be overridden. These include the idVendor/idProduct/bcdDevice values |
278 | * normally to bind the appropriate host side driver, and the three strings | 282 | * normally to bind the appropriate host side driver, and the three strings |
279 | * (iManufacturer, iProduct, iSerialNumber) normally used to provide user | 283 | * (iManufacturer, iProduct, iSerialNumber) normally used to provide user |
@@ -291,6 +295,7 @@ struct usb_composite_driver { | |||
291 | enum usb_device_speed max_speed; | 295 | enum usb_device_speed max_speed; |
292 | unsigned needs_serial:1; | 296 | unsigned needs_serial:1; |
293 | 297 | ||
298 | int (*bind)(struct usb_composite_dev *cdev); | ||
294 | int (*unbind)(struct usb_composite_dev *); | 299 | int (*unbind)(struct usb_composite_dev *); |
295 | 300 | ||
296 | void (*disconnect)(struct usb_composite_dev *); | 301 | void (*disconnect)(struct usb_composite_dev *); |