Lines Matching refs:data
392 #define has_16bit_fans(data) ((data)->features & FEAT_16BIT_FANS) argument
393 #define has_12mv_adc(data) ((data)->features & FEAT_12MV_ADC) argument
394 #define has_newer_autopwm(data) ((data)->features & FEAT_NEWER_AUTOPWM) argument
395 #define has_old_autopwm(data) ((data)->features & FEAT_OLD_AUTOPWM) argument
396 #define has_temp_offset(data) ((data)->features & FEAT_TEMP_OFFSET) argument
397 #define has_temp_peci(data, nr) (((data)->features & FEAT_TEMP_PECI) && \ argument
398 ((data)->peci_mask & (1 << nr)))
399 #define has_temp_old_peci(data, nr) \ argument
400 (((data)->features & FEAT_TEMP_OLD_PECI) && \
401 ((data)->old_peci_mask & (1 << nr)))
402 #define has_fan16_config(data) ((data)->features & FEAT_FAN16_CONFIG) argument
403 #define has_five_fans(data) ((data)->features & (FEAT_FIVE_FANS | \ argument
405 #define has_vid(data) ((data)->features & FEAT_VID) argument
406 #define has_in7_internal(data) ((data)->features & FEAT_IN7_INTERNAL) argument
407 #define has_six_fans(data) ((data)->features & FEAT_SIX_FANS) argument
476 static int adc_lsb(const struct it87_data *data, int nr) in adc_lsb() argument
478 int lsb = has_12mv_adc(data) ? 12 : 16; in adc_lsb()
479 if (data->in_scaled & (1 << nr)) in adc_lsb()
484 static u8 in_to_reg(const struct it87_data *data, int nr, long val) in in_to_reg() argument
486 val = DIV_ROUND_CLOSEST(val, adc_lsb(data, nr)); in in_to_reg()
490 static int in_from_reg(const struct it87_data *data, int nr, int val) in in_from_reg() argument
492 return val * adc_lsb(data, nr); in in_from_reg()
520 static u8 pwm_to_reg(const struct it87_data *data, long val) in pwm_to_reg() argument
522 if (has_newer_autopwm(data)) in pwm_to_reg()
528 static int pwm_from_reg(const struct it87_data *data, u8 reg) in pwm_from_reg() argument
530 if (has_newer_autopwm(data)) in pwm_from_reg()
570 static int it87_read_value(struct it87_data *data, u8 reg);
571 static void it87_write_value(struct it87_data *data, u8 reg, u8 value);
592 struct it87_data *data = it87_update_device(dev); in show_in() local
593 return sprintf(buf, "%d\n", in_from_reg(data, nr, data->in[nr][index])); in show_in()
603 struct it87_data *data = dev_get_drvdata(dev); in set_in() local
609 mutex_lock(&data->update_lock); in set_in()
610 data->in[nr][index] = in_to_reg(data, nr, val); in set_in()
611 it87_write_value(data, in set_in()
614 data->in[nr][index]); in set_in()
615 mutex_unlock(&data->update_lock); in set_in()
677 struct it87_data *data = it87_update_device(dev); in show_temp() local
679 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp[nr][index])); in show_temp()
688 struct it87_data *data = dev_get_drvdata(dev); in set_temp() local
695 mutex_lock(&data->update_lock); in set_temp()
706 regval = it87_read_value(data, IT87_REG_BEEP_ENABLE); in set_temp()
709 it87_write_value(data, IT87_REG_BEEP_ENABLE, regval); in set_temp()
711 data->valid = 0; in set_temp()
716 data->temp[nr][index] = TEMP_TO_REG(val); in set_temp()
717 it87_write_value(data, reg, data->temp[nr][index]); in set_temp()
718 mutex_unlock(&data->update_lock); in set_temp()
749 struct it87_data *data = it87_update_device(dev); in show_temp_type() local
750 u8 reg = data->sensor; /* In case value is updated while used */ in show_temp_type()
751 u8 extra = data->extra; in show_temp_type()
753 if ((has_temp_peci(data, nr) && (reg >> 6 == nr + 1)) in show_temp_type()
754 || (has_temp_old_peci(data, nr) && (extra & 0x80))) in show_temp_type()
769 struct it87_data *data = dev_get_drvdata(dev); in set_temp_type() local
776 reg = it87_read_value(data, IT87_REG_TEMP_ENABLE); in set_temp_type()
779 if (has_temp_peci(data, nr) && (reg >> 6 == nr + 1 || val == 6)) in set_temp_type()
781 extra = it87_read_value(data, IT87_REG_TEMP_EXTRA); in set_temp_type()
782 if (has_temp_old_peci(data, nr) && ((extra & 0x80) || val == 6)) in set_temp_type()
794 else if (has_temp_peci(data, nr) && val == 6) in set_temp_type()
796 else if (has_temp_old_peci(data, nr) && val == 6) in set_temp_type()
801 mutex_lock(&data->update_lock); in set_temp_type()
802 data->sensor = reg; in set_temp_type()
803 data->extra = extra; in set_temp_type()
804 it87_write_value(data, IT87_REG_TEMP_ENABLE, data->sensor); in set_temp_type()
805 if (has_temp_old_peci(data, nr)) in set_temp_type()
806 it87_write_value(data, IT87_REG_TEMP_EXTRA, data->extra); in set_temp_type()
807 data->valid = 0; /* Force cache refresh */ in set_temp_type()
808 mutex_unlock(&data->update_lock); in set_temp_type()
821 static int pwm_mode(const struct it87_data *data, int nr) in pwm_mode() argument
823 int ctrl = data->fan_main_ctrl & (1 << nr); in pwm_mode()
825 if (ctrl == 0 && data->type != it8603) /* Full speed */ in pwm_mode()
827 if (data->pwm_ctrl[nr] & 0x80) /* Automatic mode */ in pwm_mode()
840 struct it87_data *data = it87_update_device(dev); in show_fan() local
842 speed = has_16bit_fans(data) ? in show_fan()
843 FAN16_FROM_REG(data->fan[nr][index]) : in show_fan()
844 FAN_FROM_REG(data->fan[nr][index], in show_fan()
845 DIV_FROM_REG(data->fan_div[nr])); in show_fan()
855 struct it87_data *data = it87_update_device(dev); in show_fan_div() local
856 return sprintf(buf, "%d\n", DIV_FROM_REG(data->fan_div[nr])); in show_fan_div()
864 struct it87_data *data = it87_update_device(dev); in show_pwm_enable() local
865 return sprintf(buf, "%d\n", pwm_mode(data, nr)); in show_pwm_enable()
873 struct it87_data *data = it87_update_device(dev); in show_pwm() local
875 pwm_from_reg(data, data->pwm_duty[nr])); in show_pwm()
880 struct it87_data *data = it87_update_device(dev); in show_pwm_freq() local
881 int index = (data->fan_ctl >> 4) & 0x07; in show_pwm_freq()
884 freq = pwm_freq[index] / (has_newer_autopwm(data) ? 256 : 128); in show_pwm_freq()
896 struct it87_data *data = dev_get_drvdata(dev); in set_fan() local
903 mutex_lock(&data->update_lock); in set_fan()
905 if (has_16bit_fans(data)) { in set_fan()
906 data->fan[nr][index] = FAN16_TO_REG(val); in set_fan()
907 it87_write_value(data, IT87_REG_FAN_MIN[nr], in set_fan()
908 data->fan[nr][index] & 0xff); in set_fan()
909 it87_write_value(data, IT87_REG_FANX_MIN[nr], in set_fan()
910 data->fan[nr][index] >> 8); in set_fan()
912 reg = it87_read_value(data, IT87_REG_FAN_DIV); in set_fan()
915 data->fan_div[nr] = reg & 0x07; in set_fan()
918 data->fan_div[nr] = (reg >> 3) & 0x07; in set_fan()
921 data->fan_div[nr] = (reg & 0x40) ? 3 : 1; in set_fan()
924 data->fan[nr][index] = in set_fan()
925 FAN_TO_REG(val, DIV_FROM_REG(data->fan_div[nr])); in set_fan()
926 it87_write_value(data, IT87_REG_FAN_MIN[nr], in set_fan()
927 data->fan[nr][index]); in set_fan()
930 mutex_unlock(&data->update_lock); in set_fan()
940 struct it87_data *data = dev_get_drvdata(dev); in set_fan_div() local
948 mutex_lock(&data->update_lock); in set_fan_div()
949 old = it87_read_value(data, IT87_REG_FAN_DIV); in set_fan_div()
952 min = FAN_FROM_REG(data->fan[nr][1], DIV_FROM_REG(data->fan_div[nr])); in set_fan_div()
957 data->fan_div[nr] = DIV_TO_REG(val); in set_fan_div()
961 data->fan_div[nr] = 1; in set_fan_div()
963 data->fan_div[nr] = 3; in set_fan_div()
966 val |= (data->fan_div[0] & 0x07); in set_fan_div()
967 val |= (data->fan_div[1] & 0x07) << 3; in set_fan_div()
968 if (data->fan_div[2] == 3) in set_fan_div()
970 it87_write_value(data, IT87_REG_FAN_DIV, val); in set_fan_div()
973 data->fan[nr][1] = FAN_TO_REG(min, DIV_FROM_REG(data->fan_div[nr])); in set_fan_div()
974 it87_write_value(data, IT87_REG_FAN_MIN[nr], data->fan[nr][1]); in set_fan_div()
976 mutex_unlock(&data->update_lock); in set_fan_div()
983 const struct it87_data *data = dev_get_drvdata(dev); in check_trip_points() local
986 if (has_old_autopwm(data)) { in check_trip_points()
988 if (data->auto_temp[nr][i] > data->auto_temp[nr][i + 1]) in check_trip_points()
992 if (data->auto_pwm[nr][i] > data->auto_pwm[nr][i + 1]) in check_trip_points()
1011 struct it87_data *data = dev_get_drvdata(dev); in set_pwm_enable() local
1024 if (val == 0 && data->type == it8603) in set_pwm_enable()
1027 mutex_lock(&data->update_lock); in set_pwm_enable()
1032 tmp = it87_read_value(data, IT87_REG_FAN_CTL); in set_pwm_enable()
1033 it87_write_value(data, IT87_REG_FAN_CTL, tmp | (1 << nr)); in set_pwm_enable()
1035 data->fan_main_ctrl &= ~(1 << nr); in set_pwm_enable()
1036 it87_write_value(data, IT87_REG_FAN_MAIN_CTRL, in set_pwm_enable()
1037 data->fan_main_ctrl); in set_pwm_enable()
1040 data->pwm_ctrl[nr] = has_newer_autopwm(data) ? in set_pwm_enable()
1041 data->pwm_temp_map[nr] : in set_pwm_enable()
1042 data->pwm_duty[nr]; in set_pwm_enable()
1044 data->pwm_ctrl[nr] = 0x80 | data->pwm_temp_map[nr]; in set_pwm_enable()
1045 it87_write_value(data, IT87_REG_PWM(nr), data->pwm_ctrl[nr]); in set_pwm_enable()
1047 if (data->type != it8603) { in set_pwm_enable()
1049 data->fan_main_ctrl |= (1 << nr); in set_pwm_enable()
1050 it87_write_value(data, IT87_REG_FAN_MAIN_CTRL, in set_pwm_enable()
1051 data->fan_main_ctrl); in set_pwm_enable()
1055 mutex_unlock(&data->update_lock); in set_pwm_enable()
1064 struct it87_data *data = dev_get_drvdata(dev); in set_pwm() local
1070 mutex_lock(&data->update_lock); in set_pwm()
1071 if (has_newer_autopwm(data)) { in set_pwm()
1076 if (data->pwm_ctrl[nr] & 0x80) { in set_pwm()
1077 mutex_unlock(&data->update_lock); in set_pwm()
1080 data->pwm_duty[nr] = pwm_to_reg(data, val); in set_pwm()
1081 it87_write_value(data, IT87_REG_PWM_DUTY(nr), in set_pwm()
1082 data->pwm_duty[nr]); in set_pwm()
1084 data->pwm_duty[nr] = pwm_to_reg(data, val); in set_pwm()
1089 if (!(data->pwm_ctrl[nr] & 0x80)) { in set_pwm()
1090 data->pwm_ctrl[nr] = data->pwm_duty[nr]; in set_pwm()
1091 it87_write_value(data, IT87_REG_PWM(nr), in set_pwm()
1092 data->pwm_ctrl[nr]); in set_pwm()
1095 mutex_unlock(&data->update_lock); in set_pwm()
1101 struct it87_data *data = dev_get_drvdata(dev); in set_pwm_freq() local
1109 val *= has_newer_autopwm(data) ? 256 : 128; in set_pwm_freq()
1117 mutex_lock(&data->update_lock); in set_pwm_freq()
1118 data->fan_ctl = it87_read_value(data, IT87_REG_FAN_CTL) & 0x8f; in set_pwm_freq()
1119 data->fan_ctl |= i << 4; in set_pwm_freq()
1120 it87_write_value(data, IT87_REG_FAN_CTL, data->fan_ctl); in set_pwm_freq()
1121 mutex_unlock(&data->update_lock); in set_pwm_freq()
1131 struct it87_data *data = it87_update_device(dev); in show_pwm_temp_map() local
1134 if (data->pwm_temp_map[nr] < 3) in show_pwm_temp_map()
1135 map = 1 << data->pwm_temp_map[nr]; in show_pwm_temp_map()
1146 struct it87_data *data = dev_get_drvdata(dev); in set_pwm_temp_map() local
1154 if (!has_old_autopwm(data)) { in set_pwm_temp_map()
1176 mutex_lock(&data->update_lock); in set_pwm_temp_map()
1177 data->pwm_temp_map[nr] = reg; in set_pwm_temp_map()
1182 if (data->pwm_ctrl[nr] & 0x80) { in set_pwm_temp_map()
1183 data->pwm_ctrl[nr] = 0x80 | data->pwm_temp_map[nr]; in set_pwm_temp_map()
1184 it87_write_value(data, IT87_REG_PWM(nr), data->pwm_ctrl[nr]); in set_pwm_temp_map()
1186 mutex_unlock(&data->update_lock); in set_pwm_temp_map()
1193 struct it87_data *data = it87_update_device(dev); in show_auto_pwm() local
1200 pwm_from_reg(data, data->auto_pwm[nr][point])); in show_auto_pwm()
1206 struct it87_data *data = dev_get_drvdata(dev); in set_auto_pwm() local
1216 mutex_lock(&data->update_lock); in set_auto_pwm()
1217 data->auto_pwm[nr][point] = pwm_to_reg(data, val); in set_auto_pwm()
1218 it87_write_value(data, IT87_REG_AUTO_PWM(nr, point), in set_auto_pwm()
1219 data->auto_pwm[nr][point]); in set_auto_pwm()
1220 mutex_unlock(&data->update_lock); in set_auto_pwm()
1227 struct it87_data *data = it87_update_device(dev); in show_auto_temp() local
1233 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->auto_temp[nr][point])); in show_auto_temp()
1239 struct it87_data *data = dev_get_drvdata(dev); in set_auto_temp() local
1249 mutex_lock(&data->update_lock); in set_auto_temp()
1250 data->auto_temp[nr][point] = TEMP_TO_REG(val); in set_auto_temp()
1251 it87_write_value(data, IT87_REG_AUTO_TEMP(nr, point), in set_auto_temp()
1252 data->auto_temp[nr][point]); in set_auto_temp()
1253 mutex_unlock(&data->update_lock); in set_auto_temp()
1366 struct it87_data *data = it87_update_device(dev); in show_alarms() local
1367 return sprintf(buf, "%u\n", data->alarms); in show_alarms()
1375 struct it87_data *data = it87_update_device(dev); in show_alarm() local
1376 return sprintf(buf, "%u\n", (data->alarms >> bitnr) & 1); in show_alarm()
1382 struct it87_data *data = dev_get_drvdata(dev); in clear_intrusion() local
1389 mutex_lock(&data->update_lock); in clear_intrusion()
1390 config = it87_read_value(data, IT87_REG_CONFIG); in clear_intrusion()
1395 it87_write_value(data, IT87_REG_CONFIG, config); in clear_intrusion()
1397 data->valid = 0; in clear_intrusion()
1399 mutex_unlock(&data->update_lock); in clear_intrusion()
1428 struct it87_data *data = it87_update_device(dev); in show_beep() local
1429 return sprintf(buf, "%u\n", (data->beeps >> bitnr) & 1); in show_beep()
1435 struct it87_data *data = dev_get_drvdata(dev); in set_beep() local
1442 mutex_lock(&data->update_lock); in set_beep()
1443 data->beeps = it87_read_value(data, IT87_REG_BEEP_ENABLE); in set_beep()
1445 data->beeps |= (1 << bitnr); in set_beep()
1447 data->beeps &= ~(1 << bitnr); in set_beep()
1448 it87_write_value(data, IT87_REG_BEEP_ENABLE, data->beeps); in set_beep()
1449 mutex_unlock(&data->update_lock); in set_beep()
1477 struct it87_data *data = dev_get_drvdata(dev); in show_vrm_reg() local
1478 return sprintf(buf, "%u\n", data->vrm); in show_vrm_reg()
1483 struct it87_data *data = dev_get_drvdata(dev); in store_vrm_reg() local
1489 data->vrm = val; in store_vrm_reg()
1498 struct it87_data *data = it87_update_device(dev); in show_vid_reg() local
1499 return sprintf(buf, "%ld\n", (long) vid_from_reg(data->vid, data->vrm)); in show_vid_reg()
1516 struct it87_data *data = dev_get_drvdata(dev); in show_label() local
1519 return sprintf(buf, "%s\n", has_12mv_adc(data) ? labels_it8721[nr] in show_label()
1531 struct it87_data *data = dev_get_drvdata(dev); in show_name() local
1532 return sprintf(buf, "%s\n", data->name); in show_name()
2153 struct it87_data *data = platform_get_drvdata(pdev); in it87_remove_files() local
2167 if (!(data->has_temp & (1 << i))) in it87_remove_files()
2170 if (has_temp_offset(data)) in it87_remove_files()
2178 if (!(data->has_fan & (1 << i))) in it87_remove_files()
2184 if (i < 3 && !has_16bit_fans(data)) in it87_remove_files()
2192 if (has_old_autopwm(data)) in it87_remove_files()
2203 struct it87_data *data; in it87_probe() local
2220 data = devm_kzalloc(&pdev->dev, sizeof(struct it87_data), GFP_KERNEL); in it87_probe()
2221 if (!data) in it87_probe()
2224 data->addr = res->start; in it87_probe()
2225 data->type = sio_data->type; in it87_probe()
2226 data->features = it87_devices[sio_data->type].features; in it87_probe()
2227 data->peci_mask = it87_devices[sio_data->type].peci_mask; in it87_probe()
2228 data->old_peci_mask = it87_devices[sio_data->type].old_peci_mask; in it87_probe()
2229 data->name = it87_devices[sio_data->type].name; in it87_probe()
2235 switch (data->type) { in it87_probe()
2238 data->features &= ~FEAT_OLD_AUTOPWM; in it87_probe()
2239 data->features |= FEAT_FAN16_CONFIG | FEAT_16BIT_FANS; in it87_probe()
2244 data->features &= ~FEAT_OLD_AUTOPWM; in it87_probe()
2245 data->features |= FEAT_FAN16_CONFIG | FEAT_16BIT_FANS | in it87_probe()
2254 if ((it87_read_value(data, IT87_REG_CONFIG) & 0x80) in it87_probe()
2255 || it87_read_value(data, IT87_REG_CHIPID) != 0x90) in it87_probe()
2258 platform_set_drvdata(pdev, data); in it87_probe()
2260 mutex_init(&data->update_lock); in it87_probe()
2266 if (has_12mv_adc(data)) { in it87_probe()
2268 data->in_scaled |= (1 << 3); /* in3 is AVCC */ in it87_probe()
2270 data->in_scaled |= (1 << 7); /* in7 is VSB */ in it87_probe()
2272 data->in_scaled |= (1 << 8); /* in8 is Vbat */ in it87_probe()
2274 data->in_scaled |= (1 << 9); /* in9 is AVCC */ in it87_probe()
2278 data->in_scaled |= (1 << 3); /* in3 is VCC5V */ in it87_probe()
2280 data->in_scaled |= (1 << 7); /* in7 is VCCH5V */ in it87_probe()
2283 data->has_temp = 0x07; in it87_probe()
2286 && !(it87_read_value(data, IT87_REG_TEMP_EXTRA) & 0x80)) in it87_probe()
2287 data->has_temp &= ~(1 << 2); in it87_probe()
2313 if (!(data->has_temp & (1 << i))) in it87_probe()
2318 if (has_temp_offset(data)) { in it87_probe()
2335 if (!(data->has_fan & (1 << i))) in it87_probe()
2341 if (i < 3 && !has_16bit_fans(data)) { in it87_probe()
2379 if (!has_old_autopwm(data)) in it87_probe()
2389 data->vrm = vid_which_vrm(); in it87_probe()
2391 data->vid = sio_data->vid_value; in it87_probe()
2407 data->hwmon_dev = hwmon_device_register(dev); in it87_probe()
2408 if (IS_ERR(data->hwmon_dev)) { in it87_probe()
2409 err = PTR_ERR(data->hwmon_dev); in it87_probe()
2422 struct it87_data *data = platform_get_drvdata(pdev); in it87_remove() local
2424 hwmon_device_unregister(data->hwmon_dev); in it87_remove()
2435 static int it87_read_value(struct it87_data *data, u8 reg) in it87_read_value() argument
2437 outb_p(reg, data->addr + IT87_ADDR_REG_OFFSET); in it87_read_value()
2438 return inb_p(data->addr + IT87_DATA_REG_OFFSET); in it87_read_value()
2446 static void it87_write_value(struct it87_data *data, u8 reg, u8 value) in it87_write_value() argument
2448 outb_p(reg, data->addr + IT87_ADDR_REG_OFFSET); in it87_write_value()
2449 outb_p(value, data->addr + IT87_DATA_REG_OFFSET); in it87_write_value()
2455 struct it87_data *data = dev_get_drvdata(dev); in it87_check_pwm() local
2461 int tmp = it87_read_value(data, IT87_REG_FAN_CTL); in it87_check_pwm()
2473 pwm[i] = it87_read_value(data, in it87_check_pwm()
2485 it87_write_value(data, IT87_REG_FAN_CTL, in it87_check_pwm()
2488 it87_write_value(data, in it87_check_pwm()
2513 struct it87_data *data = platform_get_drvdata(pdev); in it87_init_device() local
2531 data->pwm_temp_map[i] = i; in it87_init_device()
2532 data->pwm_duty[i] = 0x7f; /* Full speed */ in it87_init_device()
2533 data->auto_pwm[i][3] = 0x7f; /* Full speed, hard-coded */ in it87_init_device()
2544 tmp = it87_read_value(data, IT87_REG_VIN_MIN(i)); in it87_init_device()
2546 it87_write_value(data, IT87_REG_VIN_MIN(i), 0); in it87_init_device()
2549 tmp = it87_read_value(data, IT87_REG_TEMP_HIGH(i)); in it87_init_device()
2551 it87_write_value(data, IT87_REG_TEMP_HIGH(i), 127); in it87_init_device()
2562 tmp = it87_read_value(data, IT87_REG_VIN_ENABLE); in it87_init_device()
2565 it87_write_value(data, IT87_REG_VIN_ENABLE, 0xff); in it87_init_device()
2570 data->fan_main_ctrl = it87_read_value(data, IT87_REG_FAN_MAIN_CTRL); in it87_init_device()
2571 if ((data->fan_main_ctrl & mask) == 0) { in it87_init_device()
2573 data->fan_main_ctrl |= mask; in it87_init_device()
2574 it87_write_value(data, IT87_REG_FAN_MAIN_CTRL, in it87_init_device()
2575 data->fan_main_ctrl); in it87_init_device()
2577 data->has_fan = (data->fan_main_ctrl >> 4) & 0x07; in it87_init_device()
2579 tmp = it87_read_value(data, IT87_REG_FAN_16BIT); in it87_init_device()
2582 if (has_fan16_config(data)) { in it87_init_device()
2583 if (~tmp & 0x07 & data->has_fan) { in it87_init_device()
2586 it87_write_value(data, IT87_REG_FAN_16BIT, in it87_init_device()
2592 if (has_five_fans(data)) { in it87_init_device()
2594 data->has_fan |= (1 << 3); /* fan4 enabled */ in it87_init_device()
2596 data->has_fan |= (1 << 4); /* fan5 enabled */ in it87_init_device()
2597 if (has_six_fans(data) && (tmp & (1 << 2))) in it87_init_device()
2598 data->has_fan |= (1 << 5); /* fan6 enabled */ in it87_init_device()
2602 data->has_fan &= ~sio_data->skip_fan; in it87_init_device()
2605 it87_write_value(data, IT87_REG_CONFIG, in it87_init_device()
2606 (it87_read_value(data, IT87_REG_CONFIG) & 0x3e) in it87_init_device()
2610 static void it87_update_pwm_ctrl(struct it87_data *data, int nr) in it87_update_pwm_ctrl() argument
2612 data->pwm_ctrl[nr] = it87_read_value(data, IT87_REG_PWM(nr)); in it87_update_pwm_ctrl()
2613 if (has_newer_autopwm(data)) { in it87_update_pwm_ctrl()
2614 data->pwm_temp_map[nr] = data->pwm_ctrl[nr] & 0x03; in it87_update_pwm_ctrl()
2615 data->pwm_duty[nr] = it87_read_value(data, in it87_update_pwm_ctrl()
2618 if (data->pwm_ctrl[nr] & 0x80) /* Automatic mode */ in it87_update_pwm_ctrl()
2619 data->pwm_temp_map[nr] = data->pwm_ctrl[nr] & 0x03; in it87_update_pwm_ctrl()
2621 data->pwm_duty[nr] = data->pwm_ctrl[nr] & 0x7f; in it87_update_pwm_ctrl()
2624 if (has_old_autopwm(data)) { in it87_update_pwm_ctrl()
2628 data->auto_temp[nr][i] = it87_read_value(data, in it87_update_pwm_ctrl()
2631 data->auto_pwm[nr][i] = it87_read_value(data, in it87_update_pwm_ctrl()
2638 struct it87_data *data = dev_get_drvdata(dev); in it87_update_device() local
2641 mutex_lock(&data->update_lock); in it87_update_device()
2643 if (time_after(jiffies, data->last_updated + HZ + HZ / 2) in it87_update_device()
2644 || !data->valid) { in it87_update_device()
2650 it87_write_value(data, IT87_REG_CONFIG, in it87_update_device()
2651 it87_read_value(data, IT87_REG_CONFIG) | 0x40); in it87_update_device()
2654 data->in[i][0] = in it87_update_device()
2655 it87_read_value(data, IT87_REG_VIN(i)); in it87_update_device()
2656 data->in[i][1] = in it87_update_device()
2657 it87_read_value(data, IT87_REG_VIN_MIN(i)); in it87_update_device()
2658 data->in[i][2] = in it87_update_device()
2659 it87_read_value(data, IT87_REG_VIN_MAX(i)); in it87_update_device()
2662 data->in[8][0] = it87_read_value(data, IT87_REG_VIN(8)); in it87_update_device()
2663 if (data->type == it8603) in it87_update_device()
2664 data->in[9][0] = it87_read_value(data, 0x2f); in it87_update_device()
2668 if (!(data->has_fan & (1 << i))) in it87_update_device()
2671 data->fan[i][1] = in it87_update_device()
2672 it87_read_value(data, IT87_REG_FAN_MIN[i]); in it87_update_device()
2673 data->fan[i][0] = it87_read_value(data, in it87_update_device()
2676 if (has_16bit_fans(data)) { in it87_update_device()
2677 data->fan[i][0] |= it87_read_value(data, in it87_update_device()
2679 data->fan[i][1] |= it87_read_value(data, in it87_update_device()
2684 if (!(data->has_temp & (1 << i))) in it87_update_device()
2686 data->temp[i][0] = in it87_update_device()
2687 it87_read_value(data, IT87_REG_TEMP(i)); in it87_update_device()
2688 data->temp[i][1] = in it87_update_device()
2689 it87_read_value(data, IT87_REG_TEMP_LOW(i)); in it87_update_device()
2690 data->temp[i][2] = in it87_update_device()
2691 it87_read_value(data, IT87_REG_TEMP_HIGH(i)); in it87_update_device()
2692 if (has_temp_offset(data)) in it87_update_device()
2693 data->temp[i][3] = in it87_update_device()
2694 it87_read_value(data, in it87_update_device()
2699 if ((data->has_fan & 0x07) && !has_16bit_fans(data)) { in it87_update_device()
2700 i = it87_read_value(data, IT87_REG_FAN_DIV); in it87_update_device()
2701 data->fan_div[0] = i & 0x07; in it87_update_device()
2702 data->fan_div[1] = (i >> 3) & 0x07; in it87_update_device()
2703 data->fan_div[2] = (i & 0x40) ? 3 : 1; in it87_update_device()
2706 data->alarms = in it87_update_device()
2707 it87_read_value(data, IT87_REG_ALARM1) | in it87_update_device()
2708 (it87_read_value(data, IT87_REG_ALARM2) << 8) | in it87_update_device()
2709 (it87_read_value(data, IT87_REG_ALARM3) << 16); in it87_update_device()
2710 data->beeps = it87_read_value(data, IT87_REG_BEEP_ENABLE); in it87_update_device()
2712 data->fan_main_ctrl = it87_read_value(data, in it87_update_device()
2714 data->fan_ctl = it87_read_value(data, IT87_REG_FAN_CTL); in it87_update_device()
2716 it87_update_pwm_ctrl(data, i); in it87_update_device()
2718 data->sensor = it87_read_value(data, IT87_REG_TEMP_ENABLE); in it87_update_device()
2719 data->extra = it87_read_value(data, IT87_REG_TEMP_EXTRA); in it87_update_device()
2725 if (data->type == it8712 || data->type == it8716) { in it87_update_device()
2726 data->vid = it87_read_value(data, IT87_REG_VID); in it87_update_device()
2731 data->vid &= 0x3f; in it87_update_device()
2733 data->last_updated = jiffies; in it87_update_device()
2734 data->valid = 1; in it87_update_device()
2737 mutex_unlock(&data->update_lock); in it87_update_device()
2739 return data; in it87_update_device()