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]);
1258 w83781d_read_value_i2c(struct w83781d_data *data, u16 reg)
1260 struct i2c_client *client = data->client;
1273 cl = data->lm75[bank - 1];
1298 w83781d_write_value_i2c(struct w83781d_data *data, u16 reg, u16 value)
1300 struct i2c_client *client = data->client;
1314 cl = data->lm75[bank - 1];
1337 struct w83781d_data *data = dev_get_drvdata(dev);
1339 int type = data->type;
1358 i = w83781d_read_value(data, W83781D_REG_BEEP_CONFIG);
1359 p = w83781d_read_value(data, W83781D_REG_PWMCLK12);
1364 w83781d_write_value(data, W83781D_REG_CONFIG, 0x80);
1369 w83781d_write_value(data, W83781D_REG_BEEP_CONFIG, i | 0x80);
1370 w83781d_write_value(data, W83781D_REG_PWMCLK12, p);
1376 w83781d_write_value(data, W83781D_REG_BEEP_INTS2, 0);
1384 i = w83781d_read_value(data, W83781D_REG_BEEP_CONFIG);
1385 w83781d_write_value(data, W83781D_REG_BEEP_CONFIG, i | 0x80);
1388 data->vrm = vid_which_vrm();
1391 tmp = w83781d_read_value(data, W83781D_REG_SCFG1);
1394 data->sens[i - 1] = 4;
1397 (data,
1399 data->sens[i - 1] = 1;
1401 data->sens[i - 1] = 2;
1410 tmp = w83781d_read_value(data, W83781D_REG_TEMP2_CONFIG);
1414 w83781d_write_value(data, W83781D_REG_TEMP2_CONFIG,
1420 tmp = w83781d_read_value(data,
1425 w83781d_write_value(data,
1432 w83781d_write_value(data, W83781D_REG_CONFIG,
1433 (w83781d_read_value(data,
1439 data->fan_min[i] = w83781d_read_value(data,
1443 mutex_init(&data->update_lock);
1448 struct w83781d_data *data = dev_get_drvdata(dev);
1449 struct i2c_client *client = data->client;
1452 mutex_lock(&data->update_lock);
1454 if (time_after(jiffies, data->last_updated + HZ + HZ / 2)
1455 || !data->valid) {
1459 if (data->type == w83783s && i == 1)
1461 data->in[i] =
1462 w83781d_read_value(data, W83781D_REG_IN(i));
1463 data->in_min[i] =
1464 w83781d_read_value(data, W83781D_REG_IN_MIN(i));
1465 data->in_max[i] =
1466 w83781d_read_value(data, W83781D_REG_IN_MAX(i));
1467 if ((data->type != w83782d) && (i == 6))
1471 data->fan[i] =
1472 w83781d_read_value(data, W83781D_REG_FAN(i));
1473 data->fan_min[i] =
1474 w83781d_read_value(data, W83781D_REG_FAN_MIN(i));
1476 if (data->type != w83781d && data->type != as99127f) {
1478 data->pwm[i] =
1479 w83781d_read_value(data,
1482 if ((data->type != w83782d || !client)
1487 data->pwm2_enable = (w83781d_read_value(data,
1491 data->temp = w83781d_read_value(data, W83781D_REG_TEMP(1));
1492 data->temp_max =
1493 w83781d_read_value(data, W83781D_REG_TEMP_OVER(1));
1494 data->temp_max_hyst =
1495 w83781d_read_value(data, W83781D_REG_TEMP_HYST(1));
1496 data->temp_add[0] =
1497 w83781d_read_value(data, W83781D_REG_TEMP(2));
1498 data->temp_max_add[0] =
1499 w83781d_read_value(data, W83781D_REG_TEMP_OVER(2));
1500 data->temp_max_hyst_add[0] =
1501 w83781d_read_value(data, W83781D_REG_TEMP_HYST(2));
1502 if (data->type != w83783s) {
1503 data->temp_add[1] =
1504 w83781d_read_value(data, W83781D_REG_TEMP(3));
1505 data->temp_max_add[1] =
1506 w83781d_read_value(data,
1508 data->temp_max_hyst_add[1] =
1509 w83781d_read_value(data,
1512 i = w83781d_read_value(data, W83781D_REG_VID_FANDIV);
1513 data->vid = i & 0x0f;
1514 data->vid |= (w83781d_read_value(data,
1516 data->fan_div[0] = (i >> 4) & 0x03;
1517 data->fan_div[1] = (i >> 6) & 0x03;
1518 data->fan_div[2] = (w83781d_read_value(data,
1520 if ((data->type != w83781d) && (data->type != as99127f)) {
1521 i = w83781d_read_value(data, W83781D_REG_VBAT);
1522 data->fan_div[0] |= (i >> 3) & 0x04;
1523 data->fan_div[1] |= (i >> 4) & 0x04;
1524 data->fan_div[2] |= (i >> 5) & 0x04;
1526 if (data->type == w83782d) {
1527 data->alarms = w83781d_read_value(data,
1529 | (w83781d_read_value(data,
1531 | (w83781d_read_value(data,
1533 } else if (data->type == w83783s) {
1534 data->alarms = w83781d_read_value(data,
1536 | (w83781d_read_value(data,
1543 data->alarms = w83781d_read_value(data,
1545 | (w83781d_read_value(data,
1548 i = w83781d_read_value(data, W83781D_REG_BEEP_INTS2);
1549 data->beep_mask = (i << 8) +
1550 w83781d_read_value(data, W83781D_REG_BEEP_INTS1);
1551 if ((data->type != w83781d) && (data->type != as99127f)) {
1552 data->beep_mask |=
1553 w83781d_read_value(data,
1556 data->last_updated = jiffies;
1557 data->valid = 1;
1560 mutex_unlock(&data->update_lock);
1562 return data;
1603 struct w83781d_data *data = dev_get_drvdata(dev);
1604 return sprintf(buf, "%s\n", data->name);
1651 w83781d_read_value_isa(struct w83781d_data *data, u16 reg)
1662 data->isa_addr + W83781D_ADDR_REG_OFFSET);
1664 data->isa_addr + W83781D_DATA_REG_OFFSET);
1666 outb_p(reg & 0xff, data->isa_addr + W83781D_ADDR_REG_OFFSET);
1667 res = inb_p(data->isa_addr + W83781D_DATA_REG_OFFSET);
1670 data->isa_addr + W83781D_ADDR_REG_OFFSET);
1672 (res << 8) + inb_p(data->isa_addr +
1677 data->isa_addr + W83781D_ADDR_REG_OFFSET);
1678 outb_p(0, data->isa_addr + W83781D_DATA_REG_OFFSET);
1684 w83781d_write_value_isa(struct w83781d_data *data, u16 reg, u16 value)
1694 data->isa_addr + W83781D_ADDR_REG_OFFSET);
1696 data->isa_addr + W83781D_DATA_REG_OFFSET);
1698 outb_p(reg & 0xff, data->isa_addr + W83781D_ADDR_REG_OFFSET);
1701 data->isa_addr + W83781D_DATA_REG_OFFSET);
1703 data->isa_addr + W83781D_ADDR_REG_OFFSET);
1705 outb_p(value & 0xff, data->isa_addr + W83781D_DATA_REG_OFFSET);
1708 data->isa_addr + W83781D_ADDR_REG_OFFSET);
1709 outb_p(0, data->isa_addr + W83781D_DATA_REG_OFFSET);
1722 w83781d_read_value(struct w83781d_data *data, u16 reg)
1724 struct i2c_client *client = data->client;
1727 mutex_lock(&data->lock);
1729 res = w83781d_read_value_i2c(data, reg);
1731 res = w83781d_read_value_isa(data, reg);
1732 mutex_unlock(&data->lock);
1737 w83781d_write_value(struct w83781d_data *data, u16 reg, u16 value)
1739 struct i2c_client *client = data->client;
1741 mutex_lock(&data->lock);
1743 w83781d_write_value_i2c(data, reg, value);
1745 w83781d_write_value_isa(data, reg, value);
1746 mutex_unlock(&data->lock);
1754 struct w83781d_data *data;
1764 data = devm_kzalloc(&pdev->dev, sizeof(struct w83781d_data),
1766 if (!data)
1769 mutex_init(&data->lock);
1770 data->isa_addr = res->start;
1771 platform_set_drvdata(pdev, data);
1773 reg = w83781d_read_value(data, W83781D_REG_WCHIPID);
1776 data->type = w83782d;
1777 data->name = "w83782d";
1780 data->type = w83781d;
1781 data->name = "w83781d";
1788 err = w83781d_create_files(&pdev->dev, data->type, 1);
1796 data->hwmon_dev = hwmon_device_register(&pdev->dev);
1797 if (IS_ERR(data->hwmon_dev)) {
1798 err = PTR_ERR(data->hwmon_dev);
1813 struct w83781d_data *data = platform_get_drvdata(pdev);
1815 hwmon_device_unregister(data->hwmon_dev);
2014 w83781d_read_value(struct w83781d_data *data, u16 reg)
2018 mutex_lock(&data->lock);
2019 res = w83781d_read_value_i2c(data, reg);
2020 mutex_unlock(&data->lock);
2026 w83781d_write_value(struct w83781d_data *data, u16 reg, u16 value)
2028 mutex_lock(&data->lock);
2029 w83781d_write_value_i2c(data, reg, value);
2030 mutex_unlock(&data->lock);