Changeset 114
- Timestamp:
- 12/25/98 19:36:03 (14 years ago)
- Location:
- lm-sensors/trunk
- Files:
-
- 2 modified
-
kernel/chips/lm78.c (modified) (4 diffs)
-
src/lm78.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lm-sensors/trunk/kernel/chips/lm78.c
r113 r114 66 66 67 67 /* Conversions. Rounding is only done on the TO_REG variants. */ 68 #define IN_TO_REG(val,nr) (((val) * 10 + 8)/16) 69 #define IN_FROM_REG(val,nr) (((val) * 16) / 10) 70 71 #define FAN_TO_REG(val) ((val)==0?255:((1350000+(val))/((val)*2)) & 0xff) 72 #define FAN_FROM_REG(val) ((val)==0?-1:(val)==255?0:1350000/((val)*2)) 68 #define IN_TO_REG(val) (((val) * 10 + 8)/16) 69 #define IN_FROM_REG(val) (((val) * 16) / 10) 70 71 #define FAN_TO_REG(val,div) ((val)==0?255:((1350000+(val))/\ 72 ((val)*2*(div))) & 0xff) 73 #define FAN_FROM_REG(val,div) ((val)==0?-1:(val)==255?0:1350000/((val)*2*(div))) 73 74 74 75 #define TEMP_TO_REG(val) (((val)<0?(((val)-5)/10)&0xff:((val)+5)/10) & 0xff) … … 661 662 vid = VID_FROM_REG(vid); 662 663 663 lm78_write_value(client,LM78_REG_IN_MIN(0),IN_TO_REG(LM78_INIT_IN_MIN_0,0)); 664 lm78_write_value(client,LM78_REG_IN_MAX(0),IN_TO_REG(LM78_INIT_IN_MAX_0,0)); 665 lm78_write_value(client,LM78_REG_IN_MIN(1),IN_TO_REG(LM78_INIT_IN_MIN_1,1)); 666 lm78_write_value(client,LM78_REG_IN_MAX(1),IN_TO_REG(LM78_INIT_IN_MAX_1,1)); 667 lm78_write_value(client,LM78_REG_IN_MIN(2),IN_TO_REG(LM78_INIT_IN_MIN_2,2)); 668 lm78_write_value(client,LM78_REG_IN_MAX(2),IN_TO_REG(LM78_INIT_IN_MAX_2,2)); 669 lm78_write_value(client,LM78_REG_IN_MIN(3),IN_TO_REG(LM78_INIT_IN_MIN_3,3)); 670 lm78_write_value(client,LM78_REG_IN_MAX(3),IN_TO_REG(LM78_INIT_IN_MAX_3,3)); 671 lm78_write_value(client,LM78_REG_IN_MIN(4),IN_TO_REG(LM78_INIT_IN_MIN_4,4)); 672 lm78_write_value(client,LM78_REG_IN_MAX(4),IN_TO_REG(LM78_INIT_IN_MAX_4,4)); 673 lm78_write_value(client,LM78_REG_IN_MIN(5),IN_TO_REG(LM78_INIT_IN_MIN_5,5)); 674 lm78_write_value(client,LM78_REG_IN_MAX(5),IN_TO_REG(LM78_INIT_IN_MAX_5,5)); 675 lm78_write_value(client,LM78_REG_IN_MIN(6),IN_TO_REG(LM78_INIT_IN_MIN_6,6)); 676 lm78_write_value(client,LM78_REG_IN_MAX(6),IN_TO_REG(LM78_INIT_IN_MAX_6,6)); 677 lm78_write_value(client,LM78_REG_FAN_MIN(1),FAN_TO_REG(LM78_INIT_FAN_MIN_1)); 678 lm78_write_value(client,LM78_REG_FAN_MIN(2),FAN_TO_REG(LM78_INIT_FAN_MIN_2)); 679 lm78_write_value(client,LM78_REG_FAN_MIN(3),FAN_TO_REG(LM78_INIT_FAN_MIN_3)); 664 lm78_write_value(client,LM78_REG_IN_MIN(0),IN_TO_REG(LM78_INIT_IN_MIN_0)); 665 lm78_write_value(client,LM78_REG_IN_MAX(0),IN_TO_REG(LM78_INIT_IN_MAX_0)); 666 lm78_write_value(client,LM78_REG_IN_MIN(1),IN_TO_REG(LM78_INIT_IN_MIN_1)); 667 lm78_write_value(client,LM78_REG_IN_MAX(1),IN_TO_REG(LM78_INIT_IN_MAX_1)); 668 lm78_write_value(client,LM78_REG_IN_MIN(2),IN_TO_REG(LM78_INIT_IN_MIN_2)); 669 lm78_write_value(client,LM78_REG_IN_MAX(2),IN_TO_REG(LM78_INIT_IN_MAX_2)); 670 lm78_write_value(client,LM78_REG_IN_MIN(3),IN_TO_REG(LM78_INIT_IN_MIN_3)); 671 lm78_write_value(client,LM78_REG_IN_MAX(3),IN_TO_REG(LM78_INIT_IN_MAX_3)); 672 lm78_write_value(client,LM78_REG_IN_MIN(4),IN_TO_REG(LM78_INIT_IN_MIN_4)); 673 lm78_write_value(client,LM78_REG_IN_MAX(4),IN_TO_REG(LM78_INIT_IN_MAX_4)); 674 lm78_write_value(client,LM78_REG_IN_MIN(5),IN_TO_REG(LM78_INIT_IN_MIN_5)); 675 lm78_write_value(client,LM78_REG_IN_MAX(5),IN_TO_REG(LM78_INIT_IN_MAX_5)); 676 lm78_write_value(client,LM78_REG_IN_MIN(6),IN_TO_REG(LM78_INIT_IN_MIN_6)); 677 lm78_write_value(client,LM78_REG_IN_MAX(6),IN_TO_REG(LM78_INIT_IN_MAX_6)); 678 lm78_write_value(client,LM78_REG_FAN_MIN(1), 679 FAN_TO_REG(LM78_INIT_FAN_MIN_1,2)); 680 lm78_write_value(client,LM78_REG_FAN_MIN(2), 681 FAN_TO_REG(LM78_INIT_FAN_MIN_2,2)); 682 lm78_write_value(client,LM78_REG_FAN_MIN(3), 683 FAN_TO_REG(LM78_INIT_FAN_MIN_3,2)); 680 684 lm78_write_value(client,LM78_REG_TEMP_OVER,TEMP_TO_REG(LM78_INIT_TEMP_OVER)); 681 685 lm78_write_value(client,LM78_REG_TEMP_HYST,TEMP_TO_REG(LM78_INIT_TEMP_HYST)); … … 753 757 else if (operation == SENSORS_PROC_REAL_READ) { 754 758 lm78_update_client(client); 755 results[0] = IN_FROM_REG(data->in_min[nr] ,nr);756 results[1] = IN_FROM_REG(data->in_max[nr] ,nr);757 results[2] = IN_FROM_REG(data->in[nr] ,nr);759 results[0] = IN_FROM_REG(data->in_min[nr]); 760 results[1] = IN_FROM_REG(data->in_max[nr]); 761 results[2] = IN_FROM_REG(data->in[nr]); 758 762 *nrels_mag = 3; 759 763 } else if (operation == SENSORS_PROC_REAL_WRITE) { 760 764 if (*nrels_mag >= 1) { 761 data->in_min[nr] = IN_TO_REG(results[0] ,nr);765 data->in_min[nr] = IN_TO_REG(results[0]); 762 766 lm78_write_value(client,LM78_REG_IN_MIN(nr),data->in_min[nr]); 763 767 } 764 768 if (*nrels_mag >= 2) { 765 data->in_max[nr] = IN_TO_REG(results[1] ,nr);769 data->in_max[nr] = IN_TO_REG(results[1]); 766 770 lm78_write_value(client,LM78_REG_IN_MAX(nr),data->in_max[nr]); 767 771 } … … 779 783 else if (operation == SENSORS_PROC_REAL_READ) { 780 784 lm78_update_client(client); 781 results[0] = FAN_FROM_REG(data->fan_min[nr-1]); 782 results[1] = FAN_FROM_REG(data->fan[nr-1]); 785 results[0] = FAN_FROM_REG(data->fan_min[nr-1], 786 DIV_FROM_REG(data->fan_min[nr-1])); 787 results[1] = FAN_FROM_REG(data->fan[nr-1], 788 DIV_FROM_REG(data->fan_min[nr-1])); 783 789 *nrels_mag = 2; 784 790 } else if (operation == SENSORS_PROC_REAL_WRITE) { 785 791 if (*nrels_mag >= 1) { 786 data->fan_min[nr-1] = FAN_TO_REG(results[0]); 792 data->fan_min[nr-1] = FAN_TO_REG(results[0], 793 DIV_FROM_REG(data->fan_div[nr-1])); 787 794 lm78_write_value(client,LM78_REG_FAN_MIN(nr),data->fan_min[nr-1]); 788 795 } -
lm-sensors/trunk/src/lm78.c
r113 r114 66 66 67 67 /* Conversions. Rounding is only done on the TO_REG variants. */ 68 #define IN_TO_REG(val,nr) (((val) * 10 + 8)/16) 69 #define IN_FROM_REG(val,nr) (((val) * 16) / 10) 70 71 #define FAN_TO_REG(val) ((val)==0?255:((1350000+(val))/((val)*2)) & 0xff) 72 #define FAN_FROM_REG(val) ((val)==0?-1:(val)==255?0:1350000/((val)*2)) 68 #define IN_TO_REG(val) (((val) * 10 + 8)/16) 69 #define IN_FROM_REG(val) (((val) * 16) / 10) 70 71 #define FAN_TO_REG(val,div) ((val)==0?255:((1350000+(val))/\ 72 ((val)*2*(div))) & 0xff) 73 #define FAN_FROM_REG(val,div) ((val)==0?-1:(val)==255?0:1350000/((val)*2*(div))) 73 74 74 75 #define TEMP_TO_REG(val) (((val)<0?(((val)-5)/10)&0xff:((val)+5)/10) & 0xff) … … 661 662 vid = VID_FROM_REG(vid); 662 663 663 lm78_write_value(client,LM78_REG_IN_MIN(0),IN_TO_REG(LM78_INIT_IN_MIN_0,0)); 664 lm78_write_value(client,LM78_REG_IN_MAX(0),IN_TO_REG(LM78_INIT_IN_MAX_0,0)); 665 lm78_write_value(client,LM78_REG_IN_MIN(1),IN_TO_REG(LM78_INIT_IN_MIN_1,1)); 666 lm78_write_value(client,LM78_REG_IN_MAX(1),IN_TO_REG(LM78_INIT_IN_MAX_1,1)); 667 lm78_write_value(client,LM78_REG_IN_MIN(2),IN_TO_REG(LM78_INIT_IN_MIN_2,2)); 668 lm78_write_value(client,LM78_REG_IN_MAX(2),IN_TO_REG(LM78_INIT_IN_MAX_2,2)); 669 lm78_write_value(client,LM78_REG_IN_MIN(3),IN_TO_REG(LM78_INIT_IN_MIN_3,3)); 670 lm78_write_value(client,LM78_REG_IN_MAX(3),IN_TO_REG(LM78_INIT_IN_MAX_3,3)); 671 lm78_write_value(client,LM78_REG_IN_MIN(4),IN_TO_REG(LM78_INIT_IN_MIN_4,4)); 672 lm78_write_value(client,LM78_REG_IN_MAX(4),IN_TO_REG(LM78_INIT_IN_MAX_4,4)); 673 lm78_write_value(client,LM78_REG_IN_MIN(5),IN_TO_REG(LM78_INIT_IN_MIN_5,5)); 674 lm78_write_value(client,LM78_REG_IN_MAX(5),IN_TO_REG(LM78_INIT_IN_MAX_5,5)); 675 lm78_write_value(client,LM78_REG_IN_MIN(6),IN_TO_REG(LM78_INIT_IN_MIN_6,6)); 676 lm78_write_value(client,LM78_REG_IN_MAX(6),IN_TO_REG(LM78_INIT_IN_MAX_6,6)); 677 lm78_write_value(client,LM78_REG_FAN_MIN(1),FAN_TO_REG(LM78_INIT_FAN_MIN_1)); 678 lm78_write_value(client,LM78_REG_FAN_MIN(2),FAN_TO_REG(LM78_INIT_FAN_MIN_2)); 679 lm78_write_value(client,LM78_REG_FAN_MIN(3),FAN_TO_REG(LM78_INIT_FAN_MIN_3)); 664 lm78_write_value(client,LM78_REG_IN_MIN(0),IN_TO_REG(LM78_INIT_IN_MIN_0)); 665 lm78_write_value(client,LM78_REG_IN_MAX(0),IN_TO_REG(LM78_INIT_IN_MAX_0)); 666 lm78_write_value(client,LM78_REG_IN_MIN(1),IN_TO_REG(LM78_INIT_IN_MIN_1)); 667 lm78_write_value(client,LM78_REG_IN_MAX(1),IN_TO_REG(LM78_INIT_IN_MAX_1)); 668 lm78_write_value(client,LM78_REG_IN_MIN(2),IN_TO_REG(LM78_INIT_IN_MIN_2)); 669 lm78_write_value(client,LM78_REG_IN_MAX(2),IN_TO_REG(LM78_INIT_IN_MAX_2)); 670 lm78_write_value(client,LM78_REG_IN_MIN(3),IN_TO_REG(LM78_INIT_IN_MIN_3)); 671 lm78_write_value(client,LM78_REG_IN_MAX(3),IN_TO_REG(LM78_INIT_IN_MAX_3)); 672 lm78_write_value(client,LM78_REG_IN_MIN(4),IN_TO_REG(LM78_INIT_IN_MIN_4)); 673 lm78_write_value(client,LM78_REG_IN_MAX(4),IN_TO_REG(LM78_INIT_IN_MAX_4)); 674 lm78_write_value(client,LM78_REG_IN_MIN(5),IN_TO_REG(LM78_INIT_IN_MIN_5)); 675 lm78_write_value(client,LM78_REG_IN_MAX(5),IN_TO_REG(LM78_INIT_IN_MAX_5)); 676 lm78_write_value(client,LM78_REG_IN_MIN(6),IN_TO_REG(LM78_INIT_IN_MIN_6)); 677 lm78_write_value(client,LM78_REG_IN_MAX(6),IN_TO_REG(LM78_INIT_IN_MAX_6)); 678 lm78_write_value(client,LM78_REG_FAN_MIN(1), 679 FAN_TO_REG(LM78_INIT_FAN_MIN_1,2)); 680 lm78_write_value(client,LM78_REG_FAN_MIN(2), 681 FAN_TO_REG(LM78_INIT_FAN_MIN_2,2)); 682 lm78_write_value(client,LM78_REG_FAN_MIN(3), 683 FAN_TO_REG(LM78_INIT_FAN_MIN_3,2)); 680 684 lm78_write_value(client,LM78_REG_TEMP_OVER,TEMP_TO_REG(LM78_INIT_TEMP_OVER)); 681 685 lm78_write_value(client,LM78_REG_TEMP_HYST,TEMP_TO_REG(LM78_INIT_TEMP_HYST)); … … 753 757 else if (operation == SENSORS_PROC_REAL_READ) { 754 758 lm78_update_client(client); 755 results[0] = IN_FROM_REG(data->in_min[nr] ,nr);756 results[1] = IN_FROM_REG(data->in_max[nr] ,nr);757 results[2] = IN_FROM_REG(data->in[nr] ,nr);759 results[0] = IN_FROM_REG(data->in_min[nr]); 760 results[1] = IN_FROM_REG(data->in_max[nr]); 761 results[2] = IN_FROM_REG(data->in[nr]); 758 762 *nrels_mag = 3; 759 763 } else if (operation == SENSORS_PROC_REAL_WRITE) { 760 764 if (*nrels_mag >= 1) { 761 data->in_min[nr] = IN_TO_REG(results[0] ,nr);765 data->in_min[nr] = IN_TO_REG(results[0]); 762 766 lm78_write_value(client,LM78_REG_IN_MIN(nr),data->in_min[nr]); 763 767 } 764 768 if (*nrels_mag >= 2) { 765 data->in_max[nr] = IN_TO_REG(results[1] ,nr);769 data->in_max[nr] = IN_TO_REG(results[1]); 766 770 lm78_write_value(client,LM78_REG_IN_MAX(nr),data->in_max[nr]); 767 771 } … … 779 783 else if (operation == SENSORS_PROC_REAL_READ) { 780 784 lm78_update_client(client); 781 results[0] = FAN_FROM_REG(data->fan_min[nr-1]); 782 results[1] = FAN_FROM_REG(data->fan[nr-1]); 785 results[0] = FAN_FROM_REG(data->fan_min[nr-1], 786 DIV_FROM_REG(data->fan_min[nr-1])); 787 results[1] = FAN_FROM_REG(data->fan[nr-1], 788 DIV_FROM_REG(data->fan_min[nr-1])); 783 789 *nrels_mag = 2; 784 790 } else if (operation == SENSORS_PROC_REAL_WRITE) { 785 791 if (*nrels_mag >= 1) { 786 data->fan_min[nr-1] = FAN_TO_REG(results[0]); 792 data->fan_min[nr-1] = FAN_TO_REG(results[0], 793 DIV_FROM_REG(data->fan_div[nr-1])); 787 794 lm78_write_value(client,LM78_REG_FAN_MIN(nr),data->fan_min[nr-1]); 788 795 }
