]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitter.h
1. Add PcdConOutGopSupport and PcdConOutUgaSupport in MdeModulePkg.dec
[mirror_edk2.git] / MdeModulePkg / Universal / Console / ConSplitterDxe / ConSplitter.h
CommitLineData
95276127 1/**@file\r
2 Private data structures for the Console Splitter driver\r
3\r
4Copyright (c) 2006 - 2007 Intel Corporation. <BR>\r
5All rights reserved. This program and the accompanying materials\r
6are licensed and made available under the terms and conditions of the BSD License\r
7which accompanies this distribution. The full text of the license may be found at\r
8http://opensource.org/licenses/bsd-license.php\r
9\r
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12\r
13**/\r
14\r
15#ifndef _CON_SPLITTER_H_\r
16#define _CON_SPLITTER_H_\r
17\r
97a079ed
A
18#include <PiDxe.h>\r
19#include <Guid/PrimaryStandardErrorDevice.h>\r
20#include <Guid/PrimaryConsoleOutDevice.h>\r
21#include <Protocol/GraphicsOutput.h>\r
22#include <Guid/PrimaryConsoleInDevice.h>\r
23#include <Protocol/SimplePointer.h>\r
24#include <Protocol/SimpleTextOut.h>\r
25#include <Guid/ConsoleInDevice.h>\r
26#include <Protocol/SimpleTextIn.h>\r
27#include <Protocol/ConsoleControl.h>\r
28#include <Guid/StandardErrorDevice.h>\r
29#include <Guid/ConsoleOutDevice.h>\r
30#include <Protocol/UgaDraw.h>\r
d0c64728 31#include <Library/PcdLib.h>\r
97a079ed
A
32#include <Library/DebugLib.h>\r
33#include <Library/UefiDriverEntryPoint.h>\r
34#include <Library/UefiLib.h>\r
35#include <Library/BaseLib.h>\r
36#include <Library/BaseMemoryLib.h>\r
37#include <Library/MemoryAllocationLib.h>\r
38#include <Library/UefiBootServicesTableLib.h>\r
39\r
95276127 40//\r
97a079ed 41// Driver Binding Externs\r
95276127 42//\r
5bca971e 43extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterConInDriverBinding;\r
44extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterConInComponentName;\r
45extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConInComponentName2;\r
46extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterSimplePointerDriverBinding;\r
47extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterSimplePointerComponentName;\r
48extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterSimplePointerComponentName2;\r
49extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterConOutDriverBinding;\r
50extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterConOutComponentName;\r
51extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConOutComponentName2;\r
52extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterStdErrDriverBinding;\r
53extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterStdErrComponentName;\r
54extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterStdErrComponentName2;\r
97a079ed
A
55\r
56// These definitions were in the old Hii protocol, but are not in the new UEFI\r
57// version. So they are defined locally.\r
58#define UNICODE_NARROW_CHAR 0xFFF0\r
d0c64728 59#define UNICODE_WIDE_CHAR 0xFFF1\r
97a079ed 60\r
95276127 61\r
62//\r
63// Private Data Structures\r
64//\r
65#define CONSOLE_SPLITTER_CONSOLES_ALLOC_UNIT 32\r
66#define CONSOLE_SPLITTER_MODES_ALLOC_UNIT 32\r
67#define MAX_STD_IN_PASSWORD 80\r
68\r
69typedef struct {\r
70 UINTN Columns;\r
71 UINTN Rows;\r
72} TEXT_OUT_SPLITTER_QUERY_DATA;\r
73\r
74//\r
75// Private data for the EFI_SIMPLE_TEXT_INPUT_PROTOCOL splitter\r
76//\r
77#define TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('T', 'i', 'S', 'p')\r
78\r
79typedef struct {\r
80 UINT64 Signature;\r
81 EFI_HANDLE VirtualHandle;\r
82\r
83 EFI_SIMPLE_TEXT_INPUT_PROTOCOL TextIn;\r
84 UINTN CurrentNumberOfConsoles;\r
85 EFI_SIMPLE_TEXT_INPUT_PROTOCOL **TextInList;\r
86 UINTN TextInListCount;\r
87\r
88 EFI_SIMPLE_POINTER_PROTOCOL SimplePointer;\r
89 EFI_SIMPLE_POINTER_MODE SimplePointerMode;\r
90 UINTN CurrentNumberOfPointers;\r
91 EFI_SIMPLE_POINTER_PROTOCOL **PointerList;\r
92 UINTN PointerListCount;\r
93\r
94 BOOLEAN PasswordEnabled;\r
95 CHAR16 Password[MAX_STD_IN_PASSWORD];\r
96 UINTN PwdIndex;\r
97 CHAR16 PwdAttempt[MAX_STD_IN_PASSWORD];\r
98 EFI_EVENT LockEvent;\r
99\r
100 BOOLEAN KeyEventSignalState;\r
101 BOOLEAN InputEventSignalState;\r
102} TEXT_IN_SPLITTER_PRIVATE_DATA;\r
103\r
104#define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
105 CR ((a), \\r
106 TEXT_IN_SPLITTER_PRIVATE_DATA, \\r
107 TextIn, \\r
108 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
109 )\r
110\r
111#define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_SIMPLE_POINTER_THIS(a) \\r
112 CR ((a), \\r
113 TEXT_IN_SPLITTER_PRIVATE_DATA, \\r
114 SimplePointer, \\r
115 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
116 )\r
117\r
118//\r
119// Private data for the EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL splitter\r
120//\r
121#define TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('T', 'o', 'S', 'p')\r
122\r
123typedef struct {\r
124 EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput;\r
125 EFI_UGA_DRAW_PROTOCOL *UgaDraw;\r
126 EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *TextOut;\r
127 BOOLEAN TextOutEnabled;\r
128} TEXT_OUT_AND_GOP_DATA;\r
129\r
130typedef struct {\r
131 UINT32 HorizontalResolution;\r
132 UINT32 VerticalResolution;\r
133} TEXT_OUT_GOP_MODE;\r
134\r
135typedef struct {\r
136 UINT64 Signature;\r
137 EFI_HANDLE VirtualHandle;\r
138 EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL TextOut;\r
139 EFI_SIMPLE_TEXT_OUTPUT_MODE TextOutMode;\r
140\r
d0c64728 141 EFI_UGA_DRAW_PROTOCOL UgaDraw;\r
142 UINT32 UgaHorizontalResolution;\r
143 UINT32 UgaVerticalResolution;\r
144 UINT32 UgaColorDepth;\r
145 UINT32 UgaRefreshRate;\r
146 EFI_UGA_PIXEL *UgaBlt;\r
147\r
95276127 148 EFI_GRAPHICS_OUTPUT_PROTOCOL GraphicsOutput;\r
149 EFI_GRAPHICS_OUTPUT_BLT_PIXEL *GraphicsOutputBlt;\r
150 TEXT_OUT_GOP_MODE *GraphicsOutputModeBuffer;\r
151 UINTN CurrentNumberOfGraphicsOutput;\r
152 BOOLEAN HardwareNeedsStarting;\r
153\r
154 EFI_CONSOLE_CONTROL_PROTOCOL ConsoleControl;\r
155\r
156 UINTN CurrentNumberOfConsoles;\r
157 TEXT_OUT_AND_GOP_DATA *TextOutList;\r
158 UINTN TextOutListCount;\r
159 TEXT_OUT_SPLITTER_QUERY_DATA *TextOutQueryData;\r
160 UINTN TextOutQueryDataCount;\r
161 INT32 *TextOutModeMap;\r
162\r
d0c64728 163 EFI_CONSOLE_CONTROL_SCREEN_MODE ConsoleOutputMode;\r
95276127 164\r
d0c64728 165 UINTN DevNullColumns;\r
166 UINTN DevNullRows;\r
167 CHAR16 *DevNullScreen;\r
168 INT32 *DevNullAttributes;\r
95276127 169\r
170} TEXT_OUT_SPLITTER_PRIVATE_DATA;\r
171\r
172#define TEXT_OUT_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
173 CR ((a), \\r
174 TEXT_OUT_SPLITTER_PRIVATE_DATA, \\r
175 TextOut, \\r
176 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
177 )\r
178\r
179#define GRAPHICS_OUTPUT_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
180 CR ((a), \\r
181 TEXT_OUT_SPLITTER_PRIVATE_DATA, \\r
182 GraphicsOutput, \\r
183 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
184 )\r
185\r
186#define UGA_DRAW_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
187 CR ((a), \\r
188 TEXT_OUT_SPLITTER_PRIVATE_DATA, \\r
189 UgaDraw, \\r
190 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
191 )\r
192\r
193#define CONSOLE_CONTROL_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
194 CR ((a), \\r
195 TEXT_OUT_SPLITTER_PRIVATE_DATA, \\r
196 ConsoleControl, \\r
197 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
198 )\r
199\r
200//\r
201// Function Prototypes\r
202//\r
203EFI_STATUS\r
204EFIAPI\r
205ConSplitterDriverEntry (\r
206 IN EFI_HANDLE ImageHandle,\r
207 IN EFI_SYSTEM_TABLE *SystemTable\r
208 )\r
209;\r
210\r
211EFI_STATUS\r
212ConSplitterTextInConstructor (\r
213 TEXT_IN_SPLITTER_PRIVATE_DATA *Private\r
214 )\r
215;\r
216\r
217EFI_STATUS\r
218ConSplitterTextOutConstructor (\r
219 TEXT_OUT_SPLITTER_PRIVATE_DATA *Private\r
220 )\r
221;\r
222\r
223//\r
224// Driver Binding Functions\r
225//\r
226EFI_STATUS\r
227EFIAPI\r
228ConSplitterConInDriverBindingSupported (\r
229 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
230 IN EFI_HANDLE ControllerHandle,\r
231 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
232 )\r
233;\r
234\r
235EFI_STATUS\r
236EFIAPI\r
237ConSplitterSimplePointerDriverBindingSupported (\r
238 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
239 IN EFI_HANDLE ControllerHandle,\r
240 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
241 )\r
242;\r
243\r
244EFI_STATUS\r
245EFIAPI\r
246ConSplitterConOutDriverBindingSupported (\r
247 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
248 IN EFI_HANDLE ControllerHandle,\r
249 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
250 )\r
251;\r
252\r
253EFI_STATUS\r
254EFIAPI\r
255ConSplitterStdErrDriverBindingSupported (\r
256 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
257 IN EFI_HANDLE ControllerHandle,\r
258 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
259 )\r
260;\r
261\r
262EFI_STATUS\r
263EFIAPI\r
264ConSplitterConInDriverBindingStart (\r
265 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
266 IN EFI_HANDLE ControllerHandle,\r
267 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
268 )\r
269;\r
270\r
271EFI_STATUS\r
272EFIAPI\r
273ConSplitterSimplePointerDriverBindingStart (\r
274 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
275 IN EFI_HANDLE ControllerHandle,\r
276 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
277 )\r
278;\r
279\r
280EFI_STATUS\r
281EFIAPI\r
282ConSplitterConOutDriverBindingStart (\r
283 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
284 IN EFI_HANDLE ControllerHandle,\r
285 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
286 )\r
287;\r
288\r
289EFI_STATUS\r
290EFIAPI\r
291ConSplitterStdErrDriverBindingStart (\r
292 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
293 IN EFI_HANDLE ControllerHandle,\r
294 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
295 )\r
296;\r
297\r
298EFI_STATUS\r
299EFIAPI\r
300ConSplitterConInDriverBindingStop (\r
301 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
302 IN EFI_HANDLE ControllerHandle,\r
303 IN UINTN NumberOfChildren,\r
304 IN EFI_HANDLE *ChildHandleBuffer\r
305 )\r
306;\r
307\r
308EFI_STATUS\r
309EFIAPI\r
310ConSplitterSimplePointerDriverBindingStop (\r
311 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
312 IN EFI_HANDLE ControllerHandle,\r
313 IN UINTN NumberOfChildren,\r
314 IN EFI_HANDLE *ChildHandleBuffer\r
315 )\r
316;\r
317\r
318EFI_STATUS\r
319EFIAPI\r
320ConSplitterConOutDriverBindingStop (\r
321 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
322 IN EFI_HANDLE ControllerHandle,\r
323 IN UINTN NumberOfChildren,\r
324 IN EFI_HANDLE *ChildHandleBuffer\r
325 )\r
326;\r
327\r
328EFI_STATUS\r
329EFIAPI\r
330ConSplitterStdErrDriverBindingStop (\r
331 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
332 IN EFI_HANDLE ControllerHandle,\r
333 IN UINTN NumberOfChildren,\r
334 IN EFI_HANDLE *ChildHandleBuffer\r
335 )\r
336;\r
337\r
5bca971e 338/**\r
339 Retrieves a Unicode string that is the user readable name of the driver.\r
340\r
341 This function retrieves the user readable name of a driver in the form of a\r
342 Unicode string. If the driver specified by This has a user readable name in\r
343 the language specified by Language, then a pointer to the driver name is\r
344 returned in DriverName, and EFI_SUCCESS is returned. If the driver specified\r
345 by This does not support the language specified by Language,\r
346 then EFI_UNSUPPORTED is returned.\r
347\r
348 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
349 EFI_COMPONENT_NAME_PROTOCOL instance.\r
350\r
351 @param Language[in] A pointer to a Null-terminated ASCII string\r
352 array indicating the language. This is the\r
353 language of the driver name that the caller is\r
354 requesting, and it must match one of the\r
355 languages specified in SupportedLanguages. The\r
356 number of languages supported by a driver is up\r
357 to the driver writer. Language is specified\r
358 in RFC 3066 or ISO 639-2 language code format.\r
359\r
360 @param DriverName[out] A pointer to the Unicode string to return.\r
361 This Unicode string is the name of the\r
362 driver specified by This in the language\r
363 specified by Language.\r
364\r
365 @retval EFI_SUCCESS The Unicode string for the Driver specified by\r
366 This and the language specified by Language was\r
367 returned in DriverName.\r
368\r
369 @retval EFI_INVALID_PARAMETER Language is NULL.\r
370\r
371 @retval EFI_INVALID_PARAMETER DriverName is NULL.\r
372\r
373 @retval EFI_UNSUPPORTED The driver specified by This does not support\r
374 the language specified by Language.\r
375\r
376**/\r
95276127 377EFI_STATUS\r
378EFIAPI\r
379ConSplitterComponentNameGetDriverName (\r
380 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
381 IN CHAR8 *Language,\r
382 OUT CHAR16 **DriverName\r
383 );\r
384\r
5bca971e 385\r
386/**\r
387 Retrieves a Unicode string that is the user readable name of the controller\r
388 that is being managed by a driver.\r
389\r
390 This function retrieves the user readable name of the controller specified by\r
391 ControllerHandle and ChildHandle in the form of a Unicode string. If the\r
392 driver specified by This has a user readable name in the language specified by\r
393 Language, then a pointer to the controller name is returned in ControllerName,\r
394 and EFI_SUCCESS is returned. If the driver specified by This is not currently\r
395 managing the controller specified by ControllerHandle and ChildHandle,\r
396 then EFI_UNSUPPORTED is returned. If the driver specified by This does not\r
397 support the language specified by Language, then EFI_UNSUPPORTED is returned.\r
398\r
399 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
400 EFI_COMPONENT_NAME_PROTOCOL instance.\r
401\r
402 @param ControllerHandle[in] The handle of a controller that the driver\r
403 specified by This is managing. This handle\r
404 specifies the controller whose name is to be\r
405 returned.\r
406\r
407 @param ChildHandle[in] The handle of the child controller to retrieve\r
408 the name of. This is an optional parameter that\r
409 may be NULL. It will be NULL for device\r
410 drivers. It will also be NULL for a bus drivers\r
411 that wish to retrieve the name of the bus\r
412 controller. It will not be NULL for a bus\r
413 driver that wishes to retrieve the name of a\r
414 child controller.\r
415\r
416 @param Language[in] A pointer to a Null-terminated ASCII string\r
417 array indicating the language. This is the\r
418 language of the driver name that the caller is\r
419 requesting, and it must match one of the\r
420 languages specified in SupportedLanguages. The\r
421 number of languages supported by a driver is up\r
422 to the driver writer. Language is specified in\r
423 RFC 3066 or ISO 639-2 language code format.\r
424\r
425 @param ControllerName[out] A pointer to the Unicode string to return.\r
426 This Unicode string is the name of the\r
427 controller specified by ControllerHandle and\r
428 ChildHandle in the language specified by\r
429 Language from the point of view of the driver\r
430 specified by This.\r
431\r
432 @retval EFI_SUCCESS The Unicode string for the user readable name in\r
433 the language specified by Language for the\r
434 driver specified by This was returned in\r
435 DriverName.\r
436\r
437 @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
438\r
439 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
440 EFI_HANDLE.\r
441\r
442 @retval EFI_INVALID_PARAMETER Language is NULL.\r
443\r
444 @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
445\r
446 @retval EFI_UNSUPPORTED The driver specified by This is not currently\r
447 managing the controller specified by\r
448 ControllerHandle and ChildHandle.\r
449\r
450 @retval EFI_UNSUPPORTED The driver specified by This does not support\r
451 the language specified by Language.\r
452\r
453**/\r
95276127 454EFI_STATUS\r
455EFIAPI\r
456ConSplitterConInComponentNameGetControllerName (\r
457 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
458 IN EFI_HANDLE ControllerHandle,\r
459 IN EFI_HANDLE ChildHandle OPTIONAL,\r
460 IN CHAR8 *Language,\r
461 OUT CHAR16 **ControllerName\r
462 );\r
463\r
5bca971e 464\r
465/**\r
466 Retrieves a Unicode string that is the user readable name of the controller\r
467 that is being managed by a driver.\r
468\r
469 This function retrieves the user readable name of the controller specified by\r
470 ControllerHandle and ChildHandle in the form of a Unicode string. If the\r
471 driver specified by This has a user readable name in the language specified by\r
472 Language, then a pointer to the controller name is returned in ControllerName,\r
473 and EFI_SUCCESS is returned. If the driver specified by This is not currently\r
474 managing the controller specified by ControllerHandle and ChildHandle,\r
475 then EFI_UNSUPPORTED is returned. If the driver specified by This does not\r
476 support the language specified by Language, then EFI_UNSUPPORTED is returned.\r
477\r
478 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
479 EFI_COMPONENT_NAME_PROTOCOL instance.\r
480\r
481 @param ControllerHandle[in] The handle of a controller that the driver\r
482 specified by This is managing. This handle\r
483 specifies the controller whose name is to be\r
484 returned.\r
485\r
486 @param ChildHandle[in] The handle of the child controller to retrieve\r
487 the name of. This is an optional parameter that\r
488 may be NULL. It will be NULL for device\r
489 drivers. It will also be NULL for a bus drivers\r
490 that wish to retrieve the name of the bus\r
491 controller. It will not be NULL for a bus\r
492 driver that wishes to retrieve the name of a\r
493 child controller.\r
494\r
495 @param Language[in] A pointer to a Null-terminated ASCII string\r
496 array indicating the language. This is the\r
497 language of the driver name that the caller is\r
498 requesting, and it must match one of the\r
499 languages specified in SupportedLanguages. The\r
500 number of languages supported by a driver is up\r
501 to the driver writer. Language is specified in\r
502 RFC 3066 or ISO 639-2 language code format.\r
503\r
504 @param ControllerName[out] A pointer to the Unicode string to return.\r
505 This Unicode string is the name of the\r
506 controller specified by ControllerHandle and\r
507 ChildHandle in the language specified by\r
508 Language from the point of view of the driver\r
509 specified by This.\r
510\r
511 @retval EFI_SUCCESS The Unicode string for the user readable name in\r
512 the language specified by Language for the\r
513 driver specified by This was returned in\r
514 DriverName.\r
515\r
516 @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
517\r
518 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
519 EFI_HANDLE.\r
520\r
521 @retval EFI_INVALID_PARAMETER Language is NULL.\r
522\r
523 @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
524\r
525 @retval EFI_UNSUPPORTED The driver specified by This is not currently\r
526 managing the controller specified by\r
527 ControllerHandle and ChildHandle.\r
528\r
529 @retval EFI_UNSUPPORTED The driver specified by This does not support\r
530 the language specified by Language.\r
531\r
532**/\r
95276127 533EFI_STATUS\r
534EFIAPI\r
535ConSplitterSimplePointerComponentNameGetControllerName (\r
536 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
537 IN EFI_HANDLE ControllerHandle,\r
538 IN EFI_HANDLE ChildHandle OPTIONAL,\r
539 IN CHAR8 *Language,\r
540 OUT CHAR16 **ControllerName\r
541 );\r
542\r
5bca971e 543\r
544/**\r
545 Retrieves a Unicode string that is the user readable name of the controller\r
546 that is being managed by a driver.\r
547\r
548 This function retrieves the user readable name of the controller specified by\r
549 ControllerHandle and ChildHandle in the form of a Unicode string. If the\r
550 driver specified by This has a user readable name in the language specified by\r
551 Language, then a pointer to the controller name is returned in ControllerName,\r
552 and EFI_SUCCESS is returned. If the driver specified by This is not currently\r
553 managing the controller specified by ControllerHandle and ChildHandle,\r
554 then EFI_UNSUPPORTED is returned. If the driver specified by This does not\r
555 support the language specified by Language, then EFI_UNSUPPORTED is returned.\r
556\r
557 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
558 EFI_COMPONENT_NAME_PROTOCOL instance.\r
559\r
560 @param ControllerHandle[in] The handle of a controller that the driver\r
561 specified by This is managing. This handle\r
562 specifies the controller whose name is to be\r
563 returned.\r
564\r
565 @param ChildHandle[in] The handle of the child controller to retrieve\r
566 the name of. This is an optional parameter that\r
567 may be NULL. It will be NULL for device\r
568 drivers. It will also be NULL for a bus drivers\r
569 that wish to retrieve the name of the bus\r
570 controller. It will not be NULL for a bus\r
571 driver that wishes to retrieve the name of a\r
572 child controller.\r
573\r
574 @param Language[in] A pointer to a Null-terminated ASCII string\r
575 array indicating the language. This is the\r
576 language of the driver name that the caller is\r
577 requesting, and it must match one of the\r
578 languages specified in SupportedLanguages. The\r
579 number of languages supported by a driver is up\r
580 to the driver writer. Language is specified in\r
581 RFC 3066 or ISO 639-2 language code format.\r
582\r
583 @param ControllerName[out] A pointer to the Unicode string to return.\r
584 This Unicode string is the name of the\r
585 controller specified by ControllerHandle and\r
586 ChildHandle in the language specified by\r
587 Language from the point of view of the driver\r
588 specified by This.\r
589\r
590 @retval EFI_SUCCESS The Unicode string for the user readable name in\r
591 the language specified by Language for the\r
592 driver specified by This was returned in\r
593 DriverName.\r
594\r
595 @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
596\r
597 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
598 EFI_HANDLE.\r
599\r
600 @retval EFI_INVALID_PARAMETER Language is NULL.\r
601\r
602 @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
603\r
604 @retval EFI_UNSUPPORTED The driver specified by This is not currently\r
605 managing the controller specified by\r
606 ControllerHandle and ChildHandle.\r
607\r
608 @retval EFI_UNSUPPORTED The driver specified by This does not support\r
609 the language specified by Language.\r
610\r
611**/\r
95276127 612EFI_STATUS\r
613EFIAPI\r
614ConSplitterConOutComponentNameGetControllerName (\r
615 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
616 IN EFI_HANDLE ControllerHandle,\r
617 IN EFI_HANDLE ChildHandle OPTIONAL,\r
618 IN CHAR8 *Language,\r
619 OUT CHAR16 **ControllerName\r
620 );\r
621\r
5bca971e 622\r
623/**\r
624 Retrieves a Unicode string that is the user readable name of the controller\r
625 that is being managed by a driver.\r
626\r
627 This function retrieves the user readable name of the controller specified by\r
628 ControllerHandle and ChildHandle in the form of a Unicode string. If the\r
629 driver specified by This has a user readable name in the language specified by\r
630 Language, then a pointer to the controller name is returned in ControllerName,\r
631 and EFI_SUCCESS is returned. If the driver specified by This is not currently\r
632 managing the controller specified by ControllerHandle and ChildHandle,\r
633 then EFI_UNSUPPORTED is returned. If the driver specified by This does not\r
634 support the language specified by Language, then EFI_UNSUPPORTED is returned.\r
635\r
636 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
637 EFI_COMPONENT_NAME_PROTOCOL instance.\r
638\r
639 @param ControllerHandle[in] The handle of a controller that the driver\r
640 specified by This is managing. This handle\r
641 specifies the controller whose name is to be\r
642 returned.\r
643\r
644 @param ChildHandle[in] The handle of the child controller to retrieve\r
645 the name of. This is an optional parameter that\r
646 may be NULL. It will be NULL for device\r
647 drivers. It will also be NULL for a bus drivers\r
648 that wish to retrieve the name of the bus\r
649 controller. It will not be NULL for a bus\r
650 driver that wishes to retrieve the name of a\r
651 child controller.\r
652\r
653 @param Language[in] A pointer to a Null-terminated ASCII string\r
654 array indicating the language. This is the\r
655 language of the driver name that the caller is\r
656 requesting, and it must match one of the\r
657 languages specified in SupportedLanguages. The\r
658 number of languages supported by a driver is up\r
659 to the driver writer. Language is specified in\r
660 RFC 3066 or ISO 639-2 language code format.\r
661\r
662 @param ControllerName[out] A pointer to the Unicode string to return.\r
663 This Unicode string is the name of the\r
664 controller specified by ControllerHandle and\r
665 ChildHandle in the language specified by\r
666 Language from the point of view of the driver\r
667 specified by This.\r
668\r
669 @retval EFI_SUCCESS The Unicode string for the user readable name in\r
670 the language specified by Language for the\r
671 driver specified by This was returned in\r
672 DriverName.\r
673\r
674 @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
675\r
676 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
677 EFI_HANDLE.\r
678\r
679 @retval EFI_INVALID_PARAMETER Language is NULL.\r
680\r
681 @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
682\r
683 @retval EFI_UNSUPPORTED The driver specified by This is not currently\r
684 managing the controller specified by\r
685 ControllerHandle and ChildHandle.\r
686\r
687 @retval EFI_UNSUPPORTED The driver specified by This does not support\r
688 the language specified by Language.\r
689\r
690**/\r
95276127 691EFI_STATUS\r
692EFIAPI\r
693ConSplitterStdErrComponentNameGetControllerName (\r
694 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
695 IN EFI_HANDLE ControllerHandle,\r
696 IN EFI_HANDLE ChildHandle OPTIONAL,\r
697 IN CHAR8 *Language,\r
698 OUT CHAR16 **ControllerName\r
699 );\r
700\r
5bca971e 701\r
95276127 702//\r
703// TextIn Constructor/Destructor functions\r
704//\r
705EFI_STATUS\r
706ConSplitterTextInAddDevice (\r
707 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
708 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *TextIn\r
709 )\r
710;\r
711\r
712EFI_STATUS\r
713ConSplitterTextInDeleteDevice (\r
714 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
715 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *TextIn\r
716 )\r
717;\r
718\r
719//\r
720// SimplePointer Constuctor/Destructor functions\r
721//\r
722EFI_STATUS\r
723ConSplitterSimplePointerAddDevice (\r
724 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
725 IN EFI_SIMPLE_POINTER_PROTOCOL *SimplePointer\r
726 )\r
727;\r
728\r
729EFI_STATUS\r
730ConSplitterSimplePointerDeleteDevice (\r
731 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
732 IN EFI_SIMPLE_POINTER_PROTOCOL *SimplePointer\r
733 )\r
734;\r
735\r
736//\r
737// TextOut Constuctor/Destructor functions\r
738//\r
739EFI_STATUS\r
740ConSplitterTextOutAddDevice (\r
741 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
742 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *TextOut,\r
743 IN EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput,\r
744 IN EFI_UGA_DRAW_PROTOCOL *UgaDraw\r
745 )\r
746;\r
747\r
748EFI_STATUS\r
749ConSplitterTextOutDeleteDevice (\r
750 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
751 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *TextOut\r
752 )\r
753;\r
754\r
755//\r
756// TextIn I/O Functions\r
757//\r
758EFI_STATUS\r
759EFIAPI\r
760ConSplitterTextInReset (\r
761 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This,\r
762 IN BOOLEAN ExtendedVerification\r
763 )\r
764;\r
765\r
766EFI_STATUS\r
767EFIAPI\r
768ConSplitterTextInReadKeyStroke (\r
769 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This,\r
770 OUT EFI_INPUT_KEY *Key\r
771 )\r
772;\r
773\r
774VOID\r
775EFIAPI\r
776ConSplitterTextInWaitForKey (\r
777 IN EFI_EVENT Event,\r
778 IN VOID *Context\r
779 )\r
780;\r
781\r
782BOOLEAN\r
783ConSpliterConssoleControlStdInLocked (\r
784 VOID\r
785 )\r
786;\r
787\r
788VOID\r
789EFIAPI\r
790ConSpliterConsoleControlLockStdInEvent (\r
791 IN EFI_EVENT Event,\r
792 IN VOID *Context\r
793 )\r
794;\r
795\r
796EFI_STATUS\r
797EFIAPI\r
798ConSpliterConsoleControlLockStdIn (\r
799 IN EFI_CONSOLE_CONTROL_PROTOCOL *This,\r
800 IN CHAR16 *Password\r
801 )\r
802;\r
803\r
804EFI_STATUS\r
805EFIAPI\r
806ConSplitterTextInPrivateReadKeyStroke (\r
807 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
808 OUT EFI_INPUT_KEY *Key\r
809 )\r
810;\r
811\r
812EFI_STATUS\r
813EFIAPI\r
814ConSplitterSimplePointerReset (\r
815 IN EFI_SIMPLE_POINTER_PROTOCOL *This,\r
816 IN BOOLEAN ExtendedVerification\r
817 )\r
818;\r
819\r
820EFI_STATUS\r
821EFIAPI\r
822ConSplitterSimplePointerGetState (\r
823 IN EFI_SIMPLE_POINTER_PROTOCOL *This,\r
824 IN OUT EFI_SIMPLE_POINTER_STATE *State\r
825 )\r
826;\r
827\r
828VOID\r
829EFIAPI\r
830ConSplitterSimplePointerWaitForInput (\r
831 IN EFI_EVENT Event,\r
832 IN VOID *Context\r
833 )\r
834;\r
835\r
836//\r
837// TextOut I/O Functions\r
838//\r
839VOID\r
840ConSplitterSynchronizeModeData (\r
841 TEXT_OUT_SPLITTER_PRIVATE_DATA *Private\r
842 )\r
843;\r
844\r
845EFI_STATUS\r
846EFIAPI\r
847ConSplitterTextOutReset (\r
848 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
849 IN BOOLEAN ExtendedVerification\r
850 )\r
851;\r
852\r
853EFI_STATUS\r
854EFIAPI\r
855ConSplitterTextOutOutputString (\r
856 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
857 IN CHAR16 *WString\r
858 )\r
859;\r
860\r
861EFI_STATUS\r
862EFIAPI\r
863ConSplitterTextOutTestString (\r
864 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
865 IN CHAR16 *WString\r
866 )\r
867;\r
868\r
869EFI_STATUS\r
870EFIAPI\r
871ConSplitterTextOutQueryMode (\r
872 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
873 IN UINTN ModeNumber,\r
874 OUT UINTN *Columns,\r
875 OUT UINTN *Rows\r
876 )\r
877;\r
878\r
879EFI_STATUS\r
880EFIAPI\r
881ConSplitterTextOutSetMode (\r
882 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
883 IN UINTN ModeNumber\r
884 )\r
885;\r
886\r
887EFI_STATUS\r
888EFIAPI\r
889ConSplitterTextOutSetAttribute (\r
890 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
891 IN UINTN Attribute\r
892 )\r
893;\r
894\r
895EFI_STATUS\r
896EFIAPI\r
897ConSplitterTextOutClearScreen (\r
898 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This\r
899 )\r
900;\r
901\r
902EFI_STATUS\r
903EFIAPI\r
904ConSplitterTextOutSetCursorPosition (\r
905 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
906 IN UINTN Column,\r
907 IN UINTN Row\r
908 )\r
909;\r
910\r
911EFI_STATUS\r
912EFIAPI\r
913ConSplitterTextOutEnableCursor (\r
914 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
915 IN BOOLEAN Visible\r
916 )\r
917;\r
918\r
919EFI_STATUS\r
920ConSplitterGrowBuffer (\r
921 IN UINTN SizeOfCount,\r
922 IN UINTN *Count,\r
923 IN OUT VOID **Buffer\r
924 )\r
925;\r
926\r
927EFI_STATUS\r
928EFIAPI\r
929ConSpliterConsoleControlGetMode (\r
930 IN EFI_CONSOLE_CONTROL_PROTOCOL *This,\r
931 OUT EFI_CONSOLE_CONTROL_SCREEN_MODE *Mode,\r
932 OUT BOOLEAN *GopExists,\r
933 OUT BOOLEAN *StdInLocked\r
934 )\r
935;\r
936\r
937EFI_STATUS\r
938EFIAPI\r
939ConSpliterConsoleControlSetMode (\r
940 IN EFI_CONSOLE_CONTROL_PROTOCOL *This,\r
941 IN EFI_CONSOLE_CONTROL_SCREEN_MODE Mode\r
942 )\r
943;\r
944\r
945EFI_STATUS\r
946EFIAPI\r
947ConSpliterGraphicsOutputQueryMode (\r
948 IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,\r
949 IN UINT32 ModeNumber,\r
950 OUT UINTN *SizeOfInfo,\r
951 OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION **Info\r
952 )\r
953;\r
954\r
955EFI_STATUS\r
956EFIAPI\r
957ConSpliterGraphicsOutputSetMode (\r
958 IN EFI_GRAPHICS_OUTPUT_PROTOCOL * This,\r
959 IN UINT32 ModeNumber\r
960 )\r
961;\r
962\r
963EFI_STATUS\r
964EFIAPI\r
965ConSpliterGraphicsOutputBlt (\r
966 IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,\r
967 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer, OPTIONAL\r
968 IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation,\r
969 IN UINTN SourceX,\r
970 IN UINTN SourceY,\r
971 IN UINTN DestinationX,\r
972 IN UINTN DestinationY,\r
973 IN UINTN Width,\r
974 IN UINTN Height,\r
975 IN UINTN Delta OPTIONAL\r
976 )\r
977;\r
978\r
979EFI_STATUS\r
980DevNullGopSync (\r
981 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
982 IN EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput,\r
983 IN EFI_UGA_DRAW_PROTOCOL *UgaDraw\r
984 )\r
985;\r
986\r
d0c64728 987EFI_STATUS\r
988EFIAPI\r
989ConSpliterUgaDrawGetMode (\r
990 IN EFI_UGA_DRAW_PROTOCOL *This,\r
991 OUT UINT32 *HorizontalResolution,\r
992 OUT UINT32 *VerticalResolution,\r
993 OUT UINT32 *ColorDepth,\r
994 OUT UINT32 *RefreshRate\r
995 )\r
996;\r
997\r
998EFI_STATUS\r
999EFIAPI\r
1000ConSpliterUgaDrawSetMode (\r
1001 IN EFI_UGA_DRAW_PROTOCOL *This,\r
1002 IN UINT32 HorizontalResolution,\r
1003 IN UINT32 VerticalResolution,\r
1004 IN UINT32 ColorDepth,\r
1005 IN UINT32 RefreshRate\r
1006 )\r
1007;\r
1008\r
1009EFI_STATUS\r
1010EFIAPI\r
1011ConSpliterUgaDrawBlt (\r
1012 IN EFI_UGA_DRAW_PROTOCOL *This,\r
1013 IN EFI_UGA_PIXEL *BltBuffer, OPTIONAL\r
1014 IN EFI_UGA_BLT_OPERATION BltOperation,\r
1015 IN UINTN SourceX,\r
1016 IN UINTN SourceY,\r
1017 IN UINTN DestinationX,\r
1018 IN UINTN DestinationY,\r
1019 IN UINTN Width,\r
1020 IN UINTN Height,\r
1021 IN UINTN Delta OPTIONAL\r
1022 )\r
1023;\r
1024\r
1025EFI_STATUS\r
1026DevNullUgaSync (\r
1027 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
1028 IN EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput,\r
1029 IN EFI_UGA_DRAW_PROTOCOL *UgaDraw\r
1030 )\r
1031;\r
95276127 1032\r
1033EFI_STATUS\r
1034DevNullTextOutOutputString (\r
1035 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
1036 IN CHAR16 *WString\r
1037 )\r
1038;\r
1039\r
1040EFI_STATUS\r
1041DevNullTextOutSetMode (\r
1042 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
1043 IN UINTN ModeNumber\r
1044 )\r
1045;\r
1046\r
1047EFI_STATUS\r
1048DevNullTextOutClearScreen (\r
1049 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private\r
1050 )\r
1051;\r
1052\r
1053EFI_STATUS\r
1054DevNullTextOutSetCursorPosition (\r
1055 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
1056 IN UINTN Column,\r
1057 IN UINTN Row\r
1058 )\r
1059;\r
1060\r
1061EFI_STATUS\r
1062DevNullTextOutEnableCursor (\r
1063 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
1064 IN BOOLEAN Visible\r
1065 )\r
1066;\r
1067\r
1068EFI_STATUS\r
1069DevNullSyncGopStdOut (\r
1070 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private\r
1071 )\r
1072;\r
1073\r
1074#endif\r