Changeset 2395
- Timestamp:
- 03/27/04 17:12:20 (9 years ago)
- Files:
-
- 1 modified
-
lm-sensors/trunk/kernel/chips/adm1021.c (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lm-sensors/trunk/kernel/chips/adm1021.c
r2391 r2395 229 229 230 230 if (kind < 0) { 231 if ( 232 (adm1021_read_value(new_client, ADM1021_REG_STATUS) & 233 0x03) != 0x00) 234 goto error1; 231 if ((adm1021_read_value(new_client, ADM1021_REG_STATUS) & 0x03) != 0x00 232 || (adm1021_read_value(new_client, ADM1021_REG_CONFIG_R) & 0x3F) != 0x00 233 || (adm1021_read_value(new_client, ADM1021_REG_CONV_RATE_R) & 0xF8) != 0x00) { 234 err = -ENODEV; 235 goto error1; 236 } 235 237 } 236 238 … … 240 242 i = adm1021_read_value(new_client, ADM1021_REG_MAN_ID); 241 243 if (i == 0x41) 242 if ((adm1021_read_value (new_client, ADM1021_REG_DEV_ID) & 0x 0F0) == 0x030)244 if ((adm1021_read_value (new_client, ADM1021_REG_DEV_ID) & 0xF0) == 0x30) 243 245 kind = adm1023; 244 246 else … … 252 254 (new_client, ADM1021_REG_DEV_ID) == 0x01)) 253 255 kind = max1617a; 254 /* LM84 Mfr ID in a different place */255 else256 if (adm1021_read_value257 (new_client, ADM1021_REG_CONV_RATE_R) == 0x00)258 kind = lm84;259 256 else if (i == 0x54) 260 257 kind = mc1066; 258 /* LM84 Mfr ID in a different place, and it has more unused bits */ 259 else if (adm1021_read_value(new_client, ADM1021_REG_CONV_RATE_R) == 0x00 260 && (kind == 0 /* skip extra detection */ 261 || ((adm1021_read_value(new_client, ADM1021_REG_CONFIG_R) & 0x7F) == 0x00 262 && (adm1021_read_value(new_client, ADM1021_REG_STATUS) & 0xAB) == 0x00))) 263 kind = lm84; 261 264 else 262 265 kind = max1617; … … 287 290 type_name = "mc1066"; 288 291 client_name = "MC1066 chip"; 289 } else {290 #ifdef DEBUG291 printk("adm1021.o: Internal error: unknown kind (%d)?!?",292 kind);293 #endif294 goto error1;295 292 } 296 293 … … 317 314 318 315 /* Initialize the ADM1021 chip */ 319 adm1021_init_client(new_client); 316 if (kind != lm84) 317 adm1021_init_client(new_client); 320 318 return 0; 321 319
