diff options
author | Greg Kroah-Hartman <gregkh@suse.de> | 2006-12-17 15:50:23 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2007-02-07 18:44:33 -0500 |
commit | 93bacefc4cc0b53e1cb6a336d43847154fdf6886 (patch) | |
tree | 4a82a9d2693d1165c58602a0bf4a8e5c76c541ef /include/linux/usb.h | |
parent | 495a678fc62e850d15f860d39faee07ba0a8910c (diff) |
USB serial: add dynamic id support to usb-serial core
Thanks to Johannes Hölzl <johannes.hoelzl@gmx.de> for fixing a few
things and getting it all working properly.
This adds support for dynamic usb ids to the usb serial core. The file
"new_id" will show up under the usb serial driver, not the usb driver
associated with the usb-serial driver (yeah, it can be a bit confusing
at first glance...)
This patch also modifies the USB core to allow the usb-serial core to
reuse much of the dynamic id logic.
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: Johannes Hölzl <johannes.hoelzl@gmx.de>
Diffstat (limited to 'include/linux/usb.h')
-rw-r--r-- | include/linux/usb.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/include/linux/usb.h b/include/linux/usb.h index f3b21636c9df..3cb9285df2d1 100644 --- a/include/linux/usb.h +++ b/include/linux/usb.h | |||
@@ -476,6 +476,8 @@ extern void usb_driver_release_interface(struct usb_driver *driver, | |||
476 | struct usb_interface *iface); | 476 | struct usb_interface *iface); |
477 | const struct usb_device_id *usb_match_id(struct usb_interface *interface, | 477 | const struct usb_device_id *usb_match_id(struct usb_interface *interface, |
478 | const struct usb_device_id *id); | 478 | const struct usb_device_id *id); |
479 | extern int usb_match_one_id(struct usb_interface *interface, | ||
480 | const struct usb_device_id *id); | ||
479 | 481 | ||
480 | extern struct usb_interface *usb_find_interface(struct usb_driver *drv, | 482 | extern struct usb_interface *usb_find_interface(struct usb_driver *drv, |
481 | int minor); | 483 | int minor); |
@@ -724,11 +726,21 @@ static inline int usb_endpoint_is_isoc_out(const struct usb_endpoint_descriptor | |||
724 | 726 | ||
725 | /* ----------------------------------------------------------------------- */ | 727 | /* ----------------------------------------------------------------------- */ |
726 | 728 | ||
729 | /* Stuff for dynamic usb ids */ | ||
727 | struct usb_dynids { | 730 | struct usb_dynids { |
728 | spinlock_t lock; | 731 | spinlock_t lock; |
729 | struct list_head list; | 732 | struct list_head list; |
730 | }; | 733 | }; |
731 | 734 | ||
735 | struct usb_dynid { | ||
736 | struct list_head node; | ||
737 | struct usb_device_id id; | ||
738 | }; | ||
739 | |||
740 | extern ssize_t usb_store_new_id(struct usb_dynids *dynids, | ||
741 | struct device_driver *driver, | ||
742 | const char *buf, size_t count); | ||
743 | |||
732 | /** | 744 | /** |
733 | * struct usbdrv_wrap - wrapper for driver-model structure | 745 | * struct usbdrv_wrap - wrapper for driver-model structure |
734 | * @driver: The driver-model core driver structure. | 746 | * @driver: The driver-model core driver structure. |