Changeset 86
- Timestamp:
- 12/18/98 03:43:48 (14 years ago)
- Location:
- lm-sensors/trunk
- Files:
-
- 2 modified
-
kernel/chips/w83781d.c (modified) (8 diffs)
-
src/w83781d.c (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lm-sensors/trunk/kernel/chips/w83781d.c
r85 r86 53 53 54 54 #define W83781D_REG_TEMP23 0x50 55 #define W83781D_REG_TEMP_HYST23 0x53 56 #define W83781D_REG_TEMP_CONFIG23 0x52 55 57 #define W83781D_REG_TEMP_OVER23 0x55 56 #define W83781D_REG_TEMP_HYST23 0x5357 58 #define W83781D_REG_TEMP 0x27 58 59 #define W83781D_REG_TEMP_OVER 0x39 … … 657 658 w83781d_write_value(client,W83781D_REG_FAN_MIN(3),FAN_TO_REG(W83781D_INIT_FAN_MIN_3)); 658 659 /* Init Temp Sensor1 */ 659 w83781d_write_value(client,W83781D_REG_TEMP_SEL,0x0 1);/* Switch Banks! */660 w83781d_write_value(client,W83781D_REG_TEMP_SEL,0x00);/* Switch Banks! */ 660 661 w83781d_write_value(client,W83781D_REG_TEMP_OVER,TEMP_TO_REG(W83781D_INIT_TEMP_OVER)); 661 662 w83781d_write_value(client,W83781D_REG_TEMP_HYST,TEMP_TO_REG(W83781D_INIT_TEMP_HYST)); 663 w83781d_write_value(client,W83781D_REG_TEMP_CONFIG,0x00); 662 664 /* Init Temp Sensor2 */ 665 w83781d_write_value(client,W83781D_REG_TEMP_SEL,0x01);/* Switch Banks! */ 666 w83781d_write_value(client,W83781D_REG_TEMP_OVER23,TEMP_TO_REG(W83781D_INIT_TEMP_OVER)); 667 w83781d_write_value(client,W83781D_REG_TEMP_OVER23 + 1,0); 668 w83781d_write_value(client,W83781D_REG_TEMP_HYST23,TEMP_TO_REG(W83781D_INIT_TEMP_HYST)); 669 w83781d_write_value(client,W83781D_REG_TEMP_HYST23 + 1,0); 670 w83781d_write_value(client,W83781D_REG_TEMP_CONFIG23,0x00); 671 /* Init Temp Sensor3 */ 663 672 w83781d_write_value(client,W83781D_REG_TEMP_SEL,0x02);/* Switch Banks! */ 664 673 w83781d_write_value(client,W83781D_REG_TEMP_OVER23,TEMP_TO_REG(W83781D_INIT_TEMP_OVER)); … … 666 675 w83781d_write_value(client,W83781D_REG_TEMP_HYST23,TEMP_TO_REG(W83781D_INIT_TEMP_HYST)); 667 676 w83781d_write_value(client,W83781D_REG_TEMP_HYST23 + 1,0); 668 w83781d_write_value(client,W83781D_REG_TEMP_CONFIG,0x00); 669 /* Init Temp Sensor3 */ 670 w83781d_write_value(client,W83781D_REG_TEMP_SEL,0x04);/* Switch Banks! */ 671 w83781d_write_value(client,W83781D_REG_TEMP_OVER23,TEMP_TO_REG(W83781D_INIT_TEMP_OVER)); 672 w83781d_write_value(client,W83781D_REG_TEMP_OVER23 + 1,0); 673 w83781d_write_value(client,W83781D_REG_TEMP_HYST23,TEMP_TO_REG(W83781D_INIT_TEMP_HYST)); 674 w83781d_write_value(client,W83781D_REG_TEMP_HYST23 + 1,0); 675 w83781d_write_value(client,W83781D_REG_TEMP_CONFIG,0x00); 677 w83781d_write_value(client,W83781D_REG_TEMP_CONFIG23,0x00); 676 678 w83781d_write_value(client,W83781D_REG_TEMP_SEL,0x00);/* Switch Banks! */ 677 679 … … 704 706 data->fan_min[i-1] = w83781d_read_value(client,W83781D_REG_FAN_MIN(i)); 705 707 } 706 w83781d_write_value(client,W83781D_REG_TEMP_SEL,1);/* Switch Banks!! */707 708 data->temp[0] = w83781d_read_value(client,W83781D_REG_TEMP); 708 709 data->temp_over[0] = w83781d_read_value(client,W83781D_REG_TEMP_OVER); 709 710 data->temp_hyst[0] = w83781d_read_value(client,W83781D_REG_TEMP_HYST); 710 for (i = 1; i <= 2; i++) { 711 w83781d_write_value(client,W83781D_REG_TEMP_SEL,1 << i);/* Switch Banks!! */ 712 data->temp[i] = w83781d_read_value(client,W83781D_REG_TEMP23); 713 data->temp_over[i] = w83781d_read_value(client,W83781D_REG_TEMP_OVER23); 714 data->temp_hyst[i] = w83781d_read_value(client,W83781D_REG_TEMP_HYST23); 715 } 711 w83781d_write_value(client,W83781D_REG_TEMP_SEL,1);/* Switch Banks!! */ 712 data->temp[1] = w83781d_read_value(client,W83781D_REG_TEMP23); 713 data->temp_over[1] = w83781d_read_value(client,W83781D_REG_TEMP_OVER23); 714 data->temp_hyst[1] = w83781d_read_value(client,W83781D_REG_TEMP_HYST23); 715 w83781d_write_value(client,W83781D_REG_TEMP_SEL,2);/* Switch Banks!! */ 716 data->temp[2] = w83781d_read_value(client,W83781D_REG_TEMP23); 717 data->temp_over[2] = w83781d_read_value(client,W83781D_REG_TEMP_OVER23); 718 data->temp_hyst[2] = w83781d_read_value(client,W83781D_REG_TEMP_HYST23); 716 719 w83781d_write_value(client,W83781D_REG_TEMP_SEL,0);/* Switch Banks!! */ 717 720 i = w83781d_read_value(client,W83781D_REG_VID_FANDIV); … … 799 802 else if (operation == SENSORS_PROC_REAL_READ) { 800 803 w83781d_update_client(client); 801 results[0] = TEMP_FROM_REG(data->temp_over[tempnum ]);802 results[1] = TEMP_FROM_REG(data->temp_hyst[tempnum ]);803 results[2] = TEMP_FROM_REG(data->temp[tempnum ]);804 results[0] = TEMP_FROM_REG(data->temp_over[tempnum - 1]); 805 results[1] = TEMP_FROM_REG(data->temp_hyst[tempnum - 1]); 806 results[2] = TEMP_FROM_REG(data->temp[tempnum - 1]); 804 807 *nrels_mag = 3; 805 808 } else if (operation == SENSORS_PROC_REAL_WRITE) { 806 if (tempnum >1) { 809 if (tempnum == 3) { 810 w83781d_write_value(client,W83781D_REG_TEMP_SEL,0x02);/* Switch Banks!! */ 807 811 if (*nrels_mag >= 1) { 808 data->temp_over[ tempnum] = TEMP_TO_REG(results[0]);809 w83781d_write_value(client,W83781D_REG_TEMP_OVER23,data->temp_over[ tempnum]);812 data->temp_over[2] = TEMP_TO_REG(results[0]); 813 w83781d_write_value(client,W83781D_REG_TEMP_OVER23,data->temp_over[2]); 810 814 w83781d_write_value(client,W83781D_REG_TEMP_OVER23 + 1,0); 811 815 } 812 816 if (*nrels_mag >= 2) { 813 data->temp_hyst[ tempnum] = TEMP_TO_REG(results[1]);814 w83781d_write_value(client,W83781D_REG_TEMP_HYST23,data->temp_hyst[ tempnum]);817 data->temp_hyst[2] = TEMP_TO_REG(results[1]); 818 w83781d_write_value(client,W83781D_REG_TEMP_HYST23,data->temp_hyst[2]); 815 819 w83781d_write_value(client,W83781D_REG_TEMP_HYST23 + 1,0); 816 820 } 821 w83781d_write_value(client,W83781D_REG_TEMP_SEL,0x0);/* Switch Banks!! */ 822 } else if (tempnum == 2) { 823 w83781d_write_value(client,W83781D_REG_TEMP_SEL,0x01);/* Switch Banks!! */ 824 if (*nrels_mag >= 1) { 825 data->temp_over[1] = TEMP_TO_REG(results[0]); 826 w83781d_write_value(client,W83781D_REG_TEMP_OVER23,data->temp_over[1]); 827 w83781d_write_value(client,W83781D_REG_TEMP_OVER23 + 1,0); 828 } 829 if (*nrels_mag >= 2) { 830 data->temp_hyst[1] = TEMP_TO_REG(results[1]); 831 w83781d_write_value(client,W83781D_REG_TEMP_HYST23,data->temp_hyst[1]); 832 w83781d_write_value(client,W83781D_REG_TEMP_HYST23 + 1,0); 833 } 834 w83781d_write_value(client,W83781D_REG_TEMP_SEL,0x0);/* Switch Banks!! */ 817 835 } else { 818 836 if (*nrels_mag >= 1) { 819 data->temp_over[ tempnum] = TEMP_TO_REG(results[0]);820 w83781d_write_value(client,W83781D_REG_TEMP_OVER,data->temp_over[ tempnum]);837 data->temp_over[0] = TEMP_TO_REG(results[0]); 838 w83781d_write_value(client,W83781D_REG_TEMP_OVER,data->temp_over[0]); 821 839 } 822 840 if (*nrels_mag >= 2) { 823 data->temp_hyst[ tempnum] = TEMP_TO_REG(results[1]);824 w83781d_write_value(client,W83781D_REG_TEMP_HYST,data->temp_hyst[ tempnum]);841 data->temp_hyst[0] = TEMP_TO_REG(results[1]); 842 w83781d_write_value(client,W83781D_REG_TEMP_HYST,data->temp_hyst[0]); 825 843 } 826 844 } … … 828 846 } 829 847 848 /* Change back! */ 830 849 831 850 void w83781d_temp1(struct i2c_client *client, int operation, int ctl_name, 832 851 int *nrels_mag, long *results) { 833 852 834 w83781d_write_value(client,W83781D_REG_TEMP_SEL,0x01);/* Switch Banks!! */835 853 w83781d_temp(client,operation,ctl_name,nrels_mag,results,1); 836 w83781d_write_value(client,W83781D_REG_TEMP_SEL,0x0);/* Switch Banks!! */837 854 } 838 855 … … 841 858 int *nrels_mag, long *results) { 842 859 843 w83781d_write_value(client,W83781D_REG_TEMP_SEL,0x02);/* Switch Banks!! */844 860 w83781d_temp(client,operation,ctl_name,nrels_mag,results,2); 845 w83781d_write_value(client,W83781D_REG_TEMP_SEL,0x00);/* Switch Banks!! */846 861 } 847 862 … … 850 865 int *nrels_mag, long *results) { 851 866 852 w83781d_write_value(client,W83781D_REG_TEMP_SEL,0x04);/* Switch Banks!! */853 867 w83781d_temp(client,operation,ctl_name,nrels_mag,results,3); 854 w83781d_write_value(client,W83781D_REG_TEMP_SEL,0x00);/* Switch Banks!! */855 868 } 856 869 -
lm-sensors/trunk/src/w83781d.c
r85 r86 53 53 54 54 #define W83781D_REG_TEMP23 0x50 55 #define W83781D_REG_TEMP_HYST23 0x53 56 #define W83781D_REG_TEMP_CONFIG23 0x52 55 57 #define W83781D_REG_TEMP_OVER23 0x55 56 #define W83781D_REG_TEMP_HYST23 0x5357 58 #define W83781D_REG_TEMP 0x27 58 59 #define W83781D_REG_TEMP_OVER 0x39 … … 657 658 w83781d_write_value(client,W83781D_REG_FAN_MIN(3),FAN_TO_REG(W83781D_INIT_FAN_MIN_3)); 658 659 /* Init Temp Sensor1 */ 659 w83781d_write_value(client,W83781D_REG_TEMP_SEL,0x0 1);/* Switch Banks! */660 w83781d_write_value(client,W83781D_REG_TEMP_SEL,0x00);/* Switch Banks! */ 660 661 w83781d_write_value(client,W83781D_REG_TEMP_OVER,TEMP_TO_REG(W83781D_INIT_TEMP_OVER)); 661 662 w83781d_write_value(client,W83781D_REG_TEMP_HYST,TEMP_TO_REG(W83781D_INIT_TEMP_HYST)); 663 w83781d_write_value(client,W83781D_REG_TEMP_CONFIG,0x00); 662 664 /* Init Temp Sensor2 */ 665 w83781d_write_value(client,W83781D_REG_TEMP_SEL,0x01);/* Switch Banks! */ 666 w83781d_write_value(client,W83781D_REG_TEMP_OVER23,TEMP_TO_REG(W83781D_INIT_TEMP_OVER)); 667 w83781d_write_value(client,W83781D_REG_TEMP_OVER23 + 1,0); 668 w83781d_write_value(client,W83781D_REG_TEMP_HYST23,TEMP_TO_REG(W83781D_INIT_TEMP_HYST)); 669 w83781d_write_value(client,W83781D_REG_TEMP_HYST23 + 1,0); 670 w83781d_write_value(client,W83781D_REG_TEMP_CONFIG23,0x00); 671 /* Init Temp Sensor3 */ 663 672 w83781d_write_value(client,W83781D_REG_TEMP_SEL,0x02);/* Switch Banks! */ 664 673 w83781d_write_value(client,W83781D_REG_TEMP_OVER23,TEMP_TO_REG(W83781D_INIT_TEMP_OVER)); … … 666 675 w83781d_write_value(client,W83781D_REG_TEMP_HYST23,TEMP_TO_REG(W83781D_INIT_TEMP_HYST)); 667 676 w83781d_write_value(client,W83781D_REG_TEMP_HYST23 + 1,0); 668 w83781d_write_value(client,W83781D_REG_TEMP_CONFIG,0x00); 669 /* Init Temp Sensor3 */ 670 w83781d_write_value(client,W83781D_REG_TEMP_SEL,0x04);/* Switch Banks! */ 671 w83781d_write_value(client,W83781D_REG_TEMP_OVER23,TEMP_TO_REG(W83781D_INIT_TEMP_OVER)); 672 w83781d_write_value(client,W83781D_REG_TEMP_OVER23 + 1,0); 673 w83781d_write_value(client,W83781D_REG_TEMP_HYST23,TEMP_TO_REG(W83781D_INIT_TEMP_HYST)); 674 w83781d_write_value(client,W83781D_REG_TEMP_HYST23 + 1,0); 675 w83781d_write_value(client,W83781D_REG_TEMP_CONFIG,0x00); 677 w83781d_write_value(client,W83781D_REG_TEMP_CONFIG23,0x00); 676 678 w83781d_write_value(client,W83781D_REG_TEMP_SEL,0x00);/* Switch Banks! */ 677 679 … … 704 706 data->fan_min[i-1] = w83781d_read_value(client,W83781D_REG_FAN_MIN(i)); 705 707 } 706 w83781d_write_value(client,W83781D_REG_TEMP_SEL,1);/* Switch Banks!! */707 708 data->temp[0] = w83781d_read_value(client,W83781D_REG_TEMP); 708 709 data->temp_over[0] = w83781d_read_value(client,W83781D_REG_TEMP_OVER); 709 710 data->temp_hyst[0] = w83781d_read_value(client,W83781D_REG_TEMP_HYST); 710 for (i = 1; i <= 2; i++) { 711 w83781d_write_value(client,W83781D_REG_TEMP_SEL,1 << i);/* Switch Banks!! */ 712 data->temp[i] = w83781d_read_value(client,W83781D_REG_TEMP23); 713 data->temp_over[i] = w83781d_read_value(client,W83781D_REG_TEMP_OVER23); 714 data->temp_hyst[i] = w83781d_read_value(client,W83781D_REG_TEMP_HYST23); 715 } 711 w83781d_write_value(client,W83781D_REG_TEMP_SEL,1);/* Switch Banks!! */ 712 data->temp[1] = w83781d_read_value(client,W83781D_REG_TEMP23); 713 data->temp_over[1] = w83781d_read_value(client,W83781D_REG_TEMP_OVER23); 714 data->temp_hyst[1] = w83781d_read_value(client,W83781D_REG_TEMP_HYST23); 715 w83781d_write_value(client,W83781D_REG_TEMP_SEL,2);/* Switch Banks!! */ 716 data->temp[2] = w83781d_read_value(client,W83781D_REG_TEMP23); 717 data->temp_over[2] = w83781d_read_value(client,W83781D_REG_TEMP_OVER23); 718 data->temp_hyst[2] = w83781d_read_value(client,W83781D_REG_TEMP_HYST23); 716 719 w83781d_write_value(client,W83781D_REG_TEMP_SEL,0);/* Switch Banks!! */ 717 720 i = w83781d_read_value(client,W83781D_REG_VID_FANDIV); … … 799 802 else if (operation == SENSORS_PROC_REAL_READ) { 800 803 w83781d_update_client(client); 801 results[0] = TEMP_FROM_REG(data->temp_over[tempnum ]);802 results[1] = TEMP_FROM_REG(data->temp_hyst[tempnum ]);803 results[2] = TEMP_FROM_REG(data->temp[tempnum ]);804 results[0] = TEMP_FROM_REG(data->temp_over[tempnum - 1]); 805 results[1] = TEMP_FROM_REG(data->temp_hyst[tempnum - 1]); 806 results[2] = TEMP_FROM_REG(data->temp[tempnum - 1]); 804 807 *nrels_mag = 3; 805 808 } else if (operation == SENSORS_PROC_REAL_WRITE) { 806 if (tempnum >1) { 809 if (tempnum == 3) { 810 w83781d_write_value(client,W83781D_REG_TEMP_SEL,0x02);/* Switch Banks!! */ 807 811 if (*nrels_mag >= 1) { 808 data->temp_over[ tempnum] = TEMP_TO_REG(results[0]);809 w83781d_write_value(client,W83781D_REG_TEMP_OVER23,data->temp_over[ tempnum]);812 data->temp_over[2] = TEMP_TO_REG(results[0]); 813 w83781d_write_value(client,W83781D_REG_TEMP_OVER23,data->temp_over[2]); 810 814 w83781d_write_value(client,W83781D_REG_TEMP_OVER23 + 1,0); 811 815 } 812 816 if (*nrels_mag >= 2) { 813 data->temp_hyst[ tempnum] = TEMP_TO_REG(results[1]);814 w83781d_write_value(client,W83781D_REG_TEMP_HYST23,data->temp_hyst[ tempnum]);817 data->temp_hyst[2] = TEMP_TO_REG(results[1]); 818 w83781d_write_value(client,W83781D_REG_TEMP_HYST23,data->temp_hyst[2]); 815 819 w83781d_write_value(client,W83781D_REG_TEMP_HYST23 + 1,0); 816 820 } 821 w83781d_write_value(client,W83781D_REG_TEMP_SEL,0x0);/* Switch Banks!! */ 822 } else if (tempnum == 2) { 823 w83781d_write_value(client,W83781D_REG_TEMP_SEL,0x01);/* Switch Banks!! */ 824 if (*nrels_mag >= 1) { 825 data->temp_over[1] = TEMP_TO_REG(results[0]); 826 w83781d_write_value(client,W83781D_REG_TEMP_OVER23,data->temp_over[1]); 827 w83781d_write_value(client,W83781D_REG_TEMP_OVER23 + 1,0); 828 } 829 if (*nrels_mag >= 2) { 830 data->temp_hyst[1] = TEMP_TO_REG(results[1]); 831 w83781d_write_value(client,W83781D_REG_TEMP_HYST23,data->temp_hyst[1]); 832 w83781d_write_value(client,W83781D_REG_TEMP_HYST23 + 1,0); 833 } 834 w83781d_write_value(client,W83781D_REG_TEMP_SEL,0x0);/* Switch Banks!! */ 817 835 } else { 818 836 if (*nrels_mag >= 1) { 819 data->temp_over[ tempnum] = TEMP_TO_REG(results[0]);820 w83781d_write_value(client,W83781D_REG_TEMP_OVER,data->temp_over[ tempnum]);837 data->temp_over[0] = TEMP_TO_REG(results[0]); 838 w83781d_write_value(client,W83781D_REG_TEMP_OVER,data->temp_over[0]); 821 839 } 822 840 if (*nrels_mag >= 2) { 823 data->temp_hyst[ tempnum] = TEMP_TO_REG(results[1]);824 w83781d_write_value(client,W83781D_REG_TEMP_HYST,data->temp_hyst[ tempnum]);841 data->temp_hyst[0] = TEMP_TO_REG(results[1]); 842 w83781d_write_value(client,W83781D_REG_TEMP_HYST,data->temp_hyst[0]); 825 843 } 826 844 } … … 828 846 } 829 847 848 /* Change back! */ 830 849 831 850 void w83781d_temp1(struct i2c_client *client, int operation, int ctl_name, 832 851 int *nrels_mag, long *results) { 833 852 834 w83781d_write_value(client,W83781D_REG_TEMP_SEL,0x01);/* Switch Banks!! */835 853 w83781d_temp(client,operation,ctl_name,nrels_mag,results,1); 836 w83781d_write_value(client,W83781D_REG_TEMP_SEL,0x0);/* Switch Banks!! */837 854 } 838 855 … … 841 858 int *nrels_mag, long *results) { 842 859 843 w83781d_write_value(client,W83781D_REG_TEMP_SEL,0x02);/* Switch Banks!! */844 860 w83781d_temp(client,operation,ctl_name,nrels_mag,results,2); 845 w83781d_write_value(client,W83781D_REG_TEMP_SEL,0x00);/* Switch Banks!! */846 861 } 847 862 … … 850 865 int *nrels_mag, long *results) { 851 866 852 w83781d_write_value(client,W83781D_REG_TEMP_SEL,0x04);/* Switch Banks!! */853 867 w83781d_temp(client,operation,ctl_name,nrels_mag,results,3); 854 w83781d_write_value(client,W83781D_REG_TEMP_SEL,0x00);/* Switch Banks!! */855 868 } 856 869
