diff options
Diffstat (limited to 'drivers/usb/core/endpoint.c')
| -rw-r--r-- | drivers/usb/core/endpoint.c | 51 | 
1 files changed, 25 insertions, 26 deletions
diff --git a/drivers/usb/core/endpoint.c b/drivers/usb/core/endpoint.c index 9da25056302..39a24021fe4 100644 --- a/drivers/usb/core/endpoint.c +++ b/drivers/usb/core/endpoint.c @@ -12,7 +12,6 @@  #include <linux/kernel.h>  #include <linux/spinlock.h>  #include <linux/slab.h> -#include <linux/idr.h>  #include <linux/usb.h>  #include "usb.h" @@ -24,10 +23,6 @@ struct ep_device {  #define to_ep_device(_dev) \  	container_of(_dev, struct ep_device, dev) -struct device_type usb_ep_device_type = { -	.name =		"usb_endpoint", -}; -  struct ep_attribute {  	struct attribute attr;  	ssize_t (*show)(struct usb_device *, @@ -37,31 +32,31 @@ struct ep_attribute {  	container_of(_attr, struct ep_attribute, attr)  #define usb_ep_attr(field, format_string)			\ -static ssize_t show_ep_##field(struct device *dev,		\ +static ssize_t field##_show(struct device *dev,			\  			       struct device_attribute *attr,	\  			       char *buf)			\  {								\  	struct ep_device *ep = to_ep_device(dev);		\  	return sprintf(buf, format_string, ep->desc->field);	\  }								\ -static DEVICE_ATTR(field, S_IRUGO, show_ep_##field, NULL); +static DEVICE_ATTR_RO(field) -usb_ep_attr(bLength, "%02x\n") -usb_ep_attr(bEndpointAddress, "%02x\n") -usb_ep_attr(bmAttributes, "%02x\n") -usb_ep_attr(bInterval, "%02x\n") +usb_ep_attr(bLength, "%02x\n"); +usb_ep_attr(bEndpointAddress, "%02x\n"); +usb_ep_attr(bmAttributes, "%02x\n"); +usb_ep_attr(bInterval, "%02x\n"); -static ssize_t show_ep_wMaxPacketSize(struct device *dev, -				      struct device_attribute *attr, char *buf) +static ssize_t wMaxPacketSize_show(struct device *dev, +				   struct device_attribute *attr, char *buf)  {  	struct ep_device *ep = to_ep_device(dev);  	return sprintf(buf, "%04x\n", -			le16_to_cpu(ep->desc->wMaxPacketSize) & 0x07ff); +		        usb_endpoint_maxp(ep->desc) & 0x07ff);  } -static DEVICE_ATTR(wMaxPacketSize, S_IRUGO, show_ep_wMaxPacketSize, NULL); +static DEVICE_ATTR_RO(wMaxPacketSize); -static ssize_t show_ep_type(struct device *dev, struct device_attribute *attr, -			    char *buf) +static ssize_t type_show(struct device *dev, struct device_attribute *attr, +			 char *buf)  {  	struct ep_device *ep = to_ep_device(dev);  	char *type = "unknown"; @@ -82,10 +77,10 @@ static ssize_t show_ep_type(struct device *dev, struct device_attribute *attr,  	}  	return sprintf(buf, "%s\n", type);  } -static DEVICE_ATTR(type, S_IRUGO, show_ep_type, NULL); +static DEVICE_ATTR_RO(type); -static ssize_t show_ep_interval(struct device *dev, -				struct device_attribute *attr, char *buf) +static ssize_t interval_show(struct device *dev, struct device_attribute *attr, +			     char *buf)  {  	struct ep_device *ep = to_ep_device(dev);  	char unit; @@ -128,10 +123,10 @@ static ssize_t show_ep_interval(struct device *dev,  	return sprintf(buf, "%d%cs\n", interval, unit);  } -static DEVICE_ATTR(interval, S_IRUGO, show_ep_interval, NULL); +static DEVICE_ATTR_RO(interval); -static ssize_t show_ep_direction(struct device *dev, -				 struct device_attribute *attr, char *buf) +static ssize_t direction_show(struct device *dev, struct device_attribute *attr, +			      char *buf)  {  	struct ep_device *ep = to_ep_device(dev);  	char *direction; @@ -144,7 +139,7 @@ static ssize_t show_ep_direction(struct device *dev,  		direction = "out";  	return sprintf(buf, "%s\n", direction);  } -static DEVICE_ATTR(direction, S_IRUGO, show_ep_direction, NULL); +static DEVICE_ATTR_RO(direction);  static struct attribute *ep_dev_attrs[] = {  	&dev_attr_bLength.attr, @@ -172,6 +167,11 @@ static void ep_device_release(struct device *dev)  	kfree(ep_dev);  } +struct device_type usb_ep_device_type = { +	.name =		"usb_endpoint", +	.release = ep_device_release, +}; +  int usb_create_ep_devs(struct device *parent,  			struct usb_host_endpoint *endpoint,  			struct usb_device *udev) @@ -190,14 +190,13 @@ int usb_create_ep_devs(struct device *parent,  	ep_dev->dev.groups = ep_dev_groups;  	ep_dev->dev.type = &usb_ep_device_type;  	ep_dev->dev.parent = parent; -	ep_dev->dev.release = ep_device_release;  	dev_set_name(&ep_dev->dev, "ep_%02x", endpoint->desc.bEndpointAddress); -	device_enable_async_suspend(&ep_dev->dev);  	retval = device_register(&ep_dev->dev);  	if (retval)  		goto error_register; +	device_enable_async_suspend(&ep_dev->dev);  	endpoint->ep_dev = ep_dev;  	return retval;  | 
