Changeset 957

Show
Ignore:
Timestamp:
12/16/00 18:58:58 (13 years ago)
Author:
mds
Message:

(mds) stub out two-fan support. Driver currently sets chip for single

fan input (fan2), with fan1 input set for analog in, so fan1 entry
in /proc won't work.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lm-sensors/trunk/kernel/chips/lm87.c

    r956 r957  
    248248        u8  in_max[6];          /* Register value */ 
    249249        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 */ 
    253253        int front_amb_temp;     /* Temp, shifted right */ 
    254254        int cpu_temp;           /* Temp, shifted right */ 
     
    615615                } 
    616616 
    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] = 
    618622                    lm87_read_value(client, LM87_REG_FAN2_AIN2); 
    619                 data->fan_min = 
     623                data->fan_min[1] = 
    620624                    lm87_read_value(client, LM87_REG_FAN2_AIN2_LIMIT); 
    621625 
     
    643647 
    644648                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; 
    646651                data->vid = i & 0x0f; 
    647652                data->vid |= 
     
    733738{ 
    734739        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; 
    739741 
    740742        if (operation == SENSORS_PROC_REAL_INFO) 
     
    742744        else if (operation == SENSORS_PROC_REAL_READ) { 
    743745                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])); 
    748750                *nrels_mag = 2; 
    749751        } else if (operation == SENSORS_PROC_REAL_WRITE) { 
    750752                if (*nrels_mag >= 0) { 
    751                         data->fan_min = FAN_TO_REG(results[0], 
     753                        data->fan_min[nr-1] = FAN_TO_REG(results[0], 
    752754                                                   DIV_FROM_REG 
    753                                                    (data->fan_div)); 
     755                                                   (data->fan_div[nr-1])); 
    754756                        lm87_write_value(client, LM87_REG_FAN2_AIN2_LIMIT, 
    755                                             data->fan_min); 
     757                                            data->fan_min[nr-1]); 
    756758                } 
    757759        } 
     
    853855        else if (operation == SENSORS_PROC_REAL_READ) { 
    854856                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; 
    857860        } else if (operation == SENSORS_PROC_REAL_WRITE) { 
    858861                old = lm87_read_value(client, LM87_REG_VID_FAN_DIV); 
    859862                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); 
    862865                } 
    863866                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); 
    866869                        lm87_write_value(client, LM87_REG_VID_FAN_DIV, old); 
    867870                }