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