diff options
Diffstat (limited to 'include/linux/usb.h')
| -rw-r--r-- | include/linux/usb.h | 39 |
1 files changed, 32 insertions, 7 deletions
diff --git a/include/linux/usb.h b/include/linux/usb.h index aab5b1b720..b5c226a87e 100644 --- a/include/linux/usb.h +++ b/include/linux/usb.h | |||
| @@ -2,7 +2,7 @@ | |||
| 2 | #define __LINUX_USB_H | 2 | #define __LINUX_USB_H |
| 3 | 3 | ||
| 4 | #include <linux/mod_devicetable.h> | 4 | #include <linux/mod_devicetable.h> |
| 5 | #include <linux/usb_ch9.h> | 5 | #include <linux/usb/ch9.h> |
| 6 | 6 | ||
| 7 | #define USB_MAJOR 180 | 7 | #define USB_MAJOR 180 |
| 8 | #define USB_DEVICE_MAJOR 189 | 8 | #define USB_DEVICE_MAJOR 189 |
| @@ -107,7 +107,8 @@ enum usb_interface_condition { | |||
| 107 | * @needs_remote_wakeup: flag set when the driver requires remote-wakeup | 107 | * @needs_remote_wakeup: flag set when the driver requires remote-wakeup |
| 108 | * capability during autosuspend. | 108 | * capability during autosuspend. |
| 109 | * @dev: driver model's view of this device | 109 | * @dev: driver model's view of this device |
| 110 | * @class_dev: driver model's class view of this device. | 110 | * @usb_dev: if an interface is bound to the USB major, this will point |
| 111 | * to the sysfs representation for that device. | ||
| 111 | * @pm_usage_cnt: PM usage counter for this interface; autosuspend is not | 112 | * @pm_usage_cnt: PM usage counter for this interface; autosuspend is not |
| 112 | * allowed unless the counter is 0. | 113 | * allowed unless the counter is 0. |
| 113 | * | 114 | * |
| @@ -152,7 +153,7 @@ struct usb_interface { | |||
| 152 | unsigned needs_remote_wakeup:1; /* driver requires remote wakeup */ | 153 | unsigned needs_remote_wakeup:1; /* driver requires remote wakeup */ |
| 153 | 154 | ||
| 154 | struct device dev; /* interface specific device info */ | 155 | struct device dev; /* interface specific device info */ |
| 155 | struct class_device *class_dev; | 156 | struct device *usb_dev; /* pointer to the usb class's device, if any */ |
| 156 | int pm_usage_cnt; /* usage counter for autosuspend */ | 157 | int pm_usage_cnt; /* usage counter for autosuspend */ |
| 157 | }; | 158 | }; |
| 158 | #define to_usb_interface(d) container_of(d, struct usb_interface, dev) | 159 | #define to_usb_interface(d) container_of(d, struct usb_interface, dev) |
| @@ -372,7 +373,7 @@ struct usb_device { | |||
| 372 | char *serial; /* iSerialNumber string, if present */ | 373 | char *serial; /* iSerialNumber string, if present */ |
| 373 | 374 | ||
| 374 | struct list_head filelist; | 375 | struct list_head filelist; |
| 375 | struct class_device *class_dev; | 376 | struct device *usbfs_dev; |
| 376 | struct dentry *usbfs_dentry; /* usbfs dentry entry for the device */ | 377 | struct dentry *usbfs_dentry; /* usbfs dentry entry for the device */ |
| 377 | 378 | ||
| 378 | /* | 379 | /* |
| @@ -475,6 +476,8 @@ extern void usb_driver_release_interface(struct usb_driver *driver, | |||
| 475 | struct usb_interface *iface); | 476 | struct usb_interface *iface); |
| 476 | 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, |
| 477 | 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); | ||
| 478 | 481 | ||
| 479 | extern struct usb_interface *usb_find_interface(struct usb_driver *drv, | 482 | extern struct usb_interface *usb_find_interface(struct usb_driver *drv, |
| 480 | int minor); | 483 | int minor); |
| @@ -554,6 +557,18 @@ static inline int usb_endpoint_xfer_bulk(const struct usb_endpoint_descriptor *e | |||
| 554 | } | 557 | } |
| 555 | 558 | ||
| 556 | /** | 559 | /** |
| 560 | * usb_endpoint_xfer_control - check if the endpoint has control transfer type | ||
| 561 | * @epd: endpoint to be checked | ||
| 562 | * | ||
| 563 | * Returns true if the endpoint is of type control, otherwise it returns false. | ||
| 564 | */ | ||
| 565 | static inline int usb_endpoint_xfer_control(const struct usb_endpoint_descriptor *epd) | ||
| 566 | { | ||
| 567 | return ((epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == | ||
| 568 | USB_ENDPOINT_XFER_CONTROL); | ||
| 569 | } | ||
| 570 | |||
| 571 | /** | ||
| 557 | * usb_endpoint_xfer_int - check if the endpoint has interrupt transfer type | 572 | * usb_endpoint_xfer_int - check if the endpoint has interrupt transfer type |
| 558 | * @epd: endpoint to be checked | 573 | * @epd: endpoint to be checked |
| 559 | * | 574 | * |
| @@ -723,11 +738,21 @@ static inline int usb_endpoint_is_isoc_out(const struct usb_endpoint_descriptor | |||
| 723 | 738 | ||
| 724 | /* ----------------------------------------------------------------------- */ | 739 | /* ----------------------------------------------------------------------- */ |
| 725 | 740 | ||
| 741 | /* Stuff for dynamic usb ids */ | ||
| 726 | struct usb_dynids { | 742 | struct usb_dynids { |
| 727 | spinlock_t lock; | 743 | spinlock_t lock; |
| 728 | struct list_head list; | 744 | struct list_head list; |
| 729 | }; | 745 | }; |
| 730 | 746 | ||
| 747 | struct usb_dynid { | ||
| 748 | struct list_head node; | ||
| 749 | struct usb_device_id id; | ||
| 750 | }; | ||
| 751 | |||
| 752 | extern ssize_t usb_store_new_id(struct usb_dynids *dynids, | ||
| 753 | struct device_driver *driver, | ||
| 754 | const char *buf, size_t count); | ||
| 755 | |||
| 731 | /** | 756 | /** |
| 732 | * struct usbdrv_wrap - wrapper for driver-model structure | 757 | * struct usbdrv_wrap - wrapper for driver-model structure |
| 733 | * @driver: The driver-model core driver structure. | 758 | * @driver: The driver-model core driver structure. |
| @@ -868,10 +893,11 @@ struct usb_class_driver { | |||
| 868 | * use these in module_init()/module_exit() | 893 | * use these in module_init()/module_exit() |
| 869 | * and don't forget MODULE_DEVICE_TABLE(usb, ...) | 894 | * and don't forget MODULE_DEVICE_TABLE(usb, ...) |
| 870 | */ | 895 | */ |
| 871 | extern int usb_register_driver(struct usb_driver *, struct module *); | 896 | extern int usb_register_driver(struct usb_driver *, struct module *, |
| 897 | const char *); | ||
| 872 | static inline int usb_register(struct usb_driver *driver) | 898 | static inline int usb_register(struct usb_driver *driver) |
| 873 | { | 899 | { |
| 874 | return usb_register_driver(driver, THIS_MODULE); | 900 | return usb_register_driver(driver, THIS_MODULE, KBUILD_MODNAME); |
| 875 | } | 901 | } |
| 876 | extern void usb_deregister(struct usb_driver *); | 902 | extern void usb_deregister(struct usb_driver *); |
| 877 | 903 | ||
| @@ -1085,7 +1111,6 @@ struct urb | |||
| 1085 | struct kref kref; /* reference count of the URB */ | 1111 | struct kref kref; /* reference count of the URB */ |
| 1086 | spinlock_t lock; /* lock for the URB */ | 1112 | spinlock_t lock; /* lock for the URB */ |
| 1087 | void *hcpriv; /* private data for host controller */ | 1113 | void *hcpriv; /* private data for host controller */ |
| 1088 | int bandwidth; /* bandwidth for INT/ISO request */ | ||
| 1089 | atomic_t use_count; /* concurrent submissions counter */ | 1114 | atomic_t use_count; /* concurrent submissions counter */ |
| 1090 | u8 reject; /* submissions will fail */ | 1115 | u8 reject; /* submissions will fail */ |
| 1091 | 1116 | ||
