]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitter.h
Fix the issue that consplitter should not touch ConIn variable & do ConIn connection
[mirror_edk2.git] / MdeModulePkg / Universal / Console / ConSplitterDxe / ConSplitter.h
CommitLineData
a4d608d1 1/** @file\r
95276127 2 Private data structures for the Console Splitter driver\r
3\r
a9746199 4Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>\r
e5eed7d3 5This program and the accompanying materials\r
95276127 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
60c93673 18#include <Uefi.h>\r
838a9c58 19#include <PiDxe.h>\r
20\r
21#include <IndustryStandard/Pci.h>\r
fc753d3b 22\r
23#include <Protocol/DevicePath.h>\r
24#include <Protocol/ComponentName.h>\r
25#include <Protocol/DriverBinding.h>\r
97a079ed 26#include <Protocol/SimplePointer.h>\r
8ae0b360 27#include <Protocol/AbsolutePointer.h>\r
97a079ed 28#include <Protocol/SimpleTextOut.h>\r
97a079ed 29#include <Protocol/SimpleTextIn.h>\r
66aa04e4 30#include <Protocol/SimpleTextInEx.h>\r
fc753d3b 31#include <Protocol/GraphicsOutput.h>\r
32#include <Protocol/UgaDraw.h>\r
838a9c58 33#include <Protocol/PciIo.h>\r
fc753d3b 34\r
fc753d3b 35#include <Guid/ConsoleInDevice.h>\r
97a079ed
A
36#include <Guid/StandardErrorDevice.h>\r
37#include <Guid/ConsoleOutDevice.h>\r
fc753d3b 38\r
d0c64728 39#include <Library/PcdLib.h>\r
97a079ed
A
40#include <Library/DebugLib.h>\r
41#include <Library/UefiDriverEntryPoint.h>\r
42#include <Library/UefiLib.h>\r
43#include <Library/BaseLib.h>\r
44#include <Library/BaseMemoryLib.h>\r
45#include <Library/MemoryAllocationLib.h>\r
46#include <Library/UefiBootServicesTableLib.h>\r
189eac21 47#include <Library/UefiRuntimeServicesTableLib.h>\r
838a9c58 48#include <Library/DevicePathLib.h>\r
49#include <Library/DxeServicesTableLib.h>\r
189eac21 50\r
97a079ed 51\r
95276127 52//\r
97a079ed 53// Driver Binding Externs\r
95276127 54//\r
5bca971e 55extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterConInDriverBinding;\r
56extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterConInComponentName;\r
57extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConInComponentName2;\r
58extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterSimplePointerDriverBinding;\r
59extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterSimplePointerComponentName;\r
60extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterSimplePointerComponentName2;\r
b71f6b3c 61extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterAbsolutePointerDriverBinding;\r
8ae0b360 62extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterAbsolutePointerComponentName;\r
63extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterAbsolutePointerComponentName2;\r
5bca971e 64extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterConOutDriverBinding;\r
65extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterConOutComponentName;\r
66extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConOutComponentName2;\r
67extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterStdErrDriverBinding;\r
68extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterStdErrComponentName;\r
69extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterStdErrComponentName2;\r
97a079ed 70\r
66aa04e4 71\r
fc753d3b 72//\r
97a079ed
A
73// These definitions were in the old Hii protocol, but are not in the new UEFI\r
74// version. So they are defined locally.\r
fc753d3b 75//\r
97a079ed 76#define UNICODE_NARROW_CHAR 0xFFF0\r
d0c64728 77#define UNICODE_WIDE_CHAR 0xFFF1\r
97a079ed 78\r
95276127 79\r
80//\r
81// Private Data Structures\r
82//\r
a9746199 83#define CONSOLE_SPLITTER_ALLOC_UNIT 32\r
95276127 84\r
189eac21 85\r
86typedef struct {\r
87 UINTN Column;\r
88 UINTN Row;\r
89} CONSOLE_OUT_MODE;\r
90\r
95276127 91typedef struct {\r
2da292f6 92 UINTN Columns;\r
93 UINTN Rows;\r
95276127 94} TEXT_OUT_SPLITTER_QUERY_DATA;\r
95\r
95276127 96\r
fc753d3b 97#define TEXT_IN_EX_SPLITTER_NOTIFY_SIGNATURE SIGNATURE_32 ('T', 'i', 'S', 'n')\r
66aa04e4 98\r
fc753d3b 99//\r
100// Private data for Text In Ex Splitter Notify\r
101//\r
66aa04e4 102typedef struct _TEXT_IN_EX_SPLITTER_NOTIFY {\r
103 UINTN Signature;\r
402e4a9d 104 VOID **NotifyHandleList;\r
66aa04e4 105 EFI_KEY_DATA KeyData;\r
106 EFI_KEY_NOTIFY_FUNCTION KeyNotificationFn;\r
107 LIST_ENTRY NotifyEntry;\r
108} TEXT_IN_EX_SPLITTER_NOTIFY;\r
8ae0b360 109\r
fc753d3b 110#define TEXT_IN_EX_SPLITTER_NOTIFY_FROM_THIS(a) \\r
111 CR ((a), \\r
112 TEXT_IN_EX_SPLITTER_NOTIFY, \\r
113 NotifyEntry, \\r
114 TEXT_IN_EX_SPLITTER_NOTIFY_SIGNATURE \\r
115 )\r
116\r
117#define TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('T', 'i', 'S', 'p')\r
118\r
119//\r
120// Private data for the Console In splitter\r
121//\r
95276127 122typedef struct {\r
db9d722d 123 UINT64 Signature;\r
124 EFI_HANDLE VirtualHandle;\r
125\r
126 EFI_SIMPLE_TEXT_INPUT_PROTOCOL TextIn;\r
127 UINTN CurrentNumberOfConsoles;\r
128 EFI_SIMPLE_TEXT_INPUT_PROTOCOL **TextInList;\r
129 UINTN TextInListCount;\r
130\r
131 EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL TextInEx;\r
132 UINTN CurrentNumberOfExConsoles;\r
133 EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL **TextInExList;\r
134 UINTN TextInExListCount;\r
aec072ad 135 LIST_ENTRY NotifyList;\r
db9d722d 136\r
137\r
138 EFI_SIMPLE_POINTER_PROTOCOL SimplePointer;\r
139 EFI_SIMPLE_POINTER_MODE SimplePointerMode;\r
140 UINTN CurrentNumberOfPointers;\r
141 EFI_SIMPLE_POINTER_PROTOCOL **PointerList;\r
142 UINTN PointerListCount;\r
143\r
144 EFI_ABSOLUTE_POINTER_PROTOCOL AbsolutePointer;\r
145 EFI_ABSOLUTE_POINTER_MODE AbsolutePointerMode;\r
146 UINTN CurrentNumberOfAbsolutePointers;\r
147 EFI_ABSOLUTE_POINTER_PROTOCOL **AbsolutePointerList;\r
148 UINTN AbsolutePointerListCount;\r
aec072ad 149 BOOLEAN AbsoluteInputEventSignalState;\r
db9d722d 150\r
db9d722d 151 BOOLEAN KeyEventSignalState;\r
152 BOOLEAN InputEventSignalState;\r
95276127 153} TEXT_IN_SPLITTER_PRIVATE_DATA;\r
154\r
155#define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
fc753d3b 156 CR ((a), \\r
95276127 157 TEXT_IN_SPLITTER_PRIVATE_DATA, \\r
158 TextIn, \\r
159 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
160 )\r
161\r
162#define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_SIMPLE_POINTER_THIS(a) \\r
fc753d3b 163 CR ((a), \\r
95276127 164 TEXT_IN_SPLITTER_PRIVATE_DATA, \\r
165 SimplePointer, \\r
166 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
167 )\r
66aa04e4 168#define TEXT_IN_EX_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
fc753d3b 169 CR (a, \\r
170 TEXT_IN_SPLITTER_PRIVATE_DATA, \\r
171 TextInEx, \\r
172 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
66aa04e4 173 )\r
174\r
175#define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_ABSOLUTE_POINTER_THIS(a) \\r
fc753d3b 176 CR (a, \\r
177 TEXT_IN_SPLITTER_PRIVATE_DATA, \\r
178 AbsolutePointer, \\r
179 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
66aa04e4 180 )\r
95276127 181\r
fc753d3b 182\r
f3f2e05d 183#define TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('T', 'o', 'S', 'p')\r
95276127 184\r
185typedef struct {\r
186 EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput;\r
187 EFI_UGA_DRAW_PROTOCOL *UgaDraw;\r
188 EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *TextOut;\r
95276127 189} TEXT_OUT_AND_GOP_DATA;\r
190\r
fc753d3b 191//\r
192// Private data for the Console Out splitter\r
193//\r
95276127 194typedef struct {\r
4b5c4fba 195 UINT64 Signature;\r
196 EFI_HANDLE VirtualHandle;\r
197 EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL TextOut;\r
198 EFI_SIMPLE_TEXT_OUTPUT_MODE TextOutMode;\r
ed055f1b 199\r
4b5c4fba 200 EFI_UGA_DRAW_PROTOCOL UgaDraw;\r
201 UINT32 UgaHorizontalResolution;\r
202 UINT32 UgaVerticalResolution;\r
203 UINT32 UgaColorDepth;\r
204 UINT32 UgaRefreshRate;\r
ed055f1b 205\r
4b5c4fba 206 EFI_GRAPHICS_OUTPUT_PROTOCOL GraphicsOutput;\r
aec072ad 207 EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *GraphicsOutputModeBuffer;\r
4b5c4fba 208 UINTN CurrentNumberOfGraphicsOutput;\r
209 UINTN CurrentNumberOfUgaDraw;\r
ed055f1b 210\r
4b5c4fba 211 UINTN CurrentNumberOfConsoles;\r
212 TEXT_OUT_AND_GOP_DATA *TextOutList;\r
213 UINTN TextOutListCount;\r
214 TEXT_OUT_SPLITTER_QUERY_DATA *TextOutQueryData;\r
215 UINTN TextOutQueryDataCount;\r
216 INT32 *TextOutModeMap;\r
ed055f1b 217\r
95276127 218} TEXT_OUT_SPLITTER_PRIVATE_DATA;\r
219\r
220#define TEXT_OUT_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
fc753d3b 221 CR ((a), \\r
95276127 222 TEXT_OUT_SPLITTER_PRIVATE_DATA, \\r
223 TextOut, \\r
224 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
225 )\r
226\r
227#define GRAPHICS_OUTPUT_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
fc753d3b 228 CR ((a), \\r
95276127 229 TEXT_OUT_SPLITTER_PRIVATE_DATA, \\r
230 GraphicsOutput, \\r
231 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
232 )\r
233\r
234#define UGA_DRAW_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
fc753d3b 235 CR ((a), \\r
95276127 236 TEXT_OUT_SPLITTER_PRIVATE_DATA, \\r
237 UgaDraw, \\r
238 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
239 )\r
240\r
241#define CONSOLE_CONTROL_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
fc753d3b 242 CR ((a), \\r
95276127 243 TEXT_OUT_SPLITTER_PRIVATE_DATA, \\r
244 ConsoleControl, \\r
245 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
246 )\r
247\r
248//\r
249// Function Prototypes\r
250//\r
415df2a3 251\r
252/**\r
253 The user Entry Point for module ConSplitter. The user code starts with this function.\r
254\r
255 Installs driver module protocols and. Creates virtual device handles for ConIn,\r
256 ConOut, and StdErr. Installs Simple Text In protocol, Simple Text In Ex protocol,\r
ed055f1b 257 Simple Pointer protocol, Absolute Pointer protocol on those virtual handlers.\r
415df2a3 258 Installs Graphics Output protocol and/or UGA Draw protocol if needed.\r
259\r
260 @param[in] ImageHandle The firmware allocated handle for the EFI image.\r
261 @param[in] SystemTable A pointer to the EFI System Table.\r
262\r
263 @retval EFI_SUCCESS The entry point is executed successfully.\r
264 @retval other Some error occurs when executing this entry point.\r
265\r
266**/\r
95276127 267EFI_STATUS\r
268EFIAPI\r
269ConSplitterDriverEntry (\r
270 IN EFI_HANDLE ImageHandle,\r
271 IN EFI_SYSTEM_TABLE *SystemTable\r
ed66e1bc 272 );\r
95276127 273\r
a4d608d1 274/**\r
4b5c4fba 275 Construct console input devices' private data.\r
a4d608d1 276\r
277 @param ConInPrivate A pointer to the TEXT_IN_SPLITTER_PRIVATE_DATA\r
278 structure.\r
279\r
280 @retval EFI_OUT_OF_RESOURCES Out of resources.\r
fc753d3b 281 @retval EFI_SUCCESS Text Input Devcie's private data has been constructed.\r
4b5c4fba 282 @retval other Failed to construct private data.\r
a4d608d1 283\r
284**/\r
95276127 285EFI_STATUS\r
286ConSplitterTextInConstructor (\r
fc753d3b 287 TEXT_IN_SPLITTER_PRIVATE_DATA *ConInPrivate\r
ed66e1bc 288 );\r
95276127 289\r
415df2a3 290/**\r
291 Construct console output devices' private data.\r
292\r
fc753d3b 293 @param ConOutPrivate A pointer to the TEXT_OUT_SPLITTER_PRIVATE_DATA\r
415df2a3 294 structure.\r
295\r
296 @retval EFI_OUT_OF_RESOURCES Out of resources.\r
4b5c4fba 297 @retval EFI_SUCCESS Text Input Devcie's private data has been constructed.\r
415df2a3 298\r
299**/\r
95276127 300EFI_STATUS\r
301ConSplitterTextOutConstructor (\r
fc753d3b 302 TEXT_OUT_SPLITTER_PRIVATE_DATA *ConOutPrivate\r
ed66e1bc 303 );\r
95276127 304\r
a4d608d1 305\r
306/**\r
ed055f1b 307 Test to see if Console In Device could be supported on the Controller.\r
a4d608d1 308\r
fc753d3b 309 @param This Driver Binding protocol instance pointer.\r
4b5c4fba 310 @param ControllerHandle Handle of device to test.\r
311 @param RemainingDevicePath Optional parameter use to pick a specific child\r
312 device to start.\r
a4d608d1 313\r
4b5c4fba 314 @retval EFI_SUCCESS This driver supports this device.\r
315 @retval other This driver does not support this device.\r
a4d608d1 316\r
317**/\r
95276127 318EFI_STATUS\r
319EFIAPI\r
320ConSplitterConInDriverBindingSupported (\r
321 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
322 IN EFI_HANDLE ControllerHandle,\r
323 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
ed66e1bc 324 );\r
95276127 325\r
a4d608d1 326/**\r
ed055f1b 327 Test to see if Simple Pointer protocol could be supported on the Controller.\r
a4d608d1 328\r
fc753d3b 329 @param This Driver Binding protocol instance pointer.\r
4b5c4fba 330 @param ControllerHandle Handle of device to test.\r
331 @param RemainingDevicePath Optional parameter use to pick a specific child\r
332 device to start.\r
a4d608d1 333\r
4b5c4fba 334 @retval EFI_SUCCESS This driver supports this device.\r
335 @retval other This driver does not support this device.\r
a4d608d1 336\r
337**/\r
95276127 338EFI_STATUS\r
339EFIAPI\r
340ConSplitterSimplePointerDriverBindingSupported (\r
341 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
342 IN EFI_HANDLE ControllerHandle,\r
343 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
ed66e1bc 344 );\r
95276127 345\r
a4d608d1 346/**\r
ed055f1b 347 Test to see if Console Out Device could be supported on the Controller.\r
a4d608d1 348\r
fc753d3b 349 @param This Driver Binding protocol instance pointer.\r
4b5c4fba 350 @param ControllerHandle Handle of device to test.\r
351 @param RemainingDevicePath Optional parameter use to pick a specific child\r
352 device to start.\r
a4d608d1 353\r
4b5c4fba 354 @retval EFI_SUCCESS This driver supports this device.\r
355 @retval other This driver does not support this device.\r
a4d608d1 356\r
357**/\r
95276127 358EFI_STATUS\r
359EFIAPI\r
360ConSplitterConOutDriverBindingSupported (\r
361 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
362 IN EFI_HANDLE ControllerHandle,\r
363 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
ed66e1bc 364 );\r
95276127 365\r
a4d608d1 366/**\r
ed055f1b 367 Test to see if Standard Error Device could be supported on the Controller.\r
a4d608d1 368\r
fc753d3b 369 @param This Driver Binding protocol instance pointer.\r
4b5c4fba 370 @param ControllerHandle Handle of device to test.\r
371 @param RemainingDevicePath Optional parameter use to pick a specific child\r
372 device to start.\r
a4d608d1 373\r
4b5c4fba 374 @retval EFI_SUCCESS This driver supports this device.\r
375 @retval other This driver does not support this device.\r
a4d608d1 376\r
377**/\r
95276127 378EFI_STATUS\r
379EFIAPI\r
380ConSplitterStdErrDriverBindingSupported (\r
381 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
382 IN EFI_HANDLE ControllerHandle,\r
383 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
ed66e1bc 384 );\r
95276127 385\r
415df2a3 386/**\r
ed055f1b 387 Start Console In Consplitter on device handle.\r
388\r
fc753d3b 389 @param This Driver Binding protocol instance pointer.\r
415df2a3 390 @param ControllerHandle Handle of device to bind driver to.\r
391 @param RemainingDevicePath Optional parameter use to pick a specific child\r
392 device to start.\r
393\r
394 @retval EFI_SUCCESS Console In Consplitter is added to ControllerHandle.\r
395 @retval other Console In Consplitter does not support this device.\r
396\r
397**/\r
95276127 398EFI_STATUS\r
399EFIAPI\r
400ConSplitterConInDriverBindingStart (\r
401 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
402 IN EFI_HANDLE ControllerHandle,\r
403 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
ed66e1bc 404 );\r
95276127 405\r
415df2a3 406/**\r
ed055f1b 407 Start Simple Pointer Consplitter on device handle.\r
408\r
fc753d3b 409 @param This Driver Binding protocol instance pointer.\r
415df2a3 410 @param ControllerHandle Handle of device to bind driver to.\r
411 @param RemainingDevicePath Optional parameter use to pick a specific child\r
412 device to start.\r
413\r
414 @retval EFI_SUCCESS Simple Pointer Consplitter is added to ControllerHandle.\r
415 @retval other Simple Pointer Consplitter does not support this device.\r
416\r
417**/\r
95276127 418EFI_STATUS\r
419EFIAPI\r
420ConSplitterSimplePointerDriverBindingStart (\r
421 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
422 IN EFI_HANDLE ControllerHandle,\r
423 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
ed66e1bc 424 );\r
95276127 425\r
415df2a3 426/**\r
ed055f1b 427 Start Console Out Consplitter on device handle.\r
428\r
fc753d3b 429 @param This Driver Binding protocol instance pointer.\r
415df2a3 430 @param ControllerHandle Handle of device to bind driver to.\r
431 @param RemainingDevicePath Optional parameter use to pick a specific child\r
432 device to start.\r
433\r
434 @retval EFI_SUCCESS Console Out Consplitter is added to ControllerHandle.\r
435 @retval other Console Out Consplitter does not support this device.\r
436\r
437**/\r
95276127 438EFI_STATUS\r
439EFIAPI\r
440ConSplitterConOutDriverBindingStart (\r
441 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
442 IN EFI_HANDLE ControllerHandle,\r
443 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
ed66e1bc 444 );\r
95276127 445\r
415df2a3 446/**\r
ed055f1b 447 Start Standard Error Consplitter on device handle.\r
448\r
fc753d3b 449 @param This Driver Binding protocol instance pointer.\r
415df2a3 450 @param ControllerHandle Handle of device to bind driver to.\r
451 @param RemainingDevicePath Optional parameter use to pick a specific child\r
452 device to start.\r
453\r
454 @retval EFI_SUCCESS Standard Error Consplitter is added to ControllerHandle.\r
455 @retval other Standard Error Consplitter does not support this device.\r
456\r
457**/\r
95276127 458EFI_STATUS\r
459EFIAPI\r
460ConSplitterStdErrDriverBindingStart (\r
461 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
462 IN EFI_HANDLE ControllerHandle,\r
463 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
ed66e1bc 464 );\r
95276127 465\r
415df2a3 466/**\r
467 Stop Console In ConSplitter on ControllerHandle by closing Console In Devcice GUID.\r
468\r
fc753d3b 469 @param This Driver Binding protocol instance pointer.\r
415df2a3 470 @param ControllerHandle Handle of device to stop driver on\r
471 @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of\r
472 children is zero stop the entire bus driver.\r
473 @param ChildHandleBuffer List of Child Handles to Stop.\r
474\r
475 @retval EFI_SUCCESS This driver is removed ControllerHandle\r
476 @retval other This driver was not removed from this device\r
477\r
478**/\r
95276127 479EFI_STATUS\r
480EFIAPI\r
481ConSplitterConInDriverBindingStop (\r
482 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
483 IN EFI_HANDLE ControllerHandle,\r
484 IN UINTN NumberOfChildren,\r
485 IN EFI_HANDLE *ChildHandleBuffer\r
ed66e1bc 486 );\r
95276127 487\r
415df2a3 488/**\r
489 Stop Simple Pointer protocol ConSplitter on ControllerHandle by closing\r
490 Simple Pointer protocol.\r
491\r
fc753d3b 492 @param This Driver Binding protocol instance pointer.\r
415df2a3 493 @param ControllerHandle Handle of device to stop driver on\r
494 @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of\r
495 children is zero stop the entire bus driver.\r
496 @param ChildHandleBuffer List of Child Handles to Stop.\r
497\r
498 @retval EFI_SUCCESS This driver is removed ControllerHandle\r
499 @retval other This driver was not removed from this device\r
500\r
501**/\r
95276127 502EFI_STATUS\r
503EFIAPI\r
504ConSplitterSimplePointerDriverBindingStop (\r
505 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
506 IN EFI_HANDLE ControllerHandle,\r
507 IN UINTN NumberOfChildren,\r
508 IN EFI_HANDLE *ChildHandleBuffer\r
ed66e1bc 509 );\r
95276127 510\r
415df2a3 511/**\r
fc753d3b 512 Stop Console Out ConSplitter on device handle by closing Console Out Devcice GUID.\r
415df2a3 513\r
fc753d3b 514 @param This Driver Binding protocol instance pointer.\r
415df2a3 515 @param ControllerHandle Handle of device to stop driver on\r
516 @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of\r
517 children is zero stop the entire bus driver.\r
518 @param ChildHandleBuffer List of Child Handles to Stop.\r
519\r
520 @retval EFI_SUCCESS This driver is removed ControllerHandle\r
521 @retval other This driver was not removed from this device\r
522\r
523**/\r
95276127 524EFI_STATUS\r
525EFIAPI\r
526ConSplitterConOutDriverBindingStop (\r
527 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
528 IN EFI_HANDLE ControllerHandle,\r
529 IN UINTN NumberOfChildren,\r
530 IN EFI_HANDLE *ChildHandleBuffer\r
ed66e1bc 531 );\r
95276127 532\r
415df2a3 533/**\r
534 Stop Standard Error ConSplitter on ControllerHandle by closing Standard Error GUID.\r
535\r
fc753d3b 536 @param This Driver Binding protocol instance pointer.\r
415df2a3 537 @param ControllerHandle Handle of device to stop driver on\r
538 @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of\r
539 children is zero stop the entire bus driver.\r
540 @param ChildHandleBuffer List of Child Handles to Stop.\r
541\r
542 @retval EFI_SUCCESS This driver is removed ControllerHandle\r
543 @retval other This driver was not removed from this device\r
544\r
545**/\r
95276127 546EFI_STATUS\r
547EFIAPI\r
548ConSplitterStdErrDriverBindingStop (\r
549 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
550 IN EFI_HANDLE ControllerHandle,\r
551 IN UINTN NumberOfChildren,\r
552 IN EFI_HANDLE *ChildHandleBuffer\r
ed66e1bc 553 );\r
95276127 554\r
8ae0b360 555\r
415df2a3 556/**\r
ed055f1b 557 Test to see if Absolute Pointer protocol could be supported on the Controller.\r
415df2a3 558\r
fc753d3b 559 @param This Driver Binding protocol instance pointer.\r
415df2a3 560 @param ControllerHandle Handle of device to test.\r
561 @param RemainingDevicePath Optional parameter use to pick a specific child\r
562 device to start.\r
563\r
4b5c4fba 564 @retval EFI_SUCCESS This driver supports this device.\r
565 @retval other This driver does not support this device.\r
415df2a3 566\r
567**/\r
8ae0b360 568EFI_STATUS\r
569EFIAPI\r
570ConSplitterAbsolutePointerDriverBindingSupported (\r
571 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
572 IN EFI_HANDLE ControllerHandle,\r
573 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
ed66e1bc 574 );\r
8ae0b360 575\r
415df2a3 576/**\r
ed055f1b 577 Start Absolute Pointer Consplitter on device handle.\r
578\r
fc753d3b 579 @param This Driver Binding protocol instance pointer.\r
415df2a3 580 @param ControllerHandle Handle of device to bind driver to.\r
581 @param RemainingDevicePath Optional parameter use to pick a specific child\r
582 device to start.\r
583\r
584 @retval EFI_SUCCESS Absolute Pointer Consplitter is added to ControllerHandle.\r
585 @retval other Absolute Pointer Consplitter does not support this device.\r
586\r
587**/\r
8ae0b360 588EFI_STATUS\r
589EFIAPI\r
590ConSplitterAbsolutePointerDriverBindingStart (\r
591 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
592 IN EFI_HANDLE ControllerHandle,\r
593 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
ed66e1bc 594 );\r
8ae0b360 595\r
415df2a3 596/**\r
597 Stop Absolute Pointer protocol ConSplitter on ControllerHandle by closing\r
598 Absolute Pointer protocol.\r
599\r
fc753d3b 600 @param This Driver Binding protocol instance pointer.\r
415df2a3 601 @param ControllerHandle Handle of device to stop driver on\r
602 @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of\r
603 children is zero stop the entire bus driver.\r
604 @param ChildHandleBuffer List of Child Handles to Stop.\r
605\r
606 @retval EFI_SUCCESS This driver is removed ControllerHandle\r
607 @retval other This driver was not removed from this device\r
608\r
609**/\r
8ae0b360 610EFI_STATUS\r
611EFIAPI\r
612ConSplitterAbsolutePointerDriverBindingStop (\r
613 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
614 IN EFI_HANDLE ControllerHandle,\r
615 IN UINTN NumberOfChildren,\r
616 IN EFI_HANDLE *ChildHandleBuffer\r
ed66e1bc 617 );\r
8ae0b360 618\r
415df2a3 619/**\r
620 Add Absolute Pointer Device in Consplitter Absolute Pointer list.\r
621\r
622 @param Private Text In Splitter pointer.\r
623 @param AbsolutePointer Absolute Pointer protocol pointer.\r
624\r
625 @retval EFI_SUCCESS Absolute Pointer Device added successfully.\r
626 @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size.\r
627\r
628**/\r
8ae0b360 629EFI_STATUS\r
630ConSplitterAbsolutePointerAddDevice (\r
631 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
632 IN EFI_ABSOLUTE_POINTER_PROTOCOL *AbsolutePointer\r
ed66e1bc 633 );\r
8ae0b360 634\r
415df2a3 635/**\r
fc753d3b 636 Remove Absolute Pointer Device from Consplitter Absolute Pointer list.\r
415df2a3 637\r
638 @param Private Text In Splitter pointer.\r
639 @param AbsolutePointer Absolute Pointer protocol pointer.\r
640\r
641 @retval EFI_SUCCESS Absolute Pointer Device removed successfully.\r
642 @retval EFI_NOT_FOUND No Absolute Pointer Device found.\r
643\r
644**/\r
8ae0b360 645EFI_STATUS\r
646ConSplitterAbsolutePointerDeleteDevice (\r
647 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
648 IN EFI_ABSOLUTE_POINTER_PROTOCOL *AbsolutePointer\r
ed66e1bc 649 );\r
8ae0b360 650\r
651//\r
652// Absolute Pointer protocol interfaces\r
653//\r
654\r
a4d608d1 655\r
656/**\r
657 Resets the pointer device hardware.\r
658\r
659 @param This Protocol instance pointer.\r
660 @param ExtendedVerification Driver may perform diagnostics on reset.\r
661\r
662 @retval EFI_SUCCESS The device was reset.\r
663 @retval EFI_DEVICE_ERROR The device is not functioning correctly and\r
664 could not be reset.\r
665\r
666**/\r
8ae0b360 667EFI_STATUS\r
668EFIAPI\r
669ConSplitterAbsolutePointerReset (\r
670 IN EFI_ABSOLUTE_POINTER_PROTOCOL *This,\r
671 IN BOOLEAN ExtendedVerification\r
ed66e1bc 672 );\r
8ae0b360 673\r
8ae0b360 674\r
a4d608d1 675/**\r
676 Retrieves the current state of a pointer device.\r
8ae0b360 677\r
a4d608d1 678 @param This Protocol instance pointer.\r
679 @param State A pointer to the state information on the\r
680 pointer device.\r
aec072ad 681\r
a4d608d1 682 @retval EFI_SUCCESS The state of the pointer device was returned in\r
683 State..\r
684 @retval EFI_NOT_READY The state of the pointer device has not changed\r
685 since the last call to GetState().\r
686 @retval EFI_DEVICE_ERROR A device error occurred while attempting to\r
687 retrieve the pointer device's current state.\r
8ae0b360 688\r
a4d608d1 689**/\r
8ae0b360 690EFI_STATUS\r
aec072ad 691EFIAPI\r
8ae0b360 692ConSplitterAbsolutePointerGetState (\r
693 IN EFI_ABSOLUTE_POINTER_PROTOCOL *This,\r
694 IN OUT EFI_ABSOLUTE_POINTER_STATE *State\r
ed66e1bc 695 );\r
8ae0b360 696\r
415df2a3 697/**\r
698 This event agregates all the events of the pointer devices in the splitter.\r
9937b365 699\r
415df2a3 700 If any events of physical pointer devices are signaled, signal the pointer\r
701 splitter event. This will cause the calling code to call\r
702 ConSplitterAbsolutePointerGetState ().\r
703\r
704 @param Event The Event assoicated with callback.\r
705 @param Context Context registered when Event was created.\r
706\r
415df2a3 707**/\r
8ae0b360 708VOID\r
709EFIAPI\r
710ConSplitterAbsolutePointerWaitForInput (\r
711 IN EFI_EVENT Event,\r
712 IN VOID *Context\r
ed66e1bc 713 );\r
8ae0b360 714\r
5bca971e 715/**\r
716 Retrieves a Unicode string that is the user readable name of the driver.\r
717\r
718 This function retrieves the user readable name of a driver in the form of a\r
719 Unicode string. If the driver specified by This has a user readable name in\r
720 the language specified by Language, then a pointer to the driver name is\r
721 returned in DriverName, and EFI_SUCCESS is returned. If the driver specified\r
722 by This does not support the language specified by Language,\r
723 then EFI_UNSUPPORTED is returned.\r
724\r
725 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
726 EFI_COMPONENT_NAME_PROTOCOL instance.\r
727\r
728 @param Language[in] A pointer to a Null-terminated ASCII string\r
729 array indicating the language. This is the\r
730 language of the driver name that the caller is\r
731 requesting, and it must match one of the\r
732 languages specified in SupportedLanguages. The\r
733 number of languages supported by a driver is up\r
734 to the driver writer. Language is specified\r
0254efc0 735 in RFC 4646 or ISO 639-2 language code format.\r
5bca971e 736\r
737 @param DriverName[out] A pointer to the Unicode string to return.\r
738 This Unicode string is the name of the\r
739 driver specified by This in the language\r
740 specified by Language.\r
741\r
742 @retval EFI_SUCCESS The Unicode string for the Driver specified by\r
743 This and the language specified by Language was\r
744 returned in DriverName.\r
745\r
746 @retval EFI_INVALID_PARAMETER Language is NULL.\r
747\r
748 @retval EFI_INVALID_PARAMETER DriverName is NULL.\r
749\r
750 @retval EFI_UNSUPPORTED The driver specified by This does not support\r
751 the language specified by Language.\r
752\r
753**/\r
95276127 754EFI_STATUS\r
755EFIAPI\r
756ConSplitterComponentNameGetDriverName (\r
757 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
758 IN CHAR8 *Language,\r
759 OUT CHAR16 **DriverName\r
760 );\r
761\r
5bca971e 762\r
763/**\r
764 Retrieves a Unicode string that is the user readable name of the controller\r
765 that is being managed by a driver.\r
766\r
767 This function retrieves the user readable name of the controller specified by\r
768 ControllerHandle and ChildHandle in the form of a Unicode string. If the\r
769 driver specified by This has a user readable name in the language specified by\r
770 Language, then a pointer to the controller name is returned in ControllerName,\r
771 and EFI_SUCCESS is returned. If the driver specified by This is not currently\r
772 managing the controller specified by ControllerHandle and ChildHandle,\r
773 then EFI_UNSUPPORTED is returned. If the driver specified by This does not\r
774 support the language specified by Language, then EFI_UNSUPPORTED is returned.\r
775\r
776 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
777 EFI_COMPONENT_NAME_PROTOCOL instance.\r
778\r
779 @param ControllerHandle[in] The handle of a controller that the driver\r
780 specified by This is managing. This handle\r
781 specifies the controller whose name is to be\r
782 returned.\r
783\r
784 @param ChildHandle[in] The handle of the child controller to retrieve\r
785 the name of. This is an optional parameter that\r
786 may be NULL. It will be NULL for device\r
787 drivers. It will also be NULL for a bus drivers\r
788 that wish to retrieve the name of the bus\r
789 controller. It will not be NULL for a bus\r
790 driver that wishes to retrieve the name of a\r
791 child controller.\r
792\r
793 @param Language[in] A pointer to a Null-terminated ASCII string\r
794 array indicating the language. This is the\r
795 language of the driver name that the caller is\r
796 requesting, and it must match one of the\r
797 languages specified in SupportedLanguages. The\r
798 number of languages supported by a driver is up\r
799 to the driver writer. Language is specified in\r
0254efc0 800 RFC 4646 or ISO 639-2 language code format.\r
5bca971e 801\r
802 @param ControllerName[out] A pointer to the Unicode string to return.\r
803 This Unicode string is the name of the\r
804 controller specified by ControllerHandle and\r
805 ChildHandle in the language specified by\r
806 Language from the point of view of the driver\r
807 specified by This.\r
808\r
809 @retval EFI_SUCCESS The Unicode string for the user readable name in\r
810 the language specified by Language for the\r
811 driver specified by This was returned in\r
812 DriverName.\r
813\r
284ee2e8 814 @retval EFI_INVALID_PARAMETER ControllerHandle is NULL.\r
5bca971e 815\r
816 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
817 EFI_HANDLE.\r
818\r
819 @retval EFI_INVALID_PARAMETER Language is NULL.\r
820\r
821 @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
822\r
823 @retval EFI_UNSUPPORTED The driver specified by This is not currently\r
824 managing the controller specified by\r
825 ControllerHandle and ChildHandle.\r
826\r
827 @retval EFI_UNSUPPORTED The driver specified by This does not support\r
828 the language specified by Language.\r
829\r
830**/\r
95276127 831EFI_STATUS\r
832EFIAPI\r
833ConSplitterConInComponentNameGetControllerName (\r
834 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
835 IN EFI_HANDLE ControllerHandle,\r
836 IN EFI_HANDLE ChildHandle OPTIONAL,\r
837 IN CHAR8 *Language,\r
838 OUT CHAR16 **ControllerName\r
839 );\r
840\r
5bca971e 841\r
842/**\r
843 Retrieves a Unicode string that is the user readable name of the controller\r
844 that is being managed by a driver.\r
845\r
846 This function retrieves the user readable name of the controller specified by\r
847 ControllerHandle and ChildHandle in the form of a Unicode string. If the\r
848 driver specified by This has a user readable name in the language specified by\r
849 Language, then a pointer to the controller name is returned in ControllerName,\r
850 and EFI_SUCCESS is returned. If the driver specified by This is not currently\r
851 managing the controller specified by ControllerHandle and ChildHandle,\r
852 then EFI_UNSUPPORTED is returned. If the driver specified by This does not\r
853 support the language specified by Language, then EFI_UNSUPPORTED is returned.\r
854\r
855 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
856 EFI_COMPONENT_NAME_PROTOCOL instance.\r
857\r
858 @param ControllerHandle[in] The handle of a controller that the driver\r
859 specified by This is managing. This handle\r
860 specifies the controller whose name is to be\r
861 returned.\r
862\r
863 @param ChildHandle[in] The handle of the child controller to retrieve\r
864 the name of. This is an optional parameter that\r
865 may be NULL. It will be NULL for device\r
866 drivers. It will also be NULL for a bus drivers\r
867 that wish to retrieve the name of the bus\r
868 controller. It will not be NULL for a bus\r
869 driver that wishes to retrieve the name of a\r
870 child controller.\r
871\r
872 @param Language[in] A pointer to a Null-terminated ASCII string\r
873 array indicating the language. This is the\r
874 language of the driver name that the caller is\r
875 requesting, and it must match one of the\r
876 languages specified in SupportedLanguages. The\r
877 number of languages supported by a driver is up\r
878 to the driver writer. Language is specified in\r
0254efc0 879 RFC 4646 or ISO 639-2 language code format.\r
5bca971e 880\r
881 @param ControllerName[out] A pointer to the Unicode string to return.\r
882 This Unicode string is the name of the\r
883 controller specified by ControllerHandle and\r
884 ChildHandle in the language specified by\r
885 Language from the point of view of the driver\r
886 specified by This.\r
887\r
888 @retval EFI_SUCCESS The Unicode string for the user readable name in\r
889 the language specified by Language for the\r
890 driver specified by This was returned in\r
891 DriverName.\r
892\r
284ee2e8 893 @retval EFI_INVALID_PARAMETER ControllerHandle is NULL.\r
5bca971e 894\r
895 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
896 EFI_HANDLE.\r
897\r
898 @retval EFI_INVALID_PARAMETER Language is NULL.\r
899\r
900 @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
901\r
902 @retval EFI_UNSUPPORTED The driver specified by This is not currently\r
903 managing the controller specified by\r
904 ControllerHandle and ChildHandle.\r
905\r
906 @retval EFI_UNSUPPORTED The driver specified by This does not support\r
907 the language specified by Language.\r
908\r
909**/\r
95276127 910EFI_STATUS\r
911EFIAPI\r
912ConSplitterSimplePointerComponentNameGetControllerName (\r
913 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
914 IN EFI_HANDLE ControllerHandle,\r
915 IN EFI_HANDLE ChildHandle OPTIONAL,\r
916 IN CHAR8 *Language,\r
917 OUT CHAR16 **ControllerName\r
918 );\r
919\r
415df2a3 920/**\r
921 Retrieves a Unicode string that is the user readable name of the controller\r
922 that is being managed by an EFI Driver.\r
923\r
924 @param This A pointer to the EFI_COMPONENT_NAME_PROTOCOL\r
925 instance.\r
926 @param ControllerHandle The handle of a controller that the driver\r
927 specified by This is managing. This handle\r
928 specifies the controller whose name is to be\r
929 returned.\r
930 @param ChildHandle The handle of the child controller to retrieve the\r
931 name of. This is an optional parameter that may\r
932 be NULL. It will be NULL for device drivers. It\r
933 will also be NULL for a bus drivers that wish to\r
934 retrieve the name of the bus controller. It will\r
935 not be NULL for a bus driver that wishes to\r
936 retrieve the name of a child controller.\r
0254efc0 937 @param Language A pointer to RFC4646 language identifier. This is\r
415df2a3 938 the language of the controller name that that the\r
939 caller is requesting, and it must match one of the\r
940 languages specified in SupportedLanguages. The\r
941 number of languages supported by a driver is up to\r
942 the driver writer.\r
943 @param ControllerName A pointer to the Unicode string to return. This\r
944 Unicode string is the name of the controller\r
945 specified by ControllerHandle and ChildHandle in\r
946 the language specified by Language from the point\r
947 of view of the driver specified by This.\r
948\r
949 @retval EFI_SUCCESS The Unicode string for the user readable name in\r
950 the language specified by Language for the driver\r
951 specified by This was returned in DriverName.\r
284ee2e8 952 @retval EFI_INVALID_PARAMETER ControllerHandle is NULL.\r
415df2a3 953 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
954 EFI_HANDLE.\r
955 @retval EFI_INVALID_PARAMETER Language is NULL.\r
956 @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
957 @retval EFI_UNSUPPORTED The driver specified by This is not currently\r
958 managing the controller specified by\r
959 ControllerHandle and ChildHandle.\r
960 @retval EFI_UNSUPPORTED The driver specified by This does not support the\r
961 language specified by Language.\r
962\r
963**/\r
8ae0b360 964EFI_STATUS\r
965EFIAPI\r
966ConSplitterAbsolutePointerComponentNameGetControllerName (\r
967 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
968 IN EFI_HANDLE ControllerHandle,\r
969 IN EFI_HANDLE ChildHandle OPTIONAL,\r
970 IN CHAR8 *Language,\r
971 OUT CHAR16 **ControllerName\r
ed66e1bc 972 );\r
5bca971e 973\r
974/**\r
975 Retrieves a Unicode string that is the user readable name of the controller\r
976 that is being managed by a driver.\r
977\r
978 This function retrieves the user readable name of the controller specified by\r
979 ControllerHandle and ChildHandle in the form of a Unicode string. If the\r
980 driver specified by This has a user readable name in the language specified by\r
981 Language, then a pointer to the controller name is returned in ControllerName,\r
982 and EFI_SUCCESS is returned. If the driver specified by This is not currently\r
983 managing the controller specified by ControllerHandle and ChildHandle,\r
984 then EFI_UNSUPPORTED is returned. If the driver specified by This does not\r
985 support the language specified by Language, then EFI_UNSUPPORTED is returned.\r
986\r
987 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
988 EFI_COMPONENT_NAME_PROTOCOL instance.\r
989\r
990 @param ControllerHandle[in] The handle of a controller that the driver\r
991 specified by This is managing. This handle\r
992 specifies the controller whose name is to be\r
993 returned.\r
994\r
995 @param ChildHandle[in] The handle of the child controller to retrieve\r
996 the name of. This is an optional parameter that\r
997 may be NULL. It will be NULL for device\r
998 drivers. It will also be NULL for a bus drivers\r
999 that wish to retrieve the name of the bus\r
1000 controller. It will not be NULL for a bus\r
1001 driver that wishes to retrieve the name of a\r
1002 child controller.\r
1003\r
1004 @param Language[in] A pointer to a Null-terminated ASCII string\r
1005 array indicating the language. This is the\r
1006 language of the driver name that the caller is\r
1007 requesting, and it must match one of the\r
1008 languages specified in SupportedLanguages. The\r
1009 number of languages supported by a driver is up\r
1010 to the driver writer. Language is specified in\r
0254efc0 1011 RFC 4646 or ISO 639-2 language code format.\r
5bca971e 1012\r
1013 @param ControllerName[out] A pointer to the Unicode string to return.\r
1014 This Unicode string is the name of the\r
1015 controller specified by ControllerHandle and\r
1016 ChildHandle in the language specified by\r
1017 Language from the point of view of the driver\r
1018 specified by This.\r
1019\r
1020 @retval EFI_SUCCESS The Unicode string for the user readable name in\r
1021 the language specified by Language for the\r
1022 driver specified by This was returned in\r
1023 DriverName.\r
1024\r
284ee2e8 1025 @retval EFI_INVALID_PARAMETER ControllerHandle is NULL.\r
5bca971e 1026\r
1027 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
1028 EFI_HANDLE.\r
1029\r
1030 @retval EFI_INVALID_PARAMETER Language is NULL.\r
1031\r
1032 @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
1033\r
1034 @retval EFI_UNSUPPORTED The driver specified by This is not currently\r
1035 managing the controller specified by\r
1036 ControllerHandle and ChildHandle.\r
1037\r
1038 @retval EFI_UNSUPPORTED The driver specified by This does not support\r
1039 the language specified by Language.\r
1040\r
1041**/\r
95276127 1042EFI_STATUS\r
1043EFIAPI\r
1044ConSplitterConOutComponentNameGetControllerName (\r
1045 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
1046 IN EFI_HANDLE ControllerHandle,\r
1047 IN EFI_HANDLE ChildHandle OPTIONAL,\r
1048 IN CHAR8 *Language,\r
1049 OUT CHAR16 **ControllerName\r
1050 );\r
1051\r
5bca971e 1052\r
1053/**\r
1054 Retrieves a Unicode string that is the user readable name of the controller\r
1055 that is being managed by a driver.\r
1056\r
1057 This function retrieves the user readable name of the controller specified by\r
1058 ControllerHandle and ChildHandle in the form of a Unicode string. If the\r
1059 driver specified by This has a user readable name in the language specified by\r
1060 Language, then a pointer to the controller name is returned in ControllerName,\r
1061 and EFI_SUCCESS is returned. If the driver specified by This is not currently\r
1062 managing the controller specified by ControllerHandle and ChildHandle,\r
1063 then EFI_UNSUPPORTED is returned. If the driver specified by This does not\r
1064 support the language specified by Language, then EFI_UNSUPPORTED is returned.\r
1065\r
1066 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
1067 EFI_COMPONENT_NAME_PROTOCOL instance.\r
1068\r
1069 @param ControllerHandle[in] The handle of a controller that the driver\r
1070 specified by This is managing. This handle\r
1071 specifies the controller whose name is to be\r
1072 returned.\r
1073\r
1074 @param ChildHandle[in] The handle of the child controller to retrieve\r
1075 the name of. This is an optional parameter that\r
1076 may be NULL. It will be NULL for device\r
1077 drivers. It will also be NULL for a bus drivers\r
1078 that wish to retrieve the name of the bus\r
1079 controller. It will not be NULL for a bus\r
1080 driver that wishes to retrieve the name of a\r
1081 child controller.\r
1082\r
1083 @param Language[in] A pointer to a Null-terminated ASCII string\r
1084 array indicating the language. This is the\r
1085 language of the driver name that the caller is\r
1086 requesting, and it must match one of the\r
1087 languages specified in SupportedLanguages. The\r
1088 number of languages supported by a driver is up\r
1089 to the driver writer. Language is specified in\r
0254efc0 1090 RFC 4646 or ISO 639-2 language code format.\r
5bca971e 1091\r
1092 @param ControllerName[out] A pointer to the Unicode string to return.\r
1093 This Unicode string is the name of the\r
1094 controller specified by ControllerHandle and\r
1095 ChildHandle in the language specified by\r
1096 Language from the point of view of the driver\r
1097 specified by This.\r
1098\r
1099 @retval EFI_SUCCESS The Unicode string for the user readable name in\r
1100 the language specified by Language for the\r
1101 driver specified by This was returned in\r
1102 DriverName.\r
1103\r
284ee2e8 1104 @retval EFI_INVALID_PARAMETER ControllerHandle is NULL.\r
5bca971e 1105\r
1106 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
1107 EFI_HANDLE.\r
1108\r
1109 @retval EFI_INVALID_PARAMETER Language is NULL.\r
1110\r
1111 @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
1112\r
1113 @retval EFI_UNSUPPORTED The driver specified by This is not currently\r
1114 managing the controller specified by\r
1115 ControllerHandle and ChildHandle.\r
1116\r
1117 @retval EFI_UNSUPPORTED The driver specified by This does not support\r
1118 the language specified by Language.\r
1119\r
1120**/\r
95276127 1121EFI_STATUS\r
1122EFIAPI\r
1123ConSplitterStdErrComponentNameGetControllerName (\r
1124 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
1125 IN EFI_HANDLE ControllerHandle,\r
1126 IN EFI_HANDLE ChildHandle OPTIONAL,\r
1127 IN CHAR8 *Language,\r
1128 OUT CHAR16 **ControllerName\r
1129 );\r
1130\r
5bca971e 1131\r
95276127 1132//\r
1133// TextIn Constructor/Destructor functions\r
1134//\r
415df2a3 1135\r
1136/**\r
1137 Add Text Input Device in Consplitter Text Input list.\r
1138\r
1139 @param Private Text In Splitter pointer.\r
1140 @param TextIn Simple Text Input protocol pointer.\r
1141\r
1142 @retval EFI_SUCCESS Text Input Device added successfully.\r
1143 @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size.\r
1144\r
1145**/\r
95276127 1146EFI_STATUS\r
1147ConSplitterTextInAddDevice (\r
fc753d3b 1148 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
1149 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *TextIn\r
ed66e1bc 1150 );\r
95276127 1151\r
415df2a3 1152/**\r
fc753d3b 1153 Remove Text Input Device from Consplitter Text Input list.\r
415df2a3 1154\r
1155 @param Private Text In Splitter pointer.\r
1156 @param TextIn Simple Text protocol pointer.\r
1157\r
1158 @retval EFI_SUCCESS Simple Text Device removed successfully.\r
1159 @retval EFI_NOT_FOUND No Simple Text Device found.\r
1160\r
1161**/\r
95276127 1162EFI_STATUS\r
1163ConSplitterTextInDeleteDevice (\r
fc753d3b 1164 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
1165 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *TextIn\r
ed66e1bc 1166 );\r
95276127 1167\r
1168//\r
1169// SimplePointer Constuctor/Destructor functions\r
1170//\r
415df2a3 1171\r
1172/**\r
1173 Add Simple Pointer Device in Consplitter Simple Pointer list.\r
1174\r
1175 @param Private Text In Splitter pointer.\r
1176 @param SimplePointer Simple Pointer protocol pointer.\r
1177\r
1178 @retval EFI_SUCCESS Simple Pointer Device added successfully.\r
1179 @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size.\r
1180\r
1181**/\r
95276127 1182EFI_STATUS\r
1183ConSplitterSimplePointerAddDevice (\r
1184 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
1185 IN EFI_SIMPLE_POINTER_PROTOCOL *SimplePointer\r
ed66e1bc 1186 );\r
95276127 1187\r
415df2a3 1188/**\r
fc753d3b 1189 Remove Simple Pointer Device from Consplitter Simple Pointer list.\r
415df2a3 1190\r
1191 @param Private Text In Splitter pointer.\r
1192 @param SimplePointer Simple Pointer protocol pointer.\r
1193\r
1194 @retval EFI_SUCCESS Simple Pointer Device removed successfully.\r
1195 @retval EFI_NOT_FOUND No Simple Pointer Device found.\r
1196\r
1197**/\r
95276127 1198EFI_STATUS\r
1199ConSplitterSimplePointerDeleteDevice (\r
1200 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
1201 IN EFI_SIMPLE_POINTER_PROTOCOL *SimplePointer\r
ed66e1bc 1202 );\r
95276127 1203\r
1204//\r
1205// TextOut Constuctor/Destructor functions\r
1206//\r
415df2a3 1207\r
1208/**\r
1209 Add Text Output Device in Consplitter Text Output list.\r
1210\r
1211 @param Private Text Out Splitter pointer.\r
1212 @param TextOut Simple Text Output protocol pointer.\r
1213 @param GraphicsOutput Graphics Output protocol pointer.\r
1214 @param UgaDraw UGA Draw protocol pointer.\r
1215\r
1216 @retval EFI_SUCCESS Text Output Device added successfully.\r
1217 @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size.\r
1218\r
1219**/\r
95276127 1220EFI_STATUS\r
1221ConSplitterTextOutAddDevice (\r
1222 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
1223 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *TextOut,\r
1224 IN EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput,\r
1225 IN EFI_UGA_DRAW_PROTOCOL *UgaDraw\r
ed66e1bc 1226 );\r
95276127 1227\r
415df2a3 1228/**\r
1229 Remove Text Out Device in Consplitter Text Out list.\r
1230\r
1231 @param Private Text Out Splitter pointer.\r
1232 @param TextOut Simple Text Output Pointer protocol pointer.\r
1233\r
1234 @retval EFI_SUCCESS Text Out Device removed successfully.\r
1235 @retval EFI_NOT_FOUND No Text Out Device found.\r
1236\r
1237**/\r
95276127 1238EFI_STATUS\r
1239ConSplitterTextOutDeleteDevice (\r
1240 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
1241 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *TextOut\r
ed66e1bc 1242 );\r
95276127 1243\r
1244//\r
1245// TextIn I/O Functions\r
1246//\r
415df2a3 1247\r
1248/**\r
1249 Reset the input device and optionaly run diagnostics\r
1250\r
1251 @param This Protocol instance pointer.\r
1252 @param ExtendedVerification Driver may perform diagnostics on reset.\r
1253\r
1254 @retval EFI_SUCCESS The device was reset.\r
1255 @retval EFI_DEVICE_ERROR The device is not functioning properly and could\r
1256 not be reset.\r
1257\r
1258**/\r
95276127 1259EFI_STATUS\r
1260EFIAPI\r
1261ConSplitterTextInReset (\r
fc753d3b 1262 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This,\r
1263 IN BOOLEAN ExtendedVerification\r
ed66e1bc 1264 );\r
95276127 1265\r
415df2a3 1266/**\r
1267 Reads the next keystroke from the input device. The WaitForKey Event can\r
1268 be used to test for existance of a keystroke via WaitForEvent () call.\r
415df2a3 1269\r
1270 @param This Protocol instance pointer.\r
1271 @param Key Driver may perform diagnostics on reset.\r
1272\r
1273 @retval EFI_SUCCESS The keystroke information was returned.\r
1274 @retval EFI_NOT_READY There was no keystroke data availiable.\r
1275 @retval EFI_DEVICE_ERROR The keydtroke information was not returned due\r
1276 to hardware errors.\r
1277\r
1278**/\r
95276127 1279EFI_STATUS\r
1280EFIAPI\r
1281ConSplitterTextInReadKeyStroke (\r
fc753d3b 1282 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This,\r
1283 OUT EFI_INPUT_KEY *Key\r
ed66e1bc 1284 );\r
415df2a3 1285\r
1286/**\r
1287 Add Text Input Ex Device in Consplitter Text Input Ex list.\r
1288\r
1289 @param Private Text In Splitter pointer.\r
fc753d3b 1290 @param TextInEx Simple Text Input Ex Input protocol pointer.\r
415df2a3 1291\r
1292 @retval EFI_SUCCESS Text Input Ex Device added successfully.\r
1293 @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size.\r
1294\r
1295**/\r
66aa04e4 1296EFI_STATUS\r
1297ConSplitterTextInExAddDevice (\r
1298 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
1299 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *TextInEx\r
ed66e1bc 1300 );\r
66aa04e4 1301\r
415df2a3 1302/**\r
fc753d3b 1303 Remove Text Ex Device from Consplitter Text Input Ex list.\r
415df2a3 1304\r
1305 @param Private Text In Splitter pointer.\r
1306 @param TextInEx Simple Text Ex protocol pointer.\r
1307\r
fc753d3b 1308 @retval EFI_SUCCESS Simple Text Input Ex Device removed successfully.\r
1309 @retval EFI_NOT_FOUND No Simple Text Input Ex Device found.\r
415df2a3 1310\r
1311**/\r
66aa04e4 1312EFI_STATUS\r
1313ConSplitterTextInExDeleteDevice (\r
1314 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
1315 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *TextInEx\r
ed66e1bc 1316 );\r
66aa04e4 1317\r
1318//\r
1319// Simple Text Input Ex protocol function prototypes\r
1320//\r
1321\r
a4d608d1 1322/**\r
1323 Reset the input device and optionaly run diagnostics\r
1324\r
1325 @param This Protocol instance pointer.\r
1326 @param ExtendedVerification Driver may perform diagnostics on reset.\r
1327\r
1328 @retval EFI_SUCCESS The device was reset.\r
1329 @retval EFI_DEVICE_ERROR The device is not functioning properly and could\r
1330 not be reset.\r
1331\r
1332**/\r
66aa04e4 1333EFI_STATUS\r
1334EFIAPI\r
1335ConSplitterTextInResetEx (\r
1336 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,\r
1337 IN BOOLEAN ExtendedVerification\r
ed66e1bc 1338 );\r
66aa04e4 1339\r
66aa04e4 1340\r
a4d608d1 1341/**\r
1342 Reads the next keystroke from the input device. The WaitForKey Event can\r
1343 be used to test for existance of a keystroke via WaitForEvent () call.\r
66aa04e4 1344\r
a4d608d1 1345 @param This Protocol instance pointer.\r
1346 @param KeyData A pointer to a buffer that is filled in with the\r
1347 keystroke state data for the key that was\r
1348 pressed.\r
66aa04e4 1349\r
a4d608d1 1350 @retval EFI_SUCCESS The keystroke information was returned.\r
1351 @retval EFI_NOT_READY There was no keystroke data availiable.\r
1352 @retval EFI_DEVICE_ERROR The keystroke information was not returned due\r
1353 to hardware errors.\r
1354 @retval EFI_INVALID_PARAMETER KeyData is NULL.\r
66aa04e4 1355\r
a4d608d1 1356**/\r
66aa04e4 1357EFI_STATUS\r
1358EFIAPI\r
1359ConSplitterTextInReadKeyStrokeEx (\r
1360 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,\r
1361 OUT EFI_KEY_DATA *KeyData\r
ed66e1bc 1362 );\r
66aa04e4 1363\r
66aa04e4 1364\r
a4d608d1 1365/**\r
1366 Set certain state for the input device.\r
66aa04e4 1367\r
a4d608d1 1368 @param This Protocol instance pointer.\r
1369 @param KeyToggleState A pointer to the EFI_KEY_TOGGLE_STATE to set the\r
1370 state for the input device.\r
66aa04e4 1371\r
a4d608d1 1372 @retval EFI_SUCCESS The device state was set successfully.\r
1373 @retval EFI_DEVICE_ERROR The device is not functioning correctly and\r
1374 could not have the setting adjusted.\r
1375 @retval EFI_UNSUPPORTED The device does not have the ability to set its\r
1376 state.\r
1377 @retval EFI_INVALID_PARAMETER KeyToggleState is NULL.\r
66aa04e4 1378\r
a4d608d1 1379**/\r
66aa04e4 1380EFI_STATUS\r
1381EFIAPI\r
1382ConSplitterTextInSetState (\r
1383 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,\r
1384 IN EFI_KEY_TOGGLE_STATE *KeyToggleState\r
ed66e1bc 1385 );\r
aec072ad 1386\r
66aa04e4 1387\r
a4d608d1 1388/**\r
1389 Register a notification function for a particular keystroke for the input device.\r
1390\r
1391 @param This Protocol instance pointer.\r
1392 @param KeyData A pointer to a buffer that is filled in with the\r
1393 keystroke information data for the key that was\r
1394 pressed.\r
1395 @param KeyNotificationFunction Points to the function to be called when the key\r
1396 sequence is typed specified by KeyData.\r
1397 @param NotifyHandle Points to the unique handle assigned to the\r
1398 registered notification.\r
1399\r
1400 @retval EFI_SUCCESS The notification function was registered\r
1401 successfully.\r
1402 @retval EFI_OUT_OF_RESOURCES Unable to allocate resources for necesssary data\r
1403 structures.\r
f890b1e0 1404 @retval EFI_INVALID_PARAMETER KeyData or KeyNotificationFunction or NotifyHandle is NULL.\r
95276127 1405\r
a4d608d1 1406**/\r
66aa04e4 1407EFI_STATUS\r
1408EFIAPI\r
1409ConSplitterTextInRegisterKeyNotify (\r
1410 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,\r
1411 IN EFI_KEY_DATA *KeyData,\r
1412 IN EFI_KEY_NOTIFY_FUNCTION KeyNotificationFunction,\r
402e4a9d 1413 OUT VOID **NotifyHandle\r
ed66e1bc 1414 );\r
66aa04e4 1415\r
66aa04e4 1416\r
a4d608d1 1417/**\r
1418 Remove a registered notification function from a particular keystroke.\r
66aa04e4 1419\r
a4d608d1 1420 @param This Protocol instance pointer.\r
1421 @param NotificationHandle The handle of the notification function being\r
1422 unregistered.\r
aec072ad 1423\r
a4d608d1 1424 @retval EFI_SUCCESS The notification function was unregistered\r
1425 successfully.\r
1426 @retval EFI_INVALID_PARAMETER The NotificationHandle is invalid.\r
1427 @retval EFI_NOT_FOUND Can not find the matching entry in database.\r
66aa04e4 1428\r
a4d608d1 1429**/\r
66aa04e4 1430EFI_STATUS\r
1431EFIAPI\r
1432ConSplitterTextInUnregisterKeyNotify (\r
1433 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,\r
402e4a9d 1434 IN VOID *NotificationHandle\r
ed66e1bc 1435 );\r
415df2a3 1436\r
1437/**\r
f890b1e0 1438 This event aggregates all the events of the ConIn devices in the spliter.\r
1439\r
415df2a3 1440 If any events of physical ConIn devices are signaled, signal the ConIn\r
1441 spliter event. This will cause the calling code to call\r
1442 ConSplitterTextInReadKeyStroke ().\r
1443\r
1444 @param Event The Event assoicated with callback.\r
1445 @param Context Context registered when Event was created.\r
1446\r
415df2a3 1447**/\r
95276127 1448VOID\r
1449EFIAPI\r
1450ConSplitterTextInWaitForKey (\r
1451 IN EFI_EVENT Event,\r
1452 IN VOID *Context\r
ed66e1bc 1453 );\r
ed055f1b 1454\r
95276127 1455\r
415df2a3 1456/**\r
1457 Reads the next keystroke from the input device. The WaitForKey Event can\r
1458 be used to test for existance of a keystroke via WaitForEvent () call.\r
1459\r
33019a71 1460 @param Private Protocol instance pointer.\r
415df2a3 1461 @param Key Driver may perform diagnostics on reset.\r
1462\r
1463 @retval EFI_SUCCESS The keystroke information was returned.\r
1464 @retval EFI_NOT_READY There was no keystroke data availiable.\r
1465 @retval EFI_DEVICE_ERROR The keydtroke information was not returned due\r
1466 to hardware errors.\r
1467\r
1468**/\r
95276127 1469EFI_STATUS\r
1470EFIAPI\r
1471ConSplitterTextInPrivateReadKeyStroke (\r
1472 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
1473 OUT EFI_INPUT_KEY *Key\r
ed66e1bc 1474 );\r
95276127 1475\r
415df2a3 1476/**\r
1477 Reset the input device and optionaly run diagnostics\r
1478\r
1479 @param This Protocol instance pointer.\r
1480 @param ExtendedVerification Driver may perform diagnostics on reset.\r
1481\r
1482 @retval EFI_SUCCESS The device was reset.\r
1483 @retval EFI_DEVICE_ERROR The device is not functioning properly and could\r
1484 not be reset.\r
1485\r
1486**/\r
95276127 1487EFI_STATUS\r
1488EFIAPI\r
1489ConSplitterSimplePointerReset (\r
1490 IN EFI_SIMPLE_POINTER_PROTOCOL *This,\r
1491 IN BOOLEAN ExtendedVerification\r
ed66e1bc 1492 );\r
95276127 1493\r
415df2a3 1494/**\r
1495 Reads the next keystroke from the input device. The WaitForKey Event can\r
1496 be used to test for existance of a keystroke via WaitForEvent () call.\r
415df2a3 1497\r
1498 @param This A pointer to protocol instance.\r
1499 @param State A pointer to state information on the pointer device\r
1500\r
1501 @retval EFI_SUCCESS The keystroke information was returned in State.\r
1502 @retval EFI_NOT_READY There was no keystroke data availiable.\r
1503 @retval EFI_DEVICE_ERROR The keydtroke information was not returned due\r
1504 to hardware errors.\r
1505\r
1506**/\r
95276127 1507EFI_STATUS\r
1508EFIAPI\r
1509ConSplitterSimplePointerGetState (\r
1510 IN EFI_SIMPLE_POINTER_PROTOCOL *This,\r
1511 IN OUT EFI_SIMPLE_POINTER_STATE *State\r
ed66e1bc 1512 );\r
95276127 1513\r
a4d608d1 1514/**\r
1515 This event agregates all the events of the ConIn devices in the spliter.\r
a4d608d1 1516 If any events of physical ConIn devices are signaled, signal the ConIn\r
1517 spliter event. This will cause the calling code to call\r
1518 ConSplitterTextInReadKeyStroke ().\r
1519\r
1520 @param Event The Event assoicated with callback.\r
1521 @param Context Context registered when Event was created.\r
1522\r
a4d608d1 1523**/\r
95276127 1524VOID\r
1525EFIAPI\r
1526ConSplitterSimplePointerWaitForInput (\r
1527 IN EFI_EVENT Event,\r
1528 IN VOID *Context\r
ed66e1bc 1529 );\r
95276127 1530\r
1531//\r
1532// TextOut I/O Functions\r
1533//\r
95276127 1534\r
415df2a3 1535/**\r
1536 Reset the text output device hardware and optionaly run diagnostics\r
1537\r
1538 @param This Protocol instance pointer.\r
1539 @param ExtendedVerification Driver may perform more exhaustive verfication\r
1540 operation of the device during reset.\r
1541\r
1542 @retval EFI_SUCCESS The text output device was reset.\r
1543 @retval EFI_DEVICE_ERROR The text output device is not functioning\r
1544 correctly and could not be reset.\r
1545\r
1546**/\r
95276127 1547EFI_STATUS\r
1548EFIAPI\r
1549ConSplitterTextOutReset (\r
1550 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
1551 IN BOOLEAN ExtendedVerification\r
ed66e1bc 1552 );\r
95276127 1553\r
415df2a3 1554/**\r
1555 Write a Unicode string to the output device.\r
1556\r
1557 @param This Protocol instance pointer.\r
33019a71 1558 @param WString The NULL-terminated Unicode string to be\r
415df2a3 1559 displayed on the output device(s). All output\r
1560 devices must also support the Unicode drawing\r
1561 defined in this file.\r
1562\r
1563 @retval EFI_SUCCESS The string was output to the device.\r
1564 @retval EFI_DEVICE_ERROR The device reported an error while attempting to\r
1565 output the text.\r
1566 @retval EFI_UNSUPPORTED The output device's mode is not currently in a\r
1567 defined text mode.\r
1568 @retval EFI_WARN_UNKNOWN_GLYPH This warning code indicates that some of the\r
1569 characters in the Unicode string could not be\r
1570 rendered and were skipped.\r
1571\r
1572**/\r
95276127 1573EFI_STATUS\r
1574EFIAPI\r
1575ConSplitterTextOutOutputString (\r
1576 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
1577 IN CHAR16 *WString\r
ed66e1bc 1578 );\r
95276127 1579\r
415df2a3 1580/**\r
1581 Verifies that all characters in a Unicode string can be output to the\r
1582 target device.\r
1583\r
1584 @param This Protocol instance pointer.\r
33019a71 1585 @param WString The NULL-terminated Unicode string to be\r
415df2a3 1586 examined for the output device(s).\r
1587\r
1588 @retval EFI_SUCCESS The device(s) are capable of rendering the\r
1589 output string.\r
1590 @retval EFI_UNSUPPORTED Some of the characters in the Unicode string\r
1591 cannot be rendered by one or more of the output\r
1592 devices mapped by the EFI handle.\r
1593\r
1594**/\r
95276127 1595EFI_STATUS\r
1596EFIAPI\r
1597ConSplitterTextOutTestString (\r
1598 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
1599 IN CHAR16 *WString\r
ed66e1bc 1600 );\r
95276127 1601\r
415df2a3 1602/**\r
1603 Returns information for an available text mode that the output device(s)\r
1604 supports.\r
1605\r
1606 @param This Protocol instance pointer.\r
1607 @param ModeNumber The mode number to return information on.\r
33019a71 1608 @param Columns Returns the columns of the text output device\r
1609 for the requested ModeNumber.\r
1610 @param Rows Returns the rows of the text output device\r
415df2a3 1611 for the requested ModeNumber.\r
1612\r
1613 @retval EFI_SUCCESS The requested mode information was returned.\r
1614 @retval EFI_DEVICE_ERROR The device had an error and could not complete\r
1615 the request.\r
1616 @retval EFI_UNSUPPORTED The mode number was not valid.\r
1617\r
1618**/\r
95276127 1619EFI_STATUS\r
1620EFIAPI\r
1621ConSplitterTextOutQueryMode (\r
1622 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
1623 IN UINTN ModeNumber,\r
1624 OUT UINTN *Columns,\r
1625 OUT UINTN *Rows\r
ed66e1bc 1626 );\r
95276127 1627\r
415df2a3 1628/**\r
1629 Sets the output device(s) to a specified mode.\r
1630\r
1631 @param This Protocol instance pointer.\r
1632 @param ModeNumber The mode number to set.\r
1633\r
1634 @retval EFI_SUCCESS The requested text mode was set.\r
1635 @retval EFI_DEVICE_ERROR The device had an error and could not complete\r
1636 the request.\r
1637 @retval EFI_UNSUPPORTED The mode number was not valid.\r
1638\r
1639**/\r
95276127 1640EFI_STATUS\r
1641EFIAPI\r
1642ConSplitterTextOutSetMode (\r
1643 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
1644 IN UINTN ModeNumber\r
ed66e1bc 1645 );\r
95276127 1646\r
415df2a3 1647/**\r
1648 Sets the background and foreground colors for the OutputString () and\r
1649 ClearScreen () functions.\r
1650\r
1651 @param This Protocol instance pointer.\r
1652 @param Attribute The attribute to set. Bits 0..3 are the\r
1653 foreground color, and bits 4..6 are the\r
1654 background color. All other bits are undefined\r
1655 and must be zero. The valid Attributes are\r
1656 defined in this file.\r
1657\r
1658 @retval EFI_SUCCESS The attribute was set.\r
1659 @retval EFI_DEVICE_ERROR The device had an error and could not complete\r
1660 the request.\r
1661 @retval EFI_UNSUPPORTED The attribute requested is not defined.\r
1662\r
1663**/\r
95276127 1664EFI_STATUS\r
1665EFIAPI\r
1666ConSplitterTextOutSetAttribute (\r
1667 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
1668 IN UINTN Attribute\r
ed66e1bc 1669 );\r
95276127 1670\r
415df2a3 1671/**\r
1672 Clears the output device(s) display to the currently selected background\r
1673 color.\r
1674\r
1675 @param This Protocol instance pointer.\r
1676\r
1677 @retval EFI_SUCCESS The operation completed successfully.\r
1678 @retval EFI_DEVICE_ERROR The device had an error and could not complete\r
1679 the request.\r
1680 @retval EFI_UNSUPPORTED The output device is not in a valid text mode.\r
1681\r
1682**/\r
95276127 1683EFI_STATUS\r
1684EFIAPI\r
1685ConSplitterTextOutClearScreen (\r
1686 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This\r
ed66e1bc 1687 );\r
95276127 1688\r
415df2a3 1689/**\r
1690 Sets the current coordinates of the cursor position\r
1691\r
1692 @param This Protocol instance pointer.\r
33019a71 1693 @param Column The column position to set the cursor to. Must be\r
415df2a3 1694 greater than or equal to zero and less than the\r
33019a71 1695 number of columns by QueryMode ().\r
1696 @param Row The row position to set the cursor to. Must be\r
1697 greater than or equal to zero and less than the\r
1698 number of rows by QueryMode ().\r
415df2a3 1699\r
1700 @retval EFI_SUCCESS The operation completed successfully.\r
1701 @retval EFI_DEVICE_ERROR The device had an error and could not complete\r
1702 the request.\r
1703 @retval EFI_UNSUPPORTED The output device is not in a valid text mode,\r
1704 or the cursor position is invalid for the\r
1705 current mode.\r
1706\r
1707**/\r
95276127 1708EFI_STATUS\r
1709EFIAPI\r
1710ConSplitterTextOutSetCursorPosition (\r
1711 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
1712 IN UINTN Column,\r
1713 IN UINTN Row\r
ed66e1bc 1714 );\r
95276127 1715\r
415df2a3 1716\r
1717/**\r
1718 Makes the cursor visible or invisible\r
1719\r
1720 @param This Protocol instance pointer.\r
1721 @param Visible If TRUE, the cursor is set to be visible. If\r
1722 FALSE, the cursor is set to be invisible.\r
1723\r
1724 @retval EFI_SUCCESS The operation completed successfully.\r
1725 @retval EFI_DEVICE_ERROR The device had an error and could not complete\r
1726 the request, or the device does not support\r
1727 changing the cursor mode.\r
1728 @retval EFI_UNSUPPORTED The output device is not in a valid text mode.\r
1729\r
1730**/\r
95276127 1731EFI_STATUS\r
1732EFIAPI\r
1733ConSplitterTextOutEnableCursor (\r
1734 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
1735 IN BOOLEAN Visible\r
ed66e1bc 1736 );\r
95276127 1737\r
415df2a3 1738/**\r
a9746199
RN
1739 Take the passed in Buffer of size ElementSize and grow the buffer\r
1740 by CONSOLE_SPLITTER_ALLOC_UNIT * ElementSize bytes.\r
1741 Copy the current data in Buffer to the new version of Buffer and\r
1742 free the old version of buffer.\r
415df2a3 1743\r
a9746199 1744 @param ElementSize Size of element in array.\r
fc753d3b 1745 @param Count Current number of elements in array.\r
415df2a3 1746 @param Buffer Bigger version of passed in Buffer with all the\r
fc753d3b 1747 data.\r
415df2a3 1748\r
fc753d3b 1749 @retval EFI_SUCCESS Buffer size has grown.\r
415df2a3 1750 @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size.\r
1751\r
1752**/\r
95276127 1753EFI_STATUS\r
1754ConSplitterGrowBuffer (\r
a9746199 1755 IN UINTN ElementSize,\r
406ddad3 1756 IN OUT UINTN *Count,\r
95276127 1757 IN OUT VOID **Buffer\r
ed66e1bc 1758 );\r
95276127 1759\r
415df2a3 1760/**\r
2da292f6 1761 Returns information for an available graphics mode that the graphics device\r
1762 and the set of active video output devices supports.\r
415df2a3 1763\r
2da292f6 1764 @param This The EFI_GRAPHICS_OUTPUT_PROTOCOL instance.\r
1765 @param ModeNumber The mode number to return information on.\r
1766 @param SizeOfInfo A pointer to the size, in bytes, of the Info buffer.\r
1767 @param Info A pointer to callee allocated buffer that returns information about ModeNumber.\r
415df2a3 1768\r
2da292f6 1769 @retval EFI_SUCCESS Mode information returned.\r
1770 @retval EFI_BUFFER_TOO_SMALL The Info buffer was too small.\r
1771 @retval EFI_DEVICE_ERROR A hardware error occurred trying to retrieve the video mode.\r
2da292f6 1772 @retval EFI_INVALID_PARAMETER One of the input args was NULL.\r
1773 @retval EFI_OUT_OF_RESOURCES No resource available.\r
415df2a3 1774\r
1775**/\r
95276127 1776EFI_STATUS\r
1777EFIAPI\r
d6e11f22 1778ConSplitterGraphicsOutputQueryMode (\r
fc753d3b 1779 IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,\r
1780 IN UINT32 ModeNumber,\r
1781 OUT UINTN *SizeOfInfo,\r
66aa04e4 1782 OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION **Info\r
ed66e1bc 1783 );\r
95276127 1784\r
415df2a3 1785/**\r
ed055f1b 1786 Set the video device into the specified mode and clears the visible portions of\r
2da292f6 1787 the output display to black.\r
415df2a3 1788\r
2da292f6 1789 @param This The EFI_GRAPHICS_OUTPUT_PROTOCOL instance.\r
1790 @param ModeNumber Abstraction that defines the current video mode.\r
415df2a3 1791\r
2da292f6 1792 @retval EFI_SUCCESS The graphics mode specified by ModeNumber was selected.\r
1793 @retval EFI_DEVICE_ERROR The device had an error and could not complete the request.\r
1794 @retval EFI_UNSUPPORTED ModeNumber is not supported by this device.\r
1795 @retval EFI_OUT_OF_RESOURCES No resource available.\r
415df2a3 1796\r
1797**/\r
95276127 1798EFI_STATUS\r
1799EFIAPI\r
d6e11f22 1800ConSplitterGraphicsOutputSetMode (\r
95276127 1801 IN EFI_GRAPHICS_OUTPUT_PROTOCOL * This,\r
1802 IN UINT32 ModeNumber\r
ed66e1bc 1803 );\r
95276127 1804\r
415df2a3 1805/**\r
1806 The following table defines actions for BltOperations.\r
1807\r
1808 EfiBltVideoFill - Write data from the BltBuffer pixel (SourceX, SourceY)\r
1809 directly to every pixel of the video display rectangle\r
1810 (DestinationX, DestinationY)\r
1811 (DestinationX + Width, DestinationY + Height).\r
1812 Only one pixel will be used from the BltBuffer. Delta is NOT used.\r
1813 EfiBltVideoToBltBuffer - Read data from the video display rectangle\r
1814 (SourceX, SourceY) (SourceX + Width, SourceY + Height) and place it in\r
1815 the BltBuffer rectangle (DestinationX, DestinationY )\r
1816 (DestinationX + Width, DestinationY + Height). If DestinationX or\r
1817 DestinationY is not zero then Delta must be set to the length in bytes\r
1818 of a row in the BltBuffer.\r
1819 EfiBltBufferToVideo - Write data from the BltBuffer rectangle\r
1820 (SourceX, SourceY) (SourceX + Width, SourceY + Height) directly to the\r
1821 video display rectangle (DestinationX, DestinationY)\r
1822 (DestinationX + Width, DestinationY + Height). If SourceX or SourceY is\r
1823 not zero then Delta must be set to the length in bytes of a row in the\r
1824 BltBuffer.\r
1825 EfiBltVideoToVideo - Copy from the video display rectangle\r
1826 (SourceX, SourceY) (SourceX + Width, SourceY + Height) .\r
1827 to the video display rectangle (DestinationX, DestinationY)\r
1828 (DestinationX + Width, DestinationY + Height).\r
1829 The BltBuffer and Delta are not used in this mode.\r
1830\r
1831 @param This Protocol instance pointer.\r
1832 @param BltBuffer Buffer containing data to blit into video buffer.\r
1833 This buffer has a size of\r
1834 Width*Height*sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL)\r
1835 @param BltOperation Operation to perform on BlitBuffer and video\r
1836 memory\r
1837 @param SourceX X coordinate of source for the BltBuffer.\r
1838 @param SourceY Y coordinate of source for the BltBuffer.\r
1839 @param DestinationX X coordinate of destination for the BltBuffer.\r
1840 @param DestinationY Y coordinate of destination for the BltBuffer.\r
1841 @param Width Width of rectangle in BltBuffer in pixels.\r
ed055f1b 1842 @param Height Hight of rectangle in BltBuffer in pixels.\r
33019a71 1843 @param Delta OPTIONAL.\r
415df2a3 1844\r
1845 @retval EFI_SUCCESS The Blt operation completed.\r
1846 @retval EFI_INVALID_PARAMETER BltOperation is not valid.\r
1847 @retval EFI_DEVICE_ERROR A hardware error occured writting to the video\r
1848 buffer.\r
1849\r
1850**/\r
95276127 1851EFI_STATUS\r
1852EFIAPI\r
d6e11f22 1853ConSplitterGraphicsOutputBlt (\r
95276127 1854 IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,\r
1855 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer, OPTIONAL\r
1856 IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation,\r
1857 IN UINTN SourceX,\r
1858 IN UINTN SourceY,\r
1859 IN UINTN DestinationX,\r
1860 IN UINTN DestinationY,\r
1861 IN UINTN Width,\r
1862 IN UINTN Height,\r
1863 IN UINTN Delta OPTIONAL\r
ed66e1bc 1864 );\r
95276127 1865\r
95276127 1866\r
415df2a3 1867/**\r
1868 Return the current video mode information.\r
1869\r
2da292f6 1870 @param This The EFI_UGA_DRAW_PROTOCOL instance.\r
1871 @param HorizontalResolution The size of video screen in pixels in the X dimension.\r
1872 @param VerticalResolution The size of video screen in pixels in the Y dimension.\r
1873 @param ColorDepth Number of bits per pixel, currently defined to be 32.\r
1874 @param RefreshRate The refresh rate of the monitor in Hertz.\r
415df2a3 1875\r
2da292f6 1876 @retval EFI_SUCCESS Mode information returned.\r
1877 @retval EFI_NOT_STARTED Video display is not initialized. Call SetMode ()\r
1878 @retval EFI_INVALID_PARAMETER One of the input args was NULL.\r
415df2a3 1879\r
1880**/\r
d0c64728 1881EFI_STATUS\r
1882EFIAPI\r
d6e11f22 1883ConSplitterUgaDrawGetMode (\r
d0c64728 1884 IN EFI_UGA_DRAW_PROTOCOL *This,\r
1885 OUT UINT32 *HorizontalResolution,\r
1886 OUT UINT32 *VerticalResolution,\r
1887 OUT UINT32 *ColorDepth,\r
1888 OUT UINT32 *RefreshRate\r
ed66e1bc 1889 );\r
d0c64728 1890\r
415df2a3 1891/**\r
2da292f6 1892 Set the current video mode information.\r
415df2a3 1893\r
2da292f6 1894 @param This The EFI_UGA_DRAW_PROTOCOL instance.\r
1895 @param HorizontalResolution The size of video screen in pixels in the X dimension.\r
1896 @param VerticalResolution The size of video screen in pixels in the Y dimension.\r
1897 @param ColorDepth Number of bits per pixel, currently defined to be 32.\r
1898 @param RefreshRate The refresh rate of the monitor in Hertz.\r
415df2a3 1899\r
2da292f6 1900 @retval EFI_SUCCESS Mode information returned.\r
1901 @retval EFI_NOT_STARTED Video display is not initialized. Call SetMode ()\r
1902 @retval EFI_OUT_OF_RESOURCES Out of resources.\r
415df2a3 1903\r
1904**/\r
d0c64728 1905EFI_STATUS\r
1906EFIAPI\r
d6e11f22 1907ConSplitterUgaDrawSetMode (\r
d0c64728 1908 IN EFI_UGA_DRAW_PROTOCOL *This,\r
1909 IN UINT32 HorizontalResolution,\r
1910 IN UINT32 VerticalResolution,\r
1911 IN UINT32 ColorDepth,\r
1912 IN UINT32 RefreshRate\r
ed66e1bc 1913 );\r
d0c64728 1914\r
415df2a3 1915/**\r
2da292f6 1916 Blt a rectangle of pixels on the graphics screen.\r
415df2a3 1917\r
2da292f6 1918 The following table defines actions for BltOperations.\r
415df2a3 1919\r
2da292f6 1920 EfiUgaVideoFill:\r
1921 Write data from the BltBuffer pixel (SourceX, SourceY)\r
1922 directly to every pixel of the video display rectangle\r
1923 (DestinationX, DestinationY)\r
1924 (DestinationX + Width, DestinationY + Height).\r
1925 Only one pixel will be used from the BltBuffer. Delta is NOT used.\r
ed055f1b 1926 EfiUgaVideoToBltBuffer:\r
2da292f6 1927 Read data from the video display rectangle\r
1928 (SourceX, SourceY) (SourceX + Width, SourceY + Height) and place it in\r
1929 the BltBuffer rectangle (DestinationX, DestinationY )\r
1930 (DestinationX + Width, DestinationY + Height). If DestinationX or\r
1931 DestinationY is not zero then Delta must be set to the length in bytes\r
1932 of a row in the BltBuffer.\r
1933 EfiUgaBltBufferToVideo:\r
1934 Write data from the BltBuffer rectangle\r
1935 (SourceX, SourceY) (SourceX + Width, SourceY + Height) directly to the\r
1936 video display rectangle (DestinationX, DestinationY)\r
1937 (DestinationX + Width, DestinationY + Height). If SourceX or SourceY is\r
1938 not zero then Delta must be set to the length in bytes of a row in the\r
1939 BltBuffer.\r
1940 EfiUgaVideoToVideo:\r
1941 Copy from the video display rectangle\r
1942 (SourceX, SourceY) (SourceX + Width, SourceY + Height) .\r
1943 to the video display rectangle (DestinationX, DestinationY)\r
1944 (DestinationX + Width, DestinationY + Height).\r
1945 The BltBuffer and Delta are not used in this mode.\r
1946\r
1947 @param This Protocol instance pointer.\r
1948 @param BltBuffer Buffer containing data to blit into video buffer. This\r
1949 buffer has a size of Width*Height*sizeof(EFI_UGA_PIXEL)\r
1950 @param BltOperation Operation to perform on BlitBuffer and video memory\r
1951 @param SourceX X coordinate of source for the BltBuffer.\r
1952 @param SourceY Y coordinate of source for the BltBuffer.\r
1953 @param DestinationX X coordinate of destination for the BltBuffer.\r
1954 @param DestinationY Y coordinate of destination for the BltBuffer.\r
1955 @param Width Width of rectangle in BltBuffer in pixels.\r
1956 @param Height Hight of rectangle in BltBuffer in pixels.\r
1957 @param Delta OPTIONAL\r
1958\r
1959 @retval EFI_SUCCESS The Blt operation completed.\r
1960 @retval EFI_INVALID_PARAMETER BltOperation is not valid.\r
1961 @retval EFI_DEVICE_ERROR A hardware error occured writting to the video buffer.\r
415df2a3 1962\r
1963**/\r
d0c64728 1964EFI_STATUS\r
1965EFIAPI\r
d6e11f22 1966ConSplitterUgaDrawBlt (\r
d0c64728 1967 IN EFI_UGA_DRAW_PROTOCOL *This,\r
1968 IN EFI_UGA_PIXEL *BltBuffer, OPTIONAL\r
1969 IN EFI_UGA_BLT_OPERATION BltOperation,\r
1970 IN UINTN SourceX,\r
1971 IN UINTN SourceY,\r
1972 IN UINTN DestinationX,\r
1973 IN UINTN DestinationY,\r
1974 IN UINTN Width,\r
1975 IN UINTN Height,\r
1976 IN UINTN Delta OPTIONAL\r
ed66e1bc 1977 );\r
d0c64728 1978\r
415df2a3 1979/**\r
1980 Sets the output device(s) to a specified mode.\r
1981\r
2da292f6 1982 @param Private Text Out Splitter pointer.\r
415df2a3 1983 @param ModeNumber The mode number to set.\r
1984\r
415df2a3 1985**/\r
9937b365 1986VOID\r
1987TextOutSetMode (\r
95276127 1988 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
1989 IN UINTN ModeNumber\r
ed66e1bc 1990 );\r
95276127 1991\r
95276127 1992\r
1993#endif\r