71 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
| /* 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
 |