hc
2023-12-06 08f87f769b595151be1afeff53e144f543faa614
kernel/drivers/iio/light/si1145.c
....@@ -1,13 +1,10 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /*
23 * si1145.c - Support for Silabs SI1132 and SI1141/2/3/5/6/7 combined ambient
34 * light, UV index and proximity sensors
45 *
56 * Copyright 2014-16 Peter Meerwald-Stadler <pmeerw@pmeerw.net>
67 * Copyright 2016 Crestez Dan Leonard <leonard.crestez@intel.com>
7
- *
8
- * This file is subject to the terms and conditions of version 2 of
9
- * the GNU General Public License. See the file COPYING in the main
10
- * directory of this archive for more details.
118 *
129 * SI1132 (7-bit I2C slave address 0x60)
1310 * SI1141/2/3 (7-bit I2C slave address 0x5a)
....@@ -20,7 +17,6 @@
2017 #include <linux/slab.h>
2118 #include <linux/delay.h>
2219 #include <linux/irq.h>
23
-#include <linux/gpio.h>
2420
2521 #include <linux/iio/iio.h>
2622 #include <linux/iio/sysfs.h>
....@@ -194,7 +190,7 @@
194190 u8 buffer[24] __aligned(8);
195191 };
196192
197
-/**
193
+/*
198194 * __si1145_command_reset() - Send CMD_NOP and wait for response 0
199195 *
200196 * Does not modify data->rsp_seq
....@@ -228,7 +224,7 @@
228224 }
229225 }
230226
231
-/**
227
+/*
232228 * si1145_command() - Execute a command and poll the response register
233229 *
234230 * All conversion overflows are reported as -EOVERFLOW
....@@ -1049,7 +1045,7 @@
10491045 SI1145_LED_CURRENT_45mA);
10501046 if (ret < 0)
10511047 return ret;
1052
- /* fallthrough */
1048
+ fallthrough;
10531049 case 2:
10541050 ret = i2c_smbus_write_byte_data(client,
10551051 SI1145_REG_PS_LED21,
....@@ -1178,12 +1174,10 @@
11781174
11791175 static const struct iio_buffer_setup_ops si1145_buffer_setup_ops = {
11801176 .preenable = si1145_buffer_preenable,
1181
- .postenable = iio_triggered_buffer_postenable,
1182
- .predisable = iio_triggered_buffer_predisable,
11831177 .validate_scan_mask = si1145_validate_scan_mask,
11841178 };
11851179
1186
-/**
1180
+/*
11871181 * si1145_trigger_set_state() - Set trigger state
11881182 *
11891183 * When not using triggers interrupts are disabled and measurement rate is
....@@ -1267,7 +1261,7 @@
12671261 return ret;
12681262 }
12691263
1270
- ret = iio_trigger_register(trig);
1264
+ ret = devm_iio_trigger_register(&client->dev, trig);
12711265 if (ret)
12721266 return ret;
12731267
....@@ -1275,16 +1269,6 @@
12751269 indio_dev->trig = iio_trigger_get(data->trig);
12761270
12771271 return 0;
1278
-}
1279
-
1280
-static void si1145_remove_trigger(struct iio_dev *indio_dev)
1281
-{
1282
- struct si1145_data *data = iio_priv(indio_dev);
1283
-
1284
- if (data->trig) {
1285
- iio_trigger_unregister(data->trig);
1286
- data->trig = NULL;
1287
- }
12881272 }
12891273
12901274 static int si1145_probe(struct i2c_client *client,
....@@ -1324,7 +1308,6 @@
13241308 return -ENODEV;
13251309 }
13261310
1327
- indio_dev->dev.parent = &client->dev;
13281311 indio_dev->name = id->name;
13291312 indio_dev->channels = data->part_info->channels;
13301313 indio_dev->num_channels = data->part_info->num_channels;
....@@ -1338,7 +1321,8 @@
13381321 if (ret < 0)
13391322 return ret;
13401323
1341
- ret = iio_triggered_buffer_setup(indio_dev, NULL,
1324
+ ret = devm_iio_triggered_buffer_setup(&client->dev,
1325
+ indio_dev, NULL,
13421326 si1145_trigger_handler, &si1145_buffer_setup_ops);
13431327 if (ret < 0)
13441328 return ret;
....@@ -1346,23 +1330,12 @@
13461330 if (client->irq) {
13471331 ret = si1145_probe_trigger(indio_dev);
13481332 if (ret < 0)
1349
- goto error_free_buffer;
1333
+ return ret;
13501334 } else {
13511335 dev_info(&client->dev, "no irq, using polling\n");
13521336 }
13531337
1354
- ret = iio_device_register(indio_dev);
1355
- if (ret < 0)
1356
- goto error_free_trigger;
1357
-
1358
- return 0;
1359
-
1360
-error_free_trigger:
1361
- si1145_remove_trigger(indio_dev);
1362
-error_free_buffer:
1363
- iio_triggered_buffer_cleanup(indio_dev);
1364
-
1365
- return ret;
1338
+ return devm_iio_device_register(&client->dev, indio_dev);
13661339 }
13671340
13681341 static const struct i2c_device_id si1145_ids[] = {
....@@ -1377,23 +1350,11 @@
13771350 };
13781351 MODULE_DEVICE_TABLE(i2c, si1145_ids);
13791352
1380
-static int si1145_remove(struct i2c_client *client)
1381
-{
1382
- struct iio_dev *indio_dev = i2c_get_clientdata(client);
1383
-
1384
- iio_device_unregister(indio_dev);
1385
- si1145_remove_trigger(indio_dev);
1386
- iio_triggered_buffer_cleanup(indio_dev);
1387
-
1388
- return 0;
1389
-}
1390
-
13911353 static struct i2c_driver si1145_driver = {
13921354 .driver = {
13931355 .name = "si1145",
13941356 },
13951357 .probe = si1145_probe,
1396
- .remove = si1145_remove,
13971358 .id_table = si1145_ids,
13981359 };
13991360