1 /* SPDX-License-Identifier: GPL-2.0-only WITH << 2 /* 1 /* 3 * User API methods for ACPI-WMI mapping driv 2 * User API methods for ACPI-WMI mapping driver 4 * 3 * 5 * Copyright (C) 2017 Dell, Inc. 4 * Copyright (C) 2017 Dell, Inc. >> 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. 6 */ 9 */ 7 #ifndef _UAPI_LINUX_WMI_H 10 #ifndef _UAPI_LINUX_WMI_H 8 #define _UAPI_LINUX_WMI_H 11 #define _UAPI_LINUX_WMI_H 9 12 10 #include <linux/ioctl.h> 13 #include <linux/ioctl.h> 11 #include <linux/types.h> 14 #include <linux/types.h> 12 15 13 /* WMI bus will filter all WMI vendor driver r 16 /* WMI bus will filter all WMI vendor driver requests through this IOC */ 14 #define WMI_IOC 'W' 17 #define WMI_IOC 'W' 15 18 16 /* All ioctl requests through WMI should decla 19 /* All ioctl requests through WMI should declare their size followed by 17 * relevant data objects 20 * relevant data objects 18 */ 21 */ 19 struct wmi_ioctl_buffer { 22 struct wmi_ioctl_buffer { 20 __u64 length; 23 __u64 length; 21 __u8 data[]; 24 __u8 data[]; 22 }; 25 }; 23 26 24 /* This structure may be modified by the firmw 27 /* This structure may be modified by the firmware when we enter 25 * system management mode through SMM, hence t 28 * system management mode through SMM, hence the volatiles 26 */ 29 */ 27 struct calling_interface_buffer { 30 struct calling_interface_buffer { 28 __u16 cmd_class; 31 __u16 cmd_class; 29 __u16 cmd_select; 32 __u16 cmd_select; 30 volatile __u32 input[4]; 33 volatile __u32 input[4]; 31 volatile __u32 output[4]; 34 volatile __u32 output[4]; 32 } __packed; 35 } __packed; 33 36 34 struct dell_wmi_extensions { 37 struct dell_wmi_extensions { 35 __u32 argattrib; 38 __u32 argattrib; 36 __u32 blength; 39 __u32 blength; 37 __u8 data[]; 40 __u8 data[]; 38 } __packed; 41 } __packed; 39 42 40 struct dell_wmi_smbios_buffer { 43 struct dell_wmi_smbios_buffer { 41 __u64 length; 44 __u64 length; 42 struct calling_interface_buffer std; 45 struct calling_interface_buffer std; 43 struct dell_wmi_extensions ext; 46 struct dell_wmi_extensions ext; 44 } __packed; 47 } __packed; 45 48 46 /* Whitelisted smbios class/select commands */ 49 /* Whitelisted smbios class/select commands */ 47 #define CLASS_TOKEN_READ 0 50 #define CLASS_TOKEN_READ 0 48 #define CLASS_TOKEN_WRITE 1 51 #define CLASS_TOKEN_WRITE 1 49 #define SELECT_TOKEN_STD 0 52 #define SELECT_TOKEN_STD 0 50 #define SELECT_TOKEN_BAT 1 53 #define SELECT_TOKEN_BAT 1 51 #define SELECT_TOKEN_AC 2 54 #define SELECT_TOKEN_AC 2 52 #define CLASS_FLASH_INTERFACE 7 55 #define CLASS_FLASH_INTERFACE 7 53 #define SELECT_FLASH_INTERFACE 3 56 #define SELECT_FLASH_INTERFACE 3 54 #define CLASS_ADMIN_PROP 10 57 #define CLASS_ADMIN_PROP 10 55 #define SELECT_ADMIN_PROP 3 58 #define SELECT_ADMIN_PROP 3 56 #define CLASS_INFO 17 59 #define CLASS_INFO 17 57 #define SELECT_RFKILL 11 60 #define SELECT_RFKILL 11 58 #define SELECT_APP_REGISTRATION 3 61 #define SELECT_APP_REGISTRATION 3 59 #define SELECT_DOCK 22 62 #define SELECT_DOCK 22 60 63 61 /* whitelisted tokens */ 64 /* whitelisted tokens */ 62 #define CAPSULE_EN_TOKEN 0x0461 65 #define CAPSULE_EN_TOKEN 0x0461 63 #define CAPSULE_DIS_TOKEN 0x0462 66 #define CAPSULE_DIS_TOKEN 0x0462 64 #define WSMT_EN_TOKEN 0x04EC 67 #define WSMT_EN_TOKEN 0x04EC 65 #define WSMT_DIS_TOKEN 0x04ED 68 #define WSMT_DIS_TOKEN 0x04ED 66 69 67 /* Dell SMBIOS calling IOCTL command used by d 70 /* Dell SMBIOS calling IOCTL command used by dell-smbios-wmi */ 68 #define DELL_WMI_SMBIOS_CMD _IOWR(WMI_IOC, 71 #define DELL_WMI_SMBIOS_CMD _IOWR(WMI_IOC, 0, struct dell_wmi_smbios_buffer) 69 72 70 #endif 73 #endif 71 74
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.