diff options
Diffstat (limited to 'include/linux/usb.h')
| -rw-r--r-- | include/linux/usb.h | 28 | 
1 files changed, 27 insertions, 1 deletions
diff --git a/include/linux/usb.h b/include/linux/usb.h index d3d0c1374334..27a4e16d2bf1 100644 --- a/include/linux/usb.h +++ b/include/linux/usb.h @@ -935,7 +935,7 @@ extern struct bus_type usb_bus_type;   */  struct usb_class_driver {  	char *name; -	char *(*devnode)(struct device *dev, mode_t *mode); +	char *(*devnode)(struct device *dev, umode_t *mode);  	const struct file_operations *fops;  	int minor_base;  }; @@ -953,6 +953,18 @@ extern int usb_register_driver(struct usb_driver *, struct module *,  extern void usb_deregister(struct usb_driver *); +/** + * module_usb_driver() - Helper macro for registering a USB driver + * @__usb_driver: usb_driver struct + * + * Helper macro for USB drivers which do not do anything special in module + * init/exit. This eliminates a lot of boilerplate. Each module may only + * use this macro once, and calling it replaces module_init() and module_exit() + */ +#define module_usb_driver(__usb_driver) \ +	module_driver(__usb_driver, usb_register, \ +		       usb_deregister) +  extern int usb_register_device_driver(struct usb_device_driver *,  			struct module *);  extern void usb_deregister_device_driver(struct usb_device_driver *); @@ -1221,6 +1233,7 @@ struct urb {  	void *transfer_buffer;		/* (in) associated data buffer */  	dma_addr_t transfer_dma;	/* (in) dma addr for transfer_buffer */  	struct scatterlist *sg;		/* (in) scatter gather buffer list */ +	int num_mapped_sgs;		/* (internal) mapped sg entries */  	int num_sgs;			/* (in) number of entries in the sg list */  	u32 transfer_buffer_length;	/* (in) data buffer length */  	u32 actual_length;		/* (return) actual transfer length */ @@ -1598,6 +1611,19 @@ usb_maxpacket(struct usb_device *udev, int pipe, int is_out)  /* ----------------------------------------------------------------------- */ +/* translate USB error codes to codes user space understands */ +static inline int usb_translate_errors(int error_code) +{ +	switch (error_code) { +	case 0: +	case -ENOMEM: +	case -ENODEV: +		return error_code; +	default: +		return -EIO; +	} +} +  /* Events from the usb core */  #define USB_DEVICE_ADD		0x0001  #define USB_DEVICE_REMOVE	0x0002  | 
