.. | .. |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-or-later |
---|
1 | 2 | /* |
---|
2 | 3 | * fschmd.c |
---|
3 | 4 | * |
---|
4 | 5 | * Copyright (C) 2007 - 2009 Hans de Goede <hdegoede@redhat.com> |
---|
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. |
---|
15 | | - * |
---|
16 | | - * You should have received a copy of the GNU General Public License |
---|
17 | | - * along with this program; if not, write to the Free Software |
---|
18 | | - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
---|
19 | 6 | */ |
---|
20 | 7 | |
---|
21 | 8 | /* |
---|
.. | .. |
---|
227 | 214 | * Functions declarations |
---|
228 | 215 | */ |
---|
229 | 216 | |
---|
230 | | -static int fschmd_probe(struct i2c_client *client, |
---|
231 | | - const struct i2c_device_id *id); |
---|
| 217 | +static int fschmd_probe(struct i2c_client *client); |
---|
232 | 218 | static int fschmd_detect(struct i2c_client *client, |
---|
233 | 219 | struct i2c_board_info *info); |
---|
234 | 220 | static int fschmd_remove(struct i2c_client *client); |
---|
.. | .. |
---|
255 | 241 | .driver = { |
---|
256 | 242 | .name = "fschmd", |
---|
257 | 243 | }, |
---|
258 | | - .probe = fschmd_probe, |
---|
| 244 | + .probe_new = fschmd_probe, |
---|
259 | 245 | .remove = fschmd_remove, |
---|
260 | 246 | .id_table = fschmd_id, |
---|
261 | 247 | .detect = fschmd_detect, |
---|
.. | .. |
---|
331 | 317 | * Sysfs attr show / store functions |
---|
332 | 318 | */ |
---|
333 | 319 | |
---|
334 | | -static ssize_t show_in_value(struct device *dev, |
---|
335 | | - struct device_attribute *devattr, char *buf) |
---|
| 320 | +static ssize_t in_value_show(struct device *dev, |
---|
| 321 | + struct device_attribute *devattr, char *buf) |
---|
336 | 322 | { |
---|
337 | 323 | const int max_reading[3] = { 14200, 6600, 3300 }; |
---|
338 | 324 | int index = to_sensor_dev_attr(devattr)->index; |
---|
.. | .. |
---|
349 | 335 | |
---|
350 | 336 | #define TEMP_FROM_REG(val) (((val) - 128) * 1000) |
---|
351 | 337 | |
---|
352 | | -static ssize_t show_temp_value(struct device *dev, |
---|
353 | | - struct device_attribute *devattr, char *buf) |
---|
| 338 | +static ssize_t temp_value_show(struct device *dev, |
---|
| 339 | + struct device_attribute *devattr, char *buf) |
---|
354 | 340 | { |
---|
355 | 341 | int index = to_sensor_dev_attr(devattr)->index; |
---|
356 | 342 | struct fschmd_data *data = fschmd_update_device(dev); |
---|
.. | .. |
---|
358 | 344 | return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp_act[index])); |
---|
359 | 345 | } |
---|
360 | 346 | |
---|
361 | | -static ssize_t show_temp_max(struct device *dev, |
---|
362 | | - struct device_attribute *devattr, char *buf) |
---|
| 347 | +static ssize_t temp_max_show(struct device *dev, |
---|
| 348 | + struct device_attribute *devattr, char *buf) |
---|
363 | 349 | { |
---|
364 | 350 | int index = to_sensor_dev_attr(devattr)->index; |
---|
365 | 351 | struct fschmd_data *data = fschmd_update_device(dev); |
---|
.. | .. |
---|
367 | 353 | return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp_max[index])); |
---|
368 | 354 | } |
---|
369 | 355 | |
---|
370 | | -static ssize_t store_temp_max(struct device *dev, struct device_attribute |
---|
371 | | - *devattr, const char *buf, size_t count) |
---|
| 356 | +static ssize_t temp_max_store(struct device *dev, |
---|
| 357 | + struct device_attribute *devattr, |
---|
| 358 | + const char *buf, size_t count) |
---|
372 | 359 | { |
---|
373 | 360 | int index = to_sensor_dev_attr(devattr)->index; |
---|
374 | 361 | struct fschmd_data *data = dev_get_drvdata(dev); |
---|
.. | .. |
---|
390 | 377 | return count; |
---|
391 | 378 | } |
---|
392 | 379 | |
---|
393 | | -static ssize_t show_temp_fault(struct device *dev, |
---|
394 | | - struct device_attribute *devattr, char *buf) |
---|
| 380 | +static ssize_t temp_fault_show(struct device *dev, |
---|
| 381 | + struct device_attribute *devattr, char *buf) |
---|
395 | 382 | { |
---|
396 | 383 | int index = to_sensor_dev_attr(devattr)->index; |
---|
397 | 384 | struct fschmd_data *data = fschmd_update_device(dev); |
---|
.. | .. |
---|
403 | 390 | return sprintf(buf, "1\n"); |
---|
404 | 391 | } |
---|
405 | 392 | |
---|
406 | | -static ssize_t show_temp_alarm(struct device *dev, |
---|
407 | | - struct device_attribute *devattr, char *buf) |
---|
| 393 | +static ssize_t temp_alarm_show(struct device *dev, |
---|
| 394 | + struct device_attribute *devattr, char *buf) |
---|
408 | 395 | { |
---|
409 | 396 | int index = to_sensor_dev_attr(devattr)->index; |
---|
410 | 397 | struct fschmd_data *data = fschmd_update_device(dev); |
---|
.. | .. |
---|
419 | 406 | |
---|
420 | 407 | #define RPM_FROM_REG(val) ((val) * 60) |
---|
421 | 408 | |
---|
422 | | -static ssize_t show_fan_value(struct device *dev, |
---|
423 | | - struct device_attribute *devattr, char *buf) |
---|
| 409 | +static ssize_t fan_value_show(struct device *dev, |
---|
| 410 | + struct device_attribute *devattr, char *buf) |
---|
424 | 411 | { |
---|
425 | 412 | int index = to_sensor_dev_attr(devattr)->index; |
---|
426 | 413 | struct fschmd_data *data = fschmd_update_device(dev); |
---|
.. | .. |
---|
428 | 415 | return sprintf(buf, "%u\n", RPM_FROM_REG(data->fan_act[index])); |
---|
429 | 416 | } |
---|
430 | 417 | |
---|
431 | | -static ssize_t show_fan_div(struct device *dev, |
---|
432 | | - struct device_attribute *devattr, char *buf) |
---|
| 418 | +static ssize_t fan_div_show(struct device *dev, |
---|
| 419 | + struct device_attribute *devattr, char *buf) |
---|
433 | 420 | { |
---|
434 | 421 | int index = to_sensor_dev_attr(devattr)->index; |
---|
435 | 422 | struct fschmd_data *data = fschmd_update_device(dev); |
---|
.. | .. |
---|
438 | 425 | return sprintf(buf, "%d\n", 1 << (data->fan_ripple[index] & 3)); |
---|
439 | 426 | } |
---|
440 | 427 | |
---|
441 | | -static ssize_t store_fan_div(struct device *dev, struct device_attribute |
---|
442 | | - *devattr, const char *buf, size_t count) |
---|
| 428 | +static ssize_t fan_div_store(struct device *dev, |
---|
| 429 | + struct device_attribute *devattr, |
---|
| 430 | + const char *buf, size_t count) |
---|
443 | 431 | { |
---|
444 | 432 | u8 reg; |
---|
445 | 433 | int index = to_sensor_dev_attr(devattr)->index; |
---|
.. | .. |
---|
488 | 476 | return count; |
---|
489 | 477 | } |
---|
490 | 478 | |
---|
491 | | -static ssize_t show_fan_alarm(struct device *dev, |
---|
492 | | - struct device_attribute *devattr, char *buf) |
---|
| 479 | +static ssize_t fan_alarm_show(struct device *dev, |
---|
| 480 | + struct device_attribute *devattr, char *buf) |
---|
493 | 481 | { |
---|
494 | 482 | int index = to_sensor_dev_attr(devattr)->index; |
---|
495 | 483 | struct fschmd_data *data = fschmd_update_device(dev); |
---|
.. | .. |
---|
500 | 488 | return sprintf(buf, "0\n"); |
---|
501 | 489 | } |
---|
502 | 490 | |
---|
503 | | -static ssize_t show_fan_fault(struct device *dev, |
---|
504 | | - struct device_attribute *devattr, char *buf) |
---|
| 491 | +static ssize_t fan_fault_show(struct device *dev, |
---|
| 492 | + struct device_attribute *devattr, char *buf) |
---|
505 | 493 | { |
---|
506 | 494 | int index = to_sensor_dev_attr(devattr)->index; |
---|
507 | 495 | struct fschmd_data *data = fschmd_update_device(dev); |
---|
.. | .. |
---|
513 | 501 | } |
---|
514 | 502 | |
---|
515 | 503 | |
---|
516 | | -static ssize_t show_pwm_auto_point1_pwm(struct device *dev, |
---|
517 | | - struct device_attribute *devattr, char *buf) |
---|
| 504 | +static ssize_t pwm_auto_point1_pwm_show(struct device *dev, |
---|
| 505 | + struct device_attribute *devattr, |
---|
| 506 | + char *buf) |
---|
518 | 507 | { |
---|
519 | 508 | int index = to_sensor_dev_attr(devattr)->index; |
---|
520 | 509 | struct fschmd_data *data = fschmd_update_device(dev); |
---|
.. | .. |
---|
527 | 516 | return sprintf(buf, "%d\n", val); |
---|
528 | 517 | } |
---|
529 | 518 | |
---|
530 | | -static ssize_t store_pwm_auto_point1_pwm(struct device *dev, |
---|
531 | | - struct device_attribute *devattr, const char *buf, size_t count) |
---|
| 519 | +static ssize_t pwm_auto_point1_pwm_store(struct device *dev, |
---|
| 520 | + struct device_attribute *devattr, |
---|
| 521 | + const char *buf, size_t count) |
---|
532 | 522 | { |
---|
533 | 523 | int index = to_sensor_dev_attr(devattr)->index; |
---|
534 | 524 | struct fschmd_data *data = dev_get_drvdata(dev); |
---|
.. | .. |
---|
605 | 595 | static DEVICE_ATTR_RW(alert_led); |
---|
606 | 596 | |
---|
607 | 597 | static struct sensor_device_attribute fschmd_attr[] = { |
---|
608 | | - SENSOR_ATTR(in0_input, 0444, show_in_value, NULL, 0), |
---|
609 | | - SENSOR_ATTR(in1_input, 0444, show_in_value, NULL, 1), |
---|
610 | | - SENSOR_ATTR(in2_input, 0444, show_in_value, NULL, 2), |
---|
611 | | - SENSOR_ATTR(in3_input, 0444, show_in_value, NULL, 3), |
---|
612 | | - SENSOR_ATTR(in4_input, 0444, show_in_value, NULL, 4), |
---|
613 | | - SENSOR_ATTR(in5_input, 0444, show_in_value, NULL, 5), |
---|
| 598 | + SENSOR_ATTR_RO(in0_input, in_value, 0), |
---|
| 599 | + SENSOR_ATTR_RO(in1_input, in_value, 1), |
---|
| 600 | + SENSOR_ATTR_RO(in2_input, in_value, 2), |
---|
| 601 | + SENSOR_ATTR_RO(in3_input, in_value, 3), |
---|
| 602 | + SENSOR_ATTR_RO(in4_input, in_value, 4), |
---|
| 603 | + SENSOR_ATTR_RO(in5_input, in_value, 5), |
---|
614 | 604 | }; |
---|
615 | 605 | |
---|
616 | 606 | static struct sensor_device_attribute fschmd_temp_attr[] = { |
---|
617 | | - SENSOR_ATTR(temp1_input, 0444, show_temp_value, NULL, 0), |
---|
618 | | - SENSOR_ATTR(temp1_max, 0644, show_temp_max, store_temp_max, 0), |
---|
619 | | - SENSOR_ATTR(temp1_fault, 0444, show_temp_fault, NULL, 0), |
---|
620 | | - SENSOR_ATTR(temp1_alarm, 0444, show_temp_alarm, NULL, 0), |
---|
621 | | - SENSOR_ATTR(temp2_input, 0444, show_temp_value, NULL, 1), |
---|
622 | | - SENSOR_ATTR(temp2_max, 0644, show_temp_max, store_temp_max, 1), |
---|
623 | | - SENSOR_ATTR(temp2_fault, 0444, show_temp_fault, NULL, 1), |
---|
624 | | - SENSOR_ATTR(temp2_alarm, 0444, show_temp_alarm, NULL, 1), |
---|
625 | | - SENSOR_ATTR(temp3_input, 0444, show_temp_value, NULL, 2), |
---|
626 | | - SENSOR_ATTR(temp3_max, 0644, show_temp_max, store_temp_max, 2), |
---|
627 | | - SENSOR_ATTR(temp3_fault, 0444, show_temp_fault, NULL, 2), |
---|
628 | | - SENSOR_ATTR(temp3_alarm, 0444, show_temp_alarm, NULL, 2), |
---|
629 | | - SENSOR_ATTR(temp4_input, 0444, show_temp_value, NULL, 3), |
---|
630 | | - SENSOR_ATTR(temp4_max, 0644, show_temp_max, store_temp_max, 3), |
---|
631 | | - SENSOR_ATTR(temp4_fault, 0444, show_temp_fault, NULL, 3), |
---|
632 | | - SENSOR_ATTR(temp4_alarm, 0444, show_temp_alarm, NULL, 3), |
---|
633 | | - SENSOR_ATTR(temp5_input, 0444, show_temp_value, NULL, 4), |
---|
634 | | - SENSOR_ATTR(temp5_max, 0644, show_temp_max, store_temp_max, 4), |
---|
635 | | - SENSOR_ATTR(temp5_fault, 0444, show_temp_fault, NULL, 4), |
---|
636 | | - SENSOR_ATTR(temp5_alarm, 0444, show_temp_alarm, NULL, 4), |
---|
637 | | - SENSOR_ATTR(temp6_input, 0444, show_temp_value, NULL, 5), |
---|
638 | | - SENSOR_ATTR(temp6_max, 0644, show_temp_max, store_temp_max, 5), |
---|
639 | | - SENSOR_ATTR(temp6_fault, 0444, show_temp_fault, NULL, 5), |
---|
640 | | - SENSOR_ATTR(temp6_alarm, 0444, show_temp_alarm, NULL, 5), |
---|
641 | | - SENSOR_ATTR(temp7_input, 0444, show_temp_value, NULL, 6), |
---|
642 | | - SENSOR_ATTR(temp7_max, 0644, show_temp_max, store_temp_max, 6), |
---|
643 | | - SENSOR_ATTR(temp7_fault, 0444, show_temp_fault, NULL, 6), |
---|
644 | | - SENSOR_ATTR(temp7_alarm, 0444, show_temp_alarm, NULL, 6), |
---|
645 | | - SENSOR_ATTR(temp8_input, 0444, show_temp_value, NULL, 7), |
---|
646 | | - SENSOR_ATTR(temp8_max, 0644, show_temp_max, store_temp_max, 7), |
---|
647 | | - SENSOR_ATTR(temp8_fault, 0444, show_temp_fault, NULL, 7), |
---|
648 | | - SENSOR_ATTR(temp8_alarm, 0444, show_temp_alarm, NULL, 7), |
---|
649 | | - SENSOR_ATTR(temp9_input, 0444, show_temp_value, NULL, 8), |
---|
650 | | - SENSOR_ATTR(temp9_max, 0644, show_temp_max, store_temp_max, 8), |
---|
651 | | - SENSOR_ATTR(temp9_fault, 0444, show_temp_fault, NULL, 8), |
---|
652 | | - SENSOR_ATTR(temp9_alarm, 0444, show_temp_alarm, NULL, 8), |
---|
653 | | - SENSOR_ATTR(temp10_input, 0444, show_temp_value, NULL, 9), |
---|
654 | | - SENSOR_ATTR(temp10_max, 0644, show_temp_max, store_temp_max, 9), |
---|
655 | | - SENSOR_ATTR(temp10_fault, 0444, show_temp_fault, NULL, 9), |
---|
656 | | - SENSOR_ATTR(temp10_alarm, 0444, show_temp_alarm, NULL, 9), |
---|
657 | | - SENSOR_ATTR(temp11_input, 0444, show_temp_value, NULL, 10), |
---|
658 | | - SENSOR_ATTR(temp11_max, 0644, show_temp_max, store_temp_max, 10), |
---|
659 | | - SENSOR_ATTR(temp11_fault, 0444, show_temp_fault, NULL, 10), |
---|
660 | | - SENSOR_ATTR(temp11_alarm, 0444, show_temp_alarm, NULL, 10), |
---|
| 607 | + SENSOR_ATTR_RO(temp1_input, temp_value, 0), |
---|
| 608 | + SENSOR_ATTR_RW(temp1_max, temp_max, 0), |
---|
| 609 | + SENSOR_ATTR_RO(temp1_fault, temp_fault, 0), |
---|
| 610 | + SENSOR_ATTR_RO(temp1_alarm, temp_alarm, 0), |
---|
| 611 | + SENSOR_ATTR_RO(temp2_input, temp_value, 1), |
---|
| 612 | + SENSOR_ATTR_RW(temp2_max, temp_max, 1), |
---|
| 613 | + SENSOR_ATTR_RO(temp2_fault, temp_fault, 1), |
---|
| 614 | + SENSOR_ATTR_RO(temp2_alarm, temp_alarm, 1), |
---|
| 615 | + SENSOR_ATTR_RO(temp3_input, temp_value, 2), |
---|
| 616 | + SENSOR_ATTR_RW(temp3_max, temp_max, 2), |
---|
| 617 | + SENSOR_ATTR_RO(temp3_fault, temp_fault, 2), |
---|
| 618 | + SENSOR_ATTR_RO(temp3_alarm, temp_alarm, 2), |
---|
| 619 | + SENSOR_ATTR_RO(temp4_input, temp_value, 3), |
---|
| 620 | + SENSOR_ATTR_RW(temp4_max, temp_max, 3), |
---|
| 621 | + SENSOR_ATTR_RO(temp4_fault, temp_fault, 3), |
---|
| 622 | + SENSOR_ATTR_RO(temp4_alarm, temp_alarm, 3), |
---|
| 623 | + SENSOR_ATTR_RO(temp5_input, temp_value, 4), |
---|
| 624 | + SENSOR_ATTR_RW(temp5_max, temp_max, 4), |
---|
| 625 | + SENSOR_ATTR_RO(temp5_fault, temp_fault, 4), |
---|
| 626 | + SENSOR_ATTR_RO(temp5_alarm, temp_alarm, 4), |
---|
| 627 | + SENSOR_ATTR_RO(temp6_input, temp_value, 5), |
---|
| 628 | + SENSOR_ATTR_RW(temp6_max, temp_max, 5), |
---|
| 629 | + SENSOR_ATTR_RO(temp6_fault, temp_fault, 5), |
---|
| 630 | + SENSOR_ATTR_RO(temp6_alarm, temp_alarm, 5), |
---|
| 631 | + SENSOR_ATTR_RO(temp7_input, temp_value, 6), |
---|
| 632 | + SENSOR_ATTR_RW(temp7_max, temp_max, 6), |
---|
| 633 | + SENSOR_ATTR_RO(temp7_fault, temp_fault, 6), |
---|
| 634 | + SENSOR_ATTR_RO(temp7_alarm, temp_alarm, 6), |
---|
| 635 | + SENSOR_ATTR_RO(temp8_input, temp_value, 7), |
---|
| 636 | + SENSOR_ATTR_RW(temp8_max, temp_max, 7), |
---|
| 637 | + SENSOR_ATTR_RO(temp8_fault, temp_fault, 7), |
---|
| 638 | + SENSOR_ATTR_RO(temp8_alarm, temp_alarm, 7), |
---|
| 639 | + SENSOR_ATTR_RO(temp9_input, temp_value, 8), |
---|
| 640 | + SENSOR_ATTR_RW(temp9_max, temp_max, 8), |
---|
| 641 | + SENSOR_ATTR_RO(temp9_fault, temp_fault, 8), |
---|
| 642 | + SENSOR_ATTR_RO(temp9_alarm, temp_alarm, 8), |
---|
| 643 | + SENSOR_ATTR_RO(temp10_input, temp_value, 9), |
---|
| 644 | + SENSOR_ATTR_RW(temp10_max, temp_max, 9), |
---|
| 645 | + SENSOR_ATTR_RO(temp10_fault, temp_fault, 9), |
---|
| 646 | + SENSOR_ATTR_RO(temp10_alarm, temp_alarm, 9), |
---|
| 647 | + SENSOR_ATTR_RO(temp11_input, temp_value, 10), |
---|
| 648 | + SENSOR_ATTR_RW(temp11_max, temp_max, 10), |
---|
| 649 | + SENSOR_ATTR_RO(temp11_fault, temp_fault, 10), |
---|
| 650 | + SENSOR_ATTR_RO(temp11_alarm, temp_alarm, 10), |
---|
661 | 651 | }; |
---|
662 | 652 | |
---|
663 | 653 | static struct sensor_device_attribute fschmd_fan_attr[] = { |
---|
664 | | - SENSOR_ATTR(fan1_input, 0444, show_fan_value, NULL, 0), |
---|
665 | | - SENSOR_ATTR(fan1_div, 0644, show_fan_div, store_fan_div, 0), |
---|
666 | | - SENSOR_ATTR(fan1_alarm, 0444, show_fan_alarm, NULL, 0), |
---|
667 | | - SENSOR_ATTR(fan1_fault, 0444, show_fan_fault, NULL, 0), |
---|
668 | | - SENSOR_ATTR(pwm1_auto_point1_pwm, 0644, show_pwm_auto_point1_pwm, |
---|
669 | | - store_pwm_auto_point1_pwm, 0), |
---|
670 | | - SENSOR_ATTR(fan2_input, 0444, show_fan_value, NULL, 1), |
---|
671 | | - SENSOR_ATTR(fan2_div, 0644, show_fan_div, store_fan_div, 1), |
---|
672 | | - SENSOR_ATTR(fan2_alarm, 0444, show_fan_alarm, NULL, 1), |
---|
673 | | - SENSOR_ATTR(fan2_fault, 0444, show_fan_fault, NULL, 1), |
---|
674 | | - SENSOR_ATTR(pwm2_auto_point1_pwm, 0644, show_pwm_auto_point1_pwm, |
---|
675 | | - store_pwm_auto_point1_pwm, 1), |
---|
676 | | - SENSOR_ATTR(fan3_input, 0444, show_fan_value, NULL, 2), |
---|
677 | | - SENSOR_ATTR(fan3_div, 0644, show_fan_div, store_fan_div, 2), |
---|
678 | | - SENSOR_ATTR(fan3_alarm, 0444, show_fan_alarm, NULL, 2), |
---|
679 | | - SENSOR_ATTR(fan3_fault, 0444, show_fan_fault, NULL, 2), |
---|
680 | | - SENSOR_ATTR(pwm3_auto_point1_pwm, 0644, show_pwm_auto_point1_pwm, |
---|
681 | | - store_pwm_auto_point1_pwm, 2), |
---|
682 | | - SENSOR_ATTR(fan4_input, 0444, show_fan_value, NULL, 3), |
---|
683 | | - SENSOR_ATTR(fan4_div, 0644, show_fan_div, store_fan_div, 3), |
---|
684 | | - SENSOR_ATTR(fan4_alarm, 0444, show_fan_alarm, NULL, 3), |
---|
685 | | - SENSOR_ATTR(fan4_fault, 0444, show_fan_fault, NULL, 3), |
---|
686 | | - SENSOR_ATTR(pwm4_auto_point1_pwm, 0644, show_pwm_auto_point1_pwm, |
---|
687 | | - store_pwm_auto_point1_pwm, 3), |
---|
688 | | - SENSOR_ATTR(fan5_input, 0444, show_fan_value, NULL, 4), |
---|
689 | | - SENSOR_ATTR(fan5_div, 0644, show_fan_div, store_fan_div, 4), |
---|
690 | | - SENSOR_ATTR(fan5_alarm, 0444, show_fan_alarm, NULL, 4), |
---|
691 | | - SENSOR_ATTR(fan5_fault, 0444, show_fan_fault, NULL, 4), |
---|
692 | | - SENSOR_ATTR(pwm5_auto_point1_pwm, 0644, show_pwm_auto_point1_pwm, |
---|
693 | | - store_pwm_auto_point1_pwm, 4), |
---|
694 | | - SENSOR_ATTR(fan6_input, 0444, show_fan_value, NULL, 5), |
---|
695 | | - SENSOR_ATTR(fan6_div, 0644, show_fan_div, store_fan_div, 5), |
---|
696 | | - SENSOR_ATTR(fan6_alarm, 0444, show_fan_alarm, NULL, 5), |
---|
697 | | - SENSOR_ATTR(fan6_fault, 0444, show_fan_fault, NULL, 5), |
---|
698 | | - SENSOR_ATTR(pwm6_auto_point1_pwm, 0644, show_pwm_auto_point1_pwm, |
---|
699 | | - store_pwm_auto_point1_pwm, 5), |
---|
700 | | - SENSOR_ATTR(fan7_input, 0444, show_fan_value, NULL, 6), |
---|
701 | | - SENSOR_ATTR(fan7_div, 0644, show_fan_div, store_fan_div, 6), |
---|
702 | | - SENSOR_ATTR(fan7_alarm, 0444, show_fan_alarm, NULL, 6), |
---|
703 | | - SENSOR_ATTR(fan7_fault, 0444, show_fan_fault, NULL, 6), |
---|
704 | | - SENSOR_ATTR(pwm7_auto_point1_pwm, 0644, show_pwm_auto_point1_pwm, |
---|
705 | | - store_pwm_auto_point1_pwm, 6), |
---|
| 654 | + SENSOR_ATTR_RO(fan1_input, fan_value, 0), |
---|
| 655 | + SENSOR_ATTR_RW(fan1_div, fan_div, 0), |
---|
| 656 | + SENSOR_ATTR_RO(fan1_alarm, fan_alarm, 0), |
---|
| 657 | + SENSOR_ATTR_RO(fan1_fault, fan_fault, 0), |
---|
| 658 | + SENSOR_ATTR_RW(pwm1_auto_point1_pwm, pwm_auto_point1_pwm, 0), |
---|
| 659 | + SENSOR_ATTR_RO(fan2_input, fan_value, 1), |
---|
| 660 | + SENSOR_ATTR_RW(fan2_div, fan_div, 1), |
---|
| 661 | + SENSOR_ATTR_RO(fan2_alarm, fan_alarm, 1), |
---|
| 662 | + SENSOR_ATTR_RO(fan2_fault, fan_fault, 1), |
---|
| 663 | + SENSOR_ATTR_RW(pwm2_auto_point1_pwm, pwm_auto_point1_pwm, 1), |
---|
| 664 | + SENSOR_ATTR_RO(fan3_input, fan_value, 2), |
---|
| 665 | + SENSOR_ATTR_RW(fan3_div, fan_div, 2), |
---|
| 666 | + SENSOR_ATTR_RO(fan3_alarm, fan_alarm, 2), |
---|
| 667 | + SENSOR_ATTR_RO(fan3_fault, fan_fault, 2), |
---|
| 668 | + SENSOR_ATTR_RW(pwm3_auto_point1_pwm, pwm_auto_point1_pwm, 2), |
---|
| 669 | + SENSOR_ATTR_RO(fan4_input, fan_value, 3), |
---|
| 670 | + SENSOR_ATTR_RW(fan4_div, fan_div, 3), |
---|
| 671 | + SENSOR_ATTR_RO(fan4_alarm, fan_alarm, 3), |
---|
| 672 | + SENSOR_ATTR_RO(fan4_fault, fan_fault, 3), |
---|
| 673 | + SENSOR_ATTR_RW(pwm4_auto_point1_pwm, pwm_auto_point1_pwm, 3), |
---|
| 674 | + SENSOR_ATTR_RO(fan5_input, fan_value, 4), |
---|
| 675 | + SENSOR_ATTR_RW(fan5_div, fan_div, 4), |
---|
| 676 | + SENSOR_ATTR_RO(fan5_alarm, fan_alarm, 4), |
---|
| 677 | + SENSOR_ATTR_RO(fan5_fault, fan_fault, 4), |
---|
| 678 | + SENSOR_ATTR_RW(pwm5_auto_point1_pwm, pwm_auto_point1_pwm, 4), |
---|
| 679 | + SENSOR_ATTR_RO(fan6_input, fan_value, 5), |
---|
| 680 | + SENSOR_ATTR_RW(fan6_div, fan_div, 5), |
---|
| 681 | + SENSOR_ATTR_RO(fan6_alarm, fan_alarm, 5), |
---|
| 682 | + SENSOR_ATTR_RO(fan6_fault, fan_fault, 5), |
---|
| 683 | + SENSOR_ATTR_RW(pwm6_auto_point1_pwm, pwm_auto_point1_pwm, 5), |
---|
| 684 | + SENSOR_ATTR_RO(fan7_input, fan_value, 6), |
---|
| 685 | + SENSOR_ATTR_RW(fan7_div, fan_div, 6), |
---|
| 686 | + SENSOR_ATTR_RO(fan7_alarm, fan_alarm, 6), |
---|
| 687 | + SENSOR_ATTR_RO(fan7_fault, fan_fault, 6), |
---|
| 688 | + SENSOR_ATTR_RW(pwm7_auto_point1_pwm, pwm_auto_point1_pwm, 6), |
---|
706 | 689 | }; |
---|
707 | 690 | |
---|
708 | 691 | |
---|
.. | .. |
---|
840 | 823 | watchdog_trigger(data); |
---|
841 | 824 | filp->private_data = data; |
---|
842 | 825 | |
---|
843 | | - return nonseekable_open(inode, filp); |
---|
| 826 | + return stream_open(inode, filp); |
---|
844 | 827 | } |
---|
845 | 828 | |
---|
846 | 829 | static int watchdog_release(struct inode *inode, struct file *filp) |
---|
.. | .. |
---|
970 | 953 | .release = watchdog_release, |
---|
971 | 954 | .write = watchdog_write, |
---|
972 | 955 | .unlocked_ioctl = watchdog_ioctl, |
---|
| 956 | + .compat_ioctl = compat_ptr_ioctl, |
---|
973 | 957 | }; |
---|
974 | 958 | |
---|
975 | 959 | |
---|
.. | .. |
---|
1096 | 1080 | return 0; |
---|
1097 | 1081 | } |
---|
1098 | 1082 | |
---|
1099 | | -static int fschmd_probe(struct i2c_client *client, |
---|
1100 | | - const struct i2c_device_id *id) |
---|
| 1083 | +static int fschmd_probe(struct i2c_client *client) |
---|
1101 | 1084 | { |
---|
1102 | 1085 | struct fschmd_data *data; |
---|
1103 | 1086 | const char * const names[7] = { "Poseidon", "Hermes", "Scylla", |
---|
1104 | 1087 | "Heracles", "Heimdall", "Hades", "Syleus" }; |
---|
1105 | 1088 | const int watchdog_minors[] = { WATCHDOG_MINOR, 212, 213, 214, 215 }; |
---|
1106 | 1089 | int i, err; |
---|
1107 | | - enum chips kind = id->driver_data; |
---|
| 1090 | + enum chips kind = i2c_match_id(fschmd_id, client)->driver_data; |
---|
1108 | 1091 | |
---|
1109 | 1092 | data = kzalloc(sizeof(struct fschmd_data), GFP_KERNEL); |
---|
1110 | 1093 | if (!data) |
---|
.. | .. |
---|
1169 | 1152 | for (i = 0; i < (FSCHMD_NO_TEMP_SENSORS[data->kind] * 4); i++) { |
---|
1170 | 1153 | /* Poseidon doesn't have TEMP_LIMIT registers */ |
---|
1171 | 1154 | if (kind == fscpos && fschmd_temp_attr[i].dev_attr.show == |
---|
1172 | | - show_temp_max) |
---|
| 1155 | + temp_max_show) |
---|
1173 | 1156 | continue; |
---|
1174 | 1157 | |
---|
1175 | 1158 | if (kind == fscsyl) { |
---|