]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
iio: light: veml6070: add action for i2c_unregister_device
authorJavier Carrasco <javier.carrasco.cruz@gmail.com>
Sun, 29 Sep 2024 20:38:46 +0000 (22:38 +0200)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Sat, 5 Oct 2024 11:09:15 +0000 (12:09 +0100)
Simplify the code by adding an action to call i2c_unregister_device(),
which removes the need for a 'fail' label, gotos to it, and an explicit
call in veml6070_remove().

Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
Link: https://patch.msgid.link/20240929-veml6070-cleanup-v1-1-a9350341a646@gmail.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/light/veml6070.c

index f8321d346d7757b2264d2cddc35e96518a6cac15..3c476b6f612209e4b337d4abacd84d2d54707034 100644 (file)
@@ -135,6 +135,13 @@ static const struct iio_info veml6070_info = {
        .read_raw = veml6070_read_raw,
 };
 
+static void veml6070_i2c_unreg(void *p)
+{
+       struct veml6070_data *data = p;
+
+       i2c_unregister_device(data->client2);
+}
+
 static int veml6070_probe(struct i2c_client *client)
 {
        struct veml6070_data *data;
@@ -166,17 +173,13 @@ static int veml6070_probe(struct i2c_client *client)
                VEML6070_COMMAND_SD;
        ret = i2c_smbus_write_byte(data->client1, data->config);
        if (ret < 0)
-               goto fail;
+               return ret;
 
-       ret = iio_device_register(indio_dev);
+       ret = devm_add_action_or_reset(&client->dev, veml6070_i2c_unreg, data);
        if (ret < 0)
-               goto fail;
+               return ret;
 
-       return ret;
-
-fail:
-       i2c_unregister_device(data->client2);
-       return ret;
+       return iio_device_register(indio_dev);
 }
 
 static void veml6070_remove(struct i2c_client *client)
@@ -185,7 +188,6 @@ static void veml6070_remove(struct i2c_client *client)
        struct veml6070_data *data = iio_priv(indio_dev);
 
        iio_device_unregister(indio_dev);
-       i2c_unregister_device(data->client2);
 }
 
 static const struct i2c_device_id veml6070_id[] = {