Changeset 957
- Timestamp:
- 12/16/00 18:58:58 (13 years ago)
- Files:
-
- 1 modified
-
lm-sensors/trunk/kernel/chips/lm87.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lm-sensors/trunk/kernel/chips/lm87.c
r956 r957 248 248 u8 in_max[6]; /* Register value */ 249 249 u8 in_min[6]; /* Register value */ 250 u8 fan ; /* Register value */251 u8 fan_min ; /* Register value */252 u8 fan_div ; /* Register encoding, shifted right */250 u8 fan[2]; /* Register value */ 251 u8 fan_min[2]; /* Register value */ 252 u8 fan_div[2]; /* Register encoding, shifted right */ 253 253 int front_amb_temp; /* Temp, shifted right */ 254 254 int cpu_temp; /* Temp, shifted right */ … … 615 615 } 616 616 617 data->fan = 617 data->fan[0] = 618 lm87_read_value(client, LM87_REG_FAN1_AIN1); 619 data->fan_min[0] = 620 lm87_read_value(client, LM87_REG_FAN1_AIN1_LIMIT); 621 data->fan[1] = 618 622 lm87_read_value(client, LM87_REG_FAN2_AIN2); 619 data->fan_min =623 data->fan_min[1] = 620 624 lm87_read_value(client, LM87_REG_FAN2_AIN2_LIMIT); 621 625 … … 643 647 644 648 i = lm87_read_value(client, LM87_REG_VID_FAN_DIV); 645 data->fan_div = (i >> 4) & 0x03; 649 data->fan_div[0] = (i >> 4) & 0x03; 650 data->fan_div[1] = (i >> 6) & 0x03; 646 651 data->vid = i & 0x0f; 647 652 data->vid |= … … 733 738 { 734 739 struct lm87_data *data = client->data; 735 /* 736 need to fix this function to handle both fans 737 int nr = ctl_name - LM87_SYSCTL_FAN + 1; 738 */ 740 int nr = ctl_name - LM87_SYSCTL_FAN1 + 1; 739 741 740 742 if (operation == SENSORS_PROC_REAL_INFO) … … 742 744 else if (operation == SENSORS_PROC_REAL_READ) { 743 745 lm87_update_client(client); 744 results[0] = FAN_FROM_REG(data->fan_min ,745 DIV_FROM_REG(data->fan_div ));746 results[1] = FAN_FROM_REG(data->fan ,747 DIV_FROM_REG(data->fan_div));746 results[0] = FAN_FROM_REG(data->fan_min[nr-1], 747 DIV_FROM_REG(data->fan_div[nr-1])); 748 results[1] = FAN_FROM_REG(data->fan[nr-1], 749 DIV_FROM_REG(data->fan_div[nr-1])); 748 750 *nrels_mag = 2; 749 751 } else if (operation == SENSORS_PROC_REAL_WRITE) { 750 752 if (*nrels_mag >= 0) { 751 data->fan_min = FAN_TO_REG(results[0],753 data->fan_min[nr-1] = FAN_TO_REG(results[0], 752 754 DIV_FROM_REG 753 (data->fan_div ));755 (data->fan_div[nr-1])); 754 756 lm87_write_value(client, LM87_REG_FAN2_AIN2_LIMIT, 755 data->fan_min );757 data->fan_min[nr-1]); 756 758 } 757 759 } … … 853 855 else if (operation == SENSORS_PROC_REAL_READ) { 854 856 lm87_update_client(client); 855 results[0] = DIV_FROM_REG(data->fan_div); 856 *nrels_mag = 1; 857 results[0] = DIV_FROM_REG(data->fan_div[0]); 858 results[1] = DIV_FROM_REG(data->fan_div[1]); 859 *nrels_mag = 2; 857 860 } else if (operation == SENSORS_PROC_REAL_WRITE) { 858 861 old = lm87_read_value(client, LM87_REG_VID_FAN_DIV); 859 862 if (*nrels_mag >= 2) { 860 data->fan_div = DIV_TO_REG(results[1]);861 old = (old & 0x3f) | (data->fan_div << 6);863 data->fan_div[1] = DIV_TO_REG(results[1]); 864 old = (old & 0x3f) | (data->fan_div[1] << 6); 862 865 } 863 866 if (*nrels_mag >= 1) { 864 data->fan_div = DIV_TO_REG(results[0]);865 old = (old & 0xcf) | (data->fan_div << 4);867 data->fan_div[0] = DIV_TO_REG(results[0]); 868 old = (old & 0xcf) | (data->fan_div[0] << 4); 866 869 lm87_write_value(client, LM87_REG_VID_FAN_DIV, old); 867 870 }
