linux/include/linux/wmi.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-only */
   2/*
   3 * wmi.h - ACPI WMI interface
   4 *
   5 * Copyright (c) 2015 Andrew Lutomirski
   6 */
   7
   8#ifndef _LINUX_WMI_H
   9#define _LINUX_WMI_H
  10
  11#include <linux/device.h>
  12#include <linux/acpi.h>
  13#include <linux/mod_devicetable.h>
  14#include <uapi/linux/wmi.h>
  15
  16struct wmi_device {
  17        struct device dev;
  18
  19         /* True for data blocks implementing the Set Control Method */
  20        bool setable;
  21};
  22
  23/* evaluate the ACPI method associated with this device */
  24extern acpi_status wmidev_evaluate_method(struct wmi_device *wdev,
  25                                          u8 instance, u32 method_id,
  26                                          const struct acpi_buffer *in,
  27                                          struct acpi_buffer *out);
  28
  29/* Caller must kfree the result. */
  30extern union acpi_object *wmidev_block_query(struct wmi_device *wdev,
  31                                             u8 instance);
  32
  33extern int set_required_buffer_size(struct wmi_device *wdev, u64 length);
  34
  35struct wmi_driver {
  36        struct device_driver driver;
  37        const struct wmi_device_id *id_table;
  38
  39        int (*probe)(struct wmi_device *wdev, const void *context);
  40        void (*remove)(struct wmi_device *wdev);
  41        void (*notify)(struct wmi_device *device, union acpi_object *data);
  42        long (*filter_callback)(struct wmi_device *wdev, unsigned int cmd,
  43                                struct wmi_ioctl_buffer *arg);
  44};
  45
  46extern int __must_check __wmi_driver_register(struct wmi_driver *driver,
  47                                              struct module *owner);
  48extern void wmi_driver_unregister(struct wmi_driver *driver);
  49#define wmi_driver_register(driver) __wmi_driver_register((driver), THIS_MODULE)
  50
  51#define module_wmi_driver(__wmi_driver) \
  52        module_driver(__wmi_driver, wmi_driver_register, \
  53                      wmi_driver_unregister)
  54
  55#endif
  56