| .. | .. |
|---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-or-later |
|---|
| 1 | 2 | /* |
|---|
| 2 | 3 | * Support for the FTS Systemmonitoring Chip "Teutates" |
|---|
| 3 | 4 | * |
|---|
| 4 | 5 | * Copyright (C) 2016 Fujitsu Technology Solutions GmbH, |
|---|
| 5 | 6 | * Thilo Cestonaro <thilo.cestonaro@ts.fujitsu.com> |
|---|
| 6 | | - * |
|---|
| 7 | | - * This program is free software; you can redistribute it and/or modify |
|---|
| 8 | | - * it under the terms of the GNU General Public License as published by |
|---|
| 9 | | - * the Free Software Foundation; either version 2 of the License, or |
|---|
| 10 | | - * (at your option) any later version. |
|---|
| 11 | | - * |
|---|
| 12 | | - * This program is distributed in the hope that it will be useful, |
|---|
| 13 | | - * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|---|
| 14 | | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|---|
| 15 | | - * GNU General Public License for more details. |
|---|
| 16 | | - * |
|---|
| 17 | 7 | */ |
|---|
| 18 | 8 | #include <linux/err.h> |
|---|
| 19 | 9 | #include <linux/fs.h> |
|---|
| .. | .. |
|---|
| 352 | 342 | /*****************************************************************************/ |
|---|
| 353 | 343 | /* SysFS handler functions */ |
|---|
| 354 | 344 | /*****************************************************************************/ |
|---|
| 355 | | -static ssize_t show_in_value(struct device *dev, |
|---|
| 345 | +static ssize_t in_value_show(struct device *dev, |
|---|
| 356 | 346 | struct device_attribute *devattr, char *buf) |
|---|
| 357 | 347 | { |
|---|
| 358 | 348 | struct fts_data *data = dev_get_drvdata(dev); |
|---|
| .. | .. |
|---|
| 366 | 356 | return sprintf(buf, "%u\n", data->volt[index]); |
|---|
| 367 | 357 | } |
|---|
| 368 | 358 | |
|---|
| 369 | | -static ssize_t show_temp_value(struct device *dev, |
|---|
| 359 | +static ssize_t temp_value_show(struct device *dev, |
|---|
| 370 | 360 | struct device_attribute *devattr, char *buf) |
|---|
| 371 | 361 | { |
|---|
| 372 | 362 | struct fts_data *data = dev_get_drvdata(dev); |
|---|
| .. | .. |
|---|
| 380 | 370 | return sprintf(buf, "%u\n", data->temp_input[index]); |
|---|
| 381 | 371 | } |
|---|
| 382 | 372 | |
|---|
| 383 | | -static ssize_t show_temp_fault(struct device *dev, |
|---|
| 373 | +static ssize_t temp_fault_show(struct device *dev, |
|---|
| 384 | 374 | struct device_attribute *devattr, char *buf) |
|---|
| 385 | 375 | { |
|---|
| 386 | 376 | struct fts_data *data = dev_get_drvdata(dev); |
|---|
| .. | .. |
|---|
| 395 | 385 | return sprintf(buf, "%d\n", data->temp_input[index] == 0); |
|---|
| 396 | 386 | } |
|---|
| 397 | 387 | |
|---|
| 398 | | -static ssize_t show_temp_alarm(struct device *dev, |
|---|
| 388 | +static ssize_t temp_alarm_show(struct device *dev, |
|---|
| 399 | 389 | struct device_attribute *devattr, char *buf) |
|---|
| 400 | 390 | { |
|---|
| 401 | 391 | struct fts_data *data = dev_get_drvdata(dev); |
|---|
| .. | .. |
|---|
| 410 | 400 | } |
|---|
| 411 | 401 | |
|---|
| 412 | 402 | static ssize_t |
|---|
| 413 | | -clear_temp_alarm(struct device *dev, struct device_attribute *devattr, |
|---|
| 403 | +temp_alarm_store(struct device *dev, struct device_attribute *devattr, |
|---|
| 414 | 404 | const char *buf, size_t count) |
|---|
| 415 | 405 | { |
|---|
| 416 | 406 | struct fts_data *data = dev_get_drvdata(dev); |
|---|
| .. | .. |
|---|
| 441 | 431 | return ret; |
|---|
| 442 | 432 | } |
|---|
| 443 | 433 | |
|---|
| 444 | | -static ssize_t show_fan_value(struct device *dev, |
|---|
| 434 | +static ssize_t fan_value_show(struct device *dev, |
|---|
| 445 | 435 | struct device_attribute *devattr, char *buf) |
|---|
| 446 | 436 | { |
|---|
| 447 | 437 | struct fts_data *data = dev_get_drvdata(dev); |
|---|
| .. | .. |
|---|
| 455 | 445 | return sprintf(buf, "%u\n", data->fan_input[index]); |
|---|
| 456 | 446 | } |
|---|
| 457 | 447 | |
|---|
| 458 | | -static ssize_t show_fan_source(struct device *dev, |
|---|
| 448 | +static ssize_t fan_source_show(struct device *dev, |
|---|
| 459 | 449 | struct device_attribute *devattr, char *buf) |
|---|
| 460 | 450 | { |
|---|
| 461 | 451 | struct fts_data *data = dev_get_drvdata(dev); |
|---|
| .. | .. |
|---|
| 469 | 459 | return sprintf(buf, "%u\n", data->fan_source[index]); |
|---|
| 470 | 460 | } |
|---|
| 471 | 461 | |
|---|
| 472 | | -static ssize_t show_fan_alarm(struct device *dev, |
|---|
| 462 | +static ssize_t fan_alarm_show(struct device *dev, |
|---|
| 473 | 463 | struct device_attribute *devattr, char *buf) |
|---|
| 474 | 464 | { |
|---|
| 475 | 465 | struct fts_data *data = dev_get_drvdata(dev); |
|---|
| .. | .. |
|---|
| 484 | 474 | } |
|---|
| 485 | 475 | |
|---|
| 486 | 476 | static ssize_t |
|---|
| 487 | | -clear_fan_alarm(struct device *dev, struct device_attribute *devattr, |
|---|
| 477 | +fan_alarm_store(struct device *dev, struct device_attribute *devattr, |
|---|
| 488 | 478 | const char *buf, size_t count) |
|---|
| 489 | 479 | { |
|---|
| 490 | 480 | struct fts_data *data = dev_get_drvdata(dev); |
|---|
| .. | .. |
|---|
| 520 | 510 | /*****************************************************************************/ |
|---|
| 521 | 511 | |
|---|
| 522 | 512 | /* Temprature sensors */ |
|---|
| 523 | | -static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, show_temp_value, NULL, 0); |
|---|
| 524 | | -static SENSOR_DEVICE_ATTR(temp2_input, S_IRUGO, show_temp_value, NULL, 1); |
|---|
| 525 | | -static SENSOR_DEVICE_ATTR(temp3_input, S_IRUGO, show_temp_value, NULL, 2); |
|---|
| 526 | | -static SENSOR_DEVICE_ATTR(temp4_input, S_IRUGO, show_temp_value, NULL, 3); |
|---|
| 527 | | -static SENSOR_DEVICE_ATTR(temp5_input, S_IRUGO, show_temp_value, NULL, 4); |
|---|
| 528 | | -static SENSOR_DEVICE_ATTR(temp6_input, S_IRUGO, show_temp_value, NULL, 5); |
|---|
| 529 | | -static SENSOR_DEVICE_ATTR(temp7_input, S_IRUGO, show_temp_value, NULL, 6); |
|---|
| 530 | | -static SENSOR_DEVICE_ATTR(temp8_input, S_IRUGO, show_temp_value, NULL, 7); |
|---|
| 531 | | -static SENSOR_DEVICE_ATTR(temp9_input, S_IRUGO, show_temp_value, NULL, 8); |
|---|
| 532 | | -static SENSOR_DEVICE_ATTR(temp10_input, S_IRUGO, show_temp_value, NULL, 9); |
|---|
| 533 | | -static SENSOR_DEVICE_ATTR(temp11_input, S_IRUGO, show_temp_value, NULL, 10); |
|---|
| 534 | | -static SENSOR_DEVICE_ATTR(temp12_input, S_IRUGO, show_temp_value, NULL, 11); |
|---|
| 535 | | -static SENSOR_DEVICE_ATTR(temp13_input, S_IRUGO, show_temp_value, NULL, 12); |
|---|
| 536 | | -static SENSOR_DEVICE_ATTR(temp14_input, S_IRUGO, show_temp_value, NULL, 13); |
|---|
| 537 | | -static SENSOR_DEVICE_ATTR(temp15_input, S_IRUGO, show_temp_value, NULL, 14); |
|---|
| 538 | | -static SENSOR_DEVICE_ATTR(temp16_input, S_IRUGO, show_temp_value, NULL, 15); |
|---|
| 513 | +static SENSOR_DEVICE_ATTR_RO(temp1_input, temp_value, 0); |
|---|
| 514 | +static SENSOR_DEVICE_ATTR_RO(temp2_input, temp_value, 1); |
|---|
| 515 | +static SENSOR_DEVICE_ATTR_RO(temp3_input, temp_value, 2); |
|---|
| 516 | +static SENSOR_DEVICE_ATTR_RO(temp4_input, temp_value, 3); |
|---|
| 517 | +static SENSOR_DEVICE_ATTR_RO(temp5_input, temp_value, 4); |
|---|
| 518 | +static SENSOR_DEVICE_ATTR_RO(temp6_input, temp_value, 5); |
|---|
| 519 | +static SENSOR_DEVICE_ATTR_RO(temp7_input, temp_value, 6); |
|---|
| 520 | +static SENSOR_DEVICE_ATTR_RO(temp8_input, temp_value, 7); |
|---|
| 521 | +static SENSOR_DEVICE_ATTR_RO(temp9_input, temp_value, 8); |
|---|
| 522 | +static SENSOR_DEVICE_ATTR_RO(temp10_input, temp_value, 9); |
|---|
| 523 | +static SENSOR_DEVICE_ATTR_RO(temp11_input, temp_value, 10); |
|---|
| 524 | +static SENSOR_DEVICE_ATTR_RO(temp12_input, temp_value, 11); |
|---|
| 525 | +static SENSOR_DEVICE_ATTR_RO(temp13_input, temp_value, 12); |
|---|
| 526 | +static SENSOR_DEVICE_ATTR_RO(temp14_input, temp_value, 13); |
|---|
| 527 | +static SENSOR_DEVICE_ATTR_RO(temp15_input, temp_value, 14); |
|---|
| 528 | +static SENSOR_DEVICE_ATTR_RO(temp16_input, temp_value, 15); |
|---|
| 539 | 529 | |
|---|
| 540 | | -static SENSOR_DEVICE_ATTR(temp1_fault, S_IRUGO, show_temp_fault, NULL, 0); |
|---|
| 541 | | -static SENSOR_DEVICE_ATTR(temp2_fault, S_IRUGO, show_temp_fault, NULL, 1); |
|---|
| 542 | | -static SENSOR_DEVICE_ATTR(temp3_fault, S_IRUGO, show_temp_fault, NULL, 2); |
|---|
| 543 | | -static SENSOR_DEVICE_ATTR(temp4_fault, S_IRUGO, show_temp_fault, NULL, 3); |
|---|
| 544 | | -static SENSOR_DEVICE_ATTR(temp5_fault, S_IRUGO, show_temp_fault, NULL, 4); |
|---|
| 545 | | -static SENSOR_DEVICE_ATTR(temp6_fault, S_IRUGO, show_temp_fault, NULL, 5); |
|---|
| 546 | | -static SENSOR_DEVICE_ATTR(temp7_fault, S_IRUGO, show_temp_fault, NULL, 6); |
|---|
| 547 | | -static SENSOR_DEVICE_ATTR(temp8_fault, S_IRUGO, show_temp_fault, NULL, 7); |
|---|
| 548 | | -static SENSOR_DEVICE_ATTR(temp9_fault, S_IRUGO, show_temp_fault, NULL, 8); |
|---|
| 549 | | -static SENSOR_DEVICE_ATTR(temp10_fault, S_IRUGO, show_temp_fault, NULL, 9); |
|---|
| 550 | | -static SENSOR_DEVICE_ATTR(temp11_fault, S_IRUGO, show_temp_fault, NULL, 10); |
|---|
| 551 | | -static SENSOR_DEVICE_ATTR(temp12_fault, S_IRUGO, show_temp_fault, NULL, 11); |
|---|
| 552 | | -static SENSOR_DEVICE_ATTR(temp13_fault, S_IRUGO, show_temp_fault, NULL, 12); |
|---|
| 553 | | -static SENSOR_DEVICE_ATTR(temp14_fault, S_IRUGO, show_temp_fault, NULL, 13); |
|---|
| 554 | | -static SENSOR_DEVICE_ATTR(temp15_fault, S_IRUGO, show_temp_fault, NULL, 14); |
|---|
| 555 | | -static SENSOR_DEVICE_ATTR(temp16_fault, S_IRUGO, show_temp_fault, NULL, 15); |
|---|
| 530 | +static SENSOR_DEVICE_ATTR_RO(temp1_fault, temp_fault, 0); |
|---|
| 531 | +static SENSOR_DEVICE_ATTR_RO(temp2_fault, temp_fault, 1); |
|---|
| 532 | +static SENSOR_DEVICE_ATTR_RO(temp3_fault, temp_fault, 2); |
|---|
| 533 | +static SENSOR_DEVICE_ATTR_RO(temp4_fault, temp_fault, 3); |
|---|
| 534 | +static SENSOR_DEVICE_ATTR_RO(temp5_fault, temp_fault, 4); |
|---|
| 535 | +static SENSOR_DEVICE_ATTR_RO(temp6_fault, temp_fault, 5); |
|---|
| 536 | +static SENSOR_DEVICE_ATTR_RO(temp7_fault, temp_fault, 6); |
|---|
| 537 | +static SENSOR_DEVICE_ATTR_RO(temp8_fault, temp_fault, 7); |
|---|
| 538 | +static SENSOR_DEVICE_ATTR_RO(temp9_fault, temp_fault, 8); |
|---|
| 539 | +static SENSOR_DEVICE_ATTR_RO(temp10_fault, temp_fault, 9); |
|---|
| 540 | +static SENSOR_DEVICE_ATTR_RO(temp11_fault, temp_fault, 10); |
|---|
| 541 | +static SENSOR_DEVICE_ATTR_RO(temp12_fault, temp_fault, 11); |
|---|
| 542 | +static SENSOR_DEVICE_ATTR_RO(temp13_fault, temp_fault, 12); |
|---|
| 543 | +static SENSOR_DEVICE_ATTR_RO(temp14_fault, temp_fault, 13); |
|---|
| 544 | +static SENSOR_DEVICE_ATTR_RO(temp15_fault, temp_fault, 14); |
|---|
| 545 | +static SENSOR_DEVICE_ATTR_RO(temp16_fault, temp_fault, 15); |
|---|
| 556 | 546 | |
|---|
| 557 | | -static SENSOR_DEVICE_ATTR(temp1_alarm, S_IRUGO | S_IWUSR, show_temp_alarm, |
|---|
| 558 | | - clear_temp_alarm, 0); |
|---|
| 559 | | -static SENSOR_DEVICE_ATTR(temp2_alarm, S_IRUGO | S_IWUSR, show_temp_alarm, |
|---|
| 560 | | - clear_temp_alarm, 1); |
|---|
| 561 | | -static SENSOR_DEVICE_ATTR(temp3_alarm, S_IRUGO | S_IWUSR, show_temp_alarm, |
|---|
| 562 | | - clear_temp_alarm, 2); |
|---|
| 563 | | -static SENSOR_DEVICE_ATTR(temp4_alarm, S_IRUGO | S_IWUSR, show_temp_alarm, |
|---|
| 564 | | - clear_temp_alarm, 3); |
|---|
| 565 | | -static SENSOR_DEVICE_ATTR(temp5_alarm, S_IRUGO | S_IWUSR, show_temp_alarm, |
|---|
| 566 | | - clear_temp_alarm, 4); |
|---|
| 567 | | -static SENSOR_DEVICE_ATTR(temp6_alarm, S_IRUGO | S_IWUSR, show_temp_alarm, |
|---|
| 568 | | - clear_temp_alarm, 5); |
|---|
| 569 | | -static SENSOR_DEVICE_ATTR(temp7_alarm, S_IRUGO | S_IWUSR, show_temp_alarm, |
|---|
| 570 | | - clear_temp_alarm, 6); |
|---|
| 571 | | -static SENSOR_DEVICE_ATTR(temp8_alarm, S_IRUGO | S_IWUSR, show_temp_alarm, |
|---|
| 572 | | - clear_temp_alarm, 7); |
|---|
| 573 | | -static SENSOR_DEVICE_ATTR(temp9_alarm, S_IRUGO | S_IWUSR, show_temp_alarm, |
|---|
| 574 | | - clear_temp_alarm, 8); |
|---|
| 575 | | -static SENSOR_DEVICE_ATTR(temp10_alarm, S_IRUGO | S_IWUSR, show_temp_alarm, |
|---|
| 576 | | - clear_temp_alarm, 9); |
|---|
| 577 | | -static SENSOR_DEVICE_ATTR(temp11_alarm, S_IRUGO | S_IWUSR, show_temp_alarm, |
|---|
| 578 | | - clear_temp_alarm, 10); |
|---|
| 579 | | -static SENSOR_DEVICE_ATTR(temp12_alarm, S_IRUGO | S_IWUSR, show_temp_alarm, |
|---|
| 580 | | - clear_temp_alarm, 11); |
|---|
| 581 | | -static SENSOR_DEVICE_ATTR(temp13_alarm, S_IRUGO | S_IWUSR, show_temp_alarm, |
|---|
| 582 | | - clear_temp_alarm, 12); |
|---|
| 583 | | -static SENSOR_DEVICE_ATTR(temp14_alarm, S_IRUGO | S_IWUSR, show_temp_alarm, |
|---|
| 584 | | - clear_temp_alarm, 13); |
|---|
| 585 | | -static SENSOR_DEVICE_ATTR(temp15_alarm, S_IRUGO | S_IWUSR, show_temp_alarm, |
|---|
| 586 | | - clear_temp_alarm, 14); |
|---|
| 587 | | -static SENSOR_DEVICE_ATTR(temp16_alarm, S_IRUGO | S_IWUSR, show_temp_alarm, |
|---|
| 588 | | - clear_temp_alarm, 15); |
|---|
| 547 | +static SENSOR_DEVICE_ATTR_RW(temp1_alarm, temp_alarm, 0); |
|---|
| 548 | +static SENSOR_DEVICE_ATTR_RW(temp2_alarm, temp_alarm, 1); |
|---|
| 549 | +static SENSOR_DEVICE_ATTR_RW(temp3_alarm, temp_alarm, 2); |
|---|
| 550 | +static SENSOR_DEVICE_ATTR_RW(temp4_alarm, temp_alarm, 3); |
|---|
| 551 | +static SENSOR_DEVICE_ATTR_RW(temp5_alarm, temp_alarm, 4); |
|---|
| 552 | +static SENSOR_DEVICE_ATTR_RW(temp6_alarm, temp_alarm, 5); |
|---|
| 553 | +static SENSOR_DEVICE_ATTR_RW(temp7_alarm, temp_alarm, 6); |
|---|
| 554 | +static SENSOR_DEVICE_ATTR_RW(temp8_alarm, temp_alarm, 7); |
|---|
| 555 | +static SENSOR_DEVICE_ATTR_RW(temp9_alarm, temp_alarm, 8); |
|---|
| 556 | +static SENSOR_DEVICE_ATTR_RW(temp10_alarm, temp_alarm, 9); |
|---|
| 557 | +static SENSOR_DEVICE_ATTR_RW(temp11_alarm, temp_alarm, 10); |
|---|
| 558 | +static SENSOR_DEVICE_ATTR_RW(temp12_alarm, temp_alarm, 11); |
|---|
| 559 | +static SENSOR_DEVICE_ATTR_RW(temp13_alarm, temp_alarm, 12); |
|---|
| 560 | +static SENSOR_DEVICE_ATTR_RW(temp14_alarm, temp_alarm, 13); |
|---|
| 561 | +static SENSOR_DEVICE_ATTR_RW(temp15_alarm, temp_alarm, 14); |
|---|
| 562 | +static SENSOR_DEVICE_ATTR_RW(temp16_alarm, temp_alarm, 15); |
|---|
| 589 | 563 | |
|---|
| 590 | 564 | static struct attribute *fts_temp_attrs[] = { |
|---|
| 591 | 565 | &sensor_dev_attr_temp1_input.dev_attr.attr, |
|---|
| .. | .. |
|---|
| 642 | 616 | }; |
|---|
| 643 | 617 | |
|---|
| 644 | 618 | /* Fans */ |
|---|
| 645 | | -static SENSOR_DEVICE_ATTR(fan1_input, S_IRUGO, show_fan_value, NULL, 0); |
|---|
| 646 | | -static SENSOR_DEVICE_ATTR(fan2_input, S_IRUGO, show_fan_value, NULL, 1); |
|---|
| 647 | | -static SENSOR_DEVICE_ATTR(fan3_input, S_IRUGO, show_fan_value, NULL, 2); |
|---|
| 648 | | -static SENSOR_DEVICE_ATTR(fan4_input, S_IRUGO, show_fan_value, NULL, 3); |
|---|
| 649 | | -static SENSOR_DEVICE_ATTR(fan5_input, S_IRUGO, show_fan_value, NULL, 4); |
|---|
| 650 | | -static SENSOR_DEVICE_ATTR(fan6_input, S_IRUGO, show_fan_value, NULL, 5); |
|---|
| 651 | | -static SENSOR_DEVICE_ATTR(fan7_input, S_IRUGO, show_fan_value, NULL, 6); |
|---|
| 652 | | -static SENSOR_DEVICE_ATTR(fan8_input, S_IRUGO, show_fan_value, NULL, 7); |
|---|
| 619 | +static SENSOR_DEVICE_ATTR_RO(fan1_input, fan_value, 0); |
|---|
| 620 | +static SENSOR_DEVICE_ATTR_RO(fan2_input, fan_value, 1); |
|---|
| 621 | +static SENSOR_DEVICE_ATTR_RO(fan3_input, fan_value, 2); |
|---|
| 622 | +static SENSOR_DEVICE_ATTR_RO(fan4_input, fan_value, 3); |
|---|
| 623 | +static SENSOR_DEVICE_ATTR_RO(fan5_input, fan_value, 4); |
|---|
| 624 | +static SENSOR_DEVICE_ATTR_RO(fan6_input, fan_value, 5); |
|---|
| 625 | +static SENSOR_DEVICE_ATTR_RO(fan7_input, fan_value, 6); |
|---|
| 626 | +static SENSOR_DEVICE_ATTR_RO(fan8_input, fan_value, 7); |
|---|
| 653 | 627 | |
|---|
| 654 | | -static SENSOR_DEVICE_ATTR(fan1_source, S_IRUGO, show_fan_source, NULL, 0); |
|---|
| 655 | | -static SENSOR_DEVICE_ATTR(fan2_source, S_IRUGO, show_fan_source, NULL, 1); |
|---|
| 656 | | -static SENSOR_DEVICE_ATTR(fan3_source, S_IRUGO, show_fan_source, NULL, 2); |
|---|
| 657 | | -static SENSOR_DEVICE_ATTR(fan4_source, S_IRUGO, show_fan_source, NULL, 3); |
|---|
| 658 | | -static SENSOR_DEVICE_ATTR(fan5_source, S_IRUGO, show_fan_source, NULL, 4); |
|---|
| 659 | | -static SENSOR_DEVICE_ATTR(fan6_source, S_IRUGO, show_fan_source, NULL, 5); |
|---|
| 660 | | -static SENSOR_DEVICE_ATTR(fan7_source, S_IRUGO, show_fan_source, NULL, 6); |
|---|
| 661 | | -static SENSOR_DEVICE_ATTR(fan8_source, S_IRUGO, show_fan_source, NULL, 7); |
|---|
| 628 | +static SENSOR_DEVICE_ATTR_RO(fan1_source, fan_source, 0); |
|---|
| 629 | +static SENSOR_DEVICE_ATTR_RO(fan2_source, fan_source, 1); |
|---|
| 630 | +static SENSOR_DEVICE_ATTR_RO(fan3_source, fan_source, 2); |
|---|
| 631 | +static SENSOR_DEVICE_ATTR_RO(fan4_source, fan_source, 3); |
|---|
| 632 | +static SENSOR_DEVICE_ATTR_RO(fan5_source, fan_source, 4); |
|---|
| 633 | +static SENSOR_DEVICE_ATTR_RO(fan6_source, fan_source, 5); |
|---|
| 634 | +static SENSOR_DEVICE_ATTR_RO(fan7_source, fan_source, 6); |
|---|
| 635 | +static SENSOR_DEVICE_ATTR_RO(fan8_source, fan_source, 7); |
|---|
| 662 | 636 | |
|---|
| 663 | | -static SENSOR_DEVICE_ATTR(fan1_alarm, S_IRUGO | S_IWUSR, |
|---|
| 664 | | - show_fan_alarm, clear_fan_alarm, 0); |
|---|
| 665 | | -static SENSOR_DEVICE_ATTR(fan2_alarm, S_IRUGO | S_IWUSR, |
|---|
| 666 | | - show_fan_alarm, clear_fan_alarm, 1); |
|---|
| 667 | | -static SENSOR_DEVICE_ATTR(fan3_alarm, S_IRUGO | S_IWUSR, |
|---|
| 668 | | - show_fan_alarm, clear_fan_alarm, 2); |
|---|
| 669 | | -static SENSOR_DEVICE_ATTR(fan4_alarm, S_IRUGO | S_IWUSR, |
|---|
| 670 | | - show_fan_alarm, clear_fan_alarm, 3); |
|---|
| 671 | | -static SENSOR_DEVICE_ATTR(fan5_alarm, S_IRUGO | S_IWUSR, |
|---|
| 672 | | - show_fan_alarm, clear_fan_alarm, 4); |
|---|
| 673 | | -static SENSOR_DEVICE_ATTR(fan6_alarm, S_IRUGO | S_IWUSR, |
|---|
| 674 | | - show_fan_alarm, clear_fan_alarm, 5); |
|---|
| 675 | | -static SENSOR_DEVICE_ATTR(fan7_alarm, S_IRUGO | S_IWUSR, |
|---|
| 676 | | - show_fan_alarm, clear_fan_alarm, 6); |
|---|
| 677 | | -static SENSOR_DEVICE_ATTR(fan8_alarm, S_IRUGO | S_IWUSR, |
|---|
| 678 | | - show_fan_alarm, clear_fan_alarm, 7); |
|---|
| 637 | +static SENSOR_DEVICE_ATTR_RW(fan1_alarm, fan_alarm, 0); |
|---|
| 638 | +static SENSOR_DEVICE_ATTR_RW(fan2_alarm, fan_alarm, 1); |
|---|
| 639 | +static SENSOR_DEVICE_ATTR_RW(fan3_alarm, fan_alarm, 2); |
|---|
| 640 | +static SENSOR_DEVICE_ATTR_RW(fan4_alarm, fan_alarm, 3); |
|---|
| 641 | +static SENSOR_DEVICE_ATTR_RW(fan5_alarm, fan_alarm, 4); |
|---|
| 642 | +static SENSOR_DEVICE_ATTR_RW(fan6_alarm, fan_alarm, 5); |
|---|
| 643 | +static SENSOR_DEVICE_ATTR_RW(fan7_alarm, fan_alarm, 6); |
|---|
| 644 | +static SENSOR_DEVICE_ATTR_RW(fan8_alarm, fan_alarm, 7); |
|---|
| 679 | 645 | |
|---|
| 680 | 646 | static struct attribute *fts_fan_attrs[] = { |
|---|
| 681 | 647 | &sensor_dev_attr_fan1_input.dev_attr.attr, |
|---|
| .. | .. |
|---|
| 708 | 674 | }; |
|---|
| 709 | 675 | |
|---|
| 710 | 676 | /* Voltages */ |
|---|
| 711 | | -static SENSOR_DEVICE_ATTR(in1_input, S_IRUGO, show_in_value, NULL, 0); |
|---|
| 712 | | -static SENSOR_DEVICE_ATTR(in2_input, S_IRUGO, show_in_value, NULL, 1); |
|---|
| 713 | | -static SENSOR_DEVICE_ATTR(in3_input, S_IRUGO, show_in_value, NULL, 2); |
|---|
| 714 | | -static SENSOR_DEVICE_ATTR(in4_input, S_IRUGO, show_in_value, NULL, 3); |
|---|
| 677 | +static SENSOR_DEVICE_ATTR_RO(in1_input, in_value, 0); |
|---|
| 678 | +static SENSOR_DEVICE_ATTR_RO(in2_input, in_value, 1); |
|---|
| 679 | +static SENSOR_DEVICE_ATTR_RO(in3_input, in_value, 2); |
|---|
| 680 | +static SENSOR_DEVICE_ATTR_RO(in4_input, in_value, 3); |
|---|
| 715 | 681 | static struct attribute *fts_voltage_attrs[] = { |
|---|
| 716 | 682 | &sensor_dev_attr_in1_input.dev_attr.attr, |
|---|
| 717 | 683 | &sensor_dev_attr_in2_input.dev_attr.attr, |
|---|
| .. | .. |
|---|
| 786 | 752 | return 0; |
|---|
| 787 | 753 | } |
|---|
| 788 | 754 | |
|---|
| 789 | | -static int fts_probe(struct i2c_client *client, const struct i2c_device_id *id) |
|---|
| 755 | +static int fts_probe(struct i2c_client *client) |
|---|
| 790 | 756 | { |
|---|
| 791 | 757 | u8 revision; |
|---|
| 792 | 758 | struct fts_data *data; |
|---|
| .. | .. |
|---|
| 853 | 819 | .name = "ftsteutates", |
|---|
| 854 | 820 | }, |
|---|
| 855 | 821 | .id_table = fts_id, |
|---|
| 856 | | - .probe = fts_probe, |
|---|
| 822 | + .probe_new = fts_probe, |
|---|
| 857 | 823 | .remove = fts_remove, |
|---|
| 858 | 824 | .detect = fts_detect, |
|---|
| 859 | 825 | .address_list = normal_i2c, |
|---|