Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
0002 /*
0003  *  User API methods for ACPI-WMI mapping driver
0004  *
0005  *  Copyright (C) 2017 Dell, Inc.
0006  */
0007 #ifndef _UAPI_LINUX_WMI_H
0008 #define _UAPI_LINUX_WMI_H
0009 
0010 #include <linux/ioctl.h>
0011 #include <linux/types.h>
0012 
0013 /* WMI bus will filter all WMI vendor driver requests through this IOC */
0014 #define WMI_IOC 'W'
0015 
0016 /* All ioctl requests through WMI should declare their size followed by
0017  * relevant data objects
0018  */
0019 struct wmi_ioctl_buffer {
0020     __u64   length;
0021     __u8    data[];
0022 };
0023 
0024 /* This structure may be modified by the firmware when we enter
0025  * system management mode through SMM, hence the volatiles
0026  */
0027 struct calling_interface_buffer {
0028     __u16 cmd_class;
0029     __u16 cmd_select;
0030     volatile __u32 input[4];
0031     volatile __u32 output[4];
0032 } __packed;
0033 
0034 struct dell_wmi_extensions {
0035     __u32 argattrib;
0036     __u32 blength;
0037     __u8 data[];
0038 } __packed;
0039 
0040 struct dell_wmi_smbios_buffer {
0041     __u64 length;
0042     struct calling_interface_buffer std;
0043     struct dell_wmi_extensions  ext;
0044 } __packed;
0045 
0046 /* Whitelisted smbios class/select commands */
0047 #define CLASS_TOKEN_READ    0
0048 #define CLASS_TOKEN_WRITE   1
0049 #define SELECT_TOKEN_STD    0
0050 #define SELECT_TOKEN_BAT    1
0051 #define SELECT_TOKEN_AC     2
0052 #define CLASS_FLASH_INTERFACE   7
0053 #define SELECT_FLASH_INTERFACE  3
0054 #define CLASS_ADMIN_PROP    10
0055 #define SELECT_ADMIN_PROP   3
0056 #define CLASS_INFO      17
0057 #define SELECT_RFKILL       11
0058 #define SELECT_APP_REGISTRATION 3
0059 #define SELECT_DOCK     22
0060 
0061 /* whitelisted tokens */
0062 #define CAPSULE_EN_TOKEN    0x0461
0063 #define CAPSULE_DIS_TOKEN   0x0462
0064 #define WSMT_EN_TOKEN       0x04EC
0065 #define WSMT_DIS_TOKEN      0x04ED
0066 
0067 /* Dell SMBIOS calling IOCTL command used by dell-smbios-wmi */
0068 #define DELL_WMI_SMBIOS_CMD _IOWR(WMI_IOC, 0, struct dell_wmi_smbios_buffer)
0069 
0070 #endif