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