Lines Matching refs:data

326 	struct fschmd_data *data = container_of(ref, struct fschmd_data, kref);  in fschmd_release_resources()  local
327 kfree(data); in fschmd_release_resources()
339 struct fschmd_data *data = fschmd_update_device(dev); in show_in_value() local
341 if (data->kind == fscher || data->kind >= fschrc) in show_in_value()
342 return sprintf(buf, "%d\n", (data->volt[index] * dmi_vref * in show_in_value()
345 return sprintf(buf, "%d\n", (data->volt[index] * in show_in_value()
356 struct fschmd_data *data = fschmd_update_device(dev); in show_temp_value() local
358 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp_act[index])); in show_temp_value()
365 struct fschmd_data *data = fschmd_update_device(dev); in show_temp_max() local
367 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp_max[index])); in show_temp_max()
374 struct fschmd_data *data = dev_get_drvdata(dev); in store_temp_max() local
384 mutex_lock(&data->update_lock); in store_temp_max()
386 FSCHMD_REG_TEMP_LIMIT[data->kind][index], v); in store_temp_max()
387 data->temp_max[index] = v; in store_temp_max()
388 mutex_unlock(&data->update_lock); in store_temp_max()
397 struct fschmd_data *data = fschmd_update_device(dev); in show_temp_fault() local
400 if (data->temp_status[index] & FSCHMD_TEMP_WORKING) in show_temp_fault()
410 struct fschmd_data *data = fschmd_update_device(dev); in show_temp_alarm() local
412 if ((data->temp_status[index] & FSCHMD_TEMP_ALARM_MASK) == in show_temp_alarm()
426 struct fschmd_data *data = fschmd_update_device(dev); in show_fan_value() local
428 return sprintf(buf, "%u\n", RPM_FROM_REG(data->fan_act[index])); in show_fan_value()
435 struct fschmd_data *data = fschmd_update_device(dev); in show_fan_div() local
438 return sprintf(buf, "%d\n", 1 << (data->fan_ripple[index] & 3)); in show_fan_div()
446 struct fschmd_data *data = dev_get_drvdata(dev); in store_fan_div() local
472 mutex_lock(&data->update_lock); in store_fan_div()
475 FSCHMD_REG_FAN_RIPPLE[data->kind][index]); in store_fan_div()
482 FSCHMD_REG_FAN_RIPPLE[data->kind][index], reg); in store_fan_div()
484 data->fan_ripple[index] = reg; in store_fan_div()
486 mutex_unlock(&data->update_lock); in store_fan_div()
495 struct fschmd_data *data = fschmd_update_device(dev); in show_fan_alarm() local
497 if (data->fan_status[index] & FSCHMD_FAN_ALARM) in show_fan_alarm()
507 struct fschmd_data *data = fschmd_update_device(dev); in show_fan_fault() local
509 if (data->fan_status[index] & FSCHMD_FAN_NOT_PRESENT) in show_fan_fault()
520 struct fschmd_data *data = fschmd_update_device(dev); in show_pwm_auto_point1_pwm() local
521 int val = data->fan_min[index]; in show_pwm_auto_point1_pwm()
524 if (val || data->kind == fscsyl) in show_pwm_auto_point1_pwm()
534 struct fschmd_data *data = dev_get_drvdata(dev); in store_pwm_auto_point1_pwm() local
543 if (v || data->kind == fscsyl) { in store_pwm_auto_point1_pwm()
548 mutex_lock(&data->update_lock); in store_pwm_auto_point1_pwm()
551 FSCHMD_REG_FAN_MIN[data->kind][index], v); in store_pwm_auto_point1_pwm()
552 data->fan_min[index] = v; in store_pwm_auto_point1_pwm()
554 mutex_unlock(&data->update_lock); in store_pwm_auto_point1_pwm()
567 struct fschmd_data *data = fschmd_update_device(dev); in show_alert_led() local
569 if (data->global_control & FSCHMD_CONTROL_ALERT_LED) in show_alert_led()
579 struct fschmd_data *data = dev_get_drvdata(dev); in store_alert_led() local
587 mutex_lock(&data->update_lock); in store_alert_led()
598 data->global_control = reg; in store_alert_led()
600 mutex_unlock(&data->update_lock); in store_alert_led()
713 static int watchdog_set_timeout(struct fschmd_data *data, int timeout) in watchdog_set_timeout() argument
716 int kind = data->kind + 1; /* 0-x array index -> 1-x module param */ in watchdog_set_timeout()
727 mutex_lock(&data->watchdog_lock); in watchdog_set_timeout()
728 if (!data->client) { in watchdog_set_timeout()
734 data->watchdog_control &= ~FSCHMD_WDOG_CONTROL_RESOLUTION; in watchdog_set_timeout()
736 data->watchdog_control |= FSCHMD_WDOG_CONTROL_RESOLUTION; in watchdog_set_timeout()
738 data->watchdog_preset = DIV_ROUND_UP(timeout, resolution); in watchdog_set_timeout()
741 i2c_smbus_write_byte_data(data->client, in watchdog_set_timeout()
742 FSCHMD_REG_WDOG_PRESET[data->kind], data->watchdog_preset); in watchdog_set_timeout()
744 i2c_smbus_write_byte_data(data->client, in watchdog_set_timeout()
745 FSCHMD_REG_WDOG_CONTROL[data->kind], in watchdog_set_timeout()
746 data->watchdog_control & ~FSCHMD_WDOG_CONTROL_TRIGGER); in watchdog_set_timeout()
748 ret = data->watchdog_preset * resolution; in watchdog_set_timeout()
751 mutex_unlock(&data->watchdog_lock); in watchdog_set_timeout()
755 static int watchdog_get_timeout(struct fschmd_data *data) in watchdog_get_timeout() argument
759 mutex_lock(&data->watchdog_lock); in watchdog_get_timeout()
760 if (data->watchdog_control & FSCHMD_WDOG_CONTROL_RESOLUTION) in watchdog_get_timeout()
761 timeout = data->watchdog_preset * 60; in watchdog_get_timeout()
763 timeout = data->watchdog_preset * 2; in watchdog_get_timeout()
764 mutex_unlock(&data->watchdog_lock); in watchdog_get_timeout()
769 static int watchdog_trigger(struct fschmd_data *data) in watchdog_trigger() argument
773 mutex_lock(&data->watchdog_lock); in watchdog_trigger()
774 if (!data->client) { in watchdog_trigger()
779 data->watchdog_control |= FSCHMD_WDOG_CONTROL_TRIGGER; in watchdog_trigger()
780 i2c_smbus_write_byte_data(data->client, in watchdog_trigger()
781 FSCHMD_REG_WDOG_CONTROL[data->kind], in watchdog_trigger()
782 data->watchdog_control); in watchdog_trigger()
784 mutex_unlock(&data->watchdog_lock); in watchdog_trigger()
788 static int watchdog_stop(struct fschmd_data *data) in watchdog_stop() argument
792 mutex_lock(&data->watchdog_lock); in watchdog_stop()
793 if (!data->client) { in watchdog_stop()
798 data->watchdog_control &= ~FSCHMD_WDOG_CONTROL_STARTED; in watchdog_stop()
803 i2c_smbus_write_byte_data(data->client, in watchdog_stop()
804 FSCHMD_REG_WDOG_CONTROL[data->kind], in watchdog_stop()
805 data->watchdog_control | FSCHMD_WDOG_CONTROL_STOP); in watchdog_stop()
807 mutex_unlock(&data->watchdog_lock); in watchdog_stop()
813 struct fschmd_data *pos, *data = NULL; in watchdog_open() local
826 data = pos; in watchdog_open()
831 watchdog_is_open = test_and_set_bit(0, &data->watchdog_is_open); in watchdog_open()
833 kref_get(&data->kref); in watchdog_open()
840 watchdog_trigger(data); in watchdog_open()
841 filp->private_data = data; in watchdog_open()
848 struct fschmd_data *data = filp->private_data; in watchdog_release() local
850 if (data->watchdog_expect_close) { in watchdog_release()
851 watchdog_stop(data); in watchdog_release()
852 data->watchdog_expect_close = 0; in watchdog_release()
854 watchdog_trigger(data); in watchdog_release()
855 dev_crit(&data->client->dev, in watchdog_release()
859 clear_bit(0, &data->watchdog_is_open); in watchdog_release()
862 kref_put(&data->kref, fschmd_release_resources); in watchdog_release()
872 struct fschmd_data *data = filp->private_data; in watchdog_write() local
879 data->watchdog_expect_close = 0; in watchdog_write()
886 data->watchdog_expect_close = 1; in watchdog_write()
889 ret = watchdog_trigger(data); in watchdog_write()
905 struct fschmd_data *data = filp->private_data; in watchdog_ioctl() local
909 ident.firmware_version = data->revision; in watchdog_ioctl()
921 if (data->watchdog_state & FSCHMD_WDOG_STATE_CARDRESET) in watchdog_ioctl()
928 ret = watchdog_trigger(data); in watchdog_ioctl()
932 i = watchdog_get_timeout(data); in watchdog_ioctl()
941 ret = watchdog_set_timeout(data, i); in watchdog_ioctl()
953 ret = watchdog_stop(data); in watchdog_ioctl()
955 ret = watchdog_trigger(data); in watchdog_ioctl()
1102 struct fschmd_data *data; in fschmd_probe() local
1109 data = kzalloc(sizeof(struct fschmd_data), GFP_KERNEL); in fschmd_probe()
1110 if (!data) in fschmd_probe()
1113 i2c_set_clientdata(client, data); in fschmd_probe()
1114 mutex_init(&data->update_lock); in fschmd_probe()
1115 mutex_init(&data->watchdog_lock); in fschmd_probe()
1116 INIT_LIST_HEAD(&data->list); in fschmd_probe()
1117 kref_init(&data->kref); in fschmd_probe()
1123 data->client = client; in fschmd_probe()
1124 data->kind = kind; in fschmd_probe()
1131 data->temp_max[0] = 70 + 128; in fschmd_probe()
1132 data->temp_max[1] = 50 + 128; in fschmd_probe()
1133 data->temp_max[2] = 50 + 128; in fschmd_probe()
1148 data->revision = i2c_smbus_read_byte_data(client, FSCHMD_REG_REVISION); in fschmd_probe()
1149 data->global_control = i2c_smbus_read_byte_data(client, in fschmd_probe()
1151 data->watchdog_control = i2c_smbus_read_byte_data(client, in fschmd_probe()
1152 FSCHMD_REG_WDOG_CONTROL[data->kind]); in fschmd_probe()
1153 data->watchdog_state = i2c_smbus_read_byte_data(client, in fschmd_probe()
1154 FSCHMD_REG_WDOG_STATE[data->kind]); in fschmd_probe()
1155 data->watchdog_preset = i2c_smbus_read_byte_data(client, in fschmd_probe()
1156 FSCHMD_REG_WDOG_PRESET[data->kind]); in fschmd_probe()
1162 for (i = 0; i < FSCHMD_NO_VOLT_SENSORS[data->kind]; i++) { in fschmd_probe()
1169 for (i = 0; i < (FSCHMD_NO_TEMP_SENSORS[data->kind] * 4); i++) { in fschmd_probe()
1177 data->temp_status[i / 4] = in fschmd_probe()
1180 [data->kind][i / 4]); in fschmd_probe()
1181 if (data->temp_status[i / 4] & FSCHMD_TEMP_DISABLED) in fschmd_probe()
1191 for (i = 0; i < (FSCHMD_NO_FAN_SENSORS[data->kind] * 5); i++) { in fschmd_probe()
1200 data->fan_status[i / 5] = in fschmd_probe()
1203 [data->kind][i / 5]); in fschmd_probe()
1204 if (data->fan_status[i / 5] & FSCHMD_FAN_DISABLED) in fschmd_probe()
1214 data->hwmon_dev = hwmon_device_register(&client->dev); in fschmd_probe()
1215 if (IS_ERR(data->hwmon_dev)) { in fschmd_probe()
1216 err = PTR_ERR(data->hwmon_dev); in fschmd_probe()
1217 data->hwmon_dev = NULL; in fschmd_probe()
1229 snprintf(data->watchdog_name, sizeof(data->watchdog_name), in fschmd_probe()
1231 data->watchdog_miscdev.name = data->watchdog_name; in fschmd_probe()
1232 data->watchdog_miscdev.fops = &watchdog_fops; in fschmd_probe()
1233 data->watchdog_miscdev.minor = watchdog_minors[i]; in fschmd_probe()
1234 err = misc_register(&data->watchdog_miscdev); in fschmd_probe()
1238 data->watchdog_miscdev.minor = 0; in fschmd_probe()
1244 list_add(&data->list, &watchdog_data_list); in fschmd_probe()
1245 watchdog_set_timeout(data, 60); in fschmd_probe()
1252 data->watchdog_miscdev.minor = 0; in fschmd_probe()
1259 names[data->kind], (int) data->revision); in fschmd_probe()
1270 struct fschmd_data *data = i2c_get_clientdata(client); in fschmd_remove() local
1274 if (data->watchdog_miscdev.minor) { in fschmd_remove()
1275 misc_deregister(&data->watchdog_miscdev); in fschmd_remove()
1276 if (data->watchdog_is_open) { in fschmd_remove()
1280 watchdog_stop(data); in fschmd_remove()
1283 list_del(&data->list); in fschmd_remove()
1286 mutex_lock(&data->watchdog_lock); in fschmd_remove()
1287 data->client = NULL; in fschmd_remove()
1288 mutex_unlock(&data->watchdog_lock); in fschmd_remove()
1295 if (data->hwmon_dev) in fschmd_remove()
1296 hwmon_device_unregister(data->hwmon_dev); in fschmd_remove()
1299 for (i = 0; i < (FSCHMD_NO_VOLT_SENSORS[data->kind]); i++) in fschmd_remove()
1301 for (i = 0; i < (FSCHMD_NO_TEMP_SENSORS[data->kind] * 4); i++) in fschmd_remove()
1304 for (i = 0; i < (FSCHMD_NO_FAN_SENSORS[data->kind] * 5); i++) in fschmd_remove()
1309 kref_put(&data->kref, fschmd_release_resources); in fschmd_remove()
1318 struct fschmd_data *data = i2c_get_clientdata(client); in fschmd_update_device() local
1321 mutex_lock(&data->update_lock); in fschmd_update_device()
1323 if (time_after(jiffies, data->last_updated + 2 * HZ) || !data->valid) { in fschmd_update_device()
1325 for (i = 0; i < FSCHMD_NO_TEMP_SENSORS[data->kind]; i++) { in fschmd_update_device()
1326 data->temp_act[i] = i2c_smbus_read_byte_data(client, in fschmd_update_device()
1327 FSCHMD_REG_TEMP_ACT[data->kind][i]); in fschmd_update_device()
1328 data->temp_status[i] = i2c_smbus_read_byte_data(client, in fschmd_update_device()
1329 FSCHMD_REG_TEMP_STATE[data->kind][i]); in fschmd_update_device()
1332 if (FSCHMD_REG_TEMP_LIMIT[data->kind][i]) in fschmd_update_device()
1333 data->temp_max[i] = i2c_smbus_read_byte_data( in fschmd_update_device()
1335 FSCHMD_REG_TEMP_LIMIT[data->kind][i]); in fschmd_update_device()
1341 if ((data->temp_status[i] & FSCHMD_TEMP_ALARM_MASK) == in fschmd_update_device()
1343 data->temp_act[i] < data->temp_max[i]) in fschmd_update_device()
1345 FSCHMD_REG_TEMP_STATE[data->kind][i], in fschmd_update_device()
1346 data->temp_status[i]); in fschmd_update_device()
1349 for (i = 0; i < FSCHMD_NO_FAN_SENSORS[data->kind]; i++) { in fschmd_update_device()
1350 data->fan_act[i] = i2c_smbus_read_byte_data(client, in fschmd_update_device()
1351 FSCHMD_REG_FAN_ACT[data->kind][i]); in fschmd_update_device()
1352 data->fan_status[i] = i2c_smbus_read_byte_data(client, in fschmd_update_device()
1353 FSCHMD_REG_FAN_STATE[data->kind][i]); in fschmd_update_device()
1354 data->fan_ripple[i] = i2c_smbus_read_byte_data(client, in fschmd_update_device()
1355 FSCHMD_REG_FAN_RIPPLE[data->kind][i]); in fschmd_update_device()
1358 if (FSCHMD_REG_FAN_MIN[data->kind][i]) in fschmd_update_device()
1359 data->fan_min[i] = i2c_smbus_read_byte_data( in fschmd_update_device()
1361 FSCHMD_REG_FAN_MIN[data->kind][i]); in fschmd_update_device()
1364 if ((data->fan_status[i] & FSCHMD_FAN_ALARM) && in fschmd_update_device()
1365 data->fan_act[i]) in fschmd_update_device()
1367 FSCHMD_REG_FAN_STATE[data->kind][i], in fschmd_update_device()
1368 data->fan_status[i]); in fschmd_update_device()
1371 for (i = 0; i < FSCHMD_NO_VOLT_SENSORS[data->kind]; i++) in fschmd_update_device()
1372 data->volt[i] = i2c_smbus_read_byte_data(client, in fschmd_update_device()
1373 FSCHMD_REG_VOLT[data->kind][i]); in fschmd_update_device()
1375 data->last_updated = jiffies; in fschmd_update_device()
1376 data->valid = 1; in fschmd_update_device()
1379 mutex_unlock(&data->update_lock); in fschmd_update_device()
1381 return data; in fschmd_update_device()