diff options
Diffstat (limited to 'drivers/hwmon/ds620.c')
| -rw-r--r-- | drivers/hwmon/ds620.c | 31 |
1 files changed, 7 insertions, 24 deletions
diff --git a/drivers/hwmon/ds620.c b/drivers/hwmon/ds620.c index 300c3d4d67d..0918b913658 100644 --- a/drivers/hwmon/ds620.c +++ b/drivers/hwmon/ds620.c @@ -77,7 +77,7 @@ struct ds620_data { static void ds620_init_client(struct i2c_client *client) { - struct ds620_platform_data *ds620_info = client->dev.platform_data; + struct ds620_platform_data *ds620_info = dev_get_platdata(&client->dev); u16 conf, new_conf; new_conf = conf = @@ -232,11 +232,10 @@ static int ds620_probe(struct i2c_client *client, struct ds620_data *data; int err; - data = kzalloc(sizeof(struct ds620_data), GFP_KERNEL); - if (!data) { - err = -ENOMEM; - goto exit; - } + data = devm_kzalloc(&client->dev, sizeof(struct ds620_data), + GFP_KERNEL); + if (!data) + return -ENOMEM; i2c_set_clientdata(client, data); mutex_init(&data->update_lock); @@ -247,7 +246,7 @@ static int ds620_probe(struct i2c_client *client, /* Register sysfs hooks */ err = sysfs_create_group(&client->dev.kobj, &ds620_group); if (err) - goto exit_free; + return err; data->hwmon_dev = hwmon_device_register(&client->dev); if (IS_ERR(data->hwmon_dev)) { @@ -261,9 +260,6 @@ static int ds620_probe(struct i2c_client *client, exit_remove_files: sysfs_remove_group(&client->dev.kobj, &ds620_group); -exit_free: - kfree(data); -exit: return err; } @@ -274,8 +270,6 @@ static int ds620_remove(struct i2c_client *client) hwmon_device_unregister(data->hwmon_dev); sysfs_remove_group(&client->dev.kobj, &ds620_group); - kfree(data); - return 0; } @@ -297,19 +291,8 @@ static struct i2c_driver ds620_driver = { .id_table = ds620_id, }; -static int __init ds620_init(void) -{ - return i2c_add_driver(&ds620_driver); -} - -static void __exit ds620_exit(void) -{ - i2c_del_driver(&ds620_driver); -} +module_i2c_driver(ds620_driver); MODULE_AUTHOR("Roland Stigge <stigge@antcom.de>"); MODULE_DESCRIPTION("DS620 driver"); MODULE_LICENSE("GPL"); - -module_init(ds620_init); -module_exit(ds620_exit); |
