forked from ~ljy/RK356X_SDK_RELEASE

hc
2023-12-09 95099d4622f8cb224d94e314c7a8e0df60b13f87
kernel/drivers/hwmon/ltc2945.c
....@@ -1,17 +1,8 @@
1
+// SPDX-License-Identifier: GPL-2.0-or-later
12 /*
23 * Driver for Linear Technology LTC2945 I2C Power Monitor
34 *
45 * Copyright (c) 2014 Guenter Roeck
5
- *
6
- * This program is free software; you can redistribute it and/or modify
7
- * it under the terms of the GNU General Public License as published by
8
- * the Free Software Foundation; either version 2 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * This program is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- * GNU General Public License for more details.
156 */
167
178 #include <linux/kernel.h>
....@@ -226,7 +217,7 @@
226217 return val;
227218 }
228219
229
-static ssize_t ltc2945_show_value(struct device *dev,
220
+static ssize_t ltc2945_value_show(struct device *dev,
230221 struct device_attribute *da, char *buf)
231222 {
232223 struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
....@@ -238,9 +229,9 @@
238229 return snprintf(buf, PAGE_SIZE, "%lld\n", value);
239230 }
240231
241
-static ssize_t ltc2945_set_value(struct device *dev,
242
- struct device_attribute *da,
243
- const char *buf, size_t count)
232
+static ssize_t ltc2945_value_store(struct device *dev,
233
+ struct device_attribute *da,
234
+ const char *buf, size_t count)
244235 {
245236 struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
246237 struct regmap *regmap = dev_get_drvdata(dev);
....@@ -273,7 +264,7 @@
273264 return ret < 0 ? ret : count;
274265 }
275266
276
-static ssize_t ltc2945_reset_history(struct device *dev,
267
+static ssize_t ltc2945_history_store(struct device *dev,
277268 struct device_attribute *da,
278269 const char *buf, size_t count)
279270 {
....@@ -326,7 +317,7 @@
326317 return ret ? : count;
327318 }
328319
329
-static ssize_t ltc2945_show_bool(struct device *dev,
320
+static ssize_t ltc2945_bool_show(struct device *dev,
330321 struct device_attribute *da, char *buf)
331322 {
332323 struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
....@@ -347,86 +338,65 @@
347338
348339 /* Input voltages */
349340
350
-static SENSOR_DEVICE_ATTR(in1_input, S_IRUGO, ltc2945_show_value, NULL,
351
- LTC2945_VIN_H);
352
-static SENSOR_DEVICE_ATTR(in1_min, S_IRUGO | S_IWUSR, ltc2945_show_value,
353
- ltc2945_set_value, LTC2945_MIN_VIN_THRES_H);
354
-static SENSOR_DEVICE_ATTR(in1_max, S_IRUGO | S_IWUSR, ltc2945_show_value,
355
- ltc2945_set_value, LTC2945_MAX_VIN_THRES_H);
356
-static SENSOR_DEVICE_ATTR(in1_lowest, S_IRUGO, ltc2945_show_value, NULL,
357
- LTC2945_MIN_VIN_H);
358
-static SENSOR_DEVICE_ATTR(in1_highest, S_IRUGO, ltc2945_show_value, NULL,
359
- LTC2945_MAX_VIN_H);
360
-static SENSOR_DEVICE_ATTR(in1_reset_history, S_IWUSR, NULL,
361
- ltc2945_reset_history, LTC2945_MIN_VIN_H);
341
+static SENSOR_DEVICE_ATTR_RO(in1_input, ltc2945_value, LTC2945_VIN_H);
342
+static SENSOR_DEVICE_ATTR_RW(in1_min, ltc2945_value, LTC2945_MIN_VIN_THRES_H);
343
+static SENSOR_DEVICE_ATTR_RW(in1_max, ltc2945_value, LTC2945_MAX_VIN_THRES_H);
344
+static SENSOR_DEVICE_ATTR_RO(in1_lowest, ltc2945_value, LTC2945_MIN_VIN_H);
345
+static SENSOR_DEVICE_ATTR_RO(in1_highest, ltc2945_value, LTC2945_MAX_VIN_H);
346
+static SENSOR_DEVICE_ATTR_WO(in1_reset_history, ltc2945_history,
347
+ LTC2945_MIN_VIN_H);
362348
363
-static SENSOR_DEVICE_ATTR(in2_input, S_IRUGO, ltc2945_show_value, NULL,
364
- LTC2945_ADIN_H);
365
-static SENSOR_DEVICE_ATTR(in2_min, S_IRUGO | S_IWUSR, ltc2945_show_value,
366
- ltc2945_set_value, LTC2945_MIN_ADIN_THRES_H);
367
-static SENSOR_DEVICE_ATTR(in2_max, S_IRUGO | S_IWUSR, ltc2945_show_value,
368
- ltc2945_set_value, LTC2945_MAX_ADIN_THRES_H);
369
-static SENSOR_DEVICE_ATTR(in2_lowest, S_IRUGO, ltc2945_show_value, NULL,
370
- LTC2945_MIN_ADIN_H);
371
-static SENSOR_DEVICE_ATTR(in2_highest, S_IRUGO, ltc2945_show_value, NULL,
372
- LTC2945_MAX_ADIN_H);
373
-static SENSOR_DEVICE_ATTR(in2_reset_history, S_IWUSR, NULL,
374
- ltc2945_reset_history, LTC2945_MIN_ADIN_H);
349
+static SENSOR_DEVICE_ATTR_RO(in2_input, ltc2945_value, LTC2945_ADIN_H);
350
+static SENSOR_DEVICE_ATTR_RW(in2_min, ltc2945_value, LTC2945_MIN_ADIN_THRES_H);
351
+static SENSOR_DEVICE_ATTR_RW(in2_max, ltc2945_value, LTC2945_MAX_ADIN_THRES_H);
352
+static SENSOR_DEVICE_ATTR_RO(in2_lowest, ltc2945_value, LTC2945_MIN_ADIN_H);
353
+static SENSOR_DEVICE_ATTR_RO(in2_highest, ltc2945_value, LTC2945_MAX_ADIN_H);
354
+static SENSOR_DEVICE_ATTR_WO(in2_reset_history, ltc2945_history,
355
+ LTC2945_MIN_ADIN_H);
375356
376357 /* Voltage alarms */
377358
378
-static SENSOR_DEVICE_ATTR(in1_min_alarm, S_IRUGO, ltc2945_show_bool, NULL,
379
- FAULT_VIN_UV);
380
-static SENSOR_DEVICE_ATTR(in1_max_alarm, S_IRUGO, ltc2945_show_bool, NULL,
381
- FAULT_VIN_OV);
382
-static SENSOR_DEVICE_ATTR(in2_min_alarm, S_IRUGO, ltc2945_show_bool, NULL,
383
- FAULT_ADIN_UV);
384
-static SENSOR_DEVICE_ATTR(in2_max_alarm, S_IRUGO, ltc2945_show_bool, NULL,
385
- FAULT_ADIN_OV);
359
+static SENSOR_DEVICE_ATTR_RO(in1_min_alarm, ltc2945_bool, FAULT_VIN_UV);
360
+static SENSOR_DEVICE_ATTR_RO(in1_max_alarm, ltc2945_bool, FAULT_VIN_OV);
361
+static SENSOR_DEVICE_ATTR_RO(in2_min_alarm, ltc2945_bool, FAULT_ADIN_UV);
362
+static SENSOR_DEVICE_ATTR_RO(in2_max_alarm, ltc2945_bool, FAULT_ADIN_OV);
386363
387364 /* Currents (via sense resistor) */
388365
389
-static SENSOR_DEVICE_ATTR(curr1_input, S_IRUGO, ltc2945_show_value, NULL,
390
- LTC2945_SENSE_H);
391
-static SENSOR_DEVICE_ATTR(curr1_min, S_IRUGO | S_IWUSR, ltc2945_show_value,
392
- ltc2945_set_value, LTC2945_MIN_SENSE_THRES_H);
393
-static SENSOR_DEVICE_ATTR(curr1_max, S_IRUGO | S_IWUSR, ltc2945_show_value,
394
- ltc2945_set_value, LTC2945_MAX_SENSE_THRES_H);
395
-static SENSOR_DEVICE_ATTR(curr1_lowest, S_IRUGO, ltc2945_show_value, NULL,
396
- LTC2945_MIN_SENSE_H);
397
-static SENSOR_DEVICE_ATTR(curr1_highest, S_IRUGO, ltc2945_show_value, NULL,
398
- LTC2945_MAX_SENSE_H);
399
-static SENSOR_DEVICE_ATTR(curr1_reset_history, S_IWUSR, NULL,
400
- ltc2945_reset_history, LTC2945_MIN_SENSE_H);
366
+static SENSOR_DEVICE_ATTR_RO(curr1_input, ltc2945_value, LTC2945_SENSE_H);
367
+static SENSOR_DEVICE_ATTR_RW(curr1_min, ltc2945_value,
368
+ LTC2945_MIN_SENSE_THRES_H);
369
+static SENSOR_DEVICE_ATTR_RW(curr1_max, ltc2945_value,
370
+ LTC2945_MAX_SENSE_THRES_H);
371
+static SENSOR_DEVICE_ATTR_RO(curr1_lowest, ltc2945_value, LTC2945_MIN_SENSE_H);
372
+static SENSOR_DEVICE_ATTR_RO(curr1_highest, ltc2945_value,
373
+ LTC2945_MAX_SENSE_H);
374
+static SENSOR_DEVICE_ATTR_WO(curr1_reset_history, ltc2945_history,
375
+ LTC2945_MIN_SENSE_H);
401376
402377 /* Current alarms */
403378
404
-static SENSOR_DEVICE_ATTR(curr1_min_alarm, S_IRUGO, ltc2945_show_bool, NULL,
405
- FAULT_SENSE_UV);
406
-static SENSOR_DEVICE_ATTR(curr1_max_alarm, S_IRUGO, ltc2945_show_bool, NULL,
407
- FAULT_SENSE_OV);
379
+static SENSOR_DEVICE_ATTR_RO(curr1_min_alarm, ltc2945_bool, FAULT_SENSE_UV);
380
+static SENSOR_DEVICE_ATTR_RO(curr1_max_alarm, ltc2945_bool, FAULT_SENSE_OV);
408381
409382 /* Power */
410383
411
-static SENSOR_DEVICE_ATTR(power1_input, S_IRUGO, ltc2945_show_value, NULL,
412
- LTC2945_POWER_H);
413
-static SENSOR_DEVICE_ATTR(power1_min, S_IRUGO | S_IWUSR, ltc2945_show_value,
414
- ltc2945_set_value, LTC2945_MIN_POWER_THRES_H);
415
-static SENSOR_DEVICE_ATTR(power1_max, S_IRUGO | S_IWUSR, ltc2945_show_value,
416
- ltc2945_set_value, LTC2945_MAX_POWER_THRES_H);
417
-static SENSOR_DEVICE_ATTR(power1_input_lowest, S_IRUGO, ltc2945_show_value,
418
- NULL, LTC2945_MIN_POWER_H);
419
-static SENSOR_DEVICE_ATTR(power1_input_highest, S_IRUGO, ltc2945_show_value,
420
- NULL, LTC2945_MAX_POWER_H);
421
-static SENSOR_DEVICE_ATTR(power1_reset_history, S_IWUSR, NULL,
422
- ltc2945_reset_history, LTC2945_MIN_POWER_H);
384
+static SENSOR_DEVICE_ATTR_RO(power1_input, ltc2945_value, LTC2945_POWER_H);
385
+static SENSOR_DEVICE_ATTR_RW(power1_min, ltc2945_value,
386
+ LTC2945_MIN_POWER_THRES_H);
387
+static SENSOR_DEVICE_ATTR_RW(power1_max, ltc2945_value,
388
+ LTC2945_MAX_POWER_THRES_H);
389
+static SENSOR_DEVICE_ATTR_RO(power1_input_lowest, ltc2945_value,
390
+ LTC2945_MIN_POWER_H);
391
+static SENSOR_DEVICE_ATTR_RO(power1_input_highest, ltc2945_value,
392
+ LTC2945_MAX_POWER_H);
393
+static SENSOR_DEVICE_ATTR_WO(power1_reset_history, ltc2945_history,
394
+ LTC2945_MIN_POWER_H);
423395
424396 /* Power alarms */
425397
426
-static SENSOR_DEVICE_ATTR(power1_min_alarm, S_IRUGO, ltc2945_show_bool, NULL,
427
- FAULT_POWER_UV);
428
-static SENSOR_DEVICE_ATTR(power1_max_alarm, S_IRUGO, ltc2945_show_bool, NULL,
429
- FAULT_POWER_OV);
398
+static SENSOR_DEVICE_ATTR_RO(power1_min_alarm, ltc2945_bool, FAULT_POWER_UV);
399
+static SENSOR_DEVICE_ATTR_RO(power1_max_alarm, ltc2945_bool, FAULT_POWER_OV);
430400
431401 static struct attribute *ltc2945_attrs[] = {
432402 &sensor_dev_attr_in1_input.dev_attr.attr,
....@@ -475,8 +445,7 @@
475445 .max_register = LTC2945_MIN_ADIN_THRES_L,
476446 };
477447
478
-static int ltc2945_probe(struct i2c_client *client,
479
- const struct i2c_device_id *id)
448
+static int ltc2945_probe(struct i2c_client *client)
480449 {
481450 struct device *dev = &client->dev;
482451 struct device *hwmon_dev;
....@@ -508,7 +477,7 @@
508477 .driver = {
509478 .name = "ltc2945",
510479 },
511
- .probe = ltc2945_probe,
480
+ .probe_new = ltc2945_probe,
512481 .id_table = ltc2945_id,
513482 };
514483