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