Lines Matching refs:data

392 /* Must be called with data->update_lock held, except during initialization */
395 struct w83795_data *data = i2c_get_clientdata(client);
399 if ((data->bank & 0x07) == bank)
403 bank |= data->bank & ~0x07;
411 data->bank = bank;
416 /* Must be called with data->update_lock held, except during initialization */
435 /* Must be called with data->update_lock held, except during initialization */
454 struct w83795_data *data = i2c_get_clientdata(client);
459 for (i = 0; i < ARRAY_SIZE(data->in); i++) {
460 if (!(data->has_in & (1 << i)))
462 data->in[i][IN_MAX] =
464 data->in[i][IN_LOW] =
467 for (i = 0; i < ARRAY_SIZE(data->in_lsb); i++) {
468 if ((i == 2 && data->chip_type == w83795adg) ||
469 (i >= 4 && !(data->has_in & (1 << (i + 11)))))
471 data->in_lsb[i][IN_MAX] =
473 data->in_lsb[i][IN_LOW] =
479 for (i = 0; i < ARRAY_SIZE(data->fan); i++) {
484 if ((i & 1) == 0 && (data->has_fan & (3 << i)))
487 if (!(data->has_fan & (1 << i)))
489 data->fan_min[i] =
491 data->fan_min[i] |=
496 for (i = 0; i < ARRAY_SIZE(data->temp); i++) {
497 if (!(data->has_temp & (1 << i)))
500 data->temp[i][limit] =
505 if (data->enable_dts) {
507 data->dts_ext[limit] =
512 if (data->enable_beep) {
513 for (i = 0; i < ARRAY_SIZE(data->beeps); i++)
514 data->beeps[i] =
518 data->valid_limits = 1;
524 struct w83795_data *data = i2c_get_clientdata(client);
527 mutex_lock(&data->update_lock);
529 if (data->valid_pwm_config)
533 for (i = 0; i < ARRAY_SIZE(data->temp_src); i++)
534 data->temp_src[i] = w83795_read(client, W83795_REG_TSS(i));
537 data->pwm_fcms[0] = w83795_read(client, W83795_REG_FCMS1);
538 data->pwm_fcms[1] = w83795_read(client, W83795_REG_FCMS2);
539 for (i = 0; i < ARRAY_SIZE(data->pwm_tfmr); i++)
540 data->pwm_tfmr[i] = w83795_read(client, W83795_REG_TFMR(i));
541 data->pwm_fomc = w83795_read(client, W83795_REG_FOMC);
542 for (i = 0; i < data->has_pwm; i++) {
544 data->pwm[i][tmp] =
547 for (i = 0; i < ARRAY_SIZE(data->target_speed); i++) {
548 data->target_speed[i] =
550 data->target_speed[i] |=
553 data->tol_speed = w83795_read(client, W83795_REG_TFTS) & 0x3f;
555 for (i = 0; i < ARRAY_SIZE(data->pwm_temp); i++) {
556 data->pwm_temp[i][TEMP_PWM_TTTI] =
558 data->pwm_temp[i][TEMP_PWM_CTFS] =
561 data->pwm_temp[i][TEMP_PWM_HCT] = tmp >> 4;
562 data->pwm_temp[i][TEMP_PWM_HOT] = tmp & 0x0f;
566 for (i = 0; i < ARRAY_SIZE(data->sf4_reg); i++) {
568 data->sf4_reg[i][SF4_TEMP][tmp] =
571 data->sf4_reg[i][SF4_PWM][tmp] =
577 for (i = 0; i < ARRAY_SIZE(data->setup_pwm); i++)
578 data->setup_pwm[i] =
581 data->valid_pwm_config = 1;
584 mutex_unlock(&data->update_lock);
585 return data;
591 struct w83795_data *data = i2c_get_clientdata(client);
596 mutex_lock(&data->update_lock);
598 if (!data->valid_limits)
601 if (!(time_after(jiffies, data->last_updated + HZ * 2)
602 || !data->valid))
606 for (i = 0; i < ARRAY_SIZE(data->in); i++) {
607 if (!(data->has_in & (1 << i)))
611 data->in[i][IN_READ] = tmp;
615 if (data->has_dyn_in) {
620 if (!(data->has_dyn_in & (1 << i)))
622 data->in[i][IN_MAX] =
624 data->in[i][IN_LOW] =
626 data->in_lsb[i][IN_MAX] = (lsb_max >> (2 * i)) & 0x03;
627 data->in_lsb[i][IN_LOW] = (lsb_low >> (2 * i)) & 0x03;
632 for (i = 0; i < ARRAY_SIZE(data->fan); i++) {
633 if (!(data->has_fan & (1 << i)))
635 data->fan[i] = w83795_read(client, W83795_REG_FAN(i)) << 4;
636 data->fan[i] |= w83795_read(client, W83795_REG_VRLSB) >> 4;
640 for (i = 0; i < ARRAY_SIZE(data->temp); i++) {
641 data->temp[i][TEMP_READ] =
643 data->temp_read_vrlsb[i] =
648 if (data->enable_dts) {
649 for (i = 0; i < ARRAY_SIZE(data->dts); i++) {
650 if (!(data->has_dts & (1 << i)))
652 data->dts[i] =
654 data->dts_read_vrlsb[i] =
660 for (i = 0; i < data->has_pwm; i++) {
661 data->pwm[i][PWM_OUTPUT] =
678 for (i = 0; i < ARRAY_SIZE(data->alarms); i++)
679 data->alarms[i] = w83795_read(client, W83795_REG_ALARM(i));
680 data->alarms[5] |= intrusion;
686 data->last_updated = jiffies;
687 data->valid = 1;
690 mutex_unlock(&data->update_lock);
691 return data;
703 struct w83795_data *data = w83795_update_device(dev);
712 val = (data->alarms[index] >> bit) & 1;
714 val = (data->beeps[index] >> bit) & 1;
724 struct w83795_data *data = i2c_get_clientdata(client);
737 mutex_lock(&data->update_lock);
738 data->beeps[index] = w83795_read(client, W83795_REG_BEEP(index));
739 data->beeps[index] &= ~beep_bit;
740 data->beeps[index] |= val << shift;
741 w83795_write(client, W83795_REG_BEEP(index), data->beeps[index]);
742 mutex_unlock(&data->update_lock);
754 struct w83795_data *data = i2c_get_clientdata(client);
760 mutex_lock(&data->update_lock);
767 data->valid = 0;
768 mutex_unlock(&data->update_lock);
781 struct w83795_data *data = w83795_update_device(dev);
785 val = data->fan[index] & 0x0fff;
787 val = data->fan_min[index] & 0x0fff;
800 struct w83795_data *data = i2c_get_clientdata(client);
807 mutex_lock(&data->update_lock);
808 data->fan_min[index] = val;
820 mutex_unlock(&data->update_lock);
828 struct w83795_data *data;
835 data = nr == PWM_OUTPUT ? w83795_update_device(dev)
840 val = time_from_reg(data->pwm[index][nr]);
843 val = pwm_freq_from_reg(data->pwm[index][nr], data->clkin);
846 val = data->pwm[index][nr];
858 struct w83795_data *data = i2c_get_clientdata(client);
868 mutex_lock(&data->update_lock);
874 val = pwm_freq_to_reg(val, data->clkin);
881 data->pwm[index][nr] = val;
882 mutex_unlock(&data->update_lock);
891 struct w83795_data *data = w83795_update_pwm_config(dev);
896 if (data->pwm_fcms[0] & (1 << index)) {
902 if (data->pwm_tfmr[tmp] & (1 << index)) {
919 struct w83795_data *data = w83795_update_pwm_config(dev);
939 mutex_lock(&data->update_lock);
943 data->pwm_fcms[0] &= ~(1 << index);
944 w83795_write(client, W83795_REG_FCMS1, data->pwm_fcms[0]);
947 data->pwm_tfmr[i] &= ~(1 << index);
949 data->pwm_tfmr[i]);
953 data->pwm_fcms[0] |= (1 << index);
954 w83795_write(client, W83795_REG_FCMS1, data->pwm_fcms[0]);
957 mutex_unlock(&data->update_lock);
964 struct w83795_data *data = w83795_update_pwm_config(dev);
968 if (data->pwm_fomc & (1 << index))
981 static int w83795_tss_useful(const struct w83795_data *data, int tsrc)
989 useful += (data->has_temp >> tss_map[i][tsrc]) & 1;
991 useful += (data->has_dts >> (tss_map[i][tsrc] - 6)) & 1;
1002 struct w83795_data *data = w83795_update_pwm_config(dev);
1004 u8 tmp = data->temp_src[index / 2];
1023 struct w83795_data *data = w83795_update_pwm_config(dev);
1043 mutex_lock(&data->update_lock);
1046 data->temp_src[val] &= 0x0f;
1048 data->temp_src[val] &= 0xf0;
1050 data->temp_src[val] |= tmp;
1051 w83795_write(client, W83795_REG_TSS(val), data->temp_src[val]);
1052 mutex_unlock(&data->update_lock);
1063 struct w83795_data *data = w83795_update_pwm_config(dev);
1072 tmp = (data->pwm_fcms[1] >> index) & 1;
1079 tmp = data->pwm_tfmr[index];
1091 struct w83795_data *data = w83795_update_pwm_config(dev);
1106 mutex_lock(&data->update_lock);
1107 data->pwm_fcms[1] &= ~(1 << index);
1108 data->pwm_fcms[1] |= tmp << index;
1109 w83795_write(client, W83795_REG_FCMS2, data->pwm_fcms[1]);
1110 mutex_unlock(&data->update_lock);
1113 mutex_lock(&data->update_lock);
1116 data->pwm_tfmr[index] = tmp;
1117 mutex_unlock(&data->update_lock);
1128 struct w83795_data *data = w83795_update_pwm_config(dev);
1137 tmp = fan_from_reg(data->target_speed[index]);
1140 tmp = data->tol_speed;
1152 struct w83795_data *data = i2c_get_clientdata(client);
1162 mutex_lock(&data->update_lock);
1168 data->target_speed[index] = val;
1173 data->tol_speed = val;
1176 mutex_unlock(&data->update_lock);
1185 struct w83795_data *data = w83795_update_pwm_config(dev);
1190 long tmp = temp_from_reg(data->pwm_temp[index][nr]);
1200 struct w83795_data *data = i2c_get_clientdata(client);
1212 mutex_lock(&data->update_lock);
1237 data->pwm_temp[index][nr] = val;
1238 mutex_unlock(&data->update_lock);
1246 struct w83795_data *data = w83795_update_pwm_config(dev);
1252 return sprintf(buf, "%u\n", data->sf4_reg[index][SF4_PWM][nr]);
1260 struct w83795_data *data = i2c_get_clientdata(client);
1270 mutex_lock(&data->update_lock);
1272 data->sf4_reg[index][SF4_PWM][nr] = val;
1273 mutex_unlock(&data->update_lock);
1281 struct w83795_data *data = w83795_update_pwm_config(dev);
1288 (data->sf4_reg[index][SF4_TEMP][nr]) * 1000);
1296 struct w83795_data *data = i2c_get_clientdata(client);
1307 mutex_lock(&data->update_lock);
1309 data->sf4_reg[index][SF4_TEMP][nr] = val;
1310 mutex_unlock(&data->update_lock);
1323 struct w83795_data *data = w83795_update_device(dev);
1324 long temp = temp_from_reg(data->temp[index][nr]);
1327 temp += (data->temp_read_vrlsb[index] >> 6) * 250;
1340 struct w83795_data *data = i2c_get_clientdata(client);
1346 mutex_lock(&data->update_lock);
1347 data->temp[index][nr] = temp_to_reg(tmp, -128, 127);
1348 w83795_write(client, W83795_REG_TEMP[index][nr], data->temp[index][nr]);
1349 mutex_unlock(&data->update_lock);
1357 struct w83795_data *data = dev_get_drvdata(dev);
1360 if (data->enable_dts & 2)
1374 struct w83795_data *data = w83795_update_device(dev);
1375 long temp = temp_from_reg(data->dts[index]);
1377 temp += (data->dts_read_vrlsb[index] >> 6) * 250;
1387 struct w83795_data *data = dev_get_drvdata(dev);
1388 long temp = temp_from_reg(data->dts_ext[nr]);
1401 struct w83795_data *data = i2c_get_clientdata(client);
1407 mutex_lock(&data->update_lock);
1408 data->dts_ext[nr] = temp_to_reg(tmp, -128, 127);
1409 w83795_write(client, W83795_REG_DTS_EXT(nr), data->dts_ext[nr]);
1410 mutex_unlock(&data->update_lock);
1418 struct w83795_data *data = dev_get_drvdata(dev);
1424 if (data->temp_mode & (1 << index))
1438 struct w83795_data *data = i2c_get_clientdata(client);
1451 mutex_lock(&data->update_lock);
1455 data->temp_mode |= 1 << index;
1459 data->temp_mode &= ~(1 << index);
1468 mutex_unlock(&data->update_lock);
1481 struct w83795_data *data = w83795_update_device(dev);
1482 u16 val = data->in[index][nr];
1489 !((data->has_gain >> (index - 17)) & 1))
1496 val |= (data->in_lsb[lsb_idx][nr] >>
1499 !((data->has_gain >> (index - 17)) & 1))
1517 struct w83795_data *data = i2c_get_clientdata(client);
1527 !((data->has_gain >> (index - 17)) & 1))
1530 mutex_lock(&data->update_lock);
1537 data->in_lsb[lsb_idx][nr] = tmp;
1541 data->in[index][nr] = tmp;
1543 mutex_unlock(&data->update_lock);
1555 struct w83795_data *data = w83795_update_pwm_config(dev);
1556 u16 val = data->setup_pwm[nr];
1576 struct w83795_data *data = i2c_get_clientdata(client);
1594 mutex_lock(&data->update_lock);
1595 data->setup_pwm[nr] = val;
1597 mutex_unlock(&data->update_lock);
1858 struct w83795_data *data = i2c_get_clientdata(client);
1875 data->clkin = clkin[(config >> 3) & 0x3];
1876 dev_dbg(&client->dev, "clkin = %u kHz\n", data->clkin);
1988 struct w83795_data *data = dev_get_drvdata(dev);
1992 if (!(data->has_in & (1 << i)))
1995 if (j == 4 && !data->enable_beep)
2004 if (!(data->has_fan & (1 << i)))
2007 if (j == 3 && !data->enable_beep)
2016 j = w83795_tss_useful(data, i);
2030 if (data->enable_beep) {
2038 for (i = 0; i < data->has_pwm; i++) {
2047 if (!(data->has_temp & (1 << i)))
2050 if (j == 7 && !data->enable_beep)
2058 if (data->enable_dts) {
2060 if (!(data->has_dts & (1 << i)))
2063 if (j == 7 && !data->enable_beep)
2085 struct w83795_data *data = i2c_get_clientdata(client);
2095 data->has_dyn_in = (vid_ctl >> 3) & 0x07;
2097 if (!(data->has_dyn_in & (1 << i)))
2118 static void w83795_apply_temp_config(struct w83795_data *data, u8 config,
2124 data->has_in |= 1 << in_chan;
2129 data->temp_mode |= 1 << temp_chan;
2132 data->has_temp |= 1 << temp_chan;
2144 struct w83795_data *data;
2147 data = devm_kzalloc(dev, sizeof(struct w83795_data), GFP_KERNEL);
2148 if (!data)
2151 i2c_set_clientdata(client, data);
2152 data->chip_type = i2c_match_id(w83795_id, client)->driver_data;
2153 data->bank = i2c_smbus_read_byte_data(client, W83795_REG_BANKSEL);
2154 mutex_init(&data->update_lock);
2160 data->has_in = w83795_read(client, W83795_REG_VOLT_CTRL1)
2162 data->has_fan = w83795_read(client, W83795_REG_FANIN_CTRL1)
2168 data->enable_dts = 1;
2169 w83795_apply_temp_config(data, (tmp >> 2) & 0x3, 5, 16);
2170 w83795_apply_temp_config(data, tmp & 0x3, 4, 15);
2172 w83795_apply_temp_config(data, tmp >> 6, 3, 20);
2173 w83795_apply_temp_config(data, (tmp >> 4) & 0x3, 2, 19);
2174 w83795_apply_temp_config(data, (tmp >> 2) & 0x3, 1, 18);
2175 w83795_apply_temp_config(data, tmp & 0x3, 0, 17);
2178 if (data->enable_dts) {
2180 data->enable_dts |= 2;
2181 data->has_dts = w83795_read(client, W83795_REG_DTSE);
2185 if (data->enable_dts == 1) {
2187 if (!(data->has_dts & (1 << i)))
2196 data->has_gain = w83795_read(client, W83795_REG_VMIGB_CTRL) & 0x0f;
2199 if (data->chip_type == w83795g)
2200 data->has_pwm = 8;
2202 data->has_pwm = 2;
2205 if (data->chip_type == w83795g) {
2207 data->enable_beep = 1;
2215 data->enable_beep = 1;
2222 if (data->chip_type == w83795g)
2225 data->hwmon_dev = hwmon_device_register(dev);
2226 if (IS_ERR(data->hwmon_dev)) {
2227 err = PTR_ERR(data->hwmon_dev);
2240 struct w83795_data *data = i2c_get_clientdata(client);
2242 hwmon_device_unregister(data->hwmon_dev);