xref: /aosp_15_r20/external/kernel-headers/original/uapi/linux/wmi.h (revision f80ad8b4341604f5951dab671d41019a6d7087ce)
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