| 365 | | /* Power-on defaults (bit 7=1) */ |
| 366 | | gl520_write_value(client, GL520_REG_CONF, 0x80); |
| 367 | | |
| 368 | | /* No noisy output (bit 2=1), Comparator mode (bit 3=0), two fans (bit4=0), |
| 369 | | standby mode (bit6=0) */ |
| 370 | | gl520_write_value(client, GL520_REG_CONF, 0x04); |
| 371 | | |
| 372 | | /* Never interrupts */ |
| 373 | | gl520_write_value(client, GL520_REG_MASK, 0x00); |
| 374 | | |
| 375 | | /* Clear status register (bit 5=1), start (bit6=1) */ |
| 376 | | gl520_write_value(client, GL520_REG_CONF, 0x24); |
| 377 | | gl520_write_value(client, GL520_REG_CONF, 0x44); |
| | 369 | struct gl520_data *data = (struct gl520_data *)(client->data); |
| | 370 | u8 oldconf, conf; |
| | 371 | |
| | 372 | conf = oldconf = gl520_read_value(client, GL520_REG_CONF); |
| | 373 | data->two_temps = !(conf & 0x10); |
| | 374 | |
| | 375 | /* If IRQ# is disabled, we can safely force comparator mode */ |
| | 376 | if (!(conf & 0x20)) |
| | 377 | conf &= 0xf7; |
| | 378 | |
| | 379 | /* Enable monitoring if needed */ |
| | 380 | conf |= 0x40; |
| | 381 | |
| | 382 | if (conf != oldconf) |
| | 383 | gl520_write_value(client, GL520_REG_CONF, conf); |
| 484 | | data->temp[1] = gl520_read_value(client, GL520_REG_TEMP2); |
| 485 | | data->temp_over[1] = |
| 486 | | gl520_read_value(client, GL520_REG_TEMP2_OVER); |
| 487 | | data->temp_hyst[1] = |
| 488 | | gl520_read_value(client, GL520_REG_TEMP2_HYST); |
| 489 | | |
| 490 | | data->voltage[4] = |
| 491 | | gl520_read_value(client, GL520_REG_VIN4); |
| 492 | | data->voltage_min[4] = |
| 493 | | gl520_read_value(client, GL520_REG_VIN4_MIN); |
| 494 | | data->voltage_max[4] = |
| 495 | | gl520_read_value(client, GL520_REG_VIN4_MAX); |
| | 490 | if (data->two_temps) { |
| | 491 | data->temp[1] = |
| | 492 | gl520_read_value(client, GL520_REG_TEMP2); |
| | 493 | data->temp_over[1] = |
| | 494 | gl520_read_value(client, GL520_REG_TEMP2_OVER); |
| | 495 | data->temp_hyst[1] = |
| | 496 | gl520_read_value(client, GL520_REG_TEMP2_HYST); |
| | 497 | } else { |
| | 498 | data->voltage[4] = |
| | 499 | gl520_read_value(client, GL520_REG_VIN4); |
| | 500 | data->voltage_min[4] = |
| | 501 | gl520_read_value(client, GL520_REG_VIN4_MIN); |
| | 502 | data->voltage_max[4] = |
| | 503 | gl520_read_value(client, GL520_REG_VIN4_MAX); |
| | 504 | } |