* [lm-sensors] [PATCH] hwmon: (adm1021) Convert to use devm_hwmon_device_register_with_groups
@ 2014-02-02 17:39 Guenter Roeck
2014-02-02 20:50 ` Jean Delvare
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Guenter Roeck @ 2014-02-02 17:39 UTC (permalink / raw)
To: lm-sensors
Simplify code, reduce code size, and attach hwmon attributes to
hwmon device.
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
---
drivers/hwmon/adm1021.c | 70 ++++++++++++++++-------------------------------
1 file changed, 23 insertions(+), 47 deletions(-)
diff --git a/drivers/hwmon/adm1021.c b/drivers/hwmon/adm1021.c
index 29dd9f7..f340ea2 100644
--- a/drivers/hwmon/adm1021.c
+++ b/drivers/hwmon/adm1021.c
@@ -79,9 +79,11 @@ enum chips {
/* Each client has this additional data */
struct adm1021_data {
- struct device *hwmon_dev;
+ struct i2c_client *client;
enum chips type;
+ const struct attribute_group *groups[3];
+
struct mutex update_lock;
char valid; /* !=0 if following fields are valid */
char low_power; /* !=0 if device in low power mode */
@@ -101,7 +103,6 @@ static int adm1021_probe(struct i2c_client *client,
static int adm1021_detect(struct i2c_client *client,
struct i2c_board_info *info);
static void adm1021_init_client(struct i2c_client *client);
-static int adm1021_remove(struct i2c_client *client);
static struct adm1021_data *adm1021_update_device(struct device *dev);
/* (amalysh) read only mode, otherwise any limit's writing confuse BIOS */
@@ -128,7 +129,6 @@ static struct i2c_driver adm1021_driver = {
.name = "adm1021",
},
.probe = adm1021_probe,
- .remove = adm1021_remove,
.id_table = adm1021_id,
.detect = adm1021_detect,
.address_list = normal_i2c,
@@ -182,8 +182,8 @@ static ssize_t set_temp_max(struct device *dev,
const char *buf, size_t count)
{
int index = to_sensor_dev_attr(devattr)->index;
- struct i2c_client *client = to_i2c_client(dev);
- struct adm1021_data *data = i2c_get_clientdata(client);
+ struct adm1021_data *data = dev_get_drvdata(dev);
+ struct i2c_client *client = data->client;
long temp;
int err;
@@ -207,8 +207,8 @@ static ssize_t set_temp_min(struct device *dev,
const char *buf, size_t count)
{
int index = to_sensor_dev_attr(devattr)->index;
- struct i2c_client *client = to_i2c_client(dev);
- struct adm1021_data *data = i2c_get_clientdata(client);
+ struct adm1021_data *data = dev_get_drvdata(dev);
+ struct i2c_client *client = data->client;
long temp;
int err;
@@ -238,8 +238,8 @@ static ssize_t set_low_power(struct device *dev,
struct device_attribute *devattr,
const char *buf, size_t count)
{
- struct i2c_client *client = to_i2c_client(dev);
- struct adm1021_data *data = i2c_get_clientdata(client);
+ struct adm1021_data *data = dev_get_drvdata(dev);
+ struct i2c_client *client = data->client;
char low_power;
unsigned long val;
int err;
@@ -412,15 +412,15 @@ static int adm1021_detect(struct i2c_client *client,
static int adm1021_probe(struct i2c_client *client,
const struct i2c_device_id *id)
{
+ struct device *dev = &client->dev;
struct adm1021_data *data;
- int err;
+ struct device *hwmon_dev;
- data = devm_kzalloc(&client->dev, sizeof(struct adm1021_data),
- GFP_KERNEL);
+ data = devm_kzalloc(dev, sizeof(struct adm1021_data), GFP_KERNEL);
if (!data)
return -ENOMEM;
- i2c_set_clientdata(client, data);
+ data->client = client;
data->type = id->driver_data;
mutex_init(&data->update_lock);
@@ -428,29 +428,16 @@ static int adm1021_probe(struct i2c_client *client,
if (data->type != lm84 && !read_only)
adm1021_init_client(client);
- /* Register sysfs hooks */
- err = sysfs_create_group(&client->dev.kobj, &adm1021_group);
- if (err)
- return err;
-
- if (data->type != lm84) {
- err = sysfs_create_group(&client->dev.kobj, &adm1021_min_group);
- if (err)
- goto error;
- }
+ data->groups[0] = &adm1021_group;
+ if (data->type != lm84)
+ data->groups[1] = &adm1021_min_group;
- data->hwmon_dev = hwmon_device_register(&client->dev);
- if (IS_ERR(data->hwmon_dev)) {
- err = PTR_ERR(data->hwmon_dev);
- goto error;
- }
+ hwmon_dev = devm_hwmon_device_register_with_groups(dev, client->name,
+ data, data->groups);
+ if (IS_ERR(hwmon_dev))
+ return PTR_ERR(hwmon_dev);
return 0;
-
-error:
- sysfs_remove_group(&client->dev.kobj, &adm1021_min_group);
- sysfs_remove_group(&client->dev.kobj, &adm1021_group);
- return err;
}
static void adm1021_init_client(struct i2c_client *client)
@@ -462,21 +449,10 @@ static void adm1021_init_client(struct i2c_client *client)
i2c_smbus_write_byte_data(client, ADM1021_REG_CONV_RATE_W, 0x04);
}
-static int adm1021_remove(struct i2c_client *client)
-{
- struct adm1021_data *data = i2c_get_clientdata(client);
-
- hwmon_device_unregister(data->hwmon_dev);
- sysfs_remove_group(&client->dev.kobj, &adm1021_min_group);
- sysfs_remove_group(&client->dev.kobj, &adm1021_group);
-
- return 0;
-}
-
static struct adm1021_data *adm1021_update_device(struct device *dev)
{
- struct i2c_client *client = to_i2c_client(dev);
- struct adm1021_data *data = i2c_get_clientdata(client);
+ struct adm1021_data *data = dev_get_drvdata(dev);
+ struct i2c_client *client = data->client;
mutex_lock(&data->update_lock);
@@ -484,7 +460,7 @@ static struct adm1021_data *adm1021_update_device(struct device *dev)
|| !data->valid) {
int i;
- dev_dbg(&client->dev, "Starting adm1021 update\n");
+ dev_dbg(dev, "Starting adm1021 update\n");
for (i = 0; i < 2; i++) {
data->temp[i] = 1000 *
--
1.7.9.7
_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [lm-sensors] [PATCH] hwmon: (adm1021) Convert to use devm_hwmon_device_register_with_groups
2014-02-02 17:39 [lm-sensors] [PATCH] hwmon: (adm1021) Convert to use devm_hwmon_device_register_with_groups Guenter Roeck
@ 2014-02-02 20:50 ` Jean Delvare
2014-02-02 21:04 ` Guenter Roeck
2014-02-02 21:37 ` Jean Delvare
2 siblings, 0 replies; 4+ messages in thread
From: Jean Delvare @ 2014-02-02 20:50 UTC (permalink / raw)
To: lm-sensors
Hi Guenter,
On Sun, 2 Feb 2014 09:39:28 -0800, Guenter Roeck wrote:
> Simplify code, reduce code size, and attach hwmon attributes to
> hwmon device.
>
> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
> ---
> drivers/hwmon/adm1021.c | 70 ++++++++++++++++-------------------------------
> 1 file changed, 23 insertions(+), 47 deletions(-)
>
> diff --git a/drivers/hwmon/adm1021.c b/drivers/hwmon/adm1021.c
> index 29dd9f7..f340ea2 100644
> --- a/drivers/hwmon/adm1021.c
> +++ b/drivers/hwmon/adm1021.c
> (...)
> @@ -412,15 +412,15 @@ static int adm1021_detect(struct i2c_client *client,
> static int adm1021_probe(struct i2c_client *client,
> const struct i2c_device_id *id)
> {
> + struct device *dev = &client->dev;
> struct adm1021_data *data;
> - int err;
> + struct device *hwmon_dev;
>
> - data = devm_kzalloc(&client->dev, sizeof(struct adm1021_data),
> - GFP_KERNEL);
> + data = devm_kzalloc(dev, sizeof(struct adm1021_data), GFP_KERNEL);
> if (!data)
> return -ENOMEM;
>
> - i2c_set_clientdata(client, data);
> + data->client = client;
> data->type = id->driver_data;
> mutex_init(&data->update_lock);
>
> @@ -428,29 +428,16 @@ static int adm1021_probe(struct i2c_client *client,
> if (data->type != lm84 && !read_only)
> adm1021_init_client(client);
>
> - /* Register sysfs hooks */
> - err = sysfs_create_group(&client->dev.kobj, &adm1021_group);
> - if (err)
> - return err;
> -
> - if (data->type != lm84) {
> - err = sysfs_create_group(&client->dev.kobj, &adm1021_min_group);
> - if (err)
> - goto error;
> - }
> + data->groups[0] = &adm1021_group;
> + if (data->type != lm84)
> + data->groups[1] = &adm1021_min_group;
>
> - data->hwmon_dev = hwmon_device_register(&client->dev);
> - if (IS_ERR(data->hwmon_dev)) {
> - err = PTR_ERR(data->hwmon_dev);
> - goto error;
> - }
> + hwmon_dev = devm_hwmon_device_register_with_groups(dev, client->name,
> + data, data->groups);
> + if (IS_ERR(hwmon_dev))
> + return PTR_ERR(hwmon_dev);
Why not return PTR_ERR_OR_ZERO?
>
> return 0;
> -
> -error:
> - sysfs_remove_group(&client->dev.kobj, &adm1021_min_group);
> - sysfs_remove_group(&client->dev.kobj, &adm1021_group);
> - return err;
> }
Everything else looks good.
--
Jean Delvare
Suse L3 Support
_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [lm-sensors] [PATCH] hwmon: (adm1021) Convert to use devm_hwmon_device_register_with_groups
2014-02-02 17:39 [lm-sensors] [PATCH] hwmon: (adm1021) Convert to use devm_hwmon_device_register_with_groups Guenter Roeck
2014-02-02 20:50 ` Jean Delvare
@ 2014-02-02 21:04 ` Guenter Roeck
2014-02-02 21:37 ` Jean Delvare
2 siblings, 0 replies; 4+ messages in thread
From: Guenter Roeck @ 2014-02-02 21:04 UTC (permalink / raw)
To: lm-sensors
On 02/02/2014 12:50 PM, Jean Delvare wrote:
> Hi Guenter,
>
> On Sun, 2 Feb 2014 09:39:28 -0800, Guenter Roeck wrote:
>> Simplify code, reduce code size, and attach hwmon attributes to
>> hwmon device.
>>
>> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
>> ---
>> drivers/hwmon/adm1021.c | 70 ++++++++++++++++-------------------------------
>> 1 file changed, 23 insertions(+), 47 deletions(-)
>>
>> diff --git a/drivers/hwmon/adm1021.c b/drivers/hwmon/adm1021.c
>> index 29dd9f7..f340ea2 100644
>> --- a/drivers/hwmon/adm1021.c
>> +++ b/drivers/hwmon/adm1021.c
>> (...)
>> @@ -412,15 +412,15 @@ static int adm1021_detect(struct i2c_client *client,
>> static int adm1021_probe(struct i2c_client *client,
>> const struct i2c_device_id *id)
>> {
>> + struct device *dev = &client->dev;
>> struct adm1021_data *data;
>> - int err;
>> + struct device *hwmon_dev;
>>
>> - data = devm_kzalloc(&client->dev, sizeof(struct adm1021_data),
>> - GFP_KERNEL);
>> + data = devm_kzalloc(dev, sizeof(struct adm1021_data), GFP_KERNEL);
>> if (!data)
>> return -ENOMEM;
>>
>> - i2c_set_clientdata(client, data);
>> + data->client = client;
>> data->type = id->driver_data;
>> mutex_init(&data->update_lock);
>>
>> @@ -428,29 +428,16 @@ static int adm1021_probe(struct i2c_client *client,
>> if (data->type != lm84 && !read_only)
>> adm1021_init_client(client);
>>
>> - /* Register sysfs hooks */
>> - err = sysfs_create_group(&client->dev.kobj, &adm1021_group);
>> - if (err)
>> - return err;
>> -
>> - if (data->type != lm84) {
>> - err = sysfs_create_group(&client->dev.kobj, &adm1021_min_group);
>> - if (err)
>> - goto error;
>> - }
>> + data->groups[0] = &adm1021_group;
>> + if (data->type != lm84)
>> + data->groups[1] = &adm1021_min_group;
>>
>> - data->hwmon_dev = hwmon_device_register(&client->dev);
>> - if (IS_ERR(data->hwmon_dev)) {
>> - err = PTR_ERR(data->hwmon_dev);
>> - goto error;
>> - }
>> + hwmon_dev = devm_hwmon_device_register_with_groups(dev, client->name,
>> + data, data->groups);
>> + if (IS_ERR(hwmon_dev))
>> + return PTR_ERR(hwmon_dev);
>
> Why not return PTR_ERR_OR_ZERO?
>
Hi Jean,
Because I forgot that it exists and only remembered after I sent out the patch ;-).
I'll fix and resubmit. Should I split out the dev = &client->dev change
into a separate patch ?
Thanks,
Guenter
_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [lm-sensors] [PATCH] hwmon: (adm1021) Convert to use devm_hwmon_device_register_with_groups
2014-02-02 17:39 [lm-sensors] [PATCH] hwmon: (adm1021) Convert to use devm_hwmon_device_register_with_groups Guenter Roeck
2014-02-02 20:50 ` Jean Delvare
2014-02-02 21:04 ` Guenter Roeck
@ 2014-02-02 21:37 ` Jean Delvare
2 siblings, 0 replies; 4+ messages in thread
From: Jean Delvare @ 2014-02-02 21:37 UTC (permalink / raw)
To: lm-sensors
On Sun, 02 Feb 2014 13:04:47 -0800, Guenter Roeck wrote:
> On 02/02/2014 12:50 PM, Jean Delvare wrote:
> > Hi Guenter,
> >
> > On Sun, 2 Feb 2014 09:39:28 -0800, Guenter Roeck wrote:
> >> + if (IS_ERR(hwmon_dev))
> >> + return PTR_ERR(hwmon_dev);
> >
> > Why not return PTR_ERR_OR_ZERO?
> >
> Hi Jean,
>
> Because I forgot that it exists and only remembered after I sent out the patch ;-).
>
> I'll fix and resubmit. Should I split out the dev = &client->dev change
> into a separate patch ?
No, the lm80 and adm1024 drivers are simple enough, don't bother...
--
Jean Delvare
Suse L3 Support
_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2014-02-02 21:37 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-02-02 17:39 [lm-sensors] [PATCH] hwmon: (adm1021) Convert to use devm_hwmon_device_register_with_groups Guenter Roeck
2014-02-02 20:50 ` Jean Delvare
2014-02-02 21:04 ` Guenter Roeck
2014-02-02 21:37 ` Jean Delvare
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.