Changeset 2477

Show
Ignore:
Timestamp:
04/25/04 17:23:32 (9 years ago)
Author:
khali
Message:

Add some debug output.

Show more status bits (voltages and temperatures).
Fix incorrect use of const.
Clear status bits on update.
Fix temperature reads (min, crit and current).
Fix temperature writes (min).

Files:
1 modified

Legend:

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

    r2474 r2477  
    123123#define IN_TO_REG(val)                  ((val)<0?0:(val)>297?255: \ 
    124124                                         ((val) * 255 + 148) / 297) 
    125 #define IN_STATUS_FROM_REG(val)         ((val) & 0x86) 
     125#define IN_STATUS_FROM_REG(val)         ((val) & 0x97) 
    126126 
    127127/* 
     
    142142#define TEMP_TO_REG(val)                ((val)<-128?0x80:(val)>127?0x7F: \ 
    143143                                         (val)<0?(val)+0x80:(val)) 
    144 #define TEMP_STATUS_FROM_REG(val)       ((val) & 0xCE) 
     144#define TEMP_STATUS_FROM_REG(val)       ((val) & 0xFF) 
    145145 
    146146struct pc87360_data { 
     
    437437 
    438438                address[i] = val; 
     439 
     440#ifdef DEBUG 
     441                if (i==0) { /* Fans */ 
     442                        val = superio_inb(0x70) 
     443                            | (superio_inb(0x71) << 8); 
     444                         
     445                        printk(KERN_DEBUG "pc87360.o: Fan 1: mon=%d " 
     446                               "ctrl=%d inv=%d\n", (val>>2)&1, (val>>3)&1, 
     447                               (val>>4)&1); 
     448                        printk(KERN_DEBUG "pc87360.o: Fan 2: mon=%d " 
     449                               "ctrl=%d inv=%d\n", (val>>5)&1, (val>>6)&1, 
     450                               (val>>7)&1); 
     451                        printk(KERN_DEBUG "pc87360.o: Fan 3: mon=%d " 
     452                               "ctrl=%d inv=%d\n", (val>>8)&1, (val>>9)&1, 
     453                               (val>>10)&1); 
     454                } 
     455#endif 
    439456        } 
    440457 
     
    454471        const char *type_name = "pc87360"; 
    455472        const char *client_name = "PC8736x chip"; 
    456         const ctl_table *template = pc87360_dir_table_template; 
     473        ctl_table *template = pc87360_dir_table_template; 
    457474 
    458475        if (!i2c_is_isa_adapter(adapter)) { 
     
    597614        down(&data->update_lock); 
    598615 
    599         if ((jiffies - data->last_updated > HZ + HZ / 2) || 
     616        if ((jiffies - data->last_updated > HZ * 2) || 
    600617            (jiffies < data->last_updated) || !data->valid) { 
     618#ifdef DEBUG 
     619                printk(KERN_DEBUG "pc87360.o: Data update\n"); 
     620#endif 
     621 
     622                /* Fans */ 
    601623                for (i = 0; i < data->fannr; i++) { 
    602624                        data->fan[i] = pc87360_read_value(data, 0, 
     
    610632                } 
    611633 
     634                /* Voltages */ 
    612635                for (i = 0; i < data->innr; i++) { 
    613636                        pc87360_write_value(data, 1, PC87365_REG_IN_BANK, i); 
    614637                        data->in_status[i] = pc87360_read_value(data, 1, 
    615638                                             PC87365_REG_IN_STATUS); 
     639                        /* Clear bits */ 
     640                        pc87360_write_value(data, 1, PC87365_REG_IN_STATUS, 
     641                                            data->in_status[i] | 0x86); 
    616642                        if (data->in_status[i] & 0x01) { 
    617643                                data->in[i] = pc87360_read_value(data, 1, 
     
    628654                } 
    629655 
     656                /* Temperatures */ 
    630657                for (i = 0; i < data->tempnr; i++) { 
    631658                        pc87360_write_value(data, 2, PC87365_REG_TEMP_BANK, i); 
    632659                        data->temp_status[i] = pc87360_read_value(data, 2, 
    633660                                               PC87365_REG_TEMP_STATUS); 
     661                        /* Clear bits */ 
     662                        pc87360_write_value(data, 2, PC87365_REG_TEMP_STATUS, 
     663                                            data->temp_status[i] | 0xCE); 
    634664                        if (data->temp_status[i] & 0x01) { 
    635665                                data->temp[i] = pc87360_read_value(data, 2, 
     
    826856                results[0] = TEMP_FROM_REG(data->temp_max[nr]); 
    827857                results[1] = TEMP_FROM_REG(data->temp_min[nr]); 
    828                 results[1] = TEMP_FROM_REG(data->temp_crit[nr]); 
    829                 results[2] = TEMP_FROM_REG(data->temp[nr]); 
     858                results[2] = TEMP_FROM_REG(data->temp_crit[nr]); 
     859                results[3] = TEMP_FROM_REG(data->temp[nr]); 
    830860                *nrels_mag = 4; 
    831861        } 
     
    841871                if (*nrels_mag >= 2) { 
    842872                        data->temp_min[nr] = TEMP_TO_REG(results[1]); 
    843                         pc87360_write_value(data, 2, PC87365_REG_TEMP_MAX, 
    844                                             data->temp_max[nr]); 
     873                        pc87360_write_value(data, 2, PC87365_REG_TEMP_MIN, 
     874                                            data->temp_min[nr]); 
    845875                } 
    846876                if (*nrels_mag >= 3) {