X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fusb%2Fcore%2Fsysfs.c;h=78c5ca2f1051a2eac7cdbbecd34cd7255431badc;hb=a9fdee76789476a10f923f9fb3c84993042da3ac;hp=bae974d587aedc89a3f9eba7c06492ccaca1c8a2;hpb=8d40237c730b8be87c1b80a5d96b9c603fefa829;p=linux-2.6.git diff --git a/drivers/usb/core/sysfs.c b/drivers/usb/core/sysfs.c index bae974d58..78c5ca2f1 100644 --- a/drivers/usb/core/sysfs.c +++ b/drivers/usb/core/sysfs.c @@ -27,13 +27,11 @@ static ssize_t show_##field (struct device *dev, char *buf) \ { \ struct usb_device *udev; \ - struct usb_host_config *actconfig; \ \ udev = to_usb_device (dev); \ - actconfig = udev->actconfig; \ - if (actconfig) \ + if (udev->actconfig) \ return sprintf (buf, format_string, \ - actconfig->desc.field * multiplier); \ + udev->actconfig->desc.field * multiplier); \ else \ return 0; \ } \ @@ -46,28 +44,6 @@ usb_actconfig_attr (bNumInterfaces, 1, "%2d\n") usb_actconfig_attr (bmAttributes, 1, "%2x\n") usb_actconfig_attr (bMaxPower, 2, "%3dmA\n") -#define usb_actconfig_str(name, field) \ -static ssize_t show_##name(struct device *dev, char *buf) \ -{ \ - struct usb_device *udev; \ - struct usb_host_config *actconfig; \ - int len; \ - \ - udev = to_usb_device (dev); \ - actconfig = udev->actconfig; \ - if (!actconfig) \ - return 0; \ - len = usb_string(udev, actconfig->desc.field, buf, PAGE_SIZE); \ - if (len < 0) \ - return 0; \ - buf[len] = '\n'; \ - buf[len+1] = 0; \ - return len+1; \ -} \ -static DEVICE_ATTR(name, S_IRUGO, show_##name, NULL); - -usb_actconfig_str (configuration, iConfiguration) - /* configuration value is always present, and r/w */ usb_actconfig_show(bConfigurationValue, 1, "%u\n"); @@ -79,9 +55,9 @@ set_bConfigurationValue (struct device *dev, const char *buf, size_t count) if (sscanf (buf, "%u", &config) != 1 || config > 255) return -EINVAL; - usb_lock_device(udev); + down(&udev->serialize); value = usb_set_configuration (udev, config); - usb_unlock_device(udev); + up(&udev->serialize); return (value < 0) ? value : count; } @@ -222,7 +198,6 @@ void usb_create_sysfs_dev_files (struct usb_device *udev) device_create_file (dev, &dev_attr_product); if (udev->descriptor.iSerialNumber) device_create_file (dev, &dev_attr_serial); - device_create_file (dev, &dev_attr_configuration); } void usb_remove_sysfs_dev_files (struct usb_device *udev) @@ -237,7 +212,6 @@ void usb_remove_sysfs_dev_files (struct usb_device *udev) device_remove_file(dev, &dev_attr_product); if (udev->descriptor.iSerialNumber) device_remove_file(dev, &dev_attr_serial); - device_remove_file (dev, &dev_attr_configuration); } /* Interface fields */ @@ -257,26 +231,7 @@ usb_intf_attr (bNumEndpoints, "%02x\n") usb_intf_attr (bInterfaceClass, "%02x\n") usb_intf_attr (bInterfaceSubClass, "%02x\n") usb_intf_attr (bInterfaceProtocol, "%02x\n") - -#define usb_intf_str(name, field) \ -static ssize_t show_##name(struct device *dev, char *buf) \ -{ \ - struct usb_interface *intf; \ - struct usb_device *udev; \ - int len; \ - \ - intf = to_usb_interface (dev); \ - udev = interface_to_usbdev (intf); \ - len = usb_string(udev, intf->cur_altsetting->desc.field, buf, PAGE_SIZE);\ - if (len < 0) \ - return 0; \ - buf[len] = '\n'; \ - buf[len+1] = 0; \ - return len+1; \ -} \ -static DEVICE_ATTR(name, S_IRUGO, show_##name, NULL); - -usb_intf_str (interface, iInterface); +usb_intf_attr (iInterface, "%02x\n") static struct attribute *intf_attrs[] = { &dev_attr_bInterfaceNumber.attr, @@ -285,6 +240,7 @@ static struct attribute *intf_attrs[] = { &dev_attr_bInterfaceClass.attr, &dev_attr_bInterfaceSubClass.attr, &dev_attr_bInterfaceProtocol.attr, + &dev_attr_iInterface.attr, NULL, }; static struct attribute_group intf_attr_grp = { @@ -294,17 +250,9 @@ static struct attribute_group intf_attr_grp = { void usb_create_sysfs_intf_files (struct usb_interface *intf) { sysfs_create_group(&intf->dev.kobj, &intf_attr_grp); - - if (intf->cur_altsetting->desc.iInterface) - device_create_file(&intf->dev, &dev_attr_interface); - } void usb_remove_sysfs_intf_files (struct usb_interface *intf) { sysfs_remove_group(&intf->dev.kobj, &intf_attr_grp); - - if (intf->cur_altsetting->desc.iInterface) - device_remove_file(&intf->dev, &dev_attr_interface); - }