Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6: (70 commits) USB: remove duplicate device id from zc0301 USB: remove duplicate device id from usb_storage USB: remove duplicate device id from keyspan USB: remove duplicate device id from ftdi_sio USB: remove duplicate device id from visor USB: a bit more coding style cleanup usbcore: trivial whitespace fixes usb-storage: use first bulk endpoints, not last EHCI: fix interrupt-driven remote wakeup USB: switch ehci-hcd to new polling scheme USB: autosuspend for usb printer driver USB Input: Added kernel module to support all GTCO CalComp USB InterWrite School products USB: Sierra Wireless auto set D0 USB: usb ethernet gadget recognizes HUSB2DEV USB: list atmel husb2_udc gadget controller USB: gadgetfs AIO tweaks USB: gadgetfs behaves better on userspace init bug USB: gadgetfs race fix USB: gadgetfs simplifications USB: gadgetfs cleanups ...
This commit is contained in:
@ -2,7 +2,7 @@
|
||||
#define __LINUX_USB_H
|
||||
|
||||
#include <linux/mod_devicetable.h>
|
||||
#include <linux/usb_ch9.h>
|
||||
#include <linux/usb/ch9.h>
|
||||
|
||||
#define USB_MAJOR 180
|
||||
#define USB_DEVICE_MAJOR 189
|
||||
@ -107,7 +107,8 @@ enum usb_interface_condition {
|
||||
* @needs_remote_wakeup: flag set when the driver requires remote-wakeup
|
||||
* capability during autosuspend.
|
||||
* @dev: driver model's view of this device
|
||||
* @class_dev: driver model's class view of this device.
|
||||
* @usb_dev: if an interface is bound to the USB major, this will point
|
||||
* to the sysfs representation for that device.
|
||||
* @pm_usage_cnt: PM usage counter for this interface; autosuspend is not
|
||||
* allowed unless the counter is 0.
|
||||
*
|
||||
@ -152,7 +153,7 @@ struct usb_interface {
|
||||
unsigned needs_remote_wakeup:1; /* driver requires remote wakeup */
|
||||
|
||||
struct device dev; /* interface specific device info */
|
||||
struct class_device *class_dev;
|
||||
struct device *usb_dev; /* pointer to the usb class's device, if any */
|
||||
int pm_usage_cnt; /* usage counter for autosuspend */
|
||||
};
|
||||
#define to_usb_interface(d) container_of(d, struct usb_interface, dev)
|
||||
@ -372,7 +373,7 @@ struct usb_device {
|
||||
char *serial; /* iSerialNumber string, if present */
|
||||
|
||||
struct list_head filelist;
|
||||
struct class_device *class_dev;
|
||||
struct device *usbfs_dev;
|
||||
struct dentry *usbfs_dentry; /* usbfs dentry entry for the device */
|
||||
|
||||
/*
|
||||
@ -475,6 +476,8 @@ extern void usb_driver_release_interface(struct usb_driver *driver,
|
||||
struct usb_interface *iface);
|
||||
const struct usb_device_id *usb_match_id(struct usb_interface *interface,
|
||||
const struct usb_device_id *id);
|
||||
extern int usb_match_one_id(struct usb_interface *interface,
|
||||
const struct usb_device_id *id);
|
||||
|
||||
extern struct usb_interface *usb_find_interface(struct usb_driver *drv,
|
||||
int minor);
|
||||
@ -553,6 +556,18 @@ static inline int usb_endpoint_xfer_bulk(const struct usb_endpoint_descriptor *e
|
||||
USB_ENDPOINT_XFER_BULK);
|
||||
}
|
||||
|
||||
/**
|
||||
* usb_endpoint_xfer_control - check if the endpoint has control transfer type
|
||||
* @epd: endpoint to be checked
|
||||
*
|
||||
* Returns true if the endpoint is of type control, otherwise it returns false.
|
||||
*/
|
||||
static inline int usb_endpoint_xfer_control(const struct usb_endpoint_descriptor *epd)
|
||||
{
|
||||
return ((epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) ==
|
||||
USB_ENDPOINT_XFER_CONTROL);
|
||||
}
|
||||
|
||||
/**
|
||||
* usb_endpoint_xfer_int - check if the endpoint has interrupt transfer type
|
||||
* @epd: endpoint to be checked
|
||||
@ -723,11 +738,21 @@ static inline int usb_endpoint_is_isoc_out(const struct usb_endpoint_descriptor
|
||||
|
||||
/* ----------------------------------------------------------------------- */
|
||||
|
||||
/* Stuff for dynamic usb ids */
|
||||
struct usb_dynids {
|
||||
spinlock_t lock;
|
||||
struct list_head list;
|
||||
};
|
||||
|
||||
struct usb_dynid {
|
||||
struct list_head node;
|
||||
struct usb_device_id id;
|
||||
};
|
||||
|
||||
extern ssize_t usb_store_new_id(struct usb_dynids *dynids,
|
||||
struct device_driver *driver,
|
||||
const char *buf, size_t count);
|
||||
|
||||
/**
|
||||
* struct usbdrv_wrap - wrapper for driver-model structure
|
||||
* @driver: The driver-model core driver structure.
|
||||
@ -1086,7 +1111,6 @@ struct urb
|
||||
struct kref kref; /* reference count of the URB */
|
||||
spinlock_t lock; /* lock for the URB */
|
||||
void *hcpriv; /* private data for host controller */
|
||||
int bandwidth; /* bandwidth for INT/ISO request */
|
||||
atomic_t use_count; /* concurrent submissions counter */
|
||||
u8 reject; /* submissions will fail */
|
||||
|
||||
|
Reference in New Issue
Block a user