hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/hwmon/adc128d818.c
....@@ -1,3 +1,4 @@
1
+// SPDX-License-Identifier: GPL-2.0-or-later
12 /*
23 * Driver for TI ADC128D818 System Monitor with Temperature Sensor
34 *
....@@ -6,16 +7,6 @@
67 * Derived from lm80.c
78 * Copyright (C) 1998, 1999 Frodo Looijaard <frodol@dds.nl>
89 * and Philip Edelbrock <phil@netroedge.com>
9
- *
10
- * This program is free software; you can redistribute it and/or modify
11
- * it under the terms of the GNU General Public License as published by
12
- * the Free Software Foundation; either version 2 of the License, or
13
- * (at your option) any later version.
14
- *
15
- * This program is distributed in the hope that it will be useful,
16
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
17
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
- * GNU General Public License for more details.
1910 */
2011
2112 #include <linux/module.h>
....@@ -153,8 +144,8 @@
153144 return ret;
154145 }
155146
156
-static ssize_t adc128_show_in(struct device *dev, struct device_attribute *attr,
157
- char *buf)
147
+static ssize_t adc128_in_show(struct device *dev,
148
+ struct device_attribute *attr, char *buf)
158149 {
159150 struct adc128_data *data = adc128_update_device(dev);
160151 int index = to_sensor_dev_attr_2(attr)->index;
....@@ -168,8 +159,9 @@
168159 return sprintf(buf, "%d\n", val);
169160 }
170161
171
-static ssize_t adc128_set_in(struct device *dev, struct device_attribute *attr,
172
- const char *buf, size_t count)
162
+static ssize_t adc128_in_store(struct device *dev,
163
+ struct device_attribute *attr, const char *buf,
164
+ size_t count)
173165 {
174166 struct adc128_data *data = dev_get_drvdata(dev);
175167 int index = to_sensor_dev_attr_2(attr)->index;
....@@ -193,7 +185,7 @@
193185 return count;
194186 }
195187
196
-static ssize_t adc128_show_temp(struct device *dev,
188
+static ssize_t adc128_temp_show(struct device *dev,
197189 struct device_attribute *attr, char *buf)
198190 {
199191 struct adc128_data *data = adc128_update_device(dev);
....@@ -207,9 +199,9 @@
207199 return sprintf(buf, "%d\n", temp * 500);/* 0.5 degrees C resolution */
208200 }
209201
210
-static ssize_t adc128_set_temp(struct device *dev,
211
- struct device_attribute *attr,
212
- const char *buf, size_t count)
202
+static ssize_t adc128_temp_store(struct device *dev,
203
+ struct device_attribute *attr,
204
+ const char *buf, size_t count)
213205 {
214206 struct adc128_data *data = dev_get_drvdata(dev);
215207 int index = to_sensor_dev_attr(attr)->index;
....@@ -233,7 +225,7 @@
233225 return count;
234226 }
235227
236
-static ssize_t adc128_show_alarm(struct device *dev,
228
+static ssize_t adc128_alarm_show(struct device *dev,
237229 struct device_attribute *attr, char *buf)
238230 {
239231 struct adc128_data *data = adc128_update_device(dev);
....@@ -272,77 +264,51 @@
272264 return attr->mode;
273265 }
274266
275
-static SENSOR_DEVICE_ATTR_2(in0_input, S_IRUGO,
276
- adc128_show_in, NULL, 0, 0);
277
-static SENSOR_DEVICE_ATTR_2(in0_min, S_IWUSR | S_IRUGO,
278
- adc128_show_in, adc128_set_in, 0, 1);
279
-static SENSOR_DEVICE_ATTR_2(in0_max, S_IWUSR | S_IRUGO,
280
- adc128_show_in, adc128_set_in, 0, 2);
267
+static SENSOR_DEVICE_ATTR_2_RO(in0_input, adc128_in, 0, 0);
268
+static SENSOR_DEVICE_ATTR_2_RW(in0_min, adc128_in, 0, 1);
269
+static SENSOR_DEVICE_ATTR_2_RW(in0_max, adc128_in, 0, 2);
281270
282
-static SENSOR_DEVICE_ATTR_2(in1_input, S_IRUGO,
283
- adc128_show_in, NULL, 1, 0);
284
-static SENSOR_DEVICE_ATTR_2(in1_min, S_IWUSR | S_IRUGO,
285
- adc128_show_in, adc128_set_in, 1, 1);
286
-static SENSOR_DEVICE_ATTR_2(in1_max, S_IWUSR | S_IRUGO,
287
- adc128_show_in, adc128_set_in, 1, 2);
271
+static SENSOR_DEVICE_ATTR_2_RO(in1_input, adc128_in, 1, 0);
272
+static SENSOR_DEVICE_ATTR_2_RW(in1_min, adc128_in, 1, 1);
273
+static SENSOR_DEVICE_ATTR_2_RW(in1_max, adc128_in, 1, 2);
288274
289
-static SENSOR_DEVICE_ATTR_2(in2_input, S_IRUGO,
290
- adc128_show_in, NULL, 2, 0);
291
-static SENSOR_DEVICE_ATTR_2(in2_min, S_IWUSR | S_IRUGO,
292
- adc128_show_in, adc128_set_in, 2, 1);
293
-static SENSOR_DEVICE_ATTR_2(in2_max, S_IWUSR | S_IRUGO,
294
- adc128_show_in, adc128_set_in, 2, 2);
275
+static SENSOR_DEVICE_ATTR_2_RO(in2_input, adc128_in, 2, 0);
276
+static SENSOR_DEVICE_ATTR_2_RW(in2_min, adc128_in, 2, 1);
277
+static SENSOR_DEVICE_ATTR_2_RW(in2_max, adc128_in, 2, 2);
295278
296
-static SENSOR_DEVICE_ATTR_2(in3_input, S_IRUGO,
297
- adc128_show_in, NULL, 3, 0);
298
-static SENSOR_DEVICE_ATTR_2(in3_min, S_IWUSR | S_IRUGO,
299
- adc128_show_in, adc128_set_in, 3, 1);
300
-static SENSOR_DEVICE_ATTR_2(in3_max, S_IWUSR | S_IRUGO,
301
- adc128_show_in, adc128_set_in, 3, 2);
279
+static SENSOR_DEVICE_ATTR_2_RO(in3_input, adc128_in, 3, 0);
280
+static SENSOR_DEVICE_ATTR_2_RW(in3_min, adc128_in, 3, 1);
281
+static SENSOR_DEVICE_ATTR_2_RW(in3_max, adc128_in, 3, 2);
302282
303
-static SENSOR_DEVICE_ATTR_2(in4_input, S_IRUGO,
304
- adc128_show_in, NULL, 4, 0);
305
-static SENSOR_DEVICE_ATTR_2(in4_min, S_IWUSR | S_IRUGO,
306
- adc128_show_in, adc128_set_in, 4, 1);
307
-static SENSOR_DEVICE_ATTR_2(in4_max, S_IWUSR | S_IRUGO,
308
- adc128_show_in, adc128_set_in, 4, 2);
283
+static SENSOR_DEVICE_ATTR_2_RO(in4_input, adc128_in, 4, 0);
284
+static SENSOR_DEVICE_ATTR_2_RW(in4_min, adc128_in, 4, 1);
285
+static SENSOR_DEVICE_ATTR_2_RW(in4_max, adc128_in, 4, 2);
309286
310
-static SENSOR_DEVICE_ATTR_2(in5_input, S_IRUGO,
311
- adc128_show_in, NULL, 5, 0);
312
-static SENSOR_DEVICE_ATTR_2(in5_min, S_IWUSR | S_IRUGO,
313
- adc128_show_in, adc128_set_in, 5, 1);
314
-static SENSOR_DEVICE_ATTR_2(in5_max, S_IWUSR | S_IRUGO,
315
- adc128_show_in, adc128_set_in, 5, 2);
287
+static SENSOR_DEVICE_ATTR_2_RO(in5_input, adc128_in, 5, 0);
288
+static SENSOR_DEVICE_ATTR_2_RW(in5_min, adc128_in, 5, 1);
289
+static SENSOR_DEVICE_ATTR_2_RW(in5_max, adc128_in, 5, 2);
316290
317
-static SENSOR_DEVICE_ATTR_2(in6_input, S_IRUGO,
318
- adc128_show_in, NULL, 6, 0);
319
-static SENSOR_DEVICE_ATTR_2(in6_min, S_IWUSR | S_IRUGO,
320
- adc128_show_in, adc128_set_in, 6, 1);
321
-static SENSOR_DEVICE_ATTR_2(in6_max, S_IWUSR | S_IRUGO,
322
- adc128_show_in, adc128_set_in, 6, 2);
291
+static SENSOR_DEVICE_ATTR_2_RO(in6_input, adc128_in, 6, 0);
292
+static SENSOR_DEVICE_ATTR_2_RW(in6_min, adc128_in, 6, 1);
293
+static SENSOR_DEVICE_ATTR_2_RW(in6_max, adc128_in, 6, 2);
323294
324
-static SENSOR_DEVICE_ATTR_2(in7_input, S_IRUGO,
325
- adc128_show_in, NULL, 7, 0);
326
-static SENSOR_DEVICE_ATTR_2(in7_min, S_IWUSR | S_IRUGO,
327
- adc128_show_in, adc128_set_in, 7, 1);
328
-static SENSOR_DEVICE_ATTR_2(in7_max, S_IWUSR | S_IRUGO,
329
- adc128_show_in, adc128_set_in, 7, 2);
295
+static SENSOR_DEVICE_ATTR_2_RO(in7_input, adc128_in, 7, 0);
296
+static SENSOR_DEVICE_ATTR_2_RW(in7_min, adc128_in, 7, 1);
297
+static SENSOR_DEVICE_ATTR_2_RW(in7_max, adc128_in, 7, 2);
330298
331
-static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, adc128_show_temp, NULL, 0);
332
-static SENSOR_DEVICE_ATTR(temp1_max, S_IWUSR | S_IRUGO,
333
- adc128_show_temp, adc128_set_temp, 1);
334
-static SENSOR_DEVICE_ATTR(temp1_max_hyst, S_IWUSR | S_IRUGO,
335
- adc128_show_temp, adc128_set_temp, 2);
299
+static SENSOR_DEVICE_ATTR_RO(temp1_input, adc128_temp, 0);
300
+static SENSOR_DEVICE_ATTR_RW(temp1_max, adc128_temp, 1);
301
+static SENSOR_DEVICE_ATTR_RW(temp1_max_hyst, adc128_temp, 2);
336302
337
-static SENSOR_DEVICE_ATTR(in0_alarm, S_IRUGO, adc128_show_alarm, NULL, 0);
338
-static SENSOR_DEVICE_ATTR(in1_alarm, S_IRUGO, adc128_show_alarm, NULL, 1);
339
-static SENSOR_DEVICE_ATTR(in2_alarm, S_IRUGO, adc128_show_alarm, NULL, 2);
340
-static SENSOR_DEVICE_ATTR(in3_alarm, S_IRUGO, adc128_show_alarm, NULL, 3);
341
-static SENSOR_DEVICE_ATTR(in4_alarm, S_IRUGO, adc128_show_alarm, NULL, 4);
342
-static SENSOR_DEVICE_ATTR(in5_alarm, S_IRUGO, adc128_show_alarm, NULL, 5);
343
-static SENSOR_DEVICE_ATTR(in6_alarm, S_IRUGO, adc128_show_alarm, NULL, 6);
344
-static SENSOR_DEVICE_ATTR(in7_alarm, S_IRUGO, adc128_show_alarm, NULL, 7);
345
-static SENSOR_DEVICE_ATTR(temp1_max_alarm, S_IRUGO, adc128_show_alarm, NULL, 7);
303
+static SENSOR_DEVICE_ATTR_RO(in0_alarm, adc128_alarm, 0);
304
+static SENSOR_DEVICE_ATTR_RO(in1_alarm, adc128_alarm, 1);
305
+static SENSOR_DEVICE_ATTR_RO(in2_alarm, adc128_alarm, 2);
306
+static SENSOR_DEVICE_ATTR_RO(in3_alarm, adc128_alarm, 3);
307
+static SENSOR_DEVICE_ATTR_RO(in4_alarm, adc128_alarm, 4);
308
+static SENSOR_DEVICE_ATTR_RO(in5_alarm, adc128_alarm, 5);
309
+static SENSOR_DEVICE_ATTR_RO(in6_alarm, adc128_alarm, 6);
310
+static SENSOR_DEVICE_ATTR_RO(in7_alarm, adc128_alarm, 7);
311
+static SENSOR_DEVICE_ATTR_RO(temp1_max_alarm, adc128_alarm, 7);
346312
347313 static struct attribute *adc128_attrs[] = {
348314 &sensor_dev_attr_in0_alarm.dev_attr.attr,
....@@ -427,6 +393,7 @@
427393 {
428394 struct i2c_client *client = data->client;
429395 int err;
396
+ u8 regval = 0x0;
430397
431398 /*
432399 * Reset chip to defaults.
....@@ -437,10 +404,17 @@
437404 return err;
438405
439406 /* Set operation mode, if non-default */
440
- if (data->mode != 0) {
441
- err = i2c_smbus_write_byte_data(client,
442
- ADC128_REG_CONFIG_ADV,
443
- data->mode << 1);
407
+ if (data->mode != 0)
408
+ regval |= data->mode << 1;
409
+
410
+ /* If external vref is selected, configure the chip to use it */
411
+ if (data->regulator)
412
+ regval |= 0x01;
413
+
414
+ /* Write advanced configuration register */
415
+ if (regval != 0x0) {
416
+ err = i2c_smbus_write_byte_data(client, ADC128_REG_CONFIG_ADV,
417
+ regval);
444418 if (err)
445419 return err;
446420 }
....@@ -450,19 +424,10 @@
450424 if (err)
451425 return err;
452426
453
- /* If external vref is selected, configure the chip to use it */
454
- if (data->regulator) {
455
- err = i2c_smbus_write_byte_data(client,
456
- ADC128_REG_CONFIG_ADV, 0x01);
457
- if (err)
458
- return err;
459
- }
460
-
461427 return 0;
462428 }
463429
464
-static int adc128_probe(struct i2c_client *client,
465
- const struct i2c_device_id *id)
430
+static int adc128_probe(struct i2c_client *client)
466431 {
467432 struct device *dev = &client->dev;
468433 struct regulator *regulator;
....@@ -546,7 +511,7 @@
546511 };
547512 MODULE_DEVICE_TABLE(i2c, adc128_id);
548513
549
-static const struct of_device_id adc128_of_match[] = {
514
+static const struct of_device_id __maybe_unused adc128_of_match[] = {
550515 { .compatible = "ti,adc128d818" },
551516 { },
552517 };
....@@ -558,7 +523,7 @@
558523 .name = "adc128d818",
559524 .of_match_table = of_match_ptr(adc128_of_match),
560525 },
561
- .probe = adc128_probe,
526
+ .probe_new = adc128_probe,
562527 .remove = adc128_remove,
563528 .id_table = adc128_id,
564529 .detect = adc128_detect,