]> git.proxmox.com Git - mirror_edk2.git/blob - EdkModulePkg/Universal/Console/ConSplitter/Dxe/ConSplitter.h
1. Removed definition for EFI_1_1 from module ConSplitter
[mirror_edk2.git] / EdkModulePkg / Universal / Console / ConSplitter / Dxe / ConSplitter.h
1 /**@file
2 Private data structures for the Console Splitter driver
3
4 Copyright (c) 2006 - 2007 Intel Corporation. <BR>
5 All rights reserved. This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13 **/
14
15 #ifndef _CON_SPLITTER_H_
16 #define _CON_SPLITTER_H_
17
18 //
19 // Private Data Structures
20 //
21 #define CONSOLE_SPLITTER_CONSOLES_ALLOC_UNIT 32
22 #define CONSOLE_SPLITTER_MODES_ALLOC_UNIT 32
23 #define MAX_STD_IN_PASSWORD 80
24
25 typedef struct {
26 UINTN Columns;
27 UINTN Rows;
28 } TEXT_OUT_SPLITTER_QUERY_DATA;
29
30 //
31 // Private data for the EFI_SIMPLE_TEXT_INPUT_PROTOCOL splitter
32 //
33 #define TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('T', 'i', 'S', 'p')
34
35 typedef struct {
36 UINT64 Signature;
37 EFI_HANDLE VirtualHandle;
38
39 EFI_SIMPLE_TEXT_IN_PROTOCOL TextIn;
40 UINTN CurrentNumberOfConsoles;
41 EFI_SIMPLE_TEXT_IN_PROTOCOL **TextInList;
42 UINTN TextInListCount;
43
44 EFI_SIMPLE_POINTER_PROTOCOL SimplePointer;
45 EFI_SIMPLE_POINTER_MODE SimplePointerMode;
46 UINTN CurrentNumberOfPointers;
47 EFI_SIMPLE_POINTER_PROTOCOL **PointerList;
48 UINTN PointerListCount;
49
50 BOOLEAN PasswordEnabled;
51 CHAR16 Password[MAX_STD_IN_PASSWORD];
52 UINTN PwdIndex;
53 CHAR16 PwdAttempt[MAX_STD_IN_PASSWORD];
54 EFI_EVENT LockEvent;
55
56 BOOLEAN KeyEventSignalState;
57 BOOLEAN InputEventSignalState;
58 } TEXT_IN_SPLITTER_PRIVATE_DATA;
59
60 #define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
61 CR ((a), \
62 TEXT_IN_SPLITTER_PRIVATE_DATA, \
63 TextIn, \
64 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \
65 )
66
67 #define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_SIMPLE_POINTER_THIS(a) \
68 CR ((a), \
69 TEXT_IN_SPLITTER_PRIVATE_DATA, \
70 SimplePointer, \
71 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \
72 )
73
74 //
75 // Private data for the EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL splitter
76 //
77 #define TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('T', 'o', 'S', 'p')
78
79 typedef struct {
80 EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput;
81 EFI_UGA_DRAW_PROTOCOL *UgaDraw;
82 EFI_SIMPLE_TEXT_OUT_PROTOCOL *TextOut;
83 BOOLEAN TextOutEnabled;
84 } TEXT_OUT_AND_GOP_DATA;
85
86 typedef struct {
87 UINT32 HorizontalResolution;
88 UINT32 VerticalResolution;
89 } TEXT_OUT_GOP_MODE;
90
91 typedef struct {
92 UINT64 Signature;
93 EFI_HANDLE VirtualHandle;
94 EFI_SIMPLE_TEXT_OUT_PROTOCOL TextOut;
95 EFI_SIMPLE_TEXT_OUTPUT_MODE TextOutMode;
96
97 EFI_GRAPHICS_OUTPUT_PROTOCOL GraphicsOutput;
98 EFI_GRAPHICS_OUTPUT_BLT_PIXEL *GraphicsOutputBlt;
99 TEXT_OUT_GOP_MODE *GraphicsOutputModeBuffer;
100 UINTN CurrentNumberOfGraphicsOutput;
101 BOOLEAN HardwareNeedsStarting;
102
103 EFI_CONSOLE_CONTROL_PROTOCOL ConsoleControl;
104
105 UINTN CurrentNumberOfConsoles;
106 TEXT_OUT_AND_GOP_DATA *TextOutList;
107 UINTN TextOutListCount;
108 TEXT_OUT_SPLITTER_QUERY_DATA *TextOutQueryData;
109 UINTN TextOutQueryDataCount;
110 INT32 *TextOutModeMap;
111
112 EFI_CONSOLE_CONTROL_SCREEN_MODE ConsoleOutputMode;
113
114 UINTN DevNullColumns;
115 UINTN DevNullRows;
116 CHAR16 *DevNullScreen;
117 INT32 *DevNullAttributes;
118
119 } TEXT_OUT_SPLITTER_PRIVATE_DATA;
120
121 #define TEXT_OUT_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
122 CR ((a), \
123 TEXT_OUT_SPLITTER_PRIVATE_DATA, \
124 TextOut, \
125 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \
126 )
127
128 #define GRAPHICS_OUTPUT_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
129 CR ((a), \
130 TEXT_OUT_SPLITTER_PRIVATE_DATA, \
131 GraphicsOutput, \
132 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \
133 )
134
135 #define UGA_DRAW_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
136 CR ((a), \
137 TEXT_OUT_SPLITTER_PRIVATE_DATA, \
138 UgaDraw, \
139 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \
140 )
141
142 #define CONSOLE_CONTROL_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
143 CR ((a), \
144 TEXT_OUT_SPLITTER_PRIVATE_DATA, \
145 ConsoleControl, \
146 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \
147 )
148
149 //
150 // Function Prototypes
151 //
152 EFI_STATUS
153 EFIAPI
154 ConSplitterDriverEntry (
155 IN EFI_HANDLE ImageHandle,
156 IN EFI_SYSTEM_TABLE *SystemTable
157 )
158 ;
159
160 EFI_STATUS
161 ConSplitterTextInConstructor (
162 TEXT_IN_SPLITTER_PRIVATE_DATA *Private
163 )
164 ;
165
166 EFI_STATUS
167 ConSplitterTextOutConstructor (
168 TEXT_OUT_SPLITTER_PRIVATE_DATA *Private
169 )
170 ;
171
172 //
173 // Driver Binding Functions
174 //
175 EFI_STATUS
176 EFIAPI
177 ConSplitterConInDriverBindingSupported (
178 IN EFI_DRIVER_BINDING_PROTOCOL *This,
179 IN EFI_HANDLE ControllerHandle,
180 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
181 )
182 ;
183
184 EFI_STATUS
185 EFIAPI
186 ConSplitterSimplePointerDriverBindingSupported (
187 IN EFI_DRIVER_BINDING_PROTOCOL *This,
188 IN EFI_HANDLE ControllerHandle,
189 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
190 )
191 ;
192
193 EFI_STATUS
194 EFIAPI
195 ConSplitterConOutDriverBindingSupported (
196 IN EFI_DRIVER_BINDING_PROTOCOL *This,
197 IN EFI_HANDLE ControllerHandle,
198 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
199 )
200 ;
201
202 EFI_STATUS
203 EFIAPI
204 ConSplitterStdErrDriverBindingSupported (
205 IN EFI_DRIVER_BINDING_PROTOCOL *This,
206 IN EFI_HANDLE ControllerHandle,
207 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
208 )
209 ;
210
211 EFI_STATUS
212 EFIAPI
213 ConSplitterConInDriverBindingStart (
214 IN EFI_DRIVER_BINDING_PROTOCOL *This,
215 IN EFI_HANDLE ControllerHandle,
216 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
217 )
218 ;
219
220 EFI_STATUS
221 EFIAPI
222 ConSplitterSimplePointerDriverBindingStart (
223 IN EFI_DRIVER_BINDING_PROTOCOL *This,
224 IN EFI_HANDLE ControllerHandle,
225 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
226 )
227 ;
228
229 EFI_STATUS
230 EFIAPI
231 ConSplitterConOutDriverBindingStart (
232 IN EFI_DRIVER_BINDING_PROTOCOL *This,
233 IN EFI_HANDLE ControllerHandle,
234 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
235 )
236 ;
237
238 EFI_STATUS
239 EFIAPI
240 ConSplitterStdErrDriverBindingStart (
241 IN EFI_DRIVER_BINDING_PROTOCOL *This,
242 IN EFI_HANDLE ControllerHandle,
243 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
244 )
245 ;
246
247 EFI_STATUS
248 EFIAPI
249 ConSplitterConInDriverBindingStop (
250 IN EFI_DRIVER_BINDING_PROTOCOL *This,
251 IN EFI_HANDLE ControllerHandle,
252 IN UINTN NumberOfChildren,
253 IN EFI_HANDLE *ChildHandleBuffer
254 )
255 ;
256
257 EFI_STATUS
258 EFIAPI
259 ConSplitterSimplePointerDriverBindingStop (
260 IN EFI_DRIVER_BINDING_PROTOCOL *This,
261 IN EFI_HANDLE ControllerHandle,
262 IN UINTN NumberOfChildren,
263 IN EFI_HANDLE *ChildHandleBuffer
264 )
265 ;
266
267 EFI_STATUS
268 EFIAPI
269 ConSplitterConOutDriverBindingStop (
270 IN EFI_DRIVER_BINDING_PROTOCOL *This,
271 IN EFI_HANDLE ControllerHandle,
272 IN UINTN NumberOfChildren,
273 IN EFI_HANDLE *ChildHandleBuffer
274 )
275 ;
276
277 EFI_STATUS
278 EFIAPI
279 ConSplitterStdErrDriverBindingStop (
280 IN EFI_DRIVER_BINDING_PROTOCOL *This,
281 IN EFI_HANDLE ControllerHandle,
282 IN UINTN NumberOfChildren,
283 IN EFI_HANDLE *ChildHandleBuffer
284 )
285 ;
286
287 EFI_STATUS
288 EFIAPI
289 ConSplitterComponentNameGetDriverName (
290 IN EFI_COMPONENT_NAME_PROTOCOL *This,
291 IN CHAR8 *Language,
292 OUT CHAR16 **DriverName
293 );
294
295 EFI_STATUS
296 EFIAPI
297 ConSplitterConInComponentNameGetControllerName (
298 IN EFI_COMPONENT_NAME_PROTOCOL *This,
299 IN EFI_HANDLE ControllerHandle,
300 IN EFI_HANDLE ChildHandle OPTIONAL,
301 IN CHAR8 *Language,
302 OUT CHAR16 **ControllerName
303 );
304
305 EFI_STATUS
306 EFIAPI
307 ConSplitterSimplePointerComponentNameGetControllerName (
308 IN EFI_COMPONENT_NAME_PROTOCOL *This,
309 IN EFI_HANDLE ControllerHandle,
310 IN EFI_HANDLE ChildHandle OPTIONAL,
311 IN CHAR8 *Language,
312 OUT CHAR16 **ControllerName
313 );
314
315 EFI_STATUS
316 EFIAPI
317 ConSplitterConOutComponentNameGetControllerName (
318 IN EFI_COMPONENT_NAME_PROTOCOL *This,
319 IN EFI_HANDLE ControllerHandle,
320 IN EFI_HANDLE ChildHandle OPTIONAL,
321 IN CHAR8 *Language,
322 OUT CHAR16 **ControllerName
323 );
324
325 EFI_STATUS
326 EFIAPI
327 ConSplitterStdErrComponentNameGetControllerName (
328 IN EFI_COMPONENT_NAME_PROTOCOL *This,
329 IN EFI_HANDLE ControllerHandle,
330 IN EFI_HANDLE ChildHandle OPTIONAL,
331 IN CHAR8 *Language,
332 OUT CHAR16 **ControllerName
333 );
334
335 //
336 // TextIn Constructor/Destructor functions
337 //
338 EFI_STATUS
339 ConSplitterTextInAddDevice (
340 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,
341 IN EFI_SIMPLE_TEXT_IN_PROTOCOL *TextIn
342 )
343 ;
344
345 EFI_STATUS
346 ConSplitterTextInDeleteDevice (
347 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,
348 IN EFI_SIMPLE_TEXT_IN_PROTOCOL *TextIn
349 )
350 ;
351
352 //
353 // SimplePointer Constuctor/Destructor functions
354 //
355 EFI_STATUS
356 ConSplitterSimplePointerAddDevice (
357 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,
358 IN EFI_SIMPLE_POINTER_PROTOCOL *SimplePointer
359 )
360 ;
361
362 EFI_STATUS
363 ConSplitterSimplePointerDeleteDevice (
364 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,
365 IN EFI_SIMPLE_POINTER_PROTOCOL *SimplePointer
366 )
367 ;
368
369 //
370 // TextOut Constuctor/Destructor functions
371 //
372 EFI_STATUS
373 ConSplitterTextOutAddDevice (
374 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,
375 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *TextOut,
376 IN EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput,
377 IN EFI_UGA_DRAW_PROTOCOL *UgaDraw
378 )
379 ;
380
381 EFI_STATUS
382 ConSplitterTextOutDeleteDevice (
383 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,
384 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *TextOut
385 )
386 ;
387
388 //
389 // TextIn I/O Functions
390 //
391 EFI_STATUS
392 EFIAPI
393 ConSplitterTextInReset (
394 IN EFI_SIMPLE_TEXT_IN_PROTOCOL *This,
395 IN BOOLEAN ExtendedVerification
396 )
397 ;
398
399 EFI_STATUS
400 EFIAPI
401 ConSplitterTextInReadKeyStroke (
402 IN EFI_SIMPLE_TEXT_IN_PROTOCOL *This,
403 OUT EFI_INPUT_KEY *Key
404 )
405 ;
406
407 VOID
408 EFIAPI
409 ConSplitterTextInWaitForKey (
410 IN EFI_EVENT Event,
411 IN VOID *Context
412 )
413 ;
414
415 BOOLEAN
416 ConSpliterConssoleControlStdInLocked (
417 VOID
418 )
419 ;
420
421 VOID
422 EFIAPI
423 ConSpliterConsoleControlLockStdInEvent (
424 IN EFI_EVENT Event,
425 IN VOID *Context
426 )
427 ;
428
429 EFI_STATUS
430 EFIAPI
431 ConSpliterConsoleControlLockStdIn (
432 IN EFI_CONSOLE_CONTROL_PROTOCOL *This,
433 IN CHAR16 *Password
434 )
435 ;
436
437 EFI_STATUS
438 EFIAPI
439 ConSplitterTextInPrivateReadKeyStroke (
440 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,
441 OUT EFI_INPUT_KEY *Key
442 )
443 ;
444
445 EFI_STATUS
446 EFIAPI
447 ConSplitterSimplePointerReset (
448 IN EFI_SIMPLE_POINTER_PROTOCOL *This,
449 IN BOOLEAN ExtendedVerification
450 )
451 ;
452
453 EFI_STATUS
454 EFIAPI
455 ConSplitterSimplePointerGetState (
456 IN EFI_SIMPLE_POINTER_PROTOCOL *This,
457 IN OUT EFI_SIMPLE_POINTER_STATE *State
458 )
459 ;
460
461 VOID
462 EFIAPI
463 ConSplitterSimplePointerWaitForInput (
464 IN EFI_EVENT Event,
465 IN VOID *Context
466 )
467 ;
468
469 //
470 // TextOut I/O Functions
471 //
472 VOID
473 ConSplitterSynchronizeModeData (
474 TEXT_OUT_SPLITTER_PRIVATE_DATA *Private
475 )
476 ;
477
478 EFI_STATUS
479 EFIAPI
480 ConSplitterTextOutReset (
481 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This,
482 IN BOOLEAN ExtendedVerification
483 )
484 ;
485
486 EFI_STATUS
487 EFIAPI
488 ConSplitterTextOutOutputString (
489 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This,
490 IN CHAR16 *WString
491 )
492 ;
493
494 EFI_STATUS
495 EFIAPI
496 ConSplitterTextOutTestString (
497 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This,
498 IN CHAR16 *WString
499 )
500 ;
501
502 EFI_STATUS
503 EFIAPI
504 ConSplitterTextOutQueryMode (
505 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This,
506 IN UINTN ModeNumber,
507 OUT UINTN *Columns,
508 OUT UINTN *Rows
509 )
510 ;
511
512 EFI_STATUS
513 EFIAPI
514 ConSplitterTextOutSetMode (
515 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This,
516 IN UINTN ModeNumber
517 )
518 ;
519
520 EFI_STATUS
521 EFIAPI
522 ConSplitterTextOutSetAttribute (
523 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This,
524 IN UINTN Attribute
525 )
526 ;
527
528 EFI_STATUS
529 EFIAPI
530 ConSplitterTextOutClearScreen (
531 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This
532 )
533 ;
534
535 EFI_STATUS
536 EFIAPI
537 ConSplitterTextOutSetCursorPosition (
538 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This,
539 IN UINTN Column,
540 IN UINTN Row
541 )
542 ;
543
544 EFI_STATUS
545 EFIAPI
546 ConSplitterTextOutEnableCursor (
547 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This,
548 IN BOOLEAN Visible
549 )
550 ;
551
552 EFI_STATUS
553 ConSplitterGrowBuffer (
554 IN UINTN SizeOfCount,
555 IN UINTN *Count,
556 IN OUT VOID **Buffer
557 )
558 ;
559
560 EFI_STATUS
561 EFIAPI
562 ConSpliterConsoleControlGetMode (
563 IN EFI_CONSOLE_CONTROL_PROTOCOL *This,
564 OUT EFI_CONSOLE_CONTROL_SCREEN_MODE *Mode,
565 OUT BOOLEAN *GopExists,
566 OUT BOOLEAN *StdInLocked
567 )
568 ;
569
570 EFI_STATUS
571 EFIAPI
572 ConSpliterConsoleControlSetMode (
573 IN EFI_CONSOLE_CONTROL_PROTOCOL *This,
574 IN EFI_CONSOLE_CONTROL_SCREEN_MODE Mode
575 )
576 ;
577
578 EFI_STATUS
579 EFIAPI
580 ConSpliterGraphicsOutputQueryMode (
581 IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,
582 IN UINT32 ModeNumber,
583 OUT UINTN *SizeOfInfo,
584 OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION **Info
585 )
586 ;
587
588 EFI_STATUS
589 EFIAPI
590 ConSpliterGraphicsOutputSetMode (
591 IN EFI_GRAPHICS_OUTPUT_PROTOCOL * This,
592 IN UINT32 ModeNumber
593 )
594 ;
595
596 EFI_STATUS
597 EFIAPI
598 ConSpliterGraphicsOutputBlt (
599 IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,
600 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer, OPTIONAL
601 IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation,
602 IN UINTN SourceX,
603 IN UINTN SourceY,
604 IN UINTN DestinationX,
605 IN UINTN DestinationY,
606 IN UINTN Width,
607 IN UINTN Height,
608 IN UINTN Delta OPTIONAL
609 )
610 ;
611
612 EFI_STATUS
613 DevNullGopSync (
614 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,
615 IN EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput,
616 IN EFI_UGA_DRAW_PROTOCOL *UgaDraw
617 )
618 ;
619
620
621 EFI_STATUS
622 DevNullTextOutOutputString (
623 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,
624 IN CHAR16 *WString
625 )
626 ;
627
628 EFI_STATUS
629 DevNullTextOutSetMode (
630 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,
631 IN UINTN ModeNumber
632 )
633 ;
634
635 EFI_STATUS
636 DevNullTextOutClearScreen (
637 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private
638 )
639 ;
640
641 EFI_STATUS
642 DevNullTextOutSetCursorPosition (
643 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,
644 IN UINTN Column,
645 IN UINTN Row
646 )
647 ;
648
649 EFI_STATUS
650 DevNullTextOutEnableCursor (
651 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,
652 IN BOOLEAN Visible
653 )
654 ;
655
656 EFI_STATUS
657 DevNullSyncGopStdOut (
658 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private
659 )
660 ;
661
662 #endif