diff options
Diffstat (limited to 'include/linux/usb')
-rw-r--r-- | include/linux/usb/serial.h | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/include/linux/usb/serial.h b/include/linux/usb/serial.h index 749836f2890c..c9f65146a039 100644 --- a/include/linux/usb/serial.h +++ b/include/linux/usb/serial.h | |||
@@ -292,10 +292,9 @@ struct usb_serial_driver { | |||
292 | #define to_usb_serial_driver(d) \ | 292 | #define to_usb_serial_driver(d) \ |
293 | container_of(d, struct usb_serial_driver, driver) | 293 | container_of(d, struct usb_serial_driver, driver) |
294 | 294 | ||
295 | extern int usb_serial_register_drivers(struct usb_driver *udriver, | 295 | extern int usb_serial_register_drivers(struct usb_serial_driver *const serial_drivers[], |
296 | struct usb_serial_driver * const serial_drivers[]); | 296 | const char *name, const struct usb_device_id *id_table); |
297 | extern void usb_serial_deregister_drivers(struct usb_driver *udriver, | 297 | extern void usb_serial_deregister_drivers(struct usb_serial_driver *const serial_drivers[]); |
298 | struct usb_serial_driver * const serial_drivers[]); | ||
299 | extern void usb_serial_port_softint(struct usb_serial_port *port); | 298 | extern void usb_serial_port_softint(struct usb_serial_port *port); |
300 | 299 | ||
301 | extern int usb_serial_suspend(struct usb_interface *intf, pm_message_t message); | 300 | extern int usb_serial_suspend(struct usb_interface *intf, pm_message_t message); |
@@ -396,8 +395,8 @@ do { \ | |||
396 | 395 | ||
397 | /* | 396 | /* |
398 | * module_usb_serial_driver() - Helper macro for registering a USB Serial driver | 397 | * module_usb_serial_driver() - Helper macro for registering a USB Serial driver |
399 | * @__usb_driver: usb_driver struct to register | ||
400 | * @__serial_drivers: list of usb_serial drivers to register | 398 | * @__serial_drivers: list of usb_serial drivers to register |
399 | * @__ids: all device ids that @__serial_drivers bind to | ||
401 | * | 400 | * |
402 | * Helper macro for USB serial drivers which do not do anything special | 401 | * Helper macro for USB serial drivers which do not do anything special |
403 | * in module init/exit. This eliminates a lot of boilerplate. Each | 402 | * in module init/exit. This eliminates a lot of boilerplate. Each |
@@ -405,9 +404,21 @@ do { \ | |||
405 | * module_init() and module_exit() | 404 | * module_init() and module_exit() |
406 | * | 405 | * |
407 | */ | 406 | */ |
408 | #define module_usb_serial_driver(__usb_driver, __serial_drivers) \ | 407 | #define usb_serial_module_driver(__name, __serial_drivers, __ids) \ |
409 | module_driver(__usb_driver, usb_serial_register_drivers, \ | 408 | static int __init usb_serial_module_init(void) \ |
410 | usb_serial_deregister_drivers, __serial_drivers) | 409 | { \ |
410 | return usb_serial_register_drivers(__serial_drivers, \ | ||
411 | __name, __ids); \ | ||
412 | } \ | ||
413 | module_init(usb_serial_module_init); \ | ||
414 | static void __exit usb_serial_module_exit(void) \ | ||
415 | { \ | ||
416 | usb_serial_deregister_drivers(__serial_drivers); \ | ||
417 | } \ | ||
418 | module_exit(usb_serial_module_exit); | ||
419 | |||
420 | #define module_usb_serial_driver(__serial_drivers, __ids) \ | ||
421 | usb_serial_module_driver(KBUILD_MODNAME, __serial_drivers, __ids) | ||
411 | 422 | ||
412 | #endif /* __LINUX_USB_SERIAL_H */ | 423 | #endif /* __LINUX_USB_SERIAL_H */ |
413 | 424 | ||