| /* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */ |
| /* |
| * User API methods for ACPI-WMI mapping driver |
| * |
| * Copyright (C) 2017 Dell, Inc. |
| */ |
| #ifndef _UAPI_LINUX_WMI_H |
| #define _UAPI_LINUX_WMI_H |
| |
| #include <linux/ioctl.h> |
| #include <linux/types.h> |
| |
| /* WMI bus will filter all WMI vendor driver requests through this IOC */ |
| #define WMI_IOC 'W' |
| |
| /* All ioctl requests through WMI should declare their size followed by |
| * relevant data objects |
| */ |
| struct wmi_ioctl_buffer { |
| __u64 length; |
| __u8 data[]; |
| }; |
| |
| /* This structure may be modified by the firmware when we enter |
| * system management mode through SMM, hence the volatiles |
| */ |
| struct calling_interface_buffer { |
| __u16 cmd_class; |
| __u16 cmd_select; |
| volatile __u32 input[4]; |
| volatile __u32 output[4]; |
| } __packed; |
| |
| struct dell_wmi_extensions { |
| __u32 argattrib; |
| __u32 blength; |
| __u8 data[]; |
| } __packed; |
| |
| struct dell_wmi_smbios_buffer { |
| __u64 length; |
| struct calling_interface_buffer std; |
| struct dell_wmi_extensions ext; |
| } __packed; |
| |
| /* Whitelisted smbios class/select commands */ |
| #define CLASS_TOKEN_READ 0 |
| #define CLASS_TOKEN_WRITE 1 |
| #define SELECT_TOKEN_STD 0 |
| #define SELECT_TOKEN_BAT 1 |
| #define SELECT_TOKEN_AC 2 |
| #define CLASS_FLASH_INTERFACE 7 |
| #define SELECT_FLASH_INTERFACE 3 |
| #define CLASS_ADMIN_PROP 10 |
| #define SELECT_ADMIN_PROP 3 |
| #define CLASS_INFO 17 |
| #define SELECT_RFKILL 11 |
| #define SELECT_APP_REGISTRATION 3 |
| #define SELECT_DOCK 22 |
| |
| /* whitelisted tokens */ |
| #define CAPSULE_EN_TOKEN 0x0461 |
| #define CAPSULE_DIS_TOKEN 0x0462 |
| #define WSMT_EN_TOKEN 0x04EC |
| #define WSMT_DIS_TOKEN 0x04ED |
| |
| /* Dell SMBIOS calling IOCTL command used by dell-smbios-wmi */ |
| #define DELL_WMI_SMBIOS_CMD _IOWR(WMI_IOC, 0, struct dell_wmi_smbios_buffer) |
| |
| #endif |