Lines Matching +full:adt7490 +full:- +full:d
2 * adt7475 - Thermal sensor driver for the ADT7475 chip and derivatives
3 * Copyright (C) 2007-2008, Advanced Micro Devices, Inc.
21 #include <linux/hwmon-sysfs.h>
22 #include <linux/hwmon-vid.h>
39 * These are unique identifiers for the sysfs functions - unlike the
48 #define REG_DEVREV2 0x12 /* ADT7490 only */
50 #define REG_VTT 0x1E /* ADT7490 only */
51 #define REG_EXTEND3 0x1F /* ADT7490 only */
104 #define REG_STATUS4 0x81 /* ADT7490 only */
106 #define REG_VTT_MIN 0x84 /* ADT7490 only */
107 #define REG_VTT_MAX 0x86 /* ADT7490 only */
160 enum chips { adt7473, adt7475, adt7476, adt7490 }; enumerator
166 { "adt7490", adt7490 },
185 .compatible = "adi,adt7490",
186 .data = (void *)adt7490
231 if (!(data->config5 & CONFIG5_TWOSCOMP)) { in temp2reg()
232 val = clamp_val(val, -64000, 191000); in temp2reg()
235 val = clamp_val(val, -128000, 127000); in temp2reg()
236 if (val < -500) in temp2reg()
249 if (data->config5 & CONFIG5_TWOSCOMP) { in reg2temp()
251 return (reg - 1024) * 250; in reg2temp()
255 return (reg - 256) * 250; in reg2temp()
274 /* Scaling factors for voltage inputs, taken from the ADT7490 datasheet */
336 switch (sattr->nr) { in show_voltage()
338 return sprintf(buf, "%d\n", in show_voltage()
339 (data->alarms >> sattr->index) & 1); in show_voltage()
341 val = data->voltage[sattr->nr][sattr->index]; in show_voltage()
342 return sprintf(buf, "%d\n", in show_voltage()
343 reg2volt(sattr->index, val, data->bypass_attn)); in show_voltage()
358 return -EINVAL; in set_voltage()
360 mutex_lock(&data->lock); in set_voltage()
362 data->voltage[sattr->nr][sattr->index] = in set_voltage()
363 volt2reg(sattr->index, val, data->bypass_attn); in set_voltage()
365 if (sattr->index < ADT7475_VOLTAGE_COUNT) { in set_voltage()
366 if (sattr->nr == MIN) in set_voltage()
367 reg = VOLTAGE_MIN_REG(sattr->index); in set_voltage()
369 reg = VOLTAGE_MAX_REG(sattr->index); in set_voltage()
371 if (sattr->nr == MIN) in set_voltage()
378 data->voltage[sattr->nr][sattr->index] >> 2); in set_voltage()
379 mutex_unlock(&data->lock); in set_voltage()
394 switch (sattr->nr) { in show_temp()
396 mutex_lock(&data->lock); in show_temp()
397 out = data->temp[sattr->nr][sattr->index]; in show_temp()
398 if (sattr->index != 1) in show_temp()
406 out = reg2temp(data, data->temp[THERM][sattr->index]) - in show_temp()
408 mutex_unlock(&data->lock); in show_temp()
416 mutex_lock(&data->lock); in show_temp()
417 out = (s8)data->temp[sattr->nr][sattr->index]; in show_temp()
418 if (data->config5 & CONFIG5_TEMPOFFSET) in show_temp()
422 mutex_unlock(&data->lock); in show_temp()
426 out = (data->alarms >> (sattr->index + 4)) & 1; in show_temp()
430 /* Note - only for remote1 and remote2 */ in show_temp()
431 out = !!(data->alarms & (sattr->index ? 0x8000 : 0x4000)); in show_temp()
436 out = reg2temp(data, data->temp[sattr->nr][sattr->index]); in show_temp()
439 return sprintf(buf, "%d\n", out); in show_temp()
454 return -EINVAL; in set_temp()
456 mutex_lock(&data->lock); in set_temp()
458 /* We need the config register in all cases for temp <-> reg conv. */ in set_temp()
459 data->config5 = adt7475_read(REG_CONFIG5); in set_temp()
461 switch (sattr->nr) { in set_temp()
463 if (data->config5 & CONFIG5_TEMPOFFSET) { in set_temp()
464 val = clamp_val(val, -63000, 127000); in set_temp()
465 out = data->temp[OFFSET][sattr->index] = val / 1000; in set_temp()
467 val = clamp_val(val, -63000, 64000); in set_temp()
468 out = data->temp[OFFSET][sattr->index] = val / 500; in set_temp()
479 data->temp[THERM][sattr->index] = in set_temp()
480 adt7475_read(TEMP_THERM_REG(sattr->index)) << 2; in set_temp()
483 temp = reg2temp(data, data->temp[THERM][sattr->index]); in set_temp()
484 val = clamp_val(val, temp - 15000, temp); in set_temp()
485 val = (temp - val) / 1000; in set_temp()
487 if (sattr->index != 1) { in set_temp()
488 data->temp[HYSTERSIS][sattr->index] &= 0xF0; in set_temp()
489 data->temp[HYSTERSIS][sattr->index] |= (val & 0xF) << 4; in set_temp()
491 data->temp[HYSTERSIS][sattr->index] &= 0x0F; in set_temp()
492 data->temp[HYSTERSIS][sattr->index] |= (val & 0xF); in set_temp()
495 out = data->temp[HYSTERSIS][sattr->index]; in set_temp()
499 data->temp[sattr->nr][sattr->index] = temp2reg(data, val); in set_temp()
503 * - shift those back off before writing the value in set_temp()
505 out = (u8) (data->temp[sattr->nr][sattr->index] >> 2); in set_temp()
508 switch (sattr->nr) { in set_temp()
510 reg = TEMP_MIN_REG(sattr->index); in set_temp()
513 reg = TEMP_MAX_REG(sattr->index); in set_temp()
516 reg = TEMP_OFFSET_REG(sattr->index); in set_temp()
519 reg = TEMP_TMIN_REG(sattr->index); in set_temp()
522 reg = TEMP_THERM_REG(sattr->index); in set_temp()
525 if (sattr->index != 2) in set_temp()
535 mutex_unlock(&data->lock); in set_temp()
552 switch (sattr->index) { in show_temp_st()
554 val = data->enh_acoustics[0] & 0xf; in show_temp_st()
557 val = (data->enh_acoustics[1] >> 4) & 0xf; in show_temp_st()
561 val = data->enh_acoustics[1] & 0xf; in show_temp_st()
566 return sprintf(buf, "%d\n", ad7475_st_map[val & 0x7]); in show_temp_st()
582 return -EINVAL; in set_temp_st()
584 switch (sattr->index) { in set_temp_st()
609 mutex_lock(&data->lock); in set_temp_st()
611 data->enh_acoustics[idx] &= ~(0xf << shift); in set_temp_st()
612 data->enh_acoustics[idx] |= (val << shift); in set_temp_st()
614 i2c_smbus_write_byte_data(client, reg, data->enh_acoustics[idx]); in set_temp_st()
616 mutex_unlock(&data->lock); in set_temp_st()
622 * Table of autorange values - the user will write the value in millidegrees,
641 mutex_lock(&data->lock); in show_point2()
642 out = (data->range[sattr->index] >> 4) & 0x0F; in show_point2()
643 val = reg2temp(data, data->temp[AUTOMIN][sattr->index]); in show_point2()
644 mutex_unlock(&data->lock); in show_point2()
646 return sprintf(buf, "%d\n", val + autorange_table[out]); in show_point2()
659 return -EINVAL; in set_point2()
661 mutex_lock(&data->lock); in set_point2()
664 data->config5 = adt7475_read(REG_CONFIG5); in set_point2()
665 data->temp[AUTOMIN][sattr->index] = in set_point2()
666 adt7475_read(TEMP_TMIN_REG(sattr->index)) << 2; in set_point2()
667 data->range[sattr->index] = in set_point2()
668 adt7475_read(TEMP_TRANGE_REG(sattr->index)); in set_point2()
674 temp = reg2temp(data, data->temp[AUTOMIN][sattr->index]); in set_point2()
676 temp + autorange_table[ARRAY_SIZE(autorange_table) - 1]); in set_point2()
677 val -= temp; in set_point2()
682 data->range[sattr->index] &= ~0xF0; in set_point2()
683 data->range[sattr->index] |= val << 4; in set_point2()
685 i2c_smbus_write_byte_data(client, TEMP_TRANGE_REG(sattr->index), in set_point2()
686 data->range[sattr->index]); in set_point2()
688 mutex_unlock(&data->lock); in set_point2()
702 if (sattr->nr == ALARM) in show_tach()
703 out = (data->alarms >> (sattr->index + 10)) & 1; in show_tach()
705 out = tach2rpm(data->tach[sattr->nr][sattr->index]); in show_tach()
707 return sprintf(buf, "%d\n", out); in show_tach()
720 return -EINVAL; in set_tach()
722 mutex_lock(&data->lock); in set_tach()
724 data->tach[MIN][sattr->index] = rpm2tach(val); in set_tach()
726 adt7475_write_word(client, TACH_MIN_REG(sattr->index), in set_tach()
727 data->tach[MIN][sattr->index]); in set_tach()
729 mutex_unlock(&data->lock); in set_tach()
742 return sprintf(buf, "%d\n", data->pwm[sattr->nr][sattr->index]); in show_pwm()
754 return sprintf(buf, "%d\n", data->pwmchan[sattr->index]); in show_pwmchan()
766 return sprintf(buf, "%d\n", data->pwmctl[sattr->index]); in show_pwmctrl()
780 return -EINVAL; in set_pwm()
782 mutex_lock(&data->lock); in set_pwm()
784 switch (sattr->nr) { in set_pwm()
787 data->pwm[CONTROL][sattr->index] = in set_pwm()
788 adt7475_read(PWM_CONFIG_REG(sattr->index)); in set_pwm()
794 if (((data->pwm[CONTROL][sattr->index] >> 5) & 7) != 7) { in set_pwm()
795 mutex_unlock(&data->lock); in set_pwm()
799 reg = PWM_REG(sattr->index); in set_pwm()
803 reg = PWM_MIN_REG(sattr->index); in set_pwm()
807 reg = PWM_MAX_REG(sattr->index); in set_pwm()
811 data->pwm[sattr->nr][sattr->index] = clamp_val(val, 0, 0xFF); in set_pwm()
813 data->pwm[sattr->nr][sattr->index]); in set_pwm()
814 mutex_unlock(&data->lock); in set_pwm()
825 u8 mask = BIT(5 + sattr->index); in show_stall_disable()
827 return sprintf(buf, "%d\n", !!(data->enh_acoustics[0] & mask)); in show_stall_disable()
838 u8 mask = BIT(5 + sattr->index); in set_stall_disable()
841 return -EINVAL; in set_stall_disable()
843 mutex_lock(&data->lock); in set_stall_disable()
845 data->enh_acoustics[0] &= ~mask; in set_stall_disable()
847 data->enh_acoustics[0] |= mask; in set_stall_disable()
850 data->enh_acoustics[0]); in set_stall_disable()
852 mutex_unlock(&data->lock); in set_stall_disable()
895 return -EINVAL; in hw_set_pwm()
899 return -EINVAL; in hw_set_pwm()
902 data->pwmctl[index] = pwmctl; in hw_set_pwm()
903 data->pwmchan[index] = pwmchan; in hw_set_pwm()
905 data->pwm[CONTROL][index] &= ~0xE0; in hw_set_pwm()
906 data->pwm[CONTROL][index] |= (val & 7) << 5; in hw_set_pwm()
909 data->pwm[CONTROL][index]); in hw_set_pwm()
924 return -EINVAL; in set_pwmchan()
926 mutex_lock(&data->lock); in set_pwmchan()
928 adt7475_read_pwm(client, sattr->index); in set_pwmchan()
929 r = hw_set_pwm(client, sattr->index, data->pwmctl[sattr->index], val); in set_pwmchan()
932 mutex_unlock(&data->lock); in set_pwmchan()
947 return -EINVAL; in set_pwmctrl()
949 mutex_lock(&data->lock); in set_pwmctrl()
951 adt7475_read_pwm(client, sattr->index); in set_pwmctrl()
952 r = hw_set_pwm(client, sattr->index, val, data->pwmchan[sattr->index]); in set_pwmctrl()
955 mutex_unlock(&data->lock); in set_pwmctrl()
974 idx = clamp_val(data->range[sattr->index] & 0xf, 0, in show_pwmfreq()
975 ARRAY_SIZE(pwmfreq_table) - 1); in show_pwmfreq()
977 return sprintf(buf, "%d\n", pwmfreq_table[idx]); in show_pwmfreq()
990 return -EINVAL; in set_pwmfreq()
994 mutex_lock(&data->lock); in set_pwmfreq()
996 data->range[sattr->index] = in set_pwmfreq()
997 adt7475_read(TEMP_TRANGE_REG(sattr->index)); in set_pwmfreq()
998 data->range[sattr->index] &= ~0xf; in set_pwmfreq()
999 data->range[sattr->index] |= out; in set_pwmfreq()
1001 i2c_smbus_write_byte_data(client, TEMP_TRANGE_REG(sattr->index), in set_pwmfreq()
1002 data->range[sattr->index]); in set_pwmfreq()
1004 mutex_unlock(&data->lock); in set_pwmfreq()
1017 return sprintf(buf, "%d\n", !!(data->config4 & CONFIG4_MAXDUTY)); in pwm_use_point2_pwm_at_crit_show()
1029 return -EINVAL; in pwm_use_point2_pwm_at_crit_store()
1031 return -EINVAL; in pwm_use_point2_pwm_at_crit_store()
1033 mutex_lock(&data->lock); in pwm_use_point2_pwm_at_crit_store()
1034 data->config4 = i2c_smbus_read_byte_data(client, REG_CONFIG4); in pwm_use_point2_pwm_at_crit_store()
1036 data->config4 |= CONFIG4_MAXDUTY; in pwm_use_point2_pwm_at_crit_store()
1038 data->config4 &= ~CONFIG4_MAXDUTY; in pwm_use_point2_pwm_at_crit_store()
1039 i2c_smbus_write_byte_data(client, REG_CONFIG4, data->config4); in pwm_use_point2_pwm_at_crit_store()
1040 mutex_unlock(&data->lock); in pwm_use_point2_pwm_at_crit_store()
1049 return sprintf(buf, "%d\n", (int)data->vrm); in vrm_show()
1059 return -EINVAL; in vrm_store()
1061 return -EINVAL; in vrm_store()
1062 data->vrm = val; in vrm_store()
1075 return sprintf(buf, "%d\n", vid_from_reg(data->vid, data->vrm)); in cpu0_vid_show()
1229 /* Non-standard name, might need revisiting */
1371 struct i2c_adapter *adapter = client->adapter; in adt7475_detect()
1376 return -ENODEV; in adt7475_detect()
1382 return -ENODEV; in adt7475_detect()
1387 else if (devid == 0x75 && client->addr == 0x2e) in adt7475_detect()
1392 name = "adt7490"; in adt7475_detect()
1394 dev_dbg(&adapter->dev, in adt7475_detect()
1396 "0x%02x\n", (unsigned int)client->addr); in adt7475_detect()
1397 return -ENODEV; in adt7475_detect()
1400 strlcpy(info->type, name, I2C_NAME_SIZE); in adt7475_detect()
1408 sysfs_remove_group(&client->dev.kobj, &adt7475_attr_group); in adt7475_remove_files()
1409 if (data->has_fan4) in adt7475_remove_files()
1410 sysfs_remove_group(&client->dev.kobj, &fan4_attr_group); in adt7475_remove_files()
1411 if (data->has_pwm2) in adt7475_remove_files()
1412 sysfs_remove_group(&client->dev.kobj, &pwm2_attr_group); in adt7475_remove_files()
1413 if (data->has_voltage & (1 << 0)) in adt7475_remove_files()
1414 sysfs_remove_group(&client->dev.kobj, &in0_attr_group); in adt7475_remove_files()
1415 if (data->has_voltage & (1 << 3)) in adt7475_remove_files()
1416 sysfs_remove_group(&client->dev.kobj, &in3_attr_group); in adt7475_remove_files()
1417 if (data->has_voltage & (1 << 4)) in adt7475_remove_files()
1418 sysfs_remove_group(&client->dev.kobj, &in4_attr_group); in adt7475_remove_files()
1419 if (data->has_voltage & (1 << 5)) in adt7475_remove_files()
1420 sysfs_remove_group(&client->dev.kobj, &in5_attr_group); in adt7475_remove_files()
1421 if (data->has_vid) in adt7475_remove_files()
1422 sysfs_remove_group(&client->dev.kobj, &vid_attr_group); in adt7475_remove_files()
1434 data->config4 = ret; in adt7475_update_limits()
1439 data->config5 = ret; in adt7475_update_limits()
1442 if (!(data->has_voltage & (1 << i))) in adt7475_update_limits()
1448 data->voltage[MIN][i] = ret << 2; in adt7475_update_limits()
1453 data->voltage[MAX][i] = ret << 2; in adt7475_update_limits()
1456 if (data->has_voltage & (1 << 5)) { in adt7475_update_limits()
1460 data->voltage[MIN][5] = ret << 2; in adt7475_update_limits()
1465 data->voltage[MAX][5] = ret << 2; in adt7475_update_limits()
1473 data->temp[MIN][i] = ret << 2; in adt7475_update_limits()
1478 data->temp[MAX][i] = ret << 2; in adt7475_update_limits()
1483 data->temp[AUTOMIN][i] = ret << 2; in adt7475_update_limits()
1488 data->temp[THERM][i] = ret << 2; in adt7475_update_limits()
1493 data->temp[OFFSET][i] = ret; in adt7475_update_limits()
1498 if (i == 3 && !data->has_fan4) in adt7475_update_limits()
1503 data->tach[MIN][i] = ret; in adt7475_update_limits()
1507 if (i == 1 && !data->has_pwm2) in adt7475_update_limits()
1512 data->pwm[MAX][i] = ret; in adt7475_update_limits()
1517 data->pwm[MIN][i] = ret; in adt7475_update_limits()
1525 data->range[0] = ret; in adt7475_update_limits()
1530 data->range[1] = ret; in adt7475_update_limits()
1535 data->range[2] = ret; in adt7475_update_limits()
1548 [adt7490] = "ADT7490", in adt7475_probe()
1555 data = devm_kzalloc(&client->dev, sizeof(*data), GFP_KERNEL); in adt7475_probe()
1557 return -ENOMEM; in adt7475_probe()
1559 mutex_init(&data->lock); in adt7475_probe()
1562 if (client->dev.of_node) in adt7475_probe()
1563 chip = (enum chips)of_device_get_match_data(&client->dev); in adt7475_probe()
1565 chip = id->driver_data; in adt7475_probe()
1567 /* Initialize device-specific values */ in adt7475_probe()
1570 data->has_voltage = 0x0e; /* in1 to in3 */ in adt7475_probe()
1573 case adt7490: in adt7475_probe()
1574 data->has_voltage = 0x3e; /* in1 to in5 */ in adt7475_probe()
1580 data->has_voltage = 0x06; /* in1, in2 */ in adt7475_probe()
1587 data->has_pwm2 = 1; in adt7475_probe()
1588 /* Meaning of this bit is inverted for the ADT7473-1 */ in adt7475_probe()
1589 if (id->driver_data == adt7473 && revision >= 1) in adt7475_probe()
1590 data->has_pwm2 = !data->has_pwm2; in adt7475_probe()
1592 data->config4 = adt7475_read(REG_CONFIG4); in adt7475_probe()
1594 if ((data->config4 & CONFIG4_PINFUNC) == 0x0) in adt7475_probe()
1595 data->has_fan4 = 1; in adt7475_probe()
1598 * THERM configuration is more complex on the ADT7476 and ADT7490, in adt7475_probe()
1602 if (id->driver_data == adt7490) { in adt7475_probe()
1603 if ((data->config4 & CONFIG4_PINFUNC) == 0x1 && in adt7475_probe()
1605 data->has_fan4 = 1; in adt7475_probe()
1607 if (id->driver_data == adt7476 || id->driver_data == adt7490) { in adt7475_probe()
1609 (data->config4 & CONFIG4_PINFUNC) == 0x1) in adt7475_probe()
1610 data->has_voltage |= (1 << 0); /* in0 */ in adt7475_probe()
1617 if (id->driver_data == adt7476) { in adt7475_probe()
1620 data->has_voltage |= (1 << 4); /* in4 */ in adt7475_probe()
1622 data->has_vid = !(adt7475_read(REG_CONFIG5) & CONFIG5_VIDGPIO); in adt7475_probe()
1628 data->bypass_attn = (0x3 << 3) | 0x3; in adt7475_probe()
1630 data->bypass_attn = ((data->config4 & CONFIG4_ATTN_IN10) >> 4) | in adt7475_probe()
1631 ((data->config4 & CONFIG4_ATTN_IN43) >> 3); in adt7475_probe()
1633 data->bypass_attn &= data->has_voltage; in adt7475_probe()
1653 ret = sysfs_create_group(&client->dev.kobj, &adt7475_attr_group); in adt7475_probe()
1658 if (data->has_fan4) { in adt7475_probe()
1659 ret = sysfs_create_group(&client->dev.kobj, &fan4_attr_group); in adt7475_probe()
1663 if (data->has_pwm2) { in adt7475_probe()
1664 ret = sysfs_create_group(&client->dev.kobj, &pwm2_attr_group); in adt7475_probe()
1668 if (data->has_voltage & (1 << 0)) { in adt7475_probe()
1669 ret = sysfs_create_group(&client->dev.kobj, &in0_attr_group); in adt7475_probe()
1673 if (data->has_voltage & (1 << 3)) { in adt7475_probe()
1674 ret = sysfs_create_group(&client->dev.kobj, &in3_attr_group); in adt7475_probe()
1678 if (data->has_voltage & (1 << 4)) { in adt7475_probe()
1679 ret = sysfs_create_group(&client->dev.kobj, &in4_attr_group); in adt7475_probe()
1683 if (data->has_voltage & (1 << 5)) { in adt7475_probe()
1684 ret = sysfs_create_group(&client->dev.kobj, &in5_attr_group); in adt7475_probe()
1688 if (data->has_vid) { in adt7475_probe()
1689 data->vrm = vid_which_vrm(); in adt7475_probe()
1690 ret = sysfs_create_group(&client->dev.kobj, &vid_attr_group); in adt7475_probe()
1695 data->hwmon_dev = hwmon_device_register(&client->dev); in adt7475_probe()
1696 if (IS_ERR(data->hwmon_dev)) { in adt7475_probe()
1697 ret = PTR_ERR(data->hwmon_dev); in adt7475_probe()
1701 dev_info(&client->dev, "%s device, revision %d\n", in adt7475_probe()
1702 names[id->driver_data], revision); in adt7475_probe()
1703 if ((data->has_voltage & 0x11) || data->has_fan4 || data->has_pwm2) in adt7475_probe()
1704 dev_info(&client->dev, "Optional features:%s%s%s%s%s\n", in adt7475_probe()
1705 (data->has_voltage & (1 << 0)) ? " in0" : "", in adt7475_probe()
1706 (data->has_voltage & (1 << 4)) ? " in4" : "", in adt7475_probe()
1707 data->has_fan4 ? " fan4" : "", in adt7475_probe()
1708 data->has_pwm2 ? " pwm2" : "", in adt7475_probe()
1709 data->has_vid ? " vid" : ""); in adt7475_probe()
1710 if (data->bypass_attn) in adt7475_probe()
1711 dev_info(&client->dev, "Bypassing attenuators on:%s%s%s%s\n", in adt7475_probe()
1712 (data->bypass_attn & (1 << 0)) ? " in0" : "", in adt7475_probe()
1713 (data->bypass_attn & (1 << 1)) ? " in1" : "", in adt7475_probe()
1714 (data->bypass_attn & (1 << 3)) ? " in3" : "", in adt7475_probe()
1715 (data->bypass_attn & (1 << 4)) ? " in4" : ""); in adt7475_probe()
1733 hwmon_device_unregister(data->hwmon_dev); in adt7475_remove()
1756 data->temp[HYSTERSIS][0] = (u16) adt7475_read(REG_REMOTE1_HYSTERSIS); in adt7475_read_hystersis()
1757 data->temp[HYSTERSIS][1] = data->temp[HYSTERSIS][0]; in adt7475_read_hystersis()
1758 data->temp[HYSTERSIS][2] = (u16) adt7475_read(REG_REMOTE2_HYSTERSIS); in adt7475_read_hystersis()
1766 data->pwm[CONTROL][index] = adt7475_read(PWM_CONFIG_REG(index)); in adt7475_read_pwm()
1772 v = (data->pwm[CONTROL][index] >> 5) & 7; in adt7475_read_pwm()
1775 data->pwmctl[index] = 0; in adt7475_read_pwm()
1777 data->pwmctl[index] = 1; in adt7475_read_pwm()
1780 * The fan is disabled - we don't want to in adt7475_read_pwm()
1784 data->pwm[INPUT][index] = 0; in adt7475_read_pwm()
1785 data->pwm[CONTROL][index] &= ~0xE0; in adt7475_read_pwm()
1786 data->pwm[CONTROL][index] |= (7 << 5); in adt7475_read_pwm()
1789 data->pwm[INPUT][index]); in adt7475_read_pwm()
1792 data->pwm[CONTROL][index]); in adt7475_read_pwm()
1794 data->pwmctl[index] = 1; in adt7475_read_pwm()
1796 data->pwmctl[index] = 2; in adt7475_read_pwm()
1800 data->pwmchan[index] = 1; in adt7475_read_pwm()
1803 data->pwmchan[index] = 2; in adt7475_read_pwm()
1806 data->pwmchan[index] = 4; in adt7475_read_pwm()
1809 data->pwmchan[index] = 6; in adt7475_read_pwm()
1812 data->pwmchan[index] = 7; in adt7475_read_pwm()
1829 data->alarms = ret << 8; in adt7475_update_measure()
1834 data->alarms |= ret; in adt7475_update_measure()
1849 if (!(data->has_voltage & (1 << i))) in adt7475_update_measure()
1854 data->voltage[INPUT][i] = in adt7475_update_measure()
1863 data->temp[INPUT][i] = in adt7475_update_measure()
1868 if (data->has_voltage & (1 << 5)) { in adt7475_update_measure()
1872 data->alarms |= ret << 24; in adt7475_update_measure()
1882 data->voltage[INPUT][5] = ret << 2 | in adt7475_update_measure()
1887 if (i == 3 && !data->has_fan4) in adt7475_update_measure()
1892 data->tach[INPUT][i] = ret; in adt7475_update_measure()
1897 if (i == 1 && !data->has_pwm2) in adt7475_update_measure()
1902 data->pwm[INPUT][i] = ret; in adt7475_update_measure()
1905 if (data->has_vid) { in adt7475_update_measure()
1909 data->vid = ret & 0x3f; in adt7475_update_measure()
1921 mutex_lock(&data->lock); in adt7475_update_device()
1924 if (time_after(jiffies, data->measure_updated + HZ * 2) || in adt7475_update_device()
1925 !data->valid) { in adt7475_update_device()
1928 data->valid = false; in adt7475_update_device()
1929 mutex_unlock(&data->lock); in adt7475_update_device()
1932 data->measure_updated = jiffies; in adt7475_update_device()
1933 data->valid = true; in adt7475_update_device()
1936 mutex_unlock(&data->lock); in adt7475_update_device()