Lines Matching refs:wblock

114 	struct wmi_block *wblock;  in find_guid()  local
120 list_for_each_entry(wblock, &wmi_block_list, list) { in find_guid()
121 block = &wblock->gblock; in find_guid()
125 *out = wblock; in find_guid()
132 static const void *find_guid_context(struct wmi_block *wblock, in find_guid_context() argument
138 if (wblock == NULL || wdriver == NULL) in find_guid_context()
147 if (!memcmp(wblock->gblock.guid, &guid_input, 16)) in find_guid_context()
178 static acpi_status wmi_method_enable(struct wmi_block *wblock, int enable) in wmi_method_enable() argument
185 block = &wblock->gblock; in wmi_method_enable()
186 handle = wblock->acpi_device->handle; in wmi_method_enable()
210 struct wmi_block *wblock; in set_required_buffer_size() local
212 wblock = container_of(wdev, struct wmi_block, dev); in set_required_buffer_size()
213 wblock->req_buf_size = length; in set_required_buffer_size()
232 struct wmi_block *wblock = NULL; in wmi_evaluate_method() local
234 if (!find_guid(guid_string, &wblock)) in wmi_evaluate_method()
236 return wmidev_evaluate_method(&wblock->dev, instance, method_id, in wmi_evaluate_method()
255 struct wmi_block *wblock = NULL; in wmidev_evaluate_method() local
262 wblock = container_of(wdev, struct wmi_block, dev); in wmidev_evaluate_method()
263 block = &wblock->gblock; in wmidev_evaluate_method()
264 handle = wblock->acpi_device->handle; in wmidev_evaluate_method()
299 static acpi_status __query_block(struct wmi_block *wblock, u8 instance, in __query_block() argument
313 block = &wblock->gblock; in __query_block()
314 handle = wblock->acpi_device->handle; in __query_block()
328 if (instance == 0 && wblock->read_takes_no_args) in __query_block()
373 struct wmi_block *wblock; in wmi_query_block() local
378 if (!find_guid(guid_string, &wblock)) in wmi_query_block()
381 return __query_block(wblock, instance, out); in wmi_query_block()
388 struct wmi_block *wblock = container_of(wdev, struct wmi_block, dev); in wmidev_block_query() local
390 if (ACPI_FAILURE(__query_block(wblock, instance, &out))) in wmidev_block_query()
409 struct wmi_block *wblock = NULL; in wmi_set_block() local
418 if (!find_guid(guid_string, &wblock)) in wmi_set_block()
421 block = &wblock->gblock; in wmi_set_block()
422 handle = wblock->acpi_device->handle; in wmi_set_block()
609 struct wmi_block *wblock; in wmi_get_event_data() local
616 list_for_each_entry(wblock, &wmi_block_list, list) { in wmi_get_event_data()
617 gblock = &wblock->gblock; in wmi_get_event_data()
621 return acpi_evaluate_object(wblock->acpi_device->handle, in wmi_get_event_data()
651 struct wmi_block *wblock = NULL; in wmi_get_acpi_device_uid() local
653 if (!find_guid(guid_string, &wblock)) in wmi_get_acpi_device_uid()
656 return acpi_device_uid(wblock->acpi_device); in wmi_get_acpi_device_uid()
676 struct wmi_block *wblock = dev_to_wblock(dev); in modalias_show() local
678 return sprintf(buf, "wmi:%pUL\n", wblock->gblock.guid); in modalias_show()
685 struct wmi_block *wblock = dev_to_wblock(dev); in guid_show() local
687 return sprintf(buf, "%pUL\n", wblock->gblock.guid); in guid_show()
694 struct wmi_block *wblock = dev_to_wblock(dev); in instance_count_show() local
696 return sprintf(buf, "%d\n", (int)wblock->gblock.instance_count); in instance_count_show()
703 struct wmi_block *wblock = dev_to_wblock(dev); in expensive_show() local
706 (wblock->gblock.flags & ACPI_WMI_EXPENSIVE) != 0); in expensive_show()
722 struct wmi_block *wblock = dev_to_wblock(dev); in notify_id_show() local
724 return sprintf(buf, "%02X\n", (unsigned int)wblock->gblock.notify_id); in notify_id_show()
737 struct wmi_block *wblock = dev_to_wblock(dev); in object_id_show() local
739 return sprintf(buf, "%c%c\n", wblock->gblock.object_id[0], in object_id_show()
740 wblock->gblock.object_id[1]); in object_id_show()
768 struct wmi_block *wblock = dev_to_wblock(dev); in wmi_dev_uevent() local
770 if (add_uevent_var(env, "MODALIAS=wmi:%pUL", wblock->gblock.guid)) in wmi_dev_uevent()
773 if (add_uevent_var(env, "WMI_GUID=%pUL", wblock->gblock.guid)) in wmi_dev_uevent()
781 struct wmi_block *wblock = dev_to_wblock(dev); in wmi_dev_release() local
783 kfree(wblock); in wmi_dev_release()
790 struct wmi_block *wblock = dev_to_wblock(dev); in wmi_dev_match() local
801 if (!memcmp(&driver_guid, wblock->gblock.guid, 16)) in wmi_dev_match()
812 struct wmi_block *wblock = NULL; in wmi_char_open() local
815 list_for_each_entry_safe(wblock, next, &wmi_block_list, list) { in wmi_char_open()
816 if (!wblock->dev.dev.driver) in wmi_char_open()
818 if (strcmp(driver_name, wblock->dev.dev.driver->name) == 0) { in wmi_char_open()
819 filp->private_data = wblock; in wmi_char_open()
833 struct wmi_block *wblock = filp->private_data; in wmi_char_read() local
836 &wblock->req_buf_size, in wmi_char_read()
837 sizeof(wblock->req_buf_size)); in wmi_char_read()
844 struct wmi_block *wblock = filp->private_data; in wmi_ioctl() local
853 if (_IOC_NR(cmd) >= wblock->gblock.instance_count) in wmi_ioctl()
856 mutex_lock(&wblock->char_mutex); in wmi_ioctl()
857 buf = wblock->handler_data; in wmi_ioctl()
859 dev_dbg(&wblock->dev.dev, "Read length from user failed\n"); in wmi_ioctl()
864 if (buf->length < wblock->req_buf_size) { in wmi_ioctl()
865 dev_err(&wblock->dev.dev, in wmi_ioctl()
867 buf->length, wblock->req_buf_size); in wmi_ioctl()
872 if (buf->length > wblock->req_buf_size) in wmi_ioctl()
873 dev_warn(&wblock->dev.dev, in wmi_ioctl()
875 buf->length, wblock->req_buf_size); in wmi_ioctl()
878 if (copy_from_user(buf, input, wblock->req_buf_size)) { in wmi_ioctl()
879 dev_dbg(&wblock->dev.dev, "Copy %llu from user failed\n", in wmi_ioctl()
880 wblock->req_buf_size); in wmi_ioctl()
886 wdriver = container_of(wblock->dev.dev.driver, in wmi_ioctl()
892 ret = wdriver->filter_callback(&wblock->dev, cmd, buf); in wmi_ioctl()
898 if (copy_to_user(input, buf, wblock->req_buf_size)) { in wmi_ioctl()
899 dev_dbg(&wblock->dev.dev, "Copy %llu to user failed\n", in wmi_ioctl()
900 wblock->req_buf_size); in wmi_ioctl()
905 mutex_unlock(&wblock->char_mutex); in wmi_ioctl()
919 struct wmi_block *wblock = dev_to_wblock(dev); in wmi_dev_probe() local
925 if (ACPI_FAILURE(wmi_method_enable(wblock, 1))) in wmi_dev_probe()
930 find_guid_context(wblock, wdriver)); in wmi_dev_probe()
938 if (!wblock->req_buf_size) { in wmi_dev_probe()
939 dev_err(&wblock->dev.dev, in wmi_dev_probe()
945 wblock->handler_data = kmalloc(wblock->req_buf_size, in wmi_dev_probe()
947 if (!wblock->handler_data) { in wmi_dev_probe()
957 wblock->char_dev.minor = MISC_DYNAMIC_MINOR; in wmi_dev_probe()
958 wblock->char_dev.name = buf; in wmi_dev_probe()
959 wblock->char_dev.fops = &wmi_fops; in wmi_dev_probe()
960 wblock->char_dev.mode = 0444; in wmi_dev_probe()
961 ret = misc_register(&wblock->char_dev); in wmi_dev_probe()
974 kfree(wblock->handler_data); in wmi_dev_probe()
976 if (ACPI_FAILURE(wmi_method_enable(wblock, 0))) in wmi_dev_probe()
983 struct wmi_block *wblock = dev_to_wblock(dev); in wmi_dev_remove() local
989 misc_deregister(&wblock->char_dev); in wmi_dev_remove()
990 kfree(wblock->char_dev.name); in wmi_dev_remove()
991 kfree(wblock->handler_data); in wmi_dev_remove()
997 if (ACPI_FAILURE(wmi_method_enable(wblock, 0))) in wmi_dev_remove()
1036 struct wmi_block *wblock, in wmi_create_device() argument
1044 wblock->dev.dev.type = &wmi_type_event; in wmi_create_device()
1049 wblock->dev.dev.type = &wmi_type_method; in wmi_create_device()
1050 mutex_init(&wblock->char_mutex); in wmi_create_device()
1060 strncat(method, wblock->gblock.object_id, 2); in wmi_create_device()
1070 wblock->dev.dev.type = &wmi_type_data; in wmi_create_device()
1083 wblock->read_takes_no_args = true; in wmi_create_device()
1088 strncat(method, wblock->gblock.object_id, 2); in wmi_create_device()
1092 wblock->dev.setable = true; in wmi_create_device()
1095 wblock->dev.dev.bus = &wmi_bus_type; in wmi_create_device()
1096 wblock->dev.dev.parent = wmi_bus_dev; in wmi_create_device()
1098 dev_set_name(&wblock->dev.dev, "%pUL", gblock->guid); in wmi_create_device()
1100 device_initialize(&wblock->dev.dev); in wmi_create_device()
1107 struct wmi_block *wblock, *next; in wmi_free_devices() local
1110 list_for_each_entry_safe(wblock, next, &wmi_block_list, list) { in wmi_free_devices()
1111 if (wblock->acpi_device == device) { in wmi_free_devices()
1112 list_del(&wblock->list); in wmi_free_devices()
1113 device_unregister(&wblock->dev.dev); in wmi_free_devices()
1121 struct wmi_block *wblock; in guid_already_parsed() local
1123 list_for_each_entry(wblock, &wmi_block_list, list) { in guid_already_parsed()
1124 if (memcmp(wblock->gblock.guid, guid, 16) == 0) { in guid_already_parsed()
1132 guid, dev_name(&wblock->acpi_device->dev)); in guid_already_parsed()
1147 struct wmi_block *wblock, *next; in parse_wdg() local
1182 wblock = kzalloc(sizeof(struct wmi_block), GFP_KERNEL); in parse_wdg()
1183 if (!wblock) { in parse_wdg()
1188 wblock->acpi_device = device; in parse_wdg()
1189 wblock->gblock = gblock[i]; in parse_wdg()
1191 retval = wmi_create_device(wmi_bus_dev, &gblock[i], wblock, device); in parse_wdg()
1193 kfree(wblock); in parse_wdg()
1197 list_add_tail(&wblock->list, &wmi_block_list); in parse_wdg()
1200 wblock->handler = wmi_notify_debug; in parse_wdg()
1201 wmi_method_enable(wblock, 1); in parse_wdg()
1209 list_for_each_entry_safe(wblock, next, &wmi_block_list, list) { in parse_wdg()
1210 if (wblock->acpi_device != device) in parse_wdg()
1213 retval = device_add(&wblock->dev.dev); in parse_wdg()
1216 wblock->gblock.guid); in parse_wdg()
1218 wmi_method_enable(wblock, 0); in parse_wdg()
1219 list_del(&wblock->list); in parse_wdg()
1220 put_device(&wblock->dev.dev); in parse_wdg()
1277 struct wmi_block *wblock; in acpi_wmi_notify_handler() local
1280 list_for_each_entry(wblock, &wmi_block_list, list) { in acpi_wmi_notify_handler()
1281 block = &wblock->gblock; in acpi_wmi_notify_handler()
1283 if (wblock->acpi_device->handle == handle && in acpi_wmi_notify_handler()
1296 if (wblock->dev.dev.driver) { in acpi_wmi_notify_handler()
1303 driver = container_of(wblock->dev.dev.driver, in acpi_wmi_notify_handler()
1311 status = acpi_evaluate_object(wblock->acpi_device->handle, in acpi_wmi_notify_handler()
1314 dev_warn(&wblock->dev.dev, in acpi_wmi_notify_handler()
1320 driver->notify(&wblock->dev, in acpi_wmi_notify_handler()
1324 } else if (wblock->handler) { in acpi_wmi_notify_handler()
1326 wblock->handler(event, wblock->handler_data); in acpi_wmi_notify_handler()
1331 wblock->gblock.guid); in acpi_wmi_notify_handler()
1335 wblock->acpi_device->pnp.device_class, in acpi_wmi_notify_handler()
1336 dev_name(&wblock->dev.dev), in acpi_wmi_notify_handler()