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