diff options
author | Kyle McMartin <kyle@mcmartin.ca> | 2012-04-02 14:19:02 -0400 |
---|---|---|
committer | Guenter Roeck <guenter.roeck@ericsson.com> | 2012-05-20 19:41:48 -0700 |
commit | f49d6a7ed2406b0c9b1c134f2e9aa4426a5266f0 (patch) | |
tree | 60a788dfcd2242ef46dcb32f5d12a92872cfc2f3 /drivers/hwmon/acpi_power_meter.c | |
parent | 3c45f2c78db21f4676287df19c89343acf04e7ef (diff) | |
download | linux-f49d6a7ed2406b0c9b1c134f2e9aa4426a5266f0.tar.gz linux-f49d6a7ed2406b0c9b1c134f2e9aa4426a5266f0.tar.bz2 linux-f49d6a7ed2406b0c9b1c134f2e9aa4426a5266f0.zip |
acpi_power_meter: remove duplicate code between register_{ro,rw}_attrs
Key off the attr->set method being present to set the sysfs attribute
as writable.
Signed-off-by: Kyle McMartin <kyle@redhat.com>
Signed-off-by: Guenter Roeck <guenter.roeck@ericsson.com>
Diffstat (limited to 'drivers/hwmon/acpi_power_meter.c')
-rw-r--r-- | drivers/hwmon/acpi_power_meter.c | 59 |
1 files changed, 17 insertions, 42 deletions
diff --git a/drivers/hwmon/acpi_power_meter.c b/drivers/hwmon/acpi_power_meter.c index 11922c835860..954e21f4dd18 100644 --- a/drivers/hwmon/acpi_power_meter.c +++ b/drivers/hwmon/acpi_power_meter.c @@ -630,49 +630,24 @@ end: } /* Registration and deregistration */ -static int register_ro_attrs(struct acpi_power_meter_resource *resource, - struct sensor_template *ro) +static int register_attrs(struct acpi_power_meter_resource *resource, + struct sensor_template *attrs) { struct device *dev = &resource->acpi_dev->dev; struct sensor_device_attribute *sensors = &resource->sensors[resource->num_sensors]; int res = 0; - while (ro->label) { - sensors->dev_attr.attr.name = ro->label; + while (attrs->label) { + sensors->dev_attr.attr.name = attrs->label; sensors->dev_attr.attr.mode = S_IRUGO; - sensors->dev_attr.show = ro->show; - sensors->index = ro->index; + sensors->dev_attr.show = attrs->show; + sensors->index = attrs->index; - sysfs_attr_init(&sensors->dev_attr.attr); - res = device_create_file(dev, &sensors->dev_attr); - if (res) { - sensors->dev_attr.attr.name = NULL; - goto error; + if (attrs->set) { + sensors->dev_attr.attr.mode |= S_IWUSR; + sensors->dev_attr.store = attrs->set; } - sensors++; - resource->num_sensors++; - ro++; - } - -error: - return res; -} - -static int register_rw_attrs(struct acpi_power_meter_resource *resource, - struct sensor_template *rw) -{ - struct device *dev = &resource->acpi_dev->dev; - struct sensor_device_attribute *sensors = - &resource->sensors[resource->num_sensors]; - int res = 0; - - while (rw->label) { - sensors->dev_attr.attr.name = rw->label; - sensors->dev_attr.attr.mode = S_IRUGO | S_IWUSR; - sensors->dev_attr.show = rw->show; - sensors->dev_attr.store = rw->set; - sensors->index = rw->index; sysfs_attr_init(&sensors->dev_attr.attr); res = device_create_file(dev, &sensors->dev_attr); @@ -682,7 +657,7 @@ static int register_rw_attrs(struct acpi_power_meter_resource *resource, } sensors++; resource->num_sensors++; - rw++; + attrs++; } error: @@ -714,10 +689,10 @@ static int setup_attrs(struct acpi_power_meter_resource *resource) return res; if (resource->caps.flags & POWER_METER_CAN_MEASURE) { - res = register_ro_attrs(resource, meter_ro_attrs); + res = register_attrs(resource, meter_ro_attrs); if (res) goto error; - res = register_rw_attrs(resource, meter_rw_attrs); + res = register_attrs(resource, meter_rw_attrs); if (res) goto error; } @@ -730,27 +705,27 @@ static int setup_attrs(struct acpi_power_meter_resource *resource) } if (resource->caps.configurable_cap) { - res = register_rw_attrs(resource, rw_cap_attrs); + res = register_attrs(resource, rw_cap_attrs); if (res) goto error; } else { - res = register_ro_attrs(resource, ro_cap_attrs); + res = register_attrs(resource, ro_cap_attrs); if (res) goto error; } - res = register_ro_attrs(resource, misc_cap_attrs); + res = register_attrs(resource, misc_cap_attrs); if (res) goto error; } skip_unsafe_cap: if (resource->caps.flags & POWER_METER_CAN_TRIP) { - res = register_rw_attrs(resource, trip_attrs); + res = register_attrs(resource, trip_attrs); if (res) goto error; } - res = register_ro_attrs(resource, misc_attrs); + res = register_attrs(resource, misc_attrs); if (res) goto error; |