1/* SPDX-License-Identifier: GPL-2.0+ */
2/*
3 * EFI Test driver Header
4 *
5 * Copyright(C) 2012-2016 Canonical Ltd.
6 *
7 */
8
9#ifndef _DRIVERS_FIRMWARE_EFI_TEST_H_
10#define _DRIVERS_FIRMWARE_EFI_TEST_H_
11
12#include <linux/efi.h>
13
14struct efi_getvariable {
15	efi_char16_t	*variable_name;
16	efi_guid_t	*vendor_guid;
17	u32		*attributes;
18	unsigned long	*data_size;
19	void		*data;
20	efi_status_t	*status;
21} __packed;
22
23struct efi_setvariable {
24	efi_char16_t	*variable_name;
25	efi_guid_t	*vendor_guid;
26	u32		attributes;
27	unsigned long	data_size;
28	void		*data;
29	efi_status_t	*status;
30} __packed;
31
32struct efi_getnextvariablename {
33	unsigned long	*variable_name_size;
34	efi_char16_t	*variable_name;
35	efi_guid_t	*vendor_guid;
36	efi_status_t	*status;
37} __packed;
38
39struct efi_queryvariableinfo {
40	u32		attributes;
41	u64		*maximum_variable_storage_size;
42	u64		*remaining_variable_storage_size;
43	u64		*maximum_variable_size;
44	efi_status_t	*status;
45} __packed;
46
47struct efi_gettime {
48	efi_time_t	*time;
49	efi_time_cap_t	*capabilities;
50	efi_status_t	*status;
51} __packed;
52
53struct efi_settime {
54	efi_time_t	*time;
55	efi_status_t	*status;
56} __packed;
57
58struct efi_getwakeuptime {
59	efi_bool_t	*enabled;
60	efi_bool_t	*pending;
61	efi_time_t	*time;
62	efi_status_t	*status;
63} __packed;
64
65struct efi_setwakeuptime {
66	efi_bool_t	enabled;
67	efi_time_t	*time;
68	efi_status_t	*status;
69} __packed;
70
71struct efi_getnexthighmonotoniccount {
72	u32		*high_count;
73	efi_status_t	*status;
74} __packed;
75
76struct efi_querycapsulecapabilities {
77	efi_capsule_header_t	**capsule_header_array;
78	unsigned long		capsule_count;
79	u64			*maximum_capsule_size;
80	int			*reset_type;
81	efi_status_t		*status;
82} __packed;
83
84struct efi_resetsystem {
85	int			reset_type;
86	efi_status_t		status;
87	unsigned long		data_size;
88	efi_char16_t		*data;
89} __packed;
90
91#define EFI_RUNTIME_GET_VARIABLE \
92	_IOWR('p', 0x01, struct efi_getvariable)
93#define EFI_RUNTIME_SET_VARIABLE \
94	_IOW('p', 0x02, struct efi_setvariable)
95
96#define EFI_RUNTIME_GET_TIME \
97	_IOR('p', 0x03, struct efi_gettime)
98#define EFI_RUNTIME_SET_TIME \
99	_IOW('p', 0x04, struct efi_settime)
100
101#define EFI_RUNTIME_GET_WAKETIME \
102	_IOR('p', 0x05, struct efi_getwakeuptime)
103#define EFI_RUNTIME_SET_WAKETIME \
104	_IOW('p', 0x06, struct efi_setwakeuptime)
105
106#define EFI_RUNTIME_GET_NEXTVARIABLENAME \
107	_IOWR('p', 0x07, struct efi_getnextvariablename)
108
109#define EFI_RUNTIME_QUERY_VARIABLEINFO \
110	_IOR('p', 0x08, struct efi_queryvariableinfo)
111
112#define EFI_RUNTIME_GET_NEXTHIGHMONOTONICCOUNT \
113	_IOR('p', 0x09, struct efi_getnexthighmonotoniccount)
114
115#define EFI_RUNTIME_QUERY_CAPSULECAPABILITIES \
116	_IOR('p', 0x0A, struct efi_querycapsulecapabilities)
117
118#define EFI_RUNTIME_RESET_SYSTEM \
119	_IOW('p', 0x0B, struct efi_resetsystem)
120
121#define EFI_RUNTIME_GET_SUPPORTED_MASK \
122	_IOR('p', 0x0C, unsigned int)
123
124#endif /* _DRIVERS_FIRMWARE_EFI_TEST_H_ */
125