|
|
|
@ -227,16 +227,13 @@ static int ad7418_probe(struct i2c_client *client, |
|
|
|
|
int err; |
|
|
|
|
|
|
|
|
|
if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA | |
|
|
|
|
I2C_FUNC_SMBUS_WORD_DATA)) { |
|
|
|
|
err = -EOPNOTSUPP; |
|
|
|
|
goto exit; |
|
|
|
|
} |
|
|
|
|
I2C_FUNC_SMBUS_WORD_DATA)) |
|
|
|
|
return -EOPNOTSUPP; |
|
|
|
|
|
|
|
|
|
data = kzalloc(sizeof(struct ad7418_data), GFP_KERNEL); |
|
|
|
|
if (!data) { |
|
|
|
|
err = -ENOMEM; |
|
|
|
|
goto exit; |
|
|
|
|
} |
|
|
|
|
data = devm_kzalloc(&client->dev, sizeof(struct ad7418_data), |
|
|
|
|
GFP_KERNEL); |
|
|
|
|
if (!data) |
|
|
|
|
return -ENOMEM; |
|
|
|
|
|
|
|
|
|
i2c_set_clientdata(client, data); |
|
|
|
|
|
|
|
|
@ -268,7 +265,7 @@ static int ad7418_probe(struct i2c_client *client, |
|
|
|
|
/* Register sysfs hooks */ |
|
|
|
|
err = sysfs_create_group(&client->dev.kobj, &data->attrs); |
|
|
|
|
if (err) |
|
|
|
|
goto exit_free; |
|
|
|
|
return err; |
|
|
|
|
|
|
|
|
|
data->hwmon_dev = hwmon_device_register(&client->dev); |
|
|
|
|
if (IS_ERR(data->hwmon_dev)) { |
|
|
|
@ -280,9 +277,6 @@ static int ad7418_probe(struct i2c_client *client, |
|
|
|
|
|
|
|
|
|
exit_remove: |
|
|
|
|
sysfs_remove_group(&client->dev.kobj, &data->attrs); |
|
|
|
|
exit_free: |
|
|
|
|
kfree(data); |
|
|
|
|
exit: |
|
|
|
|
return err; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -291,7 +285,6 @@ static int ad7418_remove(struct i2c_client *client) |
|
|
|
|
struct ad7418_data *data = i2c_get_clientdata(client); |
|
|
|
|
hwmon_device_unregister(data->hwmon_dev); |
|
|
|
|
sysfs_remove_group(&client->dev.kobj, &data->attrs); |
|
|
|
|
kfree(data); |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|