Lines Matching refs:data
70 /* Where are the ISA address/data registers relative to the base address */
136 * The following are undocumented in the data sheets however we
240 static int w83781d_read_value(struct w83781d_data *data, u16 reg);
241 static int w83781d_write_value(struct w83781d_data *data, u16 reg, u16 value);
251 struct w83781d_data *data = w83781d_update_device(dev); \
253 (long)IN_FROM_REG(data->reg[attr->index])); \
264 struct w83781d_data *data = dev_get_drvdata(dev); \
270 mutex_lock(&data->update_lock); \
271 data->in_##reg[nr] = IN_TO_REG(val); \
272 w83781d_write_value(data, W83781D_REG_IN_##REG(nr), \
273 data->in_##reg[nr]); \
275 mutex_unlock(&data->update_lock); \
304 struct w83781d_data *data = w83781d_update_device(dev); \
306 FAN_FROM_REG(data->reg[attr->index], \
307 DIV_FROM_REG(data->fan_div[attr->index]))); \
317 struct w83781d_data *data = dev_get_drvdata(dev);
326 mutex_lock(&data->update_lock);
327 data->fan_min[nr] =
328 FAN_TO_REG(val, DIV_FROM_REG(data->fan_div[nr]));
329 w83781d_write_value(data, W83781D_REG_FAN_MIN(nr),
330 data->fan_min[nr]);
332 mutex_unlock(&data->update_lock);
351 struct w83781d_data *data = w83781d_update_device(dev); \
355 LM75_TEMP_FROM_REG(data->reg##_add[nr-2])); \
357 return sprintf(buf, "%ld\n", (long)TEMP_FROM_REG(data->reg)); \
369 struct w83781d_data *data = dev_get_drvdata(dev); \
375 mutex_lock(&data->update_lock); \
378 data->temp_##reg##_add[nr-2] = LM75_TEMP_TO_REG(val); \
379 w83781d_write_value(data, W83781D_REG_TEMP_##REG(nr), \
380 data->temp_##reg##_add[nr-2]); \
382 data->temp_##reg = TEMP_TO_REG(val); \
383 w83781d_write_value(data, W83781D_REG_TEMP_##REG(nr), \
384 data->temp_##reg); \
387 mutex_unlock(&data->update_lock); \
408 struct w83781d_data *data = w83781d_update_device(dev);
409 return sprintf(buf, "%ld\n", (long) vid_from_reg(data->vid, data->vrm));
417 struct w83781d_data *data = dev_get_drvdata(dev);
418 return sprintf(buf, "%ld\n", (long) data->vrm);
425 struct w83781d_data *data = dev_get_drvdata(dev);
432 data->vrm = clamp_val(val, 0, 255);
442 struct w83781d_data *data = w83781d_update_device(dev);
443 return sprintf(buf, "%u\n", data->alarms);
451 struct w83781d_data *data = w83781d_update_device(dev);
453 return sprintf(buf, "%u\n", (data->alarms >> bitnr) & 1);
460 struct w83781d_data *data = w83781d_update_device(dev);
461 int bitnr = (data->type == w83781d) ? 5 : 13;
462 return sprintf(buf, "%u\n", (data->alarms >> bitnr) & 1);
484 struct w83781d_data *data = w83781d_update_device(dev);
486 (long)BEEP_MASK_FROM_REG(data->beep_mask, data->type));
493 struct w83781d_data *data = dev_get_drvdata(dev);
501 mutex_lock(&data->update_lock);
502 data->beep_mask &= 0x8000; /* preserve beep enable */
503 data->beep_mask |= BEEP_MASK_TO_REG(val, data->type);
504 w83781d_write_value(data, W83781D_REG_BEEP_INTS1,
505 data->beep_mask & 0xff);
506 w83781d_write_value(data, W83781D_REG_BEEP_INTS2,
507 (data->beep_mask >> 8) & 0xff);
508 if (data->type != w83781d && data->type != as99127f) {
509 w83781d_write_value(data, W83781D_REG_BEEP_INTS3,
510 ((data->beep_mask) >> 16) & 0xff);
512 mutex_unlock(&data->update_lock);
522 struct w83781d_data *data = w83781d_update_device(dev);
524 return sprintf(buf, "%u\n", (data->beep_mask >> bitnr) & 1);
531 struct w83781d_data *data = dev_get_drvdata(dev);
544 mutex_lock(&data->update_lock);
546 data->beep_mask |= (1 << bitnr);
548 data->beep_mask &= ~(1 << bitnr);
551 reg = w83781d_read_value(data, W83781D_REG_BEEP_INTS1);
556 w83781d_write_value(data, W83781D_REG_BEEP_INTS1, reg);
558 reg = w83781d_read_value(data, W83781D_REG_BEEP_INTS2);
563 w83781d_write_value(data, W83781D_REG_BEEP_INTS2, reg);
565 reg = w83781d_read_value(data, W83781D_REG_BEEP_INTS3);
570 w83781d_write_value(data, W83781D_REG_BEEP_INTS3, reg);
572 mutex_unlock(&data->update_lock);
581 struct w83781d_data *data = w83781d_update_device(dev);
582 int bitnr = (data->type == w83781d) ? 5 : 13;
583 return sprintf(buf, "%u\n", (data->beep_mask >> bitnr) & 1);
623 struct w83781d_data *data = w83781d_update_device(dev);
625 (long) DIV_FROM_REG(data->fan_div[attr->index]));
639 struct w83781d_data *data = dev_get_drvdata(dev);
650 mutex_lock(&data->update_lock);
653 min = FAN_FROM_REG(data->fan_min[nr],
654 DIV_FROM_REG(data->fan_div[nr]));
656 data->fan_div[nr] = DIV_TO_REG(val, data->type);
658 reg = (w83781d_read_value(data, nr == 2 ?
661 | ((data->fan_div[nr] & 0x03) << (nr == 0 ? 4 : 6));
662 w83781d_write_value(data, nr == 2 ?
666 if (data->type != w83781d && data->type != as99127f) {
667 reg = (w83781d_read_value(data, W83781D_REG_VBAT)
669 | ((data->fan_div[nr] & 0x04) << (3 + nr));
670 w83781d_write_value(data, W83781D_REG_VBAT, reg);
674 data->fan_min[nr] = FAN_TO_REG(min, DIV_FROM_REG(data->fan_div[nr]));
675 w83781d_write_value(data, W83781D_REG_FAN_MIN(nr), data->fan_min[nr]);
677 mutex_unlock(&data->update_lock);
692 struct w83781d_data *data = w83781d_update_device(dev);
693 return sprintf(buf, "%d\n", (int)data->pwm[attr->index]);
699 struct w83781d_data *data = w83781d_update_device(dev);
700 return sprintf(buf, "%d\n", (int)data->pwm2_enable);
708 struct w83781d_data *data = dev_get_drvdata(dev);
717 mutex_lock(&data->update_lock);
718 data->pwm[nr] = clamp_val(val, 0, 255);
719 w83781d_write_value(data, W83781D_REG_PWM[nr], data->pwm[nr]);
720 mutex_unlock(&data->update_lock);
728 struct w83781d_data *data = dev_get_drvdata(dev);
737 mutex_lock(&data->update_lock);
742 reg = w83781d_read_value(data, W83781D_REG_PWMCLK12);
743 w83781d_write_value(data, W83781D_REG_PWMCLK12,
746 reg = w83781d_read_value(data, W83781D_REG_BEEP_CONFIG);
747 w83781d_write_value(data, W83781D_REG_BEEP_CONFIG,
750 data->pwm2_enable = val;
754 mutex_unlock(&data->update_lock);
758 mutex_unlock(&data->update_lock);
773 struct w83781d_data *data = w83781d_update_device(dev);
774 return sprintf(buf, "%d\n", (int)data->sens[attr->index]);
782 struct w83781d_data *data = dev_get_drvdata(dev);
792 mutex_lock(&data->update_lock);
796 tmp = w83781d_read_value(data, W83781D_REG_SCFG1);
797 w83781d_write_value(data, W83781D_REG_SCFG1,
799 tmp = w83781d_read_value(data, W83781D_REG_SCFG2);
800 w83781d_write_value(data, W83781D_REG_SCFG2,
802 data->sens[nr] = val;
805 tmp = w83781d_read_value(data, W83781D_REG_SCFG1);
806 w83781d_write_value(data, W83781D_REG_SCFG1,
808 tmp = w83781d_read_value(data, W83781D_REG_SCFG2);
809 w83781d_write_value(data, W83781D_REG_SCFG2,
811 data->sens[nr] = val;
819 tmp = w83781d_read_value(data, W83781D_REG_SCFG1);
820 w83781d_write_value(data, W83781D_REG_SCFG1,
822 data->sens[nr] = val;
830 mutex_unlock(&data->update_lock);
853 struct w83781d_data *data = i2c_get_clientdata(new_client);
854 enum chips kind = data->type;
870 w83781d_write_value(data, W83781D_REG_I2C_SUBADDR,
875 val1 = w83781d_read_value(data, W83781D_REG_I2C_SUBADDR);
897 data->lm75[i] = i2c_new_dummy_device(adapter, sc_addr[i]);
898 if (IS_ERR(data->lm75[i])) {
902 err = PTR_ERR(data->lm75[i]);
913 i2c_unregister_device(data->lm75[0]);
1200 struct w83781d_data *data;
1203 data = devm_kzalloc(dev, sizeof(struct w83781d_data), GFP_KERNEL);
1204 if (!data)
1207 i2c_set_clientdata(client, data);
1208 mutex_init(&data->lock);
1209 mutex_init(&data->update_lock);
1211 data->type = i2c_match_id(w83781d_ids, client)->driver_data;
1212 data->client = client;
1223 err = w83781d_create_files(dev, data->type, 0);
1227 data->hwmon_dev = hwmon_device_register(dev);
1228 if (IS_ERR(data->hwmon_dev)) {
1229 err = PTR_ERR(data->hwmon_dev);
1237 i2c_unregister_device(data->lm75[0]);
1238 i2c_unregister_device(data->lm75[1]);
1245 struct w83781d_data *data = i2c_get_clientdata(client);
1248 hwmon_device_unregister(data->hwmon_dev);
1251 i2c_unregister_device(data->lm75[0]);
1252 i2c_unregister_device(data->lm75[1]);
1256 w83781d_read_value_i2c(struct w83781d_data *data, u16 reg)
1258 struct i2c_client *client = data->client;
1271 cl = data->lm75[bank - 1];
1296 w83781d_write_value_i2c(struct w83781d_data *data, u16 reg, u16 value)
1298 struct i2c_client *client = data->client;
1312 cl = data->lm75[bank - 1];
1335 struct w83781d_data *data = dev_get_drvdata(dev);
1337 int type = data->type;
1356 i = w83781d_read_value(data, W83781D_REG_BEEP_CONFIG);
1357 p = w83781d_read_value(data, W83781D_REG_PWMCLK12);
1362 w83781d_write_value(data, W83781D_REG_CONFIG, 0x80);
1367 w83781d_write_value(data, W83781D_REG_BEEP_CONFIG, i | 0x80);
1368 w83781d_write_value(data, W83781D_REG_PWMCLK12, p);
1374 w83781d_write_value(data, W83781D_REG_BEEP_INTS2, 0);
1382 i = w83781d_read_value(data, W83781D_REG_BEEP_CONFIG);
1383 w83781d_write_value(data, W83781D_REG_BEEP_CONFIG, i | 0x80);
1386 data->vrm = vid_which_vrm();
1389 tmp = w83781d_read_value(data, W83781D_REG_SCFG1);
1392 data->sens[i - 1] = 4;
1395 (data,
1397 data->sens[i - 1] = 1;
1399 data->sens[i - 1] = 2;
1408 tmp = w83781d_read_value(data, W83781D_REG_TEMP2_CONFIG);
1412 w83781d_write_value(data, W83781D_REG_TEMP2_CONFIG,
1418 tmp = w83781d_read_value(data,
1423 w83781d_write_value(data,
1430 w83781d_write_value(data, W83781D_REG_CONFIG,
1431 (w83781d_read_value(data,
1437 data->fan_min[i] = w83781d_read_value(data,
1441 mutex_init(&data->update_lock);
1446 struct w83781d_data *data = dev_get_drvdata(dev);
1447 struct i2c_client *client = data->client;
1450 mutex_lock(&data->update_lock);
1452 if (time_after(jiffies, data->last_updated + HZ + HZ / 2)
1453 || !data->valid) {
1457 if (data->type == w83783s && i == 1)
1459 data->in[i] =
1460 w83781d_read_value(data, W83781D_REG_IN(i));
1461 data->in_min[i] =
1462 w83781d_read_value(data, W83781D_REG_IN_MIN(i));
1463 data->in_max[i] =
1464 w83781d_read_value(data, W83781D_REG_IN_MAX(i));
1465 if ((data->type != w83782d) && (i == 6))
1469 data->fan[i] =
1470 w83781d_read_value(data, W83781D_REG_FAN(i));
1471 data->fan_min[i] =
1472 w83781d_read_value(data, W83781D_REG_FAN_MIN(i));
1474 if (data->type != w83781d && data->type != as99127f) {
1476 data->pwm[i] =
1477 w83781d_read_value(data,
1480 if ((data->type != w83782d || !client)
1485 data->pwm2_enable = (w83781d_read_value(data,
1489 data->temp = w83781d_read_value(data, W83781D_REG_TEMP(1));
1490 data->temp_max =
1491 w83781d_read_value(data, W83781D_REG_TEMP_OVER(1));
1492 data->temp_max_hyst =
1493 w83781d_read_value(data, W83781D_REG_TEMP_HYST(1));
1494 data->temp_add[0] =
1495 w83781d_read_value(data, W83781D_REG_TEMP(2));
1496 data->temp_max_add[0] =
1497 w83781d_read_value(data, W83781D_REG_TEMP_OVER(2));
1498 data->temp_max_hyst_add[0] =
1499 w83781d_read_value(data, W83781D_REG_TEMP_HYST(2));
1500 if (data->type != w83783s) {
1501 data->temp_add[1] =
1502 w83781d_read_value(data, W83781D_REG_TEMP(3));
1503 data->temp_max_add[1] =
1504 w83781d_read_value(data,
1506 data->temp_max_hyst_add[1] =
1507 w83781d_read_value(data,
1510 i = w83781d_read_value(data, W83781D_REG_VID_FANDIV);
1511 data->vid = i & 0x0f;
1512 data->vid |= (w83781d_read_value(data,
1514 data->fan_div[0] = (i >> 4) & 0x03;
1515 data->fan_div[1] = (i >> 6) & 0x03;
1516 data->fan_div[2] = (w83781d_read_value(data,
1518 if ((data->type != w83781d) && (data->type != as99127f)) {
1519 i = w83781d_read_value(data, W83781D_REG_VBAT);
1520 data->fan_div[0] |= (i >> 3) & 0x04;
1521 data->fan_div[1] |= (i >> 4) & 0x04;
1522 data->fan_div[2] |= (i >> 5) & 0x04;
1524 if (data->type == w83782d) {
1525 data->alarms = w83781d_read_value(data,
1527 | (w83781d_read_value(data,
1529 | (w83781d_read_value(data,
1531 } else if (data->type == w83783s) {
1532 data->alarms = w83781d_read_value(data,
1534 | (w83781d_read_value(data,
1541 data->alarms = w83781d_read_value(data,
1543 | (w83781d_read_value(data,
1546 i = w83781d_read_value(data, W83781D_REG_BEEP_INTS2);
1547 data->beep_mask = (i << 8) +
1548 w83781d_read_value(data, W83781D_REG_BEEP_INTS1);
1549 if ((data->type != w83781d) && (data->type != as99127f)) {
1550 data->beep_mask |=
1551 w83781d_read_value(data,
1554 data->last_updated = jiffies;
1555 data->valid = true;
1558 mutex_unlock(&data->update_lock);
1560 return data;
1612 struct w83781d_data *data = dev_get_drvdata(dev);
1613 return sprintf(buf, "%s\n", data->name);
1660 w83781d_read_value_isa(struct w83781d_data *data, u16 reg)
1671 data->isa_addr + W83781D_ADDR_REG_OFFSET);
1673 data->isa_addr + W83781D_DATA_REG_OFFSET);
1675 outb_p(reg & 0xff, data->isa_addr + W83781D_ADDR_REG_OFFSET);
1676 res = inb_p(data->isa_addr + W83781D_DATA_REG_OFFSET);
1679 data->isa_addr + W83781D_ADDR_REG_OFFSET);
1681 (res << 8) + inb_p(data->isa_addr +
1686 data->isa_addr + W83781D_ADDR_REG_OFFSET);
1687 outb_p(0, data->isa_addr + W83781D_DATA_REG_OFFSET);
1693 w83781d_write_value_isa(struct w83781d_data *data, u16 reg, u16 value)
1703 data->isa_addr + W83781D_ADDR_REG_OFFSET);
1705 data->isa_addr + W83781D_DATA_REG_OFFSET);
1707 outb_p(reg & 0xff, data->isa_addr + W83781D_ADDR_REG_OFFSET);
1710 data->isa_addr + W83781D_DATA_REG_OFFSET);
1712 data->isa_addr + W83781D_ADDR_REG_OFFSET);
1714 outb_p(value & 0xff, data->isa_addr + W83781D_DATA_REG_OFFSET);
1717 data->isa_addr + W83781D_ADDR_REG_OFFSET);
1718 outb_p(0, data->isa_addr + W83781D_DATA_REG_OFFSET);
1731 w83781d_read_value(struct w83781d_data *data, u16 reg)
1733 struct i2c_client *client = data->client;
1736 mutex_lock(&data->lock);
1738 res = w83781d_read_value_i2c(data, reg);
1740 res = w83781d_read_value_isa(data, reg);
1741 mutex_unlock(&data->lock);
1746 w83781d_write_value(struct w83781d_data *data, u16 reg, u16 value)
1748 struct i2c_client *client = data->client;
1750 mutex_lock(&data->lock);
1752 w83781d_write_value_i2c(data, reg, value);
1754 w83781d_write_value_isa(data, reg, value);
1755 mutex_unlock(&data->lock);
1763 struct w83781d_data *data;
1773 data = devm_kzalloc(&pdev->dev, sizeof(struct w83781d_data),
1775 if (!data)
1778 mutex_init(&data->lock);
1779 data->isa_addr = res->start;
1780 platform_set_drvdata(pdev, data);
1782 reg = w83781d_read_value(data, W83781D_REG_WCHIPID);
1785 data->type = w83782d;
1786 data->name = "w83782d";
1789 data->type = w83781d;
1790 data->name = "w83781d";
1797 err = w83781d_create_files(&pdev->dev, data->type, 1);
1805 data->hwmon_dev = hwmon_device_register(&pdev->dev);
1806 if (IS_ERR(data->hwmon_dev)) {
1807 err = PTR_ERR(data->hwmon_dev);
1822 struct w83781d_data *data = platform_get_drvdata(pdev);
1824 hwmon_device_unregister(data->hwmon_dev);
2023 w83781d_read_value(struct w83781d_data *data, u16 reg)
2027 mutex_lock(&data->lock);
2028 res = w83781d_read_value_i2c(data, reg);
2029 mutex_unlock(&data->lock);
2035 w83781d_write_value(struct w83781d_data *data, u16 reg, u16 value)
2037 mutex_lock(&data->lock);
2038 w83781d_write_value_i2c(data, reg, value);
2039 mutex_unlock(&data->lock);