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