Lines Matching refs:data

408 	struct w83795_data *data = i2c_get_clientdata(client);  in w83795_set_bank()  local
412 if ((data->bank & 0x07) == bank) in w83795_set_bank()
416 bank |= data->bank & ~0x07; in w83795_set_bank()
424 data->bank = bank; in w83795_set_bank()
467 struct w83795_data *data = i2c_get_clientdata(client); in w83795_update_limits() local
472 for (i = 0; i < ARRAY_SIZE(data->in); i++) { in w83795_update_limits()
473 if (!(data->has_in & (1 << i))) in w83795_update_limits()
475 data->in[i][IN_MAX] = in w83795_update_limits()
477 data->in[i][IN_LOW] = in w83795_update_limits()
480 for (i = 0; i < ARRAY_SIZE(data->in_lsb); i++) { in w83795_update_limits()
481 if ((i == 2 && data->chip_type == w83795adg) || in w83795_update_limits()
482 (i >= 4 && !(data->has_in & (1 << (i + 11))))) in w83795_update_limits()
484 data->in_lsb[i][IN_MAX] = in w83795_update_limits()
486 data->in_lsb[i][IN_LOW] = in w83795_update_limits()
492 for (i = 0; i < ARRAY_SIZE(data->fan); i++) { in w83795_update_limits()
497 if ((i & 1) == 0 && (data->has_fan & (3 << i))) in w83795_update_limits()
500 if (!(data->has_fan & (1 << i))) in w83795_update_limits()
502 data->fan_min[i] = in w83795_update_limits()
504 data->fan_min[i] |= in w83795_update_limits()
509 for (i = 0; i < ARRAY_SIZE(data->temp); i++) { in w83795_update_limits()
510 if (!(data->has_temp & (1 << i))) in w83795_update_limits()
513 data->temp[i][limit] = in w83795_update_limits()
518 if (data->enable_dts) { in w83795_update_limits()
520 data->dts_ext[limit] = in w83795_update_limits()
525 if (data->enable_beep) { in w83795_update_limits()
526 for (i = 0; i < ARRAY_SIZE(data->beeps); i++) in w83795_update_limits()
527 data->beeps[i] = in w83795_update_limits()
531 data->valid_limits = 1; in w83795_update_limits()
537 struct w83795_data *data = i2c_get_clientdata(client); in w83795_update_pwm_config() local
540 mutex_lock(&data->update_lock); in w83795_update_pwm_config()
542 if (data->valid_pwm_config) in w83795_update_pwm_config()
546 for (i = 0; i < ARRAY_SIZE(data->temp_src); i++) in w83795_update_pwm_config()
547 data->temp_src[i] = w83795_read(client, W83795_REG_TSS(i)); in w83795_update_pwm_config()
550 data->pwm_fcms[0] = w83795_read(client, W83795_REG_FCMS1); in w83795_update_pwm_config()
551 data->pwm_fcms[1] = w83795_read(client, W83795_REG_FCMS2); in w83795_update_pwm_config()
552 for (i = 0; i < ARRAY_SIZE(data->pwm_tfmr); i++) in w83795_update_pwm_config()
553 data->pwm_tfmr[i] = w83795_read(client, W83795_REG_TFMR(i)); in w83795_update_pwm_config()
554 data->pwm_fomc = w83795_read(client, W83795_REG_FOMC); in w83795_update_pwm_config()
555 for (i = 0; i < data->has_pwm; i++) { in w83795_update_pwm_config()
557 data->pwm[i][tmp] = in w83795_update_pwm_config()
560 for (i = 0; i < ARRAY_SIZE(data->target_speed); i++) { in w83795_update_pwm_config()
561 data->target_speed[i] = in w83795_update_pwm_config()
563 data->target_speed[i] |= in w83795_update_pwm_config()
566 data->tol_speed = w83795_read(client, W83795_REG_TFTS) & 0x3f; in w83795_update_pwm_config()
568 for (i = 0; i < ARRAY_SIZE(data->pwm_temp); i++) { in w83795_update_pwm_config()
569 data->pwm_temp[i][TEMP_PWM_TTTI] = in w83795_update_pwm_config()
571 data->pwm_temp[i][TEMP_PWM_CTFS] = in w83795_update_pwm_config()
574 data->pwm_temp[i][TEMP_PWM_HCT] = tmp >> 4; in w83795_update_pwm_config()
575 data->pwm_temp[i][TEMP_PWM_HOT] = tmp & 0x0f; in w83795_update_pwm_config()
579 for (i = 0; i < ARRAY_SIZE(data->sf4_reg); i++) { in w83795_update_pwm_config()
581 data->sf4_reg[i][SF4_TEMP][tmp] = in w83795_update_pwm_config()
584 data->sf4_reg[i][SF4_PWM][tmp] = in w83795_update_pwm_config()
590 for (i = 0; i < ARRAY_SIZE(data->setup_pwm); i++) in w83795_update_pwm_config()
591 data->setup_pwm[i] = in w83795_update_pwm_config()
594 data->valid_pwm_config = 1; in w83795_update_pwm_config()
597 mutex_unlock(&data->update_lock); in w83795_update_pwm_config()
598 return data; in w83795_update_pwm_config()
604 struct w83795_data *data = i2c_get_clientdata(client); in w83795_update_device() local
609 mutex_lock(&data->update_lock); in w83795_update_device()
611 if (!data->valid_limits) in w83795_update_device()
614 if (!(time_after(jiffies, data->last_updated + HZ * 2) in w83795_update_device()
615 || !data->valid)) in w83795_update_device()
619 for (i = 0; i < ARRAY_SIZE(data->in); i++) { in w83795_update_device()
620 if (!(data->has_in & (1 << i))) in w83795_update_device()
624 data->in[i][IN_READ] = tmp; in w83795_update_device()
628 if (data->has_dyn_in) { in w83795_update_device()
633 if (!(data->has_dyn_in & (1 << i))) in w83795_update_device()
635 data->in[i][IN_MAX] = in w83795_update_device()
637 data->in[i][IN_LOW] = in w83795_update_device()
639 data->in_lsb[i][IN_MAX] = (lsb_max >> (2 * i)) & 0x03; in w83795_update_device()
640 data->in_lsb[i][IN_LOW] = (lsb_low >> (2 * i)) & 0x03; in w83795_update_device()
645 for (i = 0; i < ARRAY_SIZE(data->fan); i++) { in w83795_update_device()
646 if (!(data->has_fan & (1 << i))) in w83795_update_device()
648 data->fan[i] = w83795_read(client, W83795_REG_FAN(i)) << 4; in w83795_update_device()
649 data->fan[i] |= w83795_read(client, W83795_REG_VRLSB) >> 4; in w83795_update_device()
653 for (i = 0; i < ARRAY_SIZE(data->temp); i++) { in w83795_update_device()
654 data->temp[i][TEMP_READ] = in w83795_update_device()
656 data->temp_read_vrlsb[i] = in w83795_update_device()
661 if (data->enable_dts) { in w83795_update_device()
662 for (i = 0; i < ARRAY_SIZE(data->dts); i++) { in w83795_update_device()
663 if (!(data->has_dts & (1 << i))) in w83795_update_device()
665 data->dts[i] = in w83795_update_device()
667 data->dts_read_vrlsb[i] = in w83795_update_device()
673 for (i = 0; i < data->has_pwm; i++) { in w83795_update_device()
674 data->pwm[i][PWM_OUTPUT] = in w83795_update_device()
691 for (i = 0; i < ARRAY_SIZE(data->alarms); i++) in w83795_update_device()
692 data->alarms[i] = w83795_read(client, W83795_REG_ALARM(i)); in w83795_update_device()
693 data->alarms[5] |= intrusion; in w83795_update_device()
699 data->last_updated = jiffies; in w83795_update_device()
700 data->valid = 1; in w83795_update_device()
703 mutex_unlock(&data->update_lock); in w83795_update_device()
704 return data; in w83795_update_device()
716 struct w83795_data *data = w83795_update_device(dev); in show_alarm_beep() local
725 val = (data->alarms[index] >> bit) & 1; in show_alarm_beep()
727 val = (data->beeps[index] >> bit) & 1; in show_alarm_beep()
737 struct w83795_data *data = i2c_get_clientdata(client); in store_beep() local
750 mutex_lock(&data->update_lock); in store_beep()
751 data->beeps[index] = w83795_read(client, W83795_REG_BEEP(index)); in store_beep()
752 data->beeps[index] &= ~beep_bit; in store_beep()
753 data->beeps[index] |= val << shift; in store_beep()
754 w83795_write(client, W83795_REG_BEEP(index), data->beeps[index]); in store_beep()
755 mutex_unlock(&data->update_lock); in store_beep()
767 struct w83795_data *data = i2c_get_clientdata(client); in store_chassis_clear() local
773 mutex_lock(&data->update_lock); in store_chassis_clear()
780 data->valid = 0; in store_chassis_clear()
781 mutex_unlock(&data->update_lock); in store_chassis_clear()
794 struct w83795_data *data = w83795_update_device(dev); in show_fan() local
798 val = data->fan[index] & 0x0fff; in show_fan()
800 val = data->fan_min[index] & 0x0fff; in show_fan()
813 struct w83795_data *data = i2c_get_clientdata(client); in store_fan_min() local
820 mutex_lock(&data->update_lock); in store_fan_min()
821 data->fan_min[index] = val; in store_fan_min()
833 mutex_unlock(&data->update_lock); in store_fan_min()
841 struct w83795_data *data; in show_pwm() local
848 data = nr == PWM_OUTPUT ? w83795_update_device(dev) in show_pwm()
853 val = time_from_reg(data->pwm[index][nr]); in show_pwm()
856 val = pwm_freq_from_reg(data->pwm[index][nr], data->clkin); in show_pwm()
859 val = data->pwm[index][nr]; in show_pwm()
871 struct w83795_data *data = i2c_get_clientdata(client); in store_pwm() local
881 mutex_lock(&data->update_lock); in store_pwm()
887 val = pwm_freq_to_reg(val, data->clkin); in store_pwm()
894 data->pwm[index][nr] = val; in store_pwm()
895 mutex_unlock(&data->update_lock); in store_pwm()
904 struct w83795_data *data = w83795_update_pwm_config(dev); in show_pwm_enable() local
909 if (data->pwm_fcms[0] & (1 << index)) { in show_pwm_enable()
915 if (data->pwm_tfmr[tmp] & (1 << index)) { in show_pwm_enable()
932 struct w83795_data *data = w83795_update_pwm_config(dev); in store_pwm_enable() local
952 mutex_lock(&data->update_lock); in store_pwm_enable()
956 data->pwm_fcms[0] &= ~(1 << index); in store_pwm_enable()
957 w83795_write(client, W83795_REG_FCMS1, data->pwm_fcms[0]); in store_pwm_enable()
960 data->pwm_tfmr[i] &= ~(1 << index); in store_pwm_enable()
962 data->pwm_tfmr[i]); in store_pwm_enable()
966 data->pwm_fcms[0] |= (1 << index); in store_pwm_enable()
967 w83795_write(client, W83795_REG_FCMS1, data->pwm_fcms[0]); in store_pwm_enable()
970 mutex_unlock(&data->update_lock); in store_pwm_enable()
977 struct w83795_data *data = w83795_update_pwm_config(dev); in show_pwm_mode() local
981 if (data->pwm_fomc & (1 << index)) in show_pwm_mode()
994 static int w83795_tss_useful(const struct w83795_data *data, int tsrc) in w83795_tss_useful() argument
1002 useful += (data->has_temp >> tss_map[i][tsrc]) & 1; in w83795_tss_useful()
1004 useful += (data->has_dts >> (tss_map[i][tsrc] - 6)) & 1; in w83795_tss_useful()
1015 struct w83795_data *data = w83795_update_pwm_config(dev); in show_temp_src() local
1017 u8 tmp = data->temp_src[index / 2]; in show_temp_src()
1036 struct w83795_data *data = w83795_update_pwm_config(dev); in store_temp_src() local
1056 mutex_lock(&data->update_lock); in store_temp_src()
1059 data->temp_src[val] &= 0x0f; in store_temp_src()
1061 data->temp_src[val] &= 0xf0; in store_temp_src()
1063 data->temp_src[val] |= tmp; in store_temp_src()
1064 w83795_write(client, W83795_REG_TSS(val), data->temp_src[val]); in store_temp_src()
1065 mutex_unlock(&data->update_lock); in store_temp_src()
1076 struct w83795_data *data = w83795_update_pwm_config(dev); in show_temp_pwm_enable() local
1085 tmp = (data->pwm_fcms[1] >> index) & 1; in show_temp_pwm_enable()
1092 tmp = data->pwm_tfmr[index]; in show_temp_pwm_enable()
1104 struct w83795_data *data = w83795_update_pwm_config(dev); in store_temp_pwm_enable() local
1119 mutex_lock(&data->update_lock); in store_temp_pwm_enable()
1120 data->pwm_fcms[1] &= ~(1 << index); in store_temp_pwm_enable()
1121 data->pwm_fcms[1] |= tmp << index; in store_temp_pwm_enable()
1122 w83795_write(client, W83795_REG_FCMS2, data->pwm_fcms[1]); in store_temp_pwm_enable()
1123 mutex_unlock(&data->update_lock); in store_temp_pwm_enable()
1126 mutex_lock(&data->update_lock); in store_temp_pwm_enable()
1129 data->pwm_tfmr[index] = tmp; in store_temp_pwm_enable()
1130 mutex_unlock(&data->update_lock); in store_temp_pwm_enable()
1141 struct w83795_data *data = w83795_update_pwm_config(dev); in show_fanin() local
1150 tmp = fan_from_reg(data->target_speed[index]); in show_fanin()
1153 tmp = data->tol_speed; in show_fanin()
1165 struct w83795_data *data = i2c_get_clientdata(client); in store_fanin() local
1175 mutex_lock(&data->update_lock); in store_fanin()
1181 data->target_speed[index] = val; in store_fanin()
1186 data->tol_speed = val; in store_fanin()
1189 mutex_unlock(&data->update_lock); in store_fanin()
1198 struct w83795_data *data = w83795_update_pwm_config(dev); in show_temp_pwm() local
1203 long tmp = temp_from_reg(data->pwm_temp[index][nr]); in show_temp_pwm()
1213 struct w83795_data *data = i2c_get_clientdata(client); in store_temp_pwm() local
1225 mutex_lock(&data->update_lock); in store_temp_pwm()
1250 data->pwm_temp[index][nr] = val; in store_temp_pwm()
1251 mutex_unlock(&data->update_lock); in store_temp_pwm()
1259 struct w83795_data *data = w83795_update_pwm_config(dev); in show_sf4_pwm() local
1265 return sprintf(buf, "%u\n", data->sf4_reg[index][SF4_PWM][nr]); in show_sf4_pwm()
1273 struct w83795_data *data = i2c_get_clientdata(client); in store_sf4_pwm() local
1283 mutex_lock(&data->update_lock); in store_sf4_pwm()
1285 data->sf4_reg[index][SF4_PWM][nr] = val; in store_sf4_pwm()
1286 mutex_unlock(&data->update_lock); in store_sf4_pwm()
1294 struct w83795_data *data = w83795_update_pwm_config(dev); in show_sf4_temp() local
1301 (data->sf4_reg[index][SF4_TEMP][nr]) * 1000); in show_sf4_temp()
1309 struct w83795_data *data = i2c_get_clientdata(client); in store_sf4_temp() local
1320 mutex_lock(&data->update_lock); in store_sf4_temp()
1322 data->sf4_reg[index][SF4_TEMP][nr] = val; in store_sf4_temp()
1323 mutex_unlock(&data->update_lock); in store_sf4_temp()
1336 struct w83795_data *data = w83795_update_device(dev); in show_temp() local
1337 long temp = temp_from_reg(data->temp[index][nr]); in show_temp()
1340 temp += (data->temp_read_vrlsb[index] >> 6) * 250; in show_temp()
1353 struct w83795_data *data = i2c_get_clientdata(client); in store_temp() local
1359 mutex_lock(&data->update_lock); in store_temp()
1360 data->temp[index][nr] = temp_to_reg(tmp, -128, 127); in store_temp()
1361 w83795_write(client, W83795_REG_TEMP[index][nr], data->temp[index][nr]); in store_temp()
1362 mutex_unlock(&data->update_lock); in store_temp()
1370 struct w83795_data *data = dev_get_drvdata(dev); in show_dts_mode() local
1373 if (data->enable_dts & 2) in show_dts_mode()
1387 struct w83795_data *data = w83795_update_device(dev); in show_dts() local
1388 long temp = temp_from_reg(data->dts[index]); in show_dts()
1390 temp += (data->dts_read_vrlsb[index] >> 6) * 250; in show_dts()
1400 struct w83795_data *data = dev_get_drvdata(dev); in show_dts_ext() local
1401 long temp = temp_from_reg(data->dts_ext[nr]); in show_dts_ext()
1414 struct w83795_data *data = i2c_get_clientdata(client); in store_dts_ext() local
1420 mutex_lock(&data->update_lock); in store_dts_ext()
1421 data->dts_ext[nr] = temp_to_reg(tmp, -128, 127); in store_dts_ext()
1422 w83795_write(client, W83795_REG_DTS_EXT(nr), data->dts_ext[nr]); in store_dts_ext()
1423 mutex_unlock(&data->update_lock); in store_dts_ext()
1431 struct w83795_data *data = dev_get_drvdata(dev); in show_temp_mode() local
1437 if (data->temp_mode & (1 << index)) in show_temp_mode()
1451 struct w83795_data *data = i2c_get_clientdata(client); in store_temp_mode() local
1464 mutex_lock(&data->update_lock); in store_temp_mode()
1468 data->temp_mode |= 1 << index; in store_temp_mode()
1472 data->temp_mode &= ~(1 << index); in store_temp_mode()
1481 mutex_unlock(&data->update_lock); in store_temp_mode()
1494 struct w83795_data *data = w83795_update_device(dev); in show_in() local
1495 u16 val = data->in[index][nr]; in show_in()
1502 !((data->has_gain >> (index - 17)) & 1)) in show_in()
1509 val |= (data->in_lsb[lsb_idx][nr] >> in show_in()
1512 !((data->has_gain >> (index - 17)) & 1)) in show_in()
1530 struct w83795_data *data = i2c_get_clientdata(client); in store_in() local
1540 !((data->has_gain >> (index - 17)) & 1)) in store_in()
1543 mutex_lock(&data->update_lock); in store_in()
1550 data->in_lsb[lsb_idx][nr] = tmp; in store_in()
1554 data->in[index][nr] = tmp; in store_in()
1556 mutex_unlock(&data->update_lock); in store_in()
1568 struct w83795_data *data = w83795_update_pwm_config(dev); in show_sf_setup() local
1569 u16 val = data->setup_pwm[nr]; in show_sf_setup()
1589 struct w83795_data *data = i2c_get_clientdata(client); in store_sf_setup() local
1607 mutex_lock(&data->update_lock); in store_sf_setup()
1608 data->setup_pwm[nr] = val; in store_sf_setup()
1610 mutex_unlock(&data->update_lock); in store_sf_setup()
1871 struct w83795_data *data = i2c_get_clientdata(client); in w83795_init_client() local
1888 data->clkin = clkin[(config >> 3) & 0x3]; in w83795_init_client()
1889 dev_dbg(&client->dev, "clkin = %u kHz\n", data->clkin); in w83795_init_client()
2001 struct w83795_data *data = dev_get_drvdata(dev); in w83795_handle_files() local
2005 if (!(data->has_in & (1 << i))) in w83795_handle_files()
2008 if (j == 4 && !data->enable_beep) in w83795_handle_files()
2017 if (!(data->has_fan & (1 << i))) in w83795_handle_files()
2020 if (j == 3 && !data->enable_beep) in w83795_handle_files()
2029 j = w83795_tss_useful(data, i); in w83795_handle_files()
2043 if (data->enable_beep) { in w83795_handle_files()
2051 for (i = 0; i < data->has_pwm; i++) { in w83795_handle_files()
2060 if (!(data->has_temp & (1 << i))) in w83795_handle_files()
2063 if (j == 7 && !data->enable_beep) in w83795_handle_files()
2071 if (data->enable_dts) { in w83795_handle_files()
2073 if (!(data->has_dts & (1 << i))) in w83795_handle_files()
2076 if (j == 7 && !data->enable_beep) in w83795_handle_files()
2098 struct w83795_data *data = i2c_get_clientdata(client); in w83795_check_dynamic_in_limits() local
2108 data->has_dyn_in = (vid_ctl >> 3) & 0x07; in w83795_check_dynamic_in_limits()
2110 if (!(data->has_dyn_in & (1 << i))) in w83795_check_dynamic_in_limits()
2131 static void w83795_apply_temp_config(struct w83795_data *data, u8 config, in w83795_apply_temp_config() argument
2137 data->has_in |= 1 << in_chan; in w83795_apply_temp_config()
2142 data->temp_mode |= 1 << temp_chan; in w83795_apply_temp_config()
2145 data->has_temp |= 1 << temp_chan; in w83795_apply_temp_config()
2156 struct w83795_data *data; in w83795_probe() local
2159 data = devm_kzalloc(dev, sizeof(struct w83795_data), GFP_KERNEL); in w83795_probe()
2160 if (!data) in w83795_probe()
2163 i2c_set_clientdata(client, data); in w83795_probe()
2164 data->chip_type = id->driver_data; in w83795_probe()
2165 data->bank = i2c_smbus_read_byte_data(client, W83795_REG_BANKSEL); in w83795_probe()
2166 mutex_init(&data->update_lock); in w83795_probe()
2172 data->has_in = w83795_read(client, W83795_REG_VOLT_CTRL1) in w83795_probe()
2174 data->has_fan = w83795_read(client, W83795_REG_FANIN_CTRL1) in w83795_probe()
2180 data->enable_dts = 1; in w83795_probe()
2181 w83795_apply_temp_config(data, (tmp >> 2) & 0x3, 5, 16); in w83795_probe()
2182 w83795_apply_temp_config(data, tmp & 0x3, 4, 15); in w83795_probe()
2184 w83795_apply_temp_config(data, tmp >> 6, 3, 20); in w83795_probe()
2185 w83795_apply_temp_config(data, (tmp >> 4) & 0x3, 2, 19); in w83795_probe()
2186 w83795_apply_temp_config(data, (tmp >> 2) & 0x3, 1, 18); in w83795_probe()
2187 w83795_apply_temp_config(data, tmp & 0x3, 0, 17); in w83795_probe()
2190 if (data->enable_dts) { in w83795_probe()
2192 data->enable_dts |= 2; in w83795_probe()
2193 data->has_dts = w83795_read(client, W83795_REG_DTSE); in w83795_probe()
2197 if (data->enable_dts == 1) { in w83795_probe()
2199 if (!(data->has_dts & (1 << i))) in w83795_probe()
2208 data->has_gain = w83795_read(client, W83795_REG_VMIGB_CTRL) & 0x0f; in w83795_probe()
2211 if (data->chip_type == w83795g) in w83795_probe()
2212 data->has_pwm = 8; in w83795_probe()
2214 data->has_pwm = 2; in w83795_probe()
2217 if (data->chip_type == w83795g) { in w83795_probe()
2219 data->enable_beep = 1; in w83795_probe()
2227 data->enable_beep = 1; in w83795_probe()
2234 if (data->chip_type == w83795g) in w83795_probe()
2237 data->hwmon_dev = hwmon_device_register(dev); in w83795_probe()
2238 if (IS_ERR(data->hwmon_dev)) { in w83795_probe()
2239 err = PTR_ERR(data->hwmon_dev); in w83795_probe()
2252 struct w83795_data *data = i2c_get_clientdata(client); in w83795_remove() local
2254 hwmon_device_unregister(data->hwmon_dev); in w83795_remove()