diff options
Diffstat (limited to 'drivers/usb/core/sysfs.c')
| -rw-r--r-- | drivers/usb/core/sysfs.c | 31 | 
1 files changed, 22 insertions, 9 deletions
| diff --git a/drivers/usb/core/sysfs.c b/drivers/usb/core/sysfs.c index 818e4a024d0d..3f81a3dc6867 100644 --- a/drivers/usb/core/sysfs.c +++ b/drivers/usb/core/sysfs.c @@ -17,7 +17,7 @@  #include "usb.h"  /* Active configuration fields */ -#define usb_actconfig_show(field, multiplier, format_string)		\ +#define usb_actconfig_show(field, format_string)			\  static ssize_t  show_##field(struct device *dev,			\  		struct device_attribute *attr, char *buf)		\  {									\ @@ -28,18 +28,31 @@ static ssize_t  show_##field(struct device *dev,			\  	actconfig = udev->actconfig;					\  	if (actconfig)							\  		return sprintf(buf, format_string,			\ -				actconfig->desc.field * multiplier);	\ +				actconfig->desc.field);			\  	else								\  		return 0;						\  }									\ -#define usb_actconfig_attr(field, multiplier, format_string)		\ -usb_actconfig_show(field, multiplier, format_string)			\ -static DEVICE_ATTR(field, S_IRUGO, show_##field, NULL); +#define usb_actconfig_attr(field, format_string)		\ +	usb_actconfig_show(field, format_string)		\ +	static DEVICE_ATTR(field, S_IRUGO, show_##field, NULL); + +usb_actconfig_attr(bNumInterfaces, "%2d\n") +usb_actconfig_attr(bmAttributes, "%2x\n") -usb_actconfig_attr(bNumInterfaces, 1, "%2d\n") -usb_actconfig_attr(bmAttributes, 1, "%2x\n") -usb_actconfig_attr(bMaxPower, 2, "%3dmA\n") +static ssize_t show_bMaxPower(struct device *dev, +		struct device_attribute *attr, char *buf) +{ +	struct usb_device *udev; +	struct usb_host_config *actconfig; + +	udev = to_usb_device(dev); +	actconfig = udev->actconfig; +	if (!actconfig) +		return 0; +	return sprintf(buf, "%dmA\n", usb_get_max_power(udev, actconfig)); +} +static DEVICE_ATTR(bMaxPower, S_IRUGO, show_bMaxPower, NULL);  static ssize_t show_configuration_string(struct device *dev,  		struct device_attribute *attr, char *buf) @@ -56,7 +69,7 @@ static ssize_t show_configuration_string(struct device *dev,  static DEVICE_ATTR(configuration, S_IRUGO, show_configuration_string, NULL);  /* configuration value is always present, and r/w */ -usb_actconfig_show(bConfigurationValue, 1, "%u\n"); +usb_actconfig_show(bConfigurationValue, "%u\n");  static ssize_t  set_bConfigurationValue(struct device *dev, struct device_attribute *attr, |