at v4.18 2.0 kB view raw
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#include <uapi/linux/wmi.h> 22 23struct wmi_device { 24 struct device dev; 25 26 /* True for data blocks implementing the Set Control Method */ 27 bool setable; 28}; 29 30/* evaluate the ACPI method associated with this device */ 31extern acpi_status wmidev_evaluate_method(struct wmi_device *wdev, 32 u8 instance, u32 method_id, 33 const struct acpi_buffer *in, 34 struct acpi_buffer *out); 35 36/* Caller must kfree the result. */ 37extern union acpi_object *wmidev_block_query(struct wmi_device *wdev, 38 u8 instance); 39 40extern int set_required_buffer_size(struct wmi_device *wdev, u64 length); 41 42struct wmi_device_id { 43 const char *guid_string; 44}; 45 46struct wmi_driver { 47 struct device_driver driver; 48 const struct wmi_device_id *id_table; 49 50 int (*probe)(struct wmi_device *wdev); 51 int (*remove)(struct wmi_device *wdev); 52 void (*notify)(struct wmi_device *device, union acpi_object *data); 53 long (*filter_callback)(struct wmi_device *wdev, unsigned int cmd, 54 struct wmi_ioctl_buffer *arg); 55}; 56 57extern int __must_check __wmi_driver_register(struct wmi_driver *driver, 58 struct module *owner); 59extern void wmi_driver_unregister(struct wmi_driver *driver); 60#define wmi_driver_register(driver) __wmi_driver_register((driver), THIS_MODULE) 61 62#define module_wmi_driver(__wmi_driver) \ 63 module_driver(__wmi_driver, wmi_driver_register, \ 64 wmi_driver_unregister) 65 66#endif