iio: proximity: rfd77402: convert probe to device-managed functions
This change converts the probe hook to register the IIO device with devm_iio_device_register() and register a hook with devm_add_action_or_reset() to put the device in powerdown when the driver gets unloaded. Since the PM suspend/resume functions need only a reference to the i2c_client object (which can be obtained from the base device object), the i2c_set_clientdata() call can be removed. Signed-off-by: Alexandru Ardelean <aardelean@deviqon.com> Link: https://lore.kernel.org/r/20210630131636.1563148-2-aardelean@deviqon.com Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
parent
09d5135b6f
commit
148da125a0
|
@ -252,6 +252,11 @@ static int rfd77402_powerdown(struct i2c_client *client)
|
|||
RFD77402_STATUS_STANDBY);
|
||||
}
|
||||
|
||||
static void rfd77402_disable(void *client)
|
||||
{
|
||||
rfd77402_powerdown(client);
|
||||
}
|
||||
|
||||
static int rfd77402_probe(struct i2c_client *client,
|
||||
const struct i2c_device_id *id)
|
||||
{
|
||||
|
@ -270,7 +275,6 @@ static int rfd77402_probe(struct i2c_client *client,
|
|||
return -ENOMEM;
|
||||
|
||||
data = iio_priv(indio_dev);
|
||||
i2c_set_clientdata(client, indio_dev);
|
||||
data->client = client;
|
||||
mutex_init(&data->lock);
|
||||
|
||||
|
@ -284,25 +288,11 @@ static int rfd77402_probe(struct i2c_client *client,
|
|||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
ret = iio_device_register(indio_dev);
|
||||
ret = devm_add_action_or_reset(&client->dev, rfd77402_disable, client);
|
||||
if (ret)
|
||||
goto err_powerdown;
|
||||
return ret;
|
||||
|
||||
return 0;
|
||||
|
||||
err_powerdown:
|
||||
rfd77402_powerdown(client);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int rfd77402_remove(struct i2c_client *client)
|
||||
{
|
||||
struct iio_dev *indio_dev = i2c_get_clientdata(client);
|
||||
|
||||
iio_device_unregister(indio_dev);
|
||||
rfd77402_powerdown(client);
|
||||
|
||||
return 0;
|
||||
return devm_iio_device_register(&client->dev, indio_dev);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM_SLEEP
|
||||
|
@ -331,7 +321,6 @@ static struct i2c_driver rfd77402_driver = {
|
|||
.pm = &rfd77402_pm_ops,
|
||||
},
|
||||
.probe = rfd77402_probe,
|
||||
.remove = rfd77402_remove,
|
||||
.id_table = rfd77402_id,
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue