forked from mirrors/linux
		
	platform/x86: wmi: add context pointer field to struct wmi_device_id
When using wmi_install_notify_handler() to initialize a WMI handler a data pointer can be supplied which will be passed on to the notification handler. No similar feature exist when handling WMI events via struct wmi_driver. Add a context field pointer to struct wmi_device_id and add a function find_guid_context() to retrieve that context pointer. Signed-off-by: Mattias Jacobsson <2pi@mok.nu> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
This commit is contained in:
		
							parent
							
								
									3e58167ac3
								
							
						
					
					
						commit
						a48e23385f
					
				
					 2 changed files with 23 additions and 0 deletions
				
			
		|  | @ -146,6 +146,28 @@ static bool find_guid(const char *guid_string, struct wmi_block **out) | ||||||
| 	return false; | 	return false; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | static const void *find_guid_context(struct wmi_block *wblock, | ||||||
|  | 				      struct wmi_driver *wdriver) | ||||||
|  | { | ||||||
|  | 	const struct wmi_device_id *id; | ||||||
|  | 	uuid_le guid_input; | ||||||
|  | 
 | ||||||
|  | 	if (wblock == NULL || wdriver == NULL) | ||||||
|  | 		return NULL; | ||||||
|  | 	if (wdriver->id_table == NULL) | ||||||
|  | 		return NULL; | ||||||
|  | 
 | ||||||
|  | 	id = wdriver->id_table; | ||||||
|  | 	while (*id->guid_string) { | ||||||
|  | 		if (uuid_le_to_bin(id->guid_string, &guid_input)) | ||||||
|  | 			continue; | ||||||
|  | 		if (!memcmp(wblock->gblock.guid, &guid_input, 16)) | ||||||
|  | 			return id->context; | ||||||
|  | 		id++; | ||||||
|  | 	} | ||||||
|  | 	return NULL; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| static int get_subobj_info(acpi_handle handle, const char *pathname, | static int get_subobj_info(acpi_handle handle, const char *pathname, | ||||||
| 			   struct acpi_device_info **info) | 			   struct acpi_device_info **info) | ||||||
| { | { | ||||||
|  |  | ||||||
|  | @ -798,6 +798,7 @@ struct tee_client_device_id { | ||||||
|  */ |  */ | ||||||
| struct wmi_device_id { | struct wmi_device_id { | ||||||
| 	const char guid_string[UUID_STRING_LEN+1]; | 	const char guid_string[UUID_STRING_LEN+1]; | ||||||
|  | 	const void *context; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| #endif /* LINUX_MOD_DEVICETABLE_H */ | #endif /* LINUX_MOD_DEVICETABLE_H */ | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Mattias Jacobsson
						Mattias Jacobsson