1. Removed #ifdef EDK_RELEASE_VERSION from all c files for all modules

2. Removed #ifdef EFI_SPECIFICATION_VERSION from all c files for all modules
3. Added comments for file VariableWorker.c

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2495 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
vanjeff
2007-03-21 01:27:01 +00:00
parent 6dcb94c713
commit ce8bd86e8f
25 changed files with 448 additions and 1158 deletions

View File

@@ -1,30 +1,30 @@
/**@file
Console Splitter Driver. Any Handle that attatched
Console Splitter Driver. Any Handle that attatched
EFI_CONSOLE_IDENTIFIER_PROTOCOL can be bound by this driver.
So far it works like any other driver by opening a SimpleTextIn and/or
SimpleTextOut protocol with EFI_OPEN_PROTOCOL_BY_DRIVER attributes. The big
So far it works like any other driver by opening a SimpleTextIn and/or
SimpleTextOut protocol with EFI_OPEN_PROTOCOL_BY_DRIVER attributes. The big
difference is this driver does not layer a protocol on the passed in
handle, or construct a child handle like a standard device or bus driver.
This driver produces three virtual handles as children, one for console input
handle, or construct a child handle like a standard device or bus driver.
This driver produces three virtual handles as children, one for console input
splitter, one for console output splitter and one for error output splitter.
EFI_CONSOLE_SPLIT_PROTOCOL will be attatched onto each virtual handle to
EFI_CONSOLE_SPLIT_PROTOCOL will be attatched onto each virtual handle to
identify the splitter type.
Each virtual handle, that supports both the EFI_CONSOLE_SPLIT_PROTOCOL
and Console I/O protocol, will be produced in the driver entry point.
and Console I/O protocol, will be produced in the driver entry point.
The virtual handle are added on driver entry and never removed.
Such design ensures sytem function well during none console device situation.
Copyright (c) 2006 Intel Corporation. <BR>
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
Copyright (c) 2006 - 2007 Intel Corporation. <BR>
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
#include "ConSplitter.h"
@@ -104,18 +104,6 @@ STATIC TEXT_OUT_SPLITTER_PRIVATE_DATA mConOut = {
0,
FALSE,
},
#if (EFI_SPECIFICATION_VERSION < 0x00020000)
{
ConSpliterUgaDrawGetMode,
ConSpliterUgaDrawSetMode,
ConSpliterUgaDrawBlt
},
0,
0,
0,
0,
(EFI_UGA_PIXEL *) NULL,
#else
{
ConSpliterGraphicsOutputQueryMode,
ConSpliterGraphicsOutputSetMode,
@@ -126,7 +114,6 @@ STATIC TEXT_OUT_SPLITTER_PRIVATE_DATA mConOut = {
(TEXT_OUT_GOP_MODE *) NULL,
0,
TRUE,
#endif
{
ConSpliterConsoleControlGetMode,
ConSpliterConsoleControlSetMode,
@@ -170,18 +157,6 @@ STATIC TEXT_OUT_SPLITTER_PRIVATE_DATA mStdErr = {
0,
FALSE,
},
#if (EFI_SPECIFICATION_VERSION < 0x00020000)
{
ConSpliterUgaDrawGetMode,
ConSpliterUgaDrawSetMode,
ConSpliterUgaDrawBlt
},
0,
0,
0,
0,
(EFI_UGA_PIXEL *) NULL,
#else
{
ConSpliterGraphicsOutputQueryMode,
ConSpliterGraphicsOutputSetMode,
@@ -192,7 +167,6 @@ STATIC TEXT_OUT_SPLITTER_PRIVATE_DATA mStdErr = {
(TEXT_OUT_GOP_MODE *) NULL,
0,
TRUE,
#endif
{
ConSpliterConsoleControlGetMode,
ConSpliterConsoleControlSetMode,
@@ -259,12 +233,12 @@ ConSplitterDriverEntry (
Routine Description:
Intialize a virtual console device to act as an agrigator of physical console
devices.
devices.
Arguments:
ImageHandle - (Standard EFI Image entry - EFI_IMAGE_ENTRY_POINT)
SystemTable - (Standard EFI Image entry - EFI_IMAGE_ENTRY_POINT)
Returns:
Returns:
EFI_SUCCESS
--*/
@@ -318,23 +292,6 @@ Returns:
//
Status = ConSplitterTextOutConstructor (&mConOut);
if (!EFI_ERROR (Status)) {
#if (EFI_SPECIFICATION_VERSION < 0x00020000)
//
// In EFI mode, UGA Draw protocol is installed
//
Status = gBS->InstallMultipleProtocolInterfaces (
&mConOut.VirtualHandle,
&gEfiSimpleTextOutProtocolGuid,
&mConOut.TextOut,
&gEfiUgaDrawProtocolGuid,
&mConOut.UgaDraw,
&gEfiConsoleControlProtocolGuid,
&mConOut.ConsoleControl,
&gEfiPrimaryConsoleOutDeviceGuid,
NULL,
NULL
);
#else
//
// In UEFI mode, Graphics Output Protocol is installed on virtual handle.
//
@@ -350,7 +307,6 @@ Returns:
NULL,
NULL
);
#endif
if (!EFI_ERROR (Status)) {
//
@@ -388,7 +344,7 @@ Arguments:
ConInPrivate - A pointer to the TEXT_IN_SPLITTER_PRIVATE_DATA structure.
Returns:
Returns:
EFI_OUT_OF_RESOURCES - Out of resources.
--*/
@@ -485,12 +441,6 @@ ConSplitterTextOutConstructor (
ConOutPrivate->TextOutQueryData[0].Rows = 25;
DevNullTextOutSetMode (ConOutPrivate, 0);
#if (EFI_SPECIFICATION_VERSION < 0x00020000)
//
// Setup the DevNullUgaDraw to 800 x 600 x 32 bits per pixel
//
ConSpliterUgaDrawSetMode (&ConOutPrivate->UgaDraw, 800, 600, 32, 60);
#else
//
// Setup resource for mode information in Graphics Output Protocol interface
//
@@ -526,7 +476,6 @@ ConSplitterTextOutConstructor (
//
ConOutPrivate->GraphicsOutput.Mode->Mode = 0xffff;
ConOutPrivate->GraphicsOutput.SetMode (&ConOutPrivate->GraphicsOutput, 0);
#endif
return Status;
}
@@ -732,7 +681,7 @@ ConSplitterStart (
/*++
Routine Description:
Start ConSplitter on ControllerHandle, and create the virtual
Start ConSplitter on ControllerHandle, and create the virtual
agrogated console device on first call Start for a SimpleTextIn handle.
Arguments:
@@ -793,7 +742,7 @@ ConSplitterConInDriverBindingStart (
/*++
Routine Description:
Start ConSplitter on ControllerHandle, and create the virtual
Start ConSplitter on ControllerHandle, and create the virtual
agrogated console device on first call Start for a SimpleTextIn handle.
Arguments:
@@ -840,7 +789,7 @@ ConSplitterSimplePointerDriverBindingStart (
/*++
Routine Description:
Start ConSplitter on ControllerHandle, and create the virtual
Start ConSplitter on ControllerHandle, and create the virtual
agrogated console device on first call Start for a SimpleTextIn handle.
Arguments:
@@ -882,7 +831,7 @@ ConSplitterConOutDriverBindingStart (
/*++
Routine Description:
Start ConSplitter on ControllerHandle, and create the virtual
Start ConSplitter on ControllerHandle, and create the virtual
agrogated console device on first call Start for a SimpleTextIn handle.
Arguments:
@@ -946,21 +895,6 @@ Returns:
Status = ConSplitterTextOutAddDevice (&mConOut, TextOut, GraphicsOutput, UgaDraw);
ConSplitterTextOutSetAttribute (&mConOut.TextOut, EFI_TEXT_ATTR (EFI_LIGHTGRAY, EFI_BLACK));
#if (EFI_SPECIFICATION_VERSION < 0x00020000)
//
// Match the UGA mode data of ConOut with the current mode
//
if (UgaDraw != NULL) {
UgaDraw->GetMode (
UgaDraw,
&mConOut.UgaHorizontalResolution,
&mConOut.UgaVerticalResolution,
&mConOut.UgaColorDepth,
&mConOut.UgaRefreshRate
);
}
#endif
return Status;
}
@@ -974,7 +908,7 @@ ConSplitterStdErrDriverBindingStart (
/*++
Routine Description:
Start ConSplitter on ControllerHandle, and create the virtual
Start ConSplitter on ControllerHandle, and create the virtual
agrogated console device on first call Start for a SimpleTextIn handle.
Arguments:
@@ -1930,7 +1864,6 @@ Returns:
return EFI_SUCCESS;
}
#if (EFI_SPECIFICATION_VERSION >= 0x00020000)
STATIC
EFI_STATUS
ConSplitterAddGraphicsOutputMode (
@@ -2116,7 +2049,6 @@ Returns:
return Status;
}
#endif
EFI_STATUS
ConSplitterTextOutAddDevice (
@@ -2207,21 +2139,15 @@ Returns:
MaxMode = Private->TextOutMode.MaxMode;
ASSERT (MaxMode >= 1);
#if (EFI_SPECIFICATION_VERSION >= 0x00020000)
if ((GraphicsOutput != NULL) || (UgaDraw != NULL)) {
ConSplitterAddGraphicsOutputMode (Private, GraphicsOutput, UgaDraw);
}
#endif
if (Private->ConsoleOutputMode == EfiConsoleControlScreenGraphics && GraphicsOutput != NULL) {
//
// We just added a new UGA device in graphics mode
//
#if (EFI_SPECIFICATION_VERSION >= 0x00020000)
DevNullGopSync (Private, GraphicsOutput, UgaDraw);
#else
DevNullUgaSync (Private, UgaDraw);
#endif
} else if ((CurrentMode >= 0) && ((GraphicsOutput != NULL) || (UgaDraw != NULL)) && (CurrentMode < Private->TextOutMode.MaxMode)) {
//
// The new console supports the same mode of the current console so sync up
@@ -2351,7 +2277,7 @@ ConSplitterTextInReset (
Returns:
EFI_SUCCESS - The device was reset.
EFI_DEVICE_ERROR - The device is not functioning properly and could
EFI_DEVICE_ERROR - The device is not functioning properly and could
not be reset.
--*/
@@ -2390,7 +2316,7 @@ ConSplitterTextInPrivateReadKeyStroke (
/*++
Routine Description:
Reads the next keystroke from the input device. The WaitForKey Event can
Reads the next keystroke from the input device. The WaitForKey Event can
be used to test for existance of a keystroke via WaitForEvent () call.
Arguments:
@@ -2400,7 +2326,7 @@ ConSplitterTextInPrivateReadKeyStroke (
Returns:
EFI_SUCCESS - The keystroke information was returned.
EFI_NOT_READY - There was no keystroke data availiable.
EFI_DEVICE_ERROR - The keydtroke information was not returned due to
EFI_DEVICE_ERROR - The keydtroke information was not returned due to
hardware errors.
--*/
@@ -2462,14 +2388,14 @@ ConSpliterConsoleControlLockStdInEvent (
/*++
Routine Description:
This timer event will fire when StdIn is locked. It will check the key
This timer event will fire when StdIn is locked. It will check the key
sequence on StdIn to see if it matches the password. Any error in the
password will cause the check to reset. As long a mConIn.PasswordEnabled is
TRUE the StdIn splitter will not report any input.
Arguments:
(Standard EFI_EVENT_NOTIFY)
Returns:
None
@@ -2546,7 +2472,7 @@ ConSpliterConsoleControlLockStdIn (
/*++
Routine Description:
If Password is NULL unlock the password state variable and set the event
If Password is NULL unlock the password state variable and set the event
timer. If the Password is too big return an error. If the Password is valid
Copy the Password and enable state variable and then arm the periodic timer
@@ -2589,7 +2515,7 @@ ConSplitterTextInReadKeyStroke (
/*++
Routine Description:
Reads the next keystroke from the input device. The WaitForKey Event can
Reads the next keystroke from the input device. The WaitForKey Event can
be used to test for existance of a keystroke via WaitForEvent () call.
If the ConIn is password locked make it look like no keystroke is availible
@@ -2600,7 +2526,7 @@ ConSplitterTextInReadKeyStroke (
Returns:
EFI_SUCCESS - The keystroke information was returned.
EFI_NOT_READY - There was no keystroke data availiable.
EFI_DEVICE_ERROR - The keydtroke information was not returned due to
EFI_DEVICE_ERROR - The keydtroke information was not returned due to
hardware errors.
--*/
@@ -2632,7 +2558,7 @@ Routine Description:
This event agregates all the events of the ConIn devices in the spliter.
If the ConIn is password locked then return.
If any events of physical ConIn devices are signaled, signal the ConIn
spliter event. This will cause the calling code to call
spliter event. This will cause the calling code to call
ConSplitterTextInReadKeyStroke ().
Arguments:
@@ -2692,7 +2618,7 @@ ConSplitterSimplePointerReset (
Returns:
EFI_SUCCESS - The device was reset.
EFI_DEVICE_ERROR - The device is not functioning properly and could
EFI_DEVICE_ERROR - The device is not functioning properly and could
not be reset.
--*/
@@ -2735,17 +2661,17 @@ ConSplitterSimplePointerPrivateGetState (
/*++
Routine Description:
Reads the next keystroke from the input device. The WaitForKey Event can
Reads the next keystroke from the input device. The WaitForKey Event can
be used to test for existance of a keystroke via WaitForEvent () call.
Arguments:
This - Protocol instance pointer.
State -
State -
Returns:
EFI_SUCCESS - The keystroke information was returned.
EFI_NOT_READY - There was no keystroke data availiable.
EFI_DEVICE_ERROR - The keydtroke information was not returned due to
EFI_DEVICE_ERROR - The keydtroke information was not returned due to
hardware errors.
--*/
@@ -2814,18 +2740,18 @@ ConSplitterSimplePointerGetState (
/*++
Routine Description:
Reads the next keystroke from the input device. The WaitForKey Event can
Reads the next keystroke from the input device. The WaitForKey Event can
be used to test for existance of a keystroke via WaitForEvent () call.
If the ConIn is password locked make it look like no keystroke is availible
Arguments:
This - Protocol instance pointer.
State -
State -
Returns:
EFI_SUCCESS - The keystroke information was returned.
EFI_NOT_READY - There was no keystroke data availiable.
EFI_DEVICE_ERROR - The keydtroke information was not returned due to
EFI_DEVICE_ERROR - The keydtroke information was not returned due to
hardware errors.
--*/
@@ -2857,7 +2783,7 @@ Routine Description:
This event agregates all the events of the ConIn devices in the spliter.
If the ConIn is password locked then return.
If any events of physical ConIn devices are signaled, signal the ConIn
spliter event. This will cause the calling code to call
spliter event. This will cause the calling code to call
ConSplitterTextInReadKeyStroke ().
Arguments:
@@ -2913,7 +2839,7 @@ ConSplitterTextOutReset (
Arguments:
This - Protocol instance pointer.
ExtendedVerification - Driver may perform more exhaustive verfication
ExtendedVerification - Driver may perform more exhaustive verfication
operation of the device during reset.
Returns:
@@ -2971,17 +2897,17 @@ ConSplitterTextOutOutputString (
Arguments:
This - Protocol instance pointer.
String - The NULL-terminated Unicode string to be displayed on the output
device(s). All output devices must also support the Unicode
device(s). All output devices must also support the Unicode
drawing defined in this file.
Returns:
EFI_SUCCESS - The string was output to the device.
EFI_DEVICE_ERROR - The device reported an error while attempting to output
the text.
EFI_UNSUPPORTED - The output device's mode is not currently in a
EFI_UNSUPPORTED - The output device's mode is not currently in a
defined text mode.
EFI_WARN_UNKNOWN_GLYPH - This warning code indicates that some of the
characters in the Unicode string could not be
EFI_WARN_UNKNOWN_GLYPH - This warning code indicates that some of the
characters in the Unicode string could not be
rendered and were skipped.
--*/
@@ -3048,7 +2974,7 @@ ConSplitterTextOutTestString (
/*++
Routine Description:
Verifies that all characters in a Unicode string can be output to the
Verifies that all characters in a Unicode string can be output to the
target device.
Arguments:
@@ -3058,8 +2984,8 @@ ConSplitterTextOutTestString (
Returns:
EFI_SUCCESS - The device(s) are capable of rendering the output string.
EFI_UNSUPPORTED - Some of the characters in the Unicode string cannot be
rendered by one or more of the output devices mapped
EFI_UNSUPPORTED - Some of the characters in the Unicode string cannot be
rendered by one or more of the output devices mapped
by the EFI handle.
--*/
@@ -3115,7 +3041,7 @@ ConSplitterTextOutQueryMode (
Returns:
EFI_SUCCESS - The requested mode information was returned.
EFI_DEVICE_ERROR - The device had an error and could not
EFI_DEVICE_ERROR - The device had an error and could not
complete the request.
EFI_UNSUPPORTED - The mode number was not valid.
@@ -3132,7 +3058,7 @@ ConSplitterTextOutQueryMode (
if ( (ModeNumber > (UINTN)(((UINT32)-1)>>1)) ) {
return EFI_UNSUPPORTED;
}
if ((INT32) ModeNumber >= This->Mode->MaxMode) {
return EFI_UNSUPPORTED;
}
@@ -3165,7 +3091,7 @@ ConSplitterTextOutSetMode (
Returns:
EFI_SUCCESS - The requested text mode was set.
EFI_DEVICE_ERROR - The device had an error and
EFI_DEVICE_ERROR - The device had an error and
could not complete the request.
EFI_UNSUPPORTED - The mode number was not valid.
@@ -3251,7 +3177,7 @@ ConSplitterTextOutSetAttribute (
Returns:
EFI_SUCCESS - The attribute was set.
EFI_DEVICE_ERROR - The device had an error and
EFI_DEVICE_ERROR - The device had an error and
could not complete the request.
EFI_UNSUPPORTED - The attribute requested is not defined.
@@ -3269,7 +3195,7 @@ ConSplitterTextOutSetAttribute (
//
if ( (Attribute > (UINTN)(((UINT32)-1)>>1)) ) {
return EFI_UNSUPPORTED;
}
}
//
// return the worst status met
@@ -3300,7 +3226,7 @@ ConSplitterTextOutClearScreen (
/*++
Routine Description:
Clears the output device(s) display to the currently selected background
Clears the output device(s) display to the currently selected background
color.
Arguments:
@@ -3308,7 +3234,7 @@ ConSplitterTextOutClearScreen (
Returns:
EFI_SUCCESS - The operation completed successfully.
EFI_DEVICE_ERROR - The device had an error and
EFI_DEVICE_ERROR - The device had an error and
could not complete the request.
EFI_UNSUPPORTED - The output device is not in a valid text mode.
@@ -3362,9 +3288,9 @@ ConSplitterTextOutSetCursorPosition (
Returns:
EFI_SUCCESS - The operation completed successfully.
EFI_DEVICE_ERROR - The device had an error and
EFI_DEVICE_ERROR - The device had an error and
could not complete the request.
EFI_UNSUPPORTED - The output device is not in a valid text mode, or the
EFI_UNSUPPORTED - The output device is not in a valid text mode, or the
cursor position is invalid for the current mode.
--*/
@@ -3424,7 +3350,7 @@ ConSplitterTextOutEnableCursor (
Returns:
EFI_SUCCESS - The operation completed successfully.
EFI_DEVICE_ERROR - The device had an error and could not complete the
EFI_DEVICE_ERROR - The device had an error and could not complete the
request, or the device does not support changing
the cursor mode.
EFI_UNSUPPORTED - The output device is not in a valid text mode.

View File

@@ -1,16 +1,16 @@
/*++
Copyright (c) 2006 - 2007, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
Copyright (c) 2006 - 2007, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
Module Name:
ConSplitterGraphics.c
Abstract:
@@ -96,7 +96,7 @@ ConSpliterConsoleControlSetMode (
Arguments:
This - Protocol instance pointer.
Mode - Mode to set the
Mode - Mode to set the
Returns:
EFI_SUCCESS - Mode information returned.
@@ -118,7 +118,7 @@ ConSpliterConsoleControlSetMode (
//
// Judge current mode with wanted mode at first.
//
//
if (Private->ConsoleOutputMode == Mode) {
return EFI_SUCCESS;
}
@@ -147,11 +147,7 @@ ConSpliterConsoleControlSetMode (
//
if ((Mode == EfiConsoleControlScreenGraphics) &&((TextAndGop->GraphicsOutput != NULL) || (TextAndGop->UgaDraw != NULL))) {
TextAndGop->TextOutEnabled = FALSE;
#if (EFI_SPECIFICATION_VERSION >= 0x00020000)
DevNullGopSync (Private, TextAndGop->GraphicsOutput, TextAndGop->UgaDraw);
#else
DevNullUgaSync (Private, TextAndGop->UgaDraw);
#endif
}
}
@@ -162,7 +158,6 @@ ConSpliterConsoleControlSetMode (
return EFI_SUCCESS;
}
#if (EFI_SPECIFICATION_VERSION >= 0x00020000)
EFI_STATUS
EFIAPI
ConSpliterGraphicsOutputQueryMode (
@@ -374,7 +369,7 @@ DevNullGraphicsOutputBlt (
)
{
UINTN SrcY;
BOOLEAN Forward;
BOOLEAN Forward;
UINTN Index;
EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltPtr;
EFI_GRAPHICS_OUTPUT_BLT_PIXEL *ScreenPtr;
@@ -658,396 +653,6 @@ DevNullGopSync (
}
}
#else
EFI_STATUS
EFIAPI
ConSpliterUgaDrawGetMode (
IN EFI_UGA_DRAW_PROTOCOL *This,
OUT UINT32 *HorizontalResolution,
OUT UINT32 *VerticalResolution,
OUT UINT32 *ColorDepth,
OUT UINT32 *RefreshRate
)
/*++
Routine Description:
Return the current video mode information.
Arguments:
This - Protocol instance pointer.
HorizontalResolution - Current video horizontal resolution in pixels
VerticalResolution - Current video vertical resolution in pixels
ColorDepth - Current video color depth in bits per pixel
RefreshRate - Current video refresh rate in Hz.
Returns:
EFI_SUCCESS - Mode information returned.
EFI_NOT_STARTED - Video display is not initialized. Call SetMode ()
EFI_INVALID_PARAMETER - One of the input args was NULL.
--*/
{
TEXT_OUT_SPLITTER_PRIVATE_DATA *Private;
if (!(HorizontalResolution && VerticalResolution && RefreshRate && ColorDepth)) {
return EFI_INVALID_PARAMETER;
}
//
// retrieve private data
//
Private = UGA_DRAW_SPLITTER_PRIVATE_DATA_FROM_THIS (This);
*HorizontalResolution = Private->UgaHorizontalResolution;
*VerticalResolution = Private->UgaVerticalResolution;
*ColorDepth = Private->UgaColorDepth;
*RefreshRate = Private->UgaRefreshRate;
return EFI_SUCCESS;
}
EFI_STATUS
EFIAPI
ConSpliterUgaDrawSetMode (
IN EFI_UGA_DRAW_PROTOCOL *This,
IN UINT32 HorizontalResolution,
IN UINT32 VerticalResolution,
IN UINT32 ColorDepth,
IN UINT32 RefreshRate
)
/*++
Routine Description:
Return the current video mode information.
Arguments:
This - Protocol instance pointer.
HorizontalResolution - Current video horizontal resolution in pixels
VerticalResolution - Current video vertical resolution in pixels
ColorDepth - Current video color depth in bits per pixel
RefreshRate - Current video refresh rate in Hz.
Returns:
EFI_SUCCESS - Mode information returned.
EFI_NOT_STARTED - Video display is not initialized. Call SetMode ()
EFI_OUT_OF_RESOURCES - Out of resources.
--*/
{
EFI_STATUS Status;
TEXT_OUT_SPLITTER_PRIVATE_DATA *Private;
UINTN Index;
EFI_STATUS ReturnStatus;
UINTN Size;
Private = UGA_DRAW_SPLITTER_PRIVATE_DATA_FROM_THIS (This);
//
// UgaDevNullSetMode ()
//
ReturnStatus = EFI_SUCCESS;
//
// Free the old version
//
FreePool (Private->UgaBlt);
//
// Allocate the virtual Blt buffer
//
Size = HorizontalResolution * VerticalResolution * sizeof (EFI_UGA_PIXEL);
Private->UgaBlt = AllocateZeroPool (Size);
if (Private->UgaBlt == NULL) {
return EFI_OUT_OF_RESOURCES;
}
//
// Update the Mode data
//
Private->UgaHorizontalResolution = HorizontalResolution;
Private->UgaVerticalResolution = VerticalResolution;
Private->UgaColorDepth = ColorDepth;
Private->UgaRefreshRate = RefreshRate;
if (Private->ConsoleOutputMode != EfiConsoleControlScreenGraphics) {
return ReturnStatus;
}
//
// return the worst status met
//
for (Index = 0; Index < Private->CurrentNumberOfConsoles; Index++) {
if (Private->TextOutList[Index].UgaDraw != NULL) {
Status = Private->TextOutList[Index].UgaDraw->SetMode (
Private->TextOutList[Index].UgaDraw,
HorizontalResolution,
VerticalResolution,
ColorDepth,
RefreshRate
);
if (EFI_ERROR (Status)) {
ReturnStatus = Status;
}
}
}
return ReturnStatus;
}
EFI_STATUS
DevNullUgaBlt (
IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,
IN EFI_UGA_PIXEL *BltBuffer, OPTIONAL
IN EFI_UGA_BLT_OPERATION BltOperation,
IN UINTN SourceX,
IN UINTN SourceY,
IN UINTN DestinationX,
IN UINTN DestinationY,
IN UINTN Width,
IN UINTN Height,
IN UINTN Delta OPTIONAL
)
{
UINTN SrcY;
BOOLEAN Forward;
UINTN Index;
EFI_UGA_PIXEL *BltPtr;
EFI_UGA_PIXEL *ScreenPtr;
UINT32 HorizontalResolution;
UINT32 VerticalResolution;
if ((BltOperation < 0) || (BltOperation >= EfiUgaBltMax)) {
return EFI_INVALID_PARAMETER;
}
if (Width == 0 || Height == 0) {
return EFI_INVALID_PARAMETER;
}
if (Delta == 0) {
Delta = Width * sizeof (EFI_UGA_PIXEL);
}
HorizontalResolution = Private->UgaHorizontalResolution;
VerticalResolution = Private->UgaVerticalResolution;
//
// We need to fill the Virtual Screen buffer with the blt data.
//
if (BltOperation == EfiUgaVideoToBltBuffer) {
//
// Video to BltBuffer: Source is Video, destination is BltBuffer
//
if ((SourceY + Height) > VerticalResolution) {
return EFI_INVALID_PARAMETER;
}
if ((SourceX + Width) > HorizontalResolution) {
return EFI_INVALID_PARAMETER;
}
BltPtr = (EFI_UGA_PIXEL *) ((UINT8 *) BltBuffer + DestinationY * Delta + DestinationX * sizeof (EFI_UGA_PIXEL));
ScreenPtr = &Private->UgaBlt[SourceY * HorizontalResolution + SourceX];
while (Height) {
CopyMem (BltPtr, ScreenPtr, Width * sizeof (EFI_UGA_PIXEL));
BltPtr = (EFI_UGA_PIXEL *) ((UINT8 *) BltPtr + Delta);
ScreenPtr += HorizontalResolution;
Height--;
}
} else {
//
// BltBuffer to Video: Source is BltBuffer, destination is Video
//
if (DestinationY + Height > VerticalResolution) {
return EFI_INVALID_PARAMETER;
}
if (DestinationX + Width > HorizontalResolution) {
return EFI_INVALID_PARAMETER;
}
if ((BltOperation == EfiUgaVideoToVideo) && (DestinationY > SourceY)) {
//
// Copy backwards, only care the Video to Video Blt
//
ScreenPtr = &Private->UgaBlt[(DestinationY + Height - 1) * HorizontalResolution + DestinationX];
SrcY = SourceY + Height - 1;
Forward = FALSE;
} else {
//
// Copy forwards, for other cases
//
ScreenPtr = &Private->UgaBlt[DestinationY * HorizontalResolution + DestinationX];
SrcY = SourceY;
Forward = TRUE;
}
while (Height != 0) {
if (BltOperation == EfiUgaVideoFill) {
for (Index = 0; Index < Width; Index++) {
ScreenPtr[Index] = *BltBuffer;
}
} else {
if (BltOperation == EfiUgaBltBufferToVideo) {
BltPtr = (EFI_UGA_PIXEL *) ((UINT8 *) BltBuffer + SrcY * Delta + SourceX * sizeof (EFI_UGA_PIXEL));
} else {
BltPtr = &Private->UgaBlt[SrcY * HorizontalResolution + SourceX];
}
CopyMem (ScreenPtr, BltPtr, Width * sizeof (EFI_UGA_PIXEL));
}
if (Forward) {
ScreenPtr += HorizontalResolution;
SrcY ++;
} else {
ScreenPtr -= HorizontalResolution;
SrcY --;
}
Height--;
}
}
return EFI_SUCCESS;
}
EFI_STATUS
EFIAPI
ConSpliterUgaDrawBlt (
IN EFI_UGA_DRAW_PROTOCOL *This,
IN EFI_UGA_PIXEL *BltBuffer, OPTIONAL
IN EFI_UGA_BLT_OPERATION BltOperation,
IN UINTN SourceX,
IN UINTN SourceY,
IN UINTN DestinationX,
IN UINTN DestinationY,
IN UINTN Width,
IN UINTN Height,
IN UINTN Delta OPTIONAL
)
/*++
Routine Description:
The following table defines actions for BltOperations:
EfiUgaVideoFill - Write data from the BltBuffer pixel (SourceX, SourceY)
directly to every pixel of the video display rectangle
(DestinationX, DestinationY)
(DestinationX + Width, DestinationY + Height).
Only one pixel will be used from the BltBuffer. Delta is NOT used.
EfiUgaVideoToBltBuffer - Read data from the video display rectangle
(SourceX, SourceY) (SourceX + Width, SourceY + Height) and place it in
the BltBuffer rectangle (DestinationX, DestinationY )
(DestinationX + Width, DestinationY + Height). If DestinationX or
DestinationY is not zero then Delta must be set to the length in bytes
of a row in the BltBuffer.
EfiUgaBltBufferToVideo - Write data from the BltBuffer rectangle
(SourceX, SourceY) (SourceX + Width, SourceY + Height) directly to the
video display rectangle (DestinationX, DestinationY)
(DestinationX + Width, DestinationY + Height). If SourceX or SourceY is
not zero then Delta must be set to the length in bytes of a row in the
BltBuffer.
EfiUgaVideoToVideo - Copy from the video display rectangle
(SourceX, SourceY) (SourceX + Width, SourceY + Height) .
to the video display rectangle (DestinationX, DestinationY)
(DestinationX + Width, DestinationY + Height).
The BltBuffer and Delta are not used in this mode.
Arguments:
This - Protocol instance pointer.
BltBuffer - Buffer containing data to blit into video buffer. This
buffer has a size of Width*Height*sizeof(EFI_UGA_PIXEL)
BltOperation - Operation to perform on BlitBuffer and video memory
SourceX - X coordinate of source for the BltBuffer.
SourceY - Y coordinate of source for the BltBuffer.
DestinationX - X coordinate of destination for the BltBuffer.
DestinationY - Y coordinate of destination for the BltBuffer.
Width - Width of rectangle in BltBuffer in pixels.
Height - Hight of rectangle in BltBuffer in pixels.
Delta -
Returns:
EFI_SUCCESS - The Blt operation completed.
EFI_INVALID_PARAMETER - BltOperation is not valid.
EFI_DEVICE_ERROR - A hardware error occured writting to the video
buffer.
--*/
{
EFI_STATUS Status;
TEXT_OUT_SPLITTER_PRIVATE_DATA *Private;
UINTN Index;
EFI_STATUS ReturnStatus;
Private = UGA_DRAW_SPLITTER_PRIVATE_DATA_FROM_THIS (This);
//
// Sync up DevNull UGA device
//
ReturnStatus = DevNullUgaBlt (
Private,
BltBuffer,
BltOperation,
SourceX,
SourceY,
DestinationX,
DestinationY,
Width,
Height,
Delta
);
if (Private->ConsoleOutputMode != EfiConsoleControlScreenGraphics) {
return ReturnStatus;
}
//
// return the worst status met
//
for (Index = 0; Index < Private->CurrentNumberOfConsoles; Index++) {
if (Private->TextOutList[Index].UgaDraw != NULL) {
Status = Private->TextOutList[Index].UgaDraw->Blt (
Private->TextOutList[Index].UgaDraw,
BltBuffer,
BltOperation,
SourceX,
SourceY,
DestinationX,
DestinationY,
Width,
Height,
Delta
);
if (EFI_ERROR (Status)) {
ReturnStatus = Status;
} else if (BltOperation == EfiUgaVideoToBltBuffer) {
//
// Only need to read the data into buffer one time
//
return EFI_SUCCESS;
}
}
}
return ReturnStatus;
}
EFI_STATUS
DevNullUgaSync (
IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,
IN EFI_UGA_DRAW_PROTOCOL *UgaDraw
)
{
return UgaDraw->Blt (
UgaDraw,
Private->UgaBlt,
EfiUgaBltBufferToVideo,
0,
0,
0,
0,
Private->UgaHorizontalResolution,
Private->UgaVerticalResolution,
Private->UgaHorizontalResolution * sizeof (EFI_UGA_PIXEL)
);
}
#endif
EFI_STATUS
DevNullTextOutOutputString (
@@ -1063,17 +668,17 @@ DevNullTextOutOutputString (
Private - Pointer to the console output splitter's private data. It
indicates the calling context.
WString - The NULL-terminated Unicode string to be displayed on the output
device(s). All output devices must also support the Unicode
device(s). All output devices must also support the Unicode
drawing defined in this file.
Returns:
EFI_SUCCESS - The string was output to the device.
EFI_DEVICE_ERROR - The device reported an error while attempting to
EFI_DEVICE_ERROR - The device reported an error while attempting to
output the text.
EFI_UNSUPPORTED - The output device's mode is not currently in a
EFI_UNSUPPORTED - The output device's mode is not currently in a
defined text mode.
EFI_WARN_UNKNOWN_GLYPH - This warning code indicates that some of the
characters in the Unicode string could not be
EFI_WARN_UNKNOWN_GLYPH - This warning code indicates that some of the
characters in the Unicode string could not be
rendered and were skipped.
--*/
@@ -1285,7 +890,7 @@ DevNullTextOutSetMode (
Returns:
EFI_SUCCESS - The requested text mode was set.
EFI_DEVICE_ERROR - The device had an error and
EFI_DEVICE_ERROR - The device had an error and
could not complete the request.
EFI_UNSUPPORTED - The mode number was not valid.
EFI_OUT_OF_RESOURCES - Out of resources.
@@ -1314,7 +919,7 @@ DevNullTextOutSetMode (
Private->TextOutMode.Mode = (INT32) ModeNumber;
Private->DevNullColumns = Column;
Private->DevNullRows = Row;
if (Private->DevNullScreen != NULL) {
FreePool (Private->DevNullScreen);
}
@@ -1348,7 +953,7 @@ DevNullTextOutClearScreen (
/*++
Routine Description:
Clears the output device(s) display to the currently selected background
Clears the output device(s) display to the currently selected background
color.
Arguments:
@@ -1356,7 +961,7 @@ DevNullTextOutClearScreen (
Returns:
EFI_SUCCESS - The operation completed successfully.
EFI_DEVICE_ERROR - The device had an error and
EFI_DEVICE_ERROR - The device had an error and
could not complete the request.
EFI_UNSUPPORTED - The output device is not in a valid text mode.
@@ -1412,9 +1017,9 @@ DevNullTextOutSetCursorPosition (
Returns:
EFI_SUCCESS - The operation completed successfully.
EFI_DEVICE_ERROR - The device had an error and
EFI_DEVICE_ERROR - The device had an error and
could not complete the request.
EFI_UNSUPPORTED - The output device is not in a valid text mode, or the
EFI_UNSUPPORTED - The output device is not in a valid text mode, or the
cursor position is invalid for the current mode.
--*/
@@ -1437,22 +1042,22 @@ DevNullTextOutEnableCursor (
)
/*++
Routine Description:
Implements SIMPLE_TEXT_OUTPUT.EnableCursor().
In this driver, the cursor cannot be hidden.
In this driver, the cursor cannot be hidden.
Arguments:
Private - Indicates the calling context.
Visible - If TRUE, the cursor is set to be visible, If FALSE, the cursor
is set to be invisible.
Visible - If TRUE, the cursor is set to be visible, If FALSE, the cursor
is set to be invisible.
Returns:
EFI_SUCCESS - The request is valid.
--*/
{
Private->TextOutMode.CursorVisible = Visible;
@@ -1467,15 +1072,15 @@ DevNullSyncGopStdOut (
/*++
Routine Description:
Take the DevNull TextOut device and update the Simple Text Out on every
UGA device.
UGA device.
Arguments:
Private - Indicates the calling context.
Returns:
EFI_SUCCESS - The request is valid.
other - Return status of TextOut->OutputString ()
--*/
{
EFI_STATUS Status;