1 /* 2 * wmi.h - ACPI WMI interface 3 * 4 * Copyright (c) 2015 Andrew Lutomirski 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License version 2 as 8 * published by the Free Software Foundation. 9 * 10 * This program is distributed in the hope that it will be useful, but 11 * WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 * General Public License for more details. 14 */ 15 16 #ifndef _LINUX_WMI_H 17 #define _LINUX_WMI_H 18 19 #include <linux/device.h> 20 #include <linux/acpi.h> 21 22 struct wmi_device { 23 struct device dev; 24 25 /* 26 * These are true for data objects that support reads and writes, 27 * respectively. 28 */ 29 bool readable, writeable; 30 }; 31 32 struct wmi_device_id { 33 const char *guid_string; 34 }; 35 36 struct wmi_driver { 37 struct device_driver driver; 38 const struct wmi_device_id *id_table; 39 40 int (*probe)(struct wmi_device *wdev); 41 int (*remove)(struct wmi_device *wdev); 42 }; 43 44 extern int __must_check __wmi_driver_register(struct wmi_driver *driver, 45 struct module *owner); 46 extern void wmi_driver_unregister(struct wmi_driver *driver); 47 #define wmi_driver_register(driver) __wmi_driver_register((driver), THIS_MODULE) 48 49 #define module_wmi_driver(__wmi_driver) \ 50 module_driver(__wmi_driver, wmi_driver_register, \ 51 wmi_driver_unregister) 52 53 #endif 54