Lines Matching refs:wblock
115 struct wmi_block *wblock; in find_guid() local
121 list_for_each_entry(wblock, &wmi_block_list, list) { in find_guid()
122 block = &wblock->gblock; in find_guid()
126 *out = wblock; in find_guid()
133 static const void *find_guid_context(struct wmi_block *wblock, in find_guid_context() argument
139 if (wblock == NULL || wdriver == NULL) in find_guid_context()
148 if (!memcmp(wblock->gblock.guid, &guid_input, 16)) in find_guid_context()
179 static acpi_status wmi_method_enable(struct wmi_block *wblock, int enable) in wmi_method_enable() argument
186 block = &wblock->gblock; in wmi_method_enable()
187 handle = wblock->acpi_device->handle; in wmi_method_enable()
211 struct wmi_block *wblock; in set_required_buffer_size() local
213 wblock = container_of(wdev, struct wmi_block, dev); in set_required_buffer_size()
214 wblock->req_buf_size = length; in set_required_buffer_size()
233 struct wmi_block *wblock = NULL; in wmi_evaluate_method() local
235 if (!find_guid(guid_string, &wblock)) in wmi_evaluate_method()
237 return wmidev_evaluate_method(&wblock->dev, instance, method_id, in wmi_evaluate_method()
256 struct wmi_block *wblock = NULL; in wmidev_evaluate_method() local
263 wblock = container_of(wdev, struct wmi_block, dev); in wmidev_evaluate_method()
264 block = &wblock->gblock; in wmidev_evaluate_method()
265 handle = wblock->acpi_device->handle; in wmidev_evaluate_method()
300 static acpi_status __query_block(struct wmi_block *wblock, u8 instance, in __query_block() argument
314 block = &wblock->gblock; in __query_block()
315 handle = wblock->acpi_device->handle; in __query_block()
329 if (instance == 0 && wblock->read_takes_no_args) in __query_block()
381 struct wmi_block *wblock; in wmi_query_block() local
386 if (!find_guid(guid_string, &wblock)) in wmi_query_block()
389 return __query_block(wblock, instance, out); in wmi_query_block()
396 struct wmi_block *wblock = container_of(wdev, struct wmi_block, dev); in wmidev_block_query() local
398 if (ACPI_FAILURE(__query_block(wblock, instance, &out))) in wmidev_block_query()
417 struct wmi_block *wblock = NULL; in wmi_set_block() local
426 if (!find_guid(guid_string, &wblock)) in wmi_set_block()
429 block = &wblock->gblock; in wmi_set_block()
430 handle = wblock->acpi_device->handle; in wmi_set_block()
619 struct wmi_block *wblock; in wmi_get_event_data() local
626 list_for_each_entry(wblock, &wmi_block_list, list) { in wmi_get_event_data()
627 gblock = &wblock->gblock; in wmi_get_event_data()
631 return acpi_evaluate_object(wblock->acpi_device->handle, in wmi_get_event_data()
661 struct wmi_block *wblock = NULL; in wmi_get_acpi_device_uid() local
663 if (!find_guid(guid_string, &wblock)) in wmi_get_acpi_device_uid()
666 return acpi_device_uid(wblock->acpi_device); in wmi_get_acpi_device_uid()
686 struct wmi_block *wblock = dev_to_wblock(dev); in modalias_show() local
688 return sprintf(buf, "wmi:%pUL\n", wblock->gblock.guid); in modalias_show()
695 struct wmi_block *wblock = dev_to_wblock(dev); in guid_show() local
697 return sprintf(buf, "%pUL\n", wblock->gblock.guid); in guid_show()
704 struct wmi_block *wblock = dev_to_wblock(dev); in instance_count_show() local
706 return sprintf(buf, "%d\n", (int)wblock->gblock.instance_count); in instance_count_show()
713 struct wmi_block *wblock = dev_to_wblock(dev); in expensive_show() local
716 (wblock->gblock.flags & ACPI_WMI_EXPENSIVE) != 0); in expensive_show()
732 struct wmi_block *wblock = dev_to_wblock(dev); in notify_id_show() local
734 return sprintf(buf, "%02X\n", (unsigned int)wblock->gblock.notify_id); in notify_id_show()
747 struct wmi_block *wblock = dev_to_wblock(dev); in object_id_show() local
749 return sprintf(buf, "%c%c\n", wblock->gblock.object_id[0], in object_id_show()
750 wblock->gblock.object_id[1]); in object_id_show()
778 struct wmi_block *wblock = dev_to_wblock(dev); in wmi_dev_uevent() local
780 if (add_uevent_var(env, "MODALIAS=wmi:%pUL", wblock->gblock.guid)) in wmi_dev_uevent()
783 if (add_uevent_var(env, "WMI_GUID=%pUL", wblock->gblock.guid)) in wmi_dev_uevent()
791 struct wmi_block *wblock = dev_to_wblock(dev); in wmi_dev_release() local
793 kfree(wblock); in wmi_dev_release()
800 struct wmi_block *wblock = dev_to_wblock(dev); in wmi_dev_match() local
811 if (!memcmp(&driver_guid, wblock->gblock.guid, 16)) in wmi_dev_match()
822 struct wmi_block *wblock = NULL; in wmi_char_open() local
825 list_for_each_entry_safe(wblock, next, &wmi_block_list, list) { in wmi_char_open()
826 if (!wblock->dev.dev.driver) in wmi_char_open()
828 if (strcmp(driver_name, wblock->dev.dev.driver->name) == 0) { in wmi_char_open()
829 filp->private_data = wblock; in wmi_char_open()
843 struct wmi_block *wblock = filp->private_data; in wmi_char_read() local
846 &wblock->req_buf_size, in wmi_char_read()
847 sizeof(wblock->req_buf_size)); in wmi_char_read()
854 struct wmi_block *wblock = filp->private_data; in wmi_ioctl() local
863 if (_IOC_NR(cmd) >= wblock->gblock.instance_count) in wmi_ioctl()
866 mutex_lock(&wblock->char_mutex); in wmi_ioctl()
867 buf = wblock->handler_data; in wmi_ioctl()
869 dev_dbg(&wblock->dev.dev, "Read length from user failed\n"); in wmi_ioctl()
874 if (buf->length < wblock->req_buf_size) { in wmi_ioctl()
875 dev_err(&wblock->dev.dev, in wmi_ioctl()
877 buf->length, wblock->req_buf_size); in wmi_ioctl()
882 if (buf->length > wblock->req_buf_size) in wmi_ioctl()
883 dev_warn(&wblock->dev.dev, in wmi_ioctl()
885 buf->length, wblock->req_buf_size); in wmi_ioctl()
888 if (copy_from_user(buf, input, wblock->req_buf_size)) { in wmi_ioctl()
889 dev_dbg(&wblock->dev.dev, "Copy %llu from user failed\n", in wmi_ioctl()
890 wblock->req_buf_size); in wmi_ioctl()
896 wdriver = container_of(wblock->dev.dev.driver, in wmi_ioctl()
902 ret = wdriver->filter_callback(&wblock->dev, cmd, buf); in wmi_ioctl()
908 if (copy_to_user(input, buf, wblock->req_buf_size)) { in wmi_ioctl()
909 dev_dbg(&wblock->dev.dev, "Copy %llu to user failed\n", in wmi_ioctl()
910 wblock->req_buf_size); in wmi_ioctl()
915 mutex_unlock(&wblock->char_mutex); in wmi_ioctl()
929 struct wmi_block *wblock = dev_to_wblock(dev); in wmi_dev_probe() local
935 if (ACPI_FAILURE(wmi_method_enable(wblock, 1))) in wmi_dev_probe()
940 find_guid_context(wblock, wdriver)); in wmi_dev_probe()
948 if (!wblock->req_buf_size) { in wmi_dev_probe()
949 dev_err(&wblock->dev.dev, in wmi_dev_probe()
955 wblock->handler_data = kmalloc(wblock->req_buf_size, in wmi_dev_probe()
957 if (!wblock->handler_data) { in wmi_dev_probe()
967 wblock->char_dev.minor = MISC_DYNAMIC_MINOR; in wmi_dev_probe()
968 wblock->char_dev.name = buf; in wmi_dev_probe()
969 wblock->char_dev.fops = &wmi_fops; in wmi_dev_probe()
970 wblock->char_dev.mode = 0444; in wmi_dev_probe()
971 ret = misc_register(&wblock->char_dev); in wmi_dev_probe()
984 kfree(wblock->handler_data); in wmi_dev_probe()
986 if (ACPI_FAILURE(wmi_method_enable(wblock, 0))) in wmi_dev_probe()
993 struct wmi_block *wblock = dev_to_wblock(dev); in wmi_dev_remove() local
999 misc_deregister(&wblock->char_dev); in wmi_dev_remove()
1000 kfree(wblock->char_dev.name); in wmi_dev_remove()
1001 kfree(wblock->handler_data); in wmi_dev_remove()
1007 if (ACPI_FAILURE(wmi_method_enable(wblock, 0))) in wmi_dev_remove()
1046 struct wmi_block *wblock, in wmi_create_device() argument
1054 wblock->dev.dev.type = &wmi_type_event; in wmi_create_device()
1059 wblock->dev.dev.type = &wmi_type_method; in wmi_create_device()
1060 mutex_init(&wblock->char_mutex); in wmi_create_device()
1070 strncat(method, wblock->gblock.object_id, 2); in wmi_create_device()
1080 wblock->dev.dev.type = &wmi_type_data; in wmi_create_device()
1093 wblock->read_takes_no_args = true; in wmi_create_device()
1098 strncat(method, wblock->gblock.object_id, 2); in wmi_create_device()
1102 wblock->dev.setable = true; in wmi_create_device()
1105 wblock->dev.dev.bus = &wmi_bus_type; in wmi_create_device()
1106 wblock->dev.dev.parent = wmi_bus_dev; in wmi_create_device()
1108 dev_set_name(&wblock->dev.dev, "%pUL", gblock->guid); in wmi_create_device()
1110 device_initialize(&wblock->dev.dev); in wmi_create_device()
1117 struct wmi_block *wblock, *next; in wmi_free_devices() local
1120 list_for_each_entry_safe(wblock, next, &wmi_block_list, list) { in wmi_free_devices()
1121 if (wblock->acpi_device == device) { in wmi_free_devices()
1122 list_del(&wblock->list); in wmi_free_devices()
1123 device_unregister(&wblock->dev.dev); in wmi_free_devices()
1130 struct wmi_block *wblock; in guid_already_parsed() local
1132 list_for_each_entry(wblock, &wmi_block_list, list) { in guid_already_parsed()
1133 if (memcmp(wblock->gblock.guid, guid, 16) == 0) { in guid_already_parsed()
1141 guid, dev_name(&wblock->acpi_device->dev)); in guid_already_parsed()
1156 struct wmi_block *wblock, *next; in parse_wdg() local
1191 wblock = kzalloc(sizeof(struct wmi_block), GFP_KERNEL); in parse_wdg()
1192 if (!wblock) { in parse_wdg()
1197 wblock->acpi_device = device; in parse_wdg()
1198 wblock->gblock = gblock[i]; in parse_wdg()
1200 retval = wmi_create_device(wmi_bus_dev, &gblock[i], wblock, device); in parse_wdg()
1202 kfree(wblock); in parse_wdg()
1206 list_add_tail(&wblock->list, &wmi_block_list); in parse_wdg()
1209 wblock->handler = wmi_notify_debug; in parse_wdg()
1210 wmi_method_enable(wblock, 1); in parse_wdg()
1218 list_for_each_entry_safe(wblock, next, &wmi_block_list, list) { in parse_wdg()
1219 if (wblock->acpi_device != device) in parse_wdg()
1222 retval = device_add(&wblock->dev.dev); in parse_wdg()
1225 wblock->gblock.guid); in parse_wdg()
1227 wmi_method_enable(wblock, 0); in parse_wdg()
1228 list_del(&wblock->list); in parse_wdg()
1229 put_device(&wblock->dev.dev); in parse_wdg()
1286 struct wmi_block *wblock; in acpi_wmi_notify_handler() local
1289 list_for_each_entry(wblock, &wmi_block_list, list) { in acpi_wmi_notify_handler()
1290 block = &wblock->gblock; in acpi_wmi_notify_handler()
1292 if (wblock->acpi_device->handle == handle && in acpi_wmi_notify_handler()
1305 if (wblock->dev.dev.driver) { in acpi_wmi_notify_handler()
1312 driver = container_of(wblock->dev.dev.driver, in acpi_wmi_notify_handler()
1320 status = acpi_evaluate_object(wblock->acpi_device->handle, in acpi_wmi_notify_handler()
1323 dev_warn(&wblock->dev.dev, in acpi_wmi_notify_handler()
1329 driver->notify(&wblock->dev, in acpi_wmi_notify_handler()
1333 } else if (wblock->handler) { in acpi_wmi_notify_handler()
1335 wblock->handler(event, wblock->handler_data); in acpi_wmi_notify_handler()
1339 pr_info("DEBUG Event GUID: %pUL\n", wblock->gblock.guid); in acpi_wmi_notify_handler()
1342 wblock->acpi_device->pnp.device_class, in acpi_wmi_notify_handler()
1343 dev_name(&wblock->dev.dev), in acpi_wmi_notify_handler()