Lines Matching +full:reg +full:- +full:names

2     w83627hf.c - Part of lm_sensors, Linux kernel modules for hardware
4 Copyright (c) 1998 - 2003 Frodo Looijaard <frodol@dds.nl>,
8 Copyright (c) 2007 Jean Delvare <khali@linux-fr.org>
50 #include <linux/hwmon-sysfs.h>
51 #include <linux/hwmon-vid.h>
113 superio_outb(struct w83627hf_sio_data *sio, int reg, int val) in superio_outb() argument
115 outb(reg, sio->sioaddr); in superio_outb()
116 outb(val, sio->sioaddr + 1); in superio_outb()
120 superio_inb(struct w83627hf_sio_data *sio, int reg) in superio_inb() argument
122 outb(reg, sio->sioaddr); in superio_inb()
123 return inb(sio->sioaddr + 1); in superio_inb()
129 outb(DEV, sio->sioaddr); in superio_select()
130 outb(ld, sio->sioaddr + 1); in superio_select()
136 outb(0x87, sio->sioaddr); in superio_enter()
137 outb(0x87, sio->sioaddr); in superio_enter()
143 outb(0xAA, sio->sioaddr); in superio_exit()
169 (0x554 + (((nr) - 7) * 2)))
171 (0x555 + (((nr) - 7) * 2)))
173 (0x550 + (nr) - 7))
175 /* nr:0-2 for fans:1-3 */
181 /* these are zero-based, unlike config constants above */
267 #define TEMP_MIN (-128000)
270 /* TEMP: 0.001C/bit (-128C to +127C)
271 REG: 1C/bit, two's complement */
275 ntemp += (ntemp<0 ? -500 : 500); in TEMP_TO_REG()
279 static int TEMP_FROM_REG(u8 reg) in TEMP_FROM_REG() argument
281 return (s8)reg * 1000; in TEMP_FROM_REG()
284 #define FAN_FROM_REG(val,div) ((val)==0?-1:(val)==255?0:1350000/((val)*(div)))
288 static inline unsigned long pwm_freq_from_reg_627hf(u8 reg) in pwm_freq_from_reg_627hf() argument
291 freq = W83627HF_BASE_PWM_FREQ >> reg; in pwm_freq_from_reg_627hf()
307 static inline unsigned long pwm_freq_from_reg(u8 reg) in pwm_freq_from_reg() argument
309 /* Clock bit 8 -> 180 kHz or 24 MHz */ in pwm_freq_from_reg()
310 unsigned long clock = (reg & 0x80) ? 180000UL : 24000000UL; in pwm_freq_from_reg()
312 reg &= 0x7f; in pwm_freq_from_reg()
314 if (reg == 0) in pwm_freq_from_reg()
315 reg++; in pwm_freq_from_reg()
316 return (clock / (reg << 8)); in pwm_freq_from_reg()
388 static int w83627hf_read_value(struct w83627hf_data *data, u16 reg);
389 static int w83627hf_write_value(struct w83627hf_data *data, u16 reg, u16 value);
406 int nr = to_sensor_dev_attr(devattr)->index; in show_in_input()
408 return sprintf(buf, "%ld\n", (long)IN_FROM_REG(data->in[nr])); in show_in_input()
413 int nr = to_sensor_dev_attr(devattr)->index; in show_in_min()
415 return sprintf(buf, "%ld\n", (long)IN_FROM_REG(data->in_min[nr])); in show_in_min()
420 int nr = to_sensor_dev_attr(devattr)->index; in show_in_max()
422 return sprintf(buf, "%ld\n", (long)IN_FROM_REG(data->in_max[nr])); in show_in_max()
428 int nr = to_sensor_dev_attr(devattr)->index; in store_in_min()
432 mutex_lock(&data->update_lock); in store_in_min()
433 data->in_min[nr] = IN_TO_REG(val); in store_in_min()
434 w83627hf_write_value(data, W83781D_REG_IN_MIN(nr), data->in_min[nr]); in store_in_min()
435 mutex_unlock(&data->update_lock); in store_in_min()
442 int nr = to_sensor_dev_attr(devattr)->index; in store_in_max()
446 mutex_lock(&data->update_lock); in store_in_max()
447 data->in_max[nr] = IN_TO_REG(val); in store_in_max()
448 w83627hf_write_value(data, W83781D_REG_IN_MAX(nr), data->in_max[nr]); in store_in_max()
449 mutex_unlock(&data->update_lock); in store_in_max()
470 static ssize_t show_in_0(struct w83627hf_data *data, char *buf, u8 reg) in show_in_0() argument
474 if ((data->vrm_ovt & 0x01) && in show_in_0()
475 (w83627thf == data->type || w83637hf == data->type in show_in_0()
476 || w83687thf == data->type)) in show_in_0()
479 in0 = (long)((reg * 488 + 70000 + 50) / 100); in show_in_0()
482 in0 = (long)IN_FROM_REG(reg); in show_in_0()
490 return show_in_0(data, buf, data->in[0]); in show_regs_in_0()
496 return show_in_0(data, buf, data->in_min[0]); in show_regs_in_min0()
502 return show_in_0(data, buf, data->in_max[0]); in show_regs_in_max0()
513 mutex_lock(&data->update_lock); in store_regs_in_min0()
515 if ((data->vrm_ovt & 0x01) && in store_regs_in_min0()
516 (w83627thf == data->type || w83637hf == data->type in store_regs_in_min0()
517 || w83687thf == data->type)) in store_regs_in_min0()
520 data->in_min[0] = in store_regs_in_min0()
521 SENSORS_LIMIT(((val * 100) - 70000 + 244) / 488, 0, in store_regs_in_min0()
525 data->in_min[0] = IN_TO_REG(val); in store_regs_in_min0()
527 w83627hf_write_value(data, W83781D_REG_IN_MIN(0), data->in_min[0]); in store_regs_in_min0()
528 mutex_unlock(&data->update_lock); in store_regs_in_min0()
540 mutex_lock(&data->update_lock); in store_regs_in_max0()
542 if ((data->vrm_ovt & 0x01) && in store_regs_in_max0()
543 (w83627thf == data->type || w83637hf == data->type in store_regs_in_max0()
544 || w83687thf == data->type)) in store_regs_in_max0()
547 data->in_max[0] = in store_regs_in_max0()
548 SENSORS_LIMIT(((val * 100) - 70000 + 244) / 488, 0, in store_regs_in_max0()
552 data->in_max[0] = IN_TO_REG(val); in store_regs_in_max0()
554 w83627hf_write_value(data, W83781D_REG_IN_MAX(0), data->in_max[0]); in store_regs_in_max0()
555 mutex_unlock(&data->update_lock); in store_regs_in_max0()
568 int nr = to_sensor_dev_attr(devattr)->index; in show_fan_input()
570 return sprintf(buf, "%ld\n", FAN_FROM_REG(data->fan[nr], in show_fan_input()
571 (long)DIV_FROM_REG(data->fan_div[nr]))); in show_fan_input()
576 int nr = to_sensor_dev_attr(devattr)->index; in show_fan_min()
578 return sprintf(buf, "%ld\n", FAN_FROM_REG(data->fan_min[nr], in show_fan_min()
579 (long)DIV_FROM_REG(data->fan_div[nr]))); in show_fan_min()
585 int nr = to_sensor_dev_attr(devattr)->index; in store_fan_min()
589 mutex_lock(&data->update_lock); in store_fan_min()
590 data->fan_min[nr] = FAN_TO_REG(val, DIV_FROM_REG(data->fan_div[nr])); in store_fan_min()
592 data->fan_min[nr]); in store_fan_min()
594 mutex_unlock(&data->update_lock); in store_fan_min()
599 show_fan_input, NULL, offset - 1); \
601 show_fan_min, store_fan_min, offset - 1);
610 int nr = to_sensor_dev_attr(devattr)->index; in show_temp()
613 u16 tmp = data->temp[nr]; in show_temp()
622 int nr = to_sensor_dev_attr(devattr)->index; in show_temp_max()
625 u16 tmp = data->temp_max[nr]; in show_temp_max()
634 int nr = to_sensor_dev_attr(devattr)->index; in show_temp_max_hyst()
637 u16 tmp = data->temp_max_hyst[nr]; in show_temp_max_hyst()
646 int nr = to_sensor_dev_attr(devattr)->index; in store_temp_max()
651 mutex_lock(&data->update_lock); in store_temp_max()
652 data->temp_max[nr] = tmp; in store_temp_max()
654 mutex_unlock(&data->update_lock); in store_temp_max()
662 int nr = to_sensor_dev_attr(devattr)->index; in store_temp_max_hyst()
667 mutex_lock(&data->update_lock); in store_temp_max_hyst()
668 data->temp_max_hyst[nr] = tmp; in store_temp_max_hyst()
670 mutex_unlock(&data->update_lock); in store_temp_max_hyst()
676 show_temp, NULL, offset - 1); \
678 show_temp_max, store_temp_max, offset - 1); \
680 show_temp_max_hyst, store_temp_max_hyst, offset - 1);
690 return sprintf(buf, "%ld\n", (long) vid_from_reg(data->vid, data->vrm)); in show_vid_reg()
698 return sprintf(buf, "%ld\n", (long) data->vrm); in show_vrm_reg()
707 data->vrm = val; in store_vrm_reg()
717 return sprintf(buf, "%ld\n", (long) data->alarms); in show_alarms_reg()
725 int bitnr = to_sensor_dev_attr(attr)->index; in show_alarm()
726 return sprintf(buf, "%u\n", (data->alarms >> bitnr) & 1); in show_alarm()
749 (long)BEEP_MASK_FROM_REG(data->beep_mask)); in show_beep_mask()
761 mutex_lock(&data->update_lock); in store_beep_mask()
764 data->beep_mask = (data->beep_mask & 0x8000) in store_beep_mask()
767 data->beep_mask & 0xff); in store_beep_mask()
769 ((data->beep_mask) >> 16) & 0xff); in store_beep_mask()
771 (data->beep_mask >> 8) & 0xff); in store_beep_mask()
773 mutex_unlock(&data->update_lock); in store_beep_mask()
784 int bitnr = to_sensor_dev_attr(attr)->index; in show_beep()
785 return sprintf(buf, "%u\n", (data->beep_mask >> bitnr) & 1); in show_beep()
793 int bitnr = to_sensor_dev_attr(attr)->index; in store_beep()
795 u8 reg; in store_beep() local
799 return -EINVAL; in store_beep()
801 mutex_lock(&data->update_lock); in store_beep()
803 data->beep_mask |= (1 << bitnr); in store_beep()
805 data->beep_mask &= ~(1 << bitnr); in store_beep()
808 reg = w83627hf_read_value(data, W83781D_REG_BEEP_INTS1); in store_beep()
810 reg |= (1 << bitnr); in store_beep()
812 reg &= ~(1 << bitnr); in store_beep()
813 w83627hf_write_value(data, W83781D_REG_BEEP_INTS1, reg); in store_beep()
815 reg = w83627hf_read_value(data, W83781D_REG_BEEP_INTS2); in store_beep()
817 reg |= (1 << (bitnr - 8)); in store_beep()
819 reg &= ~(1 << (bitnr - 8)); in store_beep()
820 w83627hf_write_value(data, W83781D_REG_BEEP_INTS2, reg); in store_beep()
822 reg = w83627hf_read_value(data, W83781D_REG_BEEP_INTS3); in store_beep()
824 reg |= (1 << (bitnr - 16)); in store_beep()
826 reg &= ~(1 << (bitnr - 16)); in store_beep()
827 w83627hf_write_value(data, W83781D_REG_BEEP_INTS3, reg); in store_beep()
829 mutex_unlock(&data->update_lock); in store_beep()
870 int nr = to_sensor_dev_attr(devattr)->index; in show_fan_div()
873 (long) DIV_FROM_REG(data->fan_div[nr])); in show_fan_div()
883 int nr = to_sensor_dev_attr(devattr)->index; in store_fan_div()
886 u8 reg; in store_fan_div() local
889 mutex_lock(&data->update_lock); in store_fan_div()
892 min = FAN_FROM_REG(data->fan_min[nr], in store_fan_div()
893 DIV_FROM_REG(data->fan_div[nr])); in store_fan_div()
895 data->fan_div[nr] = DIV_TO_REG(val); in store_fan_div()
897 reg = (w83627hf_read_value(data, nr==2 ? W83781D_REG_PIN : W83781D_REG_VID_FANDIV) in store_fan_div()
899 | ((data->fan_div[nr] & 0x03) << (nr==0 ? 4 : 6)); in store_fan_div()
900 w83627hf_write_value(data, nr==2 ? W83781D_REG_PIN : W83781D_REG_VID_FANDIV, reg); in store_fan_div()
902 reg = (w83627hf_read_value(data, W83781D_REG_VBAT) in store_fan_div()
904 | ((data->fan_div[nr] & 0x04) << (3 + nr)); in store_fan_div()
905 w83627hf_write_value(data, W83781D_REG_VBAT, reg); in store_fan_div()
908 data->fan_min[nr] = FAN_TO_REG(min, DIV_FROM_REG(data->fan_div[nr])); in store_fan_div()
909 w83627hf_write_value(data, W83627HF_REG_FAN_MIN(nr), data->fan_min[nr]); in store_fan_div()
911 mutex_unlock(&data->update_lock); in store_fan_div()
925 int nr = to_sensor_dev_attr(devattr)->index; in show_pwm()
927 return sprintf(buf, "%ld\n", (long) data->pwm[nr]); in show_pwm()
934 int nr = to_sensor_dev_attr(devattr)->index; in store_pwm()
938 mutex_lock(&data->update_lock); in store_pwm()
940 if (data->type == w83627thf) { in store_pwm()
941 /* bits 0-3 are reserved in 627THF */ in store_pwm()
942 data->pwm[nr] = PWM_TO_REG(val) & 0xf0; in store_pwm()
944 W836X7HF_REG_PWM(data->type, nr), in store_pwm()
945 data->pwm[nr] | in store_pwm()
947 W836X7HF_REG_PWM(data->type, nr)) & 0x0f)); in store_pwm()
949 data->pwm[nr] = PWM_TO_REG(val); in store_pwm()
951 W836X7HF_REG_PWM(data->type, nr), in store_pwm()
952 data->pwm[nr]); in store_pwm()
955 mutex_unlock(&data->update_lock); in store_pwm()
966 int nr = to_sensor_dev_attr(devattr)->index; in show_pwm_enable()
968 return sprintf(buf, "%d\n", data->pwm_enable[nr]); in show_pwm_enable()
975 int nr = to_sensor_dev_attr(devattr)->index; in store_pwm_enable()
978 u8 reg; in store_pwm_enable() local
981 return -EINVAL; in store_pwm_enable()
982 mutex_lock(&data->update_lock); in store_pwm_enable()
983 data->pwm_enable[nr] = val; in store_pwm_enable()
984 reg = w83627hf_read_value(data, W83627THF_REG_PWM_ENABLE[nr]); in store_pwm_enable()
985 reg &= ~(0x03 << W83627THF_PWM_ENABLE_SHIFT[nr]); in store_pwm_enable()
986 reg |= (val - 1) << W83627THF_PWM_ENABLE_SHIFT[nr]; in store_pwm_enable()
987 w83627hf_write_value(data, W83627THF_REG_PWM_ENABLE[nr], reg); in store_pwm_enable()
988 mutex_unlock(&data->update_lock); in store_pwm_enable()
1002 int nr = to_sensor_dev_attr(devattr)->index; in show_pwm_freq()
1004 if (data->type == w83627hf) in show_pwm_freq()
1006 pwm_freq_from_reg_627hf(data->pwm_freq[nr])); in show_pwm_freq()
1009 pwm_freq_from_reg(data->pwm_freq[nr])); in show_pwm_freq()
1016 int nr = to_sensor_dev_attr(devattr)->index; in store_pwm_freq()
1023 mutex_lock(&data->update_lock); in store_pwm_freq()
1025 if (data->type == w83627hf) { in store_pwm_freq()
1026 data->pwm_freq[nr] = pwm_freq_to_reg_627hf(val); in store_pwm_freq()
1028 (data->pwm_freq[nr] << (nr*4)) | in store_pwm_freq()
1032 data->pwm_freq[nr] = pwm_freq_to_reg(val); in store_pwm_freq()
1034 data->pwm_freq[nr]); in store_pwm_freq()
1037 mutex_unlock(&data->update_lock); in store_pwm_freq()
1052 int nr = to_sensor_dev_attr(devattr)->index; in show_temp_type()
1054 return sprintf(buf, "%ld\n", (long) data->sens[nr]); in show_temp_type()
1061 int nr = to_sensor_dev_attr(devattr)->index; in store_temp_type()
1067 mutex_lock(&data->update_lock); in store_temp_type()
1077 data->sens[nr] = val; in store_temp_type()
1086 data->sens[nr] = val; in store_temp_type()
1096 data->sens[nr] = val; in store_temp_type()
1105 mutex_unlock(&data->update_lock); in store_temp_type()
1111 show_temp_type, store_temp_type, offset - 1);
1122 return sprintf(buf, "%s\n", data->name); in show_name()
1129 int err = -ENODEV; in w83627hf_find()
1132 static const __initdata char *names[] = { in w83627hf_find() local
1140 sio_data->sioaddr = sioaddr; in w83627hf_find()
1145 sio_data->type = w83627hf; in w83627hf_find()
1148 sio_data->type = w83627thf; in w83627hf_find()
1151 sio_data->type = w83697hf; in w83627hf_find()
1154 sio_data->type = w83637hf; in w83627hf_find()
1157 sio_data->type = w83687thf; in w83627hf_find()
1183 names[sio_data->type], *addr); in w83627hf_find()
1270 struct device *dev = &pdev->dev; in w83627hf_probe()
1271 struct w83627hf_sio_data *sio_data = dev->platform_data; in w83627hf_probe()
1276 static const char *names[] = { in w83627hf_probe() local
1285 if (!request_region(res->start, WINB_REGION_SIZE, DRVNAME)) { in w83627hf_probe()
1286 dev_err(dev, "Failed to request region 0x%lx-0x%lx\n", in w83627hf_probe()
1287 (unsigned long)res->start, in w83627hf_probe()
1288 (unsigned long)(res->start + WINB_REGION_SIZE - 1)); in w83627hf_probe()
1289 err = -EBUSY; in w83627hf_probe()
1294 err = -ENOMEM; in w83627hf_probe()
1297 data->addr = res->start; in w83627hf_probe()
1298 data->type = sio_data->type; in w83627hf_probe()
1299 data->name = names[sio_data->type]; in w83627hf_probe()
1300 mutex_init(&data->lock); in w83627hf_probe()
1301 mutex_init(&data->update_lock); in w83627hf_probe()
1309 data->fan_min[i] = w83627hf_read_value( in w83627hf_probe()
1314 if ((err = sysfs_create_group(&dev->kobj, &w83627hf_group))) in w83627hf_probe()
1317 /* Register chip-specific device attributes */ in w83627hf_probe()
1318 if (data->type == w83627hf || data->type == w83697hf) in w83627hf_probe()
1345 if (data->type != w83697hf) in w83627hf_probe()
1380 if (data->type != w83697hf && data->vid != 0xff) { in w83627hf_probe()
1382 data->vrm = vid_which_vrm(); in w83627hf_probe()
1389 if (data->type == w83627thf || data->type == w83637hf in w83627hf_probe()
1390 || data->type == w83687thf) in w83627hf_probe()
1395 if (data->type == w83637hf || data->type == w83687thf) in w83627hf_probe()
1404 if (data->type != w83627hf) in w83627hf_probe()
1411 if (data->type == w83627thf || data->type == w83637hf in w83627hf_probe()
1412 || data->type == w83687thf) in w83627hf_probe()
1417 data->hwmon_dev = hwmon_device_register(dev); in w83627hf_probe()
1418 if (IS_ERR(data->hwmon_dev)) { in w83627hf_probe()
1419 err = PTR_ERR(data->hwmon_dev); in w83627hf_probe()
1426 sysfs_remove_group(&dev->kobj, &w83627hf_group); in w83627hf_probe()
1427 sysfs_remove_group(&dev->kobj, &w83627hf_group_opt); in w83627hf_probe()
1432 release_region(res->start, WINB_REGION_SIZE); in w83627hf_probe()
1442 hwmon_device_unregister(data->hwmon_dev); in w83627hf_remove()
1444 sysfs_remove_group(&pdev->dev.kobj, &w83627hf_group); in w83627hf_remove()
1445 sysfs_remove_group(&pdev->dev.kobj, &w83627hf_group_opt); in w83627hf_remove()
1450 release_region(res->start, WINB_REGION_SIZE); in w83627hf_remove()
1456 /* Registers 0x50-0x5f are banked */
1457 static inline void w83627hf_set_bank(struct w83627hf_data *data, u16 reg) in w83627hf_set_bank() argument
1459 if ((reg & 0x00f0) == 0x50) { in w83627hf_set_bank()
1460 outb_p(W83781D_REG_BANK, data->addr + W83781D_ADDR_REG_OFFSET); in w83627hf_set_bank()
1461 outb_p(reg >> 8, data->addr + W83781D_DATA_REG_OFFSET); in w83627hf_set_bank()
1466 static inline void w83627hf_reset_bank(struct w83627hf_data *data, u16 reg) in w83627hf_reset_bank() argument
1468 if (reg & 0xff00) { in w83627hf_reset_bank()
1469 outb_p(W83781D_REG_BANK, data->addr + W83781D_ADDR_REG_OFFSET); in w83627hf_reset_bank()
1470 outb_p(0, data->addr + W83781D_DATA_REG_OFFSET); in w83627hf_reset_bank()
1474 static int w83627hf_read_value(struct w83627hf_data *data, u16 reg) in w83627hf_read_value() argument
1478 mutex_lock(&data->lock); in w83627hf_read_value()
1479 word_sized = (((reg & 0xff00) == 0x100) in w83627hf_read_value()
1480 || ((reg & 0xff00) == 0x200)) in w83627hf_read_value()
1481 && (((reg & 0x00ff) == 0x50) in w83627hf_read_value()
1482 || ((reg & 0x00ff) == 0x53) in w83627hf_read_value()
1483 || ((reg & 0x00ff) == 0x55)); in w83627hf_read_value()
1484 w83627hf_set_bank(data, reg); in w83627hf_read_value()
1485 outb_p(reg & 0xff, data->addr + W83781D_ADDR_REG_OFFSET); in w83627hf_read_value()
1486 res = inb_p(data->addr + W83781D_DATA_REG_OFFSET); in w83627hf_read_value()
1488 outb_p((reg & 0xff) + 1, in w83627hf_read_value()
1489 data->addr + W83781D_ADDR_REG_OFFSET); in w83627hf_read_value()
1491 (res << 8) + inb_p(data->addr + in w83627hf_read_value()
1494 w83627hf_reset_bank(data, reg); in w83627hf_read_value()
1495 mutex_unlock(&data->lock); in w83627hf_read_value()
1501 struct w83627hf_sio_data *sio_data = pdev->dev.platform_data; in w83627thf_read_gpio5()
1509 dev_dbg(&pdev->dev, "GPIO5 disabled, no VID function\n"); in w83627thf_read_gpio5()
1517 dev_dbg(&pdev->dev, "GPIO5 not configured for VID " in w83627thf_read_gpio5()
1522 dev_info(&pdev->dev, "Reading VID from GPIO5\n"); in w83627thf_read_gpio5()
1532 struct w83627hf_sio_data *sio_data = pdev->dev.platform_data; in w83687thf_read_vid()
1540 dev_dbg(&pdev->dev, "VID disabled, no VID function\n"); in w83687thf_read_vid()
1546 dev_dbg(&pdev->dev, "VID configured as output, " in w83687thf_read_vid()
1558 static int w83627hf_write_value(struct w83627hf_data *data, u16 reg, u16 value) in w83627hf_write_value() argument
1562 mutex_lock(&data->lock); in w83627hf_write_value()
1563 word_sized = (((reg & 0xff00) == 0x100) in w83627hf_write_value()
1564 || ((reg & 0xff00) == 0x200)) in w83627hf_write_value()
1565 && (((reg & 0x00ff) == 0x53) in w83627hf_write_value()
1566 || ((reg & 0x00ff) == 0x55)); in w83627hf_write_value()
1567 w83627hf_set_bank(data, reg); in w83627hf_write_value()
1568 outb_p(reg & 0xff, data->addr + W83781D_ADDR_REG_OFFSET); in w83627hf_write_value()
1571 data->addr + W83781D_DATA_REG_OFFSET); in w83627hf_write_value()
1572 outb_p((reg & 0xff) + 1, in w83627hf_write_value()
1573 data->addr + W83781D_ADDR_REG_OFFSET); in w83627hf_write_value()
1576 data->addr + W83781D_DATA_REG_OFFSET); in w83627hf_write_value()
1577 w83627hf_reset_bank(data, reg); in w83627hf_write_value()
1578 mutex_unlock(&data->lock); in w83627hf_write_value()
1586 enum chips type = data->type; in w83627hf_init_device()
1589 /* Minimize conflicts with other winbond i2c-only clients... */ in w83627hf_init_device()
1599 data->vid = (lo & 0x0f) | ((hi & 0x01) << 4); in w83627hf_init_device()
1601 data->vid = w83627thf_read_gpio5(pdev); in w83627hf_init_device()
1603 data->vid = w83687thf_read_vid(pdev); in w83627hf_init_device()
1608 data->vrm_ovt = in w83627hf_init_device()
1614 if (!(tmp & BIT_SCFG1[i - 1])) { in w83627hf_init_device()
1615 data->sens[i - 1] = 4; in w83627hf_init_device()
1619 W83781D_REG_SCFG2) & BIT_SCFG2[i - 1]) in w83627hf_init_device()
1620 data->sens[i - 1] = 1; in w83627hf_init_device()
1622 data->sens[i - 1] = 2; in w83627hf_init_device()
1632 dev_warn(&pdev->dev, "Enabling temp2, readings " in w83627hf_init_device()
1643 dev_warn(&pdev->dev, "Enabling temp3, " in w83627hf_init_device()
1665 int reg; in w83627hf_update_fan_div() local
1667 reg = w83627hf_read_value(data, W83781D_REG_VID_FANDIV); in w83627hf_update_fan_div()
1668 data->fan_div[0] = (reg >> 4) & 0x03; in w83627hf_update_fan_div()
1669 data->fan_div[1] = (reg >> 6) & 0x03; in w83627hf_update_fan_div()
1670 if (data->type != w83697hf) { in w83627hf_update_fan_div()
1671 data->fan_div[2] = (w83627hf_read_value(data, in w83627hf_update_fan_div()
1674 reg = w83627hf_read_value(data, W83781D_REG_VBAT); in w83627hf_update_fan_div()
1675 data->fan_div[0] |= (reg >> 3) & 0x04; in w83627hf_update_fan_div()
1676 data->fan_div[1] |= (reg >> 4) & 0x04; in w83627hf_update_fan_div()
1677 if (data->type != w83697hf) in w83627hf_update_fan_div()
1678 data->fan_div[2] |= (reg >> 5) & 0x04; in w83627hf_update_fan_div()
1684 int i, num_temps = (data->type == w83697hf) ? 2 : 3; in w83627hf_update_device()
1685 int num_pwms = (data->type == w83697hf) ? 2 : 3; in w83627hf_update_device()
1687 mutex_lock(&data->update_lock); in w83627hf_update_device()
1689 if (time_after(jiffies, data->last_updated + HZ + HZ / 2) in w83627hf_update_device()
1690 || !data->valid) { in w83627hf_update_device()
1693 if (((data->type == w83697hf) && (i == 1)) || in w83627hf_update_device()
1694 ((data->type != w83627hf && data->type != w83697hf) in w83627hf_update_device()
1697 data->in[i] = in w83627hf_update_device()
1699 data->in_min[i] = in w83627hf_update_device()
1702 data->in_max[i] = in w83627hf_update_device()
1707 data->fan[i] = in w83627hf_update_device()
1709 data->fan_min[i] = in w83627hf_update_device()
1715 W836X7HF_REG_PWM(data->type, i)); in w83627hf_update_device()
1716 /* bits 0-3 are reserved in 627THF */ in w83627hf_update_device()
1717 if (data->type == w83627thf) in w83627hf_update_device()
1719 data->pwm[i] = tmp; in w83627hf_update_device()
1721 (data->type == w83627hf || data->type == w83697hf)) in w83627hf_update_device()
1724 if (data->type == w83627hf) { in w83627hf_update_device()
1727 data->pwm_freq[0] = tmp & 0x07; in w83627hf_update_device()
1728 data->pwm_freq[1] = (tmp >> 4) & 0x07; in w83627hf_update_device()
1729 } else if (data->type != w83627thf) { in w83627hf_update_device()
1731 data->pwm_freq[i - 1] = in w83627hf_update_device()
1733 W83637HF_REG_PWM_FREQ[i - 1]); in w83627hf_update_device()
1734 if (i == 2 && (data->type == w83697hf)) in w83627hf_update_device()
1738 if (data->type != w83627hf) { in w83627hf_update_device()
1742 data->pwm_enable[i] = in w83627hf_update_device()
1748 data->temp[i] = w83627hf_read_value( in w83627hf_update_device()
1750 data->temp_max[i] = w83627hf_read_value( in w83627hf_update_device()
1752 data->temp_max_hyst[i] = w83627hf_read_value( in w83627hf_update_device()
1758 data->alarms = in w83627hf_update_device()
1763 data->beep_mask = (i << 8) | in w83627hf_update_device()
1766 data->last_updated = jiffies; in w83627hf_update_device()
1767 data->valid = 1; in w83627hf_update_device()
1770 mutex_unlock(&data->update_lock); in w83627hf_update_device()
1780 .end = address + WINB_REGION_OFFSET + WINB_REGION_SIZE - 1, in w83627hf_device_add()
1792 err = -ENOMEM; in w83627hf_device_add()
1832 return -ENODEV; in sensors_w83627hf_init()