diff options
Diffstat (limited to 'drivers/hwmon/f71882fg.c')
-rw-r--r-- | drivers/hwmon/f71882fg.c | 137 |
1 files changed, 89 insertions, 48 deletions
diff --git a/drivers/hwmon/f71882fg.c b/drivers/hwmon/f71882fg.c index 4146105f1a57..40dd6cf3e80d 100644 --- a/drivers/hwmon/f71882fg.c +++ b/drivers/hwmon/f71882fg.c | |||
@@ -258,7 +258,9 @@ static struct platform_driver f71882fg_driver = { | |||
258 | 258 | ||
259 | static DEVICE_ATTR(name, S_IRUGO, show_name, NULL); | 259 | static DEVICE_ATTR(name, S_IRUGO, show_name, NULL); |
260 | 260 | ||
261 | /* Temp and in attr for the f71858fg */ | 261 | /* Temp and in attr for the f71858fg, the f71858fg is special as it |
262 | has its temperature indexes start at 0 (the others start at 1) and | ||
263 | it only has 3 voltage inputs */ | ||
262 | static struct sensor_device_attribute_2 f71858fg_in_temp_attr[] = { | 264 | static struct sensor_device_attribute_2 f71858fg_in_temp_attr[] = { |
263 | SENSOR_ATTR_2(in0_input, S_IRUGO, show_in, NULL, 0, 0), | 265 | SENSOR_ATTR_2(in0_input, S_IRUGO, show_in, NULL, 0, 0), |
264 | SENSOR_ATTR_2(in1_input, S_IRUGO, show_in, NULL, 0, 1), | 266 | SENSOR_ATTR_2(in1_input, S_IRUGO, show_in, NULL, 0, 1), |
@@ -302,8 +304,8 @@ static struct sensor_device_attribute_2 f71858fg_in_temp_attr[] = { | |||
302 | SENSOR_ATTR_2(temp3_fault, S_IRUGO, show_temp_fault, NULL, 0, 2), | 304 | SENSOR_ATTR_2(temp3_fault, S_IRUGO, show_temp_fault, NULL, 0, 2), |
303 | }; | 305 | }; |
304 | 306 | ||
305 | /* Temp and in attr common to both the f71862fg and f71882fg */ | 307 | /* Temp and in attr common to the f71862fg, f71882fg and f71889fg */ |
306 | static struct sensor_device_attribute_2 f718x2fg_in_temp_attr[] = { | 308 | static struct sensor_device_attribute_2 fxxxx_in_temp_attr[] = { |
307 | SENSOR_ATTR_2(in0_input, S_IRUGO, show_in, NULL, 0, 0), | 309 | SENSOR_ATTR_2(in0_input, S_IRUGO, show_in, NULL, 0, 0), |
308 | SENSOR_ATTR_2(in1_input, S_IRUGO, show_in, NULL, 0, 1), | 310 | SENSOR_ATTR_2(in1_input, S_IRUGO, show_in, NULL, 0, 1), |
309 | SENSOR_ATTR_2(in2_input, S_IRUGO, show_in, NULL, 0, 2), | 311 | SENSOR_ATTR_2(in2_input, S_IRUGO, show_in, NULL, 0, 2), |
@@ -371,8 +373,8 @@ static struct sensor_device_attribute_2 f718x2fg_in_temp_attr[] = { | |||
371 | SENSOR_ATTR_2(temp3_fault, S_IRUGO, show_temp_fault, NULL, 0, 3), | 373 | SENSOR_ATTR_2(temp3_fault, S_IRUGO, show_temp_fault, NULL, 0, 3), |
372 | }; | 374 | }; |
373 | 375 | ||
374 | /* Temp and in attr found only on the f71882fg */ | 376 | /* For models with in1 alarm capability */ |
375 | static struct sensor_device_attribute_2 f71882fg_in_temp_attr[] = { | 377 | static struct sensor_device_attribute_2 fxxxx_in1_alarm_attr[] = { |
376 | SENSOR_ATTR_2(in1_max, S_IRUGO|S_IWUSR, show_in_max, store_in_max, | 378 | SENSOR_ATTR_2(in1_max, S_IRUGO|S_IWUSR, show_in_max, store_in_max, |
377 | 0, 1), | 379 | 0, 1), |
378 | SENSOR_ATTR_2(in1_beep, S_IRUGO|S_IWUSR, show_in_beep, store_in_beep, | 380 | SENSOR_ATTR_2(in1_beep, S_IRUGO|S_IWUSR, show_in_beep, store_in_beep, |
@@ -383,6 +385,7 @@ static struct sensor_device_attribute_2 f71882fg_in_temp_attr[] = { | |||
383 | /* Temp and in attr for the f8000 | 385 | /* Temp and in attr for the f8000 |
384 | Note on the f8000 temp_ovt (crit) is used as max, and temp_high (max) | 386 | Note on the f8000 temp_ovt (crit) is used as max, and temp_high (max) |
385 | is used as hysteresis value to clear alarms | 387 | is used as hysteresis value to clear alarms |
388 | Also like the f71858fg its temperature indexes start at 0 | ||
386 | */ | 389 | */ |
387 | static struct sensor_device_attribute_2 f8000_in_temp_attr[] = { | 390 | static struct sensor_device_attribute_2 f8000_in_temp_attr[] = { |
388 | SENSOR_ATTR_2(in0_input, S_IRUGO, show_in, NULL, 0, 0), | 391 | SENSOR_ATTR_2(in0_input, S_IRUGO, show_in, NULL, 0, 0), |
@@ -435,39 +438,36 @@ static struct sensor_device_attribute_2 fxxxx_fan_attr[] = { | |||
435 | store_pwm_enable, 0, 0), | 438 | store_pwm_enable, 0, 0), |
436 | SENSOR_ATTR_2(pwm1_interpolate, S_IRUGO|S_IWUSR, | 439 | SENSOR_ATTR_2(pwm1_interpolate, S_IRUGO|S_IWUSR, |
437 | show_pwm_interpolate, store_pwm_interpolate, 0, 0), | 440 | show_pwm_interpolate, store_pwm_interpolate, 0, 0), |
438 | SENSOR_ATTR_2(pwm1_auto_channels_temp, S_IRUGO|S_IWUSR, | ||
439 | show_pwm_auto_point_channel, | ||
440 | store_pwm_auto_point_channel, 0, 0), | ||
441 | 441 | ||
442 | SENSOR_ATTR_2(pwm2, S_IRUGO|S_IWUSR, show_pwm, store_pwm, 0, 1), | 442 | SENSOR_ATTR_2(pwm2, S_IRUGO|S_IWUSR, show_pwm, store_pwm, 0, 1), |
443 | SENSOR_ATTR_2(pwm2_enable, S_IRUGO|S_IWUSR, show_pwm_enable, | 443 | SENSOR_ATTR_2(pwm2_enable, S_IRUGO|S_IWUSR, show_pwm_enable, |
444 | store_pwm_enable, 0, 1), | 444 | store_pwm_enable, 0, 1), |
445 | SENSOR_ATTR_2(pwm2_interpolate, S_IRUGO|S_IWUSR, | 445 | SENSOR_ATTR_2(pwm2_interpolate, S_IRUGO|S_IWUSR, |
446 | show_pwm_interpolate, store_pwm_interpolate, 0, 1), | 446 | show_pwm_interpolate, store_pwm_interpolate, 0, 1), |
447 | SENSOR_ATTR_2(pwm2_auto_channels_temp, S_IRUGO|S_IWUSR, | ||
448 | show_pwm_auto_point_channel, | ||
449 | store_pwm_auto_point_channel, 0, 1), | ||
450 | 447 | ||
451 | SENSOR_ATTR_2(pwm3, S_IRUGO|S_IWUSR, show_pwm, store_pwm, 0, 2), | 448 | SENSOR_ATTR_2(pwm3, S_IRUGO|S_IWUSR, show_pwm, store_pwm, 0, 2), |
452 | SENSOR_ATTR_2(pwm3_enable, S_IRUGO|S_IWUSR, show_pwm_enable, | 449 | SENSOR_ATTR_2(pwm3_enable, S_IRUGO|S_IWUSR, show_pwm_enable, |
453 | store_pwm_enable, 0, 2), | 450 | store_pwm_enable, 0, 2), |
454 | SENSOR_ATTR_2(pwm3_interpolate, S_IRUGO|S_IWUSR, | 451 | SENSOR_ATTR_2(pwm3_interpolate, S_IRUGO|S_IWUSR, |
455 | show_pwm_interpolate, store_pwm_interpolate, 0, 2), | 452 | show_pwm_interpolate, store_pwm_interpolate, 0, 2), |
456 | SENSOR_ATTR_2(pwm3_auto_channels_temp, S_IRUGO|S_IWUSR, | ||
457 | show_pwm_auto_point_channel, | ||
458 | store_pwm_auto_point_channel, 0, 2), | ||
459 | }; | 453 | }; |
460 | 454 | ||
461 | /* Fan / PWM attr for the f71862fg, less pwms and less zones per pwm than the | 455 | /* Attr for models which can beep on Fan alarm */ |
462 | f71882fg */ | 456 | static struct sensor_device_attribute_2 fxxxx_fan_beep_attr[] = { |
463 | static struct sensor_device_attribute_2 f71862fg_fan_attr[] = { | ||
464 | SENSOR_ATTR_2(fan1_beep, S_IRUGO|S_IWUSR, show_fan_beep, | 457 | SENSOR_ATTR_2(fan1_beep, S_IRUGO|S_IWUSR, show_fan_beep, |
465 | store_fan_beep, 0, 0), | 458 | store_fan_beep, 0, 0), |
466 | SENSOR_ATTR_2(fan2_beep, S_IRUGO|S_IWUSR, show_fan_beep, | 459 | SENSOR_ATTR_2(fan2_beep, S_IRUGO|S_IWUSR, show_fan_beep, |
467 | store_fan_beep, 0, 1), | 460 | store_fan_beep, 0, 1), |
468 | SENSOR_ATTR_2(fan3_beep, S_IRUGO|S_IWUSR, show_fan_beep, | 461 | SENSOR_ATTR_2(fan3_beep, S_IRUGO|S_IWUSR, show_fan_beep, |
469 | store_fan_beep, 0, 2), | 462 | store_fan_beep, 0, 2), |
463 | }; | ||
470 | 464 | ||
465 | /* PWM attr for the f71862fg, fewer pwms and fewer zones per pwm than the | ||
466 | f71858fg / f71882fg / f71889fg */ | ||
467 | static struct sensor_device_attribute_2 f71862fg_auto_pwm_attr[] = { | ||
468 | SENSOR_ATTR_2(pwm1_auto_channels_temp, S_IRUGO|S_IWUSR, | ||
469 | show_pwm_auto_point_channel, | ||
470 | store_pwm_auto_point_channel, 0, 0), | ||
471 | SENSOR_ATTR_2(pwm1_auto_point1_pwm, S_IRUGO|S_IWUSR, | 471 | SENSOR_ATTR_2(pwm1_auto_point1_pwm, S_IRUGO|S_IWUSR, |
472 | show_pwm_auto_point_pwm, store_pwm_auto_point_pwm, | 472 | show_pwm_auto_point_pwm, store_pwm_auto_point_pwm, |
473 | 1, 0), | 473 | 1, 0), |
@@ -487,6 +487,9 @@ static struct sensor_device_attribute_2 f71862fg_fan_attr[] = { | |||
487 | SENSOR_ATTR_2(pwm1_auto_point2_temp_hyst, S_IRUGO, | 487 | SENSOR_ATTR_2(pwm1_auto_point2_temp_hyst, S_IRUGO, |
488 | show_pwm_auto_point_temp_hyst, NULL, 3, 0), | 488 | show_pwm_auto_point_temp_hyst, NULL, 3, 0), |
489 | 489 | ||
490 | SENSOR_ATTR_2(pwm2_auto_channels_temp, S_IRUGO|S_IWUSR, | ||
491 | show_pwm_auto_point_channel, | ||
492 | store_pwm_auto_point_channel, 0, 1), | ||
490 | SENSOR_ATTR_2(pwm2_auto_point1_pwm, S_IRUGO|S_IWUSR, | 493 | SENSOR_ATTR_2(pwm2_auto_point1_pwm, S_IRUGO|S_IWUSR, |
491 | show_pwm_auto_point_pwm, store_pwm_auto_point_pwm, | 494 | show_pwm_auto_point_pwm, store_pwm_auto_point_pwm, |
492 | 1, 1), | 495 | 1, 1), |
@@ -506,6 +509,9 @@ static struct sensor_device_attribute_2 f71862fg_fan_attr[] = { | |||
506 | SENSOR_ATTR_2(pwm2_auto_point2_temp_hyst, S_IRUGO, | 509 | SENSOR_ATTR_2(pwm2_auto_point2_temp_hyst, S_IRUGO, |
507 | show_pwm_auto_point_temp_hyst, NULL, 3, 1), | 510 | show_pwm_auto_point_temp_hyst, NULL, 3, 1), |
508 | 511 | ||
512 | SENSOR_ATTR_2(pwm3_auto_channels_temp, S_IRUGO|S_IWUSR, | ||
513 | show_pwm_auto_point_channel, | ||
514 | store_pwm_auto_point_channel, 0, 2), | ||
509 | SENSOR_ATTR_2(pwm3_auto_point1_pwm, S_IRUGO|S_IWUSR, | 515 | SENSOR_ATTR_2(pwm3_auto_point1_pwm, S_IRUGO|S_IWUSR, |
510 | show_pwm_auto_point_pwm, store_pwm_auto_point_pwm, | 516 | show_pwm_auto_point_pwm, store_pwm_auto_point_pwm, |
511 | 1, 2), | 517 | 1, 2), |
@@ -526,8 +532,11 @@ static struct sensor_device_attribute_2 f71862fg_fan_attr[] = { | |||
526 | show_pwm_auto_point_temp_hyst, NULL, 3, 2), | 532 | show_pwm_auto_point_temp_hyst, NULL, 3, 2), |
527 | }; | 533 | }; |
528 | 534 | ||
529 | /* Fan / PWM attr common to both the f71882fg and f71858fg */ | 535 | /* PWM attr common to the f71858fg, f71882fg and f71889fg */ |
530 | static struct sensor_device_attribute_2 f71882fg_f71858fg_fan_attr[] = { | 536 | static struct sensor_device_attribute_2 fxxxx_auto_pwm_attr[] = { |
537 | SENSOR_ATTR_2(pwm1_auto_channels_temp, S_IRUGO|S_IWUSR, | ||
538 | show_pwm_auto_point_channel, | ||
539 | store_pwm_auto_point_channel, 0, 0), | ||
531 | SENSOR_ATTR_2(pwm1_auto_point1_pwm, S_IRUGO|S_IWUSR, | 540 | SENSOR_ATTR_2(pwm1_auto_point1_pwm, S_IRUGO|S_IWUSR, |
532 | show_pwm_auto_point_pwm, store_pwm_auto_point_pwm, | 541 | show_pwm_auto_point_pwm, store_pwm_auto_point_pwm, |
533 | 0, 0), | 542 | 0, 0), |
@@ -566,6 +575,9 @@ static struct sensor_device_attribute_2 f71882fg_f71858fg_fan_attr[] = { | |||
566 | SENSOR_ATTR_2(pwm1_auto_point4_temp_hyst, S_IRUGO, | 575 | SENSOR_ATTR_2(pwm1_auto_point4_temp_hyst, S_IRUGO, |
567 | show_pwm_auto_point_temp_hyst, NULL, 3, 0), | 576 | show_pwm_auto_point_temp_hyst, NULL, 3, 0), |
568 | 577 | ||
578 | SENSOR_ATTR_2(pwm2_auto_channels_temp, S_IRUGO|S_IWUSR, | ||
579 | show_pwm_auto_point_channel, | ||
580 | store_pwm_auto_point_channel, 0, 1), | ||
569 | SENSOR_ATTR_2(pwm2_auto_point1_pwm, S_IRUGO|S_IWUSR, | 581 | SENSOR_ATTR_2(pwm2_auto_point1_pwm, S_IRUGO|S_IWUSR, |
570 | show_pwm_auto_point_pwm, store_pwm_auto_point_pwm, | 582 | show_pwm_auto_point_pwm, store_pwm_auto_point_pwm, |
571 | 0, 1), | 583 | 0, 1), |
@@ -604,6 +616,9 @@ static struct sensor_device_attribute_2 f71882fg_f71858fg_fan_attr[] = { | |||
604 | SENSOR_ATTR_2(pwm2_auto_point4_temp_hyst, S_IRUGO, | 616 | SENSOR_ATTR_2(pwm2_auto_point4_temp_hyst, S_IRUGO, |
605 | show_pwm_auto_point_temp_hyst, NULL, 3, 1), | 617 | show_pwm_auto_point_temp_hyst, NULL, 3, 1), |
606 | 618 | ||
619 | SENSOR_ATTR_2(pwm3_auto_channels_temp, S_IRUGO|S_IWUSR, | ||
620 | show_pwm_auto_point_channel, | ||
621 | store_pwm_auto_point_channel, 0, 2), | ||
607 | SENSOR_ATTR_2(pwm3_auto_point1_pwm, S_IRUGO|S_IWUSR, | 622 | SENSOR_ATTR_2(pwm3_auto_point1_pwm, S_IRUGO|S_IWUSR, |
608 | show_pwm_auto_point_pwm, store_pwm_auto_point_pwm, | 623 | show_pwm_auto_point_pwm, store_pwm_auto_point_pwm, |
609 | 0, 2), | 624 | 0, 2), |
@@ -644,14 +659,7 @@ static struct sensor_device_attribute_2 f71882fg_f71858fg_fan_attr[] = { | |||
644 | }; | 659 | }; |
645 | 660 | ||
646 | /* Fan / PWM attr found on the f71882fg but not on the f71858fg */ | 661 | /* Fan / PWM attr found on the f71882fg but not on the f71858fg */ |
647 | static struct sensor_device_attribute_2 f71882fg_fan_attr[] = { | 662 | static struct sensor_device_attribute_2 f71882fg_auto_pwm_attr[] = { |
648 | SENSOR_ATTR_2(fan1_beep, S_IRUGO|S_IWUSR, show_fan_beep, | ||
649 | store_fan_beep, 0, 0), | ||
650 | SENSOR_ATTR_2(fan2_beep, S_IRUGO|S_IWUSR, show_fan_beep, | ||
651 | store_fan_beep, 0, 1), | ||
652 | SENSOR_ATTR_2(fan3_beep, S_IRUGO|S_IWUSR, show_fan_beep, | ||
653 | store_fan_beep, 0, 2), | ||
654 | |||
655 | SENSOR_ATTR_2(fan4_input, S_IRUGO, show_fan, NULL, 0, 3), | 663 | SENSOR_ATTR_2(fan4_input, S_IRUGO, show_fan, NULL, 0, 3), |
656 | SENSOR_ATTR_2(fan4_full_speed, S_IRUGO|S_IWUSR, | 664 | SENSOR_ATTR_2(fan4_full_speed, S_IRUGO|S_IWUSR, |
657 | show_fan_full_speed, | 665 | show_fan_full_speed, |
@@ -707,12 +715,18 @@ static struct sensor_device_attribute_2 f71882fg_fan_attr[] = { | |||
707 | show_pwm_auto_point_temp_hyst, NULL, 3, 3), | 715 | show_pwm_auto_point_temp_hyst, NULL, 3, 3), |
708 | }; | 716 | }; |
709 | 717 | ||
710 | /* Fan / PWM attr for the f8000, zones mapped to temp instead of to pwm! | 718 | /* Fan attr specific to the f8000 (4th fan input can only measure speed) */ |
711 | Also the register block at offset A0 maps to TEMP1 (so our temp2, as the | ||
712 | F8000 starts counting temps at 0), B0 maps the TEMP2 and C0 maps to TEMP0 */ | ||
713 | static struct sensor_device_attribute_2 f8000_fan_attr[] = { | 719 | static struct sensor_device_attribute_2 f8000_fan_attr[] = { |
714 | SENSOR_ATTR_2(fan4_input, S_IRUGO, show_fan, NULL, 0, 3), | 720 | SENSOR_ATTR_2(fan4_input, S_IRUGO, show_fan, NULL, 0, 3), |
721 | }; | ||
715 | 722 | ||
723 | /* PWM attr for the f8000, zones mapped to temp instead of to pwm! | ||
724 | Also the register block at offset A0 maps to TEMP1 (so our temp2, as the | ||
725 | F8000 starts counting temps at 0), B0 maps the TEMP2 and C0 maps to TEMP0 */ | ||
726 | static struct sensor_device_attribute_2 f8000_auto_pwm_attr[] = { | ||
727 | SENSOR_ATTR_2(pwm1_auto_channels_temp, S_IRUGO|S_IWUSR, | ||
728 | show_pwm_auto_point_channel, | ||
729 | store_pwm_auto_point_channel, 0, 0), | ||
716 | SENSOR_ATTR_2(temp1_auto_point1_pwm, S_IRUGO|S_IWUSR, | 730 | SENSOR_ATTR_2(temp1_auto_point1_pwm, S_IRUGO|S_IWUSR, |
717 | show_pwm_auto_point_pwm, store_pwm_auto_point_pwm, | 731 | show_pwm_auto_point_pwm, store_pwm_auto_point_pwm, |
718 | 0, 2), | 732 | 0, 2), |
@@ -751,6 +765,9 @@ static struct sensor_device_attribute_2 f8000_fan_attr[] = { | |||
751 | SENSOR_ATTR_2(temp1_auto_point4_temp_hyst, S_IRUGO, | 765 | SENSOR_ATTR_2(temp1_auto_point4_temp_hyst, S_IRUGO, |
752 | show_pwm_auto_point_temp_hyst, NULL, 3, 2), | 766 | show_pwm_auto_point_temp_hyst, NULL, 3, 2), |
753 | 767 | ||
768 | SENSOR_ATTR_2(pwm2_auto_channels_temp, S_IRUGO|S_IWUSR, | ||
769 | show_pwm_auto_point_channel, | ||
770 | store_pwm_auto_point_channel, 0, 1), | ||
754 | SENSOR_ATTR_2(temp2_auto_point1_pwm, S_IRUGO|S_IWUSR, | 771 | SENSOR_ATTR_2(temp2_auto_point1_pwm, S_IRUGO|S_IWUSR, |
755 | show_pwm_auto_point_pwm, store_pwm_auto_point_pwm, | 772 | show_pwm_auto_point_pwm, store_pwm_auto_point_pwm, |
756 | 0, 0), | 773 | 0, 0), |
@@ -789,6 +806,9 @@ static struct sensor_device_attribute_2 f8000_fan_attr[] = { | |||
789 | SENSOR_ATTR_2(temp2_auto_point4_temp_hyst, S_IRUGO, | 806 | SENSOR_ATTR_2(temp2_auto_point4_temp_hyst, S_IRUGO, |
790 | show_pwm_auto_point_temp_hyst, NULL, 3, 0), | 807 | show_pwm_auto_point_temp_hyst, NULL, 3, 0), |
791 | 808 | ||
809 | SENSOR_ATTR_2(pwm3_auto_channels_temp, S_IRUGO|S_IWUSR, | ||
810 | show_pwm_auto_point_channel, | ||
811 | store_pwm_auto_point_channel, 0, 2), | ||
792 | SENSOR_ATTR_2(temp3_auto_point1_pwm, S_IRUGO|S_IWUSR, | 812 | SENSOR_ATTR_2(temp3_auto_point1_pwm, S_IRUGO|S_IWUSR, |
793 | show_pwm_auto_point_pwm, store_pwm_auto_point_pwm, | 813 | show_pwm_auto_point_pwm, store_pwm_auto_point_pwm, |
794 | 0, 1), | 814 | 0, 1), |
@@ -1847,15 +1867,15 @@ static int __devinit f71882fg_probe(struct platform_device *pdev) | |||
1847 | break; | 1867 | break; |
1848 | case f71882fg: | 1868 | case f71882fg: |
1849 | err = f71882fg_create_sysfs_files(pdev, | 1869 | err = f71882fg_create_sysfs_files(pdev, |
1850 | f71882fg_in_temp_attr, | 1870 | fxxxx_in1_alarm_attr, |
1851 | ARRAY_SIZE(f71882fg_in_temp_attr)); | 1871 | ARRAY_SIZE(fxxxx_in1_alarm_attr)); |
1852 | if (err) | 1872 | if (err) |
1853 | goto exit_unregister_sysfs; | 1873 | goto exit_unregister_sysfs; |
1854 | /* fall through! */ | 1874 | /* fall through! */ |
1855 | case f71862fg: | 1875 | case f71862fg: |
1856 | err = f71882fg_create_sysfs_files(pdev, | 1876 | err = f71882fg_create_sysfs_files(pdev, |
1857 | f718x2fg_in_temp_attr, | 1877 | fxxxx_in_temp_attr, |
1858 | ARRAY_SIZE(f718x2fg_in_temp_attr)); | 1878 | ARRAY_SIZE(fxxxx_in_temp_attr)); |
1859 | break; | 1879 | break; |
1860 | case f8000: | 1880 | case f8000: |
1861 | err = f71882fg_create_sysfs_files(pdev, | 1881 | err = f71882fg_create_sysfs_files(pdev, |
@@ -1905,25 +1925,40 @@ static int __devinit f71882fg_probe(struct platform_device *pdev) | |||
1905 | switch (data->type) { | 1925 | switch (data->type) { |
1906 | case f71862fg: | 1926 | case f71862fg: |
1907 | err = f71882fg_create_sysfs_files(pdev, | 1927 | err = f71882fg_create_sysfs_files(pdev, |
1908 | f71862fg_fan_attr, | 1928 | fxxxx_fan_beep_attr, |
1909 | ARRAY_SIZE(f71862fg_fan_attr)); | 1929 | ARRAY_SIZE(fxxxx_fan_beep_attr)); |
1930 | if (err) | ||
1931 | goto exit_unregister_sysfs; | ||
1932 | err = f71882fg_create_sysfs_files(pdev, | ||
1933 | f71862fg_auto_pwm_attr, | ||
1934 | ARRAY_SIZE(f71862fg_auto_pwm_attr)); | ||
1910 | break; | 1935 | break; |
1911 | case f71882fg: | 1936 | case f71882fg: |
1912 | err = f71882fg_create_sysfs_files(pdev, | 1937 | err = f71882fg_create_sysfs_files(pdev, |
1913 | f71882fg_fan_attr, | 1938 | fxxxx_fan_beep_attr, |
1914 | ARRAY_SIZE(f71882fg_fan_attr)); | 1939 | ARRAY_SIZE(fxxxx_fan_beep_attr)); |
1940 | if (err) | ||
1941 | goto exit_unregister_sysfs; | ||
1942 | err = f71882fg_create_sysfs_files(pdev, | ||
1943 | f71882fg_auto_pwm_attr, | ||
1944 | ARRAY_SIZE(f71882fg_auto_pwm_attr)); | ||
1915 | if (err) | 1945 | if (err) |
1916 | goto exit_unregister_sysfs; | 1946 | goto exit_unregister_sysfs; |
1917 | /* fall through! */ | 1947 | /* fall through! */ |
1918 | case f71858fg: | 1948 | case f71858fg: |
1919 | err = f71882fg_create_sysfs_files(pdev, | 1949 | err = f71882fg_create_sysfs_files(pdev, |
1920 | f71882fg_f71858fg_fan_attr, | 1950 | fxxxx_auto_pwm_attr, |
1921 | ARRAY_SIZE(f71882fg_f71858fg_fan_attr)); | 1951 | ARRAY_SIZE(fxxxx_auto_pwm_attr)); |
1922 | break; | 1952 | break; |
1923 | case f8000: | 1953 | case f8000: |
1924 | err = f71882fg_create_sysfs_files(pdev, | 1954 | err = f71882fg_create_sysfs_files(pdev, |
1925 | f8000_fan_attr, | 1955 | f8000_fan_attr, |
1926 | ARRAY_SIZE(f8000_fan_attr)); | 1956 | ARRAY_SIZE(f8000_fan_attr)); |
1957 | if (err) | ||
1958 | goto exit_unregister_sysfs; | ||
1959 | err = f71882fg_create_sysfs_files(pdev, | ||
1960 | f8000_auto_pwm_attr, | ||
1961 | ARRAY_SIZE(f8000_auto_pwm_attr)); | ||
1927 | break; | 1962 | break; |
1928 | } | 1963 | } |
1929 | if (err) | 1964 | if (err) |
@@ -1965,22 +2000,28 @@ static int f71882fg_remove(struct platform_device *pdev) | |||
1965 | below are supersets of the ones skipped. */ | 2000 | below are supersets of the ones skipped. */ |
1966 | device_remove_file(&pdev->dev, &dev_attr_name); | 2001 | device_remove_file(&pdev->dev, &dev_attr_name); |
1967 | 2002 | ||
1968 | for (i = 0; i < ARRAY_SIZE(f718x2fg_in_temp_attr); i++) | 2003 | for (i = 0; i < ARRAY_SIZE(fxxxx_in_temp_attr); i++) |
1969 | device_remove_file(&pdev->dev, | 2004 | device_remove_file(&pdev->dev, |
1970 | &f718x2fg_in_temp_attr[i].dev_attr); | 2005 | &fxxxx_in_temp_attr[i].dev_attr); |
1971 | 2006 | ||
1972 | for (i = 0; i < ARRAY_SIZE(f71882fg_in_temp_attr); i++) | 2007 | for (i = 0; i < ARRAY_SIZE(fxxxx_in1_alarm_attr); i++) |
1973 | device_remove_file(&pdev->dev, | 2008 | device_remove_file(&pdev->dev, |
1974 | &f71882fg_in_temp_attr[i].dev_attr); | 2009 | &fxxxx_in1_alarm_attr[i].dev_attr); |
1975 | 2010 | ||
1976 | for (i = 0; i < ARRAY_SIZE(fxxxx_fan_attr); i++) | 2011 | for (i = 0; i < ARRAY_SIZE(fxxxx_fan_attr); i++) |
1977 | device_remove_file(&pdev->dev, &fxxxx_fan_attr[i].dev_attr); | 2012 | device_remove_file(&pdev->dev, &fxxxx_fan_attr[i].dev_attr); |
1978 | 2013 | ||
1979 | for (i = 0; i < ARRAY_SIZE(f71882fg_fan_attr); i++) | 2014 | for (i = 0; i < ARRAY_SIZE(fxxxx_fan_beep_attr); i++) |
1980 | device_remove_file(&pdev->dev, &f71882fg_fan_attr[i].dev_attr); | 2015 | device_remove_file(&pdev->dev, |
2016 | &fxxxx_fan_beep_attr[i].dev_attr); | ||
1981 | 2017 | ||
1982 | for (i = 0; i < ARRAY_SIZE(f8000_fan_attr); i++) | 2018 | for (i = 0; i < ARRAY_SIZE(f71882fg_auto_pwm_attr); i++) |
1983 | device_remove_file(&pdev->dev, &f8000_fan_attr[i].dev_attr); | 2019 | device_remove_file(&pdev->dev, |
2020 | &f71882fg_auto_pwm_attr[i].dev_attr); | ||
2021 | |||
2022 | for (i = 0; i < ARRAY_SIZE(f8000_auto_pwm_attr); i++) | ||
2023 | device_remove_file(&pdev->dev, | ||
2024 | &f8000_auto_pwm_attr[i].dev_attr); | ||
1984 | 2025 | ||
1985 | kfree(data); | 2026 | kfree(data); |
1986 | 2027 | ||