Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 292208
b: refs/heads/master
c: 7950133
h: refs/heads/master
v: v3
  • Loading branch information
Guenter Roeck authored and Guenter Roeck committed Mar 19, 2012
1 parent 0e0766a commit b2f0370
Show file tree
Hide file tree
Showing 2 changed files with 73 additions and 69 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: aff6e00ee142d04ffeb8d8dcd3b2c0b8f789c354
refs/heads/master: 795013333b613ba79b7df57515c9afacac6f167d
140 changes: 72 additions & 68 deletions trunk/drivers/hwmon/w83781d.c
Original file line number Diff line number Diff line change
Expand Up @@ -975,23 +975,58 @@ static const struct attribute_group w83781d_group = {
.attrs = w83781d_attributes,
};

static struct attribute *w83781d_attributes_opt[] = {
static struct attribute *w83781d_attributes_in1[] = {
IN_UNIT_ATTRS(1),
NULL
};
static const struct attribute_group w83781d_group_in1 = {
.attrs = w83781d_attributes_in1,
};

static struct attribute *w83781d_attributes_in78[] = {
IN_UNIT_ATTRS(7),
IN_UNIT_ATTRS(8),
NULL
};
static const struct attribute_group w83781d_group_in78 = {
.attrs = w83781d_attributes_in78,
};

static struct attribute *w83781d_attributes_temp3[] = {
TEMP_UNIT_ATTRS(3),
NULL
};
static const struct attribute_group w83781d_group_temp3 = {
.attrs = w83781d_attributes_temp3,
};

static struct attribute *w83781d_attributes_pwm12[] = {
&sensor_dev_attr_pwm1.dev_attr.attr,
&sensor_dev_attr_pwm2.dev_attr.attr,
&dev_attr_pwm2_enable.attr,
NULL
};
static const struct attribute_group w83781d_group_pwm12 = {
.attrs = w83781d_attributes_pwm12,
};

static struct attribute *w83781d_attributes_pwm34[] = {
&sensor_dev_attr_pwm3.dev_attr.attr,
&sensor_dev_attr_pwm4.dev_attr.attr,
&dev_attr_pwm2_enable.attr,
NULL
};
static const struct attribute_group w83781d_group_pwm34 = {
.attrs = w83781d_attributes_pwm34,
};

static struct attribute *w83781d_attributes_other[] = {
&sensor_dev_attr_temp1_type.dev_attr.attr,
&sensor_dev_attr_temp2_type.dev_attr.attr,
&sensor_dev_attr_temp3_type.dev_attr.attr,
NULL
};
static const struct attribute_group w83781d_group_opt = {
.attrs = w83781d_attributes_opt,
static const struct attribute_group w83781d_group_other = {
.attrs = w83781d_attributes_other,
};

/* No clean up is done on error, it's up to the caller */
Expand All @@ -1005,52 +1040,18 @@ w83781d_create_files(struct device *dev, int kind, int is_isa)
return err;

if (kind != w83783s) {
if ((err = device_create_file(dev,
&sensor_dev_attr_in1_input.dev_attr))
|| (err = device_create_file(dev,
&sensor_dev_attr_in1_min.dev_attr))
|| (err = device_create_file(dev,
&sensor_dev_attr_in1_max.dev_attr))
|| (err = device_create_file(dev,
&sensor_dev_attr_in1_alarm.dev_attr))
|| (err = device_create_file(dev,
&sensor_dev_attr_in1_beep.dev_attr)))
err = sysfs_create_group(&dev->kobj, &w83781d_group_in1);
if (err)
return err;
}
if (kind != as99127f && kind != w83781d && kind != w83783s) {
if ((err = device_create_file(dev,
&sensor_dev_attr_in7_input.dev_attr))
|| (err = device_create_file(dev,
&sensor_dev_attr_in7_min.dev_attr))
|| (err = device_create_file(dev,
&sensor_dev_attr_in7_max.dev_attr))
|| (err = device_create_file(dev,
&sensor_dev_attr_in7_alarm.dev_attr))
|| (err = device_create_file(dev,
&sensor_dev_attr_in7_beep.dev_attr))
|| (err = device_create_file(dev,
&sensor_dev_attr_in8_input.dev_attr))
|| (err = device_create_file(dev,
&sensor_dev_attr_in8_min.dev_attr))
|| (err = device_create_file(dev,
&sensor_dev_attr_in8_max.dev_attr))
|| (err = device_create_file(dev,
&sensor_dev_attr_in8_alarm.dev_attr))
|| (err = device_create_file(dev,
&sensor_dev_attr_in8_beep.dev_attr)))
err = sysfs_create_group(&dev->kobj, &w83781d_group_in78);
if (err)
return err;
}
if (kind != w83783s) {
if ((err = device_create_file(dev,
&sensor_dev_attr_temp3_input.dev_attr))
|| (err = device_create_file(dev,
&sensor_dev_attr_temp3_max.dev_attr))
|| (err = device_create_file(dev,
&sensor_dev_attr_temp3_max_hyst.dev_attr))
|| (err = device_create_file(dev,
&sensor_dev_attr_temp3_alarm.dev_attr))
|| (err = device_create_file(dev,
&sensor_dev_attr_temp3_beep.dev_attr)))
err = sysfs_create_group(&dev->kobj, &w83781d_group_temp3);
if (err)
return err;

if (kind != w83781d) {
Expand All @@ -1063,30 +1064,28 @@ w83781d_create_files(struct device *dev, int kind, int is_isa)
}

if (kind != w83781d && kind != as99127f) {
if ((err = device_create_file(dev,
&sensor_dev_attr_pwm1.dev_attr))
|| (err = device_create_file(dev,
&sensor_dev_attr_pwm2.dev_attr))
|| (err = device_create_file(dev, &dev_attr_pwm2_enable)))
err = sysfs_create_group(&dev->kobj, &w83781d_group_pwm12);
if (err)
return err;
}
if (kind == w83782d && !is_isa) {
if ((err = device_create_file(dev,
&sensor_dev_attr_pwm3.dev_attr))
|| (err = device_create_file(dev,
&sensor_dev_attr_pwm4.dev_attr)))
err = sysfs_create_group(&dev->kobj, &w83781d_group_pwm34);
if (err)
return err;
}

if (kind != as99127f && kind != w83781d) {
if ((err = device_create_file(dev,
&sensor_dev_attr_temp1_type.dev_attr))
|| (err = device_create_file(dev,
&sensor_dev_attr_temp2_type.dev_attr)))
err = device_create_file(dev,
&sensor_dev_attr_temp1_type.dev_attr);
if (err)
return err;
err = device_create_file(dev,
&sensor_dev_attr_temp2_type.dev_attr);
if (err)
return err;
if (kind != w83783s) {
err = device_create_file(dev,
&sensor_dev_attr_temp3_type.dev_attr);
&sensor_dev_attr_temp3_type.dev_attr);
if (err)
return err;
}
Expand Down Expand Up @@ -1196,6 +1195,17 @@ w83781d_detect(struct i2c_client *client, struct i2c_board_info *info)
return -ENODEV;
}

static void w83781d_remove_files(struct device *dev)
{
sysfs_remove_group(&dev->kobj, &w83781d_group);
sysfs_remove_group(&dev->kobj, &w83781d_group_in1);
sysfs_remove_group(&dev->kobj, &w83781d_group_in78);
sysfs_remove_group(&dev->kobj, &w83781d_group_temp3);
sysfs_remove_group(&dev->kobj, &w83781d_group_pwm12);
sysfs_remove_group(&dev->kobj, &w83781d_group_pwm34);
sysfs_remove_group(&dev->kobj, &w83781d_group_other);
}

static int
w83781d_probe(struct i2c_client *client, const struct i2c_device_id *id)
{
Expand Down Expand Up @@ -1238,9 +1248,7 @@ w83781d_probe(struct i2c_client *client, const struct i2c_device_id *id)
return 0;

ERROR4:
sysfs_remove_group(&dev->kobj, &w83781d_group);
sysfs_remove_group(&dev->kobj, &w83781d_group_opt);

w83781d_remove_files(dev);
if (data->lm75[0])
i2c_unregister_device(data->lm75[0]);
if (data->lm75[1])
Expand All @@ -1258,9 +1266,7 @@ w83781d_remove(struct i2c_client *client)
struct device *dev = &client->dev;

hwmon_device_unregister(data->hwmon_dev);

sysfs_remove_group(&dev->kobj, &w83781d_group);
sysfs_remove_group(&dev->kobj, &w83781d_group_opt);
w83781d_remove_files(dev);

if (data->lm75[0])
i2c_unregister_device(data->lm75[0]);
Expand Down Expand Up @@ -1821,8 +1827,7 @@ w83781d_isa_probe(struct platform_device *pdev)
return 0;

exit_remove_files:
sysfs_remove_group(&pdev->dev.kobj, &w83781d_group);
sysfs_remove_group(&pdev->dev.kobj, &w83781d_group_opt);
w83781d_remove_files(&pdev->dev);
device_remove_file(&pdev->dev, &dev_attr_name);
kfree(data);
exit_release_region:
Expand All @@ -1837,8 +1842,7 @@ w83781d_isa_remove(struct platform_device *pdev)
struct w83781d_data *data = platform_get_drvdata(pdev);

hwmon_device_unregister(data->hwmon_dev);
sysfs_remove_group(&pdev->dev.kobj, &w83781d_group);
sysfs_remove_group(&pdev->dev.kobj, &w83781d_group_opt);
w83781d_remove_files(&pdev->dev);
device_remove_file(&pdev->dev, &dev_attr_name);
release_region(data->isa_addr + W83781D_ADDR_REG_OFFSET, 2);
kfree(data);
Expand Down

0 comments on commit b2f0370

Please sign in to comment.