Lines Matching refs:data
199 static inline u16 temp2reg(struct adt7475_data *data, long val) in temp2reg() argument
203 if (!(data->config5 & CONFIG5_TWOSCOMP)) { in temp2reg()
219 static inline int reg2temp(struct adt7475_data *data, u16 reg) in reg2temp() argument
221 if (data->config5 & CONFIG5_TWOSCOMP) { in reg2temp()
325 struct adt7475_data *data = adt7475_update_device(dev); in show_voltage() local
332 (data->alarms >> sattr->index) & 1); in show_voltage()
334 val = data->voltage[sattr->nr][sattr->index]; in show_voltage()
336 reg2volt(sattr->index, val, data->bypass_attn)); in show_voltage()
346 struct adt7475_data *data = i2c_get_clientdata(client); in set_voltage() local
353 mutex_lock(&data->lock); in set_voltage()
355 data->voltage[sattr->nr][sattr->index] = in set_voltage()
356 volt2reg(sattr->index, val, data->bypass_attn); in set_voltage()
371 data->voltage[sattr->nr][sattr->index] >> 2); in set_voltage()
372 mutex_unlock(&data->lock); in set_voltage()
380 struct adt7475_data *data = adt7475_update_device(dev); in show_temp() local
386 mutex_lock(&data->lock); in show_temp()
387 out = data->temp[sattr->nr][sattr->index]; in show_temp()
396 out = reg2temp(data, data->temp[THERM][sattr->index]) - in show_temp()
398 mutex_unlock(&data->lock); in show_temp()
406 mutex_lock(&data->lock); in show_temp()
407 out = (s8)data->temp[sattr->nr][sattr->index]; in show_temp()
408 if (data->config5 & CONFIG5_TEMPOFFSET) in show_temp()
412 mutex_unlock(&data->lock); in show_temp()
416 out = (data->alarms >> (sattr->index + 4)) & 1; in show_temp()
421 out = !!(data->alarms & (sattr->index ? 0x8000 : 0x4000)); in show_temp()
426 out = reg2temp(data, data->temp[sattr->nr][sattr->index]); in show_temp()
437 struct adt7475_data *data = i2c_get_clientdata(client); in set_temp() local
446 mutex_lock(&data->lock); in set_temp()
449 data->config5 = adt7475_read(REG_CONFIG5); in set_temp()
453 if (data->config5 & CONFIG5_TEMPOFFSET) { in set_temp()
455 out = data->temp[OFFSET][sattr->index] = val / 1000; in set_temp()
458 out = data->temp[OFFSET][sattr->index] = val / 500; in set_temp()
469 data->temp[THERM][sattr->index] = in set_temp()
473 temp = reg2temp(data, data->temp[THERM][sattr->index]); in set_temp()
478 data->temp[HYSTERSIS][sattr->index] &= 0xF0; in set_temp()
479 data->temp[HYSTERSIS][sattr->index] |= (val & 0xF) << 4; in set_temp()
481 data->temp[HYSTERSIS][sattr->index] &= 0x0F; in set_temp()
482 data->temp[HYSTERSIS][sattr->index] |= (val & 0xF); in set_temp()
485 out = data->temp[HYSTERSIS][sattr->index]; in set_temp()
489 data->temp[sattr->nr][sattr->index] = temp2reg(data, val); in set_temp()
495 out = (u8) (data->temp[sattr->nr][sattr->index] >> 2); in set_temp()
525 mutex_unlock(&data->lock); in set_temp()
542 struct adt7475_data *data = adt7475_update_device(dev); in show_point2() local
546 mutex_lock(&data->lock); in show_point2()
547 out = (data->range[sattr->index] >> 4) & 0x0F; in show_point2()
548 val = reg2temp(data, data->temp[AUTOMIN][sattr->index]); in show_point2()
549 mutex_unlock(&data->lock); in show_point2()
558 struct adt7475_data *data = i2c_get_clientdata(client); in set_point2() local
566 mutex_lock(&data->lock); in set_point2()
569 data->config5 = adt7475_read(REG_CONFIG5); in set_point2()
570 data->temp[AUTOMIN][sattr->index] = in set_point2()
572 data->range[sattr->index] = in set_point2()
579 temp = reg2temp(data, data->temp[AUTOMIN][sattr->index]); in set_point2()
587 data->range[sattr->index] &= ~0xF0; in set_point2()
588 data->range[sattr->index] |= val << 4; in set_point2()
591 data->range[sattr->index]); in set_point2()
593 mutex_unlock(&data->lock); in set_point2()
600 struct adt7475_data *data = adt7475_update_device(dev); in show_tach() local
605 out = (data->alarms >> (sattr->index + 10)) & 1; in show_tach()
607 out = tach2rpm(data->tach[sattr->nr][sattr->index]); in show_tach()
618 struct adt7475_data *data = i2c_get_clientdata(client); in set_tach() local
624 mutex_lock(&data->lock); in set_tach()
626 data->tach[MIN][sattr->index] = rpm2tach(val); in set_tach()
629 data->tach[MIN][sattr->index]); in set_tach()
631 mutex_unlock(&data->lock); in set_tach()
638 struct adt7475_data *data = adt7475_update_device(dev); in show_pwm() local
641 return sprintf(buf, "%d\n", data->pwm[sattr->nr][sattr->index]); in show_pwm()
647 struct adt7475_data *data = adt7475_update_device(dev); in show_pwmchan() local
650 return sprintf(buf, "%d\n", data->pwmchan[sattr->index]); in show_pwmchan()
656 struct adt7475_data *data = adt7475_update_device(dev); in show_pwmctrl() local
659 return sprintf(buf, "%d\n", data->pwmctl[sattr->index]); in show_pwmctrl()
668 struct adt7475_data *data = i2c_get_clientdata(client); in set_pwm() local
675 mutex_lock(&data->lock); in set_pwm()
680 data->pwm[CONTROL][sattr->index] = in set_pwm()
687 if (((data->pwm[CONTROL][sattr->index] >> 5) & 7) != 7) { in set_pwm()
688 mutex_unlock(&data->lock); in set_pwm()
704 data->pwm[sattr->nr][sattr->index] = clamp_val(val, 0, 0xFF); in set_pwm()
706 data->pwm[sattr->nr][sattr->index]); in set_pwm()
708 mutex_unlock(&data->lock); in set_pwm()
718 struct adt7475_data *data = i2c_get_clientdata(client); in hw_set_pwm() local
758 data->pwmctl[index] = pwmctl; in hw_set_pwm()
759 data->pwmchan[index] = pwmchan; in hw_set_pwm()
761 data->pwm[CONTROL][index] &= ~0xE0; in hw_set_pwm()
762 data->pwm[CONTROL][index] |= (val & 7) << 5; in hw_set_pwm()
765 data->pwm[CONTROL][index]); in hw_set_pwm()
775 struct adt7475_data *data = i2c_get_clientdata(client); in set_pwmchan() local
782 mutex_lock(&data->lock); in set_pwmchan()
785 r = hw_set_pwm(client, sattr->index, data->pwmctl[sattr->index], val); in set_pwmchan()
788 mutex_unlock(&data->lock); in set_pwmchan()
798 struct adt7475_data *data = i2c_get_clientdata(client); in set_pwmctrl() local
805 mutex_lock(&data->lock); in set_pwmctrl()
808 r = hw_set_pwm(client, sattr->index, val, data->pwmchan[sattr->index]); in set_pwmctrl()
811 mutex_unlock(&data->lock); in set_pwmctrl()
824 struct adt7475_data *data = adt7475_update_device(dev); in show_pwmfreq() local
828 pwmfreq_table[data->range[sattr->index] & 7]); in show_pwmfreq()
836 struct adt7475_data *data = i2c_get_clientdata(client); in set_pwmfreq() local
845 mutex_lock(&data->lock); in set_pwmfreq()
847 data->range[sattr->index] = in set_pwmfreq()
849 data->range[sattr->index] &= ~7; in set_pwmfreq()
850 data->range[sattr->index] |= out; in set_pwmfreq()
853 data->range[sattr->index]); in set_pwmfreq()
855 mutex_unlock(&data->lock); in set_pwmfreq()
862 struct adt7475_data *data = adt7475_update_device(dev); in show_pwm_at_crit() local
863 return sprintf(buf, "%d\n", !!(data->config4 & CONFIG4_MAXDUTY)); in show_pwm_at_crit()
871 struct adt7475_data *data = i2c_get_clientdata(client); in set_pwm_at_crit() local
879 mutex_lock(&data->lock); in set_pwm_at_crit()
880 data->config4 = i2c_smbus_read_byte_data(client, REG_CONFIG4); in set_pwm_at_crit()
882 data->config4 |= CONFIG4_MAXDUTY; in set_pwm_at_crit()
884 data->config4 &= ~CONFIG4_MAXDUTY; in set_pwm_at_crit()
885 i2c_smbus_write_byte_data(client, REG_CONFIG4, data->config4); in set_pwm_at_crit()
886 mutex_unlock(&data->lock); in set_pwm_at_crit()
894 struct adt7475_data *data = dev_get_drvdata(dev); in show_vrm() local
895 return sprintf(buf, "%d\n", (int)data->vrm); in show_vrm()
901 struct adt7475_data *data = dev_get_drvdata(dev); in set_vrm() local
908 data->vrm = val; in set_vrm()
916 struct adt7475_data *data = adt7475_update_device(dev); in show_vid() local
917 return sprintf(buf, "%d\n", vid_from_reg(data->vid, data->vrm)); in show_vid()
1231 struct adt7475_data *data) in adt7475_remove_files() argument
1234 if (data->has_fan4) in adt7475_remove_files()
1236 if (data->has_pwm2) in adt7475_remove_files()
1238 if (data->has_voltage & (1 << 0)) in adt7475_remove_files()
1240 if (data->has_voltage & (1 << 3)) in adt7475_remove_files()
1242 if (data->has_voltage & (1 << 4)) in adt7475_remove_files()
1244 if (data->has_voltage & (1 << 5)) in adt7475_remove_files()
1246 if (data->has_vid) in adt7475_remove_files()
1260 struct adt7475_data *data; in adt7475_probe() local
1264 data = devm_kzalloc(&client->dev, sizeof(*data), GFP_KERNEL); in adt7475_probe()
1265 if (data == NULL) in adt7475_probe()
1268 mutex_init(&data->lock); in adt7475_probe()
1269 i2c_set_clientdata(client, data); in adt7475_probe()
1274 data->has_voltage = 0x0e; /* in1 to in3 */ in adt7475_probe()
1278 data->has_voltage = 0x3e; /* in1 to in5 */ in adt7475_probe()
1284 data->has_voltage = 0x06; /* in1, in2 */ in adt7475_probe()
1291 data->has_pwm2 = 1; in adt7475_probe()
1294 data->has_pwm2 = !data->has_pwm2; in adt7475_probe()
1296 data->config4 = adt7475_read(REG_CONFIG4); in adt7475_probe()
1298 if ((data->config4 & CONFIG4_PINFUNC) == 0x0) in adt7475_probe()
1299 data->has_fan4 = 1; in adt7475_probe()
1307 if ((data->config4 & CONFIG4_PINFUNC) == 0x1 && in adt7475_probe()
1309 data->has_fan4 = 1; in adt7475_probe()
1313 (data->config4 & CONFIG4_PINFUNC) == 0x1) in adt7475_probe()
1314 data->has_voltage |= (1 << 0); /* in0 */ in adt7475_probe()
1324 data->has_voltage |= (1 << 4); /* in4 */ in adt7475_probe()
1326 data->has_vid = !(adt7475_read(REG_CONFIG5) & CONFIG5_VIDGPIO); in adt7475_probe()
1332 data->bypass_attn = (0x3 << 3) | 0x3; in adt7475_probe()
1334 data->bypass_attn = ((data->config4 & CONFIG4_ATTN_IN10) >> 4) | in adt7475_probe()
1335 ((data->config4 & CONFIG4_ATTN_IN43) >> 3); in adt7475_probe()
1337 data->bypass_attn &= data->has_voltage; in adt7475_probe()
1351 if (data->has_fan4) { in adt7475_probe()
1356 if (data->has_pwm2) { in adt7475_probe()
1361 if (data->has_voltage & (1 << 0)) { in adt7475_probe()
1366 if (data->has_voltage & (1 << 3)) { in adt7475_probe()
1371 if (data->has_voltage & (1 << 4)) { in adt7475_probe()
1376 if (data->has_voltage & (1 << 5)) { in adt7475_probe()
1381 if (data->has_vid) { in adt7475_probe()
1382 data->vrm = vid_which_vrm(); in adt7475_probe()
1388 data->hwmon_dev = hwmon_device_register(&client->dev); in adt7475_probe()
1389 if (IS_ERR(data->hwmon_dev)) { in adt7475_probe()
1390 ret = PTR_ERR(data->hwmon_dev); in adt7475_probe()
1396 if ((data->has_voltage & 0x11) || data->has_fan4 || data->has_pwm2) in adt7475_probe()
1398 (data->has_voltage & (1 << 0)) ? " in0" : "", in adt7475_probe()
1399 (data->has_voltage & (1 << 4)) ? " in4" : "", in adt7475_probe()
1400 data->has_fan4 ? " fan4" : "", in adt7475_probe()
1401 data->has_pwm2 ? " pwm2" : "", in adt7475_probe()
1402 data->has_vid ? " vid" : ""); in adt7475_probe()
1403 if (data->bypass_attn) in adt7475_probe()
1405 (data->bypass_attn & (1 << 0)) ? " in0" : "", in adt7475_probe()
1406 (data->bypass_attn & (1 << 1)) ? " in1" : "", in adt7475_probe()
1407 (data->bypass_attn & (1 << 3)) ? " in3" : "", in adt7475_probe()
1408 (data->bypass_attn & (1 << 4)) ? " in4" : ""); in adt7475_probe()
1413 adt7475_remove_files(client, data); in adt7475_probe()
1419 struct adt7475_data *data = i2c_get_clientdata(client); in adt7475_remove() local
1421 hwmon_device_unregister(data->hwmon_dev); in adt7475_remove()
1422 adt7475_remove_files(client, data); in adt7475_remove()
1441 struct adt7475_data *data = i2c_get_clientdata(client); in adt7475_read_hystersis() local
1443 data->temp[HYSTERSIS][0] = (u16) adt7475_read(REG_REMOTE1_HYSTERSIS); in adt7475_read_hystersis()
1444 data->temp[HYSTERSIS][1] = data->temp[HYSTERSIS][0]; in adt7475_read_hystersis()
1445 data->temp[HYSTERSIS][2] = (u16) adt7475_read(REG_REMOTE2_HYSTERSIS); in adt7475_read_hystersis()
1450 struct adt7475_data *data = i2c_get_clientdata(client); in adt7475_read_pwm() local
1453 data->pwm[CONTROL][index] = adt7475_read(PWM_CONFIG_REG(index)); in adt7475_read_pwm()
1459 v = (data->pwm[CONTROL][index] >> 5) & 7; in adt7475_read_pwm()
1462 data->pwmctl[index] = 0; in adt7475_read_pwm()
1464 data->pwmctl[index] = 1; in adt7475_read_pwm()
1471 data->pwm[INPUT][index] = 0; in adt7475_read_pwm()
1472 data->pwm[CONTROL][index] &= ~0xE0; in adt7475_read_pwm()
1473 data->pwm[CONTROL][index] |= (7 << 5); in adt7475_read_pwm()
1476 data->pwm[INPUT][index]); in adt7475_read_pwm()
1479 data->pwm[CONTROL][index]); in adt7475_read_pwm()
1481 data->pwmctl[index] = 1; in adt7475_read_pwm()
1483 data->pwmctl[index] = 2; in adt7475_read_pwm()
1487 data->pwmchan[index] = 1; in adt7475_read_pwm()
1490 data->pwmchan[index] = 2; in adt7475_read_pwm()
1493 data->pwmchan[index] = 4; in adt7475_read_pwm()
1496 data->pwmchan[index] = 6; in adt7475_read_pwm()
1499 data->pwmchan[index] = 7; in adt7475_read_pwm()
1508 struct adt7475_data *data = i2c_get_clientdata(client); in adt7475_update_device() local
1512 mutex_lock(&data->lock); in adt7475_update_device()
1515 if (time_after(jiffies, data->measure_updated + HZ * 2) || in adt7475_update_device()
1516 !data->valid) { in adt7475_update_device()
1517 data->alarms = adt7475_read(REG_STATUS2) << 8; in adt7475_update_device()
1518 data->alarms |= adt7475_read(REG_STATUS1); in adt7475_update_device()
1523 if (!(data->has_voltage & (1 << i))) in adt7475_update_device()
1525 data->voltage[INPUT][i] = in adt7475_update_device()
1531 data->temp[INPUT][i] = in adt7475_update_device()
1535 if (data->has_voltage & (1 << 5)) { in adt7475_update_device()
1536 data->alarms |= adt7475_read(REG_STATUS4) << 24; in adt7475_update_device()
1538 data->voltage[INPUT][5] = adt7475_read(REG_VTT) << 2 | in adt7475_update_device()
1543 if (i == 3 && !data->has_fan4) in adt7475_update_device()
1545 data->tach[INPUT][i] = in adt7475_update_device()
1551 if (i == 1 && !data->has_pwm2) in adt7475_update_device()
1553 data->pwm[INPUT][i] = adt7475_read(PWM_REG(i)); in adt7475_update_device()
1556 if (data->has_vid) in adt7475_update_device()
1557 data->vid = adt7475_read(REG_VID) & 0x3f; in adt7475_update_device()
1559 data->measure_updated = jiffies; in adt7475_update_device()
1563 if (time_after(jiffies, data->limits_updated + HZ * 60) || in adt7475_update_device()
1564 !data->valid) { in adt7475_update_device()
1565 data->config4 = adt7475_read(REG_CONFIG4); in adt7475_update_device()
1566 data->config5 = adt7475_read(REG_CONFIG5); in adt7475_update_device()
1569 if (!(data->has_voltage & (1 << i))) in adt7475_update_device()
1572 data->voltage[MIN][i] = in adt7475_update_device()
1574 data->voltage[MAX][i] = in adt7475_update_device()
1578 if (data->has_voltage & (1 << 5)) { in adt7475_update_device()
1579 data->voltage[MIN][5] = adt7475_read(REG_VTT_MIN) << 2; in adt7475_update_device()
1580 data->voltage[MAX][5] = adt7475_read(REG_VTT_MAX) << 2; in adt7475_update_device()
1585 data->temp[MIN][i] = in adt7475_update_device()
1587 data->temp[MAX][i] = in adt7475_update_device()
1589 data->temp[AUTOMIN][i] = in adt7475_update_device()
1591 data->temp[THERM][i] = in adt7475_update_device()
1593 data->temp[OFFSET][i] = in adt7475_update_device()
1599 if (i == 3 && !data->has_fan4) in adt7475_update_device()
1601 data->tach[MIN][i] = in adt7475_update_device()
1606 if (i == 1 && !data->has_pwm2) in adt7475_update_device()
1608 data->pwm[MAX][i] = adt7475_read(PWM_MAX_REG(i)); in adt7475_update_device()
1609 data->pwm[MIN][i] = adt7475_read(PWM_MIN_REG(i)); in adt7475_update_device()
1614 data->range[0] = adt7475_read(TEMP_TRANGE_REG(0)); in adt7475_update_device()
1615 data->range[1] = adt7475_read(TEMP_TRANGE_REG(1)); in adt7475_update_device()
1616 data->range[2] = adt7475_read(TEMP_TRANGE_REG(2)); in adt7475_update_device()
1618 data->limits_updated = jiffies; in adt7475_update_device()
1619 data->valid = 1; in adt7475_update_device()
1622 mutex_unlock(&data->lock); in adt7475_update_device()
1624 return data; in adt7475_update_device()