[edk2-devel] [edk2-platforms Patch v2 3/3] OptionRomPkg: Remove all UGA support

Ni, Ray ray.ni at intel.com
Wed Jul 13 07:49:46 UTC 2022


Reviewed-by: Ray Ni <ray.ni at intel.com>

> -----Original Message-----
> From: Jiang, Guomin <guomin.jiang at intel.com>
> Sent: Wednesday, July 13, 2022 3:32 PM
> To: devel at edk2.groups.io
> Cc: Ni, Ray <ray.ni at intel.com>
> Subject: [edk2-platforms Patch v2 3/3] OptionRomPkg: Remove all UGA support
> 
> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2368
> 
> Remove all UGA support
> 
> Cc: Ray Ni <ray.ni at intel.com>
> Signed-off-by: Guomin Jiang <guomin.jiang at intel.com>
> ---
>  .../CirrusLogic5430Dxe/CirrusLogic5430.c      |  91 +---
>  .../CirrusLogic5430Dxe/CirrusLogic5430.h      |  21 +-
>  .../CirrusLogic5430Dxe/CirrusLogic5430Dxe.inf |   9 +-
>  .../CirrusLogic5430UgaDraw.c                  | 412 ------------------
>  Drivers/OptionRomPkg/OptionRomPkg.dec         |   3 -
>  5 files changed, 3 insertions(+), 533 deletions(-)
>  delete mode 100644 Drivers/OptionRomPkg/CirrusLogic5430Dxe/CirrusLogic5430UgaDraw.c
> 
> diff --git a/Drivers/OptionRomPkg/CirrusLogic5430Dxe/CirrusLogic5430.c
> b/Drivers/OptionRomPkg/CirrusLogic5430Dxe/CirrusLogic5430.c
> index 4e7830ea94b3..48e0c012957a 100644
> --- a/Drivers/OptionRomPkg/CirrusLogic5430Dxe/CirrusLogic5430.c
> +++ b/Drivers/OptionRomPkg/CirrusLogic5430Dxe/CirrusLogic5430.c
> @@ -11,7 +11,7 @@
>    documentation on UGA for details on how to write a UGA driver that is able
>    to function both in the EFI pre-boot environment and from the OS runtime.
> 
> -  Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
> +  Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
>    SPDX-License-Identifier: BSD-2-Clause-Patent
> 
>  **/
> @@ -316,7 +316,6 @@ CirrusLogic5430ControllerDriverStart (
>      goto Error;
>    }
> 
> -  if (FeaturePcdGet (PcdSupportGop)) {
>      //
>      // Set Gop Device Path
>      //
> @@ -357,7 +356,6 @@ CirrusLogic5430ControllerDriverStart (
>                        NULL
>                        );
>      }
> -  }
> 
>    //
>    // Construct video mode buffer
> @@ -367,24 +365,6 @@ CirrusLogic5430ControllerDriverStart (
>      goto Error;
>    }
> 
> -  if (FeaturePcdGet (PcdSupportUga)) {
> -    //
> -    // Start the UGA Draw software stack.
> -    //
> -    Status = CirrusLogic5430UgaDrawConstructor (Private);
> -    ASSERT_EFI_ERROR (Status);
> -
> -    Private->UgaDevicePath = ParentDevicePath;
> -    Status = gBS->InstallMultipleProtocolInterfaces (
> -                    &Controller,
> -                    &gEfiUgaDrawProtocolGuid,
> -                    &Private->UgaDraw,
> -                    &gEfiDevicePathProtocolGuid,
> -                    Private->UgaDevicePath,
> -                    NULL
> -                    );
> -
> -  } else if (FeaturePcdGet (PcdSupportGop)) {
>      if (Private->GopDevicePath == NULL) {
>        //
>        // If RemainingDevicePath is the End of Device Path Node,
> @@ -410,14 +390,6 @@ CirrusLogic5430ControllerDriverStart (
>                        NULL
>                        );
>      }
> -  } else {
> -    //
> -    // This driver must support eithor GOP or UGA or both.
> -    //
> -    ASSERT (FALSE);
> -    Status = EFI_UNSUPPORTED;
> -  }
> -
> 
>  Error:
>    if (EFI_ERROR (Status)) {
> @@ -470,55 +442,11 @@ CirrusLogic5430ControllerDriverStop (
>    IN EFI_HANDLE                     *ChildHandleBuffer
>    )
>  {
> -  EFI_UGA_DRAW_PROTOCOL           *UgaDraw;
>    EFI_GRAPHICS_OUTPUT_PROTOCOL    *GraphicsOutput;
> 
>    EFI_STATUS                      Status;
>    CIRRUS_LOGIC_5430_PRIVATE_DATA  *Private;
> 
> -  if (FeaturePcdGet (PcdSupportUga)) {
> -    Status = gBS->OpenProtocol (
> -                    Controller,
> -                    &gEfiUgaDrawProtocolGuid,
> -                    (VOID **) &UgaDraw,
> -                    This->DriverBindingHandle,
> -                    Controller,
> -                    EFI_OPEN_PROTOCOL_GET_PROTOCOL
> -                    );
> -    if (EFI_ERROR (Status)) {
> -      return Status;
> -    }
> -    //
> -    // Get our private context information
> -    //
> -    Private = CIRRUS_LOGIC_5430_PRIVATE_DATA_FROM_UGA_DRAW_THIS (UgaDraw);
> -    CirrusLogic5430UgaDrawDestructor (Private);
> -
> -    if (FeaturePcdGet (PcdSupportGop)) {
> -      CirrusLogic5430GraphicsOutputDestructor (Private);
> -      //
> -      // Remove the UGA and GOP protocol interface from the system
> -      //
> -      Status = gBS->UninstallMultipleProtocolInterfaces (
> -                      Private->Handle,
> -                      &gEfiUgaDrawProtocolGuid,
> -                      &Private->UgaDraw,
> -                      &gEfiGraphicsOutputProtocolGuid,
> -                      &Private->GraphicsOutput,
> -                      NULL
> -                      );
> -    } else {
> -      //
> -      // Remove the UGA Draw interface from the system
> -      //
> -      Status = gBS->UninstallMultipleProtocolInterfaces (
> -                      Private->Handle,
> -                      &gEfiUgaDrawProtocolGuid,
> -                      &Private->UgaDraw,
> -                      NULL
> -                      );
> -    }
> -  } else {
>      Status = gBS->OpenProtocol (
>                      Controller,
>                      &gEfiGraphicsOutputProtocolGuid,
> @@ -542,13 +470,10 @@ CirrusLogic5430ControllerDriverStop (
>      //
>      Status = gBS->UninstallMultipleProtocolInterfaces (
>                      Private->Handle,
> -                    &gEfiUgaDrawProtocolGuid,
> -                    &Private->UgaDraw,
>                      &gEfiGraphicsOutputProtocolGuid,
>                      &Private->GraphicsOutput,
>                      NULL
>                      );
> -  }
> 
>    if (EFI_ERROR (Status)) {
>      return Status;
> @@ -582,20 +507,6 @@ CirrusLogic5430ControllerDriverStop (
>    return EFI_SUCCESS;
>  }
> 
> -/**
> -  CirrusLogic5430UgaDrawDestructor
> -
> -  TODO:    Private - add argument and description to function comment
> -  TODO:    EFI_SUCCESS - add return value to function comment
> -**/
> -EFI_STATUS
> -CirrusLogic5430UgaDrawDestructor (
> -  CIRRUS_LOGIC_5430_PRIVATE_DATA  *Private
> -  )
> -{
> -  return EFI_SUCCESS;
> -}
> -
>  /**
>    TODO: Add function description
> 
> diff --git a/Drivers/OptionRomPkg/CirrusLogic5430Dxe/CirrusLogic5430.h
> b/Drivers/OptionRomPkg/CirrusLogic5430Dxe/CirrusLogic5430.h
> index 355f0418b3b5..5ec6bcf0d27b 100644
> --- a/Drivers/OptionRomPkg/CirrusLogic5430Dxe/CirrusLogic5430.h
> +++ b/Drivers/OptionRomPkg/CirrusLogic5430Dxe/CirrusLogic5430.h
> @@ -1,7 +1,7 @@
>  /** @file
>    Cirrus Logic 5430 Controller Driver
> 
> -  Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
> +  Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
>    SPDX-License-Identifier: BSD-2-Clause-Patent
> 
>  **/
> @@ -15,7 +15,6 @@
> 
> 
>  #include <Uefi.h>
> -#include <Protocol/UgaDraw.h>
>  #include <Protocol/GraphicsOutput.h>
>  #include <Protocol/PciIo.h>
>  #include <Protocol/DriverSupportedEfiVersion.h>
> @@ -86,12 +85,10 @@ typedef struct {
>    EFI_HANDLE                            Handle;
>    EFI_PCI_IO_PROTOCOL                   *PciIo;
>    UINT64                                OriginalPciAttributes;
> -  EFI_UGA_DRAW_PROTOCOL                 UgaDraw;
>    EFI_GRAPHICS_OUTPUT_PROTOCOL          GraphicsOutput;
>    EFI_EDID_DISCOVERED_PROTOCOL          EdidDiscovered;
>    EFI_EDID_ACTIVE_PROTOCOL              EdidActive;
>    EFI_DEVICE_PATH_PROTOCOL              *GopDevicePath;
> -  EFI_DEVICE_PATH_PROTOCOL              *UgaDevicePath;
>    UINTN                                 CurrentMode;
>    UINTN                                 MaxMode;
>    CIRRUS_LOGIC_5430_MODE_DATA           ModeData[CIRRUS_LOGIC_5430_MODE_COUNT];
> @@ -112,9 +109,6 @@ typedef struct {
>    UINT8   MiscSetting;
>  } CIRRUS_LOGIC_5430_VIDEO_MODES;
> 
> -#define CIRRUS_LOGIC_5430_PRIVATE_DATA_FROM_UGA_DRAW_THIS(a) \
> -  CR(a, CIRRUS_LOGIC_5430_PRIVATE_DATA, UgaDraw, CIRRUS_LOGIC_5430_PRIVATE_DATA_SIGNATURE)
> -
>  #define CIRRUS_LOGIC_5430_PRIVATE_DATA_FROM_GRAPHICS_OUTPUT_THIS(a) \
>    CR(a, CIRRUS_LOGIC_5430_PRIVATE_DATA, GraphicsOutput, CIRRUS_LOGIC_5430_PRIVATE_DATA_SIGNATURE)
> 
> @@ -152,19 +146,6 @@ extern EFI_DRIVER_SUPPORTED_EFI_VERSION_PROTOCOL  gCirrusLogic5430DriverSupporte
>  #define PALETTE_INDEX_REGISTER  0x3c8
>  #define PALETTE_DATA_REGISTER   0x3c9
> 
> -//
> -// UGA Draw Hardware abstraction internal worker functions
> -//
> -EFI_STATUS
> -CirrusLogic5430UgaDrawConstructor (
> -  CIRRUS_LOGIC_5430_PRIVATE_DATA  *Private
> -  );
> -
> -EFI_STATUS
> -CirrusLogic5430UgaDrawDestructor (
> -  CIRRUS_LOGIC_5430_PRIVATE_DATA  *Private
> -  );
> -
>  //
>  // Graphics Output Hardware abstraction internal worker functions
>  //
> diff --git a/Drivers/OptionRomPkg/CirrusLogic5430Dxe/CirrusLogic5430Dxe.inf
> b/Drivers/OptionRomPkg/CirrusLogic5430Dxe/CirrusLogic5430Dxe.inf
> index 3e8b7b087f11..359ce486e5ba 100644
> --- a/Drivers/OptionRomPkg/CirrusLogic5430Dxe/CirrusLogic5430Dxe.inf
> +++ b/Drivers/OptionRomPkg/CirrusLogic5430Dxe/CirrusLogic5430Dxe.inf
> @@ -9,7 +9,7 @@
>  #  requires both the UGA Draw and the UGA I/O Protocol. Please refer to Microsoft's
>  #  documentation on UGA for details on how to write a UGA driver that is able
>  #  to function both in the EFI pre-boot environment and from the OS runtime.
> -# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
> +# Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
>  #
>  #  SPDX-License-Identifier: BSD-2-Clause-Patent
>  #
> @@ -43,7 +43,6 @@
>  [Sources]
>    ComponentName.c
>    DriverSupportedEfiVersion.c
> -  CirrusLogic5430UgaDraw.c
>    CirrusLogic5430GraphicsOutput.c
>    CirrusLogic5430.c
>    CirrusLogic5430.h
> @@ -67,7 +66,6 @@
> 
>  [Protocols]
>    gEfiDriverSupportedEfiVersionProtocolGuid     # PROTOCOL ALWAYS_PRODUCED
> -  gEfiUgaDrawProtocolGuid                       # PROTOCOL BY_START
>    gEfiGraphicsOutputProtocolGuid                # PROTOCOL BY_START
>    gEfiEdidDiscoveredProtocolGuid                # PROTOCOL BY_START
>    gEfiEdidActiveProtocolGuid                    # PROTOCOL BY_START
> @@ -75,10 +73,5 @@
>    gEfiPciIoProtocolGuid                         # PROTOCOL TO_START
>    gEfiEdidOverrideProtocolGuid                  # PROTOCOL TO_START
> 
> -
> -[FeaturePcd]
> -  gOptionRomPkgTokenSpaceGuid.PcdSupportGop
> -  gOptionRomPkgTokenSpaceGuid.PcdSupportUga
> -
>  [Pcd]
>    gOptionRomPkgTokenSpaceGuid.PcdDriverSupportedEfiVersion
> diff --git a/Drivers/OptionRomPkg/CirrusLogic5430Dxe/CirrusLogic5430UgaDraw.c
> b/Drivers/OptionRomPkg/CirrusLogic5430Dxe/CirrusLogic5430UgaDraw.c
> deleted file mode 100644
> index bdcbd3450c5f..000000000000
> --- a/Drivers/OptionRomPkg/CirrusLogic5430Dxe/CirrusLogic5430UgaDraw.c
> +++ /dev/null
> @@ -1,412 +0,0 @@
> -/** @file
> -  This file produces the graphics abstration of UGA Draw. It is called by
> -  CirrusLogic5430.c file which deals with the EFI 1.1 driver model.
> -  This file just does graphics.
> -
> -  Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
> -  SPDX-License-Identifier: BSD-2-Clause-Patent
> -
> -**/
> -
> -#include "CirrusLogic5430.h"
> -
> -//
> -// UGA Draw Protocol Member Functions
> -//
> -EFI_STATUS
> -EFIAPI
> -CirrusLogic5430UgaDrawGetMode (
> -  IN  EFI_UGA_DRAW_PROTOCOL *This,
> -  OUT UINT32                *HorizontalResolution,
> -  OUT UINT32                *VerticalResolution,
> -  OUT UINT32                *ColorDepth,
> -  OUT UINT32                *RefreshRate
> -  )
> -{
> -  CIRRUS_LOGIC_5430_PRIVATE_DATA  *Private;
> -
> -  Private = CIRRUS_LOGIC_5430_PRIVATE_DATA_FROM_UGA_DRAW_THIS (This);
> -
> -  if (Private->HardwareNeedsStarting) {
> -    return EFI_NOT_STARTED;
> -  }
> -
> -  if ((HorizontalResolution == NULL) ||
> -      (VerticalResolution == NULL)   ||
> -      (ColorDepth == NULL)           ||
> -      (RefreshRate == NULL)) {
> -    return EFI_INVALID_PARAMETER;
> -  }
> -
> -  *HorizontalResolution = Private->ModeData[Private->CurrentMode].HorizontalResolution;
> -  *VerticalResolution   = Private->ModeData[Private->CurrentMode].VerticalResolution;
> -  *ColorDepth           = Private->ModeData[Private->CurrentMode].ColorDepth;
> -  *RefreshRate          = Private->ModeData[Private->CurrentMode].RefreshRate;
> -
> -  return EFI_SUCCESS;
> -}
> -
> -EFI_STATUS
> -EFIAPI
> -CirrusLogic5430UgaDrawSetMode (
> -  IN  EFI_UGA_DRAW_PROTOCOL *This,
> -  IN  UINT32                HorizontalResolution,
> -  IN  UINT32                VerticalResolution,
> -  IN  UINT32                ColorDepth,
> -  IN  UINT32                RefreshRate
> -  )
> -{
> -  CIRRUS_LOGIC_5430_PRIVATE_DATA  *Private;
> -  UINTN                           Index;
> -
> -  Private = CIRRUS_LOGIC_5430_PRIVATE_DATA_FROM_UGA_DRAW_THIS (This);
> -
> -  for (Index = 0; Index < Private->MaxMode; Index++) {
> -
> -    if (HorizontalResolution != Private->ModeData[Index].HorizontalResolution) {
> -      continue;
> -    }
> -
> -    if (VerticalResolution != Private->ModeData[Index].VerticalResolution) {
> -      continue;
> -    }
> -
> -    if (ColorDepth != Private->ModeData[Index].ColorDepth) {
> -      continue;
> -    }
> -
> -    if (RefreshRate != Private->ModeData[Index].RefreshRate) {
> -      continue;
> -    }
> -
> -    if (Private->LineBuffer) {
> -      gBS->FreePool (Private->LineBuffer);
> -    }
> -
> -    Private->LineBuffer = NULL;
> -    Private->LineBuffer = AllocatePool (HorizontalResolution);
> -    if (Private->LineBuffer == NULL) {
> -      return EFI_OUT_OF_RESOURCES;
> -    }
> -
> -    InitializeGraphicsMode (Private, &CirrusLogic5430VideoModes[Private->ModeData[Index].ModeNumber]);
> -
> -    Private->CurrentMode            = Index;
> -
> -    Private->HardwareNeedsStarting  = FALSE;
> -
> -    return EFI_SUCCESS;
> -  }
> -
> -  return EFI_NOT_FOUND;
> -}
> -
> -EFI_STATUS
> -EFIAPI
> -CirrusLogic5430UgaDrawBlt (
> -  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
> -  )
> -{
> -  CIRRUS_LOGIC_5430_PRIVATE_DATA  *Private;
> -  EFI_TPL                         OriginalTPL;
> -  UINTN                           DstY;
> -  UINTN                           SrcY;
> -  EFI_UGA_PIXEL                   *Blt;
> -  UINTN                           X;
> -  UINT8                           Pixel;
> -  UINT32                          WidePixel;
> -  UINTN                           ScreenWidth;
> -  UINTN                           Offset;
> -  UINTN                           SourceOffset;
> -
> -  Private = CIRRUS_LOGIC_5430_PRIVATE_DATA_FROM_UGA_DRAW_THIS (This);
> -
> -  if ((UINT32)BltOperation >= EfiUgaBltMax) {
> -    return EFI_INVALID_PARAMETER;
> -  }
> -
> -  if (Width == 0 || Height == 0) {
> -    return EFI_INVALID_PARAMETER;
> -  }
> -
> -  //
> -  // If Delta is zero, then the entire BltBuffer is being used, so Delta
> -  // is the number of bytes in each row of BltBuffer.  Since BltBuffer is Width pixels size,
> -  // the number of bytes in each row can be computed.
> -  //
> -  if (Delta == 0) {
> -    Delta = Width * sizeof (EFI_UGA_PIXEL);
> -  }
> -
> -  //
> -  // We need to fill the Virtual Screen buffer with the blt data.
> -  // The virtual screen is upside down, as the first row is the bootom row of
> -  // the image.
> -  //
> -
> -  //
> -  // Make sure the SourceX, SourceY, DestinationX, DestinationY, Width, and Height parameters
> -  // are valid for the operation and the current screen geometry.
> -  //
> -  if (BltOperation == EfiUgaVideoToBltBuffer) {
> -    //
> -    // Video to BltBuffer: Source is Video, destination is BltBuffer
> -    //
> -    if (SourceY + Height > Private->ModeData[Private->CurrentMode].VerticalResolution) {
> -      return EFI_INVALID_PARAMETER;
> -    }
> -
> -    if (SourceX + Width > Private->ModeData[Private->CurrentMode].HorizontalResolution) {
> -      return EFI_INVALID_PARAMETER;
> -    }
> -  } else {
> -    //
> -    // BltBuffer to Video: Source is BltBuffer, destination is Video
> -    //
> -    if (DestinationY + Height > Private->ModeData[Private->CurrentMode].VerticalResolution) {
> -      return EFI_INVALID_PARAMETER;
> -    }
> -
> -    if (DestinationX + Width > Private->ModeData[Private->CurrentMode].HorizontalResolution) {
> -      return EFI_INVALID_PARAMETER;
> -    }
> -  }
> -  //
> -  // We have to raise to TPL Notify, so we make an atomic write the frame buffer.
> -  // We would not want a timer based event (Cursor, ...) to come in while we are
> -  // doing this operation.
> -  //
> -  OriginalTPL = gBS->RaiseTPL (TPL_NOTIFY);
> -
> -  switch (BltOperation) {
> -  case EfiUgaVideoToBltBuffer:
> -    //
> -    // Video to BltBuffer: Source is Video, destination is BltBuffer
> -    //
> -    for (SrcY = SourceY, DstY = DestinationY; DstY < (Height + DestinationY); SrcY++, DstY++) {
> -
> -      Offset = (SrcY * Private->ModeData[Private->CurrentMode].HorizontalResolution) + SourceX;
> -      if (((Offset & 0x03) == 0) && ((Width & 0x03) == 0)) {
> -        Private->PciIo->Mem.Read (
> -                              Private->PciIo,
> -                              EfiPciIoWidthUint32,
> -                              0,
> -                              Offset,
> -                              Width >> 2,
> -                              Private->LineBuffer
> -                              );
> -      } else {
> -        Private->PciIo->Mem.Read (
> -                              Private->PciIo,
> -                              EfiPciIoWidthUint8,
> -                              0,
> -                              Offset,
> -                              Width,
> -                              Private->LineBuffer
> -                              );
> -      }
> -
> -      for (X = 0; X < Width; X++) {
> -        Blt         = (EFI_UGA_PIXEL *) ((UINT8 *) BltBuffer + (DstY * Delta) + (DestinationX + X) * sizeof (EFI_UGA_PIXEL));
> -
> -        Blt->Red    = (UINT8) (Private->LineBuffer[X] & 0xe0);
> -        Blt->Green  = (UINT8) ((Private->LineBuffer[X] & 0x1c) << 3);
> -        Blt->Blue   = (UINT8) ((Private->LineBuffer[X] & 0x03) << 6);
> -      }
> -    }
> -    break;
> -
> -  case EfiUgaVideoToVideo:
> -    //
> -    // Perform hardware acceleration for Video to Video operations
> -    //
> -    ScreenWidth   = Private->ModeData[Private->CurrentMode].HorizontalResolution;
> -    SourceOffset  = (SourceY * Private->ModeData[Private->CurrentMode].HorizontalResolution) + (SourceX);
> -    Offset        = (DestinationY * Private->ModeData[Private->CurrentMode].HorizontalResolution) + (DestinationX);
> -
> -    outw (Private, GRAPH_ADDRESS_REGISTER, 0x0000);
> -    outw (Private, GRAPH_ADDRESS_REGISTER, 0x0010);
> -    outw (Private, GRAPH_ADDRESS_REGISTER, 0x0012);
> -    outw (Private, GRAPH_ADDRESS_REGISTER, 0x0014);
> -
> -    outw (Private, GRAPH_ADDRESS_REGISTER, 0x0001);
> -    outw (Private, GRAPH_ADDRESS_REGISTER, 0x0011);
> -    outw (Private, GRAPH_ADDRESS_REGISTER, 0x0013);
> -    outw (Private, GRAPH_ADDRESS_REGISTER, 0x0015);
> -
> -    outw (Private, GRAPH_ADDRESS_REGISTER, (UINT16) (((Width << 8) & 0xff00) | 0x20));
> -    outw (Private, GRAPH_ADDRESS_REGISTER, (UINT16) ((Width & 0xff00) | 0x21));
> -    outw (Private, GRAPH_ADDRESS_REGISTER, (UINT16) (((Height << 8) & 0xff00) | 0x22));
> -    outw (Private, GRAPH_ADDRESS_REGISTER, (UINT16) ((Height & 0xff00) | 0x23));
> -    outw (Private, GRAPH_ADDRESS_REGISTER, (UINT16) (((ScreenWidth << 8) & 0xff00) | 0x24));
> -    outw (Private, GRAPH_ADDRESS_REGISTER, (UINT16) ((ScreenWidth & 0xff00) | 0x25));
> -    outw (Private, GRAPH_ADDRESS_REGISTER, (UINT16) (((ScreenWidth << 8) & 0xff00) | 0x26));
> -    outw (Private, GRAPH_ADDRESS_REGISTER, (UINT16) ((ScreenWidth & 0xff00) | 0x27));
> -    outw (Private, GRAPH_ADDRESS_REGISTER, (UINT16) ((((Offset) << 8) & 0xff00) | 0x28));
> -    outw (Private, GRAPH_ADDRESS_REGISTER, (UINT16) ((((Offset) >> 0) & 0xff00) | 0x29));
> -    outw (Private, GRAPH_ADDRESS_REGISTER, (UINT16) ((((Offset) >> 8) & 0xff00) | 0x2a));
> -    outw (Private, GRAPH_ADDRESS_REGISTER, (UINT16) ((((SourceOffset) << 8) & 0xff00) | 0x2c));
> -    outw (Private, GRAPH_ADDRESS_REGISTER, (UINT16) ((((SourceOffset) >> 0) & 0xff00) | 0x2d));
> -    outw (Private, GRAPH_ADDRESS_REGISTER, (UINT16) ((((SourceOffset) >> 8) & 0xff00) | 0x2e));
> -    outw (Private, GRAPH_ADDRESS_REGISTER, 0x002f);
> -    outw (Private, GRAPH_ADDRESS_REGISTER, 0x0030);
> -    outw (Private, GRAPH_ADDRESS_REGISTER, 0x0d32);
> -    outw (Private, GRAPH_ADDRESS_REGISTER, 0x0033);
> -    outw (Private, GRAPH_ADDRESS_REGISTER, 0x0034);
> -    outw (Private, GRAPH_ADDRESS_REGISTER, 0x0035);
> -
> -    outw (Private, GRAPH_ADDRESS_REGISTER, 0x0231);
> -
> -    outb (Private, GRAPH_ADDRESS_REGISTER, 0x31);
> -    while ((inb (Private, GRAPH_DATA_REGISTER) & 0x01) == 0x01)
> -      ;
> -    break;
> -
> -  case EfiUgaVideoFill:
> -    Blt       = BltBuffer;
> -    Pixel     = (UINT8) ((Blt->Red & 0xe0) | ((Blt->Green >> 3) & 0x1c) | ((Blt->Blue >> 6) & 0x03));
> -    WidePixel = (Pixel << 8) | Pixel;
> -    WidePixel = (WidePixel << 16) | WidePixel;
> -
> -    if (DestinationX == 0 && Width == Private->ModeData[Private->CurrentMode].HorizontalResolution) {
> -      Offset = DestinationY * Private->ModeData[Private->CurrentMode].HorizontalResolution;
> -      if (((Offset & 0x03) == 0) && (((Width * Height) & 0x03) == 0)) {
> -        Private->PciIo->Mem.Write (
> -                              Private->PciIo,
> -                              EfiPciIoWidthFillUint32,
> -                              0,
> -                              Offset,
> -                              (Width * Height) >> 2,
> -                              &WidePixel
> -                              );
> -      } else {
> -        Private->PciIo->Mem.Write (
> -                              Private->PciIo,
> -                              EfiPciIoWidthFillUint8,
> -                              0,
> -                              Offset,
> -                              Width * Height,
> -                              &Pixel
> -                              );
> -      }
> -    } else {
> -      for (SrcY = SourceY, DstY = DestinationY; SrcY < (Height + SourceY); SrcY++, DstY++) {
> -        Offset = (DstY * Private->ModeData[Private->CurrentMode].HorizontalResolution) + DestinationX;
> -        if (((Offset & 0x03) == 0) && ((Width & 0x03) == 0)) {
> -          Private->PciIo->Mem.Write (
> -                                Private->PciIo,
> -                                EfiPciIoWidthFillUint32,
> -                                0,
> -                                Offset,
> -                                Width >> 2,
> -                                &WidePixel
> -                                );
> -        } else {
> -          Private->PciIo->Mem.Write (
> -                                Private->PciIo,
> -                                EfiPciIoWidthFillUint8,
> -                                0,
> -                                Offset,
> -                                Width,
> -                                &Pixel
> -                                );
> -        }
> -      }
> -    }
> -    break;
> -
> -  case EfiUgaBltBufferToVideo:
> -    for (SrcY = SourceY, DstY = DestinationY; SrcY < (Height + SourceY); SrcY++, DstY++) {
> -
> -      for (X = 0; X < Width; X++) {
> -        Blt                     = (EFI_UGA_PIXEL *) ((UINT8 *) BltBuffer + (SrcY * Delta) + (SourceX + X) * sizeof (EFI_UGA_PIXEL));
> -        Private->LineBuffer[X]  = (UINT8) ((Blt->Red & 0xe0) | ((Blt->Green >> 3) & 0x1c) | ((Blt->Blue >> 6) & 0x03));
> -      }
> -
> -      Offset = (DstY * Private->ModeData[Private->CurrentMode].HorizontalResolution) + DestinationX;
> -
> -      if (((Offset & 0x03) == 0) && ((Width & 0x03) == 0)) {
> -        Private->PciIo->Mem.Write (
> -                              Private->PciIo,
> -                              EfiPciIoWidthUint32,
> -                              0,
> -                              Offset,
> -                              Width >> 2,
> -                              Private->LineBuffer
> -                              );
> -      } else {
> -        Private->PciIo->Mem.Write (
> -                              Private->PciIo,
> -                              EfiPciIoWidthUint8,
> -                              0,
> -                              Offset,
> -                              Width,
> -                              Private->LineBuffer
> -                              );
> -      }
> -    }
> -    break;
> -
> -  default:
> -    break;
> -  }
> -
> -  gBS->RestoreTPL (OriginalTPL);
> -
> -  return EFI_SUCCESS;
> -}
> -
> -//
> -// Construction and Destruction functions
> -//
> -EFI_STATUS
> -CirrusLogic5430UgaDrawConstructor (
> -  CIRRUS_LOGIC_5430_PRIVATE_DATA  *Private
> -  )
> -{
> -  EFI_UGA_DRAW_PROTOCOL *UgaDraw;
> -
> -  //
> -  // Fill in Private->UgaDraw protocol
> -  //
> -  UgaDraw           = &Private->UgaDraw;
> -
> -  UgaDraw->GetMode  = CirrusLogic5430UgaDrawGetMode;
> -  UgaDraw->SetMode  = CirrusLogic5430UgaDrawSetMode;
> -  UgaDraw->Blt      = CirrusLogic5430UgaDrawBlt;
> -
> -  //
> -  // Initialize the private data
> -  //
> -  Private->CurrentMode            = 0;
> -  Private->HardwareNeedsStarting  = TRUE;
> -  Private->LineBuffer             = NULL;
> -
> -  //
> -  // Initialize the hardware
> -  //
> -  UgaDraw->SetMode (
> -            UgaDraw,
> -            Private->ModeData[Private->CurrentMode].HorizontalResolution,
> -            Private->ModeData[Private->CurrentMode].VerticalResolution,
> -            Private->ModeData[Private->CurrentMode].ColorDepth,
> -            Private->ModeData[Private->CurrentMode].RefreshRate
> -            );
> -  DrawLogo (
> -    Private,
> -    Private->ModeData[Private->CurrentMode].HorizontalResolution,
> -    Private->ModeData[Private->CurrentMode].VerticalResolution
> -    );
> -
> -  return EFI_SUCCESS;
> -}
> -
> diff --git a/Drivers/OptionRomPkg/OptionRomPkg.dec b/Drivers/OptionRomPkg/OptionRomPkg.dec
> index 6881f3648ede..14957349aab7 100644
> --- a/Drivers/OptionRomPkg/OptionRomPkg.dec
> +++ b/Drivers/OptionRomPkg/OptionRomPkg.dec
> @@ -33,9 +33,6 @@
>  [PcdsFeatureFlag]
>    gOptionRomPkgTokenSpaceGuid.PcdSupportScsiPassThru|TRUE|BOOLEAN|0x00010001
>    gOptionRomPkgTokenSpaceGuid.PcdSupportExtScsiPassThru|TRUE|BOOLEAN|0x00010002
> -  gOptionRomPkgTokenSpaceGuid.PcdSupportGop|TRUE|BOOLEAN|0x00010004
> -  gOptionRomPkgTokenSpaceGuid.PcdSupportUga|TRUE|BOOLEAN|0x00010005
> 
>  [PcdsFixedAtBuild, PcdsPatchableInModule]
>    gOptionRomPkgTokenSpaceGuid.PcdDriverSupportedEfiVersion|0x0002000a|UINT32|0x00010003
> -
> --
> 2.26.2.windows.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#91305): https://edk2.groups.io/g/devel/message/91305
Mute This Topic: https://groups.io/mt/92353011/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-




More information about the edk2-devel-archive mailing list