diff options
Diffstat (limited to 'include/linux/wmi.h')
| -rw-r--r-- | include/linux/wmi.h | 43 | 
1 files changed, 40 insertions, 3 deletions
| diff --git a/include/linux/wmi.h b/include/linux/wmi.h index b88d7b58e61e..763bd382cf2d 100644 --- a/include/linux/wmi.h +++ b/include/linux/wmi.h @@ -13,25 +13,46 @@  #include <linux/mod_devicetable.h>  #include <uapi/linux/wmi.h> +/** + * struct wmi_device - WMI device structure + * @dev: Device associated with this WMI device + * @setable: True for devices implementing the Set Control Method + * + * This represents WMI devices discovered by the WMI driver core. + */  struct wmi_device {  	struct device dev; -	 /* True for data blocks implementing the Set Control Method */ +	/* private: used by the WMI driver core */  	bool setable;  }; -/* evaluate the ACPI method associated with this device */  extern acpi_status wmidev_evaluate_method(struct wmi_device *wdev,  					  u8 instance, u32 method_id,  					  const struct acpi_buffer *in,  					  struct acpi_buffer *out); -/* Caller must kfree the result. */  extern union acpi_object *wmidev_block_query(struct wmi_device *wdev,  					     u8 instance); +u8 wmidev_instance_count(struct wmi_device *wdev); +  extern int set_required_buffer_size(struct wmi_device *wdev, u64 length); +/** + * struct wmi_driver - WMI driver structure + * @driver: Driver model structure + * @id_table: List of WMI GUIDs supported by this driver + * @no_notify_data: WMI events provide no event data + * @probe: Callback for device binding + * @remove: Callback for device unbinding + * @notify: Callback for receiving WMI events + * @filter_callback: Callback for filtering device IOCTLs + * + * This represents WMI drivers which handle WMI devices. + * @filter_callback is only necessary for drivers which + * want to set up a WMI IOCTL interface. + */  struct wmi_driver {  	struct device_driver driver;  	const struct wmi_device_id *id_table; @@ -47,8 +68,24 @@ struct wmi_driver {  extern int __must_check __wmi_driver_register(struct wmi_driver *driver,  					      struct module *owner);  extern void wmi_driver_unregister(struct wmi_driver *driver); + +/** + * wmi_driver_register() - Helper macro to register a WMI driver + * @driver: wmi_driver struct + * + * Helper macro for registering a WMI driver. It automatically passes + * THIS_MODULE to the underlying function. + */  #define wmi_driver_register(driver) __wmi_driver_register((driver), THIS_MODULE) +/** + * module_wmi_driver() - Helper macro to register/unregister a WMI driver + * @__wmi_driver: wmi_driver struct + * + * Helper macro for WMI drivers which do not do anything special in module + * init/exit. This eliminates a lot of boilerplate. Each module may only + * use this macro once, and calling it replaces module_init() and module_exit(). + */  #define module_wmi_driver(__wmi_driver) \  	module_driver(__wmi_driver, wmi_driver_register, \  		      wmi_driver_unregister) |