Lines Matching refs:wblock
115 struct wmi_block *wblock;
121 list_for_each_entry(wblock, &wmi_block_list, list) {
122 block = &wblock->gblock;
126 *out = wblock;
143 static const void *find_guid_context(struct wmi_block *wblock,
148 if (wblock == NULL || wdriver == NULL)
155 if (guid_parse_and_compare(id->guid_string, &wblock->gblock.guid))
186 static acpi_status wmi_method_enable(struct wmi_block *wblock, int enable)
193 block = &wblock->gblock;
194 handle = wblock->acpi_device->handle;
218 struct wmi_block *wblock;
220 wblock = container_of(wdev, struct wmi_block, dev);
221 wblock->req_buf_size = length;
240 struct wmi_block *wblock = NULL;
242 if (!find_guid(guid_string, &wblock))
244 return wmidev_evaluate_method(&wblock->dev, instance, method_id,
263 struct wmi_block *wblock;
270 wblock = container_of(wdev, struct wmi_block, dev);
271 block = &wblock->gblock;
272 handle = wblock->acpi_device->handle;
307 static acpi_status __query_block(struct wmi_block *wblock, u8 instance,
321 block = &wblock->gblock;
322 handle = wblock->acpi_device->handle;
336 if (instance == 0 && wblock->read_takes_no_args)
388 struct wmi_block *wblock;
393 if (!find_guid(guid_string, &wblock))
396 return __query_block(wblock, instance, out);
403 struct wmi_block *wblock = container_of(wdev, struct wmi_block, dev);
405 if (ACPI_FAILURE(__query_block(wblock, instance, &out)))
423 struct wmi_block *wblock = NULL;
433 if (!find_guid(guid_string, &wblock))
436 block = &wblock->gblock;
437 handle = wblock->acpi_device->handle;
625 struct wmi_block *wblock;
632 list_for_each_entry(wblock, &wmi_block_list, list) {
633 struct guid_block *gblock = &wblock->gblock;
637 return acpi_evaluate_object(wblock->acpi_device->handle,
667 struct wmi_block *wblock = NULL;
669 if (!find_guid(guid_string, &wblock))
672 return acpi_device_uid(wblock->acpi_device);
692 struct wmi_block *wblock = dev_to_wblock(dev);
694 return sprintf(buf, "wmi:%pUL\n", &wblock->gblock.guid);
701 struct wmi_block *wblock = dev_to_wblock(dev);
703 return sprintf(buf, "%pUL\n", &wblock->gblock.guid);
710 struct wmi_block *wblock = dev_to_wblock(dev);
712 return sprintf(buf, "%d\n", (int)wblock->gblock.instance_count);
719 struct wmi_block *wblock = dev_to_wblock(dev);
722 (wblock->gblock.flags & ACPI_WMI_EXPENSIVE) != 0);
738 struct wmi_block *wblock = dev_to_wblock(dev);
740 return sprintf(buf, "%02X\n", (unsigned int)wblock->gblock.notify_id);
753 struct wmi_block *wblock = dev_to_wblock(dev);
755 return sprintf(buf, "%c%c\n", wblock->gblock.object_id[0],
756 wblock->gblock.object_id[1]);
784 struct wmi_block *wblock = dev_to_wblock(dev);
786 if (add_uevent_var(env, "MODALIAS=wmi:%pUL", &wblock->gblock.guid))
789 if (add_uevent_var(env, "WMI_GUID=%pUL", &wblock->gblock.guid))
797 struct wmi_block *wblock = dev_to_wblock(dev);
799 kfree(wblock);
806 struct wmi_block *wblock = dev_to_wblock(dev);
813 if (guid_parse_and_compare(id->guid_string, &wblock->gblock.guid))
827 struct wmi_block *wblock = container_of(filp->private_data, struct wmi_block, char_dev);
829 filp->private_data = wblock;
837 struct wmi_block *wblock = filp->private_data;
840 &wblock->req_buf_size,
841 sizeof(wblock->req_buf_size));
848 struct wmi_block *wblock = filp->private_data;
857 if (_IOC_NR(cmd) >= wblock->gblock.instance_count)
860 mutex_lock(&wblock->char_mutex);
861 buf = wblock->handler_data;
863 dev_dbg(&wblock->dev.dev, "Read length from user failed\n");
868 if (buf->length < wblock->req_buf_size) {
869 dev_err(&wblock->dev.dev,
871 buf->length, wblock->req_buf_size);
876 if (buf->length > wblock->req_buf_size)
877 dev_warn(&wblock->dev.dev,
879 buf->length, wblock->req_buf_size);
882 if (copy_from_user(buf, input, wblock->req_buf_size)) {
883 dev_dbg(&wblock->dev.dev, "Copy %llu from user failed\n",
884 wblock->req_buf_size);
890 wdriver = container_of(wblock->dev.dev.driver,
896 ret = wdriver->filter_callback(&wblock->dev, cmd, buf);
902 if (copy_to_user(input, buf, wblock->req_buf_size)) {
903 dev_dbg(&wblock->dev.dev, "Copy %llu to user failed\n",
904 wblock->req_buf_size);
909 mutex_unlock(&wblock->char_mutex);
923 struct wmi_block *wblock = dev_to_wblock(dev);
929 if (ACPI_FAILURE(wmi_method_enable(wblock, 1)))
934 find_guid_context(wblock, wdriver));
942 if (!wblock->req_buf_size) {
943 dev_err(&wblock->dev.dev,
949 wblock->handler_data = kmalloc(wblock->req_buf_size,
951 if (!wblock->handler_data) {
961 wblock->char_dev.minor = MISC_DYNAMIC_MINOR;
962 wblock->char_dev.name = buf;
963 wblock->char_dev.fops = &wmi_fops;
964 wblock->char_dev.mode = 0444;
965 ret = misc_register(&wblock->char_dev);
978 kfree(wblock->handler_data);
980 if (ACPI_FAILURE(wmi_method_enable(wblock, 0)))
987 struct wmi_block *wblock = dev_to_wblock(dev);
993 misc_deregister(&wblock->char_dev);
994 kfree(wblock->char_dev.name);
995 kfree(wblock->handler_data);
1001 if (ACPI_FAILURE(wmi_method_enable(wblock, 0)))
1039 struct wmi_block *wblock,
1046 if (wblock->gblock.flags & ACPI_WMI_EVENT) {
1047 wblock->dev.dev.type = &wmi_type_event;
1051 if (wblock->gblock.flags & ACPI_WMI_METHOD) {
1052 wblock->dev.dev.type = &wmi_type_method;
1053 mutex_init(&wblock->char_mutex);
1063 strncat(method, wblock->gblock.object_id, 2);
1073 wblock->dev.dev.type = &wmi_type_data;
1086 wblock->read_takes_no_args = true;
1091 strncat(method, wblock->gblock.object_id, 2);
1095 wblock->dev.setable = true;
1098 wblock->dev.dev.bus = &wmi_bus_type;
1099 wblock->dev.dev.parent = wmi_bus_dev;
1101 dev_set_name(&wblock->dev.dev, "%pUL", &wblock->gblock.guid);
1103 device_initialize(&wblock->dev.dev);
1110 struct wmi_block *wblock, *next;
1113 list_for_each_entry_safe(wblock, next, &wmi_block_list, list) {
1114 if (wblock->acpi_device == device) {
1115 list_del(&wblock->list);
1116 device_unregister(&wblock->dev.dev);
1123 struct wmi_block *wblock;
1125 list_for_each_entry(wblock, &wmi_block_list, list) {
1126 if (guid_equal(&wblock->gblock.guid, guid)) {
1134 guid, dev_name(&wblock->acpi_device->dev));
1149 struct wmi_block *wblock, *next;
1184 wblock = kzalloc(sizeof(struct wmi_block), GFP_KERNEL);
1185 if (!wblock) {
1190 wblock->acpi_device = device;
1191 wblock->gblock = gblock[i];
1193 retval = wmi_create_device(wmi_bus_dev, wblock, device);
1195 kfree(wblock);
1199 list_add_tail(&wblock->list, &wmi_block_list);
1202 wblock->handler = wmi_notify_debug;
1203 wmi_method_enable(wblock, 1);
1211 list_for_each_entry_safe(wblock, next, &wmi_block_list, list) {
1212 if (wblock->acpi_device != device)
1215 retval = device_add(&wblock->dev.dev);
1218 &wblock->gblock.guid);
1220 wmi_method_enable(wblock, 0);
1221 list_del(&wblock->list);
1222 put_device(&wblock->dev.dev);
1278 struct wmi_block *wblock;
1281 list_for_each_entry(wblock, &wmi_block_list, list) {
1282 struct guid_block *block = &wblock->gblock;
1284 if (wblock->acpi_device->handle == handle &&
1297 if (wblock->dev.dev.driver) {
1304 driver = container_of(wblock->dev.dev.driver,
1312 status = acpi_evaluate_object(wblock->acpi_device->handle,
1315 dev_warn(&wblock->dev.dev,
1321 driver->notify(&wblock->dev,
1325 } else if (wblock->handler) {
1327 wblock->handler(event, wblock->handler_data);
1331 pr_info("DEBUG Event GUID: %pUL\n", &wblock->gblock.guid);
1334 wblock->acpi_device->pnp.device_class,
1335 dev_name(&wblock->dev.dev),