routed - Apply FreeBSD-SA-14:21.routed
[dragonfly.git] / sys / boot / efi / include / eficon.h
1 /*
2  * $FreeBSD: src/sys/boot/efi/include/eficon.h,v 1.2 2002/05/19 03:17:20 marcel Exp $
3  * $DragonFly: src/sys/boot/efi/include/eficon.h,v 1.1 2003/11/10 06:08:32 dillon Exp $
4  */
5 #ifndef _EFI_CON_H
6 #define _EFI_CON_H
7
8 /*++
9
10 Copyright (c) 1998  Intel Corporation
11
12 Module Name:
13
14     eficon.h
15
16 Abstract:
17
18     EFI console protocols
19
20
21
22 Revision History
23
24 --*/
25
26 /*
27  * Text output protocol
28  */
29
30 #define SIMPLE_TEXT_OUTPUT_PROTOCOL \
31     { 0x387477c2, 0x69c7, 0x11d2, 0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b }
32
33 INTERFACE_DECL(_SIMPLE_TEXT_OUTPUT_INTERFACE);
34
35 typedef
36 EFI_STATUS
37 (EFIAPI *EFI_TEXT_RESET) (
38     IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE     *This,
39     IN BOOLEAN                      ExtendedVerification
40     );
41
42 typedef
43 EFI_STATUS
44 (EFIAPI *EFI_TEXT_OUTPUT_STRING) (
45     IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE     *This,
46     IN CHAR16                       *String
47     );
48
49 typedef
50 EFI_STATUS
51 (EFIAPI *EFI_TEXT_TEST_STRING) (
52     IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE     *This,
53     IN CHAR16                       *String
54     );
55
56 typedef
57 EFI_STATUS
58 (EFIAPI *EFI_TEXT_QUERY_MODE) (
59     IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE     *This,
60     IN UINTN                        ModeNumber,
61     OUT UINTN                       *Columns,
62     OUT UINTN                       *Rows
63     );
64
65 typedef
66 EFI_STATUS
67 (EFIAPI *EFI_TEXT_SET_MODE) (
68     IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE     *This,
69     IN UINTN                        ModeNumber
70     );
71
72 typedef
73 EFI_STATUS
74 (EFIAPI *EFI_TEXT_SET_ATTRIBUTE) (
75     IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE     *This,
76     IN UINTN                        Attribute
77     );
78
79 #define EFI_BLACK   0x00
80 #define EFI_BLUE    0x01
81 #define EFI_GREEN   0x02
82 #define EFI_CYAN            (EFI_BLUE | EFI_GREEN)
83 #define EFI_RED     0x04
84 #define EFI_MAGENTA         (EFI_BLUE | EFI_RED)
85 #define EFI_BROWN           (EFI_GREEN | EFI_RED)
86 #define EFI_LIGHTGRAY       (EFI_BLUE | EFI_GREEN | EFI_RED)
87 #define EFI_BRIGHT  0x08
88 #define EFI_DARKGRAY        (EFI_BRIGHT)
89 #define EFI_LIGHTBLUE       (EFI_BLUE | EFI_BRIGHT)
90 #define EFI_LIGHTGREEN      (EFI_GREEN | EFI_BRIGHT)
91 #define EFI_LIGHTCYAN       (EFI_CYAN | EFI_BRIGHT)
92 #define EFI_LIGHTRED        (EFI_RED | EFI_BRIGHT)
93 #define EFI_LIGHTMAGENTA    (EFI_MAGENTA | EFI_BRIGHT)
94 #define EFI_YELLOW          (EFI_BROWN | EFI_BRIGHT)
95 #define EFI_WHITE           (EFI_BLUE | EFI_GREEN | EFI_RED | EFI_BRIGHT)
96
97 #define EFI_TEXT_ATTR(f,b)  ((f) | ((b) << 4))
98
99 #define EFI_BACKGROUND_BLACK        0x00
100 #define EFI_BACKGROUND_BLUE         0x10
101 #define EFI_BACKGROUND_GREEN        0x20
102 #define EFI_BACKGROUND_CYAN         (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN)
103 #define EFI_BACKGROUND_RED          0x40
104 #define EFI_BACKGROUND_MAGENTA      (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_RED)
105 #define EFI_BACKGROUND_BROWN        (EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED)
106 #define EFI_BACKGROUND_LIGHTGRAY    (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED)
107
108
109 typedef
110 EFI_STATUS
111 (EFIAPI *EFI_TEXT_CLEAR_SCREEN) (
112     IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE     *This
113     );
114
115 typedef
116 EFI_STATUS
117 (EFIAPI *EFI_TEXT_SET_CURSOR_POSITION) (
118     IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE     *This,
119     IN UINTN                        Column,
120     IN UINTN                        Row
121     );
122
123 typedef
124 EFI_STATUS
125 (EFIAPI *EFI_TEXT_ENABLE_CURSOR) (
126     IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE     *This,
127     IN BOOLEAN                      Enable
128     );
129
130 typedef struct {
131     INT32                           MaxMode;
132         /* current settings */
133     INT32                           Mode;
134     INT32                           Attribute;
135     INT32                           CursorColumn;
136     INT32                           CursorRow;
137     BOOLEAN                         CursorVisible;
138 } SIMPLE_TEXT_OUTPUT_MODE;
139
140 typedef struct _SIMPLE_TEXT_OUTPUT_INTERFACE {
141     EFI_TEXT_RESET                  Reset;
142
143     EFI_TEXT_OUTPUT_STRING          OutputString;
144     EFI_TEXT_TEST_STRING            TestString;
145
146     EFI_TEXT_QUERY_MODE             QueryMode;
147     EFI_TEXT_SET_MODE               SetMode;
148     EFI_TEXT_SET_ATTRIBUTE          SetAttribute;
149
150     EFI_TEXT_CLEAR_SCREEN           ClearScreen;
151     EFI_TEXT_SET_CURSOR_POSITION    SetCursorPosition;
152     EFI_TEXT_ENABLE_CURSOR          EnableCursor;
153
154         /* Current mode */
155     SIMPLE_TEXT_OUTPUT_MODE         *Mode;
156 } SIMPLE_TEXT_OUTPUT_INTERFACE;
157
158 /*
159  * Define's for required EFI Unicode Box Draw character
160  */
161
162 #define BOXDRAW_HORIZONTAL                  0x2500
163 #define BOXDRAW_VERTICAL                    0x2502
164 #define BOXDRAW_DOWN_RIGHT                  0x250c
165 #define BOXDRAW_DOWN_LEFT                   0x2510
166 #define BOXDRAW_UP_RIGHT                    0x2514
167 #define BOXDRAW_UP_LEFT                     0x2518
168 #define BOXDRAW_VERTICAL_RIGHT              0x251c
169 #define BOXDRAW_VERTICAL_LEFT               0x2524
170 #define BOXDRAW_DOWN_HORIZONTAL             0x252c
171 #define BOXDRAW_UP_HORIZONTAL               0x2534
172 #define BOXDRAW_VERTICAL_HORIZONTAL         0x253c
173
174 #define BOXDRAW_DOUBLE_HORIZONTAL           0x2550
175 #define BOXDRAW_DOUBLE_VERTICAL             0x2551
176 #define BOXDRAW_DOWN_RIGHT_DOUBLE           0x2552
177 #define BOXDRAW_DOWN_DOUBLE_RIGHT           0x2553
178 #define BOXDRAW_DOUBLE_DOWN_RIGHT           0x2554
179
180 #define BOXDRAW_DOWN_LEFT_DOUBLE            0x2555
181 #define BOXDRAW_DOWN_DOUBLE_LEFT            0x2556
182 #define BOXDRAW_DOUBLE_DOWN_LEFT            0x2557
183
184 #define BOXDRAW_UP_RIGHT_DOUBLE             0x2558
185 #define BOXDRAW_UP_DOUBLE_RIGHT             0x2559
186 #define BOXDRAW_DOUBLE_UP_RIGHT             0x255a
187
188 #define BOXDRAW_UP_LEFT_DOUBLE              0x255b
189 #define BOXDRAW_UP_DOUBLE_LEFT              0x255c
190 #define BOXDRAW_DOUBLE_UP_LEFT              0x255d
191
192 #define BOXDRAW_VERTICAL_RIGHT_DOUBLE       0x255e
193 #define BOXDRAW_VERTICAL_DOUBLE_RIGHT       0x255f
194 #define BOXDRAW_DOUBLE_VERTICAL_RIGHT       0x2560
195
196 #define BOXDRAW_VERTICAL_LEFT_DOUBLE        0x2561
197 #define BOXDRAW_VERTICAL_DOUBLE_LEFT        0x2562
198 #define BOXDRAW_DOUBLE_VERTICAL_LEFT        0x2563
199
200 #define BOXDRAW_DOWN_HORIZONTAL_DOUBLE      0x2564
201 #define BOXDRAW_DOWN_DOUBLE_HORIZONTAL      0x2565
202 #define BOXDRAW_DOUBLE_DOWN_HORIZONTAL      0x2566
203
204 #define BOXDRAW_UP_HORIZONTAL_DOUBLE        0x2567
205 #define BOXDRAW_UP_DOUBLE_HORIZONTAL        0x2568
206 #define BOXDRAW_DOUBLE_UP_HORIZONTAL        0x2569
207
208 #define BOXDRAW_VERTICAL_HORIZONTAL_DOUBLE  0x256a
209 #define BOXDRAW_VERTICAL_DOUBLE_HORIZONTAL  0x256b
210 #define BOXDRAW_DOUBLE_VERTICAL_HORIZONTAL  0x256c
211
212 /*
213  * EFI Required Block Elements Code Chart
214  */
215 #define BLOCKELEMENT_FULL_BLOCK             0x2588
216 #define BLOCKELEMENT_LIGHT_SHADE            0x2591
217
218 /*
219  * EFI Required Geometric Shapes Code Chart
220  */
221 #define GEOMETRICSHAPE_UP_TRIANGLE           0x25b2
222 #define GEOMETRICSHAPE_RIGHT_TRIANGLE        0x25ba
223 #define GEOMETRICSHAPE_DOWN_TRIANGLE         0x25bc
224 #define GEOMETRICSHAPE_LEFT_TRIANGLE         0x25c4
225
226 /*
227  * EFI Required Arrow shapes
228  */
229 #define ARROW_UP                            0x2191
230 #define ARROW_DOWN                          0x2193
231
232 /*
233  * Text input protocol
234  */
235
236 #define SIMPLE_TEXT_INPUT_PROTOCOL  \
237     { 0x387477c1, 0x69c7, 0x11d2, 0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b }
238
239 INTERFACE_DECL(_SIMPLE_INPUT_INTERFACE);
240
241 typedef struct {
242     UINT16                              ScanCode;
243     CHAR16                              UnicodeChar;
244 } EFI_INPUT_KEY;
245
246 /*
247  * Baseline unicode control chars
248  */
249
250 #define CHAR_NULL                       0x0000
251 #define CHAR_BACKSPACE                  0x0008
252 #define CHAR_TAB                        0x0009
253 #define CHAR_LINEFEED                   0x000A
254 #define CHAR_CARRIAGE_RETURN            0x000D
255
256 /*
257  * Scan codes for base line keys
258  */
259 #define SCAN_NULL                       0x0000
260 #define SCAN_UP                         0x0001
261 #define SCAN_DOWN                       0x0002
262 #define SCAN_RIGHT                      0x0003
263 #define SCAN_LEFT                       0x0004
264 #define SCAN_HOME                       0x0005
265 #define SCAN_END                        0x0006
266 #define SCAN_INSERT                     0x0007
267 #define SCAN_DELETE                     0x0008
268 #define SCAN_PAGE_UP                    0x0009
269 #define SCAN_PAGE_DOWN                  0x000A
270 #define SCAN_F1                         0x000B
271 #define SCAN_F2                         0x000C
272 #define SCAN_F3                         0x000D
273 #define SCAN_F4                         0x000E
274 #define SCAN_F5                         0x000F
275 #define SCAN_F6                         0x0010
276 #define SCAN_F7                         0x0011
277 #define SCAN_F8                         0x0012
278 #define SCAN_F9                         0x0013
279 #define SCAN_F10                        0x0014
280 #define SCAN_ESC                        0x0017
281
282 typedef
283 EFI_STATUS
284 (EFIAPI *EFI_INPUT_RESET) (
285     IN struct _SIMPLE_INPUT_INTERFACE   *This,
286     IN BOOLEAN                          ExtendedVerification
287     );
288
289 typedef
290 EFI_STATUS
291 (EFIAPI *EFI_INPUT_READ_KEY) (
292     IN struct _SIMPLE_INPUT_INTERFACE   *This,
293     OUT EFI_INPUT_KEY                   *Key
294     );
295
296 typedef struct _SIMPLE_INPUT_INTERFACE {
297     EFI_INPUT_RESET                     Reset;
298     EFI_INPUT_READ_KEY                  ReadKeyStroke;
299     EFI_EVENT                           WaitForKey;
300 } SIMPLE_INPUT_INTERFACE;
301
302 #endif