Commit 045cac6b authored by Alan Stern's avatar Alan Stern Committed by Greg Kroah-Hartman

USB: use sysfs_merge_group for power attributes

This patch (as1426) makes use of the new sysfs_merge_group() and
sysfs_unmerge_group() routines to simplify the handling of power
attributes for USB devices.
Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 63defa73
...@@ -233,8 +233,6 @@ static DEVICE_ATTR(urbnum, S_IRUGO, show_urbnum, NULL); ...@@ -233,8 +233,6 @@ static DEVICE_ATTR(urbnum, S_IRUGO, show_urbnum, NULL);
#ifdef CONFIG_PM #ifdef CONFIG_PM
static const char power_group[] = "power";
static ssize_t static ssize_t
show_persist(struct device *dev, struct device_attribute *attr, char *buf) show_persist(struct device *dev, struct device_attribute *attr, char *buf)
{ {
...@@ -278,7 +276,7 @@ static int add_persist_attributes(struct device *dev) ...@@ -278,7 +276,7 @@ static int add_persist_attributes(struct device *dev)
if (udev->descriptor.bDeviceClass != USB_CLASS_HUB) if (udev->descriptor.bDeviceClass != USB_CLASS_HUB)
rc = sysfs_add_file_to_group(&dev->kobj, rc = sysfs_add_file_to_group(&dev->kobj,
&dev_attr_persist.attr, &dev_attr_persist.attr,
power_group); power_group_name);
} }
return rc; return rc;
} }
...@@ -287,7 +285,7 @@ static void remove_persist_attributes(struct device *dev) ...@@ -287,7 +285,7 @@ static void remove_persist_attributes(struct device *dev)
{ {
sysfs_remove_file_from_group(&dev->kobj, sysfs_remove_file_from_group(&dev->kobj,
&dev_attr_persist.attr, &dev_attr_persist.attr,
power_group); power_group_name);
} }
#else #else
...@@ -438,44 +436,30 @@ set_level(struct device *dev, struct device_attribute *attr, ...@@ -438,44 +436,30 @@ set_level(struct device *dev, struct device_attribute *attr,
static DEVICE_ATTR(level, S_IRUGO | S_IWUSR, show_level, set_level); static DEVICE_ATTR(level, S_IRUGO | S_IWUSR, show_level, set_level);
static struct attribute *power_attrs[] = {
&dev_attr_autosuspend.attr,
&dev_attr_level.attr,
&dev_attr_connected_duration.attr,
&dev_attr_active_duration.attr,
NULL,
};
static struct attribute_group power_attr_group = {
.name = power_group_name,
.attrs = power_attrs,
};
static int add_power_attributes(struct device *dev) static int add_power_attributes(struct device *dev)
{ {
int rc = 0; int rc = 0;
if (is_usb_device(dev)) { if (is_usb_device(dev))
rc = sysfs_add_file_to_group(&dev->kobj, rc = sysfs_merge_group(&dev->kobj, &power_attr_group);
&dev_attr_autosuspend.attr,
power_group);
if (rc == 0)
rc = sysfs_add_file_to_group(&dev->kobj,
&dev_attr_level.attr,
power_group);
if (rc == 0)
rc = sysfs_add_file_to_group(&dev->kobj,
&dev_attr_connected_duration.attr,
power_group);
if (rc == 0)
rc = sysfs_add_file_to_group(&dev->kobj,
&dev_attr_active_duration.attr,
power_group);
}
return rc; return rc;
} }
static void remove_power_attributes(struct device *dev) static void remove_power_attributes(struct device *dev)
{ {
sysfs_remove_file_from_group(&dev->kobj, sysfs_unmerge_group(&dev->kobj, &power_attr_group);
&dev_attr_active_duration.attr,
power_group);
sysfs_remove_file_from_group(&dev->kobj,
&dev_attr_connected_duration.attr,
power_group);
sysfs_remove_file_from_group(&dev->kobj,
&dev_attr_level.attr,
power_group);
sysfs_remove_file_from_group(&dev->kobj,
&dev_attr_autosuspend.attr,
power_group);
} }
#else #else
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment