Commit 148da125 authored by Alexandru Ardelean's avatar Alexandru Ardelean Committed by Jonathan Cameron
Browse files

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: default avatarAlexandru Ardelean <aardelean@deviqon.com>
Link: https://lore.kernel.org/r/20210630131636.1563148-2-aardelean@deviqon.com


Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
parent 09d5135b
Loading
Loading
Loading
Loading
+8 −19
Original line number Diff line number Diff line
@@ -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 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,
};