Changeset 1890

Show
Ignore:
Timestamp:
07/21/03 11:15:19 (11 years ago)
Author:
khali
Message:

Use a single /proc callback function for all four temps.

Delete i2c read and write wrappers, they were useless.

Files:
1 modified

Legend:

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

    r1863 r1890  
    7575 
    7676/* 
    77  * Conversions and initial values 
     77 * Conversions, initial values and various macros 
    7878 * The LM83 uses normal signed 8-bit values. We use the default initial 
    7979 * values. 
     
    8282#define TEMP_FROM_REG(val)  (val > 127 ? val-256 : val) 
    8383#define TEMP_TO_REG(val)    (val < 0 ? val+256 : val) 
     84 
    8485#define LM83_INIT_HIGH      127 
     86 
     87static const u8 LM83_REG_W_HIGH[] = { 
     88        LM83_REG_W_LOCAL_HIGH, 
     89        LM83_REG_W_REMOTE1_HIGH, 
     90        LM83_REG_W_REMOTE2_HIGH, 
     91        LM83_REG_W_REMOTE3_HIGH 
     92}; 
    8593 
    8694/* 
     
    93101static void lm83_init_client(struct i2c_client *client); 
    94102static int lm83_detach_client(struct i2c_client *client); 
    95 static int lm83_read_value(struct i2c_client *client, u8 reg); 
    96 static int lm83_write_value(struct i2c_client *client, u8 reg, u8 value); 
    97 static void lm83_local_temp(struct i2c_client *client, int operation, int 
    98         ctl_name, int *nrels_mag, long *results); 
    99 static void lm83_remote1_temp(struct i2c_client *client, int operation, int 
    100         ctl_name, int *nrels_mag, long *results); 
    101 static void lm83_remote2_temp(struct i2c_client *client, int operation, int 
    102         ctl_name, int *nrels_mag, long *results); 
    103 static void lm83_remote3_temp(struct i2c_client *client, int operation, int 
     103static void lm83_temp(struct i2c_client *client, int operation, int 
    104104        ctl_name, int *nrels_mag, long *results); 
    105105 
     
    130130 
    131131        /* registers values */ 
    132         u8 local_temp, local_high; 
    133         u8 remote1_temp, remote1_high; 
    134         u8 remote2_temp, remote2_high; 
    135         u8 remote3_temp, remote3_high; 
     132        u8 temp[4], temp_high[4]; 
    136133}; 
    137134 
     
    154151{ 
    155152        {LM83_SYSCTL_LOCAL_TEMP, "temp1", NULL, 0, 0644, NULL, 
    156          &i2c_proc_real, &i2c_sysctl_real, NULL, &lm83_local_temp}, 
     153         &i2c_proc_real, &i2c_sysctl_real, NULL, &lm83_temp}, 
    157154        {LM83_SYSCTL_REMOTE1_TEMP, "temp2", NULL, 0, 0644, NULL, 
    158          &i2c_proc_real, &i2c_sysctl_real, NULL, &lm83_remote1_temp}, 
     155         &i2c_proc_real, &i2c_sysctl_real, NULL, &lm83_temp}, 
    159156        {LM83_SYSCTL_REMOTE2_TEMP, "temp3", NULL, 0, 0644, NULL, 
    160          &i2c_proc_real, &i2c_sysctl_real, NULL, &lm83_remote2_temp}, 
     157         &i2c_proc_real, &i2c_sysctl_real, NULL, &lm83_temp}, 
    161158        {LM83_SYSCTL_REMOTE3_TEMP, "temp4", NULL, 0, 0644, NULL, 
    162          &i2c_proc_real, &i2c_sysctl_real, NULL, &lm83_remote3_temp}, 
     159         &i2c_proc_real, &i2c_sysctl_real, NULL, &lm83_temp}, 
    163160        {0} 
    164161}; 
     
    243240        if (kind < 0) /* detection */ 
    244241        { 
    245                 if (((lm83_read_value(new_client, LM83_REG_R_STATUS1) 
     242                if (((i2c_smbus_read_byte_data(new_client, LM83_REG_R_STATUS1) 
    246243                      & 0xA8) != 0x00) 
    247                 ||  ((lm83_read_value(new_client, LM83_REG_R_STATUS2) 
     244                ||  ((i2c_smbus_read_byte_data(new_client, LM83_REG_R_STATUS2) 
    248245                      & 0x48) != 0x00) 
    249                 ||  ((lm83_read_value(new_client, LM83_REG_R_CONFIG) 
     246                ||  ((i2c_smbus_read_byte_data(new_client, LM83_REG_R_CONFIG) 
    250247                      & 0x41) != 0x00)) 
    251248                { 
     
    263260                unsigned char man_id; 
    264261 
    265                 man_id = lm83_read_value(new_client, LM83_REG_R_MAN_ID); 
     262                man_id = i2c_smbus_read_byte_data(new_client, LM83_REG_R_MAN_ID); 
    266263                if (man_id == 0x01) /* National Semiconductor */ 
    267264                        kind = lm83; 
     
    334331static void lm83_init_client(struct i2c_client *client) 
    335332{ 
    336         lm83_write_value(client, LM83_REG_W_LOCAL_HIGH, 
     333        i2c_smbus_write_byte_data(client, LM83_REG_W_LOCAL_HIGH, 
    337334                         TEMP_TO_REG(LM83_INIT_HIGH)); 
    338         lm83_write_value(client, LM83_REG_W_REMOTE1_HIGH, 
     335        i2c_smbus_write_byte_data(client, LM83_REG_W_REMOTE1_HIGH, 
    339336                         TEMP_TO_REG(LM83_INIT_HIGH)); 
    340         lm83_write_value(client, LM83_REG_W_REMOTE2_HIGH, 
     337        i2c_smbus_write_byte_data(client, LM83_REG_W_REMOTE2_HIGH, 
    341338                         TEMP_TO_REG(LM83_INIT_HIGH)); 
    342         lm83_write_value(client, LM83_REG_W_REMOTE3_HIGH, 
     339        i2c_smbus_write_byte_data(client, LM83_REG_W_REMOTE3_HIGH, 
    343340                         TEMP_TO_REG(LM83_INIT_HIGH)); 
    344341} 
     
    360357} 
    361358 
    362 static int lm83_read_value(struct i2c_client *client, u8 reg) 
    363 { 
    364         return i2c_smbus_read_byte_data(client, reg); 
    365 } 
    366  
    367 static int lm83_write_value(struct i2c_client *client, u8 reg, u8 value) 
    368 { 
    369         return i2c_smbus_write_byte_data(client, reg, value); 
    370 } 
    371  
    372359static void lm83_update_client(struct i2c_client *client) 
    373360{ 
     
    382369                printk("lm83.o: Updating LM83 data.\n"); 
    383370#endif 
    384                 data->local_temp = 
    385                         lm83_read_value(client, LM83_REG_R_LOCAL_TEMP); 
    386                 data->remote1_temp = 
    387                         lm83_read_value(client, LM83_REG_R_REMOTE1_TEMP); 
    388                 data->remote2_temp = 
    389                         lm83_read_value(client, LM83_REG_R_REMOTE2_TEMP); 
    390                 data->remote3_temp = 
    391                         lm83_read_value(client, LM83_REG_R_REMOTE3_TEMP); 
    392                 data->local_high = 
    393                         lm83_read_value(client, LM83_REG_R_LOCAL_HIGH); 
    394                 data->remote1_high = 
    395                         lm83_read_value(client, LM83_REG_R_REMOTE1_HIGH); 
    396                 data->remote2_high = 
    397                         lm83_read_value(client, LM83_REG_R_REMOTE2_HIGH); 
    398                 data->remote3_high = 
    399                         lm83_read_value(client, LM83_REG_R_REMOTE3_HIGH); 
     371                data->temp[0] = 
     372                        i2c_smbus_read_byte_data(client, LM83_REG_R_LOCAL_TEMP); 
     373                data->temp[1] = 
     374                        i2c_smbus_read_byte_data(client, LM83_REG_R_REMOTE1_TEMP); 
     375                data->temp[2] = 
     376                        i2c_smbus_read_byte_data(client, LM83_REG_R_REMOTE2_TEMP); 
     377                data->temp[3] = 
     378                        i2c_smbus_read_byte_data(client, LM83_REG_R_REMOTE3_TEMP); 
     379                data->temp_high[0] = 
     380                        i2c_smbus_read_byte_data(client, LM83_REG_R_LOCAL_HIGH); 
     381                data->temp_high[1] = 
     382                        i2c_smbus_read_byte_data(client, LM83_REG_R_REMOTE1_HIGH); 
     383                data->temp_high[2] = 
     384                        i2c_smbus_read_byte_data(client, LM83_REG_R_REMOTE2_HIGH); 
     385                data->temp_high[3] = 
     386                        i2c_smbus_read_byte_data(client, LM83_REG_R_REMOTE3_HIGH); 
    400387                data->last_updated = jiffies; 
    401388                data->valid = 1; 
     
    405392} 
    406393 
    407 static void lm83_local_temp(struct i2c_client *client, int operation, int 
     394static void lm83_temp(struct i2c_client *client, int operation, int 
    408395        ctl_name, int *nrels_mag, long *results) 
    409396{ 
    410397        struct lm83_data *data = client->data; 
     398        int nr = ctl_name - LM83_SYSCTL_LOCAL_TEMP; 
     399 
    411400        if (operation == SENSORS_PROC_REAL_INFO) 
    412                 *nrels_mag = 0; 
     401                *nrels_mag = 0; /* magnitude */ 
    413402        else if (operation == SENSORS_PROC_REAL_READ) 
    414403        { 
    415404                lm83_update_client(client); 
    416                 results[0] = TEMP_FROM_REG(data->local_high); 
    417                 results[1] = TEMP_FROM_REG(data->local_temp); 
     405                results[0] = TEMP_FROM_REG(data->temp_high[nr]); 
     406                results[1] = TEMP_FROM_REG(data->temp[nr]); 
    418407                *nrels_mag = 2; 
    419408        } 
     
    422411                if (*nrels_mag >= 1) 
    423412                { 
    424                         data->local_high = TEMP_TO_REG(results[0]); 
    425                         lm83_write_value(client, LM83_REG_W_LOCAL_HIGH, 
    426                                             data->local_high); 
    427                 } 
    428         } 
    429 } 
    430  
    431 static void lm83_remote1_temp(struct i2c_client *client, int operation, int 
    432         ctl_name, int *nrels_mag, long *results) 
    433 { 
    434         struct lm83_data *data = client->data; 
    435         if (operation == SENSORS_PROC_REAL_INFO) 
    436                 *nrels_mag = 0; 
    437         else if (operation == SENSORS_PROC_REAL_READ) 
    438         { 
    439                 lm83_update_client(client); 
    440                 results[0] = TEMP_FROM_REG(data->remote1_high); 
    441                 results[1] = TEMP_FROM_REG(data->remote1_temp); 
    442                 *nrels_mag = 2; 
    443         } 
    444         else if (operation == SENSORS_PROC_REAL_WRITE) 
    445         { 
    446                 if (*nrels_mag >= 1) 
    447                 { 
    448                         data->remote1_high = TEMP_TO_REG(results[0]); 
    449                         lm83_write_value(client, LM83_REG_W_REMOTE1_HIGH, 
    450                                             data->remote1_high); 
    451                 } 
    452         } 
    453 } 
    454  
    455 static void lm83_remote2_temp(struct i2c_client *client, int operation, int 
    456         ctl_name, int *nrels_mag, long *results) 
    457 { 
    458         struct lm83_data *data = client->data; 
    459         if (operation == SENSORS_PROC_REAL_INFO) 
    460                 *nrels_mag = 0; 
    461         else if (operation == SENSORS_PROC_REAL_READ) 
    462         { 
    463                 lm83_update_client(client); 
    464                 results[0] = TEMP_FROM_REG(data->remote2_high); 
    465                 results[1] = TEMP_FROM_REG(data->remote2_temp); 
    466                 *nrels_mag = 2; 
    467         } 
    468         else if (operation == SENSORS_PROC_REAL_WRITE) 
    469         { 
    470                 if (*nrels_mag >= 1) 
    471                 { 
    472                         data->remote2_high = TEMP_TO_REG(results[0]); 
    473                         lm83_write_value(client, LM83_REG_W_REMOTE2_HIGH, 
    474                                             data->remote2_high); 
    475                 } 
    476         } 
    477 } 
    478  
    479 static void lm83_remote3_temp(struct i2c_client *client, int operation, int 
    480         ctl_name, int *nrels_mag, long *results) 
    481 { 
    482         struct lm83_data *data = client->data; 
    483         if (operation == SENSORS_PROC_REAL_INFO) 
    484                 *nrels_mag = 0; 
    485         else if (operation == SENSORS_PROC_REAL_READ) 
    486         { 
    487                 lm83_update_client(client); 
    488                 results[0] = TEMP_FROM_REG(data->remote3_high); 
    489                 results[1] = TEMP_FROM_REG(data->remote3_temp); 
    490                 *nrels_mag = 2; 
    491         } 
    492         else if (operation == SENSORS_PROC_REAL_WRITE) 
    493         { 
    494                 if (*nrels_mag >= 1) 
    495                 { 
    496                         data->remote3_high = TEMP_TO_REG(results[0]); 
    497                         lm83_write_value(client, LM83_REG_W_REMOTE3_HIGH, 
    498                                             data->remote3_high); 
     413                        data->temp_high[nr] = TEMP_TO_REG(results[0]); 
     414                        i2c_smbus_write_byte_data(client, LM83_REG_W_HIGH[nr], 
     415                                            data->temp_high[nr]); 
    499416                } 
    500417        }