diff options
author | Michal Nazarewicz <m.nazarewicz@samsung.com> | 2010-08-12 11:43:54 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-10-22 13:21:25 -0400 |
commit | 07a18bd716ed5dea336429404b132568cfaaef95 (patch) | |
tree | 1ff7719e2e0e022cff3ed420bc1c332662a1a48c /include/linux/usb/composite.h | |
parent | b0fca50f5a94a268ed02cfddf44448051ed9343f (diff) |
usb gadget: don't save bind callback in struct usb_composite_driver
The bind function is most of the time only called at init time so there
is no need to save a pointer to it in the composite driver structure.
This fixes many section mismatches reported by modpost.
Signed-off-by: Michał Nazarewicz <m.nazarewicz@samsung.com>
Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'include/linux/usb/composite.h')
-rw-r--r-- | include/linux/usb/composite.h | 19 |
1 files changed, 5 insertions, 14 deletions
diff --git a/include/linux/usb/composite.h b/include/linux/usb/composite.h index a78e813d27e4..e28b6626802c 100644 --- a/include/linux/usb/composite.h +++ b/include/linux/usb/composite.h | |||
@@ -248,11 +248,7 @@ int usb_add_config(struct usb_composite_dev *, | |||
248 | * and language IDs provided in control requests | 248 | * and language IDs provided in control requests |
249 | * @needs_serial: set to 1 if the gadget needs userspace to provide | 249 | * @needs_serial: set to 1 if the gadget needs userspace to provide |
250 | * a serial number. If one is not provided, warning will be printed. | 250 | * a serial number. If one is not provided, warning will be printed. |
251 | * @bind: (REQUIRED) Used to allocate resources that are shared across the | 251 | * @unbind: Reverses bind; called as a side effect of unregistering |
252 | * whole device, such as string IDs, and add its configurations using | ||
253 | * @usb_add_config(). This may fail by returning a negative errno | ||
254 | * value; it should return zero on successful initialization. | ||
255 | * @unbind: Reverses @bind(); called as a side effect of unregistering | ||
256 | * this driver. | 252 | * this driver. |
257 | * @disconnect: optional driver disconnect method | 253 | * @disconnect: optional driver disconnect method |
258 | * @suspend: Notifies when the host stops sending USB traffic, | 254 | * @suspend: Notifies when the host stops sending USB traffic, |
@@ -263,7 +259,7 @@ int usb_add_config(struct usb_composite_dev *, | |||
263 | * Devices default to reporting self powered operation. Devices which rely | 259 | * Devices default to reporting self powered operation. Devices which rely |
264 | * on bus powered operation should report this in their @bind() method. | 260 | * on bus powered operation should report this in their @bind() method. |
265 | * | 261 | * |
266 | * Before returning from @bind, various fields in the template descriptor | 262 | * Before returning from bind, various fields in the template descriptor |
267 | * may be overridden. These include the idVendor/idProduct/bcdDevice values | 263 | * may be overridden. These include the idVendor/idProduct/bcdDevice values |
268 | * normally to bind the appropriate host side driver, and the three strings | 264 | * normally to bind the appropriate host side driver, and the three strings |
269 | * (iManufacturer, iProduct, iSerialNumber) normally used to provide user | 265 | * (iManufacturer, iProduct, iSerialNumber) normally used to provide user |
@@ -279,12 +275,6 @@ struct usb_composite_driver { | |||
279 | struct usb_gadget_strings **strings; | 275 | struct usb_gadget_strings **strings; |
280 | unsigned needs_serial:1; | 276 | unsigned needs_serial:1; |
281 | 277 | ||
282 | /* REVISIT: bind() functions can be marked __init, which | ||
283 | * makes trouble for section mismatch analysis. See if | ||
284 | * we can't restructure things to avoid mismatching... | ||
285 | */ | ||
286 | |||
287 | int (*bind)(struct usb_composite_dev *); | ||
288 | int (*unbind)(struct usb_composite_dev *); | 278 | int (*unbind)(struct usb_composite_dev *); |
289 | 279 | ||
290 | void (*disconnect)(struct usb_composite_dev *); | 280 | void (*disconnect)(struct usb_composite_dev *); |
@@ -294,8 +284,9 @@ struct usb_composite_driver { | |||
294 | void (*resume)(struct usb_composite_dev *); | 284 | void (*resume)(struct usb_composite_dev *); |
295 | }; | 285 | }; |
296 | 286 | ||
297 | extern int usb_composite_register(struct usb_composite_driver *); | 287 | extern int usb_composite_probe(struct usb_composite_driver *driver, |
298 | extern void usb_composite_unregister(struct usb_composite_driver *); | 288 | int (*bind)(struct usb_composite_dev *cdev)); |
289 | extern void usb_composite_unregister(struct usb_composite_driver *driver); | ||
299 | 290 | ||
300 | 291 | ||
301 | /** | 292 | /** |