71 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */2/*3 * User API methods for ACPI-WMI mapping driver4 *5 * Copyright (C) 2017 Dell, Inc.6 */7#ifndef _UAPI_LINUX_WMI_H8#define _UAPI_LINUX_WMI_H9 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 by17 * relevant data objects18 */19struct wmi_ioctl_buffer {20 __u64 length;21 __u8 data[];22};23 24/* This structure may be modified by the firmware when we enter25 * system management mode through SMM, hence the volatiles26 */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 048#define CLASS_TOKEN_WRITE 149#define SELECT_TOKEN_STD 050#define SELECT_TOKEN_BAT 151#define SELECT_TOKEN_AC 252#define CLASS_FLASH_INTERFACE 753#define SELECT_FLASH_INTERFACE 354#define CLASS_ADMIN_PROP 1055#define SELECT_ADMIN_PROP 356#define CLASS_INFO 1757#define SELECT_RFKILL 1158#define SELECT_APP_REGISTRATION 359#define SELECT_DOCK 2260 61/* whitelisted tokens */62#define CAPSULE_EN_TOKEN 0x046163#define CAPSULE_DIS_TOKEN 0x046264#define WSMT_EN_TOKEN 0x04EC65#define WSMT_DIS_TOKEN 0x04ED66 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#endif71