Lines Matching refs:data

149 	struct atk_data *data;  member
177 u8 data[]; member
189 static void atk_print_sensor(struct atk_data *data, union acpi_object *obj);
191 static void atk_free_sensors(struct atk_data *data);
284 static union acpi_object *atk_get_pack_member(struct atk_data *data, in atk_get_pack_member() argument
288 bool old_if = data->old_interface; in atk_get_pack_member()
334 static int validate_hwmon_pack(struct atk_data *data, union acpi_object *obj) in validate_hwmon_pack() argument
336 struct device *dev = &data->acpi_dev->dev; in validate_hwmon_pack()
338 bool old_if = data->old_interface; in validate_hwmon_pack()
353 tmp = atk_get_pack_member(data, obj, HWMON_PACK_FLAGS); in validate_hwmon_pack()
359 tmp = atk_get_pack_member(data, obj, HWMON_PACK_NAME); in validate_hwmon_pack()
380 tmp = atk_get_pack_member(data, obj, HWMON_PACK_LIMIT1); in validate_hwmon_pack()
386 tmp = atk_get_pack_member(data, obj, HWMON_PACK_LIMIT2); in validate_hwmon_pack()
392 tmp = atk_get_pack_member(data, obj, HWMON_PACK_ENABLE); in validate_hwmon_pack()
398 atk_print_sensor(data, obj); in validate_hwmon_pack()
428 static void atk_print_sensor(struct atk_data *data, union acpi_object *obj) in atk_print_sensor() argument
431 struct device *dev = &data->acpi_dev->dev; in atk_print_sensor()
439 flags = atk_get_pack_member(data, obj, HWMON_PACK_FLAGS); in atk_print_sensor()
440 name = atk_get_pack_member(data, obj, HWMON_PACK_NAME); in atk_print_sensor()
441 limit1 = atk_get_pack_member(data, obj, HWMON_PACK_LIMIT1); in atk_print_sensor()
442 limit2 = atk_get_pack_member(data, obj, HWMON_PACK_LIMIT2); in atk_print_sensor()
443 enable = atk_get_pack_member(data, obj, HWMON_PACK_ENABLE); in atk_print_sensor()
457 struct atk_data *data = sensor->data; in atk_read_value_old() local
458 struct device *dev = &data->acpi_dev->dev; in atk_read_value_old()
466 method = data->rvlt_handle; in atk_read_value_old()
469 method = data->rtmp_handle; in atk_read_value_old()
472 method = data->rfan_handle; in atk_read_value_old()
494 static union acpi_object *atk_ggrp(struct atk_data *data, u16 mux) in atk_ggrp() argument
496 struct device *dev = &data->acpi_dev->dev; in atk_ggrp()
509 ret = acpi_evaluate_object(data->enumerate_handle, NULL, &params, &buf); in atk_ggrp()
530 static union acpi_object *atk_gitm(struct atk_data *data, u64 id) in atk_gitm() argument
532 struct device *dev = &data->acpi_dev->dev; in atk_gitm()
552 status = acpi_evaluate_object_typed(data->read_handle, NULL, &params, in atk_gitm()
571 static union acpi_object *atk_sitm(struct atk_data *data, in atk_sitm() argument
574 struct device *dev = &data->acpi_dev->dev; in atk_sitm()
589 status = acpi_evaluate_object_typed(data->write_handle, NULL, &params, in atk_sitm()
610 struct atk_data *data = sensor->data; in atk_read_value_new() local
611 struct device *dev = &data->acpi_dev->dev; in atk_read_value_new()
616 obj = atk_gitm(data, sensor->id); in atk_read_value_new()
644 if (sensor->data->old_interface) in atk_read_value()
663 struct atk_data *data = p; in atk_debugfs_gitm_get() local
668 if (!data->read_handle) in atk_debugfs_gitm_get()
671 if (!data->debugfs.id) in atk_debugfs_gitm_get()
674 ret = atk_gitm(data, data->debugfs.id); in atk_debugfs_gitm_get()
727 struct atk_data *data = inode->i_private; in atk_debugfs_ggrp_open() local
733 if (!data->enumerate_handle) in atk_debugfs_ggrp_open()
735 if (!data->debugfs.id) in atk_debugfs_ggrp_open()
738 cls = (data->debugfs.id & 0xff000000) >> 24; in atk_debugfs_ggrp_open()
739 ret = atk_ggrp(data, cls); in atk_debugfs_ggrp_open()
752 if (id->integer.value == data->debugfs.id) { in atk_debugfs_ggrp_open()
795 static void atk_debugfs_init(struct atk_data *data) in atk_debugfs_init() argument
800 data->debugfs.id = 0; in atk_debugfs_init()
806 f = debugfs_create_x32("id", S_IRUSR | S_IWUSR, d, &data->debugfs.id); in atk_debugfs_init()
810 f = debugfs_create_file("gitm", S_IRUSR, d, data, in atk_debugfs_init()
815 f = debugfs_create_file("ggrp", S_IRUSR, d, data, in atk_debugfs_init()
820 data->debugfs.root = d; in atk_debugfs_init()
827 static void atk_debugfs_cleanup(struct atk_data *data) in atk_debugfs_cleanup() argument
829 debugfs_remove_recursive(data->debugfs.root); in atk_debugfs_cleanup()
834 static void atk_debugfs_init(struct atk_data *data) in atk_debugfs_init() argument
838 static void atk_debugfs_cleanup(struct atk_data *data) in atk_debugfs_cleanup() argument
843 static int atk_add_sensor(struct atk_data *data, union acpi_object *obj) in atk_add_sensor() argument
845 struct device *dev = &data->acpi_dev->dev; in atk_add_sensor()
867 err = validate_hwmon_pack(data, obj); in atk_add_sensor()
872 type = atk_get_pack_member(data, obj, HWMON_PACK_FLAGS)->integer.value in atk_add_sensor()
880 num = &data->voltage_count; in atk_add_sensor()
887 num = &data->temperature_count; in atk_add_sensor()
894 num = &data->fan_count; in atk_add_sensor()
902 enable = atk_get_pack_member(data, obj, HWMON_PACK_ENABLE); in atk_add_sensor()
907 flags = atk_get_pack_member(data, obj, HWMON_PACK_FLAGS); in atk_add_sensor()
908 name = atk_get_pack_member(data, obj, HWMON_PACK_NAME); in atk_add_sensor()
909 limit1 = atk_get_pack_member(data, obj, HWMON_PACK_LIMIT1); in atk_add_sensor()
910 limit2 = atk_get_pack_member(data, obj, HWMON_PACK_LIMIT2); in atk_add_sensor()
924 sensor->data = data; in atk_add_sensor()
927 if (data->old_interface) in atk_add_sensor()
957 list_add(&sensor->list, &data->sensor_list); in atk_add_sensor()
966 static int atk_enumerate_old_hwmon(struct atk_data *data) in atk_enumerate_old_hwmon() argument
968 struct device *dev = &data->acpi_dev->dev; in atk_enumerate_old_hwmon()
977 status = acpi_evaluate_object_typed(data->atk_handle, in atk_enumerate_old_hwmon()
990 ret = atk_add_sensor(data, obj); in atk_enumerate_old_hwmon()
998 status = acpi_evaluate_object_typed(data->atk_handle, in atk_enumerate_old_hwmon()
1012 ret = atk_add_sensor(data, obj); in atk_enumerate_old_hwmon()
1020 status = acpi_evaluate_object_typed(data->atk_handle, in atk_enumerate_old_hwmon()
1034 ret = atk_add_sensor(data, obj); in atk_enumerate_old_hwmon()
1042 atk_free_sensors(data); in atk_enumerate_old_hwmon()
1046 static int atk_ec_present(struct atk_data *data) in atk_ec_present() argument
1048 struct device *dev = &data->acpi_dev->dev; in atk_ec_present()
1054 pack = atk_ggrp(data, ATK_MUX_MGMT); in atk_ec_present()
1092 static int atk_ec_enabled(struct atk_data *data) in atk_ec_enabled() argument
1094 struct device *dev = &data->acpi_dev->dev; in atk_ec_enabled()
1099 obj = atk_gitm(data, ATK_EC_ID); in atk_ec_enabled()
1119 static int atk_ec_ctl(struct atk_data *data, int enable) in atk_ec_ctl() argument
1121 struct device *dev = &data->acpi_dev->dev; in atk_ec_ctl()
1131 obj = atk_sitm(data, &sitm); in atk_ec_ctl()
1151 static int atk_enumerate_new_hwmon(struct atk_data *data) in atk_enumerate_new_hwmon() argument
1153 struct device *dev = &data->acpi_dev->dev; in atk_enumerate_new_hwmon()
1158 err = atk_ec_present(data); in atk_enumerate_new_hwmon()
1162 err = atk_ec_enabled(data); in atk_enumerate_new_hwmon()
1166 data->disable_ec = err; in atk_enumerate_new_hwmon()
1168 err = atk_ec_ctl(data, 1); in atk_enumerate_new_hwmon()
1170 data->disable_ec = false; in atk_enumerate_new_hwmon()
1177 pack = atk_ggrp(data, ATK_MUX_HWMON); in atk_enumerate_new_hwmon()
1184 atk_add_sensor(data, obj); in atk_enumerate_new_hwmon()
1187 err = data->voltage_count + data->temperature_count + data->fan_count; in atk_enumerate_new_hwmon()
1193 static int atk_create_files(struct atk_data *data) in atk_create_files() argument
1198 list_for_each_entry(s, &data->sensor_list, list) { in atk_create_files()
1199 err = device_create_file(data->hwmon_dev, &s->input_attr); in atk_create_files()
1202 err = device_create_file(data->hwmon_dev, &s->label_attr); in atk_create_files()
1205 err = device_create_file(data->hwmon_dev, &s->limit1_attr); in atk_create_files()
1208 err = device_create_file(data->hwmon_dev, &s->limit2_attr); in atk_create_files()
1213 err = device_create_file(data->hwmon_dev, &atk_name_attr); in atk_create_files()
1218 static void atk_remove_files(struct atk_data *data) in atk_remove_files() argument
1222 list_for_each_entry(s, &data->sensor_list, list) { in atk_remove_files()
1223 device_remove_file(data->hwmon_dev, &s->input_attr); in atk_remove_files()
1224 device_remove_file(data->hwmon_dev, &s->label_attr); in atk_remove_files()
1225 device_remove_file(data->hwmon_dev, &s->limit1_attr); in atk_remove_files()
1226 device_remove_file(data->hwmon_dev, &s->limit2_attr); in atk_remove_files()
1228 device_remove_file(data->hwmon_dev, &atk_name_attr); in atk_remove_files()
1231 static void atk_free_sensors(struct atk_data *data) in atk_free_sensors() argument
1233 struct list_head *head = &data->sensor_list; in atk_free_sensors()
1242 static int atk_register_hwmon(struct atk_data *data) in atk_register_hwmon() argument
1244 struct device *dev = &data->acpi_dev->dev; in atk_register_hwmon()
1248 data->hwmon_dev = hwmon_device_register(dev); in atk_register_hwmon()
1249 if (IS_ERR(data->hwmon_dev)) in atk_register_hwmon()
1250 return PTR_ERR(data->hwmon_dev); in atk_register_hwmon()
1253 err = atk_create_files(data); in atk_register_hwmon()
1260 atk_remove_files(data); in atk_register_hwmon()
1261 hwmon_device_unregister(data->hwmon_dev); in atk_register_hwmon()
1265 static int atk_probe_if(struct atk_data *data) in atk_probe_if() argument
1267 struct device *dev = &data->acpi_dev->dev; in atk_probe_if()
1273 status = acpi_get_handle(data->atk_handle, METHOD_OLD_READ_TMP, &ret); in atk_probe_if()
1275 data->rtmp_handle = ret; in atk_probe_if()
1281 status = acpi_get_handle(data->atk_handle, METHOD_OLD_READ_VLT, &ret); in atk_probe_if()
1283 data->rvlt_handle = ret; in atk_probe_if()
1289 status = acpi_get_handle(data->atk_handle, METHOD_OLD_READ_FAN, &ret); in atk_probe_if()
1291 data->rfan_handle = ret; in atk_probe_if()
1297 status = acpi_get_handle(data->atk_handle, METHOD_ENUMERATE, &ret); in atk_probe_if()
1299 data->enumerate_handle = ret; in atk_probe_if()
1305 status = acpi_get_handle(data->atk_handle, METHOD_READ, &ret); in atk_probe_if()
1307 data->read_handle = ret; in atk_probe_if()
1313 status = acpi_get_handle(data->atk_handle, METHOD_WRITE, &ret); in atk_probe_if()
1315 data->write_handle = ret; in atk_probe_if()
1328 if (data->rtmp_handle && in atk_probe_if()
1329 data->rvlt_handle && data->rfan_handle && !new_if) in atk_probe_if()
1330 data->old_interface = true; in atk_probe_if()
1331 else if (data->enumerate_handle && data->read_handle && in atk_probe_if()
1332 data->write_handle) in atk_probe_if()
1333 data->old_interface = false; in atk_probe_if()
1346 struct atk_data *data; in atk_add() local
1350 data = kzalloc(sizeof(*data), GFP_KERNEL); in atk_add()
1351 if (!data) in atk_add()
1354 data->acpi_dev = device; in atk_add()
1355 data->atk_handle = device->handle; in atk_add()
1356 INIT_LIST_HEAD(&data->sensor_list); in atk_add()
1357 data->disable_ec = false; in atk_add()
1360 ret = acpi_evaluate_object_typed(data->atk_handle, BOARD_ID, NULL, in atk_add()
1375 err = atk_probe_if(data); in atk_add()
1381 if (data->old_interface) { in atk_add()
1383 err = atk_enumerate_old_hwmon(data); in atk_add()
1386 err = atk_enumerate_new_hwmon(data); in atk_add()
1397 err = atk_register_hwmon(data); in atk_add()
1401 atk_debugfs_init(data); in atk_add()
1403 device->driver_data = data; in atk_add()
1406 atk_free_sensors(data); in atk_add()
1408 if (data->disable_ec) in atk_add()
1409 atk_ec_ctl(data, 0); in atk_add()
1410 kfree(data); in atk_add()
1416 struct atk_data *data = device->driver_data; in atk_remove() local
1421 atk_debugfs_cleanup(data); in atk_remove()
1423 atk_remove_files(data); in atk_remove()
1424 atk_free_sensors(data); in atk_remove()
1425 hwmon_device_unregister(data->hwmon_dev); in atk_remove()
1427 if (data->disable_ec) { in atk_remove()
1428 if (atk_ec_ctl(data, 0)) in atk_remove()
1432 kfree(data); in atk_remove()